@openephemeris/mcp-server 4.15.0 → 4.15.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.
@@ -6598,7 +6598,7 @@ function m_() {
6598
6598
  }
6599
6599
  function h_(e5, t2, n2, r2, i2, a2) {
6600
6600
  var o2;
6601
- let s2 = i_ ? '<button class="ask-claude-btn" id="hd-ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "", c2 = a2 ? '<div class="hd-popup-body">'.concat(a2, "</div>") : "", l2 = '\n <div class="hd-popup-header">\n <span class="hd-popup-icon">'.concat(__(t2), '</span>\n <div class="hd-popup-title">\n <strong>').concat(__(n2), '</strong>\n <div class="hd-popup-sub">').concat(__(r2), '</div>\n </div>\n <button class="hd-popup-close" id="hd-popup-close">\u2715</button>\n </div>\n ').concat(c2, "\n ").concat(s2, "\n "), u2 = document.querySelector("#fs-bottom-bar [data-column='right']");
6601
+ let s2 = i_ ? '<button class="ask-claude-btn" id="hd-ask-claude-btn">Interpret</button>' : "", c2 = a2 ? '<div class="hd-popup-body">'.concat(a2, "</div>") : "", l2 = '\n <div class="hd-popup-header">\n <span class="hd-popup-icon">'.concat(__(t2), '</span>\n <div class="hd-popup-title">\n <strong>').concat(__(n2), '</strong>\n <div class="hd-popup-sub">').concat(__(r2), '</div>\n </div>\n <button class="hd-popup-close" id="hd-popup-close">\u2715</button>\n </div>\n ').concat(c2, "\n ").concat(s2, "\n "), u2 = document.querySelector("#fs-bottom-bar [data-column='right']");
6602
6602
  if (u2 && document.body.classList.contains("is-fullscreen")) {
6603
6603
  var d2;
6604
6604
  let e6 = u2.querySelector(".hd-detail-panel");
@@ -6628,7 +6628,7 @@ function g_(e5, t2) {
6628
6628
  let r2 = Object.fromEntries(Object.entries(t2.data).filter(([e6, t3]) => t3 != null && t3 !== "" && t3 !== 0)), i2 = { type: t2.type, data: r2 };
6629
6629
  i_(i2).then(() => {
6630
6630
  n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
6631
- n3.textContent = "Ask Claude \u2014 Interpret", n3.classList.remove("sent"), n3.disabled = false;
6631
+ n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
6632
6632
  }, 2500);
6633
6633
  }).catch(() => {
6634
6634
  n3.textContent = "Failed \u2014 retry", n3.classList.remove("sending"), n3.classList.add("error"), n3.disabled = false;
@@ -6639,7 +6639,7 @@ function __(e5) {
6639
6639
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
6640
6640
  }
6641
6641
  function v_(e5, t2, n2, r2, i2, a2) {
6642
- let o2 = (e6, t3) => t3 ? '<span class="info-value interactive-text" data-ask="true" data-topic="'.concat(__(e6), '" data-val="').concat(__(t3), '" tabindex="0" role="button" title="Ask Claude about this">').concat(__(t3), "</span>") : '<span class="info-value">None</span>';
6642
+ let o2 = (e6, t3) => t3 ? '<span class="info-value interactive-text" data-ask="true" data-topic="'.concat(__(e6), '" data-val="').concat(__(t3), '" tabindex="0" role="button" title="Interpret this">').concat(__(t3), "</span>") : '<span class="info-value">None</span>';
6643
6643
  return '\n <div class="info-row"><span class="info-label">Type</span>'.concat(o2("Type", e5), '</div>\n <div class="info-row"><span class="info-label">Profile</span>').concat(o2("Profile", t2), '</div>\n <div class="info-row"><span class="info-label">Authority</span>').concat(o2("Authority", n2), '</div>\n <div class="info-row"><span class="info-label">Definition</span>').concat(o2("Definition", r2), '</div>\n <div class="info-row"><span class="info-label">Cross</span>').concat(o2("Incarnation Cross", i2), '</div>\n <div class="info-row"><span class="info-label">Defined</span><span class="info-value">').concat(a2.length > 0 ? a2.map(__).join(", ") : "None", "</span></div>\n ");
6644
6644
  }
6645
6645
  function y_(e5, t2, n2, r2) {
@@ -7019,13 +7019,38 @@ var E_ = class e4 {
7019
7019
  }
7020
7020
  };
7021
7021
  o(E_, "comboSeq", 0);
7022
- var D_ = { "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." } }, O_ = '\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';
7023
- function k_() {
7022
+ var D_ = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
7023
+ function O_(e5, t2) {
7024
+ if (!e5) return null;
7025
+ let n2 = D_.exec(e5.trim());
7026
+ if (n2) {
7027
+ let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
7028
+ return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
7029
+ }
7030
+ let r2 = new Date(e5);
7031
+ return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
7032
+ }
7033
+ function k_(e5) {
7034
+ var t2;
7035
+ if (!e5) return "";
7036
+ let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
7037
+ if (r2 ? n2.push(r2) : typeof e5.latitude == "number" && typeof e5.longitude == "number" && n2.push("".concat(e5.latitude.toFixed(2), ", ").concat(e5.longitude.toFixed(2))), e5.datetime) {
7038
+ let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? O_(e5.datetime, e5.timezone) : null;
7039
+ t3 ? n2.push(t3.date.toLocaleString("en-US", { timeZone: t3.timeZone, day: "numeric", month: "short", year: "numeric", hour: "numeric", minute: "2-digit" })) : n2.push(e5.datetime);
7040
+ }
7041
+ return n2.join(" \xB7 ");
7042
+ }
7043
+ function A_(e5, t2, n2 = "Chart") {
7044
+ let r2 = k_(t2);
7045
+ return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
7046
+ }
7047
+ var j_ = { "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." } }, M_ = '\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';
7048
+ function N_() {
7024
7049
  if (document.getElementById("oe-first-run-styles")) return;
7025
7050
  let e5 = document.createElement("style");
7026
- e5.id = "oe-first-run-styles", e5.textContent = O_, document.head.appendChild(e5);
7051
+ e5.id = "oe-first-run-styles", e5.textContent = M_, document.head.appendChild(e5);
7027
7052
  }
7028
- function A_(e5) {
7053
+ function P_(e5) {
7029
7054
  let t2 = document.activeElement, n2 = document.createElement("div");
7030
7055
  n2.className = "oe-welcome-backdrop";
7031
7056
  let r2 = document.createElement("div");
@@ -7043,24 +7068,24 @@ function A_(e5) {
7043
7068
  e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
7044
7069
  }), requestAnimationFrame(() => a2.focus()), n2;
7045
7070
  }
7046
- function j_(e5) {
7047
- k_();
7048
- let t2 = A_(D_[e5]);
7071
+ function F_(e5) {
7072
+ N_();
7073
+ let t2 = P_(j_[e5]);
7049
7074
  document.body.appendChild(t2);
7050
7075
  }
7051
- var M_ = "\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";
7052
- function N_() {
7076
+ var I_ = "\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";
7077
+ function L_() {
7053
7078
  if (document.getElementById("oe-info-button-styles")) return;
7054
7079
  let e5 = document.createElement("style");
7055
- e5.id = "oe-info-button-styles", e5.textContent = M_, document.head.appendChild(e5);
7080
+ e5.id = "oe-info-button-styles", e5.textContent = I_, document.head.appendChild(e5);
7056
7081
  }
7057
- function P_(e5) {
7082
+ function R_(e5) {
7058
7083
  if (document.getElementById("oe-info-button")) return;
7059
- N_();
7084
+ L_();
7060
7085
  let t2 = document.createElement("button");
7061
- 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", () => j_(e5)), document.body.appendChild(t2);
7086
+ 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", () => F_(e5)), document.body.appendChild(t2);
7062
7087
  }
7063
- function F_(e5) {
7088
+ function z_(e5) {
7064
7089
  var t2;
7065
7090
  if (!e5) return null;
7066
7091
  if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
@@ -7073,45 +7098,45 @@ function F_(e5) {
7073
7098
  }
7074
7099
  return null;
7075
7100
  }
7076
- function I_(e5) {
7101
+ function B_(e5) {
7077
7102
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7078
7103
  }
7079
- function L_(e5) {
7080
- let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(I_(i2), "</button>") : "";
7081
- if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(I_(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7104
+ function V_(e5) {
7105
+ let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(B_(i2), "</button>") : "";
7106
+ if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(B_(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7082
7107
  var o2;
7083
7108
  (o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
7084
7109
  }
7085
7110
  }
7086
- var R_;
7087
- function z_() {
7088
- return R_ ? R_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
7111
+ var H_;
7112
+ function U_() {
7113
+ return H_ ? H_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
7089
7114
  }
7090
- function B_(e5 = z_()) {
7115
+ function W_(e5 = U_()) {
7091
7116
  let t2 = e5 ? "dark" : "light";
7092
7117
  return document.documentElement.setAttribute("data-theme", t2), t2;
7093
7118
  }
7094
- function V_(e5) {
7095
- B_();
7119
+ function G_(e5) {
7120
+ W_();
7096
7121
  try {
7097
7122
  window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
7098
- R_ || e5 == null || e5(B_(t2.matches));
7123
+ H_ || e5 == null || e5(W_(t2.matches));
7099
7124
  });
7100
7125
  } catch (e6) {
7101
7126
  }
7102
7127
  }
7103
- function H_(e5, t2) {
7128
+ function K_(e5, t2) {
7104
7129
  var n2, r2;
7105
7130
  let i2 = (e6) => {
7106
7131
  let n3 = e6 == null ? void 0 : e6.theme;
7107
7132
  if (n3 !== "light" && n3 !== "dark") return;
7108
- R_ = n3;
7109
- let r3 = document.documentElement.getAttribute("data-theme"), i3 = B_(n3 === "dark");
7133
+ H_ = n3;
7134
+ let r3 = document.documentElement.getAttribute("data-theme"), i3 = W_(n3 === "dark");
7110
7135
  i3 !== r3 && (t2 == null || t2(i3));
7111
7136
  };
7112
7137
  (n2 = e5.addEventListener) == null || n2.call(e5, "hostcontextchanged", i2), i2((r2 = e5.getHostContext) == null ? void 0 : r2.call(e5));
7113
7138
  }
7114
- function U_(e5, t2, n2 = []) {
7139
+ function q_(e5, t2, n2 = []) {
7115
7140
  var r2, i2;
7116
7141
  if (!t2 || t2.querySelector("#btn-fullscreen")) return;
7117
7142
  let a2 = document.createElement("button");
@@ -7187,21 +7212,21 @@ function U_(e5, t2, n2 = []) {
7187
7212
  let e6 = document.getElementById("fs-hint-banner");
7188
7213
  e6 && e6.remove();
7189
7214
  let t3 = document.createElement("div");
7190
- t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to Claude chat", document.body.appendChild(t3), requestAnimationFrame(() => {
7215
+ t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(t3), requestAnimationFrame(() => {
7191
7216
  t3.style.opacity = "1";
7192
7217
  }), setTimeout(() => {
7193
7218
  t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
7194
7219
  }, 4e3);
7195
7220
  }
7196
7221
  }
7197
- function W_(e5, t2) {
7222
+ function J_(e5, t2) {
7198
7223
  e5.ontoolcancelled = (e6) => {
7199
7224
  var n2, r2, i2;
7200
7225
  let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
7201
- 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), G_(a2);
7226
+ 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), Y_(a2);
7202
7227
  };
7203
7228
  }
7204
- function G_(e5) {
7229
+ function Y_(e5) {
7205
7230
  var t2;
7206
7231
  (t2 = document.getElementById("cancel-toast")) == null || t2.remove();
7207
7232
  let n2 = document.createElement("div");
@@ -7209,7 +7234,7 @@ function G_(e5) {
7209
7234
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7210
7235
  }, 3e3);
7211
7236
  }
7212
- function K_(e5) {
7237
+ function X_(e5) {
7213
7238
  var t2;
7214
7239
  function n2(e6) {
7215
7240
  if (!e6) return;
@@ -7222,36 +7247,36 @@ function K_(e5) {
7222
7247
  n2(e6);
7223
7248
  });
7224
7249
  }
7225
- var q_ = document.getElementById("loading-state"), J_ = document.getElementById("bodygraph-container"), Y_ = document.getElementById("info-panel"), X_ = document.getElementById("controls-panel"), Z_ = document.getElementById("chart-status"), Q_ = document.getElementById("param-controls-container"), Z = new t_({ name: "Human Design Bodygraph Explorer", version: "1.0.0" }), Q = null, $_ = null, ev = false, tv = "dark", nv = false, $ = "graph", rv = false, iv = false, av = false, ov = "quarter,zodiac,planets";
7226
- function sv(e5) {
7227
- return e5 === "mandala" && iv;
7250
+ var Z_ = document.getElementById("loading-state"), Q_ = document.getElementById("bodygraph-container"), $_ = document.getElementById("info-panel"), ev = document.getElementById("controls-panel"), tv = document.getElementById("chart-status"), nv = document.getElementById("param-controls-container"), Z = new t_({ name: "Human Design Bodygraph Explorer", version: "1.0.0" }), Q = null, rv = null, iv = false, av = "dark", ov = false, $ = "graph", sv = false, cv = false, lv = false, uv = "quarter,zodiac,planets";
7251
+ function dv(e5) {
7252
+ return e5 === "mandala" && cv;
7228
7253
  }
7229
- function cv() {
7254
+ function fv() {
7230
7255
  let e5 = Q == null ? void 0 : Q._birth_params;
7231
7256
  return typeof (e5 == null ? void 0 : e5.latitude) == "number" && typeof (e5 == null ? void 0 : e5.longitude) == "number";
7232
7257
  }
7233
- function lv(e5 = $, t2 = sv(e5)) {
7234
- return e5 === "mandala" ? { layout: e5, rings: t2 ? "".concat(ov, ",houses") : ov } : { layout: e5 };
7258
+ function pv(e5 = $, t2 = dv(e5)) {
7259
+ return e5 === "mandala" ? { layout: e5, rings: t2 ? "".concat(uv, ",houses") : uv } : { layout: e5 };
7235
7260
  }
7236
- var uv = {};
7237
- function dv(e5, t2, n2) {
7261
+ var mv = {};
7262
+ function hv(e5, t2, n2) {
7238
7263
  return "".concat(e5, ":").concat(t2, ":").concat(n2);
7239
7264
  }
7240
- function fv() {
7241
- for (let e5 of Object.keys(uv)) delete uv[e5];
7265
+ function gv() {
7266
+ for (let e5 of Object.keys(mv)) delete mv[e5];
7242
7267
  }
7243
- function pv() {
7244
- return B_();
7268
+ function _v() {
7269
+ return W_();
7245
7270
  }
7246
- V_((e5) => void mv(e5));
7247
- async function mv(e5) {
7248
- if (e5 === tv || nv || !Q) return;
7249
- let t2 = uv[dv($, e5, sv($))];
7271
+ G_((e5) => void vv(e5));
7272
+ async function vv(e5) {
7273
+ if (e5 === av || ov || !Q) return;
7274
+ let t2 = mv[hv($, e5, dv($))];
7250
7275
  if (t2) {
7251
- tv = e5, Dv(t2);
7276
+ av = e5, jv(t2);
7252
7277
  return;
7253
7278
  }
7254
- nv = true;
7279
+ ov = true;
7255
7280
  let n2 = Q._refetch;
7256
7281
  try {
7257
7282
  let t3;
@@ -7259,86 +7284,87 @@ async function mv(e5) {
7259
7284
  else {
7260
7285
  var r2, i2, a2, o2, s2;
7261
7286
  let n3 = (r2 = Q._birth_params) == null ? { datetime: "" } : r2;
7262
- t3 = await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: n3.datetime, latitude: (i2 = n3.latitude) == null ? void 0 : i2, longitude: (a2 = n3.longitude) == null ? void 0 : a2, timezone: (o2 = n3.timezone) == null ? void 0 : o2, location: (s2 = n3.location) == null ? void 0 : s2, theme: e5, ...lv() } });
7287
+ t3 = await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: n3.datetime, latitude: (i2 = n3.latitude) == null ? void 0 : i2, longitude: (a2 = n3.longitude) == null ? void 0 : a2, timezone: (o2 = n3.timezone) == null ? void 0 : o2, location: (s2 = n3.location) == null ? void 0 : s2, theme: e5, ...pv() } });
7263
7288
  }
7264
- let c2 = Nv(F_(t3));
7265
- c2 && (c2.type || c2.centers) ? (tv = e5, uv[dv($, e5, sv($))] = c2, Dv(c2)) : (console.error("[Bodygraph] Theme re-fetch returned no usable payload"), yv("Couldn't switch theme \u2014 showing previous colors"));
7289
+ let c2 = Lv(z_(t3));
7290
+ c2 && (c2.type || c2.centers) ? (av = e5, mv[hv($, e5, dv($))] = c2, jv(c2)) : (console.error("[Bodygraph] Theme re-fetch returned no usable payload"), Cv("Couldn't switch theme \u2014 showing previous colors"));
7266
7291
  } catch (e6) {
7267
- console.error("[Bodygraph] Theme re-fetch failed:", e6), yv("Couldn't switch theme \u2014 showing previous colors");
7292
+ console.error("[Bodygraph] Theme re-fetch failed:", e6), Cv("Couldn't switch theme \u2014 showing previous colors");
7268
7293
  } finally {
7269
- nv = false;
7294
+ ov = false;
7270
7295
  }
7271
7296
  }
7272
- async function hv() {
7273
- if (!Q || rv || nv) return;
7274
- let e5 = $ === "graph" ? "mandala" : "graph", t2 = uv[dv(e5, tv, sv(e5))];
7297
+ async function yv() {
7298
+ if (!Q || sv || ov) return;
7299
+ let e5 = $ === "graph" ? "mandala" : "graph", t2 = mv[hv(e5, av, dv(e5))];
7275
7300
  if (t2) {
7276
- $ = e5, Dv(t2);
7301
+ $ = e5, jv(t2);
7277
7302
  return;
7278
7303
  }
7279
- rv = true;
7304
+ sv = true;
7280
7305
  let n2 = document.getElementById("hd-layout-btn");
7281
7306
  n2 && (n2.disabled = true);
7282
7307
  try {
7283
7308
  let t3 = Q._refetch, n3;
7284
- if (t3 != null && t3.tool) n3 = { name: t3.tool, arguments: { ...t3.args, theme: tv, layout: e5 } };
7309
+ if (t3 != null && t3.tool) n3 = { name: t3.tool, arguments: { ...t3.args, theme: av, layout: e5 } };
7285
7310
  else {
7286
7311
  var r2, i2, a2, o2, s2;
7287
7312
  let t4 = (r2 = Q._birth_params) == null ? { datetime: "" } : r2;
7288
- n3 = { name: "bodygraph_recalculate", arguments: { datetime: t4.datetime, latitude: (i2 = t4.latitude) == null ? void 0 : i2, longitude: (a2 = t4.longitude) == null ? void 0 : a2, timezone: (o2 = t4.timezone) == null ? void 0 : o2, location: (s2 = t4.location) == null ? void 0 : s2, theme: tv, ...lv(e5) } };
7313
+ n3 = { name: "bodygraph_recalculate", arguments: { datetime: t4.datetime, latitude: (i2 = t4.latitude) == null ? void 0 : i2, longitude: (a2 = t4.longitude) == null ? void 0 : a2, timezone: (o2 = t4.timezone) == null ? void 0 : o2, location: (s2 = t4.location) == null ? void 0 : s2, theme: av, ...pv(e5) } };
7289
7314
  }
7290
- let c2 = Nv(F_(await Z.callServerTool(n3)));
7291
- c2 && (c2.type || c2.centers) ? ($ = e5, uv[dv($, tv, sv($))] = c2, Dv(c2)) : (console.error("[Bodygraph] Layout toggle returned no usable payload"), yv("Couldn't switch layout \u2014 try again or check credits"));
7315
+ let c2 = Lv(z_(await Z.callServerTool(n3)));
7316
+ c2 && (c2.type || c2.centers) ? ($ = e5, mv[hv($, av, dv($))] = c2, jv(c2)) : (console.error("[Bodygraph] Layout toggle returned no usable payload"), Cv("Couldn't switch layout \u2014 try again or check credits"));
7292
7317
  } catch (e6) {
7293
- console.error("[Bodygraph] Layout toggle failed:", e6), yv("Couldn't switch layout \u2014 try again or check credits");
7318
+ console.error("[Bodygraph] Layout toggle failed:", e6), Cv("Couldn't switch layout \u2014 try again or check credits");
7294
7319
  } finally {
7295
- rv = false;
7320
+ sv = false;
7296
7321
  let e6 = document.getElementById("hd-layout-btn");
7297
7322
  e6 && (e6.disabled = false);
7298
7323
  }
7299
7324
  }
7300
- function gv() {
7301
- iv && !cv() && (iv = false), $_ == null || $_.syncExtraToggle({ checked: iv, available: $ === "mandala" && cv(), disabledTitle: $ === "mandala" ? "Add a birth location to draw houses" : "Switch to Mandala view to add house rings" });
7325
+ function bv() {
7326
+ cv && !fv() && (cv = false), rv == null || rv.syncExtraToggle({ checked: cv, available: $ === "mandala" && fv(), disabledTitle: $ === "mandala" ? "Add a birth location to draw houses" : "Switch to Mandala view to add house rings" });
7302
7327
  }
7303
- async function _v(e5) {
7304
- if (!Q || $ !== "mandala" || av) {
7305
- gv();
7328
+ async function xv(e5) {
7329
+ if (!Q || $ !== "mandala" || lv) {
7330
+ bv();
7306
7331
  return;
7307
7332
  }
7308
- let t2 = uv[dv($, tv, e5)];
7333
+ let t2 = mv[hv($, av, e5)];
7309
7334
  if (t2) {
7310
- iv = e5, Dv(t2);
7335
+ cv = e5, jv(t2);
7311
7336
  return;
7312
7337
  }
7313
- av = true, $_ == null || $_.syncExtraToggle({ available: false });
7338
+ lv = true, rv == null || rv.syncExtraToggle({ available: false });
7314
7339
  try {
7315
7340
  var n2, r2, i2, a2, o2;
7316
- let t3 = (n2 = Q._birth_params) == null ? { datetime: "" } : n2, s2 = Nv(F_(await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: t3.datetime, latitude: (r2 = t3.latitude) == null ? void 0 : r2, longitude: (i2 = t3.longitude) == null ? void 0 : i2, timezone: (a2 = t3.timezone) == null ? void 0 : a2, location: (o2 = t3.location) == null ? void 0 : o2, theme: tv, ...lv($, e5) } })));
7317
- s2 && (s2.type || s2.centers) ? (iv = e5, uv[dv($, tv, e5)] = s2, Dv(s2)) : (console.error("[Bodygraph] House ring toggle returned no usable payload"), yv("Couldn't update house rings \u2014 try again or check credits"));
7341
+ let t3 = (n2 = Q._birth_params) == null ? { datetime: "" } : n2, s2 = Lv(z_(await Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: t3.datetime, latitude: (r2 = t3.latitude) == null ? void 0 : r2, longitude: (i2 = t3.longitude) == null ? void 0 : i2, timezone: (a2 = t3.timezone) == null ? void 0 : a2, location: (o2 = t3.location) == null ? void 0 : o2, theme: av, ...pv($, e5) } })));
7342
+ s2 && (s2.type || s2.centers) ? (cv = e5, mv[hv($, av, e5)] = s2, jv(s2)) : (console.error("[Bodygraph] House ring toggle returned no usable payload"), Cv("Couldn't update house rings \u2014 try again or check credits"));
7318
7343
  } catch (e6) {
7319
- console.error("[Bodygraph] House ring toggle failed:", e6), yv("Couldn't update house rings \u2014 try again or check credits");
7344
+ console.error("[Bodygraph] House ring toggle failed:", e6), Cv("Couldn't update house rings \u2014 try again or check credits");
7320
7345
  } finally {
7321
- av = false, gv();
7346
+ lv = false, bv();
7322
7347
  }
7323
7348
  }
7324
- async function vv(e5) {
7349
+ async function Sv(e5) {
7350
+ e5 = A_(e5, Q == null ? void 0 : Q._birth_params, "Human Design chart");
7325
7351
  try {
7326
7352
  (await Z.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[Bodygraph] Host rejected sendMessage");
7327
7353
  } catch (e6) {
7328
7354
  console.error("[Bodygraph] sendMessage failed:", e6);
7329
7355
  }
7330
7356
  }
7331
- function yv(e5) {
7332
- if (Z_) {
7357
+ function Cv(e5) {
7358
+ if (tv) {
7333
7359
  if (!e5) {
7334
- Z_.classList.remove("visible");
7360
+ tv.classList.remove("visible");
7335
7361
  return;
7336
7362
  }
7337
- Z_.textContent = "\xB7 ".concat(e5), Z_.classList.add("visible");
7363
+ tv.textContent = "\xB7 ".concat(e5), tv.classList.add("visible");
7338
7364
  }
7339
7365
  }
7340
- r_(yv);
7341
- async function bv(e5) {
7366
+ r_(Cv);
7367
+ async function wv(e5) {
7342
7368
  var t2, n2, r2, i2;
7343
7369
  if (!Q) return;
7344
7370
  let a2 = (t2 = Q.type) == null ? "Unknown" : t2, o2 = (n2 = Q.profile) == null ? "" : n2, s2 = (r2 = Q.authority) == null ? "" : r2, c2 = (i2 = Q.incarnation_cross) == null ? "" : i2, l2 = "";
@@ -7375,56 +7401,53 @@ async function bv(e5) {
7375
7401
  }
7376
7402
  return;
7377
7403
  }
7378
- l2 && await vv(l2);
7404
+ l2 && await Sv(l2);
7379
7405
  }
7380
- async function xv() {
7406
+ async function Tv() {
7381
7407
  var e5, t2, n2, r2, i2, a2, o2;
7382
7408
  if (!Q) return;
7383
- let s2 = Q, c2 = (e5 = s2.type) == null ? "Unknown" : e5, l2 = (t2 = s2.profile) == null ? "" : t2, u2 = (n2 = s2.authority) == null ? "" : n2, d2 = (r2 = s2.incarnation_cross) == null ? "" : r2, f2 = (i2 = s2.definition) == null ? "" : i2, p2 = ((a2 = s2.centers) == null ? [] : a2).filter((e6) => e6.defined).map((e6) => e6.name).join(", ") || "none", m2 = ((o2 = s2.channels) == null ? [] : o2).filter((e6) => e6.defined).map((e6) => {
7384
- var t3;
7385
- return (t3 = e6.id) == null ? "".concat(e6.gate1, "-").concat(e6.gate2) : t3;
7386
- }).join(", ") || "none";
7387
- await vv("Please give me a complete Human Design reading for this chart.\n\nType: ".concat(c2, "\n") + (l2 ? "Profile: ".concat(l2, "\n") : "") + (u2 ? "Authority: ".concat(u2, "\n") : "") + (f2 ? "Definition: ".concat(f2, "\n") : "") + (d2 ? "Incarnation Cross: ".concat(d2, "\n") : "") + "Defined Centers: ".concat(p2, "\nDefined Channels: ").concat(m2, "\n\nCover: (1) Life theme and purpose of this Type, (2) Strategy and how it works practically, (3) Authority and how to make aligned decisions, (4) The defined channels as core personality traits, (5) Key shadows and conditioning to watch for, (6) A practical summary of how to live this design."));
7409
+ let s2 = Q, c2 = (e5 = s2.type) == null ? "Unknown" : e5, l2 = (t2 = s2.profile) == null ? "" : t2, u2 = (n2 = s2.authority) == null ? "" : n2, d2 = (r2 = s2.incarnation_cross) == null ? "" : r2, f2 = (i2 = s2.definition) == null ? "" : i2, p2 = ((a2 = s2.centers) == null ? [] : a2).filter((e6) => e6.defined).map((e6) => e6.name).join(", ") || "none", m2 = ((o2 = s2.active_channels) == null ? [] : o2).join(", ") || "none";
7410
+ await Sv("Please give me a complete Human Design reading for this chart.\n\nType: ".concat(c2, "\n") + (l2 ? "Profile: ".concat(l2, "\n") : "") + (u2 ? "Authority: ".concat(u2, "\n") : "") + (f2 ? "Definition: ".concat(f2, "\n") : "") + (d2 ? "Incarnation Cross: ".concat(d2, "\n") : "") + "Defined Centers: ".concat(p2, "\nDefined Channels: ").concat(m2, "\n\nCover: (1) Life theme and purpose of this Type, (2) Strategy and how it works practically, (3) Authority and how to make aligned decisions, (4) The defined channels as core personality traits, (5) Key shadows and conditioning to watch for, (6) A practical summary of how to live this design."));
7388
7411
  }
7389
- async function Sv() {
7412
+ async function Ev() {
7390
7413
  var e5, t2, n2, r2, i2;
7391
7414
  if (!Q) return;
7392
7415
  let a2 = Q, o2 = (e5 = a2.type) == null ? "Unknown" : e5, s2 = (t2 = a2.profile) == null ? "" : t2, c2 = (n2 = a2.authority) == null ? "" : n2, l2 = [...(r2 = a2.personality_gates) == null ? [] : r2, ...(i2 = a2.design_gates) == null ? [] : i2].slice(0, 6).map((e6) => {
7393
7416
  var t3;
7394
7417
  return typeof e6 == "number" ? "Gate ".concat(e6) : "Gate ".concat((t3 = e6.gate) == null ? e6 : t3);
7395
7418
  }).join(", ") || "none";
7396
- await vv("I'm exploring a Human Design Bodygraph for a ".concat(o2) + (s2 ? " with Profile ".concat(s2) : "") + (c2 ? " and ".concat(c2, " authority") : "") + ". Active gates include: ".concat(l2, ".\n\nBased on this design, please suggest 3-4 specific, insightful questions I could ask to understand this chart more deeply \u2014 such as how the type and authority work in daily life, what specific gates or channels mean, or how to live in alignment with this design. Present each as a tappable question I can ask you."));
7419
+ await Sv("I'm exploring a Human Design Bodygraph for a ".concat(o2) + (s2 ? " with Profile ".concat(s2) : "") + (c2 ? " and ".concat(c2, " authority") : "") + ". Active gates include: ".concat(l2, ".\n\nBased on this design, please suggest 3-4 specific, insightful questions I could ask to understand this chart more deeply \u2014 such as how the type and authority work in daily life, what specific gates or channels mean, or how to live in alignment with this design. Present each as a tappable question I can ask you."));
7397
7420
  }
7398
- async function Cv(e5) {
7399
- ev && setTimeout(async () => {
7421
+ async function Dv(e5) {
7422
+ iv && setTimeout(async () => {
7400
7423
  try {
7401
7424
  var t2, n2, r2;
7402
7425
  let i2 = "User selected ".concat(e5.type, ": ").concat(JSON.stringify(e5.data, null, 2), "\nHD Type: ").concat((t2 = Q == null ? void 0 : Q.type) == null ? null : t2, "\nProfile: ").concat((n2 = Q == null ? void 0 : Q.profile) == null ? null : n2, "\nAuthority: ").concat((r2 = Q == null ? void 0 : Q.authority) == null ? null : r2);
7403
7426
  await Z.updateModelContext({ content: [{ type: "text", text: i2 }] });
7404
7427
  } catch (e6) {
7405
- ev = false;
7428
+ iv = false;
7406
7429
  }
7407
7430
  }, 0);
7408
7431
  }
7409
- async function wv(e5, t2, n2) {
7410
- yv("".concat(t2 ? "\u25C9" : "\u25CB", " ").concat(e5, " Center (").concat(t2 ? "defined" : "undefined", ")")), Cv({ type: "center", data: { center_name: e5, defined: t2, active_gates: n2 } });
7432
+ async function Ov(e5, t2, n2) {
7433
+ Cv("".concat(t2 ? "\u25C9" : "\u25CB", " ").concat(e5, " Center (").concat(t2 ? "defined" : "undefined", ")")), Dv({ type: "center", data: { center_name: e5, defined: t2, active_gates: n2 } });
7411
7434
  }
7412
- async function Tv(e5, t2, n2) {
7413
- yv("Gate ".concat(e5, " \xB7 ").concat(n2, " \xB7 ").concat(t2 === true ? "Conscious" : t2 === false ? "Unconscious" : "Both")), Cv({ type: "gate", data: { gate: e5, conscious: t2, center: n2 } });
7435
+ async function kv(e5, t2, n2) {
7436
+ Cv("Gate ".concat(e5, " \xB7 ").concat(n2, " \xB7 ").concat(t2 === true ? "Conscious" : t2 === false ? "Unconscious" : "Both")), Dv({ type: "gate", data: { gate: e5, conscious: t2, center: n2 } });
7414
7437
  }
7415
- async function Ev(e5, t2, n2, r2, i2, a2) {
7416
- yv(r2 && i2 ? "Channel ".concat(e5, " \xB7 ").concat(r2, "\u2013").concat(i2) : "Channel ".concat(e5)), Cv({ type: "channel", data: { channel: e5, gate1: t2, gate2: n2, center1: r2, center2: i2, color_type: a2 } });
7438
+ async function Av(e5, t2, n2, r2, i2, a2) {
7439
+ Cv(r2 && i2 ? "Channel ".concat(e5, " \xB7 ").concat(r2, "\u2013").concat(i2) : "Channel ".concat(e5)), Dv({ type: "channel", data: { channel: e5, gate1: t2, gate2: n2, center1: r2, center2: i2, color_type: a2 } });
7417
7440
  }
7418
- function Dv(e5) {
7441
+ function jv(e5) {
7419
7442
  var t2, n2, r2, i2, a2, o2, s2;
7420
- Q = e5, q_.setAttribute("hidden", ""), J_.removeAttribute("hidden"), document.body.classList.toggle("layout-mandala", $ === "mandala"), gv();
7443
+ Q = e5, Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"), document.body.classList.toggle("layout-mandala", $ === "mandala"), bv();
7421
7444
  let c2 = e5._svg;
7422
7445
  if (!c2) {
7423
- Av("Bodygraph render unavailable \u2014 the server did not return an SVG.", jv);
7446
+ Pv("Bodygraph render unavailable \u2014 the server did not return an SVG.", Fv);
7424
7447
  return;
7425
7448
  }
7426
- let l2 = C_(J_, c2, e5, { onCenterClick: wv, onGateClick: Tv, onChannelClick: Ev, onAskClaude: bv });
7427
- l2 && new URLSearchParams(window.location.search).has("debugHighlight") && Mv(l2);
7449
+ let l2 = C_(Q_, c2, e5, { onCenterClick: Ov, onGateClick: kv, onChannelClick: Av, onAskClaude: wv });
7450
+ l2 && new URLSearchParams(window.location.search).has("debugHighlight") && Iv(l2);
7428
7451
  let u2 = document.getElementById("hd-action-bar");
7429
7452
  if (!u2) {
7430
7453
  u2 = document.createElement("div"), u2.id = "hd-action-bar", u2.className = "hd-action-bar";
@@ -7432,49 +7455,49 @@ function Dv(e5) {
7432
7455
  if (e6) e6.appendChild(u2);
7433
7456
  else {
7434
7457
  var d2;
7435
- (d2 = J_.parentElement) == null || d2.insertBefore(u2, J_);
7458
+ (d2 = Q_.parentElement) == null || d2.insertBefore(u2, Q_);
7436
7459
  }
7437
7460
  }
7438
- let f2 = $ === "graph" ? "mandala" : "graph", p2 = !!uv[dv(f2, tv, sv(f2))];
7439
- u2.innerHTML = '\n <button class="action-btn action-btn--primary" id="hd-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="hd-questions-btn">\u{1F52E} What should I ask?</button>\n '.concat('<button class="action-btn" id="hd-layout-btn" title="'.concat(p2 ? "Already rendered this session \u2014 free to switch" : "Re-renders on the server (~2 credits)", '">').concat($ === "mandala" ? "\u2726 Graph view" : "\u2726 Mandala view").concat(p2 ? "" : " (~2 credits)", "</button>"), "\n "), (t2 = u2.querySelector("#hd-interpret-btn")) == null || t2.addEventListener("click", () => void xv()), (n2 = u2.querySelector("#hd-questions-btn")) == null || n2.addEventListener("click", () => void Sv()), (r2 = u2.querySelector("#hd-layout-btn")) == null || r2.addEventListener("click", () => void hv());
7461
+ let f2 = $ === "graph" ? "mandala" : "graph", p2 = !!mv[hv(f2, av, dv(f2))];
7462
+ u2.innerHTML = '\n <button class="action-btn action-btn--primary" id="hd-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="hd-questions-btn">\u{1F52E} What should I ask?</button>\n '.concat('<button class="action-btn" id="hd-layout-btn" title="'.concat(p2 ? "Already rendered this session \u2014 free to switch" : "Re-renders on the server (~2 credits)", '">').concat($ === "mandala" ? "\u2726 Graph view" : "\u2726 Mandala view").concat(p2 ? "" : " (~2 credits)", "</button>"), "\n "), (t2 = u2.querySelector("#hd-interpret-btn")) == null || t2.addEventListener("click", () => void Tv()), (n2 = u2.querySelector("#hd-questions-btn")) == null || n2.addEventListener("click", () => void Ev()), (r2 = u2.querySelector("#hd-layout-btn")) == null || r2.addEventListener("click", () => void yv());
7440
7463
  let m2 = ((i2 = (a2 = e5.personality_gates) == null ? void 0 : a2.length) == null ? 0 : i2) > 0 || ((o2 = (s2 = e5.design_gates) == null ? void 0 : s2.length) == null ? 0 : o2) > 0, h2 = document.querySelector(".channel-legend");
7441
7464
  if (m2 && !h2) {
7442
7465
  let e6 = document.createElement("div");
7443
- e6.className = "channel-legend", e6.innerHTML = '\n <span class="legend-item">\n <span class="legend-swatch" style="background:#a5b4fc"></span>Conscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f87171"></span>Unconscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f59e0b"></span>Both\n </span>\n ', Y_.prepend(e6);
7466
+ e6.className = "channel-legend", e6.innerHTML = '\n <span class="legend-item">\n <span class="legend-swatch" style="background:#a5b4fc"></span>Conscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f87171"></span>Unconscious\n </span>\n <span class="legend-item">\n <span class="legend-swatch" style="background:#f59e0b"></span>Both\n </span>\n ', $_.prepend(e6);
7444
7467
  }
7445
7468
  if (e5._connectionSubjects) {
7446
7469
  var g2, _2, ee2, te2, v2, y2, b2, ne2, re2, ie2, x2, ae2;
7447
7470
  let { a: t3, b: n3 } = e5._connectionSubjects;
7448
- Y_.innerHTML = y_("Person A", { type: (g2 = t3.type) == null ? "Unknown" : g2, profile: (_2 = t3.profile) == null ? "" : _2, authority: (ee2 = t3.authority) == null ? "" : ee2, definition: (te2 = t3.definition) == null ? "" : te2, cross: (v2 = t3.incarnation_cross) == null ? "" : v2, definedCenters: (y2 = t3.defined_centers) == null ? [] : y2 }, "Person B", { type: (b2 = n3.type) == null ? "Unknown" : b2, profile: (ne2 = n3.profile) == null ? "" : ne2, authority: (re2 = n3.authority) == null ? "" : re2, definition: (ie2 = n3.definition) == null ? "" : ie2, cross: (x2 = n3.incarnation_cross) == null ? "" : x2, definedCenters: (ae2 = n3.defined_centers) == null ? [] : ae2 });
7471
+ $_.innerHTML = y_("Person A", { type: (g2 = t3.type) == null ? "Unknown" : g2, profile: (_2 = t3.profile) == null ? "" : _2, authority: (ee2 = t3.authority) == null ? "" : ee2, definition: (te2 = t3.definition) == null ? "" : te2, cross: (v2 = t3.incarnation_cross) == null ? "" : v2, definedCenters: (y2 = t3.defined_centers) == null ? [] : y2 }, "Person B", { type: (b2 = n3.type) == null ? "Unknown" : b2, profile: (ne2 = n3.profile) == null ? "" : ne2, authority: (re2 = n3.authority) == null ? "" : re2, definition: (ie2 = n3.definition) == null ? "" : ie2, cross: (x2 = n3.incarnation_cross) == null ? "" : x2, definedCenters: (ae2 = n3.defined_centers) == null ? [] : ae2 });
7449
7472
  } else {
7450
7473
  var S2, oe2, se2, ce2, le2, ue2;
7451
7474
  let t3 = ((S2 = e5.centers) == null ? [] : S2).filter((e6) => e6.defined).map((e6) => e6.name);
7452
- Y_.innerHTML = v_((oe2 = e5.type) == null ? "Unknown" : oe2, (se2 = e5.profile) == null ? "" : se2, (ce2 = e5.authority) == null ? "" : ce2, (le2 = e5.definition) == null ? "" : le2, (ue2 = e5.incarnation_cross) == null ? "" : ue2, t3);
7475
+ $_.innerHTML = v_((oe2 = e5.type) == null ? "Unknown" : oe2, (se2 = e5.profile) == null ? "" : se2, (ce2 = e5.authority) == null ? "" : ce2, (le2 = e5.definition) == null ? "" : le2, (ue2 = e5.incarnation_cross) == null ? "" : ue2, t3);
7453
7476
  }
7454
- Y_.removeAttribute("hidden"), Y_.querySelectorAll(".interactive-text").forEach((e6) => {
7477
+ $_.removeAttribute("hidden"), $_.querySelectorAll(".interactive-text").forEach((e6) => {
7455
7478
  e6.addEventListener("click", () => {
7456
7479
  let t3 = e6.getAttribute("data-topic"), n3 = e6.getAttribute("data-val");
7457
- t3 && n3 && bv({ type: "attribute", data: { topic: t3, val: n3 } });
7480
+ t3 && n3 && wv({ type: "attribute", data: { topic: t3, val: n3 } });
7458
7481
  }), e6.addEventListener("keydown", (t3) => {
7459
7482
  let n3 = t3;
7460
7483
  (n3.key === "Enter" || n3.key === " ") && (n3.preventDefault(), e6.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
7461
7484
  });
7462
- }), X_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"), P_("bodygraph");
7485
+ }), ev.setAttribute("hidden", ""), nv.removeAttribute("hidden"), R_("bodygraph");
7463
7486
  }
7464
- var Ov;
7465
- function kv() {
7466
- Ov && (clearTimeout(Ov), Ov = void 0);
7487
+ var Mv;
7488
+ function Nv() {
7489
+ Mv && (clearTimeout(Mv), Mv = void 0);
7467
7490
  }
7468
- function Av(e5, t2) {
7469
- kv(), q_.setAttribute("hidden", ""), L_({ container: J_, message: e5, onRetry: t2 });
7491
+ function Pv(e5, t2) {
7492
+ Nv(), Z_.setAttribute("hidden", ""), V_({ container: Q_, message: e5, onRetry: t2 });
7470
7493
  }
7471
- function jv() {
7472
- kv(), J_.setAttribute("hidden", ""), q_.removeAttribute("hidden"), Ov = setTimeout(() => {
7473
- Av("The bodygraph didn't load. Tap to try again.", jv);
7494
+ function Fv() {
7495
+ Nv(), Q_.setAttribute("hidden", ""), Z_.removeAttribute("hidden"), Mv = setTimeout(() => {
7496
+ Pv("The bodygraph didn't load. Tap to try again.", Fv);
7474
7497
  }, 3e4), Z.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the Human Design bodygraph." }] }).catch(() => {
7475
7498
  });
7476
7499
  }
7477
- function Mv(e5) {
7500
+ function Iv(e5) {
7478
7501
  e5.addEventListener("click", (t2) => {
7479
7502
  let n2 = t2.target;
7480
7503
  for (; n2 && n2 !== e5; ) {
@@ -7490,7 +7513,7 @@ function Mv(e5) {
7490
7513
  w_(e5, {});
7491
7514
  });
7492
7515
  }
7493
- function Nv(e5) {
7516
+ function Lv(e5) {
7494
7517
  var t2;
7495
7518
  if (!e5) return null;
7496
7519
  if (e5.type || e5.centers) return e5;
@@ -7503,46 +7526,49 @@ function Nv(e5) {
7503
7526
  return null;
7504
7527
  }
7505
7528
  Z.ontoolresult = (e5) => {
7506
- kv();
7529
+ Nv();
7507
7530
  try {
7508
- let a2 = Nv(F_(e5)), o2 = a2 == null ? void 0 : a2._theme;
7509
- if ((o2 === "light" || o2 === "dark") && (tv = o2), !a2) {
7510
- Av("Bodygraph data could not be parsed from the server response.", jv);
7531
+ let a2 = Lv(z_(e5)), o2 = a2 == null ? void 0 : a2._theme;
7532
+ if ((o2 === "light" || o2 === "dark") && (av = o2), !a2) {
7533
+ Pv("Bodygraph data could not be parsed from the server response.", Fv);
7511
7534
  return;
7512
7535
  }
7513
- if ($ = "graph", iv = false, fv(), uv[dv($, tv, false)] = a2, !$_ && a2._birth_params) {
7536
+ if ($ = "graph", cv = false, gv(), mv[hv($, av, false)] = a2, !rv && a2._birth_params) {
7514
7537
  var t2, n2, r2, i2;
7515
7538
  let e6 = (t2 = a2._birth_params) == null ? {} : t2, o3 = (n2 = e6.datetime) == null ? "" : n2, s2 = (r2 = e6.location) == null ? "" : r2, c2 = (i2 = e6.timezone) == null ? "" : i2, l2 = e6.latitude, u2 = e6.longitude, d2 = "", f2 = "12:00";
7516
7539
  if (o3) try {
7517
- let e7 = new Date(o3), t3 = c2 || "UTC", n3 = e7.toLocaleDateString("en-CA", { timeZone: t3 }), r3 = e7.toLocaleTimeString("en-GB", { timeZone: t3, hour: "2-digit", minute: "2-digit", hour12: false });
7518
- d2 = n3, f2 = r3;
7540
+ let e7 = O_(o3, c2);
7541
+ if (e7) {
7542
+ let { date: t3, timeZone: n3 } = e7;
7543
+ d2 = t3.toLocaleDateString("en-CA", { timeZone: n3 }), f2 = t3.toLocaleTimeString("en-GB", { timeZone: n3, hour: "2-digit", minute: "2-digit", hour12: false });
7544
+ }
7519
7545
  } catch (e7) {
7520
7546
  o3.includes("T") && (d2 = o3.split("T")[0], f2 = o3.split("T")[1].substring(0, 5));
7521
7547
  }
7522
- $_ = new E_({ app: Z, container: Q_, initialParams: { date: d2, time: f2, locationName: s2, timezone: c2, latitude: typeof l2 == "number" ? l2 : null, longitude: typeof u2 == "number" ? u2 : null }, showStepControls: false, costHint: "~2 credits", extraToggle: { label: "Add house rings (+1 credit)", initialChecked: false, initialDisabled: true, disabledTitle: "Switch to Mandala view to add house rings", onChange: (e7) => void _v(e7) }, onRefresh: async (e7) => {
7523
- $_ == null || $_.setBusy(true), q_.removeAttribute("hidden"), J_.setAttribute("hidden", "");
7548
+ rv = new E_({ app: Z, container: nv, initialParams: { date: d2, time: f2, locationName: s2, timezone: c2, latitude: typeof l2 == "number" ? l2 : null, longitude: typeof u2 == "number" ? u2 : null }, showStepControls: false, costHint: "~2 credits", extraToggle: { label: "Add house rings (+1 credit)", initialChecked: false, initialDisabled: true, disabledTitle: "Switch to Mandala view to add house rings", onChange: (e7) => void xv(e7) }, onRefresh: async (e7) => {
7549
+ rv == null || rv.setBusy(true), Z_.removeAttribute("hidden"), Q_.setAttribute("hidden", "");
7524
7550
  try {
7525
7551
  var t3, n3, r3, i3;
7526
- let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o4 = e7.timezone ? a3 : "".concat(a3, "Z"), s3 = new Promise((e8, t4) => setTimeout(() => t4(Error("Bodygraph recalculate timed out after 30s")), 3e4)), c3 = F_(await Promise.race([Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: o4, latitude: (t3 = e7.latitude) == null ? void 0 : t3, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, theme: tv, ...lv() } }), s3])), l3 = c3 && (c3.type || c3.centers) ? c3 : null;
7527
- l3 ? (fv(), uv[dv($, tv, sv($))] = l3, Dv(l3)) : Q && (q_.setAttribute("hidden", ""), J_.removeAttribute("hidden"));
7552
+ let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o4 = e7.timezone ? a3 : "".concat(a3, "Z"), s3 = new Promise((e8, t4) => setTimeout(() => t4(Error("Bodygraph recalculate timed out after 30s")), 3e4)), c3 = z_(await Promise.race([Z.callServerTool({ name: "bodygraph_recalculate", arguments: { datetime: o4, latitude: (t3 = e7.latitude) == null ? void 0 : t3, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, theme: av, ...pv() } }), s3])), l3 = c3 && (c3.type || c3.centers) ? c3 : null;
7553
+ l3 ? (gv(), mv[hv($, av, dv($))] = l3, jv(l3)) : Q && (Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"));
7528
7554
  } catch (e8) {
7529
- console.error("[Bodygraph] Recalculate failed or timed out:", e8), Q && (q_.setAttribute("hidden", ""), J_.removeAttribute("hidden"));
7555
+ console.error("[Bodygraph] Recalculate failed or timed out:", e8), Q && (Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden"));
7530
7556
  } finally {
7531
- $_ == null || $_.setBusy(false);
7557
+ rv == null || rv.setBusy(false);
7532
7558
  }
7533
7559
  } });
7534
7560
  }
7535
- Dv(a2), mv(pv());
7561
+ jv(a2), vv(_v());
7536
7562
  } catch (e6) {
7537
- Av("An error occurred while rendering the bodygraph.", jv), console.error("[Bodygraph] Render error:", e6);
7563
+ Pv("An error occurred while rendering the bodygraph.", Fv), console.error("[Bodygraph] Render error:", e6);
7538
7564
  }
7539
- }, W_(Z, { loadingEl: q_, contentEl: J_, statusFn: yv, paramControls: () => $_ }), Ov = setTimeout(() => {
7540
- Av("Bodygraph data is taking longer than expected.", jv);
7565
+ }, J_(Z, { loadingEl: Z_, contentEl: Q_, statusFn: Cv, paramControls: () => rv }), Mv = setTimeout(() => {
7566
+ Pv("Bodygraph data is taking longer than expected.", Fv);
7541
7567
  }, 3e4), (async () => {
7542
7568
  try {
7543
7569
  await Z.connect();
7544
7570
  let e5 = Z.getHostCapabilities();
7545
- ev = !!(e5 != null && e5.modelContext), e5 == null || e5.sampling, U_(Z, document.getElementById("pan-zoom-controls"), ["param-controls-container", "controls-panel", "info-panel", "hd-action-bar"]), K_(Z), H_(Z, (e6) => void mv(e6));
7571
+ iv = !!(e5 != null && e5.modelContext), e5 == null || e5.sampling, q_(Z, document.getElementById("pan-zoom-controls"), ["param-controls-container", "controls-panel", "info-panel", "hd-action-bar"]), X_(Z), K_(Z, (e6) => void vv(e6));
7546
7572
  } catch (e5) {
7547
7573
  console.error("[Bodygraph] connect() failed:", e5);
7548
7574
  }