<?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-05-31T06:09:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1359</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1359"/>
		<updated>2026-05-24T21:17:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: image test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Minecraft@Home&lt;br /&gt;
| logo                 = Minecraft@Home logo.png&lt;br /&gt;
| logo caption         = Minecraft@Home logo&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Gaming / Computational Research&lt;br /&gt;
| compute              = GPU&lt;br /&gt;
| dependencies         = OpenCL 2.0+&lt;br /&gt;
&lt;br /&gt;
| developer            = Minecraft@Home community (philipp_de, maintainer)&lt;br /&gt;
| author               = Tomlacko, Earthcomputer, Cortex, Neil, DutChen18, PseudoGravity, Philipp_DE, and others&lt;br /&gt;
| released             = {{Start date and age|2020|06|24}}&lt;br /&gt;
| repository           = {{URL|https://github.com/minecrafthome/minecrafthome}}&lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 24 May 2026&lt;br /&gt;
| average performance  = 10,385 TFLOPS (recent)&lt;br /&gt;
| active users         = 655&lt;br /&gt;
| total users          = 6639&lt;br /&gt;
| active hosts         = 1650&lt;br /&gt;
| total hosts          = 13567&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://minecraftathome.com/minecrafthome/}}&lt;br /&gt;
| license              = Open source (server: PHP/Docker; applications vary)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[File:{{#setmainimage:Minecraft.png}}|alt=Minecraft@Home project banner|center|frameless]]&lt;br /&gt;
&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform that enlists the idle processing power of volunteers&#039; computers to research questions related to [[wikipedia:Minecraft|Minecraft]]. &amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/ |title=Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; It is widely regarded as the only volunteer computing project to emerge organically from a video-game fan community rather than from an academic or research institution.&amp;lt;ref&amp;gt;{{cite web |url=https://vcomp.org/en/projects/minecraft-at-home |title=Minecraft@Home - Volunteer Computing for Everyone |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The project officially launched on 24 June 2020&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;&amp;gt;{{cite web |url=https://boinc.berkeley.edu/forum_thread.php?id=13807 |title=Thread: Minecraft@Home launched |website=BOINC |date=2020-06-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; and has since attracted thousands of volunteers who have collectively delivered hundreds of petaFLOPS of compute time toward recovering lost Minecraft world seeds and probing the mathematical limits of the game&#039;s world generation.&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Minecraft world seeds ===&lt;br /&gt;
&lt;br /&gt;
Every Minecraft world is generated deterministically from a single integer called a &#039;&#039;seed&#039;&#039;. Internally, Java Edition stores the seed as a [[wikipedia:64-bit computing|64-bit]] signed integer, giving a total seed space ranging from &amp;lt;math&amp;gt;-9{,}223{,}372{,}036{,}854{,}775{,}808&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;9{,}223{,}372{,}036{,}854{,}775{,}807&amp;lt;/math&amp;gt; — over 18.4 quintillion distinct worlds.&amp;lt;ref&amp;gt;{{cite web |url=https://www.alanzucconi.com/2022/06/05/minecraft-world-generation/ |title=The World Generation of Minecraft |last=Zucconi |first=Alan |date=2022-06-05 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/World_seed |title=World seed - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The game uses this seed to initialize a [[wikipedia:pseudorandom number generator|pseudorandom number generator]] (PRNG), specifically Java&#039;s [[wikipedia:Linear congruential generator|linear congruential generator]] (LCG) with the recurrence relation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;s_{n+1} = (25{,}214{,}903{,}917 \cdot s_n + 11) \bmod 2^{48}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although the seed itself spans 64 bits, only the lower 48 bits drive most terrain generation, which means the effective brute-force search space for many seedcracking problems is &amp;lt;math&amp;gt;2^{48} \approx 281&amp;lt;/math&amp;gt; trillion candidate seeds.&amp;lt;ref&amp;gt;{{cite web |url=https://www.cs.columbia.edu/~sedwards/classes/2021/4995-fall/reports/SeedCracker.pdf |title=SeedCracker: A Parallel Minecraft Seed Reverse Engineering Tool |last1=Gonzalez |first1=Federick |last2=Chen |first2=Justin |publisher=Columbia University |year=2021 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The game&#039;s world-generation algorithm (based on [[wikipedia:Perlin noise|Perlin noise]] and a chain of biome and terrain rules) is fully deterministic: the same seed, version, and settings always produce identical terrain. Because Minecraft is written in Java and has been fully decompiled, researchers can reverse-engineer the generation logic and use it to filter candidate seeds against observed landmarks — a perfect workload for distributed computing.&lt;br /&gt;
&lt;br /&gt;
When the original seed of a screenshot or panorama is unknown, recovering it amounts to a brute-force search problem. Two worlds can appear nearly identical to a player yet originate from entirely different seeds; recovering the exact seed from a screenshot requires testing billions of candidates against terrain features (mountain profiles, biome boundaries, structure positions) extracted from the image.&amp;lt;ref name=&amp;quot;vcomp&amp;quot;&amp;gt;{{cite web |url=https://vcomp.org/en/projects/minecraft-at-home |title=Minecraft@Home |website=Volunteer Computing for Everyone |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Searching the full &amp;lt;math&amp;gt;2^{48}&amp;lt;/math&amp;gt; seed space sequentially on a single modern computer would take on the order of months to years for many projects.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/packpng.html |title=Pack.PNG - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; BOINC transforms that obstacle into a tractable problem by distributing the search across thousands of volunteers&#039; machines running in parallel. Each volunteer&#039;s GPU or CPU processes a slice of candidate seeds, uploading results to the central server, which assembles and validates them. This is exactly the kind of [[wikipedia:embarrassingly parallel|embarrassingly parallel]] workload for which volunteer computing is ideally suited.&lt;br /&gt;
&lt;br /&gt;
Beyond raw compute power, BOINC provides the project with a trusted framework for result validation (redundant replication guards against errors and cheating), cross-platform client support, and a credit system that recognizes volunteer contributions. As BOINC&#039;s creator David P. Anderson has documented, the platform harnesses idle consumer hardware that collectively delivers compute throughput that would be prohibitively expensive to purchase commercially.&amp;lt;ref&amp;gt;{{cite web |url=https://arxiv.org/pdf/1903.01699 |title=BOINC: A Platform for Volunteer Computing |last=Anderson |first=David P. |year=2019 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable in the BOINC ecosystem for being a community-run project with no institutional sponsor, funded entirely by volunteer effort and donations, and for targeting a cultural and gaming domain rather than traditional scientific research.&amp;lt;ref name=&amp;quot;boincaustralia&amp;quot;&amp;gt;{{cite web |url=https://forum.boinc-australia.net/ |title=BOINC-AUSTRALIA FORUM - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The project demonstrates that distributed computing methods pioneered for astrophysics and biomedicine transfer cleanly to reverse-engineering problems in computational game research.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:SEED of Minecraft&#039;s title-screen background PANORAMA.jpg|thumb|SEED of Minecraft&#039;s title-screen background PANORAMA]]&lt;br /&gt;
Minecraft@Home grew out of a broader community effort to recover famous Minecraft world seeds that was catalysed in early 2020 by YouTuber SalC1. &amp;lt;ref name=&amp;quot;packpng_project&amp;quot;&amp;gt;{{cite web |url=https://minecraftathome.com/projects/packpng.html |title=Pack.PNG - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; On 14 January 2020, SalC1 uploaded a video asking about the origin of &#039;&#039;pack.png&#039;&#039;, which sparked serious seedfinding work across several Discord communities.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt; Community member Tomlacko simultaneously began researching the game&#039;s title-screen panorama, determining the game version and the exact Z coordinate from cloud patterns. His findings were shared on SalC1&#039;s Discord server, and a dedicated channel in a newly created &#039;&#039;Minecraft@Home&#039;&#039; Discord server was set up to coordinate the effort.&amp;lt;ref name=&amp;quot;panorama&amp;quot;&amp;gt;{{cite web |url=https://minecraftathome.com/projects/beta-panorama.html |title=Beta Panorama - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BOINC-backed Minecraft@Home project went live on 24 June 2020,&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;/&amp;gt; with the panorama application as its inaugural workload. At launch it was GPU-only, with OpenCL support for NVIDIA hardware; AMD support followed within days.&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;/&amp;gt; The panorama seed was found in under 24 hours of distributed runtime, representing approximately 93 days of single-machine processing time compressed into one day — a total of 54.5 exaFLOPs of computation.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following the panorama success, the community turned to &#039;&#039;pack.png&#039;&#039; and multiple other targets. By 2021 the project had recovered seeds for the Herobrine screenshot, the Skull-on-Fire painting, and several Minecraft menu backgrounds. The project continues to run as of 2026, with active applications searching for large veins of diamond ore in Minecraft 1.21.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home aims to answer fundamental questions about Minecraft&#039;s world generation by:&lt;br /&gt;
&lt;br /&gt;
* Recovering the original seeds of famous Minecraft worlds, screenshots, and panoramas that have been lost or were never publicly known.&lt;br /&gt;
* Exploring the absolute statistical limits of world generation, such as the tallest cactus that can naturally generate, or the largest natural ore veins.&lt;br /&gt;
* Recreating iconic Minecraft scenes from cultural history for the community to revisit.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless|220px]]&lt;br /&gt;
&lt;br /&gt;
Each Minecraft@Home project follows a broadly similar workflow. Researchers first study the target — a screenshot, video frame, or in-game image — to extract constraints on the world: the probable game version, biome type, exact coordinates derived from cloud positions or grass colour data, and characteristic terrain features such as tree arrangements or block proportions. These constraints are encoded into a filtering application that can rapidly reject candidate seeds that cannot match, before running a final terrain-check against the handful of survivors.&lt;br /&gt;
&lt;br /&gt;
The filtering applications are compiled as GPU kernels (using [[wikipedia:OpenCL|OpenCL]]), because GPU parallelism is ideally suited to testing billions of simple mathematical operations per second. The BOINC server distributes work units — each covering a contiguous range of candidate seeds — to volunteers, collects the results, and validates them through redundant replication.&amp;lt;ref name=&amp;quot;boincaustralia&amp;quot;/&amp;gt; Source code for the server infrastructure is publicly available on GitHub and uses Docker containers to allow community members to run a local replica of the full server stack.&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/minecrafthome/minecrafthome |title=minecrafthome/minecrafthome on GitHub |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For projects where a brute-force sweep of all &amp;lt;math&amp;gt;2^{48}&amp;lt;/math&amp;gt; seeds is needed, the work is divided into segments distributed as individual BOINC work units. The &#039;&#039;pack.png&#039;&#039; project, for example, exhausted all segments and found its target in the final 5% of the search space.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
Since its launch in 2020, Minecraft@Home has completed or advanced the following notable projects:&lt;br /&gt;
&lt;br /&gt;
=== Main Menu Panorama (Beta 1.7.3) ===&lt;br /&gt;
&lt;br /&gt;
The rotating background that greeted Minecraft players on the title screen from version Beta 1.8 through Release 1.13.2 was the project&#039;s first and founding target. Tomlacko identified the panorama&#039;s version (Beta 1.7.3) and Z coordinate from cloud metadata; the BOINC application found the seed in under 24 hours after launch on 24 June 2020, compressing roughly 93 days of single-machine work into one distributed day.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts-title-screen |title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama |website=Minecraft Forum |date=2020-07-18 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG (Alpha 1.2.2) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Pack.png&#039;&#039; is the small hill-and-waterfall image that served as Minecraft&#039;s default texture-pack icon from Alpha 1.2.2 (November 2010) through Release 1.13.2, and continues to be used as the default server icon.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Java_Edition_Alpha_v1.2.2 |title=Java Edition Alpha v1.2.2 - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The search began in January 2020 and involved extensive reverse-engineering of block proportions, dirt-layer thickness, sand-distribution patterns, and AI-upscaled versions of the low-resolution source image.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt; After eight months of work by two teams, the seed was found on 5 September 2020 — in the last 5% of the search space — by BOINC volunteers &#039;&#039;niraami&#039;&#039; and &#039;&#039;zombie67&#039;&#039;, whose machines processed the decisive work unit at 04:04 UTC.&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/the-iconic-minecraft-world-of-the-packpng-image-has-been-found/ |title=The iconic Minecraft world of the Pack.png image has been found |last=Brown |first=Fraser |website=PC Gamer |date=2020-09-05 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The seed is &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt;, and the hill can be found at coordinates X=49, Z=0 in Alpha 1.2.2a.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/World_seed |title=World seed - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even Minecraft creator Markus &amp;quot;Notch&amp;quot; Persson and technical director Nathan &amp;quot;Dinnerbone&amp;quot; Adams attempted to assist the search but were unable to recall the original seed.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting (Alpha 1.1.2_01) ===&lt;br /&gt;
&lt;br /&gt;
Minecraft&#039;s craftable &amp;quot;Skull on Fire&amp;quot; painting, created by artist Kristoffer Zetterstrand and added in Beta 1.3, depicts a mountain scene from an actual Minecraft world. Zetterstrand shared his original screenshot (taken 12 October 2010 at 13:22 UTC+2) directly with the Minecraft@Home team.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/skull-painting.html |title=Skull-on-Fire - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; Using that screenshot and reverse-engineering the terrain, community member andrew_555 (Kminster) independently derived the seed and shared it with the project on 10 September 2020, just five days after the &#039;&#039;pack.png&#039;&#039; announcement. Two valid seeds reproduce the terrain: &amp;lt;code&amp;gt;-1044887956651363087&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;-6984854390176336655&amp;lt;/code&amp;gt;, both in Alpha 1.1.2_01, at coordinates X=-249.65, Y=91, Z=-29.04.&amp;lt;ref&amp;gt;{{cite web |url=https://screenrant.com/minecraft-world-seeds-discovered-herobrine-title-screen-iconic/ |title=Every Iconic Minecraft World Seed Discovered So Far |last=Gravelle |first=Cody |website=Screen Rant |date=2021-03-21 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Herobrine World (Alpha 1.0.16_02) ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Herobrine|Herobrine]] is a long-running Minecraft creepypasta — a supposed ghost of Notch&#039;s brother, depicted in an eerie screenshot circulated from around 2010. A project to find the original screenshot&#039;s world seed began on 5 September 2020. After months of debugging (including discovering that a mismatched leaf block in the terrain recreation had been causing the filter to fail), andrew_555 (Kminster) found the seed on 16 January 2021.&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/ |title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found |last=Chalk |first=Andy |website=PC Gamer |date=2021-01-22 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The seed is &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt;, in Alpha 1.0.16_02, at coordinates X=5.06, Y=71, Z=-298.54.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Herobrine |title=Herobrine - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://news.nixinova.com/news/2021/01/minecraft-herobrine-hoax-image-world-seed-found |title=Minecraft World Seed of Herobrine Hoax Image Found |website=Nixinova News |date=2021-01-23 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; Because Alpha 1.0.16_02 predates Minecraft&#039;s in-game seed-entry feature, visiting the world requires manually editing the &amp;lt;code&amp;gt;level.dat&amp;lt;/code&amp;gt; save file.&lt;br /&gt;
&lt;br /&gt;
In the changelog of Minecraft Launcher version 2.2.176x, released shortly after the seed was discovered, Mojang included their traditional joke entry: &amp;quot;Removed Herobrine from Java Alpha 1.0.16_02.&amp;quot;&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Herobrine |title=Herobrine - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.13-1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
Following the Beta 1.7.3 panorama discovery, Minecraft@Home located the seeds for all four remaining menu background panoramas introduced in versions 1.13 through 1.16, completing the set of known Minecraft title-screen worlds.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/1-13-1-16-panoramas.html |title=1.13-1.16 Backgrounds - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
Cacti in Minecraft normally generate between one and three blocks tall; occasionally two cacti can spawn in adjacent chunks and, due to growth mechanics, effectively &amp;quot;stack.&amp;quot; Minecraft@Home&#039;s &#039;&#039;Kaktwoos&#039;&#039; (and &#039;&#039;Kaktoos&#039;&#039;) applications systematically search all chunk seeds for unusually tall stacked cacti. The current confirmed records are a 22-block-tall cactus in normal overworld generation (seed &amp;lt;code&amp;gt;11343195073417814&amp;lt;/code&amp;gt;, version 1.14.4, at coordinates 14,955,936 / 64 / -3,750,655, found by volunteer SirNapkin1334)&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/tallcactus.html |title=Tallest Cactus - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://nsonews.com/minecrafthome/ |title=Minecraft@Home - NSO News |date=2020-07-03 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; and a 24-block-tall cactus on a superflat desert world (seed &amp;lt;code&amp;gt;93257619645605&amp;lt;/code&amp;gt;).&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/tallcactus.html |title=Tallest Cactus - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Smash Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
When Nintendo added Steve (from Minecraft) to &#039;&#039;Super Smash Bros. Ultimate&#039;&#039;, the in-game Minecraft World stage featured six background images. Minecraft@Home launched a project to recover the original Minecraft world seeds behind each of those six backgrounds.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/smash-backgrounds.html |title=Smash Backgrounds - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer Recreation ===&lt;br /&gt;
&lt;br /&gt;
The original Minecraft promotional trailer, one of the most-watched pieces of Minecraft content ever created, is being recreated scene by scene by locating the exact in-game seeds and camera positions used in each shot.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/official-trailer.html |title=Minecraft Trailer - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Large Diamond Vein Search (Active, 2026) ===&lt;br /&gt;
&lt;br /&gt;
As of May 2026, the active BOINC application is &amp;quot;1.21 Find large veins of diamond ore,&amp;quot; which searches Minecraft 1.21 world seeds for exceptionally large naturally generated diamond ore formations. The application had over 718,000 unsent tasks queued and was being processed by nearly 200 active users per day at the time of writing.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/server_status.php |title=Minecraft@Home - Project Status |date=2026-05-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BOINC statistics ==&lt;br /&gt;
[[File:Screenshot from the Minecraft End.png|thumb|Screenshot from the Minecraft End]]&lt;br /&gt;
The following figures were recorded from the Minecraft@Home server status page on 24 May 2026:&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/server_status.php |title=Minecraft@Home - Project Status |date=2026-05-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,639&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 655&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,567&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,650&lt;br /&gt;
|-&lt;br /&gt;
| Recent compute throughput || 10,385.26 TFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Total historic compute || 241,900.05 TFLOPS-days&lt;br /&gt;
|-&lt;br /&gt;
| New users (last 24 h) || 19&lt;br /&gt;
|-&lt;br /&gt;
| New computers (last 24 h) || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Technical notes ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft@Home server is implemented as a set of [[wikipedia:Docker (software)|Docker]] containers that together constitute a standard BOINC server environment (scheduler, feeder, transitioner, file-deleter, per-application assimilators, and result validators).&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/minecrafthome/minecrafthome |title=minecrafthome/minecrafthome - GitHub |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The server software runs BOINC server release 1.2.0. Applications are GPU-accelerated via OpenCL (requiring at minimum OpenCL 2.0 and the &amp;lt;code&amp;gt;cl_khr_fp64&amp;lt;/code&amp;gt; double-precision extension) and target Windows and Linux; CPU fallback modes are not generally offered, as the GPU kernels provide orders-of-magnitude higher throughput for the seed-testing workloads.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s source repositories under the [https://github.com/minecrafthome GitHub organization] include the server stack, the individual research applications (such as &#039;&#039;kaktwoos&#039;&#039;, &#039;&#039;kaktoos&#039;&#039;, and &#039;&#039;OneChunk&#039;&#039;), and a branding repository for project assets.&lt;br /&gt;
&lt;br /&gt;
== Project team ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a volunteer community project with no single institutional home. Key contributors to the founding projects include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tomlacko&#039;&#039;&#039; — project originator; identified panorama version and coordinates&lt;br /&gt;
* &#039;&#039;&#039;Earthcomputer, Cortex, Neil&#039;&#039;&#039; — wrote biome and terrain-checking code; located the panorama seed&lt;br /&gt;
* &#039;&#039;&#039;DutChen18&#039;&#039;&#039; — built tools and mods for data gathering and seed-checking recreation&lt;br /&gt;
* &#039;&#039;&#039;PseudoGravity&#039;&#039;&#039; — reversed tallgrass colour data to identify biome values in the panorama&lt;br /&gt;
* &#039;&#039;&#039;Philipp_DE&#039;&#039;&#039; — hosts the server infrastructure; operates the recreation Minecraft server and screenshotting bot; maintains the BOINC project&lt;br /&gt;
* &#039;&#039;&#039;andrew_555 (Kminster)&#039;&#039;&#039; — independently derived both the Skull-on-Fire seed and (after months of debugging) the Herobrine seed&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/ |title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found |website=PC Gamer |date=2021-01-22 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full list of contributors to each project is documented in credits spreadsheets linked from the individual project pages on the Minecraft@Home website.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Community discussion and coordination takes place primarily on the [https://discord.gg/FVM4SPp Minecraft@Home Discord server]. The GitHub organization is at [https://github.com/minecrafthome github.com/minecrafthome].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:Procedural generation|Procedural generation]]&lt;br /&gt;
* [[wikipedia:Pseudorandom number generator|Pseudorandom number generator]]&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:Minecraft]]&lt;br /&gt;
[[Category:Gaming research]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1358</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1358"/>
		<updated>2026-05-24T21:13:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Minecraft@Home&lt;br /&gt;
| logo                 = Minecraft@Home logo.png&lt;br /&gt;
| logo caption         = Minecraft@Home logo&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Gaming / Computational Research&lt;br /&gt;
| compute              = GPU&lt;br /&gt;
| dependencies         = OpenCL 2.0+&lt;br /&gt;
&lt;br /&gt;
| developer            = Minecraft@Home community (philipp_de, maintainer)&lt;br /&gt;
| author               = Tomlacko, Earthcomputer, Cortex, Neil, DutChen18, PseudoGravity, Philipp_DE, and others&lt;br /&gt;
| released             = {{Start date and age|2020|06|24}}&lt;br /&gt;
| repository           = {{URL|https://github.com/minecrafthome/minecrafthome}}&lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 24 May 2026&lt;br /&gt;
| average performance  = 10,385 TFLOPS (recent)&lt;br /&gt;
| active users         = 655&lt;br /&gt;
| total users          = 6639&lt;br /&gt;
| active hosts         = 1650&lt;br /&gt;
| total hosts          = 13567&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://minecraftathome.com/minecrafthome/}}&lt;br /&gt;
| license              = Open source (server: PHP/Docker; applications vary)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[File:{{#setmainimage:Minecraft.png}}|alt=Minecraft@Home project banner|center|frameless]]&lt;br /&gt;
&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform that enlists the idle processing power of volunteers&#039; computers to research questions related to [[wikipedia:Minecraft|Minecraft]]. &amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/ |title=Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; It is widely regarded as the only volunteer computing project to emerge organically from a video-game fan community rather than from an academic or research institution.&amp;lt;ref&amp;gt;{{cite web |url=https://vcomp.org/en/projects/minecraft-at-home |title=Minecraft@Home - Volunteer Computing for Everyone |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The project officially launched on 24 June 2020&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;&amp;gt;{{cite web |url=https://boinc.berkeley.edu/forum_thread.php?id=13807 |title=Thread: Minecraft@Home launched |website=BOINC |date=2020-06-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; and has since attracted thousands of volunteers who have collectively delivered hundreds of petaFLOPS of compute time toward recovering lost Minecraft world seeds and probing the mathematical limits of the game&#039;s world generation.&lt;br /&gt;
[[File:SEED of Minecraft&#039;s title-screen background PANORAMA.jpg|thumb|SEED of Minecraft&#039;s title-screen background PANORAMA]]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Minecraft world seeds ===&lt;br /&gt;
&lt;br /&gt;
Every Minecraft world is generated deterministically from a single integer called a &#039;&#039;seed&#039;&#039;. Internally, Java Edition stores the seed as a [[wikipedia:64-bit computing|64-bit]] signed integer, giving a total seed space ranging from &amp;lt;math&amp;gt;-9{,}223{,}372{,}036{,}854{,}775{,}808&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;9{,}223{,}372{,}036{,}854{,}775{,}807&amp;lt;/math&amp;gt; — over 18.4 quintillion distinct worlds.&amp;lt;ref&amp;gt;{{cite web |url=https://www.alanzucconi.com/2022/06/05/minecraft-world-generation/ |title=The World Generation of Minecraft |last=Zucconi |first=Alan |date=2022-06-05 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/World_seed |title=World seed - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The game uses this seed to initialize a [[wikipedia:pseudorandom number generator|pseudorandom number generator]] (PRNG), specifically Java&#039;s [[wikipedia:Linear congruential generator|linear congruential generator]] (LCG) with the recurrence relation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;s_{n+1} = (25{,}214{,}903{,}917 \cdot s_n + 11) \bmod 2^{48}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although the seed itself spans 64 bits, only the lower 48 bits drive most terrain generation, which means the effective brute-force search space for many seedcracking problems is &amp;lt;math&amp;gt;2^{48} \approx 281&amp;lt;/math&amp;gt; trillion candidate seeds.&amp;lt;ref&amp;gt;{{cite web |url=https://www.cs.columbia.edu/~sedwards/classes/2021/4995-fall/reports/SeedCracker.pdf |title=SeedCracker: A Parallel Minecraft Seed Reverse Engineering Tool |last1=Gonzalez |first1=Federick |last2=Chen |first2=Justin |publisher=Columbia University |year=2021 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The game&#039;s world-generation algorithm (based on [[wikipedia:Perlin noise|Perlin noise]] and a chain of biome and terrain rules) is fully deterministic: the same seed, version, and settings always produce identical terrain. Because Minecraft is written in Java and has been fully decompiled, researchers can reverse-engineer the generation logic and use it to filter candidate seeds against observed landmarks — a perfect workload for distributed computing.&lt;br /&gt;
&lt;br /&gt;
When the original seed of a screenshot or panorama is unknown, recovering it amounts to a brute-force search problem. Two worlds can appear nearly identical to a player yet originate from entirely different seeds; recovering the exact seed from a screenshot requires testing billions of candidates against terrain features (mountain profiles, biome boundaries, structure positions) extracted from the image.&amp;lt;ref name=&amp;quot;vcomp&amp;quot;&amp;gt;{{cite web |url=https://vcomp.org/en/projects/minecraft-at-home |title=Minecraft@Home |website=Volunteer Computing for Everyone |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Searching the full &amp;lt;math&amp;gt;2^{48}&amp;lt;/math&amp;gt; seed space sequentially on a single modern computer would take on the order of months to years for many projects.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/packpng.html |title=Pack.PNG - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; BOINC transforms that obstacle into a tractable problem by distributing the search across thousands of volunteers&#039; machines running in parallel. Each volunteer&#039;s GPU or CPU processes a slice of candidate seeds, uploading results to the central server, which assembles and validates them. This is exactly the kind of [[wikipedia:embarrassingly parallel|embarrassingly parallel]] workload for which volunteer computing is ideally suited.&lt;br /&gt;
&lt;br /&gt;
Beyond raw compute power, BOINC provides the project with a trusted framework for result validation (redundant replication guards against errors and cheating), cross-platform client support, and a credit system that recognizes volunteer contributions. As BOINC&#039;s creator David P. Anderson has documented, the platform harnesses idle consumer hardware that collectively delivers compute throughput that would be prohibitively expensive to purchase commercially.&amp;lt;ref&amp;gt;{{cite web |url=https://arxiv.org/pdf/1903.01699 |title=BOINC: A Platform for Volunteer Computing |last=Anderson |first=David P. |year=2019 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable in the BOINC ecosystem for being a community-run project with no institutional sponsor, funded entirely by volunteer effort and donations, and for targeting a cultural and gaming domain rather than traditional scientific research.&amp;lt;ref name=&amp;quot;boincaustralia&amp;quot;&amp;gt;{{cite web |url=https://forum.boinc-australia.net/ |title=BOINC-AUSTRALIA FORUM - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The project demonstrates that distributed computing methods pioneered for astrophysics and biomedicine transfer cleanly to reverse-engineering problems in computational game research.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home grew out of a broader community effort to recover famous Minecraft world seeds that was catalysed in early 2020 by YouTuber SalC1. &amp;lt;ref name=&amp;quot;packpng_project&amp;quot;&amp;gt;{{cite web |url=https://minecraftathome.com/projects/packpng.html |title=Pack.PNG - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; On 14 January 2020, SalC1 uploaded a video asking about the origin of &#039;&#039;pack.png&#039;&#039;, which sparked serious seedfinding work across several Discord communities.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt; Community member Tomlacko simultaneously began researching the game&#039;s title-screen panorama, determining the game version and the exact Z coordinate from cloud patterns. His findings were shared on SalC1&#039;s Discord server, and a dedicated channel in a newly created &#039;&#039;Minecraft@Home&#039;&#039; Discord server was set up to coordinate the effort.&amp;lt;ref name=&amp;quot;panorama&amp;quot;&amp;gt;{{cite web |url=https://minecraftathome.com/projects/beta-panorama.html |title=Beta Panorama - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BOINC-backed Minecraft@Home project went live on 24 June 2020,&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;/&amp;gt; with the panorama application as its inaugural workload. At launch it was GPU-only, with OpenCL support for NVIDIA hardware; AMD support followed within days.&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;/&amp;gt; The panorama seed was found in under 24 hours of distributed runtime, representing approximately 93 days of single-machine processing time compressed into one day — a total of 54.5 exaFLOPs of computation.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following the panorama success, the community turned to &#039;&#039;pack.png&#039;&#039; and multiple other targets. By 2021 the project had recovered seeds for the Herobrine screenshot, the Skull-on-Fire painting, and several Minecraft menu backgrounds. The project continues to run as of 2026, with active applications searching for large veins of diamond ore in Minecraft 1.21.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home aims to answer fundamental questions about Minecraft&#039;s world generation by:&lt;br /&gt;
&lt;br /&gt;
* Recovering the original seeds of famous Minecraft worlds, screenshots, and panoramas that have been lost or were never publicly known.&lt;br /&gt;
* Exploring the absolute statistical limits of world generation, such as the tallest cactus that can naturally generate, or the largest natural ore veins.&lt;br /&gt;
* Recreating iconic Minecraft scenes from cultural history for the community to revisit.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless|220px]]&lt;br /&gt;
&lt;br /&gt;
Each Minecraft@Home project follows a broadly similar workflow. Researchers first study the target — a screenshot, video frame, or in-game image — to extract constraints on the world: the probable game version, biome type, exact coordinates derived from cloud positions or grass colour data, and characteristic terrain features such as tree arrangements or block proportions. These constraints are encoded into a filtering application that can rapidly reject candidate seeds that cannot match, before running a final terrain-check against the handful of survivors.&lt;br /&gt;
&lt;br /&gt;
The filtering applications are compiled as GPU kernels (using [[wikipedia:OpenCL|OpenCL]]), because GPU parallelism is ideally suited to testing billions of simple mathematical operations per second. The BOINC server distributes work units — each covering a contiguous range of candidate seeds — to volunteers, collects the results, and validates them through redundant replication.&amp;lt;ref name=&amp;quot;boincaustralia&amp;quot;/&amp;gt; Source code for the server infrastructure is publicly available on GitHub and uses Docker containers to allow community members to run a local replica of the full server stack.&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/minecrafthome/minecrafthome |title=minecrafthome/minecrafthome on GitHub |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For projects where a brute-force sweep of all &amp;lt;math&amp;gt;2^{48}&amp;lt;/math&amp;gt; seeds is needed, the work is divided into segments distributed as individual BOINC work units. The &#039;&#039;pack.png&#039;&#039; project, for example, exhausted all segments and found its target in the final 5% of the search space.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
Since its launch in 2020, Minecraft@Home has completed or advanced the following notable projects:&lt;br /&gt;
&lt;br /&gt;
=== Main Menu Panorama (Beta 1.7.3) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Minecraft_beta_panorama.jpg|alt=The Minecraft title screen background panorama that appeared in versions Beta 1.8 through 1.13|right|frameless|220px]]&lt;br /&gt;
&lt;br /&gt;
The rotating background that greeted Minecraft players on the title screen from version Beta 1.8 through Release 1.13.2 was the project&#039;s first and founding target. Tomlacko identified the panorama&#039;s version (Beta 1.7.3) and Z coordinate from cloud metadata; the BOINC application found the seed in under 24 hours after launch on 24 June 2020, compressing roughly 93 days of single-machine work into one distributed day.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts-title-screen |title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama |website=Minecraft Forum |date=2020-07-18 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG (Alpha 1.2.2) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Pack.png&#039;&#039; is the small hill-and-waterfall image that served as Minecraft&#039;s default texture-pack icon from Alpha 1.2.2 (November 2010) through Release 1.13.2, and continues to be used as the default server icon.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Java_Edition_Alpha_v1.2.2 |title=Java Edition Alpha v1.2.2 - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The search began in January 2020 and involved extensive reverse-engineering of block proportions, dirt-layer thickness, sand-distribution patterns, and AI-upscaled versions of the low-resolution source image.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt; After eight months of work by two teams, the seed was found on 5 September 2020 — in the last 5% of the search space — by BOINC volunteers &#039;&#039;niraami&#039;&#039; and &#039;&#039;zombie67&#039;&#039;, whose machines processed the decisive work unit at 04:04 UTC.&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/the-iconic-minecraft-world-of-the-packpng-image-has-been-found/ |title=The iconic Minecraft world of the Pack.png image has been found |last=Brown |first=Fraser |website=PC Gamer |date=2020-09-05 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The seed is &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt;, and the hill can be found at coordinates X=49, Z=0 in Alpha 1.2.2a.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/World_seed |title=World seed - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even Minecraft creator Markus &amp;quot;Notch&amp;quot; Persson and technical director Nathan &amp;quot;Dinnerbone&amp;quot; Adams attempted to assist the search but were unable to recall the original seed.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting (Alpha 1.1.2_01) ===&lt;br /&gt;
&lt;br /&gt;
Minecraft&#039;s craftable &amp;quot;Skull on Fire&amp;quot; painting, created by artist Kristoffer Zetterstrand and added in Beta 1.3, depicts a mountain scene from an actual Minecraft world. Zetterstrand shared his original screenshot (taken 12 October 2010 at 13:22 UTC+2) directly with the Minecraft@Home team.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/skull-painting.html |title=Skull-on-Fire - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; Using that screenshot and reverse-engineering the terrain, community member andrew_555 (Kminster) independently derived the seed and shared it with the project on 10 September 2020, just five days after the &#039;&#039;pack.png&#039;&#039; announcement. Two valid seeds reproduce the terrain: &amp;lt;code&amp;gt;-1044887956651363087&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;-6984854390176336655&amp;lt;/code&amp;gt;, both in Alpha 1.1.2_01, at coordinates X=-249.65, Y=91, Z=-29.04.&amp;lt;ref&amp;gt;{{cite web |url=https://screenrant.com/minecraft-world-seeds-discovered-herobrine-title-screen-iconic/ |title=Every Iconic Minecraft World Seed Discovered So Far |last=Gravelle |first=Cody |website=Screen Rant |date=2021-03-21 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Herobrine World (Alpha 1.0.16_02) ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Herobrine|Herobrine]] is a long-running Minecraft creepypasta — a supposed ghost of Notch&#039;s brother, depicted in an eerie screenshot circulated from around 2010. A project to find the original screenshot&#039;s world seed began on 5 September 2020. After months of debugging (including discovering that a mismatched leaf block in the terrain recreation had been causing the filter to fail), andrew_555 (Kminster) found the seed on 16 January 2021.&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/ |title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found |last=Chalk |first=Andy |website=PC Gamer |date=2021-01-22 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The seed is &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt;, in Alpha 1.0.16_02, at coordinates X=5.06, Y=71, Z=-298.54.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Herobrine |title=Herobrine - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://news.nixinova.com/news/2021/01/minecraft-herobrine-hoax-image-world-seed-found |title=Minecraft World Seed of Herobrine Hoax Image Found |website=Nixinova News |date=2021-01-23 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; Because Alpha 1.0.16_02 predates Minecraft&#039;s in-game seed-entry feature, visiting the world requires manually editing the &amp;lt;code&amp;gt;level.dat&amp;lt;/code&amp;gt; save file.&lt;br /&gt;
&lt;br /&gt;
In the changelog of Minecraft Launcher version 2.2.176x, released shortly after the seed was discovered, Mojang included their traditional joke entry: &amp;quot;Removed Herobrine from Java Alpha 1.0.16_02.&amp;quot;&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Herobrine |title=Herobrine - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.13-1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
Following the Beta 1.7.3 panorama discovery, Minecraft@Home located the seeds for all four remaining menu background panoramas introduced in versions 1.13 through 1.16, completing the set of known Minecraft title-screen worlds.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/1-13-1-16-panoramas.html |title=1.13-1.16 Backgrounds - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
Cacti in Minecraft normally generate between one and three blocks tall; occasionally two cacti can spawn in adjacent chunks and, due to growth mechanics, effectively &amp;quot;stack.&amp;quot; Minecraft@Home&#039;s &#039;&#039;Kaktwoos&#039;&#039; (and &#039;&#039;Kaktoos&#039;&#039;) applications systematically search all chunk seeds for unusually tall stacked cacti. The current confirmed records are a 22-block-tall cactus in normal overworld generation (seed &amp;lt;code&amp;gt;11343195073417814&amp;lt;/code&amp;gt;, version 1.14.4, at coordinates 14,955,936 / 64 / -3,750,655, found by volunteer SirNapkin1334)&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/tallcactus.html |title=Tallest Cactus - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://nsonews.com/minecrafthome/ |title=Minecraft@Home - NSO News |date=2020-07-03 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; and a 24-block-tall cactus on a superflat desert world (seed &amp;lt;code&amp;gt;93257619645605&amp;lt;/code&amp;gt;).&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/tallcactus.html |title=Tallest Cactus - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Smash Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
When Nintendo added Steve (from Minecraft) to &#039;&#039;Super Smash Bros. Ultimate&#039;&#039;, the in-game Minecraft World stage featured six background images. Minecraft@Home launched a project to recover the original Minecraft world seeds behind each of those six backgrounds.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/smash-backgrounds.html |title=Smash Backgrounds - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer Recreation ===&lt;br /&gt;
&lt;br /&gt;
The original Minecraft promotional trailer, one of the most-watched pieces of Minecraft content ever created, is being recreated scene by scene by locating the exact in-game seeds and camera positions used in each shot.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/official-trailer.html |title=Minecraft Trailer - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Large Diamond Vein Search (Active, 2026) ===&lt;br /&gt;
&lt;br /&gt;
As of May 2026, the active BOINC application is &amp;quot;1.21 Find large veins of diamond ore,&amp;quot; which searches Minecraft 1.21 world seeds for exceptionally large naturally generated diamond ore formations. The application had over 718,000 unsent tasks queued and was being processed by nearly 200 active users per day at the time of writing.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/server_status.php |title=Minecraft@Home - Project Status |date=2026-05-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BOINC statistics ==&lt;br /&gt;
&lt;br /&gt;
The following figures were recorded from the Minecraft@Home server status page on 24 May 2026:&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/server_status.php |title=Minecraft@Home - Project Status |date=2026-05-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,639&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 655&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,567&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,650&lt;br /&gt;
|-&lt;br /&gt;
| Recent compute throughput || 10,385.26 TFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Total historic compute || 241,900.05 TFLOPS-days&lt;br /&gt;
|-&lt;br /&gt;
| New users (last 24 h) || 19&lt;br /&gt;
|-&lt;br /&gt;
| New computers (last 24 h) || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Technical notes ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft@Home server is implemented as a set of [[wikipedia:Docker (software)|Docker]] containers that together constitute a standard BOINC server environment (scheduler, feeder, transitioner, file-deleter, per-application assimilators, and result validators).&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/minecrafthome/minecrafthome |title=minecrafthome/minecrafthome - GitHub |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The server software runs BOINC server release 1.2.0. Applications are GPU-accelerated via OpenCL (requiring at minimum OpenCL 2.0 and the &amp;lt;code&amp;gt;cl_khr_fp64&amp;lt;/code&amp;gt; double-precision extension) and target Windows and Linux; CPU fallback modes are not generally offered, as the GPU kernels provide orders-of-magnitude higher throughput for the seed-testing workloads.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s source repositories under the [https://github.com/minecrafthome GitHub organization] include the server stack, the individual research applications (such as &#039;&#039;kaktwoos&#039;&#039;, &#039;&#039;kaktoos&#039;&#039;, and &#039;&#039;OneChunk&#039;&#039;), and a branding repository for project assets.&lt;br /&gt;
&lt;br /&gt;
== Project team ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a volunteer community project with no single institutional home. Key contributors to the founding projects include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tomlacko&#039;&#039;&#039; — project originator; identified panorama version and coordinates&lt;br /&gt;
* &#039;&#039;&#039;Earthcomputer, Cortex, Neil&#039;&#039;&#039; — wrote biome and terrain-checking code; located the panorama seed&lt;br /&gt;
* &#039;&#039;&#039;DutChen18&#039;&#039;&#039; — built tools and mods for data gathering and seed-checking recreation&lt;br /&gt;
* &#039;&#039;&#039;PseudoGravity&#039;&#039;&#039; — reversed tallgrass colour data to identify biome values in the panorama&lt;br /&gt;
* &#039;&#039;&#039;Philipp_DE&#039;&#039;&#039; — hosts the server infrastructure; operates the recreation Minecraft server and screenshotting bot; maintains the BOINC project&lt;br /&gt;
* &#039;&#039;&#039;andrew_555 (Kminster)&#039;&#039;&#039; — independently derived both the Skull-on-Fire seed and (after months of debugging) the Herobrine seed&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/ |title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found |website=PC Gamer |date=2021-01-22 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full list of contributors to each project is documented in credits spreadsheets linked from the individual project pages on the Minecraft@Home website.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Community discussion and coordination takes place primarily on the [https://discord.gg/FVM4SPp Minecraft@Home Discord server]. The GitHub organization is at [https://github.com/minecrafthome github.com/minecrafthome].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:Procedural generation|Procedural generation]]&lt;br /&gt;
* [[wikipedia:Pseudorandom number generator|Pseudorandom number generator]]&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:Minecraft]]&lt;br /&gt;
[[Category:Gaming research]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1357</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=1357"/>
		<updated>2026-05-24T21:12:54Z</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=1356</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=1356"/>
		<updated>2026-05-24T21:10:47Z</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;
#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:first-child:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child:blank,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; .mw-empty-elt {&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1355</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=1355"/>
		<updated>2026-05-24T20:59: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;
/* ══════════════════════════════════════════════════════&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1354</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=1354"/>
		<updated>2026-05-24T20:57:34Z</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;
/* ══════════════════════════════════════════════════════&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;
    /* ── Left sidebar / panel ───────────────────────── */&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1353</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1353"/>
		<updated>2026-05-24T20:48:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Minecraft@Home&lt;br /&gt;
| logo                 = Minecraft@Home logo.png&lt;br /&gt;
| logo caption         = Minecraft@Home logo&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Gaming / Computational Research&lt;br /&gt;
| compute              = GPU&lt;br /&gt;
| dependencies         = OpenCL 2.0+&lt;br /&gt;
&lt;br /&gt;
| developer            = Minecraft@Home community (philipp_de, maintainer)&lt;br /&gt;
| author               = Tomlacko, Earthcomputer, Cortex, Neil, DutChen18, PseudoGravity, Philipp_DE, and others&lt;br /&gt;
| released             = {{Start date and age|2020|06|24}}&lt;br /&gt;
| repository           = {{URL|https://github.com/minecrafthome/minecrafthome}}&lt;br /&gt;
&lt;br /&gt;
| operating system     = Windows, Linux&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 24 May 2026&lt;br /&gt;
| average performance  = 10,385 TFLOPS (recent)&lt;br /&gt;
| active users         = 655&lt;br /&gt;
| total users          = 6639&lt;br /&gt;
| active hosts         = 1650&lt;br /&gt;
| total hosts          = 13567&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://minecraftathome.com/minecrafthome/}}&lt;br /&gt;
| license              = Open source (server: PHP/Docker; applications vary)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[File:{{#setmainimage:Minecraft.png}}|alt=Minecraft@Home project banner|center|frameless]]&lt;br /&gt;
&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] platform that enlists the idle processing power of volunteers&#039; computers to research questions related to [[wikipedia:Minecraft|Minecraft]]. &amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/ |title=Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; It is widely regarded as the only volunteer computing project to emerge organically from a video-game fan community rather than from an academic or research institution.&amp;lt;ref&amp;gt;{{cite web |url=https://vcomp.org/en/projects/minecraft-at-home |title=Minecraft@Home - Volunteer Computing for Everyone |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The project officially launched on 24 June 2020&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;&amp;gt;{{cite web |url=https://boinc.berkeley.edu/forum_thread.php?id=13807 |title=Thread: Minecraft@Home launched |website=BOINC |date=2020-06-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; and has since attracted thousands of volunteers who have collectively delivered hundreds of petaFLOPS of compute time toward recovering lost Minecraft world seeds and probing the mathematical limits of the game&#039;s world generation.&lt;br /&gt;
&lt;br /&gt;
[[File:Minecraft_title_screen.png|alt=The Minecraft title screen panorama, whose seed was the first major discovery of Minecraft@Home|right|frameless|250px]]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Minecraft world seeds ===&lt;br /&gt;
&lt;br /&gt;
Every Minecraft world is generated deterministically from a single integer called a &#039;&#039;seed&#039;&#039;. Internally, Java Edition stores the seed as a [[wikipedia:64-bit computing|64-bit]] signed integer, giving a total seed space ranging from &amp;lt;math&amp;gt;-9{,}223{,}372{,}036{,}854{,}775{,}808&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;9{,}223{,}372{,}036{,}854{,}775{,}807&amp;lt;/math&amp;gt; — over 18.4 quintillion distinct worlds.&amp;lt;ref&amp;gt;{{cite web |url=https://www.alanzucconi.com/2022/06/05/minecraft-world-generation/ |title=The World Generation of Minecraft |last=Zucconi |first=Alan |date=2022-06-05 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/World_seed |title=World seed - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The game uses this seed to initialize a [[wikipedia:pseudorandom number generator|pseudorandom number generator]] (PRNG), specifically Java&#039;s [[wikipedia:Linear congruential generator|linear congruential generator]] (LCG) with the recurrence relation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;s_{n+1} = (25{,}214{,}903{,}917 \cdot s_n + 11) \bmod 2^{48}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although the seed itself spans 64 bits, only the lower 48 bits drive most terrain generation, which means the effective brute-force search space for many seedcracking problems is &amp;lt;math&amp;gt;2^{48} \approx 281&amp;lt;/math&amp;gt; trillion candidate seeds.&amp;lt;ref&amp;gt;{{cite web |url=https://www.cs.columbia.edu/~sedwards/classes/2021/4995-fall/reports/SeedCracker.pdf |title=SeedCracker: A Parallel Minecraft Seed Reverse Engineering Tool |last1=Gonzalez |first1=Federick |last2=Chen |first2=Justin |publisher=Columbia University |year=2021 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The game&#039;s world-generation algorithm (based on [[wikipedia:Perlin noise|Perlin noise]] and a chain of biome and terrain rules) is fully deterministic: the same seed, version, and settings always produce identical terrain. Because Minecraft is written in Java and has been fully decompiled, researchers can reverse-engineer the generation logic and use it to filter candidate seeds against observed landmarks — a perfect workload for distributed computing.&lt;br /&gt;
&lt;br /&gt;
When the original seed of a screenshot or panorama is unknown, recovering it amounts to a brute-force search problem. Two worlds can appear nearly identical to a player yet originate from entirely different seeds; recovering the exact seed from a screenshot requires testing billions of candidates against terrain features (mountain profiles, biome boundaries, structure positions) extracted from the image.&amp;lt;ref name=&amp;quot;vcomp&amp;quot;&amp;gt;{{cite web |url=https://vcomp.org/en/projects/minecraft-at-home |title=Minecraft@Home |website=Volunteer Computing for Everyone |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Searching the full &amp;lt;math&amp;gt;2^{48}&amp;lt;/math&amp;gt; seed space sequentially on a single modern computer would take on the order of months to years for many projects.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/packpng.html |title=Pack.PNG - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; BOINC transforms that obstacle into a tractable problem by distributing the search across thousands of volunteers&#039; machines running in parallel. Each volunteer&#039;s GPU or CPU processes a slice of candidate seeds, uploading results to the central server, which assembles and validates them. This is exactly the kind of [[wikipedia:embarrassingly parallel|embarrassingly parallel]] workload for which volunteer computing is ideally suited.&lt;br /&gt;
&lt;br /&gt;
Beyond raw compute power, BOINC provides the project with a trusted framework for result validation (redundant replication guards against errors and cheating), cross-platform client support, and a credit system that recognizes volunteer contributions. As BOINC&#039;s creator David P. Anderson has documented, the platform harnesses idle consumer hardware that collectively delivers compute throughput that would be prohibitively expensive to purchase commercially.&amp;lt;ref&amp;gt;{{cite web |url=https://arxiv.org/pdf/1903.01699 |title=BOINC: A Platform for Volunteer Computing |last=Anderson |first=David P. |year=2019 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable in the BOINC ecosystem for being a community-run project with no institutional sponsor, funded entirely by volunteer effort and donations, and for targeting a cultural and gaming domain rather than traditional scientific research.&amp;lt;ref name=&amp;quot;boincaustralia&amp;quot;&amp;gt;{{cite web |url=https://forum.boinc-australia.net/ |title=BOINC-AUSTRALIA FORUM - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The project demonstrates that distributed computing methods pioneered for astrophysics and biomedicine transfer cleanly to reverse-engineering problems in computational game research.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home grew out of a broader community effort to recover famous Minecraft world seeds that was catalysed in early 2020 by YouTuber SalC1. &amp;lt;ref name=&amp;quot;packpng_project&amp;quot;&amp;gt;{{cite web |url=https://minecraftathome.com/projects/packpng.html |title=Pack.PNG - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; On 14 January 2020, SalC1 uploaded a video asking about the origin of &#039;&#039;pack.png&#039;&#039;, which sparked serious seedfinding work across several Discord communities.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt; Community member Tomlacko simultaneously began researching the game&#039;s title-screen panorama, determining the game version and the exact Z coordinate from cloud patterns. His findings were shared on SalC1&#039;s Discord server, and a dedicated channel in a newly created &#039;&#039;Minecraft@Home&#039;&#039; Discord server was set up to coordinate the effort.&amp;lt;ref name=&amp;quot;panorama&amp;quot;&amp;gt;{{cite web |url=https://minecraftathome.com/projects/beta-panorama.html |title=Beta Panorama - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BOINC-backed Minecraft@Home project went live on 24 June 2020,&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;/&amp;gt; with the panorama application as its inaugural workload. At launch it was GPU-only, with OpenCL support for NVIDIA hardware; AMD support followed within days.&amp;lt;ref name=&amp;quot;boinclaunch&amp;quot;/&amp;gt; The panorama seed was found in under 24 hours of distributed runtime, representing approximately 93 days of single-machine processing time compressed into one day — a total of 54.5 exaFLOPs of computation.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following the panorama success, the community turned to &#039;&#039;pack.png&#039;&#039; and multiple other targets. By 2021 the project had recovered seeds for the Herobrine screenshot, the Skull-on-Fire painting, and several Minecraft menu backgrounds. The project continues to run as of 2026, with active applications searching for large veins of diamond ore in Minecraft 1.21.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home aims to answer fundamental questions about Minecraft&#039;s world generation by:&lt;br /&gt;
&lt;br /&gt;
* Recovering the original seeds of famous Minecraft worlds, screenshots, and panoramas that have been lost or were never publicly known.&lt;br /&gt;
* Exploring the absolute statistical limits of world generation, such as the tallest cactus that can naturally generate, or the largest natural ore veins.&lt;br /&gt;
* Recreating iconic Minecraft scenes from cultural history for the community to revisit.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless|220px]]&lt;br /&gt;
&lt;br /&gt;
Each Minecraft@Home project follows a broadly similar workflow. Researchers first study the target — a screenshot, video frame, or in-game image — to extract constraints on the world: the probable game version, biome type, exact coordinates derived from cloud positions or grass colour data, and characteristic terrain features such as tree arrangements or block proportions. These constraints are encoded into a filtering application that can rapidly reject candidate seeds that cannot match, before running a final terrain-check against the handful of survivors.&lt;br /&gt;
&lt;br /&gt;
The filtering applications are compiled as GPU kernels (using [[wikipedia:OpenCL|OpenCL]]), because GPU parallelism is ideally suited to testing billions of simple mathematical operations per second. The BOINC server distributes work units — each covering a contiguous range of candidate seeds — to volunteers, collects the results, and validates them through redundant replication.&amp;lt;ref name=&amp;quot;boincaustralia&amp;quot;/&amp;gt; Source code for the server infrastructure is publicly available on GitHub and uses Docker containers to allow community members to run a local replica of the full server stack.&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/minecrafthome/minecrafthome |title=minecrafthome/minecrafthome on GitHub |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For projects where a brute-force sweep of all &amp;lt;math&amp;gt;2^{48}&amp;lt;/math&amp;gt; seeds is needed, the work is divided into segments distributed as individual BOINC work units. The &#039;&#039;pack.png&#039;&#039; project, for example, exhausted all segments and found its target in the final 5% of the search space.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
Since its launch in 2020, Minecraft@Home has completed or advanced the following notable projects:&lt;br /&gt;
&lt;br /&gt;
=== Main Menu Panorama (Beta 1.7.3) ===&lt;br /&gt;
&lt;br /&gt;
[[File:Minecraft_beta_panorama.jpg|alt=The Minecraft title screen background panorama that appeared in versions Beta 1.8 through 1.13|right|frameless|220px]]&lt;br /&gt;
&lt;br /&gt;
The rotating background that greeted Minecraft players on the title screen from version Beta 1.8 through Release 1.13.2 was the project&#039;s first and founding target. Tomlacko identified the panorama&#039;s version (Beta 1.7.3) and Z coordinate from cloud metadata; the BOINC application found the seed in under 24 hours after launch on 24 June 2020, compressing roughly 93 days of single-machine work into one distributed day.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts-title-screen |title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama |website=Minecraft Forum |date=2020-07-18 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG (Alpha 1.2.2) ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Pack.png&#039;&#039; is the small hill-and-waterfall image that served as Minecraft&#039;s default texture-pack icon from Alpha 1.2.2 (November 2010) through Release 1.13.2, and continues to be used as the default server icon.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Java_Edition_Alpha_v1.2.2 |title=Java Edition Alpha v1.2.2 - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The search began in January 2020 and involved extensive reverse-engineering of block proportions, dirt-layer thickness, sand-distribution patterns, and AI-upscaled versions of the low-resolution source image.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt; After eight months of work by two teams, the seed was found on 5 September 2020 — in the last 5% of the search space — by BOINC volunteers &#039;&#039;niraami&#039;&#039; and &#039;&#039;zombie67&#039;&#039;, whose machines processed the decisive work unit at 04:04 UTC.&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/the-iconic-minecraft-world-of-the-packpng-image-has-been-found/ |title=The iconic Minecraft world of the Pack.png image has been found |last=Brown |first=Fraser |website=PC Gamer |date=2020-09-05 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The seed is &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt;, and the hill can be found at coordinates X=49, Z=0 in Alpha 1.2.2a.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/World_seed |title=World seed - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even Minecraft creator Markus &amp;quot;Notch&amp;quot; Persson and technical director Nathan &amp;quot;Dinnerbone&amp;quot; Adams attempted to assist the search but were unable to recall the original seed.&amp;lt;ref name=&amp;quot;packpng_project&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting (Alpha 1.1.2_01) ===&lt;br /&gt;
&lt;br /&gt;
Minecraft&#039;s craftable &amp;quot;Skull on Fire&amp;quot; painting, created by artist Kristoffer Zetterstrand and added in Beta 1.3, depicts a mountain scene from an actual Minecraft world. Zetterstrand shared his original screenshot (taken 12 October 2010 at 13:22 UTC+2) directly with the Minecraft@Home team.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/skull-painting.html |title=Skull-on-Fire - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; Using that screenshot and reverse-engineering the terrain, community member andrew_555 (Kminster) independently derived the seed and shared it with the project on 10 September 2020, just five days after the &#039;&#039;pack.png&#039;&#039; announcement. Two valid seeds reproduce the terrain: &amp;lt;code&amp;gt;-1044887956651363087&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;-6984854390176336655&amp;lt;/code&amp;gt;, both in Alpha 1.1.2_01, at coordinates X=-249.65, Y=91, Z=-29.04.&amp;lt;ref&amp;gt;{{cite web |url=https://screenrant.com/minecraft-world-seeds-discovered-herobrine-title-screen-iconic/ |title=Every Iconic Minecraft World Seed Discovered So Far |last=Gravelle |first=Cody |website=Screen Rant |date=2021-03-21 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== The Herobrine World (Alpha 1.0.16_02) ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Herobrine|Herobrine]] is a long-running Minecraft creepypasta — a supposed ghost of Notch&#039;s brother, depicted in an eerie screenshot circulated from around 2010. A project to find the original screenshot&#039;s world seed began on 5 September 2020. After months of debugging (including discovering that a mismatched leaf block in the terrain recreation had been causing the filter to fail), andrew_555 (Kminster) found the seed on 16 January 2021.&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/ |title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found |last=Chalk |first=Andy |website=PC Gamer |date=2021-01-22 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The seed is &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt;, in Alpha 1.0.16_02, at coordinates X=5.06, Y=71, Z=-298.54.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Herobrine |title=Herobrine - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://news.nixinova.com/news/2021/01/minecraft-herobrine-hoax-image-world-seed-found |title=Minecraft World Seed of Herobrine Hoax Image Found |website=Nixinova News |date=2021-01-23 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; Because Alpha 1.0.16_02 predates Minecraft&#039;s in-game seed-entry feature, visiting the world requires manually editing the &amp;lt;code&amp;gt;level.dat&amp;lt;/code&amp;gt; save file.&lt;br /&gt;
&lt;br /&gt;
In the changelog of Minecraft Launcher version 2.2.176x, released shortly after the seed was discovered, Mojang included their traditional joke entry: &amp;quot;Removed Herobrine from Java Alpha 1.0.16_02.&amp;quot;&amp;lt;ref&amp;gt;{{cite web |url=https://minecraft.wiki/w/Herobrine |title=Herobrine - Minecraft Wiki |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.13-1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
Following the Beta 1.7.3 panorama discovery, Minecraft@Home located the seeds for all four remaining menu background panoramas introduced in versions 1.13 through 1.16, completing the set of known Minecraft title-screen worlds.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/1-13-1-16-panoramas.html |title=1.13-1.16 Backgrounds - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
Cacti in Minecraft normally generate between one and three blocks tall; occasionally two cacti can spawn in adjacent chunks and, due to growth mechanics, effectively &amp;quot;stack.&amp;quot; Minecraft@Home&#039;s &#039;&#039;Kaktwoos&#039;&#039; (and &#039;&#039;Kaktoos&#039;&#039;) applications systematically search all chunk seeds for unusually tall stacked cacti. The current confirmed records are a 22-block-tall cactus in normal overworld generation (seed &amp;lt;code&amp;gt;11343195073417814&amp;lt;/code&amp;gt;, version 1.14.4, at coordinates 14,955,936 / 64 / -3,750,655, found by volunteer SirNapkin1334)&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/tallcactus.html |title=Tallest Cactus - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=https://nsonews.com/minecrafthome/ |title=Minecraft@Home - NSO News |date=2020-07-03 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; and a 24-block-tall cactus on a superflat desert world (seed &amp;lt;code&amp;gt;93257619645605&amp;lt;/code&amp;gt;).&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/tallcactus.html |title=Tallest Cactus - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Smash Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
When Nintendo added Steve (from Minecraft) to &#039;&#039;Super Smash Bros. Ultimate&#039;&#039;, the in-game Minecraft World stage featured six background images. Minecraft@Home launched a project to recover the original Minecraft world seeds behind each of those six backgrounds.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/smash-backgrounds.html |title=Smash Backgrounds - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer Recreation ===&lt;br /&gt;
&lt;br /&gt;
The original Minecraft promotional trailer, one of the most-watched pieces of Minecraft content ever created, is being recreated scene by scene by locating the exact in-game seeds and camera positions used in each shot.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/projects/official-trailer.html |title=Minecraft Trailer - Minecraft@Home |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Large Diamond Vein Search (Active, 2026) ===&lt;br /&gt;
&lt;br /&gt;
As of May 2026, the active BOINC application is &amp;quot;1.21 Find large veins of diamond ore,&amp;quot; which searches Minecraft 1.21 world seeds for exceptionally large naturally generated diamond ore formations. The application had over 718,000 unsent tasks queued and was being processed by nearly 200 active users per day at the time of writing.&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/server_status.php |title=Minecraft@Home - Project Status |date=2026-05-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BOINC statistics ==&lt;br /&gt;
&lt;br /&gt;
The following figures were recorded from the Minecraft@Home server status page on 24 May 2026:&amp;lt;ref&amp;gt;{{cite web |url=https://minecraftathome.com/minecrafthome/server_status.php |title=Minecraft@Home - Project Status |date=2026-05-24 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,639&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 655&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,567&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,650&lt;br /&gt;
|-&lt;br /&gt;
| Recent compute throughput || 10,385.26 TFLOPS&lt;br /&gt;
|-&lt;br /&gt;
| Total historic compute || 241,900.05 TFLOPS-days&lt;br /&gt;
|-&lt;br /&gt;
| New users (last 24 h) || 19&lt;br /&gt;
|-&lt;br /&gt;
| New computers (last 24 h) || 8&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Technical notes ==&lt;br /&gt;
&lt;br /&gt;
The Minecraft@Home server is implemented as a set of [[wikipedia:Docker (software)|Docker]] containers that together constitute a standard BOINC server environment (scheduler, feeder, transitioner, file-deleter, per-application assimilators, and result validators).&amp;lt;ref&amp;gt;{{cite web |url=https://github.com/minecrafthome/minecrafthome |title=minecrafthome/minecrafthome - GitHub |access-date=2026-05-24}}&amp;lt;/ref&amp;gt; The server software runs BOINC server release 1.2.0. Applications are GPU-accelerated via OpenCL (requiring at minimum OpenCL 2.0 and the &amp;lt;code&amp;gt;cl_khr_fp64&amp;lt;/code&amp;gt; double-precision extension) and target Windows and Linux; CPU fallback modes are not generally offered, as the GPU kernels provide orders-of-magnitude higher throughput for the seed-testing workloads.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s source repositories under the [https://github.com/minecrafthome GitHub organization] include the server stack, the individual research applications (such as &#039;&#039;kaktwoos&#039;&#039;, &#039;&#039;kaktoos&#039;&#039;, and &#039;&#039;OneChunk&#039;&#039;), and a branding repository for project assets.&lt;br /&gt;
&lt;br /&gt;
== Project team ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a volunteer community project with no single institutional home. Key contributors to the founding projects include:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Tomlacko&#039;&#039;&#039; — project originator; identified panorama version and coordinates&lt;br /&gt;
* &#039;&#039;&#039;Earthcomputer, Cortex, Neil&#039;&#039;&#039; — wrote biome and terrain-checking code; located the panorama seed&lt;br /&gt;
* &#039;&#039;&#039;DutChen18&#039;&#039;&#039; — built tools and mods for data gathering and seed-checking recreation&lt;br /&gt;
* &#039;&#039;&#039;PseudoGravity&#039;&#039;&#039; — reversed tallgrass colour data to identify biome values in the panorama&lt;br /&gt;
* &#039;&#039;&#039;Philipp_DE&#039;&#039;&#039; — hosts the server infrastructure; operates the recreation Minecraft server and screenshotting bot; maintains the BOINC project&lt;br /&gt;
* &#039;&#039;&#039;andrew_555 (Kminster)&#039;&#039;&#039; — independently derived both the Skull-on-Fire seed and (after months of debugging) the Herobrine seed&amp;lt;ref&amp;gt;{{cite web |url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/ |title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found |website=PC Gamer |date=2021-01-22 |access-date=2026-05-24}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full list of contributors to each project is documented in credits spreadsheets linked from the individual project pages on the Minecraft@Home website.&amp;lt;ref name=&amp;quot;panorama&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Community discussion and coordination takes place primarily on the [https://discord.gg/FVM4SPp Minecraft@Home Discord server]. The GitHub organization is at [https://github.com/minecrafthome github.com/minecrafthome].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]]&lt;br /&gt;
* [[wikipedia:Volunteer computing|Volunteer computing]]&lt;br /&gt;
* [[wikipedia:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:Procedural generation|Procedural generation]]&lt;br /&gt;
* [[wikipedia:Pseudorandom number generator|Pseudorandom number generator]]&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:Minecraft]]&lt;br /&gt;
[[Category:Gaming research]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1352</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=1352"/>
		<updated>2026-05-24T20:46:12Z</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;
/* ══════════════════════════════════════════════════════&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1351</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=1351"/>
		<updated>2026-05-24T14:17: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 */&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;
#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:first-child:empty,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; p:first-child:blank,&lt;br /&gt;
#mw-content-text &amp;gt; .mw-parser-output &amp;gt; .mw-empty-elt {&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=MediaWiki:Common.css&amp;diff=1350</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=1350"/>
		<updated>2026-05-24T14:14:13Z</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;
#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:first-child:empty {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1349</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=1349"/>
		<updated>2026-05-24T14:13:18Z</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=Minecraft@Home&amp;diff=1348</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1348"/>
		<updated>2026-05-24T14:12:39Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:{{#setmainimage:Minecraft.png}}|alt=example image|center|frameless]]&lt;br /&gt;
&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the BOINC platform that needs your help to research projects related to Minecraft.&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
Minecraft@Home enables the study of the fundamental laws of Minecraft to answer unanswered questions regarding the features and true limits of the game.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
Discover many of Minecraft&#039;s most famous seeds.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless]]&lt;br /&gt;
* always including &amp;quot;why BOINC&amp;quot;?&lt;br /&gt;
* impactful final statement&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
* [https://minecraftathome.com/projects/smash-backgrounds.html &#039;&#039;&#039;&#039;&#039;&#039;Smash&#039; Backgrounds&#039;&#039;&#039;&#039;&#039;] Steve has been added to Super Smash, now it&#039;s time to uncover the origins of the six different background images.&lt;br /&gt;
* [https://minecraftathome.com/projects/official-trailer.html &#039;&#039;&#039;&#039;&#039;Minecraft Trailer&#039;&#039;&#039;&#039;&#039;] One of the most iconic Minecraft video ever.  Now we want to remake it scene-by-scene.&lt;br /&gt;
* [https://minecraftathome.com/projects/tallcactus.html &#039;&#039;&#039;&#039;&#039;Tallest Cactus&#039;&#039;&#039;&#039;&#039;] What&#039;s the tallest cactus that can naturally occur in Minecraft? The tallest one we&#039;ve found so far is over 20 blocks.&lt;br /&gt;
* [https://minecraftathome.com/projects/herobrine.html &#039;&#039;&#039;&#039;&#039;The &#039;Herobrine&#039; World&#039;&#039;&#039;&#039;&#039;] What lies beyond the fog? Now, over a decade since the original Herobrine screenshot was posted, the world seed has been uncovered.&lt;br /&gt;
* [https://minecraftathome.com/projects/beta-panorama.html &#039;&#039;&#039;&#039;&#039;Main Menu Panorama&#039;&#039;&#039;&#039;&#039;] This panorama graced the menu screen for over seven years.  The discovery of this world seed was Minecraft@Home&#039;s first major project.&lt;br /&gt;
* [https://minecraftathome.com/projects/packpng.html &#039;&#039;&#039;&#039;&#039;Pack.PNG&#039;&#039;&#039;&#039;&#039;] Pack.PNG is perhaps the most-viewed Minecraft image ever.  Now, thanks to thousands of BOINC volunteers, this iconic hill can be visited once again.&lt;br /&gt;
* [https://minecraftathome.com/projects/skull-painting.html &#039;&#039;&#039;&#039;&#039;Skull-on-Fire&#039;&#039;&#039;&#039;&#039;] Have you ever noticed the terrain in the background of Minecraft&#039;s in-game skull painting? The world seed for this mountain has been found.&lt;br /&gt;
* [https://minecraftathome.com/projects/1-13-1-16-panoramas.html &#039;&#039;&#039;&#039;&#039;1.13-1.16 Backgrounds&#039;&#039;&#039;&#039;&#039;] Following up on previous work, we&#039;ve recently discovered the seeds for all four remaining menu backgrounds, up through release 1.16.&lt;br /&gt;
== Project team / Sponsors ==&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;https://github.com/minecrafthome&#039;&#039;&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1347</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=1347"/>
		<updated>2026-05-24T14:09: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 */&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;
#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:first-child:empty {&lt;br /&gt;
    display: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&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>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1346</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=1346"/>
		<updated>2026-05-24T14:09:15Z</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=1345</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=1345"/>
		<updated>2026-05-24T13:54:34Z</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;
ption}}}&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=Minecraft@Home&amp;diff=1344</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1344"/>
		<updated>2026-05-24T13:52:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: Undo revision 1343 by Admin (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Minecraft@Home&lt;br /&gt;
| logo                 = Minecraft.png&lt;br /&gt;
| logo caption         = Minecraft@Home project logo&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Game Research / Seed Cracking&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = &lt;br /&gt;
&lt;br /&gt;
| developer            = Minecraft@Home community&lt;br /&gt;
| author               = Tomlacko, andrew_555 (Kminster), and others&lt;br /&gt;
| sponsor              = Community-run (no institutional sponsor)&lt;br /&gt;
| released             = June 2020&lt;br /&gt;
| repository           = [https://github.com/minecrafthome github.com/minecrafthome]&lt;br /&gt;
&lt;br /&gt;
| programming language = C++, Python, CUDA (OpenCL), PHP&lt;br /&gt;
| operating system     = Windows, Linux, macOS, Android&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 21 May 2026&lt;br /&gt;
| active users         = 653&lt;br /&gt;
| total users          = 6634&lt;br /&gt;
| active hosts         = 1647&lt;br /&gt;
| total hosts          = 13558&lt;br /&gt;
&lt;br /&gt;
| rac                  = &lt;br /&gt;
| average performance  = 9,857.77 TeraFLOPS (recent)&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://minecraftathome.com/minecrafthome/}}&lt;br /&gt;
| license              = Open source (GitHub)&lt;br /&gt;
}}[[File:{{#setmainimage:Minecraft.png}}|alt=example image|center|frameless]]&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the BOINC platform that needs your help to research projects related to Minecraft.&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Minecraft|Minecraft]] is a sandbox video game developed by [[wikipedia:Mojang Studios|Mojang Studios]] (now a subsidiary of Microsoft) and first released in 2011. It is the best-selling video game of all time.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Every Minecraft world is generated from a 64-bit integer called a &#039;&#039;seed&#039;&#039;, which is fed through a pseudo-random number generator and a chain of biome and terrain rules to produce the landscape. Because the same seed always produces the same world, it is theoretically possible to identify the seed behind any Minecraft screenshot or image — but with 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt; possible values to check, doing so by hand is impossible for a single person or machine.&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Distributed computing|Distributed computing]] makes this feasible: the search space is divided into work units, each tested by a volunteer&#039;s computer against landmarks extracted from the target image (mountain shapes, biome boundaries, structure positions), until one seed matches. This brute-force approach, &amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; compressed across thousands of volunteers, can turn months of single-machine work into hours.&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home enables the study of the fundamental laws of Minecraft to answer unanswered questions regarding the features and true limits of the game.&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable as one of the only volunteer computing projects to emerge organically from a video-game community rather than from a research institution.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Because the questions it pursues are of deep cultural interest to millions of Minecraft players — what is the world behind the game&#039;s iconic title screen? where does a legendary screenshot come from? — it has attracted media coverage and public participation well beyond the typical academic BOINC project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Discover many of Minecraft&#039;s most famous seeds, and investigate the fundamental limits of Minecraft&#039;s world generation engine.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
Minecraft worlds are generated from a 64-bit seed. Two terrains that appear identical to a player can originate from billions of distinct seeds. Recovering the exact seed behind a screenshot or a panorama is therefore a brute-force search problem with a 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;-sized haystack — well suited for distributed computing.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Why BOINC? ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] (Berkeley Open Infrastructure for Network Computing) is a free, open-source middleware platform for volunteer computing developed at [[wikipedia:University of California, Berkeley|UC Berkeley]]. It allows any project to distribute computational tasks to thousands of volunteers&#039; idle computers around the world, collecting results and awarding credit.&amp;lt;ref&amp;gt;{{cite journal|author=Anderson, David P.|title=BOINC: A Platform for Volunteer Computing|url=https://arxiv.org/pdf/1903.01699|year=2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Minecraft@Home, BOINC provides the infrastructure to divide seed-search tasks into work units, distribute them to volunteers&#039; CPUs and GPUs, validate results, and reassemble them — compressing what would take a single computer months or years into hours. The panorama seed project, for example, represented approximately 93 days of single-machine processing time compressed into just 24 hours through BOINC volunteers, totalling 54.5 exaFLOPs of combined compute.&amp;lt;ref&amp;gt;{{cite web|url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts|title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama|publisher=Minecraft Forum|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the Minecraft@Home applications run on GPUs using CUDA or OpenCL, since seed-checking kernels parallelize extremely well on graphics hardware. CPU-based tasks are also distributed for certain project types.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:SEED of Minecraft&#039;s title-screen background PANORAMA.jpg|thumb|Minecraft@Home has found the SEED of Minecraft&#039;s title-screen background PANORAMA!]]&lt;br /&gt;
Minecraft@Home grew out of informal Minecraft research communities on Discord in mid-2020. The panorama project began on 14 June 2020, when researcher Tomlacko studied clues in the title screen image — cloud positions, terrain axis, Z coordinate — and shared findings on SalC1&#039;s Discord server, where a parallel pack.png project was already underway. A dedicated Minecraft@Home Discord channel and BOINC project were established, and the BOINC server officially launched on 24 June 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/forum_thread.php?id=13807|title=Thread: Minecraft@Home launched|publisher=BOINC|date=2020-06-24|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project is community-run with no affiliation to Microsoft or Mojang Studios.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Its source code is hosted publicly on GitHub under the [https://github.com/minecrafthome minecrafthome] organisation.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/beta-panorama.html &#039;&#039;&#039;&#039;&#039;Main Menu Panorama&#039;&#039;&#039;&#039;&#039;] — This panorama graced Minecraft&#039;s main menu screen for over seven years, from Beta 1.8 (2011) through release 1.12.2. The seed search began 14 June 2020, and in less than 24 hours after BOINC tasks were launched, the seed was found on 18 July 2020 at approximately 5:45 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/beta-panorama.html|title=Beta Panorama|publisher=Minecraft@Home|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Key contributors included Tomlacko (project founder and coordinate researcher), Earthcomputer, Cortex, Neil (biome/terrain code), DutChen18, MC PseudoGravity, and Philipp_DE.&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;2151901553968352745&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;8091867987493326313&amp;lt;/code&amp;gt;; both produce the same world in Java Beta 1.7.3)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=61.48, Y=75, Z=−68.73&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/packpng.html &#039;&#039;&#039;&#039;&#039;Pack.PNG&#039;&#039;&#039;&#039;&#039;] — Pack.PNG is perhaps the most-viewed Minecraft image ever: a 128×128 pixel icon shipped with the game that served as the default server list thumbnail for years.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/packpng.html|title=Pack.PNG|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; After eight months of work by two teams using BOINC to narrow an initial pool of 281 trillion seeds down to 700,000 candidates, the final seed was found on 5 September 2020 at 4:04 AM UTC — in the last 5% of candidates searched.&amp;lt;ref&amp;gt;{{cite web|url=https://docs.google.com/document/d/1PpZqHWXPLjOsXf_T7uyH4rWuxUMxzBlxvv5gm19P_Z8/mobilebasic|title=Pack.png seed reversal methodology|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt; (Java Alpha 1.2.2)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=116, Z=−31&lt;br /&gt;
&lt;br /&gt;
=== The &#039;Herobrine&#039; World ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/herobrine.html &#039;&#039;&#039;&#039;&#039;The &#039;Herobrine&#039; World&#039;&#039;&#039;&#039;&#039;] — The Herobrine legend originated in a 2010 4chan post and was spread by a streamer named Copeland who shared screenshots supposedly proving the existence of a mysterious white-eyed figure.&amp;lt;ref&amp;gt;{{cite web|url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/|title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found|publisher=PC Gamer|date=2021-01-22|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Minecraft@Home project to find the seed of the original screenshot was started by andrew_555 (Kminster), who reportedly spent 50 hours writing the detection code.&amp;lt;ref&amp;gt;{{cite web|url=https://en.everybodywiki.com/Minecraft@Home|title=Minecraft@Home|publisher=EverybodyWiki|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The search began 5 September 2020 and the seed was found on 16 January 2021 at approximately 12:21 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/herobrine.html|title=Herobrine|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt; (Java Alpha 1.0.16_02)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=5.06, Y=71, Z=−298.54&lt;br /&gt;
** Other major contributors: Neil, BoySanic, polymetric, DutChen18, MC (PseudoGravity)&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/skull-painting.html &#039;&#039;&#039;&#039;&#039;Skull-on-Fire&#039;&#039;&#039;&#039;&#039;] — The terrain in the background of Minecraft&#039;s in-game skull painting. The world seed for this mountain has been found.&lt;br /&gt;
&lt;br /&gt;
=== 1.13–1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/1-13-1-16-panoramas.html &#039;&#039;&#039;&#039;&#039;1.13–1.16 Backgrounds&#039;&#039;&#039;&#039;&#039;] — Following up on the original panorama project, all four remaining menu backgrounds from releases 1.13 through 1.16 were discovered.&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/tallcactus.html &#039;&#039;&#039;&#039;&#039;Tallest Cactus&#039;&#039;&#039;&#039;&#039;] — An ongoing investigation into the tallest cactus that can naturally generate in Minecraft. The project has found specimens exceeding 22 blocks in height. The search uses CUDA kernels to sweep the full seed space.&lt;br /&gt;
&lt;br /&gt;
=== &#039;Smash&#039; Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/smash-backgrounds.html &#039;&#039;&#039;&#039;&#039;Smash&#039; Backgrounds&#039;&#039;&#039;&#039;&#039;] — Steve was added to Super Smash Bros. Ultimate; Minecraft@Home is working to uncover the origins of the six different background images used in the game.&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/official-trailer.html &#039;&#039;&#039;&#039;&#039;Minecraft Trailer&#039;&#039;&#039;&#039;&#039;] — One of the most iconic Minecraft videos ever. Minecraft@Home is working to recreate it scene-by-scene by recovering the seeds of each location.&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless]]&lt;br /&gt;
&lt;br /&gt;
== Current Work ==&lt;br /&gt;
&lt;br /&gt;
As of 21 May 2026, the active application on the server is &#039;&#039;&#039;1.21 Find large veins of diamond ore&#039;&#039;&#039;, with 778,152 tasks unsent and 5,497 in progress, served to 216 unique users in the preceding 24 hours.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/minecrafthome/server_status.php|title=Project status|publisher=Minecraft@Home|date=2026-05-21|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The project is currently accumulating a recent compute rate of approximately 9,857 TeraFLOPS.&lt;br /&gt;
&lt;br /&gt;
== Server Status (as of 21 May 2026) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 2,081,294&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 5,497&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,634&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 653&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,558&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,647&lt;br /&gt;
|-&lt;br /&gt;
| Recent TeraFLOPS || 9,857.77&lt;br /&gt;
|-&lt;br /&gt;
| Total TeraFLOPS contributed || 241,748.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: [https://minecraftathome.com/minecrafthome/server_status.php Minecraft@Home server status], 21 May 2026&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a fully community-run project with no institutional sponsor and no affiliation with Microsoft or Mojang. It was born from a network of Minecraft researchers active on Discord and Reddit. Key contributors to various projects have included Tomlacko, andrew_555 (Kminster), Earthcomputer, Cortex, Neil, DutChen18, MC PseudoGravity, BoySanic, polymetric, and Philipp_DE, among many others credited on each project&#039;s results page.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s code, including the BOINC server infrastructure (built with Docker) and all seedfinding applications, is open source and hosted at:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;[https://github.com/minecrafthome github.com/minecrafthome]&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Coverage ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home&#039;s discoveries have been covered by major gaming outlets. The panorama seed find was reported by PC Gamer, Eurogamer, and PCGamesN in July 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://www.ginx.tv/en/minecraft/the-seed-of-minecraft-s-title-screen-background-world-has-finally-been-discovered|title=The seed of Minecraft&#039;s title screen world has finally been discovered|publisher=GINX TV|date=2020-07-19|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Herobrine seed discovery was covered by PC Gamer, NME, and Eurogamer in January 2021.&amp;lt;ref&amp;gt;{{cite web|url=https://www.nme.com/news/gaming-news/legendary-herobrine-seed-finally-found-in-minecraft-2864327|title=Legendary Herobrine seed finally found in &#039;Minecraft&#039;|publisher=NME|date=2021-01-26|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; YouTuber SalC1 documented the panorama project, and AntVenom covered the Herobrine seed reveal.&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:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:SETI@home|SETI@home]]&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://minecraftathome.com/minecrafthome/ Official BOINC project page]&lt;br /&gt;
* [https://minecraftathome.com/projects/list.html Project results list]&lt;br /&gt;
* [https://github.com/minecrafthome GitHub organisation]&lt;br /&gt;
* [https://discord.gg/FVM4SPp Discord server]&lt;br /&gt;
* [https://www.reddit.com/r/MinecraftAtHome/ Reddit community]&lt;br /&gt;
* [https://minecraftathome.com/minecrafthome/server_status.php Live server status]&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;br /&gt;
[[Category:Minecraft]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1343</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1343"/>
		<updated>2026-05-24T13:51:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: whitespace removal attempt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Minecraft@Home&lt;br /&gt;
| logo                 = Minecraft.png&lt;br /&gt;
| logo caption         = Minecraft@Home project logo&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Game Research / Seed Cracking&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = &lt;br /&gt;
| developer            = Minecraft@Home community&lt;br /&gt;
| author               = Tomlacko, andrew_555 (Kminster), and others&lt;br /&gt;
| sponsor              = Community-run (no institutional sponsor)&lt;br /&gt;
| released             = June 2020&lt;br /&gt;
| repository           = [https://github.com/minecrafthome github.com/minecrafthome]&lt;br /&gt;
| programming language = C++, Python, CUDA (OpenCL), PHP&lt;br /&gt;
| operating system     = Windows, Linux, macOS, Android&lt;br /&gt;
| stats as of          = 21 May 2026&lt;br /&gt;
| active users         = 653&lt;br /&gt;
| total users          = 6634&lt;br /&gt;
| active hosts         = 1647&lt;br /&gt;
| total hosts          = 13558&lt;br /&gt;
| rac                  = &lt;br /&gt;
| average performance  = 9,857.77 TeraFLOPS (recent)&lt;br /&gt;
| website              = {{URL|https://minecraftathome.com/minecrafthome/}}&lt;br /&gt;
| license              = Open source (GitHub)&lt;br /&gt;
}}[[File:{{#setmainimage:Minecraft.png}}|alt=example image|center|frameless]][https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the BOINC platform that needs your help to research projects related to Minecraft.&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Minecraft|Minecraft]] is a sandbox video game developed by [[wikipedia:Mojang Studios|Mojang Studios]] (now a subsidiary of Microsoft) and first released in 2011. It is the best-selling video game of all time.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Every Minecraft world is generated from a 64-bit integer called a &#039;&#039;seed&#039;&#039;, which is fed through a pseudo-random number generator and a chain of biome and terrain rules to produce the landscape. Because the same seed always produces the same world, it is theoretically possible to identify the seed behind any Minecraft screenshot or image — but with 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt; possible values to check, doing so by hand is impossible for a single person or machine.&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Distributed computing|Distributed computing]] makes this feasible: the search space is divided into work units, each tested by a volunteer&#039;s computer against landmarks extracted from the target image (mountain shapes, biome boundaries, structure positions), until one seed matches. This brute-force approach, &amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; compressed across thousands of volunteers, can turn months of single-machine work into hours.&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home enables the study of the fundamental laws of Minecraft to answer unanswered questions regarding the features and true limits of the game.&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable as one of the only volunteer computing projects to emerge organically from a video-game community rather than from a research institution.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Because the questions it pursues are of deep cultural interest to millions of Minecraft players — what is the world behind the game&#039;s iconic title screen? where does a legendary screenshot come from? — it has attracted media coverage and public participation well beyond the typical academic BOINC project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Discover many of Minecraft&#039;s most famous seeds, and investigate the fundamental limits of Minecraft&#039;s world generation engine.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
Minecraft worlds are generated from a 64-bit seed. Two terrains that appear identical to a player can originate from billions of distinct seeds. Recovering the exact seed behind a screenshot or a panorama is therefore a brute-force search problem with a 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;-sized haystack — well suited for distributed computing.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Why BOINC? ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] (Berkeley Open Infrastructure for Network Computing) is a free, open-source middleware platform for volunteer computing developed at [[wikipedia:University of California, Berkeley|UC Berkeley]]. It allows any project to distribute computational tasks to thousands of volunteers&#039; idle computers around the world, collecting results and awarding credit.&amp;lt;ref&amp;gt;{{cite journal|author=Anderson, David P.|title=BOINC: A Platform for Volunteer Computing|url=https://arxiv.org/pdf/1903.01699|year=2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Minecraft@Home, BOINC provides the infrastructure to divide seed-search tasks into work units, distribute them to volunteers&#039; CPUs and GPUs, validate results, and reassemble them — compressing what would take a single computer months or years into hours. The panorama seed project, for example, represented approximately 93 days of single-machine processing time compressed into just 24 hours through BOINC volunteers, totalling 54.5 exaFLOPs of combined compute.&amp;lt;ref&amp;gt;{{cite web|url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts|title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama|publisher=Minecraft Forum|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the Minecraft@Home applications run on GPUs using CUDA or OpenCL, since seed-checking kernels parallelize extremely well on graphics hardware. CPU-based tasks are also distributed for certain project types.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:SEED of Minecraft&#039;s title-screen background PANORAMA.jpg|thumb|Minecraft@Home has found the SEED of Minecraft&#039;s title-screen background PANORAMA!]]&lt;br /&gt;
Minecraft@Home grew out of informal Minecraft research communities on Discord in mid-2020. The panorama project began on 14 June 2020, when researcher Tomlacko studied clues in the title screen image — cloud positions, terrain axis, Z coordinate — and shared findings on SalC1&#039;s Discord server, where a parallel pack.png project was already underway. A dedicated Minecraft@Home Discord channel and BOINC project were established, and the BOINC server officially launched on 24 June 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/forum_thread.php?id=13807|title=Thread: Minecraft@Home launched|publisher=BOINC|date=2020-06-24|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project is community-run with no affiliation to Microsoft or Mojang Studios.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Its source code is hosted publicly on GitHub under the [https://github.com/minecrafthome minecrafthome] organisation.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/beta-panorama.html &#039;&#039;&#039;&#039;&#039;Main Menu Panorama&#039;&#039;&#039;&#039;&#039;] — This panorama graced Minecraft&#039;s main menu screen for over seven years, from Beta 1.8 (2011) through release 1.12.2. The seed search began 14 June 2020, and in less than 24 hours after BOINC tasks were launched, the seed was found on 18 July 2020 at approximately 5:45 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/beta-panorama.html|title=Beta Panorama|publisher=Minecraft@Home|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Key contributors included Tomlacko (project founder and coordinate researcher), Earthcomputer, Cortex, Neil (biome/terrain code), DutChen18, MC PseudoGravity, and Philipp_DE.&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;2151901553968352745&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;8091867987493326313&amp;lt;/code&amp;gt;; both produce the same world in Java Beta 1.7.3)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=61.48, Y=75, Z=−68.73&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/packpng.html &#039;&#039;&#039;&#039;&#039;Pack.PNG&#039;&#039;&#039;&#039;&#039;] — Pack.PNG is perhaps the most-viewed Minecraft image ever: a 128×128 pixel icon shipped with the game that served as the default server list thumbnail for years.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/packpng.html|title=Pack.PNG|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; After eight months of work by two teams using BOINC to narrow an initial pool of 281 trillion seeds down to 700,000 candidates, the final seed was found on 5 September 2020 at 4:04 AM UTC — in the last 5% of candidates searched.&amp;lt;ref&amp;gt;{{cite web|url=https://docs.google.com/document/d/1PpZqHWXPLjOsXf_T7uyH4rWuxUMxzBlxvv5gm19P_Z8/mobilebasic|title=Pack.png seed reversal methodology|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt; (Java Alpha 1.2.2)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=116, Z=−31&lt;br /&gt;
&lt;br /&gt;
=== The &#039;Herobrine&#039; World ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/herobrine.html &#039;&#039;&#039;&#039;&#039;The &#039;Herobrine&#039; World&#039;&#039;&#039;&#039;&#039;] — The Herobrine legend originated in a 2010 4chan post and was spread by a streamer named Copeland who shared screenshots supposedly proving the existence of a mysterious white-eyed figure.&amp;lt;ref&amp;gt;{{cite web|url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/|title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found|publisher=PC Gamer|date=2021-01-22|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Minecraft@Home project to find the seed of the original screenshot was started by andrew_555 (Kminster), who reportedly spent 50 hours writing the detection code.&amp;lt;ref&amp;gt;{{cite web|url=https://en.everybodywiki.com/Minecraft@Home|title=Minecraft@Home|publisher=EverybodyWiki|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The search began 5 September 2020 and the seed was found on 16 January 2021 at approximately 12:21 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/herobrine.html|title=Herobrine|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt; (Java Alpha 1.0.16_02)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=5.06, Y=71, Z=−298.54&lt;br /&gt;
** Other major contributors: Neil, BoySanic, polymetric, DutChen18, MC (PseudoGravity)&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/skull-painting.html &#039;&#039;&#039;&#039;&#039;Skull-on-Fire&#039;&#039;&#039;&#039;&#039;] — The terrain in the background of Minecraft&#039;s in-game skull painting. The world seed for this mountain has been found.&lt;br /&gt;
&lt;br /&gt;
=== 1.13–1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/1-13-1-16-panoramas.html &#039;&#039;&#039;&#039;&#039;1.13–1.16 Backgrounds&#039;&#039;&#039;&#039;&#039;] — Following up on the original panorama project, all four remaining menu backgrounds from releases 1.13 through 1.16 were discovered.&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/tallcactus.html &#039;&#039;&#039;&#039;&#039;Tallest Cactus&#039;&#039;&#039;&#039;&#039;] — An ongoing investigation into the tallest cactus that can naturally generate in Minecraft. The project has found specimens exceeding 22 blocks in height. The search uses CUDA kernels to sweep the full seed space.&lt;br /&gt;
&lt;br /&gt;
=== &#039;Smash&#039; Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/smash-backgrounds.html &#039;&#039;&#039;&#039;&#039;Smash&#039; Backgrounds&#039;&#039;&#039;&#039;&#039;] — Steve was added to Super Smash Bros. Ultimate; Minecraft@Home is working to uncover the origins of the six different background images used in the game.&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/official-trailer.html &#039;&#039;&#039;&#039;&#039;Minecraft Trailer&#039;&#039;&#039;&#039;&#039;] — One of the most iconic Minecraft videos ever. Minecraft@Home is working to recreate it scene-by-scene by recovering the seeds of each location.&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless]]&lt;br /&gt;
&lt;br /&gt;
== Current Work ==&lt;br /&gt;
&lt;br /&gt;
As of 21 May 2026, the active application on the server is &#039;&#039;&#039;1.21 Find large veins of diamond ore&#039;&#039;&#039;, with 778,152 tasks unsent and 5,497 in progress, served to 216 unique users in the preceding 24 hours.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/minecrafthome/server_status.php|title=Project status|publisher=Minecraft@Home|date=2026-05-21|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The project is currently accumulating a recent compute rate of approximately 9,857 TeraFLOPS.&lt;br /&gt;
&lt;br /&gt;
== Server Status (as of 21 May 2026) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 2,081,294&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 5,497&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,634&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 653&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,558&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,647&lt;br /&gt;
|-&lt;br /&gt;
| Recent TeraFLOPS || 9,857.77&lt;br /&gt;
|-&lt;br /&gt;
| Total TeraFLOPS contributed || 241,748.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: [https://minecraftathome.com/minecrafthome/server_status.php Minecraft@Home server status], 21 May 2026&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a fully community-run project with no institutional sponsor and no affiliation with Microsoft or Mojang. It was born from a network of Minecraft researchers active on Discord and Reddit. Key contributors to various projects have included Tomlacko, andrew_555 (Kminster), Earthcomputer, Cortex, Neil, DutChen18, MC PseudoGravity, BoySanic, polymetric, and Philipp_DE, among many others credited on each project&#039;s results page.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s code, including the BOINC server infrastructure (built with Docker) and all seedfinding applications, is open source and hosted at:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;[https://github.com/minecrafthome github.com/minecrafthome]&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Coverage ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home&#039;s discoveries have been covered by major gaming outlets. The panorama seed find was reported by PC Gamer, Eurogamer, and PCGamesN in July 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://www.ginx.tv/en/minecraft/the-seed-of-minecraft-s-title-screen-background-world-has-finally-been-discovered|title=The seed of Minecraft&#039;s title screen world has finally been discovered|publisher=GINX TV|date=2020-07-19|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Herobrine seed discovery was covered by PC Gamer, NME, and Eurogamer in January 2021.&amp;lt;ref&amp;gt;{{cite web|url=https://www.nme.com/news/gaming-news/legendary-herobrine-seed-finally-found-in-minecraft-2864327|title=Legendary Herobrine seed finally found in &#039;Minecraft&#039;|publisher=NME|date=2021-01-26|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; YouTuber SalC1 documented the panorama project, and AntVenom covered the Herobrine seed reveal.&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:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:SETI@home|SETI@home]]&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://minecraftathome.com/minecrafthome/ Official BOINC project page]&lt;br /&gt;
* [https://minecraftathome.com/projects/list.html Project results list]&lt;br /&gt;
* [https://github.com/minecrafthome GitHub organisation]&lt;br /&gt;
* [https://discord.gg/FVM4SPp Discord server]&lt;br /&gt;
* [https://www.reddit.com/r/MinecraftAtHome/ Reddit community]&lt;br /&gt;
* [https://minecraftathome.com/minecrafthome/server_status.php Live server status]&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;br /&gt;
[[Category:Minecraft]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1342</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1342"/>
		<updated>2026-05-24T13:50:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox software&lt;br /&gt;
| name                 = Minecraft@Home&lt;br /&gt;
| logo                 = Minecraft.png&lt;br /&gt;
| logo caption         = Minecraft@Home project logo&lt;br /&gt;
&lt;br /&gt;
| status               = Active&lt;br /&gt;
| category             = Game Research / Seed Cracking&lt;br /&gt;
| compute              = CPU &amp;amp; GPU&lt;br /&gt;
| dependencies         = &lt;br /&gt;
&lt;br /&gt;
| developer            = Minecraft@Home community&lt;br /&gt;
| author               = Tomlacko, andrew_555 (Kminster), and others&lt;br /&gt;
| sponsor              = Community-run (no institutional sponsor)&lt;br /&gt;
| released             = June 2020&lt;br /&gt;
| repository           = [https://github.com/minecrafthome github.com/minecrafthome]&lt;br /&gt;
&lt;br /&gt;
| programming language = C++, Python, CUDA (OpenCL), PHP&lt;br /&gt;
| operating system     = Windows, Linux, macOS, Android&lt;br /&gt;
&lt;br /&gt;
| stats as of          = 21 May 2026&lt;br /&gt;
| active users         = 653&lt;br /&gt;
| total users          = 6634&lt;br /&gt;
| active hosts         = 1647&lt;br /&gt;
| total hosts          = 13558&lt;br /&gt;
&lt;br /&gt;
| rac                  = &lt;br /&gt;
| average performance  = 9,857.77 TeraFLOPS (recent)&lt;br /&gt;
&lt;br /&gt;
| website              = {{URL|https://minecraftathome.com/minecrafthome/}}&lt;br /&gt;
| license              = Open source (GitHub)&lt;br /&gt;
}}[[File:{{#setmainimage:Minecraft.png}}|alt=example image|center|frameless]]&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the BOINC platform that needs your help to research projects related to Minecraft.&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Minecraft|Minecraft]] is a sandbox video game developed by [[wikipedia:Mojang Studios|Mojang Studios]] (now a subsidiary of Microsoft) and first released in 2011. It is the best-selling video game of all time.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Every Minecraft world is generated from a 64-bit integer called a &#039;&#039;seed&#039;&#039;, which is fed through a pseudo-random number generator and a chain of biome and terrain rules to produce the landscape. Because the same seed always produces the same world, it is theoretically possible to identify the seed behind any Minecraft screenshot or image — but with 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt; possible values to check, doing so by hand is impossible for a single person or machine.&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Distributed computing|Distributed computing]] makes this feasible: the search space is divided into work units, each tested by a volunteer&#039;s computer against landmarks extracted from the target image (mountain shapes, biome boundaries, structure positions), until one seed matches. This brute-force approach, &amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; compressed across thousands of volunteers, can turn months of single-machine work into hours.&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home enables the study of the fundamental laws of Minecraft to answer unanswered questions regarding the features and true limits of the game.&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable as one of the only volunteer computing projects to emerge organically from a video-game community rather than from a research institution.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Because the questions it pursues are of deep cultural interest to millions of Minecraft players — what is the world behind the game&#039;s iconic title screen? where does a legendary screenshot come from? — it has attracted media coverage and public participation well beyond the typical academic BOINC project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Discover many of Minecraft&#039;s most famous seeds, and investigate the fundamental limits of Minecraft&#039;s world generation engine.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
Minecraft worlds are generated from a 64-bit seed. Two terrains that appear identical to a player can originate from billions of distinct seeds. Recovering the exact seed behind a screenshot or a panorama is therefore a brute-force search problem with a 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;-sized haystack — well suited for distributed computing.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Why BOINC? ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] (Berkeley Open Infrastructure for Network Computing) is a free, open-source middleware platform for volunteer computing developed at [[wikipedia:University of California, Berkeley|UC Berkeley]]. It allows any project to distribute computational tasks to thousands of volunteers&#039; idle computers around the world, collecting results and awarding credit.&amp;lt;ref&amp;gt;{{cite journal|author=Anderson, David P.|title=BOINC: A Platform for Volunteer Computing|url=https://arxiv.org/pdf/1903.01699|year=2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Minecraft@Home, BOINC provides the infrastructure to divide seed-search tasks into work units, distribute them to volunteers&#039; CPUs and GPUs, validate results, and reassemble them — compressing what would take a single computer months or years into hours. The panorama seed project, for example, represented approximately 93 days of single-machine processing time compressed into just 24 hours through BOINC volunteers, totalling 54.5 exaFLOPs of combined compute.&amp;lt;ref&amp;gt;{{cite web|url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts|title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama|publisher=Minecraft Forum|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the Minecraft@Home applications run on GPUs using CUDA or OpenCL, since seed-checking kernels parallelize extremely well on graphics hardware. CPU-based tasks are also distributed for certain project types.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:SEED of Minecraft&#039;s title-screen background PANORAMA.jpg|thumb|Minecraft@Home has found the SEED of Minecraft&#039;s title-screen background PANORAMA!]]&lt;br /&gt;
Minecraft@Home grew out of informal Minecraft research communities on Discord in mid-2020. The panorama project began on 14 June 2020, when researcher Tomlacko studied clues in the title screen image — cloud positions, terrain axis, Z coordinate — and shared findings on SalC1&#039;s Discord server, where a parallel pack.png project was already underway. A dedicated Minecraft@Home Discord channel and BOINC project were established, and the BOINC server officially launched on 24 June 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/forum_thread.php?id=13807|title=Thread: Minecraft@Home launched|publisher=BOINC|date=2020-06-24|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project is community-run with no affiliation to Microsoft or Mojang Studios.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Its source code is hosted publicly on GitHub under the [https://github.com/minecrafthome minecrafthome] organisation.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/beta-panorama.html &#039;&#039;&#039;&#039;&#039;Main Menu Panorama&#039;&#039;&#039;&#039;&#039;] — This panorama graced Minecraft&#039;s main menu screen for over seven years, from Beta 1.8 (2011) through release 1.12.2. The seed search began 14 June 2020, and in less than 24 hours after BOINC tasks were launched, the seed was found on 18 July 2020 at approximately 5:45 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/beta-panorama.html|title=Beta Panorama|publisher=Minecraft@Home|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Key contributors included Tomlacko (project founder and coordinate researcher), Earthcomputer, Cortex, Neil (biome/terrain code), DutChen18, MC PseudoGravity, and Philipp_DE.&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;2151901553968352745&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;8091867987493326313&amp;lt;/code&amp;gt;; both produce the same world in Java Beta 1.7.3)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=61.48, Y=75, Z=−68.73&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/packpng.html &#039;&#039;&#039;&#039;&#039;Pack.PNG&#039;&#039;&#039;&#039;&#039;] — Pack.PNG is perhaps the most-viewed Minecraft image ever: a 128×128 pixel icon shipped with the game that served as the default server list thumbnail for years.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/packpng.html|title=Pack.PNG|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; After eight months of work by two teams using BOINC to narrow an initial pool of 281 trillion seeds down to 700,000 candidates, the final seed was found on 5 September 2020 at 4:04 AM UTC — in the last 5% of candidates searched.&amp;lt;ref&amp;gt;{{cite web|url=https://docs.google.com/document/d/1PpZqHWXPLjOsXf_T7uyH4rWuxUMxzBlxvv5gm19P_Z8/mobilebasic|title=Pack.png seed reversal methodology|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt; (Java Alpha 1.2.2)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=116, Z=−31&lt;br /&gt;
&lt;br /&gt;
=== The &#039;Herobrine&#039; World ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/herobrine.html &#039;&#039;&#039;&#039;&#039;The &#039;Herobrine&#039; World&#039;&#039;&#039;&#039;&#039;] — The Herobrine legend originated in a 2010 4chan post and was spread by a streamer named Copeland who shared screenshots supposedly proving the existence of a mysterious white-eyed figure.&amp;lt;ref&amp;gt;{{cite web|url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/|title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found|publisher=PC Gamer|date=2021-01-22|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Minecraft@Home project to find the seed of the original screenshot was started by andrew_555 (Kminster), who reportedly spent 50 hours writing the detection code.&amp;lt;ref&amp;gt;{{cite web|url=https://en.everybodywiki.com/Minecraft@Home|title=Minecraft@Home|publisher=EverybodyWiki|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The search began 5 September 2020 and the seed was found on 16 January 2021 at approximately 12:21 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/herobrine.html|title=Herobrine|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt; (Java Alpha 1.0.16_02)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=5.06, Y=71, Z=−298.54&lt;br /&gt;
** Other major contributors: Neil, BoySanic, polymetric, DutChen18, MC (PseudoGravity)&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/skull-painting.html &#039;&#039;&#039;&#039;&#039;Skull-on-Fire&#039;&#039;&#039;&#039;&#039;] — The terrain in the background of Minecraft&#039;s in-game skull painting. The world seed for this mountain has been found.&lt;br /&gt;
&lt;br /&gt;
=== 1.13–1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/1-13-1-16-panoramas.html &#039;&#039;&#039;&#039;&#039;1.13–1.16 Backgrounds&#039;&#039;&#039;&#039;&#039;] — Following up on the original panorama project, all four remaining menu backgrounds from releases 1.13 through 1.16 were discovered.&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/tallcactus.html &#039;&#039;&#039;&#039;&#039;Tallest Cactus&#039;&#039;&#039;&#039;&#039;] — An ongoing investigation into the tallest cactus that can naturally generate in Minecraft. The project has found specimens exceeding 22 blocks in height. The search uses CUDA kernels to sweep the full seed space.&lt;br /&gt;
&lt;br /&gt;
=== &#039;Smash&#039; Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/smash-backgrounds.html &#039;&#039;&#039;&#039;&#039;Smash&#039; Backgrounds&#039;&#039;&#039;&#039;&#039;] — Steve was added to Super Smash Bros. Ultimate; Minecraft@Home is working to uncover the origins of the six different background images used in the game.&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/official-trailer.html &#039;&#039;&#039;&#039;&#039;Minecraft Trailer&#039;&#039;&#039;&#039;&#039;] — One of the most iconic Minecraft videos ever. Minecraft@Home is working to recreate it scene-by-scene by recovering the seeds of each location.&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless]]&lt;br /&gt;
&lt;br /&gt;
== Current Work ==&lt;br /&gt;
&lt;br /&gt;
As of 21 May 2026, the active application on the server is &#039;&#039;&#039;1.21 Find large veins of diamond ore&#039;&#039;&#039;, with 778,152 tasks unsent and 5,497 in progress, served to 216 unique users in the preceding 24 hours.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/minecrafthome/server_status.php|title=Project status|publisher=Minecraft@Home|date=2026-05-21|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The project is currently accumulating a recent compute rate of approximately 9,857 TeraFLOPS.&lt;br /&gt;
&lt;br /&gt;
== Server Status (as of 21 May 2026) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 2,081,294&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 5,497&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,634&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 653&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,558&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,647&lt;br /&gt;
|-&lt;br /&gt;
| Recent TeraFLOPS || 9,857.77&lt;br /&gt;
|-&lt;br /&gt;
| Total TeraFLOPS contributed || 241,748.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: [https://minecraftathome.com/minecrafthome/server_status.php Minecraft@Home server status], 21 May 2026&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a fully community-run project with no institutional sponsor and no affiliation with Microsoft or Mojang. It was born from a network of Minecraft researchers active on Discord and Reddit. Key contributors to various projects have included Tomlacko, andrew_555 (Kminster), Earthcomputer, Cortex, Neil, DutChen18, MC PseudoGravity, BoySanic, polymetric, and Philipp_DE, among many others credited on each project&#039;s results page.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s code, including the BOINC server infrastructure (built with Docker) and all seedfinding applications, is open source and hosted at:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;[https://github.com/minecrafthome github.com/minecrafthome]&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Coverage ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home&#039;s discoveries have been covered by major gaming outlets. The panorama seed find was reported by PC Gamer, Eurogamer, and PCGamesN in July 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://www.ginx.tv/en/minecraft/the-seed-of-minecraft-s-title-screen-background-world-has-finally-been-discovered|title=The seed of Minecraft&#039;s title screen world has finally been discovered|publisher=GINX TV|date=2020-07-19|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Herobrine seed discovery was covered by PC Gamer, NME, and Eurogamer in January 2021.&amp;lt;ref&amp;gt;{{cite web|url=https://www.nme.com/news/gaming-news/legendary-herobrine-seed-finally-found-in-minecraft-2864327|title=Legendary Herobrine seed finally found in &#039;Minecraft&#039;|publisher=NME|date=2021-01-26|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; YouTuber SalC1 documented the panorama project, and AntVenom covered the Herobrine seed reveal.&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:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:SETI@home|SETI@home]]&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://minecraftathome.com/minecrafthome/ Official BOINC project page]&lt;br /&gt;
* [https://minecraftathome.com/projects/list.html Project results list]&lt;br /&gt;
* [https://github.com/minecrafthome GitHub organisation]&lt;br /&gt;
* [https://discord.gg/FVM4SPp Discord server]&lt;br /&gt;
* [https://www.reddit.com/r/MinecraftAtHome/ Reddit community]&lt;br /&gt;
* [https://minecraftathome.com/minecrafthome/server_status.php Live server status]&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;br /&gt;
[[Category:Minecraft]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1341</id>
		<title>Minecraft@Home</title>
		<link rel="alternate" type="text/html" href="https://boincsynergy.ca/wiki/index.php?title=Minecraft@Home&amp;diff=1341"/>
		<updated>2026-05-24T13:49:46Z</updated>

		<summary type="html">&lt;p&gt;Admin: infobox test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:{{#setmainimage:Minecraft.png}}|alt=example image|center|frameless]]&lt;br /&gt;
&lt;br /&gt;
[https://minecraftathome.com/minecrafthome/ &#039;&#039;&#039;&#039;&#039;Minecraft@Home&#039;&#039;&#039;&#039;&#039;] is a &#039;&#039;&#039;&#039;&#039;[[wikipedia:Volunteer computing|volunteer computing]]&#039;&#039;&#039;&#039;&#039; project on the BOINC platform that needs your help to research projects related to Minecraft.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Minecraft|Minecraft]] is a sandbox video game developed by [[wikipedia:Mojang Studios|Mojang Studios]] (now a subsidiary of Microsoft) and first released in 2011. It is the best-selling video game of all time.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Every Minecraft world is generated from a 64-bit integer called a &#039;&#039;seed&#039;&#039;, which is fed through a pseudo-random number generator and a chain of biome and terrain rules to produce the landscape. Because the same seed always produces the same world, it is theoretically possible to identify the seed behind any Minecraft screenshot or image — but with 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt; possible values to check, doing so by hand is impossible for a single person or machine.&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Distributed computing|Distributed computing]] makes this feasible: the search space is divided into work units, each tested by a volunteer&#039;s computer against landmarks extracted from the target image (mountain shapes, biome boundaries, structure positions), until one seed matches. This brute-force approach, &amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; compressed across thousands of volunteers, can turn months of single-machine work into hours.&lt;br /&gt;
&lt;br /&gt;
== Why Minecraft@Home? ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home enables the study of the fundamental laws of Minecraft to answer unanswered questions regarding the features and true limits of the game.&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is notable as one of the only volunteer computing projects to emerge organically from a video-game community rather than from a research institution.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Because the questions it pursues are of deep cultural interest to millions of Minecraft players — what is the world behind the game&#039;s iconic title screen? where does a legendary screenshot come from? — it has attracted media coverage and public participation well beyond the typical academic BOINC project.&lt;br /&gt;
&lt;br /&gt;
== Goal ==&lt;br /&gt;
&lt;br /&gt;
Discover many of Minecraft&#039;s most famous seeds, and investigate the fundamental limits of Minecraft&#039;s world generation engine.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
Minecraft worlds are generated from a 64-bit seed. Two terrains that appear identical to a player can originate from billions of distinct seeds. Recovering the exact seed behind a screenshot or a panorama is therefore a brute-force search problem with a 2&amp;lt;sup&amp;gt;64&amp;lt;/sup&amp;gt;-sized haystack — well suited for distributed computing.&amp;lt;ref&amp;gt;{{cite web|url=https://vcomp.org/en/projects/minecraft-at-home|title=Minecraft@Home — Volunteer Computing for Everyone|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Why BOINC? ===&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Berkeley Open Infrastructure for Network Computing|BOINC]] (Berkeley Open Infrastructure for Network Computing) is a free, open-source middleware platform for volunteer computing developed at [[wikipedia:University of California, Berkeley|UC Berkeley]]. It allows any project to distribute computational tasks to thousands of volunteers&#039; idle computers around the world, collecting results and awarding credit.&amp;lt;ref&amp;gt;{{cite journal|author=Anderson, David P.|title=BOINC: A Platform for Volunteer Computing|url=https://arxiv.org/pdf/1903.01699|year=2019}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Minecraft@Home, BOINC provides the infrastructure to divide seed-search tasks into work units, distribute them to volunteers&#039; CPUs and GPUs, validate results, and reassemble them — compressing what would take a single computer months or years into hours. The panorama seed project, for example, represented approximately 93 days of single-machine processing time compressed into just 24 hours through BOINC volunteers, totalling 54.5 exaFLOPs of combined compute.&amp;lt;ref&amp;gt;{{cite web|url=https://www.minecraftforum.net/forums/minecraft-java-edition/seeds/3029589-minecraft-home-have-found-the-seed-of-minecrafts|title=Minecraft@Home have found the seed of Minecraft&#039;s title-screen background panorama|publisher=Minecraft Forum|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Many of the Minecraft@Home applications run on GPUs using CUDA or OpenCL, since seed-checking kernels parallelize extremely well on graphics hardware. CPU-based tasks are also distributed for certain project types.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
[[File:SEED of Minecraft&#039;s title-screen background PANORAMA.jpg|thumb|Minecraft@Home has found the SEED of Minecraft&#039;s title-screen background PANORAMA!]]&lt;br /&gt;
Minecraft@Home grew out of informal Minecraft research communities on Discord in mid-2020. The panorama project began on 14 June 2020, when researcher Tomlacko studied clues in the title screen image — cloud positions, terrain axis, Z coordinate — and shared findings on SalC1&#039;s Discord server, where a parallel pack.png project was already underway. A dedicated Minecraft@Home Discord channel and BOINC project were established, and the BOINC server officially launched on 24 June 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://boinc.berkeley.edu/forum_thread.php?id=13807|title=Thread: Minecraft@Home launched|publisher=BOINC|date=2020-06-24|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The project is community-run with no affiliation to Microsoft or Mojang Studios.&amp;lt;ref&amp;gt;{{cite web|url=https://forum.boinc-australia.net/index.php?board=214.0|title=Minecraft@Home|publisher=BOINC Australia|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Its source code is hosted publicly on GitHub under the [https://github.com/minecrafthome minecrafthome] organisation.&lt;br /&gt;
&lt;br /&gt;
== Results ==&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/beta-panorama.html &#039;&#039;&#039;&#039;&#039;Main Menu Panorama&#039;&#039;&#039;&#039;&#039;] — This panorama graced Minecraft&#039;s main menu screen for over seven years, from Beta 1.8 (2011) through release 1.12.2. The seed search began 14 June 2020, and in less than 24 hours after BOINC tasks were launched, the seed was found on 18 July 2020 at approximately 5:45 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/beta-panorama.html|title=Beta Panorama|publisher=Minecraft@Home|date=2020-07-18|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; Key contributors included Tomlacko (project founder and coordinate researcher), Earthcomputer, Cortex, Neil (biome/terrain code), DutChen18, MC PseudoGravity, and Philipp_DE.&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;2151901553968352745&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;8091867987493326313&amp;lt;/code&amp;gt;; both produce the same world in Java Beta 1.7.3)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=61.48, Y=75, Z=−68.73&lt;br /&gt;
&lt;br /&gt;
=== Pack.PNG ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/packpng.html &#039;&#039;&#039;&#039;&#039;Pack.PNG&#039;&#039;&#039;&#039;&#039;] — Pack.PNG is perhaps the most-viewed Minecraft image ever: a 128×128 pixel icon shipped with the game that served as the default server list thumbnail for years.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/packpng.html|title=Pack.PNG|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; After eight months of work by two teams using BOINC to narrow an initial pool of 281 trillion seeds down to 700,000 candidates, the final seed was found on 5 September 2020 at 4:04 AM UTC — in the last 5% of candidates searched.&amp;lt;ref&amp;gt;{{cite web|url=https://docs.google.com/document/d/1PpZqHWXPLjOsXf_T7uyH4rWuxUMxzBlxvv5gm19P_Z8/mobilebasic|title=Pack.png seed reversal methodology|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;3257840388504953787&amp;lt;/code&amp;gt; (Java Alpha 1.2.2)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=116, Z=−31&lt;br /&gt;
&lt;br /&gt;
=== The &#039;Herobrine&#039; World ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/herobrine.html &#039;&#039;&#039;&#039;&#039;The &#039;Herobrine&#039; World&#039;&#039;&#039;&#039;&#039;] — The Herobrine legend originated in a 2010 4chan post and was spread by a streamer named Copeland who shared screenshots supposedly proving the existence of a mysterious white-eyed figure.&amp;lt;ref&amp;gt;{{cite web|url=https://www.pcgamer.com/minecrafts-infamous-herobrine-world-seed-has-been-found/|title=Minecraft&#039;s infamous &#039;Herobrine&#039; world seed has been found|publisher=PC Gamer|date=2021-01-22|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Minecraft@Home project to find the seed of the original screenshot was started by andrew_555 (Kminster), who reportedly spent 50 hours writing the detection code.&amp;lt;ref&amp;gt;{{cite web|url=https://en.everybodywiki.com/Minecraft@Home|title=Minecraft@Home|publisher=EverybodyWiki|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The search began 5 September 2020 and the seed was found on 16 January 2021 at approximately 12:21 AM UTC.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/projects/herobrine.html|title=Herobrine|publisher=Minecraft@Home|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
** &#039;&#039;&#039;Seed:&#039;&#039;&#039; &amp;lt;code&amp;gt;478868574082066804&amp;lt;/code&amp;gt; (Java Alpha 1.0.16_02)&lt;br /&gt;
** &#039;&#039;&#039;Coordinates:&#039;&#039;&#039; X=5.06, Y=71, Z=−298.54&lt;br /&gt;
** Other major contributors: Neil, BoySanic, polymetric, DutChen18, MC (PseudoGravity)&lt;br /&gt;
&lt;br /&gt;
=== Skull-on-Fire Painting ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/skull-painting.html &#039;&#039;&#039;&#039;&#039;Skull-on-Fire&#039;&#039;&#039;&#039;&#039;] — The terrain in the background of Minecraft&#039;s in-game skull painting. The world seed for this mountain has been found.&lt;br /&gt;
&lt;br /&gt;
=== 1.13–1.16 Menu Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/1-13-1-16-panoramas.html &#039;&#039;&#039;&#039;&#039;1.13–1.16 Backgrounds&#039;&#039;&#039;&#039;&#039;] — Following up on the original panorama project, all four remaining menu backgrounds from releases 1.13 through 1.16 were discovered.&lt;br /&gt;
&lt;br /&gt;
=== Tallest Cactus ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/tallcactus.html &#039;&#039;&#039;&#039;&#039;Tallest Cactus&#039;&#039;&#039;&#039;&#039;] — An ongoing investigation into the tallest cactus that can naturally generate in Minecraft. The project has found specimens exceeding 22 blocks in height. The search uses CUDA kernels to sweep the full seed space.&lt;br /&gt;
&lt;br /&gt;
=== &#039;Smash&#039; Backgrounds ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/smash-backgrounds.html &#039;&#039;&#039;&#039;&#039;Smash&#039; Backgrounds&#039;&#039;&#039;&#039;&#039;] — Steve was added to Super Smash Bros. Ultimate; Minecraft@Home is working to uncover the origins of the six different background images used in the game.&lt;br /&gt;
&lt;br /&gt;
=== Minecraft Trailer ===&lt;br /&gt;
&lt;br /&gt;
* [https://minecraftathome.com/projects/official-trailer.html &#039;&#039;&#039;&#039;&#039;Minecraft Trailer&#039;&#039;&#039;&#039;&#039;] — One of the most iconic Minecraft videos ever. Minecraft@Home is working to recreate it scene-by-scene by recovering the seeds of each location.&lt;br /&gt;
&lt;br /&gt;
[[File:Tinkers_Construct_smeltery.png|alt=An example of Minecraft&#039;s procedurally generated terrain|right|frameless]]&lt;br /&gt;
&lt;br /&gt;
== Current Work ==&lt;br /&gt;
&lt;br /&gt;
As of 21 May 2026, the active application on the server is &#039;&#039;&#039;1.21 Find large veins of diamond ore&#039;&#039;&#039;, with 778,152 tasks unsent and 5,497 in progress, served to 216 unique users in the preceding 24 hours.&amp;lt;ref&amp;gt;{{cite web|url=https://minecraftathome.com/minecrafthome/server_status.php|title=Project status|publisher=Minecraft@Home|date=2026-05-21|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The project is currently accumulating a recent compute rate of approximately 9,857 TeraFLOPS.&lt;br /&gt;
&lt;br /&gt;
== Server Status (as of 21 May 2026) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Statistic !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Tasks ready to send || 2,081,294&lt;br /&gt;
|-&lt;br /&gt;
| Tasks in progress || 5,497&lt;br /&gt;
|-&lt;br /&gt;
| Users with credit || 6,634&lt;br /&gt;
|-&lt;br /&gt;
| Users with recent credit || 653&lt;br /&gt;
|-&lt;br /&gt;
| Computers with credit || 13,558&lt;br /&gt;
|-&lt;br /&gt;
| Computers with recent credit || 1,647&lt;br /&gt;
|-&lt;br /&gt;
| Recent TeraFLOPS || 9,857.77&lt;br /&gt;
|-&lt;br /&gt;
| Total TeraFLOPS contributed || 241,748.6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;Source: [https://minecraftathome.com/minecrafthome/server_status.php Minecraft@Home server status], 21 May 2026&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Project Team / Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home is a fully community-run project with no institutional sponsor and no affiliation with Microsoft or Mojang. It was born from a network of Minecraft researchers active on Discord and Reddit. Key contributors to various projects have included Tomlacko, andrew_555 (Kminster), Earthcomputer, Cortex, Neil, DutChen18, MC PseudoGravity, BoySanic, polymetric, and Philipp_DE, among many others credited on each project&#039;s results page.&lt;br /&gt;
&lt;br /&gt;
The project&#039;s code, including the BOINC server infrastructure (built with Docker) and all seedfinding applications, is open source and hosted at:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;[https://github.com/minecrafthome github.com/minecrafthome]&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Media Coverage ==&lt;br /&gt;
&lt;br /&gt;
Minecraft@Home&#039;s discoveries have been covered by major gaming outlets. The panorama seed find was reported by PC Gamer, Eurogamer, and PCGamesN in July 2020.&amp;lt;ref&amp;gt;{{cite web|url=https://www.ginx.tv/en/minecraft/the-seed-of-minecraft-s-title-screen-background-world-has-finally-been-discovered|title=The seed of Minecraft&#039;s title screen world has finally been discovered|publisher=GINX TV|date=2020-07-19|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; The Herobrine seed discovery was covered by PC Gamer, NME, and Eurogamer in January 2021.&amp;lt;ref&amp;gt;{{cite web|url=https://www.nme.com/news/gaming-news/legendary-herobrine-seed-finally-found-in-minecraft-2864327|title=Legendary Herobrine seed finally found in &#039;Minecraft&#039;|publisher=NME|date=2021-01-26|accessdate=2026-05-21}}&amp;lt;/ref&amp;gt; YouTuber SalC1 documented the panorama project, and AntVenom covered the Herobrine seed reveal.&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:Minecraft|Minecraft]]&lt;br /&gt;
* [[wikipedia:SETI@home|SETI@home]]&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://minecraftathome.com/minecrafthome/ Official BOINC project page]&lt;br /&gt;
* [https://minecraftathome.com/projects/list.html Project results list]&lt;br /&gt;
* [https://github.com/minecrafthome GitHub organisation]&lt;br /&gt;
* [https://discord.gg/FVM4SPp Discord server]&lt;br /&gt;
* [https://www.reddit.com/r/MinecraftAtHome/ Reddit community]&lt;br /&gt;
* [https://minecraftathome.com/minecrafthome/server_status.php Live server status]&lt;br /&gt;
&lt;br /&gt;
[[Category:BOINC projects]]&lt;br /&gt;
[[Category:Distributed computing projects]]&lt;br /&gt;
[[Category:Minecraft]]&lt;br /&gt;
[[Category:Volunteer computing]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://boincsynergy.ca/wiki/index.php?title=Template:Infobox_software&amp;diff=1340</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=1340"/>
		<updated>2026-05-24T13:46:21Z</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;&lt;br /&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>
</feed>