@eaprelsky/nocturna-wheel 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -83,47 +83,16 @@ class ServiceRegistry {
83
83
  }
84
84
 
85
85
  /**
86
- * Gets or creates an IconProvider instance
87
- * @param {string} basePath - Optional base path for SVG assets
88
- * @returns {Object} The IconProvider instance
86
+ * Gets the IconProvider instance
87
+ * NOTE: IconProvider should be registered externally before use
88
+ * This method only retrieves, does not create
89
+ * @returns {Object|undefined} The IconProvider instance if registered
89
90
  */
90
- static getIconProvider(basePath = './assets/svg/zodiac/') {
91
+ static getIconProvider() {
91
92
  if (!this.has('iconProvider')) {
92
- // Create a simple icon provider
93
- const iconProvider = {
94
- basePath: basePath,
95
-
96
- getPlanetIconPath(planetName) {
97
- return `${this.basePath}zodiac-planet-${planetName.toLowerCase()}.svg`;
98
- },
99
-
100
- getZodiacIconPath(signName) {
101
- return `${this.basePath}zodiac-sign-${signName.toLowerCase()}.svg`;
102
- },
103
-
104
- getAspectIconPath(aspectType) {
105
- return `${this.basePath}zodiac-aspect-${aspectType.toLowerCase()}.svg`;
106
- },
107
-
108
- createTextFallback(svgUtils, options, text) {
109
- const { x, y, size = '16px', color = '#000000', className = 'icon-fallback' } = options;
110
-
111
- const textElement = svgUtils.createSVGElement("text", {
112
- x: x,
113
- y: y,
114
- 'text-anchor': 'middle',
115
- 'dominant-baseline': 'middle',
116
- 'font-size': size,
117
- 'class': className,
118
- 'fill': color
119
- });
120
-
121
- textElement.textContent = text;
122
- return textElement;
123
- }
124
- };
125
-
126
- this.register('iconProvider', iconProvider);
93
+ console.warn('ServiceRegistry: IconProvider not registered. Icons may not work correctly.');
94
+ console.warn('ServiceRegistry: This should be initialized in main.js with inline IconData.');
95
+ return null;
127
96
  }
128
97
  return this.get('iconProvider');
129
98
  }
@@ -136,13 +105,250 @@ class ServiceRegistry {
136
105
  // Initialize SvgUtils
137
106
  this.getSvgUtils();
138
107
 
139
- // Initialize IconProvider with the assets base path
140
- this.getIconProvider(options.assetBasePath || './assets/svg/zodiac/');
108
+ // Note: IconProvider should be registered externally in main.js
109
+ // with inline IconData before calling this method
141
110
 
142
111
  console.log("ServiceRegistry: Core services initialized");
143
112
  }
144
113
  }
145
114
 
