<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>HADES  - Recent changes [en]</title>
		<link>https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.45.3</generator>
		<lastBuildDate>Fri, 17 Apr 2026 09:38:19 GMT</lastBuildDate>
		<item>
			<title>MediaWiki:Common.js</title>
			<link>https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php?title=MediaWiki:Common.js&amp;diff=3&amp;oldid=0</link>
			<guid isPermaLink="false">https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php?title=MediaWiki:Common.js&amp;diff=3&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;================================================================    H A D E S  —  MediaWiki Common.js    Ambient: dripping candles, crimson wires, roses, flame glow    ================================================================: &lt;/span&gt;  ( function () {   &amp;#039;use strict&amp;#039;;    &lt;span class=&quot;autocomment&quot;&gt;── SVG ELEMENTS ────────────────────────────────────────────: &lt;/span&gt;    var SVGS = {      // Tall candle wit...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* ================================================================&lt;br /&gt;
   H A D E S  —  MediaWiki Common.js&lt;br /&gt;
   Ambient: dripping candles, crimson wires, roses, flame glow&lt;br /&gt;
   ================================================================ */&lt;br /&gt;
&lt;br /&gt;
( function () {&lt;br /&gt;
  &amp;#039;use strict&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
  /* ── SVG ELEMENTS ──────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  var SVGS = {&lt;br /&gt;
&lt;br /&gt;
    // Tall candle with dripping wax and animated flame&lt;br /&gt;
    candle_tall: function ( id, glowColor ) {&lt;br /&gt;
      glowColor = glowColor || &amp;#039;#f5a020&amp;#039;;&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 40 140&amp;quot; class=&amp;quot;h-candle-el&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;defs&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;radialGradient id=&amp;quot;cg&amp;#039; + id + &amp;#039;&amp;quot; cx=&amp;quot;50%&amp;quot; cy=&amp;quot;80%&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
              &amp;#039;&amp;lt;stop offset=&amp;quot;0%&amp;quot; stop-color=&amp;quot;&amp;#039; + glowColor + &amp;#039;&amp;quot; stop-opacity=&amp;quot;0.4&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
              &amp;#039;&amp;lt;stop offset=&amp;quot;100%&amp;quot; stop-color=&amp;quot;&amp;#039; + glowColor + &amp;#039;&amp;quot; stop-opacity=&amp;quot;0&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;/radialGradient&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;/defs&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- glow pool --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;20&amp;quot; cy=&amp;quot;128&amp;quot; rx=&amp;quot;18&amp;quot; ry=&amp;quot;8&amp;quot; fill=&amp;quot;url(#cg&amp;#039; + id + &amp;#039;)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- candle body --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;rect x=&amp;quot;13&amp;quot; y=&amp;quot;60&amp;quot; width=&amp;quot;14&amp;quot; height=&amp;quot;68&amp;quot; rx=&amp;quot;2&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;#fdf0d0&amp;quot; stroke=&amp;quot;#e0c890&amp;quot; stroke-width=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- wax left drip --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M14,75 Q12,85 13,98 Q14,104 15,108&amp;quot; stroke=&amp;quot;#f5e8c0&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; stroke-width=&amp;quot;4&amp;quot; fill=&amp;quot;none&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; opacity=&amp;quot;0.7&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- wax right drip --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M26,82 Q28,93 27,106 Q26.5,110 26,115&amp;quot; stroke=&amp;quot;#f5e8c0&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; stroke-width=&amp;quot;3.5&amp;quot; fill=&amp;quot;none&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; opacity=&amp;quot;0.6&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- wick --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;line x1=&amp;quot;20&amp;quot; y1=&amp;quot;60&amp;quot; x2=&amp;quot;20&amp;quot; y2=&amp;quot;52&amp;quot; stroke=&amp;quot;#3a2010&amp;quot; stroke-width=&amp;quot;1.2&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- flame outer (animated sway) --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;g class=&amp;quot;h-candle-flame&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;ellipse cx=&amp;quot;20&amp;quot; cy=&amp;quot;42&amp;quot; rx=&amp;quot;7&amp;quot; ry=&amp;quot;11&amp;quot; fill=&amp;quot;&amp;#039; + glowColor + &amp;#039;&amp;quot; opacity=&amp;quot;0.85&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;ellipse cx=&amp;quot;20&amp;quot; cy=&amp;quot;44&amp;quot; rx=&amp;quot;4.5&amp;quot; ry=&amp;quot;8&amp;quot; fill=&amp;quot;#ffdb60&amp;quot; opacity=&amp;quot;0.9&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;ellipse cx=&amp;quot;20&amp;quot; cy=&amp;quot;47&amp;quot; rx=&amp;quot;2.5&amp;quot; ry=&amp;quot;5&amp;quot; fill=&amp;quot;#fff5c0&amp;quot; opacity=&amp;quot;0.95&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;/g&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Short squat candle&lt;br /&gt;
    candle_short: function ( id ) {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 30 80&amp;quot; class=&amp;quot;h-candle-el&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;defs&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;radialGradient id=&amp;quot;cgs&amp;#039; + id + &amp;#039;&amp;quot; cx=&amp;quot;50%&amp;quot; cy=&amp;quot;80%&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
              &amp;#039;&amp;lt;stop offset=&amp;quot;0%&amp;quot; stop-color=&amp;quot;#f5a020&amp;quot; stop-opacity=&amp;quot;0.3&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
              &amp;#039;&amp;lt;stop offset=&amp;quot;100%&amp;quot; stop-color=&amp;quot;#f5a020&amp;quot; stop-opacity=&amp;quot;0&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;/radialGradient&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;/defs&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;15&amp;quot; cy=&amp;quot;74&amp;quot; rx=&amp;quot;13&amp;quot; ry=&amp;quot;5&amp;quot; fill=&amp;quot;url(#cgs&amp;#039; + id + &amp;#039;)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;rect x=&amp;quot;8&amp;quot; y=&amp;quot;38&amp;quot; width=&amp;quot;14&amp;quot; height=&amp;quot;36&amp;quot; rx=&amp;quot;1.5&amp;quot; fill=&amp;quot;#fdf0d0&amp;quot; stroke=&amp;quot;#e0c890&amp;quot; stroke-width=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- pooled wax at base --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;15&amp;quot; cy=&amp;quot;74&amp;quot; rx=&amp;quot;12&amp;quot; ry=&amp;quot;3&amp;quot; fill=&amp;quot;#f8f0d8&amp;quot; opacity=&amp;quot;0.6&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- drips --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M9,48 Q7,56 8,66&amp;quot; stroke=&amp;quot;#f5e8c0&amp;quot; stroke-width=&amp;quot;3&amp;quot; fill=&amp;quot;none&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; opacity=&amp;quot;0.65&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M22,52 Q24,60 23,70&amp;quot; stroke=&amp;quot;#f5e8c0&amp;quot; stroke-width=&amp;quot;2.5&amp;quot; fill=&amp;quot;none&amp;quot; stroke-linecap=&amp;quot;round&amp;quot; opacity=&amp;quot;0.55&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;line x1=&amp;quot;15&amp;quot; y1=&amp;quot;38&amp;quot; x2=&amp;quot;15&amp;quot; y2=&amp;quot;32&amp;quot; stroke=&amp;quot;#3a2010&amp;quot; stroke-width=&amp;quot;1&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;g class=&amp;quot;h-candle-flame&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;ellipse cx=&amp;quot;15&amp;quot; cy=&amp;quot;25&amp;quot; rx=&amp;quot;5.5&amp;quot; ry=&amp;quot;9&amp;quot; fill=&amp;quot;#f5a020&amp;quot; opacity=&amp;quot;0.85&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;ellipse cx=&amp;quot;15&amp;quot; cy=&amp;quot;27&amp;quot; rx=&amp;quot;3.5&amp;quot; ry=&amp;quot;6.5&amp;quot; fill=&amp;quot;#ffdb60&amp;quot; opacity=&amp;quot;0.9&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
            &amp;#039;&amp;lt;ellipse cx=&amp;quot;15&amp;quot; cy=&amp;quot;29&amp;quot; rx=&amp;quot;2&amp;quot; ry=&amp;quot;4&amp;quot; fill=&amp;quot;#fff5c0&amp;quot; opacity=&amp;quot;0.95&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;/g&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Crimson wire / tendril&lt;br /&gt;
    wire: function ( id, w, h, color ) {&lt;br /&gt;
      color = color || &amp;#039;#8b1515&amp;#039;;&lt;br /&gt;
      var path = &amp;#039;M&amp;#039; + Math.floor( w * 0.1 ) + &amp;#039;,0 &amp;#039;&lt;br /&gt;
        + &amp;#039;C&amp;#039; + Math.floor( w * 0.3 ) + &amp;#039;,&amp;#039; + Math.floor( h * 0.2 ) + &amp;#039; &amp;#039;&lt;br /&gt;
        + Math.floor( w * 0.6 ) + &amp;#039;,&amp;#039; + Math.floor( h * 0.4 ) + &amp;#039; &amp;#039;&lt;br /&gt;
        + Math.floor( w * 0.7 ) + &amp;#039;,&amp;#039; + Math.floor( h * 0.6 ) + &amp;#039; &amp;#039;&lt;br /&gt;
        + &amp;#039;S&amp;#039; + Math.floor( w * 0.9 ) + &amp;#039;,&amp;#039; + Math.floor( h * 0.85 ) + &amp;#039; &amp;#039;&lt;br /&gt;
        + w + &amp;#039;,&amp;#039; + h;&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 &amp;#039; + w + &amp;#039; &amp;#039; + h + &amp;#039;&amp;quot;&amp;#039;,&lt;br /&gt;
        &amp;#039; class=&amp;quot;h-wire&amp;quot; width=&amp;quot;&amp;#039; + w + &amp;#039;&amp;quot; height=&amp;quot;&amp;#039; + h + &amp;#039;&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;&amp;#039; + path + &amp;#039;&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;&amp;#039; + color + &amp;#039;&amp;quot; stroke-width=&amp;quot;2&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; stroke-dasharray=&amp;quot;6,4&amp;quot; stroke-linecap=&amp;quot;round&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- secondary curl --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M&amp;#039; + Math.floor( w * 0.3 ) + &amp;#039;,&amp;#039; + Math.floor( h * 0.1 ) + &amp;#039; &amp;#039;,&lt;br /&gt;
            &amp;#039;Q&amp;#039; + Math.floor( w * 0.5 ) + &amp;#039;,&amp;#039; + Math.floor( h * 0.5 ) + &amp;#039; &amp;#039;,&lt;br /&gt;
            Math.floor( w * 0.4 ) + &amp;#039;,&amp;#039; + h + &amp;#039;&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;&amp;#039; + color + &amp;#039;&amp;quot; stroke-width=&amp;quot;1.2&amp;quot; opacity=&amp;quot;0.5&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; stroke-dasharray=&amp;quot;4,6&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Dried rose silhouette&lt;br /&gt;
    rose: function () {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 80 120&amp;quot; class=&amp;quot;h-rose&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- stem --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M40,120 Q38,90 40,70&amp;quot; stroke=&amp;quot;#3a2a10&amp;quot; stroke-width=&amp;quot;2&amp;quot; fill=&amp;quot;none&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- thorns --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M39,100 L32,96 M39,88 L46,84&amp;quot; stroke=&amp;quot;#3a2a10&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; fill=&amp;quot;none&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- leaves --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;32&amp;quot; cy=&amp;quot;95&amp;quot; rx=&amp;quot;10&amp;quot; ry=&amp;quot;5&amp;quot; fill=&amp;quot;#4a3a18&amp;quot; opacity=&amp;quot;0.6&amp;quot; transform=&amp;quot;rotate(-30,32,95)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;48&amp;quot; cy=&amp;quot;82&amp;quot; rx=&amp;quot;10&amp;quot; ry=&amp;quot;5&amp;quot; fill=&amp;quot;#4a3a18&amp;quot; opacity=&amp;quot;0.6&amp;quot; transform=&amp;quot;rotate(30,48,82)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- petals - outer ring --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; rx=&amp;quot;14&amp;quot; ry=&amp;quot;22&amp;quot; fill=&amp;quot;#6a2020&amp;quot; opacity=&amp;quot;0.7&amp;quot; transform=&amp;quot;rotate(0,40,48)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; rx=&amp;quot;14&amp;quot; ry=&amp;quot;22&amp;quot; fill=&amp;quot;#6a2020&amp;quot; opacity=&amp;quot;0.6&amp;quot; transform=&amp;quot;rotate(60,40,48)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; rx=&amp;quot;14&amp;quot; ry=&amp;quot;22&amp;quot; fill=&amp;quot;#6a2020&amp;quot; opacity=&amp;quot;0.6&amp;quot; transform=&amp;quot;rotate(120,40,48)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- petals - inner ring --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; rx=&amp;quot;10&amp;quot; ry=&amp;quot;16&amp;quot; fill=&amp;quot;#8b2828&amp;quot; opacity=&amp;quot;0.75&amp;quot; transform=&amp;quot;rotate(30,40,48)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; rx=&amp;quot;10&amp;quot; ry=&amp;quot;16&amp;quot; fill=&amp;quot;#8b2828&amp;quot; opacity=&amp;quot;0.75&amp;quot; transform=&amp;quot;rotate(90,40,48)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; rx=&amp;quot;10&amp;quot; ry=&amp;quot;16&amp;quot; fill=&amp;quot;#8b2828&amp;quot; opacity=&amp;quot;0.75&amp;quot; transform=&amp;quot;rotate(150,40,48)&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- center --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; r=&amp;quot;8&amp;quot; fill=&amp;quot;#4a1010&amp;quot; opacity=&amp;quot;0.9&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;40&amp;quot; cy=&amp;quot;48&amp;quot; r=&amp;quot;4&amp;quot; fill=&amp;quot;#6a2828&amp;quot; opacity=&amp;quot;0.8&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Candle wax pool (flat puddle)&lt;br /&gt;
    waxPool: function ( id ) {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 60 20&amp;quot; class=&amp;quot;h-rose&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;30&amp;quot; cy=&amp;quot;12&amp;quot; rx=&amp;quot;28&amp;quot; ry=&amp;quot;8&amp;quot; fill=&amp;quot;#f8f0d8&amp;quot; opacity=&amp;quot;0.6&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;30&amp;quot; cy=&amp;quot;10&amp;quot; rx=&amp;quot;20&amp;quot; ry=&amp;quot;5&amp;quot; fill=&amp;quot;#fdf5e0&amp;quot; opacity=&amp;quot;0.4&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Gothic arch ornament&lt;br /&gt;
    archOrnament: function () {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 120 80&amp;quot; class=&amp;quot;h-rose&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M10,80 L10,40 Q10,10 60,5 Q110,10 110,40 L110,80&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#8b5530&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; opacity=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M25,80 L25,45 Q25,25 60,20 Q95,25 95,45 L95,80&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#c4922a&amp;quot; stroke-width=&amp;quot;1&amp;quot; opacity=&amp;quot;0.3&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- finial --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;60&amp;quot; cy=&amp;quot;4&amp;quot; r=&amp;quot;5&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#8b5530&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; opacity=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;line x1=&amp;quot;60&amp;quot; y1=&amp;quot;-4&amp;quot; x2=&amp;quot;60&amp;quot; y2=&amp;quot;9&amp;quot; stroke=&amp;quot;#8b5530&amp;quot; stroke-width=&amp;quot;1&amp;quot; opacity=&amp;quot;0.4&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Sacred heart (album motif)&lt;br /&gt;
    sacredHeart: function () {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 80 90&amp;quot; class=&amp;quot;h-rose&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- heart body --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M40,75 Q10,55 10,35 Q10,18 25,18 Q33,18 40,28 Q47,18 55,18 Q70,18 70,35 Q70,55 40,75Z&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;#7a1515&amp;quot; opacity=&amp;quot;0.8&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- cross on top --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;line x1=&amp;quot;40&amp;quot; y1=&amp;quot;5&amp;quot; x2=&amp;quot;40&amp;quot; y2=&amp;quot;22&amp;quot; stroke=&amp;quot;#c4922a&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;line x1=&amp;quot;33&amp;quot; y1=&amp;quot;12&amp;quot; x2=&amp;quot;47&amp;quot; y2=&amp;quot;12&amp;quot; stroke=&amp;quot;#c4922a&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- thorns wrapped around heart --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M15,38 Q5,30 12,22 Q18,14 25,20&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#3a2010&amp;quot; stroke-width=&amp;quot;1.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M65,38 Q75,30 68,22 Q62,14 55,20&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#3a2010&amp;quot; stroke-width=&amp;quot;1.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- flame on heart --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;18&amp;quot; rx=&amp;quot;5&amp;quot; ry=&amp;quot;8&amp;quot; fill=&amp;quot;#f5a020&amp;quot; opacity=&amp;quot;0.7&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;ellipse cx=&amp;quot;40&amp;quot; cy=&amp;quot;20&amp;quot; rx=&amp;quot;3&amp;quot; ry=&amp;quot;5&amp;quot; fill=&amp;quot;#fff5c0&amp;quot; opacity=&amp;quot;0.8&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Crown silhouette (worn by figure in cover)&lt;br /&gt;
    crown: function () {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 100 60&amp;quot; class=&amp;quot;h-rose&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M5,55 L5,25 L25,5 L50,30 L75,5 L95,25 L95,55 Z&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#c4922a&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; opacity=&amp;quot;0.6&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; stroke-linejoin=&amp;quot;round&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- jewels --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;25&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; fill=&amp;quot;#c4922a&amp;quot; opacity=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;50&amp;quot; cy=&amp;quot;30&amp;quot; r=&amp;quot;5&amp;quot; fill=&amp;quot;#8878b8&amp;quot; opacity=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;75&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;4&amp;quot; fill=&amp;quot;#c4922a&amp;quot; opacity=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;circle cx=&amp;quot;50&amp;quot; cy=&amp;quot;5&amp;quot; r=&amp;quot;3&amp;quot; fill=&amp;quot;#fdf0d0&amp;quot; opacity=&amp;quot;0.4&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    // Mirror / oval frame&lt;br /&gt;
    mirrorFrame: function () {&lt;br /&gt;
      return [&lt;br /&gt;
        &amp;#039;&amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; viewBox=&amp;quot;0 0 100 140&amp;quot; class=&amp;quot;h-rose&amp;quot;&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- outer frame --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M50,5 Q90,5 90,50 L90,100 Q90,135 50,135 Q10,135 10,100 L10,50 Q10,5 50,5Z&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#8b5530&amp;quot; stroke-width=&amp;quot;3&amp;quot; opacity=&amp;quot;0.5&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- inner --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M50,15 Q80,15 80,50 L80,100 Q80,125 50,125 Q20,125 20,100 L20,50 Q20,15 50,15Z&amp;quot;&amp;#039;,&lt;br /&gt;
          &amp;#039; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#c4922a&amp;quot; stroke-width=&amp;quot;1&amp;quot; opacity=&amp;quot;0.3&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- gothic arch top --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;path d=&amp;quot;M30,5 Q50,-8 70,5&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#c4922a&amp;quot; stroke-width=&amp;quot;2&amp;quot; opacity=&amp;quot;0.4&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- finial --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;polygon points=&amp;quot;50,-5 53,8 47,8&amp;quot; fill=&amp;quot;#c4922a&amp;quot; opacity=&amp;quot;0.45&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;!-- base --&amp;gt;&amp;#039;,&lt;br /&gt;
          &amp;#039;&amp;lt;rect x=&amp;quot;35&amp;quot; y=&amp;quot;132&amp;quot; width=&amp;quot;30&amp;quot; height=&amp;quot;8&amp;quot; rx=&amp;quot;2&amp;quot; fill=&amp;quot;#8b5530&amp;quot; opacity=&amp;quot;0.4&amp;quot;/&amp;gt;&amp;#039;,&lt;br /&gt;
        &amp;#039;&amp;lt;/svg&amp;gt;&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;&amp;#039; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  /* ── HELPERS ────────────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function rand( a, b ) { return Math.random() * ( b - a ) + a; }&lt;br /&gt;
  function randInt( a, b ) { return Math.floor( rand( a, b + 1 ) ); }&lt;br /&gt;
&lt;br /&gt;
  function el( tag, styles, html ) {&lt;br /&gt;
    var d = document.createElement( tag || &amp;#039;div&amp;#039; );&lt;br /&gt;
    if ( styles ) { d.style.cssText = styles; }&lt;br /&gt;
    if ( html )   { d.innerHTML = html; }&lt;br /&gt;
    return d;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── AMBIENT CONTAINER ──────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function makeContainer() {&lt;br /&gt;
    var c = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
    c.id = &amp;#039;h-ambient&amp;#039;;&lt;br /&gt;
    c.className = &amp;#039;h-candles-container&amp;#039;;&lt;br /&gt;
    document.body.insertBefore( c, document.body.firstChild );&lt;br /&gt;
    return c;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── CANDLE POSITIONS ───────────────────────────────────────── */&lt;br /&gt;
  // Place candles along bottom edge and occasionally rising mid-page&lt;br /&gt;
  // They are FIXED position so they never push layout&lt;br /&gt;
&lt;br /&gt;
  var CANDLE_CONFIGS = [&lt;br /&gt;
    // Bottom row of candles (various heights)&lt;br /&gt;
    { type: &amp;#039;tall&amp;#039;,  left: 2,  scale: 1.2,  delay: 0 },&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 5,  scale: 0.9,  delay: 0.8 },&lt;br /&gt;
    { type: &amp;#039;tall&amp;#039;,  left: 8,  scale: 0.75, delay: 1.5 },&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 12, scale: 1.1,  delay: 2.2 },&lt;br /&gt;
    { type: &amp;#039;tall&amp;#039;,  left: 15, scale: 0.85, delay: 0.4 },&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 82, scale: 1.0,  delay: 1.1 },&lt;br /&gt;
    { type: &amp;#039;tall&amp;#039;,  left: 86, scale: 0.8,  delay: 1.8 },&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 89, scale: 1.15, delay: 0.6 },&lt;br /&gt;
    { type: &amp;#039;tall&amp;#039;,  left: 93, scale: 0.9,  delay: 2.5 },&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 96, scale: 1.3,  delay: 0.2 },&lt;br /&gt;
    // A few scattered mid positions&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 45, scale: 0.6,  delay: 3.0, top: 70 },&lt;br /&gt;
    { type: &amp;#039;short&amp;#039;, left: 55, scale: 0.55, delay: 2.0, top: 75 },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function spawnCandles( container ) {&lt;br /&gt;
    CANDLE_CONFIGS.forEach( function ( cfg, i ) {&lt;br /&gt;
      var svgStr = cfg.type === &amp;#039;tall&amp;#039;&lt;br /&gt;
        ? SVGS.candle_tall( i, ( i % 3 === 0 ) ? &amp;#039;#f5a020&amp;#039; : ( i % 3 === 1 ) ? &amp;#039;#d4820a&amp;#039; : &amp;#039;#ffcc60&amp;#039; )&lt;br /&gt;
        : SVGS.candle_short( i );&lt;br /&gt;
&lt;br /&gt;
      var baseH = cfg.type === &amp;#039;tall&amp;#039; ? 140 : 80;&lt;br /&gt;
      var h = baseH * cfg.scale;&lt;br /&gt;
      var hasTop = cfg.top != null;&lt;br /&gt;
&lt;br /&gt;
      var style = [&lt;br /&gt;
        &amp;#039;position:fixed&amp;#039;,&lt;br /&gt;
        &amp;#039;pointer-events:none&amp;#039;,&lt;br /&gt;
        &amp;#039;z-index:9982&amp;#039;,&lt;br /&gt;
        hasTop&lt;br /&gt;
          ? &amp;#039;top:&amp;#039; + cfg.top + &amp;#039;vh&amp;#039;&lt;br /&gt;
          : &amp;#039;bottom:0px&amp;#039;,&lt;br /&gt;
        &amp;#039;left:&amp;#039; + cfg.left + &amp;#039;vw&amp;#039;,&lt;br /&gt;
        &amp;#039;width:&amp;#039; + Math.round( ( cfg.type === &amp;#039;tall&amp;#039; ? 40 : 30 ) * cfg.scale ) + &amp;#039;px&amp;#039;,&lt;br /&gt;
        &amp;#039;height:&amp;#039; + Math.round( h ) + &amp;#039;px&amp;#039;,&lt;br /&gt;
        &amp;#039;animation-delay:&amp;#039; + cfg.delay + &amp;#039;s,&amp;#039; + ( cfg.delay * 0.7 ) + &amp;#039;s&amp;#039;,&lt;br /&gt;
        &amp;#039;filter:drop-shadow(0 0 12px rgba(245,160,32,&amp;#039; + ( 0.25 + Math.random() * 0.2 ) + &amp;#039;))&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
&lt;br /&gt;
      var wrapper = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
      wrapper.style.cssText = style;&lt;br /&gt;
      wrapper.innerHTML = svgStr;&lt;br /&gt;
&lt;br /&gt;
      // Per-candle flicker CSS animation&lt;br /&gt;
      wrapper.style.animation = &amp;#039;h-glow-pulse &amp;#039; + ( 2 + rand( 0, 3 ) ) + &amp;#039;s ease-in-out &amp;#039; + cfg.delay + &amp;#039;s infinite&amp;#039;;&lt;br /&gt;
      container.appendChild( wrapper );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── CRIMSON WIRES ──────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  var WIRE_CONFIGS = [&lt;br /&gt;
    { left: 0,   top: 20, w: 180, h: 300, color: &amp;#039;#9c2020&amp;#039;, rot: -10 },&lt;br /&gt;
    { left: -2,  top: 45, w: 140, h: 200, color: &amp;#039;#7a1515&amp;#039;, rot: 5 },&lt;br /&gt;
    { right: 0,  top: 30, w: 160, h: 280, color: &amp;#039;#8b1515&amp;#039;, rot: 15 },&lt;br /&gt;
    { right: -1, top: 55, w: 120, h: 180, color: &amp;#039;#a02020&amp;#039;, rot: -8 },&lt;br /&gt;
    { left: 20,  top: 10, w: 200, h: 120, color: &amp;#039;#7a1515&amp;#039;, rot: 20 },&lt;br /&gt;
    { right: 15, top: 15, w: 180, h: 140, color: &amp;#039;#9c2020&amp;#039;, rot: -25 },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function spawnWires( container ) {&lt;br /&gt;
    WIRE_CONFIGS.forEach( function ( cfg, i ) {&lt;br /&gt;
      var svgStr = SVGS.wire( i, cfg.w, cfg.h, cfg.color );&lt;br /&gt;
      var isRight = cfg.right != null;&lt;br /&gt;
      var style = [&lt;br /&gt;
        &amp;#039;position:fixed&amp;#039;,&lt;br /&gt;
        &amp;#039;pointer-events:none&amp;#039;,&lt;br /&gt;
        &amp;#039;z-index:9981&amp;#039;,&lt;br /&gt;
        &amp;#039;top:&amp;#039; + cfg.top + &amp;#039;vh&amp;#039;,&lt;br /&gt;
        isRight ? &amp;#039;right:&amp;#039; + cfg.right + &amp;#039;vw&amp;#039; : &amp;#039;left:&amp;#039; + cfg.left + &amp;#039;vw&amp;#039;,&lt;br /&gt;
        &amp;#039;transform:rotate(&amp;#039; + cfg.rot + &amp;#039;deg)&amp;#039;,&lt;br /&gt;
        &amp;#039;opacity:0.3&amp;#039;,&lt;br /&gt;
        &amp;#039;animation:h-float &amp;#039; + ( 8 + i * 1.5 ) + &amp;#039;s ease-in-out &amp;#039; + ( i * 0.5 ) + &amp;#039;s infinite&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
      var wrapper = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
      wrapper.style.cssText = style;&lt;br /&gt;
      wrapper.innerHTML = svgStr;&lt;br /&gt;
      container.appendChild( wrapper );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── ROSES ─────────────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  var ROSE_CONFIGS = [&lt;br /&gt;
    { left: 1,   bottom: 15, scale: 0.9, delay: 0 },&lt;br /&gt;
    { left: 18,  bottom: 12, scale: 0.7, delay: 2 },&lt;br /&gt;
    { right: 2,  bottom: 18, scale: 1.0, delay: 1 },&lt;br /&gt;
    { right: 18, bottom: 10, scale: 0.75, delay: 3 },&lt;br /&gt;
    { left: 35,  bottom: 5,  scale: 0.6, delay: 1.5 },&lt;br /&gt;
    { right: 35, bottom: 5,  scale: 0.65, delay: 0.5 },&lt;br /&gt;
  ];&lt;br /&gt;
&lt;br /&gt;
  function spawnRoses( container ) {&lt;br /&gt;
    ROSE_CONFIGS.forEach( function ( cfg, i ) {&lt;br /&gt;
      var style = [&lt;br /&gt;
        &amp;#039;position:fixed&amp;#039;,&lt;br /&gt;
        &amp;#039;pointer-events:none&amp;#039;,&lt;br /&gt;
        &amp;#039;z-index:9980&amp;#039;,&lt;br /&gt;
        cfg.bottom != null ? &amp;#039;bottom:&amp;#039; + cfg.bottom + &amp;#039;px&amp;#039; : &amp;#039;&amp;#039;,&lt;br /&gt;
        cfg.top    != null ? &amp;#039;top:&amp;#039;    + cfg.top    + &amp;#039;vh&amp;#039; : &amp;#039;&amp;#039;,&lt;br /&gt;
        cfg.right  != null ? &amp;#039;right:&amp;#039;  + cfg.right  + &amp;#039;vw&amp;#039; : &amp;#039;left:&amp;#039; + cfg.left + &amp;#039;vw&amp;#039;,&lt;br /&gt;
        &amp;#039;transform:scale(&amp;#039; + cfg.scale + &amp;#039;)&amp;#039;,&lt;br /&gt;
        &amp;#039;transform-origin:bottom center&amp;#039;,&lt;br /&gt;
        &amp;#039;filter:drop-shadow(0 0 6px rgba(122,21,21,0.25))&amp;#039;,&lt;br /&gt;
        &amp;#039;animation:h-float &amp;#039; + ( 10 + i ) + &amp;#039;s ease-in-out &amp;#039; + cfg.delay + &amp;#039;s infinite&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
      var wrapper = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
      wrapper.style.cssText = style;&lt;br /&gt;
      wrapper.innerHTML = SVGS.rose();&lt;br /&gt;
      container.appendChild( wrapper );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── ORNAMENTAL ELEMENTS ────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function spawnOrnaments( container ) {&lt;br /&gt;
    // Sacred heart — bottom centre&lt;br /&gt;
    var sh = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
    sh.style.cssText = [&lt;br /&gt;
      &amp;#039;position:fixed&amp;#039;, &amp;#039;pointer-events:none&amp;#039;, &amp;#039;z-index:9980&amp;#039;,&lt;br /&gt;
      &amp;#039;bottom:0&amp;#039;, &amp;#039;left:50%&amp;#039;, &amp;#039;transform:translateX(-50%)&amp;#039;,&lt;br /&gt;
      &amp;#039;opacity:0.18&amp;#039;,&lt;br /&gt;
      &amp;#039;animation:h-glow-pulse 5s ease-in-out infinite&amp;#039;&lt;br /&gt;
    ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
    sh.innerHTML = SVGS.sacredHeart();&lt;br /&gt;
    container.appendChild( sh );&lt;br /&gt;
&lt;br /&gt;
    // Crown — top-right&lt;br /&gt;
    var cr = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
    cr.style.cssText = [&lt;br /&gt;
      &amp;#039;position:fixed&amp;#039;, &amp;#039;pointer-events:none&amp;#039;, &amp;#039;z-index:9980&amp;#039;,&lt;br /&gt;
      &amp;#039;top:8vh&amp;#039;, &amp;#039;right:2vw&amp;#039;,&lt;br /&gt;
      &amp;#039;opacity:0.15&amp;#039;,&lt;br /&gt;
      &amp;#039;animation:h-float 12s ease-in-out 1s infinite&amp;#039;&lt;br /&gt;
    ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
    cr.innerHTML = SVGS.crown();&lt;br /&gt;
    container.appendChild( cr );&lt;br /&gt;
&lt;br /&gt;
    // Mirror frames — far edges&lt;br /&gt;
    [ { left: &amp;#039;-30px&amp;#039;, top: &amp;#039;20vh&amp;#039; }, { right: &amp;#039;-30px&amp;#039;, top: &amp;#039;35vh&amp;#039; } ].forEach( function ( pos, i ) {&lt;br /&gt;
      var mf = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
      mf.style.cssText = [&lt;br /&gt;
        &amp;#039;position:fixed&amp;#039;, &amp;#039;pointer-events:none&amp;#039;, &amp;#039;z-index:9980&amp;#039;,&lt;br /&gt;
        pos.left  ? &amp;#039;left:&amp;#039;  + pos.left  : &amp;#039;&amp;#039;,&lt;br /&gt;
        pos.right ? &amp;#039;right:&amp;#039; + pos.right : &amp;#039;&amp;#039;,&lt;br /&gt;
        &amp;#039;top:&amp;#039; + pos.top,&lt;br /&gt;
        &amp;#039;opacity:0.12&amp;#039;,&lt;br /&gt;
        &amp;#039;animation:h-float &amp;#039; + ( 14 + i * 2 ) + &amp;#039;s ease-in-out &amp;#039; + ( i * 1.5 ) + &amp;#039;s infinite&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
      mf.innerHTML = SVGS.mirrorFrame();&lt;br /&gt;
      container.appendChild( mf );&lt;br /&gt;
    } );&lt;br /&gt;
&lt;br /&gt;
    // Arch ornaments — top left and top right&lt;br /&gt;
    [ { left: &amp;#039;0&amp;#039;, top: &amp;#039;0&amp;#039; }, { right: &amp;#039;0&amp;#039;, top: &amp;#039;0&amp;#039; } ].forEach( function ( pos, i ) {&lt;br /&gt;
      var ao = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
      ao.style.cssText = [&lt;br /&gt;
        &amp;#039;position:fixed&amp;#039;, &amp;#039;pointer-events:none&amp;#039;, &amp;#039;z-index:9980&amp;#039;,&lt;br /&gt;
        pos.left  ? &amp;#039;left:&amp;#039;  + pos.left  : &amp;#039;&amp;#039;,&lt;br /&gt;
        pos.right ? &amp;#039;right:&amp;#039; + pos.right : &amp;#039;&amp;#039;,&lt;br /&gt;
        &amp;#039;top:&amp;#039; + pos.top,&lt;br /&gt;
        &amp;#039;opacity:0.14&amp;#039;,&lt;br /&gt;
        pos.right ? &amp;#039;transform:scaleX(-1)&amp;#039; : &amp;#039;&amp;#039;,&lt;br /&gt;
        &amp;#039;animation:h-glow-pulse 7s ease-in-out &amp;#039; + ( i * 2 ) + &amp;#039;s infinite&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
      ao.innerHTML = SVGS.archOrnament();&lt;br /&gt;
      container.appendChild( ao );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── CANDLE LIGHT BLOOM ─────────────────────────────────────── */&lt;br /&gt;
  // Semi-transparent warm glow circles at candle positions — fixed, z:9979&lt;br /&gt;
&lt;br /&gt;
  function spawnGlowBlooms( container ) {&lt;br /&gt;
    var bloomPositions = [&lt;br /&gt;
      { left: &amp;#039;3vw&amp;#039;,  bottom: &amp;#039;0&amp;#039; },&lt;br /&gt;
      { left: &amp;#039;87vw&amp;#039;, bottom: &amp;#039;0&amp;#039; },&lt;br /&gt;
      { left: &amp;#039;50vw&amp;#039;, bottom: &amp;#039;0&amp;#039; },&lt;br /&gt;
    ];&lt;br /&gt;
    bloomPositions.forEach( function ( pos, i ) {&lt;br /&gt;
      var bloom = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
      bloom.style.cssText = [&lt;br /&gt;
        &amp;#039;position:fixed&amp;#039;, &amp;#039;pointer-events:none&amp;#039;, &amp;#039;z-index:9979&amp;#039;,&lt;br /&gt;
        &amp;#039;left:&amp;#039;   + ( pos.left || &amp;#039;0&amp;#039; ),&lt;br /&gt;
        &amp;#039;bottom:&amp;#039; + ( pos.bottom || &amp;#039;0&amp;#039; ),&lt;br /&gt;
        &amp;#039;width:300px&amp;#039;, &amp;#039;height:300px&amp;#039;,&lt;br /&gt;
        &amp;#039;border-radius:50%&amp;#039;,&lt;br /&gt;
        &amp;#039;background:radial-gradient(ellipse at center,&amp;#039;,&lt;br /&gt;
        &amp;#039; rgba(245,160,32,0.14) 0%,&amp;#039;,&lt;br /&gt;
        &amp;#039; rgba(245,160,32,0.06) 40%,&amp;#039;,&lt;br /&gt;
        &amp;#039; transparent 70%)&amp;#039;,&lt;br /&gt;
        &amp;#039;transform:translate(-50%,50%)&amp;#039;,&lt;br /&gt;
        &amp;#039;animation:h-candle-ambient &amp;#039; + ( 4 + i * 1.5 ) + &amp;#039;s ease-in-out &amp;#039; + ( i * 0.8 ) + &amp;#039;s infinite&amp;#039;&lt;br /&gt;
      ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
      container.appendChild( bloom );&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── CURSOR CANDLE GLOW ─────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function initCursorGlow() {&lt;br /&gt;
    var glow = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
    glow.style.cssText = [&lt;br /&gt;
      &amp;#039;position:fixed&amp;#039;, &amp;#039;pointer-events:none&amp;#039;, &amp;#039;z-index:9995&amp;#039;,&lt;br /&gt;
      &amp;#039;width:80px&amp;#039;, &amp;#039;height:80px&amp;#039;, &amp;#039;border-radius:50%&amp;#039;,&lt;br /&gt;
      &amp;#039;background:radial-gradient(ellipse at center,&amp;#039;,&lt;br /&gt;
      &amp;#039; rgba(245,160,32,0.2) 0%, rgba(245,160,32,0.06) 50%, transparent 70%)&amp;#039;,&lt;br /&gt;
      &amp;#039;transform:translate(-50%,-50%)&amp;#039;,&lt;br /&gt;
      &amp;#039;transition:left 0.08s ease, top 0.08s ease&amp;#039;&lt;br /&gt;
    ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
    document.body.appendChild( glow );&lt;br /&gt;
&lt;br /&gt;
    document.addEventListener( &amp;#039;mousemove&amp;#039;, function ( e ) {&lt;br /&gt;
      glow.style.left = e.clientX + &amp;#039;px&amp;#039;;&lt;br /&gt;
      glow.style.top  = e.clientY + &amp;#039;px&amp;#039;;&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── MOUSE PARALLAX ─────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function initParallax( container ) {&lt;br /&gt;
    var cx = window.innerWidth / 2, cy = window.innerHeight / 2;&lt;br /&gt;
    var tx = 0, ty = 0, curX = 0, curY = 0;&lt;br /&gt;
    document.addEventListener( &amp;#039;mousemove&amp;#039;, function ( e ) {&lt;br /&gt;
      tx = ( e.clientX - cx ) / cx * 6;&lt;br /&gt;
      ty = ( e.clientY - cy ) / cy * 4;&lt;br /&gt;
    } );&lt;br /&gt;
    ( function tick() {&lt;br /&gt;
      curX += ( tx - curX ) * 0.03;&lt;br /&gt;
      curY += ( ty - curY ) * 0.03;&lt;br /&gt;
      container.style.transform = &amp;#039;translate(&amp;#039; + curX + &amp;#039;px,&amp;#039; + curY + &amp;#039;px)&amp;#039;;&lt;br /&gt;
      requestAnimationFrame( tick );&lt;br /&gt;
    }() );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── PAGE TITLE SHIMMER ─────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function initTitleShimmer() {&lt;br /&gt;
    var title = document.getElementById( &amp;#039;firstHeading&amp;#039; )&lt;br /&gt;
             || document.querySelector( &amp;#039;.firstHeading&amp;#039; )&lt;br /&gt;
             || document.querySelector( &amp;#039;h1&amp;#039; );&lt;br /&gt;
    if ( !title ) { return; }&lt;br /&gt;
&lt;br /&gt;
    // Wrap each letter for individual shimmer&lt;br /&gt;
    var text = title.textContent.trim();&lt;br /&gt;
    if ( !text || text.length &amp;gt; 80 ) { return; } // skip very long titles&lt;br /&gt;
    title.innerHTML = text.split( &amp;#039;&amp;#039; ).map( function ( ch, i ) {&lt;br /&gt;
      if ( ch === &amp;#039; &amp;#039; ) { return &amp;#039;&amp;amp;nbsp;&amp;#039;; }&lt;br /&gt;
      return &amp;#039;&amp;lt;span style=&amp;quot;display:inline-block;animation:h-shimmer &amp;#039; +&lt;br /&gt;
        ( 3 + ( i % 5 ) * 0.4 ) + &amp;#039;s ease-in-out &amp;#039; +&lt;br /&gt;
        ( i * 0.06 ) + &amp;#039;s infinite;&amp;quot;&amp;gt;&amp;#039; + ch + &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;;&lt;br /&gt;
    } ).join( &amp;#039;&amp;#039; );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── ONLINEWEBFONTS PRELOAD ─────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function preloadFonts() {&lt;br /&gt;
    if ( document.getElementById( &amp;#039;h-gfonts&amp;#039; ) ) { return; }&lt;br /&gt;
    var link = document.createElement( &amp;#039;link&amp;#039; );&lt;br /&gt;
    link.id   = &amp;#039;h-gfonts&amp;#039;;&lt;br /&gt;
    link.rel  = &amp;#039;stylesheet&amp;#039;;&lt;br /&gt;
    link.href = &amp;#039;https://fonts.googleapis.com/css2?family=Cinzel+Decorative:wght@400;700;900&amp;amp;family=Cinzel:wght@400;500;600;700&amp;amp;family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400;1,500&amp;amp;family=IM+Fell+English:ital@0;1&amp;amp;family=Playfair+Display+SC:wght@400;700&amp;amp;family=UnifrakturMaguntia&amp;amp;family=Sorts+Mill+Goudy:ital@0;1&amp;amp;display=swap&amp;#039;;&lt;br /&gt;
    document.head.appendChild( link );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── HOVER CANDLE GLOW ON LINKS ─────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function initLinkGlow() {&lt;br /&gt;
    document.addEventListener( &amp;#039;mouseover&amp;#039;, function ( e ) {&lt;br /&gt;
      var target = e.target;&lt;br /&gt;
      if ( target &amp;amp;&amp;amp; target.tagName === &amp;#039;A&amp;#039; ) {&lt;br /&gt;
        target.style.textShadow = &amp;#039;0 0 12px rgba(245,160,32,0.5), 0 0 24px rgba(245,160,32,0.25)&amp;#039;;&lt;br /&gt;
      }&lt;br /&gt;
    } );&lt;br /&gt;
    document.addEventListener( &amp;#039;mouseout&amp;#039;, function ( e ) {&lt;br /&gt;
      var target = e.target;&lt;br /&gt;
      if ( target &amp;amp;&amp;amp; target.tagName === &amp;#039;A&amp;#039; ) {&lt;br /&gt;
        target.style.textShadow = &amp;#039;&amp;#039;;&lt;br /&gt;
      }&lt;br /&gt;
    } );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── WAX DRIP SPAWNER ───────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function spawnDrip( container ) {&lt;br /&gt;
    var drip = document.createElement( &amp;#039;div&amp;#039; );&lt;br /&gt;
    drip.style.cssText = [&lt;br /&gt;
      &amp;#039;position:fixed&amp;#039;,&lt;br /&gt;
      &amp;#039;pointer-events:none&amp;#039;,&lt;br /&gt;
      &amp;#039;z-index:9981&amp;#039;,&lt;br /&gt;
      &amp;#039;left:&amp;#039; + rand( 0, 100 ) + &amp;#039;vw&amp;#039;,&lt;br /&gt;
      &amp;#039;top:-20px&amp;#039;,&lt;br /&gt;
      &amp;#039;width:6px&amp;#039;,&lt;br /&gt;
      &amp;#039;height:&amp;#039; + randInt( 30, 80 ) + &amp;#039;px&amp;#039;,&lt;br /&gt;
      &amp;#039;border-radius:0 0 50% 50%&amp;#039;,&lt;br /&gt;
      &amp;#039;background:linear-gradient(180deg,#fdf0d0,#f5e8c0)&amp;#039;,&lt;br /&gt;
      &amp;#039;opacity:0.35&amp;#039;,&lt;br /&gt;
      &amp;#039;animation:h-wax-drip &amp;#039; + randInt( 4, 9 ) + &amp;#039;s ease-in &amp;#039; + rand( 0, 3 ) + &amp;#039;s forwards&amp;#039;&lt;br /&gt;
    ].join( &amp;#039;;&amp;#039; );&lt;br /&gt;
    container.appendChild( drip );&lt;br /&gt;
    setTimeout( function () {&lt;br /&gt;
      if ( drip.parentNode ) { drip.parentNode.removeChild( drip ); }&lt;br /&gt;
    }, 12000 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── MAIN INIT ──────────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  function init() {&lt;br /&gt;
    // Don&amp;#039;t run on edit pages&lt;br /&gt;
    if ( typeof mw !== &amp;#039;undefined&amp;#039; ) {&lt;br /&gt;
      var action = mw.config.get( &amp;#039;wgAction&amp;#039; );&lt;br /&gt;
      if ( action === &amp;#039;edit&amp;#039; || action === &amp;#039;submit&amp;#039; ) { return; }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    preloadFonts();&lt;br /&gt;
&lt;br /&gt;
    var container = makeContainer();&lt;br /&gt;
&lt;br /&gt;
    spawnGlowBlooms( container );&lt;br /&gt;
    spawnCandles( container );&lt;br /&gt;
    spawnWires( container );&lt;br /&gt;
    spawnRoses( container );&lt;br /&gt;
    spawnOrnaments( container );&lt;br /&gt;
&lt;br /&gt;
    initParallax( container );&lt;br /&gt;
    initCursorGlow();&lt;br /&gt;
    initLinkGlow();&lt;br /&gt;
&lt;br /&gt;
    // Title shimmer with slight delay (font needs to load)&lt;br /&gt;
    setTimeout( initTitleShimmer, 600 );&lt;br /&gt;
&lt;br /&gt;
    // Periodically drop a wax drip from top&lt;br /&gt;
    setInterval( function () {&lt;br /&gt;
      if ( Math.random() &amp;lt; 0.5 ) {&lt;br /&gt;
        spawnDrip( container );&lt;br /&gt;
      }&lt;br /&gt;
    }, 3000 );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* ── BOOT ───────────────────────────────────────────────────── */&lt;br /&gt;
&lt;br /&gt;
  if ( typeof mw !== &amp;#039;undefined&amp;#039; ) {&lt;br /&gt;
    mw.loader.using( &amp;#039;mediawiki.util&amp;#039; ).then( function () {&lt;br /&gt;
      $( document ).ready( init );&lt;br /&gt;
    } );&lt;br /&gt;
  } else {&lt;br /&gt;
    document.addEventListener( &amp;#039;DOMContentLoaded&amp;#039;, init );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}() );&lt;/div&gt;</description>
			<pubDate>Wed, 15 Apr 2026 11:31:40 GMT</pubDate>
			<dc:creator>Possession</dc:creator>
			<comments>https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php/MediaWiki_talk:Common.js</comments>
		</item>
		<item>
			<title>MediaWiki:Common.css</title>
			<link>https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php?title=MediaWiki:Common.css&amp;diff=2&amp;oldid=0</link>
			<guid isPermaLink="false">https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php?title=MediaWiki:Common.css&amp;diff=2&amp;oldid=0</guid>
			<description>&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;================================================================    H A D E S  —  MediaWiki Wiki Theme    Based on the 2026 album &amp;quot;Hades&amp;quot;    Gothic Victorian · Candlelit Shrine · Damask Baroque    MediaWiki:Common.css    ================================================================: &lt;/span&gt;  &lt;span class=&quot;autocomment&quot;&gt;── GOOGLE FONTS ────────────────────────────────────────────: &lt;/span&gt; @import url(&amp;#039;https:...&amp;quot;&lt;/p&gt;
&lt;a href=&quot;https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php?title=MediaWiki:Common.css&amp;amp;diff=2&quot;&gt;Show changes&lt;/a&gt;</description>
			<pubDate>Wed, 15 Apr 2026 11:31:19 GMT</pubDate>
			<dc:creator>Possession</dc:creator>
			<comments>https://whatafinefellowsaidhisnamewashades.trumpetz.com/index.php/MediaWiki_talk:Common.css</comments>
		</item>
</channel></rss>