@openephemeris/mcp-server 3.21.1 → 3.23.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.
- package/CHANGELOG.md +41 -0
- package/LICENSE +21 -21
- package/README.md +2 -2
- package/dist/index.js +45 -0
- package/dist/server-sse.js +52 -3
- package/dist/tools/apps/bazi-app.d.ts +24 -0
- package/dist/tools/apps/bazi-app.js +231 -0
- package/dist/tools/apps/bi-wheel-app.js +3 -1
- package/dist/tools/apps/bodygraph-app.js +55 -10
- package/dist/tools/apps/moon-phase-app.js +141 -93
- package/dist/tools/apps/transit-timeline-app.d.ts +20 -0
- package/dist/tools/apps/transit-timeline-app.js +302 -0
- package/dist/tools/apps/vedic-chart-app.d.ts +25 -0
- package/dist/tools/apps/vedic-chart-app.js +297 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/specialized/bi_wheel.js +1 -0
- package/dist/tools/specialized/chart_wheel.js +1 -0
- package/dist/tools/specialized/hd_bodygraph.js +1 -0
- package/dist/tools/specialized/human_design.js +1 -0
- package/dist/tools/specialized/moon.js +1 -0
- package/dist/tools/specialized/natal.js +6 -1
- package/dist/ui/bazi.html +6928 -0
- package/dist/ui/bi-wheel.html +2091 -2031
- package/dist/ui/bodygraph.html +286 -221
- package/dist/ui/chart-wheel.html +552 -453
- package/dist/ui/moon-phase.html +310 -42
- package/dist/ui/transit-timeline.html +6911 -0
- package/dist/ui/vedic-chart.html +7043 -0
- package/package.json +2 -2
package/dist/ui/chart-wheel.html
CHANGED
|
@@ -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:#e9ab2b;--aspect-opposition:#dd4d57;--aspect-trine:#37b880;--aspect-square:#dd4d57;--aspect-sextile:#2f8adc;--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);--aspect-conjunction:color(display-p3 .877131 .680603 .28424);--aspect-opposition:color(display-p3 .803557 .340931 .357065);--aspect-trine:color(display-p3 .376022 .713332 .518194);--aspect-square:color(display-p3 .803557 .340931 .357065);--aspect-sextile:color(display-p3 .290256 .532943 .838196);--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% -.109613 -6.65551);--text:lab(90.6942% -.142396 -2.26941);--text-secondary:lab(51.2352% -.205308 -3.76425);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21129 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.8159 68.8514);--planet-moon:lab(74.277% -.405759 -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.8149);--planet-uranus:lab(71.0008% -37.5682 -15.4301);--planet-neptune:lab(55.2086% -4.9496 -50.4575);--planet-pluto:lab(58.8593% 28.4679 -33.3654);--aspect-conjunction:lab(74.5017% 15.8159 68.8514);--aspect-opposition:lab(54.0218% 57.6814 26.7913);--aspect-trine:lab(67.0478% -46.5952 18.3141);--aspect-square:lab(54.0218% 57.6814 26.7913);--aspect-sextile:lab(55.2086% -4.9496 -50.4575);--color-fire:lab(61.5466% 48.3829 50.2676);--color-earth:lab(60.647% -24.5491 38.2386);--color-air:lab(63.473% -27.3149 -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.2719);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.8879% 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% -.240654 -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.3149 -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-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.3713% -.0768304 -7.37782));box-shadow:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong,lab(16.3713% -.0768304 -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.3713% -.0768304 -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}@media (prefers-color-scheme:light){:root{--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{--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{--bg:lab(96.5376% .34076 2.2589);--surface:lab(100% 0 0);--surface-2:lab(94.2232% .459731 3.01526);--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% -.210047 -4.49809);--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.22038 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)}}html,body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-image:none}.hd-action-bar{background:var(--bg)}.info-chip{background:var(--surface-2);color:var(--text-secondary);border:1px solid var(--border)}.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)}.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)}.tooltip-title{color:var(--text)}.tooltip-detail{color:var(--text-secondary)}.tooltip-hint{color:var(--gold-dim)}.chart-status{background:rgba(247,245,241,.92);background:color(display-p3 .967616 .959866 .945308/.92);background:lab(96.5376% .34076 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)}.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)}.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)}.pan-btn{background:var(--surface)}.pan-btn:hover{background:var(--surface-2)}#fs-bottom-bar{background:#f7f5f1;background:color(display-p3 .967616 .959866 .945308);background:lab(96.5376% .34076 2.2589);border-top-color:#caced4;border-top-color:color(display-p3 .796183 .806346 .830691);border-top-color:lab(82.5562% -.22167 -3.77336)}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{background:#f1eeea;background:color(display-p3 .941472 .933762 .919279);background:lab(94.2176% .341028 2.25905)}#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)}#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)}#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:6px}.pan-btn{min-width:40px;min-height:40px}#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{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-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}@media (prefers-color-scheme:light){.param-group input[type=date],.param-group input[type=time],.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% .167578 1.1277)}.loc-suggestions{border-color:var(--border-strong);background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167578 1.1277)}.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)}.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:#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:orange;--aspect-opposition:#f55f7c;--aspect-trine:#ffc94d;--aspect-square:#f55f7c;--aspect-sextile:#118ab2;--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% -.109613 -6.65551);--text:lab(90.6942% -.142396 -2.26941);--text-secondary:lab(51.2352% -.205308 -3.76425);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21129 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.8159 68.8514);--planet-moon:lab(74.277% -.405759 -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.8149);--planet-uranus:lab(71.0008% -37.5682 -15.4301);--planet-neptune:lab(55.2086% -4.9496 -50.4575);--planet-pluto:lab(58.8593% 28.4679 -33.3654);--color-fire:lab(61.5466% 48.3829 50.2676);--color-earth:lab(60.647% -24.5491 38.2386);--color-air:lab(63.473% -27.3149 -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.2719);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.8879% 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% -.240654 -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.3149 -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.3713% -.0768304 -7.37782));box-shadow:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong,lab(16.3713% -.0768304 -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.3713% -.0768304 -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}@media (prefers-color-scheme:light){:root{--aspect-conjunction:orange;--aspect-opposition:#e23a63;--aspect-trine:#c99418;--aspect-square:#e23a63;--aspect-sextile:#118ab2;--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{--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{--bg:lab(96.5376% .34076 2.2589);--surface:lab(100% 0 0);--surface-2:lab(94.2232% .459731 3.01526);--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% -.210047 -4.49809);--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.22038 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)}}html,body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background-image:none}.hd-action-bar{background:var(--bg)}.info-chip{background:var(--surface-2);color:var(--text-secondary);border:1px solid var(--border)}.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)}.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)}.tooltip-title{color:var(--text)}.tooltip-detail{color:var(--text-secondary)}.tooltip-hint{color:var(--gold-dim)}.chart-status{background:rgba(247,245,241,.92);background:color(display-p3 .967616 .959866 .945308/.92);background:lab(96.5376% .34076 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)}.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)}.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)}.pan-btn{background:var(--surface)}.pan-btn:hover{background:var(--surface-2)}#fs-bottom-bar{background:#f7f5f1;background:color(display-p3 .967616 .959866 .945308);background:lab(96.5376% .34076 2.2589);border-top-color:#caced4;border-top-color:color(display-p3 .796183 .806346 .830691);border-top-color:lab(82.5562% -.22167 -3.77336)}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{background:#f1eeea;background:color(display-p3 .941472 .933762 .919279);background:lab(94.2176% .341028 2.25905)}#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)}#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)}#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{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}@media (prefers-color-scheme:light){.param-group input[type=date],.param-group input[type=time],.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% .167578 1.1277)}.loc-suggestions{border-color:var(--border-strong);background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167578 1.1277)}.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)}.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}
|
|
14
14
|
/*$vite$:1*/</style>
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -128,7 +128,7 @@ var l = /* @__PURE__ */ Symbol("zod_brand"), u = class extends Error {
|
|
|
128
128
|
function p(e4) {
|
|
129
129
|
return e4 && Object.assign(f, e4), 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: () =>
|
|
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 });
|
|
132
132
|
function h(e4) {
|
|
133
133
|
return e4;
|
|
134
134
|
}
|
|
@@ -164,11 +164,11 @@ function S(e4) {
|
|
|
164
164
|
function C(e4) {
|
|
165
165
|
return e4 == null;
|
|
166
166
|
}
|
|
167
|
-
function
|
|
167
|
+
function w(e4) {
|
|
168
168
|
let t2 = +!!e4.startsWith("^"), n2 = e4.endsWith("$") ? e4.length - 1 : e4.length;
|
|
169
169
|
return e4.slice(t2, n2);
|
|
170
170
|
}
|
|
171
|
-
function
|
|
171
|
+
function te(e4, t2) {
|
|
172
172
|
let n2 = (e4.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 e5 = r2.match(/\d?e-(\d?)/);
|
|
@@ -177,16 +177,16 @@ function ne(e4, t2) {
|
|
|
177
177
|
let a2 = n2 > i2 ? n2 : i2;
|
|
178
178
|
return Number.parseInt(e4.toFixed(a2).replace(".", "")) % Number.parseInt(t2.toFixed(a2).replace(".", "")) / 10 ** a2;
|
|
179
179
|
}
|
|
180
|
-
var
|
|
181
|
-
function
|
|
180
|
+
var ne = /* @__PURE__ */ Symbol("evaluating");
|
|
181
|
+
function T(e4, t2, n2) {
|
|
182
182
|
let r2;
|
|
183
183
|
Object.defineProperty(e4, t2, { get() {
|
|
184
|
-
if (r2 !==
|
|
184
|
+
if (r2 !== ne) return r2 === void 0 && (r2 = ne, r2 = n2()), r2;
|
|
185
185
|
}, set(n3) {
|
|
186
186
|
Object.defineProperty(e4, t2, { value: n3 });
|
|
187
187
|
}, configurable: true });
|
|
188
188
|
}
|
|
189
|
-
function
|
|
189
|
+
function re(e4) {
|
|
190
190
|
return Object.create(Object.getPrototypeOf(e4), Object.getOwnPropertyDescriptors(e4));
|
|
191
191
|
}
|
|
192
192
|
function E(e4, t2, n2) {
|
|
@@ -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 = e5._zod.bag).multipleOf != null || (n2.multipleOf = t2.value);
|
|
633
633
|
}), e4._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) :
|
|
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: e4, continue: !t2.abort });
|
|
636
636
|
};
|
|
637
637
|
}), Vn = c("$ZodCheckNumberFormat", (e4, t2) => {
|
|
638
638
|
var n2;
|
|
@@ -889,7 +889,7 @@ var rr = c("$ZodCheckProperty", (e4, t2) => {
|
|
|
889
889
|
return t3(o2, i2, a3);
|
|
890
890
|
};
|
|
891
891
|
}
|
|
892
|
-
|
|
892
|
+
T(e4, "~standard", () => ({ validate: (t3) => {
|
|
893
893
|
try {
|
|
894
894
|
var n3;
|
|
895
895
|
let r3 = st(e4, t3);
|
|
@@ -1155,7 +1155,7 @@ var ti = c("$ZodObject", (e4, t2) => {
|
|
|
1155
1155
|
} });
|
|
1156
1156
|
}
|
|
1157
1157
|
let r2 = S(() => $r(t2));
|
|
1158
|
-
|
|
1158
|
+
T(e4._zod, "propValues", () => {
|
|
1159
1159
|
let e5 = t2.shape, n3 = {};
|
|
1160
1160
|
for (let t3 in e5) {
|
|
1161
1161
|
let r3 = e5[t3]._zod;
|
|
@@ -1211,12 +1211,12 @@ function ri(e4, 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: e4.map((e5) => e5.issues.map((e6) => Ie(e6, r2, p()))) }), t2);
|
|
1212
1212
|
}
|
|
1213
1213
|
var ii = c("$ZodUnion", (e4, t2) => {
|
|
1214
|
-
j.init(e4, t2),
|
|
1214
|
+
j.init(e4, t2), T(e4._zod, "optin", () => t2.options.some((e5) => e5._zod.optin === "optional") ? "optional" : void 0), T(e4._zod, "optout", () => t2.options.some((e5) => e5._zod.optout === "optional") ? "optional" : void 0), T(e4._zod, "values", () => {
|
|
1215
1215
|
if (t2.options.every((e5) => e5._zod.values)) return new Set(t2.options.flatMap((e5) => Array.from(e5._zod.values)));
|
|
1216
|
-
}),
|
|
1216
|
+
}), T(e4._zod, "pattern", () => {
|
|
1217
1217
|
if (t2.options.every((e5) => e5._zod.pattern)) {
|
|
1218
1218
|
let e5 = t2.options.map((e6) => e6._zod.pattern);
|
|
1219
|
-
return RegExp("^(".concat(e5.map((e6) =>
|
|
1219
|
+
return RegExp("^(".concat(e5.map((e6) => w(e6.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", (e4, t2) => {
|
|
|
1253
1253
|
}), si = c("$ZodDiscriminatedUnion", (e4, t2) => {
|
|
1254
1254
|
t2.inclusive = false, ii.init(e4, t2);
|
|
1255
1255
|
let n2 = e4._zod.parse;
|
|
1256
|
-
|
|
1256
|
+
T(e4._zod, "propValues", () => {
|
|
1257
1257
|
let e5 = {};
|
|
1258
1258
|
for (let n3 of t2.options) {
|
|
1259
1259
|
let r3 = n3._zod.propValues;
|
|
@@ -1469,9 +1469,9 @@ function Si(e4, t2) {
|
|
|
1469
1469
|
return e4.issues.length && t2 === void 0 ? { issues: [], value: void 0 } : e4;
|
|
1470
1470
|
}
|
|
1471
1471
|
var Ci = c("$ZodOptional", (e4, t2) => {
|
|
1472
|
-
j.init(e4, t2), e4._zod.optin = "optional", e4._zod.optout = "optional",
|
|
1472
|
+
j.init(e4, t2), e4._zod.optin = "optional", e4._zod.optout = "optional", T(e4._zod, "values", () => t2.innerType._zod.values ? /* @__PURE__ */ new Set([...t2.innerType._zod.values, void 0]) : void 0), T(e4._zod, "pattern", () => {
|
|
1473
1473
|
let e5 = t2.innerType._zod.pattern;
|
|
1474
|
-
return e5 ? RegExp("^(".concat(
|
|
1474
|
+
return e5 ? RegExp("^(".concat(w(e5.source), ")?$")) : void 0;
|
|
1475
1475
|
}), e4._zod.parse = (e5, n2) => {
|
|
1476
1476
|
if (t2.innerType._zod.optin === "optional") {
|
|
1477
1477
|
let r2 = t2.innerType._zod.run(e5, n2);
|
|
@@ -1480,14 +1480,14 @@ var Ci = c("$ZodOptional", (e4, t2) => {
|
|
|
1480
1480
|
return e5.value === void 0 ? e5 : t2.innerType._zod.run(e5, n2);
|
|
1481
1481
|
};
|
|
1482
1482
|
}), wi = c("$ZodExactOptional", (e4, t2) => {
|
|
1483
|
-
Ci.init(e4, t2),
|
|
1483
|
+
Ci.init(e4, t2), T(e4._zod, "values", () => t2.innerType._zod.values), T(e4._zod, "pattern", () => t2.innerType._zod.pattern), e4._zod.parse = (e5, n2) => t2.innerType._zod.run(e5, n2);
|
|
1484
1484
|
}), Ti = c("$ZodNullable", (e4, t2) => {
|
|
1485
|
-
j.init(e4, t2),
|
|
1485
|
+
j.init(e4, t2), T(e4._zod, "optin", () => t2.innerType._zod.optin), T(e4._zod, "optout", () => t2.innerType._zod.optout), T(e4._zod, "pattern", () => {
|
|
1486
1486
|
let e5 = t2.innerType._zod.pattern;
|
|
1487
|
-
return e5 ? RegExp("^(".concat(
|
|
1488
|
-
}),
|
|
1487
|
+
return e5 ? RegExp("^(".concat(w(e5.source), "|null)$")) : void 0;
|
|
1488
|
+
}), T(e4._zod, "values", () => t2.innerType._zod.values ? /* @__PURE__ */ new Set([...t2.innerType._zod.values, null]) : void 0), e4._zod.parse = (e5, n2) => e5.value === null ? e5 : t2.innerType._zod.run(e5, n2);
|
|
1489
1489
|
}), Ei = c("$ZodDefault", (e4, t2) => {
|
|
1490
|
-
j.init(e4, t2), e4._zod.optin = "optional",
|
|
1490
|
+
j.init(e4, t2), e4._zod.optin = "optional", T(e4._zod, "values", () => t2.innerType._zod.values), e4._zod.parse = (e5, n2) => {
|
|
1491
1491
|
if (n2.direction === "backward") return t2.innerType._zod.run(e5, n2);
|
|
1492
1492
|
if (e5.value === void 0) return e5.value = t2.defaultValue, e5;
|
|
1493
1493
|
let r2 = t2.innerType._zod.run(e5, n2);
|
|
@@ -1498,9 +1498,9 @@ function Di(e4, t2) {
|
|
|
1498
1498
|
return e4.value === void 0 && (e4.value = t2.defaultValue), e4;
|
|
1499
1499
|
}
|
|
1500
1500
|
var Oi = c("$ZodPrefault", (e4, t2) => {
|
|
1501
|
-
j.init(e4, t2), e4._zod.optin = "optional",
|
|
1501
|
+
j.init(e4, t2), e4._zod.optin = "optional", T(e4._zod, "values", () => t2.innerType._zod.values), e4._zod.parse = (e5, n2) => (n2.direction === "backward" || e5.value === void 0 && (e5.value = t2.defaultValue), t2.innerType._zod.run(e5, n2));
|
|
1502
1502
|
}), ki = c("$ZodNonOptional", (e4, t2) => {
|
|
1503
|
-
j.init(e4, t2),
|
|
1503
|
+
j.init(e4, t2), T(e4._zod, "values", () => {
|
|
1504
1504
|
let e5 = t2.innerType._zod.values;
|
|
1505
1505
|
return e5 ? new Set([...e5].filter((e6) => e6 !== void 0)) : void 0;
|
|
1506
1506
|
}), e4._zod.parse = (n2, r2) => {
|
|
@@ -1518,7 +1518,7 @@ var ji = c("$ZodSuccess", (e4, t2) => {
|
|
|
1518
1518
|
return r2 instanceof Promise ? r2.then((t3) => (e5.value = t3.issues.length === 0, e5)) : (e5.value = r2.issues.length === 0, e5);
|
|
1519
1519
|
};
|
|
1520
1520
|
}), Mi = c("$ZodCatch", (e4, t2) => {
|
|
1521
|
-
j.init(e4, t2),
|
|
1521
|
+
j.init(e4, t2), T(e4._zod, "optin", () => t2.innerType._zod.optin), T(e4._zod, "optout", () => t2.innerType._zod.optout), T(e4._zod, "values", () => t2.innerType._zod.values), e4._zod.parse = (e5, n2) => {
|
|
1522
1522
|
if (n2.direction === "backward") return t2.innerType._zod.run(e5, n2);
|
|
1523
1523
|
let r2 = t2.innerType._zod.run(e5, n2);
|
|
1524
1524
|
return r2 instanceof Promise ? r2.then((r3) => (e5.value = r3.value, r3.issues.length && (e5.value = t2.catchValue({ ...e5, error: { issues: r3.issues.map((e6) => Ie(e6, n2, p())) }, input: e5.value }), e5.issues = []), e5)) : (e5.value = r2.value, r2.issues.length && (e5.value = t2.catchValue({ ...e5, error: { issues: r2.issues.map((e6) => Ie(e6, n2, p())) }, input: e5.value }), e5.issues = []), e5);
|
|
@@ -1526,7 +1526,7 @@ var ji = c("$ZodSuccess", (e4, t2) => {
|
|
|
1526
1526
|
}), Ni = c("$ZodNaN", (e4, t2) => {
|
|
1527
1527
|
j.init(e4, t2), e4._zod.parse = (t3, n2) => ((typeof t3.value != "number" || !Number.isNaN(t3.value)) && t3.issues.push({ input: t3.value, inst: e4, expected: "nan", code: "invalid_type" }), t3);
|
|
1528
1528
|
}), Pi = c("$ZodPipe", (e4, t2) => {
|
|
1529
|
-
j.init(e4, t2),
|
|
1529
|
+
j.init(e4, t2), T(e4._zod, "values", () => t2.in._zod.values), T(e4._zod, "optin", () => t2.in._zod.optin), T(e4._zod, "optout", () => t2.out._zod.optout), T(e4._zod, "propValues", () => t2.in._zod.propValues), e4._zod.parse = (e5, n2) => {
|
|
1530
1530
|
if (n2.direction === "backward") {
|
|
1531
1531
|
let r3 = t2.out._zod.run(e5, n2);
|
|
1532
1532
|
return r3 instanceof Promise ? r3.then((e6) => Fi(e6, t2.in, n2)) : Fi(r3, t2.in, n2);
|
|
@@ -1539,7 +1539,7 @@ function Fi(e4, t2, n2) {
|
|
|
1539
1539
|
return e4.issues.length ? (e4.aborted = true, e4) : t2._zod.run({ value: e4.value, issues: e4.issues }, n2);
|
|
1540
1540
|
}
|
|
1541
1541
|
var Ii = c("$ZodCodec", (e4, t2) => {
|
|
1542
|
-
j.init(e4, t2),
|
|
1542
|
+
j.init(e4, t2), T(e4._zod, "values", () => t2.in._zod.values), T(e4._zod, "optin", () => t2.in._zod.optin), T(e4._zod, "optout", () => t2.out._zod.optout), T(e4._zod, "propValues", () => t2.in._zod.propValues), e4._zod.parse = (e5, n2) => {
|
|
1543
1543
|
if ((n2.direction || "forward") === "forward") {
|
|
1544
1544
|
let r2 = t2.in._zod.run(e5, n2);
|
|
1545
1545
|
return r2 instanceof Promise ? r2.then((e6) => Li(e6, t2, n2)) : Li(r2, t2, n2);
|
|
@@ -1563,10 +1563,10 @@ function Ri(e4, t2, n2, r2) {
|
|
|
1563
1563
|
return e4.issues.length ? (e4.aborted = true, e4) : n2._zod.run({ value: t2, issues: e4.issues }, r2);
|
|
1564
1564
|
}
|
|
1565
1565
|
var zi = c("$ZodReadonly", (e4, t2) => {
|
|
1566
|
-
j.init(e4, t2),
|
|
1566
|
+
j.init(e4, t2), T(e4._zod, "propValues", () => t2.innerType._zod.propValues), T(e4._zod, "values", () => t2.innerType._zod.values), T(e4._zod, "optin", () => {
|
|
1567
1567
|
var e5;
|
|
1568
1568
|
return (e5 = t2.innerType) == null || (e5 = e5._zod) == null ? void 0 : e5.optin;
|
|
1569
|
-
}),
|
|
1569
|
+
}), T(e4._zod, "optout", () => {
|
|
1570
1570
|
var e5;
|
|
1571
1571
|
return (e5 = t2.innerType) == null || (e5 = e5._zod) == null ? void 0 : e5.optout;
|
|
1572
1572
|
}), e4._zod.parse = (e5, n2) => {
|
|
@@ -1618,16 +1618,16 @@ var Vi = c("$ZodTemplateLiteral", (e4, t2) => {
|
|
|
1618
1618
|
}, e4)), Ui = c("$ZodPromise", (e4, t2) => {
|
|
1619
1619
|
j.init(e4, t2), e4._zod.parse = (e5, n2) => Promise.resolve(e5.value).then((e6) => t2.innerType._zod.run({ value: e6, issues: [] }, n2));
|
|
1620
1620
|
}), Wi = c("$ZodLazy", (e4, t2) => {
|
|
1621
|
-
j.init(e4, t2),
|
|
1621
|
+
j.init(e4, t2), T(e4._zod, "innerType", () => t2.getter()), T(e4._zod, "pattern", () => {
|
|
1622
1622
|
var t3;
|
|
1623
1623
|
return (t3 = e4._zod.innerType) == null || (t3 = t3._zod) == null ? void 0 : t3.pattern;
|
|
1624
|
-
}),
|
|
1624
|
+
}), T(e4._zod, "propValues", () => {
|
|
1625
1625
|
var t3;
|
|
1626
1626
|
return (t3 = e4._zod.innerType) == null || (t3 = t3._zod) == null ? void 0 : t3.propValues;
|
|
1627
|
-
}),
|
|
1627
|
+
}), T(e4._zod, "optin", () => {
|
|
1628
1628
|
var t3, n2;
|
|
1629
1629
|
return (t3 = (n2 = e4._zod.innerType) == null || (n2 = n2._zod) == null ? void 0 : n2.optin) == null ? void 0 : t3;
|
|
1630
|
-
}),
|
|
1630
|
+
}), T(e4._zod, "optout", () => {
|
|
1631
1631
|
var t3, n2;
|
|
1632
1632
|
return (t3 = (n2 = e4._zod.innerType) == null || (n2 = n2._zod) == null ? void 0 : n2.optout) == null ? void 0 : t3;
|
|
1633
1633
|
}), e4._zod.parse = (t3, n2) => e4._zod.innerType._zod.run(t3, n2);
|
|
@@ -2449,22 +2449,22 @@ var wa = () => {
|
|
|
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
|
|
2452
|
+
var w2, te2;
|
|
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((
|
|
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 = e5 == null ? void 0 : e5.unit) == null ? "" : w2, " \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8") : "\u05D9\u05D5\u05EA\u05E8 \u05DE-".concat(t3.minimum, " ").concat((te2 = e5 == null ? void 0 : e5.unit) == null ? "" : te2)).trim();
|
|
2455
2455
|
}
|
|
2456
2456
|
let r3 = t3.inclusive ? ">=" : ">", s3 = a2((y2 = t3.origin) == null ? "value" : y2);
|
|
2457
2457
|
return e5 != null && e5.unit ? "".concat(e5.shortLabel, " \u05DE\u05D3\u05D9: ").concat(n4, " ").concat(s3, " ").concat(r3).concat(t3.minimum.toString(), " ").concat(e5.unit) : "".concat((x2 = e5 == null ? void 0 : e5.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
|
|
2460
|
+
var ne2, T2;
|
|
2461
2461
|
let e5 = t3;
|
|
2462
2462
|
if (e5.format === "starts_with") return '\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "'.concat(e5.prefix, '"');
|
|
2463
2463
|
if (e5.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(e5.suffix, '"');
|
|
2464
2464
|
if (e5.format === "includes") return '\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "'.concat(e5.includes, '"');
|
|
2465
2465
|
if (e5.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(e5.pattern);
|
|
2466
2466
|
let n4 = s2[e5.format];
|
|
2467
|
-
return "".concat((
|
|
2467
|
+
return "".concat((ne2 = n4 == null ? void 0 : n4.label) == null ? e5.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");
|
|
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
|
|
2479
|
-
return "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1".concat(i2((
|
|
2478
|
+
var re2;
|
|
2479
|
+
return "\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1".concat(i2((re2 = t3.origin) == null ? "array" : re2));
|
|
2480
2480
|
default:
|
|
2481
2481
|
return "\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";
|
|
2482
2482
|
}
|
|
@@ -5228,7 +5228,7 @@ function tf(e4) {
|
|
|
5228
5228
|
return Cf(Object.keys(t2));
|
|
5229
5229
|
}
|
|
5230
5230
|
var nf = c("ZodObject", (e4, t2) => {
|
|
5231
|
-
ni.init(e4, t2), P.init(e4, t2), e4._zod.processJSONSchema = (t3, n2, r2) => Nl(e4, t3, n2, r2),
|
|
5231
|
+
ni.init(e4, t2), P.init(e4, t2), e4._zod.processJSONSchema = (t3, n2, r2) => Nl(e4, t3, n2, r2), T(e4, "shape", () => t2.shape), e4.keyof = () => Cf(Object.keys(e4._zod.def.shape)), e4.catchall = (t3) => e4.clone({ ...e4._zod.def, catchall: t3 }), e4.passthrough = () => e4.clone({ ...e4._zod.def, catchall: z() }), e4.loose = () => e4.clone({ ...e4._zod.def, catchall: z() }), e4.strict = () => e4.clone({ ...e4._zod.def, catchall: Yd() }), e4.strip = () => e4.clone({ ...e4._zod.def, catchall: void 0 }), e4.extend = (t3) => Oe(e4, t3), e4.safeExtend = (t3) => ke(e4, t3), e4.merge = (t3) => Ae(e4, t3), e4.pick = (t3) => Ee(e4, t3), e4.omit = (t3) => De(e4, t3), e4.partial = (...t3) => je(Af, e4, t3[0]), e4.required = (...t3) => Me(Bf, e4, t3[0]);
|
|
5232
5232
|
});
|
|
5233
5233
|
function V(e4, t2) {
|
|
5234
5234
|
return new nf({ type: "object", shape: e4 == null ? {} : e4, ...D(t2) });
|
|
@@ -6568,63 +6568,112 @@ function i_(e4, t2) {
|
|
|
6568
6568
|
var n2, r2, i2, a2, o2, s2;
|
|
6569
6569
|
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
6570
|
c2 && (c2.hidden = false);
|
|
6571
|
-
let f2 = (n2 = (r2 = e4.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 =
|
|
6572
|
-
|
|
6573
|
-
|
|
6571
|
+
let f2 = (n2 = (r2 = e4.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
|
+
e4.style.touchAction = "none";
|
|
6573
|
+
let S2 = () => e4.setAttribute("viewBox", "".concat(ee2, " ").concat(y2, " ").concat(b2, " ").concat(x2)), C2 = (e5, t3, n3) => {
|
|
6574
|
+
t3 === void 0 && (t3 = ee2 + b2 / 2), n3 === void 0 && (n3 = y2 + x2 / 2);
|
|
6575
|
+
let r3 = b2 * e5;
|
|
6576
|
+
r3 < _2 && (r3 = _2), r3 > v2 && (r3 = v2), r3 !== b2 && (e5 = r3 / b2, ee2 = t3 - (t3 - ee2) * e5, y2 = n3 - (n3 - y2) * e5, b2 = r3, x2 *= e5, S2());
|
|
6574
6577
|
};
|
|
6575
|
-
l2 == null || l2.addEventListener("click", () =>
|
|
6576
|
-
|
|
6577
|
-
}), e4.addEventListener("wheel", (t3) => {
|
|
6578
|
-
t3.preventDefault();
|
|
6579
|
-
let n3 = Math.exp((t3.deltaY < 0 ? -1 : 1) * 0.1), r3 = e4.getBoundingClientRect(), i3 = t3.clientX - r3.left, a3 = t3.clientY - r3.top;
|
|
6580
|
-
te2(n3, y2 + i3 / r3.width * x2, b2 + a3 / r3.height * S2);
|
|
6581
|
-
}, { passive: false }), e4.addEventListener("pointerdown", (t3) => {
|
|
6582
|
-
let n3 = t3.target;
|
|
6583
|
-
n3.closest && (n3.closest('[class*="-hit"]') || n3.closest('[class*="-activation"]') || n3.closest(".variable-arrow") || n3.closest("button")) || (_2 = true, v2 = t3.clientX, ee2 = t3.clientY, e4.setPointerCapture(t3.pointerId), e4.style.cursor = "grabbing");
|
|
6584
|
-
}), e4.addEventListener("pointermove", (t3) => {
|
|
6585
|
-
if (!_2) return;
|
|
6586
|
-
let n3 = t3.clientX - v2, r3 = t3.clientY - ee2;
|
|
6587
|
-
v2 = t3.clientX, ee2 = t3.clientY;
|
|
6588
|
-
let i3 = e4.getBoundingClientRect(), a3 = n3 / i3.width * x2, o3 = r3 / i3.height * S2;
|
|
6589
|
-
y2 -= a3, b2 -= o3, C2();
|
|
6590
|
-
}), e4.addEventListener("pointerup", (t3) => {
|
|
6591
|
-
_2 && (_2 = false, e4.releasePointerCapture(t3.pointerId), e4.style.cursor = "default");
|
|
6578
|
+
l2 == null || l2.addEventListener("click", () => C2(0.8)), u2 == null || u2.addEventListener("click", () => C2(1.25)), d2 == null || d2.addEventListener("click", () => {
|
|
6579
|
+
ee2 = p2, y2 = m2, b2 = h2, x2 = g2, S2();
|
|
6592
6580
|
});
|
|
6581
|
+
let w2 = (t3, n3) => {
|
|
6582
|
+
let r3 = e4.getBoundingClientRect();
|
|
6583
|
+
return { x: ee2 + (t3 - r3.left) / r3.width * b2, y: y2 + (n3 - r3.top) / r3.height * x2 };
|
|
6584
|
+
};
|
|
6585
|
+
e4.addEventListener("wheel", (e5) => {
|
|
6586
|
+
e5.preventDefault();
|
|
6587
|
+
let t3 = Math.exp((e5.deltaY < 0 ? -1 : 1) * 0.1), n3 = w2(e5.clientX, e5.clientY);
|
|
6588
|
+
C2(t3, n3.x, n3.y);
|
|
6589
|
+
}, { passive: false });
|
|
6590
|
+
let te2 = /* @__PURE__ */ new Map(), ne2 = null, T2 = () => {
|
|
6591
|
+
let [e5, t3] = [...te2.values()];
|
|
6592
|
+
return { dist: Math.hypot(e5.x - t3.x, e5.y - t3.y), midX: (e5.x + t3.x) / 2, midY: (e5.y + t3.y) / 2 };
|
|
6593
|
+
}, re2 = (t3, n3) => {
|
|
6594
|
+
let r3 = e4.getBoundingClientRect();
|
|
6595
|
+
ee2 -= t3 / r3.width * b2, y2 -= n3 / r3.height * x2, S2();
|
|
6596
|
+
};
|
|
6597
|
+
e4.addEventListener("pointerdown", (t3) => {
|
|
6598
|
+
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 || (e4.setPointerCapture(t3.pointerId), e4.style.cursor = "grabbing"), te2.size === 2 && (ne2 = T2());
|
|
6600
|
+
}), e4.addEventListener("pointermove", (e5) => {
|
|
6601
|
+
let t3 = te2.get(e5.pointerId);
|
|
6602
|
+
if (t3) if (te2.set(e5.pointerId, { x: e5.clientX, y: e5.clientY, interactive: t3.interactive }), te2.size >= 2 && ne2) {
|
|
6603
|
+
let e6 = T2();
|
|
6604
|
+
if (ne2.dist > 0 && e6.dist > 0) {
|
|
6605
|
+
let t4 = w2(e6.midX, e6.midY);
|
|
6606
|
+
C2(ne2.dist / e6.dist, t4.x, t4.y);
|
|
6607
|
+
}
|
|
6608
|
+
re2(e6.midX - ne2.midX, e6.midY - ne2.midY), ne2 = e6;
|
|
6609
|
+
} else te2.size === 1 && !t3.interactive && re2(e5.clientX - t3.x, e5.clientY - t3.y);
|
|
6610
|
+
});
|
|
6611
|
+
let E2 = (t3) => {
|
|
6612
|
+
te2.delete(t3.pointerId) && (e4.hasPointerCapture(t3.pointerId) && e4.releasePointerCapture(t3.pointerId), ne2 = te2.size >= 2 ? T2() : null, te2.size === 0 && (e4.style.cursor = "default"));
|
|
6613
|
+
};
|
|
6614
|
+
e4.addEventListener("pointerup", E2), e4.addEventListener("pointercancel", E2);
|
|
6615
|
+
}
|
|
6616
|
+
var a_ = { fire: "#f55f7c", earth: "#24e6a8", air: "#ffc94d", water: "#49b6ea", fireTint: "rgba(245,95,124,0.20)", earthTint: "rgba(36,230,168,0.20)", airTint: "rgba(255,201,77,0.20)", waterTint: "rgba(73,182,234,0.20)", points: "#118ab2", others: "#ffa500", house: "#7a8695", transit: "#c19bf2", ink: "#f7f3f0" }, o_ = { fire: "#e23a63", earth: "#079e78", air: "#c99418", water: "#0f7ea3", fireTint: "rgba(239,71,111,0.12)", earthTint: "rgba(6,214,160,0.13)", airTint: "rgba(255,209,102,0.20)", waterTint: "rgba(17,138,178,0.12)", points: "#118ab2", others: "#ffa500", house: "#6f8496", transit: "#7b3fb5", ink: "#0b1220" };
|
|
6617
|
+
function s_(e4) {
|
|
6618
|
+
return e4 ? a_ : o_;
|
|
6619
|
+
}
|
|
6620
|
+
function c_(e4, t2) {
|
|
6621
|
+
let n2 = s_(t2);
|
|
6622
|
+
return [n2.fire, n2.earth, n2.air, n2.water][(e4 % 12 + 12) % 12 % 4];
|
|
6623
|
+
}
|
|
6624
|
+
function l_(e4, t2) {
|
|
6625
|
+
let n2 = s_(t2);
|
|
6626
|
+
return [n2.fireTint, n2.earthTint, n2.airTint, n2.waterTint][(e4 % 12 + 12) % 12 % 4];
|
|
6627
|
+
}
|
|
6628
|
+
function u_() {
|
|
6629
|
+
let e4 = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
6630
|
+
if (!e4) try {
|
|
6631
|
+
let t2 = getComputedStyle(document.body).backgroundColor;
|
|
6632
|
+
if (t2.startsWith("oklch") || t2.startsWith("oklab")) {
|
|
6633
|
+
let n2 = parseFloat(t2.slice(t2.indexOf("(") + 1));
|
|
6634
|
+
Number.isNaN(n2) || (e4 = (n2 > 1 ? n2 / 100 : n2) < 0.45);
|
|
6635
|
+
} else {
|
|
6636
|
+
let n2 = t2.match(/\d+(?:\.\d+)?/g);
|
|
6637
|
+
n2 && n2.length >= 3 && (e4 = (0.299 * n2[0] + 0.587 * n2[1] + 0.114 * n2[2]) / 255 < 0.35);
|
|
6638
|
+
}
|
|
6639
|
+
} catch (e5) {
|
|
6640
|
+
}
|
|
6641
|
+
return e4;
|
|
6593
6642
|
}
|
|
6594
|
-
function
|
|
6643
|
+
function d_(e4, t2) {
|
|
6595
6644
|
if (e4.length <= 1) {
|
|
6596
6645
|
let t3 = /* @__PURE__ */ new Map();
|
|
6597
6646
|
for (let n3 of e4) t3.set(n3.name, n3.longitude);
|
|
6598
6647
|
return t3;
|
|
6599
6648
|
}
|
|
6600
6649
|
let n2 = [...e4].sort((e5, t3) => e5.longitude - t3.longitude), r2 = [], i2 = [];
|
|
6601
|
-
for (let e5 of n2) r2.push(e5.longitude), i2.push(
|
|
6602
|
-
|
|
6650
|
+
for (let e5 of n2) r2.push(e5.longitude), i2.push(f_(e5.longitude, i2, t2));
|
|
6651
|
+
m_(i2, r2, t2);
|
|
6603
6652
|
let a2 = /* @__PURE__ */ new Map();
|
|
6604
|
-
for (let e5 = 0; e5 < n2.length; e5++) a2.set(n2[e5].name,
|
|
6653
|
+
for (let e5 = 0; e5 < n2.length; e5++) a2.set(n2[e5].name, g_(i2[e5]));
|
|
6605
6654
|
return a2;
|
|
6606
6655
|
}
|
|
6607
|
-
function
|
|
6656
|
+
function f_(e4, t2, n2) {
|
|
6608
6657
|
if (t2.length === 0) return e4;
|
|
6609
6658
|
let r2 = Math.max(0.55, n2 / 4), i2 = Math.max(8, Math.min(40, n2 * 5)), a2 = Math.floor(i2 / r2);
|
|
6610
|
-
if (
|
|
6659
|
+
if (p_(e4, t2, n2)) return e4;
|
|
6611
6660
|
for (let i3 = 1; i3 <= a2; i3++) {
|
|
6612
6661
|
let a3 = i3 * r2;
|
|
6613
|
-
if (
|
|
6614
|
-
if (
|
|
6662
|
+
if (p_(e4 + a3, t2, n2)) return e4 + a3;
|
|
6663
|
+
if (p_(e4 - a3, t2, n2)) return e4 - a3;
|
|
6615
6664
|
}
|
|
6616
6665
|
return e4;
|
|
6617
6666
|
}
|
|
6618
|
-
function
|
|
6619
|
-
for (let r2 of t2) if (
|
|
6667
|
+
function p_(e4, t2, n2) {
|
|
6668
|
+
for (let r2 of t2) if (h_(e4, r2) < n2) return false;
|
|
6620
6669
|
return true;
|
|
6621
6670
|
}
|
|
6622
|
-
function
|
|
6671
|
+
function m_(e4, t2, n2) {
|
|
6623
6672
|
let r2 = e4.length;
|
|
6624
6673
|
if (!(r2 <= 1)) for (let t3 = 0; t3 < 80; t3++) {
|
|
6625
6674
|
let t4 = true;
|
|
6626
6675
|
for (let i2 = 0; i2 < r2; i2++) for (let a2 = i2 + 1; a2 < r2; a2++) {
|
|
6627
|
-
let r3 = n2 -
|
|
6676
|
+
let r3 = n2 - h_(e4[i2], e4[a2]);
|
|
6628
6677
|
if (r3 > 0.01) {
|
|
6629
6678
|
t4 = false;
|
|
6630
6679
|
let n3 = r3 * 0.65 / 2, o2 = e4[a2] - e4[i2];
|
|
@@ -6636,89 +6685,89 @@ function c_(e4, t2, n2) {
|
|
|
6636
6685
|
if (t4) break;
|
|
6637
6686
|
}
|
|
6638
6687
|
}
|
|
6639
|
-
function
|
|
6688
|
+
function h_(e4, t2) {
|
|
6640
6689
|
let n2 = ((t2 - e4) % 360 + 540) % 360 - 180;
|
|
6641
6690
|
return Math.abs(n2);
|
|
6642
6691
|
}
|
|
6643
|
-
function
|
|
6692
|
+
function g_(e4) {
|
|
6644
6693
|
return (e4 % 360 + 360) % 360;
|
|
6645
6694
|
}
|
|
6646
|
-
var
|
|
6695
|
+
var __ = 250, v_ = 250, y_ = 240, b_ = 204, x_ = 190, S_ = 159, C_ = 140, w_ = 134, T_ = 15, E_ = 20;
|
|
6647
6696
|
function Y(e4, t2, n2) {
|
|
6648
6697
|
let r2 = -(e4 - n2 + 180) * Math.PI / 180;
|
|
6649
|
-
return { x:
|
|
6698
|
+
return { x: __ + t2 * Math.cos(r2), y: v_ + t2 * Math.sin(r2) };
|
|
6650
6699
|
}
|
|
6651
6700
|
function X(e4) {
|
|
6652
6701
|
return document.createElementNS("http://www.w3.org/2000/svg", e4);
|
|
6653
6702
|
}
|
|
6654
|
-
var
|
|
6655
|
-
function
|
|
6703
|
+
var D_ = { sun: "\u2609\uFE0E", moon: "\u263D\uFE0E", mercury: "\u263F\uFE0E", venus: "\u2640\uFE0E", mars: "\u2642\uFE0E", jupiter: "\u2643\uFE0E", saturn: "\u2644\uFE0E", uranus: "\u2645\uFE0E", neptune: "\u2646\uFE0E", pluto: "\u2647\uFE0E", "north node": "\u260A\uFE0E", "south node": "\u260B\uFE0E", chiron: "\u26B7\uFE0E", "true node": "\u260A\uFE0E", mean_lilith: "\u26B8\uFE0E", lilith: "\u26B8\uFE0E", true_lilith: "\u26B8\uFE0E", ceres: "\u26B3\uFE0E", juno: "\u26B5\uFE0E", vesta: "\u26B6\uFE0E", pallas: "\u26B4\uFE0E", pholus: "\u2BDB\uFE0E", vertex: "Vx", part_of_fortune: "\u2295\uFE0E", "part of fortune": "\u2295\uFE0E", eris: "\u2BF0\uFE0E", sedna: "\u2BF2\uFE0E" }, O_ = ["\u2648", "\u2649", "\u264A", "\u264B", "\u264C", "\u264D", "\u264E", "\u264F", "\u2650", "\u2651", "\u2652", "\u2653"].map((e4) => e4 + "\uFE0E"), k_ = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"], A_ = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u26BB", semisquare: "\u2220" };
|
|
6704
|
+
function j_(e4) {
|
|
6656
6705
|
var t2;
|
|
6657
6706
|
let n2 = e4.toLowerCase(), r2 = "--aspect-".concat(n2);
|
|
6658
6707
|
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);
|
|
6659
6708
|
}
|
|
6660
|
-
var
|
|
6661
|
-
function
|
|
6709
|
+
var M_ = u_, N_ = (e4) => c_(e4, M_());
|
|
6710
|
+
function P_(e4) {
|
|
6662
6711
|
let t2 = "--planet-".concat(e4.toLowerCase().replace(/\s+/g, "-"));
|
|
6663
6712
|
return getComputedStyle(document.documentElement).getPropertyValue(t2).trim() || "var(--text)";
|
|
6664
6713
|
}
|
|
6665
|
-
var
|
|
6666
|
-
function
|
|
6714
|
+
var F_ = /* @__PURE__ */ new Set(["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"]), I_ = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]), L_ = /* @__PURE__ */ new Set([...F_, ...I_]);
|
|
6715
|
+
function R_(e4) {
|
|
6667
6716
|
let t2 = (e4 % 360 + 360) % 360, n2 = Math.floor(t2 / 30), r2 = Math.floor(t2 % 30);
|
|
6668
|
-
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(
|
|
6717
|
+
return "".concat(r2, "\xB0").concat(Math.floor((t2 % 30 - r2) * 60).toString().padStart(2, "0"), "\u2032 ").concat(k_[n2]);
|
|
6669
6718
|
}
|
|
6670
6719
|
function Z(e4) {
|
|
6671
6720
|
return e4.replace(/\b\w/g, (e5) => e5.toUpperCase());
|
|
6672
6721
|
}
|
|
6673
|
-
var
|
|
6674
|
-
function
|
|
6675
|
-
|
|
6722
|
+
var z_ = "true";
|
|
6723
|
+
function B_(e4) {
|
|
6724
|
+
z_ = e4;
|
|
6676
6725
|
}
|
|
6677
|
-
function
|
|
6726
|
+
function V_(e4) {
|
|
6678
6727
|
let t2 = e4.some((e5) => e5.name.toLowerCase() === "true node"), n2 = e4.some((e5) => e5.name.toLowerCase() === "north node");
|
|
6679
6728
|
if (!t2 || !n2) return e4;
|
|
6680
|
-
let r2 =
|
|
6729
|
+
let r2 = z_ === "true" ? "north node" : "true node";
|
|
6681
6730
|
return e4.filter((e5) => e5.name.toLowerCase() !== r2);
|
|
6682
6731
|
}
|
|
6683
|
-
function
|
|
6684
|
-
return Array.isArray(e4) ?
|
|
6732
|
+
function H_(e4) {
|
|
6733
|
+
return Array.isArray(e4) ? V_(e4) : e4 && typeof e4 == "object" ? V_(Object.entries(e4).filter(([e5]) => L_.has(e5.toLowerCase())).map(([e5, t2]) => {
|
|
6685
6734
|
var n2, r2, i2, a2, o2, s2;
|
|
6686
6735
|
return { name: e5.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 };
|
|
6687
6736
|
})) : [];
|
|
6688
6737
|
}
|
|
6689
|
-
var
|
|
6690
|
-
function
|
|
6691
|
-
|
|
6692
|
-
let a2 =
|
|
6693
|
-
c2 + o2 > window.innerWidth - 14 && (c2 = e4 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14),
|
|
6738
|
+
var U_ = document.getElementById("tooltip");
|
|
6739
|
+
function W_(e4, t2, n2, r2, i2) {
|
|
6740
|
+
U_.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 ");
|
|
6741
|
+
let a2 = U_.getBoundingClientRect(), o2 = a2.width || 220, s2 = a2.height || 80, c2 = e4 + 14, l2 = t2 + 14;
|
|
6742
|
+
c2 + o2 > window.innerWidth - 14 && (c2 = e4 - o2 - 14), l2 + s2 > window.innerHeight - 14 && (l2 = t2 - s2 - 14), U_.style.left = "".concat(Math.max(14, c2), "px"), U_.style.top = "".concat(Math.max(14, l2), "px"), U_.classList.add("visible");
|
|
6694
6743
|
}
|
|
6695
|
-
function
|
|
6696
|
-
|
|
6744
|
+
function G_() {
|
|
6745
|
+
U_.classList.remove("visible");
|
|
6697
6746
|
}
|
|
6698
|
-
var
|
|
6699
|
-
function
|
|
6747
|
+
var K_ = { sun: "identity & vitality", moon: "emotions & instincts", mercury: "mind & communication", venus: "love & values", mars: "drive & desire", jupiter: "expansion & meaning", saturn: "discipline & mastery", uranus: "innovation & rebellion", neptune: "dreams & transcendence", pluto: "transformation & power", chiron: "wound & healing", "north node": "soul direction", "south node": "past-life gifts", "true node": "soul direction", mean_lilith: "primal feminine & shadow", lilith: "primal feminine & shadow", true_lilith: "primal feminine & shadow", ceres: "nurturing & sustenance", juno: "partnership & commitment", vesta: "devotion & sacred focus", pallas: "wisdom & strategy", pholus: "catalyst & small cause, big effect", vertex: "fated encounters", part_of_fortune: "joy & worldly success", "part of fortune": "joy & worldly success", eris: "discord & radical individuation", sedna: "deep betrayal & transcendence" }, q_ = { 1: "self & first impressions", 2: "resources & values", 3: "communication & learning", 4: "home & roots", 5: "creativity & joy", 6: "health & service", 7: "partnerships & others", 8: "transformation & shared resources", 9: "philosophy & exploration", 10: "career & public role", 11: "community & ideals", 12: "solitude & the unconscious" }, J_ = { 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" }, Y_ = { conjunction: "fusion & amplification", opposition: "polarity & integration", trine: "ease & natural flow", square: "tension & growth", sextile: "opportunity & cooperation", quincunx: "adjustment & recalibration", semisquare: "friction & minor tension" };
|
|
6748
|
+
function X_(e4) {
|
|
6700
6749
|
return Math.floor((e4 % 360 + 360) % 360 / 30);
|
|
6701
6750
|
}
|
|
6702
|
-
var
|
|
6703
|
-
function
|
|
6704
|
-
let n2 = e4.toLowerCase(), r2 =
|
|
6751
|
+
var Z_ = { sun: [4], moon: [3], mercury: [2, 5], venus: [1, 6], mars: [0, 7], jupiter: [8, 11], saturn: [9, 10] }, Q_ = { sun: 0, moon: 1, mercury: 5, venus: 11, mars: 9, jupiter: 3, saturn: 6 };
|
|
6752
|
+
function $_(e4, t2) {
|
|
6753
|
+
let n2 = e4.toLowerCase(), r2 = X_(t2), i2 = Z_[n2];
|
|
6705
6754
|
if (i2 != null && i2.includes(r2)) return { type: "domicile", label: "Domicile", emoji: "\u2302", cssClass: "dignity-domicile" };
|
|
6706
6755
|
if (i2 && i2.map((e5) => (e5 + 6) % 12).includes(r2)) return { type: "detriment", label: "Detriment", emoji: "\u2B07", cssClass: "dignity-detriment" };
|
|
6707
|
-
let a2 =
|
|
6756
|
+
let a2 = Q_[n2];
|
|
6708
6757
|
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;
|
|
6709
6758
|
}
|
|
6710
|
-
var
|
|
6711
|
-
function
|
|
6759
|
+
var ev = ["fire", "earth", "air", "water", "fire", "earth", "air", "water", "fire", "earth", "air", "water"], tv = ["cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable", "cardinal", "fixed", "mutable"];
|
|
6760
|
+
function nv(e4, t2) {
|
|
6712
6761
|
return [e4.toLowerCase(), t2.toLowerCase()].sort().join("|");
|
|
6713
6762
|
}
|
|
6714
|
-
function
|
|
6763
|
+
function rv(e4, t2) {
|
|
6715
6764
|
return e4.filter((e5) => {
|
|
6716
6765
|
var n2;
|
|
6717
6766
|
return ((n2 = e5.type) == null ? "" : n2).toLowerCase() === t2;
|
|
6718
6767
|
});
|
|
6719
6768
|
}
|
|
6720
|
-
function
|
|
6721
|
-
let n2 = [], r2 =
|
|
6769
|
+
function iv(e4, t2) {
|
|
6770
|
+
let n2 = [], r2 = rv(e4, "square"), i2 = rv(e4, "opposition"), a2 = rv(e4, "trine"), o2 = rv(e4, "sextile"), s2 = rv(e4, "quincunx"), c2 = /* @__PURE__ */ new Set();
|
|
6722
6771
|
for (let e5 of i2) {
|
|
6723
6772
|
let i3 = e5.planet1.toLowerCase(), a3 = e5.planet2.toLowerCase(), o3 = r2.filter((e6) => e6.planet1.toLowerCase() === i3 || e6.planet2.toLowerCase() === i3);
|
|
6724
6773
|
for (let e6 of o3) {
|
|
@@ -6727,8 +6776,8 @@ function Z_(e4, t2) {
|
|
|
6727
6776
|
let s3 = [i3, a3, o4].sort().join("|");
|
|
6728
6777
|
if (!c2.has(s3) && r2.find((e7) => e7.planet1.toLowerCase() === o4 && e7.planet2.toLowerCase() === a3 || e7.planet2.toLowerCase() === o4 && e7.planet1.toLowerCase() === a3)) {
|
|
6729
6778
|
c2.add(s3);
|
|
6730
|
-
let e7 = t2.find((e8) => e8.name.toLowerCase() === o4), r3 = e7 ? Z(
|
|
6731
|
-
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [
|
|
6779
|
+
let e7 = t2.find((e8) => e8.name.toLowerCase() === o4), r3 = e7 ? Z(tv[X_(e7.longitude)]) : "";
|
|
6780
|
+
n2.push({ name: "T-Square", description: "".concat(r3 ? r3 + " \xB7 " : "", "Apex: ").concat(Z(o4)), planets: [.../* @__PURE__ */ new Set([i3, a3, o4])], aspectKeys: [nv(i3, a3), nv(i3, o4), nv(a3, o4)] });
|
|
6732
6781
|
break;
|
|
6733
6782
|
}
|
|
6734
6783
|
}
|
|
@@ -6738,7 +6787,7 @@ function Z_(e4, t2) {
|
|
|
6738
6787
|
let r3 = a2[e5], i3 = a2[t3], o3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], s3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], c3 = o3.find((e6) => s3.includes(e6));
|
|
6739
6788
|
if (!c3) continue;
|
|
6740
6789
|
let u3 = o3.find((e6) => e6 !== c3), d3 = s3.find((e6) => e6 !== c3), f3 = [u3, c3, d3].sort().join("|");
|
|
6741
|
-
l2.has(f3) || a2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.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: [
|
|
6790
|
+
l2.has(f3) || a2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.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: [nv(u3, c3), nv(c3, d3), nv(u3, d3)] }));
|
|
6742
6791
|
}
|
|
6743
6792
|
if (i2.length >= 2 && r2.length >= 4) for (let e5 = 0; e5 < i2.length; e5++) for (let a3 = e5 + 1; a3 < i2.length; a3++) {
|
|
6744
6793
|
let o3 = i2[e5], s3 = i2[a3], [c3, l3] = [o3.planet1.toLowerCase(), o3.planet2.toLowerCase()], [u3, d3] = [s3.planet1.toLowerCase(), s3.planet2.toLowerCase()];
|
|
@@ -6749,19 +6798,19 @@ function Z_(e4, t2) {
|
|
|
6749
6798
|
var n3, r3;
|
|
6750
6799
|
return { name: e7, lon: (n3 = (r3 = t2.find((t3) => t3.name.toLowerCase() === e7)) == null ? void 0 : r3.longitude) == null ? 0 : n3 };
|
|
6751
6800
|
}).sort((e7, t3) => e7.lon - t3.lon).map((e7) => e7.name);
|
|
6752
|
-
n2.push({ name: "Grand Cross", description: e6.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [
|
|
6801
|
+
n2.push({ name: "Grand Cross", description: e6.map(Z).join(" \xB7 "), planets: [c3, l3, u3, d3], aspectKeys: [nv(c3, l3), nv(u3, d3), ...f3.map(([e7, t3]) => nv(e7, t3))] });
|
|
6753
6802
|
}
|
|
6754
6803
|
}
|
|
6755
6804
|
let u2 = /* @__PURE__ */ new Set(["north node", "south node", "true node", "chiron"]), d2 = t2.filter((e5) => !u2.has(e5.name.toLowerCase())).map((e5) => ({ name: e5.name.toLowerCase(), lon: e5.longitude })), f2 = /* @__PURE__ */ new Map();
|
|
6756
6805
|
for (let { name: e5, lon: t3 } of d2) {
|
|
6757
6806
|
var p2;
|
|
6758
|
-
let n3 =
|
|
6807
|
+
let n3 = X_(t3), r3 = (p2 = f2.get(n3)) == null ? [] : p2;
|
|
6759
6808
|
r3.push(e5), f2.set(n3, r3);
|
|
6760
6809
|
}
|
|
6761
6810
|
for (let [e5, t3] of f2) if (t3.length >= 3) {
|
|
6762
6811
|
let r3 = [...t3].sort().join("|"), i3 = [];
|
|
6763
|
-
for (let e6 = 0; e6 < t3.length; e6++) for (let n3 = e6 + 1; n3 < t3.length; n3++) i3.push(
|
|
6764
|
-
n2.push({ name: "Stellium", description: "".concat(
|
|
6812
|
+
for (let e6 = 0; e6 < t3.length; e6++) for (let n3 = e6 + 1; n3 < t3.length; n3++) i3.push(nv(t3[e6], t3[n3]));
|
|
6813
|
+
n2.push({ name: "Stellium", description: "".concat(k_[e5], ": ").concat(t3.map(Z).join(", ")), planets: t3, aspectKeys: i3, _dedupeKey: r3 });
|
|
6765
6814
|
}
|
|
6766
6815
|
let m2 = [...d2].sort((e5, t3) => e5.lon - t3.lon), h2 = [...m2, ...m2.map((e5) => ({ ...e5, lon: e5.lon + 360 }))], g2 = /* @__PURE__ */ new Set();
|
|
6767
6816
|
for (let e5 = 0; e5 < h2.length - 2; e5++) {
|
|
@@ -6774,7 +6823,7 @@ function Z_(e4, t2) {
|
|
|
6774
6823
|
if (g2.has(t4)) continue;
|
|
6775
6824
|
if (g2.add(t4), !n2.some((e7) => e7._dedupeKey === t4)) {
|
|
6776
6825
|
let t5 = [];
|
|
6777
|
-
for (let n3 = 0; n3 < e6.length; n3++) for (let r4 = n3 + 1; r4 < e6.length; r4++) t5.push(
|
|
6826
|
+
for (let n3 = 0; n3 < e6.length; n3++) for (let r4 = n3 + 1; r4 < e6.length; r4++) t5.push(nv(e6[n3], e6[r4]));
|
|
6778
6827
|
n2.push({ name: "Stellium", description: "Tight cluster: ".concat(e6.map(Z).join(", ")), planets: e6, aspectKeys: t5 });
|
|
6779
6828
|
}
|
|
6780
6829
|
}
|
|
@@ -6784,7 +6833,7 @@ function Z_(e4, t2) {
|
|
|
6784
6833
|
let r3 = s2[e5], i3 = s2[t3], a3 = [r3.planet1.toLowerCase(), r3.planet2.toLowerCase()], c3 = [i3.planet1.toLowerCase(), i3.planet2.toLowerCase()], l3 = a3.find((e6) => c3.includes(e6));
|
|
6785
6834
|
if (!l3) continue;
|
|
6786
6835
|
let u3 = a3.find((e6) => e6 !== l3), d3 = c3.find((e6) => e6 !== l3), f3 = [l3, u3, d3].sort().join("|");
|
|
6787
|
-
_2.has(f3) || o2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [
|
|
6836
|
+
_2.has(f3) || o2.find((e6) => e6.planet1.toLowerCase() === u3 && e6.planet2.toLowerCase() === d3 || e6.planet2.toLowerCase() === u3 && e6.planet1.toLowerCase() === d3) && (_2.add(f3), n2.push({ name: "Yod", description: "Apex: ".concat(Z(l3)), planets: [l3, u3, d3], aspectKeys: [nv(l3, u3), nv(l3, d3), nv(u3, d3)] }));
|
|
6788
6837
|
}
|
|
6789
6838
|
let v2 = /* @__PURE__ */ new Set(), ee2 = n2.filter((e5) => e5.name === "Grand Trine");
|
|
6790
6839
|
for (let e5 of ee2) {
|
|
@@ -6795,43 +6844,43 @@ function Z_(e4, t2) {
|
|
|
6795
6844
|
let p3 = o2.find((e6) => e6.planet1.toLowerCase() === f3 && e6.planet2.toLowerCase() === l3 || e6.planet2.toLowerCase() === f3 && e6.planet1.toLowerCase() === l3), m3 = o2.find((e6) => e6.planet1.toLowerCase() === f3 && e6.planet2.toLowerCase() === u3 || e6.planet2.toLowerCase() === f3 && e6.planet1.toLowerCase() === u3);
|
|
6796
6845
|
if (!p3 || !m3) continue;
|
|
6797
6846
|
let h3 = [t3, r3, a3, f3].sort().join("|");
|
|
6798
|
-
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: [...e5.aspectKeys,
|
|
6847
|
+
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: [...e5.aspectKeys, nv(f3, c3), nv(f3, l3), nv(f3, u3)] }));
|
|
6799
6848
|
}
|
|
6800
6849
|
}
|
|
6801
6850
|
for (let e5 of n2) delete e5._dedupeKey;
|
|
6802
6851
|
return n2;
|
|
6803
6852
|
}
|
|
6804
|
-
var
|
|
6805
|
-
function
|
|
6806
|
-
|
|
6853
|
+
var av = null, ov = null, Q = null, sv = null, cv = null, lv = null;
|
|
6854
|
+
function uv(e4) {
|
|
6855
|
+
lv = e4;
|
|
6807
6856
|
}
|
|
6808
|
-
var
|
|
6809
|
-
function
|
|
6857
|
+
var dv = /* @__PURE__ */ new Map();
|
|
6858
|
+
function fv() {
|
|
6810
6859
|
var e4;
|
|
6811
|
-
if (
|
|
6860
|
+
if (av) return av;
|
|
6812
6861
|
let t2 = document.getElementById("info-panel");
|
|
6813
|
-
if (t2) return
|
|
6814
|
-
|
|
6862
|
+
if (t2) return av = t2, av;
|
|
6863
|
+
av = document.createElement("div"), av.id = "info-panel", av.className = "info-panel";
|
|
6815
6864
|
let n2 = document.getElementById("chart-container");
|
|
6816
|
-
return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(
|
|
6865
|
+
return n2 != null && n2.parentElement ? n2.parentElement.insertBefore(av, n2.nextSibling) : (e4 = document.getElementById("app")) == null || e4.appendChild(av), av;
|
|
6817
6866
|
}
|
|
6818
|
-
function
|
|
6867
|
+
function pv(e4, t2, n2) {
|
|
6819
6868
|
var r2, i2, a2, o2;
|
|
6820
|
-
let s2 =
|
|
6869
|
+
let s2 = fv(), c2 = (r2 = D_[t2.name.toLowerCase()]) == null ? "\u2605" : r2, l2 = (i2 = O_[Math.floor((t2.longitude % 360 + 360) % 360 / 30)]) == null ? "" : i2, u2 = $_(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((e5) => e5.planet1.toLowerCase() === t2.name.toLowerCase() || e5.planet2.toLowerCase() === t2.name.toLowerCase()).sort((e5, t3) => {
|
|
6821
6870
|
var n3, r3;
|
|
6822
6871
|
return ((n3 = e5.orb) == null ? 99 : n3) - ((r3 = t3.orb) == null ? 99 : r3);
|
|
6823
6872
|
}), p2 = f2.length ? f2.map((e5) => {
|
|
6824
6873
|
var n3, r3, i3, a3, o3, s3, c3;
|
|
6825
|
-
let l3 = e5.planet1.toLowerCase() === t2.name.toLowerCase() ? e5.planet2 : e5.planet1, u3 = (n3 =
|
|
6874
|
+
let l3 = e5.planet1.toLowerCase() === t2.name.toLowerCase() ? e5.planet2 : e5.planet1, u3 = (n3 = D_[l3.toLowerCase()]) == null ? l3 : n3, d3 = (r3 = (i3 = A_[(a3 = (o3 = e5.type) == null ? void 0 : o3.toLowerCase()) == null ? "" : a3]) == null ? e5.type : i3) == null ? "\u2014" : r3, f3 = (s3 = j_((c3 = e5.type) == null ? "" : c3)) == null ? "#888" : s3, p3 = e5.orb == null ? "" : "".concat(e5.orb.toFixed(1), "\xB0"), m3 = e5.applying === true ? "\u2197" : e5.applying === false ? "\u2198" : "\xB7";
|
|
6826
6875
|
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>");
|
|
6827
|
-
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 =
|
|
6828
|
-
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(
|
|
6829
|
-
|
|
6876
|
+
}).join("") : '<div class="no-aspects">No listed aspects</div>', m2 = cv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : '<div class="info-hint">Click an aspect line for full interpretation</div>';
|
|
6877
|
+
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(R_(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", () => {
|
|
6878
|
+
bv(), Ov();
|
|
6830
6879
|
}), (o2 = document.getElementById("ask-claude-btn")) == null || o2.addEventListener("click", () => {
|
|
6831
6880
|
var e5, n3, r3, i3, a3;
|
|
6832
|
-
if (!
|
|
6881
|
+
if (!cv) return;
|
|
6833
6882
|
let o3 = document.getElementById("ask-claude-btn");
|
|
6834
|
-
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"),
|
|
6883
|
+
!o3 || o3.disabled || (o3.disabled = true, o3.textContent = "Sending\u2026", o3.classList.remove("sent", "error"), o3.classList.add("sending"), cv({ type: "planet", data: { name: t2.name, longitude: t2.longitude, sign: (e5 = t2.sign) == null ? R_(t2.longitude) : e5, 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((e6) => ({ other: e6.planet1.toLowerCase() === t2.name.toLowerCase() ? e6.planet2 : e6.planet1, type: e6.type, orb: e6.orb, applying: e6.applying })) } }).then(() => {
|
|
6835
6884
|
o3.textContent = "\u2713 Sent to Claude", o3.classList.remove("sending"), o3.classList.add("sent"), setTimeout(() => {
|
|
6836
6885
|
o3.textContent = "\u2728 Ask Claude to interpret", o3.classList.remove("sent"), o3.disabled = false;
|
|
6837
6886
|
}, 2500);
|
|
@@ -6840,16 +6889,16 @@ function ov(e4, t2, n2) {
|
|
|
6840
6889
|
}));
|
|
6841
6890
|
});
|
|
6842
6891
|
}
|
|
6843
|
-
function
|
|
6892
|
+
function mv(e4, t2, n2) {
|
|
6844
6893
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
6845
|
-
let p2 =
|
|
6894
|
+
let p2 = fv(), m2 = n2.find((e5) => e5.name.toLowerCase() === t2.planet1.toLowerCase()), h2 = n2.find((e5) => e5.name.toLowerCase() === t2.planet2.toLowerCase()), g2 = (r2 = D_[t2.planet1.toLowerCase()]) == null ? t2.planet1 : r2, _2 = (i2 = D_[t2.planet2.toLowerCase()]) == null ? t2.planet2 : i2, v2 = (a2 = A_[(o2 = (s2 = t2.type) == null ? void 0 : s2.toLowerCase()) == null ? "" : o2]) == null ? "" : a2, ee2 = j_((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(R_(m2.longitude)).concat(m2.house ? " \xB7 H".concat(m2.house) : "") : "", S2 = h2 ? "".concat(R_(h2.longitude)).concat(h2.house ? " \xB7 H".concat(h2.house) : "") : "", C2 = cv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
|
|
6846
6895
|
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", () => {
|
|
6847
|
-
|
|
6896
|
+
bv(), Ov();
|
|
6848
6897
|
}), (f2 = document.getElementById("ask-claude-btn")) == null || f2.addEventListener("click", () => {
|
|
6849
6898
|
var e5, n3, r3, i3, a3, o3, s3, c3;
|
|
6850
|
-
if (!
|
|
6899
|
+
if (!cv) return;
|
|
6851
6900
|
let l3 = document.getElementById("ask-claude-btn");
|
|
6852
|
-
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"),
|
|
6901
|
+
!l3 || l3.disabled || (l3.disabled = true, l3.textContent = "Sending\u2026", l3.classList.add("sending"), cv({ type: "aspect", data: { planet1: t2.planet1, planet2: t2.planet2, aspect_type: (e5 = t2.type) == null ? null : e5, 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(() => {
|
|
6853
6902
|
l3.textContent = "Sent", l3.classList.remove("sending"), l3.classList.add("sent"), setTimeout(() => {
|
|
6854
6903
|
l3.textContent = "Ask Claude \u2014 Interpret", l3.classList.remove("sent"), l3.disabled = false;
|
|
6855
6904
|
}, 2500);
|
|
@@ -6858,22 +6907,22 @@ function sv(e4, t2, n2) {
|
|
|
6858
6907
|
}));
|
|
6859
6908
|
});
|
|
6860
6909
|
}
|
|
6861
|
-
function
|
|
6910
|
+
function hv(e4, t2, n2) {
|
|
6862
6911
|
var r2, i2, a2, o2, s2;
|
|
6863
|
-
let c2 =
|
|
6912
|
+
let c2 = fv(), l2 = Math.floor((t2.cusp_lon % 360 + 360) % 360 / 30), u2 = (r2 = O_[l2]) == null ? "" : r2, d2 = (i2 = (a2 = t2.sign) == null ? k_[l2] : a2) == null ? "" : i2, f2 = n2.filter((e5) => e5.house === t2.number), p2 = f2.length ? f2.map((e5) => {
|
|
6864
6913
|
var t3;
|
|
6865
|
-
let n3 = (t3 =
|
|
6914
|
+
let n3 = (t3 = D_[e5.name.toLowerCase()]) == null ? e5.name : t3, r3 = R_(e5.longitude), i3 = e5.retrograde ? " <span class='retro'>\u211E</span>" : "";
|
|
6866
6915
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e5.name)).concat(i3, '</span>\n <span class="aspect-meta">').concat(r3, "</span>\n </div>");
|
|
6867
|
-
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 =
|
|
6916
|
+
}).join("") : '<div class="no-aspects">No planets in this house</div>', m2 = cv ? '<button class="ask-claude-btn" id="ask-claude-btn">Ask Claude \u2014 Interpret</button>' : "";
|
|
6868
6917
|
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", () => {
|
|
6869
|
-
|
|
6918
|
+
bv(), Ov();
|
|
6870
6919
|
}), (s2 = document.getElementById("ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6871
6920
|
var e5;
|
|
6872
|
-
if (!
|
|
6921
|
+
if (!cv) return;
|
|
6873
6922
|
let n3 = document.getElementById("ask-claude-btn");
|
|
6874
|
-
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"),
|
|
6923
|
+
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), cv({ type: "house", data: { house_number: t2.number, sign: d2, cusp_longitude: t2.cusp_lon, ruler: (e5 = t2.ruler) == null ? null : e5, planets_in_house: f2.map((e6) => {
|
|
6875
6924
|
var t3, n4;
|
|
6876
|
-
return { name: e6.name, sign: (t3 = e6.sign) == null ?
|
|
6925
|
+
return { name: e6.name, sign: (t3 = e6.sign) == null ? R_(e6.longitude) : t3, retrograde: (n4 = e6.retrograde) == null ? false : n4 };
|
|
6877
6926
|
}) } }).then(() => {
|
|
6878
6927
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6879
6928
|
n3.textContent = "Ask Claude \u2014 Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
@@ -6883,22 +6932,22 @@ function cv(e4, t2, n2) {
|
|
|
6883
6932
|
}));
|
|
6884
6933
|
});
|
|
6885
6934
|
}
|
|
6886
|
-
var
|
|
6887
|
-
function
|
|
6935
|
+
var gv = { Aries: "Mars", Taurus: "Venus", Gemini: "Mercury", Cancer: "Moon", Leo: "Sun", Virgo: "Mercury", Libra: "Venus", Scorpio: "Mars", Sagittarius: "Jupiter", Capricorn: "Saturn", Aquarius: "Saturn", Pisces: "Jupiter" };
|
|
6936
|
+
function _v(e4, t2, n2) {
|
|
6888
6937
|
var r2, i2, a2, o2, s2;
|
|
6889
|
-
let c2 =
|
|
6938
|
+
let c2 = fv(), l2 = k_[t2], u2 = O_[t2], d2 = Z(ev[t2]), f2 = Z(tv[t2]), p2 = (r2 = gv[l2]) == null ? "" : r2, m2 = (i2 = D_[p2.toLowerCase()]) == null ? "" : i2, h2 = n2.filter((e5) => Math.floor((e5.longitude % 360 + 360) % 360 / 30) === t2), g2 = h2.length ? h2.map((e5) => {
|
|
6890
6939
|
var t3;
|
|
6891
|
-
let n3 = (t3 =
|
|
6940
|
+
let n3 = (t3 = D_[e5.name.toLowerCase()]) == null ? e5.name : t3, r3 = Math.floor((e5.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e5.longitude % 30 - r3) * 60), a3 = e5.retrograde ? " <span class='retro'>\u211E</span>" : "", o3 = $_(e5.name, e5.longitude), s3 = o3 ? ' <span class="dignity-badge '.concat(o3.cssClass, '">').concat(o3.emoji, " ").concat(o3.label, "</span>") : "";
|
|
6892
6941
|
return '<div class="aspect-row">\n <span class="aspect-sym">'.concat(n3, '</span>\n <span class="aspect-other">').concat(Z(e5.name)).concat(a3).concat(s3, '</span>\n <span class="aspect-meta">').concat(r3, "\xB0").concat(i3.toString().padStart(2, "0"), "\u2032</span>\n </div>");
|
|
6893
|
-
}).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 =
|
|
6894
|
-
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(
|
|
6895
|
-
|
|
6942
|
+
}).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 = cv ? '<button class="ask-claude-btn" id="sign-ask-claude-btn">Ask Claude \u2014 Interpret '.concat(l2, "</button>") : "";
|
|
6943
|
+
c2.innerHTML = '\n <div class="info-header">\n <span class="info-glyph" style="color:'.concat(N_(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", () => {
|
|
6944
|
+
bv(), Ov();
|
|
6896
6945
|
}), (s2 = document.getElementById("sign-ask-claude-btn")) == null || s2.addEventListener("click", () => {
|
|
6897
|
-
if (!
|
|
6946
|
+
if (!cv) return;
|
|
6898
6947
|
let e5 = document.getElementById("sign-ask-claude-btn");
|
|
6899
|
-
!e5 || e5.disabled || (e5.disabled = true, e5.textContent = "Sending\u2026", e5.classList.add("sending"),
|
|
6948
|
+
!e5 || e5.disabled || (e5.disabled = true, e5.textContent = "Sending\u2026", e5.classList.add("sending"), cv({ type: "sign", data: { sign: l2, element: d2, modality: f2, ruler: p2 || null, planets_in_sign: h2.map((e6) => {
|
|
6900
6949
|
var t3, n3;
|
|
6901
|
-
return { name: e6.name, longitude: e6.longitude, position:
|
|
6950
|
+
return { name: e6.name, longitude: e6.longitude, position: R_(e6.longitude), retrograde: (t3 = e6.retrograde) == null ? false : t3, house: (n3 = e6.house) == null ? null : n3 };
|
|
6902
6951
|
}) } }).then(() => {
|
|
6903
6952
|
e5.textContent = "Sent", e5.classList.remove("sending"), e5.classList.add("sent"), setTimeout(() => {
|
|
6904
6953
|
e5.textContent = "Ask Claude \u2014 Interpret ".concat(l2), e5.classList.remove("sent"), e5.disabled = false;
|
|
@@ -6908,17 +6957,17 @@ function uv(e4, t2, n2) {
|
|
|
6908
6957
|
}));
|
|
6909
6958
|
});
|
|
6910
6959
|
}
|
|
6911
|
-
var
|
|
6912
|
-
function
|
|
6960
|
+
var vv = { 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"] } };
|
|
6961
|
+
function yv(e4, t2, n2) {
|
|
6913
6962
|
var r2, i2;
|
|
6914
|
-
let a2 =
|
|
6963
|
+
let a2 = fv(), o2 = vv[t2];
|
|
6915
6964
|
if (!o2) return;
|
|
6916
|
-
let s2 =
|
|
6965
|
+
let s2 = R_(n2), c2 = Math.floor((n2 % 360 + 360) % 360 / 30), l2 = Z(ev[c2]), u2 = Z(tv[c2]), d2 = O_[c2], f2 = N_(c2);
|
|
6917
6966
|
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, " \xB7 ").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((e5) => '<div class="aspect-row"><span class="aspect-other">'.concat(e5, "</span></div>")).join(""), '\n </div>\n <div class="panel-actions" style="margin-top:10px">\n <button class="ask-claude-btn" id="angle-ask-claude-btn">\n Ask Claude \u2014 Interpret ').concat(o2.title, "\n </button>\n </div>\n "), a2.classList.add("visible"), a2.scrollIntoView({ behavior: "smooth", block: "nearest" }), (r2 = document.getElementById("info-close-btn")) == null || r2.addEventListener("click", () => {
|
|
6918
|
-
|
|
6967
|
+
bv(), Ov();
|
|
6919
6968
|
}), (i2 = document.getElementById("angle-ask-claude-btn")) == null || i2.addEventListener("click", (e5) => {
|
|
6920
6969
|
let t3 = e5.currentTarget;
|
|
6921
|
-
t3.textContent = "Sending\u2026", t3.disabled = true,
|
|
6970
|
+
t3.textContent = "Sending\u2026", t3.disabled = true, cv == null || cv({ type: "angle_interpretation", data: { angle: o2.title, longitude: n2, sign: k_[c2], position: s2, element: l2, modality: u2 } }).then(() => {
|
|
6922
6971
|
t3.textContent = "Sent", setTimeout(() => {
|
|
6923
6972
|
t3.textContent = "Ask Claude \u2014 Interpret ".concat(o2.title), t3.disabled = false;
|
|
6924
6973
|
}, 2500);
|
|
@@ -6927,27 +6976,31 @@ function fv(e4, t2, n2) {
|
|
|
6927
6976
|
});
|
|
6928
6977
|
});
|
|
6929
6978
|
}
|
|
6930
|
-
function
|
|
6931
|
-
|
|
6979
|
+
function bv() {
|
|
6980
|
+
av == null || av.classList.remove("visible"), ov = null, wv(), lv == null || lv(null);
|
|
6932
6981
|
}
|
|
6933
|
-
var
|
|
6934
|
-
function
|
|
6935
|
-
let n2 =
|
|
6982
|
+
var xv = null, Sv = 0;
|
|
6983
|
+
function Cv(e4, t2 = false) {
|
|
6984
|
+
let n2 = xv;
|
|
6936
6985
|
if (!n2) return;
|
|
6937
|
-
let r2 =
|
|
6986
|
+
let r2 = Sv, i2 = Y(e4, y_, r2), a2 = Y(e4, 198, r2);
|
|
6938
6987
|
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";
|
|
6939
6988
|
}
|
|
6940
|
-
function
|
|
6941
|
-
|
|
6989
|
+
function wv() {
|
|
6990
|
+
xv && (xv.style.opacity = "0");
|
|
6942
6991
|
}
|
|
6943
|
-
function
|
|
6992
|
+
function Tv(e4) {
|
|
6944
6993
|
let t2 = e4.toLowerCase(), n2 = /* @__PURE__ */ new Set();
|
|
6945
|
-
|
|
6946
|
-
let
|
|
6947
|
-
if (
|
|
6948
|
-
e5.style.stroke = r2, e5.style.strokeOpacity = "0.95", e5.style.strokeWidth = "2", e5.setAttribute("filter", "url(#aspect-glow)")
|
|
6949
|
-
|
|
6950
|
-
|
|
6994
|
+
dv.forEach(({ vis: e5, color: r2, symbolEls: i2 }, a2) => {
|
|
6995
|
+
let o2 = a2.split("|");
|
|
6996
|
+
if (o2.includes(t2)) {
|
|
6997
|
+
e5.style.stroke = r2, e5.style.strokeOpacity = "0.95", e5.style.strokeWidth = "2", e5.setAttribute("filter", "url(#aspect-glow)"), i2.forEach((e6) => {
|
|
6998
|
+
e6.style.opacity = "1";
|
|
6999
|
+
});
|
|
7000
|
+
for (let e6 of o2) e6 !== t2 && n2.add(e6);
|
|
7001
|
+
} else e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), i2.forEach((e6) => {
|
|
7002
|
+
e6.style.opacity = "0.12";
|
|
7003
|
+
});
|
|
6951
7004
|
}), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
|
|
6952
7005
|
var r2;
|
|
6953
7006
|
let i2 = (r2 = e5.dataset.planet) == null ? "" : r2;
|
|
@@ -6958,10 +7011,14 @@ function vv(e4) {
|
|
|
6958
7011
|
e5.classList.toggle("dim", i2 !== t2 && !n2.has(i2));
|
|
6959
7012
|
});
|
|
6960
7013
|
}
|
|
6961
|
-
function
|
|
7014
|
+
function Ev(e4, t2) {
|
|
6962
7015
|
let n2 = new Set(e4.map((e5) => e5.toLowerCase())), r2 = new Set(t2);
|
|
6963
|
-
|
|
6964
|
-
r2.has(
|
|
7016
|
+
dv.forEach(({ vis: e5, color: t3, symbolEls: n3 }, i2) => {
|
|
7017
|
+
r2.has(i2) ? (e5.style.stroke = t3, e5.style.strokeOpacity = "0.95", e5.style.strokeWidth = "2", e5.setAttribute("filter", "url(#aspect-glow)"), n3.forEach((e6) => {
|
|
7018
|
+
e6.style.opacity = "1";
|
|
7019
|
+
})) : (e5.style.strokeOpacity = "0.05", e5.style.strokeWidth = "0.7", e5.removeAttribute("filter"), n3.forEach((e6) => {
|
|
7020
|
+
e6.style.opacity = "0.12";
|
|
7021
|
+
}));
|
|
6965
7022
|
}), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e5) => {
|
|
6966
7023
|
var t3;
|
|
6967
7024
|
e5.style.opacity = n2.has((t3 = e5.dataset.planet) == null ? "" : t3) ? "" : "0.15";
|
|
@@ -6970,22 +7027,26 @@ function yv(e4, t2) {
|
|
|
6970
7027
|
return e5.classList.toggle("dim", !n2.has((t3 = e5.dataset.planet) == null ? "" : t3));
|
|
6971
7028
|
});
|
|
6972
7029
|
}
|
|
6973
|
-
function
|
|
6974
|
-
|
|
6975
|
-
e4.style.strokeOpacity = "0.05", e4.style.strokeWidth = "0.7", e4.removeAttribute("filter")
|
|
7030
|
+
function Dv() {
|
|
7031
|
+
dv.forEach(({ vis: e4, symbolEls: t2 }) => {
|
|
7032
|
+
e4.style.strokeOpacity = "0.05", e4.style.strokeWidth = "0.7", e4.removeAttribute("filter"), t2.forEach((e5) => {
|
|
7033
|
+
e5.style.opacity = "0.12";
|
|
7034
|
+
});
|
|
6976
7035
|
}), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e4) => {
|
|
6977
7036
|
e4.style.opacity = "0.35";
|
|
6978
7037
|
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e4) => e4.classList.add("dim"));
|
|
6979
7038
|
}
|
|
6980
|
-
function
|
|
6981
|
-
|
|
6982
|
-
e4.style.stroke = t2, e4.style.strokeOpacity = n2, e4.style.strokeWidth = r2, e4.removeAttribute("filter")
|
|
7039
|
+
function Ov() {
|
|
7040
|
+
dv.forEach(({ vis: e4, color: t2, baseOpacity: n2, baseWidth: r2, symbolEls: i2 }) => {
|
|
7041
|
+
e4.style.stroke = t2, e4.style.strokeOpacity = n2, e4.style.strokeWidth = r2, e4.removeAttribute("filter"), i2.forEach((e5) => {
|
|
7042
|
+
e5.style.opacity = "";
|
|
7043
|
+
});
|
|
6983
7044
|
}), Q == null || Q.querySelectorAll(".planet-glyph-group").forEach((e4) => {
|
|
6984
7045
|
e4.style.opacity = "";
|
|
6985
|
-
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e4) => e4.classList.remove("dim")),
|
|
7046
|
+
}), Q == null || Q.querySelectorAll(".planet-hit").forEach((e4) => e4.classList.remove("dim")), Mv();
|
|
6986
7047
|
}
|
|
6987
|
-
var
|
|
6988
|
-
function
|
|
7048
|
+
var kv = { "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)" }, Av = { "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)" };
|
|
7049
|
+
function jv(e4, t2, n2) {
|
|
6989
7050
|
var r2, i2;
|
|
6990
7051
|
if (!Q) return null;
|
|
6991
7052
|
let a2 = /* @__PURE__ */ new Map();
|
|
@@ -6993,44 +7054,48 @@ function wv(e4, t2, n2) {
|
|
|
6993
7054
|
let o2 = [];
|
|
6994
7055
|
for (let t3 of e4.planets) {
|
|
6995
7056
|
let e5 = a2.get(t3.toLowerCase());
|
|
6996
|
-
e5 != null && o2.push(Y(e5,
|
|
7057
|
+
e5 != null && o2.push(Y(e5, w_, n2));
|
|
6997
7058
|
}
|
|
6998
7059
|
if (o2.length < 2) return null;
|
|
6999
|
-
let s2 = (r2 =
|
|
7060
|
+
let s2 = (r2 = kv[e4.name]) == null ? "rgba(128,128,128,0.12)" : r2, c2 = (i2 = Av[e4.name]) == null ? "rgba(128,128,128,0.60)" : i2, l2;
|
|
7000
7061
|
if (o2.length === 2) {
|
|
7001
7062
|
let e5 = X("line");
|
|
7002
7063
|
e5.setAttribute("x1", o2[0].x.toFixed(1)), e5.setAttribute("y1", o2[0].y.toFixed(1)), e5.setAttribute("x2", o2[1].x.toFixed(1)), e5.setAttribute("y2", o2[1].y.toFixed(1)), e5.setAttribute("stroke", c2), e5.setAttribute("stroke-width", "2"), e5.setAttribute("fill", "none"), l2 = e5;
|
|
7003
7064
|
} else {
|
|
7004
|
-
let e5 = [...o2].sort((e6, t4) => Math.atan2(e6.y -
|
|
7065
|
+
let e5 = [...o2].sort((e6, t4) => Math.atan2(e6.y - v_, e6.x - __) - Math.atan2(t4.y - v_, t4.x - __)).map((e6) => "".concat(e6.x.toFixed(1), ",").concat(e6.y.toFixed(1))).join(" "), t3 = X("polygon");
|
|
7005
7066
|
t3.setAttribute("points", e5), t3.setAttribute("fill", s2), t3.setAttribute("stroke", c2), t3.setAttribute("stroke-width", "1.5"), t3.setAttribute("stroke-linejoin", "round"), l2 = t3;
|
|
7006
7067
|
}
|
|
7007
7068
|
l2.setAttribute("pointer-events", "none"), l2.setAttribute("class", "pattern-overlay");
|
|
7008
7069
|
let u2 = Q.querySelector(".aspect-hit");
|
|
7009
7070
|
return u2 ? Q.insertBefore(l2, u2) : Q.appendChild(l2), l2;
|
|
7010
7071
|
}
|
|
7011
|
-
function
|
|
7072
|
+
function Mv() {
|
|
7012
7073
|
Q == null || Q.querySelectorAll(".pattern-overlay").forEach((e4) => e4.remove());
|
|
7013
7074
|
}
|
|
7014
|
-
function
|
|
7015
|
-
|
|
7016
|
-
e4 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0"
|
|
7075
|
+
function Nv(e4) {
|
|
7076
|
+
dv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, symbolEls: a2 }) => {
|
|
7077
|
+
e4 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2) : t2.style.strokeOpacity = "0", a2.forEach((t3) => {
|
|
7078
|
+
t3.style.display = e4 ? "" : "none";
|
|
7079
|
+
});
|
|
7017
7080
|
}), document.querySelectorAll(".aspect-hit").forEach((t2) => {
|
|
7018
7081
|
t2.style.pointerEvents = e4 ? "all" : "none";
|
|
7019
7082
|
});
|
|
7020
7083
|
}
|
|
7021
|
-
function
|
|
7022
|
-
|
|
7023
|
-
a2 <= e4 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none"
|
|
7084
|
+
function Pv(e4) {
|
|
7085
|
+
dv.forEach(({ vis: t2, color: n2, baseOpacity: r2, baseWidth: i2, orb: a2, symbolEls: o2 }) => {
|
|
7086
|
+
a2 <= e4 ? (t2.style.stroke = n2, t2.style.strokeOpacity = r2, t2.style.strokeWidth = i2, t2.style.display = "") : t2.style.display = "none", o2.forEach((t3) => {
|
|
7087
|
+
t3.style.display = a2 <= e4 ? "" : "none";
|
|
7088
|
+
});
|
|
7024
7089
|
}), document.querySelectorAll(".aspect-hit").forEach((e5) => {
|
|
7025
7090
|
e5.style.display = "";
|
|
7026
7091
|
});
|
|
7027
7092
|
}
|
|
7028
|
-
function
|
|
7093
|
+
function Fv(e4, t2, n2, r2, i2, a2, o2) {
|
|
7029
7094
|
var s2, c2, l2, u2, d2, f2, p2, m2, h2;
|
|
7030
|
-
|
|
7095
|
+
cv = a2 == null ? null : a2;
|
|
7031
7096
|
let g2 = e4.querySelector("#pan-zoom-controls");
|
|
7032
|
-
e4.innerHTML = "", g2 && e4.appendChild(g2),
|
|
7033
|
-
let _2 =
|
|
7097
|
+
e4.innerHTML = "", g2 && e4.appendChild(g2), dv.clear(), ov = null, bv();
|
|
7098
|
+
let _2 = H_(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");
|
|
7034
7099
|
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", e4.appendChild(b2), Q = b2;
|
|
7035
7100
|
{
|
|
7036
7101
|
let e5 = X("defs");
|
|
@@ -7043,207 +7108,212 @@ function Ov(e4, t2, n2, r2, i2, a2, o2) {
|
|
|
7043
7108
|
S2.setAttribute("class", "chart-layer"), S2.style.setProperty("--layer-index", "2"), b2.appendChild(S2);
|
|
7044
7109
|
let C2 = X("g");
|
|
7045
7110
|
C2.setAttribute("class", "chart-layer"), C2.style.setProperty("--layer-index", "3"), b2.appendChild(C2);
|
|
7111
|
+
let w2 = X("g");
|
|
7112
|
+
w2.setAttribute("class", "chart-layer"), w2.style.setProperty("--layer-index", "4"), b2.appendChild(w2);
|
|
7046
7113
|
let te2 = X("g");
|
|
7047
|
-
te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "
|
|
7114
|
+
te2.setAttribute("class", "chart-layer"), te2.style.setProperty("--layer-index", "5"), b2.appendChild(te2);
|
|
7048
7115
|
let ne2 = X("g");
|
|
7049
|
-
|
|
7050
|
-
let
|
|
7051
|
-
|
|
7052
|
-
let
|
|
7053
|
-
|
|
7054
|
-
let
|
|
7055
|
-
|
|
7056
|
-
let E2 = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
7057
|
-
if (!E2) try {
|
|
7058
|
-
let e5 = getComputedStyle(document.body).backgroundColor.match(/\d+/g);
|
|
7059
|
-
e5 && e5.length >= 3 && (E2 = (0.299 * e5[0] + 0.587 * e5[1] + 0.114 * e5[2]) / 255 < 0.35);
|
|
7060
|
-
} catch (e5) {
|
|
7061
|
-
}
|
|
7062
|
-
let ie2 = X("circle");
|
|
7063
|
-
ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", String(p_)), ie2.setAttribute("fill", E2 ? "#141720" : "#f2ede6"), ie2.setAttribute("stroke", E2 ? "#252a38" : "#c0b8a8"), ie2.setAttribute("stroke-width", "0.5"), ie2.setAttribute("pointer-events", "none"), S2.appendChild(ie2);
|
|
7116
|
+
b2.appendChild(ne2), Sv = y2;
|
|
7117
|
+
let T2 = X("line");
|
|
7118
|
+
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), xv = T2;
|
|
7119
|
+
let re2 = X("circle");
|
|
7120
|
+
re2.setAttribute("cx", "250"), re2.setAttribute("cy", "250"), re2.setAttribute("r", "244"), re2.style.fill = "var(--bg, #faf9f5)", re2.setAttribute("stroke", "#d4cec8"), re2.setAttribute("stroke-width", "0.5"), re2.setAttribute("pointer-events", "none"), x2.appendChild(re2);
|
|
7121
|
+
let E2 = M_(), ie2 = X("circle");
|
|
7122
|
+
ie2.setAttribute("cx", "250"), ie2.setAttribute("cy", "250"), ie2.setAttribute("r", String(y_)), ie2.setAttribute("fill", E2 ? "#141720" : "#f2ede6"), ie2.setAttribute("stroke", E2 ? "#252a38" : "#c0b8a8"), ie2.setAttribute("stroke-width", "0.5"), ie2.setAttribute("pointer-events", "none"), S2.appendChild(ie2);
|
|
7064
7123
|
let ae2 = X("circle");
|
|
7065
|
-
ae2.setAttribute("cx", "250"), ae2.setAttribute("cy", "250"), ae2.setAttribute("r", String(
|
|
7066
|
-
let oe2 =
|
|
7124
|
+
ae2.setAttribute("cx", "250"), ae2.setAttribute("cy", "250"), ae2.setAttribute("r", String(b_)), ae2.style.fill = "var(--bg, #faf9f5)", ae2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), ae2.setAttribute("stroke-width", "0.5"), ae2.setAttribute("pointer-events", "none"), S2.appendChild(ae2);
|
|
7125
|
+
let oe2 = Array.from({ length: 12 }, (e5, t3) => l_(t3, E2)), se2 = E2 ? "rgba(180,170,160,0.28)" : "rgba(100,90,80,0.22)", ce2 = E2 ? "rgba(180,170,160,0.50)" : "rgba(100,90,80,0.40)";
|
|
7067
7126
|
for (let e5 = 0; e5 < 12; e5++) {
|
|
7068
|
-
let t3 = e5 * 30, n3 = (e5 + 1) * 30, r3 = Y(t3,
|
|
7069
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
7070
|
-
let { x: c3, y: l3 } = Y(t3,
|
|
7127
|
+
let t3 = e5 * 30, n3 = (e5 + 1) * 30, r3 = Y(t3, y_, y2), i3 = Y(n3, y_, y2), a3 = Y(t3, b_, y2), o3 = Y(n3, b_, y2), s3 = X("path");
|
|
7128
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(y_, " ").concat(y_, " 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(b_, " ").concat(b_, " 0 0 1 ").concat(a3.x.toFixed(1), " ").concat(a3.y.toFixed(1)), "Z"].join(" ")), s3.setAttribute("fill", oe2[e5]), s3.setAttribute("pointer-events", "none"), b2.appendChild(s3);
|
|
7129
|
+
let { x: c3, y: l3 } = Y(t3, b_, y2), { x: u3, y: d3 } = Y(t3, y_, y2), f3 = X("line");
|
|
7071
7130
|
f3.setAttribute("x1", c3.toFixed(1)), f3.setAttribute("y1", l3.toFixed(1)), f3.setAttribute("x2", u3.toFixed(1)), f3.setAttribute("y2", d3.toFixed(1)), f3.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), f3.setAttribute("stroke-width", "0.5"), f3.setAttribute("pointer-events", "none"), S2.appendChild(f3);
|
|
7072
7131
|
let { x: p3, y: m3 } = Y(t3 + 15, 444 / 2, y2), h3 = X("text");
|
|
7073
|
-
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",
|
|
7132
|
+
h3.setAttribute("x", p3.toFixed(1)), h3.setAttribute("y", m3.toFixed(1)), h3.setAttribute("text-anchor", "middle"), h3.setAttribute("dominant-baseline", "central"), h3.setAttribute("font-size", "13"), h3.setAttribute("fill", c_(e5, E2)), h3.setAttribute("pointer-events", "none"), h3.style.fontFamily = "serif", h3.textContent = O_[e5], S2.appendChild(h3);
|
|
7074
7133
|
for (let e6 = 1; e6 < 30; e6++) {
|
|
7075
|
-
let n4 = t3 + e6, r4 = e6 % 5 == 0, i4 = r4 ?
|
|
7134
|
+
let n4 = t3 + e6, r4 = e6 % 5 == 0, i4 = r4 ? y_ - 7 : y_ - 3, { x: a4, y: o4 } = Y(n4, y_, y2), { x: s4, y: c4 } = Y(n4, i4, y2), l4 = X("line");
|
|
7076
7135
|
l4.setAttribute("x1", a4.toFixed(1)), l4.setAttribute("y1", o4.toFixed(1)), l4.setAttribute("x2", s4.toFixed(1)), l4.setAttribute("y2", c4.toFixed(1)), l4.setAttribute("stroke", r4 ? ce2 : se2), l4.setAttribute("stroke-width", r4 ? "0.8" : "0.5"), l4.setAttribute("pointer-events", "none"), S2.appendChild(l4);
|
|
7077
7136
|
}
|
|
7078
7137
|
}
|
|
7079
7138
|
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" };
|
|
7080
7139
|
for (let e5 = 0; e5 < 12; e5++) {
|
|
7081
7140
|
var ue2, de2;
|
|
7082
|
-
let t3 = e5 * 30, n3 = (e5 + 1) * 30, r3 = Y(t3,
|
|
7083
|
-
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(
|
|
7084
|
-
let c3 = Z(
|
|
7085
|
-
s3.addEventListener("mouseenter", (t4) =>
|
|
7086
|
-
|
|
7087
|
-
}),
|
|
7141
|
+
let t3 = e5 * 30, n3 = (e5 + 1) * 30, r3 = Y(t3, y_, y2), i3 = Y(n3, y_, y2), a3 = Y(t3, b_, y2), o3 = Y(n3, b_, y2), s3 = X("path");
|
|
7142
|
+
s3.setAttribute("d", ["M ".concat(r3.x.toFixed(1), " ").concat(r3.y.toFixed(1)), "A ".concat(y_, " ").concat(y_, " 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(b_, " ").concat(b_, " 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", Iv(s3, "".concat(k_[e5], " \u2014 click for sign info"));
|
|
7143
|
+
let c3 = Z(ev[e5]), l3 = Z(tv[e5]), u3 = (ue2 = le2[k_[e5]]) == null ? "" : ue2, d3 = (de2 = J_[k_[e5]]) == null ? "" : de2, f3 = "".concat(d3 ? d3 + " \xB7 " : "").concat(c3, " \xB7 ").concat(l3).concat(u3 ? " \xB7 Ruled by ".concat(u3) : "");
|
|
7144
|
+
s3.addEventListener("mouseenter", (t4) => W_(t4.clientX, t4.clientY, "".concat(O_[e5], " ").concat(k_[e5]), f3, "Click for sign detail")), s3.addEventListener("mousemove", (t4) => W_(t4.clientX, t4.clientY, "".concat(O_[e5], " ").concat(k_[e5]), f3, "Click for sign detail")), s3.addEventListener("mouseleave", G_), s3.addEventListener("click", (t4) => {
|
|
7145
|
+
G_(), lv == null || lv("".concat(O_[e5], " ").concat(k_[e5])), _v(t4, e5, _2);
|
|
7146
|
+
}), ne2.appendChild(s3);
|
|
7088
7147
|
}
|
|
7089
7148
|
let fe2 = X("circle");
|
|
7090
|
-
if (fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(
|
|
7091
|
-
let t3 = v2[e5], n3 = v2[(e5 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = Y(t3.cusp_lon,
|
|
7149
|
+
if (fe2.setAttribute("cx", "250"), fe2.setAttribute("cy", "250"), fe2.setAttribute("r", String(C_)), fe2.style.fill = "var(--bg, #faf9f5)", fe2.setAttribute("stroke", E2 ? "#2d3548" : "#c0b8a8"), fe2.setAttribute("stroke-width", "0.5"), fe2.setAttribute("pointer-events", "none"), C2.appendChild(fe2), v2.length > 0) for (let e5 = 0; e5 < v2.length; e5++) {
|
|
7150
|
+
let t3 = v2[e5], n3 = v2[(e5 + 1) % v2.length], r3 = [1, 4, 7, 10].includes(t3.number), { x: i3, y: a3 } = Y(t3.cusp_lon, C_, y2), { x: o3, y: s3 } = Y(t3.cusp_lon, b_, y2), c3 = X("line");
|
|
7092
7151
|
c3.setAttribute("x1", i3.toFixed(1)), c3.setAttribute("y1", a3.toFixed(1)), c3.setAttribute("x2", o3.toFixed(1)), c3.setAttribute("y2", s3.toFixed(1)), c3.setAttribute("stroke", r3 ? "#7060b8" : E2 ? "#3a3450" : "#a89898"), c3.setAttribute("stroke-width", r3 ? "1.5" : "0.7"), c3.setAttribute("pointer-events", "none"), C2.appendChild(c3);
|
|
7093
|
-
let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = Y(t3.cusp_lon + l3 / 2,
|
|
7152
|
+
let l3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: u3, y: d3 } = Y(t3.cusp_lon + l3 / 2, S_, y2), f3 = X("text");
|
|
7094
7153
|
f3.setAttribute("x", u3.toFixed(1)), f3.setAttribute("y", d3.toFixed(1)), f3.setAttribute("text-anchor", "middle"), f3.setAttribute("dominant-baseline", "central"), f3.setAttribute("font-size", "9"), f3.setAttribute("fill", r3 ? "#7060b8" : "#90808a"), f3.setAttribute("pointer-events", "none"), f3.textContent = String(t3.number), C2.appendChild(f3);
|
|
7095
7154
|
}
|
|
7096
7155
|
let pe2 = v2.find((e5) => e5.number === 1), me2 = v2.find((e5) => e5.number === 4), he2 = v2.find((e5) => e5.number === 7), ge2 = v2.find((e5) => e5.number === 10), _e2 = [{ lon: (f2 = pe2 == null ? void 0 : pe2.cusp_lon) == null ? y2 : f2, label: "ASC" }, { lon: (p2 = he2 == null ? void 0 : he2.cusp_lon) == null ? (y2 + 180) % 360 : p2, label: "DSC" }, { lon: (m2 = ge2 == null ? void 0 : ge2.cusp_lon) == null ? (y2 + 270) % 360 : m2, label: "MC" }, { lon: (h2 = me2 == null ? void 0 : me2.cusp_lon) == null ? (y2 + 90) % 360 : h2, label: "IC" }];
|
|
7097
7156
|
for (let e5 of _e2) {
|
|
7098
7157
|
var ve2, ye2;
|
|
7099
|
-
let t3 =
|
|
7158
|
+
let t3 = vv[e5.label], { x: n3, y: r3 } = Y(e5.lon, 256, y2);
|
|
7159
|
+
n3 = Math.min(Math.max(n3, 14), 486), r3 = Math.min(Math.max(r3, 10), 490);
|
|
7160
|
+
let i3 = X("text");
|
|
7100
7161
|
i3.setAttribute("x", n3.toFixed(1)), i3.setAttribute("y", r3.toFixed(1)), i3.setAttribute("text-anchor", "middle"), i3.setAttribute("dominant-baseline", "central"), i3.setAttribute("font-size", "11"), i3.setAttribute("font-weight", "700"), i3.setAttribute("fill", "#7060b8"), i3.setAttribute("pointer-events", "none"), i3.setAttribute("class", "angle-label angle-".concat(e5.label.toLowerCase())), i3.style.transition = "opacity 150ms ease", i3.textContent = e5.label, C2.appendChild(i3);
|
|
7101
7162
|
let a3 = X("circle");
|
|
7102
|
-
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",
|
|
7103
|
-
let o3 = (ye2 = t3 == null ? void 0 : t3.keyword) == null ? "" : ye2, s3 =
|
|
7163
|
+
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", Iv(a3, "".concat((ve2 = t3 == null ? void 0 : t3.title) == null ? e5.label : ve2, " \u2014 click for interpretation"));
|
|
7164
|
+
let o3 = (ye2 = t3 == null ? void 0 : t3.keyword) == null ? "" : ye2, s3 = R_(e5.lon), c3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(s3);
|
|
7104
7165
|
a3.addEventListener("mouseenter", (n4) => {
|
|
7105
7166
|
var r4;
|
|
7106
|
-
|
|
7167
|
+
W_(n4.clientX, n4.clientY, "".concat(e5.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4), c3, "Click for interpretation"), Cv(e5.lon), i3.style.opacity = "0.6";
|
|
7107
7168
|
}), a3.addEventListener("mouseleave", () => {
|
|
7108
|
-
|
|
7169
|
+
G_(), wv(), i3.style.opacity = "";
|
|
7109
7170
|
}), a3.addEventListener("click", (n4) => {
|
|
7110
7171
|
var r4;
|
|
7111
|
-
|
|
7112
|
-
}),
|
|
7172
|
+
G_(), Cv(e5.lon, true), Dv(), lv == null || lv("".concat(e5.label, " \u2014 ").concat((r4 = t3 == null ? void 0 : t3.title) == null ? "" : r4, " \xB7 ").concat(s3)), yv(n4, e5.label, e5.lon);
|
|
7173
|
+
}), ne2.appendChild(a3);
|
|
7113
7174
|
}
|
|
7114
7175
|
{
|
|
7115
7176
|
let e5 = X("g");
|
|
7116
7177
|
e5.setAttribute("pointer-events", "none");
|
|
7117
|
-
let t3 =
|
|
7178
|
+
let t3 = __ - 50, n3 = v_ - 50;
|
|
7118
7179
|
e5.setAttribute("transform", "translate(".concat(t3, ",").concat(n3, ") scale(").concat(0.5813953488372093.toFixed(4), ") translate(-69,-110)")), e5.setAttribute("opacity", E2 ? "0.08" : "0.05");
|
|
7119
7180
|
let r3 = X("path");
|
|
7120
7181
|
r3.setAttribute("fill", E2 ? "#F0DFC3" : "#6366f1"), r3.setAttribute("d", "M225.711945,199.983551 C225.292816,213.680542 221.995255,226.061340 214.416275,237.110443 C193.610641,267.442230 154.827423,271.316071 127.459396,255.072189 C123.775551,252.885712 120.882744,252.441498 116.873688,254.137070 C109.048920,257.446503 100.934502,259.899628 92.190125,259.379364 C83.542915,258.864868 78.616745,253.946121 78.684906,245.377151 C78.745262,237.789108 81.850891,231.152817 85.454010,224.735641 C88.304489,219.658905 91.245934,214.612274 95.084061,210.184647 C97.704369,207.161865 98.745560,203.844788 98.740883,199.721481 C98.699577,163.227264 125.082115,136.164413 161.509293,135.193466 C165.322968,135.092 169.315643,134.951 172.935333,135.916 C178.310226,137.349 182.595856,135.650 187.146591,133.280 C195.742508,128.804 204.726822,125.462 214.488632,124.281 C227.834183,122.666 234.932129,130.259 231.851456,143.429 C230.052628,151.119 226.752274,158.212 222.361359,164.760 C220.327988,167.792 220.017624,170.616 221.473969,174.100 C224.861847,182.205 225.468460,190.867 225.711945,199.983551 M212.976044,168.510834 C218.716415,160.882339 223.731537,152.880203 226.146439,143.492218 C228.308197,135.088409 225.333649,129.095078 217.846207,128.560104 C206.177933,127.726410 196.082672,132.729645 185.171341,138.349640 C187.816025,139.540573 189.463272,140.263855 191.095154,141.020279 C200.031250,145.162369 207.546783,151.055435 213.272079,159.124069 C214.113724,160.310181 215.663269,161.586777 214.829697,163.091461 C211.652573,168.826584 208.025726,174.252899 202.566681,179.006516 C201.549835,176.444733 200.923126,174.750778 200.212067,173.093002 C195.433319,161.951874 188.776291,152.487198 177.473648,146.963547 C174.609192,145.563675 172.292969,145.608887 169.595505,147.317566 C152.514618,158.137161 136.926010,170.829269 122.270142,184.706512 C120.686935,186.205612 119.364059,187.876480 119.190598,190.236053 C118.688568,197.065308 118.869385,203.864960 119.793037,210.651215 C121.255951,221.399521 126.239235,230.774902 131.349335,240.326111 C132.993088,240.252151 134.400635,239.345810 135.765091,238.453430 C144.400665,232.805634 153.133560,227.309341 161.286926,220.942139 C164.075363,218.764557 165.766891,216.649643 165.788437,212.774612 C165.823334,206.491791 170.826294,202.743942 176.973877,204.085724 C179.390350,204.613144 181.027267,204.346497 182.788132,202.634048 C193.536697,192.180939 204.343719,181.790634 212.976044,168.510834 M196.311264,238.774429 C205.223999,223.519989 207.059082,207.185013 204.308746,188.929276 C197.720764,194.995590 193.078613,201.379272 186.899475,206.146912 C184.795013,207.770645 183.863800,209.506882 184.135178,212.471619 C184.705627,218.704117 179.426636,223.881546 173.582184,222.584213 C169.742706,221.731949 167.311813,222.850525 164.693726,225.165817 C162.585052,227.030579 160.129227,228.496109 157.916992,230.251648 C151.305984,235.497787 144.002090,239.748337 136.880554,244.346085 C150.810440,260.746155 181.289062,262.140137 196.311264,238.774429 M101.954178,222.323334 C101.003220,218.898468 100.052269,215.473602 98.901512,211.329163 C91.673454,221.459351 85.061653,230.979462 83.800476,243.065674 C83.190475,248.911530 86.140854,252.991577 91.843674,253.598953 C100.879066,254.561295 109.050667,251.508087 117.776840,247.739761 C110.183830,240.480621 105.126755,232.419739 101.954178,222.323334 M129.303619,173.800827 C141.200867,163.092194 153.936737,153.435806 167.699600,144.113556 C142.265121,138.861908 122.832809,158.201233 120.741943,181.434265 C123.701614,178.779602 126.227280,176.514221 129.303619,173.800827 z"), e5.appendChild(r3), x2.appendChild(e5);
|
|
7121
7182
|
}
|
|
7122
7183
|
for (let e5 of ee2) {
|
|
7123
|
-
var be2, xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2;
|
|
7184
|
+
var be2, xe2, D2, Se2, O2, Ce2, we2, Te2, Ee2, De2, Oe2, ke2, Ae2, je2, Me2, Ne2, Pe2, Fe2, Ie2;
|
|
7124
7185
|
let t3 = _2.find((t4) => t4.name.toLowerCase() === e5.planet1.toLowerCase()), n3 = _2.find((t4) => t4.name.toLowerCase() === e5.planet2.toLowerCase());
|
|
7125
7186
|
if (!t3 || !n3) continue;
|
|
7126
|
-
let r3 = (be2 =
|
|
7127
|
-
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.2" : "0.8",
|
|
7128
|
-
let f3 =
|
|
7129
|
-
|
|
7130
|
-
|
|
7131
|
-
|
|
7187
|
+
let r3 = (be2 = j_((xe2 = e5.type) == null ? "" : xe2)) == null ? "#aaa" : be2, { x: a3, y: o3 } = Y(t3.longitude, w_, y2), { x: s3, y: c3 } = Y(n3.longitude, w_, y2), l3 = Math.min((D2 = e5.orb) == null ? 10 : D2, 10), u3 = 0.55 - l3 / 10 * 0.38, d3 = X("line");
|
|
7188
|
+
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.2" : "0.8", w2.appendChild(d3);
|
|
7189
|
+
let f3 = (Se2 = A_[(O2 = (Ce2 = e5.type) == null ? void 0 : Ce2.toLowerCase()) == null ? "" : O2]) == null ? "" : Se2, p3 = a3 + (s3 - a3) * 0.35, m3 = o3 + (c3 - o3) * 0.35, h3 = [];
|
|
7190
|
+
if (f3 && Math.hypot(s3 - a3, c3 - o3) > 36) {
|
|
7191
|
+
let e6 = X("circle");
|
|
7192
|
+
e6.setAttribute("cx", p3.toFixed(1)), e6.setAttribute("cy", m3.toFixed(1)), e6.setAttribute("r", "7"), e6.setAttribute("fill", "var(--bg, #0a0a10)"), e6.setAttribute("stroke", r3), e6.setAttribute("stroke-opacity", "0.30"), e6.setAttribute("stroke-width", "0.6"), e6.setAttribute("pointer-events", "none"), w2.appendChild(e6), h3.push(e6);
|
|
7193
|
+
let t4 = X("text");
|
|
7194
|
+
t4.setAttribute("x", p3.toFixed(1)), t4.setAttribute("y", m3.toFixed(1)), t4.setAttribute("text-anchor", "middle"), t4.setAttribute("dominant-baseline", "central"), t4.setAttribute("font-size", "8.5"), t4.setAttribute("fill", r3), t4.setAttribute("fill-opacity", String(Math.min(u3 + 0.35, 1))), t4.setAttribute("pointer-events", "none"), t4.textContent = f3, w2.appendChild(t4), h3.push(t4);
|
|
7195
|
+
}
|
|
7196
|
+
let g3 = X("line");
|
|
7197
|
+
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", Iv(g3, "Aspect: ".concat((we2 = e5.type) == null ? "Aspect" : we2, " between ").concat(t3.name, " and ").concat(n3.name));
|
|
7198
|
+
let v3 = (Te2 = D_[t3.name.toLowerCase()]) == null ? t3.name : Te2, ee3 = (Ee2 = D_[n3.name.toLowerCase()]) == null ? n3.name : Ee2, b3 = (De2 = (Oe2 = A_[(ke2 = (Ae2 = e5.type) == null ? void 0 : Ae2.toLowerCase()) == null ? "" : ke2]) == null ? e5.type : Oe2) == null ? "" : De2, x3 = (je2 = Y_[(Me2 = (Ne2 = e5.type) == null ? void 0 : Ne2.toLowerCase()) == null ? "" : Me2]) == null ? "" : je2, S3 = "".concat(x3 ? x3 + " \xB7 " : "").concat(v3, " ").concat(b3, " ").concat(ee3, " \xB7 ").concat((Pe2 = (Fe2 = e5.orb) == null ? void 0 : Fe2.toFixed(1)) == null ? "?" : Pe2, "\xB0 orb").concat(e5.applying === true ? " (applying)" : e5.applying === false ? " (separating)" : "");
|
|
7199
|
+
g3.addEventListener("mouseenter", (t4) => {
|
|
7132
7200
|
var n4;
|
|
7133
|
-
return
|
|
7134
|
-
}),
|
|
7201
|
+
return W_(t4.clientX, t4.clientY, Z((n4 = e5.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
|
|
7202
|
+
}), g3.addEventListener("mousemove", (t4) => {
|
|
7135
7203
|
var n4;
|
|
7136
|
-
return
|
|
7137
|
-
}),
|
|
7204
|
+
return W_(t4.clientX, t4.clientY, Z((n4 = e5.type) == null ? "Aspect" : n4), S3, "Click for interpretation");
|
|
7205
|
+
}), g3.addEventListener("mouseleave", G_), g3.addEventListener("click", (t4) => {
|
|
7138
7206
|
var n4, r4, a4, o4, s4, c4;
|
|
7139
|
-
|
|
7140
|
-
let l4 = "".concat((n4 =
|
|
7141
|
-
|
|
7207
|
+
G_();
|
|
7208
|
+
let l4 = "".concat((n4 = A_[(r4 = (a4 = e5.type) == null ? void 0 : a4.toLowerCase()) == null ? "" : r4]) == null ? "" : n4, " ").concat(Z((o4 = e5.type) == null ? "Aspect" : o4), ": ").concat((s4 = D_[e5.planet1.toLowerCase()]) == null ? e5.planet1 : s4, " ").concat((c4 = D_[e5.planet2.toLowerCase()]) == null ? e5.planet2 : c4);
|
|
7209
|
+
lv == null || lv(l4), mv(t4, e5, _2), i2(e5);
|
|
7142
7210
|
});
|
|
7143
|
-
let
|
|
7144
|
-
|
|
7211
|
+
let C3 = [e5.planet1.toLowerCase(), e5.planet2.toLowerCase()].sort().join("|"), te3 = ((Ie2 = e5.type) == null ? "unknown" : Ie2).toLowerCase();
|
|
7212
|
+
dv.set(C3, { vis: d3, color: r3, baseOpacity: String(u3), baseWidth: l3 < 2 ? "1.2" : "0.8", aspectType: te3, orb: l3, symbolEls: h3 }), ne2.appendChild(g3);
|
|
7145
7213
|
}
|
|
7146
|
-
let
|
|
7214
|
+
let Le2 = _2.filter((e5) => !I_.has(e5.name.toLowerCase())), Re2 = _2.filter((e5) => I_.has(e5.name.toLowerCase())), k2 = d_(Le2.map((e5) => ({ name: e5.name.toLowerCase(), longitude: e5.longitude })), 8), ze2 = d_(Re2.map((e5) => ({ name: e5.name.toLowerCase(), longitude: e5.longitude })), 6), Be2 = new Map([...k2.entries(), ...ze2.entries()]);
|
|
7147
7215
|
for (let e5 of _2) {
|
|
7148
|
-
var
|
|
7149
|
-
let t3 = (
|
|
7150
|
-
|
|
7151
|
-
let
|
|
7152
|
-
|
|
7216
|
+
var Ve2, He2, Ue2, We2;
|
|
7217
|
+
let t3 = (Ve2 = D_[e5.name.toLowerCase()]) == null ? "\u2605" : Ve2;
|
|
7218
|
+
P_(e5.name);
|
|
7219
|
+
let r3 = e5.name.toLowerCase(), i3 = I_.has(r3), a3 = i3 ? x_ - 14 : x_, o3 = i3 ? x_ - 28 : x_ - 17, s3 = i3 ? x_ : 204, c3 = i3 ? "13" : "18", l3 = i3 ? "500" : "600", u3 = i3 ? T_ - 2 : T_, d3 = i3 ? "0.65" : "1", f3 = (He2 = Be2.get(r3)) == null ? e5.longitude : He2, { x: p3, y: m3 } = Y(f3, a3, y2), h3 = X("g");
|
|
7220
|
+
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);
|
|
7221
|
+
let { x: g3, y: _3 } = Y(e5.longitude, b_ - 5, y2), v3 = X("circle");
|
|
7222
|
+
if (v3.setAttribute("cx", g3.toFixed(1)), v3.setAttribute("cy", _3.toFixed(1)), v3.setAttribute("r", i3 ? "1.8" : "2.5"), v3.setAttribute("fill", s_(E2).house), v3.setAttribute("opacity", "0.65"), v3.setAttribute("pointer-events", "none"), h3.appendChild(v3), h_(e5.longitude, f3) > 2) {
|
|
7153
7223
|
let e6 = X("line");
|
|
7154
|
-
e6.setAttribute("x1",
|
|
7224
|
+
e6.setAttribute("x1", g3.toFixed(1)), e6.setAttribute("y1", _3.toFixed(1)), e6.setAttribute("x2", p3.toFixed(1)), e6.setAttribute("y2", m3.toFixed(1)), e6.setAttribute("stroke", s_(E2).house), e6.setAttribute("stroke-width", "0.7"), e6.setAttribute("stroke-opacity", "0.35"), e6.setAttribute("stroke-linecap", "round"), e6.setAttribute("pointer-events", "none"), h3.appendChild(e6);
|
|
7155
7225
|
}
|
|
7156
|
-
let
|
|
7157
|
-
|
|
7158
|
-
let
|
|
7159
|
-
if (w3.setAttribute("x",
|
|
7160
|
-
let { x: e6, y: t4 } = Y(
|
|
7161
|
-
n3.setAttribute("x", e6.toFixed(1)), n3.setAttribute("y", t4.toFixed(1)), n3.setAttribute("text-anchor", "middle"), n3.setAttribute("dominant-baseline", "central"), n3.setAttribute("font-size",
|
|
7226
|
+
let b3 = X("text");
|
|
7227
|
+
b3.setAttribute("x", p3.toFixed(1)), b3.setAttribute("y", m3.toFixed(1)), b3.setAttribute("text-anchor", "middle"), b3.setAttribute("dominant-baseline", "central"), b3.setAttribute("font-size", c3), b3.setAttribute("font-weight", l3), b3.setAttribute("pointer-events", "none"), b3.style.fill = s_(E2).ink, b3.style.fontFamily = "serif", b3.textContent = t3, h3.appendChild(b3);
|
|
7228
|
+
let x3 = Math.floor((e5.longitude % 360 + 360) % 360 % 30), { x: S3, y: C3 } = Y(f3, o3, y2), w3 = X("text");
|
|
7229
|
+
if (w3.setAttribute("x", S3.toFixed(1)), w3.setAttribute("y", C3.toFixed(1)), w3.setAttribute("text-anchor", "middle"), w3.setAttribute("dominant-baseline", "central"), w3.setAttribute("font-size", i3 ? "7" : "8.5"), w3.setAttribute("font-weight", "500"), w3.setAttribute("fill", "#9080a0"), w3.setAttribute("pointer-events", "none"), w3.textContent = "".concat(x3, "\xB0"), h3.appendChild(w3), e5.retrograde) {
|
|
7230
|
+
let { x: e6, y: t4 } = Y(f3, s3, y2), n3 = X("text");
|
|
7231
|
+
n3.setAttribute("x", e6.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);
|
|
7162
7232
|
}
|
|
7163
7233
|
let T3 = X("circle");
|
|
7164
|
-
T3.setAttribute("cx",
|
|
7165
|
-
let
|
|
7234
|
+
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", Iv(T3, "".concat(i3 ? "Extended body" : "Planet", ": ").concat(e5.name));
|
|
7235
|
+
let re3 = (Ue2 = K_[e5.name.toLowerCase()]) == null ? "" : Ue2, ie3 = e5.house ? (We2 = q_[e5.house]) == null ? "" : We2 : "", ae3 = "".concat(re3 ? re3 + " \xB7 " : "").concat(R_(e5.longitude)).concat(e5.house ? " \xB7 H".concat(e5.house).concat(ie3 ? " (" + ie3 + ")" : "") : "").concat(e5.retrograde ? " \u211E" : "");
|
|
7166
7236
|
T3.addEventListener("mouseenter", (n3) => {
|
|
7167
|
-
|
|
7168
|
-
}), T3.addEventListener("mousemove", (n3) =>
|
|
7169
|
-
|
|
7237
|
+
W_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e5.name)), ae3, "Click for aspects"), Cv(e5.longitude);
|
|
7238
|
+
}), T3.addEventListener("mousemove", (n3) => W_(n3.clientX, n3.clientY, "".concat(t3, " ").concat(Z(e5.name)), ae3, "Click for aspects")), T3.addEventListener("mouseleave", () => {
|
|
7239
|
+
G_(), ov !== e5.name.toLowerCase() && wv();
|
|
7170
7240
|
}), T3.addEventListener("click", (t4) => {
|
|
7171
7241
|
var r4;
|
|
7172
|
-
if (
|
|
7173
|
-
|
|
7242
|
+
if (G_(), ov === e5.name.toLowerCase()) {
|
|
7243
|
+
Ov(), bv(), wv(), lv == null || lv(null);
|
|
7174
7244
|
return;
|
|
7175
7245
|
}
|
|
7176
|
-
|
|
7177
|
-
let i4 = (r4 =
|
|
7178
|
-
|
|
7179
|
-
}),
|
|
7246
|
+
ov = e5.name.toLowerCase();
|
|
7247
|
+
let i4 = (r4 = D_[e5.name.toLowerCase()]) == null ? "" : r4;
|
|
7248
|
+
lv == null || lv("".concat(i4, " ").concat(Z(e5.name), " in ").concat(R_(e5.longitude))), Cv(e5.longitude, true), Tv(e5.name), pv(t4, e5, ee2), n2(e5);
|
|
7249
|
+
}), ne2.appendChild(T3);
|
|
7180
7250
|
}
|
|
7181
7251
|
for (let e5 = 0; e5 < v2.length; e5++) {
|
|
7182
|
-
var
|
|
7183
|
-
let t3 = v2[e5], n3 = v2[(e5 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (
|
|
7184
|
-
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(
|
|
7185
|
-
|
|
7186
|
-
}), f3.addEventListener("mousemove", (e6) =>
|
|
7187
|
-
|
|
7252
|
+
var Ge2, Ke2, qe2;
|
|
7253
|
+
let t3 = v2[e5], n3 = v2[(e5 + 1) % v2.length], i3 = Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30), a3 = (Ge2 = (Ke2 = t3.sign) == null ? k_[i3] : Ke2) == null ? "" : Ge2, o3 = (qe2 = q_[t3.number]) == null ? "" : qe2, s3 = "".concat(o3 ? o3 + " \xB7 " : "").concat(R_(t3.cusp_lon), " \xB7 ").concat(a3), { x: c3, y: l3 } = Y(t3.cusp_lon, C_, y2), { x: u3, y: d3 } = Y(t3.cusp_lon, b_, y2), f3 = X("line");
|
|
7254
|
+
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(E_)), f3.setAttribute("fill", "none"), f3.setAttribute("class", "hit-region"), f3.style.pointerEvents = "all", Iv(f3, "House ".concat(t3.number, " Cusp")), f3.addEventListener("mouseenter", (e6) => {
|
|
7255
|
+
W_(e6.clientX, e6.clientY, "House ".concat(t3.number), s3, "Click for meaning"), Cv(t3.cusp_lon);
|
|
7256
|
+
}), f3.addEventListener("mousemove", (e6) => W_(e6.clientX, e6.clientY, "House ".concat(t3.number), s3, "Click for meaning")), f3.addEventListener("mouseleave", () => {
|
|
7257
|
+
G_(), wv();
|
|
7188
7258
|
}), f3.addEventListener("click", (e6) => {
|
|
7189
7259
|
var n4, i4;
|
|
7190
|
-
|
|
7191
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
7192
|
-
|
|
7193
|
-
}),
|
|
7194
|
-
let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2,
|
|
7195
|
-
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",
|
|
7196
|
-
|
|
7260
|
+
G_();
|
|
7261
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? k_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
7262
|
+
lv == null || lv("House ".concat(t3.number, " \xB7 ").concat(a4)), hv(e6, t3, _2), r2(t3);
|
|
7263
|
+
}), ne2.appendChild(f3);
|
|
7264
|
+
let p3 = (n3.cusp_lon - t3.cusp_lon + 360) % 360, { x: m3, y: h3 } = Y(t3.cusp_lon + p3 / 2, S_, y2), g3 = X("circle");
|
|
7265
|
+
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", Iv(g3, "House ".concat(t3.number, " Area")), g3.addEventListener("mouseenter", (e6) => W_(e6.clientX, e6.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mousemove", (e6) => W_(e6.clientX, e6.clientY, "House ".concat(t3.number), s3, "Click for meaning")), g3.addEventListener("mouseleave", () => {
|
|
7266
|
+
G_();
|
|
7197
7267
|
}), g3.addEventListener("click", (e6) => {
|
|
7198
7268
|
var n4, i4;
|
|
7199
|
-
|
|
7200
|
-
let a4 = (n4 = (i4 = t3.sign) == null ?
|
|
7201
|
-
|
|
7202
|
-
}),
|
|
7269
|
+
G_();
|
|
7270
|
+
let a4 = (n4 = (i4 = t3.sign) == null ? k_[Math.floor((t3.cusp_lon % 360 + 360) % 360 / 30)] : i4) == null ? "" : n4;
|
|
7271
|
+
lv == null || lv("House ".concat(t3.number, " \xB7 ").concat(a4)), hv(e6, t3, _2), r2(t3);
|
|
7272
|
+
}), ne2.appendChild(g3);
|
|
7203
7273
|
}
|
|
7204
|
-
|
|
7274
|
+
sv && document.removeEventListener("click", sv, false), sv = (e5) => {
|
|
7205
7275
|
let t3 = e5.target;
|
|
7206
|
-
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (
|
|
7207
|
-
}, document.addEventListener("click",
|
|
7276
|
+
t3 && typeof t3.closest == "function" && !t3.closest(".hit-region") && !t3.closest("#info-panel") && !t3.closest("#patterns-strip") && (Ov(), bv());
|
|
7277
|
+
}, document.addEventListener("click", sv, false);
|
|
7208
7278
|
}
|
|
7209
|
-
function
|
|
7279
|
+
function Iv(e4, t2) {
|
|
7210
7280
|
e4 && (e4.setAttribute("tabindex", "0"), e4.setAttribute("role", "button"), e4.setAttribute("aria-label", t2), e4.addEventListener("keydown", (t3) => {
|
|
7211
7281
|
let n2 = t3;
|
|
7212
7282
|
(n2.key === "Enter" || n2.key === " ") && (n2.preventDefault(), e4.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true })));
|
|
7213
7283
|
}));
|
|
7214
7284
|
}
|
|
7215
|
-
var
|
|
7216
|
-
function
|
|
7285
|
+
var Lv = [{ label: "Placidus", value: "placidus" }, { label: "Whole Sign", value: "whole_sign" }, { label: "Equal", value: "equal" }, { label: "Koch", value: "koch" }, { label: "Regio.", value: "regiomontanus" }];
|
|
7286
|
+
function Rv(e4, t2, n2) {
|
|
7217
7287
|
e4.innerHTML = "";
|
|
7218
7288
|
let r2 = document.createElement("span");
|
|
7219
7289
|
r2.className = "controls-label", r2.textContent = "Houses:", e4.appendChild(r2);
|
|
7220
|
-
for (let r3 of
|
|
7290
|
+
for (let r3 of Lv) {
|
|
7221
7291
|
let i2 = document.createElement("button");
|
|
7222
7292
|
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", () => {
|
|
7223
7293
|
e4.querySelectorAll(".control-btn").forEach((e5) => e5.classList.remove("active")), i2.classList.add("active"), i2.disabled = true, i2.textContent = "".concat(r3.label, " \u2026"), n2(r3.value);
|
|
7224
7294
|
}), e4.appendChild(i2);
|
|
7225
7295
|
}
|
|
7226
7296
|
}
|
|
7227
|
-
function
|
|
7297
|
+
function zv(e4, t2) {
|
|
7228
7298
|
e4.querySelectorAll(".control-btn").forEach((e5) => {
|
|
7229
7299
|
var n2;
|
|
7230
7300
|
let r2 = e5.getAttribute("data-system");
|
|
7231
7301
|
e5.disabled = false;
|
|
7232
|
-
let i2 =
|
|
7302
|
+
let i2 = Lv.find((e6) => e6.value === r2);
|
|
7233
7303
|
e5.textContent = (n2 = i2 == null ? void 0 : i2.label) == null ? r2 : n2, e5.classList.toggle("active", r2 === t2);
|
|
7234
7304
|
});
|
|
7235
7305
|
}
|
|
7236
|
-
function
|
|
7306
|
+
function Bv(e4) {
|
|
7237
7307
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
7238
7308
|
}
|
|
7239
|
-
function
|
|
7309
|
+
function Vv(e4) {
|
|
7240
7310
|
return e4.replace(/_/g, " ").replace(/\b\w/g, (e5) => e5.toUpperCase());
|
|
7241
7311
|
}
|
|
7242
|
-
function
|
|
7243
|
-
let t2 = e4.filter((e5) => e5.items.length > 0).map((e5) => '<div class="legend-group"><span class="legend-group-title">'.concat(
|
|
7312
|
+
function Hv(e4) {
|
|
7313
|
+
let t2 = e4.filter((e5) => e5.items.length > 0).map((e5) => '<div class="legend-group"><span class="legend-group-title">'.concat(Bv(e5.title), "</span>") + e5.items.map((e6) => '<span class="legend-item"><span class="legend-glyph">'.concat(Bv(e6.glyph), "</span>").concat(Bv(e6.label), "</span>")).join("") + "</div>").join("");
|
|
7244
7314
|
return t2 ? '<details class="glyph-legend"><summary><span class="legend-spark">\u2726</span> Legend</summary><div class="legend-body">'.concat(t2, "</div></details>") : "";
|
|
7245
7315
|
}
|
|
7246
|
-
var
|
|
7316
|
+
var Uv = class {
|
|
7247
7317
|
constructor(e4) {
|
|
7248
7318
|
var t2, n2, r2, i2, a2, s2;
|
|
7249
7319
|
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, "searchTimeout", null), o(this, "searchVersion", 0), o(this, "isSearching", false), this.config = e4, this.params = { date: ((t2 = e4.initialParams) == null ? void 0 : t2.date) || this.getTodayDate(), time: ((n2 = e4.initialParams) == null ? void 0 : n2.time) || "12:00", latitude: ((r2 = e4.initialParams) == null ? void 0 : r2.latitude) || null, longitude: ((i2 = e4.initialParams) == null ? void 0 : i2.longitude) || null, timezone: ((a2 = e4.initialParams) == null ? void 0 : a2.timezone) || null, locationName: ((s2 = e4.initialParams) == null ? void 0 : s2.locationName) || null }, this.render();
|
|
@@ -7354,9 +7424,13 @@ var Iv = class {
|
|
|
7354
7424
|
let t3 = document.createElement("button");
|
|
7355
7425
|
t3.className = "param-btn-icon", t3.innerHTML = "\u25B6", t3.title = "Next Day", t3.addEventListener("click", () => this.stepDay(1)), s2.append(e5, t3);
|
|
7356
7426
|
}
|
|
7357
|
-
this.refreshBtn = document.createElement("button"), this.refreshBtn.className = "param-btn-primary", this.refreshBtn.textContent = "Recalculate", this.refreshBtn.addEventListener("click", () => {
|
|
7427
|
+
if (this.refreshBtn = document.createElement("button"), this.refreshBtn.className = "param-btn-primary", this.refreshBtn.textContent = "Recalculate", this.refreshBtn.addEventListener("click", () => {
|
|
7358
7428
|
this.config.onRefresh(this.params);
|
|
7359
|
-
}), s2.append(this.refreshBtn),
|
|
7429
|
+
}), s2.append(this.refreshBtn), this.config.costHint) {
|
|
7430
|
+
let e5 = document.createElement("span");
|
|
7431
|
+
e5.className = "param-cost-hint", e5.textContent = this.config.costHint, e5.title = "Approximate credit cost each time you recalculate", s2.append(e5);
|
|
7432
|
+
}
|
|
7433
|
+
this.config.hideLocation ? e4.append(t2, r2, s2) : e4.append(t2, r2, a2, s2), this.config.container.append(e4);
|
|
7360
7434
|
}
|
|
7361
7435
|
stepDay(e4) {
|
|
7362
7436
|
if (!this.params.date) return;
|
|
@@ -7366,20 +7440,20 @@ var Iv = class {
|
|
|
7366
7440
|
escHtml(e4) {
|
|
7367
7441
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7368
7442
|
}
|
|
7369
|
-
},
|
|
7370
|
-
function
|
|
7371
|
-
return
|
|
7443
|
+
}, Wv = /* @__PURE__ */ new Set();
|
|
7444
|
+
function Gv(e4) {
|
|
7445
|
+
return Wv.has(e4);
|
|
7372
7446
|
}
|
|
7373
|
-
function
|
|
7374
|
-
|
|
7447
|
+
function Kv(e4) {
|
|
7448
|
+
Wv.add(e4);
|
|
7375
7449
|
}
|
|
7376
|
-
var
|
|
7377
|
-
function
|
|
7450
|
+
var qv = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "Welcome to your Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "Your birth chart is now rendered \u2014 an exact celestial snapshot of the sky at your moment of birth." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "Welcome to the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are now layered \u2014 the inner wheel is your natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "Welcome to your Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "Your bodygraph is now rendered \u2014 a living map of the energy centres, channels, and gates that define your design." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "Welcome to your Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows your Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon & Nakshatra</strong> for lunar mansion detail"], modalText: "Your Vedic birth chart is now rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "Welcome to your Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to your natal chart \u2014 the exact dates outer-planet energies activate your placements." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "Welcome to the Moon Phase dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status \u2014 a snapshot of tonight's sky." }, bazi: { stripIcon: "\u56DB", stripTitle: "Welcome to your BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is your core identity element", "The <strong>Wu Xing bar</strong> shows your Five Element balance"], modalText: "Your BaZi (Four Pillars of Destiny) chart is now rendered \u2014 a map of the Heavenly Stems and Earthly Branches present at your moment of birth." } }, Jv = '\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 background: 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';
|
|
7451
|
+
function Yv() {
|
|
7378
7452
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7379
7453
|
let e4 = document.createElement("style");
|
|
7380
|
-
e4.id = "oe-first-run-styles", e4.textContent =
|
|
7454
|
+
e4.id = "oe-first-run-styles", e4.textContent = Jv, document.head.appendChild(e4);
|
|
7381
7455
|
}
|
|
7382
|
-
function
|
|
7456
|
+
function Xv(e4, t2) {
|
|
7383
7457
|
let n2 = document.activeElement, r2 = document.createElement("div");
|
|
7384
7458
|
r2.className = "oe-welcome-backdrop";
|
|
7385
7459
|
let i2 = document.createElement("div");
|
|
@@ -7389,7 +7463,7 @@ function Uv(e4, t2) {
|
|
|
7389
7463
|
let o2 = i2.querySelector(".oe-welcome-button"), s2 = () => {
|
|
7390
7464
|
r2.classList.add("is-dismissing"), r2.addEventListener("animationend", () => {
|
|
7391
7465
|
r2.remove(), n2 == null || n2.focus();
|
|
7392
|
-
}, { once: true }),
|
|
7466
|
+
}, { once: true }), Kv(t2);
|
|
7393
7467
|
};
|
|
7394
7468
|
return o2.addEventListener("click", s2), r2.addEventListener("click", (e5) => {
|
|
7395
7469
|
e5.target === r2 && s2();
|
|
@@ -7397,14 +7471,14 @@ function Uv(e4, t2) {
|
|
|
7397
7471
|
e5.key === "Escape" && (e5.preventDefault(), s2()), e5.key === "Tab" && (e5.preventDefault(), o2.focus());
|
|
7398
7472
|
}), requestAnimationFrame(() => o2.focus()), r2;
|
|
7399
7473
|
}
|
|
7400
|
-
function
|
|
7401
|
-
if (
|
|
7402
|
-
let n2 =
|
|
7403
|
-
|
|
7404
|
-
let r2 =
|
|
7474
|
+
function Zv(e4, t2) {
|
|
7475
|
+
if (Gv(e4)) return;
|
|
7476
|
+
let n2 = qv[e4];
|
|
7477
|
+
Yv();
|
|
7478
|
+
let r2 = Xv(n2, e4);
|
|
7405
7479
|
document.body.appendChild(r2);
|
|
7406
7480
|
}
|
|
7407
|
-
function
|
|
7481
|
+
function Qv(e4) {
|
|
7408
7482
|
var t2;
|
|
7409
7483
|
if (!e4) return null;
|
|
7410
7484
|
if (e4.structuredContent != null && typeof e4.structuredContent == "object") return e4.structuredContent;
|
|
@@ -7417,17 +7491,17 @@ function Gv(e4) {
|
|
|
7417
7491
|
}
|
|
7418
7492
|
return null;
|
|
7419
7493
|
}
|
|
7420
|
-
function
|
|
7494
|
+
function $v(e4) {
|
|
7421
7495
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7422
7496
|
}
|
|
7423
|
-
function
|
|
7424
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e4, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
7425
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
7497
|
+
function ey(e4) {
|
|
7498
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e4, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat($v(i2), "</button>") : "";
|
|
7499
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat($v(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
7426
7500
|
var o2;
|
|
7427
7501
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7428
7502
|
}
|
|
7429
7503
|
}
|
|
7430
|
-
function
|
|
7504
|
+
function ty(e4, t2, n2 = []) {
|
|
7431
7505
|
var r2, i2;
|
|
7432
7506
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7433
7507
|
let a2 = document.createElement("button");
|
|
@@ -7510,14 +7584,14 @@ function Jv(e4, t2, n2 = []) {
|
|
|
7510
7584
|
}, 4e3);
|
|
7511
7585
|
}
|
|
7512
7586
|
}
|
|
7513
|
-
function
|
|
7587
|
+
function ny(e4, t2) {
|
|
7514
7588
|
e4.ontoolcancelled = (e5) => {
|
|
7515
7589
|
var n2, r2, i2;
|
|
7516
7590
|
let a2 = (n2 = e5.reason) == null ? "Tool call was cancelled" : n2;
|
|
7517
|
-
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.setBusy(false),
|
|
7591
|
+
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.setBusy(false), ry(a2);
|
|
7518
7592
|
};
|
|
7519
7593
|
}
|
|
7520
|
-
function
|
|
7594
|
+
function ry(e4) {
|
|
7521
7595
|
var t2;
|
|
7522
7596
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7523
7597
|
let n2 = document.createElement("div");
|
|
@@ -7525,7 +7599,7 @@ function Xv(e4) {
|
|
|
7525
7599
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7526
7600
|
}, 3e3);
|
|
7527
7601
|
}
|
|
7528
|
-
function
|
|
7602
|
+
function iy(e4) {
|
|
7529
7603
|
var t2;
|
|
7530
7604
|
function n2(e5) {
|
|
7531
7605
|
if (!e5) return;
|
|
@@ -7538,44 +7612,44 @@ function Zv(e4) {
|
|
|
7538
7612
|
n2(e5);
|
|
7539
7613
|
});
|
|
7540
7614
|
}
|
|
7541
|
-
var
|
|
7542
|
-
function
|
|
7543
|
-
|
|
7615
|
+
var ay = document.getElementById("loading-state"), oy = document.getElementById("chart-container"), sy = document.getElementById("chart-info"), cy = document.getElementById("chart-status"), ly = document.getElementById("controls-panel"), uy = document.getElementById("patterns-strip"), dy = document.getElementById("aspect-filter"), fy = document.getElementById("overview-table"), py = document.getElementById("param-controls-container"), my = new r_({ name: "Chart Wheel Explorer", version: "1.0.0" }), $ = null, hy = "placidus", gy = null, _y = false, vy = false;
|
|
7616
|
+
function yy(e4) {
|
|
7617
|
+
cy && (e4 ? (cy.textContent = "\xB7 ".concat(e4), cy.setAttribute("data-active", "")) : (cy.textContent = "", cy.removeAttribute("data-active")));
|
|
7544
7618
|
}
|
|
7545
|
-
|
|
7619
|
+
my.ontoolresult = (e4) => {
|
|
7546
7620
|
var t2;
|
|
7547
|
-
let n2 =
|
|
7548
|
-
if (
|
|
7549
|
-
console.error("[ChartWheel] \u274C No chart data found in tool result"),
|
|
7621
|
+
let n2 = Qv(e4);
|
|
7622
|
+
if (Uy(), !n2 || !n2.planets) {
|
|
7623
|
+
console.error("[ChartWheel] \u274C No chart data found in tool result"), Wy("Chart data could not be parsed from the server response.", Gy);
|
|
7550
7624
|
return;
|
|
7551
7625
|
}
|
|
7552
|
-
if ($ = n2,
|
|
7626
|
+
if ($ = n2, hy = (t2 = n2.house_system) == null ? "placidus" : t2, !gy) {
|
|
7553
7627
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
7554
7628
|
let e5 = (r2 = n2._birth_params) == null ? {} : r2, t3 = (i2 = (a2 = (o2 = e5.datetime) == null ? n2.datetime : o2) == null ? n2.birth_datetime : a2) == null ? "" : i2, p2 = (s2 = (c2 = e5.location) == null ? n2.location : c2) == null ? "" : s2, m2 = (l2 = (u2 = e5.timezone) == null ? n2.timezone : u2) == null ? "" : l2, h2 = (d2 = e5.latitude) == null ? n2.latitude : d2, g2 = (f2 = e5.longitude) == null ? n2.longitude : f2, _2 = "", v2 = "12:00";
|
|
7555
7629
|
if (t3 && t3.includes("T")) {
|
|
7556
7630
|
let e6 = t3.split("T");
|
|
7557
7631
|
_2 = e6[0], v2 = e6[1].substring(0, 5);
|
|
7558
7632
|
}
|
|
7559
|
-
|
|
7560
|
-
|
|
7633
|
+
gy = new Uv({ app: my, container: py, 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 (e6) => {
|
|
7634
|
+
gy == null || gy.setBusy(true), ay.removeAttribute("hidden"), oy.setAttribute("hidden", "");
|
|
7561
7635
|
try {
|
|
7562
7636
|
var t4, n3, r3, i3;
|
|
7563
|
-
let a3 = "".concat(e6.date, "T").concat(e6.time, ":00"), o3 = new Promise((e7, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 =
|
|
7564
|
-
s3 ? ($ = s3, s3.house_system && (
|
|
7637
|
+
let a3 = "".concat(e6.date, "T").concat(e6.time, ":00"), o3 = new Promise((e7, t5) => setTimeout(() => t5(Error("Recalculate timed out after 30s")), 3e4)), s3 = Qv(await Promise.race([my.callServerTool({ name: "chart_wheel_recalculate", arguments: { datetime: "".concat(a3).concat(e6.timezone ? "" : "Z"), latitude: (t4 = e6.latitude) == null ? void 0 : t4, longitude: (n3 = e6.longitude) == null ? void 0 : n3, timezone: (r3 = e6.timezone) == null ? void 0 : r3, location: (i3 = e6.locationName) == null ? void 0 : i3, house_system: hy || "placidus", chart_type: "natal" } }), o3]));
|
|
7638
|
+
s3 ? ($ = s3, s3.house_system && (hy = s3.house_system), by(s3)) : $ && (ay.setAttribute("hidden", ""), oy.removeAttribute("hidden"));
|
|
7565
7639
|
} catch (e7) {
|
|
7566
|
-
console.error("[ChartWheel] Recalculate failed or timed out:", e7), $ && (
|
|
7640
|
+
console.error("[ChartWheel] Recalculate failed or timed out:", e7), $ && (ay.setAttribute("hidden", ""), oy.removeAttribute("hidden"));
|
|
7567
7641
|
} finally {
|
|
7568
|
-
|
|
7642
|
+
gy == null || gy.setBusy(false);
|
|
7569
7643
|
}
|
|
7570
7644
|
} });
|
|
7571
7645
|
}
|
|
7572
|
-
|
|
7646
|
+
by(n2);
|
|
7573
7647
|
};
|
|
7574
|
-
function
|
|
7648
|
+
function by(e4) {
|
|
7575
7649
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7576
|
-
|
|
7577
|
-
let c2 =
|
|
7578
|
-
c2.length > 0 &&
|
|
7650
|
+
Ty = null, ay.setAttribute("hidden", ""), oy.removeAttribute("hidden"), py.removeAttribute("hidden"), ly.removeAttribute("hidden"), Fv(oy, e4, Ny, Py, Fy, By, vy ? Iy() : void 0), uv(yy), Rv(ly, hy, Vy), xy(e4), Zv("chart-wheel", oy);
|
|
7651
|
+
let c2 = H_(e4.planets), l2 = (n2 = (r2 = (i2 = ((t2 = e4.houses) == null ? [] : t2)[0]) == null ? void 0 : i2.cusp_lon) == null ? e4.ascendant : r2) == null ? 0 : n2, u2 = (a2 = e4.aspects) == null ? [] : a2;
|
|
7652
|
+
c2.length > 0 && Cy(c2, u2), Ey(iv(u2, c2), c2, l2), jy();
|
|
7579
7653
|
let d2 = document.getElementById("cw-action-bar");
|
|
7580
7654
|
if (!d2) {
|
|
7581
7655
|
d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
|
|
@@ -7586,14 +7660,14 @@ function py(e4) {
|
|
|
7586
7660
|
(f2 = document.getElementById("app")) == null || f2.prepend(d2);
|
|
7587
7661
|
}
|
|
7588
7662
|
}
|
|
7589
|
-
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
|
|
7663
|
+
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 Ry()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void zy());
|
|
7590
7664
|
}
|
|
7591
|
-
function
|
|
7665
|
+
function xy(e4) {
|
|
7592
7666
|
var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
|
|
7593
|
-
if (!
|
|
7667
|
+
if (!sy) return;
|
|
7594
7668
|
let d2 = (t2 = e4._birth_params) == null ? {} : t2, f2 = (n2 = (r2 = (i2 = d2.datetime) == null ? e4.datetime : i2) == null ? e4.birth_datetime : r2) == null ? "" : n2, p2 = (a2 = (o2 = d2.location) == null ? e4.location : o2) == null ? "" : a2, m2 = (s2 = (c2 = d2.timezone) == null ? e4.timezone : c2) == null ? "" : s2, h2 = (l2 = d2.latitude) == null ? e4.latitude : l2, g2 = (u2 = d2.longitude) == null ? e4.longitude : u2;
|
|
7595
|
-
|
|
7596
|
-
let _2 =
|
|
7669
|
+
hy.charAt(0).toUpperCase() + hy.slice(1);
|
|
7670
|
+
let _2 = H_(e4.planets).find((e5) => e5.name.toLowerCase() === "sun"), v2 = _2 != null && _2.house ? _2.house >= 7 ? "\u2609 Day Chart" : "\u263E Night Chart" : "", ee2 = f2;
|
|
7597
7671
|
try {
|
|
7598
7672
|
if (f2 && f2.includes("T")) {
|
|
7599
7673
|
let e5 = new Date(f2), t3 = m2 ? { timeZone: m2 } : {};
|
|
@@ -7603,14 +7677,14 @@ function my(e4) {
|
|
|
7603
7677
|
}
|
|
7604
7678
|
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 = [];
|
|
7605
7679
|
if (ee2 && b2.push('<span class="info-chip" title="Birth datetime">\u{1F4C5} '.concat(ee2, "</span>")), p2 && b2.push('<span class="info-chip" title="Birth location">\u{1F4CD} '.concat(p2, "</span>")), y2 && !p2 && b2.push('<span class="info-chip" title="Coordinates">\u{1F4CD} '.concat(y2, "</span>")), m2 && b2.push('<span class="info-chip" title="Timezone">\u{1F550} '.concat(m2, "</span>")), v2 && b2.push('<span class="info-chip sect" title="Sect">'.concat(v2, "</span>")), b2.length === 0) {
|
|
7606
|
-
|
|
7680
|
+
sy.setAttribute("hidden", "");
|
|
7607
7681
|
return;
|
|
7608
7682
|
}
|
|
7609
|
-
|
|
7683
|
+
sy.innerHTML = b2.join(""), sy.removeAttribute("hidden");
|
|
7610
7684
|
}
|
|
7611
|
-
var
|
|
7612
|
-
function
|
|
7613
|
-
if (!
|
|
7685
|
+
var Sy = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
|
|
7686
|
+
function Cy(e4, t2) {
|
|
7687
|
+
if (!fy || e4.length === 0) return;
|
|
7614
7688
|
let n2 = ["sun", "moon", "mercury", "venus", "mars", "jupiter", "saturn", "uranus", "neptune", "pluto", "chiron", "north node", "south node", "true node"], r2 = [...e4].sort((e5, t3) => {
|
|
7615
7689
|
let r3 = n2.indexOf(e5.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
|
|
7616
7690
|
return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e5.name.localeCompare(t3.name) : 1 : -1;
|
|
@@ -7621,15 +7695,32 @@ function gy(e4, t2) {
|
|
|
7621
7695
|
}
|
|
7622
7696
|
let s2 = (e5) => e5.replace(/(^|\s|_)\w/g, (e6) => e6.toUpperCase()).replace(/_/g, " "), c2 = (e5) => ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"][Math.floor((e5 % 360 + 360) % 360 / 30)], l2 = r2.map((e5) => {
|
|
7623
7697
|
var t3, n3, r3, a3;
|
|
7624
|
-
let o3 = e5.name.toLowerCase(), l3 = (t3 =
|
|
7625
|
-
return '<tr class="'.concat(
|
|
7626
|
-
}).join("")
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7698
|
+
let o3 = e5.name.toLowerCase(), l3 = (t3 = D_[o3]) == null ? "\u2605" : t3, u3 = (n3 = e5.sign) == null ? c2(e5.longitude) : n3, d3 = Math.floor((e5.longitude % 360 + 360) % 360 % 30), f3 = Math.floor((e5.longitude % 360 + 360) % 360 % 1 * 60), p3 = Sy.has(o3), m2 = e5.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
|
|
7699
|
+
return '<tr class="'.concat(p3 ? "extended-row" : "", '" data-planet="').concat(o3, '">\n <td><span class="planet-sym">').concat(l3, "</span> ").concat(s2(e5.name)).concat(m2, "</td>\n <td>").concat(d3, "\xB0 ").concat(u3, " ").concat(String(f3).padStart(2, "0"), "\u2032</td>\n <td>H").concat((a3 = e5.house) == null ? "\u2013" : a3, "</td>\n <td>").concat(h2 > 0 ? h2 : "\u2013", "</td>\n </tr>");
|
|
7700
|
+
}).join(""), u2 = "| Body | Sign | Degree | House | Retrograde |\n| --- | --- | --- | --- | --- |\n" + r2.map((e5) => {
|
|
7701
|
+
var t3;
|
|
7702
|
+
let n3 = (t3 = e5.sign) == null ? c2(e5.longitude) : t3, r3 = Math.floor((e5.longitude % 360 + 360) % 360 % 30), i3 = Math.floor((e5.longitude % 360 + 360) % 360 % 1 * 60), a3 = e5.house == null ? "\u2013" : "H".concat(e5.house), o3 = e5.retrograde ? "\u211E" : "";
|
|
7703
|
+
return "| ".concat(s2(e5.name), " | ").concat(n3, " | ").concat(r3, "\xB0 ").concat(String(i3).padStart(2, "0"), "\u2032 | ").concat(a3, " | ").concat(o3, " |");
|
|
7704
|
+
}).join("\n");
|
|
7705
|
+
fy.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 "), fy.removeAttribute("hidden");
|
|
7706
|
+
let d2 = fy.querySelector(".overview-copy");
|
|
7707
|
+
d2 && d2.addEventListener("click", async (e5) => {
|
|
7708
|
+
e5.stopPropagation();
|
|
7709
|
+
try {
|
|
7710
|
+
var t3;
|
|
7711
|
+
if (!((t3 = navigator.clipboard) != null && t3.writeText)) throw Error("clipboard unavailable");
|
|
7712
|
+
await navigator.clipboard.writeText(u2), d2.textContent = "Copied \u2713", d2.classList.add("copied"), setTimeout(() => {
|
|
7713
|
+
d2.textContent = "Copy", d2.classList.remove("copied");
|
|
7714
|
+
}, 1600);
|
|
7715
|
+
} catch (e6) {
|
|
7716
|
+
wy("Copy unavailable");
|
|
7717
|
+
}
|
|
7718
|
+
});
|
|
7719
|
+
let f2 = fy.querySelector(".overview-toggle"), p2 = fy.querySelector(".overview-body");
|
|
7720
|
+
f2 == null || f2.addEventListener("click", () => {
|
|
7721
|
+
let e5 = f2.getAttribute("aria-expanded") === "true";
|
|
7722
|
+
f2.setAttribute("aria-expanded", e5 ? "false" : "true"), p2.classList.toggle("open", !e5);
|
|
7723
|
+
}), fy.querySelectorAll("tbody tr").forEach((e5) => {
|
|
7633
7724
|
var t3;
|
|
7634
7725
|
let n3 = (t3 = e5.dataset.planet) == null ? "" : t3;
|
|
7635
7726
|
n3 && (e5.addEventListener("mouseenter", () => {
|
|
@@ -7641,7 +7732,7 @@ function gy(e4, t2) {
|
|
|
7641
7732
|
let t4 = document.querySelector("svg");
|
|
7642
7733
|
t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e6) => {
|
|
7643
7734
|
var t5;
|
|
7644
|
-
let n4 =
|
|
7735
|
+
let n4 = Sy.has((t5 = e6.dataset.planet) == null ? "" : t5);
|
|
7645
7736
|
e6.style.opacity = n4 ? "0.65" : "1";
|
|
7646
7737
|
}), e5.classList.remove("active-row"));
|
|
7647
7738
|
}), e5.addEventListener("click", () => {
|
|
@@ -7652,26 +7743,34 @@ function gy(e4, t2) {
|
|
|
7652
7743
|
}));
|
|
7653
7744
|
});
|
|
7654
7745
|
}
|
|
7655
|
-
|
|
7656
|
-
|
|
7657
|
-
|
|
7746
|
+
function wy(e4) {
|
|
7747
|
+
var t2;
|
|
7748
|
+
(t2 = document.getElementById("copy-toast")) == null || t2.remove();
|
|
7749
|
+
let n2 = document.createElement("div");
|
|
7750
|
+
n2.id = "copy-toast", n2.className = "cancel-toast", n2.textContent = e4, document.body.appendChild(n2), n2.offsetHeight, n2.classList.add("visible"), setTimeout(() => {
|
|
7751
|
+
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7752
|
+
}, 2500);
|
|
7753
|
+
}
|
|
7754
|
+
var Ty = null;
|
|
7755
|
+
function Ey(e4, t2, n2) {
|
|
7756
|
+
if (!uy) return;
|
|
7658
7757
|
if (e4.length === 0) {
|
|
7659
|
-
|
|
7758
|
+
uy.setAttribute("hidden", ""), uy.innerHTML = "";
|
|
7660
7759
|
return;
|
|
7661
7760
|
}
|
|
7662
7761
|
let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
|
|
7663
|
-
if (
|
|
7762
|
+
if (uy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e4.map((e5, t3) => {
|
|
7664
7763
|
var n3;
|
|
7665
7764
|
let i2 = (n3 = r2[e5.name]) == null ? "#888" : n3;
|
|
7666
7765
|
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(e5.description, '">\n ').concat(e5.name, "\n </button>\n ");
|
|
7667
|
-
}).join(""), "\n "),
|
|
7766
|
+
}).join(""), "\n "), uy.removeAttribute("hidden"), !uy.querySelector(".pattern-ask-claude-btn")) {
|
|
7668
7767
|
let t3 = document.createElement("button");
|
|
7669
|
-
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none",
|
|
7768
|
+
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", uy.appendChild(t3), t3.addEventListener("click", () => {
|
|
7670
7769
|
var n3;
|
|
7671
|
-
let r3 =
|
|
7770
|
+
let r3 = Ty;
|
|
7672
7771
|
if (r3 === null) return;
|
|
7673
7772
|
let i2 = e4[r3];
|
|
7674
|
-
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026",
|
|
7773
|
+
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", By({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
|
|
7675
7774
|
t3.textContent = "\u2713 Sent", setTimeout(() => {
|
|
7676
7775
|
t3.textContent = "\u2728 Ask Claude", t3.disabled = false;
|
|
7677
7776
|
}, 2500);
|
|
@@ -7680,28 +7779,28 @@ function vy(e4, t2, n2) {
|
|
|
7680
7779
|
});
|
|
7681
7780
|
});
|
|
7682
7781
|
}
|
|
7683
|
-
|
|
7782
|
+
uy.querySelectorAll(".pattern-pill").forEach((r3) => {
|
|
7684
7783
|
r3.addEventListener("click", () => {
|
|
7685
7784
|
var i2;
|
|
7686
|
-
let a2 = Number(r3.dataset.idx), o2 = e4[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 =
|
|
7687
|
-
|
|
7785
|
+
let a2 = Number(r3.dataset.idx), o2 = e4[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = uy.querySelector(".pattern-ask-claude-btn");
|
|
7786
|
+
Ty === a2 ? (Ty = null, Ov(), c2 && (c2.style.display = "none"), uy.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7688
7787
|
var t3;
|
|
7689
7788
|
e5.classList.remove("active");
|
|
7690
7789
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7691
7790
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7692
|
-
})) : (
|
|
7791
|
+
})) : (Ty = a2, uy.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7693
7792
|
var t3;
|
|
7694
7793
|
e5.classList.remove("active");
|
|
7695
7794
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7696
7795
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7697
|
-
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2,
|
|
7796
|
+
}), r3.classList.add("active"), r3.style.background = s2, r3.style.color = "#fff", r3.style.borderColor = s2, Ev(o2.planets, o2.aspectKeys), t2 && n2 != null && (Mv(), jv(o2, t2, n2)), c2 && (c2.style.display = "", c2.textContent = "\u2728 Ask Claude", c2.disabled = false));
|
|
7698
7797
|
});
|
|
7699
7798
|
});
|
|
7700
7799
|
}
|
|
7701
|
-
var
|
|
7702
|
-
function
|
|
7800
|
+
var Dy = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Oy = true, ky = 8, Ay = "true";
|
|
7801
|
+
function jy() {
|
|
7703
7802
|
var e4;
|
|
7704
|
-
if (!
|
|
7803
|
+
if (!dy) return;
|
|
7705
7804
|
let t2 = (() => {
|
|
7706
7805
|
let e5 = $ == null ? void 0 : $.planets, t3 = [];
|
|
7707
7806
|
Array.isArray(e5) ? e5.forEach((e6) => {
|
|
@@ -7711,101 +7810,101 @@ function Cy() {
|
|
|
7711
7810
|
let n3 = t3.some((e6) => e6 === "north node" || e6 === "north node (mean)" || e6 === "mean node"), r3 = t3.some((e6) => e6 === "true node" || e6 === "north node (true)");
|
|
7712
7811
|
return n3 && r3;
|
|
7713
7812
|
})();
|
|
7714
|
-
|
|
7715
|
-
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(
|
|
7716
|
-
|
|
7717
|
-
let r2 =
|
|
7813
|
+
B_(Ay);
|
|
7814
|
+
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(Ay === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(Ay === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
|
|
7815
|
+
Oy = true, dy.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(Dy.map((e5) => '<button class="orb-preset-btn'.concat(e5.maxOrb === ky ? " active" : "", '" data-orb="').concat(e5.maxOrb, '" title="').concat(e5.label, ' orbs">').concat(e5.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
|
|
7816
|
+
let r2 = H_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
|
|
7718
7817
|
for (let e5 of r2) {
|
|
7719
7818
|
let t3 = e5.name.toLowerCase();
|
|
7720
7819
|
if (i2.has(t3)) continue;
|
|
7721
7820
|
i2.add(t3);
|
|
7722
|
-
let n3 =
|
|
7723
|
-
n3 && a2.push({ glyph: n3, label:
|
|
7821
|
+
let n3 = D_[t3];
|
|
7822
|
+
n3 && a2.push({ glyph: n3, label: Vv(e5.name) });
|
|
7724
7823
|
}
|
|
7725
7824
|
let o2 = [...new Set(((e4 = $ == null ? void 0 : $.aspects) == null ? [] : e4).map((e5) => {
|
|
7726
7825
|
var t3;
|
|
7727
7826
|
return ((t3 = e5.type) == null ? "" : t3).toLowerCase();
|
|
7728
7827
|
}).filter(Boolean))].map((e5) => {
|
|
7729
7828
|
var t3;
|
|
7730
|
-
return { glyph: (t3 =
|
|
7829
|
+
return { glyph: (t3 = A_[e5]) == null ? "" : t3, label: Vv(e5) };
|
|
7731
7830
|
}).filter((e5) => e5.glyph);
|
|
7732
|
-
|
|
7831
|
+
dy.insertAdjacentHTML("beforeend", Hv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), dy.removeAttribute("hidden");
|
|
7733
7832
|
let s2 = document.getElementById("cw-aspect-vis-toggle");
|
|
7734
7833
|
s2 == null || s2.addEventListener("click", () => {
|
|
7735
|
-
|
|
7736
|
-
}),
|
|
7834
|
+
Oy = !Oy, Nv(Oy), s2.classList.toggle("active", Oy), s2.querySelector(".toggle-icon").textContent = Oy ? "\u2295" : "\u2296";
|
|
7835
|
+
}), dy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e5) => {
|
|
7737
7836
|
e5.addEventListener("click", () => {
|
|
7738
7837
|
var t3;
|
|
7739
7838
|
let n3 = parseFloat((t3 = e5.dataset.orb) == null ? "8" : t3);
|
|
7740
|
-
n3 !==
|
|
7839
|
+
n3 !== ky && (ky = n3, dy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => e6.classList.toggle("active", e6.dataset.orb === String(n3))), Pv(n3));
|
|
7741
7840
|
});
|
|
7742
|
-
}),
|
|
7841
|
+
}), dy.querySelectorAll(".node-btn").forEach((e5) => {
|
|
7743
7842
|
e5.addEventListener("click", () => {
|
|
7744
7843
|
let t3 = e5.dataset.node === "mean" ? "mean" : "true";
|
|
7745
|
-
t3 ===
|
|
7844
|
+
t3 === Ay || !$ || (Ay = t3, B_(t3), by($));
|
|
7746
7845
|
});
|
|
7747
7846
|
});
|
|
7748
7847
|
}
|
|
7749
|
-
async function
|
|
7750
|
-
if (
|
|
7848
|
+
async function My(e4, t2) {
|
|
7849
|
+
if (_y) try {
|
|
7751
7850
|
let n2 = "[Chart Wheel] Selected ".concat(e4, " \u2014 ").concat(Object.entries(t2).filter(([, e5]) => e5 != null && e5 !== false && e5 !== "").map(([e5, t3]) => "".concat(e5, ": ").concat(t3)).join(", "));
|
|
7752
|
-
await
|
|
7851
|
+
await my.updateModelContext({ content: [{ type: "text", text: n2 }] });
|
|
7753
7852
|
} catch (e5) {
|
|
7754
7853
|
console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e5);
|
|
7755
7854
|
}
|
|
7756
7855
|
}
|
|
7757
|
-
async function
|
|
7856
|
+
async function Ny(e4) {
|
|
7758
7857
|
var t2, n2, r2, i2;
|
|
7759
|
-
|
|
7858
|
+
Ty = null, uy == null || uy.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7760
7859
|
var t3;
|
|
7761
7860
|
e5.classList.remove("active");
|
|
7762
7861
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7763
7862
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7764
|
-
}), await
|
|
7863
|
+
}), await My("planet", { planet: e4.name, longitude: e4.longitude, sign: (t2 = e4.sign) == null ? null : t2, house: (n2 = e4.house) == null ? null : n2, retrograde: (r2 = e4.retrograde) == null ? false : r2, speed: (i2 = e4.speed) == null ? null : i2 });
|
|
7765
7864
|
}
|
|
7766
|
-
async function
|
|
7865
|
+
async function Py(e4) {
|
|
7767
7866
|
var t2, n2;
|
|
7768
|
-
await
|
|
7867
|
+
await My("house", { house_number: e4.number, sign: (t2 = e4.sign) == null ? null : t2, cusp_longitude: e4.cusp_lon, ruler: (n2 = e4.ruler) == null ? null : n2 });
|
|
7769
7868
|
}
|
|
7770
|
-
async function
|
|
7869
|
+
async function Fy(e4) {
|
|
7771
7870
|
var t2, n2, r2, i2;
|
|
7772
|
-
await
|
|
7871
|
+
await My("aspect", { planet1: e4.planet1, planet2: e4.planet2, aspect_type: (t2 = e4.type) == null ? null : t2, orb: (n2 = e4.orb) == null ? null : n2, applying: (r2 = e4.applying) == null ? null : r2, angle: (i2 = e4.angle) == null ? null : i2 });
|
|
7773
7872
|
}
|
|
7774
|
-
function
|
|
7873
|
+
function Iy() {
|
|
7775
7874
|
return async (e4) => {
|
|
7776
7875
|
try {
|
|
7777
7876
|
var t2, n2;
|
|
7778
|
-
let r2 = await
|
|
7877
|
+
let r2 = await my.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(e4) } }], 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 });
|
|
7779
7878
|
return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
|
|
7780
7879
|
} catch (e5) {
|
|
7781
7880
|
return console.error("[ChartWheel] Sampling failed:", e5), "Unable to load interpretation right now.";
|
|
7782
7881
|
}
|
|
7783
7882
|
};
|
|
7784
7883
|
}
|
|
7785
|
-
async function
|
|
7884
|
+
async function Ly(e4) {
|
|
7786
7885
|
try {
|
|
7787
|
-
(await
|
|
7886
|
+
(await my.sendMessage({ role: "user", content: [{ type: "text", text: e4 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
|
|
7788
7887
|
} catch (e5) {
|
|
7789
7888
|
console.error("[ChartWheel] sendMessage failed:", e5);
|
|
7790
7889
|
}
|
|
7791
7890
|
}
|
|
7792
|
-
async function
|
|
7891
|
+
async function Ry() {
|
|
7793
7892
|
var e4, t2, n2, r2;
|
|
7794
7893
|
if (!$) return;
|
|
7795
|
-
let i2 = $, a2 = (e4 = i2._birth_params) == null ? {} : e4, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 =
|
|
7894
|
+
let i2 = $, a2 = (e4 = i2._birth_params) == null ? {} : e4, o2 = (t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this person" : t2, s2 = H_(i2.planets), c2 = ((r2 = i2.aspects) == null ? [] : r2).filter((e5) => {
|
|
7796
7895
|
var t3;
|
|
7797
7896
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e5.type) == null ? "" : t3);
|
|
7798
7897
|
}).slice(0, 8).map((e5) => " \u2022 ".concat(e5.planet1, " ").concat(e5.type, " ").concat(e5.planet2, " (").concat(Number(e5.orb).toFixed(1), "\xB0, ").concat(e5.applying ? "applying" : "separating", ")")).join("\n") || " \u2022 No major aspects found";
|
|
7799
|
-
await
|
|
7898
|
+
await Ly("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e5) => {
|
|
7800
7899
|
var t3;
|
|
7801
7900
|
return " \u2022 ".concat(e5.name, " in ").concat((t3 = e5.sign) == null ? "?" : t3).concat(e5.house ? ", House ".concat(e5.house) : "").concat(e5.retrograde ? " \u211E" : "");
|
|
7802
7901
|
}).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?"));
|
|
7803
7902
|
}
|
|
7804
|
-
async function
|
|
7903
|
+
async function zy() {
|
|
7805
7904
|
var e4, t2, n2, r2;
|
|
7806
7905
|
if (!$) return;
|
|
7807
7906
|
let i2 = $, a2 = (e4 = i2._birth_params) == null ? {} : e4;
|
|
7808
|
-
await
|
|
7907
|
+
await Ly("I'm exploring the natal chart for ".concat((t2 = (n2 = a2.name) == null ? a2.location : n2) == null ? "this chart" : t2, ". Key placements: ").concat(H_(i2.planets).slice(0, 4).map((e5) => {
|
|
7809
7908
|
var t3;
|
|
7810
7909
|
return "".concat(e5.name, " in ").concat((t3 = e5.sign) == null ? "?" : t3).concat(e5.house ? " H".concat(e5.house) : "");
|
|
7811
7910
|
}).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e5) => {
|
|
@@ -7813,7 +7912,7 @@ async function jy() {
|
|
|
7813
7912
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e5.type) == null ? "" : t3);
|
|
7814
7913
|
}).slice(0, 5).map((e5) => "".concat(e5.planet1, " ").concat(e5.type, " ").concat(e5.planet2, " (").concat(Number(e5.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."));
|
|
7815
7914
|
}
|
|
7816
|
-
async function
|
|
7915
|
+
async function By(e4) {
|
|
7817
7916
|
let t2 = "";
|
|
7818
7917
|
if (e4.type === "planet") {
|
|
7819
7918
|
var n2;
|
|
@@ -7842,47 +7941,47 @@ async function My(e4) {
|
|
|
7842
7941
|
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.");
|
|
7843
7942
|
}
|
|
7844
7943
|
if (t2) try {
|
|
7845
|
-
let e5 = await
|
|
7944
|
+
let e5 = await my.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
|
|
7846
7945
|
if (e5.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e5), Error("Host rejected message");
|
|
7847
7946
|
} catch (e5) {
|
|
7848
7947
|
throw console.error("[ChartWheel] \u274C sendMessage failed:", e5), e5;
|
|
7849
7948
|
}
|
|
7850
7949
|
}
|
|
7851
|
-
async function
|
|
7950
|
+
async function Vy(e4) {
|
|
7852
7951
|
if (!($ != null && $._birth_params)) {
|
|
7853
|
-
|
|
7952
|
+
zv(ly, hy);
|
|
7854
7953
|
return;
|
|
7855
7954
|
}
|
|
7856
7955
|
try {
|
|
7857
7956
|
var t2, n2, r2, i2;
|
|
7858
|
-
let a2 =
|
|
7859
|
-
a2 ? ($ = a2,
|
|
7957
|
+
let a2 = Qv(await my.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: e4 } }));
|
|
7958
|
+
a2 ? ($ = a2, hy = e4, by(a2)) : zv(ly, hy);
|
|
7860
7959
|
} catch (e5) {
|
|
7861
|
-
console.error("[Chart] Recalculate failed:", e5),
|
|
7960
|
+
console.error("[Chart] Recalculate failed:", e5), zv(ly, hy);
|
|
7862
7961
|
}
|
|
7863
7962
|
}
|
|
7864
|
-
var
|
|
7865
|
-
function
|
|
7866
|
-
|
|
7963
|
+
var Hy;
|
|
7964
|
+
function Uy() {
|
|
7965
|
+
Hy && (clearTimeout(Hy), Hy = void 0);
|
|
7867
7966
|
}
|
|
7868
|
-
function
|
|
7869
|
-
|
|
7967
|
+
function Wy(e4, t2) {
|
|
7968
|
+
Uy(), ay.setAttribute("hidden", ""), ey({ container: oy, message: e4, onRetry: t2 });
|
|
7870
7969
|
}
|
|
7871
|
-
function
|
|
7872
|
-
|
|
7873
|
-
|
|
7874
|
-
}, 3e4),
|
|
7970
|
+
function Gy() {
|
|
7971
|
+
Uy(), oy.setAttribute("hidden", ""), ay.removeAttribute("hidden"), Hy = setTimeout(() => {
|
|
7972
|
+
Wy("The chart didn't load. Tap to try again.", Gy);
|
|
7973
|
+
}, 3e4), my.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
|
|
7875
7974
|
});
|
|
7876
7975
|
}
|
|
7877
|
-
|
|
7878
|
-
|
|
7976
|
+
ny(my, { loadingEl: ay, contentEl: oy, statusFn: yy, paramControls: gy }), Hy = setTimeout(() => {
|
|
7977
|
+
Wy("Chart data is taking longer than expected.", Gy);
|
|
7879
7978
|
}, 3e4), (async () => {
|
|
7880
7979
|
try {
|
|
7881
|
-
await
|
|
7882
|
-
let e4 =
|
|
7883
|
-
|
|
7980
|
+
await my.connect();
|
|
7981
|
+
let e4 = my.getHostCapabilities();
|
|
7982
|
+
_y = !!(e4 != null && e4.modelContext), vy = !!(e4 != null && e4.sampling), ty(my, document.getElementById("pan-zoom-controls"), ["aspect-filter", "controls-panel", "param-controls-container", "chart-info", "patterns-strip", "info-panel", "cw-action-bar"]), iy(my), $ && by($);
|
|
7884
7983
|
} catch (e4) {
|
|
7885
|
-
console.error("[ChartWheel] \u274C app.connect() FAILED:", e4),
|
|
7984
|
+
console.error("[ChartWheel] \u274C app.connect() FAILED:", e4), Wy("The chart didn't load. Tap to try again.", Gy);
|
|
7886
7985
|
}
|
|
7887
7986
|
})();
|
|
7888
7987
|
</script>
|