@openephemeris/mcp-server 4.18.0 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/index.js +8 -110
  3. package/dist/server-sse.js +7 -114
  4. package/dist/tools/apps/bazi-app.d.ts +1 -1
  5. package/dist/tools/apps/bazi-app.js +3 -2
  6. package/dist/tools/apps/bi-wheel-app.d.ts +1 -1
  7. package/dist/tools/apps/bi-wheel-app.js +3 -2
  8. package/dist/tools/apps/bodygraph-app.d.ts +7 -4
  9. package/dist/tools/apps/bodygraph-app.js +13 -5
  10. package/dist/tools/apps/chart-wheel-app.d.ts +1 -1
  11. package/dist/tools/apps/chart-wheel-app.js +3 -2
  12. package/dist/tools/apps/moon-phase-app.d.ts +1 -1
  13. package/dist/tools/apps/moon-phase-app.js +3 -2
  14. package/dist/tools/apps/transit-timeline-app.d.ts +1 -1
  15. package/dist/tools/apps/transit-timeline-app.js +3 -2
  16. package/dist/tools/apps/ui-resource.d.ts +43 -0
  17. package/dist/tools/apps/ui-resource.js +66 -0
  18. package/dist/tools/apps/ui-resources.d.ts +22 -0
  19. package/dist/tools/apps/ui-resources.js +105 -0
  20. package/dist/tools/apps/vedic-chart-app.d.ts +1 -1
  21. package/dist/tools/apps/vedic-chart-app.js +3 -2
  22. package/dist/tools/specialized/comparative.js +25 -23
  23. package/dist/tools/specialized/hd_cycles.js +22 -23
  24. package/dist/tools/specialized/progressed.js +5 -2
  25. package/dist/tools/specialized/relocation.js +5 -2
  26. package/dist/tools/visual.d.ts +15 -0
  27. package/dist/tools/visual.js +22 -0
  28. package/dist/ui/bazi.html +893 -856
  29. package/dist/ui/bi-wheel.html +555 -518
  30. package/dist/ui/bodygraph.html +433 -337
  31. package/dist/ui/chart-wheel.html +632 -595
  32. package/dist/ui/moon-phase.html +190 -155
  33. package/dist/ui/transit-timeline.html +865 -830
  34. package/dist/ui/vedic-chart.html +252 -215
  35. package/package.json +2 -1
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html lang="en">
3
3
  <head>
4
- <meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'" />
4
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data: https:; connect-src 'none'" />
5
5
  <meta charset="UTF-8" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <meta name="color-scheme" content="dark light" />
@@ -10,7 +10,7 @@
10
10
  <title>Chart Wheel Explorer</title>
11
11
 
12
12
 
