@openephemeris/mcp-server 4.16.0 → 4.18.0

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +15 -15
  3. package/config/dev-allowlist.json +31 -19
  4. package/dist/backend/client.d.ts +57 -1
  5. package/dist/backend/client.js +125 -15
  6. package/dist/prompts.js +26 -24
  7. package/dist/server-sse.d.ts +18 -0
  8. package/dist/server-sse.js +41 -6
  9. package/dist/tools/apps/_render-token.d.ts +34 -0
  10. package/dist/tools/apps/_render-token.js +50 -0
  11. package/dist/tools/apps/bazi-app.js +36 -12
  12. package/dist/tools/apps/bi-wheel-app.d.ts +9 -2
  13. package/dist/tools/apps/bi-wheel-app.js +76 -117
  14. package/dist/tools/apps/bodygraph-app.js +88 -41
  15. package/dist/tools/apps/chart-wheel-app.js +56 -16
  16. package/dist/tools/apps/location-tools.js +10 -3
  17. package/dist/tools/apps/moon-phase-app.js +10 -2
  18. package/dist/tools/apps/transit-timeline-app.d.ts +3 -0
  19. package/dist/tools/apps/transit-timeline-app.js +77 -9
  20. package/dist/tools/apps/vedic-chart-app.js +10 -1
  21. package/dist/tools/datetime-historical.js +7 -2
  22. package/dist/tools/datetime.js +2 -1
  23. package/dist/tools/dev.js +7 -6
  24. package/dist/tools/specialized/electional.js +4 -3
  25. package/dist/tools/specialized/ephemeris_extended.js +19 -4
  26. package/dist/tools/specialized/hd_group.js +2 -2
  27. package/dist/tools/specialized/moon.d.ts +1 -1
  28. package/dist/tools/specialized/moon.js +51 -43
  29. package/dist/tools/specialized/progressed.js +2 -25
  30. package/dist/tools/specialized/transits.js +5 -5
  31. package/dist/ui/bazi.html +1523 -1522
  32. package/dist/ui/bi-wheel.html +406 -374
  33. package/dist/ui/bodygraph.html +83 -79
  34. package/dist/ui/chart-wheel.html +394 -361
  35. package/dist/ui/transit-timeline.html +3 -3
  36. package/dist/ui/vedic-chart.html +818 -818
  37. package/package.json +1 -1
@@ -6709,86 +6709,121 @@ function x_(e5, t2) {
6709
6709
  function S_(e5) {
6710
6710
  return (e5 % 360 + 360) % 360;
6711
6711
  }
6712
- var C_ = 250, w_ = 250, T_ = 240, E_ = 204, D_ = 190, O_ = 152, k_ = 118, A_ = 112, j_ = 15, M_ = 20;
6712
+ var C_ = "north node (mean)", w_ = "north node (true)", T_ = "south node (mean)", E_ = "south node (true)", D_ = [C_, w_, T_, E_], O_ = { [C_]: C_, north_node_mean: C_, "north node": C_, north_node: C_, "mean node": C_, mean_node: C_, [w_]: w_, north_node_true: w_, "true node": w_, true_node: w_, [T_]: T_, south_node_mean: T_, "south node": T_, south_node: T_, [E_]: E_, south_node_true: E_, "true south node": E_, true_south_node: E_ };
6713
+ function k_(e5) {
6714
+ var t2;
6715
+ return (t2 = O_[e5.trim().toLowerCase()]) == null ? null : t2;
6716
+ }
6717
+ function A_(e5) {
6718
+ return k_(e5) !== null;
6719
+ }
6720
+ var j_ = { [C_]: "\u260A\uFE0E", [w_]: "\u260A\uFE0E", [T_]: "\u260B\uFE0E", [E_]: "\u260B\uFE0E" }, M_ = { [C_]: "soul direction", [w_]: "soul direction", [T_]: "past-life gifts", [E_]: "past-life gifts" };
6721
+ function N_(e5) {
6722
+ let t2 = /* @__PURE__ */ new Set();
6723
+ for (let n2 of e5) {
6724
+ let e6 = k_(n2);
6725
+ e6 && t2.add(e6);
6726
+ }
6727
+ return t2.has("north node (mean)") && t2.has("north node (true)") || t2.has("south node (mean)") && t2.has("south node (true)");
6728
+ }
6729
+ function P_(e5, t2) {
6730
+ let n2 = new Set(e5.map((e6) => k_(e6.name)).filter(Boolean)), r2 = /* @__PURE__ */ new Set(), i2 = [[C_, w_], [T_, E_]];
6731
+ for (let [e6, a2] of i2) n2.has(e6) && n2.has(a2) && r2.add(t2 === "true" ? e6 : a2);
6732
+ return r2.size === 0 ? e5 : e5.filter((e6) => {
6733
+ var t3;
6734
+ return !r2.has((t3 = k_(e6.name)) == null ? "" : t3);
6735
+ });
6736
+ }
6737
+ var F_ = "lilith (mean)", I_ = "lilith (true)", L_ = "lilith (interpolated)", R_ = [F_, I_, L_], z_ = { [F_]: F_, lilith: F_, mean_lilith: F_, lilith_mean: F_, "mean apogee": F_, "black moon lilith": F_, [I_]: I_, lilith_true: I_, true_lilith: I_, "osculating apogee": I_, [L_]: L_, lilith_interpolated: L_, lilith_natural: L_, "interpolated apogee": L_ };
6738
+ function B_(e5) {
6739
+ var t2;
6740
+ return (t2 = z_[e5.trim().toLowerCase()]) == null ? null : t2;
6741
+ }
6742
+ var V_ = { [F_]: "\u26B8\uFE0E", [I_]: "\u26B8\uFE0E", [L_]: "\u26B8\uFE0E" }, H_ = { [F_]: "primal feminine & shadow", [I_]: "primal feminine & shadow", [L_]: "primal feminine & shadow" };
6743
+ function U_(e5) {
6744
+ var t2, n2;
6745
+ return (t2 = (n2 = k_(e5)) == null ? B_(e5) : n2) == null ? e5 : t2;
6746
+ }
6747
+ var W_ = 250, G_ = 250, K_ = 240, q_ = 204, J_ = 190, Y_ = 152, X_ = 118, Z_ = 112, Q_ = 15, $_ = 20;
6713
6748
  function Y(e5, t2, n2) {
6714
6749
  let r2 = -(e5 - n2 + 180) * Math.PI / 180;
6715
- return { x: C_ + t2 * Math.cos(r2), y: w_ + t2 * Math.sin(r2) };
6750
+ return { x: W_ + t2 * Math.cos(r2), y: G_ + t2 * Math.sin(r2) };
6716
6751
  }
6717
6752
  function X(e5) {
6718
6753
  return document.createElementNS("http://www.w3.org/2000/svg", e5);
6719
6754
  }
6720
- function N_(e5, t2, n2, r2, i2) {
6755
+ function ev(e5, t2, n2, r2, i2) {
6721
6756
  let a2 = +(((t2 - e5) % 360 + 360) % 360 > 180), o2 = Y(e5, n2, i2), s2 = Y(e5, r2, i2), c2 = Y(t2, r2, i2), l2 = Y(t2, n2, i2);
6722
6757
  return ["M ".concat(o2.x.toFixed(2), " ").concat(o2.y.toFixed(2)), "L ".concat(s2.x.toFixed(2), " ").concat(s2.y.toFixed(2)), "A ".concat(r2, " ").concat(r2, " 0 ").concat(a2, " 0 ").concat(c2.x.toFixed(2), " ").concat(c2.y.toFixed(2)), "L ".concat(l2.x.toFixed(2), " ").concat(l2.y.toFixed(2)), "A ".concat(n2, " ").concat(n2, " 0 ").concat(a2, " 1 ").concat(o2.x.toFixed(2), " ").concat(o2.y.toFixed(2)), "Z"].join(" ");
6723
6758
  }
6724
- var P_ = { sun: "\u2609\uFE0E", moon: "\u263D\uFE0E", mercury: "\u263F\uFE0E", venus: "\u2640\uFE0E", mars: "\u2642\uFE0E", jupiter: "\u2643\uFE0E", saturn: "\u2644\uFE0E", uranus: "\u2645\uFE0E", neptune: "\u2646\uFE0E", pluto: "\u2647\uFE0E", "north node": "\u260A\uFE0E", "south node": "\u260B\uFE0E", chiron: "\u26B7\uFE0E", "true node": "\u260A\uFE0E", mean_lilith: "\u26B8\uFE0E", lilith: "\u26B8\uFE0E", true_lilith: "\u26B8\uFE0E", ceres: "\u26B3\uFE0E", juno: "\u26B5\uFE0E", vesta: "\u26B6\uFE0E", pallas: "\u26B4\uFE0E", pholus: "\u2BDB\uFE0E", vertex: "Vx", part_of_fortune: "\u2295\uFE0E", "part of fortune": "\u2295\uFE0E", eris: "\u2BF0\uFE0E", sedna: "\u2BF2\uFE0E" }, F_ = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), I_ = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], L_ = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
6725
- function R_(e5) {
6759
+ var tv = { sun: "\u2609\uFE0E", moon: "\u263D\uFE0E", mercury: "\u263F\uFE0E", venus: "\u2640\uFE0E", mars: "\u2642\uFE0E", jupiter: "\u2643\uFE0E", saturn: "\u2644\uFE0E", uranus: "\u2645\uFE0E", neptune: "\u2646\uFE0E", pluto: "\u2647\uFE0E", "north node": "\u260A\uFE0E", "south node": "\u260B\uFE0E", chiron: "\u26B7\uFE0E", "true node": "\u260A\uFE0E", ...j_, ...V_, mean_lilith: "\u26B8\uFE0E", lilith: "\u26B8\uFE0E", true_lilith: "\u26B8\uFE0E", ceres: "\u26B3\uFE0E", juno: "\u26B5\uFE0E", vesta: "\u26B6\uFE0E", pallas: "\u26B4\uFE0E", pholus: "\u2BDB\uFE0E", vertex: "Vx", part_of_fortune: "\u2295\uFE0E", "part of fortune": "\u2295\uFE0E", eris: "\u2BF0\uFE0E", sedna: "\u2BF2\uFE0E" }, nv = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), rv = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], iv = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
6760
+ function av(e5) {
6726
6761
  var t2;
6727
6762
  let n2 = e5.toLowerCase(), r2 = "--aspect-".concat(n2);
6728
6763
  return getComputedStyle(document.documentElement).getPropertyValue(r2).trim() || ((t2 = { conjunction: "#9a7fd4", opposition: "#e05252", trine: "#52a8e0", square: "#e08a52", sextile: "#52c07a", quincunx: "#c0b052", semisquare: "#b07a5a" }[n2]) == null ? "#888" : t2);
6729
6764
  }
