@openephemeris/mcp-server 4.10.0 → 4.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6613,80 +6613,80 @@ function i_(e5, t2) {
6613
6613
  };
6614
6614
  e5.addEventListener("pointerup", E2), e5.addEventListener("pointercancel", E2);
6615
6615
  }
6616
- var a_ = { fire: "#f55f7c", earth: "#24e6a8", air: "#ffc94d", water: "#49b6ea", fireTint: "rgba(245,95,124,0.20)", earthTint: "rgba(36,230,168,0.20)", airTint: "rgba(255,201,77,0.20)", waterTint: "rgba(73,182,234,0.20)", points: "#118ab2", others: "#ffa500", house: "#7a8695", transit: "#c19bf2", ink: "#f7f3f0" }, o_ = { fire: "#e23a63", earth: "#079e78", air: "#c99418", water: "#0f7ea3", fireTint: "rgba(239,71,111,0.12)", earthTint: "rgba(6,214,160,0.13)", airTint: "rgba(255,209,102,0.20)", waterTint: "rgba(17,138,178,0.12)", points: "#118ab2", others: "#ffa500", house: "#6f8496", transit: "#7b3fb5", ink: "#0b1220" };
6617
- function s_(e5) {
6618
- return e5 ? a_ : o_;
6616
+ var a_ = '"Segoe UI Symbol", "Noto Sans Symbols", "Noto Sans Symbols2", "Apple Symbols", "DejaVu Sans", serif', o_ = { fire: "#f55f7c", earth: "#24e6a8", air: "#ffc94d", water: "#49b6ea", fireTint: "rgba(245,95,124,0.20)", earthTint: "rgba(36,230,168,0.20)", airTint: "rgba(255,201,77,0.20)", waterTint: "rgba(73,182,234,0.20)", points: "#118ab2", others: "#ffa500", house: "#7a8695", transit: "#c19bf2", ink: "#f7f3f0" }, s_ = { fire: "#e23a63", earth: "#079e78", air: "#c99418", water: "#0f7ea3", fireTint: "rgba(239,71,111,0.12)", earthTint: "rgba(6,214,160,0.13)", airTint: "rgba(255,209,102,0.20)", waterTint: "rgba(17,138,178,0.12)", points: "#118ab2", others: "#ffa500", house: "#6f8496", transit: "#7b3fb5", ink: "#0b1220" };
6617
+ function c_(e5) {
6618
+ return e5 ? o_ : s_;
6619
6619
  }
6620
- function c_(e5, t2) {
6621
- let n2 = s_(t2);
6620
+ function l_(e5, t2) {
6621
+ let n2 = c_(t2);
6622
6622
  return [n2.fire, n2.earth, n2.air, n2.water][(e5 % 12 + 12) % 12 % 4];
6623
6623
  }
6624
- function l_(e5, t2) {
6625
- let n2 = s_(t2);
6624
+ function u_(e5, t2) {
6625
+ let n2 = c_(t2);
6626
6626
  return [n2.fireTint, n2.earthTint, n2.airTint, n2.waterTint][(e5 % 12 + 12) % 12 % 4];
6627
6627
  }
6628
- var u_;
6629
- function d_() {
6630
- return u_ ? u_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
6628
+ var d_;
6629
+ function f_() {
6630
+ return d_ ? d_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
6631
6631
  }
6632
- function f_(e5 = d_()) {
6632
+ function p_(e5 = f_()) {
6633
6633
  let t2 = e5 ? "dark" : "light";
6634
6634
  return document.documentElement.setAttribute("data-theme", t2), t2;
6635
6635
  }
6636
- function p_(e5) {
6637
- f_();
6636
+ function m_(e5) {
6637
+ p_();
6638
6638
  try {
6639
6639
  window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
6640
- u_ || e5 == null || e5(f_(t2.matches));
6640
+ d_ || e5 == null || e5(p_(t2.matches));
6641
6641
  });
6642
6642
  } catch (e6) {
6643
6643
  }
6644
6644
  }
6645
- function m_(e5, t2) {
6645
+ function h_(e5, t2) {
6646
6646
  var n2, r2;
6647
6647
  let i2 = (e6) => {
6648
6648
  let n3 = e6 == null ? void 0 : e6.theme;
6649
6649
  if (n3 !== "light" && n3 !== "dark") return;
6650
- u_ = n3;
6651
- let r3 = document.documentElement.getAttribute("data-theme"), i3 = f_(n3 === "dark");
6650
+ d_ = n3;
6651
+ let r3 = document.documentElement.getAttribute("data-theme"), i3 = p_(n3 === "dark");
6652
6652
  i3 !== r3 && (t2 == null || t2(i3));
6653
6653
  };
6654
6654
  (n2 = e5.addEventListener) == null || n2.call(e5, "hostcontextchanged", i2), i2((r2 = e5.getHostContext) == null ? void 0 : r2.call(e5));
6655
6655
  }
6656
- function h_(e5, t2) {
6656
+ function g_(e5, t2) {
6657
6657
  if (e5.length <= 1) {
6658
6658
  let t3 = /* @__PURE__ */ new Map();
6659
6659
  for (let n3 of e5) t3.set(n3.name, n3.longitude);
6660
6660
  return t3;
6661
6661
  }
6662
6662
  let n2 = [...e5].sort((e6, t3) => e6.longitude - t3.longitude), r2 = [], i2 = [];
6663
- for (let e6 of n2) r2.push(e6.longitude), i2.push(g_(e6.longitude, i2, t2));
6664
- v_(i2, r2, t2);
6663
+ for (let e6 of n2) r2.push(e6.longitude), i2.push(__(e6.longitude, i2, t2));
6664
+ y_(i2, r2, t2);
6665
6665
  let a2 = /* @__PURE__ */ new Map();
6666
- for (let e6 = 0; e6 < n2.length; e6++) a2.set(n2[e6].name, b_(i2[e6]));
6666
+ for (let e6 = 0; e6 < n2.length; e6++) a2.set(n2[e6].name, x_(i2[e6]));
6667
6667
  return a2;
6668
6668
  }
6669
- function g_(e5, t2, n2) {
6669
+ function __(e5, t2, n2) {
6670
6670
  if (t2.length === 0) return e5;
6671
6671
  let r2 = Math.max(0.55, n2 / 4), i2 = Math.max(8, Math.min(40, n2 * 5)), a2 = Math.floor(i2 / r2);
6672
- if (__(e5, t2, n2)) return e5;
6672
+ if (v_(e5, t2, n2)) return e5;
6673
6673
  for (let i3 = 1; i3 <= a2; i3++) {
6674
6674
  let a3 = i3 * r2;
6675
- if (__(e5 + a3, t2, n2)) return e5 + a3;
6676
- if (__(e5 - a3, t2, n2)) return e5 - a3;
6675
+ if (v_(e5 + a3, t2, n2)) return e5 + a3;
6676
+ if (v_(e5 - a3, t2, n2)) return e5 - a3;
6677
6677
  }
6678
6678
  return e5;
6679
6679
  }
6680
- function __(e5, t2, n2) {
6681
- for (let r2 of t2) if (y_(e5, r2) < n2) return false;
6680
+ function v_(e5, t2, n2) {
6681
+ for (let r2 of t2) if (b_(e5, r2) < n2) return false;
6682
6682
  return true;
6683
6683
  }
6684
- function v_(e5, t2, n2) {
6684
+ function y_(e5, t2, n2) {
6685
6685
  let r2 = e5.length;
6686
6686
  if (!(r2 <= 1)) for (let t3 = 0; t3 < 80; t3++) {
6687
6687
  let t4 = true;
6688
6688
  for (let i2 = 0; i2 < r2; i2++) for (let a2 = i2 + 1; a2 < r2; a2++) {
6689
- let r3 = n2 - y_(e5[i2], e5[a2]);
6689
+ let r3 = n2 - b_(e5[i2], e5[a2]);
6690
6690
  if (r3 > 0.01) {
6691
6691
  t4 = false;
6692
6692
  let n3 = r3 * 0.65 / 2, o2 = e5[a2] - e5[i2];
@@ -6698,89 +6698,89 @@ function v_(e5, t2, n2) {
6698
6698
  if (t4) break;
6699
6699
  }
6700
6700
  }
6701
- function y_(e5, t2) {
6701
+ function b_(e5, t2) {
6702
6702
  let n2 = ((t2 - e5) % 360 + 540) % 360 - 180;
6703
6703
  return Math.abs(n2);
6704
6704
  }
6705
- function b_(e5) {
6705
+ function x_(e5) {
6706
6706
  return (e5 % 360 + 360) % 360;
6707
6707
  }
6708
- var x_ = 250, S_ = 250, C_ = 240, w_ = 204, T_ = 190, E_ = 159, D_ = 140, O_ = 134, k_ = 15, A_ = 20;
6708
+ var S_ = 250, C_ = 250, w_ = 240, T_ = 204, E_ = 190, D_ = 159, O_ = 140, k_ = 134, A_ = 15, j_ = 20;
6709
6709
  function Y(e5, t2, n2) {
6710
6710
  let r2 = -(e5 - n2 + 180) * Math.PI / 180;
6711
- return { x: x_ + t2 * Math.cos(r2), y: S_ + t2 * Math.sin(r2) };
6711
+ return { x: S_ + t2 * Math.cos(r2), y: C_ + t2 * Math.sin(r2) };
6712
6712
  }
6713
6713
  function X(e5) {
6714
6714
  return document.createElementNS("http://www.w3.org/2000/svg", e5);
6715
6715
  }
6716
- var j_ = { 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" }, M_ = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), N_ = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], P_ = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
6717
- function F_(e5) {
6716
+ var M_ = { 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" }, N_ = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), P_ = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], F_ = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
6717
+ function I_(e5) {
6718
6718
  var t2;
6719
6719
  let n2 = e5.toLowerCase(), r2 = "--aspect-".concat(n2);
6720
6720
  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);
6721
6721
  }
6722
- var I_ = d_, L_ = (e5) => c_(e5, I_());
6723
- function R_(e5) {
6722
+ var L_ = f_, R_ = (e5) => l_(e5, L_());
6723
+ function z_(e5) {
6724
6724
  let t2 = "--planet-".concat(e5.toLowerCase().replace(/\s+/g, "-"));
6725
6725
  return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
6726
6726
  }
6727
- var z_ = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"]), B_ = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), V_ = /* @__PURE__ */ new Set([...z_, ...B_]);
6728
- function H_(e5) {
6727
+ var B_ = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"]), V_ = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), H_ = /* @__PURE__ */ new Set([...B_, ...V_]);
6728
+ function U_(e5) {
6729
6729
  let t2 = (e5 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
6730
- return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(N_[n2]);
6730
+ return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(P_[n2]);
6731
6731
  }
6732
6732
  function Z(e5) {
6733
6733
  return e5.replace(/\b\w/g, (e6) => e6.toUpperCase());
6734
6734
  }
6735
- var U_ = "true";
6736
- function W_(e5) {
6737
- U_ = e5;
6738
- }
6735
+ var W_ = "true";
6739
6736
  function G_(e5) {
6737
+ W_ = e5;
6738
+ }
6739
+ function K_(e5) {
6740
6740
  let t2 = e5.some((e6) => e6.name.toLowerCase() === "true node"), n2 = e5.some((e6) => e6.name.toLowerCase() === "north node");
6741
6741
  if (!t2 || !n2) return e5;
6742
- let r2 = U_ === "true" ? "north node" : "true node";
6742
+ let r2 = W_ === "true" ? "north node" : "true node";
6743
6743
  return e5.filter((e6) => e6.name.toLowerCase() !== r2);
6744
6744
  }
6745
- function K_(e5) {
6746
- return Array.isArray(e5) ? G_(e5) : e5 && typeof e5 == "object" ? G_(Object.entries(e5).filter(([e6]) => V_.has(e6.toLowerCase())).map(([e6, t2]) => {
6745
+ function q_(e5) {
6746
+ return Array.isArray(e5) ? K_(e5) : e5 && typeof e5 == "object" ? K_(Object.entries(e5).filter(([e6]) => H_.has(e6.toLowerCase())).map(([e6, t2]) => {
6747
6747
  var n2, r2, i2, a2, o2, s2;
6748
6748
  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 };
6749
6749
  })) : [];
6750
6750
  }
6751
- var q_ = document.getElementById("tooltip");
6752
- function J_(e5, t2, n2, r2, i2) {
6753
- q_.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 ");
6754
- let a2 = q_.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
6755
- c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), q_.style.left = "".concat(Math.max(14, c2), "px"), q_.style.top = "".concat(Math.max(14, l2), "px"), q_.classList.add("visible");
6751
+ var J_ = document.getElementById("tooltip");
6752
+ function Y_(e5, t2, n2, r2, i2) {
6753
+ J_.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 ");
6754
+ let a2 = J_.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
6755
+ c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), J_.style.left = "".concat(Math.max(14, c2), "px"), J_.style.top = "".concat(Math.max(14, l2), "px"), J_.classList.add("visible");
6756
6756
  }
6757
- function Y_() {
6758
- q_.classList.remove("visible");
6757
+ function X_() {
6758
+ J_.classList.remove("visible");
6759
6759
  }
6760
- var X_ = { 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" }, Z_ = { 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" }, Q_ = { 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" }, $_ = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
6761
- function ev(e5) {
6760
+ var Z_ = { 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" }, Q_ = { 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" }, $_ = { 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" }, ev = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
6761
+ function tv(e5) {
6762
6762
  return Math.floor((e5 % 360 + 360) % 360 / 30);
6763
6763
  }
6764
- var tv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, nv = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
6765
- function rv(e5, t2) {
6766
- let n2 = e5.toLowerCase(), r2 = ev(t2), i2 = tv[n2];
6764
+ var nv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, rv = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
6765
+ function iv(e5, t2) {
6766
+ let n2 = e5.toLowerCase(), r2 = tv(t2), i2 = nv[n2];
6767
6767
  if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
6768
6768
  if (i2 && i2.map((e6) => (e6 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
6769
- let a2 = nv[n2];
6769
+ let a2 = rv[n2];
6770
6770
  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;
6771
6771
  }
6772
- var iv = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], av = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
6773
- function ov(e5, t2) {
6772
+ var av = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], ov = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
6773
+ function sv(e5, t2) {
6774
6774
  return [e5.toLowerCase(), t2.toLowerCase()].sort().join("|");
6775
6775
  }
6776
- function sv(e5, t2) {
6776
+ function cv(e5, t2) {
6777
6777
  return e5.filter((e6) => {
6778
6778
  var n2;
6779
6779
  return ((n2 = e6.type) == null ? "" : n2).toLowerCase() === t2;
6780
6780
  });
6781
6781
  }
6782
- function cv(e5, t2) {
6783
- let n2 = [], r2 = sv(e5, "square"), i2 = sv(e5, "opposition"), a2 = sv(e5, "trine"), o2 = sv(e5, "sextile"), s2 = sv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
6782
+ function lv(e5, t2) {
6783
+ let n2 = [], r2 = cv(e5, "square"), i2 = cv(e5, "opposition"), a2 = cv(e5, "trine"), o2 = cv(e5, "sextile"), s2 = cv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
6784
6784
  for (let e6 of i2) {
6785
6785
  let i3 = e6.planet1.toLowerCase(), a3 = e6.planet2.toLowerCase(), o3 = r2.filter((e7) => e7.planet1.toLowerCase() === i3 || e7.planet2.toLowerCase() === i3);
6786
6786
  for (let e7 of o3) {
@@ -6789,8 +6789,8 @@ function cv(e5, t2) {
6789
6789
  let s3 = [i3, a3, o4].sort().join("|");
6790
6790
  if (!c2.has(s3) && r2.find((e8) => e8.planet1.toLowerCase() === o4 && e8.planet2.toLowerCase() === a3 || e8.planet2.toLowerCase() === o4 && e8.planet1.toLowerCase() === a3)) {
6791
6791
  c2.add(s3);
6792
- let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(av[ev(e8.longitude)]) : "";
6793
- n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [ov(i3, a3), ov(i3, o4), ov(a3, o4)] });
6792
+ let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(ov[tv(e8.longitude)]) : "";
6793
+ n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [sv(i3, a3), sv(i3, o4), sv(a3, o4)] });
6794
6794
  break;
6795
6795
  }
6796
6796
  }
@@ -6800,7 +6800,7 @@ function cv(e5, t2) {
6800
6800
  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));
6801
6801
  if (!c3) continue;
6802
6802
  let u3 = o3.find((e7) => e7 !== c3), d3 = s3.find((e7) => e7 !== c3), f3 = [u3, c3, d3].sort().join("|");
6803
- 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: [ov(u3, c3), ov(c3, d3), ov(u3, d3)] }));
6803
+ 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: [sv(u3, c3), sv(c3, d3), sv(u3, d3)] }));
6804
6804
  }
6805
6805
  if (i2.length >= 2 && r2.length >= 4) for (let e6 = 0; e6 < i2.length; e6++) for (let a3 = e6 + 1; a3 < i2.length; a3++) {
6806
6806
  let o3 = i2[e6], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
@@ -6811,19 +6811,19 @@ function cv(e5, t2) {
6811
6811
  var n3, r3;
6812
6812
  return { name: e8, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e8)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
6813
6813
  }).sort((e8, t3) => e8.lon - t3.lon).map((e8) => e8.name);
6814
- n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [ov(c3, l3), ov(u3, d3), ...f3.map(([e8, t3]) => ov(e8, t3))] });
6814
+ n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [sv(c3, l3), sv(u3, d3), ...f3.map(([e8, t3]) => sv(e8, t3))] });
6815
6815
  }
6816
6816
  }
6817
6817
  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();
6818
6818
  for (let { name: e6, lon: t3 } of d2) {
6819
6819
  var p2;
6820
- let n3 = ev(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
6820
+ let n3 = tv(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
6821
6821
  r3.push(e6), f2.set(n3, r3);
6822
6822
  }
6823
6823
  for (let [e6, t3] of f2) if (t3.length >= 3) {
6824
6824
  let r3 = [...t3].sort().join("|"), i3 = [];
6825
- for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(ov(t3[e7], t3[n3]));
6826
- n2.push({ name: "Stellium", description: "".concat(N_[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
6825
+ for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(sv(t3[e7], t3[n3]));
6826
+ n2.push({ name: "Stellium", description: "".concat(P_[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
6827
6827
  }
6828
6828
  let m2 = [...d2].sort((e6, t3) => e6.lon - t3.lon), h2 = [...m2, ...m2.map((e6) => ({ ...e6, lon: e6.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
6829
6829
  for (let e6 = 0; e6 < h2.length - 2; e6++) {
@@ -6836,7 +6836,7 @@ function cv(e5, t2) {
6836
6836
  if (g2.has(t4)) continue;
6837
6837
  if (g2.add(t4), !n2.some((e8) => e8._dedupeKey === t4)) {
6838
6838
  let t5 = [];
6839
- for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(ov(e7[n3], e7[r4]));
6839
+ for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(sv(e7[n3], e7[r4]));
6840
6840
  n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e7.map(Z).join(", ")), planets: e7, aspectKeys: t5 });
6841
6841
  }
6842
6842
  }
@@ -6846,7 +6846,7 @@ function cv(e5, t2) {
6846
6846
  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));
6847
6847
  if (!l3) continue;
6848
6848
  let u3 = a3.find((e7) => e7 !== l3), d3 = c3.find((e7) => e7 !== l3), f3 = [l3, u3, d3].sort().join("|");
6849
- _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: [ov(l3, u3), ov(l3, d3), ov(u3, d3)] }));
6849
+ _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: [sv(l3, u3), sv(l3, d3), sv(u3, d3)] }));
6850
6850
  }
6851
6851
  let v2 = /* @__PURE__ */ new Set(), ee2 = n2.filter((e6) => e6.name === "Grand Trine");
6852
6852
  for (let e6 of ee2) {
@@ -6857,43 +6857,43 @@ function cv(e5, t2) {
6857
6857
  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);
6858
6858
  if (!p3 || !m3) continue;
6859
6859
  let h3 = [t3, r3, a3, f3].sort().join("|");
6860
- 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, ov(f3, c3), ov(f3, l3), ov(f3, u3)] }));
6860
+ 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, sv(f3, c3), sv(f3, l3), sv(f3, u3)] }));
6861
6861
  }
6862
6862
  }
6863
6863
  for (let e6 of n2) delete e6._dedupeKey;
6864
6864
  return n2;
6865
6865
  }
6866
- var lv = null, uv = null, Q = null, dv = null, fv = null, pv = null;
6867
- function mv(e5) {
6868
- pv = e5;
6866
+ var uv = null, dv = null, Q = null, fv = null, pv = null, mv = null;
6867
+ function hv(e5) {
6868
+ mv = e5;
6869
6869
  }
6870
- var hv = /* @__PURE__ */ new Map();
6871
- function gv() {
6870
+ var gv = /* @__PURE__ */ new Map();
6871
+ function _v() {
6872
6872
  var e5;
6873
- if (lv) return lv;
6873
+ if (uv) return uv;
6874
6874
  let t2 = document.getElementById("info-panel");
6875
- if (t2) return lv = t2, lv;
6876
- lv = document.createElement("div"), lv.id = "info-panel", lv.className = "info-panel";
6875
+ if (t2) return uv = t2, uv;
6876
+ uv = document.createElement("div"), uv.id = "info-panel", uv.className = "info-panel";
6877
6877
  let n2 = document.getElementById("chart-container");
6878
- return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(lv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(lv), lv;
6878
+ return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(uv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(uv), uv;
6879
6879
  }
6880
- function _v(e5, t2, n2) {
6880
+ function vv(e5, t2, n2) {
6881
6881
  var r2, i2, a2, o2;
6882
- let s2 = gv(), c2 = (r2 = j_[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = M_[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = rv(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) => {
6882
+ let s2 = _v(), c2 = (r2 = M_[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = N_[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = iv(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) => {
6883
6883
  var n3, r3;
6884
6884
  return ((n3 = e6.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
6885
6885
  }), p2 = f2.length ? f2.map((e6) => {
6886
6886
  var n3, r3, i3, a3, o3, s3, c3;
6887
- let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = j_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = P_[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = F_((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";
6887
+ let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = M_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = F_[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = I_((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";
6888
6888
  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>");
6889
- }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = fv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6890
- 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(H_(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", () => {
6891
- wv(), Mv();
6889
+ }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6890
+ 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(U_(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", () => {
6891
+ Tv(), Nv();
6892
6892
  }), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
6893
6893
  var e6, n3, r3, i3, a3;
6894
- if (!fv) return;
6894
+ if (!pv) return;
6895
6895
  let o3 = document.getElementById("ask-claude-btn");
6896
- !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), fv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? H_(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(() => {
6896
+ !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), pv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? U_(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(() => {
6897
6897
  o3.textContent = "\u2713 Sent to Claude", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
6898
6898
  o3.textContent = "\u2728 Ask Claude to interpret", o3.classList.remove("sent"), o3.disabled = false;
6899
6899
  }, 2500);
@@ -6902,16 +6902,16 @@ function _v(e5, t2, n2) {
6902
6902
  }));
6903
6903
  });
6904
6904
  }
6905
- function vv(e5, t2, n2) {
6905
+ function yv(e5, t2, n2) {
6906
6906
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
6907
- let p2 = gv(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = j_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = j_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = P_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = F_((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(H_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(H_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = fv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
6907
+ let p2 = _v(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = M_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = M_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = F_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = I_((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(U_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(U_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
6908
6908
  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", () => {
6909
- wv(), Mv();
6909
+ Tv(), Nv();
6910
6910
  }), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
6911
6911
  var e6, n3, r3, i3, a3, o3, s3, c3;
6912
- if (!fv) return;
6912
+ if (!pv) return;
6913
6913
  let l3 = document.getElementById("ask-claude-btn");
6914
- !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), fv({ 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(() => {
6914
+ !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), pv({ 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(() => {
6915
6915
  l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
6916
6916
  l3.textContent = "Ask Claude \u2014 Interpret", l3.classList.remove("sent"), l3.disabled = false;
6917
6917
  }, 2500);
@@ -6920,22 +6920,22 @@ function vv(e5, t2, n2) {
6920
6920
  }));
6921
6921
  });
6922
6922
  }
6923
- function yv(e5, t2, n2) {
6923
+ function bv(e5, t2, n2) {
6924
6924
  var r2, i2, a2, o2, s2;
6925
- let c2 = gv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = M_[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? N_[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
6925
+ let c2 = _v(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = N_[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? P_[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
6926
6926
  var t3;
6927
- let n3 = (t3 = j_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = H_(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6927
+ let n3 = (t3 = M_[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = U_(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6928
6928
  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>");
6929
- }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = fv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
6929
+ }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = pv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
6930
6930
  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", () => {
6931
- wv(), Mv();
6931
+ Tv(), Nv();
6932
6932
  }), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
6933
6933
  var e6;
6934
- if (!fv) return;
6934
+ if (!pv) return;
6935
6935
  let n3 = document.getElementById("ask-claude-btn");
6936
- !n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), fv({ 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) => {
6936
+ !n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), pv({ 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) => {
6937
6937
  var t3, n4;
6938
- return { name: e7.name, sign: (t3 = e7.sign) == null ? H_(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6938
+ return { name: e7.name, sign: (t3 = e7.sign) == null ? U_(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6939
6939
  }) } }).then(() => {
6940
6940
  n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
6941
6941
  n3.textContent = "Ask Claude \u2014 Interpret", n3.classList.remove("sent"), n3.disabled = false;
@@ -6945,22 +6945,22 @@ function yv(e5, t2, n2) {
6945
6945
  }));
6946
6946
  });
6947
6947
  }
6948
- var bv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
6949
- function xv(e5, t2, n2) {
6948
+ var xv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
6949
+ function Sv(e5, t2, n2) {
6950
6950
  var r2, i2, a2, o2, s2;
6951
- let c2 = gv(), l2 = N_[t2], u2 = M_[t2], d2 = Z(iv[t2]), f2 = Z(av[t2]), p2 = (r2 = bv[l2]) == null ? "" : r2, m2 = (i2 = j_[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
6951
+ let c2 = _v(), l2 = P_[t2], u2 = N_[t2], d2 = Z(av[t2]), f2 = Z(ov[t2]), p2 = (r2 = xv[l2]) == null ? "" : r2, m2 = (i2 = M_[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
6952
6952
  var t3;
6953
- let n3 = (t3 = j_[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 = rv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
6953
+ let n3 = (t3 = M_[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 = iv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
6954
6954
  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>");
6955
- }).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 = fv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Ask Claude \u2014 Interpret '.concat(l2, "</button>") : "";
6956
- c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(L_(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", () => {
6957
- wv(), Mv();
6955
+ }).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 = pv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Ask Claude \u2014 Interpret '.concat(l2, "</button>") : "";
6956
+ c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(R_(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", () => {
6957
+ Tv(), Nv();
6958
6958
  }), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
6959
- if (!fv) return;
6959
+ if (!pv) return;
6960
6960
  let e6 = document.getElementById("sign-ask-claude-btn");
6961
- !e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), fv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
6961
+ !e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), pv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
6962
6962
  var t3, n3;
6963
- return { name: e7.name, longitude: e7.longitude, position: H_(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
6963
+ return { name: e7.name, longitude: e7.longitude, position: U_(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
6964
6964
  }) } }).then(() => {
6965
6965
  e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
6966
6966
  e6.textContent = "Ask Claude \u2014 Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
@@ -6970,17 +6970,17 @@ function xv(e5, t2, n2) {
6970
6970
  }));
6971
6971
  });
6972
6972
  }
6973
- var Sv = { 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"] } };
6974
- function Cv(e5, t2, n2) {
6973
+ var Cv = { 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"] } };
6974
+ function wv(e5, t2, n2) {
6975
6975
  var r2, i2;
6976
- let a2 = gv(), o2 = Sv[t2];
6976
+ let a2 = _v(), o2 = Cv[t2];
6977
6977
  if (!o2) return;
6978
- let s2 = H_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(iv[c2]), u2 = Z(av[c2]), d2 = M_[c2], f2 = L_(c2);
6978
+ let s2 = U_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(av[c2]), u2 = Z(ov[c2]), d2 = N_[c2], f2 = R_(c2);
6979
6979
  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 Ask Claude \u2014 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", () => {
6980
- wv(), Mv();
6980
+ Tv(), Nv();
6981
6981
  }), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
6982
6982
  let t3 = e6.currentTarget;
6983
- t3.textContent = "Sending\u2026", t3.disabled = true, fv == null || fv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: N_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
6983
+ t3.textContent = "Sending\u2026", t3.disabled = true, pv == null || pv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: P_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
6984
6984
  t3.textContent = "Sent", setTimeout(() => {
6985
6985
  t3.textContent = "Ask Claude \u2014 Interpret ".concat(o2.title), t3.disabled = false;
6986
6986
  }, 2500);
@@ -6989,22 +6989,22 @@ function Cv(e5, t2, n2) {
6989
6989
  });
6990
6990
  });
6991
6991
  }
6992
- function wv() {
6993
- lv == null || lv.classList.remove("visible"), uv = null, Ov(), pv == null || pv(null);
6992
+ function Tv() {
6993
+ uv == null || uv.classList.remove("visible"), dv = null, kv(), mv == null || mv(null);
6994
6994
  }
6995
- var Tv = null, Ev = 0;
6996
- function Dv(e5, t2 = false) {
6997
- let n2 = Tv;
6995
+ var Ev = null, Dv = 0;
6996
+ function Ov(e5, t2 = false) {
6997
+ let n2 = Ev;
6998
6998
  if (!n2) return;
6999
- let r2 = Ev, i2 = Y(e5, C_, r2), a2 = Y(e5, 198, r2);
6999
+ let r2 = Dv, i2 = Y(e5, w_, r2), a2 = Y(e5, 198, r2);
7000
7000
  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";
7001
7001
  }
7002
- function Ov() {
7003
- Tv && (Tv.style.opacity = "0");
7002
+ function kv() {
7003
+ Ev && (Ev.style.opacity = "0");
7004
7004
  }
7005
- function kv(e5) {
7005
+ function Av(e5) {
7006
7006
  let t2 = e5.toLowerCase(), n2 = /* @__PURE__ */ new Set();
7007
- hv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
7007
+ gv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
7008
7008
  let o2 = a2.split("|");
7009
7009
  if (o2.includes(t2)) {
7010
7010
  e6.style.stroke = r2, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e7) => {
@@ -7024,9 +7024,9 @@ function kv(e5) {
7024
7024
  e6.classList.toggle("dim", i2 !== t2 && !n2.has(i2));
7025
7025
  });
7026
7026
  }
7027
- function Av(e5, t2) {
7027
+ function jv(e5, t2) {
7028
7028
  let n2 = new Set(e5.map((e6) => e6.toLowerCase())), r2 = new Set(t2);
7029
- hv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
7029
+ gv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
7030
7030
  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) => {
7031
7031
  e7.style.opacity = "1";
7032
7032
  })) : (e6.style.strokeOpacity = "0.05", e6.style.strokeWidth = "0.7", e6.removeAttribute("filter"), n3.forEach((e7) => {
@@ -7040,8 +7040,8 @@ function Av(e5, t2) {
7040
7040
  return e6.classList.toggle("dim", !n2.has((t3 = e6.dataset.planet) == null ? "" : t3));
7041
7041
  });
7042
7042
  }
7043
- function jv() {
7044
- hv.forEach(({ vis: e5, symbolEls: t2 }) => {
7043
+ function Mv() {
7044
+ gv.forEach(({ vis: e5, symbolEls: t2 }) => {
7045
7045
  e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), t2.forEach((e6) => {
7046
7046
  e6.style.opacity = "0.12";
7047
7047
  });
@@ -7049,17 +7049,17 @@ function jv() {
7049
7049
  e5.style.opacity = "0.35";
7050
7050
  }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.add("dim"));
7051
7051
  }
7052
- function Mv() {
7053
- hv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
7052
+ function Nv() {
7053
+ gv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
7054
7054
  e5.style.stroke = t2, e5.style.strokeOpacity = n2, e5.style.strokeWidth = r2, e5.removeAttribute("filter"), i2.forEach((e6) => {
7055
7055
  e6.style.opacity = "";
7056
7056
  });
7057
7057
  }), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
7058
7058
  e5.style.opacity = "";
7059
- }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), Iv();
7059
+ }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), Lv();
7060
7060
  }
7061
- var Nv = { "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)" }, Pv = { "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)" };
7062
- function Fv(e5, t2, n2) {
7061
+ var Pv = { "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)" }, Fv = { "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)" };
7062
+ function Iv(e5, t2, n2) {
7063
7063
  var r2, i2;
7064
7064
  if (!Q) return null;
7065
7065
  let a2 = /* @__PURE__ */ new Map();
@@ -7067,26 +7067,26 @@ function Fv(e5, t2, n2) {
7067
7067
  let o2 = [];
7068
7068
  for (let t3 of e5.planets) {
7069
7069
  let e6 = a2.get(t3.toLowerCase());
7070
- e6 != null && o2.push(Y(e6, O_, n2));
7070
+ e6 != null && o2.push(Y(e6, k_, n2));
7071
7071
  }
7072
7072
  if (o2.length < 2) return null;
7073
- let s2 = (r2 = Nv[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = Pv[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
7073
+ let s2 = (r2 = Pv[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = Fv[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
7074
7074
  if (o2.length === 2) {
7075
7075
  let e6 = X("line");
7076
7076
  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;
7077
7077
  } else {
7078
- let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - S_, e7.x - x_) - Math.atan2(t4.y - S_, t4.x - x_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
7078
+ let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - C_, e7.x - S_) - Math.atan2(t4.y - C_, t4.x - S_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
7079
7079
  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;
7080
7080
  }
7081
7081
  l2.setAttribute("pointer-events", "none"), l2.setAttribute("class", "pattern-overlay");
7082
7082
  let u2 = Q.querySelector(".aspect-hit");
7083
7083
  return u2 ? Q.insertBefore(l2, u2) : Q.appendChild(l2), l2;
7084
7084
  }
7085
- function Iv() {
7085
+ function Lv() {
7086
7086
  Q == null || Q.querySelectorAll(".pattern-overlay").forEach((e5) => e5.remove());
7087
7087
  }
7088
- function Lv(e5) {
7089
- hv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
7088
+ function Rv(e5) {
7089
+ gv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
7090
7090
  e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0", a2.forEach((t3) => {
7091
7091
  t3.style.display = e5 ? "" : "none";
7092
7092
  });
@@ -7094,8 +7094,8 @@ function Lv(e5) {
7094
7094
  t2.style.pointerEvents = e5 ? "all" : "none";
7095
7095
  });
7096
7096
  }
7097
- function Rv(e5) {
7098
- hv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
7097
+ function zv(e5) {
7098
+ gv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
7099
7099
  a2 <= e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none", o2.forEach((t3) => {
7100
7100
  t3.style.display = a2 <= e5 ? "" : "none";
7101
7101
  });
@@ -7103,12 +7103,12 @@ function Rv(e5) {
7103
7103
  e6.style.display = "";
7104
7104
  });
7105
7105
  }
7106
- function zv(e5, t2, n2, r2, i2, a2, o2) {
7106
+ function Bv(e5, t2, n2, r2, i2, a2, o2) {
7107
7107
  var s2, c2, l2, u2, d2, f2, p2, m2, h2;
7108
- fv = a2 == null ? null : a2;
7108
+ pv = a2 == null ? null : a2;
7109
7109
  let g2 = e5.querySelector("#pan-zoom-controls");
7110
- e5.innerHTML = "", g2 && e5.appendChild(g2), hv.clear(), uv = null, wv();
7111
- let _2 = K_(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");
7110
+ e5.innerHTML = "", g2 && e5.appendChild(g2), gv.clear(), dv = null, Tv();
7111
+ let _2 = q_(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");
7112
7112
  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;
7113
7113
  {
7114
7114
  let e6 = X("defs");
@@ -7126,80 +7126,82 @@ function zv(e5, t2, n2, r2, i2, a2, o2) {
7126
7126
  let te2 = X("g");
7127
7127
  te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "5"), b2.appendChild(te2);
7128
7128
  let ne2 = X("g");
7129
- b2.appendChild(ne2), Ev = y2;
7129
+ b2.appendChild(ne2), Dv = y2;
7130
7130
  let T2 = X("line");
7131
- 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), Tv = T2;
7131
+ 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), Ev = T2;
7132
7132
  let re2 = X("circle");
7133
7133
  re2.setAttribute("cx", "250"), re2.setAttribute("cy", "250"), re2.setAttribute("r", "244"), re2.style.fill = "var(--bg, #faf9f5)", re2.setAttribute("stroke", "#d4cec8"), re2.setAttribute("stroke-width", "0.5"), re2.setAttribute("pointer-events", "none"), x2.appendChild(re2);
7134
- let E2 = I_(), ie2 = X("circle");
7135
- ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", String(C_)), ie2.setAttribute("fill", E2 ? "#141720" : "#f2ede6"), ie2.setAttribute("stroke", E2 ? "#252a38" : "#c0b8a8"), ie2.setAttribute("stroke-width", "0.5"), ie2.setAttribute("pointer-events", "none"), S2.appendChild(ie2);
7134
+ let E2 = L_(), ie2 = X("circle");
7135
+ ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", String(w_)), ie2.setAttribute("fill", E2 ? "#141720" : "#f2ede6"), ie2.setAttribute("stroke", E2 ? "#252a38" : "#c0b8a8"), ie2.setAttribute("stroke-width", "0.5"), ie2.setAttribute("pointer-events", "none"), S2.appendChild(ie2);
7136
7136
  let ae2 = X("circle");
7137
- ae2.setAttribute("cx", "250"), ae2.setAttribute("cy", "250"), ae2.setAttribute("r", String(w_)), ae2.style.fill = "var(--bg, #faf9f5)", ae2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), ae2.setAttribute("stroke-width", "0.5"), ae2.setAttribute("pointer-events", "none"), S2.appendChild(ae2);
7138
- let oe2 = Array.from({ length: 12 }, (e6, t3) => l_(t3, E2)), se2 = E2 ? "rgba(180,170,160,0.28)" : "rgba(100,90,80,0.22)", ce2 = E2 ? "rgba(180,170,160,0.50)" : "rgba(100,90,80,0.40)";
7137
+ ae2.setAttribute("cx", "250"), ae2.setAttribute("cy", "250"), ae2.setAttribute("r", String(T_)), ae2.style.fill = "var(--bg, #faf9f5)", ae2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), ae2.setAttribute("stroke-width", "0.5"), ae2.setAttribute("pointer-events", "none"), S2.appendChild(ae2);
7138
+ let oe2 = Array.from({ length: 12 }, (e6, t3) => u_(t3, E2)), se2 = E2 ? "rgba(180,170,160,0.28)" : "rgba(100,90,80,0.22)", ce2 = E2 ? "rgba(180,170,160,0.50)" : "rgba(100,90,80,0.40)";
7139
7139
  for (let e6 = 0; e6 < 12; e6++) {
7140
- let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, C_, y2), i3 = Y(n3, C_, y2), a3 = Y(t3, w_, y2), o3 = Y(n3, w_, y2), s3 = X("path");
7141
- s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(C_, " ").concat(C_, " 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(w_, " ").concat(w_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", oe2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
7142
- let { x: c3, y: l3 } = Y(t3, w_, y2), { x: u3, y: d3 } = Y(t3, C_, y2), f3 = X("line");
7140
+ let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, w_, y2), i3 = Y(n3, w_, y2), a3 = Y(t3, T_, y2), o3 = Y(n3, T_, y2), s3 = X("path");
7141
+ s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(w_, " ").concat(w_, " 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(T_, " ").concat(T_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", oe2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
7142
+ let { x: c3, y: l3 } = Y(t3, T_, y2), { x: u3, y: d3 } = Y(t3, w_, y2), f3 = X("line");
7143
7143
  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", E2 ? "#2d3548" : "#c0b8a8"), f3.setAttribute("stroke-width", "0.5"), f3.setAttribute("pointer-events", "none"), S2.appendChild(f3);
7144
7144
  let { x: p3, y: m3 } = Y(t3 + 15, 444 / 2, y2), h3 = X("text");
7145
- 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", c_(e6, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = "serif", h3.textContent = M_[e6], S2.appendChild(h3);
7145
+ 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 = N_[e6], S2.appendChild(h3);
7146
7146
  for (let e7 = 1; e7 < 30; e7++) {
7147
- let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? C_ - 7 : C_ - 3, { x: a4, y: o4 } = Y(n4, C_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
7147
+ let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? w_ - 7 : w_ - 3, { x: a4, y: o4 } = Y(n4, w_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
7148
7148
  l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1)), l4.setAttribute("stroke", r4 ? ce2 : se2), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), S2.appendChild(l4);
7149
7149
  }
7150
7150
  }
7151
7151
  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" };
7152
7152
  for (let e6 = 0; e6 < 12; e6++) {
7153
7153
  var ue2, de2;
7154
- let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, C_, y2), i3 = Y(n3, C_, y2), a3 = Y(t3, w_, y2), o3 = Y(n3, w_, y2), s3 = X("path");
7155
- s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(C_, " ").concat(C_, " 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(w_, " ").concat(w_, " 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", Bv(s3, "".concat(N_[e6], " \u2014 click for sign info"));
7156
- let c3 = Z(iv[e6]), l3 = Z(av[e6]), u3 = (ue2 = le2[N_[e6]]) == null ? "" : ue2, d3 = (de2 = Q_[N_[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
7157
- s3.addEventListener("mouseenter", (t4) => J_(t4.clientX, t4.clientY, "".concat(M_[e6], " ").concat(N_[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => J_(t4.clientX, t4.clientY, "".concat(M_[e6], " ").concat(N_[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", Y_), s3.addEventListener("click", (t4) => {
7158
- Y_(), pv == null || pv("".concat(M_[e6], " ").concat(N_[e6])), xv(t4, e6, _2);
7154
+ let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, w_, y2), i3 = Y(n3, w_, y2), a3 = Y(t3, T_, y2), o3 = Y(n3, T_, y2), s3 = X("path");
7155
+ s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(w_, " ").concat(w_, " 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(T_, " ").concat(T_, " 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", Vv(s3, "".concat(P_[e6], " \u2014 click for sign info"));
7156
+ let c3 = Z(av[e6]), l3 = Z(ov[e6]), u3 = (ue2 = le2[P_[e6]]) == null ? "" : ue2, d3 = (de2 = $_[P_[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
7157
+ s3.addEventListener("mouseenter", (t4) => Y_(t4.clientX, t4.clientY, "".concat(N_[e6], " ").concat(P_[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => Y_(t4.clientX, t4.clientY, "".concat(N_[e6], " ").concat(P_[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", X_), s3.addEventListener("click", (t4) => {
7158
+ X_(), mv == null || mv("".concat(N_[e6], " ").concat(P_[e6])), Sv(t4, e6, _2);
7159
7159
  }), ne2.appendChild(s3);
7160
7160
  }
7161
7161
  let fe2 = X("circle");
7162
- if (fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(D_)), fe2.style.fill = "var(--bg, #faf9f5)", fe2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), fe2.setAttribute("stroke-width", "0.5"), fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
7163
- let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = Y(t3.cusp_lon, D_, y2), { x: o3, y: s3 } = Y(t3.cusp_lon, w_, y2), c3 = X("line");
7162
+ fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(T_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2);
7163
+ let pe2 = X("circle");
7164
+ if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(O_)), pe2.style.fill = "var(--bg, #faf9f5)", pe2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), pe2.setAttribute("stroke-width", "0.5"), pe2.setAttribute("pointer-events", "none"), C2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
7165
+ let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = Y(t3.cusp_lon, O_, y2), { x: o3, y: s3 } = Y(t3.cusp_lon, T_, y2), c3 = X("line");
7164
7166
  c3.setAttribute("x1", i3.toFixed(1)), c3.setAttribute("y1", a3.toFixed(1)), c3.setAttribute("x2", o3.toFixed(1)), c3.setAttribute("y2", s3.toFixed(1)), c3.setAttribute("stroke", r3 ? "#7060b8" : E2 ? "#3a3450" : "#a89898"), c3.setAttribute("stroke-width", r3 ? "1.5" : "0.7"), c3.setAttribute("pointer-events", "none"), C2.appendChild(c3);
7165
- let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = Y(t3.cusp_lon + l3 / 2, E_, y2), f3 = X("text");
7167
+ let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = Y(t3.cusp_lon + l3 / 2, D_, y2), f3 = X("text");
7166
7168
  f3.setAttribute("x", u3.toFixed(1)), f3.setAttribute("y", d3.toFixed(1)), f3.setAttribute("text-anchor", "middle"), f3.setAttribute("dominant-baseline", "central"), f3.setAttribute("font-size", "9"), f3.setAttribute("fill", r3 ? "#7060b8" : "#90808a"), f3.setAttribute("pointer-events", "none"), f3.textContent = String(t3.number), C2.appendChild(f3);
7167
7169
  }
7168
- let pe2 = v2.find((e6) => e6.number === 1), me2 = v2.find((e6) => e6.number === 4), he2 = v2.find((e6) => e6.number === 7), ge2 = v2.find((e6) => e6.number === 10), _e2 = [{ lon: (f2 = pe2 == null ? void 0 : pe2.cusp_lon) == null ? y2 : f2, label: "ASC" }, { lon: (p2 = he2 == null ? void 0 : he2.cusp_lon) == null ? (y2 + 180) % 360 : p2, label: "DSC" }, { lon: (m2 = ge2 == null ? void 0 : ge2.cusp_lon) == null ? (y2 + 270) % 360 : m2, label: "MC" }, { lon: (h2 = me2 == null ? void 0 : me2.cusp_lon) == null ? (y2 + 90) % 360 : h2, label: "IC" }];
7169
- for (let e6 of _e2) {
7170
- var ve2, ye2;
7171
- let t3 = Sv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
7170
+ 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" }];
7171
+ for (let e6 of ve2) {
7172
+ var ye2, be2;
7173
+ let t3 = Cv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
7172
7174
  n3 = Math.min(Math.max(n3, 14), 486), r3 = Math.min(Math.max(r3, 10), 490);
7173
7175
  let i3 = X("text");
7174
7176
  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", "#7060b8"), 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);
7175
7177
  let a3 = X("circle");
7176
- 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", Bv(a3, "".concat((ve2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ve2, " \u2014 click for interpretation"));
7177
- let o3 = (ye2 = t3 == null ? void 0 : t3.keyword) == null ? "" : ye2, s3 = H_(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
7178
+ 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", Vv(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
7179
+ let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = U_(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
7178
7180
  a3.addEventListener("mouseenter", (n4) => {
7179
7181
  var r4;
7180
- J_(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Dv(e6.lon), i3.style.opacity = "0.6";
7182
+ Y_(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Ov(e6.lon), i3.style.opacity = "0.6";
7181
7183
  }), a3.addEventListener("mouseleave", () => {
7182
- Y_(), Ov(), i3.style.opacity = "";
7184
+ X_(), kv(), i3.style.opacity = "";
7183
7185
  }), a3.addEventListener("click", (n4) => {
7184
7186
  var r4;
7185
- Y_(), Dv(e6.lon, true), jv(), pv == null || pv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), Cv(n4, e6.label, e6.lon);
7187
+ X_(), Ov(e6.lon, true), Mv(), mv == null || mv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), wv(n4, e6.label, e6.lon);
7186
7188
  }), ne2.appendChild(a3);
7187
7189
  }
7188
7190
  {
7189
7191
  let e6 = X("g");
7190
7192
  e6.setAttribute("pointer-events", "none");
7191
- let t3 = x_ - 50, n3 = S_ - 50;
7193
+ let t3 = S_ - 50, n3 = C_ - 50;
7192
7194
  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");
7193
7195
  let r3 = X("path");
7194
7196
  r3.setAttribute("fill", E2 ? "#F0DFC3" : "#6366f1"), 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);
7195
7197
  }
7196
7198
  for (let e6 of ee2) {
7197
- var be2, xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2;
7199
+ var xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2, Le2;
7198
7200
  let t3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet1.toLowerCase()), n3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet2.toLowerCase());
7199
7201
  if (!t3 || !n3) continue;
7200
- let r3 = (be2 = F_((xe2 = e6.type) == null ? "" : xe2)) == null ? "#aaa" : be2, { x: a3, y: o3 } = Y(t3.longitude, O_, y2), { x: s3, y: c3 } = Y(n3.longitude, O_, y2), l3 = Math.min((D2 = e6.orb) == null ? 10 : D2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
7202
+ let r3 = (xe2 = I_((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, k_, y2), { x: s3, y: c3 } = Y(n3.longitude, k_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
7201
7203
  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);
7202
- let f3 = (Se2 = P_[(O2 = (Ce2 = e6.type) == null ? void 0 : Ce2.toLowerCase()) == null ? "" : O2]) == null ? "" : Se2, p3 = a3 + (s3 - a3) * 0.35, m3 = o3 + (c3 - o3) * 0.35, h3 = [];
7204
+ let f3 = (O2 = F_[(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 = [];
7203
7205
  if (f3 && Math.hypot(s3 - a3, c3 - o3) > 36) {
7204
7206
  let e7 = X("circle");
7205
7207
  e7.setAttribute("cx", p3.toFixed(1)), e7.setAttribute("cy", m3.toFixed(1)), e7.setAttribute("r", "7"), e7.setAttribute("fill", "var(--bg, #0a0a10)"), e7.setAttribute("stroke", r3), e7.setAttribute("stroke-opacity", "0.30"), e7.setAttribute("stroke-width", "0.6"), e7.setAttribute("pointer-events", "none"), w2.appendChild(e7), h3.push(e7);
@@ -7207,126 +7209,126 @@ function zv(e5, t2, n2, r2, i2, a2, o2) {
7207
7209
  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", "8.5"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", String(Math.min(u3 + 0.35, 1))), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, w2.appendChild(t4), h3.push(t4);
7208
7210
  }
7209
7211
  let g3 = X("line");
7210
- 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", Bv(g3, "Aspect: ".concat((we2 = e6.type) == null ? "Aspect" : we2, " between ").concat(t3.name, " and ").concat(n3.name));
7211
- let v3 = (Te2 = j_[t3.name.toLowerCase()]) == null ? t3.name : Te2, ee3 = (Ee2 = j_[n3.name.toLowerCase()]) == null ? n3.name : Ee2, b3 = (De2 = (Oe2 = P_[(ke2 = (Ae2 = e6.type) == null ? void 0 : Ae2.toLowerCase()) == null ? "" : ke2]) == null ? e6.type : Oe2) == null ? "" : De2, x3 = (je2 = $_[(Me2 = (Ne2 = e6.type) == null ? void 0 : Ne2.toLowerCase()) == null ? "" : Me2]) == null ? "" : je2, S3 = "".concat(x3 ? x3 + " \xB7 " : "").concat(v3, " ").concat(b3, " ").concat(ee3, " \xB7 ").concat((Pe2 = (Fe2 = e6.orb) == null ? void 0 : Fe2.toFixed(1)) == null ? "?" : Pe2, "\xB0 orb").concat(e6.applying === true ? " (applying)" : e6.applying === false ? " (separating)" : "");
7212
+ 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", Vv(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
7213
+ let v3 = (Ee2 = M_[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = M_[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = F_[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = ev[(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)" : "");
7212
7214
  g3.addEventListener("mouseenter", (t4) => {
7213
7215
  var n4;
7214
- return J_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7216
+ return Y_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7215
7217
  }), g3.addEventListener("mousemove", (t4) => {
7216
7218
  var n4;
7217
- return J_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7218
- }), g3.addEventListener("mouseleave", Y_), g3.addEventListener("click", (t4) => {
7219
+ return Y_(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7220
+ }), g3.addEventListener("mouseleave", X_), g3.addEventListener("click", (t4) => {
7219
7221
  var n4, r4, a4, o4, s4, c4;
7220
- Y_();
7221
- let l4 = "".concat((n4 = P_[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = j_[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = j_[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
7222
- pv == null || pv(l4), vv(t4, e6, _2), i2(e6);
7222
+ X_();
7223
+ let l4 = "".concat((n4 = F_[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = M_[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = M_[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
7224
+ mv == null || mv(l4), yv(t4, e6, _2), i2(e6);
7223
7225
  });
7224
- let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((Ie2 = e6.type) == null ? "unknown" : Ie2).toLowerCase();
7225
- hv.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);
7226
+ let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((Le2 = e6.type) == null ? "unknown" : Le2).toLowerCase();
7227
+ gv.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);
7226
7228
  }
7227
- let Le2 = _2.filter((e6) => !B_.has(e6.name.toLowerCase())), Re2 = _2.filter((e6) => B_.has(e6.name.toLowerCase())), k2 = h_(Le2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), ze2 = h_(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Be2 = new Map([...k2.entries(), ...ze2.entries()]);
7229
+ let Re2 = _2.filter((e6) => !V_.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => V_.has(e6.name.toLowerCase())), ze2 = g_(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = g_(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
7228
7230
  for (let e6 of _2) {
7229
- var Ve2, He2, Ue2, We2;
7230
- let t3 = (Ve2 = j_[e6.name.toLowerCase()]) == null ? "\u2605" : Ve2;
7231
- R_(e6.name);
7232
- let r3 = e6.name.toLowerCase(), i3 = B_.has(r3), a3 = i3 ? T_ - 14 : T_, o3 = i3 ? T_ - 28 : T_ - 17, s3 = i3 ? T_ : 204, c3 = i3 ? "13" : "18", l3 = i3 ? "500" : "600", u3 = i3 ? k_ - 2 : k_, d3 = i3 ? "0.65" : "1", f3 = (He2 = Be2.get(r3)) == null ? e6.longitude : He2, { x: p3, y: m3 } = Y(f3, a3, y2), h3 = X("g");
7231
+ var He2, Ue2, We2, Ge2;
7232
+ let t3 = (He2 = M_[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
7233
+ z_(e6.name);
7234
+ let r3 = e6.name.toLowerCase(), i3 = V_.has(r3), a3 = i3 ? E_ - 14 : E_, o3 = i3 ? E_ - 28 : E_ - 17, s3 = i3 ? E_ : 204, c3 = i3 ? "13" : "18", l3 = i3 ? "500" : "600", u3 = i3 ? A_ - 2 : A_, 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");
7233
7235
  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);
7234
- let { x: g3, y: _3 } = Y(e6.longitude, w_ - 5, y2), v3 = X("circle");
7235
- if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill", s_(E2).house), v3.setAttribute("opacity", "0.65"), v3.setAttribute("pointer-events", "none"), h3.appendChild(v3), y_(e6.longitude, f3) > 2) {
7236
+ let { x: g3, y: _3 } = Y(e6.longitude, T_ - 5, y2), v3 = X("circle");
7237
+ 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), b_(e6.longitude, f3) > 2) {
7236
7238
  let e7 = X("line");
7237
- 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", s_(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);
7239
+ 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);
7238
7240
  }
7239
7241
  let b3 = X("text");
7240
- b3.setAttribute("x", p3.toFixed(1)), b3.setAttribute("y", m3.toFixed(1)), b3.setAttribute("text-anchor", "middle"), b3.setAttribute("dominant-baseline", "central"), b3.setAttribute("font-size", c3), b3.setAttribute("font-weight", l3), b3.setAttribute("pointer-events", "none"), b3.style.fill = s_(E2).ink, b3.style.fontFamily = "serif", b3.textContent = t3, h3.appendChild(b3);
7242
+ b3.setAttribute("x", p3.toFixed(1)), b3.setAttribute("y", m3.toFixed(1)), b3.setAttribute("text-anchor", "middle"), b3.setAttribute("dominant-baseline", "central"), b3.setAttribute("font-size", c3), b3.setAttribute("font-weight", l3), b3.setAttribute("pointer-events", "none"), b3.style.fill = c_(E2).ink, b3.style.fontFamily = a_, b3.textContent = t3, h3.appendChild(b3);
7241
7243
  let x3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: S3, y: C3 } = Y(f3, o3, y2), w3 = X("text");
7242
7244
  if (w3.setAttribute("x", S3.toFixed(1)), w3.setAttribute("y", C3.toFixed(1)), w3.setAttribute("text-anchor", "middle"), w3.setAttribute("dominant-baseline", "central"), w3.setAttribute("font-size", i3 ? "7" : "8.5"), w3.setAttribute("font-weight", "500"), w3.setAttribute("fill", "#9080a0"), w3.setAttribute("pointer-events", "none"), w3.textContent = "".concat(x3, "\xB0"), h3.appendChild(w3), e6.retrograde) {
7243
7245
  let { x: e7, y: t4 } = Y(f3, s3, y2), n3 = X("text");
7244
7246
  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);
7245
7247
  }
7246
7248
  let T3 = X("circle");
7247
- 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", Bv(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
7248
- let re3 = (Ue2 = X_[e6.name.toLowerCase()]) == null ? "" : Ue2, ie3 = e6.house ? (We2 = Z_[e6.house]) == null ? "" : We2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(H_(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
7249
+ 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", Vv(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
7250
+ let re3 = (We2 = Z_[e6.name.toLowerCase()]) == null ? "" : We2, ie3 = e6.house ? (Ge2 = Q_[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(U_(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
7249
7251
  T3.addEventListener("mouseenter", (n3) => {
7250
- J_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Dv(e6.longitude);
7251
- }), T3.addEventListener("mousemove", (n3) => J_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
7252
- Y_(), uv !== e6.name.toLowerCase() && Ov();
7252
+ Y_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Ov(e6.longitude);
7253
+ }), T3.addEventListener("mousemove", (n3) => Y_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
7254
+ X_(), dv !== e6.name.toLowerCase() && kv();
7253
7255
  }), T3.addEventListener("click", (t4) => {
7254
7256
  var r4;
7255
- if (Y_(), uv === e6.name.toLowerCase()) {
7256
- Mv(), wv(), Ov(), pv == null || pv(null);
7257
+ if (X_(), dv === e6.name.toLowerCase()) {
7258
+ Nv(), Tv(), kv(), mv == null || mv(null);
7257
7259
  return;
7258
7260
  }
7259
- uv = e6.name.toLowerCase();
7260
- let i4 = (r4 = j_[e6.name.toLowerCase()]) == null ? "" : r4;
7261
- pv == null || pv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(H_(e6.longitude))), Dv(e6.longitude, true), kv(e6.name), _v(t4, e6, ee2), n2(e6);
7261
+ dv = e6.name.toLowerCase();
7262
+ let i4 = (r4 = M_[e6.name.toLowerCase()]) == null ? "" : r4;
7263
+ mv == null || mv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(U_(e6.longitude))), Ov(e6.longitude, true), Av(e6.name), vv(t4, e6, ee2), n2(e6);
7262
7264
  }), ne2.appendChild(T3);
7263
7265
  }
7264
7266
  for (let e6 = 0; e6 < v2.length; e6++) {
7265
- var Ge2, Ke2, qe2;
7266
- let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ge2 = (Ke2 = t3.sign) == null ? N_[i3] : Ke2) == null ? "" : Ge2, o3 = (qe2 = Z_[t3.number]) == null ? "" : qe2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(H_(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, D_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, w_, y2), f3 = X("line");
7267
- 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(A_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", Bv(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
7268
- J_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Dv(t3.cusp_lon);
7269
- }), f3.addEventListener("mousemove", (e7) => J_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
7270
- Y_(), Ov();
7267
+ var Ke2, qe2, Je2;
7268
+ 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 ? P_[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = Q_[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(U_(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, O_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, T_, y2), f3 = X("line");
7269
+ 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(j_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", Vv(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
7270
+ Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Ov(t3.cusp_lon);
7271
+ }), f3.addEventListener("mousemove", (e7) => Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
7272
+ X_(), kv();
7271
7273
  }), f3.addEventListener("click", (e7) => {
7272
7274
  var n4, i4;
7273
- Y_();
7274
- let a4 = (n4 = (i4 = t3.sign) == null ? N_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7275
- pv == null || pv("House ".concat(t3.number, " \xB7 ").concat(a4)), yv(e7, t3, _2), r2(t3);
7275
+ X_();
7276
+ let a4 = (n4 = (i4 = t3.sign) == null ? P_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7277
+ mv == null || mv("House ".concat(t3.number, " \xB7 ").concat(a4)), bv(e7, t3, _2), r2(t3);
7276
7278
  }), ne2.appendChild(f3);
7277
- let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, E_, y2), g3 = X("circle");
7278
- 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", Bv(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => J_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => J_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
7279
- Y_();
7279
+ let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, D_, y2), g3 = X("circle");
7280
+ 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", Vv(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => Y_(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
7281
+ X_();
7280
7282
  }), g3.addEventListener("click", (e7) => {
7281
7283
  var n4, i4;
7282
- Y_();
7283
- let a4 = (n4 = (i4 = t3.sign) == null ? N_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7284
- pv == null || pv("House ".concat(t3.number, " \xB7 ").concat(a4)), yv(e7, t3, _2), r2(t3);
7284
+ X_();
7285
+ let a4 = (n4 = (i4 = t3.sign) == null ? P_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7286
+ mv == null || mv("House ".concat(t3.number, " \xB7 ").concat(a4)), bv(e7, t3, _2), r2(t3);
7285
7287
  }), ne2.appendChild(g3);
7286
7288
  }
7287
- dv && document.removeEventListener("click", dv, false), dv = (e6) => {
7289
+ fv && document.removeEventListener("click", fv, false), fv = (e6) => {
7288
7290
  let t3 = e6.target;
7289
- t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (Mv(), wv());
7290
- }, document.addEventListener("click", dv, false);
7291
+ t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (Nv(), Tv());
7292
+ }, document.addEventListener("click", fv, false);
7291
7293
  }
7292
- function Bv(e5, t2) {
7294
+ function Vv(e5, t2) {
7293
7295
  e5 && (e5.setAttribute("tabindex", "0"), e5.setAttribute("role", "button"), e5.setAttribute("aria-label", t2), e5.addEventListener("keydown", (t3) => {
7294
7296
  let n2 = t3;
7295
7297
  (n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e5.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
7296
7298
  }));
7297
7299
  }
7298
- var Vv = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
7299
- function Hv(e5, t2, n2) {
7300
+ var Hv = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
7301
+ function Uv(e5, t2, n2) {
7300
7302
  e5.innerHTML = "";
7301
7303
  let r2 = document.createElement("span");
7302
7304
  r2.className = "controls-label", r2.textContent = "Houses:", e5.appendChild(r2);
7303
- for (let r3 of Vv) {
7305
+ for (let r3 of Hv) {
7304
7306
  let i2 = document.createElement("button");
7305
7307
  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", () => {
7306
7308
  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);
7307
7309
  }), e5.appendChild(i2);
7308
7310
  }
7309
7311
  }
7310
- function Uv(e5, t2) {
7312
+ function Wv(e5, t2) {
7311
7313
  e5.querySelectorAll(".control-btn").forEach((e6) => {
7312
7314
  var n2;
7313
7315
  let r2 = e6.getAttribute("data-system");
7314
7316
  e6.disabled = false;
7315
- let i2 = Vv.find((e7) => e7.value === r2);
7317
+ let i2 = Hv.find((e7) => e7.value === r2);
7316
7318
  e6.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e6.classList.toggle("active", r2 === t2);
7317
7319
  });
7318
7320
  }
7319
- function Wv(e5) {
7321
+ function Gv(e5) {
7320
7322
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7321
7323
  }
7322
- function Gv(e5) {
7324
+ function Kv(e5) {
7323
7325
  return e5.replace(/_/g, " ").replace(/\b\w/g, (e6) => e6.toUpperCase());
7324
7326
  }
7325
- function Kv(e5) {
7326
- let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(Wv(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(Wv(e7.glyph), "</span>").concat(Wv(e7.label), "</span>")).join("") + "</div>").join("");
7327
+ function qv(e5) {
7328
+ let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(Gv(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(Gv(e7.glyph), "</span>").concat(Gv(e7.label), "</span>")).join("") + "</div>").join("");
7327
7329
  return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
7328
7330
  }
7329
- var qv = class e4 {
7331
+ var Jv = class e4 {
7330
7332
  constructor(t2) {
7331
7333
  var n2, r2, i2, a2, s2, c2;
7332
7334
  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();
@@ -7506,46 +7508,49 @@ var qv = class e4 {
7506
7508
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7507
7509
  }
7508
7510
  };
7509
- o(qv, "comboSeq", 0);
7510
- var Jv = /* @__PURE__ */ new Set();
7511
- function Yv(e5) {
7512
- return Jv.has(e5);
7513
- }
7514
- function Xv(e5) {
7515
- Jv.add(e5);
7516
- }
7517
- var Zv = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "Welcome to your 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: "Your birth chart is now rendered \u2014 an exact celestial snapshot of the sky at your moment of birth." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "Welcome to 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 now layered \u2014 the inner wheel is your natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "Welcome to your 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: "Your bodygraph is now rendered \u2014 a living map of the energy centres, channels, and gates that define your design." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "Welcome to your Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows your 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: "Your Vedic birth chart is now rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "Welcome to your 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 your natal chart \u2014 the exact dates outer-planet energies activate your placements." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "Welcome to 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 \u2014 a snapshot of tonight's sky." }, bazi: { stripIcon: "\u56DB", stripTitle: "Welcome to your BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is your core identity element", "The <strong>Wu Xing bar</strong> shows your Five Element balance"], modalText: "Your BaZi (Four Pillars of Destiny) chart is now rendered \u2014 a map of the Heavenly Stems and Earthly Branches present at your 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';
7518
- function $v() {
7511
+ o(Jv, "comboSeq", 0);
7512
+ var Yv = { "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." } }, Xv = '\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';
7513
+ function Zv() {
7519
7514
  if (document.getElementById("oe-first-run-styles")) return;
7520
7515
  let e5 = document.createElement("style");
7521
- e5.id = "oe-first-run-styles", e5.textContent = Qv, document.head.appendChild(e5);
7522
- }
7523
- function ey(e5, t2) {
7524
- let n2 = document.activeElement, r2 = document.createElement("div");
7525
- r2.className = "oe-welcome-backdrop";
7526
- let i2 = document.createElement("div");
7527
- i2.className = "oe-welcome-modal", i2.setAttribute("role", "dialog"), i2.setAttribute("aria-modal", "true"), i2.setAttribute("aria-labelledby", "oe-welcome-title");
7528
- let a2 = e5.stripHints.map((e6) => "<li>".concat(e6, "</li>")).join("");
7529
- i2.innerHTML = '\n <div class="oe-welcome-header">\n <div class="oe-welcome-icon" aria-hidden="true">'.concat(e5.stripIcon, '</div>\n <h2 id="oe-welcome-title" class="oe-welcome-title">').concat(e5.stripTitle, '</h2>\n </div>\n <p class="oe-welcome-text">').concat(e5.modalText, '</p>\n <ul class="oe-welcome-hints">').concat(a2, '</ul>\n <button class="oe-welcome-button" aria-label="Explore the chart">Explore</button>\n '), r2.appendChild(i2);
7530
- let o2 = i2.querySelector(".oe-welcome-button"), s2 = () => {
7531
- r2.classList.add("is-dismissing"), r2.addEventListener("animationend", () => {
7532
- r2.remove(), n2 == null || n2.focus();
7533
- }, { once: true }), Xv(t2);
7516
+ e5.id = "oe-first-run-styles", e5.textContent = Xv, document.head.appendChild(e5);
7517
+ }
7518
+ function Qv(e5) {
7519
+ let t2 = document.activeElement, n2 = document.createElement("div");
7520
+ n2.className = "oe-welcome-backdrop";
7521
+ let r2 = document.createElement("div");
7522
+ r2.className = "oe-welcome-modal", r2.setAttribute("role", "dialog"), r2.setAttribute("aria-modal", "true"), r2.setAttribute("aria-labelledby", "oe-welcome-title");
7523
+ let i2 = e5.stripHints.map((e6) => "<li>".concat(e6, "</li>")).join("");
7524
+ r2.innerHTML = '\n <div class="oe-welcome-header">\n <div class="oe-welcome-icon" aria-hidden="true">'.concat(e5.stripIcon, '</div>\n <h2 id="oe-welcome-title" class="oe-welcome-title">').concat(e5.stripTitle, '</h2>\n </div>\n <p class="oe-welcome-text">').concat(e5.modalText, '</p>\n <ul class="oe-welcome-hints">').concat(i2, '</ul>\n <button class="oe-welcome-button" aria-label="Explore the chart">Explore</button>\n '), n2.appendChild(r2);
7525
+ let a2 = r2.querySelector(".oe-welcome-button"), o2 = () => {
7526
+ n2.classList.add("is-dismissing"), n2.addEventListener("animationend", () => {
7527
+ n2.remove(), t2 == null || t2.focus();
7528
+ }, { once: true });
7534
7529
  };
7535
- return o2.addEventListener("click", s2), r2.addEventListener("click", (e6) => {
7536
- e6.target === r2 && s2();
7537
- }), r2.addEventListener("keydown", (e6) => {
7538
- e6.key === "Escape" && (e6.preventDefault(), s2()), e6.key === "Tab" && (e6.preventDefault(), o2.focus());
7539
- }), requestAnimationFrame(() => o2.focus()), r2;
7540
- }
7541
- function ty(e5, t2) {
7542
- if (Yv(e5)) return;
7543
- let n2 = Zv[e5];
7544
- $v();
7545
- let r2 = ey(n2, e5);
7546
- document.body.appendChild(r2);
7530
+ return a2.addEventListener("click", o2), n2.addEventListener("click", (e6) => {
7531
+ e6.target === n2 && o2();
7532
+ }), n2.addEventListener("keydown", (e6) => {
7533
+ e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
7534
+ }), requestAnimationFrame(() => a2.focus()), n2;
7535
+ }
7536
+ function $v(e5) {
7537
+ Zv();
7538
+ let t2 = Qv(Yv[e5]);
7539
+ document.body.appendChild(t2);
7540
+ }
7541
+ var ey = "\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";
7542
+ function ty() {
7543
+ if (document.getElementById("oe-info-button-styles")) return;
7544
+ let e5 = document.createElement("style");
7545
+ e5.id = "oe-info-button-styles", e5.textContent = ey, document.head.appendChild(e5);
7547
7546
  }
7548
7547
  function ny(e5) {
7548
+ if (document.getElementById("oe-info-button")) return;
7549
+ ty();
7550
+ let t2 = document.createElement("button");
7551
+ 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", () => $v(e5)), document.body.appendChild(t2);
7552
+ }
7553
+ function ry(e5) {
7549
7554
  var t2;
7550
7555
  if (!e5) return null;
7551
7556
  if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
@@ -7558,17 +7563,17 @@ function ny(e5) {
7558
7563
  }
7559
7564
  return null;
7560
7565
  }
7561
- function ry(e5) {
7566
+ function iy(e5) {
7562
7567
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7563
7568
  }
7564
- function iy(e5) {
7565
- let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(ry(i2), "</button>") : "";
7566
- if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(ry(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7569
+ function ay(e5) {
7570
+ let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(iy(i2), "</button>") : "";
7571
+ if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(iy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7567
7572
  var o2;
7568
7573
  (o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
7569
7574
  }
7570
7575
  }
7571
- function ay(e5, t2, n2 = []) {
7576
+ function oy(e5, t2, n2 = []) {
7572
7577
  var r2, i2;
7573
7578
  if (!t2 || t2.querySelector("#btn-fullscreen")) return;
7574
7579
  let a2 = document.createElement("button");
@@ -7651,14 +7656,14 @@ function ay(e5, t2, n2 = []) {
7651
7656
  }, 4e3);
7652
7657
  }
7653
7658
  }
7654
- function oy(e5, t2) {
7659
+ function sy(e5, t2) {
7655
7660
  e5.ontoolcancelled = (e6) => {
7656
7661
  var n2, r2, i2;
7657
7662
  let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
7658
- 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), sy(a2);
7663
+ 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), cy(a2);
7659
7664
  };
7660
7665
  }
7661
- function sy(e5) {
7666
+ function cy(e5) {
7662
7667
  var t2;
7663
7668
  (t2 = document.getElementById("cancel-toast")) == null || t2.remove();
7664
7669
  let n2 = document.createElement("div");
@@ -7666,7 +7671,7 @@ function sy(e5) {
7666
7671
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7667
7672
  }, 3e3);
7668
7673
  }
7669
- function cy(e5) {
7674
+ function ly(e5) {
7670
7675
  var t2;
7671
7676
  function n2(e6) {
7672
7677
  if (!e6) return;
@@ -7679,48 +7684,48 @@ function cy(e5) {
7679
7684
  n2(e6);
7680
7685
  });
7681
7686
  }
7682
- var ly = document.getElementById("loading-state"), uy = document.getElementById("chart-container"), dy = document.getElementById("chart-info"), fy = document.getElementById("chart-status"), py = document.getElementById("controls-panel"), my = document.getElementById("patterns-strip"), hy = document.getElementById("aspect-filter"), gy = document.getElementById("overview-table"), _y = document.getElementById("param-controls-container"), vy = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, yy = "placidus", by = null;
7683
- p_(() => {
7684
- $ && wy($);
7687
+ var uy = document.getElementById("loading-state"), dy = document.getElementById("chart-container"), fy = document.getElementById("chart-info"), py = document.getElementById("chart-status"), my = document.getElementById("controls-panel"), hy = document.getElementById("patterns-strip"), gy = document.getElementById("aspect-filter"), _y = document.getElementById("overview-table"), vy = document.getElementById("param-controls-container"), yy = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, by = "placidus", xy = null;
7688
+ m_(() => {
7689
+ $ && Ty($);
7685
7690
  });
7686
- var xy = false, Sy = false;
7687
- function Cy(e5) {
7688
- fy && (e5 ? (fy.textContent = "\xB7 ".concat(e5), fy.setAttribute("data-active", "")) : (fy.textContent = "", fy.removeAttribute("data-active")));
7691
+ var Sy = false, Cy = false;
7692
+ function wy(e5) {
7693
+ py && (e5 ? (py.textContent = "\xB7 ".concat(e5), py.setAttribute("data-active", "")) : (py.textContent = "", py.removeAttribute("data-active")));
7689
7694
  }
7690
- vy.ontoolresult = (e5) => {
7695
+ yy.ontoolresult = (e5) => {
7691
7696
  var t2;
7692
- let n2 = ny(e5);
7693
- if (Jy(), !n2 || !n2.planets) {
7694
- console.error("[ChartWheel] \u274C No chart data found in tool result"), Yy("Chart data could not be parsed from the server response.", Xy);
7697
+ let n2 = ry(e5);
7698
+ if (Yy(), !n2 || !n2.planets) {
7699
+ console.error("[ChartWheel] \u274C No chart data found in tool result"), Xy("Chart data could not be parsed from the server response.", Zy);
7695
7700
  return;
7696
7701
  }
7697
- if ($ = n2, yy = (t2 = n2.house_system) == null ? "placidus" : t2, !by) {
7702
+ if ($ = n2, by = (t2 = n2.house_system) == null ? "placidus" : t2, !xy) {
7698
7703
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
7699
7704
  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";
7700
7705
  if (t3 && t3.includes("T")) {
7701
7706
  let e7 = t3.split("T");
7702
7707
  _2 = e7[0], v2 = e7[1].substring(0, 5);
7703
7708
  }
7704
- by = new qv({ app: vy, container: _y, 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) => {
7705
- by == null || by.setBusy(true), ly.removeAttribute("hidden"), uy.setAttribute("hidden", "");
7709
+ xy = new Jv({ app: yy, container: vy, 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) => {
7710
+ xy == null || xy.setBusy(true), uy.removeAttribute("hidden"), dy.setAttribute("hidden", "");
7706
7711
  try {
7707
7712
  var t4, n3, r3, i3;
7708
- 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 = ny(await Promise.race([vy.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: yy || "placidus", chart_type: "natal" } }), o3]));
7709
- s3 ? ($ = s3, s3.house_system && (yy = s3.house_system), wy(s3)) : $ && (ly.setAttribute("hidden", ""), uy.removeAttribute("hidden"));
7713
+ 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 = ry(await Promise.race([yy.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: by || "placidus", chart_type: "natal" } }), o3]));
7714
+ s3 ? ($ = s3, s3.house_system && (by = s3.house_system), Ty(s3)) : $ && (uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"));
7710
7715
  } catch (e8) {
7711
- console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (ly.setAttribute("hidden", ""), uy.removeAttribute("hidden"));
7716
+ console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"));
7712
7717
  } finally {
7713
- by == null || by.setBusy(false);
7718
+ xy == null || xy.setBusy(false);
7714
7719
  }
7715
7720
  } });
7716
7721
  }
7717
- wy(n2);
7722
+ Ty(n2);
7718
7723
  };
7719
- function wy(e5) {
7724
+ function Ty(e5) {
7720
7725
  var t2, n2, r2, i2, a2, o2, s2;
7721
- Ay = null, ly.setAttribute("hidden", ""), uy.removeAttribute("hidden"), _y.removeAttribute("hidden"), py.removeAttribute("hidden"), zv(uy, e5, Ry, zy, By, Gy, Sy ? Vy() : void 0), mv(Cy), Hv(py, yy, Ky), Ey(e5), ty("chart-wheel", uy);
7722
- let c2 = K_(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;
7723
- c2.length > 0 && Oy(c2, u2), jy(cv(u2, c2), c2, l2), Iy();
7726
+ jy = null, uy.setAttribute("hidden", ""), dy.removeAttribute("hidden"), vy.removeAttribute("hidden"), my.removeAttribute("hidden"), Bv(dy, e5, zy, By, Vy, Ky, Cy ? Hy() : void 0), hv(wy), Uv(my, by, qy), Dy(e5), ny("chart-wheel");
7727
+ let c2 = q_(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;
7728
+ c2.length > 0 && ky(c2, u2), My(lv(u2, c2), c2, l2), Ly();
7724
7729
  let d2 = document.getElementById("cw-action-bar");
7725
7730
  if (!d2) {
7726
7731
  d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
@@ -7731,17 +7736,17 @@ function wy(e5) {
7731
7736
  (f2 = document.getElementById("app")) == null || f2.prepend(d2);
7732
7737
  }
7733
7738
  }
7734
- 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 Uy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Wy());
7739
+ 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 Wy()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Gy());
7735
7740
  }
7736
- function Ty(e5) {
7741
+ function Ey(e5) {
7737
7742
  return String(e5).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7738
7743
  }
7739
- function Ey(e5) {
7744
+ function Dy(e5) {
7740
7745
  var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
7741
- if (!dy) return;
7746
+ if (!fy) return;
7742
7747
  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;
7743
- yy.charAt(0).toUpperCase() + yy.slice(1);
7744
- let _2 = K_(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7748
+ by.charAt(0).toUpperCase() + by.slice(1);
7749
+ let _2 = q_(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7745
7750
  try {
7746
7751
  if (f2 && f2.includes("T")) {
7747
7752
  let e6 = new Date(f2), t3 = m2 ? { timeZone: m2 } : {};
@@ -7750,15 +7755,15 @@ function Ey(e5) {
7750
7755
  } catch (e6) {
7751
7756
  }
7752
7757
  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 = [];
7753
- if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(Ty(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(Ty(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(Ty(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(Ty(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(Ty(v2), "</span>")), b2.length === 0) {
7754
- dy.setAttribute("hidden", "");
7758
+ if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(Ey(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(Ey(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(Ey(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(Ey(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(Ey(v2), "</span>")), b2.length === 0) {
7759
+ fy.setAttribute("hidden", "");
7755
7760
  return;
7756
7761
  }
7757
- dy.innerHTML = b2.join(""), dy.removeAttribute("hidden");
7762
+ fy.innerHTML = b2.join(""), fy.removeAttribute("hidden");
7758
7763
  }
7759
- var Dy = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7760
- function Oy(e5, t2) {
7761
- if (!gy || e5.length === 0) return;
7764
+ var Oy = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7765
+ function ky(e5, t2) {
7766
+ if (!_y || e5.length === 0) return;
7762
7767
  let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"], r2 = [...e5].sort((e6, t3) => {
7763
7768
  let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
7764
7769
  return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
@@ -7769,15 +7774,15 @@ function Oy(e5, t2) {
7769
7774
  }
7770
7775
  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) => {
7771
7776
  var t3, n3, r3, a3;
7772
- let o3 = e6.name.toLowerCase(), l3 = (t3 = j_[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 = Dy.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7777
+ let o3 = e6.name.toLowerCase(), l3 = (t3 = M_[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 = Oy.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7773
7778
  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>");
7774
7779
  }).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
7775
7780
  var t3;
7776
7781
  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" : "";
7777
7782
  return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
7778
7783
  }).join("\n");
7779
- gy.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 "), gy.removeAttribute("hidden");
7780
- let d2 = gy.querySelector(".overview-copy");
7784
+ _y.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 "), _y.removeAttribute("hidden");
7785
+ let d2 = _y.querySelector(".overview-copy");
7781
7786
  d2 && d2.addEventListener("click", async (e6) => {
7782
7787
  e6.stopPropagation();
7783
7788
  try {
@@ -7787,14 +7792,14 @@ function Oy(e5, t2) {
7787
7792
  d2.textContent = "Copy", d2.classList.remove("copied");
7788
7793
  }, 1600);
7789
7794
  } catch (e7) {
7790
- ky("Copy unavailable");
7795
+ Ay("Copy unavailable");
7791
7796
  }
7792
7797
  });
7793
- let f2 = gy.querySelector(".overview-toggle"), p2 = gy.querySelector(".overview-body");
7798
+ let f2 = _y.querySelector(".overview-toggle"), p2 = _y.querySelector(".overview-body");
7794
7799
  f2 == null || f2.addEventListener("click", () => {
7795
7800
  let e6 = f2.getAttribute("aria-expanded") === "true";
7796
7801
  f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
7797
- }), gy.querySelectorAll("tbody tr").forEach((e6) => {
7802
+ }), _y.querySelectorAll("tbody tr").forEach((e6) => {
7798
7803
  var t3;
7799
7804
  let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
7800
7805
  n3 && (e6.addEventListener("mouseenter", () => {
@@ -7806,7 +7811,7 @@ function Oy(e5, t2) {
7806
7811
  let t4 = document.querySelector("svg");
7807
7812
  t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
7808
7813
  var t5;
7809
- let n4 = Dy.has((t5 = e7.dataset.planet) == null ? "" : t5);
7814
+ let n4 = Oy.has((t5 = e7.dataset.planet) == null ? "" : t5);
7810
7815
  e7.style.opacity = n4 ? "0.65" : "1";
7811
7816
  }), e6.classList.remove("active-row"));
7812
7817
  }), e6.addEventListener("click", () => {
@@ -7817,7 +7822,7 @@ function Oy(e5, t2) {
7817
7822
  }));
7818
7823
  });
7819
7824
  }
7820
- function ky(e5) {
7825
+ function Ay(e5) {
7821
7826
  var t2;
7822
7827
  (t2 = document.getElementById("copy-toast")) == null || t2.remove();
7823
7828
  let n2 = document.createElement("div");
@@ -7825,26 +7830,26 @@ function ky(e5) {
7825
7830
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7826
7831
  }, 2500);
7827
7832
  }
7828
- var Ay = null;
7829
- function jy(e5, t2, n2) {
7830
- if (!my) return;
7833
+ var jy = null;
7834
+ function My(e5, t2, n2) {
7835
+ if (!hy) return;
7831
7836
  if (e5.length === 0) {
7832
- my.setAttribute("hidden", ""), my.innerHTML = "";
7837
+ hy.setAttribute("hidden", ""), hy.innerHTML = "";
7833
7838
  return;
7834
7839
  }
7835
7840
  let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
7836
- if (my.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7841
+ if (hy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7837
7842
  var n3;
7838
7843
  let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
7839
7844
  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 ");
7840
- }).join(""), "\n "), my.removeAttribute("hidden"), !my.querySelector(".pattern-ask-claude-btn")) {
7845
+ }).join(""), "\n "), hy.removeAttribute("hidden"), !hy.querySelector(".pattern-ask-claude-btn")) {
7841
7846
  let t3 = document.createElement("button");
7842
- t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", my.appendChild(t3), t3.addEventListener("click", () => {
7847
+ t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", hy.appendChild(t3), t3.addEventListener("click", () => {
7843
7848
  var n3;
7844
- let r3 = Ay;
7849
+ let r3 = jy;
7845
7850
  if (r3 === null) return;
7846
7851
  let i2 = e5[r3];
7847
- t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Gy({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7852
+ t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", Ky({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7848
7853
  t3.textContent = "\u2713 Sent", setTimeout(() => {
7849
7854
  t3.textContent = "\u2728 Ask Claude", t3.disabled = false;
7850
7855
  }, 2500);
@@ -7853,28 +7858,28 @@ function jy(e5, t2, n2) {
7853
7858
  });
7854
7859
  });
7855
7860
  }
7856
- my.querySelectorAll(".pattern-pill").forEach((r3) => {
7861
+ hy.querySelectorAll(".pattern-pill").forEach((r3) => {
7857
7862
  r3.addEventListener("click", () => {
7858
7863
  var i2;
7859
- let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = my.querySelector(".pattern-ask-claude-btn");
7860
- Ay === a2 ? (Ay = null, Mv(), c2 && (c2.style.display = "none"), my.querySelectorAll(".pattern-pill").forEach((e6) => {
7864
+ let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = hy.querySelector(".pattern-ask-claude-btn");
7865
+ jy === a2 ? (jy = null, Nv(), c2 && (c2.style.display = "none"), hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7861
7866
  var t3;
7862
7867
  e6.classList.remove("active");
7863
7868
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7864
7869
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7865
- })) : (Ay = a2, my.querySelectorAll(".pattern-pill").forEach((e6) => {
7870
+ })) : (jy = a2, hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7866
7871
  var t3;
7867
7872
  e6.classList.remove("active");
7868
7873
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7869
7874
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7870
- }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, Av(o2.planets, o2.aspectKeys), t2 && n2 != null && (Iv(), Fv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Ask Claude", c2.disabled = false));
7875
+ }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, jv(o2.planets, o2.aspectKeys), t2 && n2 != null && (Lv(), Iv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Ask Claude", c2.disabled = false));
7871
7876
  });
7872
7877
  });
7873
7878
  }
7874
- var My = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Ny = true, Py = 8, Fy = "true";
7875
- function Iy() {
7879
+ var Ny = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Py = true, Fy = 8, Iy = "true";
7880
+ function Ly() {
7876
7881
  var e5;
7877
- if (!hy) return;
7882
+ if (!gy) return;
7878
7883
  let t2 = (() => {
7879
7884
  let e6 = $ == null ? void 0 : $.planets, t3 = [];
7880
7885
  Array.isArray(e6) ? e6.forEach((e7) => {
@@ -7884,101 +7889,101 @@ function Iy() {
7884
7889
  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)");
7885
7890
  return n3 && r3;
7886
7891
  })();
7887
- W_(Fy);
7888
- 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(Fy === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Fy === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7889
- Ny = true, hy.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(My.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === Py ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7890
- let r2 = K_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
7892
+ G_(Iy);
7893
+ 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(Iy === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Iy === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7894
+ Py = true, gy.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(Ny.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === Fy ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7895
+ let r2 = q_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
7891
7896
  for (let e6 of r2) {
7892
7897
  let t3 = e6.name.toLowerCase();
7893
7898
  if (i2.has(t3)) continue;
7894
7899
  i2.add(t3);
7895
- let n3 = j_[t3];
7896
- n3 && a2.push({ glyph: n3, label: Gv(e6.name) });
7900
+ let n3 = M_[t3];
7901
+ n3 && a2.push({ glyph: n3, label: Kv(e6.name) });
7897
7902
  }
7898
7903
  let o2 = [...new Set(((e5 = $ == null ? void 0 : $.aspects) == null ? [] : e5).map((e6) => {
7899
7904
  var t3;
7900
7905
  return ((t3 = e6.type) == null ? "" : t3).toLowerCase();
7901
7906
  }).filter(Boolean))].map((e6) => {
7902
7907
  var t3;
7903
- return { glyph: (t3 = P_[e6]) == null ? "" : t3, label: Gv(e6) };
7908
+ return { glyph: (t3 = F_[e6]) == null ? "" : t3, label: Kv(e6) };
7904
7909
  }).filter((e6) => e6.glyph);
7905
- hy.insertAdjacentHTML("beforeend", Kv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), hy.removeAttribute("hidden");
7910
+ gy.insertAdjacentHTML("beforeend", qv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), gy.removeAttribute("hidden");
7906
7911
  let s2 = document.getElementById("cw-aspect-vis-toggle");
7907
7912
  s2 == null || s2.addEventListener("click", () => {
7908
- Ny = !Ny, Lv(Ny), s2.classList.toggle("active", Ny), s2.querySelector(".toggle-icon").textContent = Ny ? "\u2295" : "\u2296";
7909
- }), hy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7913
+ Py = !Py, Rv(Py), s2.classList.toggle("active", Py), s2.querySelector(".toggle-icon").textContent = Py ? "\u2295" : "\u2296";
7914
+ }), gy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7910
7915
  e6.addEventListener("click", () => {
7911
7916
  var t3;
7912
7917
  let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
7913
- n3 !== Py && (Py = n3, hy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), Rv(n3));
7918
+ n3 !== Fy && (Fy = n3, gy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), zv(n3));
7914
7919
  });
7915
- }), hy.querySelectorAll(".node-btn").forEach((e6) => {
7920
+ }), gy.querySelectorAll(".node-btn").forEach((e6) => {
7916
7921
  e6.addEventListener("click", () => {
7917
7922
  let t3 = e6.dataset.node === "mean" ? "mean" : "true";
7918
- t3 === Fy || !$ || (Fy = t3, W_(t3), wy($));
7923
+ t3 === Iy || !$ || (Iy = t3, G_(t3), Ty($));
7919
7924
  });
7920
7925
  });
7921
7926
  }
7922
- async function Ly(e5, t2) {
7923
- if (xy) try {
7927
+ async function Ry(e5, t2) {
7928
+ if (Sy) try {
7924
7929
  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(", "));
7925
- await vy.updateModelContext({ content: [{ type: "text", text: n2 }] });
7930
+ await yy.updateModelContext({ content: [{ type: "text", text: n2 }] });
7926
7931
  } catch (e6) {
7927
7932
  console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
7928
7933
  }
7929
7934
  }
7930
- async function Ry(e5) {
7935
+ async function zy(e5) {
7931
7936
  var t2, n2, r2, i2;
7932
- Ay = null, my == null || my.querySelectorAll(".pattern-pill").forEach((e6) => {
7937
+ jy = null, hy == null || hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7933
7938
  var t3;
7934
7939
  e6.classList.remove("active");
7935
7940
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7936
7941
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7937
- }), await Ly("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 });
7942
+ }), await Ry("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 });
7938
7943
  }
7939
- async function zy(e5) {
7944
+ async function By(e5) {
7940
7945
  var t2, n2;
7941
- await Ly("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
7946
+ await Ry("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
7942
7947
  }
7943
- async function By(e5) {
7948
+ async function Vy(e5) {
7944
7949
  var t2, n2, r2, i2;
7945
- await Ly("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 });
7950
+ await Ry("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 });
7946
7951
  }
7947
- function Vy() {
7952
+ function Hy() {
7948
7953
  return async (e5) => {
7949
7954
  try {
7950
7955
  var t2, n2;
7951
- let r2 = await vy.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 });
7956
+ let r2 = await yy.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 });
7952
7957
  return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
7953
7958
  } catch (e6) {
7954
7959
  return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
7955
7960
  }
7956
7961
  };
7957
7962
  }
7958
- async function Hy(e5) {
7963
+ async function Uy(e5) {
7959
7964
  try {
7960
- (await vy.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
7965
+ (await yy.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
7961
7966
  } catch (e6) {
7962
7967
  console.error("[ChartWheel] sendMessage failed:", e6);
7963
7968
  }
7964
7969
  }
7965
- async function Uy() {
7970
+ async function Wy() {
7966
7971
  var e5, t2, n2, r2;
7967
7972
  if (!$) return;
7968
- let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = K_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
7973
+ let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = q_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
7969
7974
  var t3;
7970
7975
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
7971
7976
  }).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";
7972
- await Hy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
7977
+ await Uy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
7973
7978
  var t3;
7974
7979
  return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
7975
7980
  }).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?"));
7976
7981
  }
7977
- async function Wy() {
7982
+ async function Gy() {
7978
7983
  var e5, t2, n2, r2;
7979
7984
  if (!$) return;
7980
7985
  let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
7981
- await Hy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(K_(i2.planets).slice(0, 4).map((e6) => {
7986
+ await Uy("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(q_(i2.planets).slice(0, 4).map((e6) => {
7982
7987
  var t3;
7983
7988
  return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
7984
7989
  }).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
@@ -7986,7 +7991,7 @@ async function Wy() {
7986
7991
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
7987
7992
  }).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."));
7988
7993
  }
7989
- async function Gy(e5) {
7994
+ async function Ky(e5) {
7990
7995
  let t2 = "";
7991
7996
  if (e5.type === "planet") {
7992
7997
  var n2;
@@ -8015,49 +8020,49 @@ async function Gy(e5) {
8015
8020
  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.");
8016
8021
  }
8017
8022
  if (t2) try {
8018
- let e6 = await vy.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8023
+ let e6 = await yy.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8019
8024
  if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
8020
8025
  } catch (e6) {
8021
8026
  throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
8022
8027
  }
8023
8028
  }
8024
- async function Ky(e5) {
8029
+ async function qy(e5) {
8025
8030
  if (!($ != null && $._birth_params)) {
8026
- Uv(py, yy);
8031
+ Wv(my, by);
8027
8032
  return;
8028
8033
  }
8029
8034
  try {
8030
8035
  var t2, n2, r2, i2;
8031
- let a2 = ny(await vy.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 } }));
8032
- a2 ? ($ = a2, yy = e5, wy(a2)) : Uv(py, yy);
8036
+ let a2 = ry(await yy.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 } }));
8037
+ a2 ? ($ = a2, by = e5, Ty(a2)) : Wv(my, by);
8033
8038
  } catch (e6) {
8034
- console.error("[Chart] Recalculate failed:", e6), Uv(py, yy);
8039
+ console.error("[Chart] Recalculate failed:", e6), Wv(my, by);
8035
8040
  }
8036
8041
  }
8037
- var qy;
8038
- function Jy() {
8039
- qy && (clearTimeout(qy), qy = void 0);
8042
+ var Jy;
8043
+ function Yy() {
8044
+ Jy && (clearTimeout(Jy), Jy = void 0);
8040
8045
  }
8041
- function Yy(e5, t2) {
8042
- Jy(), ly.setAttribute("hidden", ""), iy({ container: uy, message: e5, onRetry: t2 });
8046
+ function Xy(e5, t2) {
8047
+ Yy(), uy.setAttribute("hidden", ""), ay({ container: dy, message: e5, onRetry: t2 });
8043
8048
  }
8044
- function Xy() {
8045
- Jy(), uy.setAttribute("hidden", ""), ly.removeAttribute("hidden"), qy = setTimeout(() => {
8046
- Yy("The chart didn't load. Tap to try again.", Xy);
8047
- }, 3e4), vy.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8049
+ function Zy() {
8050
+ Yy(), dy.setAttribute("hidden", ""), uy.removeAttribute("hidden"), Jy = setTimeout(() => {
8051
+ Xy("The chart didn't load. Tap to try again.", Zy);
8052
+ }, 3e4), yy.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8048
8053
  });
8049
8054
  }
8050
- oy(vy, { loadingEl: ly, contentEl: uy, statusFn: Cy, paramControls: () => by }), qy = setTimeout(() => {
8051
- Yy("Chart data is taking longer than expected.", Xy);
8055
+ sy(yy, { loadingEl: uy, contentEl: dy, statusFn: wy, paramControls: () => xy }), Jy = setTimeout(() => {
8056
+ Xy("Chart data is taking longer than expected.", Zy);
8052
8057
  }, 3e4), (async () => {
8053
8058
  try {
8054
- await vy.connect();
8055
- let e5 = vy.getHostCapabilities();
8056
- xy = !!(e5 != null && e5.modelContext), Sy = !!(e5 != null && e5.sampling), ay(vy, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), cy(vy), m_(vy, () => {
8057
- $ && wy($);
8058
- }), $ && wy($);
8059
+ await yy.connect();
8060
+ let e5 = yy.getHostCapabilities();
8061
+ Sy = !!(e5 != null && e5.modelContext), Cy = !!(e5 != null && e5.sampling), oy(yy, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), ly(yy), h_(yy, () => {
8062
+ $ && Ty($);
8063
+ }), $ && Ty($);
8059
8064
  } catch (e5) {
8060
- console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Yy("The chart didn't load. Tap to try again.", Xy);
8065
+ console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Xy("The chart didn't load. Tap to try again.", Zy);
8061
8066
  }
8062
8067
  })();
8063
8068
  </script>