115
+ /**
116
+ * IconProvider.js
117
+ * Service to handle all SVG icon path management and fallback strategies.
118
+ * This ensures consistent icon handling across the application.
119
+ *
120
+ * Supports two modes:
121
+ * 1. Inline mode (default): Uses bundled data URLs for icons
122
+ * 2. External mode: Uses external file paths (for custom icons)
123
+ */
124
+
125
+ class IconProvider {
126
+ /**
127
+ * Constructor
128
+ * @param {Object} options - Configuration options
129
+ * @param {string} options.basePath - Base path for external SVG assets
130
+ * @param {boolean} options.useInline - Whether to use inline data URLs (default: true)
131
+ * @param {Object} options.customIcons - Custom icon data URLs (optional)
132
+ */
133
+ constructor(options = {}) {
134
+ // Support legacy string argument for backwards compatibility
135
+ if (typeof options === 'string') {
136
+ options = { basePath: options, useInline: false };
137
+ }
138
+
139
+ this.basePath = options.basePath || './assets/svg/zodiac/';
140
+ this.useInline = options.useInline !== false; // Default to true
141
+ this.customIcons = options.customIcons || null;
142
+
143
+ // Lazy-load IconData on first use
144
+ this.inlineData = null;
145
+
146
+ // Track if warning was already shown (to avoid spam)
147
+ this._warnedAboutMissingData = false;
148
+ }
149
+
150
+ /**
151
+ * Gets inline icon data reference
152
+ * @private
153
+ */
154
+ _getInlineData() {
155
+ return this.inlineData;
156
+ }
157
+
158
+ /**
159
+ * Sets the inline icon data (for manual initialization)
160
+ * @param {Object} iconData - Icon data object with planets, signs, aspects
161
+ */
162
+ setInlineData(iconData) {
163
+ this.inlineData = iconData;
164
+ console.log('IconProvider.setInlineData(): Data loaded successfully',
165
+ 'planets:', Object.keys(iconData?.planets || {}).length,
166
+ 'signs:', Object.keys(iconData?.signs || {}).length,
167
+ 'aspects:', Object.keys(iconData?.aspects || {}).length
168
+ );
169
+ }
170
+
171
+ /**
172
+ * Gets the path or data URL for a planet icon
173
+ * @param {string} planetName - Name of the planet
174
+ * @returns {string} Data URL or file path to the SVG icon
175
+ */
176
+ getPlanetIconPath(planetName) {
177
+ const name = planetName.toLowerCase();
178
+
179
+ // Check custom icons first
180
+ if (this.customIcons?.planets?.[name]) {
181
+ return this.customIcons.planets[name];
182
+ }
183
+
184
+ // Try inline data URLs
185
+ if (this.useInline) {
186
+ const inlineData = this._getInlineData();
187
+ if (inlineData?.planets?.[name]) {
188
+ return inlineData.planets[name];
189
+ } else {
190
+ // Debug: log when inline data is not available (only once)
191
+ if (!this._warnedAboutMissingData) {
192
+ this._warnedAboutMissingData = true;
193
+ if (!inlineData) {
194
+ console.warn(`IconProvider: Inline data not loaded, falling back to external paths. Call setInlineData() to load inline icons.`);
195
+ } else if (!inlineData.planets) {
196
+ console.warn(`IconProvider: Inline data missing 'planets' category`);
197
+ }
198
+ }
199
+ }
200
+ }
201
+
202
+ // Fallback to external path
203
+ return `${this.basePath}zodiac-planet-${name}.svg`;
204
+ }
205
+
206
+ /**
207
+ * Gets the path or data URL for a zodiac sign icon
208
+ * @param {string} signName - Name of the zodiac sign
209
+ * @returns {string} Data URL or file path to the SVG icon
210
+ */
211
+ getZodiacIconPath(signName) {
212
+ const name = signName.toLowerCase();
213
+
214
+ // Check custom icons first
215
+ if (this.customIcons?.signs?.[name]) {
216
+ return this.customIcons.signs[name];
217
+ }
218
+
219
+ // Try inline data URLs
220
+ if (this.useInline) {
221
+ const inlineData = this._getInlineData();
222
+ if (inlineData?.signs?.[name]) {
223
+ return inlineData.signs[name];
224
+ }
225
+ }
226
+
227
+ // Fallback to external path
228
+ return `${this.basePath}zodiac-sign-${name}.svg`;
229
+ }
230
+
231
+ /**
232
+ * Gets the path or data URL for an aspect icon
233
+ * @param {string} aspectType - Type of the aspect
234
+ * @returns {string} Data URL or file path to the SVG icon
235
+ */
236
+ getAspectIconPath(aspectType) {
237
+ const name = aspectType.toLowerCase();
238
+
239
+ // Check custom icons first
240
+ if (this.customIcons?.aspects?.[name]) {
241
+ return this.customIcons.aspects[name];
242
+ }
243
+
244
+ // Try inline data URLs
245
+ if (this.useInline) {
246
+ const inlineData = this._getInlineData();
247
+ if (inlineData?.aspects?.[name]) {
248
+ return inlineData.aspects[name];
249
+ }
250
+ }
251
+
252
+ // Fallback to external path
253
+ return `${this.basePath}zodiac-aspect-${name}.svg`;
254
+ }
255
+
256
+ /**
257
+ * Creates a text element as a fallback when SVG icons fail to load
258
+ * @param {SvgUtils} svgUtils - The SvgUtils instance
259
+ * @param {Object} options - Text element options
260
+ * @param {number} options.x - X coordinate
261
+ * @param {number} options.y - Y coordinate
262
+ * @param {string} options.size - Font size (e.g., '16px')
263
+ * @param {string} options.color - Text color
264
+ * @param {string} options.className - CSS class name
265
+ * @param {string} text - The text to display
266
+ * @returns {Element} The created text element
267
+ */
268
+ createTextFallback(svgUtils, options, text) {
269
+ const { x, y, size = '16px', color = '#000000', className = 'icon-fallback' } = options;
270
+
271
+ const textElement = svgUtils.createSVGElement("text", {
272
+ x: x,
273
+ y: y,
274
+ 'text-anchor': 'middle',
275
+ 'dominant-baseline': 'middle',
276
+ 'font-size': size,
277
+ 'class': className,
278
+ 'fill': color
279
+ });
280
+
281
+ // Use the provided text
282
+ textElement.textContent = text;
283
+ return textElement;
284
+ }
285
+ }
286
+
287
+ /**
288
+ * IconData.js
289
+ * Auto-generated module containing inline SVG icons as data URLs
290
+ * Generated at: 2025-11-14T10:26:57.036Z
291
+ *
292
+ * This file is automatically generated by the build process.
293
+ * Do not edit manually - changes will be overwritten.
294
+ */
295
+
296
+ /**
297
+ * Icon data organized by category
298
+ * All SVG icons are stored as data URLs for inline usage
299
+ */
300
+ const IconData = {
301
+ planets: {},
302
+ signs: {},
303
+ aspects: {}
304
+ };
305
+
306
+ // Planet icons
307
+ IconData.planets['jupiter'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22kVkwGe1VFLANDFw4YKh--3%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20120%20169%20L%20120.41%2052%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22kVkwGe1VFLANDFw4YKh--4%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2055.45%20117%20L%20114.55%20117%20L%20150%20117%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22kVkwGe1VFLANDFw4YKh--5%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2049.17%2039.62%20C%2061.72%2037.13%2074.51%2042.25%2082.68%2053.02%20C%2090.85%2063.79%2093.13%2078.55%2088.66%2091.68%20C%2084.18%20104.81%2073.64%20114.29%2061.06%20116.51%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22zDjTfItpbO8d8TAwGvx0-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
308
+ IconData.planets['ketu'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22nZi6tGyZIidbp-v6qjZQ-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22nZi6tGyZIidbp-v6qjZQ-6%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22nZi6tGyZIidbp-v6qjZQ-7%22%3E%3Cg%3E%3Cellipse%20cx%3D%2265%22%20cy%3D%2265%22%20rx%3D%2215%22%20ry%3D%2215%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22nZi6tGyZIidbp-v6qjZQ-8%22%3E%3Cg%3E%3Cellipse%20cx%3D%22135%22%20cy%3D%2265%22%20rx%3D%2215%22%20ry%3D%2215%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22nZi6tGyZIidbp-v6qjZQ-9%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20124.39%2054.39%20Q%20120%2060%20120%2065%20Q%20120%2070%20130%2095%20Q%20140%20120%20130%20135%20Q%20120%20150%20100%20150%20Q%2080%20150%2070%20135%20Q%2060%20120%2070%2095%20Q%2080%2070%2080%2065%20Q%2080%2060%2075.61%2054.39%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22fzDwOAeg_iJ89Dt6VeXd-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
309
+ IconData.planets['lilith'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22iy5LzPKV1b8-u4Rshwn2-1%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20139%20150%20L%2059%20150%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22iy5LzPKV1b8-u4Rshwn2-2%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2098.2%20117.1%20L%2099%20180%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22iy5LzPKV1b8-u4Rshwn2-3%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2073.37%2033.62%20C%2062.66%2050.93%2065.45%2073.12%2080.13%2087.41%20C%2094.81%20101.7%20117.6%20104.42%20135.38%2093.99%20C%20125.69%20109.66%20107.04%20117.86%2088.56%20114.57%20C%2070.07%20111.28%2055.61%2097.2%2052.23%2079.2%20C%2048.85%2061.21%2057.27%2043.05%2073.37%2033.62%20Z%22%20fill%3D%22%23000000%22%20stroke%3D%22%23000000%22%20stroke-width%3D%222%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(225%2C92.12%2C75.74)%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20rgb(0%2C%200%2C%200)%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22skUIsOvDlGxpmukY0j3V-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
310
+ IconData.planets['mars'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22201px%22%20height%3D%22201px%22%20viewBox%3D%22-0.5%20-0.5%20201%20201%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22dfX1GTXx0dsaOR7s5UN7-2%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%2210%22%20height%3D%2210%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22dfX1GTXx0dsaOR7s5UN7-3%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%22115%22%20rx%3D%2240%22%20ry%3D%2240%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22dfX1GTXx0dsaOR7s5UN7-4%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20130%2085%20L%20155.97%2059.03%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3Cpath%20d%3D%22M%20166.05%2048.95%20L%20159.33%2069.11%20L%20155.97%2059.03%20L%20145.89%2055.67%20Z%22%20fill%3D%22%23000000%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22WfpUhmjnT6FgT6mvTSny-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
311
+ IconData.planets['mercury'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22201px%22%20viewBox%3D%22-0.5%20-0.5%20200%20201%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22P34d2Aacb0rAMBlJQ82S-5%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%2290%22%20rx%3D%2240%22%20ry%3D%2240%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22P34d2Aacb0rAMBlJQ82S-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20129.98%2025.18%20C%20130.36%2034.02%20124.63%2042.31%20115.07%2046.75%20C%20105.51%2051.19%2093.67%2051.07%2084.26%2046.43%20C%2074.85%2041.79%2069.39%2033.39%2070.05%2024.56%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22P34d2Aacb0rAMBlJQ82S-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20100%20180%20L%20100%20130%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22P34d2Aacb0rAMBlJQ82S-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%20160%20L%20140%20160%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22YspeTQYn8OWxfiwJ6-K5-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
312
+ IconData.planets['moon'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%20%3Cpath%20d%3D%22M%20106.38%2031%20C%20133.61%2035.85%20154.8%2057.4%20159.18%2084.71%20C%20163.56%20112.02%20150.17%20139.12%20125.82%20152.23%20C%20101.46%20165.35%2071.47%20161.61%2051.08%20142.92%20Q%2059.25%20148.63%2089.31%20129.94%20Q%20119.38%20111.25%20119.38%2074.69%20Q%20119.38%2038.13%20108.81%2031.63%20Z%22%20fill%3D%22white%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%20%3C%2Fsvg%3E';
313
+ IconData.planets['neptune'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22xklInLVkXW5TzGvFd8Wp-13%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20100%20170%20L%20100%2061.18%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3Cpath%20d%3D%22M%20105.67%2072.59%20L%20100%2055.59%20L%2094.33%2072.59%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22xklInLVkXW5TzGvFd8Wp-14%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20140%20140%20L%2060%20140%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22xklInLVkXW5TzGvFd8Wp-15%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%2061.18%20Q%2060%20100%2080%20110%20Q%20100%20120%20120%20110%20Q%20140%20100%20140%2061.18%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3Cpath%20d%3D%22M%2063.67%2066.59%20L%2060%2055.59%20L%2056.33%2066.59%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3Cpath%20d%3D%22M%20145.67%2072.59%20L%20140%2055.59%20L%20134.33%2072.59%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22zbcp-zu0BkE59QIL-Zbj-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
314
+ IconData.planets['pluto'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%222_PLy7GvWnqgv2neW7ed-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%222_PLy7GvWnqgv2neW7ed-9%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%22149%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%222_PLy7GvWnqgv2neW7ed-10%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20100%20129%20L%20100.5%20110%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%222_PLy7GvWnqgv2neW7ed-11%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20140%2070.4%20C%20139.78%2092.49%20121.69%20110.22%2099.6%20110%20C%2077.51%20109.78%2059.78%2091.69%2060%2069.6%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%222_PLy7GvWnqgv2neW7ed-12%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%2270%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%227pAuGvqZmXAXuP9MepSf-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
315
+ IconData.planets['rahu'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22nMoK0GtzClMlq9khWL09-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22nMoK0GtzClMlq9khWL09-6%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22nMoK0GtzClMlq9khWL09-7%22%3E%3Cg%3E%3Cellipse%20cx%3D%2265%22%20cy%3D%2265%22%20rx%3D%2215%22%20ry%3D%2215%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22nMoK0GtzClMlq9khWL09-8%22%3E%3Cg%3E%3Cellipse%20cx%3D%22135%22%20cy%3D%2265%22%20rx%3D%2215%22%20ry%3D%2215%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22nMoK0GtzClMlq9khWL09-9%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20124.39%2054.39%20Q%20120%2060%20120%2065%20Q%20120%2070%20130%2095%20Q%20140%20120%20130%20135%20Q%20120%20150%20100%20150%20Q%2080%20150%2070%20135%20Q%2060%20120%2070%2095%20Q%2080%2070%2080%2065%20Q%2080%2060%2075.61%2054.39%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%223M6Cx9xprG5cO1lWqNEw-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
316
+ IconData.planets['saturn'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22PGt55_aUy3Njtwruwuk4-5%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2090%20139%20L%2090%2039%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22PGt55_aUy3Njtwruwuk4-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%2059%20L%20120%2059%20L%2090%2059%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22PGt55_aUy3Njtwruwuk4-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20150%20169%20Q%20138%20179%20129%20174%20Q%20120%20169%20129%20144%20Q%20138%20119%20134%20104%20Q%20130%2089%20110%2089%20Q%2090%2089%2090%20109%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%226yAxXstixJTfL81ozoQc-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22sU4-NP-8qgTjRoMx9Fv4-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
317
+ IconData.planets['selena'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22jFIPWhlccuGsN_-w-8e2-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22jFIPWhlccuGsN_-w-8e2-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20140%20150%20L%2060%20150%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22jFIPWhlccuGsN_-w-8e2-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2099.2%20117.1%20L%20100%20180%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22jFIPWhlccuGsN_-w-8e2-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2073.37%2031.14%20C%2062.66%2048.46%2065.45%2070.65%2080.13%2084.94%20C%2094.81%2099.23%20117.6%20101.95%20135.38%2091.52%20C%20125.69%20107.19%20107.04%20115.39%2088.56%20112.1%20C%2070.07%20108.81%2055.61%2094.73%2052.23%2076.73%20C%2048.85%2058.74%2057.27%2040.58%2073.37%2031.14%20Z%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(225%2C92.12%2C73.26)%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22B7BV3EczgGRAOl1qaG-U-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
318
+ IconData.planets['sun'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22KMRcx8_Z6FSBlqI5tEZE-1%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%22100%22%20rx%3D%2265%22%20ry%3D%2260%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22KMRcx8_Z6FSBlqI5tEZE-2%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%22100%22%20rx%3D%2210%22%20ry%3D%2210%22%20fill%3D%22%23000000%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(237%2C%20237%2C%20237))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22adE6InmPBndy7Uo4bRgR-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
319
+ IconData.planets['uranus'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22-Ga99g4WFrNk1u2N47Tz-4%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22-Ga99g4WFrNk1u2N47Tz-9%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%22149%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22-Ga99g4WFrNk1u2N47Tz-10%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2080.91%2089.92%20L%20120.91%2089.92%20L%20100.91%2089.92%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22-Ga99g4WFrNk1u2N47Tz-11%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20100%20129%20L%20100%2060%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22-Ga99g4WFrNk1u2N47Tz-12%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2052.39%2051.12%20C%2066.57%2052.6%2078%2066.81%2079.77%2085.16%20C%2081.53%20103.5%2073.15%20120.94%2059.69%20126.91%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22-Ga99g4WFrNk1u2N47Tz-13%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20141.64%20127.44%20C%20128.11%20122.27%20119.13%20105.39%20120.07%2086.87%20C%20121.01%2068.35%20131.61%2053.19%20145.55%2050.44%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22An7hOLSuI-_JKes7hUzt-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22XEAaU1rfczp1g1rg0gsK-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
320
+ IconData.planets['venus'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%2282gSs5GHCCOlAdsS7Y_n-5%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%2279%22%20rx%3D%2240%22%20ry%3D%2240%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%2282gSs5GHCCOlAdsS7Y_n-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20100%20180%20L%20100%20119%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%2282gSs5GHCCOlAdsS7Y_n-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%20150%20L%20140%20150%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22wT5vcnIU1864jlhb-1KB-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
321
+
322
+ // Zodiac sign icons
323
+ IconData.signs['aquarius'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22pYeec5tt2UMA0w_zhV47-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22pYeec5tt2UMA0w_zhV47-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20161.5%2090%20Q%20151.5%2070%20136.5%2080%20Q%20121.5%2090%20116.5%2075%20Q%20111.5%2060%2096%2075%20Q%2080.5%2090%2074.5%2075%20Q%2068.5%2060%2041.5%2090%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22pYeec5tt2UMA0w_zhV47-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20158.5%20120%20Q%20148.5%20100%20133.5%20110%20Q%20118.5%20120%20113.5%20105%20Q%20108.5%2090%2093%20105%20Q%2077.5%20120%2071.5%20105%20Q%2065.5%2090%2038.5%20120%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22fXDPfsLTpfVXU3cFdg-k-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
324
+ IconData.signs['aries'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22blLjc4XcNJx5ieieuYer-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22G6Vla6dTyV-LotFg2Pob-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20101%20160%20Q%20100%20100%2095%2075%20Q%2090%2050%2070%2045%20Q%2050%2040%2030%2060%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22G6Vla6dTyV-LotFg2Pob-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20101%20160%20Q%20100%20110%20105%2080%20Q%20110%2050%20130%2045%20Q%20150%2040%20170%2060%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22vkXA4BL2LVM82eNTlpCW-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
325
+ IconData.signs['cancer'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22F9CagPl8JsqmlfRdU_IR-17%22%3E%3Cg%3E%3Cellipse%20cx%3D%22131%22%20cy%3D%22106.62%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22F9CagPl8JsqmlfRdU_IR-18%22%3E%3Cg%3E%3Cellipse%20cx%3D%2272.5%22%20cy%3D%2275.62%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22F9CagPl8JsqmlfRdU_IR-19%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2097.18%20159.61%20C%2081.71%20156.42%2070.06%20134.3%2070%20108%20C%2069.94%2081.71%2081.49%2059.45%2096.95%2056.06%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C100.94%2C107.81)%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22F9CagPl8JsqmlfRdU_IR-20%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2097.18%20125.49%20C%2081.71%20122.39%2070.06%20100.94%2070%2075.43%20C%2069.94%2049.93%2081.49%2028.33%2096.95%2025.04%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(90%2C100.94%2C75.25)%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22-nztp9pWxBHcmyZ08QR4-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
326
+ IconData.signs['capricorn'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22FCZELrIV3grwh7Eqi1pe-8%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22FCZELrIV3grwh7Eqi1pe-9%22%3E%3Cg%3E%3Cellipse%20cx%3D%22135%22%20cy%3D%22118.25%22%20rx%3D%2215%22%20ry%3D%2216.5%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22FCZELrIV3grwh7Eqi1pe-10%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20120%20112.75%20Q%20120%20130.35%20120%20110.55%20Q%20120%2090.75%20120%2068.75%20Q%20120%2046.75%20107.5%2041.25%20Q%2095%2035.75%2085%2079.75%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22FCZELrIV3grwh7Eqi1pe-11%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2085%2079.75%20Q%2080%2035.75%2060%2035.75%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22FCZELrIV3grwh7Eqi1pe-12%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20100%20145.75%20Q%20110%20145.75%20115%20134.75%20Q%20120%20123.75%20120%20118.25%20Q%20120%20112.75%20124.23%20106.76%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22BpOhtRGwmzoIQpnF7pUJ-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
327
+ IconData.signs['gemini'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22vdI9q3M43HH2vRBbEY2U-37%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2097.31%2096.94%20C%2081.84%2093.35%2070.19%2068.48%2070.13%2038.91%20C%2070.07%209.34%2081.62%20-15.7%2097.08%20-19.51%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C101.07%2C38.69)%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22vdI9q3M43HH2vRBbEY2U-38%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2095.68%20223.38%20C%2080.21%20219.76%2068.56%20194.71%2068.5%20164.91%20C%2068.44%20135.12%2079.99%20109.9%2095.45%20106.06%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(90%2C99.44%2C164.69)%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22vdI9q3M43HH2vRBbEY2U-39%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2079.93%20136.79%20L%2079.47%2067.65%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22vdI9q3M43HH2vRBbEY2U-40%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20119.66%20135.3%20L%20119.73%2067.65%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22jCEtXZTTY2g2Gjzo-qMJ-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
328
+ IconData.signs['leo'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%225dCEg9FfoHjf9y-4Zlng-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%225dCEg9FfoHjf9y-4Zlng-6%22%3E%3Cg%3E%3Cellipse%20cx%3D%2272.5%22%20cy%3D%22100%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%225dCEg9FfoHjf9y-4Zlng-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20160%20140%20Q%20150%20150%20137.5%20150%20Q%20125%20150%20122.5%20135%20Q%20120%20120%20130%2080%20Q%20140%2040%20110%2040%20Q%2080%2040%2095%20100%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
329
+ IconData.signs['libra'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22DDuQtP-VmcjbW8JG7HV6-5%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2040%20136.78%20L%20160%20136.78%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22DDuQtP-VmcjbW8JG7HV6-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2040%20108.6%20L%2084.04%20109.09%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22DDuQtP-VmcjbW8JG7HV6-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20116.38%20109.09%20L%20160%20108.6%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22DDuQtP-VmcjbW8JG7HV6-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20125.48%2098.82%20C%20119.06%20110.71%20105.66%20116.67%2092.85%20113.33%20C%2080.03%20109.99%2071%2098.19%2070.85%2084.59%20C%2070.7%2070.98%2079.47%2058.98%2092.21%2055.34%20C%20104.95%2051.71%20118.48%2057.35%20125.16%2069.09%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(90%2C100%2C84.25)%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22Vif0qCJVHSTV2Csg5cyl-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
330
+ IconData.signs['pisces'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22ufDh7fpc4K_yNdC7vCHW-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22ufDh7fpc4K_yNdC7vCHW-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2057.79%2045.18%20C%2074.33%2047.25%2087.67%2067.3%2089.73%2093.17%20C%2091.79%20119.04%2082.01%20143.63%2066.3%20152.05%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22ufDh7fpc4K_yNdC7vCHW-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20135.25%20152.82%20C%20119.46%20145.63%20108.98%20122.12%20110.08%2096.34%20C%20111.17%2070.55%20123.54%2049.44%20139.81%2045.61%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22ufDh7fpc4K_yNdC7vCHW-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2055.01%2099.91%20L%20144.99%2099.86%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%222UPBxVXPtNNG9HLaSRjR-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
331
+ IconData.signs['sagittarius'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22bNOf38aV_gRLlzT1H2mC-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2059%20127.75%20L%20138%2048.75%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bNOf38aV_gRLlzT1H2mC-9%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%2086.75%20L%20100%20126.75%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bNOf38aV_gRLlzT1H2mC-10%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2099%2047.75%20L%20141%2047.75%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bNOf38aV_gRLlzT1H2mC-11%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20139%2087.75%20L%20139%2045.75%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bTJtWIvd38qZUwxlYIHf-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
332
+ IconData.signs['scorpio'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22xiVi_kujB_bSvCnK_Mbj-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%20143%20Q%2060%2080%2060%2060%20Q%2060%2040%2060%2035%20Q%2060%2030%2050%2020%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22xiVi_kujB_bSvCnK_Mbj-9%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2090%20143%20Q%2090%2080%2090%2060%20Q%2090%2040%2080%2030.75%20Q%2070%2021.5%2060%2041.5%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22xiVi_kujB_bSvCnK_Mbj-10%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20152.09%20133.66%20Q%20120%20165.75%20120%20122.88%20Q%20120%2080%20120%2060%20Q%20120%2040%20110%2030.75%20Q%20100%2021.5%2089%2044.5%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3Cpath%20d%3D%22M%20150.86%20140.07%20L%20156.05%20129.7%20L%20145.68%20134.89%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22all%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%2278SzmRzQp-I1tTwLOdSe-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
333
+ IconData.signs['taurus'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22-6Y1EZ5wd5mKBmpr7pZl-13%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20150%2050%20Q%20130%2050%20125%2060%20Q%20120%2070%20115%2075%20Q%20110%2080%20105%2080%20Q%20100%2080%2095%2080%20Q%2090%2080%2085%2075%20Q%2080%2070%2075%2060%20Q%2070%2050%2050%2050%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22-6Y1EZ5wd5mKBmpr7pZl-14%22%3E%3Cg%3E%3Cellipse%20cx%3D%22100%22%20cy%3D%22120%22%20rx%3D%2240%22%20ry%3D%2240%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22UmnKpyvcFwhx0IRVoUol-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
334
+ IconData.signs['virgo'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22NISO0k0YKw3UAR4flL04-8%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22NISO0k0YKw3UAR4flL04-9%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%20143%20Q%2060%2080%2060%2060%20Q%2060%2040%2060%2035%20Q%2060%2030%2050%2020%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22NISO0k0YKw3UAR4flL04-10%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2090%20143%20Q%2090%2080%2090%2060%20Q%2090%2040%2080%2030.75%20Q%2070%2021.5%2060%2041.5%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22NISO0k0YKw3UAR4flL04-11%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20150%20171.5%20Q%20120%20141.5%20120%20110.75%20Q%20120%2080%20120%2060%20Q%20120%2040%20110%2030.75%20Q%20100%2021.5%2089%2044.5%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22NISO0k0YKw3UAR4flL04-12%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20110%20161.5%20Q%20130%20141.5%20135%20131.5%20Q%20140%20121.5%20140%20106.5%20Q%20140%2091.5%20135%2086.5%20Q%20130%2081.5%20120%20101.5%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(255%2C%20255%2C%20255))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%2234pg9PiOzKNUfzoN4yK9-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
335
+
336
+ // Aspect icons
337
+ IconData.aspects['conjunction'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22gGTkRmc-nT83Q299-C-k-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22a2c2rf50iBX5W4IijcMr-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22a2c2rf50iBX5W4IijcMr-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%20108.47%2092.68%20L%20128.5%2072%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(237%2C%20237%2C%20237))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22a2c2rf50iBX5W4IijcMr-7%22%3E%3Cg%3E%3Cellipse%20cx%3D%2294%22%20cy%3D%22108%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23000000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%200%2C%200)%2C%20rgb(237%2C%20237%2C%20237))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
338
+ IconData.aspects['opposition'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22xVQDPyRT5oTKQHZ23-IM-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22xVQDPyRT5oTKQHZ23-IM-6%22%3E%3Cg%3E%3Cellipse%20cx%3D%2275%22%20cy%3D%22125%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23990000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(153%2C%200%2C%200)%2C%20rgb(255%2C%20181%2C%20181))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22xVQDPyRT5oTKQHZ23-IM-7%22%3E%3Cg%3E%3Cellipse%20cx%3D%22125%22%20cy%3D%2275%22%20rx%3D%2222.5%22%20ry%3D%2220%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23990000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(153%2C%200%2C%200)%2C%20rgb(255%2C%20181%2C%20181))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22xVQDPyRT5oTKQHZ23-IM-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2089.71%20109.86%20L%20109.27%2089.3%22%20fill%3D%22none%22%20stroke%3D%22%23990000%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(153%2C%200%2C%200)%2C%20rgb(255%2C%20181%2C%20181))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22EZUqS9dHCJ6ET5sfbTn7-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
339
+ IconData.aspects['quincunx'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%2065%20L%20130%20100%20L%2070%20135%20Z%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C100%2C100)%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bWTqftR76DX4mWTuiE5u-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
340
+ IconData.aspects['semisextile'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%2065%20L%20130%20100%20L%2070%20135%20Z%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C100%2C100)%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bWTqftR76DX4mWTuiE5u-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
341
+ IconData.aspects['semisquare'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%2065%20L%20130%20100%20L%2070%20135%20Z%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C100%2C100)%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bWTqftR76DX4mWTuiE5u-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
342
+ IconData.aspects['sesquisquare'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%2065%20L%20130%20100%20L%2070%20135%20Z%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C100%2C100)%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bWTqftR76DX4mWTuiE5u-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
343
+ IconData.aspects['sextile'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%222H47zmM80uQNvDx8u0mK-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%222H47zmM80uQNvDx8u0mK-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2060%20100%20L%20140%20100%22%20fill%3D%22none%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%222H47zmM80uQNvDx8u0mK-7%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%2070%20L%20130%20130%22%20fill%3D%22none%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%222H47zmM80uQNvDx8u0mK-8%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%20130%20L%20130%2070%22%20fill%3D%22none%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20pointer-events%3D%22stroke%22%20style%3D%22stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%221QpNWf1EhDtsYVpd6CiN-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
344
+ IconData.aspects['square'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22p0KHWF2mTDFWD3EQTWJK-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22p0KHWF2mTDFWD3EQTWJK-6%22%3E%3Cg%3E%3Crect%20x%3D%2270%22%20y%3D%2270%22%20width%3D%2260%22%20height%3D%2260%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23990000%22%20stroke-width%3D%225%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(153%2C%200%2C%200)%2C%20rgb(255%2C%20181%2C%20181))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22Uxbd23ua_aHTV4gALoXr-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
345
+ IconData.aspects['trine'] = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%20%3C!DOCTYPE%20svg%20PUBLIC%20%22-%2F%2FW3C%2F%2FDTD%20SVG%201.1%2F%2FEN%22%20%22http%3A%2F%2Fwww.w3.org%2FGraphics%2FSVG%2F1.1%2FDTD%2Fsvg11.dtd%22%3E%20%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20style%3D%22background%3A%20transparent%3B%20background-color%3A%20transparent%3B%20color-scheme%3A%20light%20dark%3B%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20version%3D%221.1%22%20width%3D%22200px%22%20height%3D%22200px%22%20viewBox%3D%22-0.5%20-0.5%20200%20200%22%3E%3Cdefs%2F%3E%3Cg%3E%3Cg%20data-cell-id%3D%220%22%3E%3Cg%20data-cell-id%3D%221%22%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-1%22%3E%3Cg%2F%3E%3Cg%20data-cell-id%3D%22vdzi6F08xrY5ULLa3aSw-6%22%3E%3Cg%3E%3Cpath%20d%3D%22M%2070%2065%20L%20130%20100%20L%2070%20135%20Z%22%20fill%3D%22%23ffffff%22%20stroke%3D%22%23009900%22%20stroke-width%3D%225%22%20stroke-miterlimit%3D%2210%22%20transform%3D%22rotate(-90%2C100%2C100)%22%20pointer-events%3D%22all%22%20style%3D%22fill%3A%20light-dark(%23ffffff%2C%20var(--ge-dark-color%2C%20%23121212))%3B%20stroke%3A%20light-dark(rgb(0%2C%20153%2C%200)%2C%20rgb(50%2C%20181%2C%2050))%3B%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3Cg%20data-cell-id%3D%22bWTqftR76DX4mWTuiE5u-1%22%3E%3Cg%3E%3Crect%20x%3D%220%22%20y%3D%220%22%20width%3D%22200%22%20height%3D%22200%22%20fill%3D%22none%22%20stroke%3D%22none%22%20pointer-events%3D%22all%22%2F%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E';
346
+
347
+ // Export individual categories for convenience
348
+ IconData.planets;
349
+ IconData.signs;
350
+ IconData.aspects;
351
+
146
352
  /**
147
353
  * HouseCalculator.js
148
354
  * Responsible for calculating house cusps for various house systems
@@ -1728,11 +1934,18 @@ class ZodiacRenderer extends BaseRenderer {
1728
1934
  */
1729
1935
  constructor(options) {
1730
1936
  super(options);
1731
- if (!options.assetBasePath) {
1732
- throw new Error("ZodiacRenderer: Missing required option assetBasePath");
1937
+
1938
+ // Store the icon provider
1939
+ this.iconProvider = options.iconProvider;
1940
+
1941
+ // assetBasePath is required only if IconProvider is not available
1942
+ if (!options.assetBasePath && !this.iconProvider) {
1943
+ throw new Error("ZodiacRenderer: Missing required option assetBasePath or iconProvider");
1733
1944
  }
1734
-
1735
- this.iconProvider = options.iconProvider; // Store the icon provider
1945
+
1946
+ // Set default assetBasePath if not provided (for backward compatibility)
1947
+ this.assetBasePath = options.assetBasePath || './assets/';
1948
+
1736
1949
  this.signIconRadius = (this.outerRadius + this.middleRadius) / 2;
1737
1950
  this.signIconSize = 30;
1738
1951
  }
@@ -1843,10 +2056,17 @@ class ZodiacRenderer extends BaseRenderer {
1843
2056
  iconHref = this.iconProvider.getZodiacIconPath(signName);
1844
2057
  } else {
1845
2058
  // Fallback to old path construction
1846
- iconHref = `${this.options.assetBasePath}svg/zodiac/zodiac-sign-${signName}.svg`;
2059
+ const basePath = this.options.assetBasePath || this.assetBasePath || './assets/';
2060
+ iconHref = `${basePath}svg/zodiac/zodiac-sign-${signName}.svg`;
1847
2061
  }
1848
2062
 
1849
- console.log(`Loading zodiac sign: ${iconHref}`);
2063
+ // Log icon path for debugging (only log first time for each sign to avoid spam)
2064
+ if (!this._loggedSigns) this._loggedSigns = {};
2065
+ if (!this._loggedSigns[signName]) {
2066
+ console.log(`ZodiacRenderer: Loading sign '${signName}':`,
2067
+ iconHref.startsWith('data:') ? 'inline data URL' : iconHref);
2068
+ this._loggedSigns[signName] = true;
2069
+ }
1850
2070
 
1851
2071
  const icon = this.svgUtils.createSVGElement("image", {
1852
2072
  x: point.x - this.signIconSize / 2, // Offset to center the icon
@@ -2165,12 +2385,17 @@ class BasePlanetRenderer extends BaseRenderer {
2165
2385
  */
2166
2386
  constructor(options) {
2167
2387
  super(options);
2168
- if (!options.assetBasePath) {
2169
- throw new Error(`${this.constructor.name}: Missing required option assetBasePath`);
2170
- }
2171
2388
 
2172
2389
  // Store the icon provider
2173
2390
  this.iconProvider = options.iconProvider;
2391
+
2392
+ // assetBasePath is required only if IconProvider is not available
2393
+ if (!options.assetBasePath && !this.iconProvider) {
2394
+ throw new Error(`${this.constructor.name}: Missing required option assetBasePath or iconProvider`);
2395
+ }
2396
+
2397
+ // Set default assetBasePath if not provided (for backward compatibility)
2398
+ this.assetBasePath = options.assetBasePath || './assets/';
2174
2399
  }
2175
2400
 
2176
2401
  /**
@@ -2272,7 +2497,8 @@ class PlanetSymbolRenderer extends BasePlanetRenderer {
2272
2497
  iconPath = this.iconProvider.getPlanetIconPath(planet.name);
2273
2498
  } else {
2274
2499
  // Fallback to old path construction if IconProvider is not available
2275
- iconPath = `${this.options.assetBasePath}svg/zodiac/zodiac-planet-${planet.name.toLowerCase()}.svg`;
2500
+ const basePath = this.options.assetBasePath || this.assetBasePath || './assets/';
2501
+ iconPath = `${basePath}svg/zodiac/zodiac-planet-${planet.name.toLowerCase()}.svg`;
2276
2502
  }
2277
2503
 
2278
2504
  // Calculate top-left position of the icon (centered on the calculated point)
@@ -3274,7 +3500,7 @@ class ClientSideAspectRenderer extends BaseRenderer { // No longer extends IAspe
3274
3500
  this.renderedAspects = []; // Store calculated aspects
3275
3501
  this._aspectCacheKey = null; // Cache key for aspect calculations
3276
3502
  this._aspectCache = []; // Cached aspect results
3277
- this.assetBasePath = options.assetBasePath || ''; // Store asset base path
3503
+ this.assetBasePath = options.assetBasePath || './assets/'; // Store asset base path with fallback
3278
3504
  this.iconProvider = options.iconProvider; // Store the icon provider
3279
3505
 
3280
3506
  // Define major aspects and their angles (can be overridden/extended by config)
@@ -3803,7 +4029,12 @@ class RendererFactory {
3803
4029
  this.config = config;
3804
4030
  this.svgNS = svgNS;
3805
4031
  this.svgUtils = ServiceRegistry.getSvgUtils();
3806
- this.iconProvider = ServiceRegistry.getIconProvider(config.assets?.basePath);
4032
+ this.iconProvider = ServiceRegistry.getIconProvider();
4033
+
4034
+ // If IconProvider is null, log error for debugging
4035
+ if (!this.iconProvider) {
4036
+ console.error('RendererFactory: IconProvider not available. Icons will not render correctly.');
4037
+ }
3807
4038
  }
3808
4039
 
3809
4040
  /**
@@ -5387,7 +5618,29 @@ class WheelChart {
5387
5618
  * See examples/factory-injection-example.js for more advanced usage patterns.
5388
5619
  */
5389
5620
 
5390
- // Initialize core services immediately
5621
+ // CRITICAL: Register IconProvider BEFORE initializing other services
5622
+ // This ensures renderers get the inline-capable provider, not a legacy stub
5623
+ const iconProvider = new IconProvider({
5624
+ useInline: true,
5625
+ basePath: './assets/svg/zodiac/' // Fallback for external mode
5626
+ });
5627
+
5628
+ // Initialize with inline data if available
5629
+ if (IconData && Object.keys(IconData.planets || {}).length > 0) {
5630
+ iconProvider.setInlineData(IconData);
5631
+ console.log('IconProvider: Initialized with inline icons -',
5632
+ 'Planets:', Object.keys(IconData.planets).length,
5633
+ 'Signs:', Object.keys(IconData.signs).length,
5634
+ 'Aspects:', Object.keys(IconData.aspects).length
5635
+ );
5636
+ } else {
5637
+ console.warn('IconProvider: IconData not loaded, will use external paths');
5638
+ }
5639
+
5640
+ // Register IconProvider BEFORE initializing services
5641
+ ServiceRegistry.register('iconProvider', iconProvider);
5642
+
5643
+ // Now initialize other core services
5391
5644
  ServiceRegistry.initializeServices();
5392
5645
 
5393
5646
  // Library version
@@ -5515,8 +5768,10 @@ var main = {
5515
5768
  ChartConfig,
5516
5769
  ServiceRegistry,
5517
5770
  SvgUtils,
5518
- AstrologyUtils
5771
+ AstrologyUtils,
5772
+ IconProvider,
5773
+ IconData
5519
5774
  };
5520
5775
 
5521
- export { AstrologyUtils, ChartConfig, ChartManager, NocturnaWheel, ServiceRegistry, SvgUtils, VERSION, WheelChart, main as default };
5776
+ export { AstrologyUtils, ChartConfig, ChartManager, IconData, IconProvider, NocturnaWheel, ServiceRegistry, SvgUtils, VERSION, WheelChart, main as default };
5522
5777
  //# sourceMappingURL=nocturna-wheel.es.js.map