@openephemeris/mcp-server 3.21.0 → 3.22.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 +24 -0
- package/dist/tools/apps/bodygraph-app.js +43 -8
- package/dist/tools/specialized/transits.js +1 -1
- package/dist/ui/bi-wheel.html +2080 -2026
- package/dist/ui/bodygraph.html +265 -217
- package/dist/ui/chart-wheel.html +516 -446
- 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-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-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];
|
|
6593
6623
|
}
|
|
6594
|
-
function
|
|
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;
|
|
6642
|
+
}
|
|
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();
|
|
@@ -7366,20 +7436,20 @@ var Iv = class {
|
|
|
7366
7436
|
escHtml(e4) {
|
|
7367
7437
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7368
7438
|
}
|
|
7369
|
-
},
|
|
7370
|
-
function
|
|
7371
|
-
return
|
|
7439
|
+
}, Wv = /* @__PURE__ */ new Set();
|
|
7440
|
+
function Gv(e4) {
|
|
7441
|
+
return Wv.has(e4);
|
|
7372
7442
|
}
|
|
7373
|
-
function
|
|
7374
|
-
|
|
7443
|
+
function Kv(e4) {
|
|
7444
|
+
Wv.add(e4);
|
|
7375
7445
|
}
|
|
7376
|
-
var
|
|
7377
|
-
function
|
|
7446
|
+
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." } }, 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';
|
|
7447
|
+
function Yv() {
|
|
7378
7448
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
7379
7449
|
let e4 = document.createElement("style");
|
|
7380
|
-
e4.id = "oe-first-run-styles", e4.textContent =
|
|
7450
|
+
e4.id = "oe-first-run-styles", e4.textContent = Jv, document.head.appendChild(e4);
|
|
7381
7451
|
}
|
|
7382
|
-
function
|
|
7452
|
+
function Xv(e4, t2) {
|
|
7383
7453
|
let n2 = document.activeElement, r2 = document.createElement("div");
|
|
7384
7454
|
r2.className = "oe-welcome-backdrop";
|
|
7385
7455
|
let i2 = document.createElement("div");
|
|
@@ -7389,7 +7459,7 @@ function Uv(e4, t2) {
|
|
|
7389
7459
|
let o2 = i2.querySelector(".oe-welcome-button"), s2 = () => {
|
|
7390
7460
|
r2.classList.add("is-dismissing"), r2.addEventListener("animationend", () => {
|
|
7391
7461
|
r2.remove(), n2 == null || n2.focus();
|
|
7392
|
-
}, { once: true }),
|
|
7462
|
+
}, { once: true }), Kv(t2);
|
|
7393
7463
|
};
|
|
7394
7464
|
return o2.addEventListener("click", s2), r2.addEventListener("click", (e5) => {
|
|
7395
7465
|
e5.target === r2 && s2();
|
|
@@ -7397,14 +7467,14 @@ function Uv(e4, t2) {
|
|
|
7397
7467
|
e5.key === "Escape" && (e5.preventDefault(), s2()), e5.key === "Tab" && (e5.preventDefault(), o2.focus());
|
|
7398
7468
|
}), requestAnimationFrame(() => o2.focus()), r2;
|
|
7399
7469
|
}
|
|
7400
|
-
function
|
|
7401
|
-
if (
|
|
7402
|
-
let n2 =
|
|
7403
|
-
|
|
7404
|
-
let r2 =
|
|
7470
|
+
function Zv(e4, t2) {
|
|
7471
|
+
if (Gv(e4)) return;
|
|
7472
|
+
let n2 = qv[e4];
|
|
7473
|
+
Yv();
|
|
7474
|
+
let r2 = Xv(n2, e4);
|
|
7405
7475
|
document.body.appendChild(r2);
|
|
7406
7476
|
}
|
|
7407
|
-
function
|
|
7477
|
+
function Qv(e4) {
|
|
7408
7478
|
var t2;
|
|
7409
7479
|
if (!e4) return null;
|
|
7410
7480
|
if (e4.structuredContent != null && typeof e4.structuredContent == "object") return e4.structuredContent;
|
|
@@ -7417,17 +7487,17 @@ function Gv(e4) {
|
|
|
7417
7487
|
}
|
|
7418
7488
|
return null;
|
|
7419
7489
|
}
|
|
7420
|
-
function
|
|
7490
|
+
function $v(e4) {
|
|
7421
7491
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
7422
7492
|
}
|
|
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(
|
|
7493
|
+
function ey(e4) {
|
|
7494
|
+
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>") : "";
|
|
7495
|
+
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
7496
|
var o2;
|
|
7427
7497
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
7428
7498
|
}
|
|
7429
7499
|
}
|
|
7430
|
-
function
|
|
7500
|
+
function ty(e4, t2, n2 = []) {
|
|
7431
7501
|
var r2, i2;
|
|
7432
7502
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
7433
7503
|
let a2 = document.createElement("button");
|
|
@@ -7510,14 +7580,14 @@ function Jv(e4, t2, n2 = []) {
|
|
|
7510
7580
|
}, 4e3);
|
|
7511
7581
|
}
|
|
7512
7582
|
}
|
|
7513
|
-
function
|
|
7583
|
+
function ny(e4, t2) {
|
|
7514
7584
|
e4.ontoolcancelled = (e5) => {
|
|
7515
7585
|
var n2, r2, i2;
|
|
7516
7586
|
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),
|
|
7587
|
+
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
7588
|
};
|
|
7519
7589
|
}
|
|
7520
|
-
function
|
|
7590
|
+
function ry(e4) {
|
|
7521
7591
|
var t2;
|
|
7522
7592
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
7523
7593
|
let n2 = document.createElement("div");
|
|
@@ -7525,7 +7595,7 @@ function Xv(e4) {
|
|
|
7525
7595
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
7526
7596
|
}, 3e3);
|
|
7527
7597
|
}
|
|
7528
|
-
function
|
|
7598
|
+
function iy(e4) {
|
|
7529
7599
|
var t2;
|
|
7530
7600
|
function n2(e5) {
|
|
7531
7601
|
if (!e5) return;
|
|
@@ -7538,44 +7608,44 @@ function Zv(e4) {
|
|
|
7538
7608
|
n2(e5);
|
|
7539
7609
|
});
|
|
7540
7610
|
}
|
|
7541
|
-
var
|
|
7542
|
-
function
|
|
7543
|
-
|
|
7611
|
+
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;
|
|
7612
|
+
function yy(e4) {
|
|
7613
|
+
cy && (e4 ? (cy.textContent = "\xB7 ".concat(e4), cy.setAttribute("data-active", "")) : (cy.textContent = "", cy.removeAttribute("data-active")));
|
|
7544
7614
|
}
|
|
7545
|
-
|
|
7615
|
+
my.ontoolresult = (e4) => {
|
|
7546
7616
|
var t2;
|
|
7547
|
-
let n2 =
|
|
7548
|
-
if (
|
|
7549
|
-
console.error("[ChartWheel] \u274C No chart data found in tool result"),
|
|
7617
|
+
let n2 = Qv(e4);
|
|
7618
|
+
if (Hy(), !n2 || !n2.planets) {
|
|
7619
|
+
console.error("[ChartWheel] \u274C No chart data found in tool result"), Uy("Chart data could not be parsed from the server response.", Wy);
|
|
7550
7620
|
return;
|
|
7551
7621
|
}
|
|
7552
|
-
if ($ = n2,
|
|
7622
|
+
if ($ = n2, hy = (t2 = n2.house_system) == null ? "placidus" : t2, !gy) {
|
|
7553
7623
|
var r2, i2, a2, o2, s2, c2, l2, u2, d2, f2;
|
|
7554
7624
|
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
7625
|
if (t3 && t3.includes("T")) {
|
|
7556
7626
|
let e6 = t3.split("T");
|
|
7557
7627
|
_2 = e6[0], v2 = e6[1].substring(0, 5);
|
|
7558
7628
|
}
|
|
7559
|
-
|
|
7560
|
-
|
|
7629
|
+
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, onRefresh: async (e6) => {
|
|
7630
|
+
gy == null || gy.setBusy(true), ay.removeAttribute("hidden"), oy.setAttribute("hidden", "");
|
|
7561
7631
|
try {
|
|
7562
7632
|
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 && (
|
|
7633
|
+
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]));
|
|
7634
|
+
s3 ? ($ = s3, s3.house_system && (hy = s3.house_system), by(s3)) : $ && (ay.setAttribute("hidden", ""), oy.removeAttribute("hidden"));
|
|
7565
7635
|
} catch (e7) {
|
|
7566
|
-
console.error("[ChartWheel] Recalculate failed or timed out:", e7), $ && (
|
|
7636
|
+
console.error("[ChartWheel] Recalculate failed or timed out:", e7), $ && (ay.setAttribute("hidden", ""), oy.removeAttribute("hidden"));
|
|
7567
7637
|
} finally {
|
|
7568
|
-
|
|
7638
|
+
gy == null || gy.setBusy(false);
|
|
7569
7639
|
}
|
|
7570
7640
|
} });
|
|
7571
7641
|
}
|
|
7572
|
-
|
|
7642
|
+
by(n2);
|
|
7573
7643
|
};
|
|
7574
|
-
function
|
|
7644
|
+
function by(e4) {
|
|
7575
7645
|
var t2, n2, r2, i2, a2, o2, s2;
|
|
7576
|
-
|
|
7577
|
-
let c2 =
|
|
7578
|
-
c2.length > 0 &&
|
|
7646
|
+
wy = null, ay.setAttribute("hidden", ""), oy.removeAttribute("hidden"), py.removeAttribute("hidden"), ly.removeAttribute("hidden"), Fv(oy, e4, My, Ny, Py, zy, vy ? Fy() : void 0), uv(yy), Rv(ly, hy, By), xy(e4), Zv("chart-wheel", oy);
|
|
7647
|
+
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;
|
|
7648
|
+
c2.length > 0 && Cy(c2, u2), Ty(iv(u2, c2), c2, l2), Ay();
|
|
7579
7649
|
let d2 = document.getElementById("cw-action-bar");
|
|
7580
7650
|
if (!d2) {
|
|
7581
7651
|
d2 = document.createElement("div"), d2.id = "cw-action-bar", d2.className = "hd-action-bar";
|
|
@@ -7586,14 +7656,14 @@ function py(e4) {
|
|
|
7586
7656
|
(f2 = document.getElementById("app")) == null || f2.prepend(d2);
|
|
7587
7657
|
}
|
|
7588
7658
|
}
|
|
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
|
|
7659
|
+
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 Ly()), (s2 = document.getElementById("cw-questions-btn")) == null || s2.addEventListener("click", () => void Ry());
|
|
7590
7660
|
}
|
|
7591
|
-
function
|
|
7661
|
+
function xy(e4) {
|
|
7592
7662
|
var t2, n2, r2, i2, a2, o2, s2, c2, l2, u2;
|
|
7593
|
-
if (!
|
|
7663
|
+
if (!sy) return;
|
|
7594
7664
|
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 =
|
|
7665
|
+
hy.charAt(0).toUpperCase() + hy.slice(1);
|
|
7666
|
+
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
7667
|
try {
|
|
7598
7668
|
if (f2 && f2.includes("T")) {
|
|
7599
7669
|
let e5 = new Date(f2), t3 = m2 ? { timeZone: m2 } : {};
|
|
@@ -7603,14 +7673,14 @@ function my(e4) {
|
|
|
7603
7673
|
}
|
|
7604
7674
|
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
7675
|
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
|
-
|
|
7676
|
+
sy.setAttribute("hidden", "");
|
|
7607
7677
|
return;
|
|
7608
7678
|
}
|
|
7609
|
-
|
|
7679
|
+
sy.innerHTML = b2.join(""), sy.removeAttribute("hidden");
|
|
7610
7680
|
}
|
|
7611
|
-
var
|
|
7612
|
-
function
|
|
7613
|
-
if (!
|
|
7681
|
+
var Sy = /* @__PURE__ */ new Set(["mean_lilith", "lilith", "true_lilith", "ceres", "juno", "vesta", "pallas", "pholus", "vertex", "part_of_fortune", "part of fortune", "eris", "sedna"]);
|
|
7682
|
+
function Cy(e4, t2) {
|
|
7683
|
+
if (!fy || e4.length === 0) return;
|
|
7614
7684
|
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
7685
|
let r3 = n2.indexOf(e5.name.toLowerCase()), i3 = n2.indexOf(t3.name.toLowerCase());
|
|
7616
7686
|
return r3 !== -1 && i3 !== -1 ? r3 - i3 : r3 === -1 ? i3 === -1 ? e5.name.localeCompare(t3.name) : 1 : -1;
|
|
@@ -7621,15 +7691,15 @@ function gy(e4, t2) {
|
|
|
7621
7691
|
}
|
|
7622
7692
|
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
7693
|
var t3, n3, r3, a3;
|
|
7624
|
-
let o3 = e5.name.toLowerCase(), l3 = (t3 =
|
|
7694
|
+
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), f2 = Math.floor((e5.longitude % 360 + 360) % 360 % 1 * 60), p2 = Sy.has(o3), m2 = e5.retrograde ? '<span class="retro-mark">\u211E</span>' : "", h2 = (r3 = i2[o3]) == null ? 0 : r3;
|
|
7625
7695
|
return '<tr class="'.concat(p2 ? "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(f2).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>");
|
|
7626
7696
|
}).join("");
|
|
7627
|
-
|
|
7628
|
-
let u2 =
|
|
7697
|
+
fy.innerHTML = '\n <button class="overview-toggle" aria-expanded="false">\n <span class="overview-chevron">\u25B6</span>\n Planet Positions ('.concat(r2.length, ')\n </button>\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");
|
|
7698
|
+
let u2 = fy.querySelector(".overview-toggle"), d2 = fy.querySelector(".overview-body");
|
|
7629
7699
|
u2 == null || u2.addEventListener("click", () => {
|
|
7630
7700
|
let e5 = u2.getAttribute("aria-expanded") === "true";
|
|
7631
7701
|
u2.setAttribute("aria-expanded", e5 ? "false" : "true"), d2.classList.toggle("open", !e5);
|
|
7632
|
-
}),
|
|
7702
|
+
}), fy.querySelectorAll("tbody tr").forEach((e5) => {
|
|
7633
7703
|
var t3;
|
|
7634
7704
|
let n3 = (t3 = e5.dataset.planet) == null ? "" : t3;
|
|
7635
7705
|
n3 && (e5.addEventListener("mouseenter", () => {
|
|
@@ -7641,7 +7711,7 @@ function gy(e4, t2) {
|
|
|
7641
7711
|
let t4 = document.querySelector("svg");
|
|
7642
7712
|
t4 && (t4.querySelectorAll(".planet-glyph-group").forEach((e6) => {
|
|
7643
7713
|
var t5;
|
|
7644
|
-
let n4 =
|
|
7714
|
+
let n4 = Sy.has((t5 = e6.dataset.planet) == null ? "" : t5);
|
|
7645
7715
|
e6.style.opacity = n4 ? "0.65" : "1";
|
|
7646
7716
|
}), e5.classList.remove("active-row"));
|
|
7647
7717
|
}), e5.addEventListener("click", () => {
|
|
@@ -7652,26 +7722,26 @@ function gy(e4, t2) {
|
|
|
7652
7722
|
}));
|
|
7653
7723
|
});
|
|
7654
7724
|
}
|
|
7655
|
-
var
|
|
7656
|
-
function
|
|
7657
|
-
if (!
|
|
7725
|
+
var wy = null;
|
|
7726
|
+
function Ty(e4, t2, n2) {
|
|
7727
|
+
if (!uy) return;
|
|
7658
7728
|
if (e4.length === 0) {
|
|
7659
|
-
|
|
7729
|
+
uy.setAttribute("hidden", ""), uy.innerHTML = "";
|
|
7660
7730
|
return;
|
|
7661
7731
|
}
|
|
7662
7732
|
let r2 = { "T-Square": "#e08a52", "Grand Trine": "#52a8e0", "Grand Cross": "#e05252", Stellium: "#9a7fd4", Yod: "#52c07a", Kite: "#c0b052" };
|
|
7663
|
-
if (
|
|
7733
|
+
if (uy.innerHTML = '\n <span class="patterns-label">Patterns:</span>\n '.concat(e4.map((e5, t3) => {
|
|
7664
7734
|
var n3;
|
|
7665
7735
|
let i2 = (n3 = r2[e5.name]) == null ? "#888" : n3;
|
|
7666
7736
|
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 "),
|
|
7737
|
+
}).join(""), "\n "), uy.removeAttribute("hidden"), !uy.querySelector(".pattern-ask-claude-btn")) {
|
|
7668
7738
|
let t3 = document.createElement("button");
|
|
7669
|
-
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none",
|
|
7739
|
+
t3.className = "pattern-ask-claude-btn", t3.textContent = "\u2728 Ask Claude", t3.style.display = "none", uy.appendChild(t3), t3.addEventListener("click", () => {
|
|
7670
7740
|
var n3;
|
|
7671
|
-
let r3 =
|
|
7741
|
+
let r3 = wy;
|
|
7672
7742
|
if (r3 === null) return;
|
|
7673
7743
|
let i2 = e4[r3];
|
|
7674
|
-
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026",
|
|
7744
|
+
t3.disabled = true, t3.textContent = "\u23F3 Sending\u2026", zy({ type: "pattern", data: { name: i2.name, planets: i2.planets, description: (n3 = i2.description) == null ? "" : n3 } }).then(() => {
|
|
7675
7745
|
t3.textContent = "\u2713 Sent", setTimeout(() => {
|
|
7676
7746
|
t3.textContent = "\u2728 Ask Claude", t3.disabled = false;
|
|
7677
7747
|
}, 2500);
|
|
@@ -7680,28 +7750,28 @@ function vy(e4, t2, n2) {
|
|
|
7680
7750
|
});
|
|
7681
7751
|
});
|
|
7682
7752
|
}
|
|
7683
|
-
|
|
7753
|
+
uy.querySelectorAll(".pattern-pill").forEach((r3) => {
|
|
7684
7754
|
r3.addEventListener("click", () => {
|
|
7685
7755
|
var i2;
|
|
7686
|
-
let a2 = Number(r3.dataset.idx), o2 = e4[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 =
|
|
7687
|
-
|
|
7756
|
+
let a2 = Number(r3.dataset.idx), o2 = e4[a2], s2 = (i2 = r3.dataset.color) == null ? "#888" : i2, c2 = uy.querySelector(".pattern-ask-claude-btn");
|
|
7757
|
+
wy === a2 ? (wy = null, Ov(), c2 && (c2.style.display = "none"), uy.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7688
7758
|
var t3;
|
|
7689
7759
|
e5.classList.remove("active");
|
|
7690
7760
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7691
7761
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7692
|
-
})) : (
|
|
7762
|
+
})) : (wy = a2, uy.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7693
7763
|
var t3;
|
|
7694
7764
|
e5.classList.remove("active");
|
|
7695
7765
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7696
7766
|
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,
|
|
7767
|
+
}), 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
7768
|
});
|
|
7699
7769
|
});
|
|
7700
7770
|
}
|
|
7701
|
-
var
|
|
7702
|
-
function
|
|
7771
|
+
var Ey = [{ label: "Tight", maxOrb: 4 }, { label: "Standard", maxOrb: 8 }, { label: "Wide", maxOrb: 12 }], Dy = true, Oy = 8, ky = "true";
|
|
7772
|
+
function Ay() {
|
|
7703
7773
|
var e4;
|
|
7704
|
-
if (!
|
|
7774
|
+
if (!dy) return;
|
|
7705
7775
|
let t2 = (() => {
|
|
7706
7776
|
let e5 = $ == null ? void 0 : $.planets, t3 = [];
|
|
7707
7777
|
Array.isArray(e5) ? e5.forEach((e6) => {
|
|
@@ -7711,101 +7781,101 @@ function Cy() {
|
|
|
7711
7781
|
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
7782
|
return n3 && r3;
|
|
7713
7783
|
})();
|
|
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 =
|
|
7784
|
+
B_(ky);
|
|
7785
|
+
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(ky === "mean" ? " active" : "", '" data-node="mean" title="Mean lunar node (averaged orbit)">Mean</button>\n <button class="orb-preset-btn node-btn').concat(ky === "true" ? " active" : "", '" data-node="true" title="True (osculating) lunar node">True</button>\n </div>') : "";
|
|
7786
|
+
Dy = 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(Ey.map((e5) => '<button class="orb-preset-btn'.concat(e5.maxOrb === Oy ? " active" : "", '" data-orb="').concat(e5.maxOrb, '" title="').concat(e5.label, ' orbs">').concat(e5.label, "</button>")).join(""), "\n </div>").concat(n2, "\n </div>\n ");
|
|
7787
|
+
let r2 = H_($ == null ? void 0 : $.planets), i2 = /* @__PURE__ */ new Set(), a2 = [];
|
|
7718
7788
|
for (let e5 of r2) {
|
|
7719
7789
|
let t3 = e5.name.toLowerCase();
|
|
7720
7790
|
if (i2.has(t3)) continue;
|
|
7721
7791
|
i2.add(t3);
|
|
7722
|
-
let n3 =
|
|
7723
|
-
n3 && a2.push({ glyph: n3, label:
|
|
7792
|
+
let n3 = D_[t3];
|
|
7793
|
+
n3 && a2.push({ glyph: n3, label: Vv(e5.name) });
|
|
7724
7794
|
}
|
|
7725
7795
|
let o2 = [...new Set(((e4 = $ == null ? void 0 : $.aspects) == null ? [] : e4).map((e5) => {
|
|
7726
7796
|
var t3;
|
|
7727
7797
|
return ((t3 = e5.type) == null ? "" : t3).toLowerCase();
|
|
7728
7798
|
}).filter(Boolean))].map((e5) => {
|
|
7729
7799
|
var t3;
|
|
7730
|
-
return { glyph: (t3 =
|
|
7800
|
+
return { glyph: (t3 = A_[e5]) == null ? "" : t3, label: Vv(e5) };
|
|
7731
7801
|
}).filter((e5) => e5.glyph);
|
|
7732
|
-
|
|
7802
|
+
dy.insertAdjacentHTML("beforeend", Hv([{ title: "Bodies", items: a2 }, { title: "Aspects", items: o2 }])), dy.removeAttribute("hidden");
|
|
7733
7803
|
let s2 = document.getElementById("cw-aspect-vis-toggle");
|
|
7734
7804
|
s2 == null || s2.addEventListener("click", () => {
|
|
7735
|
-
|
|
7736
|
-
}),
|
|
7805
|
+
Dy = !Dy, Nv(Dy), s2.classList.toggle("active", Dy), s2.querySelector(".toggle-icon").textContent = Dy ? "\u2295" : "\u2296";
|
|
7806
|
+
}), dy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e5) => {
|
|
7737
7807
|
e5.addEventListener("click", () => {
|
|
7738
7808
|
var t3;
|
|
7739
7809
|
let n3 = parseFloat((t3 = e5.dataset.orb) == null ? "8" : t3);
|
|
7740
|
-
n3 !==
|
|
7810
|
+
n3 !== Oy && (Oy = n3, dy.querySelectorAll(".orb-preset-btn:not(.node-btn)").forEach((e6) => e6.classList.toggle("active", e6.dataset.orb === String(n3))), Pv(n3));
|
|
7741
7811
|
});
|
|
7742
|
-
}),
|
|
7812
|
+
}), dy.querySelectorAll(".node-btn").forEach((e5) => {
|
|
7743
7813
|
e5.addEventListener("click", () => {
|
|
7744
7814
|
let t3 = e5.dataset.node === "mean" ? "mean" : "true";
|
|
7745
|
-
t3 ===
|
|
7815
|
+
t3 === ky || !$ || (ky = t3, B_(t3), by($));
|
|
7746
7816
|
});
|
|
7747
7817
|
});
|
|
7748
7818
|
}
|
|
7749
|
-
async function
|
|
7750
|
-
if (
|
|
7819
|
+
async function jy(e4, t2) {
|
|
7820
|
+
if (_y) try {
|
|
7751
7821
|
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
|
|
7822
|
+
await my.updateModelContext({ content: [{ type: "text", text: n2 }] });
|
|
7753
7823
|
} catch (e5) {
|
|
7754
7824
|
console.warn("[ChartWheel] \u26A0\uFE0F updateModelContext failed:", e5);
|
|
7755
7825
|
}
|
|
7756
7826
|
}
|
|
7757
|
-
async function
|
|
7827
|
+
async function My(e4) {
|
|
7758
7828
|
var t2, n2, r2, i2;
|
|
7759
|
-
|
|
7829
|
+
wy = null, uy == null || uy.querySelectorAll(".pattern-pill").forEach((e5) => {
|
|
7760
7830
|
var t3;
|
|
7761
7831
|
e5.classList.remove("active");
|
|
7762
7832
|
let n3 = (t3 = e5.dataset.color) == null ? "#888" : t3;
|
|
7763
7833
|
e5.style.color = n3, e5.style.borderColor = n3, e5.style.background = "transparent";
|
|
7764
|
-
}), await
|
|
7834
|
+
}), await jy("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
7835
|
}
|
|
7766
|
-
async function
|
|
7836
|
+
async function Ny(e4) {
|
|
7767
7837
|
var t2, n2;
|
|
7768
|
-
await
|
|
7838
|
+
await jy("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
7839
|
}
|
|
7770
|
-
async function
|
|
7840
|
+
async function Py(e4) {
|
|
7771
7841
|
var t2, n2, r2, i2;
|
|
7772
|
-
await
|
|
7842
|
+
await jy("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
7843
|
}
|
|
7774
|
-
function
|
|
7844
|
+
function Fy() {
|
|
7775
7845
|
return async (e4) => {
|
|
7776
7846
|
try {
|
|
7777
7847
|
var t2, n2;
|
|
7778
|
-
let r2 = await
|
|
7848
|
+
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
7849
|
return (t2 = r2 == null || (n2 = r2.content) == null ? void 0 : n2.text) == null ? null : t2;
|
|
7780
7850
|
} catch (e5) {
|
|
7781
7851
|
return console.error("[ChartWheel] Sampling failed:", e5), "Unable to load interpretation right now.";
|
|
7782
7852
|
}
|
|
7783
7853
|
};
|
|
7784
7854
|
}
|
|
7785
|
-
async function
|
|
7855
|
+
async function Iy(e4) {
|
|
7786
7856
|
try {
|
|
7787
|
-
(await
|
|
7857
|
+
(await my.sendMessage({ role: "user", content: [{ type: "text", text: e4 }] })).isError && console.error("[ChartWheel] Host rejected sendMessage");
|
|
7788
7858
|
} catch (e5) {
|
|
7789
7859
|
console.error("[ChartWheel] sendMessage failed:", e5);
|
|
7790
7860
|
}
|
|
7791
7861
|
}
|
|
7792
|
-
async function
|
|
7862
|
+
async function Ly() {
|
|
7793
7863
|
var e4, t2, n2, r2;
|
|
7794
7864
|
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 =
|
|
7865
|
+
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
7866
|
var t3;
|
|
7797
7867
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e5.type) == null ? "" : t3);
|
|
7798
7868
|
}).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
|
|
7869
|
+
await Iy("Please give a complete natal chart interpretation for ".concat(o2, ".\n\nKey planet placements:\n").concat(s2.slice(0, 5).map((e5) => {
|
|
7800
7870
|
var t3;
|
|
7801
7871
|
return " \u2022 ".concat(e5.name, " in ").concat((t3 = e5.sign) == null ? "?" : t3).concat(e5.house ? ", House ".concat(e5.house) : "").concat(e5.retrograde ? " \u211E" : "");
|
|
7802
7872
|
}).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
7873
|
}
|
|
7804
|
-
async function
|
|
7874
|
+
async function Ry() {
|
|
7805
7875
|
var e4, t2, n2, r2;
|
|
7806
7876
|
if (!$) return;
|
|
7807
7877
|
let i2 = $, a2 = (e4 = i2._birth_params) == null ? {} : e4;
|
|
7808
|
-
await
|
|
7878
|
+
await Iy("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
7879
|
var t3;
|
|
7810
7880
|
return "".concat(e5.name, " in ").concat((t3 = e5.sign) == null ? "?" : t3).concat(e5.house ? " H".concat(e5.house) : "");
|
|
7811
7881
|
}).join(", ") || "unknown placements", ". Major aspects: ").concat(((r2 = i2.aspects) == null ? [] : r2).filter((e5) => {
|
|
@@ -7813,7 +7883,7 @@ async function jy() {
|
|
|
7813
7883
|
return ["conjunction", "opposition", "trine", "square", "sextile"].includes((t3 = e5.type) == null ? "" : t3);
|
|
7814
7884
|
}).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
7885
|
}
|
|
7816
|
-
async function
|
|
7886
|
+
async function zy(e4) {
|
|
7817
7887
|
let t2 = "";
|
|
7818
7888
|
if (e4.type === "planet") {
|
|
7819
7889
|
var n2;
|
|
@@ -7842,47 +7912,47 @@ async function My(e4) {
|
|
|
7842
7912
|
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
7913
|
}
|
|
7844
7914
|
if (t2) try {
|
|
7845
|
-
let e5 = await
|
|
7915
|
+
let e5 = await my.sendMessage({ role: "user", content: [{ type: "text", text: t2 }] });
|
|
7846
7916
|
if (e5.isError) throw console.error("[ChartWheel] \u274C Host rejected sendMessage:", e5), Error("Host rejected message");
|
|
7847
7917
|
} catch (e5) {
|
|
7848
7918
|
throw console.error("[ChartWheel] \u274C sendMessage failed:", e5), e5;
|
|
7849
7919
|
}
|
|
7850
7920
|
}
|
|
7851
|
-
async function
|
|
7921
|
+
async function By(e4) {
|
|
7852
7922
|
if (!($ != null && $._birth_params)) {
|
|
7853
|
-
|
|
7923
|
+
zv(ly, hy);
|
|
7854
7924
|
return;
|
|
7855
7925
|
}
|
|
7856
7926
|
try {
|
|
7857
7927
|
var t2, n2, r2, i2;
|
|
7858
|
-
let a2 =
|
|
7859
|
-
a2 ? ($ = a2,
|
|
7928
|
+
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 } }));
|
|
7929
|
+
a2 ? ($ = a2, hy = e4, by(a2)) : zv(ly, hy);
|
|
7860
7930
|
} catch (e5) {
|
|
7861
|
-
console.error("[Chart] Recalculate failed:", e5),
|
|
7931
|
+
console.error("[Chart] Recalculate failed:", e5), zv(ly, hy);
|
|
7862
7932
|
}
|
|
7863
7933
|
}
|
|
7864
|
-
var
|
|
7865
|
-
function
|
|
7866
|
-
|
|
7934
|
+
var Vy;
|
|
7935
|
+
function Hy() {
|
|
7936
|
+
Vy && (clearTimeout(Vy), Vy = void 0);
|
|
7867
7937
|
}
|
|
7868
|
-
function
|
|
7869
|
-
|
|
7938
|
+
function Uy(e4, t2) {
|
|
7939
|
+
Hy(), ay.setAttribute("hidden", ""), ey({ container: oy, message: e4, onRetry: t2 });
|
|
7870
7940
|
}
|
|
7871
|
-
function
|
|
7872
|
-
|
|
7873
|
-
|
|
7874
|
-
}, 3e4),
|
|
7941
|
+
function Wy() {
|
|
7942
|
+
Hy(), oy.setAttribute("hidden", ""), ay.removeAttribute("hidden"), Vy = setTimeout(() => {
|
|
7943
|
+
Uy("The chart didn't load. Tap to try again.", Wy);
|
|
7944
|
+
}, 3e4), my.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the chart wheel." }] }).catch(() => {
|
|
7875
7945
|
});
|
|
7876
7946
|
}
|
|
7877
|
-
|
|
7878
|
-
|
|
7947
|
+
ny(my, { loadingEl: ay, contentEl: oy, statusFn: yy, paramControls: gy }), Vy = setTimeout(() => {
|
|
7948
|
+
Uy("Chart data is taking longer than expected.", Wy);
|
|
7879
7949
|
}, 3e4), (async () => {
|
|
7880
7950
|
try {
|
|
7881
|
-
await
|
|
7882
|
-
let e4 =
|
|
7883
|
-
|
|
7951
|
+
await my.connect();
|
|
7952
|
+
let e4 = my.getHostCapabilities();
|
|
7953
|
+
_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
7954
|
} catch (e4) {
|
|
7885
|
-
console.error("[ChartWheel] \u274C app.connect() FAILED:", e4),
|
|
7955
|
+
console.error("[ChartWheel] \u274C app.connect() FAILED:", e4), Uy("The chart didn't load. Tap to try again.", Wy);
|
|
7886
7956
|
}
|
|
7887
7957
|
})();
|
|
7888
7958
|
</script>
|