13
- <style>:root{--bg:#010203;--surface:#040609;--surface-2:#0b0d13;--border:#13161d;--border-strong:#242932;--text:#e2e4e9;--text-secondary:#777a80;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--on-gold:#0d0802;--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--shadow:0 4px 20px rgba(0,0,0,.45);--shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px rgba(0,0,0,.5);--planet-sun:#e9ab2b;--planet-moon:#abb8d2;--planet-mercury:#37b880;--planet-venus:#de73bd;--planet-mars:#dd4d57;--planet-jupiter:#9886ed;--planet-saturn:#589194;--planet-uranus:#24c1c9;--planet-neptune:#2f8adc;--planet-pluto:#a97cc9;--aspect-conjunction:#ffa94d;--aspect-opposition:#ff6b8a;--aspect-trine:#ffd166;--aspect-square:#ff6b8a;--aspect-sextile:#38bdf8;--color-fire:#ec6d3d;--color-earth:#779e4b;--color-air:#17a9cb;--color-water:#8678c9;--color-cardinal:#d9525a;--color-fixed:#cc9c42;--color-mutable:#1da871}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00515318 .00655345 .0110262);--surface:color(display-p3 .0181758 .0222118 .0344746);--surface-2:color(display-p3 .0438795 .0516065 .0708656);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .146313 .159736 .192938);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .470023 .47923 .50135);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--on-gold:color(display-p3 .0492866 .0328715 .0111297);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--shadow:0 4px 20px color(display-p3 0 0 0/.45);--shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px color(display-p3 0 0 0/.5);--planet-sun:color(display-p3 .877131 .680603 .28424);--planet-moon:color(display-p3 .679472 .718322 .813586);--planet-mercury:color(display-p3 .376022 .713332 .518194);--planet-venus:color(display-p3 .815343 .471375 .72873);--planet-mars:color(display-p3 .803557 .340931 .357065);--planet-jupiter:color(display-p3 .584642 .526796 .904819);--planet-saturn:color(display-p3 .398313 .564522 .578019);--planet-uranus:color(display-p3 .364235 .746318 .77845);--planet-neptune:color(display-p3 .290256 .532943 .838196);--planet-pluto:color(display-p3 .635092 .494812 .769187);--color-fire:color(display-p3 .864679 .454605 .289251);--color-earth:color(display-p3 .496575 .613452 .334223);--color-air:color(display-p3 .308318 .651825 .781829);--color-water:color(display-p3 .515326 .47381 .767317);--color-cardinal:color(display-p3 .790049 .355864 .367143);--color-fixed:color(display-p3 .76996 .617341 .321369);--color-mutable:color(display-p3 .313719 .651039 .459895)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.455387% .00626594 -.517511);--surface:lab(1.54195% -.000223517 -1.4246);--surface-2:lab(3.66055% -.0193194 -3.00652);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3845% -.109598 -6.65552);--text:lab(90.6942% -.142366 -2.26941);--text-secondary:lab(51.2352% -.205308 -3.76425);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21132 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--on-gold:lab(2.4863% .883393 2.81807);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--shadow:0 4px 20px lab(0% 0 0/.45);--shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px lab(0% 0 0/.5);--planet-sun:lab(74.5017% 15.8158 68.8514);--planet-moon:lab(74.277% -.405699 -14.8565);--planet-mercury:lab(67.0478% -46.5952 18.3141);--planet-venus:lab(62.9358% 49.4917 -19.8999);--planet-mars:lab(54.0218% 57.6814 26.7913);--planet-jupiter:lab(60.9189% 25.1968 -50.641);--planet-saturn:lab(56.5081% -18.8848 -7.81488);--planet-uranus:lab(71.0008% -37.5682 -15.4301);--planet-neptune:lab(55.2086% -4.94954 -50.4575);--planet-pluto:lab(58.8593% 28.4679 -33.3653);--color-fire:lab(61.5466% 48.3829 50.2676);--color-earth:lab(60.647% -24.5491 38.2386);--color-air:lab(63.473% -27.315 -28.2614);--color-water:lab(54.4132% 19.4196 -40.6625);--color-cardinal:lab(54.1324% 54.4527 25.0799);--color-fixed:lab(67.5798% 11.9379 52.333);--color-mutable:lab(61.2436% -46.7762 18.3644)}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;height:100%}body{background:var(--bg);color:var(--text);background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");font-family:Geist,Space Grotesk,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow-x:hidden}#app{flex-direction:column;display:flex;position:relative}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;display:flex}#loading-state[hidden]{display:none}#loading-state p{letter-spacing:.05em;text-transform:uppercase;font-size:12px}.spinner{border:2px solid var(--border-strong);border-top-color:var(--gold);border-radius:50%;width:32px;height:32px;animation:1.1s cubic-bezier(.4,0,.6,1) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#chart-container{aspect-ratio:1;z-index:0;justify-content:center;align-items:center;width:100%;max-height:520px;padding:8px;display:flex;position:relative;overflow:hidden}#chart-container[hidden]{display:none}#chart-container svg{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;height:100%;display:block;overflow:hidden}.info-panel,.overview-tbl td{-webkit-user-select:text;-moz-user-select:text;user-select:text}#chart-info{background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:6px 12px;display:flex}#chart-info[hidden]{display:none!important}.info-chip{color:var(--text-secondary);border-radius:var(--radius-pill);white-space:nowrap;letter-spacing:.03em;background:#13161c;background:color(display-p3 .0777944 .086043 .106387);background:lab(7.16788% -.0827834 -4.39059);align-items:center;gap:3px;padding:2px 8px;font-size:10px;font-weight:500;line-height:1.6;display:inline-flex}.info-chip.sect{color:var(--gold);background:var(--gold-subtle);font-weight:600}.hit-region{cursor:pointer;fill:transparent;stroke:transparent;transition:fill .15s,stroke .15s,opacity .2s}.hit-region:hover{fill:var(--gold-subtle);stroke:var(--gold-dim);stroke-width:1px;stroke-opacity:.5}.hit-region.planet-hit{rx:12px;ry:12px}.hit-region.planet-hit:not(.dim):hover{filter:drop-shadow(0 0 6px var(--gold-glow))}.hit-region:focus-visible{outline:2px solid var(--gold);outline-offset:2px;fill:var(--gold-subtle)}.hit-region.dim{opacity:.12}.hit-region.aspect-hit{stroke-width:13px}.hit-region.sign-hit:hover{fill:rgba(204,156,66,.06);fill:color(display-p3 .76996 .617341 .321369/.06);fill:lab(67.5798% 11.9379 52.333/.06);stroke:none}.info-panel{background:var(--surface-2);border:1px solid var(--border-strong);width:100%;box-shadow:0 8px 40px rgba(0,0,0,.6), 0 0 0 1px var(--border-strong);opacity:0;pointer-events:none;z-index:2;border-radius:10px;max-height:0;padding:0 16px;transition:max-height .26s cubic-bezier(.16,1,.3,1),opacity .2s,padding .2s;position:relative;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.info-panel{box-shadow:0 8px 40px color(display-p3 0 0 0/.6), 0 0 0 1px var(--border-strong)}}@supports (color:lab(0% 0 0)){.info-panel{box-shadow:0 8px 40px lab(0% 0 0/.6), 0 0 0 1px var(--border-strong)}}.info-panel:before{content:"";background:var(--border-strong);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:0 auto 10px;display:block}.info-panel.visible{opacity:1;pointer-events:all;max-height:520px;padding:14px 16px 12px}.info-header{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.info-glyph{text-align:center;flex-shrink:0;width:34px;font-size:28px;line-height:1}.info-title{color:var(--text);flex:1;font-size:13px;font-weight:700}.info-name-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.info-pos{color:var(--text-secondary);margin-top:2px;font-family:JetBrains Mono,Courier New,monospace;font-size:11px;font-weight:400}.retro{color:var(--error);font-style:normal}.info-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .12s}.info-close:hover{color:var(--text)}.aspects-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:6px;font-size:10px;font-weight:700}.aspects-list{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;max-height:140px;display:flex;overflow-y:auto}.aspects-list::-webkit-scrollbar{width:3px}.aspects-list::-webkit-scrollbar-track{background:0 0}.aspects-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.aspect-row{align-items:center;gap:7px;padding:3px 0;font-size:12px;display:flex}.aspect-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.aspect-sym{text-align:center;flex-shrink:0;width:16px;font-size:14px}.aspect-other{color:var(--text);flex:1}.aspect-meta{color:var(--text-secondary);white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:11px}.no-aspects{color:var(--text-secondary);padding:4px 0;font-size:11px;font-style:italic}.info-hint{color:var(--gold-dim);letter-spacing:.03em;text-align:center;margin-top:10px;font-size:10px}.ask-claude-btn{border-radius:var(--radius-sm);width:100%;color:var(--gold);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding:9px 16px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;font-weight:600;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.ask-claude-btn:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65);box-shadow:0 0 0 3px rgba(204,156,66,.12);box-shadow:0 0 0 3px color(display-p3 .76996 .617341 .321369/.12);box-shadow:0 0 0 3px lab(67.5798% 11.9379 52.333/.12)}.ask-claude-btn:disabled{opacity:.5;cursor:not-allowed}.ask-claude-btn.sending{color:var(--gold-dim);opacity:.8;cursor:wait;pointer-events:none;background:rgba(204,156,66,.08);background:color(display-p3 .76996 .617341 .321369/.08);background:lab(67.5798% 11.9379 52.333/.08);border-color:rgba(204,156,66,.25);border-color:color(display-p3 .76996 .617341 .321369/.25);border-color:lab(67.5798% 11.9379 52.333/.25)}.ask-claude-btn.sent{color:var(--success);pointer-events:none;background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border-color:rgba(29,168,113,.5);border-color:color(display-p3 .313719 .651039 .459895/.5);border-color:lab(61.2436% -46.7762 18.3644/.5)}.ask-claude-btn.error{color:var(--error);background:rgba(197,52,67,.15);background:color(display-p3 .710345 .252818 .279408/.15);background:lab(45.8893% 57.7361 27.393/.15);border-color:rgba(197,52,67,.5);border-color:color(display-p3 .710345 .252818 .279408/.5);border-color:lab(45.8893% 57.7361 27.393/.5)}.chart-status{min-height:0;max-height:0;color:var(--gold);letter-spacing:.04em;opacity:0;background:var(--surface);border-top:1px solid var(--border);padding:0 14px;font-size:11px;font-weight:500;transition:max-height .24s cubic-bezier(.16,1,.3,1),padding .24s cubic-bezier(.16,1,.3,1),opacity .24s;overflow:hidden}.chart-status[data-active]{opacity:1;max-height:32px;padding:6px 14px}.aspect-pair-row{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.aspect-pair-planet{flex:1;align-items:center;gap:6px;display:flex}.aspect-pair-glyph{text-align:center;flex-shrink:0;width:24px;font-size:18px;line-height:1}.aspect-pair-name{color:var(--text);font-size:12px;font-weight:600}.aspect-pair-pos{color:var(--text-secondary);margin-top:1px;font-family:JetBrains Mono,monospace;font-size:10px}.aspect-pair-sym{text-align:center;flex-shrink:0;width:24px;font-size:20px}.pattern-ask-claude-btn{border-radius:var(--radius-pill);color:var(--gold);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1);border:1px solid rgba(204,156,66,.35);border:1px solid color(display-p3 .76996 .617341 .321369/.35);border:1px solid lab(67.5798% 11.9379 52.333/.35);flex-shrink:0;margin-left:6px;padding:3px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s}.pattern-ask-claude-btn:hover{background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);box-shadow:0 0 0 2px rgba(204,156,66,.1);box-shadow:0 0 0 2px color(display-p3 .76996 .617341 .321369/.1);box-shadow:0 0 0 2px lab(67.5798% 11.9379 52.333/.1)}.pattern-ask-claude-btn:disabled{opacity:.45;cursor:default}.dignity-badge{border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;line-height:1.6;display:inline-flex}.dignity-domicile{color:#4bc98f;color:color(display-p3 .438181 .776546 .577613);color:lab(72.8515% -46.4433 18.272);background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border:1px solid rgba(29,168,113,.4);border:1px solid color(display-p3 .313719 .651039 .459895/.4);border:1px solid lab(61.2436% -46.7762 18.3644/.4)}.dignity-exaltation{color:#e6b55d;color:color(display-p3 .872302 .716587 .419329);color:lab(76.888% 11.458 50.9953);background:rgba(204,156,66,.15);background:color(display-p3 .76996 .617341 .321369/.15);background:lab(67.5798% 11.9379 52.333/.15);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4)}.dignity-detriment{color:#e17174;color:color(display-p3 .827266 .46738 .465289);color:lab(61.4259% 44.7499 19.9857);background:rgba(197,52,67,.12);background:color(display-p3 .710345 .252818 .279408/.12);background:lab(45.8893% 57.7361 27.393/.12);border:1px solid rgba(197,52,67,.35);border:1px solid color(display-p3 .710345 .252818 .279408/.35);border:1px solid lab(45.8893% 57.7361 27.393/.35)}.dignity-fall{color:#7a869f;color:color(display-p3 .488637 .525017 .615022);color:lab(55.7075% -.240624 -14.7889);background:rgba(88,99,123,.12);background:color(display-p3 .353624 .387759 .473149/.12);background:lab(41.7762% -.0450611 -14.7162/.12);border:1px solid rgba(88,99,123,.3);border:1px solid color(display-p3 .353624 .387759 .473149/.3);border:1px solid lab(41.7762% -.0450611 -14.7162/.3)}#tally-panel{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:8px;padding:5px 12px;display:flex}.tally-section{flex-direction:column;gap:3px;display:flex}.tally-row{align-items:center;gap:6px;display:flex}.tally-item{white-space:nowrap;letter-spacing:.02em;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600}.tally-item.fire{color:var(--color-fire);background:rgba(236,109,61,.12);background:color(display-p3 .864679 .454605 .289251/.12);background:lab(61.5466% 48.3829 50.2676/.12)}.tally-item.earth{color:var(--color-earth);background:rgba(119,158,75,.12);background:color(display-p3 .496575 .613452 .334223/.12);background:lab(60.647% -24.5491 38.2386/.12)}.tally-item.air{color:var(--color-air);background:rgba(23,169,203,.12);background:color(display-p3 .308318 .651825 .781829/.12);background:lab(63.473% -27.315 -28.2614/.12)}.tally-item.water{color:var(--color-water);background:rgba(134,120,201,.12);background:color(display-p3 .515326 .47381 .767317/.12);background:lab(54.4132% 19.4196 -40.6625/.12)}.tally-item.cardinal{color:var(--color-cardinal);background:rgba(217,82,90,.1);background:color(display-p3 .790049 .355864 .367143/.1);background:lab(54.1324% 54.4527 25.0799/.1)}.tally-item.fixed{color:var(--color-fixed);background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1)}.tally-item.mutable{color:var(--color-mutable);background:rgba(29,168,113,.1);background:color(display-p3 .313719 .651039 .459895/.1);background:lab(61.2436% -46.7762 18.3644/.1)}.tally-bar-row{padding:2px 0}.tally-bar{background:var(--border);border-radius:2px;width:96px;height:3px;display:flex;overflow:hidden}.tally-bar-fill{height:100%;transition:width .5s cubic-bezier(.16,1,.3,1)}.tally-bar-fill.fire{background:var(--color-fire)}.tally-bar-fill.earth{background:var(--color-earth)}.tally-bar-fill.air{background:var(--color-air)}.tally-bar-fill.water{background:var(--color-water)}.tally-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:26px}.tally-item[data-interactive]{cursor:pointer;transition:opacity .14s,box-shadow .14s,background .14s}.tally-item[data-interactive]:hover,.tally-item[data-interactive].active{opacity:1;box-shadow:0 0 0 2px}.tally-planets{flex-wrap:wrap;gap:3px;padding:2px 0 0;display:flex}.tally-planet-chip{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:rgba(255,255,255,.05);background:color(display-p3 1 1 1/.05);background:lab(100% 0 0/.05);border-radius:3px;padding:0 4px;font-size:9px;font-weight:500;transition:color .12s,background .12s}.tally-planet-chip:hover{color:var(--gold);background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12)}#dignity-panel{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:4px 12px;display:flex}.dignity-chip{cursor:pointer;white-space:nowrap;border-radius:4px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;transition:opacity .14s,box-shadow .14s;display:inline-flex}.dignity-chip:hover{opacity:1;box-shadow:0 0 0 2px}.dignity-chip.active{box-shadow:0 0 0 2px}#overview-table{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.overview-header{align-items:center;display:flex}.overview-header .overview-toggle{flex:auto;width:auto}.overview-copy{border:1px solid var(--border);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em;border-radius:var(--radius-sm,6px);cursor:pointer;background:0 0;flex-shrink:0;margin-right:8px;padding:3px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:700;transition:color .14s,border-color .14s}.overview-copy:hover,.overview-copy.copied{color:var(--gold);border-color:var(--gold)}.overview-toggle{width:100%;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:6px 12px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:700;transition:color .14s;display:flex}.overview-toggle:hover{color:var(--gold)}.overview-chevron{font-size:8px;transition:transform .2s}.overview-toggle[aria-expanded=true] .overview-chevron{transform:rotate(90deg)}.overview-body{grid-template-rows:0fr;transition:grid-template-rows .28s cubic-bezier(.16,1,.3,1);display:grid;overflow:hidden}.overview-body>*{min-height:0}.overview-body.open{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;grid-template-rows:1fr;max-height:300px;overflow-x:hidden;overflow-y:auto}.overview-tbl{border-collapse:collapse;width:100%;font-size:11px}.overview-tbl th{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);text-align:left;border-bottom:1px solid var(--border);background:var(--surface);padding:3px 8px;font-size:9px;font-weight:700;position:-webkit-sticky;position:sticky;top:0}.overview-tbl td{color:var(--text);border-bottom:1px solid rgba(255,255,255,.04);border-bottom:1px solid color(display-p3 1 1 1/.04);border-bottom:1px solid lab(100% 0 0/.04);padding:4px 8px}.overview-tbl tr{cursor:pointer;transition:background .12s}.overview-tbl tbody tr:hover{background:rgba(204,156,66,.06);background:color(display-p3 .76996 .617341 .321369/.06);background:lab(67.5798% 11.9379 52.333/.06)}.overview-tbl tbody tr.active-row{background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12)}.overview-tbl tbody tr.extended-row{opacity:.72}.overview-tbl tbody tr.extended-row td:first-child:after{content:" ·";color:var(--text-secondary);font-size:8px}.overview-tbl .planet-sym{text-align:center;width:20px;font-family:serif;font-size:14px;display:inline-block}.overview-tbl .retro-mark{color:#e05252;margin-left:2px;font-size:9px}#patterns-strip{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:5px 12px;display:flex}.patterns-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);white-space:nowrap;margin-right:2px;font-size:9px;font-weight:700}.pattern-pill{border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;opacity:.75;background:0 0;border:1px solid;align-items:center;gap:4px;padding:5px 9px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:10px;font-weight:600;transition:opacity .14s,box-shadow .14s;display:inline-flex}.pattern-pill:hover{opacity:1;box-shadow:0 0 0 2px currentColor / .2}.pattern-pill.active{color:#010203;color:color(display-p3 .00515318 .00655345 .0110262);color:lab(.455387% .00626594 -.517511);opacity:1;border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.3);box-shadow:0 2px 10px color(display-p3 0 0 0/.3);box-shadow:0 2px 10px lab(0% 0 0/.3)}#aspect-filter{border-top:1px solid var(--border);scrollbar-width:none;flex-shrink:0;align-items:center;gap:4px;padding:4px 12px;display:flex;overflow-x:auto}#aspect-filter::-webkit-scrollbar{display:none}#aspect-filter[hidden]{display:none!important}#controls-panel{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.controls-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;margin-right:2px;font-size:10px;font-weight:700}.control-btn{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;padding:6px 10px;font-family:Geist,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:11px;transition:background .12s,color .12s,border-color .12s}.control-btn:hover{background:var(--gold-subtle);color:var(--gold);border-color:rgba(204,156,66,.4);border-color:color(display-p3 .76996 .617341 .321369/.4);border-color:lab(67.5798% 11.9379 52.333/.4)}.control-btn.active{color:var(--gold);background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);font-weight:600}.controls-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:18px;margin:0 4px}.error-state{text-align:center;color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.error-state .error-icon{opacity:.6;margin-bottom:4px;font-size:28px}.error-retry-btn{border:1px solid var(--border,rgba(128,128,160,.3));color:var(--gold,var(--accent-warm,var(--text,inherit)));font:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border-radius:999px;margin-top:4px;padding:7px 20px;font-size:11px;font-weight:600;transition:background .18s,border-color .18s}.error-retry-btn:hover{background:rgba(128,128,160,.12)}.info-drawer{background:var(--surface-2,#080b11);border:1px solid var(--border-strong,#242933);width:100%;box-shadow:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong,#242933);opacity:0;pointer-events:none;border-radius:10px;max-height:0;padding:14px 16px 12px;transition:max-height .26s cubic-bezier(.16,1,.3,1),opacity .2s,padding .2s;position:relative;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.info-drawer{background:var(--surface-2,color(display-p3 .0345774 .0431759 .0653236));border:1px solid var(--border-strong,color(display-p3 .144788 .159634 .196542));box-shadow:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong,color(display-p3 .144788 .159634 .196542))}}@supports (color:lab(0% 0 0)){.info-drawer{background:var(--surface-2,lab(3.00584% .0228807 -3.15676));border:1px solid var(--border-strong,lab(16.3712% -.0768155 -7.37782));box-shadow:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong,lab(16.3712% -.0768155 -7.37782))}}.info-drawer:before{content:"";background:var(--border-strong,#242933);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:0 auto 10px;display:block}@supports (color:color(display-p3 0 0 0)){.info-drawer:before{background:var(--border-strong,color(display-p3 .144788 .159634 .196542))}}@supports (color:lab(0% 0 0)){.info-drawer:before{background:var(--border-strong,lab(16.3712% -.0768155 -7.37782))}}.info-drawer.open{opacity:1;pointer-events:all;max-height:500px;padding:14px 16px 12px}.hd-action-bar{z-index:2;background:var(--bg);flex-wrap:wrap;gap:8px;padding:10px 16px 6px;display:flex;position:relative}.action-btn{border:1px solid var(--gold-glow);background:var(--gold-subtle);color:var(--gold);letter-spacing:.02em;cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.action-btn:hover{background:rgba(204,156,66,.15);background:color(display-p3 .76996 .617341 .321369/.15);background:lab(67.5798% 11.9379 52.333/.15);border-color:rgba(204,156,66,.45);border-color:color(display-p3 .76996 .617341 .321369/.45);border-color:lab(67.5798% 11.9379 52.333/.45)}.action-btn:active{background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2)}.action-btn--primary{background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.5);border-color:color(display-p3 .76996 .617341 .321369/.5);border-color:lab(67.5798% 11.9379 52.333/.5)}.action-btn--primary:hover{background:rgba(204,156,66,.25);background:color(display-p3 .76996 .617341 .321369/.25);background:lab(67.5798% 11.9379 52.333/.25);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.pan-zoom-controls{z-index:800;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:12px;right:12px}.pan-zoom-controls[hidden]{display:none!important}.pan-btn{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;width:40px;height:40px;box-shadow:var(--shadow-md);justify-content:center;align-items:center;font-family:inherit;font-size:18px;transition:all .15s;display:flex}.pan-btn.reset{width:auto;padding:0 10px;font-size:11px;font-weight:500}.pan-btn:hover{background:var(--surface);border-color:var(--gold-dim);color:var(--gold)}.pan-btn:active{transform:scale(.95)}.pan-btn--fullscreen{width:40px;height:40px}body.is-fullscreen{height:100vh;overflow:hidden}body.is-fullscreen #app{flex-direction:column;gap:0;width:100vw;height:100vh;padding:0;display:flex;overflow:hidden}body.is-fullscreen #chart-container{flex:1;justify-content:center;align-items:center;min-height:0;padding:16px 24px 0;display:flex;overflow:hidden}body.is-fullscreen #chart-container>svg{width:auto;max-width:100%;height:100%;max-height:100%}body.is-fullscreen #chart-status{display:none}body.is-fullscreen #loading-state{flex:1;height:auto;min-height:0}body.is-fullscreen .pan-zoom-controls{top:16px;right:16px}#fs-bottom-bar{border-top:1px solid var(--border);background:#020306;background:color(display-p3 .0100648 .0127997 .0215356);background:lab(.889429% .0122339 -1.01076);flex-shrink:0;grid-template-rows:1fr;grid-template-columns:220px 1fr 220px;height:240px;min-height:180px;max-height:280px;display:grid}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;padding:10px 14px 12px;display:flex;overflow-x:hidden;overflow-y:auto}#fs-bottom-bar [data-column=left]{border-right:1px solid var(--border)}#fs-bottom-bar [data-column=center]{pointer-events:none}#fs-bottom-bar [data-column=right]{border-left:1px solid var(--border);overflow-y:auto}#fs-bottom-bar [data-column]>*+*{border-top:1px solid var(--border);margin-top:4px;padding-top:8px}#fs-bottom-bar .cw-action-bar,#fs-bottom-bar .hd-action-bar{flex-direction:column;padding:8px 0 0}#fs-bottom-bar .action-btn{justify-content:center;width:100%}.cancel-toast{background:var(--surface-2,#1e1e2e);border:1px solid var(--border-strong,#444);color:var(--text-secondary);border-radius:var(--radius-sm,6px);opacity:0;z-index:9999;pointer-events:none;box-shadow:var(--shadow-md,0 4px 12px rgba(0,0,0,.3));padding:8px 16px;font-family:inherit;font-size:12px;transition:opacity .3s,transform .3s;position:fixed;bottom:20px;left:50%;transform:translate(-50%)translateY(20px)}.cancel-toast.visible{opacity:1;transform:translate(-50%)translateY(0)}.oe-loader{width:64px;height:64px;stroke:var(--gold);stroke-width:2px;fill:none;stroke-dasharray:200;stroke-dashoffset:200px;filter:drop-shadow(0 0 4px var(--gold-glow));animation:2.5s cubic-bezier(.16,1,.3,1) infinite oe-draw}@keyframes oe-draw{0%{stroke-dashoffset:200px;stroke-opacity:.1}50%{stroke-dashoffset:0;stroke-opacity:1;filter:drop-shadow(0 0 8px var(--gold))}to{stroke-dashoffset:-200px;stroke-opacity:.1}}#aspect-filter{padding:0}.asp-panel{flex-wrap:wrap;align-items:center;gap:6px 16px;padding:6px 0;display:flex}.asp-section{align-items:center;gap:6px;display:flex}.asp-section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);white-space:nowrap;font-size:10px;font-weight:700}.aspect-toggle-btn,.orb-preset-btn{border:1.5px solid var(--border-strong);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:20px;padding:4px 10px;font-size:11px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.aspect-toggle-btn:hover,.orb-preset-btn:hover{border-color:var(--gold-dim);color:var(--text)}.aspect-toggle-btn.active{background:var(--gold);border-color:var(--gold);color:var(--on-gold)}.orb-preset-btn.active{background:var(--surface-2);border-color:var(--gold);color:var(--gold)}.glyph-legend{margin-top:8px;font-size:11px}.glyph-legend>summary{cursor:pointer;border:1px solid var(--border);color:var(--text-secondary);-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;list-style:none;display:inline-flex}.glyph-legend>summary::-webkit-details-marker{display:none}.glyph-legend>summary:hover{color:var(--text);border-color:var(--gold-dim)}.glyph-legend[open]>summary{color:var(--text)}.glyph-legend .legend-spark{color:var(--gold)}.legend-body{flex-direction:column;gap:10px;padding:10px 2px 2px;display:flex}.legend-group{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.legend-group-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);width:100%;font-size:9px}.legend-item{color:var(--text-secondary);align-items:center;gap:4px;display:inline-flex}.legend-glyph{color:var(--text);text-align:center;min-width:16px;font-size:14px}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.tooltip{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;border-radius:var(--radius,10px);pointer-events:none;z-index:1000;opacity:0;background:rgba(12,12,22,.97);border:1px solid rgba(60,58,80,.8);max-width:240px;padding:8px 12px;font-size:12px;transition:opacity .12s;position:fixed;box-shadow:0 8px 32px rgba(0,0,0,.55),inset 0 .5px rgba(255,255,255,.04)}.tooltip.visible{opacity:1}.tooltip-title{color:#e8e8f4;margin-bottom:2px;font-weight:700}.tooltip-detail{color:#9090b0;line-height:1.4}.tooltip-hint{color:#a08840;letter-spacing:.03em;margin-top:4px;font-size:10px}:root[data-theme=light]{--aspect-conjunction:#b45d00;--aspect-opposition:#b42318;--aspect-trine:#8f6a00;--aspect-square:#b42318;--aspect-sextile:#0c6e94;--bg:#f7f5f1;--surface:#fff;--surface-2:#f1eee9;--border:#dbd7d0;--border-strong:#bdb6ac;--text:#101215;--text-secondary:#4f5359;--gold:#825700;--gold-dim:#6d4b00;--gold-glow:rgba(130,87,0,.25);--gold-subtle:rgba(130,87,0,.1);--on-gold:#fcf4e6;--success:#007145;--error:#b1002b;--shadow:0 4px 20px rgba(0,0,0,.1);--shadow-md:0 8px 32px rgba(0,0,0,.14), 0 0 0 1px var(--border-strong)}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--bg:color(display-p3 .967616 .959866 .945308);--surface:color(display-p3 1 1 1);--surface-2:color(display-p3 .943798 .93351 .914195);--border:color(display-p3 .855616 .842987 .819292);--border-strong:color(display-p3 .73602 .716348 .67952);--text:color(display-p3 .0633107 .0687189 .081922);--text-secondary:color(display-p3 .313002 .323251 .348016);--gold:color(display-p3 .49809 .342102 -.0880434);--gold-dim:color(display-p3 .414099 .299019 .034461);--gold-glow:color(display-p3 .49809 .342102 -.0880434/.25);--gold-subtle:color(display-p3 .49809 .342102 -.0880434/.1);--on-gold:color(display-p3 .983924 .957955 .909341);--success:color(display-p3 -.0793084 .456092 .255685);--error:color(display-p3 .642198 .101724 .18242);--shadow:0 4px 20px color(display-p3 0 0 0/.1);--shadow-md:0 8px 32px color(display-p3 0 0 0/.14), 0 0 0 1px var(--border-strong)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg:lab(96.5376% .34079 2.2589);--surface:lab(100% 0 0);--surface-2:lab(94.2232% .459701 3.01524);--border:lab(86.1085% .583261 3.77473);--border-strong:lab(74.5232% .975847 6.06879);--text:lab(5.23809% -.0738502 -2.43738);--text-secondary:lab(34.9842% -.210062 -4.49808);--gold:lab(40.7346% 15.7445 75.3139);--gold-dim:lab(35.0077% 11.3181 50.9422);--gold-glow:lab(40.7346% 15.7445 75.3139/.25);--gold-subtle:lab(40.7346% 15.7445 75.3139/.1);--on-gold:lab(96.574% 1.22041 7.58642);--success:lab(41.7514% -55.3249 21.5039);--error:lab(37.5238% 64.2774 32.6097);--shadow:0 4px 20px lab(0% 0 0/.1);--shadow-md:0 8px 32px lab(0% 0 0/.14), 0 0 0 1px var(--border-strong)}}:root[data-theme=light],:root[data-theme=light] body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-image:none}:root[data-theme=light] .hd-action-bar{background:var(--bg)}:root[data-theme=light] .info-chip{background:var(--surface-2);color:var(--text-secondary);border:1px solid var(--border)}:root[data-theme=light] .info-chip.sect{background:var(--gold-subtle);color:var(--gold);border-color:rgba(141,95,0,.3);border-color:color(display-p3 .542549 .371783 -.107551/.3);border-color:lab(44.1995% 17.0662 84.3373/.3)}:root[data-theme=light] .tooltip{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);border-color:var(--border-strong);background:rgba(255,255,255,.96);background:color(display-p3 1 1 1/.96);background:lab(100% 0 0/.96);box-shadow:0 8px 32px rgba(0,0,0,.18),inset 0 .5px rgba(255,255,255,.6);box-shadow:0 8px 32px color(display-p3 0 0 0/.18),inset 0 .5px color(display-p3 1 1 1/.6);box-shadow:0 8px 32px lab(0% 0 0/.18),inset 0 .5px lab(100% 0 0/.6)}:root[data-theme=light] .tooltip-title{color:var(--text)}:root[data-theme=light] .tooltip-detail{color:var(--text-secondary)}:root[data-theme=light] .tooltip-hint{color:var(--gold-dim)}:root[data-theme=light] .chart-status{background:rgba(247,245,241,.92);background:color(display-p3 .967616 .959866 .945308/.92);background:lab(96.5376% .34079 2.2589/.92);border-color:rgba(141,95,0,.35);border-color:color(display-p3 .542549 .371783 -.107551/.35);border-color:lab(44.1995% 17.0662 84.3373/.35)}:root[data-theme=light] .hit-region:hover{fill:rgba(141,95,0,.1);fill:color(display-p3 .542549 .371783 -.107551/.1);fill:lab(44.1995% 17.0662 84.3373/.1);stroke:var(--gold-dim)}:root[data-theme=light] .hit-region.sign-hit:hover{fill:rgba(141,95,0,.07);fill:color(display-p3 .542549 .371783 -.107551/.07);fill:lab(44.1995% 17.0662 84.3373/.07)}:root[data-theme=light] .pan-btn{background:var(--surface)}:root[data-theme=light] .pan-btn:hover{background:var(--surface-2)}:root[data-theme=light] #fs-bottom-bar{background:#f7f5f1;background:color(display-p3 .967616 .959866 .945308);background:lab(96.5376% .34079 2.2589);border-top-color:#caced4;border-top-color:color(display-p3 .796183 .806346 .830691);border-top-color:lab(82.5562% -.22167 -3.77336)}:root[data-theme=light] #fs-bottom-bar [data-column=left],:root[data-theme=light] #fs-bottom-bar [data-column=right]{background:#f1eeea;background:color(display-p3 .941472 .933762 .919279);background:lab(94.2176% .341028 2.25905)}:root[data-theme=light] #fs-bottom-bar [data-column=left]{border-right-color:#caced4;border-right-color:color(display-p3 .796183 .806346 .830691);border-right-color:lab(82.5562% -.22167 -3.77336)}:root[data-theme=light] #fs-bottom-bar [data-column=right]{border-left-color:#caced4;border-left-color:color(display-p3 .796183 .806346 .830691);border-left-color:lab(82.5562% -.22167 -3.77336)}:root[data-theme=light] #fs-bottom-bar [data-column]>*+*{border-top-color:#caced4;border-top-color:color(display-p3 .796183 .806346 .830691);border-top-color:lab(82.5562% -.22167 -3.77336)}@media (max-width:480px){body,#app{padding:0}#pan-zoom-controls{flex-wrap:wrap;gap:5px}.pan-btn{background:color-mix(in oklab, var(--surface-2) 72%, transparent);-webkit-backdrop-filter:blur(6px);width:32px;min-width:32px;height:32px;min-height:32px;font-size:15px}.pan-btn.reset{width:32px;padding:0;font-size:0}.pan-btn.reset:before{content:"⟲";font-size:15px}#date-controls,.controls,.control-row{flex-wrap:wrap;gap:8px}#fs-bottom-bar{flex-wrap:wrap}#fs-bottom-bar [data-column]{border:0;flex:100%}}.param-controls{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:6px 12px}.param-controls-grid{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.param-group{flex-direction:row;align-items:center;gap:6px;display:flex}.param-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:700}.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);color-scheme:inherit;border-radius:var(--radius-sm);width:120px;height:24px;padding:3px 6px;font-family:inherit;font-size:11px}@media (prefers-reduced-motion:no-preference){.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{transition:border-color .15s}}.param-group input:focus{border-color:var(--gold-dim);outline:none}.loc-searching{border-color:var(--gold-dim)!important}@media (prefers-reduced-motion:no-preference){.loc-searching{animation:1s ease-in-out infinite alternate loc-pulse}}@keyframes loc-pulse{0%{border-color:var(--gold-dim)}to{border-color:rgba(204,156,66,.55);border-color:color(display-p3 .76996 .617341 .321369/.55);border-color:lab(67.5798% 11.9379 52.333/.55)}}.param-group-loc{flex:1;position:relative}.param-group-loc input{width:100%}.loc-suggestions{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);z-index:100;max-height:200px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.35);box-shadow:0 4px 12px color(display-p3 0 0 0/.35);box-shadow:0 4px 12px lab(0% 0 0/.35)}.loc-item{color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;overflow:hidden}.loc-item:last-child{border-bottom:none}@media (prefers-reduced-motion:no-preference){.loc-item{transition:background .1s,color .1s}}.loc-item:hover,.loc-item--active{background:var(--gold-subtle);color:var(--gold)}.loc-status{color:var(--text-secondary);letter-spacing:.01em;padding:8px 10px;font-size:11px;font-style:italic}.loc-status-error{color:#d76a5a;color:color(display-p3 .788241 .439621 .373983);color:lab(58.1265% 42.6447 29.9439);font-style:normal;font-weight:600}.param-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.param-cost-hint{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;font-size:10px}.param-btn-icon{border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}@media (prefers-reduced-motion:no-preference){.param-btn-icon{transition:background .15s,border-color .15s,color .15s}}.param-btn-icon:hover{background:var(--surface-2);color:var(--text);border-color:var(--gold-dim)}.param-btn-primary{color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);height:24px;padding:3px 10px;font-family:inherit;font-size:10px;font-weight:600}@media (prefers-reduced-motion:no-preference){.param-btn-primary{transition:background .15s,border-color .15s}}.param-btn-primary:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.param-btn-primary:disabled{opacity:.5;cursor:not-allowed}.param-extra-toggle{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;cursor:pointer;align-items:center;gap:5px;font-size:10px;display:flex}.param-extra-toggle input[type=checkbox]{width:13px;height:13px;accent-color:var(--gold,oklch(72% .12 80));cursor:pointer}.param-extra-toggle input[type=checkbox]:disabled{cursor:not-allowed}.param-extra-toggle input[type=checkbox]:disabled~span{opacity:.5}:root[data-theme=light] .param-group input[type=date],:root[data-theme=light] .param-group input[type=time],:root[data-theme=light] .param-group input[type=text]{border-color:var(--border-strong);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167638 1.12768)}:root[data-theme=light] .loc-suggestions{border-color:var(--border-strong);background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167638 1.12768)}:root[data-theme=light] .param-btn-primary{background:rgba(160,112,0,.12);background:color(display-p3 .615135 .441554 -.0204711/.12);background:lab(51.2092% 16.2654 78.3504/.12);border-color:rgba(160,112,0,.4);border-color:color(display-p3 .615135 .441554 -.0204711/.4);border-color:lab(51.2092% 16.2654 78.3504/.4)}:root[data-theme=light] .param-btn-primary:hover:not(:disabled){background:rgba(160,112,0,.22);background:color(display-p3 .615135 .441554 -.0204711/.22);background:lab(51.2092% 16.2654 78.3504/.22);border-color:rgba(160,112,0,.65);border-color:color(display-p3 .615135 .441554 -.0204711/.65);border-color:lab(51.2092% 16.2654 78.3504/.65)}.param-summary-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:2px 0;margin-bottom:4px;padding:3px 4px 5px;font-size:10px;line-height:1.3;display:flex}.param-summary-bar[hidden]{display:none}.summary-name{color:var(--gold,#d6a54d);letter-spacing:.01em;padding-right:2px;font-size:12px;font-weight:700}@supports (color:color(display-p3 0 0 0)){.summary-name{color:var(--gold,color(display-p3 .808073 .654274 .358094))}}@supports (color:lab(0% 0 0)){.summary-name{color:var(--gold,lab(71.071% 11.7474 51.7651))}}.summary-datetime{font-variant-numeric:tabular-nums;color:var(--text-secondary);align-items:baseline;gap:4px;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:11px;display:inline-flex}.summary-time-sep{color:var(--border-strong);opacity:.7;font-family:inherit;font-size:9px}.summary-loc{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;padding-left:2px;font-size:11px;font-style:italic;overflow:hidden}.summary-sep{background:var(--border-strong);opacity:.5;vertical-align:middle;flex-shrink:0;width:1px;height:11px;margin:0 7px;display:inline-block}
13
+ <style>:root{--bg:#010102;--surface:#030408;--surface-2:#080b11;--border:#13161d;--border-strong:#242933;--text:#e2e4e9;--text-secondary:#a1a5ab;--muted:#84868b;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--oe-shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px rgba(204,156,66,.15), 0 0 0 1px rgba(204,156,66,.2);--font-ui:var(--font-sans,system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);--font-code:var(--font-mono,ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace);--oe-page-bg:var(--color-background-primary,var(--bg));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00306656 .00431968 .00888397);--surface:color(display-p3 .013072 .016989 .0298495);--surface-2:color(display-p3 .0345774 .0431759 .0653236);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .144788 .159634 .196542);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .635245 .644982 .668335);--muted:color(display-p3 .518127 .525635 .543633);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--oe-shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px color(display-p3 .76996 .617341 .321369/.15), 0 0 0 1px color(display-p3 .76996 .617341 .321369/.2)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.302122% .0219196 -.522962);--surface:lab(1.18159% .0276566 -1.4848);--surface-2:lab(3.00584% .0228807 -3.15676);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3712% -.0768155 -7.37782);--text:lab(90.6942% -.142366 -2.26941);--text-secondary:lab(67.4758% -.215352 -3.76978);--muted:lab(55.8848% -.174642 -3.01716);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21132 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--oe-shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px lab(67.5798% 11.9379 52.333/.15), 0 0 0 1px lab(67.5798% 11.9379 52.333/.2)}}:root[data-theme=light]{--bg:#f4f5f8;--surface:#fbfcfe;--surface-2:#eceef3;--border:#d5d7dd;--border-strong:#babec6;--text:#181b1f;--text-secondary:#4a4d54;--muted:#606369;--gold:#8a6000;--gold-dim:#967c4f;--gold-glow:rgba(141,95,0,.25);--gold-subtle:rgba(141,95,0,.07);--success:#007145;--error:#b1002b;--oe-shadow-md:0 4px 24px rgba(0,0,0,.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px rgba(141,95,0,.18), 0 0 0 1px rgba(141,95,0,.22);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--bg:color(display-p3 .956515 .960735 .970805);--surface:color(display-p3 .98376 .986943 .994535);--surface-2:color(display-p3 .928401 .934691 .949715);--border:color(display-p3 .836244 .844458 .864107);--border-strong:color(display-p3 .731542 .743532 .772301);--text:color(display-p3 .096883 .103987 .12134);--text-secondary:color(display-p3 .291758 .301882 .326359);--muted:color(display-p3 .379924 .388781 .410092);--gold:color(display-p3 .524671 .380491 .0387678);--gold-dim:color(display-p3 .572756 .489268 .332751);--gold-glow:color(display-p3 .542549 .371783 -.107551/.25);--gold-subtle:color(display-p3 .542549 .371783 -.107551/.07);--success:color(display-p3 -.0793084 .456092 .255685);--error:color(display-p3 .642198 .101724 .18242);--oe-shadow-md:0 4px 24px color(display-p3 0 0 0/.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px color(display-p3 .542549 .371783 -.107551/.18), 0 0 0 1px color(display-p3 .542549 .371783 -.107551/.22)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg:lab(96.503% -.0977516 -1.51461);--surface:lab(98.8273% -.0742674 -1.13657);--surface-2:lab(94.1743% -.142753 -2.26963);--border:lab(86.0453% -.183702 -3.02233);--border-strong:lab(76.7468% -.254452 -4.52154);--text:lab(9.4703% -.119448 -3.722);--text-secondary:lab(32.6639% -.205323 -4.4957);--muted:lab(41.9548% -.197023 -3.7598);--gold:lab(44.2758% 13.6718 62.9124);--gold-dim:lab(53.685% 6.10271 28.558);--gold-glow:lab(44.1995% 17.0662 84.3373/.25);--gold-subtle:lab(44.1995% 17.0662 84.3373/.07);--success:lab(41.7514% -55.3249 21.5039);--error:lab(37.5238% 64.2774 32.6097);--oe-shadow-md:0 4px 24px lab(0% 0 0/.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px lab(44.1995% 17.0662 84.3373/.18), 0 0 0 1px lab(44.1995% 17.0662 84.3373/.22)}}:root{--safe-top:0px;--safe-right:0px;--safe-bottom:0px;--safe-left:0px;--oe-host-h:var(--host-height,var(--host-max-height,640px));--oe-chart-max:clamp(260px, calc(var(--oe-host-h) * .72), 560px);--oe-chart-max-lg:clamp(280px, calc(var(--oe-host-h) * .8), 720px);--oe-drawer-max:clamp(160px, calc(var(--oe-host-h) * .4), 360px);--oe-scroll-max:clamp(240px, calc(var(--oe-host-h) * .7), 560px)}html,body{font-family:var(--font-ui)}body{background-color:var(--oe-page-bg)}.oe-pannable{touch-action:pan-y}body.is-fullscreen .oe-pannable{touch-action:none}.pan-zoom-controls [hidden],.pan-btn[hidden]{display:none!important}.fs-hint-banner{top:calc(12px + var(--safe-top));z-index:9999;border-radius:var(--radius-pill);border:1px solid color-mix(in oklab, var(--gold) 35%, transparent);background:color-mix(in oklab, var(--surface-2) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:calc(100% - 32px);color:var(--text);font:600 11px/1.4 var(--font-ui);letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;opacity:0;padding:6px 16px;transition:opacity .3s;position:fixed;left:50%;overflow:hidden;transform:translate(-50%)}.fs-hint-banner.visible{opacity:1}@media (prefers-reduced-motion:reduce){.fs-hint-banner{transition:none}}body.is-fullscreen{height:100vh;height:100dvh;overflow:hidden}body.is-fullscreen #app{width:100%;max-width:none;height:100%;min-height:0;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);flex-direction:column;gap:0;margin:0;display:flex;overflow:hidden}body.is-fullscreen #app:has(>#fs-bottom-bar){padding-bottom:0}body.is-fullscreen #app .oe-stage{aspect-ratio:auto;width:100%;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none;background:0 0;border:0;border-radius:0;flex:auto;justify-content:center;align-items:center;margin:0;padding:16px 24px 8px;display:flex;overflow:hidden}body.is-fullscreen #app .oe-stage>svg{width:auto;max-width:100%;height:100%;max-height:100%}body.is-fullscreen #app .oe-stage--doc{width:100%;max-width:880px;padding:20px 24px calc(16px + var(--safe-bottom));flex-direction:column;justify-content:flex-start;align-items:stretch;margin:0 auto;display:flex;overflow-y:auto}body.is-fullscreen #app #loading-state{flex:1;height:auto;min-height:0}body.is-fullscreen #app .pan-zoom-controls{top:calc(54px + var(--safe-top));right:calc(12px + var(--safe-right));bottom:auto}body .oe-info-button{top:calc(12px + var(--safe-top));right:calc(12px + var(--safe-right))}#app #fs-bottom-bar{height:clamp(170px, calc(var(--oe-host-h) * .3), 280px);padding-bottom:var(--safe-bottom);border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(200px,260px) minmax(0,1fr) minmax(200px,260px);display:grid}:root[data-safe-bottom] #app #fs-bottom-bar{height:calc(clamp(170px, calc(var(--oe-host-h) * .3), 280px) + var(--safe-bottom));grid-template-columns:minmax(0,1fr) minmax(0,1fr)}:root[data-safe-bottom] #fs-bottom-bar [data-column=center]{display:none}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;min-height:0;padding:10px 14px 12px;display:flex;overflow-x:hidden;overflow-y:auto}#fs-bottom-bar [data-column=left]{border-right:1px solid var(--border)}#fs-bottom-bar [data-column=right]{border-left:1px solid var(--border)}#fs-bottom-bar [data-column=center]{pointer-events:none}#fs-bottom-bar [data-column]>*+*{border-top:1px solid var(--border);margin-top:4px;padding-top:8px}#fs-bottom-bar [class$=-action-bar],#fs-bottom-bar [class*=-action-bar\ ]{flex-direction:column;padding:8px 0 0}#fs-bottom-bar .action-btn{justify-content:center;width:100%}@media (max-width:640px){#app #fs-bottom-bar,:root[data-safe-bottom] #app #fs-bottom-bar{height:auto;max-height:42%;display:block;overflow-y:auto}#fs-bottom-bar [data-column=center]{display:none}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{border:0;min-height:auto;overflow:visible}#fs-bottom-bar [data-column=right]{border-top:1px solid var(--border)}body.is-fullscreen #app .oe-stage{padding:8px}}body.is-pip{overflow:hidden}body.is-pip #app{gap:6px;padding:6px 8px}body.is-pip .oe-pip-hide,body.is-pip #param-controls-container,body.is-pip #chart-status,body.is-pip .oe-info-button{display:none!important}body.is-pip #app .pan-zoom-controls{top:6px;right:6px}:root{--on-gold:#0d0802;--shadow:0 4px 20px rgba(0,0,0,.45);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px rgba(0,0,0,.5);--planet-sun:#e9ab2b;--planet-moon:#abb8d2;--planet-mercury:#37b880;--planet-venus:#de73bd;--planet-mars:#dd4d57;--planet-jupiter:#9886ed;--planet-saturn:#589194;--planet-uranus:#24c1c9;--planet-neptune:#2f8adc;--planet-pluto:#a97cc9;--aspect-conjunction:#ffa94d;--aspect-opposition:#ff6b8a;--aspect-trine:#ffd166;--aspect-square:#ff6b8a;--aspect-sextile:#38bdf8;--color-fire:#ec6d3d;--color-earth:#779e4b;--color-air:#17a9cb;--color-water:#8678c9;--color-cardinal:#d9525a;--color-fixed:#cc9c42;--color-mutable:#1da871}@supports (color:color(display-p3 0 0 0)){:root{--on-gold:color(display-p3 .0492866 .0328715 .0111297);--shadow:0 4px 20px color(display-p3 0 0 0/.45);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px color(display-p3 0 0 0/.5);--planet-sun:color(display-p3 .877131 .680603 .28424);--planet-moon:color(display-p3 .679472 .718322 .813586);--planet-mercury:color(display-p3 .376022 .713332 .518194);--planet-venus:color(display-p3 .815343 .471375 .72873);--planet-mars:color(display-p3 .803557 .340931 .357065);--planet-jupiter:color(display-p3 .584642 .526796 .904819);--planet-saturn:color(display-p3 .398313 .564522 .578019);--planet-uranus:color(display-p3 .364235 .746318 .77845);--planet-neptune:color(display-p3 .290256 .532943 .838196);--planet-pluto:color(display-p3 .635092 .494812 .769187);--color-fire:color(display-p3 .864679 .454605 .289251);--color-earth:color(display-p3 .496575 .613452 .334223);--color-air:color(display-p3 .308318 .651825 .781829);--color-water:color(display-p3 .515326 .47381 .767317);--color-cardinal:color(display-p3 .790049 .355864 .367143);--color-fixed:color(display-p3 .76996 .617341 .321369);--color-mutable:color(display-p3 .313719 .651039 .459895)}}@supports (color:lab(0% 0 0)){:root{--on-gold:lab(2.4863% .883393 2.81807);--shadow:0 4px 20px lab(0% 0 0/.45);--shadow-gold:0 0 0 2px var(--gold-glow), 0 6px 24px lab(0% 0 0/.5);--planet-sun:lab(74.5017% 15.8158 68.8514);--planet-moon:lab(74.277% -.405699 -14.8565);--planet-mercury:lab(67.0478% -46.5952 18.3141);--planet-venus:lab(62.9358% 49.4917 -19.8999);--planet-mars:lab(54.0218% 57.6814 26.7913);--planet-jupiter:lab(60.9189% 25.1968 -50.641);--planet-saturn:lab(56.5081% -18.8848 -7.81488);--planet-uranus:lab(71.0008% -37.5682 -15.4301);--planet-neptune:lab(55.2086% -4.94954 -50.4575);--planet-pluto:lab(58.8593% 28.4679 -33.3653);--color-fire:lab(61.5466% 48.3829 50.2676);--color-earth:lab(60.647% -24.5491 38.2386);--color-air:lab(63.473% -27.315 -28.2614);--color-water:lab(54.4132% 19.4196 -40.6625);--color-cardinal:lab(54.1324% 54.4527 25.0799);--color-fixed:lab(67.5798% 11.9379 52.333);--color-mutable:lab(61.2436% -46.7762 18.3644)}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;height:100%}body{background:var(--oe-page-bg);color:var(--text);font-family:var(--font-ui);font-size:13px;line-height:1.5;overflow-x:hidden}#app{flex-direction:column;display:flex;position:relative}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;display:flex}#loading-state[hidden]{display:none}#loading-state p{letter-spacing:.05em;text-transform:uppercase;font-size:12px}.spinner{border:2px solid var(--border-strong);border-top-color:var(--gold);border-radius:50%;width:32px;height:32px;animation:1.1s cubic-bezier(.4,0,.6,1) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#chart-container{width:min(100%, var(--oe-chart-max));aspect-ratio:1;z-index:0;justify-content:center;align-items:center;margin-left:auto;margin-right:auto;padding:8px;display:flex;position:relative;overflow:hidden}#chart-container[hidden]{display:none}#chart-container svg{-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;height:100%;display:block;overflow:hidden}.info-panel,.overview-tbl td{-webkit-user-select:text;-moz-user-select:text;user-select:text}#chart-info{background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:6px 12px;display:flex}#chart-info[hidden]{display:none!important}.info-chip{color:var(--text-secondary);border-radius:var(--radius-pill);white-space:nowrap;letter-spacing:.03em;background:#13161c;background:color(display-p3 .0777944 .086043 .106387);background:lab(7.16788% -.0827834 -4.39059);align-items:center;gap:3px;padding:2px 8px;font-size:10px;font-weight:500;line-height:1.6;display:inline-flex}.info-chip.sect{color:var(--gold);background:var(--gold-subtle);font-weight:600}.hit-region{cursor:pointer;fill:transparent;stroke:transparent;transition:fill .15s,stroke .15s,opacity .2s}.hit-region:hover{fill:var(--gold-subtle);stroke:var(--gold-dim);stroke-width:1px;stroke-opacity:.5}.hit-region.planet-hit{rx:12px;ry:12px}.hit-region.planet-hit:not(.dim):hover{filter:drop-shadow(0 0 6px var(--gold-glow))}.hit-region:focus-visible{outline:2px solid var(--gold);outline-offset:2px;fill:var(--gold-subtle)}.hit-region.dim{opacity:.12}.hit-region.aspect-hit{stroke-width:13px}.hit-region.sign-hit:hover{fill:rgba(204,156,66,.06);fill:color(display-p3 .76996 .617341 .321369/.06);fill:lab(67.5798% 11.9379 52.333/.06);stroke:none}.info-panel{background:var(--surface-2);border:1px solid var(--border-strong);width:100%;box-shadow:0 8px 40px rgba(0,0,0,.6), 0 0 0 1px var(--border-strong);opacity:0;pointer-events:none;z-index:2;border-radius:10px;max-height:0;padding:0 16px;transition:max-height .26s cubic-bezier(.16,1,.3,1),opacity .2s,padding .2s;position:relative;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.info-panel{box-shadow:0 8px 40px color(display-p3 0 0 0/.6), 0 0 0 1px var(--border-strong)}}@supports (color:lab(0% 0 0)){.info-panel{box-shadow:0 8px 40px lab(0% 0 0/.6), 0 0 0 1px var(--border-strong)}}.info-panel:before{content:"";background:var(--border-strong);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:0 auto 10px;display:block}.info-panel.visible{opacity:1;pointer-events:all;max-height:520px;padding:14px 16px 12px}.info-header{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.info-glyph{text-align:center;flex-shrink:0;width:34px;font-size:28px;line-height:1}.info-title{color:var(--text);flex:1;font-size:13px;font-weight:700}.info-name-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.info-pos{color:var(--text-secondary);font-size:11px;font-weight:400;font-family:var(--font-code);margin-top:2px}.retro{color:var(--error);font-style:normal}.info-close{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .12s}.info-close:hover{color:var(--text)}.aspects-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);margin-bottom:6px;font-size:10px;font-weight:700}.aspects-list{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;max-height:140px;display:flex;overflow-y:auto}.aspects-list::-webkit-scrollbar{width:3px}.aspects-list::-webkit-scrollbar-track{background:0 0}.aspects-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.aspect-row{align-items:center;gap:7px;padding:3px 0;font-size:12px;display:flex}.aspect-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.aspect-sym{text-align:center;flex-shrink:0;width:16px;font-size:14px}.aspect-other{color:var(--text);flex:1}.aspect-meta{color:var(--text-secondary);white-space:nowrap;font-size:11px;font-family:var(--font-code)}.no-aspects{color:var(--text-secondary);padding:4px 0;font-size:11px;font-style:italic}.info-hint{color:var(--gold-dim);letter-spacing:.03em;text-align:center;margin-top:10px;font-size:10px}.ask-claude-btn{border-radius:var(--radius-sm);width:100%;color:var(--gold);font-family:var(--font-ui);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding:9px 16px;font-size:12px;font-weight:600;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.ask-claude-btn:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65);box-shadow:0 0 0 3px rgba(204,156,66,.12);box-shadow:0 0 0 3px color(display-p3 .76996 .617341 .321369/.12);box-shadow:0 0 0 3px lab(67.5798% 11.9379 52.333/.12)}.ask-claude-btn:disabled{opacity:.5;cursor:not-allowed}.ask-claude-btn.sending{color:var(--gold-dim);opacity:.8;cursor:wait;pointer-events:none;background:rgba(204,156,66,.08);background:color(display-p3 .76996 .617341 .321369/.08);background:lab(67.5798% 11.9379 52.333/.08);border-color:rgba(204,156,66,.25);border-color:color(display-p3 .76996 .617341 .321369/.25);border-color:lab(67.5798% 11.9379 52.333/.25)}.ask-claude-btn.sent{color:var(--success);pointer-events:none;background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border-color:rgba(29,168,113,.5);border-color:color(display-p3 .313719 .651039 .459895/.5);border-color:lab(61.2436% -46.7762 18.3644/.5)}.ask-claude-btn.error{color:var(--error);background:rgba(197,52,67,.15);background:color(display-p3 .710345 .252818 .279408/.15);background:lab(45.8893% 57.7361 27.393/.15);border-color:rgba(197,52,67,.5);border-color:color(display-p3 .710345 .252818 .279408/.5);border-color:lab(45.8893% 57.7361 27.393/.5)}.chart-status{min-height:0;max-height:0;color:var(--gold);letter-spacing:.04em;opacity:0;background:var(--surface);border-top:1px solid var(--border);padding:0 14px;font-size:11px;font-weight:500;transition:max-height .24s cubic-bezier(.16,1,.3,1),padding .24s cubic-bezier(.16,1,.3,1),opacity .24s;overflow:hidden}.chart-status[data-active]{opacity:1;max-height:32px;padding:6px 14px}.aspect-pair-row{justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.aspect-pair-planet{flex:1;align-items:center;gap:6px;display:flex}.aspect-pair-glyph{text-align:center;flex-shrink:0;width:24px;font-size:18px;line-height:1}.aspect-pair-name{color:var(--text);font-size:12px;font-weight:600}.aspect-pair-pos{color:var(--text-secondary);font-size:10px;font-family:var(--font-code);margin-top:1px}.aspect-pair-sym{text-align:center;flex-shrink:0;width:24px;font-size:20px}.pattern-ask-claude-btn{border-radius:var(--radius-pill);color:var(--gold);font-family:var(--font-ui);letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1);border:1px solid rgba(204,156,66,.35);border:1px solid color(display-p3 .76996 .617341 .321369/.35);border:1px solid lab(67.5798% 11.9379 52.333/.35);flex-shrink:0;margin-left:6px;padding:3px 10px;font-size:10px;font-weight:600;transition:background .15s,border-color .15s,box-shadow .15s}.pattern-ask-claude-btn:hover{background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);box-shadow:0 0 0 2px rgba(204,156,66,.1);box-shadow:0 0 0 2px color(display-p3 .76996 .617341 .321369/.1);box-shadow:0 0 0 2px lab(67.5798% 11.9379 52.333/.1)}.pattern-ask-claude-btn:disabled{opacity:.45;cursor:default}.dignity-badge{border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;line-height:1.6;display:inline-flex}.dignity-domicile{color:#4bc98f;color:color(display-p3 .438181 .776546 .577613);color:lab(72.8515% -46.4433 18.272);background:rgba(29,168,113,.15);background:color(display-p3 .313719 .651039 .459895/.15);background:lab(61.2436% -46.7762 18.3644/.15);border:1px solid rgba(29,168,113,.4);border:1px solid color(display-p3 .313719 .651039 .459895/.4);border:1px solid lab(61.2436% -46.7762 18.3644/.4)}.dignity-exaltation{color:#e6b55d;color:color(display-p3 .872302 .716587 .419329);color:lab(76.888% 11.458 50.9953);background:rgba(204,156,66,.15);background:color(display-p3 .76996 .617341 .321369/.15);background:lab(67.5798% 11.9379 52.333/.15);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4)}.dignity-detriment{color:#e17174;color:color(display-p3 .827266 .46738 .465289);color:lab(61.4259% 44.7499 19.9857);background:rgba(197,52,67,.12);background:color(display-p3 .710345 .252818 .279408/.12);background:lab(45.8893% 57.7361 27.393/.12);border:1px solid rgba(197,52,67,.35);border:1px solid color(display-p3 .710345 .252818 .279408/.35);border:1px solid lab(45.8893% 57.7361 27.393/.35)}.dignity-fall{color:#7a869f;color:color(display-p3 .488637 .525017 .615022);color:lab(55.7075% -.240624 -14.7889);background:rgba(88,99,123,.12);background:color(display-p3 .353624 .387759 .473149/.12);background:lab(41.7762% -.0450611 -14.7162/.12);border:1px solid rgba(88,99,123,.3);border:1px solid color(display-p3 .353624 .387759 .473149/.3);border:1px solid lab(41.7762% -.0450611 -14.7162/.3)}#tally-panel{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:8px;padding:5px 12px;display:flex}.tally-section{flex-direction:column;gap:3px;display:flex}.tally-row{align-items:center;gap:6px;display:flex}.tally-item{white-space:nowrap;letter-spacing:.02em;border-radius:4px;padding:1px 6px;font-size:10px;font-weight:600}.tally-item.fire{color:var(--color-fire);background:rgba(236,109,61,.12);background:color(display-p3 .864679 .454605 .289251/.12);background:lab(61.5466% 48.3829 50.2676/.12)}.tally-item.earth{color:var(--color-earth);background:rgba(119,158,75,.12);background:color(display-p3 .496575 .613452 .334223/.12);background:lab(60.647% -24.5491 38.2386/.12)}.tally-item.air{color:var(--color-air);background:rgba(23,169,203,.12);background:color(display-p3 .308318 .651825 .781829/.12);background:lab(63.473% -27.315 -28.2614/.12)}.tally-item.water{color:var(--color-water);background:rgba(134,120,201,.12);background:color(display-p3 .515326 .47381 .767317/.12);background:lab(54.4132% 19.4196 -40.6625/.12)}.tally-item.cardinal{color:var(--color-cardinal);background:rgba(217,82,90,.1);background:color(display-p3 .790049 .355864 .367143/.1);background:lab(54.1324% 54.4527 25.0799/.1)}.tally-item.fixed{color:var(--color-fixed);background:rgba(204,156,66,.1);background:color(display-p3 .76996 .617341 .321369/.1);background:lab(67.5798% 11.9379 52.333/.1)}.tally-item.mutable{color:var(--color-mutable);background:rgba(29,168,113,.1);background:color(display-p3 .313719 .651039 .459895/.1);background:lab(61.2436% -46.7762 18.3644/.1)}.tally-bar-row{padding:2px 0}.tally-bar{background:var(--border);border-radius:2px;width:96px;height:3px;display:flex;overflow:hidden}.tally-bar-fill{height:100%;transition:width .5s cubic-bezier(.16,1,.3,1)}.tally-bar-fill.fire{background:var(--color-fire)}.tally-bar-fill.earth{background:var(--color-earth)}.tally-bar-fill.air{background:var(--color-air)}.tally-bar-fill.water{background:var(--color-water)}.tally-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:26px}.tally-item[data-interactive]{cursor:pointer;transition:opacity .14s,box-shadow .14s,background .14s}.tally-item[data-interactive]:hover,.tally-item[data-interactive].active{opacity:1;box-shadow:0 0 0 2px}.tally-planets{flex-wrap:wrap;gap:3px;padding:2px 0 0;display:flex}.tally-planet-chip{color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:rgba(255,255,255,.05);background:color(display-p3 1 1 1/.05);background:lab(100% 0 0/.05);border-radius:3px;padding:0 4px;font-size:9px;font-weight:500;transition:color .12s,background .12s}.tally-planet-chip:hover{color:var(--gold);background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12)}#dignity-panel{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:4px 12px;display:flex}.dignity-chip{cursor:pointer;white-space:nowrap;border-radius:4px;align-items:center;gap:3px;padding:1px 7px;font-size:10px;font-weight:600;transition:opacity .14s,box-shadow .14s;display:inline-flex}.dignity-chip:hover{opacity:1;box-shadow:0 0 0 2px}.dignity-chip.active{box-shadow:0 0 0 2px}#overview-table{border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.overview-header{align-items:center;display:flex}.overview-header .overview-toggle{flex:auto;width:auto}.overview-copy{border:1px solid var(--border);color:var(--text-secondary);font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.08em;border-radius:var(--radius-sm,6px);cursor:pointer;background:0 0;flex-shrink:0;margin-right:8px;padding:3px 10px;font-size:10px;font-weight:700;transition:color .14s,border-color .14s}.overview-copy:hover,.overview-copy.copied{color:var(--gold);border-color:var(--gold)}.overview-toggle{width:100%;color:var(--text-secondary);font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.1em;cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:6px 12px;font-size:10px;font-weight:700;transition:color .14s;display:flex}.overview-toggle:hover{color:var(--gold)}.overview-chevron{font-size:8px;transition:transform .2s}.overview-toggle[aria-expanded=true] .overview-chevron{transform:rotate(90deg)}.overview-body{grid-template-rows:0fr;transition:grid-template-rows .28s cubic-bezier(.16,1,.3,1);display:grid;overflow:hidden}.overview-body>*{min-height:0}.overview-body.open{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;grid-template-rows:1fr;max-height:300px;overflow-x:hidden;overflow-y:auto}.overview-tbl{border-collapse:collapse;width:100%;font-size:11px}.overview-tbl th{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);text-align:left;border-bottom:1px solid var(--border);background:var(--surface);padding:3px 8px;font-size:9px;font-weight:700;position:-webkit-sticky;position:sticky;top:0}.overview-tbl td{color:var(--text);border-bottom:1px solid rgba(255,255,255,.04);border-bottom:1px solid color(display-p3 1 1 1/.04);border-bottom:1px solid lab(100% 0 0/.04);padding:4px 8px}.overview-tbl tr{cursor:pointer;transition:background .12s}.overview-tbl tbody tr:hover{background:rgba(204,156,66,.06);background:color(display-p3 .76996 .617341 .321369/.06);background:lab(67.5798% 11.9379 52.333/.06)}.overview-tbl tbody tr.active-row{background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12)}.overview-tbl tbody tr.extended-row{opacity:.72}.overview-tbl tbody tr.extended-row td:first-child:after{content:" ·";color:var(--text-secondary);font-size:8px}.overview-tbl .planet-sym{text-align:center;width:20px;font-family:serif;font-size:14px;display:inline-block}.overview-tbl .retro-mark{color:#e05252;margin-left:2px;font-size:9px}#patterns-strip{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:5px;padding:5px 12px;display:flex}.patterns-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-secondary);white-space:nowrap;margin-right:2px;font-size:9px;font-weight:700}.pattern-pill{border-radius:var(--radius-pill);font-size:10px;font-weight:600;font-family:var(--font-ui);cursor:pointer;white-space:nowrap;opacity:.75;background:0 0;border:1px solid;align-items:center;gap:4px;padding:5px 9px;transition:opacity .14s,box-shadow .14s;display:inline-flex}.pattern-pill:hover{opacity:1;box-shadow:0 0 0 2px currentColor / .2}.pattern-pill.active{color:#010203;color:color(display-p3 .00515318 .00655345 .0110262);color:lab(.455387% .00626594 -.517511);opacity:1;border-color:transparent;box-shadow:0 2px 10px rgba(0,0,0,.3);box-shadow:0 2px 10px color(display-p3 0 0 0/.3);box-shadow:0 2px 10px lab(0% 0 0/.3)}#aspect-filter{border-top:1px solid var(--border);scrollbar-width:none;flex-shrink:0;align-items:center;gap:4px;padding:4px 12px;display:flex;overflow-x:auto}#aspect-filter::-webkit-scrollbar{display:none}#aspect-filter[hidden]{display:none!important}#controls-panel{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;display:flex}.controls-label{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;margin-right:2px;font-size:10px;font-weight:700}.control-btn{border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:11px;font-family:var(--font-ui);white-space:nowrap;background:0 0;padding:6px 10px;transition:background .12s,color .12s,border-color .12s}.control-btn:hover{background:var(--gold-subtle);color:var(--gold);border-color:rgba(204,156,66,.4);border-color:color(display-p3 .76996 .617341 .321369/.4);border-color:lab(67.5798% 11.9379 52.333/.4)}.control-btn.active{color:var(--gold);background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.6);border-color:color(display-p3 .76996 .617341 .321369/.6);border-color:lab(67.5798% 11.9379 52.333/.6);font-weight:600}.controls-divider{background:var(--border-strong);flex-shrink:0;width:1px;height:18px;margin:0 4px}.error-state{text-align:center;color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.error-state .error-icon{opacity:.6;margin-bottom:4px;font-size:28px}.error-retry-btn{border:1px solid var(--border,rgba(128,128,160,.3));color:var(--gold,var(--accent-warm,var(--text,inherit)));font:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border-radius:999px;margin-top:4px;padding:7px 20px;font-size:11px;font-weight:600;transition:background .18s,border-color .18s}.error-retry-btn:hover{background:rgba(128,128,160,.12)}.info-drawer{background:var(--surface-2,#080b11);border:1px solid var(--border-strong,#242933);width:100%;box-shadow:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong,#242933);opacity:0;pointer-events:none;border-radius:10px;max-height:0;padding:14px 16px 12px;transition:max-height .26s cubic-bezier(.16,1,.3,1),opacity .2s,padding .2s;position:relative;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.info-drawer{background:var(--surface-2,color(display-p3 .0345774 .0431759 .0653236));border:1px solid var(--border-strong,color(display-p3 .144788 .159634 .196542));box-shadow:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong,color(display-p3 .144788 .159634 .196542))}}@supports (color:lab(0% 0 0)){.info-drawer{background:var(--surface-2,lab(3.00584% .0228807 -3.15676));border:1px solid var(--border-strong,lab(16.3712% -.0768155 -7.37782));box-shadow:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong,lab(16.3712% -.0768155 -7.37782))}}.info-drawer:before{content:"";background:var(--border-strong,#242933);border-radius:2px;flex-shrink:0;width:36px;height:4px;margin:0 auto 10px;display:block}@supports (color:color(display-p3 0 0 0)){.info-drawer:before{background:var(--border-strong,color(display-p3 .144788 .159634 .196542))}}@supports (color:lab(0% 0 0)){.info-drawer:before{background:var(--border-strong,lab(16.3712% -.0768155 -7.37782))}}.info-drawer.open{opacity:1;pointer-events:all;max-height:500px;padding:14px 16px 12px}.hd-action-bar{z-index:2;background:var(--bg);flex-wrap:wrap;gap:8px;padding:10px 16px 6px;display:flex;position:relative}.action-btn{border:1px solid var(--gold-glow);background:var(--gold-subtle);color:var(--gold);letter-spacing:.02em;cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.action-btn:hover{background:rgba(204,156,66,.15);background:color(display-p3 .76996 .617341 .321369/.15);background:lab(67.5798% 11.9379 52.333/.15);border-color:rgba(204,156,66,.45);border-color:color(display-p3 .76996 .617341 .321369/.45);border-color:lab(67.5798% 11.9379 52.333/.45)}.action-btn:active{background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2)}.action-btn--primary{background:rgba(204,156,66,.18);background:color(display-p3 .76996 .617341 .321369/.18);background:lab(67.5798% 11.9379 52.333/.18);border-color:rgba(204,156,66,.5);border-color:color(display-p3 .76996 .617341 .321369/.5);border-color:lab(67.5798% 11.9379 52.333/.5)}.action-btn--primary:hover{background:rgba(204,156,66,.25);background:color(display-p3 .76996 .617341 .321369/.25);background:lab(67.5798% 11.9379 52.333/.25);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.pan-zoom-controls{z-index:800;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:12px;right:12px}.pan-zoom-controls[hidden]{display:none!important}@media (min-width:680px){body:not(.is-fullscreen):not(.is-pip) #chart-container{overflow:visible}body:not(.is-fullscreen):not(.is-pip) #chart-container>.pan-zoom-controls{right:-60px}}.pan-btn{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;width:40px;height:40px;box-shadow:var(--oe-shadow-md);justify-content:center;align-items:center;font-family:inherit;font-size:18px;transition:all .15s;display:flex}.pan-btn.reset{width:auto;padding:0 10px;font-size:11px;font-weight:500}.pan-btn:hover{background:var(--surface);border-color:var(--gold-dim);color:var(--gold)}.pan-btn:active{transform:scale(.95)}.pan-btn--fullscreen{width:40px;height:40px}body.is-fullscreen #chart-status{display:none}.cancel-toast{background:var(--surface-2,#1e1e2e);border:1px solid var(--border-strong,#444);color:var(--text-secondary);border-radius:var(--radius-sm,6px);opacity:0;z-index:9999;pointer-events:none;box-shadow:var(--oe-shadow-md,0 4px 12px rgba(0,0,0,.3));padding:8px 16px;font-family:inherit;font-size:12px;transition:opacity .3s,transform .3s;position:fixed;bottom:20px;left:50%;transform:translate(-50%)translateY(20px)}.cancel-toast.visible{opacity:1;transform:translate(-50%)translateY(0)}.oe-loader{width:64px;height:64px;stroke:var(--gold);stroke-width:2px;fill:none;stroke-dasharray:200;stroke-dashoffset:200px;filter:drop-shadow(0 0 4px var(--gold-glow));animation:2.5s cubic-bezier(.16,1,.3,1) infinite oe-draw}@keyframes oe-draw{0%{stroke-dashoffset:200px;stroke-opacity:.1}50%{stroke-dashoffset:0;stroke-opacity:1;filter:drop-shadow(0 0 8px var(--gold))}to{stroke-dashoffset:-200px;stroke-opacity:.1}}#aspect-filter{padding:0}.asp-panel{flex-wrap:wrap;align-items:center;gap:6px 16px;padding:6px 0;display:flex}.asp-section{align-items:center;gap:6px;display:flex}.asp-section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);white-space:nowrap;font-size:10px;font-weight:700}.aspect-toggle-btn,.orb-preset-btn{border:1.5px solid var(--border-strong);color:var(--text-secondary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:20px;padding:4px 10px;font-size:11px;font-weight:600;transition:background .15s,color .15s,border-color .15s}.aspect-toggle-btn:hover,.orb-preset-btn:hover{border-color:var(--gold-dim);color:var(--text)}.aspect-toggle-btn.active{background:var(--gold);border-color:var(--gold);color:var(--on-gold)}.orb-preset-btn.active{background:var(--surface-2);border-color:var(--gold);color:var(--gold)}.glyph-legend{margin-top:8px;font-size:11px}.glyph-legend>summary{cursor:pointer;border:1px solid var(--border);color:var(--text-secondary);-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;list-style:none;display:inline-flex}.glyph-legend>summary::-webkit-details-marker{display:none}.glyph-legend>summary:hover{color:var(--text);border-color:var(--gold-dim)}.glyph-legend[open]>summary{color:var(--text)}.glyph-legend .legend-spark{color:var(--gold)}.legend-body{flex-direction:column;gap:10px;padding:10px 2px 2px;display:flex}.legend-group{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.legend-group-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);width:100%;font-size:9px}.legend-item{color:var(--text-secondary);align-items:center;gap:4px;display:inline-flex}.legend-glyph{color:var(--text);text-align:center;min-width:16px;font-size:14px}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.tooltip{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;border-radius:var(--radius,10px);pointer-events:none;z-index:1000;opacity:0;background:rgba(12,12,22,.97);border:1px solid rgba(60,58,80,.8);max-width:240px;padding:8px 12px;font-size:12px;transition:opacity .12s;position:fixed;box-shadow:0 8px 32px rgba(0,0,0,.55),inset 0 .5px rgba(255,255,255,.04)}.tooltip.visible{opacity:1}.tooltip-title{color:#e8e8f4;margin-bottom:2px;font-weight:700}.tooltip-detail{color:#9090b0;line-height:1.4}.tooltip-hint{color:#a08840;letter-spacing:.03em;margin-top:4px;font-size:10px}:root[data-theme=light]{--aspect-conjunction:#b45d00;--aspect-opposition:#b42318;--aspect-trine:#8f6a00;--aspect-square:#b42318;--aspect-sextile:#0c6e94;--bg:#f7f5f1;--surface:#fff;--surface-2:#f1eee9;--border:#dbd7d0;--border-strong:#bdb6ac;--text:#101215;--text-secondary:#4f5359;--gold:#825700;--gold-dim:#6d4b00;--gold-glow:rgba(130,87,0,.25);--gold-subtle:rgba(130,87,0,.1);--on-gold:#fcf4e6;--success:#007145;--error:#b1002b;--shadow:0 4px 20px rgba(0,0,0,.1);--oe-shadow-md:0 8px 32px rgba(0,0,0,.14), 0 0 0 1px var(--border-strong)}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--bg:color(display-p3 .967616 .959866 .945308);--surface:color(display-p3 1 1 1);--surface-2:color(display-p3 .943798 .93351 .914195);--border:color(display-p3 .855616 .842987 .819292);--border-strong:color(display-p3 .73602 .716348 .67952);--text:color(display-p3 .0633107 .0687189 .081922);--text-secondary:color(display-p3 .313002 .323251 .348016);--gold:color(display-p3 .49809 .342102 -.0880434);--gold-dim:color(display-p3 .414099 .299019 .034461);--gold-glow:color(display-p3 .49809 .342102 -.0880434/.25);--gold-subtle:color(display-p3 .49809 .342102 -.0880434/.1);--on-gold:color(display-p3 .983924 .957955 .909341);--success:color(display-p3 -.0793084 .456092 .255685);--error:color(display-p3 .642198 .101724 .18242);--shadow:0 4px 20px color(display-p3 0 0 0/.1);--oe-shadow-md:0 8px 32px color(display-p3 0 0 0/.14), 0 0 0 1px var(--border-strong)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg:lab(96.5376% .34079 2.2589);--surface:lab(100% 0 0);--surface-2:lab(94.2232% .459701 3.01524);--border:lab(86.1085% .583261 3.77473);--border-strong:lab(74.5232% .975847 6.06879);--text:lab(5.23809% -.0738502 -2.43738);--text-secondary:lab(34.9842% -.210062 -4.49808);--gold:lab(40.7346% 15.7445 75.3139);--gold-dim:lab(35.0077% 11.3181 50.9422);--gold-glow:lab(40.7346% 15.7445 75.3139/.25);--gold-subtle:lab(40.7346% 15.7445 75.3139/.1);--on-gold:lab(96.574% 1.22041 7.58642);--success:lab(41.7514% -55.3249 21.5039);--error:lab(37.5238% 64.2774 32.6097);--shadow:0 4px 20px lab(0% 0 0/.1);--oe-shadow-md:0 8px 32px lab(0% 0 0/.14), 0 0 0 1px var(--border-strong)}}:root[data-theme=light],:root[data-theme=light] body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-image:none}:root[data-theme=light] .hd-action-bar{background:var(--bg)}:root[data-theme=light] .info-chip{background:var(--surface-2);color:var(--text-secondary);border:1px solid var(--border)}:root[data-theme=light] .info-chip.sect{background:var(--gold-subtle);color:var(--gold);border-color:rgba(141,95,0,.3);border-color:color(display-p3 .542549 .371783 -.107551/.3);border-color:lab(44.1995% 17.0662 84.3373/.3)}:root[data-theme=light] .tooltip{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);border-color:var(--border-strong);background:rgba(255,255,255,.96);background:color(display-p3 1 1 1/.96);background:lab(100% 0 0/.96);box-shadow:0 8px 32px rgba(0,0,0,.18),inset 0 .5px rgba(255,255,255,.6);box-shadow:0 8px 32px color(display-p3 0 0 0/.18),inset 0 .5px color(display-p3 1 1 1/.6);box-shadow:0 8px 32px lab(0% 0 0/.18),inset 0 .5px lab(100% 0 0/.6)}:root[data-theme=light] .tooltip-title{color:var(--text)}:root[data-theme=light] .tooltip-detail{color:var(--text-secondary)}:root[data-theme=light] .tooltip-hint{color:var(--gold-dim)}:root[data-theme=light] .chart-status{background:rgba(247,245,241,.92);background:color(display-p3 .967616 .959866 .945308/.92);background:lab(96.5376% .34079 2.2589/.92);border-color:rgba(141,95,0,.35);border-color:color(display-p3 .542549 .371783 -.107551/.35);border-color:lab(44.1995% 17.0662 84.3373/.35)}:root[data-theme=light] .hit-region:hover{fill:rgba(141,95,0,.1);fill:color(display-p3 .542549 .371783 -.107551/.1);fill:lab(44.1995% 17.0662 84.3373/.1);stroke:var(--gold-dim)}:root[data-theme=light] .hit-region.sign-hit:hover{fill:rgba(141,95,0,.07);fill:color(display-p3 .542549 .371783 -.107551/.07);fill:lab(44.1995% 17.0662 84.3373/.07)}:root[data-theme=light] .pan-btn{background:var(--surface)}:root[data-theme=light] .pan-btn:hover{background:var(--surface-2)}@media (max-width:480px){body,#app{padding:0}#pan-zoom-controls{flex-wrap:wrap;gap:5px}.pan-btn{background:color-mix(in oklab, var(--surface-2) 72%, transparent);-webkit-backdrop-filter:blur(6px);width:32px;min-width:32px;height:32px;min-height:32px;font-size:15px}.pan-btn.reset{width:32px;padding:0;font-size:0}.pan-btn.reset:before{content:"⟲";font-size:15px}#date-controls,.controls,.control-row{flex-wrap:wrap;gap:8px}}.param-controls{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:6px 12px}.param-controls-grid{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.param-group{flex-direction:row;align-items:center;gap:6px;display:flex}.param-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:700}.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);color-scheme:inherit;border-radius:var(--radius-sm);width:120px;height:24px;padding:3px 6px;font-family:inherit;font-size:11px}@media (prefers-reduced-motion:no-preference){.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{transition:border-color .15s}}.param-group input:focus{border-color:var(--gold-dim);outline:none}.loc-searching{border-color:var(--gold-dim)!important}@media (prefers-reduced-motion:no-preference){.loc-searching{animation:1s ease-in-out infinite alternate loc-pulse}}@keyframes loc-pulse{0%{border-color:var(--gold-dim)}to{border-color:rgba(204,156,66,.55);border-color:color(display-p3 .76996 .617341 .321369/.55);border-color:lab(67.5798% 11.9379 52.333/.55)}}.param-group-loc{flex:1;position:relative}.param-group-loc input{width:100%}.loc-suggestions{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);z-index:100;max-height:200px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.35);box-shadow:0 4px 12px color(display-p3 0 0 0/.35);box-shadow:0 4px 12px lab(0% 0 0/.35)}.loc-item{color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;overflow:hidden}.loc-item:last-child{border-bottom:none}@media (prefers-reduced-motion:no-preference){.loc-item{transition:background .1s,color .1s}}.loc-item:hover,.loc-item--active{background:var(--gold-subtle);color:var(--gold)}.loc-status{color:var(--text-secondary);letter-spacing:.01em;padding:8px 10px;font-size:11px;font-style:italic}.loc-status-error{color:#d76a5a;color:color(display-p3 .788241 .439621 .373983);color:lab(58.1265% 42.6447 29.9439);font-style:normal;font-weight:600}.param-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.param-cost-hint{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;font-size:10px}.param-btn-icon{border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}@media (prefers-reduced-motion:no-preference){.param-btn-icon{transition:background .15s,border-color .15s,color .15s}}.param-btn-icon:hover{background:var(--surface-2);color:var(--text);border-color:var(--gold-dim)}.param-btn-primary{color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);height:24px;padding:3px 10px;font-family:inherit;font-size:10px;font-weight:600}@media (prefers-reduced-motion:no-preference){.param-btn-primary{transition:background .15s,border-color .15s}}.param-btn-primary:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.param-btn-primary:disabled{opacity:.5;cursor:not-allowed}.param-extra-toggle{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;cursor:pointer;align-items:center;gap:5px;font-size:10px;display:flex}.param-extra-toggle input[type=checkbox]{width:13px;height:13px;accent-color:var(--gold,oklch(72% .12 80));cursor:pointer}.param-extra-toggle input[type=checkbox]:disabled{cursor:not-allowed}.param-extra-toggle input[type=checkbox]:disabled~span{opacity:.5}:root[data-theme=light] .param-group input[type=date],:root[data-theme=light] .param-group input[type=time],:root[data-theme=light] .param-group input[type=text]{border-color:var(--border-strong);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167638 1.12768)}:root[data-theme=light] .loc-suggestions{border-color:var(--border-strong);background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167638 1.12768)}:root[data-theme=light] .param-btn-primary{background:rgba(160,112,0,.12);background:color(display-p3 .615135 .441554 -.0204711/.12);background:lab(51.2092% 16.2654 78.3504/.12);border-color:rgba(160,112,0,.4);border-color:color(display-p3 .615135 .441554 -.0204711/.4);border-color:lab(51.2092% 16.2654 78.3504/.4)}:root[data-theme=light] .param-btn-primary:hover:not(:disabled){background:rgba(160,112,0,.22);background:color(display-p3 .615135 .441554 -.0204711/.22);background:lab(51.2092% 16.2654 78.3504/.22);border-color:rgba(160,112,0,.65);border-color:color(display-p3 .615135 .441554 -.0204711/.65);border-color:lab(51.2092% 16.2654 78.3504/.65)}.param-summary-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:2px 0;margin-bottom:4px;padding:3px 4px 5px;font-size:10px;line-height:1.3;display:flex}.param-summary-bar[hidden]{display:none}.summary-name{color:var(--gold,#d6a54d);letter-spacing:.01em;padding-right:2px;font-size:12px;font-weight:700}@supports (color:color(display-p3 0 0 0)){.summary-name{color:var(--gold,color(display-p3 .808073 .654274 .358094))}}@supports (color:lab(0% 0 0)){.summary-name{color:var(--gold,lab(71.071% 11.7474 51.7651))}}.summary-datetime{font-family:var(--font-code,ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--text-secondary);align-items:baseline;gap:4px;font-size:11px;display:inline-flex}.summary-time-sep{color:var(--border-strong);opacity:.7;font-family:inherit;font-size:9px}.summary-loc{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;padding-left:2px;font-size:11px;font-style:italic;overflow:hidden}.summary-sep{background:var(--border-strong);opacity:.5;vertical-align:middle;flex-shrink:0;width:1px;height:11px;margin:0 7px;display:inline-block}
14
14
  /*$vite$:1*/</style>
15
15
  </head>
16
16
  <body>
@@ -19,7 +19,7 @@
19
19
  <svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
20
20
  <p>Mapping the sky at your birth moment…</p>
21
21
  </div>
22
- <div id="chart-container" hidden>
22
+ <div id="chart-container" class="oe-stage" hidden>
23
23
  <div id="pan-zoom-controls" class="pan-zoom-controls" hidden>
24
24
  <button id="btn-zoom-in" class="pan-btn" aria-label="Zoom in">+</button>
25
25
  <button id="btn-zoom-out" class="pan-btn" aria-label="Zoom out">-</button>
@@ -128,7 +128,7 @@ var l = /* @__PURE__ */ Symbol("zod_brand"), u = class extends Error {
128
128
  function p(e5) {
129
129
  return e5 && Object.assign(f, e5), f;
130
130
  }
131
- var m = t({ BIGINT_FORMAT_RANGES: () => Te, Class: () => qe, NUMBER_FORMAT_RANGES: () => we, aborted: () => Ne, allowsEval: () => pe, assert: () => ee, assertEqual: () => h, assertIs: () => _, assertNever: () => v, assertNotEqual: () => g, assignProp: () => E, base64ToUint8Array: () => Ve, base64urlToUint8Array: () => Ue, cached: () => S, captureStackTrace: () => de, cleanEnum: () => Be, cleanRegex: () => w, clone: () => xe, cloneDef: () => ae, createTransparentProxy: () => Se, defineLazy: () => T, esc: () => le, escapeRegex: () => be, extend: () => Oe, finalizeIssue: () => Ie, floatSafeRemainder: () => te, getElementAtPath: () => oe, getEnumValues: () => y, getLengthableOrigin: () => Re, getParsedType: () => _e, getSizableOrigin: () => Le, hexToUint8Array: () => Ge, isObject: () => fe, isPlainObject: () => me, issue: () => ze, joinValues: () => b, jsonStringifyReplacer: () => x, merge: () => Ae, mergeDefs: () => ie, normalizeParams: () => D, nullish: () => C, numKeys: () => ge, objectClone: () => re, omit: () => De, optionalKeys: () => Ce, parsedType: () => k, partial: () => je, pick: () => Ee, prefixIssues: () => Pe, primitiveTypes: () => ye, promiseAllObject: () => se, propertyKeyTypes: () => ve, randomString: () => ce, required: () => Me, safeExtend: () => ke, shallowClone: () => he, slugify: () => ue, stringifyPrimitive: () => O, uint8ArrayToBase64: () => He, uint8ArrayToBase64url: () => We, uint8ArrayToHex: () => Ke, unwrapMessage: () => Fe });
131
+ var m = t({ BIGINT_FORMAT_RANGES: () => Te, Class: () => qe, NUMBER_FORMAT_RANGES: () => we, aborted: () => Ne, allowsEval: () => pe, assert: () => ee, assertEqual: () => h, assertIs: () => _, assertNever: () => v, assertNotEqual: () => g, assignProp: () => T, base64ToUint8Array: () => Ve, base64urlToUint8Array: () => Ue, cached: () => te, captureStackTrace: () => de, cleanEnum: () => Be, cleanRegex: () => C, clone: () => xe, cloneDef: () => ae, createTransparentProxy: () => Se, defineLazy: () => w, esc: () => le, escapeRegex: () => be, extend: () => Oe, finalizeIssue: () => Ie, floatSafeRemainder: () => ne, getElementAtPath: () => oe, getEnumValues: () => y, getLengthableOrigin: () => Re, getParsedType: () => _e, getSizableOrigin: () => Le, hexToUint8Array: () => Ge, isObject: () => fe, isPlainObject: () => me, issue: () => ze, joinValues: () => b, jsonStringifyReplacer: () => x, merge: () => Ae, mergeDefs: () => E, normalizeParams: () => D, nullish: () => S, numKeys: () => ge, objectClone: () => ie, omit: () => De, optionalKeys: () => Ce, parsedType: () => k, partial: () => je, pick: () => Ee, prefixIssues: () => Pe, primitiveTypes: () => ye, promiseAllObject: () => se, propertyKeyTypes: () => ve, randomString: () => ce, required: () => Me, safeExtend: () => ke, shallowClone: () => he, slugify: () => ue, stringifyPrimitive: () => O, uint8ArrayToBase64: () => He, uint8ArrayToBase64url: () => We, uint8ArrayToHex: () => Ke, unwrapMessage: () => Fe });
132
132
  function h(e5) {
133
133
  return e5;
134
134
  }
@@ -152,7 +152,7 @@ function b(e5, t2 = "|") {
152
152
  function x(e5, t2) {
153
153
  return typeof t2 == "bigint" ? t2.toString() : t2;
154
154
  }
155
- function S(e5) {
155
+ function te(e5) {
156
156
  return { get value() {
157
157
  {
158
158
  let t2 = e5();
@@ -161,14 +161,14 @@ function S(e5) {
161
161
  throw Error("cached value already set");
162
162
  } };
163
163
  }
164
- function C(e5) {
164
+ function S(e5) {
165
165
  return e5 == null;
166
166
  }
167
- function w(e5) {
167
+ function C(e5) {
168
168
  let t2 = +!!e5.startsWith("^"), n2 = e5.endsWith("$") ? e5.length - 1 : e5.length;
169
169
  return e5.slice(t2, n2);
170
170
  }
171
- function te(e5, t2) {
171
+ function ne(e5, t2) {
172
172
  let n2 = (e5.toString().split(".")[1] || "").length, r2 = t2.toString(), i2 = (r2.split(".")[1] || "").length;
173
173
  if (i2 === 0 && /\d?e-\d?/.test(r2)) {
174
174
  let e6 = r2.match(/\d?e-(\d?)/);
@@ -177,28 +177,28 @@ function te(e5, t2) {
177
177
  let a2 = n2 > i2 ? n2 : i2;
178
178
  return Number.parseInt(e5.toFixed(a2).replace(".", "")) % Number.parseInt(t2.toFixed(a2).replace(".", "")) / 10 ** a2;
179
179
  }
180
- var ne = /* @__PURE__ */ Symbol("evaluating");
181
- function T(e5, t2, n2) {
180
+ var re = /* @__PURE__ */ Symbol("evaluating");
181
+ function w(e5, t2, n2) {
182
182
  let r2;
183
183
  Object.defineProperty(e5, t2, { get() {
184
- if (r2 !== ne) return r2 === void 0 && (r2 = ne, r2 = n2()), r2;
184
+ if (r2 !== re) return r2 === void 0 && (r2 = re, r2 = n2()), r2;
185
185
  }, set(n3) {
186
186
  Object.defineProperty(e5, t2, { value: n3 });
187
187
  }, configurable: true });
188
188
  }
189
- function re(e5) {
189
+ function ie(e5) {
190
190
  return Object.create(Object.getPrototypeOf(e5), Object.getOwnPropertyDescriptors(e5));
191
191
  }
192
- function E(e5, t2, n2) {
192
+ function T(e5, t2, n2) {
193
193
  Object.defineProperty(e5, t2, { value: n2, writable: true, enumerable: true, configurable: true });
194
194
  }
195
- function ie(...e5) {
195
+ function E(...e5) {
196
196
  let t2 = {};
197
197
  for (let n2 of e5) Object.assign(t2, Object.getOwnPropertyDescriptors(n2));
198
198
  return Object.defineProperties({}, t2);
199
199
  }
200
200
  function ae(e5) {
201
- return ie(e5._zod.def);
201
+ return E(e5._zod.def);
202
202
  }
203
203
  function oe(e5, t2) {
204
204
  return t2 ? t2.reduce((e6, t3) => e6 == null ? void 0 : e6[t3], e5) : e5;
@@ -227,7 +227,7 @@ var de = "captureStackTrace" in Error ? Error.captureStackTrace : (...e5) => {
227
227
  function fe(e5) {
228
228
  return typeof e5 == "object" && !!e5 && !Array.isArray(e5);
229
229
  }
230
- var pe = S(() => {
230
+ var pe = te(() => {
231
231
  var e5;
232
232
  if (typeof navigator < "u" && !((e5 = navigator) == null || (e5 = e5.userAgent) == null) && e5.includes("Cloudflare")) return false;
233
233
  try {
@@ -319,25 +319,25 @@ var we = { safeint: [-(2 ** 53 - 1), 2 ** 53 - 1], int32: [-2147483648, 21474836
319
319
  function Ee(e5, t2) {
320
320
  let n2 = e5._zod.def, r2 = n2.checks;
321
321
  if (r2 && r2.length > 0) throw Error(".pick() cannot be used on object schemas containing refinements");
322
- return xe(e5, ie(e5._zod.def, { get shape() {
322
+ return xe(e5, E(e5._zod.def, { get shape() {
323
323
  let e6 = {};
324
324
  for (let r3 in t2) {
325
325
  if (!(r3 in n2.shape)) throw Error('Unrecognized key: "'.concat(r3, '"'));
326
326
  t2[r3] && (e6[r3] = n2.shape[r3]);
327
327
  }
328
- return E(this, "shape", e6), e6;
328
+ return T(this, "shape", e6), e6;
329
329
  }, checks: [] }));
330
330
  }
331
331
  function De(e5, t2) {
332
332
  let n2 = e5._zod.def, r2 = n2.checks;
333
333
  if (r2 && r2.length > 0) throw Error(".omit() cannot be used on object schemas containing refinements");
334
- return xe(e5, ie(e5._zod.def, { get shape() {
334
+ return xe(e5, E(e5._zod.def, { get shape() {
335
335
  let r3 = { ...e5._zod.def.shape };
336
336
  for (let e6 in t2) {
337
337
  if (!(e6 in n2.shape)) throw Error('Unrecognized key: "'.concat(e6, '"'));
338
338
  t2[e6] && delete r3[e6];
339
339
  }
340
- return E(this, "shape", r3), r3;
340
+ return T(this, "shape", r3), r3;
341
341
  }, checks: [] }));
342
342
  }
343
343
  function Oe(e5, t2) {
@@ -347,22 +347,22 @@ function Oe(e5, t2) {
347
347
  let n3 = e5._zod.def.shape;
348
348
  for (let e6 in t2) if (Object.getOwnPropertyDescriptor(n3, e6) !== void 0) throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.");
349
349
  }
350
- return xe(e5, ie(e5._zod.def, { get shape() {
350
+ return xe(e5, E(e5._zod.def, { get shape() {
351
351
  let n3 = { ...e5._zod.def.shape, ...t2 };
352
- return E(this, "shape", n3), n3;
352
+ return T(this, "shape", n3), n3;
353
353
  } }));
354
354
  }
355
355
  function ke(e5, t2) {
356
356
  if (!me(t2)) throw Error("Invalid input to safeExtend: expected a plain object");
357
- return xe(e5, ie(e5._zod.def, { get shape() {
357
+ return xe(e5, E(e5._zod.def, { get shape() {
358
358
  let n2 = { ...e5._zod.def.shape, ...t2 };
359
- return E(this, "shape", n2), n2;
359
+ return T(this, "shape", n2), n2;
360
360
  } }));
361
361
  }
362
362
  function Ae(e5, t2) {
363
- return xe(e5, ie(e5._zod.def, { get shape() {
363
+ return xe(e5, E(e5._zod.def, { get shape() {
364
364
  let n2 = { ...e5._zod.def.shape, ...t2._zod.def.shape };
365
- return E(this, "shape", n2), n2;
365
+ return T(this, "shape", n2), n2;
366
366
  }, get catchall() {
367
367
  return t2._zod.def.catchall;
368
368
  }, checks: [] }));
@@ -370,25 +370,25 @@ function Ae(e5, t2) {
370
370
  function je(e5, t2, n2) {
371
371
  let r2 = t2._zod.def.checks;
372
372
  if (r2 && r2.length > 0) throw Error(".partial() cannot be used on object schemas containing refinements");
373
- return xe(t2, ie(t2._zod.def, { get shape() {
373
+ return xe(t2, E(t2._zod.def, { get shape() {
374
374
  let r3 = t2._zod.def.shape, i2 = { ...r3 };
375
375
  if (n2) for (let t3 in n2) {
376
376
  if (!(t3 in r3)) throw Error('Unrecognized key: "'.concat(t3, '"'));
377
377
  n2[t3] && (i2[t3] = e5 ? new e5({ type: "optional", innerType: r3[t3] }) : r3[t3]);
378
378
  }
379
379
  else for (let t3 in r3) i2[t3] = e5 ? new e5({ type: "optional", innerType: r3[t3] }) : r3[t3];
380
- return E(this, "shape", i2), i2;
380
+ return T(this, "shape", i2), i2;
381
381
  }, checks: [] }));
382
382
  }
383
383
  function Me(e5, t2, n2) {
384
- return xe(t2, ie(t2._zod.def, { get shape() {
384
+ return xe(t2, E(t2._zod.def, { get shape() {
385
385
  let r2 = t2._zod.def.shape, i2 = { ...r2 };
386
386
  if (n2) for (let t3 in n2) {
387
387
  if (!(t3 in i2)) throw Error('Unrecognized key: "'.concat(t3, '"'));
388
388
  n2[t3] && (i2[t3] = new e5({ type: "nonoptional", innerType: r2[t3] }));
389
389
  }
390
390
  else for (let t3 in r2) i2[t3] = new e5({ type: "nonoptional", innerType: r2[t3] });
391
- return E(this, "shape", i2), i2;
391
+ return T(this, "shape", i2), i2;
392
392
  } }));
393
393
  }
394
394
  function Ne(e5, t2 = 0) {
@@ -632,7 +632,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
632
632
  (n2 = e6._zod.bag).multipleOf != null || (n2.multipleOf = t2.value);
633
633
  }), e5._zod.check = (n2) => {
634
634
  if (typeof n2.value != typeof t2.value) throw Error("Cannot mix number and bigint in multiple_of check.");
635
- (typeof n2.value == "bigint" ? n2.value % t2.value === BigInt(0) : te(n2.value, t2.value) === 0) || n2.issues.push({ origin: typeof n2.value, code: "not_multiple_of", divisor: t2.value, input: n2.value, inst: e5, continue: !t2.abort });
635
+ (typeof n2.value == "bigint" ? n2.value % t2.value === BigInt(0) : ne(n2.value, t2.value) === 0) || n2.issues.push({ origin: typeof n2.value, code: "not_multiple_of", divisor: t2.value, input: n2.value, inst: e5, continue: !t2.abort });
636
636
  };
637
637
  }), Vn = c("$ZodCheckNumberFormat", (e5, t2) => {
638
638
  var n2;
@@ -669,7 +669,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
669
669
  var n2;
670
670
  A.init(e5, t2), (n2 = e5._zod.def).when != null || (n2.when = (e6) => {
671
671
  let t3 = e6.value;
672
- return !C(t3) && t3.size !== void 0;
672
+ return !S(t3) && t3.size !== void 0;
673
673
  }), e5._zod.onattach.push((e6) => {
674
674
  var n3;
675
675
  let r2 = (n3 = e6._zod.bag.maximum) == null ? 1 / 0 : n3;
@@ -682,7 +682,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
682
682
  var n2;
683
683
  A.init(e5, t2), (n2 = e5._zod.def).when != null || (n2.when = (e6) => {
684
684
  let t3 = e6.value;
685
- return !C(t3) && t3.size !== void 0;
685
+ return !S(t3) && t3.size !== void 0;
686
686
  }), e5._zod.onattach.push((e6) => {
687
687
  var n3;
688
688
  let r2 = (n3 = e6._zod.bag.minimum) == null ? -1 / 0 : n3;
@@ -695,7 +695,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
695
695
  var n2;
696
696
  A.init(e5, t2), (n2 = e5._zod.def).when != null || (n2.when = (e6) => {
697
697
  let t3 = e6.value;
698
- return !C(t3) && t3.size !== void 0;
698
+ return !S(t3) && t3.size !== void 0;
699
699
  }), e5._zod.onattach.push((e6) => {
700
700
  let n3 = e6._zod.bag;
701
701
  n3.minimum = t2.size, n3.maximum = t2.size, n3.size = t2.size;
@@ -709,7 +709,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
709
709
  var n2;
710
710
  A.init(e5, t2), (n2 = e5._zod.def).when != null || (n2.when = (e6) => {
711
711
  let t3 = e6.value;
712
- return !C(t3) && t3.length !== void 0;
712
+ return !S(t3) && t3.length !== void 0;
713
713
  }), e5._zod.onattach.push((e6) => {
714
714
  var n3;
715
715
  let r2 = (n3 = e6._zod.bag.maximum) == null ? 1 / 0 : n3;
@@ -724,7 +724,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
724
724
  var n2;
725
725
  A.init(e5, t2), (n2 = e5._zod.def).when != null || (n2.when = (e6) => {
726
726
  let t3 = e6.value;
727
- return !C(t3) && t3.length !== void 0;
727
+ return !S(t3) && t3.length !== void 0;
728
728
  }), e5._zod.onattach.push((e6) => {
729
729
  var n3;
730
730
  let r2 = (n3 = e6._zod.bag.minimum) == null ? -1 / 0 : n3;
@@ -739,7 +739,7 @@ var Sn = /^[0-9a-fA-F]{32}$/, Cn = bn(22, "=="), wn = xn(22), Tn = /^[0-9a-fA-F]
739
739
  var n2;
740
740
  A.init(e5, t2), (n2 = e5._zod.def).when != null || (n2.when = (e6) => {
741
741
  let t3 = e6.value;
742
- return !C(t3) && t3.length !== void 0;
742
+ return !S(t3) && t3.length !== void 0;
743
743
  }), e5._zod.onattach.push((e6) => {
744
744
  let n3 = e6._zod.bag;
745
745
  n3.minimum = t2.length, n3.maximum = t2.length, n3.length = t2.length;
@@ -889,7 +889,7 @@ var rr = c("$ZodCheckProperty", (e5, t2) => {
889
889
  return t3(o2, i2, a3);
890
890
  };
891
891
  }
892
- T(e5, "~standard", () => ({ validate: (t3) => {
892
+ w(e5, "~standard", () => ({ validate: (t3) => {
893
893
  try {
894
894
  var n3;
895
895
  let r3 = st(e5, t3);
@@ -1154,8 +1154,8 @@ var ti = c("$ZodObject", (e5, t2) => {
1154
1154
  return Object.defineProperty(t2, "shape", { value: n3 }), n3;
1155
1155
  } });
1156
1156
  }
1157
- let r2 = S(() => $r(t2));
1158
- T(e5._zod, "propValues", () => {
1157
+ let r2 = te(() => $r(t2));
1158
+ w(e5._zod, "propValues", () => {
1159
1159
  let e6 = t2.shape, n3 = {};
1160
1160
  for (let t3 in e6) {
1161
1161
  let r3 = e6[t3]._zod;
@@ -1181,7 +1181,7 @@ var ti = c("$ZodObject", (e5, t2) => {
1181
1181
  };
1182
1182
  }), ni = c("$ZodObjectJIT", (e5, t2) => {
1183
1183
  ti.init(e5, t2);
1184
- let n2 = e5._zod.parse, r2 = S(() => $r(t2)), i2 = (e6) => {
1184
+ let n2 = e5._zod.parse, r2 = te(() => $r(t2)), i2 = (e6) => {
1185
1185
  let t3 = new or(["shape", "payload", "ctx"]), n3 = r2.value, i3 = (e7) => {
1186
1186
  let t4 = le(e7);
1187
1187
  return "shape[".concat(t4, "]._zod.run({ value: input[").concat(t4, "], issues: [] }, ctx)");
@@ -1211,12 +1211,12 @@ function ri(e5, t2, n2, r2) {
1211
1211
  return i2.length === 1 ? (t2.value = i2[0].value, i2[0]) : (t2.issues.push({ code: "invalid_union", input: t2.value, inst: n2, errors: e5.map((e6) => e6.issues.map((e7) => Ie(e7, r2, p()))) }), t2);
1212
1212
  }
1213
1213
  var ii = c("$ZodUnion", (e5, t2) => {
1214
- j.init(e5, t2), T(e5._zod, "optin", () => t2.options.some((e6) => e6._zod.optin === "optional") ? "optional" : void 0), T(e5._zod, "optout", () => t2.options.some((e6) => e6._zod.optout === "optional") ? "optional" : void 0), T(e5._zod, "values", () => {
1214
+ j.init(e5, t2), w(e5._zod, "optin", () => t2.options.some((e6) => e6._zod.optin === "optional") ? "optional" : void 0), w(e5._zod, "optout", () => t2.options.some((e6) => e6._zod.optout === "optional") ? "optional" : void 0), w(e5._zod, "values", () => {
1215
1215
  if (t2.options.every((e6) => e6._zod.values)) return new Set(t2.options.flatMap((e6) => Array.from(e6._zod.values)));
1216
- }), T(e5._zod, "pattern", () => {
1216
+ }), w(e5._zod, "pattern", () => {
1217
1217
  if (t2.options.every((e6) => e6._zod.pattern)) {
1218
1218
  let e6 = t2.options.map((e7) => e7._zod.pattern);
1219
- return RegExp("^(".concat(e6.map((e7) => w(e7.source)).join("|"), ")$"));
1219
+ return RegExp("^(".concat(e6.map((e7) => C(e7.source)).join("|"), ")$"));
1220
1220
  }
1221
1221
  });
1222
1222
  let n2 = t2.options.length === 1, r2 = t2.options[0]._zod.run;
@@ -1253,7 +1253,7 @@ var oi = c("$ZodXor", (e5, t2) => {
1253
1253
  }), si = c("$ZodDiscriminatedUnion", (e5, t2) => {
1254
1254
  t2.inclusive = false, ii.init(e5, t2);
1255
1255
  let n2 = e5._zod.parse;
1256
- T(e5._zod, "propValues", () => {
1256
+ w(e5._zod, "propValues", () => {
1257
1257
  let e6 = {};
1258
1258
  for (let n3 of t2.options) {
1259
1259
  let r3 = n3._zod.propValues;
@@ -1265,7 +1265,7 @@ var oi = c("$ZodXor", (e5, t2) => {
1265
1265
  }
1266
1266
  return e6;
1267
1267
  });
1268
- let r2 = S(() => {
1268
+ let r2 = te(() => {
1269
1269
  let e6 = t2.options, n3 = /* @__PURE__ */ new Map();
1270
1270
  for (let i2 of e6) {
1271
1271
  var r3;
@@ -1469,9 +1469,9 @@ function Si(e5, t2) {
1469
1469
  return e5.issues.length && t2 === void 0 ? { issues: [], value: void 0 } : e5;
1470
1470
  }
1471
1471
  var Ci = c("$ZodOptional", (e5, t2) => {
1472
- j.init(e5, t2), e5._zod.optin = "optional", e5._zod.optout = "optional", T(e5._zod, "values", () => t2.innerType._zod.values ? /* @__PURE__ */ new Set([...t2.innerType._zod.values, void 0]) : void 0), T(e5._zod, "pattern", () => {
1472
+ j.init(e5, t2), e5._zod.optin = "optional", e5._zod.optout = "optional", w(e5._zod, "values", () => t2.innerType._zod.values ? /* @__PURE__ */ new Set([...t2.innerType._zod.values, void 0]) : void 0), w(e5._zod, "pattern", () => {
1473
1473
  let e6 = t2.innerType._zod.pattern;
1474
- return e6 ? RegExp("^(".concat(w(e6.source), ")?$")) : void 0;
1474
+ return e6 ? RegExp("^(".concat(C(e6.source), ")?$")) : void 0;
1475
1475
  }), e5._zod.parse = (e6, n2) => {
1476
1476
  if (t2.innerType._zod.optin === "optional") {
1477
1477
  let r2 = t2.innerType._zod.run(e6, n2);
@@ -1480,14 +1480,14 @@ var Ci = c("$ZodOptional", (e5, t2) => {
1480
1480
  return e6.value === void 0 ? e6 : t2.innerType._zod.run(e6, n2);
1481
1481
  };
1482
1482
  }), wi = c("$ZodExactOptional", (e5, t2) => {
1483
- Ci.init(e5, t2), T(e5._zod, "values", () => t2.innerType._zod.values), T(e5._zod, "pattern", () => t2.innerType._zod.pattern), e5._zod.parse = (e6, n2) => t2.innerType._zod.run(e6, n2);
1483
+ Ci.init(e5, t2), w(e5._zod, "values", () => t2.innerType._zod.values), w(e5._zod, "pattern", () => t2.innerType._zod.pattern), e5._zod.parse = (e6, n2) => t2.innerType._zod.run(e6, n2);
1484
1484
  }), Ti = c("$ZodNullable", (e5, t2) => {
1485
- j.init(e5, t2), T(e5._zod, "optin", () => t2.innerType._zod.optin), T(e5._zod, "optout", () => t2.innerType._zod.optout), T(e5._zod, "pattern", () => {
1485
+ j.init(e5, t2), w(e5._zod, "optin", () => t2.innerType._zod.optin), w(e5._zod, "optout", () => t2.innerType._zod.optout), w(e5._zod, "pattern", () => {
1486
1486
  let e6 = t2.innerType._zod.pattern;
1487
- return e6 ? RegExp("^(".concat(w(e6.source), "|null)$")) : void 0;
1488
- }), T(e5._zod, "values", () => t2.innerType._zod.values ? /* @__PURE__ */ new Set([...t2.innerType._zod.values, null]) : void 0), e5._zod.parse = (e6, n2) => e6.value === null ? e6 : t2.innerType._zod.run(e6, n2);
1487
+ return e6 ? RegExp("^(".concat(C(e6.source), "|null)$")) : void 0;
1488
+ }), w(e5._zod, "values", () => t2.innerType._zod.values ? /* @__PURE__ */ new Set([...t2.innerType._zod.values, null]) : void 0), e5._zod.parse = (e6, n2) => e6.value === null ? e6 : t2.innerType._zod.run(e6, n2);
1489
1489
  }), Ei = c("$ZodDefault", (e5, t2) => {
1490
- j.init(e5, t2), e5._zod.optin = "optional", T(e5._zod, "values", () => t2.innerType._zod.values), e5._zod.parse = (e6, n2) => {
1490
+ j.init(e5, t2), e5._zod.optin = "optional", w(e5._zod, "values", () => t2.innerType._zod.values), e5._zod.parse = (e6, n2) => {
1491
1491
  if (n2.direction === "backward") return t2.innerType._zod.run(e6, n2);
1492
1492
  if (e6.value === void 0) return e6.value = t2.defaultValue, e6;
1493
1493
  let r2 = t2.innerType._zod.run(e6, n2);
@@ -1498,9 +1498,9 @@ function Di(e5, t2) {
1498
1498
  return e5.value === void 0 && (e5.value = t2.defaultValue), e5;
1499
1499
  }
1500
1500
  var Oi = c("$ZodPrefault", (e5, t2) => {
1501
- j.init(e5, t2), e5._zod.optin = "optional", T(e5._zod, "values", () => t2.innerType._zod.values), e5._zod.parse = (e6, n2) => (n2.direction === "backward" || e6.value === void 0 && (e6.value = t2.defaultValue), t2.innerType._zod.run(e6, n2));
1501
+ j.init(e5, t2), e5._zod.optin = "optional", w(e5._zod, "values", () => t2.innerType._zod.values), e5._zod.parse = (e6, n2) => (n2.direction === "backward" || e6.value === void 0 && (e6.value = t2.defaultValue), t2.innerType._zod.run(e6, n2));
1502
1502
  }), ki = c("$ZodNonOptional", (e5, t2) => {
1503
- j.init(e5, t2), T(e5._zod, "values", () => {
1503
+ j.init(e5, t2), w(e5._zod, "values", () => {
1504
1504
  let e6 = t2.innerType._zod.values;
1505
1505
  return e6 ? new Set([...e6].filter((e7) => e7 !== void 0)) : void 0;
1506
1506
  }), e5._zod.parse = (n2, r2) => {
@@ -1518,7 +1518,7 @@ var ji = c("$ZodSuccess", (e5, t2) => {
1518
1518
  return r2 instanceof Promise ? r2.then((t3) => (e6.value = t3.issues.length === 0, e6)) : (e6.value = r2.issues.length === 0, e6);
1519
1519
  };
1520
1520
  }), Mi = c("$ZodCatch", (e5, t2) => {
1521
- j.init(e5, t2), T(e5._zod, "optin", () => t2.innerType._zod.optin), T(e5._zod, "optout", () => t2.innerType._zod.optout), T(e5._zod, "values", () => t2.innerType._zod.values), e5._zod.parse = (e6, n2) => {
1521
+ j.init(e5, t2), w(e5._zod, "optin", () => t2.innerType._zod.optin), w(e5._zod, "optout", () => t2.innerType._zod.optout), w(e5._zod, "values", () => t2.innerType._zod.values), e5._zod.parse = (e6, n2) => {
1522
1522
  if (n2.direction === "backward") return t2.innerType._zod.run(e6, n2);
1523
1523
  let r2 = t2.innerType._zod.run(e6, n2);
1524
1524
  return r2 instanceof Promise ? r2.then((r3) => (e6.value = r3.value, r3.issues.length && (e6.value = t2.catchValue({ ...e6, error: { issues: r3.issues.map((e7) => Ie(e7, n2, p())) }, input: e6.value }), e6.issues = []), e6)) : (e6.value = r2.value, r2.issues.length && (e6.value = t2.catchValue({ ...e6, error: { issues: r2.issues.map((e7) => Ie(e7, n2, p())) }, input: e6.value }), e6.issues = []), e6);
@@ -1526,7 +1526,7 @@ var ji = c("$ZodSuccess", (e5, t2) => {
1526
1526
  }), Ni = c("$ZodNaN", (e5, t2) => {
1527
1527
  j.init(e5, t2), e5._zod.parse = (t3, n2) => ((typeof t3.value != "number" || !Number.isNaN(t3.value)) && t3.issues.push({ input: t3.value, inst: e5, expected: "nan", code: "invalid_type" }), t3);
1528
1528
  }), Pi = c("$ZodPipe", (e5, t2) => {
1529
- j.init(e5, t2), T(e5._zod, "values", () => t2.in._zod.values), T(e5._zod, "optin", () => t2.in._zod.optin), T(e5._zod, "optout", () => t2.out._zod.optout), T(e5._zod, "propValues", () => t2.in._zod.propValues), e5._zod.parse = (e6, n2) => {
1529
+ j.init(e5, t2), w(e5._zod, "values", () => t2.in._zod.values), w(e5._zod, "optin", () => t2.in._zod.optin), w(e5._zod, "optout", () => t2.out._zod.optout), w(e5._zod, "propValues", () => t2.in._zod.propValues), e5._zod.parse = (e6, n2) => {
1530
1530
  if (n2.direction === "backward") {
1531
1531
  let r3 = t2.out._zod.run(e6, n2);
1532
1532
  return r3 instanceof Promise ? r3.then((e7) => Fi(e7, t2.in, n2)) : Fi(r3, t2.in, n2);
@@ -1539,7 +1539,7 @@ function Fi(e5, t2, n2) {
1539
1539
  return e5.issues.length ? (e5.aborted = true, e5) : t2._zod.run({ value: e5.value, issues: e5.issues }, n2);
1540
1540
  }
1541
1541
  var Ii = c("$ZodCodec", (e5, t2) => {
1542
- j.init(e5, t2), T(e5._zod, "values", () => t2.in._zod.values), T(e5._zod, "optin", () => t2.in._zod.optin), T(e5._zod, "optout", () => t2.out._zod.optout), T(e5._zod, "propValues", () => t2.in._zod.propValues), e5._zod.parse = (e6, n2) => {
1542
+ j.init(e5, t2), w(e5._zod, "values", () => t2.in._zod.values), w(e5._zod, "optin", () => t2.in._zod.optin), w(e5._zod, "optout", () => t2.out._zod.optout), w(e5._zod, "propValues", () => t2.in._zod.propValues), e5._zod.parse = (e6, n2) => {
1543
1543
  if ((n2.direction || "forward") === "forward") {
1544
1544
  let r2 = t2.in._zod.run(e6, n2);
1545
1545
  return r2 instanceof Promise ? r2.then((e7) => Li(e7, t2, n2)) : Li(r2, t2, n2);
@@ -1563,10 +1563,10 @@ function Ri(e5, t2, n2, r2) {
1563
1563
  return e5.issues.length ? (e5.aborted = true, e5) : n2._zod.run({ value: t2, issues: e5.issues }, r2);
1564
1564
  }
1565
1565
  var zi = c("$ZodReadonly", (e5, t2) => {
1566
- j.init(e5, t2), T(e5._zod, "propValues", () => t2.innerType._zod.propValues), T(e5._zod, "values", () => t2.innerType._zod.values), T(e5._zod, "optin", () => {
1566
+ j.init(e5, t2), w(e5._zod, "propValues", () => t2.innerType._zod.propValues), w(e5._zod, "values", () => t2.innerType._zod.values), w(e5._zod, "optin", () => {
1567
1567
  var e6;
1568
1568
  return (e6 = t2.innerType) == null || (e6 = e6._zod) == null ? void 0 : e6.optin;
1569
- }), T(e5._zod, "optout", () => {
1569
+ }), w(e5._zod, "optout", () => {
1570
1570
  var e6;
1571
1571
  return (e6 = t2.innerType) == null || (e6 = e6._zod) == null ? void 0 : e6.optout;
1572
1572
  }), e5._zod.parse = (e6, n2) => {
@@ -1618,16 +1618,16 @@ var Vi = c("$ZodTemplateLiteral", (e5, t2) => {
1618
1618
  }, e5)), Ui = c("$ZodPromise", (e5, t2) => {
1619
1619
  j.init(e5, t2), e5._zod.parse = (e6, n2) => Promise.resolve(e6.value).then((e7) => t2.innerType._zod.run({ value: e7, issues: [] }, n2));
1620
1620
  }), Wi = c("$ZodLazy", (e5, t2) => {
1621
- j.init(e5, t2), T(e5._zod, "innerType", () => t2.getter()), T(e5._zod, "pattern", () => {
1621
+ j.init(e5, t2), w(e5._zod, "innerType", () => t2.getter()), w(e5._zod, "pattern", () => {
1622
1622
  var t3;
1623
1623
  return (t3 = e5._zod.innerType) == null || (t3 = t3._zod) == null ? void 0 : t3.pattern;
1624
- }), T(e5._zod, "propValues", () => {
1624
+ }), w(e5._zod, "propValues", () => {
1625
1625
  var t3;
1626
1626
  return (t3 = e5._zod.innerType) == null || (t3 = t3._zod) == null ? void 0 : t3.propValues;
1627
- }), T(e5._zod, "optin", () => {
1627
+ }), w(e5._zod, "optin", () => {
1628
1628
  var t3, n2;
1629
1629
  return (t3 = (n2 = e5._zod.innerType) == null || (n2 = n2._zod) == null ? void 0 : n2.optin) == null ? void 0 : t3;
1630
- }), T(e5._zod, "optout", () => {
1630
+ }), w(e5._zod, "optout", () => {
1631
1631
  var t3, n2;
1632
1632
  return (t3 = (n2 = e5._zod.innerType) == null || (n2 = n2._zod) == null ? void 0 : n2.optout) == null ? void 0 : t3;
1633
1633
  }), e5._zod.parse = (t3, n2) => e5._zod.innerType._zod.run(t3, n2);
@@ -2444,27 +2444,27 @@ var wa = () => {
2444
2444
  var ee2, y2, x2;
2445
2445
  let e6 = o2(t3.origin), n4 = i2((ee2 = t3.origin) == null ? "value" : ee2);
2446
2446
  if (t3.origin === "string") {
2447
- var S2, C2;
2448
- return "".concat((S2 = e6 == null ? void 0 : e6.shortLabel) == null ? "\u05E7\u05E6\u05E8" : S2, " \u05DE\u05D3\u05D9: ").concat(n4, " \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ").concat(t3.minimum.toString(), " ").concat((C2 = e6 == null ? void 0 : e6.unit) == null ? "" : C2, " ").concat(t3.inclusive ? "\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8" : "\u05DC\u05E4\u05D7\u05D5\u05EA").trim();
2447
+ var te2, S2;
2448
+ return "".concat((te2 = e6 == null ? void 0 : e6.shortLabel) == null ? "\u05E7\u05E6\u05E8" : te2, " \u05DE\u05D3\u05D9: ").concat(n4, " \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ").concat(t3.minimum.toString(), " ").concat((S2 = e6 == null ? void 0 : e6.unit) == null ? "" : S2, " ").concat(t3.inclusive ? "\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8" : "\u05DC\u05E4\u05D7\u05D5\u05EA").trim();
2449
2449
  }
2450
2450
  if (t3.origin === "number") return "\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ".concat(n4, " \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ").concat(t3.inclusive ? "\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-".concat(t3.minimum) : "\u05D2\u05D3\u05D5\u05DC \u05DE-".concat(t3.minimum));
2451
2451
  if (t3.origin === "array" || t3.origin === "set") {
2452
- var w2, te2;
2452
+ var C2, ne2;
2453
2453
  let r4 = t3.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA";
2454
- return t3.minimum === 1 && t3.inclusive ? "\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ".concat(n4, " ").concat(r4, " \u05DC\u05D4\u05DB\u05D9\u05DC ").concat((t3.origin, "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3")) : "\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ".concat(n4, " ").concat(r4, " \u05DC\u05D4\u05DB\u05D9\u05DC ").concat(t3.inclusive ? "".concat(t3.minimum, " ").concat((w2 = e6 == null ? void 0 : e6.unit) == null ? "" : w2, " \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8") : "\u05D9\u05D5\u05EA\u05E8 \u05DE-".concat(t3.minimum, " ").concat((te2 = e6 == null ? void 0 : e6.unit) == null ? "" : te2)).trim();
2454
+ return t3.minimum === 1 && t3.inclusive ? "\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ".concat(n4, " ").concat(r4, " \u05DC\u05D4\u05DB\u05D9\u05DC ").concat((t3.origin, "\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3")) : "\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ".concat(n4, " ").concat(r4, " \u05DC\u05D4\u05DB\u05D9\u05DC ").concat(t3.inclusive ? "".concat(t3.minimum, " ").concat((C2 = e6 == null ? void 0 : e6.unit) == null ? "" : C2, " \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8") : "\u05D9\u05D5\u05EA\u05E8 \u05DE-".concat(t3.minimum, " ").concat((ne2 = e6 == null ? void 0 : e6.unit) == null ? "" : ne2)).trim();
2455
2455
  }
2456
2456
  let r3 = t3.inclusive ? ">=" : ">", s3 = a2((y2 = t3.origin) == null ? "value" : y2);
2457
2457
  return e6 != null && e6.unit ? "".concat(e6.shortLabel, " \u05DE\u05D3\u05D9: ").concat(n4, " ").concat(s3, " ").concat(r3).concat(t3.minimum.toString(), " ").concat(e6.unit) : "".concat((x2 = e6 == null ? void 0 : e6.shortLabel) == null ? "\u05E7\u05D8\u05DF" : x2, " \u05DE\u05D3\u05D9: ").concat(n4, " ").concat(s3, " ").concat(r3).concat(t3.minimum.toString());
2458
2458
  }
2459
2459
  case "invalid_format": {
2460
- var ne2, T2;
2460
+ var re2, w2;
2461
2461
  let e6 = t3;
2462
2462
  if (e6.format === "starts_with") return '\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "'.concat(e6.prefix, '"');
2463
2463
  if (e6.format === "ends_with") return '\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "'.concat(e6.suffix, '"');
2464
2464
  if (e6.format === "includes") return '\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "'.concat(e6.includes, '"');
2465
2465
  if (e6.format === "regex") return "\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ".concat(e6.pattern);
2466
2466
  let n4 = s2[e6.format];
2467
- return "".concat((ne2 = n4 == null ? void 0 : n4.label) == null ? e6.format : ne2, " \u05DC\u05D0 ").concat(((T2 = n4 == null ? void 0 : n4.gender) == null ? "m" : T2) === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF");
2467
+ return "".concat((re2 = n4 == null ? void 0 : n4.label) == null ? e6.format : re2, " \u05DC\u05D0 ").concat(((w2 = n4 == null ? void 0 : n4.gender) == null ? "m" : w2) === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF");
2468
2468
  }
2469
2469
  case "not_multiple_of":
2470
2470
  return "\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ".concat(t3.divisor);
@@ -2475,8 +2475,8 @@ var wa = () => {
2475
2475
  case "invalid_union":
2476
2476
  return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";
2477
2477
  case "invalid_element":
2478
- var re2;
2479
- return "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1".concat(i2((re2 = t3.origin) == null ? "array" : re2));
2478
+ var ie2;
2479
+ return "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1".concat(i2((ie2 = t3.origin) == null ? "array" : ie2));
2480
2480
  default:
2481
2481
  return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";
2482
2482
  }
@@ -4942,7 +4942,7 @@ var pu = (e5, t2) => {
4942
4942
  } } });
4943
4943
  }, mu = c("ZodError", pu), hu = c("ZodError", pu, { Parent: Error }), gu = nt(hu), _u = it(hu), vu = ot(hu), yu = ct(hu), bu = ut(hu), xu = ft(hu), Su = mt(hu), Cu = gt(hu), wu = vt(hu), Tu = bt(hu), Eu = St(hu), Du = wt(hu), Ou = t({ ZodAny: () => Gd, ZodArray: () => ef, ZodBase64: () => pd, ZodBase64URL: () => hd, ZodBigInt: () => Pd, ZodBigIntFormat: () => Id, ZodBoolean: () => Nd, ZodCIDRv4: () => ld, ZodCIDRv6: () => dd, ZodCUID: () => qu, ZodCUID2: () => Yu, ZodCatch: () => Wf, ZodCodec: () => Xf, ZodCustom: () => cp, ZodCustomStringFormat: () => xd, ZodDate: () => Qd, ZodDefault: () => If, ZodDiscriminatedUnion: () => lf, ZodE164: () => _d, ZodEmail: () => ju, ZodEmoji: () => Uu, ZodEnum: () => Sf, ZodExactOptional: () => jf, ZodFile: () => Ef, ZodFunction: () => op, ZodGUID: () => Nu, ZodIPv4: () => rd, ZodIPv6: () => sd, ZodIntersection: () => df, ZodJWT: () => yd, ZodKSUID: () => td, ZodLazy: () => np, ZodLiteral: () => Tf, ZodMAC: () => ad, ZodMap: () => vf, ZodNaN: () => Kf, ZodNanoID: () => Gu, ZodNever: () => Jd, ZodNonOptional: () => Bf, ZodNull: () => Ud, ZodNullable: () => Nf, ZodNumber: () => Ed, ZodNumberFormat: () => Dd, ZodObject: () => nf, ZodOptional: () => Af, ZodPipe: () => Jf, ZodPrefault: () => Rf, ZodPromise: () => ip, ZodReadonly: () => Qf, ZodRecord: () => hf, ZodSet: () => bf, ZodString: () => Au, ZodStringFormat: () => I, ZodSuccess: () => Hf, ZodSymbol: () => zd, ZodTemplateLiteral: () => ep, ZodTransform: () => Of, ZodTuple: () => pf, ZodType: () => P, ZodULID: () => Zu, ZodURL: () => Bu, ZodUUID: () => Fu, ZodUndefined: () => Vd, ZodUnion: () => of, ZodUnknown: () => qd, ZodVoid: () => Xd, ZodXID: () => $u, ZodXor: () => sf, _ZodString: () => ku, _default: () => Lf, _function: () => sp, any: () => Kd, array: () => B, base64: () => md, base64url: () => gd, bigint: () => Fd, boolean: () => R, catch: () => Gf, check: () => lp, cidrv4: () => ud, cidrv6: () => fd, codec: () => Zf, cuid: () => Ju, cuid2: () => Xu, custom: () => up, date: () => $d, describe: () => pp, discriminatedUnion: () => uf, e164: () => vd, email: () => Mu, emoji: () => Wu, enum: () => Cf, exactOptional: () => Mf, file: () => Df, float32: () => kd, float64: () => Ad, function: () => sp, guid: () => Pu, hash: () => Td, hex: () => wd, hostname: () => Cd, httpUrl: () => Hu, instanceof: () => hp, int: () => Od, int32: () => jd, int64: () => Ld, intersection: () => ff, ipv4: () => id, ipv6: () => cd, json: () => _p, jwt: () => bd, keyof: () => tf, ksuid: () => nd, lazy: () => rp, literal: () => W, looseObject: () => af, looseRecord: () => _f, mac: () => od, map: () => yf, meta: () => mp, nan: () => qf, nanoid: () => Ku, nativeEnum: () => wf, never: () => Yd, nonoptional: () => Vf, null: () => Wd, nullable: () => Pf, nullish: () => Ff, number: () => L, object: () => V, optional: () => G, partialRecord: () => gf, pipe: () => Yf, prefault: () => zf, preprocess: () => vp, promise: () => ap, readonly: () => $f, record: () => U, refine: () => dp, set: () => xf, strictObject: () => rf, string: () => F, stringFormat: () => Sd, stringbool: () => gp, success: () => Uf, superRefine: () => fp, symbol: () => Bd, templateLiteral: () => tp, transform: () => kf, tuple: () => mf, uint32: () => Md, uint64: () => Rd, ulid: () => Qu, undefined: () => Hd, union: () => H, unknown: () => z, url: () => Vu, uuid: () => Iu, uuidv4: () => Lu, uuidv6: () => Ru, uuidv7: () => zu, void: () => Zd, xid: () => ed, xor: () => cf }), P = c("ZodType", (e5, t2) => (j.init(e5, t2), Object.assign(e5["~standard"], { jsonSchema: { input: sl(e5, "input"), output: sl(e5, "output") } }), e5.toJSONSchema = ol(e5, {}), e5.def = t2, e5.type = t2.type, Object.defineProperty(e5, "_def", { value: t2 }), e5.check = (...n2) => {
4944
4944
  var r2;
4945
- return e5.clone(ie(t2, { checks: [...(r2 = t2.checks) == null ? [] : r2, ...n2.map((e6) => typeof e6 == "function" ? { _zod: { check: e6, def: { check: "custom" }, onattach: [] } } : e6)] }), { parent: true });
4945
+ return e5.clone(E(t2, { checks: [...(r2 = t2.checks) == null ? [] : r2, ...n2.map((e6) => typeof e6 == "function" ? { _zod: { check: e6, def: { check: "custom" }, onattach: [] } } : e6)] }), { parent: true });
4946
4946
  }, e5.with = e5.check, e5.clone = (t3, n2) => xe(e5, t3, n2), e5.brand = () => e5, e5.register = ((t3, n2) => (t3.add(e5, n2), e5)), e5.parse = (t3, n2) => gu(e5, t3, n2, { callee: e5.parse }), e5.safeParse = (t3, n2) => vu(e5, t3, n2), e5.parseAsync = async (t3, n2) => _u(e5, t3, n2, { callee: e5.parseAsync }), e5.safeParseAsync = async (t3, n2) => yu(e5, t3, n2), e5.spa = e5.safeParseAsync, e5.encode = (t3, n2) => bu(e5, t3, n2), e5.decode = (t3, n2) => xu(e5, t3, n2), e5.encodeAsync = async (t3, n2) => Su(e5, t3, n2), e5.decodeAsync = async (t3, n2) => Cu(e5, t3, n2), e5.safeEncode = (t3, n2) => wu(e5, t3, n2), e5.safeDecode = (t3, n2) => Tu(e5, t3, n2), e5.safeEncodeAsync = async (t3, n2) => Eu(e5, t3, n2), e5.safeDecodeAsync = async (t3, n2) => Du(e5, t3, n2), e5.refine = (t3, n2) => e5.check(dp(t3, n2)), e5.superRefine = (t3) => e5.check(fp(t3)), e5.overwrite = (t3) => e5.check(_c(t3)), e5.optional = () => G(e5), e5.exactOptional = () => Mf(e5), e5.nullable = () => Pf(e5), e5.nullish = () => G(Pf(e5)), e5.nonoptional = (t3) => Vf(e5, t3), e5.array = () => B(e5), e5.or = (t3) => H([e5, t3]), e5.and = (t3) => ff(e5, t3), e5.transform = (t3) => Yf(e5, kf(t3)), e5.default = (t3) => Lf(e5, t3), e5.prefault = (t3) => zf(e5, t3), e5.catch = (t3) => Gf(e5, t3), e5.pipe = (t3) => Yf(e5, t3), e5.readonly = () => $f(e5), e5.describe = (t3) => {
4947
4947
  let n2 = e5.clone();
4948
4948
  return Jo.add(n2, { description: t3 }), n2;
@@ -5228,7 +5228,7 @@ function tf(e5) {
5228
5228
  return Cf(Object.keys(t2));
5229
5229
  }
5230
5230
  var nf = c("ZodObject", (e5, t2) => {
5231
- ni.init(e5, t2), P.init(e5, t2), e5._zod.processJSONSchema = (t3, n2, r2) => Nl(e5, t3, n2, r2), T(e5, "shape", () => t2.shape), e5.keyof = () => Cf(Object.keys(e5._zod.def.shape)), e5.catchall = (t3) => e5.clone({ ...e5._zod.def, catchall: t3 }), e5.passthrough = () => e5.clone({ ...e5._zod.def, catchall: z() }), e5.loose = () => e5.clone({ ...e5._zod.def, catchall: z() }), e5.strict = () => e5.clone({ ...e5._zod.def, catchall: Yd() }), e5.strip = () => e5.clone({ ...e5._zod.def, catchall: void 0 }), e5.extend = (t3) => Oe(e5, t3), e5.safeExtend = (t3) => ke(e5, t3), e5.merge = (t3) => Ae(e5, t3), e5.pick = (t3) => Ee(e5, t3), e5.omit = (t3) => De(e5, t3), e5.partial = (...t3) => je(Af, e5, t3[0]), e5.required = (...t3) => Me(Bf, e5, t3[0]);
5231
+ ni.init(e5, t2), P.init(e5, t2), e5._zod.processJSONSchema = (t3, n2, r2) => Nl(e5, t3, n2, r2), w(e5, "shape", () => t2.shape), e5.keyof = () => Cf(Object.keys(e5._zod.def.shape)), e5.catchall = (t3) => e5.clone({ ...e5._zod.def, catchall: t3 }), e5.passthrough = () => e5.clone({ ...e5._zod.def, catchall: z() }), e5.loose = () => e5.clone({ ...e5._zod.def, catchall: z() }), e5.strict = () => e5.clone({ ...e5._zod.def, catchall: Yd() }), e5.strip = () => e5.clone({ ...e5._zod.def, catchall: void 0 }), e5.extend = (t3) => Oe(e5, t3), e5.safeExtend = (t3) => ke(e5, t3), e5.merge = (t3) => Ae(e5, t3), e5.pick = (t3) => Ee(e5, t3), e5.omit = (t3) => De(e5, t3), e5.partial = (...t3) => je(Af, e5, t3[0]), e5.required = (...t3) => Me(Bf, e5, t3[0]);
5232
5232
  });
5233
5233
  function V(e5, t2) {
5234
5234
  return new nf({ type: "object", shape: e5 == null ? {} : e5, ...D(t2) });
@@ -6331,7 +6331,15 @@ async function n_(e5, t2, n2 = "") {
6331
6331
  }
6332
6332
  return r2.value;
6333
6333
  }
6334
- var r_ = class e3 extends Og {
6334
+ function r_(e5, t2 = document.documentElement) {
6335
+ for (let [n2, r2] of Object.entries(e5)) r2 !== void 0 && t2.style.setProperty(n2, r2);
6336
+ }
6337
+ function i_(e5) {
6338
+ if (document.getElementById("__mcp-host-fonts")) return;
6339
+ let t2 = document.createElement("style");
6340
+ t2.id = "__mcp-host-fonts", t2.textContent = e5, document.head.appendChild(t2);
6341
+ }
6342
+ var a_ = class e3 extends Og {
6335
6343
  _assertInitialized(e5) {
6336
6344
  var t2;
6337
6345
  if (this._initializedSent) return;
@@ -6563,14 +6571,14 @@ var r_ = class e3 extends Og {
6563
6571
  }
6564
6572
  }
6565
6573
  };
6566
- o(r_, "ONE_SHOT_EVENTS", /* @__PURE__ */ new Set(["toolinput", "toolinputpartial", "toolresult", "toolcancelled"]));
6567
- function i_(e5, t2) {
6574
+ o(a_, "ONE_SHOT_EVENTS", /* @__PURE__ */ new Set(["toolinput", "toolinputpartial", "toolresult", "toolcancelled"]));
6575
+ function o_(e5, t2) {
6568
6576
  var n2, r2, i2, a2, o2, s2;
6569
6577
  let c2 = document.getElementById(t2), l2 = c2 == null ? void 0 : c2.querySelector("#btn-zoom-in"), u2 = c2 == null ? void 0 : c2.querySelector("#btn-zoom-out"), d2 = c2 == null ? void 0 : c2.querySelector("#btn-reset-view");
6570
6578
  c2 && (c2.hidden = false);
6571
6579
  let f2 = (n2 = (r2 = e5.getAttribute("viewBox")) == null ? void 0 : r2.split(/[\s,]+/).map(Number)) == null ? [0, 0, 500, 500] : n2, p2 = (i2 = f2[0]) == null ? 0 : i2, m2 = (a2 = f2[1]) == null ? 0 : a2, h2 = (o2 = f2[2]) == null ? 500 : o2, g2 = (s2 = f2[3]) == null ? 500 : s2, _2 = h2 / 5, v2 = h2 * 2, ee2 = p2, y2 = m2, b2 = h2, x2 = g2;
6572
- e5.style.touchAction = "none";
6573
- let S2 = () => e5.setAttribute("viewBox", "".concat(ee2, " ").concat(y2, " ").concat(b2, " ").concat(x2)), C2 = (e6, t3, n3) => {
6580
+ e5.classList.add("oe-pannable");
6581
+ let te2 = () => document.body.classList.contains("is-fullscreen"), S2 = () => e5.setAttribute("viewBox", "".concat(ee2, " ").concat(y2, " ").concat(b2, " ").concat(x2)), C2 = (e6, t3, n3) => {
6574
6582
  t3 === void 0 && (t3 = ee2 + b2 / 2), n3 === void 0 && (n3 = y2 + x2 / 2);
6575
6583
  let r3 = b2 * e6;
6576
6584
  r3 < _2 && (r3 = _2), r3 > v2 && (r3 = v2), r3 !== b2 && (e6 = r3 / b2, ee2 = t3 - (t3 - ee2) * e6, y2 = n3 - (n3 - y2) * e6, b2 = r3, x2 *= e6, S2());
@@ -6578,119 +6586,121 @@ function i_(e5, t2) {
6578
6586
  l2 == null || l2.addEventListener("click", () => C2(0.8)), u2 == null || u2.addEventListener("click", () => C2(1.25)), d2 == null || d2.addEventListener("click", () => {
6579
6587
  ee2 = p2, y2 = m2, b2 = h2, x2 = g2, S2();
6580
6588
  });
6581
- let w2 = (t3, n3) => {
6589
+ let ne2 = (t3, n3) => {
6582
6590
  let r3 = e5.getBoundingClientRect();
6583
6591
  return { x: ee2 + (t3 - r3.left) / r3.width * b2, y: y2 + (n3 - r3.top) / r3.height * x2 };
6584
6592
  };
6585
6593
  e5.addEventListener("wheel", (e6) => {
6594
+ if (!te2() && !e6.ctrlKey && !e6.metaKey) return;
6586
6595
  e6.preventDefault();
6587
- let t3 = Math.exp((e6.deltaY < 0 ? -1 : 1) * 0.1), n3 = w2(e6.clientX, e6.clientY);
6596
+ let t3 = Math.exp((e6.deltaY < 0 ? -1 : 1) * 0.1), n3 = ne2(e6.clientX, e6.clientY);
6588
6597
  C2(t3, n3.x, n3.y);
6589
6598
  }, { passive: false });
6590
- let te2 = /* @__PURE__ */ new Map(), ne2 = null, T2 = () => {
6591
- let [e6, t3] = [...te2.values()];
6599
+ let re2 = /* @__PURE__ */ new Map(), w2 = null, ie2 = () => {
6600
+ let [e6, t3] = [...re2.values()];
6592
6601
  return { dist: Math.hypot(e6.x - t3.x, e6.y - t3.y), midX: (e6.x + t3.x) / 2, midY: (e6.y + t3.y) / 2 };
6593
- }, re2 = (t3, n3) => {
6602
+ }, T2 = (t3, n3) => {
6594
6603
  let r3 = e5.getBoundingClientRect();
6595
6604
  ee2 -= t3 / r3.width * b2, y2 -= n3 / r3.height * x2, S2();
6596
6605
  };
6597
6606
  e5.addEventListener("pointerdown", (t3) => {
6607
+ if (t3.pointerType === "touch" && !te2()) return;
6598
6608
  let n3 = t3.target, r3 = !!(n3.closest && (n3.closest('[class*="-hit"]') || n3.closest('[class*="-activation"]') || n3.closest(".variable-arrow") || n3.closest("button")));
6599
- te2.set(t3.pointerId, { x: t3.clientX, y: t3.clientY, interactive: r3 }), r3 || (e5.setPointerCapture(t3.pointerId), e5.style.cursor = "grabbing"), te2.size === 2 && (ne2 = T2());
6609
+ re2.set(t3.pointerId, { x: t3.clientX, y: t3.clientY, interactive: r3 }), r3 || (e5.setPointerCapture(t3.pointerId), e5.style.cursor = "grabbing"), re2.size === 2 && (w2 = ie2());
6600
6610
  }), e5.addEventListener("pointermove", (e6) => {
6601
- let t3 = te2.get(e6.pointerId);
6602
- if (t3) if (te2.set(e6.pointerId, { x: e6.clientX, y: e6.clientY, interactive: t3.interactive }), te2.size >= 2 && ne2) {
6603
- let e7 = T2();
6604
- if (ne2.dist > 0 && e7.dist > 0) {
6605
- let t4 = w2(e7.midX, e7.midY);
6606
- C2(ne2.dist / e7.dist, t4.x, t4.y);
6607
- }
6608
- re2(e7.midX - ne2.midX, e7.midY - ne2.midY), ne2 = e7;
6609
- } else te2.size === 1 && !t3.interactive && re2(e6.clientX - t3.x, e6.clientY - t3.y);
6611
+ let t3 = re2.get(e6.pointerId);
6612
+ if (t3) if (re2.set(e6.pointerId, { x: e6.clientX, y: e6.clientY, interactive: t3.interactive }), re2.size >= 2 && w2) {
6613
+ let e7 = ie2();
6614
+ if (w2.dist > 0 && e7.dist > 0) {
6615
+ let t4 = ne2(e7.midX, e7.midY);
6616
+ C2(w2.dist / e7.dist, t4.x, t4.y);
6617
+ }
6618
+ T2(e7.midX - w2.midX, e7.midY - w2.midY), w2 = e7;
6619
+ } else re2.size === 1 && !t3.interactive && T2(e6.clientX - t3.x, e6.clientY - t3.y);
6610
6620
  });
6611
6621
  let E2 = (t3) => {
6612
- te2.delete(t3.pointerId) && (e5.hasPointerCapture(t3.pointerId) && e5.releasePointerCapture(t3.pointerId), ne2 = te2.size >= 2 ? T2() : null, te2.size === 0 && (e5.style.cursor = "default"));
6622
+ re2.delete(t3.pointerId) && (e5.hasPointerCapture(t3.pointerId) && e5.releasePointerCapture(t3.pointerId), w2 = re2.size >= 2 ? ie2() : null, re2.size === 0 && (e5.style.cursor = "default"));
6613
6623
  };
6614
6624
  e5.addEventListener("pointerup", E2), e5.addEventListener("pointercancel", E2);
6615
6625
  }
6616
- var a_ = '"Segoe UI Symbol", "Noto Sans Symbols", "Noto Sans Symbols2", "Apple Symbols", "DejaVu Sans", serif', o_ = { background: "#1b1b1d", foreground: "#f7f3f0", dim: "#6f7580", fire: "#d9506f", earth: "#22a67a", air: "#dcb238", water: "#3f93c2", points: "#2f89ab", others: "#d69a3a", house: "#7a8695", transit: "#c19bf2", fireTint: "rgba(217,80,111,0.20)", earthTint: "rgba(34,166,122,0.20)", airTint: "rgba(220,178,56,0.20)", waterTint: "rgba(63,147,194,0.20)", zodiacFillOpacity: 0.34, houseFillOpacity: 0.1, houseStrokeOpacity: 0.45 }, s_ = { background: "#fffdf1", foreground: "#0b1220", dim: "#6b5c4a", fire: "#c9456f", earth: "#1f9968", air: "#c9a23c", water: "#1f7fa3", points: "#1f6f96", others: "#c9903f", house: "#6f8496", transit: "#7b3fb5", fireTint: "rgba(201,69,111,0.34)", earthTint: "rgba(31,153,104,0.34)", airTint: "rgba(201,162,60,0.38)", waterTint: "rgba(31,127,163,0.34)", zodiacFillOpacity: 0.48, houseFillOpacity: 0.2, houseStrokeOpacity: 0.95 };
6617
- function c_(e5) {
6618
- return e5 ? o_ : s_;
6626
+ var s_ = '"Segoe UI Symbol", "Noto Sans Symbols", "Noto Sans Symbols2", "Apple Symbols", "DejaVu Sans", serif', c_ = { background: "#1b1b1d", foreground: "#f7f3f0", dim: "#6f7580", fire: "#d9506f", earth: "#22a67a", air: "#dcb238", water: "#3f93c2", points: "#2f89ab", others: "#d69a3a", house: "#7a8695", transit: "#c19bf2", fireTint: "rgba(217,80,111,0.20)", earthTint: "rgba(34,166,122,0.20)", airTint: "rgba(220,178,56,0.20)", waterTint: "rgba(63,147,194,0.20)", zodiacFillOpacity: 0.34, houseFillOpacity: 0.1, houseStrokeOpacity: 0.45 }, l_ = { background: "#fffdf1", foreground: "#0b1220", dim: "#6b5c4a", fire: "#c9456f", earth: "#1f9968", air: "#c9a23c", water: "#1f7fa3", points: "#1f6f96", others: "#c9903f", house: "#6f8496", transit: "#7b3fb5", fireTint: "rgba(201,69,111,0.34)", earthTint: "rgba(31,153,104,0.34)", airTint: "rgba(201,162,60,0.38)", waterTint: "rgba(31,127,163,0.34)", zodiacFillOpacity: 0.48, houseFillOpacity: 0.2, houseStrokeOpacity: 0.95 };
6627
+ function u_(e5) {
6628
+ return e5 ? c_ : l_;
6619
6629
  }
6620
- function l_(e5, t2) {
6621
- let n2 = c_(t2);
6630
+ function d_(e5, t2) {
6631
+ let n2 = u_(t2);
6622
6632
  return [n2.fire, n2.earth, n2.air, n2.water][(e5 % 12 + 12) % 12 % 4];
6623
6633
  }
6624
- function u_(e5, t2) {
6625
- let n2 = c_(t2);
6634
+ function f_(e5, t2) {
6635
+ let n2 = u_(t2);
6626
6636
  return [n2.fireTint, n2.earthTint, n2.airTint, n2.waterTint][(e5 % 12 + 12) % 12 % 4];
6627
6637
  }
6628
- function d_(e5) {
6629
- let t2 = c_(e5);
6638
+ function p_(e5) {
6639
+ let t2 = u_(e5);
6630
6640
  return { ring: { stroke: t2.dim, opacity: 0.85 }, cuspIntermediate: { stroke: t2.dim, opacity: 0.85 }, cuspAngular: { stroke: t2.foreground, opacity: 0.75 }, tickMajor: { stroke: t2.foreground, opacity: 0.73 }, tickMinor: { stroke: t2.foreground, opacity: 0.48 }, cuspDash: (e6) => "".concat((e6 * 1.5).toFixed(2), " ").concat((e6 * 3).toFixed(2)), center: e5 ? t2.background : "#efeae1" };
6631
6641
  }
6632
- var f_;
6633
- function p_() {
6634
- return f_ ? f_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
6642
+ var m_;
6643
+ function h_() {
6644
+ return m_ ? m_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
6635
6645
  }
6636
- function m_(e5 = p_()) {
6646
+ function g_(e5 = h_()) {
6637
6647
  let t2 = e5 ? "dark" : "light";
6638
6648
  return document.documentElement.setAttribute("data-theme", t2), t2;
6639
6649
  }
6640
- function h_(e5) {
6641
- m_();
6650
+ function __(e5) {
6651
+ g_();
6642
6652
  try {
6643
6653
  window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
6644
- f_ || e5 == null || e5(m_(t2.matches));
6654
+ m_ || e5 == null || e5(g_(t2.matches));
6645
6655
  });
6646
6656
  } catch (e6) {
6647
6657
  }
6648
6658
  }
6649
- function g_(e5, t2) {
6659
+ function v_(e5, t2) {
6650
6660
  var n2, r2;
6651
6661
  let i2 = (e6) => {
6652
6662
  let n3 = e6 == null ? void 0 : e6.theme;
6653
6663
  if (n3 !== "light" && n3 !== "dark") return;
6654
- f_ = n3;
6655
- let r3 = document.documentElement.getAttribute("data-theme"), i3 = m_(n3 === "dark");
6664
+ m_ = n3;
6665
+ let r3 = document.documentElement.getAttribute("data-theme"), i3 = g_(n3 === "dark");
6656
6666
  i3 !== r3 && (t2 == null || t2(i3));
6657
6667
  };
6658
6668
  (n2 = e5.addEventListener) == null || n2.call(e5, "hostcontextchanged", i2), i2((r2 = e5.getHostContext) == null ? void 0 : r2.call(e5));
6659
6669
  }
6660
- function __(e5, t2) {
6670
+ function y_(e5, t2) {
6661
6671
  if (e5.length <= 1) {
6662
6672
  let t3 = /* @__PURE__ */ new Map();
6663
6673
  for (let n3 of e5) t3.set(n3.name, n3.longitude);
6664
6674
  return t3;
6665
6675
  }
6666
6676
  let n2 = [...e5].sort((e6, t3) => e6.longitude - t3.longitude), r2 = [], i2 = [];
6667
- for (let e6 of n2) r2.push(e6.longitude), i2.push(v_(e6.longitude, i2, t2));
6668
- b_(i2, r2, t2);
6677
+ for (let e6 of n2) r2.push(e6.longitude), i2.push(b_(e6.longitude, i2, t2));
6678
+ S_(i2, r2, t2);
6669
6679
  let a2 = /* @__PURE__ */ new Map();
6670
- for (let e6 = 0; e6 < n2.length; e6++) a2.set(n2[e6].name, S_(i2[e6]));
6680
+ for (let e6 = 0; e6 < n2.length; e6++) a2.set(n2[e6].name, w_(i2[e6]));
6671
6681
  return a2;
6672
6682
  }
6673
- function v_(e5, t2, n2) {
6683
+ function b_(e5, t2, n2) {
6674
6684
  if (t2.length === 0) return e5;
6675
6685
  let r2 = Math.max(0.55, n2 / 4), i2 = Math.max(8, Math.min(40, n2 * 5)), a2 = Math.floor(i2 / r2);
6676
- if (y_(e5, t2, n2)) return e5;
6686
+ if (x_(e5, t2, n2)) return e5;
6677
6687
  for (let i3 = 1; i3 <= a2; i3++) {
6678
6688
  let a3 = i3 * r2;
6679
- if (y_(e5 + a3, t2, n2)) return e5 + a3;
6680
- if (y_(e5 - a3, t2, n2)) return e5 - a3;
6689
+ if (x_(e5 + a3, t2, n2)) return e5 + a3;
6690
+ if (x_(e5 - a3, t2, n2)) return e5 - a3;
6681
6691
  }
6682
6692
  return e5;
6683
6693
  }
6684
- function y_(e5, t2, n2) {
6685
- for (let r2 of t2) if (x_(e5, r2) < n2) return false;
6694
+ function x_(e5, t2, n2) {
6695
+ for (let r2 of t2) if (C_(e5, r2) < n2) return false;
6686
6696
  return true;
6687
6697
  }
6688
- function b_(e5, t2, n2) {
6698
+ function S_(e5, t2, n2) {
6689
6699
  let r2 = e5.length;
6690
6700
  if (!(r2 <= 1)) for (let t3 = 0; t3 < 80; t3++) {
6691
6701
  let t4 = true;
6692
6702
  for (let i2 = 0; i2 < r2; i2++) for (let a2 = i2 + 1; a2 < r2; a2++) {
6693
- let r3 = n2 - x_(e5[i2], e5[a2]);
6703
+ let r3 = n2 - C_(e5[i2], e5[a2]);
6694
6704
  if (r3 > 0.01) {
6695
6705
  t4 = false;
6696
6706
  let n3 = r3 * 0.65 / 2, o2 = e5[a2] - e5[i2];
@@ -6702,128 +6712,128 @@ function b_(e5, t2, n2) {
6702
6712
  if (t4) break;
6703
6713
  }
6704
6714
  }
6705
- function x_(e5, t2) {
6715
+ function C_(e5, t2) {
6706
6716
  let n2 = ((t2 - e5) % 360 + 540) % 360 - 180;
6707
6717
  return Math.abs(n2);
6708
6718
  }
6709
- function S_(e5) {
6719
+ function w_(e5) {
6710
6720
  return (e5 % 360 + 360) % 360;
6711
6721
  }
6712
- var C_ = "north node (mean)", w_ = "north node (true)", T_ = "south node (mean)", E_ = "south node (true)", D_ = [C_, w_, T_, E_], O_ = { [C_]: C_, north_node_mean: C_, "north node": C_, north_node: C_, "mean node": C_, mean_node: C_, [w_]: w_, north_node_true: w_, "true node": w_, true_node: w_, [T_]: T_, south_node_mean: T_, "south node": T_, south_node: T_, [E_]: E_, south_node_true: E_, "true south node": E_, true_south_node: E_ };
6713
- function k_(e5) {
6722
+ var T_ = "north node (mean)", E_ = "north node (true)", D_ = "south node (mean)", O_ = "south node (true)", k_ = [T_, E_, D_, O_], A_ = { [T_]: T_, north_node_mean: T_, "north node": T_, north_node: T_, "mean node": T_, mean_node: T_, [E_]: E_, north_node_true: E_, "true node": E_, true_node: E_, [D_]: D_, south_node_mean: D_, "south node": D_, south_node: D_, [O_]: O_, south_node_true: O_, "true south node": O_, true_south_node: O_ };
6723
+ function j_(e5) {
6714
6724
  var t2;
6715
- return (t2 = O_[e5.trim().toLowerCase()]) == null ? null : t2;
6725
+ return (t2 = A_[e5.trim().toLowerCase()]) == null ? null : t2;
6716
6726
  }
6717
- function A_(e5) {
6718
- return k_(e5) !== null;
6727
+ function M_(e5) {
6728
+ return j_(e5) !== null;
6719
6729
  }
6720
- var j_ = { [C_]: "\u260A\uFE0E", [w_]: "\u260A\uFE0E", [T_]: "\u260B\uFE0E", [E_]: "\u260B\uFE0E" }, M_ = { [C_]: "soul direction", [w_]: "soul direction", [T_]: "past-life gifts", [E_]: "past-life gifts" };
6721
- function N_(e5) {
6730
+ var N_ = { [T_]: "\u260A\uFE0E", [E_]: "\u260A\uFE0E", [D_]: "\u260B\uFE0E", [O_]: "\u260B\uFE0E" }, P_ = { [T_]: "soul direction", [E_]: "soul direction", [D_]: "past-life gifts", [O_]: "past-life gifts" };
6731
+ function F_(e5) {
6722
6732
  let t2 = /* @__PURE__ */ new Set();
6723
6733
  for (let n2 of e5) {
6724
- let e6 = k_(n2);
6734
+ let e6 = j_(n2);
6725
6735
  e6 && t2.add(e6);
6726
6736
  }
6727
6737
  return t2.has("north node (mean)") && t2.has("north node (true)") || t2.has("south node (mean)") && t2.has("south node (true)");
6728
6738
  }
6729
- function P_(e5, t2) {
6730
- let n2 = new Set(e5.map((e6) => k_(e6.name)).filter(Boolean)), r2 = /* @__PURE__ */ new Set(), i2 = [[C_, w_], [T_, E_]];
6739
+ function I_(e5, t2) {
6740
+ let n2 = new Set(e5.map((e6) => j_(e6.name)).filter(Boolean)), r2 = /* @__PURE__ */ new Set(), i2 = [[T_, E_], [D_, O_]];
6731
6741
  for (let [e6, a2] of i2) n2.has(e6) && n2.has(a2) && r2.add(t2 === "true" ? e6 : a2);
6732
6742
  return r2.size === 0 ? e5 : e5.filter((e6) => {
6733
6743
  var t3;
6734
- return !r2.has((t3 = k_(e6.name)) == null ? "" : t3);
6744
+ return !r2.has((t3 = j_(e6.name)) == null ? "" : t3);
6735
6745
  });
6736
6746
  }
6737
- var F_ = "lilith (mean)", I_ = "lilith (true)", L_ = "lilith (interpolated)", R_ = [F_, I_, L_], z_ = { [F_]: F_, lilith: F_, mean_lilith: F_, lilith_mean: F_, "mean apogee": F_, "black moon lilith": F_, [I_]: I_, lilith_true: I_, true_lilith: I_, "osculating apogee": I_, [L_]: L_, lilith_interpolated: L_, lilith_natural: L_, "interpolated apogee": L_ };
6738
- function B_(e5) {
6747
+ var L_ = "lilith (mean)", R_ = "lilith (true)", z_ = "lilith (interpolated)", B_ = [L_, R_, z_], V_ = { [L_]: L_, lilith: L_, mean_lilith: L_, lilith_mean: L_, "mean apogee": L_, "black moon lilith": L_, [R_]: R_, lilith_true: R_, true_lilith: R_, "osculating apogee": R_, [z_]: z_, lilith_interpolated: z_, lilith_natural: z_, "interpolated apogee": z_ };
6748
+ function H_(e5) {
6739
6749
  var t2;
6740
- return (t2 = z_[e5.trim().toLowerCase()]) == null ? null : t2;
6750
+ return (t2 = V_[e5.trim().toLowerCase()]) == null ? null : t2;
6741
6751
  }
6742
- var V_ = { [F_]: "\u26B8\uFE0E", [I_]: "\u26B8\uFE0E", [L_]: "\u26B8\uFE0E" }, H_ = { [F_]: "primal feminine & shadow", [I_]: "primal feminine & shadow", [L_]: "primal feminine & shadow" };
6743
- function U_(e5) {
6752
+ var U_ = { [L_]: "\u26B8\uFE0E", [R_]: "\u26B8\uFE0E", [z_]: "\u26B8\uFE0E" }, W_ = { [L_]: "primal feminine & shadow", [R_]: "primal feminine & shadow", [z_]: "primal feminine & shadow" };
6753
+ function G_(e5) {
6744
6754
  var t2, n2;
6745
- return (t2 = (n2 = k_(e5)) == null ? B_(e5) : n2) == null ? e5 : t2;
6755
+ return (t2 = (n2 = j_(e5)) == null ? H_(e5) : n2) == null ? e5 : t2;
6746
6756
  }
6747
- var W_ = 250, G_ = 250, K_ = 240, q_ = 204, J_ = 190, Y_ = 152, X_ = 118, Z_ = 112, Q_ = 15, $_ = 20;
6757
+ var K_ = 250, q_ = 250, J_ = 240, Y_ = 204, X_ = 190, Z_ = 152, Q_ = 118, $_ = 112, ev = 15, tv = 20;
6748
6758
  function Y(e5, t2, n2) {
6749
6759
  let r2 = -(e5 - n2 + 180) * Math.PI / 180;
6750
- return { x: W_ + t2 * Math.cos(r2), y: G_ + t2 * Math.sin(r2) };
6760
+ return { x: K_ + t2 * Math.cos(r2), y: q_ + t2 * Math.sin(r2) };
6751
6761
  }
6752
6762
  function X(e5) {
6753
6763
  return document.createElementNS("http://www.w3.org/2000/svg", e5);
6754
6764
  }
6755
- function ev(e5, t2, n2, r2, i2) {
6765
+ function nv(e5, t2, n2, r2, i2) {
6756
6766
  let a2 = +(((t2 - e5) % 360 + 360) % 360 > 180), o2 = Y(e5, n2, i2), s2 = Y(e5, r2, i2), c2 = Y(t2, r2, i2), l2 = Y(t2, n2, i2);
6757
6767
  return ["M ".concat(o2.x.toFixed(2), " ").concat(o2.y.toFixed(2)), "L ".concat(s2.x.toFixed(2), " ").concat(s2.y.toFixed(2)), "A ".concat(r2, " ").concat(r2, " 0 ").concat(a2, " 0 ").concat(c2.x.toFixed(2), " ").concat(c2.y.toFixed(2)), "L ".concat(l2.x.toFixed(2), " ").concat(l2.y.toFixed(2)), "A ".concat(n2, " ").concat(n2, " 0 ").concat(a2, " 1 ").concat(o2.x.toFixed(2), " ").concat(o2.y.toFixed(2)), "Z"].join(" ");
6758
6768
  }
6759
- var tv = { sun: "\u2609\uFE0E", moon: "\u263D\uFE0E", mercury: "\u263F\uFE0E", venus: "\u2640\uFE0E", mars: "\u2642\uFE0E", jupiter: "\u2643\uFE0E", saturn: "\u2644\uFE0E", uranus: "\u2645\uFE0E", neptune: "\u2646\uFE0E", pluto: "\u2647\uFE0E", "north node": "\u260A\uFE0E", "south node": "\u260B\uFE0E", chiron: "\u26B7\uFE0E", "true node": "\u260A\uFE0E", ...j_, ...V_, mean_lilith: "\u26B8\uFE0E", lilith: "\u26B8\uFE0E", true_lilith: "\u26B8\uFE0E", ceres: "\u26B3\uFE0E", juno: "\u26B5\uFE0E", vesta: "\u26B6\uFE0E", pallas: "\u26B4\uFE0E", pholus: "\u2BDB\uFE0E", vertex: "Vx", part_of_fortune: "\u2295\uFE0E", "part of fortune": "\u2295\uFE0E", eris: "\u2BF0\uFE0E", sedna: "\u2BF2\uFE0E" }, nv = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), rv = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], iv = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
6760
- function av(e5) {
6769
+ var rv = { 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", ...N_, ...U_, 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" }, iv = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e5) => e5 + "\uFE0E"), av = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], ov = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
6770
+ function sv(e5) {
6761
6771
  var t2;
6762
6772
  let n2 = e5.toLowerCase(), r2 = "--aspect-".concat(n2);
6763
6773
  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);
6764
6774
  }
6765
- var ov = p_, sv = (e5) => l_(e5, ov());
6766
- function cv(e5) {
6775
+ var cv = h_, lv = (e5) => d_(e5, cv());
6776
+ function uv(e5) {
6767
6777
  let t2 = "--planet-".concat(e5.toLowerCase().replace(/\s+/g, "-"));
6768
6778
  return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
6769
6779
  }
6770
- var lv = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node", ...D_]), uv = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", ...R_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), dv = /* @__PURE__ */ new Set([...lv, ...uv]);
6771
- function fv(e5) {
6780
+ var dv = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node", ...k_]), fv = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", ...B_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), pv = /* @__PURE__ */ new Set([...dv, ...fv]);
6781
+ function mv(e5) {
6772
6782
  let t2 = (e5 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
6773
- return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(rv[n2]);
6783
+ return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(av[n2]);
6774
6784
  }
6775
6785
  function Z(e5) {
6776
6786
  return e5.replace(/\b\w/g, (e6) => e6.toUpperCase());
6777
6787
  }
6778
- var pv = "true";
6779
- function mv(e5) {
6780
- pv = e5;
6788
+ var hv = "true";
6789
+ function gv(e5) {
6790
+ hv = e5;
6781
6791
  }
6782
- function hv(e5) {
6783
- return P_(e5.map((e6) => {
6784
- let t2 = U_(e6.name);
6792
+ function _v(e5) {
6793
+ return I_(e5.map((e6) => {
6794
+ let t2 = G_(e6.name);
6785
6795
  return t2 === e6.name ? e6 : { ...e6, name: t2 };
6786
- }), pv);
6796
+ }), hv);
6787
6797
  }
6788
- function gv(e5) {
6789
- return Array.isArray(e5) ? hv(e5) : e5 && typeof e5 == "object" ? hv(Object.entries(e5).filter(([e6]) => dv.has(e6.toLowerCase())).map(([e6, t2]) => {
6798
+ function vv(e5) {
6799
+ return Array.isArray(e5) ? _v(e5) : e5 && typeof e5 == "object" ? _v(Object.entries(e5).filter(([e6]) => pv.has(e6.toLowerCase())).map(([e6, t2]) => {
6790
6800
  var n2, r2, i2, a2, o2, s2;
6791
6801
  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 };
6792
6802
  })) : [];
6793
6803
  }
6794
- var _v = document.getElementById("tooltip");
6795
- function vv(e5, t2, n2, r2, i2) {
6796
- _v.innerHTML = '\n <div class="tooltip-title">'.concat(n2, '</div>\n <div class="tooltip-detail">').concat(r2, "</div>\n ").concat(i2 ? '<div class="tooltip-hint">'.concat(i2, "</div>") : "", "\n ");
6797
- let a2 = _v.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
6798
- c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), _v.style.left = "".concat(Math.max(14, c2), "px"), _v.style.top = "".concat(Math.max(14, l2), "px"), _v.classList.add("visible");
6804
+ var yv = document.getElementById("tooltip");
6805
+ function bv(e5, t2, n2, r2, i2) {
6806
+ yv.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 ");
6807
+ let a2 = yv.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e5 + 14, l2 = t2 + 14;
6808
+ c2 + o2 > window.innerWidth - 14 && (c2 = e5 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), yv.style.left = "".concat(Math.max(14, c2), "px"), yv.style.top = "".concat(Math.max(14, l2), "px"), yv.classList.add("visible");
6799
6809
  }
6800
- function yv() {
6801
- _v.classList.remove("visible");
6810
+ function xv() {
6811
+ yv.classList.remove("visible");
6802
6812
  }
6803
- var bv = { sun: "identity & vitality", moon: "emotions & instincts", mercury: "mind & communication", venus: "love & values", mars: "drive & desire", jupiter: "expansion & meaning", saturn: "discipline & mastery", uranus: "innovation & rebellion", neptune: "dreams & transcendence", pluto: "transformation & power", chiron: "wound & healing", "north node": "soul direction", "south node": "past-life gifts", "true node": "soul direction", ...M_, ...H_, mean_lilith: "primal feminine & shadow", lilith: "primal feminine & shadow", true_lilith: "primal feminine & shadow", ceres: "nurturing & sustenance", juno: "partnership & commitment", vesta: "devotion & sacred focus", pallas: "wisdom & strategy", pholus: "catalyst & small cause, big effect", vertex: "fated encounters", part_of_fortune: "joy & worldly success", "part of fortune": "joy & worldly success", eris: "discord & radical individuation", sedna: "deep betrayal & transcendence" }, xv = { 1: "self & first impressions", 2: "resources & values", 3: "communication & learning", 4: "home & roots", 5: "creativity & joy", 6: "health & service", 7: "partnerships & others", 8: "transformation & shared resources", 9: "philosophy & exploration", 10: "career & public role", 11: "community & ideals", 12: "solitude & the unconscious" }, Sv = { Aries: "initiative & courage", Taurus: "stability & patience", Gemini: "curiosity & adaptability", Cancer: "nurturing & emotional depth", Leo: "self-expression & confidence", Virgo: "precision & service", Libra: "harmony & relationships", Scorpio: "intensity & transformation", Sagittarius: "expansion & seeking", Capricorn: "discipline & ambition", Aquarius: "innovation & vision", Pisces: "empathy & imagination" }, Cv = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
6804
- function wv(e5) {
6813
+ var Sv = { 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", ...P_, ...W_, 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" }, Cv = { 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" }, wv = { 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" }, Tv = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
6814
+ function Ev(e5) {
6805
6815
  return Math.floor((e5 % 360 + 360) % 360 / 30);
6806
6816
  }
6807
- var Tv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, Ev = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
6808
- function Dv(e5, t2) {
6809
- let n2 = e5.toLowerCase(), r2 = wv(t2), i2 = Tv[n2];
6817
+ var Dv = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, Ov = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
6818
+ function kv(e5, t2) {
6819
+ let n2 = e5.toLowerCase(), r2 = Ev(t2), i2 = Dv[n2];
6810
6820
  if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
6811
6821
  if (i2 && i2.map((e6) => (e6 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
6812
- let a2 = Ev[n2];
6822
+ let a2 = Ov[n2];
6813
6823
  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;
6814
6824
  }
6815
- var Ov = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], kv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
6816
- function Av(e5, t2) {
6825
+ var Av = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], jv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
6826
+ function Mv(e5, t2) {
6817
6827
  return [e5.toLowerCase(), t2.toLowerCase()].sort().join("|");
6818
6828
  }
6819
- function jv(e5, t2) {
6829
+ function Nv(e5, t2) {
6820
6830
  return e5.filter((e6) => {
6821
6831
  var n2;
6822
6832
  return ((n2 = e6.type) == null ? "" : n2).toLowerCase() === t2;
6823
6833
  });
6824
6834
  }
6825
- function Mv(e5, t2) {
6826
- let n2 = [], r2 = jv(e5, "square"), i2 = jv(e5, "opposition"), a2 = jv(e5, "trine"), o2 = jv(e5, "sextile"), s2 = jv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
6835
+ function Pv(e5, t2) {
6836
+ let n2 = [], r2 = Nv(e5, "square"), i2 = Nv(e5, "opposition"), a2 = Nv(e5, "trine"), o2 = Nv(e5, "sextile"), s2 = Nv(e5, "quincunx"), c2 = /* @__PURE__ */ new Set();
6827
6837
  for (let e6 of i2) {
6828
6838
  let i3 = e6.planet1.toLowerCase(), a3 = e6.planet2.toLowerCase(), o3 = r2.filter((e7) => e7.planet1.toLowerCase() === i3 || e7.planet2.toLowerCase() === i3);
6829
6839
  for (let e7 of o3) {
@@ -6832,8 +6842,8 @@ function Mv(e5, t2) {
6832
6842
  let s3 = [i3, a3, o4].sort().join("|");
6833
6843
  if (!c2.has(s3) && r2.find((e8) => e8.planet1.toLowerCase() === o4 && e8.planet2.toLowerCase() === a3 || e8.planet2.toLowerCase() === o4 && e8.planet1.toLowerCase() === a3)) {
6834
6844
  c2.add(s3);
6835
- let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(kv[wv(e8.longitude)]) : "";
6836
- n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [Av(i3, a3), Av(i3, o4), Av(a3, o4)] });
6845
+ let e8 = t2.find((e9) => e9.name.toLowerCase() === o4), r3 = e8 ? Z(jv[Ev(e8.longitude)]) : "";
6846
+ n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [Mv(i3, a3), Mv(i3, o4), Mv(a3, o4)] });
6837
6847
  break;
6838
6848
  }
6839
6849
  }
@@ -6843,7 +6853,7 @@ function Mv(e5, t2) {
6843
6853
  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));
6844
6854
  if (!c3) continue;
6845
6855
  let u3 = o3.find((e7) => e7 !== c3), d3 = s3.find((e7) => e7 !== c3), f3 = [u3, c3, d3].sort().join("|");
6846
- l2.has(f3) || a2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (l2.add(f3), n2.push({ name: "Grand Trine", description: "".concat(Z(u3), " \xB7 ").concat(Z(c3), " \xB7 ").concat(Z(d3)), planets: [u3, c3, d3], aspectKeys: [Av(u3, c3), Av(c3, d3), Av(u3, d3)] }));
6856
+ 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: [Mv(u3, c3), Mv(c3, d3), Mv(u3, d3)] }));
6847
6857
  }
6848
6858
  if (i2.length >= 2 && r2.length >= 4) for (let e6 = 0; e6 < i2.length; e6++) for (let a3 = e6 + 1; a3 < i2.length; a3++) {
6849
6859
  let o3 = i2[e6], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
@@ -6854,19 +6864,19 @@ function Mv(e5, t2) {
6854
6864
  var n3, r3;
6855
6865
  return { name: e8, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e8)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
6856
6866
  }).sort((e8, t3) => e8.lon - t3.lon).map((e8) => e8.name);
6857
- n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [Av(c3, l3), Av(u3, d3), ...f3.map(([e8, t3]) => Av(e8, t3))] });
6867
+ n2.push({ name: "Grand Cross", description: e7.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [Mv(c3, l3), Mv(u3, d3), ...f3.map(([e8, t3]) => Mv(e8, t3))] });
6858
6868
  }
6859
6869
  }
6860
- let u2 = /* @__PURE__ */ new Set(["chiron"]), d2 = t2.filter((e6) => !u2.has(e6.name.toLowerCase()) && !A_(e6.name)).map((e6) => ({ name: e6.name.toLowerCase(), lon: e6.longitude })), f2 = /* @__PURE__ */ new Map();
6870
+ let u2 = /* @__PURE__ */ new Set(["chiron"]), d2 = t2.filter((e6) => !u2.has(e6.name.toLowerCase()) && !M_(e6.name)).map((e6) => ({ name: e6.name.toLowerCase(), lon: e6.longitude })), f2 = /* @__PURE__ */ new Map();
6861
6871
  for (let { name: e6, lon: t3 } of d2) {
6862
6872
  var p2;
6863
- let n3 = wv(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
6873
+ let n3 = Ev(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
6864
6874
  r3.push(e6), f2.set(n3, r3);
6865
6875
  }
6866
6876
  for (let [e6, t3] of f2) if (t3.length >= 3) {
6867
6877
  let r3 = [...t3].sort().join("|"), i3 = [];
6868
- for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(Av(t3[e7], t3[n3]));
6869
- n2.push({ name: "Stellium", description: "".concat(rv[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
6878
+ for (let e7 = 0; e7 < t3.length; e7++) for (let n3 = e7 + 1; n3 < t3.length; n3++) i3.push(Mv(t3[e7], t3[n3]));
6879
+ n2.push({ name: "Stellium", description: "".concat(av[e6], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
6870
6880
  }
6871
6881
  let m2 = [...d2].sort((e6, t3) => e6.lon - t3.lon), h2 = [...m2, ...m2.map((e6) => ({ ...e6, lon: e6.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
6872
6882
  for (let e6 = 0; e6 < h2.length - 2; e6++) {
@@ -6879,7 +6889,7 @@ function Mv(e5, t2) {
6879
6889
  if (g2.has(t4)) continue;
6880
6890
  if (g2.add(t4), !n2.some((e8) => e8._dedupeKey === t4)) {
6881
6891
  let t5 = [];
6882
- for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(Av(e7[n3], e7[r4]));
6892
+ for (let n3 = 0; n3 < e7.length; n3++) for (let r4 = n3 + 1; r4 < e7.length; r4++) t5.push(Mv(e7[n3], e7[r4]));
6883
6893
  n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e7.map(Z).join(", ")), planets: e7, aspectKeys: t5 });
6884
6894
  }
6885
6895
  }
@@ -6889,7 +6899,7 @@ function Mv(e5, t2) {
6889
6899
  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));
6890
6900
  if (!l3) continue;
6891
6901
  let u3 = a3.find((e7) => e7 !== l3), d3 = c3.find((e7) => e7 !== l3), f3 = [l3, u3, d3].sort().join("|");
6892
- _2.has(f3) || o2.find((e7) => e7.planet1.toLowerCase() === u3 && e7.planet2.toLowerCase() === d3 || e7.planet2.toLowerCase() === u3 && e7.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [Av(l3, u3), Av(l3, d3), Av(u3, d3)] }));
6902
+ _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: [Mv(l3, u3), Mv(l3, d3), Mv(u3, d3)] }));
6893
6903
  }
6894
6904
  let v2 = /* @__PURE__ */ new Set(), ee2 = n2.filter((e6) => e6.name === "Grand Trine");
6895
6905
  for (let e6 of ee2) {
@@ -6900,43 +6910,43 @@ function Mv(e5, t2) {
6900
6910
  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);
6901
6911
  if (!p3 || !m3) continue;
6902
6912
  let h3 = [t3, r3, a3, f3].sort().join("|");
6903
- v2.has(h3) || (v2.add(h3), n2.push({ name: "Kite", description: "Apex: ".concat(Z(f3), " \xB7 Tail: ").concat(Z(c3)), planets: [t3, r3, a3, f3], aspectKeys: [...e6.aspectKeys, Av(f3, c3), Av(f3, l3), Av(f3, u3)] }));
6913
+ 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, Mv(f3, c3), Mv(f3, l3), Mv(f3, u3)] }));
6904
6914
  }
6905
6915
  }
6906
6916
  for (let e6 of n2) delete e6._dedupeKey;
6907
6917
  return n2;
6908
6918
  }
6909
- var Nv = null, Pv = null, Q = null, Fv = null, Iv = null, Lv = null;
6910
- function Rv(e5) {
6911
- Lv = e5;
6919
+ var Fv = null, Iv = null, Q = null, Lv = null, Rv = null, zv = null;
6920
+ function Bv(e5) {
6921
+ zv = e5;
6912
6922
  }
6913
- var zv = /* @__PURE__ */ new Map();
6914
- function Bv() {
6923
+ var Vv = /* @__PURE__ */ new Map();
6924
+ function Hv() {
6915
6925
  var e5;
6916
- if (Nv) return Nv;
6926
+ if (Fv) return Fv;
6917
6927
  let t2 = document.getElementById("info-panel");
6918
- if (t2) return Nv = t2, Nv;
6919
- Nv = document.createElement("div"), Nv.id = "info-panel", Nv.className = "info-panel";
6928
+ if (t2) return Fv = t2, Fv;
6929
+ Fv = document.createElement("div"), Fv.id = "info-panel", Fv.className = "info-panel";
6920
6930
  let n2 = document.getElementById("chart-container");
6921
- return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(Nv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(Nv), Nv;
6931
+ return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(Fv, n2.nextSibling) : (e5 = document.getElementById("app")) == null || e5.appendChild(Fv), Fv;
6922
6932
  }
6923
- function Vv(e5, t2, n2) {
6933
+ function Uv(e5, t2, n2) {
6924
6934
  var r2, i2, a2, o2;
6925
- let s2 = Bv(), c2 = (r2 = tv[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = nv[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = Dv(t2.name, t2.longitude), d2 = u2 ? '<span class="dignity-badge '.concat(u2.cssClass, '" title="').concat(u2.label, '">').concat(u2.emoji, " ").concat(u2.label, "</span>") : "", f2 = n2.filter((e6) => e6.planet1.toLowerCase() === t2.name.toLowerCase() || e6.planet2.toLowerCase() === t2.name.toLowerCase()).sort((e6, t3) => {
6935
+ let s2 = Hv(), c2 = (r2 = rv[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = iv[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = kv(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) => {
6926
6936
  var n3, r3;
6927
6937
  return ((n3 = e6.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
6928
6938
  }), p2 = f2.length ? f2.map((e6) => {
6929
6939
  var n3, r3, i3, a3, o3, s3, c3;
6930
- let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = tv[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = iv[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = av((c3 = e6.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e6.orb == null ? "" : "".concat(e6.orb.toFixed(1), "\xB0"), m3 = e6.applying === true ? "\u2197" : e6.applying === false ? "\u2198" : "\xB7";
6940
+ let l3 = e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, u3 = (n3 = rv[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = ov[(a3 = (o3 = e6.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e6.type : i3) == null ? "\u2014" : r3, f3 = (s3 = sv((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";
6931
6941
  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>");
6932
- }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6933
- s2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph">'.concat(c2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z(t2.name), "</strong>").concat(t2.retrograde ? " <span class='retro'>\u211E</span>" : "", "\n ").concat(d2, '\n </div>\n <div class="info-pos">').concat(l2, " ").concat(fv(t2.longitude)).concat(t2.house ? " \xB7 House ".concat(t2.house) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Aspects</div>\n <div class="aspects-list">').concat(p2, "</div>\n ").concat(m2, "\n "), s2.classList.add("visible"), s2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (a2 = document.getElementById("info-close-btn")) == null || a2.addEventListener("click", () => {
6934
- Jv(), ny();
6942
+ }).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = Rv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
6943
+ 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(mv(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", () => {
6944
+ Xv(), iy();
6935
6945
  }), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
6936
6946
  var e6, n3, r3, i3, a3;
6937
- if (!Iv) return;
6947
+ if (!Rv) return;
6938
6948
  let o3 = document.getElementById("ask-claude-btn");
6939
- !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), Iv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? fv(t2.longitude) : e6, house: (n3 = t2.house) == null ? null : n3, retrograde: (r3 = t2.retrograde) == null ? false : r3, speed: (i3 = t2.speed) == null ? null : i3, dignity: (a3 = u2 == null ? void 0 : u2.label) == null ? null : a3, aspects: f2.map((e7) => ({ other: e7.planet1.toLowerCase() === t2.name.toLowerCase() ? e7.planet2 : e7.planet1, type: e7.type, orb: e7.orb, applying: e7.applying })) } }).then(() => {
6949
+ !o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), Rv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e6 = t2.sign) == null ? mv(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(() => {
6940
6950
  o3.textContent = "\u2713 Sent", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
6941
6951
  o3.textContent = "\u2728 Interpret this", o3.classList.remove("sent"), o3.disabled = false;
6942
6952
  }, 2500);
@@ -6945,16 +6955,16 @@ function Vv(e5, t2, n2) {
6945
6955
  }));
6946
6956
  });
6947
6957
  }
6948
- function Hv(e5, t2, n2) {
6958
+ function Wv(e5, t2, n2) {
6949
6959
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
6950
- let p2 = Bv(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = tv[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = tv[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = iv[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = av((c2 = (l2 = t2.type) == null ? void 0 : l2.toLowerCase()) == null ? "" : c2), y2 = t2.orb == null ? "unknown orb" : "".concat(t2.orb.toFixed(2), "\xB0"), b2 = t2.applying === true ? "Applying (growing closer)" : t2.applying === false ? "Separating (moving apart)" : "", x2 = m2 ? "".concat(fv(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(fv(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6951
- p2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(ee2, '">').concat(v2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(Z((u2 = t2.type) == null ? "Aspect" : u2), '</strong>\n </div>\n <div class="info-pos">').concat(y2).concat(b2 ? " \xB7 ".concat(b2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in Aspect</div>\n <div class="aspect-pair-row">\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(g2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet1), '</div>\n <div class="aspect-pair-pos">').concat(x2, '</div>\n </div>\n </div>\n <span class="aspect-pair-sym" style="color:').concat(ee2, '">').concat(v2, '</span>\n <div class="aspect-pair-planet">\n <span class="aspect-pair-glyph">').concat(_2, '</span>\n <div>\n <div class="aspect-pair-name">').concat(Z(t2.planet2), '</div>\n <div class="aspect-pair-pos">').concat(S2, "</div>\n </div>\n </div>\n </div>\n ").concat(C2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
6952
- Jv(), ny();
6960
+ let p2 = Hv(), m2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e6) => e6.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = rv[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = rv[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = ov[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = sv((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(mv(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", te2 = h2 ? "".concat(mv(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", S2 = Rv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6961
+ 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(te2, "</div>\n </div>\n </div>\n </div>\n ").concat(S2, "\n "), p2.classList.add("visible"), p2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (d2 = document.getElementById("info-close-btn")) == null || d2.addEventListener("click", () => {
6962
+ Xv(), iy();
6953
6963
  }), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
6954
6964
  var e6, n3, r3, i3, a3, o3, s3, c3;
6955
- if (!Iv) return;
6965
+ if (!Rv) return;
6956
6966
  let l3 = document.getElementById("ask-claude-btn");
6957
- !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), Iv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e6 = t2.type) == null ? null : e6, orb: (n3 = t2.orb) == null ? null : n3, applying: (r3 = t2.applying) == null ? null : r3, angle: (i3 = t2.angle) == null ? null : i3, planet1_sign: (a3 = m2 == null ? void 0 : m2.sign) == null ? null : a3, planet1_house: (o3 = m2 == null ? void 0 : m2.house) == null ? null : o3, planet2_sign: (s3 = h2 == null ? void 0 : h2.sign) == null ? null : s3, planet2_house: (c3 = h2 == null ? void 0 : h2.house) == null ? null : c3 } }).then(() => {
6967
+ !l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), Rv({ 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(() => {
6958
6968
  l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
6959
6969
  l3.textContent = "Interpret", l3.classList.remove("sent"), l3.disabled = false;
6960
6970
  }, 2500);
@@ -6963,22 +6973,22 @@ function Hv(e5, t2, n2) {
6963
6973
  }));
6964
6974
  });
6965
6975
  }
6966
- function Uv(e5, t2, n2) {
6976
+ function Gv(e5, t2, n2) {
6967
6977
  var r2, i2, a2, o2, s2;
6968
- let c2 = Bv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = nv[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? rv[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
6978
+ let c2 = Hv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = iv[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? av[l2] : a2) == null ? "" : i2, f2 = n2.filter((e6) => e6.house === t2.number), p2 = f2.length ? f2.map((e6) => {
6969
6979
  var t3;
6970
- let n3 = (t3 = tv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = fv(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6980
+ let n3 = (t3 = rv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = mv(e6.longitude), i3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "";
6971
6981
  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>");
6972
- }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = Iv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6982
+ }).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = Rv ? '<button class="ask-claude-btn" id="ask-claude-btn">Interpret</button>' : "";
6973
6983
  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", () => {
6974
- Jv(), ny();
6984
+ Xv(), iy();
6975
6985
  }), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
6976
6986
  var e6;
6977
- if (!Iv) return;
6987
+ if (!Rv) return;
6978
6988
  let n3 = document.getElementById("ask-claude-btn");
6979
- !n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), Iv({ type: "house", data: { house_number: t2.number, sign: d2, cusp_longitude: t2.cusp_lon, ruler: (e6 = t2.ruler) == null ? null : e6, planets_in_house: f2.map((e7) => {
6989
+ !n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), Rv({ 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) => {
6980
6990
  var t3, n4;
6981
- return { name: e7.name, sign: (t3 = e7.sign) == null ? fv(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6991
+ return { name: e7.name, sign: (t3 = e7.sign) == null ? mv(e7.longitude) : t3, retrograde: (n4 = e7.retrograde) == null ? false : n4 };
6982
6992
  }) } }).then(() => {
6983
6993
  n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
6984
6994
  n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
@@ -6988,22 +6998,22 @@ function Uv(e5, t2, n2) {
6988
6998
  }));
6989
6999
  });
6990
7000
  }
6991
- var Wv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
6992
- function Gv(e5, t2, n2) {
7001
+ var Kv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
7002
+ function qv(e5, t2, n2) {
6993
7003
  var r2, i2, a2, o2, s2;
6994
- let c2 = Bv(), l2 = rv[t2], u2 = nv[t2], d2 = Z(Ov[t2]), f2 = Z(kv[t2]), p2 = (r2 = Wv[l2]) == null ? "" : r2, m2 = (i2 = tv[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
7004
+ let c2 = Hv(), l2 = av[t2], u2 = iv[t2], d2 = Z(Av[t2]), f2 = Z(jv[t2]), p2 = (r2 = Kv[l2]) == null ? "" : r2, m2 = (i2 = rv[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e6) => Math.floor((e6.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e6) => {
6995
7005
  var t3;
6996
- let n3 = (t3 = tv[e6.name.toLowerCase()]) == null ? e6.name : t3, r3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e6.longitude % 30 - r3) * 60), a3 = e6.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = Dv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
7006
+ let n3 = (t3 = rv[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 = kv(e6.name, e6.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
6997
7007
  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>");
6998
- }).join("") : '<div class="no-aspects">No planets in '.concat(l2, "</div>"), _2 = (a2 = { Fire: "\u{1F525}", Earth: "\u{1F33F}", Air: "\u{1F4A8}", Water: "\u{1F4A7}" }[d2]) == null ? "" : a2, v2 = Iv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
6999
- c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(sv(t2), '">').concat(u2, '</span>\n <div class="info-title">\n <div class="info-name-row">\n <strong>').concat(l2, '</strong>\n </div>\n <div class="info-pos">').concat(_2, " ").concat(d2, " \xB7 ").concat(f2).concat(p2 ? " \xB7 Ruled by ".concat(m2, " ").concat(p2) : "", '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="aspects-title">Planets in ').concat(l2, '</div>\n <div class="aspects-list">').concat(g2, "</div>\n ").concat(v2, "\n "), c2.classList.add("visible"), c2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (o2 = document.getElementById("info-close-btn")) == null || o2.addEventListener("click", () => {
7000
- Jv(), ny();
7008
+ }).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 = Rv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Interpret '.concat(l2, "</button>") : "";
7009
+ c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(lv(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", () => {
7010
+ Xv(), iy();
7001
7011
  }), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
7002
- if (!Iv) return;
7012
+ if (!Rv) return;
7003
7013
  let e6 = document.getElementById("sign-ask-claude-btn");
7004
- !e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), Iv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
7014
+ !e6 || e6.disabled || (e6.disabled = true, e6.textContent = "Sending\u2026", e6.classList.add("sending"), Rv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e7) => {
7005
7015
  var t3, n3;
7006
- return { name: e7.name, longitude: e7.longitude, position: fv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
7016
+ return { name: e7.name, longitude: e7.longitude, position: mv(e7.longitude), retrograde: (t3 = e7.retrograde) == null ? false : t3, house: (n3 = e7.house) == null ? null : n3 };
7007
7017
  }) } }).then(() => {
7008
7018
  e6.textContent = "Sent", e6.classList.remove("sending"), e6.classList.add("sent"), setTimeout(() => {
7009
7019
  e6.textContent = "Interpret ".concat(l2), e6.classList.remove("sent"), e6.disabled = false;
@@ -7013,17 +7023,17 @@ function Gv(e5, t2, n2) {
7013
7023
  }));
7014
7024
  });
7015
7025
  }
7016
- var Kv = { ASC: { title: "Ascendant", symbol: "AC", keyword: "self & first impressions", meaning: "The Ascendant is the mask you wear before the world \u2014 your embodied presence, physical appearance, and instinctive approach to new situations. It colours every first impression you make.", themes: ["identity", "appearance", "beginnings", "vitality", "self-projection"] }, DSC: { title: "Descendant", symbol: "DC", keyword: "partnership & mirrors", meaning: "The Descendant describes what you seek in others and the qualities you project onto relationships. It is the shadow-partner of the Ascendant \u2014 the face you recognise in those you're drawn to.", themes: ["partnership", "marriage", "open enemies", "projection", "attraction"] }, MC: { title: "Midheaven", symbol: "MC", keyword: "vocation & public legacy", meaning: "The Midheaven (Medium Coeli) marks the highest point of the chart and governs reputation, career, and the long arc of your public life. It describes the contribution the world remembers you for.", themes: ["career", "ambition", "reputation", "authority", "life direction"] }, IC: { title: "Imum Coeli", symbol: "IC", keyword: "roots & inner foundation", meaning: "The IC (Imum Coeli) anchors the chart at its lowest point \u2014 home, ancestry, psychological foundations, and the private self that sustains the public Midheaven. It is where you return to be restored.", themes: ["home", "family", "ancestry", "inner life", "psychological roots"] } };
7017
- function qv(e5, t2, n2) {
7026
+ var Jv = { 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"] } };
7027
+ function Yv(e5, t2, n2) {
7018
7028
  var r2, i2;
7019
- let a2 = Bv(), o2 = Kv[t2];
7029
+ let a2 = Hv(), o2 = Jv[t2];
7020
7030
  if (!o2) return;
7021
- let s2 = fv(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(Ov[c2]), u2 = Z(kv[c2]), d2 = nv[c2], f2 = sv(c2);
7031
+ let s2 = mv(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(Av[c2]), u2 = Z(jv[c2]), d2 = iv[c2], f2 = lv(c2);
7022
7032
  a2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:#7060b8;font-family:system-ui;font-weight:700;font-size:15px">'.concat(o2.symbol, '</span>\n <div class="info-title">\n <div class="info-name-row"><strong>').concat(o2.title, '</strong></div>\n <div class="info-pos">').concat(o2.keyword, '</div>\n </div>\n <button class="info-close" id="info-close-btn">\u2715</button>\n </div>\n <div class="planet-in-sign" style="margin:8px 0 4px">\n <span style="color:').concat(f2, ';font-family:serif;font-size:14px;margin-right:4px">').concat(d2, '</span>\n <span style="font-size:12px;color:var(--text-muted,#888)">').concat(s2, " &nbsp;\xB7&nbsp; ").concat(l2, " \xB7 ").concat(u2, '</span>\n </div>\n <div class="planet-meaning" style="font-size:12px;line-height:1.55;margin-bottom:8px">').concat(o2.meaning, '</div>\n <div class="aspects-title">Themes</div>\n <div class="aspects-list">\n ').concat(o2.themes.map((e6) => '<div class="aspect-row"><span class="aspect-other">'.concat(e6, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
7023
- Jv(), ny();
7033
+ Xv(), iy();
7024
7034
  }), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e6) => {
7025
7035
  let t3 = e6.currentTarget;
7026
- t3.textContent = "Sending\u2026", t3.disabled = true, Iv == null || Iv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: rv[c2], position: s2, element: l2, modality: u2 } }).then(() => {
7036
+ t3.textContent = "Sending\u2026", t3.disabled = true, Rv == null || Rv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: av[c2], position: s2, element: l2, modality: u2 } }).then(() => {
7027
7037
  t3.textContent = "Sent", setTimeout(() => {
7028
7038
  t3.textContent = "Interpret ".concat(o2.title), t3.disabled = false;
7029
7039
  }, 2500);
@@ -7032,22 +7042,22 @@ function qv(e5, t2, n2) {
7032
7042
  });
7033
7043
  });
7034
7044
  }
7035
- function Jv() {
7036
- Nv == null || Nv.classList.remove("visible"), Pv = null, Qv(), Lv == null || Lv(null);
7045
+ function Xv() {
7046
+ Fv == null || Fv.classList.remove("visible"), Iv = null, ey(), zv == null || zv(null);
7037
7047
  }
7038
- var Yv = null, Xv = 0;
7039
- function Zv(e5, t2 = false) {
7040
- let n2 = Yv;
7048
+ var Zv = null, Qv = 0;
7049
+ function $v(e5, t2 = false) {
7050
+ let n2 = Zv;
7041
7051
  if (!n2) return;
7042
- let r2 = Xv, i2 = Y(e5, K_, r2), a2 = Y(e5, 198, r2);
7052
+ let r2 = Qv, i2 = Y(e5, J_, r2), a2 = Y(e5, 198, r2);
7043
7053
  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";
7044
7054
  }
7045
- function Qv() {
7046
- Yv && (Yv.style.opacity = "0");
7055
+ function ey() {
7056
+ Zv && (Zv.style.opacity = "0");
7047
7057
  }
7048
- function $v(e5) {
7058
+ function ty(e5) {
7049
7059
  let t2 = e5.toLowerCase(), n2 = /* @__PURE__ */ new Set();
7050
- zv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
7060
+ Vv.forEach(({ vis: e6, color: r2, symbolEls: i2 }, a2) => {
7051
7061
  let o2 = a2.split("|");
7052
7062
  if (o2.includes(t2)) {
7053
7063
  e6.style.stroke = r2, e6.style.strokeOpacity = "0.95", e6.style.strokeWidth = "2", e6.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e7) => {
@@ -7067,9 +7077,9 @@ function $v(e5) {
7067
7077
  e6.classList.toggle("dim", i2 !== t2 && !n2.has(i2));
7068
7078
  });
7069
7079
  }
7070
- function ey(e5, t2) {
7080
+ function ny(e5, t2) {
7071
7081
  let n2 = new Set(e5.map((e6) => e6.toLowerCase())), r2 = new Set(t2);
7072
- zv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
7082
+ Vv.forEach(({ vis: e6, color: t3, symbolEls: n3 }, i2) => {
7073
7083
  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) => {
7074
7084
  e7.style.opacity = "1";
7075
7085
  })) : (e6.style.strokeOpacity = "0.05", e6.style.strokeWidth = "0.7", e6.removeAttribute("filter"), n3.forEach((e7) => {
@@ -7083,8 +7093,8 @@ function ey(e5, t2) {
7083
7093
  return e6.classList.toggle("dim", !n2.has((t3 = e6.dataset.planet) == null ? "" : t3));
7084
7094
  });
7085
7095
  }
7086
- function ty() {
7087
- zv.forEach(({ vis: e5, symbolEls: t2 }) => {
7096
+ function ry() {
7097
+ Vv.forEach(({ vis: e5, symbolEls: t2 }) => {
7088
7098
  e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), t2.forEach((e6) => {
7089
7099
  e6.style.opacity = "0.12";
7090
7100
  });
@@ -7092,17 +7102,17 @@ function ty() {
7092
7102
  e5.style.opacity = "0.35";
7093
7103
  }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.add("dim"));
7094
7104
  }
7095
- function ny() {
7096
- zv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
7105
+ function iy() {
7106
+ Vv.forEach(({ vis: e5, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
7097
7107
  e5.style.stroke = t2, e5.style.strokeOpacity = n2, e5.style.strokeWidth = r2, e5.removeAttribute("filter"), i2.forEach((e6) => {
7098
7108
  e6.style.opacity = "";
7099
7109
  });
7100
7110
  }), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
7101
7111
  e5.style.opacity = "";
7102
- }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), oy();
7112
+ }), Q == null || Q.querySelectorAll(".planet-hit").forEach((e5) => e5.classList.remove("dim")), cy();
7103
7113
  }
7104
- var ry = { "T-Square": "rgba(224,138, 82, 0.14)", "Grand Trine": "rgba( 82,168,224, 0.14)", "Grand Cross": "rgba(224, 82, 82, 0.14)", Stellium: "rgba(154,127,212, 0.14)", Yod: "rgba( 82,192,122, 0.14)", Kite: "rgba(192,176, 82, 0.14)" }, iy = { "T-Square": "rgba(224,138, 82, 0.70)", "Grand Trine": "rgba( 82,168,224, 0.70)", "Grand Cross": "rgba(224, 82, 82, 0.70)", Stellium: "rgba(154,127,212, 0.70)", Yod: "rgba( 82,192,122, 0.70)", Kite: "rgba(192,176, 82, 0.70)" };
7105
- function ay(e5, t2, n2) {
7114
+ var ay = { "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)" }, oy = { "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)" };
7115
+ function sy(e5, t2, n2) {
7106
7116
  var r2, i2;
7107
7117
  if (!Q) return null;
7108
7118
  let a2 = /* @__PURE__ */ new Map();
@@ -7110,26 +7120,26 @@ function ay(e5, t2, n2) {
7110
7120
  let o2 = [];
7111
7121
  for (let t3 of e5.planets) {
7112
7122
  let e6 = a2.get(t3.toLowerCase());
7113
- e6 != null && o2.push(Y(e6, Z_, n2));
7123
+ e6 != null && o2.push(Y(e6, $_, n2));
7114
7124
  }
7115
7125
  if (o2.length < 2) return null;
7116
- let s2 = (r2 = ry[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = iy[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
7126
+ let s2 = (r2 = ay[e5.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = oy[e5.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
7117
7127
  if (o2.length === 2) {
7118
7128
  let e6 = X("line");
7119
7129
  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;
7120
7130
  } else {
7121
- let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - G_, e7.x - W_) - Math.atan2(t4.y - G_, t4.x - W_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
7131
+ let e6 = [...o2].sort((e7, t4) => Math.atan2(e7.y - q_, e7.x - K_) - Math.atan2(t4.y - q_, t4.x - K_)).map((e7) => "".concat(e7.x.toFixed(1), ",").concat(e7.y.toFixed(1))).join(" "), t3 = X("polygon");
7122
7132
  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;
7123
7133
  }
7124
7134
  l2.setAttribute("pointer-events", "none"), l2.setAttribute("class", "pattern-overlay");
7125
7135
  let u2 = Q.querySelector(".aspect-hit");
7126
7136
  return u2 ? Q.insertBefore(l2, u2) : Q.appendChild(l2), l2;
7127
7137
  }
7128
- function oy() {
7138
+ function cy() {
7129
7139
  Q == null || Q.querySelectorAll(".pattern-overlay").forEach((e5) => e5.remove());
7130
7140
  }
7131
- function sy(e5) {
7132
- zv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
7141
+ function ly(e5) {
7142
+ Vv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
7133
7143
  e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0", a2.forEach((t3) => {
7134
7144
  t3.style.display = e5 ? "" : "none";
7135
7145
  });
@@ -7137,8 +7147,8 @@ function sy(e5) {
7137
7147
  t2.style.pointerEvents = e5 ? "all" : "none";
7138
7148
  });
7139
7149
  }
7140
- function cy(e5) {
7141
- zv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
7150
+ function uy(e5) {
7151
+ Vv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
7142
7152
  a2 <= e5 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none", o2.forEach((t3) => {
7143
7153
  t3.style.display = a2 <= e5 ? "" : "none";
7144
7154
  });
@@ -7146,242 +7156,242 @@ function cy(e5) {
7146
7156
  e6.style.display = "";
7147
7157
  });
7148
7158
  }
7149
- function ly(e5, t2, n2, r2, i2, a2, o2) {
7159
+ function dy(e5, t2, n2, r2, i2, a2, o2) {
7150
7160
  var s2, c2, l2, u2, d2, f2, p2, m2, h2;
7151
- Iv = a2 == null ? null : a2;
7161
+ Rv = a2 == null ? null : a2;
7152
7162
  let g2 = e5.querySelector("#pan-zoom-controls");
7153
- e5.innerHTML = "", g2 && e5.appendChild(g2), zv.clear(), Pv = null, Jv();
7154
- let _2 = gv(t2.planets), v2 = (s2 = t2.houses) == null ? [] : s2, ee2 = (c2 = t2.aspects) == null ? [] : c2, y2 = (l2 = (u2 = (d2 = v2[0]) == null ? void 0 : d2.cusp_lon) == null ? t2.ascendant : u2) == null ? 0 : l2, b2 = X("svg");
7163
+ e5.innerHTML = "", g2 && e5.appendChild(g2), Vv.clear(), Iv = null, Xv();
7164
+ let _2 = vv(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");
7155
7165
  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;
7156
7166
  {
7157
7167
  let e6 = X("defs");
7158
7168
  e6.innerHTML = '\n <filter id="aspect-glow" x="-50%" y="-50%" width="200%" height="200%">\n <feGaussianBlur in="SourceGraphic" stdDeviation="3" result="blur"/>\n <feMerge>\n <feMergeNode in="blur"/>\n <feMergeNode in="SourceGraphic"/>\n </feMerge>\n </filter>\n ', b2.insertBefore(e6, b2.firstChild);
7159
7169
  }
7160
- i_(b2, "pan-zoom-controls");
7170
+ o_(b2, "pan-zoom-controls");
7161
7171
  let x2 = X("g");
7162
7172
  x2.setAttribute("class", "chart-layer"), x2.style.setProperty("--layer-index", "1"), b2.appendChild(x2);
7173
+ let te2 = X("g");
7174
+ te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "2"), b2.appendChild(te2);
7163
7175
  let S2 = X("g");
7164
- S2.setAttribute("class", "chart-layer"), S2.style.setProperty("--layer-index", "2"), b2.appendChild(S2);
7176
+ S2.setAttribute("class", "chart-layer"), S2.style.setProperty("--layer-index", "3"), b2.appendChild(S2);
7165
7177
  let C2 = X("g");
7166
- C2.setAttribute("class", "chart-layer"), C2.style.setProperty("--layer-index", "3"), b2.appendChild(C2);
7167
- let w2 = X("g");
7168
- w2.setAttribute("class", "chart-layer"), w2.style.setProperty("--layer-index", "4"), b2.appendChild(w2);
7169
- let te2 = X("g");
7170
- te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "5"), b2.appendChild(te2);
7178
+ C2.setAttribute("class", "chart-layer"), C2.style.setProperty("--layer-index", "4"), b2.appendChild(C2);
7171
7179
  let ne2 = X("g");
7172
- b2.appendChild(ne2), Xv = y2;
7173
- let T2 = X("line");
7174
- T2.setAttribute("stroke", "#7060b8"), T2.setAttribute("stroke-width", "1"), T2.setAttribute("stroke-dasharray", "2 2"), T2.setAttribute("pointer-events", "none"), T2.style.opacity = "0", T2.style.transition = "opacity 150ms ease", S2.appendChild(T2), Yv = T2;
7175
- let re2 = X("circle");
7176
- re2.setAttribute("cx", "250"), re2.setAttribute("cy", "250"), re2.setAttribute("r", "244"), re2.style.fill = "var(--bg, #faf9f5)", re2.setAttribute("pointer-events", "none"), x2.appendChild(re2);
7177
- let E2 = ov(), ie2 = d_(E2), ae2 = (e6, t3) => {
7178
- e6.setAttribute("stroke", ie2.ring.stroke), e6.setAttribute("stroke-opacity", String(ie2.ring.opacity)), e6.setAttribute("stroke-width", t3);
7180
+ ne2.setAttribute("class", "chart-layer"), ne2.style.setProperty("--layer-index", "5"), b2.appendChild(ne2);
7181
+ let re2 = X("g");
7182
+ b2.appendChild(re2), Qv = y2;
7183
+ let w2 = X("line");
7184
+ w2.setAttribute("stroke", "#7060b8"), w2.setAttribute("stroke-width", "1"), w2.setAttribute("stroke-dasharray", "2 2"), w2.setAttribute("pointer-events", "none"), w2.style.opacity = "0", w2.style.transition = "opacity 150ms ease", te2.appendChild(w2), Zv = w2;
7185
+ let ie2 = X("circle");
7186
+ ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", "244"), ie2.style.fill = "var(--bg, #faf9f5)", ie2.setAttribute("pointer-events", "none"), x2.appendChild(ie2);
7187
+ let T2 = cv(), E2 = p_(T2), ae2 = (e6, t3) => {
7188
+ e6.setAttribute("stroke", E2.ring.stroke), e6.setAttribute("stroke-opacity", String(E2.ring.opacity)), e6.setAttribute("stroke-width", t3);
7179
7189
  };
7180
- ae2(re2, "0.5");
7190
+ ae2(ie2, "0.5");
7181
7191
  let oe2 = X("circle");
7182
- oe2.setAttribute("cx", "250"), oe2.setAttribute("cy", "250"), oe2.setAttribute("r", String(K_)), oe2.style.fill = "var(--surface, #f2f1ea)", ae2(oe2, "0.6"), oe2.setAttribute("pointer-events", "none"), S2.appendChild(oe2);
7192
+ oe2.setAttribute("cx", "250"), oe2.setAttribute("cy", "250"), oe2.setAttribute("r", String(J_)), oe2.style.fill = "var(--surface, #f2f1ea)", ae2(oe2, "0.6"), oe2.setAttribute("pointer-events", "none"), te2.appendChild(oe2);
7183
7193
  let se2 = X("circle");
7184
- se2.setAttribute("cx", "250"), se2.setAttribute("cy", "250"), se2.setAttribute("r", String(q_)), se2.style.fill = "var(--bg, #faf9f5)", ae2(se2, "0.6"), se2.setAttribute("pointer-events", "none"), S2.appendChild(se2);
7185
- let ce2 = Array.from({ length: 12 }, (e6, t3) => u_(t3, E2));
7194
+ se2.setAttribute("cx", "250"), se2.setAttribute("cy", "250"), se2.setAttribute("r", String(Y_)), se2.style.fill = "var(--bg, #faf9f5)", ae2(se2, "0.6"), se2.setAttribute("pointer-events", "none"), te2.appendChild(se2);
7195
+ let ce2 = Array.from({ length: 12 }, (e6, t3) => f_(t3, T2));
7186
7196
  for (let e6 = 0; e6 < 12; e6++) {
7187
- let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, K_, y2), i3 = Y(n3, K_, y2), a3 = Y(t3, q_, y2), o3 = Y(n3, q_, y2), s3 = X("path");
7188
- s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(K_, " ").concat(K_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(q_, " ").concat(q_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", ce2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
7189
- let { x: c3, y: l3 } = Y(t3, q_, y2), { x: u3, y: d3 } = Y(t3, K_, y2), f3 = X("line");
7190
- f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), ae2(f3, "0.5"), f3.setAttribute("pointer-events", "none"), S2.appendChild(f3);
7197
+ let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, J_, y2), i3 = Y(n3, J_, y2), a3 = Y(t3, Y_, y2), o3 = Y(n3, Y_, y2), s3 = X("path");
7198
+ s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(J_, " ").concat(J_, " 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(Y_, " ").concat(Y_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", ce2[e6]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
7199
+ let { x: c3, y: l3 } = Y(t3, Y_, y2), { x: u3, y: d3 } = Y(t3, J_, y2), f3 = X("line");
7200
+ f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), ae2(f3, "0.5"), f3.setAttribute("pointer-events", "none"), te2.appendChild(f3);
7191
7201
  let { x: p3, y: m3 } = Y(t3 + 15, 444 / 2, y2), h3 = X("text");
7192
- h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "13"), h3.setAttribute("fill", l_(e6, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = a_, h3.textContent = nv[e6], S2.appendChild(h3);
7202
+ 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", d_(e6, T2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = s_, h3.textContent = iv[e6], te2.appendChild(h3);
7193
7203
  for (let e7 = 1; e7 < 30; e7++) {
7194
- let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? K_ - 7 : K_ - 3, { x: a4, y: o4 } = Y(n4, K_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
7204
+ let n4 = t3 + e7, r4 = e7 % 5 == 0, i4 = r4 ? J_ - 7 : J_ - 3, { x: a4, y: o4 } = Y(n4, J_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
7195
7205
  l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1));
7196
- let u4 = r4 ? ie2.tickMajor : ie2.tickMinor;
7197
- l4.setAttribute("stroke", u4.stroke), l4.setAttribute("stroke-opacity", String(u4.opacity)), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), S2.appendChild(l4);
7206
+ let u4 = r4 ? E2.tickMajor : E2.tickMinor;
7207
+ l4.setAttribute("stroke", u4.stroke), l4.setAttribute("stroke-opacity", String(u4.opacity)), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), te2.appendChild(l4);
7198
7208
  }
7199
7209
  }
7200
7210
  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" };
7201
7211
  for (let e6 = 0; e6 < 12; e6++) {
7202
7212
  var ue2, de2;
7203
- let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, K_, y2), i3 = Y(n3, K_, y2), a3 = Y(t3, q_, y2), o3 = Y(n3, q_, y2), s3 = X("path");
7204
- s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(K_, " ").concat(K_, " 0 0 0 ").concat(i3.x.toFixed(1), " ").concat(i3.y.toFixed(1)), "L ".concat(o3.x.toFixed(1), " ").concat(o3.y.toFixed(1)), "A ".concat(q_, " ").concat(q_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", "transparent"), s3.setAttribute("class", "hit-region sign-hit"), s3.style.pointerEvents = "all", uy(s3, "".concat(rv[e6], " \u2014 click for sign info"));
7205
- let c3 = Z(Ov[e6]), l3 = Z(kv[e6]), u3 = (ue2 = le2[rv[e6]]) == null ? "" : ue2, d3 = (de2 = Sv[rv[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
7206
- s3.addEventListener("mouseenter", (t4) => vv(t4.clientX, t4.clientY, "".concat(nv[e6], " ").concat(rv[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => vv(t4.clientX, t4.clientY, "".concat(nv[e6], " ").concat(rv[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", yv), s3.addEventListener("click", (t4) => {
7207
- yv(), Lv == null || Lv("".concat(nv[e6], " ").concat(rv[e6])), Gv(t4, e6, _2);
7208
- }), ne2.appendChild(s3);
7213
+ let t3 = e6 * 30, n3 = (e6 + 1) * 30, r3 = Y(t3, J_, y2), i3 = Y(n3, J_, y2), a3 = Y(t3, Y_, y2), o3 = Y(n3, Y_, y2), s3 = X("path");
7214
+ s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(J_, " ").concat(J_, " 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(Y_, " ").concat(Y_, " 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", fy(s3, "".concat(av[e6], " \u2014 click for sign info"));
7215
+ let c3 = Z(Av[e6]), l3 = Z(jv[e6]), u3 = (ue2 = le2[av[e6]]) == null ? "" : ue2, d3 = (de2 = wv[av[e6]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
7216
+ s3.addEventListener("mouseenter", (t4) => bv(t4.clientX, t4.clientY, "".concat(iv[e6], " ").concat(av[e6]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => bv(t4.clientX, t4.clientY, "".concat(iv[e6], " ").concat(av[e6]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", xv), s3.addEventListener("click", (t4) => {
7217
+ xv(), zv == null || zv("".concat(iv[e6], " ").concat(av[e6])), qv(t4, e6, _2);
7218
+ }), re2.appendChild(s3);
7209
7219
  }
7210
7220
  let fe2 = X("circle");
7211
- fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(q_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2);
7221
+ fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(Y_)), fe2.style.fill = "var(--surface, #f2f1ea)", fe2.setAttribute("pointer-events", "none"), S2.appendChild(fe2);
7212
7222
  let pe2 = X("circle");
7213
- if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(X_)), pe2.style.fill = ie2.center, ae2(pe2, "0.6"), pe2.setAttribute("pointer-events", "none"), C2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
7223
+ if (pe2.setAttribute("cx", "250"), pe2.setAttribute("cy", "250"), pe2.setAttribute("r", String(Q_)), pe2.style.fill = E2.center, ae2(pe2, "0.6"), pe2.setAttribute("pointer-events", "none"), S2.appendChild(pe2), v2.length > 0) for (let e6 = 0; e6 < v2.length; e6++) {
7214
7224
  let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), i3 = X("path");
7215
- i3.setAttribute("d", ev(t3.cusp_lon, n3.cusp_lon, X_, q_, y2)), i3.setAttribute("fill", l_(Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), E2)), i3.setAttribute("fill-opacity", String(c_(E2).houseFillOpacity)), i3.setAttribute("pointer-events", "none"), C2.appendChild(i3);
7216
- let { x: a3, y: o3 } = Y(t3.cusp_lon, X_, y2), { x: s3, y: c3 } = Y(t3.cusp_lon, q_, y2), l3 = X("line");
7225
+ i3.setAttribute("d", nv(t3.cusp_lon, n3.cusp_lon, Q_, Y_, y2)), i3.setAttribute("fill", d_(Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), T2)), i3.setAttribute("fill-opacity", String(u_(T2).houseFillOpacity)), i3.setAttribute("pointer-events", "none"), S2.appendChild(i3);
7226
+ let { x: a3, y: o3 } = Y(t3.cusp_lon, Q_, y2), { x: s3, y: c3 } = Y(t3.cusp_lon, Y_, y2), l3 = X("line");
7217
7227
  l3.setAttribute("x1", a3.toFixed(1)), l3.setAttribute("y1", o3.toFixed(1)), l3.setAttribute("x2", s3.toFixed(1)), l3.setAttribute("y2", c3.toFixed(1));
7218
- let u3 = r3 ? ie2.cuspAngular : ie2.cuspIntermediate;
7219
- l3.setAttribute("stroke", u3.stroke), l3.setAttribute("stroke-opacity", String(u3.opacity)), l3.setAttribute("stroke-width", r3 ? "1.6" : "0.8"), r3 || l3.setAttribute("stroke-dasharray", ie2.cuspDash(0.8)), l3.setAttribute("pointer-events", "none"), C2.appendChild(l3);
7220
- let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2, Y_, y2), m3 = X("text");
7221
- m3.setAttribute("x", f3.toFixed(1)), m3.setAttribute("y", p3.toFixed(1)), m3.setAttribute("text-anchor", "middle"), m3.setAttribute("dominant-baseline", "central"), m3.setAttribute("font-size", "12"), m3.setAttribute("font-weight", r3 ? "700" : "600"), m3.setAttribute("fill", c_(E2).foreground), m3.setAttribute("opacity", "0.9"), m3.setAttribute("pointer-events", "none"), m3.textContent = String(t3.number), C2.appendChild(m3);
7228
+ let u3 = r3 ? E2.cuspAngular : E2.cuspIntermediate;
7229
+ l3.setAttribute("stroke", u3.stroke), l3.setAttribute("stroke-opacity", String(u3.opacity)), l3.setAttribute("stroke-width", r3 ? "1.6" : "0.8"), r3 || l3.setAttribute("stroke-dasharray", E2.cuspDash(0.8)), l3.setAttribute("pointer-events", "none"), S2.appendChild(l3);
7230
+ let d3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: f3, y: p3 } = Y(t3.cusp_lon + d3 / 2, Z_, y2), m3 = X("text");
7231
+ m3.setAttribute("x", f3.toFixed(1)), m3.setAttribute("y", p3.toFixed(1)), m3.setAttribute("text-anchor", "middle"), m3.setAttribute("dominant-baseline", "central"), m3.setAttribute("font-size", "12"), m3.setAttribute("font-weight", r3 ? "700" : "600"), m3.setAttribute("fill", u_(T2).foreground), m3.setAttribute("opacity", "0.9"), m3.setAttribute("pointer-events", "none"), m3.textContent = String(t3.number), S2.appendChild(m3);
7222
7232
  }
7223
7233
  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" }];
7224
7234
  for (let e6 of ve2) {
7225
7235
  var ye2, be2;
7226
- let t3 = Kv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
7236
+ let t3 = Jv[e6.label], { x: n3, y: r3 } = Y(e6.lon, 256, y2);
7227
7237
  n3 = Math.min(Math.max(n3, 14), 486), r3 = Math.min(Math.max(r3, 10), 490);
7228
7238
  let i3 = X("text");
7229
- i3.setAttribute("x", n3.toFixed(1)), i3.setAttribute("y", r3.toFixed(1)), i3.setAttribute("text-anchor", "middle"), i3.setAttribute("dominant-baseline", "central"), i3.setAttribute("font-size", "11"), i3.setAttribute("font-weight", "700"), i3.setAttribute("fill", c_(E2).foreground), i3.setAttribute("pointer-events", "none"), i3.setAttribute("class", "angle-label angle-".concat(e6.label.toLowerCase())), i3.style.transition = "opacity 150ms ease", i3.textContent = e6.label, C2.appendChild(i3);
7239
+ 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", u_(T2).foreground), i3.setAttribute("pointer-events", "none"), i3.setAttribute("class", "angle-label angle-".concat(e6.label.toLowerCase())), i3.style.transition = "opacity 150ms ease", i3.textContent = e6.label, S2.appendChild(i3);
7230
7240
  let a3 = X("circle");
7231
- a3.setAttribute("cx", n3.toFixed(1)), a3.setAttribute("cy", r3.toFixed(1)), a3.setAttribute("r", "14"), a3.setAttribute("fill", "transparent"), a3.setAttribute("class", "hit-region angle-hit"), a3.style.pointerEvents = "all", a3.style.cursor = "pointer", uy(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
7232
- let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = fv(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
7241
+ 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", fy(a3, "".concat((ye2 = t3 == null ? void 0 : t3.title) == null ? e6.label : ye2, " \u2014 click for interpretation"));
7242
+ let o3 = (be2 = t3 == null ? void 0 : t3.keyword) == null ? "" : be2, s3 = mv(e6.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
7233
7243
  a3.addEventListener("mouseenter", (n4) => {
7234
7244
  var r4;
7235
- vv(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Zv(e6.lon), i3.style.opacity = "0.6";
7245
+ bv(n4.clientX, n4.clientY, "".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), $v(e6.lon), i3.style.opacity = "0.6";
7236
7246
  }), a3.addEventListener("mouseleave", () => {
7237
- yv(), Qv(), i3.style.opacity = "";
7247
+ xv(), ey(), i3.style.opacity = "";
7238
7248
  }), a3.addEventListener("click", (n4) => {
7239
7249
  var r4;
7240
- yv(), Zv(e6.lon, true), ty(), Lv == null || Lv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), qv(n4, e6.label, e6.lon);
7241
- }), ne2.appendChild(a3);
7250
+ xv(), $v(e6.lon, true), ry(), zv == null || zv("".concat(e6.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), Yv(n4, e6.label, e6.lon);
7251
+ }), re2.appendChild(a3);
7242
7252
  }
7243
7253
  {
7244
7254
  let e6 = X("g");
7245
7255
  e6.setAttribute("pointer-events", "none");
7246
- let t3 = W_ - 50, n3 = G_ - 50;
7247
- e6.setAttribute("transform", "translate(".concat(t3, ",").concat(n3, ") scale(").concat(0.5813953488372093.toFixed(4), ") translate(-69,-110)")), e6.setAttribute("opacity", E2 ? "0.08" : "0.05");
7256
+ let t3 = K_ - 50, n3 = q_ - 50;
7257
+ e6.setAttribute("transform", "translate(".concat(t3, ",").concat(n3, ") scale(").concat(0.5813953488372093.toFixed(4), ") translate(-69,-110)")), e6.setAttribute("opacity", T2 ? "0.08" : "0.05");
7248
7258
  let r3 = X("path");
7249
- r3.setAttribute("fill", c_(E2).foreground), r3.setAttribute("d", "M225.711945,199.983551 C225.292816,213.680542 221.995255,226.061340 214.416275,237.110443 C193.610641,267.442230 154.827423,271.316071 127.459396,255.072189 C123.775551,252.885712 120.882744,252.441498 116.873688,254.137070 C109.048920,257.446503 100.934502,259.899628 92.190125,259.379364 C83.542915,258.864868 78.616745,253.946121 78.684906,245.377151 C78.745262,237.789108 81.850891,231.152817 85.454010,224.735641 C88.304489,219.658905 91.245934,214.612274 95.084061,210.184647 C97.704369,207.161865 98.745560,203.844788 98.740883,199.721481 C98.699577,163.227264 125.082115,136.164413 161.509293,135.193466 C165.322968,135.092 169.315643,134.951 172.935333,135.916 C178.310226,137.349 182.595856,135.650 187.146591,133.280 C195.742508,128.804 204.726822,125.462 214.488632,124.281 C227.834183,122.666 234.932129,130.259 231.851456,143.429 C230.052628,151.119 226.752274,158.212 222.361359,164.760 C220.327988,167.792 220.017624,170.616 221.473969,174.100 C224.861847,182.205 225.468460,190.867 225.711945,199.983551 M212.976044,168.510834 C218.716415,160.882339 223.731537,152.880203 226.146439,143.492218 C228.308197,135.088409 225.333649,129.095078 217.846207,128.560104 C206.177933,127.726410 196.082672,132.729645 185.171341,138.349640 C187.816025,139.540573 189.463272,140.263855 191.095154,141.020279 C200.031250,145.162369 207.546783,151.055435 213.272079,159.124069 C214.113724,160.310181 215.663269,161.586777 214.829697,163.091461 C211.652573,168.826584 208.025726,174.252899 202.566681,179.006516 C201.549835,176.444733 200.923126,174.750778 200.212067,173.093002 C195.433319,161.951874 188.776291,152.487198 177.473648,146.963547 C174.609192,145.563675 172.292969,145.608887 169.595505,147.317566 C152.514618,158.137161 136.926010,170.829269 122.270142,184.706512 C120.686935,186.205612 119.364059,187.876480 119.190598,190.236053 C118.688568,197.065308 118.869385,203.864960 119.793037,210.651215 C121.255951,221.399521 126.239235,230.774902 131.349335,240.326111 C132.993088,240.252151 134.400635,239.345810 135.765091,238.453430 C144.400665,232.805634 153.133560,227.309341 161.286926,220.942139 C164.075363,218.764557 165.766891,216.649643 165.788437,212.774612 C165.823334,206.491791 170.826294,202.743942 176.973877,204.085724 C179.390350,204.613144 181.027267,204.346497 182.788132,202.634048 C193.536697,192.180939 204.343719,181.790634 212.976044,168.510834 M196.311264,238.774429 C205.223999,223.519989 207.059082,207.185013 204.308746,188.929276 C197.720764,194.995590 193.078613,201.379272 186.899475,206.146912 C184.795013,207.770645 183.863800,209.506882 184.135178,212.471619 C184.705627,218.704117 179.426636,223.881546 173.582184,222.584213 C169.742706,221.731949 167.311813,222.850525 164.693726,225.165817 C162.585052,227.030579 160.129227,228.496109 157.916992,230.251648 C151.305984,235.497787 144.002090,239.748337 136.880554,244.346085 C150.810440,260.746155 181.289062,262.140137 196.311264,238.774429 M101.954178,222.323334 C101.003220,218.898468 100.052269,215.473602 98.901512,211.329163 C91.673454,221.459351 85.061653,230.979462 83.800476,243.065674 C83.190475,248.911530 86.140854,252.991577 91.843674,253.598953 C100.879066,254.561295 109.050667,251.508087 117.776840,247.739761 C110.183830,240.480621 105.126755,232.419739 101.954178,222.323334 M129.303619,173.800827 C141.200867,163.092194 153.936737,153.435806 167.699600,144.113556 C142.265121,138.861908 122.832809,158.201233 120.741943,181.434265 C123.701614,178.779602 126.227280,176.514221 129.303619,173.800827 z"), e6.appendChild(r3), x2.appendChild(e6);
7259
+ r3.setAttribute("fill", u_(T2).foreground), r3.setAttribute("d", "M225.711945,199.983551 C225.292816,213.680542 221.995255,226.061340 214.416275,237.110443 C193.610641,267.442230 154.827423,271.316071 127.459396,255.072189 C123.775551,252.885712 120.882744,252.441498 116.873688,254.137070 C109.048920,257.446503 100.934502,259.899628 92.190125,259.379364 C83.542915,258.864868 78.616745,253.946121 78.684906,245.377151 C78.745262,237.789108 81.850891,231.152817 85.454010,224.735641 C88.304489,219.658905 91.245934,214.612274 95.084061,210.184647 C97.704369,207.161865 98.745560,203.844788 98.740883,199.721481 C98.699577,163.227264 125.082115,136.164413 161.509293,135.193466 C165.322968,135.092 169.315643,134.951 172.935333,135.916 C178.310226,137.349 182.595856,135.650 187.146591,133.280 C195.742508,128.804 204.726822,125.462 214.488632,124.281 C227.834183,122.666 234.932129,130.259 231.851456,143.429 C230.052628,151.119 226.752274,158.212 222.361359,164.760 C220.327988,167.792 220.017624,170.616 221.473969,174.100 C224.861847,182.205 225.468460,190.867 225.711945,199.983551 M212.976044,168.510834 C218.716415,160.882339 223.731537,152.880203 226.146439,143.492218 C228.308197,135.088409 225.333649,129.095078 217.846207,128.560104 C206.177933,127.726410 196.082672,132.729645 185.171341,138.349640 C187.816025,139.540573 189.463272,140.263855 191.095154,141.020279 C200.031250,145.162369 207.546783,151.055435 213.272079,159.124069 C214.113724,160.310181 215.663269,161.586777 214.829697,163.091461 C211.652573,168.826584 208.025726,174.252899 202.566681,179.006516 C201.549835,176.444733 200.923126,174.750778 200.212067,173.093002 C195.433319,161.951874 188.776291,152.487198 177.473648,146.963547 C174.609192,145.563675 172.292969,145.608887 169.595505,147.317566 C152.514618,158.137161 136.926010,170.829269 122.270142,184.706512 C120.686935,186.205612 119.364059,187.876480 119.190598,190.236053 C118.688568,197.065308 118.869385,203.864960 119.793037,210.651215 C121.255951,221.399521 126.239235,230.774902 131.349335,240.326111 C132.993088,240.252151 134.400635,239.345810 135.765091,238.453430 C144.400665,232.805634 153.133560,227.309341 161.286926,220.942139 C164.075363,218.764557 165.766891,216.649643 165.788437,212.774612 C165.823334,206.491791 170.826294,202.743942 176.973877,204.085724 C179.390350,204.613144 181.027267,204.346497 182.788132,202.634048 C193.536697,192.180939 204.343719,181.790634 212.976044,168.510834 M196.311264,238.774429 C205.223999,223.519989 207.059082,207.185013 204.308746,188.929276 C197.720764,194.995590 193.078613,201.379272 186.899475,206.146912 C184.795013,207.770645 183.863800,209.506882 184.135178,212.471619 C184.705627,218.704117 179.426636,223.881546 173.582184,222.584213 C169.742706,221.731949 167.311813,222.850525 164.693726,225.165817 C162.585052,227.030579 160.129227,228.496109 157.916992,230.251648 C151.305984,235.497787 144.002090,239.748337 136.880554,244.346085 C150.810440,260.746155 181.289062,262.140137 196.311264,238.774429 M101.954178,222.323334 C101.003220,218.898468 100.052269,215.473602 98.901512,211.329163 C91.673454,221.459351 85.061653,230.979462 83.800476,243.065674 C83.190475,248.911530 86.140854,252.991577 91.843674,253.598953 C100.879066,254.561295 109.050667,251.508087 117.776840,247.739761 C110.183830,240.480621 105.126755,232.419739 101.954178,222.323334 M129.303619,173.800827 C141.200867,163.092194 153.936737,153.435806 167.699600,144.113556 C142.265121,138.861908 122.832809,158.201233 120.741943,181.434265 C123.701614,178.779602 126.227280,176.514221 129.303619,173.800827 z"), e6.appendChild(r3), x2.appendChild(e6);
7250
7260
  }
7251
7261
  for (let e6 of ee2) {
7252
7262
  var xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2, Le2;
7253
7263
  let t3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet1.toLowerCase()), n3 = _2.find((t4) => t4.name.toLowerCase() === e6.planet2.toLowerCase());
7254
7264
  if (!t3 || !n3) continue;
7255
- let r3 = (xe2 = av((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, Z_, y2), { x: s3, y: c3 } = Y(n3.longitude, Z_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
7256
- d3.setAttribute("x1", a3.toFixed(1)), d3.setAttribute("y1", o3.toFixed(1)), d3.setAttribute("x2", s3.toFixed(1)), d3.setAttribute("y2", c3.toFixed(1)), d3.setAttribute("pointer-events", "none"), d3.style.stroke = r3, d3.style.strokeOpacity = String(u3), d3.style.strokeWidth = l3 < 2 ? "1.6" : "1.1", w2.appendChild(d3);
7257
- let f3 = (O2 = iv[(Ce2 = (we2 = e6.type) == null ? void 0 : we2.toLowerCase()) == null ? "" : Ce2]) == null ? "" : O2, p3 = a3 + (s3 - a3) * 0.35, m3 = o3 + (c3 - o3) * 0.35, h3 = [];
7265
+ let r3 = (xe2 = sv((D2 = e6.type) == null ? "" : D2)) == null ? "#aaa" : xe2, { x: a3, y: o3 } = Y(t3.longitude, $_, y2), { x: s3, y: c3 } = Y(n3.longitude, $_, y2), l3 = Math.min((Se2 = e6.orb) == null ? 10 : Se2, 10), u3 = 0.95 - l3 / 10 * 0.55, d3 = X("line");
7266
+ 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", C2.appendChild(d3);
7267
+ let f3 = (O2 = ov[(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 = [];
7258
7268
  if (f3 && Math.hypot(s3 - a3, c3 - o3) > 36) {
7259
7269
  let e7 = X("circle");
7260
- e7.setAttribute("cx", p3.toFixed(1)), e7.setAttribute("cy", m3.toFixed(1)), e7.setAttribute("r", "9"), e7.setAttribute("fill", ie2.center), e7.setAttribute("stroke", r3), e7.setAttribute("stroke-opacity", "0.9"), e7.setAttribute("stroke-width", "1"), e7.setAttribute("pointer-events", "none"), w2.appendChild(e7), h3.push(e7);
7270
+ e7.setAttribute("cx", p3.toFixed(1)), e7.setAttribute("cy", m3.toFixed(1)), e7.setAttribute("r", "9"), e7.setAttribute("fill", E2.center), e7.setAttribute("stroke", r3), e7.setAttribute("stroke-opacity", "0.9"), e7.setAttribute("stroke-width", "1"), e7.setAttribute("pointer-events", "none"), C2.appendChild(e7), h3.push(e7);
7261
7271
  let t4 = X("text");
7262
- t4.setAttribute("x", p3.toFixed(1)), t4.setAttribute("y", m3.toFixed(1)), t4.setAttribute("text-anchor", "middle"), t4.setAttribute("dominant-baseline", "central"), t4.setAttribute("font-size", "11"), t4.setAttribute("font-weight", "700"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", "1"), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, w2.appendChild(t4), h3.push(t4);
7272
+ t4.setAttribute("x", p3.toFixed(1)), t4.setAttribute("y", m3.toFixed(1)), t4.setAttribute("text-anchor", "middle"), t4.setAttribute("dominant-baseline", "central"), t4.setAttribute("font-size", "11"), t4.setAttribute("font-weight", "700"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", "1"), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, C2.appendChild(t4), h3.push(t4);
7263
7273
  }
7264
7274
  let g3 = X("line");
7265
- g3.setAttribute("x1", a3.toFixed(1)), g3.setAttribute("y1", o3.toFixed(1)), g3.setAttribute("x2", s3.toFixed(1)), g3.setAttribute("y2", c3.toFixed(1)), g3.setAttribute("stroke", "transparent"), g3.setAttribute("stroke-width", "13"), g3.setAttribute("fill", "none"), g3.setAttribute("class", "hit-region aspect-hit"), g3.style.pointerEvents = "all", uy(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
7266
- let v3 = (Ee2 = tv[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = tv[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = iv[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = Cv[(Ne2 = (Pe2 = e6.type) == null ? void 0 : Pe2.toLowerCase()) == null ? "" : Ne2]) == null ? "" : Me2, S3 = "".concat(x3 ? x3 + " \xB7 " : "").concat(v3, " ").concat(b3, " ").concat(ee3, " \xB7 ").concat((Fe2 = (Ie2 = e6.orb) == null ? void 0 : Ie2.toFixed(1)) == null ? "?" : Fe2, "\xB0 orb").concat(e6.applying === true ? " (applying)" : e6.applying === false ? " (separating)" : "");
7275
+ 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", fy(g3, "Aspect: ".concat((Te2 = e6.type) == null ? "Aspect" : Te2, " between ").concat(t3.name, " and ").concat(n3.name));
7276
+ let v3 = (Ee2 = rv[t3.name.toLowerCase()]) == null ? t3.name : Ee2, ee3 = (De2 = rv[n3.name.toLowerCase()]) == null ? n3.name : De2, b3 = (Oe2 = (ke2 = ov[(Ae2 = (je2 = e6.type) == null ? void 0 : je2.toLowerCase()) == null ? "" : Ae2]) == null ? e6.type : ke2) == null ? "" : Oe2, x3 = (Me2 = Tv[(Ne2 = (Pe2 = e6.type) == null ? void 0 : Pe2.toLowerCase()) == null ? "" : Ne2]) == null ? "" : Me2, te3 = "".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)" : "");
7267
7277
  g3.addEventListener("mouseenter", (t4) => {
7268
7278
  var n4;
7269
- return vv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7279
+ return bv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), te3, "Click for interpretation");
7270
7280
  }), g3.addEventListener("mousemove", (t4) => {
7271
7281
  var n4;
7272
- return vv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
7273
- }), g3.addEventListener("mouseleave", yv), g3.addEventListener("click", (t4) => {
7282
+ return bv(t4.clientX, t4.clientY, Z((n4 = e6.type) == null ? "Aspect" : n4), te3, "Click for interpretation");
7283
+ }), g3.addEventListener("mouseleave", xv), g3.addEventListener("click", (t4) => {
7274
7284
  var n4, r4, a4, o4, s4, c4;
7275
- yv();
7276
- let l4 = "".concat((n4 = iv[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = tv[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = tv[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
7277
- Lv == null || Lv(l4), Hv(t4, e6, _2), i2(e6);
7285
+ xv();
7286
+ let l4 = "".concat((n4 = ov[(r4 = (a4 = e6.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e6.type) == null ? "Aspect" : o4), ": ").concat((s4 = rv[e6.planet1.toLowerCase()]) == null ? e6.planet1 : s4, " ").concat((c4 = rv[e6.planet2.toLowerCase()]) == null ? e6.planet2 : c4);
7287
+ zv == null || zv(l4), Wv(t4, e6, _2), i2(e6);
7278
7288
  });
7279
- let C3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), te3 = ((Le2 = e6.type) == null ? "unknown" : Le2).toLowerCase();
7280
- zv.set(C3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.6" : "1.1", aspectType: te3, orb: l3, symbolEls: h3 }), ne2.appendChild(g3);
7289
+ let S3 = [e6.planet1.toLowerCase(), e6.planet2.toLowerCase()].sort().join("|"), ne3 = ((Le2 = e6.type) == null ? "unknown" : Le2).toLowerCase();
7290
+ Vv.set(S3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.6" : "1.1", aspectType: ne3, orb: l3, symbolEls: h3 }), re2.appendChild(g3);
7281
7291
  }
7282
- let Re2 = _2.filter((e6) => !uv.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => uv.has(e6.name.toLowerCase())), ze2 = __(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = __(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
7292
+ let Re2 = _2.filter((e6) => !fv.has(e6.name.toLowerCase())), k2 = _2.filter((e6) => fv.has(e6.name.toLowerCase())), ze2 = y_(Re2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 8), Be2 = y_(k2.map((e6) => ({ name: e6.name.toLowerCase(), longitude: e6.longitude })), 6), Ve2 = new Map([...ze2.entries(), ...Be2.entries()]);
7283
7293
  for (let e6 of _2) {
7284
7294
  var He2, Ue2, We2, Ge2;
7285
- let t3 = (He2 = tv[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
7286
- cv(e6.name);
7287
- let r3 = e6.name.toLowerCase(), i3 = uv.has(r3), a3 = i3 ? J_ - 14 : J_, o3 = i3 ? J_ - 28 : J_ - 17, s3 = i3 ? J_ : 204, c3 = i3 ? "14" : "21", l3 = i3 ? "500" : "600", u3 = i3 ? Q_ - 2 : Q_, d3 = i3 ? "0.65" : "1", f3 = (Ue2 = Ve2.get(r3)) == null ? e6.longitude : Ue2, { x: p3, y: m3 } = Y(f3, a3, y2), h3 = X("g");
7288
- h3.setAttribute("class", "planet-glyph-group".concat(i3 ? " extended-body" : "")), h3.dataset.planet = r3, h3.style.transition = "opacity 200ms ease", h3.style.opacity = d3, te2.appendChild(h3);
7289
- let { x: g3, y: _3 } = Y(e6.longitude, q_ - 5, y2), v3 = X("circle");
7290
- if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill", c_(E2).house), v3.setAttribute("opacity", "0.65"), v3.setAttribute("pointer-events", "none"), h3.appendChild(v3), x_(e6.longitude, f3) > 2) {
7295
+ let t3 = (He2 = rv[e6.name.toLowerCase()]) == null ? "\u2605" : He2;
7296
+ uv(e6.name);
7297
+ let r3 = e6.name.toLowerCase(), i3 = fv.has(r3), a3 = i3 ? X_ - 14 : X_, o3 = i3 ? X_ - 28 : X_ - 17, s3 = i3 ? X_ : 204, c3 = i3 ? "14" : "21", l3 = i3 ? "500" : "600", u3 = i3 ? ev - 2 : ev, 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");
7298
+ h3.setAttribute("class", "planet-glyph-group".concat(i3 ? " extended-body" : "")), h3.dataset.planet = r3, h3.style.transition = "opacity 200ms ease", h3.style.opacity = d3, ne2.appendChild(h3);
7299
+ let { x: g3, y: _3 } = Y(e6.longitude, Y_ - 5, y2), v3 = X("circle");
7300
+ if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill", u_(T2).house), v3.setAttribute("opacity", "0.65"), v3.setAttribute("pointer-events", "none"), h3.appendChild(v3), C_(e6.longitude, f3) > 2) {
7291
7301
  let e7 = X("line");
7292
- e7.setAttribute("x1", g3.toFixed(1)), e7.setAttribute("y1", _3.toFixed(1)), e7.setAttribute("x2", p3.toFixed(1)), e7.setAttribute("y2", m3.toFixed(1)), e7.setAttribute("stroke", c_(E2).house), e7.setAttribute("stroke-width", "0.7"), e7.setAttribute("stroke-opacity", "0.35"), e7.setAttribute("stroke-linecap", "round"), e7.setAttribute("pointer-events", "none"), h3.appendChild(e7);
7302
+ 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", u_(T2).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);
7293
7303
  }
7294
7304
  let b3 = X("text");
7295
- 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).foreground, b3.style.fontFamily = a_, b3.textContent = t3, h3.appendChild(b3);
7296
- let x3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: S3, y: C3 } = Y(f3, o3, y2), w3 = X("text");
7297
- 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", c_(E2).foreground), w3.setAttribute("opacity", "0.8"), w3.setAttribute("pointer-events", "none"), w3.textContent = "".concat(x3, "\xB0"), h3.appendChild(w3), e6.retrograde) {
7305
+ 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 = u_(T2).foreground, b3.style.fontFamily = s_, b3.textContent = t3, h3.appendChild(b3);
7306
+ let x3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), { x: te3, y: S3 } = Y(f3, o3, y2), C3 = X("text");
7307
+ if (C3.setAttribute("x", te3.toFixed(1)), C3.setAttribute("y", S3.toFixed(1)), C3.setAttribute("text-anchor", "middle"), C3.setAttribute("dominant-baseline", "central"), C3.setAttribute("font-size", i3 ? "7" : "8.5"), C3.setAttribute("font-weight", "500"), C3.setAttribute("fill", u_(T2).foreground), C3.setAttribute("opacity", "0.8"), C3.setAttribute("pointer-events", "none"), C3.textContent = "".concat(x3, "\xB0"), h3.appendChild(C3), e6.retrograde) {
7298
7308
  let { x: e7, y: t4 } = Y(f3, s3, y2), n3 = X("text");
7299
7309
  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);
7300
7310
  }
7301
- let T3 = X("circle");
7302
- T3.setAttribute("cx", p3.toFixed(1)), T3.setAttribute("cy", m3.toFixed(1)), T3.setAttribute("r", String(u3)), T3.setAttribute("fill", "transparent"), T3.setAttribute("class", "hit-region planet-hit"), T3.dataset.planet = r3, T3.style.pointerEvents = "all", uy(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
7303
- let re3 = (We2 = bv[e6.name.toLowerCase()]) == null ? "" : We2, ie3 = e6.house ? (Ge2 = xv[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(fv(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
7304
- T3.addEventListener("mouseenter", (n3) => {
7305
- vv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), Zv(e6.longitude);
7306
- }), T3.addEventListener("mousemove", (n3) => vv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
7307
- yv(), Pv !== e6.name.toLowerCase() && Qv();
7308
- }), T3.addEventListener("click", (t4) => {
7311
+ let w3 = X("circle");
7312
+ w3.setAttribute("cx", p3.toFixed(1)), w3.setAttribute("cy", m3.toFixed(1)), w3.setAttribute("r", String(u3)), w3.setAttribute("fill", "transparent"), w3.setAttribute("class", "hit-region planet-hit"), w3.dataset.planet = r3, w3.style.pointerEvents = "all", fy(w3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e6.name));
7313
+ let ie3 = (We2 = Sv[e6.name.toLowerCase()]) == null ? "" : We2, E3 = e6.house ? (Ge2 = Cv[e6.house]) == null ? "" : Ge2 : "", ae3 = "".concat(ie3 ? ie3 + " \xB7 " : "").concat(mv(e6.longitude)).concat(e6.house ? " \xB7 H".concat(e6.house).concat(E3 ? " (" + E3 + ")" : "") : "").concat(e6.retrograde ? " \u211E" : "");
7314
+ w3.addEventListener("mouseenter", (n3) => {
7315
+ bv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects"), $v(e6.longitude);
7316
+ }), w3.addEventListener("mousemove", (n3) => bv(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e6.name)), ae3, "Click for aspects")), w3.addEventListener("mouseleave", () => {
7317
+ xv(), Iv !== e6.name.toLowerCase() && ey();
7318
+ }), w3.addEventListener("click", (t4) => {
7309
7319
  var r4;
7310
- if (yv(), Pv === e6.name.toLowerCase()) {
7311
- ny(), Jv(), Qv(), Lv == null || Lv(null);
7320
+ if (xv(), Iv === e6.name.toLowerCase()) {
7321
+ iy(), Xv(), ey(), zv == null || zv(null);
7312
7322
  return;
7313
7323
  }
7314
- Pv = e6.name.toLowerCase();
7315
- let i4 = (r4 = tv[e6.name.toLowerCase()]) == null ? "" : r4;
7316
- Lv == null || Lv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(fv(e6.longitude))), Zv(e6.longitude, true), $v(e6.name), Vv(t4, e6, ee2), n2(e6);
7317
- }), ne2.appendChild(T3);
7324
+ Iv = e6.name.toLowerCase();
7325
+ let i4 = (r4 = rv[e6.name.toLowerCase()]) == null ? "" : r4;
7326
+ zv == null || zv("".concat(i4, " ").concat(Z(e6.name), " in ").concat(mv(e6.longitude))), $v(e6.longitude, true), ty(e6.name), Uv(t4, e6, ee2), n2(e6);
7327
+ }), re2.appendChild(w3);
7318
7328
  }
7319
7329
  for (let e6 = 0; e6 < v2.length; e6++) {
7320
7330
  var Ke2, qe2, Je2;
7321
- let t3 = v2[e6], n3 = v2[(e6 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ke2 = (qe2 = t3.sign) == null ? rv[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = xv[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(fv(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, X_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, q_, y2), f3 = X("line");
7322
- f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", "transparent"), f3.setAttribute("stroke-width", String($_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", uy(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
7323
- vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Zv(t3.cusp_lon);
7324
- }), f3.addEventListener("mousemove", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
7325
- yv(), Qv();
7331
+ 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 ? av[i3] : qe2) == null ? "" : Ke2, o3 = (Je2 = Cv[t3.number]) == null ? "" : Je2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(mv(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, Q_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, Y_, y2), f3 = X("line");
7332
+ 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(tv)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", fy(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e7) => {
7333
+ bv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning"), $v(t3.cusp_lon);
7334
+ }), f3.addEventListener("mousemove", (e7) => bv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
7335
+ xv(), ey();
7326
7336
  }), f3.addEventListener("click", (e7) => {
7327
7337
  var n4, i4;
7328
- yv();
7329
- let a4 = (n4 = (i4 = t3.sign) == null ? rv[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7330
- Lv == null || Lv("House ".concat(t3.number, " \xB7 ").concat(a4)), Uv(e7, t3, _2), r2(t3);
7331
- }), ne2.appendChild(f3);
7332
- let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, Y_, y2), g3 = X("circle");
7333
- g3.setAttribute("cx", m3.toFixed(1)), g3.setAttribute("cy", h3.toFixed(1)), g3.setAttribute("r", "14"), g3.setAttribute("fill", "transparent"), g3.setAttribute("class", "hit-region"), g3.style.pointerEvents = "all", uy(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => vv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
7334
- yv();
7338
+ xv();
7339
+ let a4 = (n4 = (i4 = t3.sign) == null ? av[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7340
+ zv == null || zv("House ".concat(t3.number, " \xB7 ").concat(a4)), Gv(e7, t3, _2), r2(t3);
7341
+ }), re2.appendChild(f3);
7342
+ let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, Z_, y2), g3 = X("circle");
7343
+ 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", fy(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e7) => bv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e7) => bv(e7.clientX, e7.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
7344
+ xv();
7335
7345
  }), g3.addEventListener("click", (e7) => {
7336
7346
  var n4, i4;
7337
- yv();
7338
- let a4 = (n4 = (i4 = t3.sign) == null ? rv[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7339
- Lv == null || Lv("House ".concat(t3.number, " \xB7 ").concat(a4)), Uv(e7, t3, _2), r2(t3);
7340
- }), ne2.appendChild(g3);
7347
+ xv();
7348
+ let a4 = (n4 = (i4 = t3.sign) == null ? av[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
7349
+ zv == null || zv("House ".concat(t3.number, " \xB7 ").concat(a4)), Gv(e7, t3, _2), r2(t3);
7350
+ }), re2.appendChild(g3);
7341
7351
  }
7342
- Fv && document.removeEventListener("click", Fv, false), Fv = (e6) => {
7352
+ Lv && document.removeEventListener("click", Lv, false), Lv = (e6) => {
7343
7353
  let t3 = e6.target;
7344
- t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (ny(), Jv());
7345
- }, document.addEventListener("click", Fv, false);
7354
+ t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (iy(), Xv());
7355
+ }, document.addEventListener("click", Lv, false);
7346
7356
  }
7347
- function uy(e5, t2) {
7357
+ function fy(e5, t2) {
7348
7358
  e5 && (e5.setAttribute("tabindex", "0"), e5.setAttribute("role", "button"), e5.setAttribute("aria-label", t2), e5.addEventListener("keydown", (t3) => {
7349
7359
  let n2 = t3;
7350
7360
  (n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e5.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
7351
7361
  }));
7352
7362
  }
7353
- var dy = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
7354
- function fy(e5, t2, n2) {
7363
+ var py = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
7364
+ function my(e5, t2, n2) {
7355
7365
  e5.innerHTML = "";
7356
7366
  let r2 = document.createElement("span");
7357
7367
  r2.className = "controls-label", r2.textContent = "Houses:", e5.appendChild(r2);
7358
- for (let r3 of dy) {
7368
+ for (let r3 of py) {
7359
7369
  let i2 = document.createElement("button");
7360
7370
  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", () => {
7361
7371
  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);
7362
7372
  }), e5.appendChild(i2);
7363
7373
  }
7364
7374
  }
7365
- function py(e5, t2) {
7375
+ function hy(e5, t2) {
7366
7376
  e5.querySelectorAll(".control-btn").forEach((e6) => {
7367
7377
  var n2;
7368
7378
  let r2 = e6.getAttribute("data-system");
7369
7379
  e6.disabled = false;
7370
- let i2 = dy.find((e7) => e7.value === r2);
7380
+ let i2 = py.find((e7) => e7.value === r2);
7371
7381
  e6.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e6.classList.toggle("active", r2 === t2);
7372
7382
  });
7373
7383
  }
7374
- function my(e5) {
7384
+ function gy(e5) {
7375
7385
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7376
7386
  }
7377
- function hy(e5) {
7387
+ function _y(e5) {
7378
7388
  return e5.replace(/_/g, " ").replace(/\b\w/g, (e6) => e6.toUpperCase());
7379
7389
  }
7380
- function gy(e5) {
7381
- let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(my(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(my(e7.glyph), "</span>").concat(my(e7.label), "</span>")).join("") + "</div>").join("");
7390
+ function vy(e5) {
7391
+ let t2 = e5.filter((e6) => e6.items.length > 0).map((e6) => '<div class="legend-group"><span class="legend-group-title">'.concat(gy(e6.title), "</span>") + e6.items.map((e7) => '<span class="legend-item"><span class="legend-glyph">'.concat(gy(e7.glyph), "</span>").concat(gy(e7.label), "</span>")).join("") + "</div>").join("");
7382
7392
  return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
7383
7393
  }
7384
- var _y = class e4 {
7394
+ var yy = class e4 {
7385
7395
  constructor(t2) {
7386
7396
  var n2, r2, i2, a2, s2, c2;
7387
7397
  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();
@@ -7561,14 +7571,14 @@ var _y = class e4 {
7561
7571
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7562
7572
  }
7563
7573
  };
7564
- o(_y, "comboSeq", 0);
7565
- var vy = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "About the Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "This wheel is an exact celestial snapshot of the sky at a given moment and place \u2014 every planet, house, and aspect line is clickable." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "About the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are layered here \u2014 the inner wheel is the natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "About the Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "The bodygraph is a living map of the energy centres, channels, and gates that define a Human Design chart." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "About the Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows the Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon &amp; Nakshatra</strong> for lunar mansion detail"], modalText: "This is a Vedic birth chart rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "About the Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to the natal chart \u2014 the exact dates outer-planet energies activate each placement." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "About the Moon Phase Dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status for the selected moment." }, bazi: { stripIcon: "\u56DB", stripTitle: "About the BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is the core identity element", "The <strong>Wu Xing bar</strong> shows the Five Element balance"], modalText: "This BaZi (Four Pillars of Destiny) chart maps the Heavenly Stems and Earthly Branches present at a given moment of birth." } }, yy = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: oklch(0% 0 0 / 0.55);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oe-fade-in 0.4s ease both;\n font-family: system-ui, sans-serif;\n }\n\n .oe-welcome-modal {\n /* Themed, not hardcoded: the title/text/hints below all resolve through\n var(--text\u2026), so a fixed dark surface here meant that once the light\n palette became reachable the modal rendered near-black text on a\n near-black card \u2014 1.09:1, effectively invisible. The fallback is the\n previous literal, and every app\'s dark --surface is oklch(11-12%), so\n dark rendering is unchanged. */\n background: var(--surface, oklch(11% 0.010 265));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px oklch(0% 0 0 / 0.55), inset 0 1px 0 oklch(100% 0 0 / 0.06);\n animation: oe-modal-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n @keyframes oe-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes oe-modal-in {\n from { opacity: 0; transform: scale(0.95) translateY(10px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .oe-welcome-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n }\n\n .oe-welcome-icon {\n font-size: 28px;\n color: var(--gold, oklch(72% 0.12 80));\n line-height: 1;\n text-shadow: 0 0 10px var(--gold-glow, oklch(72% 0.12 80 / 0.30));\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: var(--text, oklch(92% 0.006 265));\n margin: 0;\n letter-spacing: 0.02em;\n }\n\n .oe-welcome-text {\n font-size: 14.5px;\n line-height: 1.5;\n color: var(--text-secondary, oklch(68% 0.008 265));\n margin: 0;\n }\n\n .oe-welcome-hints {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 8px 0 12px 0;\n padding: 0;\n list-style: none;\n }\n\n .oe-welcome-hints li {\n font-size: 13.5px;\n line-height: 1.4;\n color: var(--text-secondary, oklch(68% 0.008 265));\n display: flex;\n align-items: flex-start;\n gap: 10px;\n opacity: 0;\n animation: oe-fade-in 0.4s ease forwards;\n }\n\n /* Stagger the hints */\n .oe-welcome-hints li:nth-child(1) { animation-delay: 0.15s; }\n .oe-welcome-hints li:nth-child(2) { animation-delay: 0.25s; }\n .oe-welcome-hints li:nth-child(3) { animation-delay: 0.35s; }\n .oe-welcome-hints li:nth-child(4) { animation-delay: 0.45s; }\n\n .oe-welcome-hints li::before {\n content: "\u2726";\n color: var(--gold-dim, oklch(52% 0.06 80));\n font-size: 12px;\n padding-top: 2px;\n }\n\n .oe-welcome-hints strong {\n color: var(--text, oklch(92% 0.006 265));\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: var(--gold-subtle, oklch(72% 0.12 80 / 0.10));\n color: var(--gold, oklch(72% 0.12 80));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: oklch(72% 0.12 80 / 0.18);\n border-color: oklch(72% 0.12 80 / 0.40);\n }\n\n .oe-welcome-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n\n .oe-welcome-backdrop.is-dismissing {\n animation: oe-fade-out 0.3s ease forwards;\n }\n\n .oe-welcome-backdrop.is-dismissing .oe-welcome-modal {\n animation: oe-modal-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes oe-fade-out {\n to { opacity: 0; }\n }\n\n @keyframes oe-modal-out {\n to { opacity: 0; transform: scale(0.95) translateY(10px); }\n }\n';
7566
- function by() {
7574
+ o(yy, "comboSeq", 0);
7575
+ var by = { "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." } }, xy = '\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';
7576
+ function Sy() {
7567
7577
  if (document.getElementById("oe-first-run-styles")) return;
7568
7578
  let e5 = document.createElement("style");
7569
- e5.id = "oe-first-run-styles", e5.textContent = yy, document.head.appendChild(e5);
7579
+ e5.id = "oe-first-run-styles", e5.textContent = xy, document.head.appendChild(e5);
7570
7580
  }
7571
- function xy(e5) {
7581
+ function Cy(e5) {
7572
7582
  let t2 = document.activeElement, n2 = document.createElement("div");
7573
7583
  n2.className = "oe-welcome-backdrop";
7574
7584
  let r2 = document.createElement("div");
@@ -7586,24 +7596,24 @@ function xy(e5) {
7586
7596
  e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
7587
7597
  }), requestAnimationFrame(() => a2.focus()), n2;
7588
7598
  }
7589
- function Sy(e5) {
7590
- by();
7591
- let t2 = xy(vy[e5]);
7599
+ function wy(e5) {
7600
+ Sy();
7601
+ let t2 = Cy(by[e5]);
7592
7602
  document.body.appendChild(t2);
7593
7603
  }
7594
- var Cy = "\n .oe-info-button {\n position: fixed;\n top: 12px;\n right: 12px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: var(--surface-2, oklch(16% 0.010 265));\n border: 1px solid var(--border-strong, oklch(30% 0.010 265));\n color: var(--text-secondary, oklch(68% 0.008 265));\n font: 600 14px/1 Georgia, serif;\n font-style: italic;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n transition: all 150ms ease;\n }\n\n .oe-info-button:hover {\n background: var(--surface, oklch(11% 0.010 265));\n border-color: var(--gold-dim, oklch(52% 0.06 80));\n color: var(--gold, oklch(72% 0.12 80));\n }\n\n .oe-info-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n";
7595
- function wy() {
7604
+ var Ty = "\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";
7605
+ function Ey() {
7596
7606
  if (document.getElementById("oe-info-button-styles")) return;
7597
7607
  let e5 = document.createElement("style");
7598
- e5.id = "oe-info-button-styles", e5.textContent = Cy, document.head.appendChild(e5);
7608
+ e5.id = "oe-info-button-styles", e5.textContent = Ty, document.head.appendChild(e5);
7599
7609
  }
7600
- function Ty(e5) {
7610
+ function Dy(e5) {
7601
7611
  if (document.getElementById("oe-info-button")) return;
7602
- wy();
7612
+ Ey();
7603
7613
  let t2 = document.createElement("button");
7604
- t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () => Sy(e5)), document.body.appendChild(t2);
7614
+ 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", () => wy(e5)), document.body.appendChild(t2);
7605
7615
  }
7606
- function Ey(e5) {
7616
+ function Oy(e5) {
7607
7617
  var t2;
7608
7618
  if (!e5) return null;
7609
7619
  if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
@@ -7616,10 +7626,10 @@ function Ey(e5) {
7616
7626
  }
7617
7627
  return null;
7618
7628
  }
7619
- var Dy = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
7620
- function Oy(e5, t2) {
7629
+ var ky = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
7630
+ function Ay(e5, t2) {
7621
7631
  if (!e5) return null;
7622
- let n2 = Dy.exec(e5.trim());
7632
+ let n2 = ky.exec(e5.trim());
7623
7633
  if (n2) {
7624
7634
  let [, e6, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e6, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
7625
7635
  return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
@@ -7627,36 +7637,49 @@ function Oy(e5, t2) {
7627
7637
  let r2 = new Date(e5);
7628
7638
  return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
7629
7639
  }
7630
- function ky(e5) {
7640
+ function jy(e5) {
7631
7641
  var t2;
7632
7642
  if (!e5) return "";
7633
7643
  let n2 = [], r2 = (t2 = e5.location) == null ? void 0 : t2.trim();
7634
7644
  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) {
7635
- let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? Oy(e5.datetime, e5.timezone) : null;
7645
+ let t3 = /^\d{4}-\d{2}-\d{2}/.test(e5.datetime.trim()) ? Ay(e5.datetime, e5.timezone) : null;
7636
7646
  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);
7637
7647
  }
7638
7648
  return n2.join(" \xB7 ");
7639
7649
  }
7640
- function Ay(e5, t2, n2 = "Chart") {
7641
- let r2 = ky(t2);
7650
+ function My(e5, t2, n2 = "Chart") {
7651
+ let r2 = jy(t2);
7642
7652
  return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e5) : e5;
7643
7653
  }
7644
- function jy(e5) {
7654
+ function Ny(e5) {
7645
7655
  return e5.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
7646
7656
  }
7647
- function My(e5) {
7648
- let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(jy(i2), "</button>") : "";
7649
- if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(jy(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7657
+ function Py(e5) {
7658
+ let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(Ny(i2), "</button>") : "";
7659
+ if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(Ny(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
7650
7660
  var o2;
7651
7661
  (o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
7652
7662
  }
7653
7663
  }
7654
- function Ny(e5, t2, n2 = []) {
7655
- var r2, i2;
7664
+ var Fy = ["inline", "fullscreen"];
7665
+ function Iy(e5) {
7666
+ var t2;
7667
+ return (t2 = e5.getHostContext) == null ? void 0 : t2.call(e5);
7668
+ }
7669
+ function Ly(e5) {
7670
+ var t2;
7671
+ let n2 = (t2 = Iy(e5)) == null ? void 0 : t2.availableDisplayModes;
7672
+ return Array.isArray(n2) ? n2 : [];
7673
+ }
7674
+ var Ry = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <polyline points="5,1 1,1 1,5"/>\n <polyline points="11,1 15,1 15,5"/>\n <polyline points="5,15 1,15 1,11"/>\n <polyline points="11,15 15,15 15,11"/>\n </svg>', zy = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <polyline points="1,5 5,5 5,1"/>\n <polyline points="15,5 11,5 11,1"/>\n <polyline points="1,11 5,11 5,15"/>\n <polyline points="15,11 11,11 11,15"/>\n </svg>', By = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" aria-hidden="true">\n <rect x="1" y="2.5" width="14" height="11" rx="1.5"/>\n <rect x="8" y="8" width="5.5" height="4" rx="0.8" fill="currentColor" stroke="none"/>\n </svg>', Vy = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <rect x="1" y="2.5" width="14" height="11" rx="1.5"/>\n <polyline points="6,6 10,10"/>\n <polyline points="6,9.5 6,6 9.5,6"/>\n </svg>';
7675
+ function Hy(e5, t2, n2 = [], r2 = {}) {
7676
+ var i2;
7656
7677
  if (!t2 || t2.querySelector("#btn-fullscreen")) return;
7657
7678
  let a2 = document.createElement("button");
7658
- a2.id = "btn-fullscreen", a2.className = "pan-btn pan-btn--fullscreen", a2.setAttribute("aria-label", "Toggle fullscreen"), a2.innerHTML = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\n <polyline points="5,1 1,1 1,5"/>\n <polyline points="11,1 15,1 15,5"/>\n <polyline points="5,15 1,15 1,11"/>\n <polyline points="11,15 15,15 15,11"/>\n </svg>';
7659
- let o2 = a2.innerHTML, s2 = ["param-controls", "aspect-filter", "controls-panel", "mode-badge"];
7679
+ a2.id = "btn-fullscreen", a2.type = "button", a2.className = "pan-btn pan-btn--fullscreen", a2.innerHTML = Ry, a2.hidden = true;
7680
+ let o2 = null;
7681
+ r2.pip && (o2 = document.createElement("button"), o2.id = "btn-pip", o2.type = "button", o2.className = "pan-btn pan-btn--pip", o2.innerHTML = By, o2.hidden = true);
7682
+ let s2 = ["param-controls", "aspect-filter", "controls-panel", "mode-badge"];
7660
7683
  function c2() {
7661
7684
  if (document.getElementById("fs-bottom-bar") || !n2.length) return;
7662
7685
  let e6 = document.getElementById("app");
@@ -7689,59 +7712,59 @@ function Ny(e5, t2, n2 = []) {
7689
7712
  }
7690
7713
  e6.remove();
7691
7714
  }
7692
- function u2(e6) {
7693
- let t3 = e6 === "fullscreen", n3 = document.body.classList.contains("is-fullscreen");
7694
- document.body.classList.toggle("is-fullscreen", t3), a2.innerHTML = t3 ? '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\n <polyline points="1,5 5,5 5,1"/>\n <polyline points="15,5 11,5 11,1"/>\n <polyline points="1,11 5,11 5,15"/>\n <polyline points="15,11 11,11 11,15"/>\n </svg>' : o2, a2.setAttribute("aria-label", t3 ? "Exit fullscreen (Esc)" : "Toggle fullscreen"), a2.title = t3 ? "Press Esc or click to exit fullscreen" : "Enter fullscreen", t3 && !n3 && (c2(), f2()), !t3 && n3 && l2();
7715
+ let u2 = "inline";
7716
+ function d2(t3) {
7717
+ let n3 = u2 === "fullscreen", r3 = t3 === "fullscreen";
7718
+ u2 = t3, document.body.classList.toggle("is-fullscreen", r3), document.body.classList.toggle("is-pip", t3 === "pip"), document.documentElement.setAttribute("data-display-mode", t3), a2.innerHTML = r3 ? zy : Ry;
7719
+ let i3 = r3 ? "Exit fullscreen" : "Enter fullscreen";
7720
+ if (a2.setAttribute("aria-label", i3), a2.title = r3 ? "Exit fullscreen (Esc)" : i3, o2) {
7721
+ let e6 = t3 === "pip";
7722
+ o2.innerHTML = e6 ? Vy : By;
7723
+ let n4 = e6 ? "Return to the conversation" : "Pop out (picture-in-picture)";
7724
+ o2.setAttribute("aria-label", n4), o2.title = n4;
7725
+ }
7726
+ r3 && !n3 && (c2(), Uy(e5)), !r3 && n3 && l2();
7695
7727
  }
7696
- a2.addEventListener("click", async () => {
7697
- try {
7698
- var t3, n3, r3, i3;
7699
- let a3 = (t3 = e5.getHostContext) == null ? void 0 : t3.call(e5), o3 = (n3 = a3 == null ? void 0 : a3.displayMode) == null ? "inline" : n3, s3 = (r3 = a3 == null ? void 0 : a3.availableDisplayModes) == null ? [] : r3, c3 = o3 === "inline" ? "fullscreen" : "inline";
7700
- if (s3.length > 0 && !s3.includes(c3)) {
7701
- console.warn('[AppChrome] Display mode "'.concat(c3, '" not available. Available: ').concat(s3.join(", ")));
7702
- return;
7703
- }
7704
- let l3 = await e5.requestDisplayMode({ mode: c3 });
7705
- u2((i3 = l3 == null ? void 0 : l3.mode) == null ? "inline" : i3);
7728
+ function f2() {
7729
+ var n3, r3;
7730
+ let i3 = Ly(e5);
7731
+ a2.hidden = !i3.includes("fullscreen"), o2 && (o2.hidden = !i3.includes("pip")), (!a2.hidden || o2 && !o2.hidden) && (t2.hidden = false);
7732
+ let s3 = (n3 = (r3 = Iy(e5)) == null ? void 0 : r3.displayMode) == null ? "inline" : n3;
7733
+ s3 !== u2 && d2(s3);
7734
+ }
7735
+ async function p2(t3) {
7736
+ if (!(t3 !== "inline" && !Ly(e5).includes(t3))) try {
7737
+ var n3;
7738
+ let r3 = await e5.requestDisplayMode({ mode: t3 });
7739
+ d2((n3 = r3 == null ? void 0 : r3.mode) == null ? u2 : n3);
7706
7740
  } catch (e6) {
7707
7741
  console.warn("[AppChrome] requestDisplayMode failed:", e6);
7708
7742
  }
7709
- }), document.addEventListener("keydown", async (t3) => {
7710
- if (t3.key === "Escape" && document.body.classList.contains("is-fullscreen")) {
7711
- t3.preventDefault();
7712
- try {
7713
- var n3;
7714
- let t4 = await e5.requestDisplayMode({ mode: "inline" });
7715
- u2((n3 = t4 == null ? void 0 : t4.mode) == null ? "inline" : n3);
7716
- } catch (e6) {
7717
- console.warn("[AppChrome] Escape fullscreen failed:", e6);
7718
- }
7719
- }
7720
- }), (r2 = e5.addEventListener) == null || r2.call(e5, "hostcontextchanged", (e6) => {
7721
- var t3;
7722
- u2((t3 = e6 == null ? void 0 : e6.displayMode) == null ? "inline" : t3);
7723
- });
7724
- let d2 = (i2 = e5.getHostContext) == null ? void 0 : i2.call(e5);
7725
- d2 != null && d2.displayMode && u2(d2.displayMode), t2.insertBefore(a2, t2.firstChild), t2.removeAttribute("hidden");
7726
- function f2() {
7727
- let e6 = document.getElementById("fs-hint-banner");
7728
- e6 && e6.remove();
7729
- let t3 = document.createElement("div");
7730
- 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(() => {
7731
- t3.style.opacity = "1";
7732
- }), setTimeout(() => {
7733
- t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
7734
- }, 4e3);
7735
7743
  }
7744
+ a2.addEventListener("click", () => {
7745
+ p2(u2 === "fullscreen" ? "inline" : "fullscreen");
7746
+ }), o2 == null || o2.addEventListener("click", () => {
7747
+ p2(u2 === "pip" ? "inline" : "pip");
7748
+ }), document.addEventListener("keydown", (e6) => {
7749
+ e6.key !== "Escape" || u2 !== "fullscreen" || (e6.preventDefault(), p2("inline"));
7750
+ }), (i2 = e5.addEventListener) == null || i2.call(e5, "hostcontextchanged", f2), o2 && t2.insertBefore(o2, t2.firstChild), t2.insertBefore(a2, t2.firstChild), d2("inline"), f2();
7751
+ }
7752
+ function Uy(e5) {
7753
+ var t2, n2;
7754
+ (t2 = document.getElementById("fs-hint-banner")) == null || t2.remove();
7755
+ let r2 = (n2 = Iy(e5)) == null ? void 0 : n2.deviceCapabilities, i2 = !!(r2 != null && r2.touch) && (r2 == null ? void 0 : r2.hover) === false, a2 = document.createElement("div");
7756
+ a2.id = "fs-hint-banner", a2.className = "fs-hint-banner", a2.setAttribute("role", "status"), a2.textContent = i2 ? "Tap the collapse button to return to the chat" : "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(a2), requestAnimationFrame(() => a2.classList.add("visible")), setTimeout(() => {
7757
+ a2.classList.remove("visible"), setTimeout(() => a2.remove(), 350);
7758
+ }, 4e3);
7736
7759
  }
7737
- function Py(e5, t2) {
7760
+ function Wy(e5, t2) {
7738
7761
  e5.ontoolcancelled = (e6) => {
7739
7762
  var n2, r2, i2;
7740
7763
  let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
7741
- console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), Fy(a2);
7764
+ 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), Gy(a2);
7742
7765
  };
7743
7766
  }
7744
- function Fy(e5) {
7767
+ function Gy(e5) {
7745
7768
  var t2;
7746
7769
  (t2 = document.getElementById("cancel-toast")) == null || t2.remove();
7747
7770
  let n2 = document.createElement("div");
@@ -7749,61 +7772,75 @@ function Fy(e5) {
7749
7772
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7750
7773
  }, 3e3);
7751
7774
  }
7752
- function Iy(e5) {
7775
+ function Ky(e5) {
7753
7776
  var t2;
7754
- function n2(e6) {
7755
- if (!e6) return;
7756
- let t3 = e6.containerDimensions;
7757
- if (!t3) return;
7758
- let n3 = document.documentElement;
7759
- t3.width && n3.style.setProperty("--host-width", "".concat(t3.width, "px")), t3.maxWidth && n3.style.setProperty("--host-max-width", "".concat(t3.maxWidth, "px")), t3.height && n3.style.setProperty("--host-height", "".concat(t3.height, "px")), t3.maxHeight && n3.style.setProperty("--host-max-height", "".concat(t3.maxHeight, "px"));
7760
- }
7761
- n2((t2 = e5.getHostContext) == null ? void 0 : t2.call(e5)), e5.addEventListener("hostcontextchanged", (e6) => {
7762
- n2(e6);
7763
- });
7764
- }
7765
- var Ly = document.getElementById("loading-state"), Ry = document.getElementById("chart-container"), zy = document.getElementById("chart-info"), By = document.getElementById("chart-status"), Vy = document.getElementById("controls-panel"), Hy = document.getElementById("patterns-strip"), Uy = document.getElementById("aspect-filter"), Wy = document.getElementById("overview-table"), Gy = document.getElementById("param-controls-container"), Ky = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, qy = "placidus", Jy = null;
7766
- h_(() => {
7767
- $ && Qy($);
7777
+ let n2 = document.documentElement, r2 = (e6, t3) => {
7778
+ typeof t3 == "number" && Number.isFinite(t3) && t3 > 0 ? n2.style.setProperty(e6, "".concat(t3, "px")) : n2.style.removeProperty(e6);
7779
+ }, i2 = (e6, t3) => {
7780
+ t3 === void 0 ? n2.removeAttribute(e6) : n2.setAttribute(e6, t3 ? "true" : "false");
7781
+ };
7782
+ function a2() {
7783
+ var t3, a3, o2;
7784
+ let s2 = Iy(e5);
7785
+ if (!s2) return;
7786
+ let c2 = (t3 = s2.containerDimensions) == null ? {} : t3;
7787
+ r2("--host-width", c2.width), r2("--host-max-width", c2.maxWidth), r2("--host-height", c2.height), r2("--host-max-height", c2.maxHeight);
7788
+ let l2 = (a3 = s2.safeAreaInsets) == null ? {} : a3;
7789
+ for (let e6 of ["top", "right", "bottom", "left"]) {
7790
+ let t4 = l2[e6];
7791
+ n2.style.setProperty("--safe-".concat(e6), typeof t4 == "number" && t4 > 0 ? "".concat(t4, "px") : "0px");
7792
+ }
7793
+ let u2 = l2.bottom;
7794
+ n2.toggleAttribute("data-safe-bottom", typeof u2 == "number" && u2 > 0), typeof s2.platform == "string" && n2.setAttribute("data-platform", s2.platform);
7795
+ let d2 = s2.deviceCapabilities;
7796
+ i2("data-touch", d2 == null ? void 0 : d2.touch), i2("data-hover", d2 == null ? void 0 : d2.hover);
7797
+ let f2 = s2.styles;
7798
+ f2 != null && f2.variables && r_(f2.variables, n2), !(f2 == null || (o2 = f2.css) == null) && o2.fonts && i_(f2.css.fonts);
7799
+ }
7800
+ a2(), (t2 = e5.addEventListener) == null || t2.call(e5, "hostcontextchanged", a2);
7801
+ }
7802
+ var qy = document.getElementById("loading-state"), Jy = document.getElementById("chart-container"), Yy = document.getElementById("chart-info"), Xy = document.getElementById("chart-status"), Zy = document.getElementById("controls-panel"), Qy = document.getElementById("patterns-strip"), $y = document.getElementById("aspect-filter"), eb = document.getElementById("overview-table"), tb = document.getElementById("param-controls-container"), nb = new a_({ name: "Chart Wheel Explorer", version: "1.0.0" }, { availableDisplayModes: Fy }), $ = null, rb = "placidus", ib = null;
7803
+ __(() => {
7804
+ $ && cb($);
7768
7805
  });
7769
- var Yy = false, Xy = false;
7770
- function Zy(e5) {
7771
- By && (e5 ? (By.textContent = "\xB7 ".concat(e5), By.setAttribute("data-active", "")) : (By.textContent = "", By.removeAttribute("data-active")));
7806
+ var ab = false, ob = false;
7807
+ function sb(e5) {
7808
+ Xy && (e5 ? (Xy.textContent = "\xB7 ".concat(e5), Xy.setAttribute("data-active", "")) : (Xy.textContent = "", Xy.removeAttribute("data-active")));
7772
7809
  }
7773
- Ky.ontoolresult = (e5) => {
7810
+ nb.ontoolresult = (e5) => {
7774
7811
  var t2;
7775
- let n2 = Ey(e5);
7776
- if (Sb(), !n2 || !n2.planets) {
7777
- console.error("[ChartWheel] \u274C No chart data found in tool result"), Cb("Chart data could not be parsed from the server response.", wb);
7812
+ let n2 = Oy(e5);
7813
+ if (Mb(), !n2 || !n2.planets) {
7814
+ console.error("[ChartWheel] \u274C No chart data found in tool result"), Nb("Chart data could not be parsed from the server response.", Pb);
7778
7815
  return;
7779
7816
  }
7780
- if ($ = n2, qy = (t2 = n2.house_system) == null ? "placidus" : t2, !Jy) {
7817
+ if ($ = n2, rb = (t2 = n2.house_system) == null ? "placidus" : t2, !ib) {
7781
7818
  var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
7782
7819
  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";
7783
7820
  if (t3 && t3.includes("T")) {
7784
7821
  let e7 = t3.split("T");
7785
7822
  _2 = e7[0], v2 = e7[1].substring(0, 5);
7786
7823
  }
7787
- Jy = new _y({ app: Ky, container: Gy, initialParams: { date: _2, time: v2, locationName: p2, timezone: m2, latitude: typeof h2 == "number" ? h2 : null, longitude: typeof g2 == "number" ? g2 : null }, showStepControls: false, costHint: "~1 credit", onRefresh: async (e7) => {
7788
- Jy == null || Jy.setBusy(true), Ly.removeAttribute("hidden"), Ry.setAttribute("hidden", "");
7824
+ ib = new yy({ app: nb, container: tb, 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) => {
7825
+ ib == null || ib.setBusy(true), qy.removeAttribute("hidden"), Jy.setAttribute("hidden", "");
7789
7826
  try {
7790
7827
  var t4, n3, r3, i3;
7791
- let a3 = "".concat(e7.date, "T").concat(e7.time, ":00"), o3 = new Promise((e8, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = Ey(await Promise.race([Ky.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e7.timezone ? "" : "Z"), latitude: (t4 = e7.latitude) == null ? void 0 : t4, longitude: (n3 = e7.longitude) == null ? void 0 : n3, timezone: (r3 = e7.timezone) == null ? void 0 : r3, location: (i3 = e7.locationName) == null ? void 0 : i3, house_system: qy || "placidus", chart_type: "natal" } }), o3]));
7792
- s3 ? ($ = s3, s3.house_system && (qy = s3.house_system), Qy(s3)) : $ && (Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"));
7828
+ 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 = Oy(await Promise.race([nb.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: rb || "placidus", chart_type: "natal" } }), o3]));
7829
+ s3 ? ($ = s3, s3.house_system && (rb = s3.house_system), cb(s3)) : $ && (qy.setAttribute("hidden", ""), Jy.removeAttribute("hidden"));
7793
7830
  } catch (e8) {
7794
- console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"));
7831
+ console.error("[ChartWheel] Recalculate failed or timed out:", e8), $ && (qy.setAttribute("hidden", ""), Jy.removeAttribute("hidden"));
7795
7832
  } finally {
7796
- Jy == null || Jy.setBusy(false);
7833
+ ib == null || ib.setBusy(false);
7797
7834
  }
7798
7835
  } });
7799
7836
  }
7800
- Qy(n2);
7837
+ cb(n2);
7801
7838
  };
7802
- function Qy(e5) {
7839
+ function cb(e5) {
7803
7840
  var t2, n2, r2, i2, a2, o2, s2;
7804
- ib = null, Ly.setAttribute("hidden", ""), Ry.removeAttribute("hidden"), Gy.removeAttribute("hidden"), Vy.removeAttribute("hidden"), ly(Ry, e5, fb, pb, mb, yb, Xy ? hb() : void 0), Rv(Zy), fy(Vy, qy, bb), eb(e5), Ty("chart-wheel");
7805
- let c2 = gv(e5.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e5.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e5.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e5.aspects) == null ? [] : a2;
7806
- c2.length > 0 && nb(c2, u2), ab(Mv(u2, c2), c2, l2), ub();
7841
+ mb = null, qy.setAttribute("hidden", ""), Jy.removeAttribute("hidden"), tb.removeAttribute("hidden"), Zy.removeAttribute("hidden"), dy(Jy, e5, Sb, Cb, wb, kb, ob ? Tb() : void 0), Bv(sb), my(Zy, rb, Ab), ub(e5), Dy("chart-wheel");
7842
+ let c2 = vv(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;
7843
+ c2.length > 0 && fb(c2, u2), hb(Pv(u2, c2), c2, l2), bb();
7807
7844
  let d2 = document.getElementById("cw-action-bar");
7808
7845
  if (!d2) {
7809
7846
  d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
@@ -7814,19 +7851,19 @@ function Qy(e5) {
7814
7851
  (f2 = document.getElementById("app")) == null || f2.prepend(d2);
7815
7852
  }
7816
7853
  }
7817
- d2.innerHTML = '\n <button class="action-btn action-btn--primary" id="cw-interpret-btn">\u2728 Interpret this chart</button>\n <button class="action-btn" id="cw-questions-btn">\u{1F52E} What should I ask?</button>\n ', (o2 = document.getElementById("cw-interpret-btn")) == null || o2.addEventListener("click", () => void _b()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void vb());
7854
+ 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 Db()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Ob());
7818
7855
  }
7819
- function $y(e5) {
7856
+ function lb(e5) {
7820
7857
  return String(e5).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
7821
7858
  }
7822
- function eb(e5) {
7859
+ function ub(e5) {
7823
7860
  var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
7824
- if (!zy) return;
7861
+ if (!Yy) return;
7825
7862
  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;
7826
- qy.charAt(0).toUpperCase() + qy.slice(1);
7827
- let _2 = gv(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7863
+ rb.charAt(0).toUpperCase() + rb.slice(1);
7864
+ let _2 = vv(e5.planets).find((e6) => e6.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
7828
7865
  try {
7829
- let e6 = f2 && f2.includes("T") ? Oy(f2, m2) : null;
7866
+ let e6 = f2 && f2.includes("T") ? Ay(f2, m2) : null;
7830
7867
  if (e6) {
7831
7868
  let { date: t3, timeZone: n3 } = e6;
7832
7869
  ee2 = t3.toLocaleDateString("en-US", { weekday: "short", year: "numeric", month: "short", day: "numeric", timeZone: n3 }) + " \xB7 " + t3.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true, timeZone: n3 });
@@ -7834,16 +7871,16 @@ function eb(e5) {
7834
7871
  } catch (e6) {
7835
7872
  }
7836
7873
  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 = [];
7837
- if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat($y(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat($y(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat($y(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat($y(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat($y(v2), "</span>")), b2.length === 0) {
7838
- zy.setAttribute("hidden", "");
7874
+ if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(lb(ee2), "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(lb(p2), "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(lb(y2), "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(lb(m2), "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(lb(v2), "</span>")), b2.length === 0) {
7875
+ Yy.setAttribute("hidden", "");
7839
7876
  return;
7840
7877
  }
7841
- zy.innerHTML = b2.join(""), zy.removeAttribute("hidden");
7878
+ Yy.innerHTML = b2.join(""), Yy.removeAttribute("hidden");
7842
7879
  }
7843
- var tb = /* @__PURE__ */ new Set([F_, I_, L_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7844
- function nb(e5, t2) {
7845
- if (!Wy || e5.length === 0) return;
7846
- let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", C_, w_, T_, E_], r2 = [...e5].sort((e6, t3) => {
7880
+ var db = /* @__PURE__ */ new Set([L_, R_, z_, "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
7881
+ function fb(e5, t2) {
7882
+ if (!eb || e5.length === 0) return;
7883
+ let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", T_, E_, D_, O_], r2 = [...e5].sort((e6, t3) => {
7847
7884
  let r3 = n2.indexOf(e6.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
7848
7885
  return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e6.name.localeCompare(t3.name) : 1 : -1;
7849
7886
  }), i2 = {};
@@ -7853,15 +7890,15 @@ function nb(e5, t2) {
7853
7890
  }
7854
7891
  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) => {
7855
7892
  var t3, n3, r3, a3;
7856
- let o3 = e6.name.toLowerCase(), l3 = (t3 = tv[o3]) == null ? "\u2605" : t3, u3 = (n3 = e6.sign) == null ? c2(e6.longitude) : n3, d3 = Math.floor((e6.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e6.longitude % 360 + 360) % 360 % 1 * 60), p3 = tb.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7893
+ let o3 = e6.name.toLowerCase(), l3 = (t3 = rv[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 = db.has(o3), m2 = e6.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
7857
7894
  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>");
7858
7895
  }).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e6) => {
7859
7896
  var t3;
7860
7897
  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" : "";
7861
7898
  return "| ".concat(s2(e6.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
7862
7899
  }).join("\n");
7863
- Wy.innerHTML = '\n <div class="overview-header">\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\n <button class="overview-copy" type="button" title="Copy positions as a Markdown table">Copy</button>\n </div>\n <div class="overview-body">\n <table class="overview-tbl">\n <thead><tr><th>Body</th><th>Position</th><th>House</th><th>Asp</th></tr></thead>\n <tbody>').concat(l2, "</tbody>\n </table>\n </div>\n "), Wy.removeAttribute("hidden");
7864
- let d2 = Wy.querySelector(".overview-copy");
7900
+ eb.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 "), eb.removeAttribute("hidden");
7901
+ let d2 = eb.querySelector(".overview-copy");
7865
7902
  d2 && d2.addEventListener("click", async (e6) => {
7866
7903
  e6.stopPropagation();
7867
7904
  try {
@@ -7871,14 +7908,14 @@ function nb(e5, t2) {
7871
7908
  d2.textContent = "Copy", d2.classList.remove("copied");
7872
7909
  }, 1600);
7873
7910
  } catch (e7) {
7874
- rb("Copy unavailable");
7911
+ pb("Copy unavailable");
7875
7912
  }
7876
7913
  });
7877
- let f2 = Wy.querySelector(".overview-toggle"), p2 = Wy.querySelector(".overview-body");
7914
+ let f2 = eb.querySelector(".overview-toggle"), p2 = eb.querySelector(".overview-body");
7878
7915
  f2 == null || f2.addEventListener("click", () => {
7879
7916
  let e6 = f2.getAttribute("aria-expanded") === "true";
7880
7917
  f2.setAttribute("aria-expanded", e6 ? "false" : "true"), p2.classList.toggle("open", !e6);
7881
- }), Wy.querySelectorAll("tbody tr").forEach((e6) => {
7918
+ }), eb.querySelectorAll("tbody tr").forEach((e6) => {
7882
7919
  var t3;
7883
7920
  let n3 = (t3 = e6.dataset.planet) == null ? "" : t3;
7884
7921
  n3 && (e6.addEventListener("mouseenter", () => {
@@ -7890,7 +7927,7 @@ function nb(e5, t2) {
7890
7927
  let t4 = document.querySelector("svg");
7891
7928
  t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e7) => {
7892
7929
  var t5;
7893
- let n4 = tb.has((t5 = e7.dataset.planet) == null ? "" : t5);
7930
+ let n4 = db.has((t5 = e7.dataset.planet) == null ? "" : t5);
7894
7931
  e7.style.opacity = n4 ? "0.65" : "1";
7895
7932
  }), e6.classList.remove("active-row"));
7896
7933
  }), e6.addEventListener("click", () => {
@@ -7901,7 +7938,7 @@ function nb(e5, t2) {
7901
7938
  }));
7902
7939
  });
7903
7940
  }
7904
- function rb(e5) {
7941
+ function pb(e5) {
7905
7942
  var t2;
7906
7943
  (t2 = document.getElementById("copy-toast")) == null || t2.remove();
7907
7944
  let n2 = document.createElement("div");
@@ -7909,26 +7946,26 @@ function rb(e5) {
7909
7946
  n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
7910
7947
  }, 2500);
7911
7948
  }
7912
- var ib = null;
7913
- function ab(e5, t2, n2) {
7914
- if (!Hy) return;
7949
+ var mb = null;
7950
+ function hb(e5, t2, n2) {
7951
+ if (!Qy) return;
7915
7952
  if (e5.length === 0) {
7916
- Hy.setAttribute("hidden", ""), Hy.innerHTML = "";
7953
+ Qy.setAttribute("hidden", ""), Qy.innerHTML = "";
7917
7954
  return;
7918
7955
  }
7919
7956
  let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
7920
- if (Hy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7957
+ if (Qy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e5.map((e6, t3) => {
7921
7958
  var n3;
7922
7959
  let i2 = (n3 = r2[e6.name]) == null ? "#888" : n3;
7923
7960
  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 ");
7924
- }).join(""), "\n "), Hy.removeAttribute("hidden"), !Hy.querySelector(".pattern-ask-claude-btn")) {
7961
+ }).join(""), "\n "), Qy.removeAttribute("hidden"), !Qy.querySelector(".pattern-ask-claude-btn")) {
7925
7962
  let t3 = document.createElement("button");
7926
- t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", Hy.appendChild(t3), t3.addEventListener("click", () => {
7963
+ t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Interpret", t3.style.display = "none", Qy.appendChild(t3), t3.addEventListener("click", () => {
7927
7964
  var n3;
7928
- let r3 = ib;
7965
+ let r3 = mb;
7929
7966
  if (r3 === null) return;
7930
7967
  let i2 = e5[r3];
7931
- t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", yb({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7968
+ t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", kb({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
7932
7969
  t3.textContent = "\u2713 Sent", setTimeout(() => {
7933
7970
  t3.textContent = "\u2728 Interpret", t3.disabled = false;
7934
7971
  }, 2500);
@@ -7937,130 +7974,130 @@ function ab(e5, t2, n2) {
7937
7974
  });
7938
7975
  });
7939
7976
  }
7940
- Hy.querySelectorAll(".pattern-pill").forEach((r3) => {
7977
+ Qy.querySelectorAll(".pattern-pill").forEach((r3) => {
7941
7978
  r3.addEventListener("click", () => {
7942
7979
  var i2;
7943
- let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = Hy.querySelector(".pattern-ask-claude-btn");
7944
- ib === a2 ? (ib = null, ny(), c2 && (c2.style.display = "none"), Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7980
+ let a2 = Number(r3.dataset.idx), o2 = e5[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = Qy.querySelector(".pattern-ask-claude-btn");
7981
+ mb === a2 ? (mb = null, iy(), c2 && (c2.style.display = "none"), Qy.querySelectorAll(".pattern-pill").forEach((e6) => {
7945
7982
  var t3;
7946
7983
  e6.classList.remove("active");
7947
7984
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7948
7985
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7949
- })) : (ib = a2, Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
7986
+ })) : (mb = a2, Qy.querySelectorAll(".pattern-pill").forEach((e6) => {
7950
7987
  var t3;
7951
7988
  e6.classList.remove("active");
7952
7989
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
7953
7990
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
7954
- }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, ey(o2.planets, o2.aspectKeys), t2 && n2 != null && (oy(), ay(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
7991
+ }), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, ny(o2.planets, o2.aspectKeys), t2 && n2 != null && (cy(), sy(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Interpret", c2.disabled = false));
7955
7992
  });
7956
7993
  });
7957
7994
  }
7958
- var ob = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], sb = true, cb = 8, lb = "true";
7959
- function ub() {
7995
+ var gb = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], _b = true, vb = 8, yb = "true";
7996
+ function bb() {
7960
7997
  var e5;
7961
- if (!Uy) return;
7998
+ if (!$y) return;
7962
7999
  let t2 = (() => {
7963
8000
  let e6 = $ == null ? void 0 : $.planets, t3 = [];
7964
8001
  return Array.isArray(e6) ? e6.forEach((e7) => {
7965
8002
  var n3;
7966
8003
  return t3.push(String((n3 = e7 == null ? void 0 : e7.name) == null ? "" : n3).toLowerCase());
7967
- }) : e6 && typeof e6 == "object" && Object.keys(e6).forEach((e7) => t3.push(e7.toLowerCase())), N_(t3);
8004
+ }) : e6 && typeof e6 == "object" && Object.keys(e6).forEach((e7) => t3.push(e7.toLowerCase())), F_(t3);
7968
8005
  })();
7969
- mv(lb);
7970
- let n2 = t2 ? '\n <div class="asp-section">\n <span class="asp-section-label">Nodes</span>\n <button class="orb-preset-btn node-btn'.concat(lb === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(lb === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
7971
- sb = true, Uy.innerHTML = '\n <div class="asp-panel">\n <div class="asp-section">\n <span class="asp-section-label">Aspects</span>\n <button class="aspect-toggle-btn active" id="cw-aspect-vis-toggle"\n title="Toggle all natal aspect lines">\n <span class="toggle-icon">\u2295</span> Natal aspects\n </button>\n </div>\n <div class="asp-section">\n <span class="asp-section-label">Orb</span>\n '.concat(ob.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === cb ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
7972
- let r2 = gv($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
8006
+ gv(yb);
8007
+ 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(yb === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(yb === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
8008
+ _b = true, $y.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(gb.map((e6) => '<button class="orb-preset-btn'.concat(e6.maxOrb === vb ? " active" : "", '" data-orb="').concat(e6.maxOrb, '" title="').concat(e6.label, ' orbs">').concat(e6.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
8009
+ let r2 = vv($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
7973
8010
  for (let e6 of r2) {
7974
8011
  let t3 = e6.name.toLowerCase();
7975
8012
  if (i2.has(t3)) continue;
7976
8013
  i2.add(t3);
7977
- let n3 = tv[t3];
7978
- n3 && a2.push({ glyph: n3, label: hy(e6.name) });
8014
+ let n3 = rv[t3];
8015
+ n3 && a2.push({ glyph: n3, label: _y(e6.name) });
7979
8016
  }
7980
8017
  let o2 = [...new Set(((e5 = $ == null ? void 0 : $.aspects) == null ? [] : e5).map((e6) => {
7981
8018
  var t3;
7982
8019
  return ((t3 = e6.type) == null ? "" : t3).toLowerCase();
7983
8020
  }).filter(Boolean))].map((e6) => {
7984
8021
  var t3;
7985
- return { glyph: (t3 = iv[e6]) == null ? "" : t3, label: hy(e6) };
8022
+ return { glyph: (t3 = ov[e6]) == null ? "" : t3, label: _y(e6) };
7986
8023
  }).filter((e6) => e6.glyph);
7987
- Uy.insertAdjacentHTML("beforeend", gy([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), Uy.removeAttribute("hidden");
8024
+ $y.insertAdjacentHTML("beforeend", vy([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), $y.removeAttribute("hidden");
7988
8025
  let s2 = document.getElementById("cw-aspect-vis-toggle");
7989
8026
  s2 == null || s2.addEventListener("click", () => {
7990
- sb = !sb, sy(sb), s2.classList.toggle("active", sb), s2.querySelector(".toggle-icon").textContent = sb ? "\u2295" : "\u2296";
7991
- }), Uy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
8027
+ _b = !_b, ly(_b), s2.classList.toggle("active", _b), s2.querySelector(".toggle-icon").textContent = _b ? "\u2295" : "\u2296";
8028
+ }), $y.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => {
7992
8029
  e6.addEventListener("click", () => {
7993
8030
  var t3;
7994
8031
  let n3 = parseFloat((t3 = e6.dataset.orb) == null ? "8" : t3);
7995
- n3 !== cb && (cb = n3, Uy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), cy(n3));
8032
+ n3 !== vb && (vb = n3, $y.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e7) => e7.classList.toggle("active", e7.dataset.orb === String(n3))), uy(n3));
7996
8033
  });
7997
- }), Uy.querySelectorAll(".node-btn").forEach((e6) => {
8034
+ }), $y.querySelectorAll(".node-btn").forEach((e6) => {
7998
8035
  e6.addEventListener("click", () => {
7999
8036
  let t3 = e6.dataset.node === "mean" ? "mean" : "true";
8000
- t3 === lb || !$ || (lb = t3, mv(t3), Qy($));
8037
+ t3 === yb || !$ || (yb = t3, gv(t3), cb($));
8001
8038
  });
8002
8039
  });
8003
8040
  }
8004
- async function db(e5, t2) {
8005
- if (Yy) try {
8041
+ async function xb(e5, t2) {
8042
+ if (ab) try {
8006
8043
  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(", "));
8007
- await Ky.updateModelContext({ content: [{ type: "text", text: n2 }] });
8044
+ await nb.updateModelContext({ content: [{ type: "text", text: n2 }] });
8008
8045
  } catch (e6) {
8009
8046
  console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e6);
8010
8047
  }
8011
8048
  }
8012
- async function fb(e5) {
8049
+ async function Sb(e5) {
8013
8050
  var t2, n2, r2, i2;
8014
- ib = null, Hy == null || Hy.querySelectorAll(".pattern-pill").forEach((e6) => {
8051
+ mb = null, Qy == null || Qy.querySelectorAll(".pattern-pill").forEach((e6) => {
8015
8052
  var t3;
8016
8053
  e6.classList.remove("active");
8017
8054
  let n3 = (t3 = e6.dataset.color) == null ? "#888" : t3;
8018
8055
  e6.style.color = n3, e6.style.borderColor = n3, e6.style.background = "transparent";
8019
- }), await db("planet", { planet: e5.name, longitude: e5.longitude, sign: (t2 = e5.sign) == null ? null : t2, house: (n2 = e5.house) == null ? null : n2, retrograde: (r2 = e5.retrograde) == null ? false : r2, speed: (i2 = e5.speed) == null ? null : i2 });
8056
+ }), await xb("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 });
8020
8057
  }
8021
- async function pb(e5) {
8058
+ async function Cb(e5) {
8022
8059
  var t2, n2;
8023
- await db("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
8060
+ await xb("house", { house_number: e5.number, sign: (t2 = e5.sign) == null ? null : t2, cusp_longitude: e5.cusp_lon, ruler: (n2 = e5.ruler) == null ? null : n2 });
8024
8061
  }
8025
- async function mb(e5) {
8062
+ async function wb(e5) {
8026
8063
  var t2, n2, r2, i2;
8027
- await db("aspect", { planet1: e5.planet1, planet2: e5.planet2, aspect_type: (t2 = e5.type) == null ? null : t2, orb: (n2 = e5.orb) == null ? null : n2, applying: (r2 = e5.applying) == null ? null : r2, angle: (i2 = e5.angle) == null ? null : i2 });
8064
+ await xb("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 });
8028
8065
  }
8029
- function hb() {
8066
+ function Tb() {
8030
8067
  return async (e5) => {
8031
8068
  try {
8032
8069
  var t2, n2;
8033
- let r2 = await Ky.createSamplingMessage({ messages: [{ role: "user", content: { type: "text", text: "You are interpreting a specific element in a natal chart. Be specific to the chart data \u2014 never generic. 2-3 sentences max.\n\nUser Request: ".concat(e5) } }], systemPrompt: "You are a professional Western astrologer giving a focused natal interpretation. Be specific to the chart data provided \u2014 never generic. Insightful and concise.", maxTokens: 300 });
8070
+ let r2 = await nb.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 });
8034
8071
  return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
8035
8072
  } catch (e6) {
8036
8073
  return console.error("[ChartWheel] Sampling failed:", e6), "Unable to load interpretation right now.";
8037
8074
  }
8038
8075
  };
8039
8076
  }
8040
- async function gb(e5) {
8077
+ async function Eb(e5) {
8041
8078
  try {
8042
- (await Ky.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
8079
+ (await nb.sendMessage({ role: "user", content: [{ type: "text", text: e5 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
8043
8080
  } catch (e6) {
8044
8081
  console.error("[ChartWheel] sendMessage failed:", e6);
8045
8082
  }
8046
8083
  }
8047
- async function _b() {
8084
+ async function Db() {
8048
8085
  var e5, t2, n2, r2;
8049
8086
  if (!$) return;
8050
- let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = gv(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
8087
+ let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = vv(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
8051
8088
  var t3;
8052
8089
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
8053
8090
  }).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";
8054
- await gb("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
8091
+ await Eb("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e6) => {
8055
8092
  var t3;
8056
8093
  return " \u2022 ".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? ", House ".concat(e6.house) : "").concat(e6.retrograde ? " \u211E" : "");
8057
8094
  }).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?"));
8058
8095
  }
8059
- async function vb() {
8096
+ async function Ob() {
8060
8097
  var e5, t2, n2, r2;
8061
8098
  if (!$) return;
8062
8099
  let i2 = $, a2 = (e5 = i2._birth_params) == null ? {} : e5;
8063
- await gb("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(gv(i2.planets).slice(0, 4).map((e6) => {
8100
+ await Eb("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(vv(i2.planets).slice(0, 4).map((e6) => {
8064
8101
  var t3;
8065
8102
  return "".concat(e6.name, " in ").concat((t3 = e6.sign) == null ? "?" : t3).concat(e6.house ? " H".concat(e6.house) : "");
8066
8103
  }).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e6) => {
@@ -8068,7 +8105,7 @@ async function vb() {
8068
8105
  return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e6.type) == null ? "" : t3);
8069
8106
  }).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."));
8070
8107
  }
8071
- async function yb(e5) {
8108
+ async function kb(e5) {
8072
8109
  let t2 = "";
8073
8110
  if (e5.type === "planet") {
8074
8111
  var n2;
@@ -8097,52 +8134,52 @@ async function yb(e5) {
8097
8134
  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.");
8098
8135
  }
8099
8136
  if (t2) {
8100
- t2 = Ay(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
8137
+ t2 = My(t2, $ == null ? void 0 : $._birth_params, "Natal chart");
8101
8138
  try {
8102
- let e6 = await Ky.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8139
+ let e6 = await nb.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
8103
8140
  if (e6.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e6), Error("Host rejected message");
8104
8141
  } catch (e6) {
8105
8142
  throw console.error("[ChartWheel] \u274C sendMessage failed:", e6), e6;
8106
8143
  }
8107
8144
  }
8108
8145
  }
8109
- async function bb(e5) {
8146
+ async function Ab(e5) {
8110
8147
  if (!($ != null && $._birth_params)) {
8111
- py(Vy, qy);
8148
+ hy(Zy, rb);
8112
8149
  return;
8113
8150
  }
8114
8151
  try {
8115
8152
  var t2, n2, r2, i2;
8116
- let a2 = Ey(await Ky.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: $._birth_params.datetime, timezone: (t2 = $._birth_params.timezone) == null ? void 0 : t2, latitude: (n2 = $._birth_params.latitude) == null ? void 0 : n2, longitude: (r2 = $._birth_params.longitude) == null ? void 0 : r2, location: (i2 = $._birth_params.location) == null ? void 0 : i2, house_system: e5 } }));
8117
- a2 ? ($ = a2, qy = e5, Qy(a2)) : py(Vy, qy);
8153
+ let a2 = Oy(await nb.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 } }));
8154
+ a2 ? ($ = a2, rb = e5, cb(a2)) : hy(Zy, rb);
8118
8155
  } catch (e6) {
8119
- console.error("[Chart] Recalculate failed:", e6), py(Vy, qy);
8156
+ console.error("[Chart] Recalculate failed:", e6), hy(Zy, rb);
8120
8157
  }
8121
8158
  }
8122
- var xb;
8123
- function Sb() {
8124
- xb && (clearTimeout(xb), xb = void 0);
8159
+ var jb;
8160
+ function Mb() {
8161
+ jb && (clearTimeout(jb), jb = void 0);
8125
8162
  }
8126
- function Cb(e5, t2) {
8127
- Sb(), Ly.setAttribute("hidden", ""), My({ container: Ry, message: e5, onRetry: t2 });
8163
+ function Nb(e5, t2) {
8164
+ Mb(), qy.setAttribute("hidden", ""), Py({ container: Jy, message: e5, onRetry: t2 });
8128
8165
  }
8129
- function wb() {
8130
- Sb(), Ry.setAttribute("hidden", ""), Ly.removeAttribute("hidden"), xb = setTimeout(() => {
8131
- Cb("The chart didn't load. Tap to try again.", wb);
8132
- }, 3e4), Ky.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8166
+ function Pb() {
8167
+ Mb(), Jy.setAttribute("hidden", ""), qy.removeAttribute("hidden"), jb = setTimeout(() => {
8168
+ Nb("The chart didn't load. Tap to try again.", Pb);
8169
+ }, 3e4), nb.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
8133
8170
  });
8134
8171
  }
8135
- Py(Ky, { loadingEl: Ly, contentEl: Ry, statusFn: Zy, paramControls: () => Jy }), xb = setTimeout(() => {
8136
- Cb("Chart data is taking longer than expected.", wb);
8172
+ Wy(nb, { loadingEl: qy, contentEl: Jy, statusFn: sb, paramControls: () => ib }), jb = setTimeout(() => {
8173
+ Nb("Chart data is taking longer than expected.", Pb);
8137
8174
  }, 3e4), (async () => {
8138
8175
  try {
8139
- await Ky.connect();
8140
- let e5 = Ky.getHostCapabilities();
8141
- Yy = !!(e5 != null && e5.modelContext), Xy = !!(e5 != null && e5.sampling), Ny(Ky, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), Iy(Ky), g_(Ky, () => {
8142
- $ && Qy($);
8143
- }), $ && Qy($);
8176
+ await nb.connect();
8177
+ let e5 = nb.getHostCapabilities();
8178
+ ab = !!(e5 != null && e5.modelContext), ob = !!(e5 != null && e5.sampling), Hy(nb, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), Ky(nb), v_(nb, () => {
8179
+ $ && cb($);
8180
+ }), $ && cb($);
8144
8181
  } catch (e5) {
8145
- console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Cb("The chart didn't load. Tap to try again.", wb);
8182
+ console.error("[ChartWheel] \u274C app.connect() FAILED:", e5), Nb("The chart didn't load. Tap to try again.", Pb);
8146
8183
  }
8147
8184
  })();
8148
8185
  </script>