6730
- var z_ = p_, B_ = (e5) => l_(e5, z_());
6731
- function V_(e5) {
6765
+ var ov = p_, sv = (e5) => l_(e5, ov());
6766
+ function cv(e5) {
6732
6767
  let t2 = "--planet-".concat(e5.toLowerCase().replace(/\s+/g, "-"));
6733
6768
  return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
6734
6769
  }
6735
- var H_ = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"]), U_ = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), W_ = /* @__PURE__ */ new Set([...H_, ...U_]);
6736
- function G_(e5) {
6770
+ var lv = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node", ...D_]), uv = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", ...R_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), dv = /* @__PURE__ */ new Set([...lv, ...uv]);
6771
+ function fv(e5) {
6737
6772
  let t2 = (e5 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
6738
- return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(I_[n2]);
6773
+ return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(rv[n2]);
6739
6774
  }
6740
6775
  function Z(e5) {
6741
6776
  return e5.replace(/\b\w/g, (e6) => e6.toUpperCase());
6742
6777
  }
6743
- var K_ = "true";
6744
- function q_(e5) {
6745
- K_ = e5;
6778
+ var pv = "true";
6779
+ function mv(e5) {
6780
+ pv = e5;
6746
6781
  }
6747
- function J_(e5) {
6748
- let t2 = e5.some((e6) => e6.name.toLowerCase() === "true node"), n2 = e5.some((e6) => e6.name.toLowerCase() === "north node");
6749
- if (!t2 || !n2) return e5;
6750
- let r2 = K_ === "true" ? "north node" : "true node";
6751
- return e5.filter((e6) => e6.name.toLowerCase() !== r2);
6782
+ function hv(e5) {
6783
+ return P_(e5.map((e6) => {
6784
+ let t2 = U_(e6.name);
6785
+ return t2 === e6.name ? e6 : { ...e6, name: t2 };
6786
+ }), pv);
6752
6787
  }
6753
- function Y_(e5) {
6754
- return Array.isArray(e5) ? J_(e5) : e5 && typeof e5 == "object" ? J_(Object.entries(e5).filter(([e6]) => W_.has(e6.toLowerCase())).map(([e6, t2]) => {
6788
+ function gv(e5) {
6789
+ return Array.isArray(e5) ? hv(e5) : e5 && typeof e5 == "object" ? hv(Object.entries(e5).filter(([e6]) => dv.has(e6.toLowerCase())).map(([e6, t2]) => {
6755
6790
  var n2, r2, i2, a2, o2, s2;
6756
6791
  return { name: e6.toLowerCase(), longitude: (n2 = (r2 = t2.longitude) == null ? t2.lon : r2) == null ? 0 : n2, speed: (i2 = t2.longitude_speed) == null ? t2.speed : i2, retrograde: !!((a2 = t2.is_retrograde) == null ? t2.retrograde : a2), sign: (o2 = t2.sign_name) == null ? t2.sign : o2, house: (s2 = t2.house_number) == null ? t2.house : s2 };
6757
6792
  })) : [];
6758
6793
  }
6759
- var X_ = document.getElementById("tooltip");
6760
- function Z_(e5, t2, n2, r2, i2) {
6761
- X_.innerHTML = '\n <div class="tooltip-title">'.concat(n2, '</div>\n <div class="tooltip-detail">').concat(r2, "</div>\n ").concat(i2 ? '<div class="tooltip-hint">'.concat(i2, "</div>") : "", "\n ");
6762
- let a2 = X_.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
6763
- c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), X_.style.left = "".concat(Math.max(14, c2), "px"), X_.style.top = "".concat(Math.max(14, l2), "px"), X_.classList.add("visible");
6794
+ var _v = document.getElementById("tooltip");
6795
+ function vv(e5, t2, n2, r2, i2) {
6796
+ _v.innerHTML = '\n <div class="tooltip-title">'.concat(n2, '</div>\n <div class="tooltip-detail">').concat(r2, "</div>\n ").concat(i2 ? '<div class="tooltip-hint">'.concat(i2, "</div>") : "", "\n ");
6797
+ let a2 = _v.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
6798
+ c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), _v.style.left = "".concat(Math.max(14, c2), "px"), _v.style.top = "".concat(Math.max(14, l2), "px"), _v.classList.add("visible");
6764
6799
  }
6765
- function Q_() {
6766
- X_.classList.remove("visible");
6800
+ function yv() {
6801
+ _v.classList.remove("visible");
6767
6802
  }
6768
- var $_ = { sun: "identity & vitality", moon: "emotions & instincts", mercury: "mind & communication", venus: "love & values", mars: "drive & desire", jupiter: "expansion & meaning", saturn: "discipline & mastery", uranus: "innovation & rebellion", neptune: "dreams & transcendence", pluto: "transformation & power", chiron: "wound & healing", "north node": "soul direction", "south node": "past-life gifts", "true node": "soul direction", mean_lilith: "primal feminine & shadow", lilith: "primal feminine & shadow", true_lilith: "primal feminine & shadow", ceres: "nurturing & sustenance", juno: "partnership & commitment", vesta: "devotion & sacred focus", pallas: "wisdom & strategy", pholus: "catalyst & small cause, big effect", vertex: "fated encounters", part_of_fortune: "joy & worldly success", "part of fortune": "joy & worldly success", eris: "discord & radical individuation", sedna: "deep betrayal & transcendence" }, ev = { 1: "self & first impressions", 2: "resources & values", 3: "communication & learning", 4: "home & roots", 5: "creativity & joy", 6: "health & service", 7: "partnerships & others", 8: "transformation & shared resources", 9: "philosophy & exploration", 10: "career & public role", 11: "community & ideals", 12: "solitude & the unconscious" }, tv = { Aries: "initiative & courage", Taurus: "stability & patience", Gemini: "curiosity & adaptability", Cancer: "nurturing & emotional depth", Leo: "self-expression & confidence", Virgo: "precision & service", Libra: "harmony & relationships", Scorpio: "intensity & transformation", Sagittarius: "expansion & seeking", Capricorn: "discipline & ambition", Aquarius: "innovation & vision", Pisces: "empathy & imagination" }, nv = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
6769
- function rv(e5) {
6803
+ var bv = { sun: "identity & vitality", moon: "emotions & instincts", mercury: "mind & communication", venus: "love & values", mars: "drive & desire", jupiter: "expansion & meaning", saturn: "discipline & mastery", uranus: "innovation & rebellion", neptune: "dreams & transcendence", pluto: "transformation & power", chiron: "wound & healing", "north node": "soul direction", "south node": "past-life gifts", "true node": "soul direction", ...M_, ...H_, mean_lilith: "primal feminine & shadow", lilith: "primal feminine & shadow", true_lilith: "primal feminine & shadow", ceres: "nurturing & sustenance", juno: "partnership & commitment", vesta: "devotion & sacred focus", pallas: "wisdom & strategy", pholus: "catalyst & small cause, big effect", vertex: "fated encounters", part_of_fortune: "joy & worldly success", "part of fortune": "joy & worldly success", eris: "discord & radical individuation", sedna: "deep betrayal & transcendence" }, xv = { 1: "self & first impressions", 2: "resources & values", 3: "communication & learning", 4: "home & roots", 5: "creativity & joy", 6: "health & service", 7: "partnerships & others", 8: "transformation & shared resources", 9: "philosophy & exploration", 10: "career & public role", 11: "community & ideals", 12: "solitude & the unconscious" }, Sv = { Aries: "initiative & courage", Taurus: "stability & patience", Gemini: "curiosity & adaptability", Cancer: "nurturing & emotional depth", Leo: "self-expression & confidence", Virgo: "precision & service", Libra: "harmony & relationships", Scorpio: "intensity & transformation", Sagittarius: "expansion & seeking", Capricorn: "discipline & ambition", Aquarius: "innovation & vision", Pisces: "empathy & imagination" }, Cv = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
6804
+ function wv(e5) {
6770
6805
  return Math.floor((e5 % 360 + 360) % 360 / 30);
6771
6806
  }
6772
- var iv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, av = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
6773
- function ov(e5, t2) {
6774
- let n2 = e5.toLowerCase(), r2 = rv(t2), i2 = iv[n2];
6807
+ var Tv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, Ev = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
6808
+ function Dv(e5, t2) {
6809
+ let n2 = e5.toLowerCase(), r2 = wv(t2), i2 = Tv[n2];
6775
6810
  if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
6776
6811
  if (i2 && i2.map((e6) => (e6 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
6777
- let a2 = av[n2];
6812
+ let a2 = Ev[n2];
6778
6813
  return a2 !== void 0 && a2 === r2 ? { type: "exaltation", label: "Exaltation", emoji: "\u2605", cssClass: "dignity-exaltation" } : a2 !== void 0 && (a2 + 6) % 12 === r2 ? { type: "fall", label: "Fall", emoji: "\u2193", cssClass: "dignity-fall" } : null;
6779
6814
  }
6780
- var sv = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], cv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
6781
- function lv(e5, t2) {
6815
+ var Ov = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], kv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
6816
+ function Av(e5, t2) {
6782
6817
  return [e5.toLowerCase(), t2.toLowerCase()].sort().join("|");
6783
6818
  }
6784
- function uv(e5, t2) {
6819
+ function jv(e5, t2) {
6785
6820
  return e5.filter((e6) => {
6786
6821
  var n2;
6787
6822
  return ((n2 = e6.type) == null ? "" : n2).toLowerCase() === t2;
6788
6823
  });
6789
6824
  }
6790
- function dv(e5, t2) {
6791
- let n2 = [], r2 = uv(e5, "square"), i2 = uv(e5, "opposition"), a2 = uv(e5, "trine"), o2 = uv(e5, "sextile"), s2 = uv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
6825
+ function Mv(e5, t2) {
6826
+ let n2 = [], r2 = jv(e5, "square"), i2 = jv(e5, "opposition"), a2 = jv(e5, "trine"), o2 = jv(e5, "sextile"), s2 = jv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
6792
6827
  for (let e6 of i2) {
6793
6828
  let i3 = e6.planet1.toLowerCase(), a3 = e6.planet2.toLowerCase(), o3 = r2.filter((e7) => e7.planet1.toLowerCase() === i3 || e7.planet2.toLowerCase() === i3);
6794
6829
  for (let e7 of o3) {
@@ -6797,8 +6832,8 @@ function dv(e5, t2) {
6797
6832
  let s3 = [i3, a3, o4].sort().join("|");
6798
6833
  if (!c2.has(s3) && r2.find((e8) => e8.planet1.toLowerCase() === o4 && e8.planet2.toLowerCase() === a3 || e8.planet2.toLowerCase() === o4 && e8.planet1.toLowerCase() === a3)) {
6799
6834
  c2.add(s3);
6800
- let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(cv[rv(e8.longitude)]) : "";
6801
- n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [lv(i3, a3), lv(i3, o4), lv(a3, o4)] });
6835
+ let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(kv[wv(e8.longitude)]) : "";
6836
+ n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [Av(i3, a3), Av(i3, o4), Av(a3, o4)] });
6802
6837
  break;
6803
6838
  }
6804
6839
  }
@@ -6808,7 +6843,7 @@ function dv(e5, t2) {
6808
6843
  let r3 = a2[e6], i3 = a2[t3], o3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], s3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], c3 = o3.find((e7) => s3.includes(e7));
6809
6844
  if (!c3) continue;
6810
6845
  let u3 = o3.find((e7) => e7 !== c3), d3 = s3.find((e7) => e7 !== c3), f3 = [u3, c3, d3].sort().join("|");
6811
- l2.has(f3) || a2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Z(u3), " \xB7 ").concat(Z(c3), " \xB7 ").concat(Z(d3)), planets: [u3, c3, d3], aspectKeys: [lv(u3, c3), lv(c3, d3), lv(u3, d3)] }));
6846
+ l2.has(f3) || a2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Z(u3), " \xB7 ").concat(Z(c3), " \xB7 ").concat(Z(d3)), planets: [u3, c3, d3], aspectKeys: [Av(u3, c3), Av(c3, d3), Av(u3, d3)] }));
6812
6847
  }
6813
6848
  if (i2.length >= 2 && r2.length >= 4) for (let e6 = 0; e6 < i2.length; e6++) for (let a3 = e6 + 1; a3 < i2.length; a3++) {
6814
6849
  let o3 = i2[e6], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
@@ -6819,19 +6854,19 @@ function dv(e5, t2) {
6819
6854
  var n3, r3;
6820
6855
  return { name: e8, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e8)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
6821
6856
  }).sort((e8, t3) => e8.lon - t3.lon).map((e8) => e8.name);
6822
- n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [lv(c3, l3), lv(u3, d3), ...f3.map(([e8, t3]) => lv(e8, t3))] });
6857
+ n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [Av(c3, l3), Av(u3, d3), ...f3.map(([e8, t3]) => Av(e8, t3))] });
6823
6858
  }
6824
6859
  }
