<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://utopiawiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sonja+says</id>
	<title>Utopia Game - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://utopiawiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sonja+says"/>
	<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php/Special:Contributions/Sonja_says"/>
	<updated>2026-05-23T22:29:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1056</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1056"/>
		<updated>2026-04-28T02:17:51Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Age 115 – Final Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation&#039;&#039;&#039; &amp;lt;p&amp;gt;[[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || 28 April 2026 18:00 UTC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&amp;lt;p&amp;gt;&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&amp;lt;p&amp;gt;&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1055</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1055"/>
		<updated>2026-04-28T02:17:30Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Age 115 – Final Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || 28 April 2026 18:00 UTC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&amp;lt;p&amp;gt;&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&amp;lt;p&amp;gt;&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1054</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1054"/>
		<updated>2026-04-28T02:16:30Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Science */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Core_Mechanics|Core Mechanics]] • [[#Attacks|Attacks]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || 28 April 2026 18:00 UTC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&amp;lt;p&amp;gt;&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&amp;lt;p&amp;gt;&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1053</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1053"/>
		<updated>2026-04-28T02:16:23Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Age 115 – Final Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Core_Mechanics|Core Mechanics]] • [[#Attacks|Attacks]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || 28 April 2026 18:00 UTC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&amp;lt;p&amp;gt;&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1052</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1052"/>
		<updated>2026-04-28T02:13:24Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: Remove Attacks section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Core_Mechanics|Core Mechanics]] • [[#Attacks|Attacks]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || 28 April 2026 18:00 UTC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Core Mechanics &amp;amp; Modifications ==&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Guilds reduce wizard losses on failed spells, max −25%&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1051</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1051"/>
		<updated>2026-04-28T02:11:29Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Age 115 – Final Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Core_Mechanics|Core Mechanics]] • [[#Attacks|Attacks]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || 28 April 2026 18:00 UTC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Core Mechanics &amp;amp; Modifications ==&lt;br /&gt;
&lt;br /&gt;
== Attacks ==&lt;br /&gt;
&lt;br /&gt;
Successful &#039;&#039;&#039;Massacres&#039;&#039;&#039; will now also apply the following penalties for &#039;&#039;&#039;8 ticks&#039;&#039;&#039; in addition to the peasant, thief, and wizard kills:&lt;br /&gt;
&lt;br /&gt;
- −1 Mana Recovery&lt;br /&gt;
- −1 Stealth Recovery&lt;br /&gt;
- −15% Guilds Effectiveness&lt;br /&gt;
- −15% Thieves&#039; Dens Effectiveness&lt;br /&gt;
&lt;br /&gt;
This effect refreshes on re-hit, but does not stack.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Guilds reduce wizard losses on failed spells, max −25%&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1050</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1050"/>
		<updated>2026-04-28T02:09:55Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* War Doctrines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Core_Mechanics|Core Mechanics]] • [[#Attacks|Attacks]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +2.0%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;10 or 12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Core Mechanics &amp;amp; Modifications ==&lt;br /&gt;
&lt;br /&gt;
== Attacks ==&lt;br /&gt;
&lt;br /&gt;
Successful &#039;&#039;&#039;Massacres&#039;&#039;&#039; will now also apply the following penalties for &#039;&#039;&#039;8 ticks&#039;&#039;&#039; in addition to the peasant, thief, and wizard kills:&lt;br /&gt;
&lt;br /&gt;
- −1 Mana Recovery&lt;br /&gt;
- −1 Stealth Recovery&lt;br /&gt;
- −15% Guilds Effectiveness&lt;br /&gt;
- −15% Thieves&#039; Dens Effectiveness&lt;br /&gt;
&lt;br /&gt;
This effect refreshes on re-hit, but does not stack.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Guilds reduce wizard losses on failed spells, max −25%&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=1049</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=1049"/>
		<updated>2026-04-28T02:08:51Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: Revert: undo Discord-link hover lock&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets,&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes pulseRed {&lt;br /&gt;
  0%   { transform: scale(1); opacity: 1; }&lt;br /&gt;
  50%  { transform: scale(1.06); opacity: 0.85; }&lt;br /&gt;
  100% { transform: scale(1); opacity: 1; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pulse-red {&lt;br /&gt;
  color: #ff4d4d !important;&lt;br /&gt;
  font-weight: 800 !important;&lt;br /&gt;
  animation: pulseRed 0.9s ease-in-out infinite !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Discord Link Styling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.sticky-discord-link,&lt;br /&gt;
#custom-sticky-link,&lt;br /&gt;
#main-discord-link {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.sticky-discord-link:hover,&lt;br /&gt;
#custom-sticky-link:hover,&lt;br /&gt;
#main-discord-link:hover {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=1048</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=1048"/>
		<updated>2026-04-28T02:03:43Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: Lock Discord-link hover color to #FFC300 (override Codex cdx-button hover)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
&lt;br /&gt;
:root {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets,&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes pulseRed {&lt;br /&gt;
  0%   { transform: scale(1); opacity: 1; }&lt;br /&gt;
  50%  { transform: scale(1.06); opacity: 0.85; }&lt;br /&gt;
  100% { transform: scale(1); opacity: 1; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pulse-red {&lt;br /&gt;
  color: #ff4d4d !important;&lt;br /&gt;
  font-weight: 800 !important;&lt;br /&gt;
  animation: pulseRed 0.9s ease-in-out infinite !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Discord Link Styling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default + visited */&lt;br /&gt;
.sticky-discord-link,&lt;br /&gt;
.sticky-discord-link:link,&lt;br /&gt;
.sticky-discord-link:visited,&lt;br /&gt;
#custom-sticky-link,&lt;br /&gt;
#custom-sticky-link:link,&lt;br /&gt;
#custom-sticky-link:visited,&lt;br /&gt;
#main-discord-link,&lt;br /&gt;
#main-discord-link:link,&lt;br /&gt;
#main-discord-link:visited {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Lock hover/focus/active to the same yellow so Codex&#039;s cdx-button&lt;br /&gt;
   hover styling (added to this anchor via JS) can&#039;t recolor it. */&lt;br /&gt;
.sticky-discord-link:hover,&lt;br /&gt;
.sticky-discord-link:focus,&lt;br /&gt;
.sticky-discord-link:active,&lt;br /&gt;
#custom-sticky-link:hover,&lt;br /&gt;
#custom-sticky-link:focus,&lt;br /&gt;
#custom-sticky-link:active,&lt;br /&gt;
#main-discord-link:hover,&lt;br /&gt;
#main-discord-link:focus,&lt;br /&gt;
#main-discord-link:active,&lt;br /&gt;
a.sticky-discord-link:hover,&lt;br /&gt;
a#custom-sticky-link:hover,&lt;br /&gt;
a#main-discord-link:hover,&lt;br /&gt;
.cdx-button.sticky-discord-link:hover,&lt;br /&gt;
.cdx-button#custom-sticky-link:hover,&lt;br /&gt;
.cdx-button#main-discord-link:hover {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1047</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1047"/>
		<updated>2026-04-28T01:43:19Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-07-28T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
const AGE_START_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-04-28 14:00:00 UTC, game time was Jan 1 YR0&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 1;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 0;        // YR0&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 5;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE ---&lt;br /&gt;
const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
  if (now &amp;lt; AGE_START_UTC) {&lt;br /&gt;
    el.textContent = &#039;PRE AGE&#039;;&lt;br /&gt;
    el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
  } else if (shouldWarn) {&lt;br /&gt;
    el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
    el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    el.textContent = computeGameString(now);&lt;br /&gt;
    el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// Floating particles&lt;br /&gt;
(function () {&lt;br /&gt;
  const canvas = document.createElement(&#039;canvas&#039;);&lt;br /&gt;
  canvas.id = &#039;particle-canvas&#039;;&lt;br /&gt;
  document.body.prepend(canvas);&lt;br /&gt;
&lt;br /&gt;
  const ctx = canvas.getContext(&#039;2d&#039;);&lt;br /&gt;
  const particles = [];&lt;br /&gt;
  const COUNT = 80;&lt;br /&gt;
&lt;br /&gt;
  const COLORS = [&lt;br /&gt;
    &#039;rgba(0, 53, 102,  0.9)&#039;,   // #003566&lt;br /&gt;
    &#039;rgba(0, 29,  61,  0.8)&#039;,   // #001d3d&lt;br /&gt;
    &#039;rgba(0,  8,  20,  0.7)&#039;,   // #000814&lt;br /&gt;
    &#039;rgba(255, 255, 255, 0.15)&#039;, // subtle white glint&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function resize() {&lt;br /&gt;
    canvas.width  = window.innerWidth;&lt;br /&gt;
    canvas.height = window.innerHeight;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function randomBetween(a, b) {&lt;br /&gt;
    return a + Math.random() * (b - a);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createParticle() {&lt;br /&gt;
    return {&lt;br /&gt;
      x:       randomBetween(0, canvas.width),&lt;br /&gt;
      y:       randomBetween(canvas.height * 0.2, canvas.height),&lt;br /&gt;
      radius:  randomBetween(1.5, 5),&lt;br /&gt;
      color:   COLORS[Math.floor(Math.random() * COLORS.length)],&lt;br /&gt;
      speedY:  randomBetween(0.2, 0.7),&lt;br /&gt;
      speedX:  randomBetween(-0.2, 0.2),&lt;br /&gt;
      opacity: 0,&lt;br /&gt;
      fadeIn:  randomBetween(0.003, 0.008),&lt;br /&gt;
      life:    randomBetween(0.4, 1),   // 0–1, fades out after 0.8&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (let i = 0; i &amp;lt; COUNT; i++) {&lt;br /&gt;
    const p = createParticle();&lt;br /&gt;
    p.y = randomBetween(0, canvas.height); // spread on init&lt;br /&gt;
    p.opacity = randomBetween(0, 1);&lt;br /&gt;
    particles.push(p);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function draw() {&lt;br /&gt;
    ctx.clearRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
    particles.forEach((p, i) =&amp;gt; {&lt;br /&gt;
      // Fade in / out&lt;br /&gt;
      if (p.life &amp;lt; 0.8) {&lt;br /&gt;
        p.opacity = Math.min(1, p.opacity + p.fadeIn);&lt;br /&gt;
      } else {&lt;br /&gt;
        p.opacity = Math.max(0, p.opacity - p.fadeIn * 0.5);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      p.life += 0.001;&lt;br /&gt;
      p.y    -= p.speedY;&lt;br /&gt;
      p.x    += p.speedX;&lt;br /&gt;
&lt;br /&gt;
      // Reset when off screen or fully faded&lt;br /&gt;
      if (p.y &amp;lt; -10 || p.life &amp;gt; 1.2) {&lt;br /&gt;
        particles[i] = createParticle();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      ctx.beginPath();&lt;br /&gt;
      ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);&lt;br /&gt;
      ctx.globalAlpha = p.opacity;&lt;br /&gt;
      ctx.fillStyle   = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
&lt;br /&gt;
      // Soft glow&lt;br /&gt;
      ctx.shadowBlur  = 8;&lt;br /&gt;
      ctx.shadowColor = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
      ctx.shadowBlur  = 0;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    ctx.globalAlpha = 1;&lt;br /&gt;
    requestAnimationFrame(draw);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  resize();&lt;br /&gt;
  draw();&lt;br /&gt;
  window.addEventListener(&#039;resize&#039;, resize);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1046</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1046"/>
		<updated>2026-04-28T01:42:55Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
const style = document.createElement(&#039;style&#039;);&lt;br /&gt;
style.textContent = `&lt;br /&gt;
  .sticky-discord-link:hover,&lt;br /&gt;
  .sticky-discord-link:focus,&lt;br /&gt;
  .sticky-discord-link:visited {&lt;br /&gt;
    color: inherit !important;&lt;br /&gt;
    opacity: 0.85;&lt;br /&gt;
  }&lt;br /&gt;
`;&lt;br /&gt;
document.head.appendChild(style);&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-07-28T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
const AGE_START_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-04-28 14:00:00 UTC, game time was Jan 1 YR0&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 1;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 0;        // YR0&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 5;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE ---&lt;br /&gt;
const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
  if (now &amp;lt; AGE_START_UTC) {&lt;br /&gt;
    el.textContent = &#039;PRE AGE&#039;;&lt;br /&gt;
    el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
  } else if (shouldWarn) {&lt;br /&gt;
    el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
    el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    el.textContent = computeGameString(now);&lt;br /&gt;
    el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// Floating particles&lt;br /&gt;
(function () {&lt;br /&gt;
  const canvas = document.createElement(&#039;canvas&#039;);&lt;br /&gt;
  canvas.id = &#039;particle-canvas&#039;;&lt;br /&gt;
  document.body.prepend(canvas);&lt;br /&gt;
&lt;br /&gt;
  const ctx = canvas.getContext(&#039;2d&#039;);&lt;br /&gt;
  const particles = [];&lt;br /&gt;
  const COUNT = 80;&lt;br /&gt;
&lt;br /&gt;
  const COLORS = [&lt;br /&gt;
    &#039;rgba(0, 53, 102,  0.9)&#039;,   // #003566&lt;br /&gt;
    &#039;rgba(0, 29,  61,  0.8)&#039;,   // #001d3d&lt;br /&gt;
    &#039;rgba(0,  8,  20,  0.7)&#039;,   // #000814&lt;br /&gt;
    &#039;rgba(255, 255, 255, 0.15)&#039;, // subtle white glint&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function resize() {&lt;br /&gt;
    canvas.width  = window.innerWidth;&lt;br /&gt;
    canvas.height = window.innerHeight;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function randomBetween(a, b) {&lt;br /&gt;
    return a + Math.random() * (b - a);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createParticle() {&lt;br /&gt;
    return {&lt;br /&gt;
      x:       randomBetween(0, canvas.width),&lt;br /&gt;
      y:       randomBetween(canvas.height * 0.2, canvas.height),&lt;br /&gt;
      radius:  randomBetween(1.5, 5),&lt;br /&gt;
      color:   COLORS[Math.floor(Math.random() * COLORS.length)],&lt;br /&gt;
      speedY:  randomBetween(0.2, 0.7),&lt;br /&gt;
      speedX:  randomBetween(-0.2, 0.2),&lt;br /&gt;
      opacity: 0,&lt;br /&gt;
      fadeIn:  randomBetween(0.003, 0.008),&lt;br /&gt;
      life:    randomBetween(0.4, 1),   // 0–1, fades out after 0.8&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (let i = 0; i &amp;lt; COUNT; i++) {&lt;br /&gt;
    const p = createParticle();&lt;br /&gt;
    p.y = randomBetween(0, canvas.height); // spread on init&lt;br /&gt;
    p.opacity = randomBetween(0, 1);&lt;br /&gt;
    particles.push(p);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function draw() {&lt;br /&gt;
    ctx.clearRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
    particles.forEach((p, i) =&amp;gt; {&lt;br /&gt;
      // Fade in / out&lt;br /&gt;
      if (p.life &amp;lt; 0.8) {&lt;br /&gt;
        p.opacity = Math.min(1, p.opacity + p.fadeIn);&lt;br /&gt;
      } else {&lt;br /&gt;
        p.opacity = Math.max(0, p.opacity - p.fadeIn * 0.5);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      p.life += 0.001;&lt;br /&gt;
      p.y    -= p.speedY;&lt;br /&gt;
      p.x    += p.speedX;&lt;br /&gt;
&lt;br /&gt;
      // Reset when off screen or fully faded&lt;br /&gt;
      if (p.y &amp;lt; -10 || p.life &amp;gt; 1.2) {&lt;br /&gt;
        particles[i] = createParticle();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      ctx.beginPath();&lt;br /&gt;
      ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);&lt;br /&gt;
      ctx.globalAlpha = p.opacity;&lt;br /&gt;
      ctx.fillStyle   = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
&lt;br /&gt;
      // Soft glow&lt;br /&gt;
      ctx.shadowBlur  = 8;&lt;br /&gt;
      ctx.shadowColor = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
      ctx.shadowBlur  = 0;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    ctx.globalAlpha = 1;&lt;br /&gt;
    requestAnimationFrame(draw);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  resize();&lt;br /&gt;
  draw();&lt;br /&gt;
  window.addEventListener(&#039;resize&#039;, resize);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1045</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1045"/>
		<updated>2026-04-28T01:38:08Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-07-28T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
const AGE_START_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-04-28 14:00:00 UTC, game time was Jan 1 YR0&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 1;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 0;        // YR0&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 5;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE ---&lt;br /&gt;
const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
  if (now &amp;lt; AGE_START_UTC) {&lt;br /&gt;
    el.textContent = &#039;PRE AGE&#039;;&lt;br /&gt;
    el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
  } else if (shouldWarn) {&lt;br /&gt;
    el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
    el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
  } else {&lt;br /&gt;
    el.textContent = computeGameString(now);&lt;br /&gt;
    el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// Floating particles&lt;br /&gt;
(function () {&lt;br /&gt;
  const canvas = document.createElement(&#039;canvas&#039;);&lt;br /&gt;
  canvas.id = &#039;particle-canvas&#039;;&lt;br /&gt;
  document.body.prepend(canvas);&lt;br /&gt;
&lt;br /&gt;
  const ctx = canvas.getContext(&#039;2d&#039;);&lt;br /&gt;
  const particles = [];&lt;br /&gt;
  const COUNT = 80;&lt;br /&gt;
&lt;br /&gt;
  const COLORS = [&lt;br /&gt;
    &#039;rgba(0, 53, 102,  0.9)&#039;,   // #003566&lt;br /&gt;
    &#039;rgba(0, 29,  61,  0.8)&#039;,   // #001d3d&lt;br /&gt;
    &#039;rgba(0,  8,  20,  0.7)&#039;,   // #000814&lt;br /&gt;
    &#039;rgba(255, 255, 255, 0.15)&#039;, // subtle white glint&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function resize() {&lt;br /&gt;
    canvas.width  = window.innerWidth;&lt;br /&gt;
    canvas.height = window.innerHeight;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function randomBetween(a, b) {&lt;br /&gt;
    return a + Math.random() * (b - a);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createParticle() {&lt;br /&gt;
    return {&lt;br /&gt;
      x:       randomBetween(0, canvas.width),&lt;br /&gt;
      y:       randomBetween(canvas.height * 0.2, canvas.height),&lt;br /&gt;
      radius:  randomBetween(1.5, 5),&lt;br /&gt;
      color:   COLORS[Math.floor(Math.random() * COLORS.length)],&lt;br /&gt;
      speedY:  randomBetween(0.2, 0.7),&lt;br /&gt;
      speedX:  randomBetween(-0.2, 0.2),&lt;br /&gt;
      opacity: 0,&lt;br /&gt;
      fadeIn:  randomBetween(0.003, 0.008),&lt;br /&gt;
      life:    randomBetween(0.4, 1),   // 0–1, fades out after 0.8&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (let i = 0; i &amp;lt; COUNT; i++) {&lt;br /&gt;
    const p = createParticle();&lt;br /&gt;
    p.y = randomBetween(0, canvas.height); // spread on init&lt;br /&gt;
    p.opacity = randomBetween(0, 1);&lt;br /&gt;
    particles.push(p);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function draw() {&lt;br /&gt;
    ctx.clearRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
    particles.forEach((p, i) =&amp;gt; {&lt;br /&gt;
      // Fade in / out&lt;br /&gt;
      if (p.life &amp;lt; 0.8) {&lt;br /&gt;
        p.opacity = Math.min(1, p.opacity + p.fadeIn);&lt;br /&gt;
      } else {&lt;br /&gt;
        p.opacity = Math.max(0, p.opacity - p.fadeIn * 0.5);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      p.life += 0.001;&lt;br /&gt;
      p.y    -= p.speedY;&lt;br /&gt;
      p.x    += p.speedX;&lt;br /&gt;
&lt;br /&gt;
      // Reset when off screen or fully faded&lt;br /&gt;
      if (p.y &amp;lt; -10 || p.life &amp;gt; 1.2) {&lt;br /&gt;
        particles[i] = createParticle();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      ctx.beginPath();&lt;br /&gt;
      ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);&lt;br /&gt;
      ctx.globalAlpha = p.opacity;&lt;br /&gt;
      ctx.fillStyle   = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
&lt;br /&gt;
      // Soft glow&lt;br /&gt;
      ctx.shadowBlur  = 8;&lt;br /&gt;
      ctx.shadowColor = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
      ctx.shadowBlur  = 0;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    ctx.globalAlpha = 1;&lt;br /&gt;
    requestAnimationFrame(draw);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  resize();&lt;br /&gt;
  draw();&lt;br /&gt;
  window.addEventListener(&#039;resize&#039;, resize);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1044</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1044"/>
		<updated>2026-04-28T01:35:45Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-07-28T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-04-28 14:00:00 UTC, game time was Jan 1 YR0&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 1;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 0;        // YR0&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 5;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE (Tick warning 5 minutes before the hour) ---&lt;br /&gt;
    const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
    const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
    const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
    const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      if (shouldWarn) {&lt;br /&gt;
        el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
        el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
      } else {&lt;br /&gt;
        el.textContent = computeGameString(now);&lt;br /&gt;
        el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// Floating particles&lt;br /&gt;
(function () {&lt;br /&gt;
  const canvas = document.createElement(&#039;canvas&#039;);&lt;br /&gt;
  canvas.id = &#039;particle-canvas&#039;;&lt;br /&gt;
  document.body.prepend(canvas);&lt;br /&gt;
&lt;br /&gt;
  const ctx = canvas.getContext(&#039;2d&#039;);&lt;br /&gt;
  const particles = [];&lt;br /&gt;
  const COUNT = 80;&lt;br /&gt;
&lt;br /&gt;
  const COLORS = [&lt;br /&gt;
    &#039;rgba(0, 53, 102,  0.9)&#039;,   // #003566&lt;br /&gt;
    &#039;rgba(0, 29,  61,  0.8)&#039;,   // #001d3d&lt;br /&gt;
    &#039;rgba(0,  8,  20,  0.7)&#039;,   // #000814&lt;br /&gt;
    &#039;rgba(255, 255, 255, 0.15)&#039;, // subtle white glint&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function resize() {&lt;br /&gt;
    canvas.width  = window.innerWidth;&lt;br /&gt;
    canvas.height = window.innerHeight;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function randomBetween(a, b) {&lt;br /&gt;
    return a + Math.random() * (b - a);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createParticle() {&lt;br /&gt;
    return {&lt;br /&gt;
      x:       randomBetween(0, canvas.width),&lt;br /&gt;
      y:       randomBetween(canvas.height * 0.2, canvas.height),&lt;br /&gt;
      radius:  randomBetween(1.5, 5),&lt;br /&gt;
      color:   COLORS[Math.floor(Math.random() * COLORS.length)],&lt;br /&gt;
      speedY:  randomBetween(0.2, 0.7),&lt;br /&gt;
      speedX:  randomBetween(-0.2, 0.2),&lt;br /&gt;
      opacity: 0,&lt;br /&gt;
      fadeIn:  randomBetween(0.003, 0.008),&lt;br /&gt;
      life:    randomBetween(0.4, 1),   // 0–1, fades out after 0.8&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (let i = 0; i &amp;lt; COUNT; i++) {&lt;br /&gt;
    const p = createParticle();&lt;br /&gt;
    p.y = randomBetween(0, canvas.height); // spread on init&lt;br /&gt;
    p.opacity = randomBetween(0, 1);&lt;br /&gt;
    particles.push(p);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function draw() {&lt;br /&gt;
    ctx.clearRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
    particles.forEach((p, i) =&amp;gt; {&lt;br /&gt;
      // Fade in / out&lt;br /&gt;
      if (p.life &amp;lt; 0.8) {&lt;br /&gt;
        p.opacity = Math.min(1, p.opacity + p.fadeIn);&lt;br /&gt;
      } else {&lt;br /&gt;
        p.opacity = Math.max(0, p.opacity - p.fadeIn * 0.5);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      p.life += 0.001;&lt;br /&gt;
      p.y    -= p.speedY;&lt;br /&gt;
      p.x    += p.speedX;&lt;br /&gt;
&lt;br /&gt;
      // Reset when off screen or fully faded&lt;br /&gt;
      if (p.y &amp;lt; -10 || p.life &amp;gt; 1.2) {&lt;br /&gt;
        particles[i] = createParticle();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      ctx.beginPath();&lt;br /&gt;
      ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);&lt;br /&gt;
      ctx.globalAlpha = p.opacity;&lt;br /&gt;
      ctx.fillStyle   = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
&lt;br /&gt;
      // Soft glow&lt;br /&gt;
      ctx.shadowBlur  = 8;&lt;br /&gt;
      ctx.shadowColor = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
      ctx.shadowBlur  = 0;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    ctx.globalAlpha = 1;&lt;br /&gt;
    requestAnimationFrame(draw);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  resize();&lt;br /&gt;
  draw();&lt;br /&gt;
  window.addEventListener(&#039;resize&#039;, resize);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1043</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=1043"/>
		<updated>2026-04-28T01:32:18Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-07-28T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-04-28 14:00:00 UTC, game time was Jan 1 YR0&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-04-28T18:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 5;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE (Tick warning 5 minutes before the hour) ---&lt;br /&gt;
    const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
    const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
    const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
    const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      if (shouldWarn) {&lt;br /&gt;
        el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
        el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
      } else {&lt;br /&gt;
        el.textContent = computeGameString(now);&lt;br /&gt;
        el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// Floating particles&lt;br /&gt;
(function () {&lt;br /&gt;
  const canvas = document.createElement(&#039;canvas&#039;);&lt;br /&gt;
  canvas.id = &#039;particle-canvas&#039;;&lt;br /&gt;
  document.body.prepend(canvas);&lt;br /&gt;
&lt;br /&gt;
  const ctx = canvas.getContext(&#039;2d&#039;);&lt;br /&gt;
  const particles = [];&lt;br /&gt;
  const COUNT = 80;&lt;br /&gt;
&lt;br /&gt;
  const COLORS = [&lt;br /&gt;
    &#039;rgba(0, 53, 102,  0.9)&#039;,   // #003566&lt;br /&gt;
    &#039;rgba(0, 29,  61,  0.8)&#039;,   // #001d3d&lt;br /&gt;
    &#039;rgba(0,  8,  20,  0.7)&#039;,   // #000814&lt;br /&gt;
    &#039;rgba(255, 255, 255, 0.15)&#039;, // subtle white glint&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function resize() {&lt;br /&gt;
    canvas.width  = window.innerWidth;&lt;br /&gt;
    canvas.height = window.innerHeight;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function randomBetween(a, b) {&lt;br /&gt;
    return a + Math.random() * (b - a);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createParticle() {&lt;br /&gt;
    return {&lt;br /&gt;
      x:       randomBetween(0, canvas.width),&lt;br /&gt;
      y:       randomBetween(canvas.height * 0.2, canvas.height),&lt;br /&gt;
      radius:  randomBetween(1.5, 5),&lt;br /&gt;
      color:   COLORS[Math.floor(Math.random() * COLORS.length)],&lt;br /&gt;
      speedY:  randomBetween(0.2, 0.7),&lt;br /&gt;
      speedX:  randomBetween(-0.2, 0.2),&lt;br /&gt;
      opacity: 0,&lt;br /&gt;
      fadeIn:  randomBetween(0.003, 0.008),&lt;br /&gt;
      life:    randomBetween(0.4, 1),   // 0–1, fades out after 0.8&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (let i = 0; i &amp;lt; COUNT; i++) {&lt;br /&gt;
    const p = createParticle();&lt;br /&gt;
    p.y = randomBetween(0, canvas.height); // spread on init&lt;br /&gt;
    p.opacity = randomBetween(0, 1);&lt;br /&gt;
    particles.push(p);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function draw() {&lt;br /&gt;
    ctx.clearRect(0, 0, canvas.width, canvas.height);&lt;br /&gt;
&lt;br /&gt;
    particles.forEach((p, i) =&amp;gt; {&lt;br /&gt;
      // Fade in / out&lt;br /&gt;
      if (p.life &amp;lt; 0.8) {&lt;br /&gt;
        p.opacity = Math.min(1, p.opacity + p.fadeIn);&lt;br /&gt;
      } else {&lt;br /&gt;
        p.opacity = Math.max(0, p.opacity - p.fadeIn * 0.5);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      p.life += 0.001;&lt;br /&gt;
      p.y    -= p.speedY;&lt;br /&gt;
      p.x    += p.speedX;&lt;br /&gt;
&lt;br /&gt;
      // Reset when off screen or fully faded&lt;br /&gt;
      if (p.y &amp;lt; -10 || p.life &amp;gt; 1.2) {&lt;br /&gt;
        particles[i] = createParticle();&lt;br /&gt;
        return;&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      ctx.beginPath();&lt;br /&gt;
      ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);&lt;br /&gt;
      ctx.globalAlpha = p.opacity;&lt;br /&gt;
      ctx.fillStyle   = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
&lt;br /&gt;
      // Soft glow&lt;br /&gt;
      ctx.shadowBlur  = 8;&lt;br /&gt;
      ctx.shadowColor = p.color;&lt;br /&gt;
      ctx.fill();&lt;br /&gt;
      ctx.shadowBlur  = 0;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    ctx.globalAlpha = 1;&lt;br /&gt;
    requestAnimationFrame(draw);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  resize();&lt;br /&gt;
  draw();&lt;br /&gt;
  window.addEventListener(&#039;resize&#039;, resize);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Main_Page&amp;diff=1039</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Main_Page&amp;diff=1039"/>
		<updated>2026-04-23T16:46:20Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to &#039;&#039;&#039;Utopia Wiki&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;center&amp;gt;[[Age 115 Final Changes|&amp;lt;span style=&amp;quot;color: #FFC300&amp;quot;&amp;gt;&#039;&#039;Age 115 Final Changes&#039;&#039;]]&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;center&amp;gt;[[Age 114|&amp;lt;span style=&amp;quot;color: #FFC300&amp;quot;&amp;gt;&#039;&#039;&#039;World of Legends Age 114 Final Changes&#039;&#039;&#039;]]&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;center&amp;gt;[[Age 113|&amp;lt;span style=&amp;quot;color: #FFC300&amp;quot;&amp;gt;&#039;&#039;Archived:&#039;&#039; &#039;&#039;&#039;World of Legends Age 113 Final Changes&#039;&#039;&#039;]]&amp;lt;/center&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        TWO COLUMN LAYOUT: RACES &amp;amp; COMMUNITY        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; border-collapse:separate; border-spacing:15px; margin:20px 0;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:65%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- LEFT COLUMN: RACES GALLERY --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2);&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#FFC300; font-size:1.4em; font-weight:bold; text-align:center; color:#000814; padding:0.8em; border-radius:6px 6px 0 0;&amp;quot; |&lt;br /&gt;
Races&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33.3%; text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Avian&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33.3%; text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Dark Elf&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:33.3%; text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Dwarf&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Elf&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Faery&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Halfling&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Human&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Orc&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|140px|link=Age 114#Races]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;[[Age 114#Races|&amp;lt;span style=&amp;quot;color:#FFC300;&amp;quot;&amp;gt;Undead&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:35%; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- RIGHT COLUMN: DISCORD BUTTON &amp;amp; DRAGONS --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:0 0 15px 0;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- DISCORD BUTTON --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background:linear-gradient(135deg, #003566 0%, #001D3D 100%); border:2px solid #FFC300; border-radius:8px; padding:2em; text-align:center; box-shadow:0 4px 15px rgba(255,195,0,0.2); transition:all 0.3s;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://utopia-game.com/discord &amp;lt;span style=&amp;quot;display:block; font-size:1.2em; color:#FFD60A; font-size: 1.6em;&amp;quot;&amp;gt;&#039;&#039;&#039;Connect on Discord&#039;&#039;&#039;&amp;lt;/span&amp;gt;]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:1em; padding:1em; background:rgba(255,195,0,0.1); border-radius:4px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF;&amp;quot;&amp;gt;Chat with players, get help, and stay updated!&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:0;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- DRAGONS IMAGE WITH HOVER --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative; overflow:hidden; border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Age114 Dragons.png|link=Dragons|400px|center]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:absolute; bottom:0; left:0; right:0; background:linear-gradient(to top, rgba(0,8,20,0.95) 0%, transparent 100%); padding:1.5em 1em 1em; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Dragons|&amp;lt;span style=&amp;quot;font-size:1.4em; font-weight:bold; color:#FFC300;&amp;quot;&amp;gt;Dragons&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding:15px 0 0 0;&amp;quot; |&lt;br /&gt;
&amp;lt;!-- RITUALS IMAGE WITH HOVER --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:relative; overflow:hidden; border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2);&amp;quot;&amp;gt;&lt;br /&gt;
[[File:Age114 Rituals.png|link=Ritual|400px|center]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;position:absolute; bottom:0; left:0; right:0; background:linear-gradient(to top, rgba(0,8,20,0.95) 0%, transparent 100%); padding:1.5em 1em 1em; text-align:center;&amp;quot;&amp;gt;&lt;br /&gt;
[[Ritual|&amp;lt;span style=&amp;quot;font-size:1.4em; font-weight:bold; color:#FFC300;&amp;quot;&amp;gt;Rituals&amp;lt;/span&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        BEGINNER GUIDES        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); margin-top:1em; border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2);&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:center; padding:0em; border-right:2px solid #003566; vertical-align:middle;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.4em; font-weight:bold; color:#FFC300; margin-bottom:0em;&amp;quot;&amp;gt;Beginner&#039;s Guides&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:80%; padding:1em; vertical-align:middle;&amp;quot; |&lt;br /&gt;
&amp;lt;div class=&amp;quot;navpills-equal-grid&amp;quot;&amp;gt;&lt;br /&gt;
{{Navpills&lt;br /&gt;
|content=&lt;br /&gt;
{{Navpill|label=Guide to Utopia|link=A_Players_Guide_to_Utopia}}&lt;br /&gt;
{{Navpill|label=Choosing Race and Personalities|link=Guide:Combo Selection}}&lt;br /&gt;
{{Navpill|label=Recommended Defense|link=Recommended Defense}}&lt;br /&gt;
{{Navpill|label=Quick Tips|link=Quick Tips}}&lt;br /&gt;
{{Navpill|label=Commonly Used Acronyms|link=Commonly Used Acronyms}}&lt;br /&gt;
{{Navpill|label=Time in Utopia|link=Time in Utopia}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        GETTING STARTED        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); margin-top:1em; border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2);&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:center; padding:0em; border-right:2px solid #003566; vertical-align:middle;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.4em; font-weight:bold; color:#FFC300; margin-bottom:0em;&amp;quot;&amp;gt;New and Returning Players&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:80%; padding:1em; vertical-align:middle;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; gap: 1em; list-style: none; margin: 0; padding: 0; justify-content: center;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1 1 200px; max-width: 250px; background: linear-gradient(135deg, #003566 0%, #001D3D 100%); border: 2px solid #FFC300; border-radius: 8px; padding: 0.8em; text-align: center; box-shadow: 0 2px 8px rgba(255,195,0,0.2);&amp;quot;&amp;gt;[[Getting Started with Utopia|&amp;lt;span style=&amp;quot;font-size: 1em; font-weight: bold; color: #FFC300; display: block;&amp;quot;&amp;gt;Getting Started with Utopia&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1 1 200px; max-width: 250px; background: linear-gradient(135deg, #003566 0%, #001D3D 100%); border: 2px solid #FFC300; border-radius: 8px; padding: 0.8em; text-align: center; box-shadow: 0 2px 8px rgba(255,195,0,0.2);&amp;quot;&amp;gt;[[Age 114|&amp;lt;span style=&amp;quot;font-size: 1em; font-weight: bold; color: #FFC300; display: block;&amp;quot;&amp;gt;Current Age Changes&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1 1 200px; max-width: 250px; background: linear-gradient(135deg, #003566 0%, #001D3D 100%); border: 2px solid #FFC300; border-radius: 8px; padding: 0.8em; text-align: center; box-shadow: 0 2px 8px rgba(255,195,0,0.2);&amp;quot;&amp;gt;[[Gold Status|&amp;lt;span style=&amp;quot;font-size: 1em; font-weight: bold; color: #FFC300; display: block;&amp;quot;&amp;gt;Gold Status&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1 1 200px; max-width: 250px; background: linear-gradient(135deg, #003566 0%, #001D3D 100%); border: 2px solid #FFC300; border-radius: 8px; padding: 0.8em; text-align: center; box-shadow: 0 2px 8px rgba(255,195,0,0.2);&amp;quot;&amp;gt;[[Game Rules|&amp;lt;span style=&amp;quot;font-size: 1em; font-weight: bold; color: #FFC300; display: block;&amp;quot;&amp;gt;Game Rules&amp;lt;/span&amp;gt;]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1 1 200px; max-width: 250px; background: linear-gradient(135deg, #003566 0%, #001D3D 100%); border: 2px solid #FFC300; border-radius: 8px; padding: 0.8em; text-align: center; box-shadow: 0 2px 8px rgba(255,195,0,0.2);&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://dragonportal.125mb.com/guides/ &amp;lt;span style=&amp;quot;font-size: 1em; font-weight: bold; color: #FFC300; display: block;&amp;quot;&amp;gt;Guides of Ages Past&amp;lt;/span&amp;gt;]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex: 1 1 200px; max-width: 250px; background: linear-gradient(135deg, #003566 0%, #001D3D 100%); border: 2px solid #FFC300; border-radius: 8px; padding: 0.8em; text-align: center; box-shadow: 0 2px 8px rgba(255,195,0,0.2);&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[http://dragonportal.125mb.com/History.html &amp;lt;span style=&amp;quot;font-size: 1em; font-weight: bold; color: #FFC300; display: block;&amp;quot;&amp;gt;Utopia History&amp;lt;/span&amp;gt;]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        GUIDES BY IN-GAME MENUS        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2); margin:20px 0;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot; style=&amp;quot;background:#FFC300; font-size:1.4em; font-weight:bold; text-align:center; color:#000814; padding:0.8em; border-radius:6px 6px 0 0;&amp;quot; |&lt;br /&gt;
Guides by In-game Menus&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:left; padding:1.5em 2em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.1em; color:#FFC300;&amp;quot;&amp;gt;Province Information&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Throne]] ([[Economy]], [[Food]], [[Honor]], [[Networth]])&lt;br /&gt;
* [[Kingdom]]&lt;br /&gt;
* [[The Paper|The Paper]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:left; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.1em; color:#FFC300;&amp;quot;&amp;gt;Internal Management&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Explore]]&lt;br /&gt;
* [[Growth]]&lt;br /&gt;
* [[Science]]&lt;br /&gt;
* [[Military]]&lt;br /&gt;
* [[Wizards]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:left; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.1em; color:#FFC300;&amp;quot;&amp;gt;External Actions&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mystics]] ([[Magic Formulas]])&lt;br /&gt;
* [[Thievery]] ([[Thievery Formulas]])&lt;br /&gt;
* [[War Room]]  &lt;br /&gt;
** ([[Attacking &amp;amp; Defending]], [[Hostile Meter]], [[Relations]], [[Overpopulation]], [[Multi-Attack Protection (MAP)|MAP/GBP]])&lt;br /&gt;
* [[Target Finder|Targets]]&lt;br /&gt;
* [[Aid]]&lt;br /&gt;
* [[Dragons]]&lt;br /&gt;
* [[Ritual|Rituals]]&lt;br /&gt;
* [[Stances]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:left; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.1em; color:#FFC300;&amp;quot;&amp;gt;Communication &amp;amp; Intel Collection&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Mail &amp;amp; Forums#Messaging|Mail]]&lt;br /&gt;
* [[Mail &amp;amp; Forums#forum|Forum]]&lt;br /&gt;
* [[MunkBot|Intel-Site]]&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:20%; text-align:left; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.1em; color:#FFC300;&amp;quot;&amp;gt;Others&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Politics]]&lt;br /&gt;
* [[Rankings]]&lt;br /&gt;
* [[Preferences]]&lt;br /&gt;
* [[MunkBot]]&lt;br /&gt;
* [[Invitations]]&lt;br /&gt;
* [[Reservations]]&lt;br /&gt;
* [[Scientists]]&lt;br /&gt;
* [http://forums.utopia-game.com/forumdisplay.php?1782-In-Game-Custom-Themes Custom Themes]&lt;br /&gt;
* [[Externals|Player Organization and Chat Clients]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--        PLAYER WRITTEN GUIDES, TIPS &amp;amp; TRICKS        --&amp;gt;&lt;br /&gt;
{| style=&amp;quot;width:100%; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2); margin:20px 0;&amp;quot;&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#FFC300; font-size:1.4em; font-weight:bold; text-align:center; color:#000814; padding:0.8em; border-radius:6px 6px 0 0;&amp;quot; |&lt;br /&gt;
Player Written Guides, Tips &amp;amp; Tricks &amp;amp;nbsp; &amp;lt;span style=&amp;quot;font-size:85%;&amp;quot;&amp;gt;[[FAQ|FAQ &#039;&#039;&#039;NEW&#039;&#039;&#039;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:33.33%; text-align:left; padding:1.5em 3em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.2em; color:#FFC300;&amp;quot;&amp;gt;Player Guides&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Attacking &amp;amp; Calculating an Attack]]&lt;br /&gt;
* [[Ambush|How To - Ambush Guide]]&lt;br /&gt;
* [[Chaining]]&lt;br /&gt;
* [[Should my KD Predetermine a Setup?]]&lt;br /&gt;
| style=&amp;quot;width:33.33%; text-align:left; padding:1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.2em; color:#FFC300;&amp;quot;&amp;gt;Leadership Guides&amp;lt;/div&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;New:&#039;&#039;&#039; [[Warleader_Guide_to_Attrition|Warleader Guide to Attrition (2022)]]&lt;br /&gt;
* [[Ethics_of_Waving_and_War|Ethics of Waving and War (2020)]]&lt;br /&gt;
* [[Land Whoring Tips &amp;amp; Tricks]]&lt;br /&gt;
* [[Leadership_Logic|Leadership Logic (2020)]]&lt;br /&gt;
| style=&amp;quot;width:33.33%; text-align:left; padding:1.5em 1.5em 1.5em 1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-weight:bold; margin-bottom:0.8em; font-size:1.2em; color:#FFC300;&amp;quot;&amp;gt;Miscellaneous Guides&amp;lt;/div&amp;gt;&lt;br /&gt;
* [[Time in Utopia]]&lt;br /&gt;
* [[Dual Monarch|Dual Monarchy]]&lt;br /&gt;
* [[Finding Good Plunder Targets|Finding Good Plunder Targets &#039;&#039;&#039;NEW&#039;&#039;&#039;]]&lt;br /&gt;
* [[Time to Move On|Time to Move On &#039;&#039;&#039;NEW&#039;&#039;&#039;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); margin-top:1em; border:2px solid #FFC300; border-radius:8px; box-shadow:0 4px 15px rgba(255,195,0,0.2);&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:30%; text-align:center; padding:0em; border-right:2px solid #003566; vertical-align:middle;&amp;quot; |&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.4em; font-weight:bold; color:#FFC300; margin-bottom:0em;&amp;quot;&amp;gt;The Utopian Encyclopedia&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:2em; font-weight:bold; color:#FFD60A; margin:0em 0;&amp;quot;&amp;gt;[[Special:Statistics|{{NUMBEROFARTICLES}}]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; color:#FFFFFF;&amp;quot;&amp;gt;articles and counting&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;width:70%; padding:1em; vertical-align:middle;&amp;quot; |&lt;br /&gt;
&amp;lt;div class=&amp;quot;navpills-equal-grid&amp;quot;&amp;gt;&lt;br /&gt;
{{Navpills&lt;br /&gt;
|content=&lt;br /&gt;
{{Navpill|label=About|link=UtopiaWiki:About}}&lt;br /&gt;
{{Navpill|label=Contribute|link=Help:Contribute}}&lt;br /&gt;
{{Navpill|label=Contents|link=Special:Categories}}&lt;br /&gt;
{{Navpill|label=FAQ|link=FAQ}}&lt;br /&gt;
{{Navpill|label=Dictionary|link=Dictionary}}&lt;br /&gt;
{{Navpill|label=Special Thanks|link=SpecialThanks}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Age_115&amp;diff=1038</id>
		<title>Age 115</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Age_115&amp;diff=1038"/>
		<updated>2026-04-23T16:46:01Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: Created page with &amp;quot;= Age 115 – Final Changes =  &amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt; &amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;#039;Quick Navigation:&amp;#039;&amp;#039;&amp;#039; Age Schedule • War Doctrines • Core Mechanics • Attacks • Buildings • Science • #Relatio...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Age 115 – Final Changes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center; padding:1em; background:linear-gradient(180deg, #001D3D 0%, #000814 100%); border:2px solid #FFC300; border-radius:8px; margin-bottom:1.5em;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FFFFFF; font-size:1.3em;&amp;quot;&amp;gt;&#039;&#039;&#039;Quick Navigation:&#039;&#039;&#039; [[#Age_Schedule|Age Schedule]] • [[#War_Doctrines|War Doctrines]] • [[#Core_Mechanics|Core Mechanics]] • [[#Attacks|Attacks]] • [[#Buildings|Buildings]] • [[#Science|Science]] • [[#Relations|Relations]] • [[#Dragons|Dragons]] • [[#Rituals|Rituals]] • [[#Races|Races]] • [[#Personalities|Personalities]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Age Schedule ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Open:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 Start:&#039;&#039;&#039; || TBC&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;WoL Age 115 End:&#039;&#039;&#039; || TBC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== War Doctrines ==&lt;br /&gt;
&lt;br /&gt;
Each race contributes a &#039;&#039;&#039;War Doctrine&#039;&#039;&#039; that applies kingdom-wide during War. The first province of a race provides a stronger initial bonus, with each additional province contributing a progressively smaller amount.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:60%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Province Count&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Doctrine Bonus&lt;br /&gt;
|-&lt;br /&gt;
| 1st Province || +3.5%&lt;br /&gt;
|-&lt;br /&gt;
| Each additional Province || +1.5%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Maximum Cap&#039;&#039;&#039; || &#039;&#039;&#039;12.5%&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This rewards early commitment to a race while still allowing deeper specialisation. No War Doctrine may exceed 12.5% total effect.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; If your kingdom has 5 Elf provinces, your kingdom would receive a combined doctrine bonus based on the scaled contributions of each province, reaching toward the maximum cap during war — granting up to +12.5% Offensive WPA and +12.5% Spell Duration during war.&lt;br /&gt;
&lt;br /&gt;
== Core Mechanics &amp;amp; Modifications ==&lt;br /&gt;
&lt;br /&gt;
== Attacks ==&lt;br /&gt;
&lt;br /&gt;
Successful &#039;&#039;&#039;Massacres&#039;&#039;&#039; will now also apply the following penalties for &#039;&#039;&#039;8 ticks&#039;&#039;&#039; in addition to the peasant, thief, and wizard kills:&lt;br /&gt;
&lt;br /&gt;
- −1 Mana Recovery&lt;br /&gt;
- −1 Stealth Recovery&lt;br /&gt;
- −15% Guilds Effectiveness&lt;br /&gt;
- −15% Thieves&#039; Dens Effectiveness&lt;br /&gt;
&lt;br /&gt;
This effect refreshes on re-hit, but does not stack.&lt;br /&gt;
&lt;br /&gt;
== Buildings ==&lt;br /&gt;
&lt;br /&gt;
- Guilds reduce wizard losses on failed spells, max −25%&lt;br /&gt;
- Castles base percent shifted from 2.25% to 2%&lt;br /&gt;
&lt;br /&gt;
== Science ==&lt;br /&gt;
&lt;br /&gt;
- Resilience Multiplier shifted to 0.04401 from 0.0489&lt;br /&gt;
- Artisan Multiplier shifted to 0.04302 from 0.0478&lt;br /&gt;
- Finesse Multiplier shifted to 0.08685 from 0.0965&lt;br /&gt;
&lt;br /&gt;
== Relations ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Defensive Force Ceasefire (DFCF)&#039;&#039;&#039; reintroduced with the following changes:&lt;br /&gt;
&lt;br /&gt;
DFCF becomes available when all of the following are met:&lt;br /&gt;
&lt;br /&gt;
- The kingdom is 45 points (in-range) or 30 points (out-of-range) below the aggressor on the hostility meter&lt;br /&gt;
- The aggressor has not been given Hostile status&lt;br /&gt;
- No attacks have been made against the aggressor for 3 ticks&lt;br /&gt;
- The kingdom is lower in both Land and Networth than the aggressor&lt;br /&gt;
&lt;br /&gt;
Additional DFCF rules:&lt;br /&gt;
&lt;br /&gt;
- DFCF will incur a penalty if within War Range of the aggressor (15% NW or Land)&lt;br /&gt;
- Penalty will be a loss of 2.5% Honor and 2.5% Science&lt;br /&gt;
- There is no penalty incurred for DFCF if out of War Range of the aggressor&lt;br /&gt;
- Penalty will have a warning popup, as to not be done accidentally&lt;br /&gt;
- DFCF duration will be for 48 hours before it can be cancelled by either kingdom&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Hostile meter&#039;&#039;&#039; will now decay after 48 hours of going hostile, decay rate will ramp with meter points.&lt;br /&gt;
&lt;br /&gt;
== Dragons ==&lt;br /&gt;
&lt;br /&gt;
Dragons return not as spectacle, but as pressure. They disrupt economies, drain resolve, and force hard choices until they are answered.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Celestite Dragon has been removed in Age 115. Dragon HP has been reduced by 2% across all dragons.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Dragon&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Amethyst&#039;&#039;&#039; || • −30% Spell Success Chance &amp;lt;br&amp;gt; • −30% Thievery Success Chance on sabotage operations &amp;lt;br&amp;gt; • All active self-spells are removed instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, provinces suffer 2% wizard losses, 2% thief losses&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Emerald&#039;&#039;&#039; || • +25% Military Casualties &amp;lt;br&amp;gt; • −25% Combat Gains &amp;lt;br&amp;gt; • Destroys 0.5% of troops at home instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 1.5% of troops at home are lost and current Building and Specialist Credits are reduced by 40%&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Ruby&#039;&#039;&#039; || • −12.5% Military Effectiveness &amp;lt;br&amp;gt; • +20% Military Wages &amp;lt;br&amp;gt; • Destroys 1.5% of offensive specialists instantly &amp;lt;br&amp;gt; • Every 6 ticks thereafter, 2.5% of offensive specialists at home desert&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Topaz&#039;&#039;&#039; || • −30% Building Efficiency &amp;lt;br&amp;gt; • −25% Income &amp;lt;br&amp;gt; • Destroys 10% of buildings instantly upon arrival &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 5% of buildings and 20% of current gold&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sapphire&#039;&#039;&#039; || • −35% WPA and TPA &amp;lt;br&amp;gt; • −1 Mana Recovery &amp;lt;br&amp;gt; • −1 Stealth Recovery &amp;lt;br&amp;gt; • +12.5% Instant Spell and Sabotage Damage taken and −12.5% Instant Spell and Sabotage Damage dealt &amp;lt;br&amp;gt; • Every 6 ticks thereafter, destroys 25% of current rune supplies&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Rituals ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; background:#001D3D; color:#FFFFFF; border:2px solid #FFC300;&amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Ritual&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#FFD60A;&amp;quot; | Effects&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Prosperity&#039;&#039;&#039; || • +25% Income &amp;lt;br&amp;gt; • +20% Birth Rate&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Barrier&#039;&#039;&#039; || • −25% Damage from Enemy Instant Magic and Thievery Operations&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Benediction&#039;&#039;&#039; &amp;lt;span style=&amp;quot;color:#FFD60A;&amp;quot;&amp;gt;&#039;&#039;&#039;(New)&#039;&#039;&#039;&amp;lt;/span&amp;gt; || • +20% Building Efficiency &amp;lt;br&amp;gt; • −20% Draft Costs &amp;lt;br&amp;gt; • −20% Build Costs &amp;lt;br&amp;gt; • −20% Wages&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Expropriation&#039;&#039;&#039; || • +25% Battle Gains &amp;lt;br&amp;gt; • +25% Specialist Credits Gained in Combat&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Fleetfoot&#039;&#039;&#039; || • −10% Attack Time &amp;lt;br&amp;gt; • −15% Offensive Military Casualties&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Havoc&#039;&#039;&#039; || • +25% Offensive WPA &amp;lt;br&amp;gt; • +25% Offensive TPA &amp;lt;br&amp;gt; • +20% Spell Damage &amp;lt;br&amp;gt; • +20% Sabotage Damage&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Onslaught&#039;&#039;&#039; || • +10% Offensive Military Efficiency &amp;lt;br&amp;gt; • +15% Enemy Military Casualties on Attacks&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Stalwart&#039;&#039;&#039; || • +5% Defensive Military Efficiency &amp;lt;br&amp;gt; • −20% Raze Damage &amp;lt;br&amp;gt; • −25% Military Casualties&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Expedient has been removed. Benediction is new.&lt;br /&gt;
&lt;br /&gt;
== Races ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #001D3D; border: 2px solid #FFC300; border-radius: 6px; padding: 2em; margin-top: 2.5em; margin-bottom: 2.5em; font-size: 1.15em; line-height: 2; color: #FFFFFF; box-shadow: 0 3px 12px rgba(0,0,0,0.3);&amp;quot;&amp;gt;&lt;br /&gt;
Each province in Utopia is defined by its &#039;&#039;&#039;Race&#039;&#039;&#039; and &#039;&#039;&#039;Personality&#039;&#039;&#039;, which determine unique bonuses, penalties, units, spells, and special abilities. Choose wisely – your combination shapes your entire strategy.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Race&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | War Doctrine &amp;amp; Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:25%;&amp;quot; | Bonuses &amp;amp; Penalties&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:24%;&amp;quot; | Units&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:12%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Avian.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Avian&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dive Bomb&#039;&#039;&#039;&lt;br /&gt;
: Offensive specialists gain +2 offense points (War Only). Does not affect NW.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −10% Attack Time and −12.5% Military Casualties on all attacks to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% Attack Time&lt;br /&gt;
- −25% Training Time&lt;br /&gt;
- −25% Military Wage Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- No Access to Stables and War Horses&lt;br /&gt;
- −5% BE&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (5.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: n/a&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Town_Watch|Town Watch]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:DarkElf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dark Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Mystic Enthusiasts&#039;&#039;&#039;&lt;br /&gt;
: Successful offensive instant spells refund 40% rune cost.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Instant Spell Damage and −12.5% Rune Costs to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +35% Instant Spell Damage&lt;br /&gt;
- −35% Rune Cost (Not Including Rituals)&lt;br /&gt;
- Can train Thieves using Specialist Credits&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% Birth Rates&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 15/0 (6.0nw)&lt;br /&gt;
- Defensive Specialist: 0/11 (5.5nw)&lt;br /&gt;
- Elite Unit: 4/12 (750gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Blizzard|Blizzard]], [[Mystics#Mage&#039;s_Fury|Mage&#039;s Fury]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Pitfalls|Pitfalls]], [[Mystics#Mind_Focus|Mind Focus]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Dwarf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Dwarf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Architect&#039;s Revenge&#039;&#039;&#039;&lt;br /&gt;
: Incoming Raze damage reduced by 15% and Raze damage increased by 20%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Construction Costs and +12.5% Income for you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +30% Building Efficiency&lt;br /&gt;
- −50% Construction Time&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Cannot Accelerate Construction&lt;br /&gt;
- +10% Attack Time&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 15/5 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Miner&#039;s_Mystique|Miner&#039;s Mystique]], [[Mystics#Town_Watch|Town Watch]], [[Mystics#Reflect_Magic|Reflect Magic]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Elf.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Elf&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Arcane Surge&#039;&#039;&#039;&lt;br /&gt;
: Whenever your province&#039;s mana drops below 40%, all spells you cast while under that threshold deal +25% spell damage. The boost disappears as soon as your mana climbs back above 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Offensive WPA and +12.5% Spell Duration to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +40% Magic Effectiveness (WPA)&lt;br /&gt;
- +1 Mana Per Tick in War&lt;br /&gt;
- +40% Rune Production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −20% TPA&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/13 (6.5nw)&lt;br /&gt;
- Elite Unit: 15/4 (750gc, 6.0nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Wrath|Wrath]], [[Mystics#Vermin|Vermin]], [[Mystics#Sloth|Sloth]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Faery.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Faery&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Leyline Interference&#039;&#039;&#039;&lt;br /&gt;
: Enemy spells cast against Faery provinces have a 20% chance to fail.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Defensive WPA and −12.5% Damage from Enemy Thievery Operations to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +25% Spell Duration&lt;br /&gt;
- +20% WPA&lt;br /&gt;
- +1 Mana Recovery per Tick&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −5% Population&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 4/16 (1000gc, 8.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Racial Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Halfling.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Halfling&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Silent Assault&#039;&#039;&#039;&lt;br /&gt;
: Sabotage operations suffer 50% fewer thievery losses.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Sabotage Damage and +12.5% Offensive TPA to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Population&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- +20% Thievery Effectiveness (TPA)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +10% Military Casualties&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 10/0 (4.0nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 6/12 (700gc, 7.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Tree_of_Gold|Tree of Gold]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Human.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Human&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Civil Administration&#039;&#039;&#039;&lt;br /&gt;
: Prisoners generate an additional 2.0gc per tick and Mercenary costs are reduced by 40%.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +12.5% Book Generation and +12.5% Science Effectiveness to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- All Lands hold Prisoners — 2 per Acre&lt;br /&gt;
- +1 Stealth Regeneration Per Tick&lt;br /&gt;
- −30% Damage from Learn Attacks&lt;br /&gt;
- +10% Science Efficiency&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- Military wage increases take twice as long to fully apply. Wage reductions apply normally.&lt;br /&gt;
- +40% Rune Cost (Does not Include Rituals)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 12/0 (4.8nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 16/3 (750gc, 6.5nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Fountain_of_Knowledge|Fountain of Knowledge]], [[Mystics#Revelation|Revelation]], [[Mystics#Invisibility|Invisibility]], [[Mystics#Guile|Guile]], [[Mystics#Steal_Warhorses|Steal War Horses]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Orc.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Orc&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Carnage&#039;&#039;&#039;&lt;br /&gt;
: Every time an Orc makes a successful attack, a random bonus effect is applied to that attack — the spirit of war is unpredictable and wild:&lt;br /&gt;
: • Destroy 25% of enemy resources (gold, runes, food)&lt;br /&gt;
: • Increases Military Wages by 25% for 4–6 ticks&lt;br /&gt;
: • −30% Military Losses&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to +10% Offensive Military Efficiency and +12.5% Raze Damage to you and all your kingdom.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- +5% Gains OOW &amp;amp; +15% Gains During War&lt;br /&gt;
- −50% Draft Cost&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −15% DME&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 13/0 (5.2nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5nw)&lt;br /&gt;
- Elite Unit: 18/2 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Bloodlust|Bloodlust]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[File:Undead.jpg|120px|link=]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top:0.8em; font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;Undead&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Death March&#039;&#039;&#039;&lt;br /&gt;
: Converts 45% of offensive losses into Soldiers instantly.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;War Doctrine (In War):&#039;&#039;&#039;&lt;br /&gt;
: Provides up to −12.5% Enemy Battle Gains and +12.5% Increased Plague Spread Chance to you and all your kingdom. (Does not grant the ability to spread Plague.)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Bonuses:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −45% Military Losses&lt;br /&gt;
- Plague Immunity&lt;br /&gt;
- Always carries Plague and chance to spread&lt;br /&gt;
- No Food Requirement&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Penalties:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
- −10% Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
- Soldier: 3/0 (0.75nw)&lt;br /&gt;
- Offensive Specialist: 11/0 (4.4nw)&lt;br /&gt;
- Defensive Specialist: 0/10 (5.0nw)&lt;br /&gt;
- Elite Unit: 17/4 (800gc, 7nw)&lt;br /&gt;
- Mercenary: 8/0 (0.0nw)&lt;br /&gt;
- Prisoner: 8/0 (1.6nw)&lt;br /&gt;
- War Horse: 2/0 (0.6nw)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Aggression|Aggression]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Personalities ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; color:#000814; padding:0.8em; border:2px solid #FFC300; border-collapse:collapse; font-size:1.05em; box-shadow:0 3px 12px rgba(255,195,0,0.3); border-radius:5px;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Personality&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:22%;&amp;quot; | Unique Ability&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em;&amp;quot; | Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:15%;&amp;quot; | Starting Bonuses&lt;br /&gt;
! style=&amp;quot;background:#000814; color:#d4a017; padding:0.8em; width:14%;&amp;quot; | Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Artisan&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Construction Delays&#039;&#039;&#039;&lt;br /&gt;
: For 3 ticks after a successful attack, the enemy&#039;s building efficiency is reduced by 10% (does not stack).&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +40% Building Capacity (Homes, Stables, Dungeons)&lt;br /&gt;
* +40% Building Production (Banks, Farms, Stables, Towers, Homes)&lt;br /&gt;
* Immune to Plunder, Greed and Incite Riots&lt;br /&gt;
* +15% Economy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +600 Soldiers&lt;br /&gt;
* +600 Specialist Credits&lt;br /&gt;
* +200 Building Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Ghost_Workers|Ghost Workers]], [[Mystics#Greater_Protection|Greater Protection]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The General&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: General&#039;s Authority&#039;&#039;&#039;&lt;br /&gt;
: Attacks inflict +15% enemy military casualties when two or more generals are sent.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +1 General&lt;br /&gt;
* −20% Training Cost &amp;amp; Speed&lt;br /&gt;
* Can train one Elite for every two Specialist Credits&lt;br /&gt;
* +15% Military Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Mist|Mist]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Heretic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Blasphemous Might&#039;&#039;&#039;&lt;br /&gt;
: After a failed offensive spell cast, the Heretic recovers 1% Stealth.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% TPA&lt;br /&gt;
* +15% WPA&lt;br /&gt;
* −50% Thief Losses&lt;br /&gt;
* +20% Sabotage Damage&lt;br /&gt;
* +20% Spell Damage&lt;br /&gt;
* +75% Guild Effectiveness&lt;br /&gt;
* +15% Arcane Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Nightmares|Nightmares]], [[Mystics#Fools_Gold|Fools Gold]], [[Mystics#Mages_Fury|Mage&#039;s Fury]], [[Mystics#Vermin|Vermin]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Mystic&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Focused Channelling&#039;&#039;&#039;&lt;br /&gt;
: While above 40% mana, spells gain +20% WPA.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +125% Guilds Effectiveness&lt;br /&gt;
* +1 Mana Recovery per Tick&lt;br /&gt;
* +25% Offensive Spell Duration&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Wizards&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Pitfalls|Pitfalls]], [[Mystics#Meteor_Showers|Meteor Showers]], [[Mystics#Chastity|Chastity]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Necromancer&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Dark Pact&#039;&#039;&#039;&lt;br /&gt;
: After each successful attack, The Necromancer converts:&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Wizards&lt;br /&gt;
: • 20% of the enemy&#039;s killed units into Soldiers&lt;br /&gt;
: • 10% of the enemy&#039;s killed units into Peasants&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +35% WPA&lt;br /&gt;
* +1–10% OME based on RWPA (0.5 rwpa – 5.0 rwpa)&lt;br /&gt;
* +25% Channeling Science Efficiency&lt;br /&gt;
* −50% Rune Cost (Not Ritual)&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +400 Wizards&lt;br /&gt;
* +400 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Animate_Dead|Animate Dead]], [[Mystics#Mind_Focus|Mind Focus]], [[Mystics#Soul_Blight|Soul_Blight]], [[Mystics#Guile|Guile]], [[Mystics#Nightmare|Nightmare]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Paladin&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Holy Inquisition&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War or Hostile apply a mini effect:&lt;br /&gt;
: • Temporarily suppresses 15% of target&#039;s science effectiveness for 6–8 ticks&lt;br /&gt;
: • Temporarily reduces Book Generation by 20% for 6–8 ticks&lt;br /&gt;
: Effect does not stack, only refreshes.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +2 War Horse Strength (alters NW)&lt;br /&gt;
* All lands hold and produce Horses (8 per acre)&lt;br /&gt;
* +7.5% Defensive Military Efficiency&lt;br /&gt;
* Immune to Plague&lt;br /&gt;
* +25% Strategy Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Salvation|Salvation]], [[Mystics#Divine_Shield|Divine Shield]], [[Mystics#Heroes_Inspiration|Heroes&#039; Inspiration]], [[Mystics#Illuminate_Shadows|Illuminate Shadows]], [[Mystics#Wrath|Wrath]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Rogue&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Shadow Persistence&#039;&#039;&#039;&lt;br /&gt;
: Rogue provinces may perform thievery operations while overpopulated.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +100% Thieves&#039; Dens Effectiveness&lt;br /&gt;
* +20% TPA&lt;br /&gt;
* +1 Stealth Recovery per Tick&lt;br /&gt;
* Access to All Thievery Operations&lt;br /&gt;
* +25% Crime Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Thieves&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
All Thievery Operations&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Tactician&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Interdiction&#039;&#039;&#039;&lt;br /&gt;
: Successful Attacks in War destroy resources as follows:&lt;br /&gt;
: • 10% of gold&lt;br /&gt;
: • 25% of runes&lt;br /&gt;
: • 20% of food&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* −15% Attack Time&lt;br /&gt;
* +40% Specialist Credits Gains&lt;br /&gt;
* +25% Land gained when Ambushing&lt;br /&gt;
* No Thieves lost on Intel&lt;br /&gt;
* Enhanced Conquest: Requires only 51% Defence to succeed; only available in War; Base Gains up to 11% max; minimum gains are 3.4% of land when targeting provinces with &amp;gt;130% rNW&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Clearsight|Clearsight]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The Warrior&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Battle Cry&#039;&#039;&#039;&lt;br /&gt;
: Upon successful attack, the attack will destroy 1% of the entire population.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Offensive Military Efficiency&lt;br /&gt;
* +5 Mercenary &amp;amp; Prisoner Strength&lt;br /&gt;
* Mercenaries and Prisoners may be sent at 1 for every 4 normal troops sent&lt;br /&gt;
* −50% Mercenary Cost&lt;br /&gt;
* +25% Tactics Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
No Spells&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align:center; padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:1.2em; font-weight:bold;&amp;quot;&amp;gt;The War Hero&amp;lt;/div&amp;gt;&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
&#039;&#039;&#039;Unique Passive: Heroes&#039; Culling&#039;&#039;&#039;&lt;br /&gt;
: Successful Massacres kill +7% additional peasants and kill an additional 2.5% thieves and wizards.&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +15% Honor Gains&lt;br /&gt;
* +70% Honor Effects&lt;br /&gt;
* Offensive specialist gets +2 strength (Affects NW)&lt;br /&gt;
* +25% Siege Science Efficiency&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
* +800 Soldiers&lt;br /&gt;
* +800 Specialist Credits&lt;br /&gt;
| style=&amp;quot;padding:1em; vertical-align:top;&amp;quot; |&lt;br /&gt;
[[Mystics#Quick_Feet|Quick Feet]], [[Mystics#Righteous_Aggressor|Righteous Aggressor]], [[Mystics#Paladins_Inspiration|Paladin&#039;s Inspiration]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=931</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=931"/>
		<updated>2026-02-19T17:38:00Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 5;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE (Tick warning 5 minutes before the hour) ---&lt;br /&gt;
    const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
    const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
    const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
    const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      if (shouldWarn) {&lt;br /&gt;
        el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
        el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
      } else {&lt;br /&gt;
        el.textContent = computeGameString(now);&lt;br /&gt;
        el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=930</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=930"/>
		<updated>2026-02-19T17:37:21Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  // Tick warning threshold&lt;br /&gt;
  const TICK_SOON_MINUTES = 45;&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
      if (!firstTabId) return;&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      if (!tabId) return;&lt;br /&gt;
&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // --- CLOCK ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE (Tick warning 45 minutes before the hour) ---&lt;br /&gt;
    const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
    const thresholdMs = TICK_SOON_MINUTES * 60 * 1000;&lt;br /&gt;
    const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
    const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      if (shouldWarn) {&lt;br /&gt;
        el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
        el.classList.add(&#039;pulse-red&#039;);&lt;br /&gt;
      } else {&lt;br /&gt;
        el.textContent = computeGameString(now);&lt;br /&gt;
        el.classList.remove(&#039;pulse-red&#039;);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // --- COUNTDOWN ---&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return;&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    updateAll();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $(initAll);&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll);&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=929</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=929"/>
		<updated>2026-02-19T17:35:12Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
  const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
  // --- CLOCK ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE (Tick warning 45 minutes before the hour) ---&lt;br /&gt;
  const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
  const thresholdMs = 45 * 60 * 1000;&lt;br /&gt;
  const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
&lt;br /&gt;
  const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    if (shouldWarn) {&lt;br /&gt;
      el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
      el.classList.add(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      el.textContent = computeGameString(now);&lt;br /&gt;
      el.classList.remove(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=928</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=928"/>
		<updated>2026-02-19T17:30:53Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets,&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes pulseRed {&lt;br /&gt;
  0%   { transform: scale(1); opacity: 1; }&lt;br /&gt;
  50%  { transform: scale(1.06); opacity: 0.85; }&lt;br /&gt;
  100% { transform: scale(1); opacity: 1; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pulse-red {&lt;br /&gt;
  color: #ff4d4d !important;&lt;br /&gt;
  font-weight: 800 !important;&lt;br /&gt;
  animation: pulseRed 0.9s ease-in-out infinite !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=927</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=927"/>
		<updated>2026-02-19T17:22:46Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
  const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
  // --- CLOCK ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
    // --- GAME DATE (Tick warning 45 minutes before the hour) ---&lt;br /&gt;
  const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
  const thresholdMs = 45 * 60 * 1000;&lt;br /&gt;
  const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
&lt;br /&gt;
  const minutesLeft = Math.ceil(msUntilNextHour / 60000);&lt;br /&gt;
&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    if (shouldWarn) {&lt;br /&gt;
      el.textContent = `TICK SOON (${minutesLeft}m)`;&lt;br /&gt;
      el.classList.add(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      el.textContent = computeGameString(now);&lt;br /&gt;
      el.classList.remove(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=926</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=926"/>
		<updated>2026-02-19T17:21:08Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
  const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
  // --- CLOCK ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // --- GAME DATE (Tick warning 45 minutes before the hour) ---&lt;br /&gt;
  const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
  const thresholdMs = 45 * 60 * 1000;&lt;br /&gt;
  const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    if (shouldWarn) {&lt;br /&gt;
      el.textContent = &amp;quot;TICK SOON&amp;quot;;&lt;br /&gt;
      el.classList.add(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      el.textContent = computeGameString(now);&lt;br /&gt;
      el.classList.remove(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=925</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=925"/>
		<updated>2026-02-19T17:18:47Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    // ---- Pulse logic (45 minutes before the tick) ----&lt;br /&gt;
  const msUntilNextHour = 3600000 - (now % 3600000);&lt;br /&gt;
  const thresholdMs = 45 * 60 * 1000;&lt;br /&gt;
&lt;br /&gt;
  const shouldWarn = msUntilNextHour &amp;gt; 0 &amp;amp;&amp;amp; msUntilNextHour &amp;lt;= thresholdMs;&lt;br /&gt;
&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    if (shouldWarn) {&lt;br /&gt;
      el.textContent = &amp;quot;TICK SOON&amp;quot;;&lt;br /&gt;
      el.classList.add(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      el.textContent = computeGameString(now);&lt;br /&gt;
      el.classList.remove(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=924</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=924"/>
		<updated>2026-02-19T17:14:45Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
  const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
  // --- CLOCK ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // --- GAME DATE ---&lt;br /&gt;
  const gameString = computeGameString(now);&lt;br /&gt;
&lt;br /&gt;
  // how many ms until next hour&lt;br /&gt;
  const d = new Date(now);&lt;br /&gt;
  const msUntilNextHour =&lt;br /&gt;
    3600000 - (d.getMinutes() * 60000 + d.getSeconds() * 1000 + d.getMilliseconds());&lt;br /&gt;
&lt;br /&gt;
  const fiveMinutesMs = 45 * 60 * 1000;&lt;br /&gt;
&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = gameString;&lt;br /&gt;
&lt;br /&gt;
    // pulse red if within last 5 minutes before tick&lt;br /&gt;
    if (msUntilNextHour &amp;lt;= fiveMinutesMs) {&lt;br /&gt;
      el.classList.add(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      el.classList.remove(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=923</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=923"/>
		<updated>2026-02-19T17:13:50Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets,&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes pulseRed {&lt;br /&gt;
  0%   { color: #FFC300; transform: scale(1); }&lt;br /&gt;
  50%  { color: #ff2a2a; transform: scale(1.08); }&lt;br /&gt;
  100% { color: #FFC300; transform: scale(1); }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.pulse-red {&lt;br /&gt;
  animation: pulseRed 1s infinite;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=922</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=922"/>
		<updated>2026-02-19T17:13:25Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
  const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
  // --- CLOCK ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // --- GAME DATE ---&lt;br /&gt;
  const gameString = computeGameString(now);&lt;br /&gt;
&lt;br /&gt;
  // how many ms until next hour&lt;br /&gt;
  const d = new Date(now);&lt;br /&gt;
  const msUntilNextHour =&lt;br /&gt;
    3600000 - (d.getMinutes() * 60000 + d.getSeconds() * 1000 + d.getMilliseconds());&lt;br /&gt;
&lt;br /&gt;
  const fiveMinutesMs = 5 * 60 * 1000;&lt;br /&gt;
&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = gameString;&lt;br /&gt;
&lt;br /&gt;
    // pulse red if within last 5 minutes before tick&lt;br /&gt;
    if (msUntilNextHour &amp;lt;= fiveMinutesMs) {&lt;br /&gt;
      el.classList.add(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      el.classList.remove(&amp;quot;pulse-red&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // --- COUNTDOWN ---&lt;br /&gt;
  document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
    el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=921</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=921"/>
		<updated>2026-02-19T17:10:23Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets,&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=920</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=920"/>
		<updated>2026-02-19T17:08:14Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
(function () {&lt;br /&gt;
  &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      const $container = $(this);&lt;br /&gt;
      const $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      const firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      const $button = $(this);&lt;br /&gt;
      const tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      const $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    const existing = document.getElementById(id);&lt;br /&gt;
    if (existing) return existing;&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets in header end area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // already present?&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = computeGameString(now);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build + Boot (FIXED)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: Discord is separate (left), widgets in bar&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord is inside the bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function startTickerOnce() {&lt;br /&gt;
    if (window.__timeWidgetsIntervalId) return; // already ticking&lt;br /&gt;
    updateAll();&lt;br /&gt;
    window.__timeWidgetsIntervalId = setInterval(updateAll, 1000);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function initAll() {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
    startTickerOnce();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Initial page load&lt;br /&gt;
  $(initAll);&lt;br /&gt;
&lt;br /&gt;
  // Vector 2022 navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(initAll);&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(initAll); // harmless extra safety&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=919</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=919"/>
		<updated>2026-02-19T16:59:32Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=918</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=918"/>
		<updated>2026-02-19T16:57:25Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=917</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=917"/>
		<updated>2026-02-19T16:56:48Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=916</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=916"/>
		<updated>2026-02-19T16:56:09Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Time widgets (works in BOTH main header + sticky header)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.time-widgets {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 12px !important;&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Nice pill styling */&lt;br /&gt;
.time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* MAIN header: center the bar within the header end area */&lt;br /&gt;
.vector-header .vector-header-end {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#main-time-widgets.time-widgets {&lt;br /&gt;
  flex: 1 1 auto !important;&lt;br /&gt;
  justify-content: center !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header: keep your current behavior (Discord left, widgets center) */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets.time-widgets {&lt;br /&gt;
  margin: 0 auto !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Optional: hide labels when cramped */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  .time-widgets .header-widget__label { display: none !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide bar entirely on very small screens */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #main-time-widgets,&lt;br /&gt;
  #sticky-time-widgets { display: none !important; }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=915</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.js&amp;diff=915"/>
		<updated>2026-02-19T16:55:36Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Any JavaScript here will be loaded for all users on every page load. */&lt;br /&gt;
&lt;br /&gt;
(function () {&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     CONFIG&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  const DISCORD_URL = &#039;https://discord.gg/t2Rp2dRvze&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Countdown target: Sat, 18 Apr 2026 00:00 UTC&lt;br /&gt;
  const COUNTDOWN_TARGET_UTC = Date.parse(&#039;2026-04-18T00:00:00Z&#039;);&lt;br /&gt;
&lt;br /&gt;
  // Clock timezone (same for everyone)&lt;br /&gt;
  const CLOCK_TIMEZONE = &#039;Etc/UTC&#039;;&lt;br /&gt;
&lt;br /&gt;
  // Game time anchor (real UTC -&amp;gt; game time)&lt;br /&gt;
  // At 2026-02-19 14:00:00 UTC, game time was Jan 21 YR2&lt;br /&gt;
  const GAME_ANCHOR_REAL_UTC = Date.parse(&#039;2026-02-19T14:00:00Z&#039;);&lt;br /&gt;
  const GAME_ANCHOR_MONTH_INDEX = 0; // Jan&lt;br /&gt;
  const GAME_ANCHOR_DAY = 21;        // 1..24&lt;br /&gt;
  const GAME_ANCHOR_YEAR = 2;        // YR2&lt;br /&gt;
  const GAME_MONTHS = [&#039;Jan&#039;, &#039;Feb&#039;, &#039;Mar&#039;, &#039;Apr&#039;, &#039;May&#039;, &#039;Jun&#039;, &#039;Jul&#039;];&lt;br /&gt;
&lt;br /&gt;
  const pad2 = (n) =&amp;gt; String(n).padStart(2, &#039;0&#039;);&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Tabs (your existing code)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  $(document).ready(function () {&lt;br /&gt;
    $(&#039;.wiki-tabs-container&#039;).each(function () {&lt;br /&gt;
      var $container = $(this);&lt;br /&gt;
      var $firstButton = $container.find(&#039;.wiki-tab-button&#039;).first();&lt;br /&gt;
      var firstTabId = $firstButton.data(&#039;tab&#039;);&lt;br /&gt;
&lt;br /&gt;
      $firstButton.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + firstTabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&#039;.wiki-tab-button&#039;).on(&#039;click&#039;, function () {&lt;br /&gt;
      var $button = $(this);&lt;br /&gt;
      var tabId = $button.data(&#039;tab&#039;);&lt;br /&gt;
      var $container = $button.closest(&#039;.wiki-tabs-container&#039;);&lt;br /&gt;
&lt;br /&gt;
      $container.find(&#039;.wiki-tab-button&#039;).removeClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;.wiki-tab-pane&#039;).removeClass(&#039;active&#039;).hide();&lt;br /&gt;
&lt;br /&gt;
      $button.addClass(&#039;active&#039;);&lt;br /&gt;
      $container.find(&#039;#&#039; + tabId).addClass(&#039;active&#039;).show();&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Helpers: find/create containers in BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
&lt;br /&gt;
  function ensureDiscordLink(container, id) {&lt;br /&gt;
    if (!container) return null;&lt;br /&gt;
    if (document.getElementById(id)) return document.getElementById(id);&lt;br /&gt;
&lt;br /&gt;
    const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
    link.id = id;&lt;br /&gt;
    link.href = DISCORD_URL;&lt;br /&gt;
    link.target = &#039;_blank&#039;;&lt;br /&gt;
    link.className =&lt;br /&gt;
      &#039;cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet sticky-discord-link&#039;;&lt;br /&gt;
    link.textContent = &#039;Join Us on Discord!&#039;;&lt;br /&gt;
    link.style.fontWeight = &#039;bold&#039;;&lt;br /&gt;
&lt;br /&gt;
    container.prepend(link);&lt;br /&gt;
    return link;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Sticky header: insert our widget bar inside sticky icons row&lt;br /&gt;
  function getStickyBar() {&lt;br /&gt;
    const icons = document.querySelector(&#039;.vector-sticky-header-icons&#039;);&lt;br /&gt;
    if (!icons) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;sticky-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    // Keep Discord where it was (far-left in sticky icons)&lt;br /&gt;
    const discord = ensureDiscordLink(icons, &#039;custom-sticky-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;sticky-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Put widgets immediately AFTER Discord (so Discord stays at the left)&lt;br /&gt;
    if (discord &amp;amp;&amp;amp; discord.parentNode === icons) {&lt;br /&gt;
      discord.insertAdjacentElement(&#039;afterend&#039;, bar);&lt;br /&gt;
    } else {&lt;br /&gt;
      icons.prepend(bar);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Main header: put our widgets between search and username area&lt;br /&gt;
  function getMainBar() {&lt;br /&gt;
    const header = document.querySelector(&#039;.vector-header&#039;);&lt;br /&gt;
    if (!header) return null;&lt;br /&gt;
&lt;br /&gt;
    // &amp;quot;End&amp;quot; is where user menu lives; we can safely insert at the start of it&lt;br /&gt;
    const headerEnd = header.querySelector(&#039;.vector-header-end&#039;);&lt;br /&gt;
    if (!headerEnd) return null;&lt;br /&gt;
&lt;br /&gt;
    let bar = document.getElementById(&#039;main-time-widgets&#039;);&lt;br /&gt;
    if (bar) return bar;&lt;br /&gt;
&lt;br /&gt;
    bar = document.createElement(&#039;span&#039;);&lt;br /&gt;
    bar.id = &#039;main-time-widgets&#039;;&lt;br /&gt;
    bar.className = &#039;time-widgets&#039;;&lt;br /&gt;
&lt;br /&gt;
    // Add Discord + widgets inside the same main bar&lt;br /&gt;
    headerEnd.prepend(bar);&lt;br /&gt;
    ensureDiscordLink(bar, &#039;main-discord-link&#039;);&lt;br /&gt;
&lt;br /&gt;
    return bar;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Build widgets inside a bar (no duplicates)&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function ensureWidget(bar, role, labelText) {&lt;br /&gt;
    if (!bar) return;&lt;br /&gt;
&lt;br /&gt;
    // If this bar already has this role, skip&lt;br /&gt;
    if (bar.querySelector(`[data-role=&amp;quot;${role}&amp;quot;]`)) return;&lt;br /&gt;
&lt;br /&gt;
    const wrap = document.createElement(&#039;span&#039;);&lt;br /&gt;
    wrap.className = &#039;header-widget&#039;;&lt;br /&gt;
    wrap.dataset.widget = role;&lt;br /&gt;
&lt;br /&gt;
    if (labelText) {&lt;br /&gt;
      const label = document.createElement(&#039;span&#039;);&lt;br /&gt;
      label.className = &#039;header-widget__label&#039;;&lt;br /&gt;
      label.textContent = labelText;&lt;br /&gt;
      wrap.appendChild(label);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    const value = document.createElement(&#039;span&#039;);&lt;br /&gt;
    value.className = &#039;header-widget__value&#039;;&lt;br /&gt;
    value.dataset.role = role;&lt;br /&gt;
&lt;br /&gt;
    wrap.appendChild(value);&lt;br /&gt;
    bar.appendChild(wrap);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Calculations / formatting&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
  function formatRemaining(ms) {&lt;br /&gt;
    if (ms &amp;lt;= 0) return &#039;00:00:00&#039;;&lt;br /&gt;
&lt;br /&gt;
    const totalSeconds = Math.floor(ms / 1000);&lt;br /&gt;
    const days = Math.floor(totalSeconds / 86400);&lt;br /&gt;
    const hours = Math.floor((totalSeconds % 86400) / 3600);&lt;br /&gt;
    const minutes = Math.floor((totalSeconds % 3600) / 60);&lt;br /&gt;
    const seconds = totalSeconds % 60;&lt;br /&gt;
&lt;br /&gt;
    if (days &amp;gt; 0) return `${days}d ${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
    return `${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function computeGameString(nowMs) {&lt;br /&gt;
    const hoursPassed = Math.floor((nowMs - GAME_ANCHOR_REAL_UTC) / 3600000);&lt;br /&gt;
&lt;br /&gt;
    // Day increments every hour (1..24)&lt;br /&gt;
    const dayIndex = (GAME_ANCHOR_DAY - 1) + hoursPassed;&lt;br /&gt;
    const dayNumber = ((dayIndex % 24) + 24) % 24 + 1;&lt;br /&gt;
&lt;br /&gt;
    // Month increments every 24 hours (Jan..Jul cycle)&lt;br /&gt;
    const daysPassed = Math.floor(dayIndex / 24);&lt;br /&gt;
    const totalMonthIndex = GAME_ANCHOR_MONTH_INDEX + daysPassed;&lt;br /&gt;
    const monthIndex = ((totalMonthIndex % 7) + 7) % 7;&lt;br /&gt;
&lt;br /&gt;
    // Year increments every 7 real days&lt;br /&gt;
    const yearsPassed = Math.floor(totalMonthIndex / 7);&lt;br /&gt;
    const year = GAME_ANCHOR_YEAR + yearsPassed;&lt;br /&gt;
&lt;br /&gt;
    return `Current Game Date: ${GAME_MONTHS[monthIndex]} ${dayNumber} YR${year}`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const clockFmt = new Intl.DateTimeFormat(&#039;en-GB&#039;, {&lt;br /&gt;
    timeZone: CLOCK_TIMEZONE,&lt;br /&gt;
    hour: &#039;2-digit&#039;,&lt;br /&gt;
    minute: &#039;2-digit&#039;,&lt;br /&gt;
    second: &#039;2-digit&#039;,&lt;br /&gt;
    hour12: false&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  function updateAll() {&lt;br /&gt;
    const now = Date.now();&lt;br /&gt;
&lt;br /&gt;
    // Update ALL widgets in BOTH headers by role&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;clock&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = clockFmt.format(new Date(now));&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;game&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = computeGameString(now);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    document.querySelectorAll(&#039;[data-role=&amp;quot;countdown&amp;quot;]&#039;).forEach((el) =&amp;gt; {&lt;br /&gt;
      el.textContent = formatRemaining(COUNTDOWN_TARGET_UTC - now);&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* =========================================================&lt;br /&gt;
     Boot: create + update widgets for BOTH headers&lt;br /&gt;
     ========================================================= */&lt;br /&gt;
&lt;br /&gt;
  function buildBarsIfPossible() {&lt;br /&gt;
    const stickyBar = getStickyBar();&lt;br /&gt;
    const mainBar = getMainBar();&lt;br /&gt;
&lt;br /&gt;
    // Sticky: no Discord inside bar (Discord is separate link to the left)&lt;br /&gt;
    if (stickyBar) {&lt;br /&gt;
      ensureWidget(stickyBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(stickyBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // Main: Discord lives INSIDE bar (first), then widgets&lt;br /&gt;
    if (mainBar) {&lt;br /&gt;
      ensureWidget(mainBar, &#039;clock&#039;, &#039;UTC:&#039;);&lt;br /&gt;
      ensureWidget(mainBar, &#039;game&#039;, null);&lt;br /&gt;
      ensureWidget(mainBar, &#039;countdown&#039;, &#039;Age ends in:&#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    updateAll();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Fires reliably for header DOM&lt;br /&gt;
  mw.hook(&#039;skin.ready&#039;).add(function () {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
&lt;br /&gt;
    if (!window.__timeWidgetsStarted) {&lt;br /&gt;
      window.__timeWidgetsStarted = true;&lt;br /&gt;
      setInterval(updateAll, 1000);&lt;br /&gt;
    }&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  // Fires on page navigation/content swaps&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(function () {&lt;br /&gt;
    buildBarsIfPossible();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Stances&amp;diff=914</id>
		<title>Stances</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Stances&amp;diff=914"/>
		<updated>2026-02-19T16:40:21Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- start content --&amp;gt;&lt;br /&gt;
					&amp;lt;div id=&amp;quot;mw-content-text&amp;quot; lang=&amp;quot;en&amp;quot; dir=&amp;quot;ltr&amp;quot; class=&amp;quot;mw-content-ltr&amp;quot;&amp;gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;As of Age 112, stances have been removed from the game. This information, though outdated, will be retained for historical purposes.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;A kingdom&#039;s Stance is an unilateral statement to the world of the kingdom&#039;s intentions and is controlled by the Monarch or Steward. A stance differs from Relations with other kingdoms.&amp;lt;br /&amp;gt;&lt;br /&gt;
You may not change your stance if you have changed it within the last 48 hours. 48 full Ticks must pass before it can be changed. A Kingdom in Aggressive or Peaceful Stance will automatically revert to Normal at the expiration of the 48nd tick.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; Stance effects are negated in War&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Stances may not be changed during Protection&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;table style=&amp;quot;cell-spacing:5px; border:none; vertical-align: middle; text-align:center&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border:1px solid #625230; background:#0f1a2b; color:#ffffff; text-align:center;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#001D3D; color:#FFC300; text-align:center; padding:8px; font-size:1.2em;&amp;quot; |&lt;br /&gt;
Stances&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#003566; color:#ffffff; padding:6px; width:33%;&amp;quot; | Normal&lt;br /&gt;
! style=&amp;quot;background:#003566; color:#ffffff; padding:6px; width:33%;&amp;quot; | Aggressive&lt;br /&gt;
! style=&amp;quot;background:#003566; color:#ffffff; padding:6px; width:33%;&amp;quot; | Peaceful&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#0f1a2b; vertical-align:top; padding:8px; text-align:left;&amp;quot; |&lt;br /&gt;
* No Effects&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;background:#0f1a2b; vertical-align:top; padding:8px; text-align:left;&amp;quot; |&lt;br /&gt;
* +10% Battle Gains&lt;br /&gt;
* -10% Attack Time&lt;br /&gt;
* -50% Hostility Generation&lt;br /&gt;
* +15% Military Wages&lt;br /&gt;
* +10% Training Cost&lt;br /&gt;
&lt;br /&gt;
| style=&amp;quot;background:#0f1a2b; vertical-align:top; padding:8px; text-align:left;&amp;quot; |&lt;br /&gt;
* +15% Income&lt;br /&gt;
* +20% Food Production&lt;br /&gt;
* +20% Rune Production&lt;br /&gt;
* +20% Birth Rate&lt;br /&gt;
* -15% Offensive Military Efficiency&lt;br /&gt;
* -20% Outgoing Instant Spell damage and Sabotage Operation damage&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;background:#001D3D; height:6px;&amp;quot; |&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;span class=&amp;quot;mw-headline&amp;quot; id=&amp;quot;Changelog&amp;quot;&amp;gt;Changelog&amp;lt;/span&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; Age 73: Fortified Stance Removed - replaced by a new stance called &amp;quot;Prosperous&amp;quot;. Prosperous stance is almost identical to Fortified. Attacks into Prosperous will have no gains penalty; Attacks while your Kingdom is Prosperous have reduced gains of -20% (instead of -50%) and scientists gain experience during Prosperous.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Age 105: Stances reintroduced.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Age 106: Stances updated to reflect forum changes on 6 May 2024.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Age 107: Stances and minimum duration updated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Age 111: Aggressive stance effects updated.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Age 112: Stances removed.&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=913</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=913"/>
		<updated>2026-02-19T16:37:49Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=912</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=912"/>
		<updated>2026-02-19T16:37:20Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active TOC item — gold background + dark text */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link {&lt;br /&gt;
  background-color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Vector 2022 TOC: active (highlighted) item = gold background + dark text */&lt;br /&gt;
#vector-toc li.vector-toc-list-item-active &amp;gt; a.vector-toc-link {&lt;br /&gt;
  background-color: #FFD60A !important;&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
&lt;br /&gt;
  /* in case Vector uses effects that keep text light */&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  mix-blend-mode: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc li.vector-toc-list-item-active &amp;gt; a.vector-toc-link * {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  mix-blend-mode: normal !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Science&amp;diff=911</id>
		<title>Science</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Science&amp;diff=911"/>
		<updated>2026-02-19T16:37:02Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Re-assigning Scientists */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sciences are the study of knowledge and create our pathway into the future. By studying the laws that govern our being and understanding the effects of these laws, we can strengthen ourselves in all that we do. The mystery of magic and thievery, our military prowess, even our methods of production can all be enhanced through the power of study with an investment in time devoted to those fields. The students of our province will lead us into the future with your careful direction.&lt;br /&gt;
&lt;br /&gt;
Mastering the Arts &amp;amp; Sciences makes your people stronger, smarter, and more efficient. You can grow in strength without growing in size. &lt;br /&gt;
&lt;br /&gt;
Details on the benefits of different sciences can be found below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Table of Contents goes here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Science Categories, Types and Effects==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Science Category&lt;br /&gt;
!Type&lt;br /&gt;
!Effect&lt;br /&gt;
!Multiplier&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Economy&#039;&#039;&#039; || Alchemy ||Income || ~0.0724&lt;br /&gt;
|-&lt;br /&gt;
|   || Tools || Building Effectiveness || ~0.0524&lt;br /&gt;
|-&lt;br /&gt;
|   || Housing || Population Limits || ~0.0262&lt;br /&gt;
|-&lt;br /&gt;
|   || Production || Food &amp;amp; Rune Production || ~0.2172&lt;br /&gt;
|-&lt;br /&gt;
|   || Bookkeeping || Wage Reduction || ~0.068&lt;br /&gt;
|-&lt;br /&gt;
|   || Artisan || Construction Time Reduction, Construction &amp;amp; Raze Cost Reduction || ~0.0478&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || Strategy || Defensive Military Efficiency || ~0.0367&lt;br /&gt;
|-&lt;br /&gt;
|   || Siege || Battle Gains || ~0.0262&lt;br /&gt;
|-&lt;br /&gt;
|   || Tactics || Offensive Military Efficiency || ~0.0367&lt;br /&gt;
|-&lt;br /&gt;
|   || Valor || Reduced Military Train Time &amp;amp; Increased Dragon Slaying Strength || ~0.0582&lt;br /&gt;
|-&lt;br /&gt;
|   || Heroism || Draft Speed &amp;amp; Draft Costs Reduction || ~0.0418&lt;br /&gt;
|-&lt;br /&gt;
|   || Resilience || Reduced Military Casualties || ~0.0489&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Arcane Arts&#039;&#039;&#039; || Crime || Thievery Effectiveness || ~0.1557&lt;br /&gt;
|-&lt;br /&gt;
|   || Channeling ||Magic Effectiveness || ~0.1875&lt;br /&gt;
|-&lt;br /&gt;
|   || Shielding || Reduced Damage from Enemy Thievery and Magic Instant Operations || ~0.0314&lt;br /&gt;
|-&lt;br /&gt;
|   || Sorcery || Increased Magic Instant Damage || ~0.0314&lt;br /&gt;
|-&lt;br /&gt;
|   || Cunning || Increased Thievery Operation Damage || ~0.0314&lt;br /&gt;
|-&lt;br /&gt;
|   || Finesse || Reduced Wizards and Thieves lost on Failed Spells and Operations || ~0.0965&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Science Formula ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Science Bonus =&amp;lt;/b&amp;gt; ( # of Books in Type )^(1/2.125) * Science Multiplier * [[Races and Personalities|Race]] Mod * [[Races and Personalities|Personality]] Mod * [[Mystics#Amnesia|Amnesia Effect]] * [[Mystics#Scientific Insights|Scientific Insights]] Mod * [[Growth#Libraries|Libraries]] Mod&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Scientists and Books==&lt;br /&gt;
&lt;br /&gt;
*Each province starts with a set number of Scientists assigned to the three science Categories (&amp;lt;b&amp;gt;Economy, Military, Arcane Arts&amp;lt;/b&amp;gt;). &amp;lt;br&amp;gt;&lt;br /&gt;
*Scientists start out as Recruits, then as they progress they provide incrementally greater benefits with each progression. &amp;lt;br&amp;gt;&lt;br /&gt;
*Scientist experience is based on how many Books they have produced in that category. &amp;lt;br&amp;gt;&lt;br /&gt;
*Scientists have no Networth value.&lt;br /&gt;
*Scientists can be re-assigned at any time, but revert to Recruit level when doing so. &amp;lt;br&amp;gt;&lt;br /&gt;
*Every tick each province builds progress towards a new scientist. Universities increase the rate of this progress.&lt;br /&gt;
*Scientists produce a set number of books each tick in the Category they are allocated (&amp;lt;b&amp;gt;Economy, Military, Arcane Arts&amp;lt;/b&amp;gt;), based on their rank. Schools increase this effect.&amp;lt;br&amp;gt;&lt;br /&gt;
*Books can be allocated to any science Type within the Category they have been produced.&amp;lt;br&amp;gt;&lt;br /&gt;
*Allocated books go into effect instantly.&lt;br /&gt;
*Inactive provinces do not produce Books.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--*Science over 5000 BPA will slowly decay outside War.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scientist Spawn Rate Formula ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Scientists Spawn Rate =&amp;lt;/b&amp;gt; 2 * [[Races and Personalities|Race]] Mod * [[Growth#Effects_of_Buildings|Universities Effect]] * [[Mystics#Revelation|Revelation]] Mod&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each province starts with a set number of scientists assigned to the various science categories. Scientists start out as Recruits that provide no bonus, then as they progress ther provide incrementally greater benefits with each progression.&lt;br /&gt;
&lt;br /&gt;
*Recruit -&amp;gt; Novice = 3 Utopian days (3 hours)&lt;br /&gt;
*Novice -&amp;gt; Graduate = 72 Utopian days (3 days)&lt;br /&gt;
*Graduate -&amp;gt; Professor = 96 Utopian days (4 days)&lt;br /&gt;
&lt;br /&gt;
Scientists can be re-assigned at any time, but revert to Recruit level when doing so. &amp;lt;br&amp;gt;&lt;br /&gt;
Every tick each province builds progress towards a new random scientist. Universities increase the rate of this progress.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Modifier Type&lt;br /&gt;
!Multiplier&lt;br /&gt;
|-&lt;br /&gt;
| Race: [[Races and Personalities|Human]] || 1.25&lt;br /&gt;
|-&lt;br /&gt;
| Spell: [[Mystics#Revelation|Revelation]] || 1.3 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scientist Ranks and Production ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Rank&lt;br /&gt;
!Experience&lt;br /&gt;
!Book Production&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Recruit&#039;&#039;&#039; || 0-1439 || 60&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Novice&#039;&#039;&#039; || 1440-5279 || 80&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Graduate&#039;&#039;&#039; || 5280-12479 || 100&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Professor&#039;&#039;&#039; || 12480+ || 120&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Re-assigning Scientists ===&lt;br /&gt;
&lt;br /&gt;
Re-assigning scientists drops them back to a recruit.  &amp;lt;!--Refer to this forum post for a discussion on this topic: http://forums.utopia-game.com/showthread.php?639982-A-Question-About-Ticks-amp-Buildings--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Science Bonus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Science Bonus =&amp;lt;/b&amp;gt; [ &#039;&#039;MIN&#039;&#039;( Science Multiplier * Skill points , Cap ) + &#039;&#039;MAX&#039;&#039;( 0, Science Multiplier * Skill points - Cap ) * Diminishing Return Factor ] * [[Races and Personalities|Race]] Mod * [[Races and Personalities|Personality]] Mod * [[Mystics#Scientific_Insights|Scientific Insights]] Mod &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Modifier Type&lt;br /&gt;
!Multiplier&lt;br /&gt;
!Science Category&lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Heretic]] || 1.3 || Crime &lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Heretic]] || 1.3 || Channeling&lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Rogue]] || 1.5 || Crime &lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Mystic]] || 1.75 || Channeling&lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Sage]] || 1.3 || All  &lt;br /&gt;
|-&lt;br /&gt;
| Spell: [[Mystics#Scientific_Insights|Scientific Insights]] || 1.1 || All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scientist Networth ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Networth Per Scientist =&amp;lt;/b&amp;gt; ~1.7gc * tick of experience&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Professors experience caps at 72 hours&lt;br /&gt;
* A maxed-out professor will provide ~413gc Networth&lt;br /&gt;
&lt;br /&gt;
=== Book Networth ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
NW = Books * 0.000006 * Current Land&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Age 69 - Age 76 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Abduct Attacks&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Through combat, you can abduct scientists from another province. Universities protect a province from abduction. &#039;&#039;&#039;Note: Abduct attack has been removed in Age 77.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changelog&#039;&#039;&#039;&lt;br /&gt;
*Age 69: The new science system is introduced.&lt;br /&gt;
*Age 70: Professors experience capped at 72 hours (a maxed-out professor will provide ~624gc Networth). Tools cap increased from 15% to 20%, housing and military cap from 10% to 15%, food from 100% to 200%, channeling from 100% to 125%. Additional scientist rank added: Recruit.&lt;br /&gt;
*Age 71: Approximately +50% scientists will be required to reach maximum effects (see table below). Production Science maximum will be 120% (down from 200%) and it will increase both Food and Rune production.&lt;br /&gt;
*Age 72: Scientists are generated on a flat ratio (7.5) similar to wizards instead of via RNG.&lt;br /&gt;
*Age 73: Science will no longer have a hard maximum for all categories. Science will scale in a linear fashion up to the previously stated maximums as normal. Once this point is reached additional scientists will yield diminishing returns.&lt;br /&gt;
*Age 74: Scientist experience will now show on the Science page and in the Spy on Sciences.&lt;br /&gt;
*Age 76: The number of scientists required for soft cap will be the same number for all categories: 35.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Old scientist multipliers and caps, during Age 76:&#039;&#039;&#039;&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Category&#039;&#039;&#039; || &#039;&#039;&#039;Effect&#039;&#039;&#039; || &#039;&#039;&#039; Multiplier&#039;&#039;&#039; || &#039;&#039;&#039;Soft Cap&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Alchemy&#039;&#039;&#039; || Income || 0.428 || 30% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tools&#039;&#039;&#039; || Building Effectiveness || 0.287 || 20% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Housing&#039;&#039;&#039; || Population Limits || 0.215 || 15% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Production&#039;&#039;&#039; || Food &amp;amp; Rune Production || 1.714 || 120% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || Military Efficiency || 0.215 || 15% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Crime&#039;&#039;&#039; || Thievery Effectiveness || 1.428 || 100% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Channeling&#039;&#039;&#039; || Magic Effectiveness || 1.785 || 125% &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Old scientist multipliers and caps, Age 71 - Age 75:&#039;&#039;&#039;&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Category&#039;&#039;&#039; || &#039;&#039;&#039;Effect&#039;&#039;&#039; || &#039;&#039;&#039; Multiplier&#039;&#039;&#039; || &#039;&#039;&#039;Cap&#039;&#039;&#039; || &#039;&#039;&#039;Scientist Cap&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Alchemy&#039;&#039;&#039; || Income || 0.5 || 30% || 30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tools&#039;&#039;&#039; || Building Effectiveness || 0.33 || 20% || 31&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Housing&#039;&#039;&#039; || Population Limits || 0.2 || 15% || 38&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Production&#039;&#039;&#039; || Food &amp;amp; Rune Production || 2 || 120% || 30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || Military Efficiency || 0.2 || 15% || 38&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Crime&#039;&#039;&#039; || Thievery Effectiveness || 1.65 || 100% || 31&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Channeling&#039;&#039;&#039; || Magic Effectiveness || 2 || 125% || 32&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*&lt;br /&gt;
&lt;br /&gt;
=== Age ?? to Age 68 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: These formulas apply to the old books system of science. In Age 69, books were replaced by scientists.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;From Ages ?? to 68 Science formulas worked as follows:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Science Effects&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;b&amp;gt;Books per Acre =&amp;lt;/b&amp;gt; Books / MAX(Acres,300)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;Science Bonus =&amp;lt;/b&amp;gt; [[Races and Personalities|Race]] Mod * [[Races and Personalities|Personality]] Mod * Science Multiplier * &#039;&#039;SQRT&#039;&#039;( Books per Acre ) * [[Growth|Library Effect]]&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Category&#039;&#039;&#039; || &#039;&#039;&#039;Multiplier&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Alchemy&#039;&#039;&#039; || 1.4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tools&#039;&#039;&#039; || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Housing&#039;&#039;&#039; || 0.65&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Food&#039;&#039;&#039; || 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || 0.52&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Thievery&#039;&#039;&#039; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Channeling&#039;&#039;&#039; || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Science Costs&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;b&amp;gt;Science Cost =&amp;lt;/b&amp;gt; Raw Cost (&#039;&#039;Table Below&#039;&#039;) * [[Races and Personalities|Race]] Mod * [[Growth|Schools Effect]]&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Rate&#039;&#039;&#039; || &#039;&#039;&#039;BPA&#039;&#039;&#039; || &#039;&#039;&#039;GC / Book&#039;&#039;&#039; || &#039;&#039;&#039;GC / Acre&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;No Research&#039;&#039;&#039; || 0 || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimal&#039;&#039;&#039; || 0.3 || 6 || 1.8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Limited&#039;&#039;&#039; || 0.4 || 7 || 2.8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sustained&#039;&#039;&#039; || 0.5 || 9 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Active&#039;&#039;&#039; || 0.7 || 13 || 9.1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Focused&#039;&#039;&#039; || 0.9 || 17 || 15.3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Accelerated&#039;&#039;&#039; || 1.2 || 22 || 26.4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Intensive&#039;&#039;&#039; || 1.5 || 27 || 40.5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rushed&#039;&#039;&#039; || 2.0 || 36 || 72.0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Extreme&#039;&#039;&#039; || 3.0 || 50 || 150.0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=910</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=910"/>
		<updated>2026-02-19T16:35:39Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active TOC item — gold background + dark text */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link {&lt;br /&gt;
  background-color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link,&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=909</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=909"/>
		<updated>2026-02-19T16:34:08Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: Undo revision 906 by Sonja says (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=908</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=908"/>
		<updated>2026-02-19T16:31:39Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: Undo revision 907 by Sonja says (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TOC hover = gold background + black text */&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:hover,&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:focus {&lt;br /&gt;
  background-color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:hover .vector-toc-text,&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:focus .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=907</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=907"/>
		<updated>2026-02-19T16:30:30Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=906</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=906"/>
		<updated>2026-02-19T16:29:09Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* TOC hover = gold background + black text */&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:hover,&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:focus {&lt;br /&gt;
  background-color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:hover .vector-toc-text,&lt;br /&gt;
#vector-toc .vector-toc-list-item &amp;gt; a.vector-toc-link:focus .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=905</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=905"/>
		<updated>2026-02-19T16:25:08Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=904</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=904"/>
		<updated>2026-02-19T16:24:44Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=903</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=903"/>
		<updated>2026-02-19T16:24:00Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Formula Boxes&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .formula-box {&lt;br /&gt;
  display: inline-block !important;&lt;br /&gt;
  width: fit-content !important;&lt;br /&gt;
  max-width: 100% !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Science&amp;diff=902</id>
		<title>Science</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Science&amp;diff=902"/>
		<updated>2026-02-19T16:19:23Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* Re-assigning Scientists */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sciences are the study of knowledge and create our pathway into the future. By studying the laws that govern our being and understanding the effects of these laws, we can strengthen ourselves in all that we do. The mystery of magic and thievery, our military prowess, even our methods of production can all be enhanced through the power of study with an investment in time devoted to those fields. The students of our province will lead us into the future with your careful direction.&lt;br /&gt;
&lt;br /&gt;
Mastering the Arts &amp;amp; Sciences makes your people stronger, smarter, and more efficient. You can grow in strength without growing in size. &lt;br /&gt;
&lt;br /&gt;
Details on the benefits of different sciences can be found below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Table of Contents goes here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Science Categories, Types and Effects==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Science Category&lt;br /&gt;
!Type&lt;br /&gt;
!Effect&lt;br /&gt;
!Multiplier&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Economy&#039;&#039;&#039; || Alchemy ||Income || ~0.0724&lt;br /&gt;
|-&lt;br /&gt;
|   || Tools || Building Effectiveness || ~0.0524&lt;br /&gt;
|-&lt;br /&gt;
|   || Housing || Population Limits || ~0.0262&lt;br /&gt;
|-&lt;br /&gt;
|   || Production || Food &amp;amp; Rune Production || ~0.2172&lt;br /&gt;
|-&lt;br /&gt;
|   || Bookkeeping || Wage Reduction || ~0.068&lt;br /&gt;
|-&lt;br /&gt;
|   || Artisan || Construction Time Reduction, Construction &amp;amp; Raze Cost Reduction || ~0.0478&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || Strategy || Defensive Military Efficiency || ~0.0367&lt;br /&gt;
|-&lt;br /&gt;
|   || Siege || Battle Gains || ~0.0262&lt;br /&gt;
|-&lt;br /&gt;
|   || Tactics || Offensive Military Efficiency || ~0.0367&lt;br /&gt;
|-&lt;br /&gt;
|   || Valor || Reduced Military Train Time &amp;amp; Increased Dragon Slaying Strength || ~0.0582&lt;br /&gt;
|-&lt;br /&gt;
|   || Heroism || Draft Speed &amp;amp; Draft Costs Reduction || ~0.0418&lt;br /&gt;
|-&lt;br /&gt;
|   || Resilience || Reduced Military Casualties || ~0.0489&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Arcane Arts&#039;&#039;&#039; || Crime || Thievery Effectiveness || ~0.1557&lt;br /&gt;
|-&lt;br /&gt;
|   || Channeling ||Magic Effectiveness || ~0.1875&lt;br /&gt;
|-&lt;br /&gt;
|   || Shielding || Reduced Damage from Enemy Thievery and Magic Instant Operations || ~0.0314&lt;br /&gt;
|-&lt;br /&gt;
|   || Sorcery || Increased Magic Instant Damage || ~0.0314&lt;br /&gt;
|-&lt;br /&gt;
|   || Cunning || Increased Thievery Operation Damage || ~0.0314&lt;br /&gt;
|-&lt;br /&gt;
|   || Finesse || Reduced Wizards and Thieves lost on Failed Spells and Operations || ~0.0965&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Science Formula ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Science Bonus =&amp;lt;/b&amp;gt; ( # of Books in Type )^(1/2.125) * Science Multiplier * [[Races and Personalities|Race]] Mod * [[Races and Personalities|Personality]] Mod * [[Mystics#Amnesia|Amnesia Effect]] * [[Mystics#Scientific Insights|Scientific Insights]] Mod * [[Growth#Libraries|Libraries]] Mod&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Scientists and Books==&lt;br /&gt;
&lt;br /&gt;
*Each province starts with a set number of Scientists assigned to the three science Categories (&amp;lt;b&amp;gt;Economy, Military, Arcane Arts&amp;lt;/b&amp;gt;). &amp;lt;br&amp;gt;&lt;br /&gt;
*Scientists start out as Recruits, then as they progress they provide incrementally greater benefits with each progression. &amp;lt;br&amp;gt;&lt;br /&gt;
*Scientist experience is based on how many Books they have produced in that category. &amp;lt;br&amp;gt;&lt;br /&gt;
*Scientists have no Networth value.&lt;br /&gt;
*Scientists can be re-assigned at any time, but revert to Recruit level when doing so. &amp;lt;br&amp;gt;&lt;br /&gt;
*Every tick each province builds progress towards a new scientist. Universities increase the rate of this progress.&lt;br /&gt;
*Scientists produce a set number of books each tick in the Category they are allocated (&amp;lt;b&amp;gt;Economy, Military, Arcane Arts&amp;lt;/b&amp;gt;), based on their rank. Schools increase this effect.&amp;lt;br&amp;gt;&lt;br /&gt;
*Books can be allocated to any science Type within the Category they have been produced.&amp;lt;br&amp;gt;&lt;br /&gt;
*Allocated books go into effect instantly.&lt;br /&gt;
*Inactive provinces do not produce Books.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--*Science over 5000 BPA will slowly decay outside War.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scientist Spawn Rate Formula ===&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Scientists Spawn Rate =&amp;lt;/b&amp;gt; 2 * [[Races and Personalities|Race]] Mod * [[Growth#Effects_of_Buildings|Universities Effect]] * [[Mystics#Revelation|Revelation]] Mod&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each province starts with a set number of scientists assigned to the various science categories. Scientists start out as Recruits that provide no bonus, then as they progress ther provide incrementally greater benefits with each progression.&lt;br /&gt;
&lt;br /&gt;
*Recruit -&amp;gt; Novice = 3 Utopian days (3 hours)&lt;br /&gt;
*Novice -&amp;gt; Graduate = 72 Utopian days (3 days)&lt;br /&gt;
*Graduate -&amp;gt; Professor = 96 Utopian days (4 days)&lt;br /&gt;
&lt;br /&gt;
Scientists can be re-assigned at any time, but revert to Recruit level when doing so. &amp;lt;br&amp;gt;&lt;br /&gt;
Every tick each province builds progress towards a new random scientist. Universities increase the rate of this progress.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Modifier Type&lt;br /&gt;
!Multiplier&lt;br /&gt;
|-&lt;br /&gt;
| Race: [[Races and Personalities|Human]] || 1.25&lt;br /&gt;
|-&lt;br /&gt;
| Spell: [[Mystics#Revelation|Revelation]] || 1.3 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scientist Ranks and Production ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Rank&lt;br /&gt;
!Experience&lt;br /&gt;
!Book Production&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Recruit&#039;&#039;&#039; || 0-1439 || 60&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Novice&#039;&#039;&#039; || 1440-5279 || 80&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Graduate&#039;&#039;&#039; || 5280-12479 || 100&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Professor&#039;&#039;&#039; || 12480+ || 120&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Re-assigning Scientists ===&lt;br /&gt;
&lt;br /&gt;
Re-assigning scientists drops them back to a recruit. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Refer to this forum post for a discussion on this topic: http://forums.utopia-game.com/showthread.php?639982-A-Question-About-Ticks-amp-Buildings--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Science Bonus ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Science Bonus =&amp;lt;/b&amp;gt; [ &#039;&#039;MIN&#039;&#039;( Science Multiplier * Skill points , Cap ) + &#039;&#039;MAX&#039;&#039;( 0, Science Multiplier * Skill points - Cap ) * Diminishing Return Factor ] * [[Races and Personalities|Race]] Mod * [[Races and Personalities|Personality]] Mod * [[Mystics#Scientific_Insights|Scientific Insights]] Mod &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Modifier Type&lt;br /&gt;
!Multiplier&lt;br /&gt;
!Science Category&lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Heretic]] || 1.3 || Crime &lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Heretic]] || 1.3 || Channeling&lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Rogue]] || 1.5 || Crime &lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Mystic]] || 1.75 || Channeling&lt;br /&gt;
|-&lt;br /&gt;
| Personality: [[Races and Personalities|Sage]] || 1.3 || All  &lt;br /&gt;
|-&lt;br /&gt;
| Spell: [[Mystics#Scientific_Insights|Scientific Insights]] || 1.1 || All&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Scientist Networth ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Networth Per Scientist =&amp;lt;/b&amp;gt; ~1.7gc * tick of experience&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Professors experience caps at 72 hours&lt;br /&gt;
* A maxed-out professor will provide ~413gc Networth&lt;br /&gt;
&lt;br /&gt;
=== Book Networth ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;formula-box&amp;quot;&amp;gt;&lt;br /&gt;
NW = Books * 0.000006 * Current Land&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
=== Age 69 - Age 76 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Abduct Attacks&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
*Through combat, you can abduct scientists from another province. Universities protect a province from abduction. &#039;&#039;&#039;Note: Abduct attack has been removed in Age 77.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Changelog&#039;&#039;&#039;&lt;br /&gt;
*Age 69: The new science system is introduced.&lt;br /&gt;
*Age 70: Professors experience capped at 72 hours (a maxed-out professor will provide ~624gc Networth). Tools cap increased from 15% to 20%, housing and military cap from 10% to 15%, food from 100% to 200%, channeling from 100% to 125%. Additional scientist rank added: Recruit.&lt;br /&gt;
*Age 71: Approximately +50% scientists will be required to reach maximum effects (see table below). Production Science maximum will be 120% (down from 200%) and it will increase both Food and Rune production.&lt;br /&gt;
*Age 72: Scientists are generated on a flat ratio (7.5) similar to wizards instead of via RNG.&lt;br /&gt;
*Age 73: Science will no longer have a hard maximum for all categories. Science will scale in a linear fashion up to the previously stated maximums as normal. Once this point is reached additional scientists will yield diminishing returns.&lt;br /&gt;
*Age 74: Scientist experience will now show on the Science page and in the Spy on Sciences.&lt;br /&gt;
*Age 76: The number of scientists required for soft cap will be the same number for all categories: 35.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Old scientist multipliers and caps, during Age 76:&#039;&#039;&#039;&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Category&#039;&#039;&#039; || &#039;&#039;&#039;Effect&#039;&#039;&#039; || &#039;&#039;&#039; Multiplier&#039;&#039;&#039; || &#039;&#039;&#039;Soft Cap&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Alchemy&#039;&#039;&#039; || Income || 0.428 || 30% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tools&#039;&#039;&#039; || Building Effectiveness || 0.287 || 20% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Housing&#039;&#039;&#039; || Population Limits || 0.215 || 15% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Production&#039;&#039;&#039; || Food &amp;amp; Rune Production || 1.714 || 120% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || Military Efficiency || 0.215 || 15% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Crime&#039;&#039;&#039; || Thievery Effectiveness || 1.428 || 100% &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Channeling&#039;&#039;&#039; || Magic Effectiveness || 1.785 || 125% &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Old scientist multipliers and caps, Age 71 - Age 75:&#039;&#039;&#039;&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Category&#039;&#039;&#039; || &#039;&#039;&#039;Effect&#039;&#039;&#039; || &#039;&#039;&#039; Multiplier&#039;&#039;&#039; || &#039;&#039;&#039;Cap&#039;&#039;&#039; || &#039;&#039;&#039;Scientist Cap&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Alchemy&#039;&#039;&#039; || Income || 0.5 || 30% || 30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tools&#039;&#039;&#039; || Building Effectiveness || 0.33 || 20% || 31&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Housing&#039;&#039;&#039; || Population Limits || 0.2 || 15% || 38&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Production&#039;&#039;&#039; || Food &amp;amp; Rune Production || 2 || 120% || 30&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || Military Efficiency || 0.2 || 15% || 38&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Crime&#039;&#039;&#039; || Thievery Effectiveness || 1.65 || 100% || 31&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Channeling&#039;&#039;&#039; || Magic Effectiveness || 2 || 125% || 32&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--*&lt;br /&gt;
&lt;br /&gt;
=== Age ?? to Age 68 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: These formulas apply to the old books system of science. In Age 69, books were replaced by scientists.&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;From Ages ?? to 68 Science formulas worked as follows:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Science Effects&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;b&amp;gt;Books per Acre =&amp;lt;/b&amp;gt; Books / MAX(Acres,300)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;b&amp;gt;Science Bonus =&amp;lt;/b&amp;gt; [[Races and Personalities|Race]] Mod * [[Races and Personalities|Personality]] Mod * Science Multiplier * &#039;&#039;SQRT&#039;&#039;( Books per Acre ) * [[Growth|Library Effect]]&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Category&#039;&#039;&#039; || &#039;&#039;&#039;Multiplier&#039;&#039;&#039; &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Alchemy&#039;&#039;&#039; || 1.4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Tools&#039;&#039;&#039; || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Housing&#039;&#039;&#039; || 0.65&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Food&#039;&#039;&#039; || 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Military&#039;&#039;&#039; || 0.52&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Thievery&#039;&#039;&#039; || 6&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Channeling&#039;&#039;&#039; || 6&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Science Costs&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;b&amp;gt;Science Cost =&amp;lt;/b&amp;gt; Raw Cost (&#039;&#039;Table Below&#039;&#039;) * [[Races and Personalities|Race]] Mod * [[Growth|Schools Effect]]&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; &lt;br /&gt;
|-bgcolor=&amp;quot;#dedeff&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Science Rate&#039;&#039;&#039; || &#039;&#039;&#039;BPA&#039;&#039;&#039; || &#039;&#039;&#039;GC / Book&#039;&#039;&#039; || &#039;&#039;&#039;GC / Acre&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;No Research&#039;&#039;&#039; || 0 || 0 || 0 ||&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Minimal&#039;&#039;&#039; || 0.3 || 6 || 1.8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Limited&#039;&#039;&#039; || 0.4 || 7 || 2.8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Sustained&#039;&#039;&#039; || 0.5 || 9 || 4.5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Active&#039;&#039;&#039; || 0.7 || 13 || 9.1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Focused&#039;&#039;&#039; || 0.9 || 17 || 15.3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Accelerated&#039;&#039;&#039; || 1.2 || 22 || 26.4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Intensive&#039;&#039;&#039; || 1.5 || 27 || 40.5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Rushed&#039;&#039;&#039; || 2.0 || 36 || 72.0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Extreme&#039;&#039;&#039; || 3.0 || 50 || 150.0&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=901</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=901"/>
		<updated>2026-02-19T16:15:39Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Draft Cost Formula&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  display: inline-block !important;  /* shrink to fit */&lt;br /&gt;
  width: auto !important;            /* no full width */&lt;br /&gt;
  max-width: 100% !important;        /* prevent overflow */&lt;br /&gt;
&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=900</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=MediaWiki:Common.css&amp;diff=900"/>
		<updated>2026-02-19T16:14:22Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* =========================================================&lt;br /&gt;
   GLOBAL THEME – MediaWiki 1.45 / Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* ---------- Keyframes ---------- */&lt;br /&gt;
@keyframes gradient {&lt;br /&gt;
  0%   { background-position: 0% 50%; }&lt;br /&gt;
  50%  { background-position: 100% 50%; }&lt;br /&gt;
  100% { background-position: 0% 50%; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@keyframes float {&lt;br /&gt;
  0%   { transform: translateY(0px)   translateX(0px)   scale(1);   opacity: 0; }&lt;br /&gt;
  10%  { opacity: 1; }&lt;br /&gt;
  90%  { opacity: 1; }&lt;br /&gt;
  100% { transform: translateY(-100vh) translateX(30px)  scale(1.2); opacity: 0; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Animated gradient layer ---------- */&lt;br /&gt;
body::before {&lt;br /&gt;
  content: &#039;&#039;;&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -2;&lt;br /&gt;
  background: linear-gradient(-45deg, #000814, #001d3d, #000814, #003566);&lt;br /&gt;
  background-size: 400% 400%;&lt;br /&gt;
  animation: gradient 15s ease infinite;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base background reset ---------- */&lt;br /&gt;
html,&lt;br /&gt;
body,&lt;br /&gt;
.vector-feature-page-tools-disabled .mw-page-container,&lt;br /&gt;
.vector-feature-page-tools-enabled .mw-page-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Transparent content containers */&lt;br /&gt;
.mw-page-container,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Particle canvas ---------- */&lt;br /&gt;
#particle-canvas {&lt;br /&gt;
  position: fixed;&lt;br /&gt;
  inset: 0;&lt;br /&gt;
  z-index: -1;&lt;br /&gt;
  pointer-events: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Base text ---------- */&lt;br /&gt;
body,&lt;br /&gt;
.mw-body,&lt;br /&gt;
.mw-body-content,&lt;br /&gt;
#mw-content-text,&lt;br /&gt;
.vector-body {&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Headings ---------- */&lt;br /&gt;
h1, h2, h3, h4, h5, h6,&lt;br /&gt;
.mw-headline,&lt;br /&gt;
#firstHeading,&lt;br /&gt;
.mw-page-title-main,&lt;br /&gt;
.page-Main_Page h1 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Logo ---------- */&lt;br /&gt;
.mw-logo-icon,&lt;br /&gt;
.mw-logo-icon img,&lt;br /&gt;
.mw-logo img,&lt;br /&gt;
.mw-logo a.mw-logo-container img {&lt;br /&gt;
  height: 100px !important;&lt;br /&gt;
  width: auto !important;&lt;br /&gt;
  max-height: 100px !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-icon { background-size: auto 100px !important; }&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 720px) {&lt;br /&gt;
  .mw-logo-icon,&lt;br /&gt;
  .mw-logo-icon img,&lt;br /&gt;
  .mw-logo img,&lt;br /&gt;
  .mw-logo a.mw-logo-container img {&lt;br /&gt;
    height: 32px !important;&lt;br /&gt;
    max-height: 32px !important;&lt;br /&gt;
  }&lt;br /&gt;
  .mw-logo-icon { background-size: auto 32px !important; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ---------- Header ---------- */&lt;br /&gt;
.vector-header-container,&lt;br /&gt;
.vector-header,&lt;br /&gt;
#mw-header-container,&lt;br /&gt;
.mw-header {&lt;br /&gt;
  background: #000814 !important;&lt;br /&gt;
  border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Site name */&lt;br /&gt;
.mw-logo-wordmark,&lt;br /&gt;
.mw-logo-wordmark a {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-size: 1.8em !important;&lt;br /&gt;
  font-weight: bold !important;&lt;br /&gt;
  text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
.mw-logo-wordmark a:hover { color: #FFD60A !important; }&lt;br /&gt;
&lt;br /&gt;
/* Sidebar headings */&lt;br /&gt;
.vector-pinnable-header-label,&lt;br /&gt;
.vector-main-menu-heading,&lt;br /&gt;
.mw-portlet h3 {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   PAGE CONTENT LINKS&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.mw-parser-output a { color: #4DA3FF !important; }&lt;br /&gt;
.mw-parser-output a:visited { color: #9B7CFF !important; }&lt;br /&gt;
.mw-parser-output a:hover { color: #6BB6FF !important; text-decoration: underline; }&lt;br /&gt;
.mw-parser-output a:active { color: #1F4FA3 !important; }&lt;br /&gt;
.mw-parser-output a.new,&lt;br /&gt;
.mw-parser-output a.new:visited { color: #CC2200 !important; }&lt;br /&gt;
&lt;br /&gt;
/* Optional: keep only if something is overriding text colors inside articles */&lt;br /&gt;
/* .mw-parser-output { color: #fff !important; } */&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   GLOBAL TABLE THEME (ALL PAGES)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable {&lt;br /&gt;
  width: auto !important;          /* stop full-width */&lt;br /&gt;
  display: inline-table !important;/* shrink-wrap to content */&lt;br /&gt;
  max-width: 100% !important;      /* don’t overflow the page */&lt;br /&gt;
  border-collapse: collapse !important;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  background: #303030 !important;&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable caption {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  color: #fff !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
  border-bottom: 1px solid #555555 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable thead th {&lt;br /&gt;
  background: #000 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: 700;&lt;br /&gt;
  border: 1px solid #666666 !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(odd) { background-color: #303030 !important; }&lt;br /&gt;
.mw-parser-output .wikitable tbody tr:nth-child(even) { background-color: #505050 !important; }&lt;br /&gt;
&lt;br /&gt;
.mw-parser-output .wikitable tbody td {&lt;br /&gt;
  border: 1px solid #555555 !important;&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  padding: 0.5em 0.7em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   TABLE OF CONTENTS – Vector 2022&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
#vector-toc,&lt;br /&gt;
#toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 6px;&lt;br /&gt;
  padding: 0.75em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-pinnable-header-label,&lt;br /&gt;
#toc .toctitle {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#vector-toc .vector-toc-text,&lt;br /&gt;
#toc a {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  opacity: 1 !important;&lt;br /&gt;
  text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active item */&lt;br /&gt;
#vector-toc .vector-toc-list-item-active { background: transparent !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link { background-color: #FFD60A !important; }&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Expanded parent rules */&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 600 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded.vector-toc-list-item-active &amp;gt; a.vector-toc-link .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-level-1.vector-toc-list-item-expanded ul .vector-toc-text {&lt;br /&gt;
  color: #EAEAEA !important;&lt;br /&gt;
  font-weight: normal !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover */&lt;br /&gt;
#vector-toc .vector-toc-list-item:not(.vector-toc-list-item-active) &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
#vector-toc .vector-toc-list-item-active &amp;gt; a.vector-toc-link:hover .vector-toc-text {&lt;br /&gt;
  color: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Remove wrappers */&lt;br /&gt;
.vector-toc-container,&lt;br /&gt;
#vector-toc-pinned-container,&lt;br /&gt;
.vector-pinned-container {&lt;br /&gt;
  background: transparent !important;&lt;br /&gt;
  border: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Inline (article) TOC only */&lt;br /&gt;
.mw-parser-output &amp;gt; .toc {&lt;br /&gt;
  background: #001D3D !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Draft Cost Formula&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
.formula-box {&lt;br /&gt;
  background: #001D3D;&lt;br /&gt;
  border: 1px solid #FFC300;&lt;br /&gt;
  border-radius: 10px;&lt;br /&gt;
  padding: 0.8em 1em;&lt;br /&gt;
  margin: 0.75em 0;&lt;br /&gt;
  color: #EAEAEA;&lt;br /&gt;
  line-height: 1.6;&lt;br /&gt;
  white-space: normal;&lt;br /&gt;
  overflow-wrap: anywhere;&lt;br /&gt;
}&lt;br /&gt;
.formula-box a { color: #4DA3FF !important; }&lt;br /&gt;
.formula-box a:visited { color: #9B7CFF !important; }&lt;br /&gt;
&lt;br /&gt;
/* =========================&lt;br /&gt;
   Vector 2022 – RIGHT PAGE TOOLS: remove the fade/gradient&lt;br /&gt;
   ========================= */&lt;br /&gt;
.vector-page-tools::before,&lt;br /&gt;
.vector-page-tools::after,&lt;br /&gt;
.vector-page-tools-container::before,&lt;br /&gt;
.vector-page-tools-container::after,&lt;br /&gt;
.vector-page-tools-landmark::before,&lt;br /&gt;
.vector-page-tools-landmark::after,&lt;br /&gt;
.vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-sticky-pinned-container::after,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::before,&lt;br /&gt;
.vector-page-tools .vector-sticky-pinned-container::after {&lt;br /&gt;
  background: none !important;&lt;br /&gt;
  background-image: none !important;&lt;br /&gt;
  box-shadow: none !important;&lt;br /&gt;
  filter: none !important;&lt;br /&gt;
  backdrop-filter: none !important;&lt;br /&gt;
  mask-image: none !important;&lt;br /&gt;
  -webkit-mask-image: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Link Colors */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Footer Text and Icons */&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Change Navigation Icon/Link Colors */&lt;br /&gt;
#mw-panel .portal a,  &lt;br /&gt;
#mw-panel .portal a:visited {&lt;br /&gt;
     color: #FFC300 !important; /* Change to your desired color */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== NAVIGATION ICONS - VECTOR 2022 ===== */&lt;br /&gt;
/* User menu icon (person icon) */&lt;br /&gt;
.vector-user-links .vector-icon,&lt;br /&gt;
.vector-user-menu-login .vector-icon,&lt;br /&gt;
.vector-user-menu-create-account .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Settings/hamburger menu icon */&lt;br /&gt;
.vector-main-menu-action-toggle .vector-icon,&lt;br /&gt;
.vector-page-tools-landmark .vector-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* All navigation icons */&lt;br /&gt;
.vector-icon,&lt;br /&gt;
.mw-ui-icon {&lt;br /&gt;
     filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* User menu links (username) */&lt;br /&gt;
.vector-user-links a,&lt;br /&gt;
.vector-user-menu-logged-in .vector-user-links-main a {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ===== FOOTER LINKS - VECTOR 2022 ===== */&lt;br /&gt;
/* All footer links */&lt;br /&gt;
#footer a,&lt;br /&gt;
#footer a:link,&lt;br /&gt;
#footer a:visited,&lt;br /&gt;
.mw-footer a,&lt;br /&gt;
.mw-footer a:link,&lt;br /&gt;
.mw-footer a:visited,&lt;br /&gt;
footer a,&lt;br /&gt;
footer a:link,&lt;br /&gt;
footer a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Footer text color */&lt;br /&gt;
#footer,&lt;br /&gt;
#footer li,&lt;br /&gt;
.mw-footer,&lt;br /&gt;
.mw-footer li,&lt;br /&gt;
footer,&lt;br /&gt;
footer li {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Older footer selectors (keeping for compatibility) */&lt;br /&gt;
div#footer ul li a, &lt;br /&gt;
div#footer ul li a:visited {&lt;br /&gt;
     color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
div#footer ul li {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   VECTOR 2022 – PAGE ACTIONS / TABS COLOR CONTROL&lt;br /&gt;
   Applies to: Main Page | Discussion | Read | Edit | History | Tools&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Default page action links (not active) */&lt;br /&gt;
.vector-page-toolbar a,&lt;br /&gt;
.vector-page-toolbar a:link,&lt;br /&gt;
.vector-page-toolbar a:visited,&lt;br /&gt;
.vector-page-toolbar .mw-ui-icon a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hover state (optional subtle brighten) */&lt;br /&gt;
.vector-page-toolbar a:hover {&lt;br /&gt;
    color: #FFD60A !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ACTIVE / CURRENT TAB (e.g. Main Page, Edit when editing) */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive,&lt;br /&gt;
.vector-page-toolbar .mw-ui-button.mw-ui-progressive:visited {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ensure active tab background doesn&#039;t force dark text */&lt;br /&gt;
.vector-page-toolbar .selected a,&lt;br /&gt;
.vector-page-toolbar .selected span {&lt;br /&gt;
    color: #FFFFFF !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Missing page links stay red */&lt;br /&gt;
.vector-page-toolbar a.new,&lt;br /&gt;
.vector-page-toolbar a.new:visited {&lt;br /&gt;
    color: #CC2200 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* ============ NAVPILLS ============ */&lt;br /&gt;
/* Navpills styling */&lt;br /&gt;
.navpills-container {&lt;br /&gt;
    margin: 1.5em 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 0.8em;&lt;br /&gt;
    list-style: none;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a {&lt;br /&gt;
    text-decoration: none !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a span {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 0.7em 1.3em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 6px;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    font-size: 1.05em;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpill-item a:hover span {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    color: #000814 !important;&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-2px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills {&lt;br /&gt;
        flex-direction: column;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item {&lt;br /&gt;
        width: 100%;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    .navpill-item a span {&lt;br /&gt;
        display: block;&lt;br /&gt;
        text-align: center;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* ============ TABS ============ */&lt;br /&gt;
/* CSS-Only Tabs */&lt;br /&gt;
.wiki-tabs-container-css {&lt;br /&gt;
    margin: 2em 0;&lt;br /&gt;
    background: linear-gradient(180deg, #001D3D 0%, #000814 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    box-shadow: 0 4px 15px rgba(255, 195, 0, 0.2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Hide radio buttons */&lt;br /&gt;
.wiki-tab-radio {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Labels (Buttons) */&lt;br /&gt;
.wiki-tab-label {&lt;br /&gt;
    display: inline-block;&lt;br /&gt;
    padding: 1em 1.5em;&lt;br /&gt;
    background: #001D3D;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    border-right: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    font-size: 1.1em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    cursor: pointer;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    font-family: &#039;Palatino Linotype&#039;, &#039;Book Antiqua&#039;, Palatino, Georgia, serif;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    border-bottom: 2px solid #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.wiki-tab-label:hover {&lt;br /&gt;
    background: #003566;&lt;br /&gt;
    color: #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Active tab style */&lt;br /&gt;
.wiki-tab-radio:checked + .wiki-tab-label {&lt;br /&gt;
    background: #FFC300;&lt;br /&gt;
    color: #000814;&lt;br /&gt;
    border-bottom: 3px solid #FFD60A;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Tab Content */&lt;br /&gt;
.wiki-tab-content {&lt;br /&gt;
    display: none;&lt;br /&gt;
    padding: 2em;&lt;br /&gt;
    color: #FFFFFF;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Show content when tab is checked */&lt;br /&gt;
.wiki-tab-radio:checked ~ .wiki-tab-content {&lt;br /&gt;
    display: block;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Mobile Responsive */&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .wiki-tab-label {&lt;br /&gt;
        display: block;&lt;br /&gt;
        width: 100%;&lt;br /&gt;
        border-right: none;&lt;br /&gt;
        border-bottom: 1px solid rgba(255, 195, 0, 0.3);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   STICKY HEADER FIX - Keep blue background when scrolling&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Sticky header container */&lt;br /&gt;
.vector-sticky-header,&lt;br /&gt;
.vector-sticky-header-container {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
    border-bottom: 2px solid #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header elements */&lt;br /&gt;
.vector-sticky-header-start,&lt;br /&gt;
.vector-sticky-header-end,&lt;br /&gt;
.vector-sticky-header-context-bar {&lt;br /&gt;
    background: #000814 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Page title in sticky header */&lt;br /&gt;
.vector-sticky-header-context-bar-primary,&lt;br /&gt;
.vector-sticky-header .mw-page-title-main {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header buttons and icons */&lt;br /&gt;
.vector-sticky-header button,&lt;br /&gt;
.vector-sticky-header .vector-icon {&lt;br /&gt;
    filter: brightness(0) saturate(100%) invert(85%) sepia(67%) saturate(1000%) hue-rotate(0deg) brightness(103%) contrast(101%) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Sticky header links */&lt;br /&gt;
.vector-sticky-header a {&lt;br /&gt;
    color: #FFC300 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race table text override */&lt;br /&gt;
.racebox td {&lt;br /&gt;
  color: black !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.racebox th {&lt;br /&gt;
  color: white !important; /* keeps your header colors */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Equal-width navpills grid */&lt;br /&gt;
.navpills-equal-grid .navpills {&lt;br /&gt;
    display: grid !important;&lt;br /&gt;
    grid-template-columns: repeat(3, 1fr) !important;&lt;br /&gt;
    gap: 1em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item {&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navpills-equal-grid .navpill-item a span {&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    width: 100% !important;&lt;br /&gt;
    text-align: center !important;&lt;br /&gt;
    padding: 0.5em !important;&lt;br /&gt;
    box-sizing: border-box !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (max-width: 768px) {&lt;br /&gt;
    .navpills-equal-grid .navpills {&lt;br /&gt;
        grid-template-columns: 1fr !important;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Race card buttons with hover animation */&lt;br /&gt;
.race-card {&lt;br /&gt;
    display: block;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
    padding: 1.5em 1em;&lt;br /&gt;
    background: linear-gradient(135deg, #003566 0%, #001D3D 100%);&lt;br /&gt;
    border: 2px solid #FFC300;&lt;br /&gt;
    border-radius: 8px;&lt;br /&gt;
    transition: all 0.3s ease;&lt;br /&gt;
    box-shadow: 0 2px 8px rgba(255, 195, 0, 0.2);&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover {&lt;br /&gt;
    background: linear-gradient(135deg, #FFC300 0%, #FFD60A 100%);&lt;br /&gt;
    border-color: #FFD60A;&lt;br /&gt;
    box-shadow: 0 4px 12px rgba(255, 195, 0, 0.4);&lt;br /&gt;
    transform: translateY(-4px);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card img {&lt;br /&gt;
    display: block;&lt;br /&gt;
    margin: 0 auto;&lt;br /&gt;
    transition: transform 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover img {&lt;br /&gt;
    transform: scale(1.05);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card-name {&lt;br /&gt;
    margin-top: 0.8em;&lt;br /&gt;
    font-size: 1.2em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    color: #FFC300;&lt;br /&gt;
    transition: color 0.3s ease;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.race-card:hover .race-card-name {&lt;br /&gt;
    color: #000814;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* =========================================================&lt;br /&gt;
   Sticky header: center ONLY the time widgets (safe flex method)&lt;br /&gt;
   Works with the CLEAN JS (header-widget classes)&lt;br /&gt;
   ========================================================= */&lt;br /&gt;
&lt;br /&gt;
/* Keep the icons row as a flex line */&lt;br /&gt;
.vector-sticky-header-icons {&lt;br /&gt;
  display: flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 10px !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Center container (inserted by JS) */&lt;br /&gt;
#sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
  margin: 0 auto !important;           /* centers the widget group */&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 14px !important;               /* spacing between widgets */&lt;br /&gt;
  white-space: nowrap !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Each widget pill */&lt;br /&gt;
#sticky-time-widgets .header-widget {&lt;br /&gt;
  display: inline-flex !important;&lt;br /&gt;
  align-items: center !important;&lt;br /&gt;
  gap: 6px !important;&lt;br /&gt;
  padding: 6px 10px !important;&lt;br /&gt;
  border: 1px solid #FFC300 !important;&lt;br /&gt;
  border-radius: 999px !important;&lt;br /&gt;
  background: linear-gradient(135deg, #003566 0%, #001D3D 100%) !important;&lt;br /&gt;
  box-shadow: 0 2px 8px rgba(255, 195, 0, 0.18) !important;&lt;br /&gt;
  line-height: 1 !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Labels + values */&lt;br /&gt;
#sticky-time-widgets .header-widget__label {&lt;br /&gt;
  color: #FFC300 !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#sticky-time-widgets .header-widget__value {&lt;br /&gt;
  color: #FFFFFF !important;&lt;br /&gt;
  font-weight: 700 !important;&lt;br /&gt;
  font-variant-numeric: tabular-nums; /* keeps timer width stable */&lt;br /&gt;
  font-size: 0.95em !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If the header gets cramped, hide labels first */&lt;br /&gt;
@media (max-width: 1100px) {&lt;br /&gt;
  #sticky-time-widgets .header-widget__label {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* If it gets REALLY cramped, hide the whole widget group */&lt;br /&gt;
@media (max-width: 860px) {&lt;br /&gt;
  #sticky-time-widgets.sticky-time-widgets {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Politics&amp;diff=899</id>
		<title>Politics</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Politics&amp;diff=899"/>
		<updated>2026-02-19T16:11:20Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* The Steward */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;King&#039;&#039;&#039; or &#039;&#039;&#039;Queen&#039;&#039;&#039; of a kingdom is its official representative within the larger world. Being the &#039;&#039;&#039;Monarch&#039;&#039;&#039; of a kingdom is quite a responsibility, and kingdoms should work to elect an experienced and capable leader. Selecting a Monarch is a simple process of voting - it is essential that all provinces participate and make their voice heard. The quality and actions of your Monarch will impact your experience and enjoyment in Utopia, and it is important to elect someone with strong communication and diplomatic skills.&lt;br /&gt;
&lt;br /&gt;
A strongly united kingdom is vital to your long-term success on Utopia. Deciding on -- and listening to -- your King or Queen is an important first step, and your vote is important. Remember that a good King or Queen is not necessarily the best or most active player in your Kingdom -- it is the one with the best diplomatic ability and the one most willing to put the kingdom&#039;s goals ahead of his or her own. Take advantage of the Public Forum to discuss the vital issues of your Kingdom&#039;s future with your fellow provinces and vote for a King or Queen to lead your kingdom to glory.&lt;br /&gt;
&lt;br /&gt;
The politics page allows you to vote for a King or Queen, and displays the following:&lt;br /&gt;
	&lt;br /&gt;
* The kingdom&#039;s current Monarch&lt;br /&gt;
* Minimum Votes Needed to be Elected&lt;br /&gt;
* Political Standings of your kingdom, i.e who has voted and how many votes they have&lt;br /&gt;
&lt;br /&gt;
=== Monarchy: Getting Elected ===&lt;br /&gt;
&lt;br /&gt;
If you wish to become the Monarch of your kingdom, there are a few different ways to achieve your goal. &lt;br /&gt;
&lt;br /&gt;
First, you may be voted in by your fellow provinces. In order to be elected, you must maintain over fifty percent of the votes of other leaders, and if there are more than six provinces in the kingdom you must also clear lead of at least 2 votes than the runner up. If you are not popular, this will likely not happen. Thus, diplomacy is absolutely essential. Treat others with respect, maximize their value and importance in the kingdom. These are not only ways to earn the Monarchy, but also ideal ways to lead your kingdom to glory.&lt;br /&gt;
&lt;br /&gt;
Each province in your kingdom begins with one vote. However, you can obtain additional votes and strengthen your standing through [[Honour|Nobility]]. By Utopian Law, every province is guaranteed a minimum of one vote and no more than 10 votes.&lt;br /&gt;
&lt;br /&gt;
The second way to gain monarchy is to seize control of it - that is, if you have more than 50% of the total networth in the kingdom and there are at least two other provinces - your vote is all that matters. Whoever you choose to be Monarch will be elected. Unfortunately, to do this, you may have to attack your fellow kingdom provinces, weakening your kingdom&#039;s stature throughout the world. Most often, this is a strategy for failure, as you will find it difficult to lead those who do not wish to be led, but the option is yours.&lt;br /&gt;
&lt;br /&gt;
=== Monarchy: The Monarch&#039;s responsibilities and duties ===&lt;br /&gt;
&lt;br /&gt;
A Monarch must be committed to ruling with a fair hand. Seek input from your provinces, or you may quickly find yourself out of office. Each kingdom must find a Monarch to grow, but more importantly, they must find a fair and noble Monarch to lead them to glory.&lt;br /&gt;
&lt;br /&gt;
It will also be your responsibility to maintain the Kingdom Council Forums, to keep them clean, and to make them a useful service to the various rulers across your kingdom. You will represent your kingdom to the world, and your actions will reflect on the provinces you represent. Diplomacy and tact will be vital to any kind of long-term successes. As Monarch, it is your duty to maintain relations with other kingdoms and organize projects such as the nurturing of a Dragon.&lt;br /&gt;
&lt;br /&gt;
=== The Steward ===&lt;br /&gt;
A monarch can nominate two other players to the position of Royal Steward. These players can conduct many of the duties performed by the Monarch such as:&lt;br /&gt;
&lt;br /&gt;
*Changing stances&lt;br /&gt;
*Declaring war&lt;br /&gt;
*Conducting Ceasefires&lt;br /&gt;
*Editing the Royal Commands&lt;br /&gt;
*Managing the kingdom forums&lt;br /&gt;
*Starting/Cancelling a dragon&lt;br /&gt;
*Sending a dragon&lt;br /&gt;
&lt;br /&gt;
NOTE: If the monarch has another player set to mentor or sit them, they WILL be able to perform these functions.&lt;br /&gt;
&lt;br /&gt;
=== Inactive Provinces ===&lt;br /&gt;
As the Monarch you have the power to destroy inactive provinces just as you could invite another leader to take over! &lt;br /&gt;
&lt;br /&gt;
* Prerequisites &lt;br /&gt;
** First, 48 Ticks must pass from their last logoff and they will be labeled as inactive&lt;br /&gt;
** Second, 48 Ticks must pass for Monarch to be able to force delete/abandon of the province&lt;br /&gt;
*** wol tick = 1 hour&lt;br /&gt;
*** abandon will force the inactive leader out&lt;br /&gt;
*** delete will destroy the province completely&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
	<entry>
		<id>https://utopiawiki.com/index.php?title=Politics&amp;diff=898</id>
		<title>Politics</title>
		<link rel="alternate" type="text/html" href="https://utopiawiki.com/index.php?title=Politics&amp;diff=898"/>
		<updated>2026-02-19T16:10:45Z</updated>

		<summary type="html">&lt;p&gt;Sonja says: /* The Steward */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Overview ===&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;King&#039;&#039;&#039; or &#039;&#039;&#039;Queen&#039;&#039;&#039; of a kingdom is its official representative within the larger world. Being the &#039;&#039;&#039;Monarch&#039;&#039;&#039; of a kingdom is quite a responsibility, and kingdoms should work to elect an experienced and capable leader. Selecting a Monarch is a simple process of voting - it is essential that all provinces participate and make their voice heard. The quality and actions of your Monarch will impact your experience and enjoyment in Utopia, and it is important to elect someone with strong communication and diplomatic skills.&lt;br /&gt;
&lt;br /&gt;
A strongly united kingdom is vital to your long-term success on Utopia. Deciding on -- and listening to -- your King or Queen is an important first step, and your vote is important. Remember that a good King or Queen is not necessarily the best or most active player in your Kingdom -- it is the one with the best diplomatic ability and the one most willing to put the kingdom&#039;s goals ahead of his or her own. Take advantage of the Public Forum to discuss the vital issues of your Kingdom&#039;s future with your fellow provinces and vote for a King or Queen to lead your kingdom to glory.&lt;br /&gt;
&lt;br /&gt;
The politics page allows you to vote for a King or Queen, and displays the following:&lt;br /&gt;
	&lt;br /&gt;
* The kingdom&#039;s current Monarch&lt;br /&gt;
* Minimum Votes Needed to be Elected&lt;br /&gt;
* Political Standings of your kingdom, i.e who has voted and how many votes they have&lt;br /&gt;
&lt;br /&gt;
=== Monarchy: Getting Elected ===&lt;br /&gt;
&lt;br /&gt;
If you wish to become the Monarch of your kingdom, there are a few different ways to achieve your goal. &lt;br /&gt;
&lt;br /&gt;
First, you may be voted in by your fellow provinces. In order to be elected, you must maintain over fifty percent of the votes of other leaders, and if there are more than six provinces in the kingdom you must also clear lead of at least 2 votes than the runner up. If you are not popular, this will likely not happen. Thus, diplomacy is absolutely essential. Treat others with respect, maximize their value and importance in the kingdom. These are not only ways to earn the Monarchy, but also ideal ways to lead your kingdom to glory.&lt;br /&gt;
&lt;br /&gt;
Each province in your kingdom begins with one vote. However, you can obtain additional votes and strengthen your standing through [[Honour|Nobility]]. By Utopian Law, every province is guaranteed a minimum of one vote and no more than 10 votes.&lt;br /&gt;
&lt;br /&gt;
The second way to gain monarchy is to seize control of it - that is, if you have more than 50% of the total networth in the kingdom and there are at least two other provinces - your vote is all that matters. Whoever you choose to be Monarch will be elected. Unfortunately, to do this, you may have to attack your fellow kingdom provinces, weakening your kingdom&#039;s stature throughout the world. Most often, this is a strategy for failure, as you will find it difficult to lead those who do not wish to be led, but the option is yours.&lt;br /&gt;
&lt;br /&gt;
=== Monarchy: The Monarch&#039;s responsibilities and duties ===&lt;br /&gt;
&lt;br /&gt;
A Monarch must be committed to ruling with a fair hand. Seek input from your provinces, or you may quickly find yourself out of office. Each kingdom must find a Monarch to grow, but more importantly, they must find a fair and noble Monarch to lead them to glory.&lt;br /&gt;
&lt;br /&gt;
It will also be your responsibility to maintain the Kingdom Council Forums, to keep them clean, and to make them a useful service to the various rulers across your kingdom. You will represent your kingdom to the world, and your actions will reflect on the provinces you represent. Diplomacy and tact will be vital to any kind of long-term successes. As Monarch, it is your duty to maintain relations with other kingdoms and organize projects such as the nurturing of a Dragon.&lt;br /&gt;
&lt;br /&gt;
=== The Steward ===&lt;br /&gt;
A monarch can nominate two other players to the position of Royal Steward. These players can conduct many of the duties performed by the Monarch such as:&lt;br /&gt;
&lt;br /&gt;
-Changing stances&lt;br /&gt;
-Declaring war&lt;br /&gt;
-Conducting Ceasefires&lt;br /&gt;
-Editing the Royal Commands&lt;br /&gt;
-Managing the kingdom forums&lt;br /&gt;
-Starting/Cancelling a dragon&lt;br /&gt;
-Sending a dragon&lt;br /&gt;
&lt;br /&gt;
NOTE: If the monarch has another player set to mentor or sit them, they WILL be able to perform these functions.&lt;br /&gt;
&lt;br /&gt;
=== Inactive Provinces ===&lt;br /&gt;
As the Monarch you have the power to destroy inactive provinces just as you could invite another leader to take over! &lt;br /&gt;
&lt;br /&gt;
* Prerequisites &lt;br /&gt;
** First, 48 Ticks must pass from their last logoff and they will be labeled as inactive&lt;br /&gt;
** Second, 48 Ticks must pass for Monarch to be able to force delete/abandon of the province&lt;br /&gt;
*** wol tick = 1 hour&lt;br /&gt;
*** abandon will force the inactive leader out&lt;br /&gt;
*** delete will destroy the province completely&lt;/div&gt;</summary>
		<author><name>Sonja says</name></author>
	</entry>
</feed>