6825
- let u2 = /* @__PURE__ */ new Set(["north node", "south node", "true node", "chiron"]), d2 = t2.filter((e6) => !u2.has(e6.name.toLowerCase())).map((e6) => ({ name: e6.name.toLowerCase(), lon: e6.longitude })), f2 = /* @__PURE__ */ new Map();
6860
+ let u2 = /* @__PURE__ */ new Set(["chiron"]), d2 = t2.filter((e6) => !u2.has(e6.name.toLowerCase()) && !A_(e6.name)).map((e6) => ({ name: e6.name.toLowerCase(), lon: e6.longitude })), f2 = /* @__PURE__ */ new Map();
6826
6861
  for (let { name: e6, lon: t3 } of d2) {
6827
6862
  var p2;
6828
- let n3 = rv(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
6863
+ let n3 = wv(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
6829
6864
  r3.push(e6), f2.set(n3, r3);
6830
6865
  }
6831
6866
  for (let [e6, t3] of f2) if (t3.length >= 3) {
6832
6867
  let r3 = [...t3].sort().join("|"), i3 = [];
6833
- for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(lv(t3[e7], t3[n3]));
6834
- n2.push({ name: "Stellium", description: "".concat(I_[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
6868
+ for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(Av(t3[e7], t3[n3]));
6869
+ n2.push({ name: "Stellium", description: "".concat(rv[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
6835
6870
  }
6836
6871
  let m2 = [...d2].sort((e6, t3) => e6.lon - t3.lon), h2 = [...m2, ...m2.map((e6) => ({ ...e6, lon: e6.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
6837
6872
  for (let e6 = 0; e6 < h2.length - 2; e6++) {
@@ -6844,7 +6879,7 @@ function dv(e5, t2) {
6844
6879
  if (g2.has(t4)) continue;
6845
6880
  if (g2.add(t4), !n2.some((e8) => e8._dedupeKey === t4)) {
6846
6881
  let t5 = [];
6847
- for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(lv(e7[n3], e7[r4]));
6882
+ for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(Av(e7[n3], e7[r4]));
6848
6883
  n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e7.map(Z).join(", ")), planets: e7, aspectKeys: t5 });
6849
6884
  }
6850
6885
  }
@@ -6854,7 +6889,7 @@ function dv(e5, t2) {
6854
6889
  let r3 = s2[e6], i3 = s2[t3], a3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], c3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], l3 = a3.find((e7) => c3.includes(e7));
6855
6890
  if (!l3) continue;
6856
6891
  let u3 = a3.find((e7) => e7 !== l3), d3 = c3.find((e7) => e7 !== l3), f3 = [l3, u3, d3].sort().join("|");
6857
- _2.has(f3) || o2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [lv(l3, u3), lv(l3, d3), lv(u3, d3)] }));
6892
+ _2.has(f3) || o2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [Av(l3, u3), Av(l3, d3), Av(u3, d3)] }));
6858
6893
  }
6859
6894
  let v2 = /* @__PURE__ */ new Set(), ee2 = n2.filter((e6) => e6.name === "Grand Trine");
6860
6895
  for (let e6 of ee2) {
@@ -6865,43 +6900,43 @@ function dv(e5, t2) {
6865
6900
  let p3 = o2.find((e7) => e7.planet1.toLowerCase() === f3 && e7.planet2.toLowerCase() === l3 || e7.planet2.toLowerCase() === f3 && e7.planet1.toLowerCase() === l3), m3 = o2.find((e7) => e7.planet1.toLowerCase() === f3 && e7.planet2.toLowerCase() === u3 || e7.planet2.toLowerCase() === f3 && e7.planet1.toLowerCase() === u3);
6866
6901
  if (!p3 || !m3) continue;
6867
6902
  let h3 = [t3, r3, a3, f3].sort().join("|");
6868
- v2.has(h3) || (v2.add(h3), n2.push({ name: "Kite", description: "Apex: ".concat(Z(f3), " \xB7 Tail: ").concat(Z(c3)), planets: [t3, r3, a3, f3], aspectKeys: [...e6.aspectKeys, lv(f3, c3), lv(f3, l3), lv(f3, u3)] }));
6903
+ v2.has(h3) || (v2.add(h3), n2.push({ name: "Kite", description: "Apex: ".concat(Z(f3), " \xB7 Tail: ").concat(Z(c3)), planets: [t3, r3, a3, f3], aspectKeys: [...e6.aspectKeys, Av(f3, c3), Av(f3, l3), Av(f3, u3)] }));
6869
6904
  }
6870
6905
  }
6871
6906
  for (let e6 of n2) delete e6._dedupeKey;
6872
6907
  return n2;
6873
6908
  }
6874
- var fv = null, pv = null, Q = null, mv = null, hv = null, gv = null;
6875
- function _v(e5) {
6876
- gv = e5;
6909
+ var Nv = null, Pv = null, Q = null, Fv = null, Iv = null, Lv = null;
6910
+ function Rv(e5) {
6911
+ Lv = e5;
6877
6912
  }
6878
- var vv = /* @__PURE__ */ new Map();
6879
- function yv() {
6913
+ var zv = /* @__PURE__ */ new Map();
6914
+ function Bv() {
6880
6915
  var e5;
6881
- if (fv) return fv;
6916
+ if (Nv) return Nv;
6882
6917
  let t2 = document.getElementById("info-panel");
6883
- if (t2) return fv = t2, fv;
6884
- fv = document.createElement("div"), fv.id = "info-panel", fv.className = "info-panel";
6918
+ if (t2) return Nv = t2, Nv;
6919
+ Nv = document.createElement("div"), Nv.id = "info-panel", Nv.className = "info-panel";
6885
6920
  let n2 = document.getElementById("chart-container");
6886
- return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(fv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(fv), fv;
6921
+ return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(Nv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(Nv), Nv;
6887
6922
  }
6888
- function bv(e5, t2, n2) {
6923
+ function Vv(e5, t2, n2) {
6889
6924
  var r2, i2, a2, o2;
6890
- let s2 = yv(), c2 = (r2 = P_[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = F_[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = ov(t2.name, t2.longitude), d2 = u2 ? '<span class="dignity-badge '.concat(u2.cssClass, '" title="').concat(u2.label, '">').concat(u2.emoji, " ").concat(u2.label, "</span>") : "", f2 = n2.filter((e6) => e6.planet1.toLowerCase() === t2.name.toLowerCase() || e6.planet2.toLowerCase() === t2.name.toLowerCase()).sort((e6, t3) => {
6925
+ let s2 = Bv(), c2 = (r2 = tv[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = nv[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = Dv(t2.name, t2.longitude), d2 = u2 ? '<span class="dignity-badge '.concat(u2.cssClass, '" title="').concat(u2.label, '">').concat(u2.emoji, " ").concat(u2.label, "</span>") : "", f2 = n2.filter((e6) => e6.planet1.toLowerCase() === t2.name.toLowerCase() || e6.planet2.toLowerCase() === t2.name.toLowerCase()).sort((e6, t3) => {
6891
6926
  var n3, r3;
6892
6927
  return ((n3 = e6.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
6893
6928
  }), p2 = f2.length ? f2.map((e6) => {
6894
6929
  var n3, r3, i3, a3, o3, s3, c3;
6895
- let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = P_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = L_[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = R_((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
6930
+ let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = tv[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = iv[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = av((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
6896
6931
  return '<div class="aspect-row">\n <span class="aspect-dot" style="background:'.concat(f3, '"></span>\n <span class="aspect-sym" style="color:').concat(f3, '">').concat(d3, '</span>\n <span class="aspect-other">').concat(u3, " ").concat(Z(l3), '</span>\n <span class="aspect-meta">').concat(p3, " ").concat(m3, "</span>\n </div>");
6897
- }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = hv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6898
- s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(G_(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
6899
- Dv(), Fv();
6932
+ }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6933
+ s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(fv(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
6934
+ Jv(), ny();
6900
6935
  }), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
6901
6936
  var e6, n3, r3, i3, a3;
6902
- if (!hv) return;
6937
+ if (!Iv) return;
6903
6938
  let o3 = document.getElementById("ask-claude-btn");
6904
- !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), hv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? G_(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
6939
+ !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), Iv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? fv(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
6905
6940
  o3.textContent = "\u2713 Sent", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
6906
6941
  o3.textContent = "\u2728 Interpret this", o3.classList.remove("sent"), o3.disabled = false;
6907
6942
  }, 2500);
@@ -6910,16 +6945,16 @@ function bv(e5, t2, n2) {
6910
6945
  }));
6911
6946
  });
6912
6947
  }
6913
- function xv(e5, t2, n2) {
6948
+ function Hv(e5, t2, n2) {
6914
6949
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
6915
- let p2 = yv(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = P_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = P_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = L_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = R_((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(G_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(G_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = hv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6950
+ let p2 = Bv(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = tv[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = tv[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = iv[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = av((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(fv(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(fv(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6916
6951
  p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(ee2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(y2).concat(b2 ? " \xB7 ".concat(b2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(x2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(ee2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(S2, "</div>\n </div>\n </div>\n </div>\n ").concat(C2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
6917
- Dv(), Fv();
6952
+ Jv(), ny();
6918
6953
  }), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
6919
6954
  var e6, n3, r3, i3, a3, o3, s3, c3;
6920
- if (!hv) return;
6955
+ if (!Iv) return;
6921
6956
  let l3 = document.getElementById("ask-claude-btn");
6922
- !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), hv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
6957
+ !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), Iv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
6923
6958
  l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
6924
6959
  l3.textContent = "Interpret", l3.classList.remove("sent"), l3.disabled = false;
6925
6960
  }, 2500);
@@ -6928,22 +6963,22 @@ function xv(e5, t2, n2) {
6928
6963
  }));
6929
6964
  });
6930
6965
  }
6931
- function Sv(e5, t2, n2) {
6966
+ function Uv(e5, t2, n2) {
6932
6967
  var r2, i2, a2, o2, s2;
6933
- let c2 = yv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = F_[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? I_[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
6968
+ let c2 = Bv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = nv[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? rv[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
6934
6969
  var t3;
6935
- let n3 = (t3 = P_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = G_(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6970
+ let n3 = (t3 = tv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = fv(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6936
6971
  return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
6937
- }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = hv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6972
+ }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6938
6973
  c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>House ').concat(t2.number, '</strong>\n </div>\n <div class="info-pos">').concat(u2, " ").concat(d2, " on cusp").concat(t2.ruler ? " \xB7 ruled by ".concat(Z(t2.ruler)) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in House ').concat(t2.number, '</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
6939
- Dv(), Fv();
6974
+ Jv(), ny();
6940
6975
  }), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
6941
6976
  var e6;
6942
- if (!hv) return;
6977
+ if (!Iv) return;
6943
6978
  let n3 = document.getElementById("ask-claude-btn");
6944
- !n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), hv({ type: "house", data: { house_number: t2.number, sign: d2, cusp_longitude: t2.cusp_lon, ruler: (e6 = t2.ruler) == null ? null : e6, planets_in_house: f2.map((e7) => {
6979
+ !n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), Iv({ type: "house", data: { house_number: t2.number, sign: d2, cusp_longitude: t2.cusp_lon, ruler: (e6 = t2.ruler) == null ? null : e6, planets_in_house: f2.map((e7) => {
6945
6980
  var t3, n4;
6946
- return { name: e7.name, sign: (t3 = e7.sign) == null ? G_(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6981
+ return { name: e7.name, sign: (t3 = e7.sign) == null ? fv(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6947
6982
  }) } }).then(() => {
6948
6983
  n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
6949
6984
  n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
@@ -6953,22 +6988,22 @@ function Sv(e5, t2, n2) {
6953
6988
  }));
6954
6989
  });
6955
6990
  }
6956
- var Cv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
6957
- function wv(e5, t2, n2) {
6991
+ var Wv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
6992
+ function Gv(e5, t2, n2) {
6958
6993
  var r2, i2, a2, o2, s2;
6959
- let c2 = yv(), l2 = I_[t2], u2 = F_[t2], d2 = Z(sv[t2]), f2 = Z(cv[t2]), p2 = (r2 = Cv[l2]) == null ? "" : r2, m2 = (i2 = P_[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
6994
+ let c2 = Bv(), l2 = rv[t2], u2 = nv[t2], d2 = Z(Ov[t2]), f2 = Z(kv[t2]), p2 = (r2 = Wv[l2]) == null ? "" : r2, m2 = (i2 = tv[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
6960
6995
  var t3;
6961
- let n3 = (t3 = P_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = ov(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
6996
+ let n3 = (t3 = tv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = Dv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
6962
6997
  return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e6.name)).concat(a3).concat(s3, '</span>\n <span class="aspect-meta">').concat(r3, "\xB0").concat(i3.toString().padStart(2, "0"), "\u2032</span>\n </div>");
6963
- }).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = hv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
6964
- c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(B_(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
6965
- Dv(), Fv();
6998
+ }).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = Iv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
6999
+ c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(sv(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
7000
+ Jv(), ny();
6966
7001
  }), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
6967
- if (!hv) return;
7002
+ if (!Iv) return;
6968
7003
  let e6 = document.getElementById("sign-ask-claude-btn");
6969
- !e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), hv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
7004
+ !e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), Iv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
6970
7005
  var t3, n3;
6971
- return { name: e7.name, longitude: e7.longitude, position: G_(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
7006
+ return { name: e7.name, longitude: e7.longitude, position: fv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
6972
7007
  }) } }).then(() => {
6973
7008
  e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
6974
7009
  e6.textContent = "Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
@@ -6978,17 +7013,17 @@ function wv(e5, t2, n2) {
6978
7013
  }));
6979
7014
  });
6980
7015
  }
6981
- var Tv = { ASC: { title: "Ascendant", symbol: "AC", keyword: "self & first impressions", meaning: "The Ascendant is the mask you wear before the world \u2014 your embodied presence, physical appearance, and instinctive approach to new situations. It colours every first impression you make.", themes: ["identity", "appearance", "beginnings", "vitality", "self-projection"] }, DSC: { title: "Descendant", symbol: "DC", keyword: "partnership & mirrors", meaning: "The Descendant describes what you seek in others and the qualities you project onto relationships. It is the shadow-partner of the Ascendant \u2014 the face you recognise in those you're drawn to.", themes: ["partnership", "marriage", "open enemies", "projection", "attraction"] }, MC: { title: "Midheaven", symbol: "MC", keyword: "vocation & public legacy", meaning: "The Midheaven (Medium Coeli) marks the highest point of the chart and governs reputation, career, and the long arc of your public life. It describes the contribution the world remembers you for.", themes: ["career", "ambition", "reputation", "authority", "life direction"] }, IC: { title: "Imum Coeli", symbol: "IC", keyword: "roots & inner foundation", meaning: "The IC (Imum Coeli) anchors the chart at its lowest point \u2014 home, ancestry, psychological foundations, and the private self that sustains the public Midheaven. It is where you return to be restored.", themes: ["home", "family", "ancestry", "inner life", "psychological roots"] } };
6982
- function Ev(e5, t2, n2) {
7016
+ var Kv = { ASC: { title: "Ascendant", symbol: "AC", keyword: "self & first impressions", meaning: "The Ascendant is the mask you wear before the world \u2014 your embodied presence, physical appearance, and instinctive approach to new situations. It colours every first impression you make.", themes: ["identity", "appearance", "beginnings", "vitality", "self-projection"] }, DSC: { title: "Descendant", symbol: "DC", keyword: "partnership & mirrors", meaning: "The Descendant describes what you seek in others and the qualities you project onto relationships. It is the shadow-partner of the Ascendant \u2014 the face you recognise in those you're drawn to.", themes: ["partnership", "marriage", "open enemies", "projection", "attraction"] }, MC: { title: "Midheaven", symbol: "MC", keyword: "vocation & public legacy", meaning: "The Midheaven (Medium Coeli) marks the highest point of the chart and governs reputation, career, and the long arc of your public life. It describes the contribution the world remembers you for.", themes: ["career", "ambition", "reputation", "authority", "life direction"] }, IC: { title: "Imum Coeli", symbol: "IC", keyword: "roots & inner foundation", meaning: "The IC (Imum Coeli) anchors the chart at its lowest point \u2014 home, ancestry, psychological foundations, and the private self that sustains the public Midheaven. It is where you return to be restored.", themes: ["home", "family", "ancestry", "inner life", "psychological roots"] } };
7017
+ function qv(e5, t2, n2) {
6983
7018
  var r2, i2;
6984
- let a2 = yv(), o2 = Tv[t2];
7019
+ let a2 = Bv(), o2 = Kv[t2];
6985
7020
  if (!o2) return;
6986
- let s2 = G_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(sv[c2]), u2 = Z(cv[c2]), d2 = F_[c2], f2 = B_(c2);
7021
+ let s2 = fv(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(Ov[c2]), u2 = Z(kv[c2]), d2 = nv[c2], f2 = sv(c2);
6987
7022
  a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " &nbsp;\xB7&nbsp; ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
6988
- Dv(), Fv();
7023
+ Jv(), ny();
6989
7024
  }), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
6990
7025
  let t3 = e6.currentTarget;
6991
- t3.textContent = "Sending\u2026", t3.disabled = true, hv == null || hv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: I_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
7026
+ t3.textContent = "Sending\u2026", t3.disabled = true, Iv == null || Iv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: rv[c2], position: s2, element: l2, modality: u2 } }).then(() => {
6992
7027
  t3.textContent = "Sent", setTimeout(() => {
6993
7028
  t3.textContent = "Interpret ".concat(o2.title), t3.disabled = false;
6994
7029
  }, 2500);
@@ -6997,22 +7032,22 @@ function Ev(e5, t2, n2) {
6997
7032
  });
6998
7033
  });
6999
7034
  }
7000
- function Dv() {
7001
- fv == null || fv.classList.remove("visible"), pv = null, jv(), gv == null || gv(null);
7035
+ function Jv() {
7036
+ Nv == null || Nv.classList.remove("visible"), Pv = null, Qv(), Lv == null || Lv(null);
7002
7037
  }
7003
- var Ov = null, kv = 0;
7004
- function Av(e5, t2 = false) {
7005
- let n2 = Ov;
7038
+ var Yv = null, Xv = 0;
7039
+ function Zv(e5, t2 = false) {
7040
+ let n2 = Yv;
7006
7041
  if (!n2) return;
7007
- let r2 = kv, i2 = Y(e5, T_, r2), a2 = Y(e5, 198, r2);
7042
+ let r2 = Xv, i2 = Y(e5, K_, r2), a2 = Y(e5, 198, r2);
7008
7043
  n2.setAttribute("x1", i2.x.toFixed(1)), n2.setAttribute("y1", i2.y.toFixed(1)), n2.setAttribute("x2", a2.x.toFixed(1)), n2.setAttribute("y2", a2.y.toFixed(1)), n2.style.opacity = "1", n2.style.strokeWidth = t2 ? "1.5" : "1";
7009
7044
  }
7010
- function jv() {
7011
- Ov && (Ov.style.opacity = "0");
7045
+ function Qv() {
7046
+ Yv && (Yv.style.opacity = "0");
7012
7047
  }
7013
- function Mv(e5) {
7048
+ function $v(e5) {
7014
7049
  let t2 = e5.toLowerCase(), n2 = /* @__PURE__ */ new Set();
7015
- vv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
7050
+ zv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
7016
7051
  let o2 = a2.split("|");
7017
7052
  if (o2.includes(t2)) {
7018
7053
  e6.style.stroke = r2, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e7) => {
@@ -7032,9 +7067,9 @@ function Mv(e5) {
7032
7067
  e6.classList.toggle("dim", i2 !== t2 && !n2.has(i2));
7033
7068
  });
7034
7069
  }
7035
- function Nv(e5, t2) {
7070
+ function ey(e5, t2) {
7036
7071
  let n2 = new Set(e5.map((e6) => e6.toLowerCase())), r2 = new Set(t2);
7037
- vv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
7072
+ zv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
7038
7073
  r2.has(i2) ? (e6.style.stroke = t3, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), n3.forEach((e7) => {
7039
7074
  e7.style.opacity = "1";
7040
7075
  })) : (e6.style.strokeOpacity = "0.05", e6.style.strokeWidth = "0.7", e6.removeAttribute("filter"), n3.forEach((e7) => {
@@ -7048,8 +7083,8 @@ function Nv(e5, t2) {
7048
7083
  return e6.classList.toggle("dim", !n2.has((t3 = e6.dataset.planet) == null ? "" : t3));
7049
7084
  });
7050
7085
  }
7051
- function Pv() {
7052
- vv.forEach(({ vis: e5, symbolEls: t2 }) => {
7086
+ function ty() {
7087
+ zv.forEach(({ vis: e5, symbolEls: t2 }) => {
7053
7088
  e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), t2.forEach((e6) => {
7054
7089
  e6.style.opacity = "0.12";
7055
7090
  });
@@ -7057,17 +7092,17 @@ function Pv() {
7057
7092
  e5.style.opacity = "0.35";
7058
7093
  }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.add("dim"));
7059
7094
  }
7060
- function Fv() {
7061
- vv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
7095
+ function ny() {
7096
+ zv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
7062
7097
  e5.style.stroke = t2, e5.style.strokeOpacity = n2, e5.style.strokeWidth = r2, e5.removeAttribute("filter"), i2.forEach((e6) => {
7063
7098
  e6.style.opacity = "";
7064
7099
  });
7065
7100
  }), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
7066
7101
  e5.style.opacity = "";
7067
- }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), zv();
7102
+ }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), oy();
7068
7103
  }
7069
- var Iv = { "T-Square": "rgba(224,138, 82, 0.14)", "Grand Trine": "rgba( 82,168,224, 0.14)", "Grand Cross": "rgba(224, 82, 82, 0.14)", Stellium: "rgba(154,127,212, 0.14)", Yod: "rgba( 82,192,122, 0.14)", Kite: "rgba(192,176, 82, 0.14)" }, Lv = { "T-Square": "rgba(224,138, 82, 0.70)", "Grand Trine": "rgba( 82,168,224, 0.70)", "Grand Cross": "rgba(224, 82, 82, 0.70)", Stellium: "rgba(154,127,212, 0.70)", Yod: "rgba( 82,192,122, 0.70)", Kite: "rgba(192,176, 82, 0.70)" };
7070
- function Rv(e5, t2, n2) {
7104
+ var ry = { "T-Square": "rgba(224,138, 82, 0.14)", "Grand Trine": "rgba( 82,168,224, 0.14)", "Grand Cross": "rgba(224, 82, 82, 0.14)", Stellium: "rgba(154,127,212, 0.14)", Yod: "rgba( 82,192,122, 0.14)", Kite: "rgba(192,176, 82, 0.14)" }, iy = { "T-Square": "rgba(224,138, 82, 0.70)", "Grand Trine": "rgba( 82,168,224, 0.70)", "Grand Cross": "rgba(224, 82, 82, 0.70)", Stellium: "rgba(154,127,212, 0.70)", Yod: "rgba( 82,192,122, 0.70)", Kite: "rgba(192,176, 82, 0.70)" };
7105
+ function ay(e5, t2, n2) {
7071
7106
  var r2, i2;
7072
7107
  if (!Q) return null;
7073
7108
  let a2 = /* @__PURE__ */ new Map();
@@ -7075,26 +7110,26 @@ function Rv(e5, t2, n2) {
7075
7110
  let o2 = [];
7076
7111
  for (let t3 of e5.planets) {
7077
7112
  let e6 = a2.get(t3.toLowerCase());
7078
- e6 != null && o2.push(Y(e6, A_, n2));
7113
+ e6 != null && o2.push(Y(e6, Z_, n2));
7079
7114
  }
7080
7115
  if (o2.length < 2) return null;
7081
- let s2 = (r2 = Iv[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = Lv[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
7116
+ let s2 = (r2 = ry[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = iy[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
7082
7117
  if (o2.length === 2) {
7083
7118
  let e6 = X("line");
7084
7119
  e6.setAttribute("x1", o2[0].x.toFixed(1)), e6.setAttribute("y1", o2[0].y.toFixed(1)), e6.setAttribute("x2", o2[1].x.toFixed(1)), e6.setAttribute("y2", o2[1].y.toFixed(1)), e6.setAttribute("stroke", c2), e6.setAttribute("stroke-width", "2"), e6.setAttribute("fill", "none"), l2 = e6;
7085
7120
  } else {
7086
- let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - w_, e7.x - C_) - Math.atan2(t4.y - w_, t4.x - C_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
7121
+ let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - G_, e7.x - W_) - Math.atan2(t4.y - G_, t4.x - W_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
7087
7122
  t3.setAttribute("points", e6), t3.setAttribute("fill", s2), t3.setAttribute("stroke", c2), t3.setAttribute("stroke-width", "1.5"), t3.setAttribute("stroke-linejoin", "round"), l2 = t3;
7088
7123
  }
7089
7124
  l2.setAttribute("pointer-events", "none"), l2.setAttribute("class", "pattern-overlay");
7090
7125
  let u2 = Q.querySelector(".aspect-hit");
7091
7126
  return u2 ? Q.insertBefore(l2, u2) : Q.appendChild(l2), l2;
7092
7127
  }
7093
- function zv() {
7128
+ function oy() {
7094
7129
  Q == null || Q.querySelectorAll(".pattern-overlay").forEach((e5) => e5.remove());
7095
7130
  }
7096
- function Bv(e5) {
7097
- vv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
7131
+ function sy(e5) {
7132
+ zv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
7098
7133
  e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0", a2.forEach((t3) => {
7099
7134
  t3.style.display = e5 ? "" : "none";
7100
7135
  });
@@ -7102,8 +7137,8 @@ function Bv(e5) {
7102
7137
  t2.style.pointerEvents = e5 ? "all" : "none";
7103
7138
  });
7104
7139
  }
7105
- function Vv(e5) {
7106
- vv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
7140
+ function cy(e5) {
7141
+ zv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
7107
7142
  a2 <= e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none", o2.forEach((t3) => {
7108
7143
  t3.style.display = a2 <= e5 ? "" : "none";
7109
7144
  });
@@ -7111,12 +7146,12 @@ function Vv(e5) {
7111
7146
  e6.style.display = "";
7112
7147
  });
7113
7148
  }
7114
- function Hv(e5, t2, n2, r2, i2, a2, o2) {
7149
+ function ly(e5, t2, n2, r2, i2, a2, o2) {
7115
7150
  var s2, c2, l2, u2, d2, f2, p2, m2, h2;
7116
- hv = a2 == null ? null : a2;
7151
+ Iv = a2 == null ? null : a2;
7117
7152
  let g2 = e5.querySelector("#pan-zoom-controls");
7118
- e5.innerHTML = "", g2 && e5.appendChild(g2), vv.clear(), pv = null, Dv();
7119
- let _2 = Y_(t2.planets), v2 = (s2 = t2.houses) == null ? [] : s2, ee2 = (c2 = t2.aspects) == null ? [] : c2, y2 = (l2 = (u2 = (d2 = v2[0]) == null ? void 0 : d2.cusp_lon) == null ? t2.ascendant : u2) == null ? 0 : l2, b2 = X("svg");
7153
+ e5.innerHTML = "", g2 && e5.appendChild(g2), zv.clear(), Pv = null, Jv();
7154
+ let _2 = gv(t2.planets), v2 = (s2 = t2.houses) == null ? [] : s2, ee2 = (c2 = t2.aspects) == null ? [] : c2, y2 = (l2 = (u2 = (d2 = v2[0]) == null ? void 0 : d2.cusp_lon) == null ? t2.ascendant : u2) == null ? 0 : l2, b2 = X("svg");
7120
7155
  b2.setAttribute("viewBox", "0 0 500 500"), b2.setAttribute("width", "100%"), b2.setAttribute("height", "100%"), b2.setAttribute("overflow", "visible"), b2.style.overflow = "visible", b2.style.display = "block", e5.appendChild(b2), Q = b2;
7121
7156
  {
7122
7157
  let e6 = X("defs");
@@ -7134,29 +7169,29 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
7134
7169
  let te2 = X("g");
7135
7170
  te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "5"), b2.appendChild(te2);
7136
7171
  let ne2 = X("g");
7137
- b2.appendChild(ne2), kv = y2;
7172
+ b2.appendChild(ne2), Xv = y2;
7138
7173
  let T2 = X("line");
7139
- T2.setAttribute("stroke", "#7060b8"), T2.setAttribute("stroke-width", "1"), T2.setAttribute("stroke-dasharray", "2 2"), T2.setAttribute("pointer-events", "none"), T2.style.opacity = "0", T2.style.transition = "opacity 150ms ease", S2.appendChild(T2), Ov = T2;
7174
+ T2.setAttribute("stroke", "#7060b8"), T2.setAttribute("stroke-width", "1"), T2.setAttribute("stroke-dasharray", "2 2"), T2.setAttribute("pointer-events", "none"), T2.style.opacity = "0", T2.style.transition = "opacity 150ms ease", S2.appendChild(T2), Yv = T2;
7140
7175
  let re2 = X("circle");
7141
7176
  re2.setAttribute("cx", "250"), re2.setAttribute("cy", "250"), re2.setAttribute("r", "244"), re2.style.fill = "var(--bg, #faf9f5)", re2.setAttribute("pointer-events", "none"), x2.appendChild(re2);
7142
- let E2 = z_(), ie2 = d_(E2), ae2 = (e6, t3) => {
7177
+ let E2 = ov(), ie2 = d_(E2), ae2 = (e6, t3) => {
7143
7178
  e6.setAttribute("stroke", ie2.ring.stroke), e6.setAttribute("stroke-opacity", String(ie2.ring.opacity)), e6.setAttribute("stroke-width", t3);
7144
7179
  };
7145
7180
  ae2(re2, "0.5");
7146
7181
  let oe2 = X("circle");
7147
- oe2.setAttribute("cx", "250"), oe2.setAttribute("cy", "250"), oe2.setAttribute("r", String(T_)), oe2.style.fill = "var(--surface, #f2f1ea)", ae2(oe2, "0.6"), oe2.setAttribute("pointer-events", "none"), S2.appendChild(oe2);
7182
+ oe2.setAttribute("cx", "250"), oe2.setAttribute("cy", "250"), oe2.setAttribute("r", String(K_)), oe2.style.fill = "var(--surface, #f2f1ea)", ae2(oe2, "0.6"), oe2.setAttribute("pointer-events", "none"), S2.appendChild(oe2);
7148
7183
  let se2 = X("circle");
7149
- se2.setAttribute("cx", "250"), se2.setAttribute("cy", "250"), se2.setAttribute("r", String(E_)), se2.style.fill = "var(--bg, #faf9f5)", ae2(se2, "0.6"), se2.setAttribute("pointer-events", "none"), S2.appendChild(se2);
7184
+ se2.setAttribute("cx", "250"), se2.setAttribute("cy", "250"), se2.setAttribute("r", String(q_)), se2.style.fill = "var(--bg, #faf9f5)", ae2(se2, "0.6"), se2.setAttribute("pointer-events", "none"), S2.appendChild(se2);
7150
7185
  let ce2 = Array.from({ length: 12 }, (e6, t3) => u_(t3, E2));
7151
7186
  for (let e6 = 0; e6 < 12; e6++) {
7152
- let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, T_, y2), i3 = Y(n3, T_, y2), a3 = Y(t3, E_, y2), o3 = Y(n3, E_, y2), s3 = X("path");
7153
- s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(T_, " ").concat(T_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(E_, " ").concat(E_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", ce2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
7154
- let { x: c3, y: l3 } = Y(t3, E_, y2), { x: u3, y: d3 } = Y(t3, T_, y2), f3 = X("line");
7187
+ let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, K_, y2), i3 = Y(n3, K_, y2), a3 = Y(t3, q_, y2), o3 = Y(n3, q_, y2), s3 = X("path");
7188
+ s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(K_, " ").concat(K_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(q_, " ").concat(q_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", ce2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
7189
+ let { x: c3, y: l3 } = Y(t3, q_, y2), { x: u3, y: d3 } = Y(t3, K_, y2), f3 = X("line");
7155
7190
  f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), ae2(f3, "0.5"), f3.setAttribute("pointer-events", "none"), S2.appendChild(f3);
7156
7191
  let { x: p3, y: m3 } = Y(t3 + 15, 444 / 2, y2), h3 = X("text");
7157
- h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "13"), h3.setAttribute("fill", l_(e6, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = a_, h3.textContent = F_[e6], S2.appendChild(h3);
7192
+ h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "13"), h3.setAttribute("fill", l_(e6, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = a_, h3.textContent = nv[e6], S2.appendChild(h3);
7158
7193
  for (let e7 = 1; e7 < 30; e7++) {
7159
- let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? T_ - 7 : T_ - 3, { x: a4, y: o4 } = Y(n4, T_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
7194
+ let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? K_ - 7 : K_ - 3, { x: a4, y: o4 } = Y(n4, K_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
7160
7195
  l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1));
7161
7196
  let u4 = r4 ? ie2.tickMajor : ie2.tickMinor;
7162
7197
  l4.setAttribute("stroke", u4.stroke), l4.setAttribute("stroke-opacity", String(u4.opacity)), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), S2.appendChild(l4);
@@ -7165,50 +7200,50 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
7165
7200
  let le2 = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
7166
7201
  for (let e6 = 0; e6 < 12; e6++) {
7167
7202
  var ue2, de2;
7168
- let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, T_, y2), i3 = Y(n3, T_, y2), a3 = Y(t3, E_, y2), o3 = Y(n3, E_, y2), s3 = X("path");
7169
- s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(T_, " ").concat(T_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(E_, " ").concat(E_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", "transparent"), s3.setAttribute("class", "hit-region sign-hit"), s3.style.pointerEvents = "all", Uv(s3, "".concat(I_[e6], " \u2014 click for sign info"));
7170
- let c3 = Z(sv[e6]), l3 = Z(cv[e6]), u3 = (ue2 = le2[I_[e6]]) == null ? "" : ue2, d3 = (de2 = tv[I_[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
7171
- s3.addEventListener("mouseenter", (t4) => Z_(t4.clientX, t4.clientY, "".concat(F_[e6], " ").concat(I_[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => Z_(t4.clientX, t4.clientY, "".concat(F_[e6], " ").concat(I_[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", Q_), s3.addEventListener("click", (t4) => {
7172
- Q_(), gv == null || gv("".concat(F_[e6], " ").concat(I_[e6])), wv(t4, e6, _2);
7203
+ let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, K_, y2), i3 = Y(n3, K_, y2), a3 = Y(t3, q_, y2), o3 = Y(n3, q_, y2), s3 = X("path");
7204
+ s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(K_, " ").concat(K_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(q_, " ").concat(q_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", "transparent"), s3.setAttribute("class", "hit-region sign-hit"), s3.style.pointerEvents = "all", uy(s3, "".concat(rv[e6], " \u2014 click for sign info"));
7205
+ let c3 = Z(Ov[e6]), l3 = Z(kv[e6]), u3 = (ue2 = le2[rv[e6]]) == null ? "" : ue2, d3 = (de2 = Sv[rv[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
7206
+ s3.addEventListener("mouseenter", (t4) => vv(t4.clientX, t4.clientY, "".concat(nv[e6], " ").concat(rv[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => vv(t4.clientX, t4.clientY, "".concat(nv[e6], " ").concat(rv[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", yv), s3.addEventListener("click", (t4) => {
7207
+ yv(), Lv == null || Lv("".concat(nv[e6], " ").concat(rv[e6])), Gv(t4, e6, _2);
7173
7208
  }), ne2.appendChild(s3);
7174
7209
  }
7175
7210
  let fe2 = X("circle");
7176
- fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(E_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2);
7211
+ fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(q_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2);
7177
7212
  let pe2 = X("circle");
7178
- if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(k_)), pe2.style.fill = ie2.center, ae2(pe2, "0.6"), pe2.setAttribute("pointer-events", "none"), C2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
7213
+ if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(X_)), pe2.style.fill = ie2.center, ae2(pe2, "0.6"), pe2.setAttribute("pointer-events", "none"), C2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
7179
7214
  let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), i3 = X("path");
7180
- i3.setAttribute("d", N_(t3.cusp_lon, n3.cusp_lon, k_, E_, y2)), i3.setAttribute("fill", l_(Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), E2)), i3.setAttribute("fill-opacity", String(c_(E2).houseFillOpacity)), i3.setAttribute("pointer-events", "none"), C2.appendChild(i3);
7181
- let { x: a3, y: o3 } = Y(t3.cusp_lon, k_, y2), { x: s3, y: c3 } = Y(t3.cusp_lon, E_, y2), l3 = X("line");
7215
+ i3.setAttribute("d", ev(t3.cusp_lon, n3.cusp_lon, X_, q_, y2)), i3.setAttribute("fill", l_(Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), E2)), i3.setAttribute("fill-opacity", String(c_(E2).houseFillOpacity)), i3.setAttribute("pointer-events", "none"), C2.appendChild(i3);
7216
+ let { x: a3, y: o3 } = Y(t3.cusp_lon, X_, y2), { x: s3, y: c3 } = Y(t3.cusp_lon, q_, y2), l3 = X("line");
7182
7217
  l3.setAttribute("x1", a3.toFixed(1)), l3.setAttribute("y1", o3.toFixed(1)), l3.setAttribute("x2", s3.toFixed(1)), l3.setAttribute("y2", c3.toFixed(1));
7183
7218
  let u3 = r3 ? ie2.cuspAngular : ie2.cuspIntermediate;
7184
7219
  l3.setAttribute("stroke", u3.stroke), l3.setAttribute("stroke-opacity", String(u3.opacity)), l3.setAttribute("stroke-width", r3 ? "1.6" : "0.8"), r3 || l3.setAttribute("stroke-dasharray", ie2.cuspDash(0.8)), l3.setAttribute("pointer-events", "none"), C2.appendChild(l3);
7185
- let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2, O_, y2), m3 = X("text");
7220
+ let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2, Y_, y2), m3 = X("text");
7186
7221
  m3.setAttribute("x", f3.toFixed(1)), m3.setAttribute("y", p3.toFixed(1)), m3.setAttribute("text-anchor", "middle"), m3.setAttribute("dominant-baseline", "central"), m3.setAttribute("font-size", "12"), m3.setAttribute("font-weight", r3 ? "700" : "600"), m3.setAttribute("fill", c_(E2).foreground), m3.setAttribute("opacity", "0.9"), m3.setAttribute("pointer-events", "none"), m3.textContent = String(t3.number), C2.appendChild(m3);
7187
7222
  }
7188
7223
  let me2 = v2.find((e6) => e6.number === 1), he2 = v2.find((e6) => e6.number === 4), ge2 = v2.find((e6) => e6.number === 7), _e2 = v2.find((e6) => e6.number === 10), ve2 = [{ lon: (f2 = me2 == null ? void 0 : me2.cusp_lon) == null ? y2 : f2, label: "ASC" }, { lon: (p2 = ge2 == null ? void 0 : ge2.cusp_lon) == null ? (y2 + 180) % 360 : p2, label: "DSC" }, { lon: (m2 = _e2 == null ? void 0 : _e2.cusp_lon) == null ? (y2 + 270) % 360 : m2, label: "MC" }, { lon: (h2 = he2 == null ? void 0 : he2.cusp_lon) == null ? (y2 + 90) % 360 : h2, label: "IC" }];
7189
7224
  for (let e6 of ve2) {
7190
7225
  var ye2, be2;
7191
- let t3 = Tv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
7226
+ let t3 = Kv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
7192
7227
  n3 = Math.min(Math.max(n3, 14), 486), r3 = Math.min(Math.max(r3, 10), 490);
7193
7228
  let i3 = X("text");
7194
7229
  i3.setAttribute("x", n3.toFixed(1)), i3.setAttribute("y", r3.toFixed(1)), i3.setAttribute("text-anchor", "middle"), i3.setAttribute("dominant-baseline", "central"), i3.setAttribute("font-size", "11"), i3.setAttribute("font-weight", "700"), i3.setAttribute("fill", c_(E2).foreground), i3.setAttribute("pointer-events", "none"), i3.setAttribute("class", "angle-label angle-".concat(e6.label.toLowerCase())), i3.style.transition = "opacity 150ms ease", i3.textContent = e6.label, C2.appendChild(i3);
7195
7230
  let a3 = X("circle");
7196
- a3.setAttribute("cx", n3.toFixed(1)), a3.setAttribute("cy", r3.toFixed(1)), a3.setAttribute("r", "14"), a3.setAttribute("fill", "transparent"), a3.setAttribute("class", "hit-region angle-hit"), a3.style.pointerEvents = "all", a3.style.cursor = "pointer", Uv(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
7197
- let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = G_(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
7231
+ a3.setAttribute("cx", n3.toFixed(1)), a3.setAttribute("cy", r3.toFixed(1)), a3.setAttribute("r", "14"), a3.setAttribute("fill", "transparent"), a3.setAttribute("class", "hit-region angle-hit"), a3.style.pointerEvents = "all", a3.style.cursor = "pointer", uy(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
7232
+ let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = fv(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
7198
7233
  a3.addEventListener("mouseenter", (n4) => {
7199
7234
  var r4;
7200
- Z_(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Av(e6.lon), i3.style.opacity = "0.6";
7235
+ vv(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Zv(e6.lon), i3.style.opacity = "0.6";
7201
7236
  }), a3.addEventListener("mouseleave", () => {
7202
- Q_(), jv(), i3.style.opacity = "";
7237
+ yv(), Qv(), i3.style.opacity = "";
7203
7238
  }), a3.addEventListener("click", (n4) => {
7204
7239
  var r4;
7205
- Q_(), Av(e6.lon, true), Pv(), gv == null || gv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), Ev(n4, e6.label, e6.lon);
7240
+ yv(), Zv(e6.lon, true), ty(), Lv == null || Lv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), qv(n4, e6.label, e6.lon);
7206
7241
  }), ne2.appendChild(a3);
7207
7242
  }
7208
7243
  {
7209
7244
  let e6 = X("g");
7210
7245
  e6.setAttribute("pointer-events", "none");
7211
- let t3 = C_ - 50, n3 = w_ - 50;
7246
+ let t3 = W_ - 50, n3 = G_ - 50;
7212
7247
  e6.setAttribute("transform", "translate(".concat(t3, ",").concat(n3, ") scale(").concat(0.5813953488372093.toFixed(4), ") translate(-69,-110)")), e6.setAttribute("opacity", E2 ? "0.08" : "0.05");
7213
7248
  let r3 = X("path");
7214
7249
  r3.setAttribute("fill", c_(E2).foreground), r3.setAttribute("d", "M225.711945,199.983551 C225.292816,213.680542 221.995255,226.061340 214.416275,237.110443 C193.610641,267.442230 154.827423,271.316071 127.459396,255.072189 C123.775551,252.885712 120.882744,252.441498 116.873688,254.137070 C109.048920,257.446503 100.934502,259.899628 92.190125,259.379364 C83.542915,258.864868 78.616745,253.946121 78.684906,245.377151 C78.745262,237.789108 81.850891,231.152817 85.454010,224.735641 C88.304489,219.658905 91.245934,214.612274 95.084061,210.184647 C97.704369,207.161865 98.745560,203.844788 98.740883,199.721481 C98.699577,163.227264 125.082115,136.164413 161.509293,135.193466 C165.322968,135.092 169.315643,134.951 172.935333,135.916 C178.310226,137.349 182.595856,135.650 187.146591,133.280 C195.742508,128.804 204.726822,125.462 214.488632,124.281 C227.834183,122.666 234.932129,130.259 231.851456,143.429 C230.052628,151.119 226.752274,158.212 222.361359,164.760 C220.327988,167.792 220.017624,170.616 221.473969,174.100 C224.861847,182.205 225.468460,190.867 225.711945,199.983551 M212.976044,168.510834 C218.716415,160.882339 223.731537,152.880203 226.146439,143.492218 C228.308197,135.088409 225.333649,129.095078 217.846207,128.560104 C206.177933,127.726410 196.082672,132.729645 185.171341,138.349640 C187.816025,139.540573 189.463272,140.263855 191.095154,141.020279 C200.031250,145.162369 207.546783,151.055435 213.272079,159.124069 C214.113724,160.310181 215.663269,161.586777 214.829697,163.091461 C211.652573,168.826584 208.025726,174.252899 202.566681,179.006516 C201.549835,176.444733 200.923126,174.750778 200.212067,173.093002 C195.433319,161.951874 188.776291,152.487198 177.473648,146.963547 C174.609192,145.563675 172.292969,145.608887 169.595505,147.317566 C152.514618,158.137161 136.926010,170.829269 122.270142,184.706512 C120.686935,186.205612 119.364059,187.876480 119.190598,190.236053 C118.688568,197.065308 118.869385,203.864960 119.793037,210.651215 C121.255951,221.399521 126.239235,230.774902 131.349335,240.326111 C132.993088,240.252151 134.400635,239.345810 135.765091,238.453430 C144.400665,232.805634 153.133560,227.309341 161.286926,220.942139 C164.075363,218.764557 165.766891,216.649643 165.788437,212.774612 C165.823334,206.491791 170.826294,202.743942 176.973877,204.085724 C179.390350,204.613144 181.027267,204.346497 182.788132,202.634048 C193.536697,192.180939 204.343719,181.790634 212.976044,168.510834 M196.311264,238.774429 C205.223999,223.519989 207.059082,207.185013 204.308746,188.929276 C197.720764,194.995590 193.078613,201.379272 186.899475,206.146912 C184.795013,207.770645 183.863800,209.506882 184.135178,212.471619 C184.705627,218.704117 179.426636,223.881546 173.582184,222.584213 C169.742706,221.731949 167.311813,222.850525 164.693726,225.165817 C162.585052,227.030579 160.129227,228.496109 157.916992,230.251648 C151.305984,235.497787 144.002090,239.748337 136.880554,244.346085 C150.810440,260.746155 181.289062,262.140137 196.311264,238.774429 M101.954178,222.323334 C101.003220,218.898468 100.052269,215.473602 98.901512,211.329163 C91.673454,221.459351 85.061653,230.979462 83.800476,243.065674 C83.190475,248.911530 86.140854,252.991577 91.843674,253.598953 C100.879066,254.561295 109.050667,251.508087 117.776840,247.739761 C110.183830,240.480621 105.126755,232.419739 101.954178,222.323334 M129.303619,173.800827 C141.200867,163.092194 153.936737,153.435806 167.699600,144.113556 C142.265121,138.861908 122.832809,158.201233 120.741943,181.434265 C123.701614,178.779602 126.227280,176.514221 129.303619,173.800827 z"), e6.appendChild(r3), x2.appendChild(e6);
@@ -7217,9 +7252,9 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
7217
7252
  var xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2, Le2;
7218
7253
  let t3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet1.toLowerCase()), n3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet2.toLowerCase());
7219
7254
  if (!t3 || !n3) continue;
7220
- let r3 = (xe2 = R_((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, A_, y2), { x: s3, y: c3 } = Y(n3.longitude, A_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
7255
+ let r3 = (xe2 = av((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, Z_, y2), { x: s3, y: c3 } = Y(n3.longitude, Z_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
7221
7256
  d3.setAttribute("x1", a3.toFixed(1)), d3.setAttribute("y1", o3.toFixed(1)), d3.setAttribute("x2", s3.toFixed(1)), d3.setAttribute("y2", c3.toFixed(1)), d3.setAttribute("pointer-events", "none"), d3.style.stroke = r3, d3.style.strokeOpacity = String(u3), d3.style.strokeWidth = l3 < 2 ? "1.6" : "1.1", w2.appendChild(d3);
7222
- let f3 = (O2 = L_[(Ce2 = (we2 = e6.type) == null ? void 0 : we2.toLowerCase()) == null ? "" : Ce2]) == null ? "" : O2, p3 = a3 + (s3 - a3) * 0.35, m3 = o3 + (c3 - o3) * 0.35, h3 = [];
7257
+ let f3 = (O2 = iv[(Ce2 = (we2 = e6.type) == null ? void 0 : we2.toLowerCase()) == null ? "" : Ce2]) == null ? "" : O2, p3 = a3 + (s3 - a3) * 0.35, m3 = o3 + (c3 - o3) * 0.35, h3 = [];
7223
7258
  if (f3 && Math.hypot(s3 - a3, c3 - o3) > 36) {
7224
7259
  let e7 = X("circle");
7225
7260
  e7.setAttribute("cx", p3.toFixed(1)), e7.setAttribute("cy", m3.toFixed(1)), e7.setAttribute("r", "9"), e7.setAttribute("fill", ie2.center), e7.setAttribute("stroke", r3), e7.setAttribute("stroke-opacity", "0.9"), e7.setAttribute("stroke-width", "1"), e7.setAttribute("pointer-events", "none"), w2.appendChild(e7), h3.push(e7);
@@ -7227,31 +7262,31 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
7227
7262
  t4.setAttribute("x", p3.toFixed(1)), t4.setAttribute("y", m3.toFixed(1)), t4.setAttribute("text-anchor", "middle"), t4.setAttribute("dominant-baseline", "central"), t4.setAttribute("font-size", "11"), t4.setAttribute("font-weight", "700"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", "1"), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, w2.appendChild(t4), h3.push(t4);
7228
7263
  }
7229
7264
  let g3 = X("line");
7230
- g3.setAttribute("x1", a3.toFixed(1)), g3.setAttribute("y1", o3.toFixed(1)), g3.setAttribute("x2", s3.toFixed(1)), g3.setAttribute("y2", c3.toFixed(1)), g3.setAttribute("stroke", "transparent"), g3.setAttribute("stroke-width", "13"), g3.setAttribute("fill", "none"), g3.setAttribute("class", "hit-region aspect-hit"), g3.style.pointerEvents = "all", Uv(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
7231
- let v3 = (Ee2 = P_[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = P_[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = L_[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = nv[(Ne2 = (Pe2 = e6.type) == null ? void 0 : Pe2.toLowerCase()) == null ? "" : Ne2]) == null ? "" : Me2, S3 = "".concat(x3 ? x3 + " \xB7 " : "").concat(v3, " ").concat(b3, " ").concat(ee3, " \xB7 ").concat((Fe2 = (Ie2 = e6.orb) == null ? void 0 : Ie2.toFixed(1)) == null ? "?" : Fe2, "\xB0 orb").concat(e6.applying === true ? " (applying)" : e6.applying === false ? " (separating)" : "");
7265
+ g3.setAttribute("x1", a3.toFixed(1)), g3.setAttribute("y1", o3.toFixed(1)), g3.setAttribute("x2", s3.toFixed(1)), g3.setAttribute("y2", c3.toFixed(1)), g3.setAttribute("stroke", "transparent"), g3.setAttribute("stroke-width", "13"), g3.setAttribute("fill", "none"), g3.setAttribute("class", "hit-region aspect-hit"), g3.style.pointerEvents = "all", uy(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
7266
+ let v3 = (Ee2 = tv[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = tv[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = iv[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = Cv[(Ne2 = (Pe2 = e6.type) == null ? void 0 : Pe2.toLowerCase()) == null ? "" : Ne2]) == null ? "" : Me2, S3 = "".concat(x3 ? x3 + " \xB7 " : "").concat(v3, " ").concat(b3, " ").concat(ee3, " \xB7 ").concat((Fe2 = (Ie2 = e6.orb) == null ? void 0 : Ie2.toFixed(1)) == null ? "?" : Fe2, "\xB0 orb").concat(e6.applying === true ? " (applying)" : e6.applying === false ? " (separating)" : "");
7232
7267
  g3.addEventListener("mouseenter", (t4) => {
7233
7268
  var n4;
7234
- return Z_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7269
+ return vv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7235
7270
  }), g3.addEventListener("mousemove", (t4) => {
7236
7271
  var n4;
7237
- return Z_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7238
- }), g3.addEventListener("mouseleave", Q_), g3.addEventListener("click", (t4) => {
7272
+ return vv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7273
+ }), g3.addEventListener("mouseleave", yv), g3.addEventListener("click", (t4) => {
7239
7274
  var n4, r4, a4, o4, s4, c4;
7240
- Q_();
7241
- let l4 = "".concat((n4 = L_[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = P_[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = P_[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
7242
- gv == null || gv(l4), xv(t4, e6, _2), i2(e6);
7275
+ yv();
7276
+ let l4 = "".concat((n4 = iv[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = tv[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = tv[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
7277
+ Lv == null || Lv(l4), Hv(t4, e6, _2), i2(e6);
7243
7278
  });
7244
7279
  let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((Le2 = e6.type) == null ? "unknown" : Le2).toLowerCase();
7245
- vv.set(C3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.6" : "1.1", aspectType: te3, orb: l3, symbolEls: h3 }), ne2.appendChild(g3);
7280
+ zv.set(C3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.6" : "1.1", aspectType: te3, orb: l3, symbolEls: h3 }), ne2.appendChild(g3);
7246
7281
  }
7247
- let Re2 = _2.filter((e6) => !U_.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => U_.has(e6.name.toLowerCase())), ze2 = __(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = __(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
7282
+ let Re2 = _2.filter((e6) => !uv.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => uv.has(e6.name.toLowerCase())), ze2 = __(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = __(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
7248
7283
  for (let e6 of _2) {
7249
7284
  var He2, Ue2, We2, Ge2;
7250
- let t3 = (He2 = P_[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
7251
- V_(e6.name);
7252
- let r3 = e6.name.toLowerCase(), i3 = U_.has(r3), a3 = i3 ? D_ - 14 : D_, o3 = i3 ? D_ - 28 : D_ - 17, s3 = i3 ? D_ : 204, c3 = i3 ? "14" : "21", l3 = i3 ? "500" : "600", u3 = i3 ? j_ - 2 : j_, d3 = i3 ? "0.65" : "1", f3 = (Ue2 = Ve2.get(r3)) == null ? e6.longitude : Ue2, { x: p3, y: m3 } = Y(f3, a3, y2), h3 = X("g");
7285
+ let t3 = (He2 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
7286
+ cv(e6.name);
7287
+ let r3 = e6.name.toLowerCase(), i3 = uv.has(r3), a3 = i3 ? J_ - 14 : J_, o3 = i3 ? J_ - 28 : J_ - 17, s3 = i3 ? J_ : 204, c3 = i3 ? "14" : "21", l3 = i3 ? "500" : "600", u3 = i3 ? Q_ - 2 : Q_, d3 = i3 ? "0.65" : "1", f3 = (Ue2 = Ve2.get(r3)) == null ? e6.longitude : Ue2, { x: p3, y: m3 } = Y(f3, a3, y2), h3 = X("g");
7253
7288
  h3.setAttribute("class", "planet-glyph-group".concat(i3 ? " extended-body" : "")), h3.dataset.planet = r3, h3.style.transition = "opacity 200ms ease", h3.style.opacity = d3, te2.appendChild(h3);
7254
- let { x: g3, y: _3 } = Y(e6.longitude, E_ - 5, y2), v3 = X("circle");
7289
+ let { x: g3, y: _3 } = Y(e6.longitude, q_ - 5, y2), v3 = X("circle");
7255
7290
  if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill", c_(E2).house), v3.setAttribute("opacity", "0.65"), v3.setAttribute("pointer-events", "none"), h3.appendChild(v3), x_(e6.longitude, f3) > 2) {
7256
7291
  let e7 = X("line");
7257
7292
  e7.setAttribute("x1", g3.toFixed(1)), e7.setAttribute("y1", _3.toFixed(1)), e7.setAttribute("x2", p3.toFixed(1)), e7.setAttribute("y2", m3.toFixed(1)), e7.setAttribute("stroke", c_(E2).house), e7.setAttribute("stroke-width", "0.7"), e7.setAttribute("stroke-opacity", "0.35"), e7.setAttribute("stroke-linecap", "round"), e7.setAttribute("pointer-events", "none"), h3.appendChild(e7);
@@ -7264,89 +7299,89 @@ function Hv(e5, t2, n2, r2, i2, a2, o2) {
7264
7299
  n3.setAttribute("x", e7.toFixed(1)), n3.setAttribute("y", t4.toFixed(1)), n3.setAttribute("text-anchor", "middle"), n3.setAttribute("dominant-baseline", "central"), n3.setAttribute("font-size", i3 ? "6" : "8"), n3.setAttribute("fill", "#e05252"), n3.setAttribute("pointer-events", "none"), n3.textContent = "\u211E", h3.appendChild(n3);
7265
7300
  }
7266
7301
  let T3 = X("circle");
7267
- T3.setAttribute("cx", p3.toFixed(1)), T3.setAttribute("cy", m3.toFixed(1)), T3.setAttribute("r", String(u3)), T3.setAttribute("fill", "transparent"), T3.setAttribute("class", "hit-region planet-hit"), T3.dataset.planet = r3, T3.style.pointerEvents = "all", Uv(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
7268
- let re3 = (We2 = $_[e6.name.toLowerCase()]) == null ? "" : We2, ie3 = e6.house ? (Ge2 = ev[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(G_(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
7302
+ T3.setAttribute("cx", p3.toFixed(1)), T3.setAttribute("cy", m3.toFixed(1)), T3.setAttribute("r", String(u3)), T3.setAttribute("fill", "transparent"), T3.setAttribute("class", "hit-region planet-hit"), T3.dataset.planet = r3, T3.style.pointerEvents = "all", uy(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
7303
+ let re3 = (We2 = bv[e6.name.toLowerCase()]) == null ? "" : We2, ie3 = e6.house ? (Ge2 = xv[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(fv(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
7269
7304
  T3.addEventListener("mouseenter", (n3) => {
7270
- Z_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Av(e6.longitude);
7271
- }), T3.addEventListener("mousemove", (n3) => Z_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
7272
- Q_(), pv !== e6.name.toLowerCase() && jv();
7305
+ vv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Zv(e6.longitude);
7306
+ }), T3.addEventListener("mousemove", (n3) => vv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
7307
+ yv(), Pv !== e6.name.toLowerCase() && Qv();
7273
7308
  }), T3.addEventListener("click", (t4) => {
7274
7309
  var r4;
7275
- if (Q_(), pv === e6.name.toLowerCase()) {
7276
- Fv(), Dv(), jv(), gv == null || gv(null);
7310
+ if (yv(), Pv === e6.name.toLowerCase()) {
7311
+ ny(), Jv(), Qv(), Lv == null || Lv(null);
7277
7312
  return;
7278
7313
  }
7279
- pv = e6.name.toLowerCase();
7280
- let i4 = (r4 = P_[e6.name.toLowerCase()]) == null ? "" : r4;
7281
- gv == null || gv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(G_(e6.longitude))), Av(e6.longitude, true), Mv(e6.name), bv(t4, e6, ee2), n2(e6);
7314
+ Pv = e6.name.toLowerCase();
7315
+ let i4 = (r4 = tv[e6.name.toLowerCase()]) == null ? "" : r4;
7316
+ Lv == null || Lv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(fv(e6.longitude))), Zv(e6.longitude, true), $v(e6.name), Vv(t4, e6, ee2), n2(e6);
7282
7317
  }), ne2.appendChild(T3);
7283
7318
  }
7284
7319
  for (let e6 = 0; e6 < v2.length; e6++) {
7285
7320
  var Ke2, qe2, Je2;
7286
- let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ke2 = (qe2 = t3.sign) == null ? I_[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = ev[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(G_(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, k_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, E_, y2), f3 = X("line");
7287
- f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", String(M_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", Uv(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
7288
- Z_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Av(t3.cusp_lon);
7289
- }), f3.addEventListener("mousemove", (e7) => Z_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
7290
- Q_(), jv();
7321
+ let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ke2 = (qe2 = t3.sign) == null ? rv[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = xv[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(fv(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, X_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, q_, y2), f3 = X("line");
7322
+ f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", String($_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", uy(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
7323
+ vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Zv(t3.cusp_lon);
7324
+ }), f3.addEventListener("mousemove", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
7325
+ yv(), Qv();
7291
7326
  }), f3.addEventListener("click", (e7) => {
7292
7327
  var n4, i4;
7293
- Q_();
7294
- let a4 = (n4 = (i4 = t3.sign) == null ? I_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7295
- gv == null || gv("House ".concat(t3.number, " \xB7 ").concat(a4)), Sv(e7, t3, _2), r2(t3);
7328
+ yv();
7329
+ let a4 = (n4 = (i4 = t3.sign) == null ? rv[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7330
+ Lv == null || Lv("House ".concat(t3.number, " \xB7 ").concat(a4)), Uv(e7, t3, _2), r2(t3);
7296
7331
  }), ne2.appendChild(f3);
7297
- let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, O_, y2), g3 = X("circle");
7298
- g3.setAttribute("cx", m3.toFixed(1)), g3.setAttribute("cy", h3.toFixed(1)), g3.setAttribute("r", "14"), g3.setAttribute("fill", "transparent"), g3.setAttribute("class", "hit-region"), g3.style.pointerEvents = "all", Uv(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => Z_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => Z_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
7299
- Q_();
7332
+ let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, Y_, y2), g3 = X("circle");
7333
+ g3.setAttribute("cx", m3.toFixed(1)), g3.setAttribute("cy", h3.toFixed(1)), g3.setAttribute("r", "14"), g3.setAttribute("fill", "transparent"), g3.setAttribute("class", "hit-region"), g3.style.pointerEvents = "all", uy(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
7334
+ yv();
7300
7335
  }), g3.addEventListener("click", (e7) => {
7301
7336
  var n4, i4;
7302
- Q_();
7303
- let a4 = (n4 = (i4 = t3.sign) == null ? I_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7304
- gv == null || gv("House ".concat(t3.number, " \xB7 ").concat(a4)), Sv(e7, t3, _2), r2(t3);
7337
+ yv();
7338
+ let a4 = (n4 = (i4 = t3.sign) == null ? rv[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7339
+ Lv == null || Lv("House ".concat(t3.number, " \xB7 ").concat(a4)), Uv(e7, t3, _2), r2(t3);
7305
7340
  }), ne2.appendChild(g3);
7306
7341
  }
7307
- mv && document.removeEventListener("click", mv, false), mv = (e6) => {
7342
+ Fv && document.removeEventListener("click", Fv, false), Fv = (e6) => {
7308
7343
  let t3 = e6.target;
7309
- t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (Fv(), Dv());
7310
- }, document.addEventListener("click", mv, false);
7344
+ t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (ny(), Jv());
7345
+ }, document.addEventListener("click", Fv, false);
7311
7346
  }
7312
- function Uv(e5, t2) {
7347
+ function uy(e5, t2) {
7313
7348
  e5 && (e5.setAttribute("tabindex", "0"), e5.setAttribute("role", "button"), e5.setAttribute("aria-label", t2), e5.addEventListener("keydown", (t3) => {
7314
7349
  let n2 = t3;
7315
7350
  (n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e5.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
7316
7351
  }));
7317
7352
  }
7318
- var Wv = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
7319
- function Gv(e5, t2, n2) {
7353
+ var dy = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
7354
+ function fy(e5, t2, n2) {
7320
7355
  e5.innerHTML = "";
7321
7356
  let r2 = document.createElement("span");
7322
7357
  r2.className = "controls-label", r2.textContent = "Houses:", e5.appendChild(r2);
7323
- for (let r3 of Wv) {
7358
+ for (let r3 of dy) {
7324
7359
  let i2 = document.createElement("button");
7325
7360
  i2.className = "control-btn" + (r3.value === t2 ? " active" : ""), i2.textContent = r3.label, i2.title = "Switch to ".concat(r3.label, " house system"), i2.setAttribute("data-system", r3.value), i2.addEventListener("click", () => {
7326
7361
  e5.querySelectorAll(".control-btn").forEach((e6) => e6.classList.remove("active")), i2.classList.add("active"), i2.disabled = true, i2.textContent = "".concat(r3.label, " \u2026"), n2(r3.value);
7327
7362
  }), e5.appendChild(i2);
7328
7363
  }
7329
7364
  }
7330
- function Kv(e5, t2) {
7365
+ function py(e5, t2) {
7331
7366
  e5.querySelectorAll(".control-btn").forEach((e6) => {
7332
7367
  var n2;
7333
7368
  let r2 = e6.getAttribute("data-system");
7334
7369
  e6.disabled = false;
7335
- let i2 = Wv.find((e7) => e7.value === r2);
7370
+ let i2 = dy.find((e7) => e7.value === r2);
7336
7371
  e6.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e6.classList.toggle("active", r2 === t2);
7337
7372
  });
7338
7373
  }
7339
- function qv(e5) {
7374
+ function my(e5) {
7340
7375
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7341
7376
  }
7342
- function Jv(e5) {
7377
+ function hy(e5) {
7343
7378
  return e5.replace(/_/g, " ").replace(/\b\w/g, (e6) => e6.toUpperCase());
7344
7379
  }
7345
- function Yv(e5) {
7346
- let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(qv(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(qv(e7.glyph), "</span>").concat(qv(e7.label), "</span>")).join("") + "</div>").join("");
7380
+ function gy(e5) {
7381
+ let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(my(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(my(e7.glyph), "</span>").concat(my(e7.label), "</span>")).join("") + "</div>").join("");
7347
7382
  return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
7348
7383
  }
7349
- var Xv = class e4 {
7384
+ var _y = class e4 {
7350
7385
  constructor(t2) {
7351
7386
  var n2, r2, i2, a2, s2, c2;
7352
7387
  o(this, "config", void 0), o(this, "params", void 0), o(this, "dateInput", void 0), o(this, "timeInput", void 0), o(this, "refreshBtn", void 0), o(this, "locInput", void 0), o(this, "locDropdown", void 0), o(this, "summaryBar", void 0), o(this, "extraToggleInput", void 0), o(this, "searchTimeout", null), o(this, "searchVersion", 0), o(this, "isSearching", false), o(this, "suggestions", []), o(this, "activeIndex", -1), o(this, "selecting", false), o(this, "listboxId", "loc-listbox-".concat(e4.comboSeq++)), this.config = t2, this.params = { date: ((n2 = t2.initialParams) == null ? void 0 : n2.date) || this.getTodayDate(), time: ((r2 = t2.initialParams) == null ? void 0 : r2.time) || "12:00", latitude: ((i2 = t2.initialParams) == null ? void 0 : i2.latitude) || null, longitude: ((a2 = t2.initialParams) == null ? void 0 : a2.longitude) || null, timezone: ((s2 = t2.initialParams) == null ? void 0 : s2.timezone) || null, locationName: ((c2 = t2.initialParams) == null ? void 0 : c2.locationName) || null }, this.render();
@@ -7526,14 +7561,14 @@ var Xv = class e4 {
7526
7561
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7527
7562
  }
7528
7563
  };
7529
- o(Xv, "comboSeq", 0);
7530
- var Zv = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "About the Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "This wheel is an exact celestial snapshot of the sky at a given moment and place \u2014 every planet, house, and aspect line is clickable." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "About the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are layered here \u2014 the inner wheel is the natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "About the Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "The bodygraph is a living map of the energy centres, channels, and gates that define a Human Design chart." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "About the Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows the Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon &amp; Nakshatra</strong> for lunar mansion detail"], modalText: "This is a Vedic birth chart rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "About the Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to the natal chart \u2014 the exact dates outer-planet energies activate each placement." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "About the Moon Phase Dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status for the selected moment." }, bazi: { stripIcon: "\u56DB", stripTitle: "About the BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is the core identity element", "The <strong>Wu Xing bar</strong> shows the Five Element balance"], modalText: "This BaZi (Four Pillars of Destiny) chart maps the Heavenly Stems and Earthly Branches present at a given moment of birth." } }, Qv = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: oklch(0% 0 0 / 0.55);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oe-fade-in 0.4s ease both;\n font-family: system-ui, sans-serif;\n }\n\n .oe-welcome-modal {\n /* Themed, not hardcoded: the title/text/hints below all resolve through\n var(--text\u2026), so a fixed dark surface here meant that once the light\n palette became reachable the modal rendered near-black text on a\n near-black card \u2014 1.09:1, effectively invisible. The fallback is the\n previous literal, and every app\'s dark --surface is oklch(11-12%), so\n dark rendering is unchanged. */\n background: var(--surface, oklch(11% 0.010 265));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px oklch(0% 0 0 / 0.55), inset 0 1px 0 oklch(100% 0 0 / 0.06);\n animation: oe-modal-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n @keyframes oe-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes oe-modal-in {\n from { opacity: 0; transform: scale(0.95) translateY(10px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .oe-welcome-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n }\n\n .oe-welcome-icon {\n font-size: 28px;\n color: var(--gold, oklch(72% 0.12 80));\n line-height: 1;\n text-shadow: 0 0 10px var(--gold-glow, oklch(72% 0.12 80 / 0.30));\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: var(--text, oklch(92% 0.006 265));\n margin: 0;\n letter-spacing: 0.02em;\n }\n\n .oe-welcome-text {\n font-size: 14.5px;\n line-height: 1.5;\n color: var(--text-secondary, oklch(68% 0.008 265));\n margin: 0;\n }\n\n .oe-welcome-hints {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 8px 0 12px 0;\n padding: 0;\n list-style: none;\n }\n\n .oe-welcome-hints li {\n font-size: 13.5px;\n line-height: 1.4;\n color: var(--text-secondary, oklch(68% 0.008 265));\n display: flex;\n align-items: flex-start;\n gap: 10px;\n opacity: 0;\n animation: oe-fade-in 0.4s ease forwards;\n }\n\n /* Stagger the hints */\n .oe-welcome-hints li:nth-child(1) { animation-delay: 0.15s; }\n .oe-welcome-hints li:nth-child(2) { animation-delay: 0.25s; }\n .oe-welcome-hints li:nth-child(3) { animation-delay: 0.35s; }\n .oe-welcome-hints li:nth-child(4) { animation-delay: 0.45s; }\n\n .oe-welcome-hints li::before {\n content: "\u2726";\n color: var(--gold-dim, oklch(52% 0.06 80));\n font-size: 12px;\n padding-top: 2px;\n }\n\n .oe-welcome-hints strong {\n color: var(--text, oklch(92% 0.006 265));\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: var(--gold-subtle, oklch(72% 0.12 80 / 0.10));\n color: var(--gold, oklch(72% 0.12 80));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: oklch(72% 0.12 80 / 0.18);\n border-color: oklch(72% 0.12 80 / 0.40);\n }\n\n .oe-welcome-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n\n .oe-welcome-backdrop.is-dismissing {\n animation: oe-fade-out 0.3s ease forwards;\n }\n\n .oe-welcome-backdrop.is-dismissing .oe-welcome-modal {\n animation: oe-modal-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes oe-fade-out {\n to { opacity: 0; }\n }\n\n @keyframes oe-modal-out {\n to { opacity: 0; transform: scale(0.95) translateY(10px); }\n }\n';
7531
- function $v() {
7564
+ o(_y, "comboSeq", 0);
7565
+ var vy = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "About the Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "This wheel is an exact celestial snapshot of the sky at a given moment and place \u2014 every planet, house, and aspect line is clickable." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "About the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are layered here \u2014 the inner wheel is the natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "About the Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "The bodygraph is a living map of the energy centres, channels, and gates that define a Human Design chart." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "About the Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows the Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon &amp; Nakshatra</strong> for lunar mansion detail"], modalText: "This is a Vedic birth chart rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "About the Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to the natal chart \u2014 the exact dates outer-planet energies activate each placement." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "About the Moon Phase Dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status for the selected moment." }, bazi: { stripIcon: "\u56DB", stripTitle: "About the BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is the core identity element", "The <strong>Wu Xing bar</strong> shows the Five Element balance"], modalText: "This BaZi (Four Pillars of Destiny) chart maps the Heavenly Stems and Earthly Branches present at a given moment of birth." } }, yy = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: oklch(0% 0 0 / 0.55);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oe-fade-in 0.4s ease both;\n font-family: system-ui, sans-serif;\n }\n\n .oe-welcome-modal {\n /* Themed, not hardcoded: the title/text/hints below all resolve through\n var(--text\u2026), so a fixed dark surface here meant that once the light\n palette became reachable the modal rendered near-black text on a\n near-black card \u2014 1.09:1, effectively invisible. The fallback is the\n previous literal, and every app\'s dark --surface is oklch(11-12%), so\n dark rendering is unchanged. */\n background: var(--surface, oklch(11% 0.010 265));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px oklch(0% 0 0 / 0.55), inset 0 1px 0 oklch(100% 0 0 / 0.06);\n animation: oe-modal-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n @keyframes oe-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes oe-modal-in {\n from { opacity: 0; transform: scale(0.95) translateY(10px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .oe-welcome-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n }\n\n .oe-welcome-icon {\n font-size: 28px;\n color: var(--gold, oklch(72% 0.12 80));\n line-height: 1;\n text-shadow: 0 0 10px var(--gold-glow, oklch(72% 0.12 80 / 0.30));\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: var(--text, oklch(92% 0.006 265));\n margin: 0;\n letter-spacing: 0.02em;\n }\n\n .oe-welcome-text {\n font-size: 14.5px;\n line-height: 1.5;\n color: var(--text-secondary, oklch(68% 0.008 265));\n margin: 0;\n }\n\n .oe-welcome-hints {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 8px 0 12px 0;\n padding: 0;\n list-style: none;\n }\n\n .oe-welcome-hints li {\n font-size: 13.5px;\n line-height: 1.4;\n color: var(--text-secondary, oklch(68% 0.008 265));\n display: flex;\n align-items: flex-start;\n gap: 10px;\n opacity: 0;\n animation: oe-fade-in 0.4s ease forwards;\n }\n\n /* Stagger the hints */\n .oe-welcome-hints li:nth-child(1) { animation-delay: 0.15s; }\n .oe-welcome-hints li:nth-child(2) { animation-delay: 0.25s; }\n .oe-welcome-hints li:nth-child(3) { animation-delay: 0.35s; }\n .oe-welcome-hints li:nth-child(4) { animation-delay: 0.45s; }\n\n .oe-welcome-hints li::before {\n content: "\u2726";\n color: var(--gold-dim, oklch(52% 0.06 80));\n font-size: 12px;\n padding-top: 2px;\n }\n\n .oe-welcome-hints strong {\n color: var(--text, oklch(92% 0.006 265));\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: var(--gold-subtle, oklch(72% 0.12 80 / 0.10));\n color: var(--gold, oklch(72% 0.12 80));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: oklch(72% 0.12 80 / 0.18);\n border-color: oklch(72% 0.12 80 / 0.40);\n }\n\n .oe-welcome-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n\n .oe-welcome-backdrop.is-dismissing {\n animation: oe-fade-out 0.3s ease forwards;\n }\n\n .oe-welcome-backdrop.is-dismissing .oe-welcome-modal {\n animation: oe-modal-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes oe-fade-out {\n to { opacity: 0; }\n }\n\n @keyframes oe-modal-out {\n to { opacity: 0; transform: scale(0.95) translateY(10px); }\n }\n';
7566
+ function by() {
7532
7567
  if (document.getElementById("oe-first-run-styles")) return;
7533
7568
  let e5 = document.createElement("style");
7534
- e5.id = "oe-first-run-styles", e5.textContent = Qv, document.head.appendChild(e5);
7569
+ e5.id = "oe-first-run-styles", e5.textContent = yy, document.head.appendChild(e5);
7535
7570
  }
7536
- function ey(e5) {
7571
+ function xy(e5) {
7537
7572
  let t2 = document.activeElement, n2 = document.createElement("div");
7538
7573
  n2.className = "oe-welcome-backdrop";
7539
7574
  let r2 = document.createElement("div");
@@ -7551,24 +7586,24 @@ function ey(e5) {
7551
7586
  e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
7552
7587
  }), requestAnimationFrame(() => a2.focus()), n2;
7553
7588
  }
7554
- function ty(e5) {
7555
- $v();
7556
- let t2 = ey(Zv[e5]);
7589
+ function Sy(e5) {
7590
+ by();
7591
+ let t2 = xy(vy[e5]);
7557
7592
  document.body.appendChild(t2);
7558
7593
  }
7559
- var ny = "\n .oe-info-button {\n position: fixed;\n top: 12px;\n right: 12px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: var(--surface-2, oklch(16% 0.010 265));\n border: 1px solid var(--border-strong, oklch(30% 0.010 265));\n color: var(--text-secondary, oklch(68% 0.008 265));\n font: 600 14px/1 Georgia, serif;\n font-style: italic;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n transition: all 150ms ease;\n }\n\n .oe-info-button:hover {\n background: var(--surface, oklch(11% 0.010 265));\n border-color: var(--gold-dim, oklch(52% 0.06 80));\n color: var(--gold, oklch(72% 0.12 80));\n }\n\n .oe-info-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n";
7560
- function ry() {
7594
+ var Cy = "\n .oe-info-button {\n position: fixed;\n top: 12px;\n right: 12px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: var(--surface-2, oklch(16% 0.010 265));\n border: 1px solid var(--border-strong, oklch(30% 0.010 265));\n color: var(--text-secondary, oklch(68% 0.008 265));\n font: 600 14px/1 Georgia, serif;\n font-style: italic;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n transition: all 150ms ease;\n }\n\n .oe-info-button:hover {\n background: var(--surface, oklch(11% 0.010 265));\n border-color: var(--gold-dim, oklch(52% 0.06 80));\n color: var(--gold, oklch(72% 0.12 80));\n }\n\n .oe-info-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n";
7595
+ function wy() {
7561
7596
  if (document.getElementById("oe-info-button-styles")) return;
7562
7597
  let e5 = document.createElement("style");
7563
- e5.id = "oe-info-button-styles", e5.textContent = ny, document.head.appendChild(e5);
7598
+ e5.id = "oe-info-button-styles", e5.textContent = Cy, document.head.appendChild(e5);
7564
7599
  }
7565
- function iy(e5) {
7600
+ function Ty(e5) {
7566
7601
  if (document.getElementById("oe-info-button")) return;
7567
- ry();
7602
+ wy();
7568
7603
  let t2 = document.createElement("button");
7569
- t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () => ty(e5)), document.body.appendChild(t2);
7604
+ t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () => Sy(e5)), document.body.appendChild(t2);
7570
7605
  }
7571
- function ay(e5) {
7606
+ function Ey(e5) {
7572
7607
  var t2;
7573
7608
  if (!e5) return null;
7574
7609
  if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
@@ -7581,10 +7616,10 @@ function ay(e5) {
7581
7616
  }
7582
7617
  return null;
7583
7618
  }
7584
- var oy = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
7585
- function sy(e5, t2) {
7619
+ var Dy = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
7620
+ function Oy(e5, t2) {
7586
7621
  if (!e5) return null;
7587
- let n2 = oy.exec(e5.trim());
7622
+ let n2 = Dy.exec(e5.trim());
7588
7623
  if (n2) {
7589
7624
  let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
7590
7625
  return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
@@ -7592,31 +7627,31 @@ function sy(e5, t2) {
7592
7627
  let r2 = new Date(e5);
7593
7628
  return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
7594
7629
  }
7595
- function cy(e5) {
7630
+ function ky(e5) {
7596
7631
  var t2;
7597
7632
  if (!e5) return "";
7598
7633
  let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
7599
7634
  if (r2 ? n2.push(r2) : typeof e5.latitude == "number" && typeof e5.longitude == "number" && n2.push("".concat(e5.latitude.toFixed(2), ", ").concat(e5.longitude.toFixed(2))), e5.datetime) {
7600
- let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? sy(e5.datetime, e5.timezone) : null;
7635
+ let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? Oy(e5.datetime, e5.timezone) : null;
7601
7636
  t3 ? n2.push(t3.date.toLocaleString("en-US", { timeZone: t3.timeZone, day: "numeric", month: "short", year: "numeric", hour: "numeric", minute: "2-digit" })) : n2.push(e5.datetime);
7602
7637
  }
7603
7638
  return n2.join(" \xB7 ");
7604
7639
  }
7605
- function ly(e5, t2, n2 = "Chart") {
7606
- let r2 = cy(t2);
7640
+ function Ay(e5, t2, n2 = "Chart") {
7641
+ let r2 = ky(t2);
7607
7642
  return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
7608
7643
  }
7609
- function uy(e5) {
7644
+ function jy(e5) {
7610
7645
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7611
7646
  }
7612
- function dy(e5) {
7613
- let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(uy(i2), "</button>") : "";
7614
- if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(uy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7647
+ function My(e5) {
7648
+ let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(jy(i2), "</button>") : "";
7649
+ if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(jy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7615
7650
  var o2;
7616
7651
  (o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
7617
7652
  }
7618
7653
  }
7619
- function fy(e5, t2, n2 = []) {
7654
+ function Ny(e5, t2, n2 = []) {
7620
7655
  var r2, i2;
7621
7656
  if (!t2 || t2.querySelector("#btn-fullscreen")) return;
7622
7657
  let a2 = document.createElement("button");
@@ -7699,14 +7734,14 @@ function fy(e5, t2, n2 = []) {
7699
7734
  }, 4e3);
7700
7735
  }
7701
7736
  }
7702
- function py(e5, t2) {
7737
+ function Py(e5, t2) {
7703
7738
  e5.ontoolcancelled = (e6) => {
7704
7739
  var n2, r2, i2;
7705
7740
  let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
7706
- console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), my(a2);
7741
+ console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), Fy(a2);
7707
7742
  };
7708
7743
  }
7709
- function my(e5) {
7744
+ function Fy(e5) {
7710
7745
  var t2;
7711
7746
  (t2 = document.getElementById("cancel-toast")) == null || t2.remove();
7712
7747
  let n2 = document.createElement("div");
@@ -7714,7 +7749,7 @@ function my(e5) {
7714
7749
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7715
7750
  }, 3e3);
7716
7751
  }
7717
- function hy(e5) {
7752
+ function Iy(e5) {
7718
7753
  var t2;
7719
7754
  function n2(e6) {
7720
7755
  if (!e6) return;
@@ -7727,48 +7762,48 @@ function hy(e5) {
7727
7762
  n2(e6);
7728
7763
  });
7729
7764
  }
7730
- var gy = document.getElementById("loading-state"), _y = document.getElementById("chart-container"), vy = document.getElementById("chart-info"), yy = document.getElementById("chart-status"), by = document.getElementById("controls-panel"), xy = document.getElementById("patterns-strip"), Sy = document.getElementById("aspect-filter"), Cy = document.getElementById("overview-table"), wy = document.getElementById("param-controls-container"), Ty = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, Ey = "placidus", Dy = null;
7765
+ var Ly = document.getElementById("loading-state"), Ry = document.getElementById("chart-container"), zy = document.getElementById("chart-info"), By = document.getElementById("chart-status"), Vy = document.getElementById("controls-panel"), Hy = document.getElementById("patterns-strip"), Uy = document.getElementById("aspect-filter"), Wy = document.getElementById("overview-table"), Gy = document.getElementById("param-controls-container"), Ky = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, qy = "placidus", Jy = null;
7731
7766
  h_(() => {
7732
- $ && jy($);
7767
+ $ && Qy($);
7733
7768
  });
7734
- var Oy = false, ky = false;
7735
- function Ay(e5) {
7736
- yy && (e5 ? (yy.textContent = "\xB7 ".concat(e5), yy.setAttribute("data-active", "")) : (yy.textContent = "", yy.removeAttribute("data-active")));
7769
+ var Yy = false, Xy = false;
7770
+ function Zy(e5) {
7771
+ By && (e5 ? (By.textContent = "\xB7 ".concat(e5), By.setAttribute("data-active", "")) : (By.textContent = "", By.removeAttribute("data-active")));
7737
7772
  }
7738
- Ty.ontoolresult = (e5) => {
7773
+ Ky.ontoolresult = (e5) => {
7739
7774
  var t2;
7740
- let n2 = ay(e5);
7741
- if (tb(), !n2 || !n2.planets) {
7742
- console.error("[ChartWheel] \u274C No chart data found in tool result"), nb("Chart data could not be parsed from the server response.", rb);
7775
+ let n2 = Ey(e5);
7776
+ if (Sb(), !n2 || !n2.planets) {
7777
+ console.error("[ChartWheel] \u274C No chart data found in tool result"), Cb("Chart data could not be parsed from the server response.", wb);
7743
7778
  return;
7744
7779
  }
7745
- if ($ = n2, Ey = (t2 = n2.house_system) == null ? "placidus" : t2, !Dy) {
7780
+ if ($ = n2, qy = (t2 = n2.house_system) == null ? "placidus" : t2, !Jy) {
7746
7781
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
7747
7782
  let e6 = (r2 = n2._birth_params) == null ? {} : r2, t3 = (i2 = (a2 = (o2 = e6.datetime) == null ? n2.datetime : o2) == null ? n2.birth_datetime : a2) == null ? "" : i2, p2 = (s2 = (c2 = e6.location) == null ? n2.location : c2) == null ? "" : s2, m2 = (l2 = (u2 = e6.timezone) == null ? n2.timezone : u2) == null ? "" : l2, h2 = (d2 = e6.latitude) == null ? n2.latitude : d2, g2 = (f2 = e6.longitude) == null ? n2.longitude : f2, _2 = "", v2 = "12:00";
7748
7783
  if (t3 && t3.includes("T")) {
7749
7784
  let e7 = t3.split("T");
7750
7785
  _2 = e7[0], v2 = e7[1].substring(0, 5);
7751
7786
  }
7752
- Dy = new Xv({ app: Ty, container: wy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
7753
- Dy == null || Dy.setBusy(true), gy.removeAttribute("hidden"), _y.setAttribute("hidden", "");
7787
+ Jy = new _y({ app: Ky, container: Gy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
7788
+ Jy == null || Jy.setBusy(true), Ly.removeAttribute("hidden"), Ry.setAttribute("hidden", "");
7754
7789
  try {
7755
7790
  var t4, n3, r3, i3;
7756
- let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = ay(await Promise.race([Ty.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: Ey || "placidus", chart_type: "natal" } }), o3]));
7757
- s3 ? ($ = s3, s3.house_system && (Ey = s3.house_system), jy(s3)) : $ && (gy.setAttribute("hidden", ""), _y.removeAttribute("hidden"));
7791
+ let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = Ey(await Promise.race([Ky.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: qy || "placidus", chart_type: "natal" } }), o3]));
7792
+ s3 ? ($ = s3, s3.house_system && (qy = s3.house_system), Qy(s3)) : $ && (Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"));
7758
7793
  } catch (e8) {
7759
- console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (gy.setAttribute("hidden", ""), _y.removeAttribute("hidden"));
7794
+ console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"));
7760
7795
  } finally {
7761
- Dy == null || Dy.setBusy(false);
7796
+ Jy == null || Jy.setBusy(false);
7762
7797
  }
7763
7798
  } });
7764
7799
  }
7765
- jy(n2);
7800
+ Qy(n2);
7766
7801
  };
7767
- function jy(e5) {
7802
+ function Qy(e5) {
7768
7803
  var t2, n2, r2, i2, a2, o2, s2;
7769
- Ly = null, gy.setAttribute("hidden", ""), _y.removeAttribute("hidden"), wy.removeAttribute("hidden"), by.removeAttribute("hidden"), Hv(_y, e5, Gy, Ky, qy, Qy, ky ? Jy() : void 0), _v(Ay), Gv(by, Ey, $y), Ny(e5), iy("chart-wheel");
7770
- let c2 = Y_(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
7771
- c2.length > 0 && Fy(c2, u2), Ry(dv(u2, c2), c2, l2), Uy();
7804
+ ib = null, Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"), Gy.removeAttribute("hidden"), Vy.removeAttribute("hidden"), ly(Ry, e5, fb, pb, mb, yb, Xy ? hb() : void 0), Rv(Zy), fy(Vy, qy, bb), eb(e5), Ty("chart-wheel");
7805
+ let c2 = gv(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
7806
+ c2.length > 0 && nb(c2, u2), ab(Mv(u2, c2), c2, l2), ub();
7772
7807
  let d2 = document.getElementById("cw-action-bar");
7773
7808
  if (!d2) {
7774
7809
  d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
@@ -7779,19 +7814,19 @@ function jy(e5) {
7779
7814
  (f2 = document.getElementById("app")) == null || f2.prepend(d2);
7780
7815
  }
7781
7816
  }
7782
- d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void Xy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Zy());
7817
+ d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void _b()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void vb());
7783
7818
  }
7784
- function My(e5) {
7819
+ function $y(e5) {
7785
7820
  return String(e5).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7786
7821
  }
7787
- function Ny(e5) {
7822
+ function eb(e5) {
7788
7823
  var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
7789
- if (!vy) return;
7824
+ if (!zy) return;
7790
7825
  let d2 = (t2 = e5._birth_params) == null ? {} : t2, f2 = (n2 = (r2 = (i2 = d2.datetime) == null ? e5.datetime : i2) == null ? e5.birth_datetime : r2) == null ? "" : n2, p2 = (a2 = (o2 = d2.location) == null ? e5.location : o2) == null ? "" : a2, m2 = (s2 = (c2 = d2.timezone) == null ? e5.timezone : c2) == null ? "" : s2, h2 = (l2 = d2.latitude) == null ? e5.latitude : l2, g2 = (u2 = d2.longitude) == null ? e5.longitude : u2;
7791
- Ey.charAt(0).toUpperCase() + Ey.slice(1);
7792
- let _2 = Y_(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7826
+ qy.charAt(0).toUpperCase() + qy.slice(1);
7827
+ let _2 = gv(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7793
7828
  try {
7794
- let e6 = f2 && f2.includes("T") ? sy(f2, m2) : null;
7829
+ let e6 = f2 && f2.includes("T") ? Oy(f2, m2) : null;
7795
7830
  if (e6) {
7796
7831
  let { date: t3, timeZone: n3 } = e6;
7797
7832
  ee2 = t3.toLocaleDateString("en-US", { weekday: "short", year: "numeric", month: "short", day: "numeric", timeZone: n3 }) + " \xB7 " + t3.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, timeZone: n3 });
@@ -7799,16 +7834,16 @@ function Ny(e5) {
7799
7834
  } catch (e6) {
7800
7835
  }
7801
7836
  let y2 = typeof h2 == "number" && typeof g2 == "number" ? "".concat(Math.abs(h2).toFixed(2), "\xB0").concat(h2 >= 0 ? "N" : "S", ", ").concat(Math.abs(g2).toFixed(2), "\xB0").concat(g2 >= 0 ? "E" : "W") : "", b2 = [];
7802
- if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(My(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(My(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(My(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(My(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(My(v2), "</span>")), b2.length === 0) {
7803
- vy.setAttribute("hidden", "");
7837
+ if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat($y(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat($y(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat($y(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat($y(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat($y(v2), "</span>")), b2.length === 0) {
7838
+ zy.setAttribute("hidden", "");
7804
7839
  return;
7805
7840
  }
7806
- vy.innerHTML = b2.join(""), vy.removeAttribute("hidden");
7841
+ zy.innerHTML = b2.join(""), zy.removeAttribute("hidden");
7807
7842
  }
7808
- var Py = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7809
- function Fy(e5, t2) {
7810
- if (!Cy || e5.length === 0) return;
7811
- let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"], r2 = [...e5].sort((e6, t3) => {
7843
+ var tb = /* @__PURE__ */ new Set([F_, I_, L_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7844
+ function nb(e5, t2) {
7845
+ if (!Wy || e5.length === 0) return;
7846
+ let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", C_, w_, T_, E_], r2 = [...e5].sort((e6, t3) => {
7812
7847
  let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
7813
7848
  return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
7814
7849
  }), i2 = {};
@@ -7818,15 +7853,15 @@ function Fy(e5, t2) {
7818
7853
  }
7819
7854
  let s2 = (e6) => e6.replace(/(^|\s|_)\w/g, (e7) => e7.toUpperCase()).replace(/_/g, " "), c2 = (e6) => ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"][Math.floor((e6 % 360 + 360) % 360 / 30)], l2 = r2.map((e6) => {
7820
7855
  var t3, n3, r3, a3;
7821
- let o3 = e6.name.toLowerCase(), l3 = (t3 = P_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = Py.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7856
+ let o3 = e6.name.toLowerCase(), l3 = (t3 = tv[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = tb.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7822
7857
  return '<tr class="'.concat(p3 ? "extended-row" : "", '" data-planet="').concat(o3, '">\n <td><span class="planet-sym">').concat(l3, "</span> ").concat(s2(e6.name)).concat(m2, "</td>\n <td>").concat(d3, "\xB0 ").concat(u3, " ").concat(String(f3).padStart(2, "0"), "\u2032</td>\n <td>H").concat((a3 = e6.house) == null ? "\u2013" : a3, "</td>\n <td>").concat(h2 > 0 ? h2 : "\u2013", "</td>\n </tr>");
7823
7858
  }).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
7824
7859
  var t3;
7825
7860
  let n3 = (t3 = e6.sign) == null ? c2(e6.longitude) : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), a3 = e6.house == null ? "\u2013" : "H".concat(e6.house), o3 = e6.retrograde ? "\u211E" : "";
7826
7861
  return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
7827
7862
  }).join("\n");
7828
- Cy.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), Cy.removeAttribute("hidden");
7829
- let d2 = Cy.querySelector(".overview-copy");
7863
+ Wy.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), Wy.removeAttribute("hidden");
7864
+ let d2 = Wy.querySelector(".overview-copy");
7830
7865
  d2 && d2.addEventListener("click", async (e6) => {
7831
7866
  e6.stopPropagation();
7832
7867
  try {
@@ -7836,14 +7871,14 @@ function Fy(e5, t2) {
7836
7871
  d2.textContent = "Copy", d2.classList.remove("copied");
7837
7872
  }, 1600);
7838
7873
  } catch (e7) {
7839
- Iy("Copy unavailable");
7874
+ rb("Copy unavailable");
7840
7875
  }
7841
7876
  });
7842
- let f2 = Cy.querySelector(".overview-toggle"), p2 = Cy.querySelector(".overview-body");
7877
+ let f2 = Wy.querySelector(".overview-toggle"), p2 = Wy.querySelector(".overview-body");
7843
7878
  f2 == null || f2.addEventListener("click", () => {
7844
7879
  let e6 = f2.getAttribute("aria-expanded") === "true";
7845
7880
  f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
7846
- }), Cy.querySelectorAll("tbody tr").forEach((e6) => {
7881
+ }), Wy.querySelectorAll("tbody tr").forEach((e6) => {
7847
7882
  var t3;
7848
7883
  let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
7849
7884
  n3 && (e6.addEventListener("mouseenter", () => {
@@ -7855,7 +7890,7 @@ function Fy(e5, t2) {
7855
7890
  let t4 = document.querySelector("svg");
7856
7891
  t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
7857
7892
  var t5;
7858
- let n4 = Py.has((t5 = e7.dataset.planet) == null ? "" : t5);
7893
+ let n4 = tb.has((t5 = e7.dataset.planet) == null ? "" : t5);
7859
7894
  e7.style.opacity = n4 ? "0.65" : "1";
7860
7895
  }), e6.classList.remove("active-row"));
7861
7896
  }), e6.addEventListener("click", () => {
@@ -7866,7 +7901,7 @@ function Fy(e5, t2) {
7866
7901
  }));
7867
7902
  });
7868
7903
  }
7869
- function Iy(e5) {
7904
+ function rb(e5) {
7870
7905
  var t2;
7871
7906
  (t2 = document.getElementById("copy-toast")) == null || t2.remove();
7872
7907
  let n2 = document.createElement("div");
@@ -7874,26 +7909,26 @@ function Iy(e5) {
7874
7909
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7875
7910
  }, 2500);
7876
7911
  }
7877
- var Ly = null;
7878
- function Ry(e5, t2, n2) {
7879
- if (!xy) return;
7912
+ var ib = null;
7913
+ function ab(e5, t2, n2) {
7914
+ if (!Hy) return;
7880
7915
  if (e5.length === 0) {
7881
- xy.setAttribute("hidden", ""), xy.innerHTML = "";
7916
+ Hy.setAttribute("hidden", ""), Hy.innerHTML = "";
7882
7917
  return;
7883
7918
  }
7884
7919
  let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
7885
- if (xy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7920
+ if (Hy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7886
7921
  var n3;
7887
7922
  let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
7888
7923
  return '\n <button class="pattern-pill"\n data-idx="'.concat(t3, '"\n data-color="').concat(i2, '"\n style="color:').concat(i2, ";border-color:").concat(i2, '"\n title="').concat(e6.description, '">\n ').concat(e6.name, "\n </button>\n ");
7889
- }).join(""), "\n "), xy.removeAttribute("hidden"), !xy.querySelector(".pattern-ask-claude-btn")) {
7924
+ }).join(""), "\n "), Hy.removeAttribute("hidden"), !Hy.querySelector(".pattern-ask-claude-btn")) {
7890
7925
  let t3 = document.createElement("button");
7891
- t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", xy.appendChild(t3), t3.addEventListener("click", () => {
7926
+ t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", Hy.appendChild(t3), t3.addEventListener("click", () => {
7892
7927
  var n3;
7893
- let r3 = Ly;
7928
+ let r3 = ib;
7894
7929
  if (r3 === null) return;
7895
7930
  let i2 = e5[r3];
7896
- t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Qy({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7931
+ t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", yb({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7897
7932
  t3.textContent = "\u2713 Sent", setTimeout(() => {
7898
7933
  t3.textContent = "\u2728 Interpret", t3.disabled = false;
7899
7934
  }, 2500);
@@ -7902,132 +7937,130 @@ function Ry(e5, t2, n2) {
7902
7937
  });
7903
7938
  });
7904
7939
  }
7905
- xy.querySelectorAll(".pattern-pill").forEach((r3) => {
7940
+ Hy.querySelectorAll(".pattern-pill").forEach((r3) => {
7906
7941
  r3.addEventListener("click", () => {
7907
7942
  var i2;
7908
- let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = xy.querySelector(".pattern-ask-claude-btn");
7909
- Ly === a2 ? (Ly = null, Fv(), c2 && (c2.style.display = "none"), xy.querySelectorAll(".pattern-pill").forEach((e6) => {
7943
+ let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = Hy.querySelector(".pattern-ask-claude-btn");
7944
+ ib === a2 ? (ib = null, ny(), c2 && (c2.style.display = "none"), Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7910
7945
  var t3;
7911
7946
  e6.classList.remove("active");
7912
7947
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7913
7948
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7914
- })) : (Ly = a2, xy.querySelectorAll(".pattern-pill").forEach((e6) => {
7949
+ })) : (ib = a2, Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7915
7950
  var t3;
7916
7951
  e6.classList.remove("active");
7917
7952
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7918
7953
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7919
- }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, Nv(o2.planets, o2.aspectKeys), t2 && n2 != null && (zv(), Rv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
7954
+ }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, ey(o2.planets, o2.aspectKeys), t2 && n2 != null && (oy(), ay(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
7920
7955
  });
7921
7956
  });
7922
7957
  }
7923
- var zy = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], By = true, Vy = 8, Hy = "true";
7924
- function Uy() {
7958
+ var ob = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], sb = true, cb = 8, lb = "true";
7959
+ function ub() {
7925
7960
  var e5;
7926
- if (!Sy) return;
7961
+ if (!Uy) return;
7927
7962
  let t2 = (() => {
7928
7963
  let e6 = $ == null ? void 0 : $.planets, t3 = [];
7929
- Array.isArray(e6) ? e6.forEach((e7) => {
7930
- var n4;
7931
- return t3.push(String((n4 = e7 == null ? void 0 : e7.name) == null ? "" : n4).toLowerCase());
7932
- }) : e6 && typeof e6 == "object" && Object.keys(e6).forEach((e7) => t3.push(e7.toLowerCase()));
7933
- let n3 = t3.some((e7) => e7 === "north node" || e7 === "north node (mean)" || e7 === "mean node"), r3 = t3.some((e7) => e7 === "true node" || e7 === "north node (true)");
7934
- return n3 && r3;
7964
+ return Array.isArray(e6) ? e6.forEach((e7) => {
7965
+ var n3;
7966
+ return t3.push(String((n3 = e7 == null ? void 0 : e7.name) == null ? "" : n3).toLowerCase());
7967
+ }) : e6 && typeof e6 == "object" && Object.keys(e6).forEach((e7) => t3.push(e7.toLowerCase())), N_(t3);
7935
7968
  })();
7936
- q_(Hy);
7937
- let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(Hy === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Hy === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7938
- By = true, Sy.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(zy.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === Vy ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7939
- let r2 = Y_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
7969
+ mv(lb);
7970
+ let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(lb === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(lb === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7971
+ sb = true, Uy.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(ob.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === cb ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7972
+ let r2 = gv($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
7940
7973
  for (let e6 of r2) {
7941
7974
  let t3 = e6.name.toLowerCase();
7942
7975
  if (i2.has(t3)) continue;
7943
7976
  i2.add(t3);
7944
- let n3 = P_[t3];
7945
- n3 && a2.push({ glyph: n3, label: Jv(e6.name) });
7977
+ let n3 = tv[t3];
7978
+ n3 && a2.push({ glyph: n3, label: hy(e6.name) });
7946
7979
  }
7947
7980
  let o2 = [...new Set(((e5 = $ == null ? void 0 : $.aspects) == null ? [] : e5).map((e6) => {
7948
7981
  var t3;
7949
7982
  return ((t3 = e6.type) == null ? "" : t3).toLowerCase();
7950
7983
  }).filter(Boolean))].map((e6) => {
7951
7984
  var t3;
7952
- return { glyph: (t3 = L_[e6]) == null ? "" : t3, label: Jv(e6) };
7985
+ return { glyph: (t3 = iv[e6]) == null ? "" : t3, label: hy(e6) };
7953
7986
  }).filter((e6) => e6.glyph);
7954
- Sy.insertAdjacentHTML("beforeend", Yv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), Sy.removeAttribute("hidden");
7987
+ Uy.insertAdjacentHTML("beforeend", gy([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), Uy.removeAttribute("hidden");
7955
7988
  let s2 = document.getElementById("cw-aspect-vis-toggle");
7956
7989
  s2 == null || s2.addEventListener("click", () => {
7957
- By = !By, Bv(By), s2.classList.toggle("active", By), s2.querySelector(".toggle-icon").textContent = By ? "\u2295" : "\u2296";
7958
- }), Sy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7990
+ sb = !sb, sy(sb), s2.classList.toggle("active", sb), s2.querySelector(".toggle-icon").textContent = sb ? "\u2295" : "\u2296";
7991
+ }), Uy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7959
7992
  e6.addEventListener("click", () => {
7960
7993
  var t3;
7961
7994
  let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
7962
- n3 !== Vy && (Vy = n3, Sy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), Vv(n3));
7995
+ n3 !== cb && (cb = n3, Uy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), cy(n3));
7963
7996
  });
7964
- }), Sy.querySelectorAll(".node-btn").forEach((e6) => {
7997
+ }), Uy.querySelectorAll(".node-btn").forEach((e6) => {
7965
7998
  e6.addEventListener("click", () => {
7966
7999
  let t3 = e6.dataset.node === "mean" ? "mean" : "true";
7967
- t3 === Hy || !$ || (Hy = t3, q_(t3), jy($));
8000
+ t3 === lb || !$ || (lb = t3, mv(t3), Qy($));
7968
8001
  });
7969
8002
  });
7970
8003
  }
7971
- async function Wy(e5, t2) {
7972
- if (Oy) try {
8004
+ async function db(e5, t2) {
8005
+ if (Yy) try {
7973
8006
  let n2 = "[Chart Wheel] Selected ".concat(e5, " \u2014 ").concat(Object.entries(t2).filter(([, e6]) => e6 != null && e6 !== false && e6 !== "").map(([e6, t3]) => "".concat(e6, ": ").concat(t3)).join(", "));
7974
- await Ty.updateModelContext({ content: [{ type: "text", text: n2 }] });
8007
+ await Ky.updateModelContext({ content: [{ type: "text", text: n2 }] });
7975
8008
  } catch (e6) {
7976
8009
  console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
7977
8010
  }
7978
8011
  }
7979
- async function Gy(e5) {
8012
+ async function fb(e5) {
7980
8013
  var t2, n2, r2, i2;
7981
- Ly = null, xy == null || xy.querySelectorAll(".pattern-pill").forEach((e6) => {
8014
+ ib = null, Hy == null || Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7982
8015
  var t3;
7983
8016
  e6.classList.remove("active");
7984
8017
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7985
8018
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7986
- }), await Wy("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
8019
+ }), await db("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
7987
8020
  }
7988
- async function Ky(e5) {
8021
+ async function pb(e5) {
7989
8022
  var t2, n2;
7990
- await Wy("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
8023
+ await db("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
7991
8024
  }
7992
- async function qy(e5) {
8025
+ async function mb(e5) {
7993
8026
  var t2, n2, r2, i2;
7994
- await Wy("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
8027
+ await db("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
7995
8028
  }
7996
- function Jy() {
8029
+ function hb() {
7997
8030
  return async (e5) => {
7998
8031
  try {
7999
8032
  var t2, n2;
8000
- let r2 = await Ty.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
8033
+ let r2 = await Ky.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
8001
8034
  return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
8002
8035
  } catch (e6) {
8003
8036
  return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
8004
8037
  }
8005
8038
  };
8006
8039
  }
8007
- async function Yy(e5) {
8040
+ async function gb(e5) {
8008
8041
  try {
8009
- (await Ty.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
8042
+ (await Ky.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
8010
8043
  } catch (e6) {
8011
8044
  console.error("[ChartWheel] sendMessage failed:", e6);
8012
8045
  }
8013
8046
  }
8014
- async function Xy() {
8047
+ async function _b() {
8015
8048
  var e5, t2, n2, r2;
8016
8049
  if (!$) return;
8017
- let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = Y_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
8050
+ let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = gv(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
8018
8051
  var t3;
8019
8052
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
8020
8053
  }).slice(0, 8).map((e6) => " \u2022 ".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0, ").concat(e6.applying ? "applying" : "separating", ")")).join("\n") || " \u2022 No major aspects found";
8021
- await Yy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
8054
+ await gb("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
8022
8055
  var t3;
8023
8056
  return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
8024
8057
  }).join("\n"), "\n\nMajor aspects:\n").concat(c2, "\n\nCover: (1) Core identity and soul purpose (Sun, Moon, Ascendant), (2) The chart's dominant element, modality, and overall signature, (3) The most significant aspects and their psychological themes, (4) Key life areas of focus and challenge, (5) A practical synthesis \u2014 who is this person and what is their path?"));
8025
8058
  }
8026
- async function Zy() {
8059
+ async function vb() {
8027
8060
  var e5, t2, n2, r2;
8028
8061
  if (!$) return;
8029
8062
  let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
8030
- await Yy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(Y_(i2.planets).slice(0, 4).map((e6) => {
8063
+ await gb("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(gv(i2.planets).slice(0, 4).map((e6) => {
8031
8064
  var t3;
8032
8065
  return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
8033
8066
  }).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
@@ -8035,7 +8068,7 @@ async function Zy() {
8035
8068
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
8036
8069
  }).slice(0, 5).map((e6) => "".concat(e6.planet1, " ").concat(e6.type, " ").concat(e6.planet2, " (").concat(Number(e6.orb).toFixed(1), "\xB0)")).join(", ") || "none detected", ".\n\nBased on this chart, please suggest 3-4 specific, insightful questions I could ask to understand this person more deeply \u2014 such as how particular placements manifest in real life, the most significant aspect dynamics, or how to integrate the chart's core tensions. Present each as a tappable question I can ask you."));
8037
8070
  }
8038
- async function Qy(e5) {
8071
+ async function yb(e5) {
8039
8072
  let t2 = "";
8040
8073
  if (e5.type === "planet") {
8041
8074
  var n2;
@@ -8064,52 +8097,52 @@ async function Qy(e5) {
8064
8097
  t2 = "Interpret the ".concat(n3.angle, " at ").concat(n3.position, " (").concat(n3.sign, " \xB7 ").concat(n3.element, " \xB7 ").concat(n3.modality, ") in this natal chart. Give a focused interpretation of what this angle represents for the native \u2014 identity, life direction, relationships, or roots depending on which angle \u2014 and how the sign on the angle shapes that expression.");
8065
8098
  }
8066
8099
  if (t2) {
8067
- t2 = ly(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
8100
+ t2 = Ay(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
8068
8101
  try {
8069
- let e6 = await Ty.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8102
+ let e6 = await Ky.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8070
8103
  if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
8071
8104
  } catch (e6) {
8072
8105
  throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
8073
8106
  }
8074
8107
  }
8075
8108
  }
8076
- async function $y(e5) {
8109
+ async function bb(e5) {
8077
8110
  if (!($ != null && $._birth_params)) {
8078
- Kv(by, Ey);
8111
+ py(Vy, qy);
8079
8112
  return;
8080
8113
  }
8081
8114
  try {
8082
8115
  var t2, n2, r2, i2;
8083
- let a2 = ay(await Ty.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
8084
- a2 ? ($ = a2, Ey = e5, jy(a2)) : Kv(by, Ey);
8116
+ let a2 = Ey(await Ky.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
8117
+ a2 ? ($ = a2, qy = e5, Qy(a2)) : py(Vy, qy);
8085
8118
  } catch (e6) {
8086
- console.error("[Chart] Recalculate failed:", e6), Kv(by, Ey);
8119
+ console.error("[Chart] Recalculate failed:", e6), py(Vy, qy);
8087
8120
  }
8088
8121
  }
8089
- var eb;
8090
- function tb() {
8091
- eb && (clearTimeout(eb), eb = void 0);
8122
+ var xb;
8123
+ function Sb() {
8124
+ xb && (clearTimeout(xb), xb = void 0);
8092
8125
  }
8093
- function nb(e5, t2) {
8094
- tb(), gy.setAttribute("hidden", ""), dy({ container: _y, message: e5, onRetry: t2 });
8126
+ function Cb(e5, t2) {
8127
+ Sb(), Ly.setAttribute("hidden", ""), My({ container: Ry, message: e5, onRetry: t2 });
8095
8128
  }
8096
- function rb() {
8097
- tb(), _y.setAttribute("hidden", ""), gy.removeAttribute("hidden"), eb = setTimeout(() => {
8098
- nb("The chart didn't load. Tap to try again.", rb);
8099
- }, 3e4), Ty.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8129
+ function wb() {
8130
+ Sb(), Ry.setAttribute("hidden", ""), Ly.removeAttribute("hidden"), xb = setTimeout(() => {
8131
+ Cb("The chart didn't load. Tap to try again.", wb);
8132
+ }, 3e4), Ky.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8100
8133
  });
8101
8134
  }
8102
- py(Ty, { loadingEl: gy, contentEl: _y, statusFn: Ay, paramControls: () => Dy }), eb = setTimeout(() => {
8103
- nb("Chart data is taking longer than expected.", rb);
8135
+ Py(Ky, { loadingEl: Ly, contentEl: Ry, statusFn: Zy, paramControls: () => Jy }), xb = setTimeout(() => {
8136
+ Cb("Chart data is taking longer than expected.", wb);
8104
8137
  }, 3e4), (async () => {
8105
8138
  try {
8106
- await Ty.connect();
8107
- let e5 = Ty.getHostCapabilities();
8108
- Oy = !!(e5 != null && e5.modelContext), ky = !!(e5 != null && e5.sampling), fy(Ty, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), hy(Ty), g_(Ty, () => {
8109
- $ && jy($);
8110
- }), $ && jy($);
8139
+ await Ky.connect();
8140
+ let e5 = Ky.getHostCapabilities();
8141
+ Yy = !!(e5 != null && e5.modelContext), Xy = !!(e5 != null && e5.sampling), Ny(Ky, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), Iy(Ky), g_(Ky, () => {
8142
+ $ && Qy($);
8143
+ }), $ && Qy($);
8111
8144
  } catch (e5) {
8112
- console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), nb("The chart didn't load. Tap to try again.", rb);
8145
+ console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Cb("The chart didn't load. Tap to try again.", wb);
8113
8146
  }
8114
8147
  })();
8115
8148
  </script>