@openephemeris/mcp-server 4.18.0 → 4.19.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/index.js +8 -110
- package/dist/server-sse.js +7 -114
- package/dist/tools/apps/bazi-app.d.ts +1 -1
- package/dist/tools/apps/bazi-app.js +3 -2
- package/dist/tools/apps/bi-wheel-app.d.ts +1 -1
- package/dist/tools/apps/bi-wheel-app.js +3 -2
- package/dist/tools/apps/bodygraph-app.d.ts +7 -4
- package/dist/tools/apps/bodygraph-app.js +13 -5
- package/dist/tools/apps/chart-wheel-app.d.ts +1 -1
- package/dist/tools/apps/chart-wheel-app.js +3 -2
- package/dist/tools/apps/moon-phase-app.d.ts +1 -1
- package/dist/tools/apps/moon-phase-app.js +3 -2
- package/dist/tools/apps/transit-timeline-app.d.ts +1 -1
- package/dist/tools/apps/transit-timeline-app.js +3 -2
- package/dist/tools/apps/ui-resource.d.ts +43 -0
- package/dist/tools/apps/ui-resource.js +66 -0
- package/dist/tools/apps/ui-resources.d.ts +22 -0
- package/dist/tools/apps/ui-resources.js +105 -0
- package/dist/tools/apps/vedic-chart-app.d.ts +1 -1
- package/dist/tools/apps/vedic-chart-app.js +3 -2
- package/dist/ui/bazi.html +893 -856
- package/dist/ui/bi-wheel.html +555 -518
- package/dist/ui/bodygraph.html +433 -337
- package/dist/ui/chart-wheel.html +632 -595
- package/dist/ui/moon-phase.html +190 -155
- package/dist/ui/transit-timeline.html +865 -830
- package/dist/ui/vedic-chart.html +252 -215
- package/package.json +2 -1
package/dist/ui/vedic-chart.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'" />
|
|
4
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data: https:; connect-src 'none'" />
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<meta name="color-scheme" content="dark light" />
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<title>Vedic Chart Explorer</title>
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
<style>:root{--bg:#010102;--surface:#030408;--surface-2:#080b11;--border:#13161d;--border-strong:#242933;--text:#e2e4e9;--text-secondary:#a1a5ab;--muted:#84868b;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px rgba(204,156,66,.15), 0 0 0 1px rgba(204,156,66,.2)}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00306656 .00431968 .00888397);--surface:color(display-p3 .013072 .016989 .0298495);--surface-2:color(display-p3 .0345774 .0431759 .0653236);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .144788 .159634 .196542);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .635245 .644982 .668335);--muted:color(display-p3 .518127 .525635 .543633);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px color(display-p3 .76996 .617341 .321369/.15), 0 0 0 1px color(display-p3 .76996 .617341 .321369/.2)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.302122% .0219196 -.522962);--surface:lab(1.18159% .0276566 -1.4848);--surface-2:lab(3.00584% .0228807 -3.15676);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3712% -.0768155 -7.37782);--text:lab(90.6942% -.142366 -2.26941);--text-secondary:lab(67.4758% -.215352 -3.76978);--muted:lab(55.8848% -.174642 -3.01716);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21132 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px lab(67.5798% 11.9379 52.333/.15), 0 0 0 1px lab(67.5798% 11.9379 52.333/.2)}}:root[data-theme=light]{--bg:#f4f5f8;--surface:#fbfcfe;--surface-2:#eceef3;--border:#d5d7dd;--border-strong:#babec6;--text:#181b1f;--text-secondary:#4a4d54;--muted:#606369;--gold:#8a6000;--gold-dim:#967c4f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--bg:color(display-p3 .956515 .960735 .970805);--surface:color(display-p3 .98376 .986943 .994535);--surface-2:color(display-p3 .928401 .934691 .949715);--border:color(display-p3 .836244 .844458 .864107);--border-strong:color(display-p3 .731542 .743532 .772301);--text:color(display-p3 .096883 .103987 .12134);--text-secondary:color(display-p3 .291758 .301882 .326359);--muted:color(display-p3 .379924 .388781 .410092);--gold:color(display-p3 .524671 .380491 .0387678);--gold-dim:color(display-p3 .572756 .489268 .332751)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg:lab(96.503% -.0977516 -1.51461);--surface:lab(98.8273% -.0742674 -1.13657);--surface-2:lab(94.1743% -.142753 -2.26963);--border:lab(86.0453% -.183702 -3.02233);--border-strong:lab(76.7468% -.254452 -4.52154);--text:lab(9.4703% -.119448 -3.722);--text-secondary:lab(32.6639% -.205323 -4.4957);--muted:lab(41.9548% -.197023 -3.7598);--gold:lab(44.2758% 13.6718 62.9124);--gold-dim:lab(53.685% 6.10271 28.558)}}:root[data-theme=light] body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}html,body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--bg);height:100%;color:var(--text);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;gap:8px;min-height:0;padding:8px 12px;display:flex}#loading-state{min-height:300px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}#loading-state p{letter-spacing:.06em;text-transform:uppercase;font-size:11px}.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}}.vedic-header{justify-content:space-between;align-items:center;width:100%;max-width:640px;margin:0 auto;padding:2px 2px 0;display:flex}.vedic-title{letter-spacing:.02em;color:var(--text);font-size:14px;font-weight:700}.vedic-ayanamsa-badge{letter-spacing:.04em;color:var(--gold);background:var(--gold-subtle);border:1px solid var(--gold-glow);border-radius:var(--radius-pill);padding:3px 10px;font-size:10px;font-weight:600}#vedic-container{border-radius:var(--radius);border:1px solid var(--border-strong);width:100%;max-width:640px;box-shadow:var(--shadow-gold);background:#010102;background:color(display-p3 .00306656 .00431968 .00888397);background:lab(.302122% .0219196 -.522962);margin:0 auto;transition:box-shadow .3s;position:relative;overflow:visible}#vedic-container:hover{box-shadow:0 0 40px rgba(204,156,66,.22),0 0 0 1px rgba(204,156,66,.3);box-shadow:0 0 40px color(display-p3 .76996 .617341 .321369/.22),0 0 0 1px color(display-p3 .76996 .617341 .321369/.3);box-shadow:0 0 40px lab(67.5798% 11.9379 52.333/.22),0 0 0 1px lab(67.5798% 11.9379 52.333/.3)}#vedic-container svg{aspect-ratio:1;width:100%;height:auto;max-height:min(62vh,560px);display:block}.vedic-cell{cursor:pointer;transition:filter .16s}.vedic-cell:hover{filter:brightness(1.18)drop-shadow(0 0 6px rgba(204,156,66,.35));filter:brightness(1.18)drop-shadow(0 0 6px color(display-p3 .76996 .617341 .321369/.35));filter:brightness(1.18)drop-shadow(0 0 6px lab(67.5798% 11.9379 52.333/.35));outline:none}.vedic-cell:focus-visible{filter:brightness(1.18)drop-shadow(0 0 6px rgba(204,156,66,.35));filter:brightness(1.18)drop-shadow(0 0 6px color(display-p3 .76996 .617341 .321369/.35));filter:brightness(1.18)drop-shadow(0 0 6px lab(67.5798% 11.9379 52.333/.35));outline:none}.vedic-cell:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}#info-panel{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);grid-template-columns:1fr 1fr;gap:6px 12px;width:100%;max-width:640px;max-height:220px;margin:0 auto;padding:10px 14px;display:grid;overflow-y:auto}.info-row{flex-direction:column;gap:1px;display:flex}.info-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:9px;font-weight:700}.info-value{color:var(--text);font-size:12px;font-weight:500}@media (max-width:420px){#app{gap:8px;padding:8px}#info-panel{grid-template-columns:1fr}}.error-state{min-height:200px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.error-icon{opacity:.5;font-size:24px}.error-retry-btn{border:1px solid var(--border-strong);color:var(--gold);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(122,128,141,.12);background:color(display-p3 .483965 .502358 .546955/.12);background:lab(53.5049% -.313222 -7.47857/.12)}.chart-status{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--radius-pill);color:var(--gold);letter-spacing:.04em;z-index:900;opacity:0;pointer-events:none;background:rgba(5,7,13,.92);background:color(display-p3 .0216592 .0280553 .0483601/.92);background:lab(1.95095% .0425801 -2.41514/.92);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);max-height:0;padding:5px 18px;font-size:11px;font-weight:600;transition:max-height .24s cubic-bezier(.16,1,.3,1),opacity .24s,transform .24s cubic-bezier(.16,1,.3,1);position:fixed;top:10px;left:50%;overflow:hidden;transform:translate(-50%)translateY(-10px);box-shadow:0 4px 20px rgba(0,0,0,.5),0 0 0 1px rgba(204,156,66,.08);box-shadow:0 4px 20px color(display-p3 0 0 0/.5),0 0 0 1px color(display-p3 .76996 .617341 .321369/.08);box-shadow:0 4px 20px lab(0% 0 0/.5),0 0 0 1px lab(67.5798% 11.9379 52.333/.08)}.chart-status.visible{opacity:1;max-height:44px;transform:translate(-50%)translateY(0)}.vedic-popup{background:var(--surface-2);border:1px solid var(--border-strong);z-index:1000;opacity:0;pointer-events:none;border-radius:12px;width:min(320px,92vw);padding:14px 16px 12px;transition:opacity .2s cubic-bezier(.16,1,.3,1);position:fixed;box-shadow:0 12px 48px rgba(0,0,0,.7),0 0 0 1px rgba(204,156,66,.15);box-shadow:0 12px 48px color(display-p3 0 0 0/.7),0 0 0 1px color(display-p3 .76996 .617341 .321369/.15);box-shadow:0 12px 48px lab(0% 0 0/.7),0 0 0 1px lab(67.5798% 11.9379 52.333/.15)}.vedic-popup.visible{opacity:1;pointer-events:all}.vedic-popup-header{align-items:flex-start;gap:10px;display:flex}.vedic-popup-title{color:var(--text);flex:1;font-size:13px;font-weight:700}.vedic-popup-sub{color:var(--text-secondary);margin-top:2px;font-size:11px;font-weight:400}.vedic-popup-close{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .12s}.vedic-popup-close:hover{color:var(--text)}.ask-claude-btn{border-radius:var(--radius-sm);width:100%;color:var(--gold);font:inherit;letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding:9px 16px;font-size:12px;font-weight:600;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.ask-claude-btn:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65);box-shadow:0 0 0 3px rgba(204,156,66,.12);box-shadow:0 0 0 3px color(display-p3 .76996 .617341 .321369/.12);box-shadow:0 0 0 3px lab(67.5798% 11.9379 52.333/.12)}.ask-claude-btn:disabled{opacity:.45;cursor:not-allowed}.ask-claude-btn.sending{opacity:.8;cursor:wait;pointer-events:none}.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)}.vedic-action-bar{flex-wrap:wrap;gap:8px;padding:10px 16px 6px;display:flex}.action-btn{color:var(--gold);letter-spacing:.02em;cursor:pointer;white-space:nowrap;background:rgba(204,156,66,.08);background:color(display-p3 .76996 .617341 .321369/.08);background:lab(67.5798% 11.9379 52.333/.08);border:1px solid rgba(204,156,66,.3);border:1px solid color(display-p3 .76996 .617341 .321369/.3);border:1px solid lab(67.5798% 11.9379 52.333/.3);border-radius:8px;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s,transform .1s;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,.5);border-color:color(display-p3 .76996 .617341 .321369/.5);border-color:lab(67.5798% 11.9379 52.333/.5);transform:translateY(-1px)}.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);transform:translateY(0)}.action-btn--primary{background:linear-gradient(135deg,rgba(204,156,66,.2),rgba(166,117,55,.25));background:linear-gradient(135deg,color(display-p3 .76996 .617341 .321369/.2),color(display-p3 .622862 .466276 .257278/.25));background:linear-gradient(135deg,lab(67.5798% 11.9379 52.333/.2),lab(53.4364% 15.3976 41.3855/.25));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:linear-gradient(135deg,rgba(204,156,66,.3),rgba(166,117,55,.35));background:linear-gradient(135deg,color(display-p3 .76996 .617341 .321369/.3),color(display-p3 .622862 .466276 .257278/.35));background:linear-gradient(135deg,lab(67.5798% 11.9379 52.333/.3),lab(53.4364% 15.3976 41.3855/.35))}.tooltip{-webkit-backdrop-filter:blur(14px)saturate(1.6);backdrop-filter:blur(14px)saturate(1.6);border:1px solid var(--border-strong);border-radius:var(--radius);pointer-events:none;z-index:1000;opacity:0;background:rgba(7,9,14,.92);background:color(display-p3 .0286832 .0352525 .0537785/.92);background:lab(2.44746% .00379235 -2.33402/.92);max-width:220px;padding:8px 12px;font-size:12px;transition:opacity .12s;position:fixed;box-shadow:0 8px 32px rgba(0,0,0,.55);box-shadow:0 8px 32px color(display-p3 0 0 0/.55);box-shadow:0 8px 32px lab(0% 0 0/.55)}.tooltip.visible{opacity:1}.tooltip-title{color:var(--text);margin-bottom:2px;font-weight:700}.tooltip-detail{color:var(--text-secondary);line-height:1.4}.tooltip-hint{color:var(--gold-dim);letter-spacing:.03em;margin-top:4px;font-size:10px}.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:36px;height:36px;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:36px;height:36px}@media (max-width:480px){.pan-zoom-controls{gap:5px}.pan-btn,.pan-btn--fullscreen{background:color-mix(in oklab, var(--surface-2) 72%, transparent);-webkit-backdrop-filter:blur(6px);width:32px;height:32px;font-size:15px}.pan-btn.reset{width:32px;padding:0;font-size:0}.pan-btn.reset:before{content:"⟲";font-size:15px}}body.is-fullscreen{height:100vh;overflow:hidden}body.is-fullscreen #app{flex-direction:column;gap:0;width:100vw;max-width:100%;height:100vh;padding:0;display:flex;overflow:hidden}body.is-fullscreen #vedic-container{min-height:0;max-width:unset;width:100%;height:auto;box-shadow:none;background:0 0;border:none;flex:1;justify-content:center;align-items:center;margin:0;padding:16px 24px 0;display:flex}body.is-fullscreen #loading-state{flex:1;height:auto;min-height:0}body.is-fullscreen #vedic-container svg{width:auto;max-width:100%;height:100%;max-height:100%}body.is-fullscreen .pan-zoom-controls{top:16px;bottom:auto;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]{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)}#fs-bottom-bar [data-column]>*+*{border-top:1px solid var(--border);margin-top:4px;padding-top:8px}#fs-bottom-bar .vedic-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);border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);opacity:0;z-index:9999;pointer-events:none;box-shadow:var(--shadow-md);padding:8px 16px;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)}:root[data-theme=light] #vedic-container{background:var(--surface)}:root[data-theme=light] .chart-status,:root[data-theme=light] .tooltip{background:rgba(251,252,254,.92);background:color(display-p3 .98376 .986943 .994535/.92);background:lab(98.8273% -.0742674 -1.13657/.92)}:root[data-theme=light] #fs-bottom-bar{background:var(--surface-2)}:root[data-theme=light] .vedic-popup{background:var(--surface);border-color:var(--border-strong)}:root[data-theme=light] #info-panel{background:var(--surface);border-color:var(--border)}
|
|
13
|
+
<style>:root{--bg:#010102;--surface:#030408;--surface-2:#080b11;--border:#13161d;--border-strong:#242933;--text:#e2e4e9;--text-secondary:#a1a5ab;--muted:#84868b;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--oe-shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px rgba(204,156,66,.15), 0 0 0 1px rgba(204,156,66,.2);--font-ui:var(--font-sans,system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);--font-code:var(--font-mono,ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace);--oe-page-bg:var(--color-background-primary,var(--bg));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00306656 .00431968 .00888397);--surface:color(display-p3 .013072 .016989 .0298495);--surface-2:color(display-p3 .0345774 .0431759 .0653236);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .144788 .159634 .196542);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .635245 .644982 .668335);--muted:color(display-p3 .518127 .525635 .543633);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--oe-shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px color(display-p3 .76996 .617341 .321369/.15), 0 0 0 1px color(display-p3 .76996 .617341 .321369/.2)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.302122% .0219196 -.522962);--surface:lab(1.18159% .0276566 -1.4848);--surface-2:lab(3.00584% .0228807 -3.15676);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3712% -.0768155 -7.37782);--text:lab(90.6942% -.142366 -2.26941);--text-secondary:lab(67.4758% -.215352 -3.76978);--muted:lab(55.8848% -.174642 -3.01716);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21132 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--oe-shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px lab(67.5798% 11.9379 52.333/.15), 0 0 0 1px lab(67.5798% 11.9379 52.333/.2)}}:root[data-theme=light]{--bg:#f4f5f8;--surface:#fbfcfe;--surface-2:#eceef3;--border:#d5d7dd;--border-strong:#babec6;--text:#181b1f;--text-secondary:#4a4d54;--muted:#606369;--gold:#8a6000;--gold-dim:#967c4f;--gold-glow:rgba(141,95,0,.25);--gold-subtle:rgba(141,95,0,.07);--success:#007145;--error:#b1002b;--oe-shadow-md:0 4px 24px rgba(0,0,0,.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px rgba(141,95,0,.18), 0 0 0 1px rgba(141,95,0,.22);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--bg:color(display-p3 .956515 .960735 .970805);--surface:color(display-p3 .98376 .986943 .994535);--surface-2:color(display-p3 .928401 .934691 .949715);--border:color(display-p3 .836244 .844458 .864107);--border-strong:color(display-p3 .731542 .743532 .772301);--text:color(display-p3 .096883 .103987 .12134);--text-secondary:color(display-p3 .291758 .301882 .326359);--muted:color(display-p3 .379924 .388781 .410092);--gold:color(display-p3 .524671 .380491 .0387678);--gold-dim:color(display-p3 .572756 .489268 .332751);--gold-glow:color(display-p3 .542549 .371783 -.107551/.25);--gold-subtle:color(display-p3 .542549 .371783 -.107551/.07);--success:color(display-p3 -.0793084 .456092 .255685);--error:color(display-p3 .642198 .101724 .18242);--oe-shadow-md:0 4px 24px color(display-p3 0 0 0/.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px color(display-p3 .542549 .371783 -.107551/.18), 0 0 0 1px color(display-p3 .542549 .371783 -.107551/.22)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg:lab(96.503% -.0977516 -1.51461);--surface:lab(98.8273% -.0742674 -1.13657);--surface-2:lab(94.1743% -.142753 -2.26963);--border:lab(86.0453% -.183702 -3.02233);--border-strong:lab(76.7468% -.254452 -4.52154);--text:lab(9.4703% -.119448 -3.722);--text-secondary:lab(32.6639% -.205323 -4.4957);--muted:lab(41.9548% -.197023 -3.7598);--gold:lab(44.2758% 13.6718 62.9124);--gold-dim:lab(53.685% 6.10271 28.558);--gold-glow:lab(44.1995% 17.0662 84.3373/.25);--gold-subtle:lab(44.1995% 17.0662 84.3373/.07);--success:lab(41.7514% -55.3249 21.5039);--error:lab(37.5238% 64.2774 32.6097);--oe-shadow-md:0 4px 24px lab(0% 0 0/.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px lab(44.1995% 17.0662 84.3373/.18), 0 0 0 1px lab(44.1995% 17.0662 84.3373/.22)}}:root{--safe-top:0px;--safe-right:0px;--safe-bottom:0px;--safe-left:0px;--oe-host-h:var(--host-height,var(--host-max-height,640px));--oe-chart-max:clamp(260px, calc(var(--oe-host-h) * .72), 560px);--oe-chart-max-lg:clamp(280px, calc(var(--oe-host-h) * .8), 720px);--oe-drawer-max:clamp(160px, calc(var(--oe-host-h) * .4), 360px);--oe-scroll-max:clamp(240px, calc(var(--oe-host-h) * .7), 560px)}html,body{font-family:var(--font-ui)}body{background-color:var(--oe-page-bg)}.oe-pannable{touch-action:pan-y}body.is-fullscreen .oe-pannable{touch-action:none}.pan-zoom-controls [hidden],.pan-btn[hidden]{display:none!important}.fs-hint-banner{top:calc(12px + var(--safe-top));z-index:9999;border-radius:var(--radius-pill);border:1px solid color-mix(in oklab, var(--gold) 35%, transparent);background:color-mix(in oklab, var(--surface-2) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:calc(100% - 32px);color:var(--text);font:600 11px/1.4 var(--font-ui);letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;opacity:0;padding:6px 16px;transition:opacity .3s;position:fixed;left:50%;overflow:hidden;transform:translate(-50%)}.fs-hint-banner.visible{opacity:1}@media (prefers-reduced-motion:reduce){.fs-hint-banner{transition:none}}body.is-fullscreen{height:100vh;height:100dvh;overflow:hidden}body.is-fullscreen #app{width:100%;max-width:none;height:100%;min-height:0;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);flex-direction:column;gap:0;margin:0;display:flex;overflow:hidden}body.is-fullscreen #app:has(>#fs-bottom-bar){padding-bottom:0}body.is-fullscreen #app .oe-stage{aspect-ratio:auto;width:100%;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none;background:0 0;border:0;border-radius:0;flex:auto;justify-content:center;align-items:center;margin:0;padding:16px 24px 8px;display:flex;overflow:hidden}body.is-fullscreen #app .oe-stage>svg{width:auto;max-width:100%;height:100%;max-height:100%}body.is-fullscreen #app .oe-stage--doc{width:100%;max-width:880px;padding:20px 24px calc(16px + var(--safe-bottom));flex-direction:column;justify-content:flex-start;align-items:stretch;margin:0 auto;display:flex;overflow-y:auto}body.is-fullscreen #app #loading-state{flex:1;height:auto;min-height:0}body.is-fullscreen #app .pan-zoom-controls{top:calc(54px + var(--safe-top));right:calc(12px + var(--safe-right));bottom:auto}body .oe-info-button{top:calc(12px + var(--safe-top));right:calc(12px + var(--safe-right))}#app #fs-bottom-bar{height:clamp(170px, calc(var(--oe-host-h) * .3), 280px);padding-bottom:var(--safe-bottom);border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(200px,260px) minmax(0,1fr) minmax(200px,260px);display:grid}:root[data-safe-bottom] #app #fs-bottom-bar{height:calc(clamp(170px, calc(var(--oe-host-h) * .3), 280px) + var(--safe-bottom));grid-template-columns:minmax(0,1fr) minmax(0,1fr)}:root[data-safe-bottom] #fs-bottom-bar [data-column=center]{display:none}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;min-height:0;padding:10px 14px 12px;display:flex;overflow-x:hidden;overflow-y:auto}#fs-bottom-bar [data-column=left]{border-right:1px solid var(--border)}#fs-bottom-bar [data-column=right]{border-left:1px solid var(--border)}#fs-bottom-bar [data-column=center]{pointer-events:none}#fs-bottom-bar [data-column]>*+*{border-top:1px solid var(--border);margin-top:4px;padding-top:8px}#fs-bottom-bar [class$=-action-bar],#fs-bottom-bar [class*=-action-bar\ ]{flex-direction:column;padding:8px 0 0}#fs-bottom-bar .action-btn{justify-content:center;width:100%}@media (max-width:640px){#app #fs-bottom-bar,:root[data-safe-bottom] #app #fs-bottom-bar{height:auto;max-height:42%;display:block;overflow-y:auto}#fs-bottom-bar [data-column=center]{display:none}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{border:0;min-height:auto;overflow:visible}#fs-bottom-bar [data-column=right]{border-top:1px solid var(--border)}body.is-fullscreen #app .oe-stage{padding:8px}}body.is-pip{overflow:hidden}body.is-pip #app{gap:6px;padding:6px 8px}body.is-pip .oe-pip-hide,body.is-pip #param-controls-container,body.is-pip #chart-status,body.is-pip .oe-info-button{display:none!important}body.is-pip #app .pan-zoom-controls{top:6px;right:6px}:root[data-theme=light] body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}html,body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--oe-page-bg);height:100%;color:var(--text);font-family:var(--font-ui);font-size:13px;line-height:1.5;overflow-x:hidden}#app{flex-direction:column;gap:8px;min-height:0;padding:8px 12px;display:flex}#loading-state{min-height:300px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}#loading-state p{letter-spacing:.06em;text-transform:uppercase;font-size:11px}.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}}.vedic-header{justify-content:space-between;align-items:center;width:100%;max-width:640px;margin:0 auto;padding:2px 2px 0;display:flex}.vedic-title{letter-spacing:.02em;color:var(--text);font-size:14px;font-weight:700}.vedic-ayanamsa-badge{letter-spacing:.04em;color:var(--gold);background:var(--gold-subtle);border:1px solid var(--gold-glow);border-radius:var(--radius-pill);padding:3px 10px;font-size:10px;font-weight:600}#vedic-container{border-radius:var(--radius);width:100%;max-width:640px;margin:0 auto;position:relative;overflow:visible}#vedic-container svg{width:100%;height:auto;max-height:var(--oe-chart-max);aspect-ratio:1;display:block}.vedic-cell{cursor:pointer;transition:filter .16s}.vedic-cell:hover{filter:brightness(1.18)drop-shadow(0 0 6px rgba(204,156,66,.35));filter:brightness(1.18)drop-shadow(0 0 6px color(display-p3 .76996 .617341 .321369/.35));filter:brightness(1.18)drop-shadow(0 0 6px lab(67.5798% 11.9379 52.333/.35));outline:none}.vedic-cell:focus-visible{filter:brightness(1.18)drop-shadow(0 0 6px rgba(204,156,66,.35));filter:brightness(1.18)drop-shadow(0 0 6px color(display-p3 .76996 .617341 .321369/.35));filter:brightness(1.18)drop-shadow(0 0 6px lab(67.5798% 11.9379 52.333/.35));outline:none}.vedic-cell:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}#info-panel{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);grid-template-columns:1fr 1fr;gap:6px 12px;width:100%;max-width:640px;max-height:220px;margin:0 auto;padding:10px 14px;display:grid;overflow-y:auto}.info-row{flex-direction:column;gap:1px;display:flex}.info-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:9px;font-weight:700}.info-value{color:var(--text);font-size:12px;font-weight:500}@media (max-width:420px){#app{gap:8px;padding:8px}#info-panel{grid-template-columns:1fr}}.error-state{min-height:200px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.error-icon{opacity:.5;font-size:24px}.error-retry-btn{border:1px solid var(--border-strong);color:var(--gold);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(122,128,141,.12);background:color(display-p3 .483965 .502358 .546955/.12);background:lab(53.5049% -.313222 -7.47857/.12)}.chart-status{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-radius:var(--radius-pill);color:var(--gold);letter-spacing:.04em;z-index:900;opacity:0;pointer-events:none;background:rgba(5,7,13,.92);background:color(display-p3 .0216592 .0280553 .0483601/.92);background:lab(1.95095% .0425801 -2.41514/.92);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);max-height:0;padding:5px 18px;font-size:11px;font-weight:600;transition:max-height .24s cubic-bezier(.16,1,.3,1),opacity .24s,transform .24s cubic-bezier(.16,1,.3,1);position:fixed;top:10px;left:50%;overflow:hidden;transform:translate(-50%)translateY(-10px);box-shadow:0 4px 20px rgba(0,0,0,.5),0 0 0 1px rgba(204,156,66,.08);box-shadow:0 4px 20px color(display-p3 0 0 0/.5),0 0 0 1px color(display-p3 .76996 .617341 .321369/.08);box-shadow:0 4px 20px lab(0% 0 0/.5),0 0 0 1px lab(67.5798% 11.9379 52.333/.08)}.chart-status.visible{opacity:1;max-height:44px;transform:translate(-50%)translateY(0)}.vedic-popup{background:var(--surface-2);border:1px solid var(--border-strong);z-index:1000;opacity:0;pointer-events:none;border-radius:12px;width:min(320px,92vw);padding:14px 16px 12px;transition:opacity .2s cubic-bezier(.16,1,.3,1);position:fixed;box-shadow:0 12px 48px rgba(0,0,0,.7),0 0 0 1px rgba(204,156,66,.15);box-shadow:0 12px 48px color(display-p3 0 0 0/.7),0 0 0 1px color(display-p3 .76996 .617341 .321369/.15);box-shadow:0 12px 48px lab(0% 0 0/.7),0 0 0 1px lab(67.5798% 11.9379 52.333/.15)}.vedic-popup.visible{opacity:1;pointer-events:all}.vedic-popup-header{align-items:flex-start;gap:10px;display:flex}.vedic-popup-title{color:var(--text);flex:1;font-size:13px;font-weight:700}.vedic-popup-sub{color:var(--text-secondary);margin-top:2px;font-size:11px;font-weight:400}.vedic-popup-close{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:15px;line-height:1;transition:color .12s}.vedic-popup-close:hover{color:var(--text)}.ask-claude-btn{border-radius:var(--radius-sm);width:100%;color:var(--gold);font:inherit;letter-spacing:.04em;cursor:pointer;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);justify-content:center;align-items:center;gap:6px;margin-top:12px;padding:9px 16px;font-size:12px;font-weight:600;transition:background .16s,border-color .16s,box-shadow .16s;display:flex}.ask-claude-btn:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65);box-shadow:0 0 0 3px rgba(204,156,66,.12);box-shadow:0 0 0 3px color(display-p3 .76996 .617341 .321369/.12);box-shadow:0 0 0 3px lab(67.5798% 11.9379 52.333/.12)}.ask-claude-btn:disabled{opacity:.45;cursor:not-allowed}.ask-claude-btn.sending{opacity:.8;cursor:wait;pointer-events:none}.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)}.vedic-action-bar{flex-wrap:wrap;gap:8px;padding:10px 16px 6px;display:flex}.action-btn{color:var(--gold);letter-spacing:.02em;cursor:pointer;white-space:nowrap;background:rgba(204,156,66,.08);background:color(display-p3 .76996 .617341 .321369/.08);background:lab(67.5798% 11.9379 52.333/.08);border:1px solid rgba(204,156,66,.3);border:1px solid color(display-p3 .76996 .617341 .321369/.3);border:1px solid lab(67.5798% 11.9379 52.333/.3);border-radius:8px;align-items:center;gap:6px;padding:7px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s,transform .1s;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,.5);border-color:color(display-p3 .76996 .617341 .321369/.5);border-color:lab(67.5798% 11.9379 52.333/.5);transform:translateY(-1px)}.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);transform:translateY(0)}.action-btn--primary{background:linear-gradient(135deg,rgba(204,156,66,.2),rgba(166,117,55,.25));background:linear-gradient(135deg,color(display-p3 .76996 .617341 .321369/.2),color(display-p3 .622862 .466276 .257278/.25));background:linear-gradient(135deg,lab(67.5798% 11.9379 52.333/.2),lab(53.4364% 15.3976 41.3855/.25));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:linear-gradient(135deg,rgba(204,156,66,.3),rgba(166,117,55,.35));background:linear-gradient(135deg,color(display-p3 .76996 .617341 .321369/.3),color(display-p3 .622862 .466276 .257278/.35));background:linear-gradient(135deg,lab(67.5798% 11.9379 52.333/.3),lab(53.4364% 15.3976 41.3855/.35))}.tooltip{-webkit-backdrop-filter:blur(14px)saturate(1.6);backdrop-filter:blur(14px)saturate(1.6);border:1px solid var(--border-strong);border-radius:var(--radius);pointer-events:none;z-index:1000;opacity:0;background:rgba(7,9,14,.92);background:color(display-p3 .0286832 .0352525 .0537785/.92);background:lab(2.44746% .00379235 -2.33402/.92);max-width:220px;padding:8px 12px;font-size:12px;transition:opacity .12s;position:fixed;box-shadow:0 8px 32px rgba(0,0,0,.55);box-shadow:0 8px 32px color(display-p3 0 0 0/.55);box-shadow:0 8px 32px lab(0% 0 0/.55)}.tooltip.visible{opacity:1}.tooltip-title{color:var(--text);margin-bottom:2px;font-weight:700}.tooltip-detail{color:var(--text-secondary);line-height:1.4}.tooltip-hint{color:var(--gold-dim);letter-spacing:.03em;margin-top:4px;font-size:10px}.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:36px;height:36px;box-shadow:var(--oe-shadow-md);justify-content:center;align-items:center;font-family:inherit;font-size:18px;transition:all .15s;display:flex}.pan-btn.reset{width:auto;padding:0 10px;font-size:11px;font-weight:500}.pan-btn:hover{background:var(--surface);border-color:var(--gold-dim);color:var(--gold)}.pan-btn:active{transform:scale(.95)}.pan-btn--fullscreen{width:36px;height:36px}@media (max-width:480px){.pan-zoom-controls{gap:5px}.pan-btn,.pan-btn--fullscreen{background:color-mix(in oklab, var(--surface-2) 72%, transparent);-webkit-backdrop-filter:blur(6px);width:32px;height:32px;font-size:15px}.pan-btn.reset{width:32px;padding:0;font-size:0}.pan-btn.reset:before{content:"⟲";font-size:15px}}.cancel-toast{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);opacity:0;z-index:9999;pointer-events:none;box-shadow:var(--oe-shadow-md);padding:8px 16px;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)}:root[data-theme=light] .chart-status,:root[data-theme=light] .tooltip{background:rgba(251,252,254,.92);background:color(display-p3 .98376 .986943 .994535/.92);background:lab(98.8273% -.0742674 -1.13657/.92)}:root[data-theme=light] .vedic-popup{background:var(--surface);border-color:var(--border-strong)}:root[data-theme=light] #info-panel{background:var(--surface);border-color:var(--border)}
|
|
14
14
|
/*$vite$:1*/</style>
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
<p>Casting your Jyotish chart…</p>
|
|
21
21
|
</div>
|
|
22
22
|
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
23
|
-
<div id="vedic-container" hidden>
|
|
23
|
+
<div id="vedic-container" class="oe-stage" hidden>
|
|
24
24
|
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden>
|
|
25
25
|
<button id="btn-zoom-in" class="pan-btn" aria-label="Zoom in">+</button>
|
|
26
26
|
<button id="btn-zoom-out" class="pan-btn" aria-label="Zoom out">-</button>
|
|
@@ -126,7 +126,7 @@ var l = /* @__PURE__ */ Symbol("zod_brand"), u = class extends Error {
|
|
|
126
126
|
function p(e4) {
|
|
127
127
|
return e4 && Object.assign(f, e4), f;
|
|
128
128
|
}
|
|
129
|
-
var ee = t({ BIGINT_FORMAT_RANGES: () => je, Class: () => $e, NUMBER_FORMAT_RANGES: () => Ae, aborted: () => ze, allowsEval: () => ye, assert: () => re, assertEqual: () => te, assertIs: () => h, assertNever: () => ne, assertNotEqual: () => m, assignProp: () => le, base64ToUint8Array: () => qe, base64urlToUint8Array: () => Ye, cached: () => ie, captureStackTrace: () => _e, cleanEnum: () => Ke, cleanRegex: () => oe, clone: () => De, cloneDef: () => de, createTransparentProxy: () => Oe, defineLazy: () => b, esc: () => he, escapeRegex: () => Ee, extend: () => Pe, finalizeIssue: () => He, floatSafeRemainder: () =>
|
|
129
|
+
var ee = t({ BIGINT_FORMAT_RANGES: () => je, Class: () => $e, NUMBER_FORMAT_RANGES: () => Ae, aborted: () => ze, allowsEval: () => ye, assert: () => re, assertEqual: () => te, assertIs: () => h, assertNever: () => ne, assertNotEqual: () => m, assignProp: () => le, base64ToUint8Array: () => qe, base64urlToUint8Array: () => Ye, cached: () => ie, captureStackTrace: () => _e, cleanEnum: () => Ke, cleanRegex: () => oe, clone: () => De, cloneDef: () => de, createTransparentProxy: () => Oe, defineLazy: () => b, esc: () => he, escapeRegex: () => Ee, extend: () => Pe, finalizeIssue: () => He, floatSafeRemainder: () => se, getElementAtPath: () => fe, getEnumValues: () => g, getLengthableOrigin: () => We, getParsedType: () => Ce, getSizableOrigin: () => Ue, hexToUint8Array: () => Ze, isObject: () => ve, isPlainObject: () => be, issue: () => Ge, joinValues: () => _, jsonStringifyReplacer: () => v, merge: () => Ie, mergeDefs: () => ue, normalizeParams: () => x, nullish: () => ae, numKeys: () => Se, objectClone: () => ce, omit: () => Ne, optionalKeys: () => ke, parsedType: () => C, partial: () => Le, pick: () => Me, prefixIssues: () => Be, primitiveTypes: () => Te, promiseAllObject: () => pe, propertyKeyTypes: () => we, randomString: () => me, required: () => Re, safeExtend: () => Fe, shallowClone: () => xe, slugify: () => ge, stringifyPrimitive: () => S, uint8ArrayToBase64: () => Je, uint8ArrayToBase64url: () => Xe, uint8ArrayToHex: () => Qe, unwrapMessage: () => Ve });
|
|
130
130
|
function te(e4) {
|
|
131
131
|
return e4;
|
|
132
132
|
}
|
|
@@ -166,7 +166,7 @@ function oe(e4) {
|
|
|
166
166
|
let t2 = +!!e4.startsWith("^"), n2 = e4.endsWith("$") ? e4.length - 1 : e4.length;
|
|
167
167
|
return e4.slice(t2, n2);
|
|
168
168
|
}
|
|
169
|
-
function
|
|
169
|
+
function se(e4, t2) {
|
|
170
170
|
let n2 = (e4.toString().split(".")[1] || "").length, r2 = t2.toString(), i2 = (r2.split(".")[1] || "").length;
|
|
171
171
|
if (i2 === 0 && /\d?e-\d?/.test(r2)) {
|
|
172
172
|
let e5 = r2.match(/\d?e-(\d?)/);
|
|
@@ -175,11 +175,11 @@ function y(e4, t2) {
|
|
|
175
175
|
let a2 = n2 > i2 ? n2 : i2;
|
|
176
176
|
return Number.parseInt(e4.toFixed(a2).replace(".", "")) % Number.parseInt(t2.toFixed(a2).replace(".", "")) / 10 ** a2;
|
|
177
177
|
}
|
|
178
|
-
var
|
|
178
|
+
var y = /* @__PURE__ */ Symbol("evaluating");
|
|
179
179
|
function b(e4, t2, n2) {
|
|
180
180
|
let r2;
|
|
181
181
|
Object.defineProperty(e4, t2, { get() {
|
|
182
|
-
if (r2 !==
|
|
182
|
+
if (r2 !== y) return r2 === void 0 && (r2 = y, r2 = n2()), r2;
|
|
183
183
|
}, set(n3) {
|
|
184
184
|
Object.defineProperty(e4, t2, { value: n3 });
|
|
185
185
|
}, configurable: true });
|
|
@@ -630,7 +630,7 @@ var On = /^[0-9a-fA-F]{32}$/, kn = En(22, "=="), An = Dn(22), jn = /^[0-9a-fA-F]
|
|
|
630
630
|
(n2 = e5._zod.bag).multipleOf != null || (n2.multipleOf = t2.value);
|
|
631
631
|
}), e4._zod.check = (n2) => {
|
|
632
632
|
if (typeof n2.value != typeof t2.value) throw Error("Cannot mix number and bigint in multiple_of check.");
|
|
633
|
-
(typeof n2.value == "bigint" ? n2.value % t2.value === BigInt(0) :
|
|
633
|
+
(typeof n2.value == "bigint" ? n2.value % t2.value === BigInt(0) : se(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 });
|
|
634
634
|
};
|
|
635
635
|
}), qn = c("$ZodCheckNumberFormat", (e4, t2) => {
|
|
636
636
|
var n2;
|
|
@@ -2447,22 +2447,22 @@ var Aa = () => {
|
|
|
2447
2447
|
}
|
|
2448
2448
|
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));
|
|
2449
2449
|
if (t3.origin === "array" || t3.origin === "set") {
|
|
2450
|
-
var oe2,
|
|
2450
|
+
var oe2, se2;
|
|
2451
2451
|
let r4 = t3.origin === "set" ? "\u05E6\u05E8\u05D9\u05DB\u05D4" : "\u05E6\u05E8\u05D9\u05DA";
|
|
2452
|
-
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((oe2 = e5 == null ? void 0 : e5.unit) == null ? "" : oe2, " \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8") : "\u05D9\u05D5\u05EA\u05E8 \u05DE-".concat(t3.minimum, " ").concat((
|
|
2452
|
+
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((oe2 = e5 == null ? void 0 : e5.unit) == null ? "" : oe2, " \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8") : "\u05D9\u05D5\u05EA\u05E8 \u05DE-".concat(t3.minimum, " ").concat((se2 = e5 == null ? void 0 : e5.unit) == null ? "" : se2)).trim();
|
|
2453
2453
|
}
|
|
2454
2454
|
let r3 = t3.inclusive ? ">=" : ">", s3 = a2((g2 = t3.origin) == null ? "value" : g2);
|
|
2455
2455
|
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((v2 = e5 == null ? void 0 : e5.shortLabel) == null ? "\u05E7\u05D8\u05DF" : v2, " \u05DE\u05D3\u05D9: ").concat(n4, " ").concat(s3, " ").concat(r3).concat(t3.minimum.toString());
|
|
2456
2456
|
}
|
|
2457
2457
|
case "invalid_format": {
|
|
2458
|
-
var
|
|
2458
|
+
var y2, b2;
|
|
2459
2459
|
let e5 = t3;
|
|
2460
2460
|
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, '"');
|
|
2461
2461
|
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, '"');
|
|
2462
2462
|
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, '"');
|
|
2463
2463
|
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);
|
|
2464
2464
|
let n4 = s2[e5.format];
|
|
2465
|
-
return "".concat((
|
|
2465
|
+
return "".concat((y2 = n4 == null ? void 0 : n4.label) == null ? e5.format : y2, " \u05DC\u05D0 ").concat(((b2 = n4 == null ? void 0 : n4.gender) == null ? "m" : b2) === "f" ? "\u05EA\u05E7\u05D9\u05E0\u05D4" : "\u05EA\u05E7\u05D9\u05DF");
|
|
2466
2466
|
}
|
|
2467
2467
|
case "not_multiple_of":
|
|
2468
2468
|
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);
|
|
@@ -6329,7 +6329,15 @@ async function Qg(e4, t2, n2 = "") {
|
|
|
6329
6329
|
}
|
|
6330
6330
|
return r2.value;
|
|
6331
6331
|
}
|
|
6332
|
-
|
|
6332
|
+
function $g(e4, t2 = document.documentElement) {
|
|
6333
|
+
for (let [n2, r2] of Object.entries(e4)) r2 !== void 0 && t2.style.setProperty(n2, r2);
|
|
6334
|
+
}
|
|
6335
|
+
function e_(e4) {
|
|
6336
|
+
if (document.getElementById("__mcp-host-fonts")) return;
|
|
6337
|
+
let t2 = document.createElement("style");
|
|
6338
|
+
t2.id = "__mcp-host-fonts", t2.textContent = e4, document.head.appendChild(t2);
|
|
6339
|
+
}
|
|
6340
|
+
var t_ = class e3 extends wg {
|
|
6333
6341
|
_assertInitialized(e4) {
|
|
6334
6342
|
var t2;
|
|
6335
6343
|
if (this._initializedSent) return;
|
|
@@ -6561,40 +6569,40 @@ var $g = class e3 extends wg {
|
|
|
6561
6569
|
}
|
|
6562
6570
|
}
|
|
6563
6571
|
};
|
|
6564
|
-
o(
|
|
6565
|
-
var e_ = null;
|
|
6566
|
-
function t_(e4) {
|
|
6567
|
-
e_ = e4;
|
|
6568
|
-
}
|
|
6572
|
+
o(t_, "ONE_SHOT_EVENTS", /* @__PURE__ */ new Set(["toolinput", "toolinputpartial", "toolresult", "toolcancelled"]));
|
|
6569
6573
|
var n_ = null;
|
|
6570
6574
|
function r_(e4) {
|
|
6571
6575
|
n_ = e4;
|
|
6572
6576
|
}
|
|
6573
6577
|
var i_ = null;
|
|
6574
|
-
function a_() {
|
|
6575
|
-
|
|
6578
|
+
function a_(e4) {
|
|
6579
|
+
i_ = e4;
|
|
6576
6580
|
}
|
|
6577
|
-
|
|
6578
|
-
|
|
6581
|
+
var o_ = null;
|
|
6582
|
+
function s_() {
|
|
6583
|
+
return o_ || (o_ = document.getElementById("tooltip")), o_;
|
|
6584
|
+
}
|
|
6585
|
+
function c_(e4, t2, n2, r2, i2) {
|
|
6586
|
+
let a2 = s_();
|
|
6579
6587
|
if (!a2) return;
|
|
6580
|
-
a2.innerHTML = '\n <div class="tooltip-title">'.concat(
|
|
6588
|
+
a2.innerHTML = '\n <div class="tooltip-title">'.concat(h_(n2), '</div>\n <div class="tooltip-detail">').concat(h_(r2), "</div>\n ").concat(i2 ? '<div class="tooltip-hint">'.concat(h_(i2), "</div>") : "", "\n ");
|
|
6581
6589
|
let o2 = a2.getBoundingClientRect(), s2 = o2.width || 220, c2 = o2.height || 70, l2 = e4 + 14, u2 = t2 + 10;
|
|
6582
6590
|
l2 + s2 > window.innerWidth && (l2 = e4 - s2 - 8), u2 + c2 > window.innerHeight && (u2 = t2 - c2 - 8), a2.style.left = "".concat(l2, "px"), a2.style.top = "".concat(u2, "px"), a2.classList.add("visible");
|
|
6583
6591
|
}
|
|
6584
|
-
function
|
|
6592
|
+
function l_() {
|
|
6585
6593
|
var e4;
|
|
6586
|
-
(e4 =
|
|
6594
|
+
(e4 = s_()) == null || e4.classList.remove("visible");
|
|
6587
6595
|
}
|
|
6588
|
-
var
|
|
6589
|
-
function
|
|
6590
|
-
return
|
|
6596
|
+
var u_ = null;
|
|
6597
|
+
function d_() {
|
|
6598
|
+
return u_ || (u_ = document.createElement("div"), u_.id = "vedic-popup-panel", u_.className = "vedic-popup", document.body.appendChild(u_)), u_;
|
|
6591
6599
|
}
|
|
6592
|
-
function
|
|
6593
|
-
|
|
6600
|
+
function f_() {
|
|
6601
|
+
u_ == null || u_.classList.remove("visible"), i_ == null || i_(null);
|
|
6594
6602
|
}
|
|
6595
|
-
function
|
|
6603
|
+
function p_(e4, t2, n2, r2) {
|
|
6596
6604
|
var i2;
|
|
6597
|
-
let a2 =
|
|
6605
|
+
let a2 = n_ ? '<button class="ask-claude-btn" id="vedic-ask-claude-btn">Interpret</button>' : "", o2 = '\n <div class="vedic-popup-header">\n <div class="vedic-popup-title">\n <strong>'.concat(h_(t2), '</strong>\n <div class="vedic-popup-sub">').concat(h_(n2), '</div>\n </div>\n <button class="vedic-popup-close" id="vedic-popup-close">\u2715</button>\n </div>\n ').concat(a2, "\n "), s2 = d_();
|
|
6598
6606
|
s2.innerHTML = o2, s2.classList.add("visible"), requestAnimationFrame(() => {
|
|
6599
6607
|
let t3 = s2.getBoundingClientRect(), n3 = s2.offsetParent, r3, i3, a3, o3;
|
|
6600
6608
|
if (n3) {
|
|
@@ -6603,14 +6611,14 @@ function d_(e4, t2, n2, r2) {
|
|
|
6603
6611
|
} else r3 = window.innerWidth, i3 = window.innerHeight, a3 = 0, o3 = 0;
|
|
6604
6612
|
let c2 = e4.clientX - a3 + 14, l2 = e4.clientY - o3 + 14;
|
|
6605
6613
|
c2 + t3.width > r3 - 14 && (c2 = e4.clientX - a3 - t3.width - 14), l2 + t3.height > i3 - 14 && (l2 = e4.clientY - o3 - t3.height - 14), c2 = Math.max(14, c2), l2 = Math.max(14, l2), s2.style.left = "".concat(c2, "px"), s2.style.top = "".concat(l2, "px");
|
|
6606
|
-
}), (i2 = document.getElementById("vedic-popup-close")) == null || i2.addEventListener("click",
|
|
6614
|
+
}), (i2 = document.getElementById("vedic-popup-close")) == null || i2.addEventListener("click", f_), m_(s2, r2);
|
|
6607
6615
|
}
|
|
6608
|
-
function
|
|
6616
|
+
function m_(e4, t2) {
|
|
6609
6617
|
var n2;
|
|
6610
6618
|
(n2 = e4.querySelector("#vedic-ask-claude-btn")) == null || n2.addEventListener("click", () => {
|
|
6611
|
-
if (!
|
|
6619
|
+
if (!n_) return;
|
|
6612
6620
|
let n3 = e4.querySelector("#vedic-ask-claude-btn");
|
|
6613
|
-
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"),
|
|
6621
|
+
!n3 || n3.disabled || (n3.disabled = true, n3.textContent = "Sending\u2026", n3.classList.add("sending"), n_(t2).then(() => {
|
|
6614
6622
|
n3.textContent = "Sent", n3.classList.remove("sending"), n3.classList.add("sent"), setTimeout(() => {
|
|
6615
6623
|
n3.textContent = "Interpret", n3.classList.remove("sent"), n3.disabled = false;
|
|
6616
6624
|
}, 2500);
|
|
@@ -6619,69 +6627,71 @@ function f_(e4, t2) {
|
|
|
6619
6627
|
}));
|
|
6620
6628
|
});
|
|
6621
6629
|
}
|
|
6622
|
-
function
|
|
6630
|
+
function h_(e4) {
|
|
6623
6631
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6624
6632
|
}
|
|
6625
|
-
var
|
|
6626
|
-
function
|
|
6633
|
+
var g_ = { Aries: "initiation & courage", Taurus: "stability & resource", Gemini: "communication & duality", Cancer: "nurture & emotional memory", Leo: "sovereignty & self-expression", Virgo: "refinement & service", Libra: "balance & relationship", Scorpio: "transformation & depth", Sagittarius: "expansion & meaning", Capricorn: "structure & discipline", Aquarius: "vision & detachment", Pisces: "dissolution & compassion" };
|
|
6634
|
+
function __(e4, t2) {
|
|
6627
6635
|
var n2, r2, i2, a2, o2, s2;
|
|
6628
6636
|
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");
|
|
6629
6637
|
c2 && (c2.hidden = false);
|
|
6630
6638
|
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, ee2 = (a2 = f2[1]) == null ? 0 : a2, te2 = (o2 = f2[2]) == null ? 500 : o2, m2 = (s2 = f2[3]) == null ? 500 : s2, h2 = te2 / 5, ne2 = te2 * 2, re2 = p2, g2 = ee2, _2 = te2, v2 = m2;
|
|
6631
|
-
e4.
|
|
6632
|
-
let ie2 = () => e4.setAttribute("viewBox", "".concat(re2, " ").concat(g2, " ").concat(_2, " ").concat(v2)),
|
|
6639
|
+
e4.classList.add("oe-pannable");
|
|
6640
|
+
let ie2 = () => document.body.classList.contains("is-fullscreen"), ae2 = () => e4.setAttribute("viewBox", "".concat(re2, " ").concat(g2, " ").concat(_2, " ").concat(v2)), oe2 = (e5, t3, n3) => {
|
|
6633
6641
|
t3 === void 0 && (t3 = re2 + _2 / 2), n3 === void 0 && (n3 = g2 + v2 / 2);
|
|
6634
6642
|
let r3 = _2 * e5;
|
|
6635
|
-
r3 < h2 && (r3 = h2), r3 > ne2 && (r3 = ne2), r3 !== _2 && (e5 = r3 / _2, re2 = t3 - (t3 - re2) * e5, g2 = n3 - (n3 - g2) * e5, _2 = r3, v2 *= e5,
|
|
6643
|
+
r3 < h2 && (r3 = h2), r3 > ne2 && (r3 = ne2), r3 !== _2 && (e5 = r3 / _2, re2 = t3 - (t3 - re2) * e5, g2 = n3 - (n3 - g2) * e5, _2 = r3, v2 *= e5, ae2());
|
|
6636
6644
|
};
|
|
6637
|
-
l2 == null || l2.addEventListener("click", () =>
|
|
6638
|
-
re2 = p2, g2 = ee2, _2 = te2, v2 = m2,
|
|
6645
|
+
l2 == null || l2.addEventListener("click", () => oe2(0.8)), u2 == null || u2.addEventListener("click", () => oe2(1.25)), d2 == null || d2.addEventListener("click", () => {
|
|
6646
|
+
re2 = p2, g2 = ee2, _2 = te2, v2 = m2, ae2();
|
|
6639
6647
|
});
|
|
6640
|
-
let
|
|
6648
|
+
let se2 = (t3, n3) => {
|
|
6641
6649
|
let r3 = e4.getBoundingClientRect();
|
|
6642
6650
|
return { x: re2 + (t3 - r3.left) / r3.width * _2, y: g2 + (n3 - r3.top) / r3.height * v2 };
|
|
6643
6651
|
};
|
|
6644
6652
|
e4.addEventListener("wheel", (e5) => {
|
|
6653
|
+
if (!ie2() && !e5.ctrlKey && !e5.metaKey) return;
|
|
6645
6654
|
e5.preventDefault();
|
|
6646
|
-
let t3 = Math.exp((e5.deltaY < 0 ? -1 : 1) * 0.1), n3 =
|
|
6647
|
-
|
|
6655
|
+
let t3 = Math.exp((e5.deltaY < 0 ? -1 : 1) * 0.1), n3 = se2(e5.clientX, e5.clientY);
|
|
6656
|
+
oe2(t3, n3.x, n3.y);
|
|
6648
6657
|
}, { passive: false });
|
|
6649
|
-
let y2 = /* @__PURE__ */ new Map(),
|
|
6658
|
+
let y2 = /* @__PURE__ */ new Map(), b2 = null, ce2 = () => {
|
|
6650
6659
|
let [e5, t3] = [...y2.values()];
|
|
6651
6660
|
return { dist: Math.hypot(e5.x - t3.x, e5.y - t3.y), midX: (e5.x + t3.x) / 2, midY: (e5.y + t3.y) / 2 };
|
|
6652
|
-
},
|
|
6661
|
+
}, le2 = (t3, n3) => {
|
|
6653
6662
|
let r3 = e4.getBoundingClientRect();
|
|
6654
|
-
re2 -= t3 / r3.width * _2, g2 -= n3 / r3.height * v2,
|
|
6663
|
+
re2 -= t3 / r3.width * _2, g2 -= n3 / r3.height * v2, ae2();
|
|
6655
6664
|
};
|
|
6656
6665
|
e4.addEventListener("pointerdown", (t3) => {
|
|
6666
|
+
if (t3.pointerType === "touch" && !ie2()) return;
|
|
6657
6667
|
let n3 = t3.target, r3 = !!(n3.closest && (n3.closest('[class*="-hit"]') || n3.closest('[class*="-activation"]') || n3.closest(".variable-arrow") || n3.closest("button")));
|
|
6658
|
-
y2.set(t3.pointerId, { x: t3.clientX, y: t3.clientY, interactive: r3 }), r3 || (e4.setPointerCapture(t3.pointerId), e4.style.cursor = "grabbing"), y2.size === 2 && (
|
|
6668
|
+
y2.set(t3.pointerId, { x: t3.clientX, y: t3.clientY, interactive: r3 }), r3 || (e4.setPointerCapture(t3.pointerId), e4.style.cursor = "grabbing"), y2.size === 2 && (b2 = ce2());
|
|
6659
6669
|
}), e4.addEventListener("pointermove", (e5) => {
|
|
6660
6670
|
let t3 = y2.get(e5.pointerId);
|
|
6661
|
-
if (t3) if (y2.set(e5.pointerId, { x: e5.clientX, y: e5.clientY, interactive: t3.interactive }), y2.size >= 2 &&
|
|
6662
|
-
let e6 =
|
|
6663
|
-
if (
|
|
6664
|
-
let t4 =
|
|
6665
|
-
|
|
6666
|
-
}
|
|
6667
|
-
|
|
6668
|
-
} else y2.size === 1 && !t3.interactive &&
|
|
6671
|
+
if (t3) if (y2.set(e5.pointerId, { x: e5.clientX, y: e5.clientY, interactive: t3.interactive }), y2.size >= 2 && b2) {
|
|
6672
|
+
let e6 = ce2();
|
|
6673
|
+
if (b2.dist > 0 && e6.dist > 0) {
|
|
6674
|
+
let t4 = se2(e6.midX, e6.midY);
|
|
6675
|
+
oe2(b2.dist / e6.dist, t4.x, t4.y);
|
|
6676
|
+
}
|
|
6677
|
+
le2(e6.midX - b2.midX, e6.midY - b2.midY), b2 = e6;
|
|
6678
|
+
} else y2.size === 1 && !t3.interactive && le2(e5.clientX - t3.x, e5.clientY - t3.y);
|
|
6669
6679
|
});
|
|
6670
|
-
let
|
|
6671
|
-
y2.delete(t3.pointerId) && (e4.hasPointerCapture(t3.pointerId) && e4.releasePointerCapture(t3.pointerId),
|
|
6680
|
+
let ue2 = (t3) => {
|
|
6681
|
+
y2.delete(t3.pointerId) && (e4.hasPointerCapture(t3.pointerId) && e4.releasePointerCapture(t3.pointerId), b2 = y2.size >= 2 ? ce2() : null, y2.size === 0 && (e4.style.cursor = "default"));
|
|
6672
6682
|
};
|
|
6673
|
-
e4.addEventListener("pointerup",
|
|
6683
|
+
e4.addEventListener("pointerup", ue2), e4.addEventListener("pointercancel", ue2);
|
|
6674
6684
|
}
|
|
6675
|
-
function
|
|
6685
|
+
function v_(e4, t2, n2, r2) {
|
|
6676
6686
|
var i2, a2;
|
|
6677
|
-
|
|
6687
|
+
r_((i2 = r2.onAskClaude) == null ? null : i2);
|
|
6678
6688
|
let o2 = e4.querySelector("#pan-zoom-controls");
|
|
6679
6689
|
e4.innerHTML = "", o2 && e4.appendChild(o2);
|
|
6680
6690
|
let s2 = document.createElement("div");
|
|
6681
6691
|
s2.style.cssText = "width:100%;height:100%;", s2.innerHTML = t2;
|
|
6682
6692
|
let c2 = s2.querySelector("svg");
|
|
6683
6693
|
if (!c2) return console.error("[wire-go-svg] No <svg> element found in payload"), null;
|
|
6684
|
-
c2.setAttribute("width", "100%"), c2.setAttribute("height", "100%"), c2.setAttribute("role", "group"), c2.setAttribute("aria-label", "Vedic Jyotish Rashi Chart"), c2.addEventListener("click", (e5) => e5.stopPropagation()), e4.appendChild(c2),
|
|
6694
|
+
c2.setAttribute("width", "100%"), c2.setAttribute("height", "100%"), c2.setAttribute("role", "group"), c2.setAttribute("aria-label", "Vedic Jyotish Rashi Chart"), c2.addEventListener("click", (e5) => e5.stopPropagation()), e4.appendChild(c2), __(c2, "pan-zoom-controls");
|
|
6685
6695
|
let l2 = /* @__PURE__ */ new Map();
|
|
6686
6696
|
for (let e5 of (a2 = n2.planets) == null ? [] : a2) {
|
|
6687
6697
|
var u2;
|
|
@@ -6700,10 +6710,10 @@ function g_(e4, t2, n2, r2) {
|
|
|
6700
6710
|
var t3, n3, r3;
|
|
6701
6711
|
let i3 = d2(e5.target);
|
|
6702
6712
|
if (!i3) return;
|
|
6703
|
-
let a3 = (t3 = i3.getAttribute("data-sign")) == null ? "" : t3, o3 = i3.getAttribute("data-lagna") === "true", s3 = (n3 = l2.get(a3)) == null ? [] : n3, c3 = s3.length ? s3.map((e6) => "".concat(e6.planet, " ").concat(e6.rashi_degree.toFixed(1), "\xB0").concat(e6.is_retrograde ? " \u211E" : "")).join(", ") : "Unoccupied", u3 = (r3 =
|
|
6704
|
-
|
|
6713
|
+
let a3 = (t3 = i3.getAttribute("data-sign")) == null ? "" : t3, o3 = i3.getAttribute("data-lagna") === "true", s3 = (n3 = l2.get(a3)) == null ? [] : n3, c3 = s3.length ? s3.map((e6) => "".concat(e6.planet, " ").concat(e6.rashi_degree.toFixed(1), "\xB0").concat(e6.is_retrograde ? " \u211E" : "")).join(", ") : "Unoccupied", u3 = (r3 = g_[a3]) == null ? "" : r3;
|
|
6714
|
+
c_(e5.clientX, e5.clientY, "".concat(a3).concat(o3 ? " \u2014 Lagna" : ""), c3, u3 ? "".concat(u3, " \xB7 click to interpret") : "Click to interpret");
|
|
6705
6715
|
}), c2.addEventListener("mouseout", (e5) => {
|
|
6706
|
-
d2(e5.target) &&
|
|
6716
|
+
d2(e5.target) && l_();
|
|
6707
6717
|
}), c2.addEventListener("click", (e5) => {
|
|
6708
6718
|
var t3, n3;
|
|
6709
6719
|
let i3 = d2(e5.target);
|
|
@@ -6711,7 +6721,7 @@ function g_(e4, t2, n2, r2) {
|
|
|
6711
6721
|
let a3 = (t3 = i3.getAttribute("data-sign")) == null ? "" : t3, o3 = i3.getAttribute("data-lagna") === "true", s3 = (n3 = l2.get(a3)) == null ? [] : n3;
|
|
6712
6722
|
if (r2.onSignClick(a3, o3, s3), r2.onAskClaude) {
|
|
6713
6723
|
let t4 = s3.length ? s3.map((e6) => "".concat(e6.planet, " ").concat(e6.rashi_degree.toFixed(1), "\xB0")).join(", ") : "Unoccupied rashi";
|
|
6714
|
-
|
|
6724
|
+
p_(e5, "".concat(a3).concat(o3 ? " \u2014 Lagna" : ""), t4, { type: "sign", data: { sign: a3, is_lagna: o3, planets: s3.map((e6) => e6.planet) } });
|
|
6715
6725
|
}
|
|
6716
6726
|
}), c2.querySelectorAll("[data-sign]").forEach((e5) => {
|
|
6717
6727
|
var t3;
|
|
@@ -6725,13 +6735,13 @@ function g_(e4, t2, n2, r2) {
|
|
|
6725
6735
|
});
|
|
6726
6736
|
}), c2;
|
|
6727
6737
|
}
|
|
6728
|
-
var
|
|
6729
|
-
function
|
|
6738
|
+
var y_ = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "About the Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "This wheel is an exact celestial snapshot of the sky at a given moment and place \u2014 every planet, house, and aspect line is clickable." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "About the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are layered here \u2014 the inner wheel is the natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "About the Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "The bodygraph is a living map of the energy centres, channels, and gates that define a Human Design chart." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "About the Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows the Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon & Nakshatra</strong> for lunar mansion detail"], modalText: "This is a Vedic birth chart rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "About the Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to the natal chart \u2014 the exact dates outer-planet energies activate each placement." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "About the Moon Phase Dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status for the selected moment." }, bazi: { stripIcon: "\u56DB", stripTitle: "About the BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is the core identity element", "The <strong>Wu Xing bar</strong> shows the Five Element balance"], modalText: "This BaZi (Four Pillars of Destiny) chart maps the Heavenly Stems and Earthly Branches present at a given moment of birth." } }, b_ = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: oklch(0% 0 0 / 0.55);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oe-fade-in 0.4s ease both;\n font-family: system-ui, sans-serif;\n }\n\n .oe-welcome-modal {\n /* Themed, not hardcoded: the title/text/hints below all resolve through\n var(--text\u2026), so a fixed dark surface here meant that once the light\n palette became reachable the modal rendered near-black text on a\n near-black card \u2014 1.09:1, effectively invisible. The fallback is the\n previous literal, and every app\'s dark --surface is oklch(11-12%), so\n dark rendering is unchanged. */\n background: var(--surface, oklch(11% 0.010 265));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px oklch(0% 0 0 / 0.55), inset 0 1px 0 oklch(100% 0 0 / 0.06);\n animation: oe-modal-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n @keyframes oe-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes oe-modal-in {\n from { opacity: 0; transform: scale(0.95) translateY(10px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .oe-welcome-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n }\n\n .oe-welcome-icon {\n font-size: 28px;\n color: var(--gold, oklch(72% 0.12 80));\n line-height: 1;\n text-shadow: 0 0 10px var(--gold-glow, oklch(72% 0.12 80 / 0.30));\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: var(--text, oklch(92% 0.006 265));\n margin: 0;\n letter-spacing: 0.02em;\n }\n\n .oe-welcome-text {\n font-size: 14.5px;\n line-height: 1.5;\n color: var(--text-secondary, oklch(68% 0.008 265));\n margin: 0;\n }\n\n .oe-welcome-hints {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 8px 0 12px 0;\n padding: 0;\n list-style: none;\n }\n\n .oe-welcome-hints li {\n font-size: 13.5px;\n line-height: 1.4;\n color: var(--text-secondary, oklch(68% 0.008 265));\n display: flex;\n align-items: flex-start;\n gap: 10px;\n opacity: 0;\n animation: oe-fade-in 0.4s ease forwards;\n }\n\n /* Stagger the hints */\n .oe-welcome-hints li:nth-child(1) { animation-delay: 0.15s; }\n .oe-welcome-hints li:nth-child(2) { animation-delay: 0.25s; }\n .oe-welcome-hints li:nth-child(3) { animation-delay: 0.35s; }\n .oe-welcome-hints li:nth-child(4) { animation-delay: 0.45s; }\n\n .oe-welcome-hints li::before {\n content: "\u2726";\n color: var(--gold-dim, oklch(52% 0.06 80));\n font-size: 12px;\n padding-top: 2px;\n }\n\n .oe-welcome-hints strong {\n color: var(--text, oklch(92% 0.006 265));\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: var(--gold-subtle, oklch(72% 0.12 80 / 0.10));\n color: var(--gold, oklch(72% 0.12 80));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: oklch(72% 0.12 80 / 0.18);\n border-color: oklch(72% 0.12 80 / 0.40);\n }\n\n .oe-welcome-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n\n .oe-welcome-backdrop.is-dismissing {\n animation: oe-fade-out 0.3s ease forwards;\n }\n\n .oe-welcome-backdrop.is-dismissing .oe-welcome-modal {\n animation: oe-modal-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes oe-fade-out {\n to { opacity: 0; }\n }\n\n @keyframes oe-modal-out {\n to { opacity: 0; transform: scale(0.95) translateY(10px); }\n }\n';
|
|
6739
|
+
function x_() {
|
|
6730
6740
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
6731
6741
|
let e4 = document.createElement("style");
|
|
6732
|
-
e4.id = "oe-first-run-styles", e4.textContent =
|
|
6742
|
+
e4.id = "oe-first-run-styles", e4.textContent = b_, document.head.appendChild(e4);
|
|
6733
6743
|
}
|
|
6734
|
-
function
|
|
6744
|
+
function S_(e4) {
|
|
6735
6745
|
let t2 = document.activeElement, n2 = document.createElement("div");
|
|
6736
6746
|
n2.className = "oe-welcome-backdrop";
|
|
6737
6747
|
let r2 = document.createElement("div");
|
|
@@ -6749,24 +6759,24 @@ function b_(e4) {
|
|
|
6749
6759
|
e5.key === "Escape" && (e5.preventDefault(), o2()), e5.key === "Tab" && (e5.preventDefault(), a2.focus());
|
|
6750
6760
|
}), requestAnimationFrame(() => a2.focus()), n2;
|
|
6751
6761
|
}
|
|
6752
|
-
function
|
|
6753
|
-
|
|
6754
|
-
let t2 =
|
|
6762
|
+
function C_(e4) {
|
|
6763
|
+
x_();
|
|
6764
|
+
let t2 = S_(y_[e4]);
|
|
6755
6765
|
document.body.appendChild(t2);
|
|
6756
6766
|
}
|
|
6757
|
-
var
|
|
6758
|
-
function
|
|
6767
|
+
var w_ = "\n .oe-info-button {\n position: fixed;\n top: 12px;\n right: 12px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: var(--surface-2, oklch(16% 0.010 265));\n border: 1px solid var(--border-strong, oklch(30% 0.010 265));\n color: var(--text-secondary, oklch(68% 0.008 265));\n font: 600 14px/1 Georgia, serif;\n font-style: italic;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n transition: all 150ms ease;\n }\n\n .oe-info-button:hover {\n background: var(--surface, oklch(11% 0.010 265));\n border-color: var(--gold-dim, oklch(52% 0.06 80));\n color: var(--gold, oklch(72% 0.12 80));\n }\n\n .oe-info-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n";
|
|
6768
|
+
function T_() {
|
|
6759
6769
|
if (document.getElementById("oe-info-button-styles")) return;
|
|
6760
6770
|
let e4 = document.createElement("style");
|
|
6761
|
-
e4.id = "oe-info-button-styles", e4.textContent =
|
|
6771
|
+
e4.id = "oe-info-button-styles", e4.textContent = w_, document.head.appendChild(e4);
|
|
6762
6772
|
}
|
|
6763
|
-
function
|
|
6773
|
+
function E_(e4) {
|
|
6764
6774
|
if (document.getElementById("oe-info-button")) return;
|
|
6765
|
-
|
|
6775
|
+
T_();
|
|
6766
6776
|
let t2 = document.createElement("button");
|
|
6767
|
-
t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () =>
|
|
6777
|
+
t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () => C_(e4)), document.body.appendChild(t2);
|
|
6768
6778
|
}
|
|
6769
|
-
function
|
|
6779
|
+
function D_(e4) {
|
|
6770
6780
|
var t2;
|
|
6771
6781
|
if (!e4) return null;
|
|
6772
6782
|
if (e4.structuredContent != null && typeof e4.structuredContent == "object") return e4.structuredContent;
|
|
@@ -6779,50 +6789,63 @@ function T_(e4) {
|
|
|
6779
6789
|
}
|
|
6780
6790
|
return null;
|
|
6781
6791
|
}
|
|
6782
|
-
function
|
|
6792
|
+
function O_(e4) {
|
|
6783
6793
|
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6784
6794
|
}
|
|
6785
|
-
function
|
|
6786
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e4, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
6787
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
6795
|
+
function k_(e4) {
|
|
6796
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e4, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(O_(i2), "</button>") : "";
|
|
6797
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(O_(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
6788
6798
|
var o2;
|
|
6789
6799
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
6790
6800
|
}
|
|
6791
6801
|
}
|
|
6792
|
-
var
|
|
6793
|
-
function
|
|
6794
|
-
return
|
|
6802
|
+
var A_;
|
|
6803
|
+
function j_() {
|
|
6804
|
+
return A_ ? A_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
6795
6805
|
}
|
|
6796
|
-
function
|
|
6806
|
+
function M_(e4 = j_()) {
|
|
6797
6807
|
let t2 = e4 ? "dark" : "light";
|
|
6798
6808
|
return document.documentElement.setAttribute("data-theme", t2), t2;
|
|
6799
6809
|
}
|
|
6800
|
-
function
|
|
6801
|
-
|
|
6810
|
+
function N_(e4) {
|
|
6811
|
+
M_();
|
|
6802
6812
|
try {
|
|
6803
6813
|
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
|
|
6804
|
-
|
|
6814
|
+
A_ || e4 == null || e4(M_(t2.matches));
|
|
6805
6815
|
});
|
|
6806
6816
|
} catch (e5) {
|
|
6807
6817
|
}
|
|
6808
6818
|
}
|
|
6809
|
-
function
|
|
6819
|
+
function P_(e4, t2) {
|
|
6810
6820
|
var n2, r2;
|
|
6811
6821
|
let i2 = (e5) => {
|
|
6812
6822
|
let n3 = e5 == null ? void 0 : e5.theme;
|
|
6813
6823
|
if (n3 !== "light" && n3 !== "dark") return;
|
|
6814
|
-
|
|
6815
|
-
let r3 = document.documentElement.getAttribute("data-theme"), i3 =
|
|
6824
|
+
A_ = n3;
|
|
6825
|
+
let r3 = document.documentElement.getAttribute("data-theme"), i3 = M_(n3 === "dark");
|
|
6816
6826
|
i3 !== r3 && (t2 == null || t2(i3));
|
|
6817
6827
|
};
|
|
6818
6828
|
(n2 = e4.addEventListener) == null || n2.call(e4, "hostcontextchanged", i2), i2((r2 = e4.getHostContext) == null ? void 0 : r2.call(e4));
|
|
6819
6829
|
}
|
|
6820
|
-
|
|
6821
|
-
|
|
6830
|
+
var F_ = ["inline", "fullscreen"];
|
|
6831
|
+
function I_(e4) {
|
|
6832
|
+
var t2;
|
|
6833
|
+
return (t2 = e4.getHostContext) == null ? void 0 : t2.call(e4);
|
|
6834
|
+
}
|
|
6835
|
+
function L_(e4) {
|
|
6836
|
+
var t2;
|
|
6837
|
+
let n2 = (t2 = I_(e4)) == null ? void 0 : t2.availableDisplayModes;
|
|
6838
|
+
return Array.isArray(n2) ? n2 : [];
|
|
6839
|
+
}
|
|
6840
|
+
var R_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <polyline points="5,1 1,1 1,5"/>\n <polyline points="11,1 15,1 15,5"/>\n <polyline points="5,15 1,15 1,11"/>\n <polyline points="11,15 15,15 15,11"/>\n </svg>', z_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <polyline points="1,5 5,5 5,1"/>\n <polyline points="15,5 11,5 11,1"/>\n <polyline points="1,11 5,11 5,15"/>\n <polyline points="15,11 11,11 11,15"/>\n </svg>', B_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" aria-hidden="true">\n <rect x="1" y="2.5" width="14" height="11" rx="1.5"/>\n <rect x="8" y="8" width="5.5" height="4" rx="0.8" fill="currentColor" stroke="none"/>\n </svg>', V_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <rect x="1" y="2.5" width="14" height="11" rx="1.5"/>\n <polyline points="6,6 10,10"/>\n <polyline points="6,9.5 6,6 9.5,6"/>\n </svg>';
|
|
6841
|
+
function H_(e4, t2, n2 = [], r2 = {}) {
|
|
6842
|
+
var i2;
|
|
6822
6843
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
6823
6844
|
let a2 = document.createElement("button");
|
|
6824
|
-
a2.id = "btn-fullscreen", a2.className = "pan-btn pan-btn--fullscreen", a2.
|
|
6825
|
-
let o2 =
|
|
6845
|
+
a2.id = "btn-fullscreen", a2.type = "button", a2.className = "pan-btn pan-btn--fullscreen", a2.innerHTML = R_, a2.hidden = true;
|
|
6846
|
+
let o2 = null;
|
|
6847
|
+
r2.pip && (o2 = document.createElement("button"), o2.id = "btn-pip", o2.type = "button", o2.className = "pan-btn pan-btn--pip", o2.innerHTML = B_, o2.hidden = true);
|
|
6848
|
+
let s2 = ["param-controls", "aspect-filter", "controls-panel", "mode-badge"];
|
|
6826
6849
|
function c2() {
|
|
6827
6850
|
if (document.getElementById("fs-bottom-bar") || !n2.length) return;
|
|
6828
6851
|
let e5 = document.getElementById("app");
|
|
@@ -6855,59 +6878,59 @@ function N_(e4, t2, n2 = []) {
|
|
|
6855
6878
|
}
|
|
6856
6879
|
e5.remove();
|
|
6857
6880
|
}
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
|
|
6881
|
+
let u2 = "inline";
|
|
6882
|
+
function d2(t3) {
|
|
6883
|
+
let n3 = u2 === "fullscreen", r3 = t3 === "fullscreen";
|
|
6884
|
+
u2 = t3, document.body.classList.toggle("is-fullscreen", r3), document.body.classList.toggle("is-pip", t3 === "pip"), document.documentElement.setAttribute("data-display-mode", t3), a2.innerHTML = r3 ? z_ : R_;
|
|
6885
|
+
let i3 = r3 ? "Exit fullscreen" : "Enter fullscreen";
|
|
6886
|
+
if (a2.setAttribute("aria-label", i3), a2.title = r3 ? "Exit fullscreen (Esc)" : i3, o2) {
|
|
6887
|
+
let e5 = t3 === "pip";
|
|
6888
|
+
o2.innerHTML = e5 ? V_ : B_;
|
|
6889
|
+
let n4 = e5 ? "Return to the conversation" : "Pop out (picture-in-picture)";
|
|
6890
|
+
o2.setAttribute("aria-label", n4), o2.title = n4;
|
|
6891
|
+
}
|
|
6892
|
+
r3 && !n3 && (c2(), U_(e4)), !r3 && n3 && l2();
|
|
6861
6893
|
}
|
|
6862
|
-
|
|
6863
|
-
|
|
6864
|
-
|
|
6865
|
-
|
|
6866
|
-
|
|
6867
|
-
|
|
6868
|
-
|
|
6869
|
-
|
|
6870
|
-
|
|
6871
|
-
|
|
6894
|
+
function f2() {
|
|
6895
|
+
var n3, r3;
|
|
6896
|
+
let i3 = L_(e4);
|
|
6897
|
+
a2.hidden = !i3.includes("fullscreen"), o2 && (o2.hidden = !i3.includes("pip")), (!a2.hidden || o2 && !o2.hidden) && (t2.hidden = false);
|
|
6898
|
+
let s3 = (n3 = (r3 = I_(e4)) == null ? void 0 : r3.displayMode) == null ? "inline" : n3;
|
|
6899
|
+
s3 !== u2 && d2(s3);
|
|
6900
|
+
}
|
|
6901
|
+
async function p2(t3) {
|
|
6902
|
+
if (!(t3 !== "inline" && !L_(e4).includes(t3))) try {
|
|
6903
|
+
var n3;
|
|
6904
|
+
let r3 = await e4.requestDisplayMode({ mode: t3 });
|
|
6905
|
+
d2((n3 = r3 == null ? void 0 : r3.mode) == null ? u2 : n3);
|
|
6872
6906
|
} catch (e5) {
|
|
6873
6907
|
console.warn("[AppChrome] requestDisplayMode failed:", e5);
|
|
6874
6908
|
}
|
|
6875
|
-
}), document.addEventListener("keydown", async (t3) => {
|
|
6876
|
-
if (t3.key === "Escape" && document.body.classList.contains("is-fullscreen")) {
|
|
6877
|
-
t3.preventDefault();
|
|
6878
|
-
try {
|
|
6879
|
-
var n3;
|
|
6880
|
-
let t4 = await e4.requestDisplayMode({ mode: "inline" });
|
|
6881
|
-
u2((n3 = t4 == null ? void 0 : t4.mode) == null ? "inline" : n3);
|
|
6882
|
-
} catch (e5) {
|
|
6883
|
-
console.warn("[AppChrome] Escape fullscreen failed:", e5);
|
|
6884
|
-
}
|
|
6885
|
-
}
|
|
6886
|
-
}), (r2 = e4.addEventListener) == null || r2.call(e4, "hostcontextchanged", (e5) => {
|
|
6887
|
-
var t3;
|
|
6888
|
-
u2((t3 = e5 == null ? void 0 : e5.displayMode) == null ? "inline" : t3);
|
|
6889
|
-
});
|
|
6890
|
-
let d2 = (i2 = e4.getHostContext) == null ? void 0 : i2.call(e4);
|
|
6891
|
-
d2 != null && d2.displayMode && u2(d2.displayMode), t2.insertBefore(a2, t2.firstChild), t2.removeAttribute("hidden");
|
|
6892
|
-
function f2() {
|
|
6893
|
-
let e5 = document.getElementById("fs-hint-banner");
|
|
6894
|
-
e5 && e5.remove();
|
|
6895
|
-
let t3 = document.createElement("div");
|
|
6896
|
-
t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(t3), requestAnimationFrame(() => {
|
|
6897
|
-
t3.style.opacity = "1";
|
|
6898
|
-
}), setTimeout(() => {
|
|
6899
|
-
t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
|
|
6900
|
-
}, 4e3);
|
|
6901
6909
|
}
|
|
6910
|
+
a2.addEventListener("click", () => {
|
|
6911
|
+
p2(u2 === "fullscreen" ? "inline" : "fullscreen");
|
|
6912
|
+
}), o2 == null || o2.addEventListener("click", () => {
|
|
6913
|
+
p2(u2 === "pip" ? "inline" : "pip");
|
|
6914
|
+
}), document.addEventListener("keydown", (e5) => {
|
|
6915
|
+
e5.key !== "Escape" || u2 !== "fullscreen" || (e5.preventDefault(), p2("inline"));
|
|
6916
|
+
}), (i2 = e4.addEventListener) == null || i2.call(e4, "hostcontextchanged", f2), o2 && t2.insertBefore(o2, t2.firstChild), t2.insertBefore(a2, t2.firstChild), d2("inline"), f2();
|
|
6902
6917
|
}
|
|
6903
|
-
function
|
|
6918
|
+
function U_(e4) {
|
|
6919
|
+
var t2, n2;
|
|
6920
|
+
(t2 = document.getElementById("fs-hint-banner")) == null || t2.remove();
|
|
6921
|
+
let r2 = (n2 = I_(e4)) == null ? void 0 : n2.deviceCapabilities, i2 = !!(r2 != null && r2.touch) && (r2 == null ? void 0 : r2.hover) === false, a2 = document.createElement("div");
|
|
6922
|
+
a2.id = "fs-hint-banner", a2.className = "fs-hint-banner", a2.setAttribute("role", "status"), a2.textContent = i2 ? "Tap the collapse button to return to the chat" : "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(a2), requestAnimationFrame(() => a2.classList.add("visible")), setTimeout(() => {
|
|
6923
|
+
a2.classList.remove("visible"), setTimeout(() => a2.remove(), 350);
|
|
6924
|
+
}, 4e3);
|
|
6925
|
+
}
|
|
6926
|
+
function W_(e4, t2) {
|
|
6904
6927
|
e4.ontoolcancelled = (e5) => {
|
|
6905
6928
|
var n2, r2, i2;
|
|
6906
6929
|
let a2 = (n2 = e5.reason) == null ? "Tool call was cancelled" : n2;
|
|
6907
|
-
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false),
|
|
6930
|
+
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), G_(a2);
|
|
6908
6931
|
};
|
|
6909
6932
|
}
|
|
6910
|
-
function
|
|
6933
|
+
function G_(e4) {
|
|
6911
6934
|
var t2;
|
|
6912
6935
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
6913
6936
|
let n2 = document.createElement("div");
|
|
@@ -6915,23 +6938,37 @@ function F_(e4) {
|
|
|
6915
6938
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
6916
6939
|
}, 3e3);
|
|
6917
6940
|
}
|
|
6918
|
-
function
|
|
6941
|
+
function K_(e4) {
|
|
6919
6942
|
var t2;
|
|
6920
|
-
|
|
6921
|
-
|
|
6922
|
-
|
|
6923
|
-
|
|
6924
|
-
|
|
6925
|
-
|
|
6926
|
-
|
|
6927
|
-
|
|
6928
|
-
|
|
6929
|
-
|
|
6930
|
-
|
|
6931
|
-
|
|
6932
|
-
|
|
6943
|
+
let n2 = document.documentElement, r2 = (e5, t3) => {
|
|
6944
|
+
typeof t3 == "number" && Number.isFinite(t3) && t3 > 0 ? n2.style.setProperty(e5, "".concat(t3, "px")) : n2.style.removeProperty(e5);
|
|
6945
|
+
}, i2 = (e5, t3) => {
|
|
6946
|
+
t3 === void 0 ? n2.removeAttribute(e5) : n2.setAttribute(e5, t3 ? "true" : "false");
|
|
6947
|
+
};
|
|
6948
|
+
function a2() {
|
|
6949
|
+
var t3, a3, o2;
|
|
6950
|
+
let s2 = I_(e4);
|
|
6951
|
+
if (!s2) return;
|
|
6952
|
+
let c2 = (t3 = s2.containerDimensions) == null ? {} : t3;
|
|
6953
|
+
r2("--host-width", c2.width), r2("--host-max-width", c2.maxWidth), r2("--host-height", c2.height), r2("--host-max-height", c2.maxHeight);
|
|
6954
|
+
let l2 = (a3 = s2.safeAreaInsets) == null ? {} : a3;
|
|
6955
|
+
for (let e5 of ["top", "right", "bottom", "left"]) {
|
|
6956
|
+
let t4 = l2[e5];
|
|
6957
|
+
n2.style.setProperty("--safe-".concat(e5), typeof t4 == "number" && t4 > 0 ? "".concat(t4, "px") : "0px");
|
|
6958
|
+
}
|
|
6959
|
+
let u2 = l2.bottom;
|
|
6960
|
+
n2.toggleAttribute("data-safe-bottom", typeof u2 == "number" && u2 > 0), typeof s2.platform == "string" && n2.setAttribute("data-platform", s2.platform);
|
|
6961
|
+
let d2 = s2.deviceCapabilities;
|
|
6962
|
+
i2("data-touch", d2 == null ? void 0 : d2.touch), i2("data-hover", d2 == null ? void 0 : d2.hover);
|
|
6963
|
+
let f2 = s2.styles;
|
|
6964
|
+
f2 != null && f2.variables && $g(f2.variables, n2), !(f2 == null || (o2 = f2.css) == null) && o2.fonts && e_(f2.css.fonts);
|
|
6965
|
+
}
|
|
6966
|
+
a2(), (t2 = e4.addEventListener) == null || t2.call(e4, "hostcontextchanged", a2);
|
|
6967
|
+
}
|
|
6968
|
+
var q_ = /^(\d{4})-(\d{2})-(\d{2})[T ](\d{2}):(\d{2})(?::(\d{2}))?(?:\.\d+)?$/;
|
|
6969
|
+
function J_(e4, t2) {
|
|
6933
6970
|
if (!e4) return null;
|
|
6934
|
-
let n2 =
|
|
6971
|
+
let n2 = q_.exec(e4.trim());
|
|
6935
6972
|
if (n2) {
|
|
6936
6973
|
let [, e5, t3, r3, i2, a2, o2] = n2, s2 = new Date(Date.UTC(+e5, t3 - 1, +r3, +i2, +a2, o2 ? +o2 : 0));
|
|
6937
6974
|
return isNaN(s2.getTime()) ? null : { date: s2, timeZone: "UTC" };
|
|
@@ -6939,44 +6976,44 @@ function R_(e4, t2) {
|
|
|
6939
6976
|
let r2 = new Date(e4);
|
|
6940
6977
|
return isNaN(r2.getTime()) ? null : { date: r2, timeZone: t2 || "UTC" };
|
|
6941
6978
|
}
|
|
6942
|
-
function
|
|
6979
|
+
function Y_(e4) {
|
|
6943
6980
|
var t2;
|
|
6944
6981
|
if (!e4) return "";
|
|
6945
6982
|
let n2 = [], r2 = (t2 = e4.location) == null ? void 0 : t2.trim();
|
|
6946
6983
|
if (r2 ? n2.push(r2) : typeof e4.latitude == "number" && typeof e4.longitude == "number" && n2.push("".concat(e4.latitude.toFixed(2), ", ").concat(e4.longitude.toFixed(2))), e4.datetime) {
|
|
6947
|
-
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e4.datetime.trim()) ?
|
|
6984
|
+
let t3 = /^\d{4}-\d{2}-\d{2}/.test(e4.datetime.trim()) ? J_(e4.datetime, e4.timezone) : null;
|
|
6948
6985
|
t3 ? n2.push(t3.date.toLocaleString("en-US", { timeZone: t3.timeZone, day: "numeric", month: "short", year: "numeric", hour: "numeric", minute: "2-digit" })) : n2.push(e4.datetime);
|
|
6949
6986
|
}
|
|
6950
6987
|
return n2.join(" \xB7 ");
|
|
6951
6988
|
}
|
|
6952
|
-
function
|
|
6953
|
-
let r2 =
|
|
6989
|
+
function X_(e4, t2, n2 = "Chart") {
|
|
6990
|
+
let r2 = Y_(t2);
|
|
6954
6991
|
return r2 ? "".concat(n2, ": ").concat(r2, "\n\n").concat(e4) : e4;
|
|
6955
6992
|
}
|
|
6956
|
-
var
|
|
6957
|
-
function
|
|
6958
|
-
return
|
|
6993
|
+
var Z_ = document.getElementById("loading-state"), Q_ = document.getElementById("vedic-container"), $_ = document.getElementById("info-panel"), ev = document.getElementById("chart-status"), tv = new t_({ name: "Vedic Chart Explorer", version: "1.0.0" }, { availableDisplayModes: F_ }), $ = null, nv = "dark", rv = false;
|
|
6994
|
+
function iv() {
|
|
6995
|
+
return M_();
|
|
6959
6996
|
}
|
|
6960
|
-
|
|
6961
|
-
function
|
|
6962
|
-
if (
|
|
6997
|
+
N_((e4) => void hv(e4));
|
|
6998
|
+
function av(e4) {
|
|
6999
|
+
if (ev) {
|
|
6963
7000
|
if (!e4) {
|
|
6964
|
-
|
|
7001
|
+
ev.classList.remove("visible");
|
|
6965
7002
|
return;
|
|
6966
7003
|
}
|
|
6967
|
-
|
|
7004
|
+
ev.textContent = "\xB7 ".concat(e4), ev.classList.add("visible");
|
|
6968
7005
|
}
|
|
6969
7006
|
}
|
|
6970
|
-
|
|
6971
|
-
async function
|
|
6972
|
-
e4 =
|
|
7007
|
+
a_(av);
|
|
7008
|
+
async function ov(e4) {
|
|
7009
|
+
e4 = X_(e4, $ == null ? void 0 : $._birth_params, "Vedic chart");
|
|
6973
7010
|
try {
|
|
6974
|
-
(await
|
|
7011
|
+
(await tv.sendMessage({ role: "user", content: [{ type: "text", text: e4 }] })).isError && console.error("[VedicChart] Host rejected sendMessage");
|
|
6975
7012
|
} catch (e5) {
|
|
6976
7013
|
console.error("[VedicChart] sendMessage failed:", e5);
|
|
6977
7014
|
}
|
|
6978
7015
|
}
|
|
6979
|
-
async function
|
|
7016
|
+
async function sv(e4) {
|
|
6980
7017
|
var t2, n2;
|
|
6981
7018
|
if (!$) return;
|
|
6982
7019
|
let r2 = (t2 = $.lagna) == null ? "unknown" : t2, i2 = (n2 = $.ayanamsa) == null ? "Lahiri" : n2;
|
|
@@ -6986,12 +7023,12 @@ async function Z_(e4) {
|
|
|
6986
7023
|
var t4, n4, r3, i3;
|
|
6987
7024
|
return "".concat(e5.planet, " ").concat(e5.rashi_degree.toFixed(1), "\xB0").concat(e5.is_retrograde ? " (retrograde)" : "", " \u2014 Nakshatra ").concat((t4 = (n4 = e5.nakshatra) == null ? void 0 : n4.name) == null ? "" : t4, " pada ").concat((r3 = (i3 = e5.nakshatra) == null ? void 0 : i3.pada) == null ? "" : r3);
|
|
6988
7025
|
}).join("; ");
|
|
6989
|
-
await
|
|
7026
|
+
await ov("Interpret the rashi ".concat(t3, " in this Vedic (Jyotish) chart \u2014 Ayanamsa: ").concat(i2, ", Lagna: ").concat(r2, ".\n\n") + (n3 ? "This is the Lagna (Ascendant) rashi. " : "") + (s3 ? "Planets placed here: ".concat(s3, ".\n\n") : "This rashi is unoccupied.\n\n") + "Please explain the themes of this rashi".concat(n3 ? " as the Lagna" : "", ", and interpret each placed planet's sidereal sign, nakshatra, and pada in the context of this birth chart."));
|
|
6990
7027
|
return;
|
|
6991
7028
|
}
|
|
6992
7029
|
if (e4.type === "overview") {
|
|
6993
7030
|
var s2;
|
|
6994
|
-
await
|
|
7031
|
+
await ov("Vedic chart \u2014 Ayanamsa: ".concat(i2, ". Lagna: ").concat(r2, ". Planets: ").concat(((s2 = $.planets) == null ? [] : s2).map((e5) => {
|
|
6995
7032
|
var t3, n3, r3, i3;
|
|
6996
7033
|
return "".concat(e5.planet, " in ").concat(e5.rashi_western, " ").concat(e5.rashi_degree.toFixed(1), "\xB0 (").concat((t3 = (n3 = e5.nakshatra) == null ? void 0 : n3.name) == null ? "" : t3, " pada ").concat((r3 = (i3 = e5.nakshatra) == null ? void 0 : i3.pada) == null ? "" : r3, ")").concat(e5.is_retrograde ? " \u211E" : "");
|
|
6997
7034
|
}).join(", "), ".\n\nPlease give a comprehensive interpretation of this Jyotish birth chart, covering the Lagna, chart lord, key planetary placements, and overall life themes."));
|
|
@@ -7000,87 +7037,87 @@ async function Z_(e4) {
|
|
|
7000
7037
|
if (e4.type === "moon") {
|
|
7001
7038
|
var c2, l2, u2, d2;
|
|
7002
7039
|
let e5 = ((c2 = $.planets) == null ? [] : c2).find((e6) => e6.planet === "Moon");
|
|
7003
|
-
await
|
|
7040
|
+
await ov(e5 ? "Focus on the Moon in ".concat(e5.rashi_western, " (").concat(e5.rashi, "), ").concat(e5.rashi_degree.toFixed(2), "\xB0, in Nakshatra ").concat((l2 = e5.nakshatra) == null ? void 0 : l2.name, " (lord: ").concat((u2 = e5.nakshatra) == null ? void 0 : u2.lord, ", pada: ").concat((d2 = e5.nakshatra) == null ? void 0 : d2.pada, "). Interpret the Moon's placement for emotional nature, mind, mother, and public life. Include the Nakshatra's influence.") : "Interpret the Moon's placement in this Vedic chart, including Nakshatra detail.");
|
|
7004
7041
|
return;
|
|
7005
7042
|
}
|
|
7006
7043
|
}
|
|
7007
|
-
function
|
|
7044
|
+
function cv(e4, t2, n2) {
|
|
7008
7045
|
var r2;
|
|
7009
|
-
let i2 = (r2 =
|
|
7010
|
-
|
|
7046
|
+
let i2 = (r2 = g_[e4]) == null ? "" : r2;
|
|
7047
|
+
av("".concat(e4).concat(t2 ? " \xB7 Lagna" : "").concat(i2 ? " \xB7 " + i2 : ""));
|
|
7011
7048
|
}
|
|
7012
|
-
function
|
|
7049
|
+
function lv(e4) {
|
|
7013
7050
|
return '\n <div class="vedic-header">\n <span class="vedic-title">Jyotish Rashi Chart</span>\n <span class="vedic-ayanamsa-badge">'.concat(e4.ayanamsa || "Lahiri", "</span>\n </div>\n ");
|
|
7014
7051
|
}
|
|
7015
|
-
function
|
|
7052
|
+
function uv(e4) {
|
|
7016
7053
|
var t2, n2, r2, i2, a2, o2;
|
|
7017
|
-
$ = e4,
|
|
7054
|
+
$ = e4, Z_.setAttribute("hidden", ""), Q_.removeAttribute("hidden");
|
|
7018
7055
|
let s2 = e4._svg;
|
|
7019
7056
|
if (!s2) {
|
|
7020
|
-
|
|
7057
|
+
pv("Vedic chart render unavailable \u2014 the server did not return an SVG.", mv);
|
|
7021
7058
|
return;
|
|
7022
7059
|
}
|
|
7023
7060
|
let c2 = document.getElementById("vedic-header-wrap");
|
|
7024
7061
|
if (!c2) {
|
|
7025
7062
|
var l2;
|
|
7026
|
-
c2 = document.createElement("div"), c2.id = "vedic-header-wrap", (l2 =
|
|
7063
|
+
c2 = document.createElement("div"), c2.id = "vedic-header-wrap", (l2 = Q_.parentElement) == null || l2.insertBefore(c2, Q_);
|
|
7027
7064
|
}
|
|
7028
|
-
c2.innerHTML =
|
|
7065
|
+
c2.innerHTML = lv(e4), v_(Q_, s2, e4, { onSignClick: cv, onAskClaude: sv });
|
|
7029
7066
|
let u2 = document.getElementById("vedic-action-bar");
|
|
7030
7067
|
if (!u2) {
|
|
7031
7068
|
var d2;
|
|
7032
7069
|
u2 = document.createElement("div"), u2.id = "vedic-action-bar", u2.className = "vedic-action-bar";
|
|
7033
7070
|
let e5 = document.querySelector("#fs-bottom-bar [data-column='right']");
|
|
7034
|
-
e5 ? e5.appendChild(u2) : (d2 =
|
|
7071
|
+
e5 ? e5.appendChild(u2) : (d2 = Q_.parentElement) == null || d2.insertBefore(u2, Q_);
|
|
7035
7072
|
}
|
|
7036
|
-
u2.innerHTML = '\n <button class="action-btn action-btn--primary" id="vedic-interpret-btn">\u2726 Interpret this chart</button>\n <button class="action-btn" id="vedic-lagna-btn">Lagna & Ascendant</button>\n <button class="action-btn" id="vedic-moon-btn">Moon & Nakshatra</button>\n ', (t2 = u2.querySelector("#vedic-interpret-btn")) == null || t2.addEventListener("click", () => void
|
|
7073
|
+
u2.innerHTML = '\n <button class="action-btn action-btn--primary" id="vedic-interpret-btn">\u2726 Interpret this chart</button>\n <button class="action-btn" id="vedic-lagna-btn">Lagna & Ascendant</button>\n <button class="action-btn" id="vedic-moon-btn">Moon & Nakshatra</button>\n ', (t2 = u2.querySelector("#vedic-interpret-btn")) == null || t2.addEventListener("click", () => void sv({ type: "overview", data: {} })), (n2 = u2.querySelector("#vedic-lagna-btn")) == null || n2.addEventListener("click", () => void sv({ type: "sign", data: { sign: e4.lagna, is_lagna: true } })), (r2 = u2.querySelector("#vedic-moon-btn")) == null || r2.addEventListener("click", () => void sv({ type: "moon", data: {} }));
|
|
7037
7074
|
let f2 = ((i2 = e4.planets) == null ? [] : i2).map((e5) => '<div class="info-row"><span class="info-label">'.concat(e5.planet, '</span><span class="info-value">').concat(e5.rashi_western, " ").concat(e5.rashi_degree.toFixed(1), "\xB0").concat(e5.is_retrograde ? " \u211E" : "", "</span></div>")).join("");
|
|
7038
|
-
|
|
7075
|
+
$_.innerHTML = '\n <div class="info-row"><span class="info-label">Lagna</span><span class="info-value">'.concat((a2 = e4.lagna) == null ? "\u2014" : a2, '</span></div>\n <div class="info-row"><span class="info-label">Ayanamsa</span><span class="info-value">').concat((o2 = e4.ayanamsa) == null ? "Lahiri" : o2, "</span></div>\n ").concat(f2, "\n "), $_.removeAttribute("hidden"), E_("vedic-chart");
|
|
7039
7076
|
}
|
|
7040
|
-
var
|
|
7041
|
-
function
|
|
7042
|
-
|
|
7077
|
+
var dv;
|
|
7078
|
+
function fv() {
|
|
7079
|
+
dv && (clearTimeout(dv), dv = void 0);
|
|
7043
7080
|
}
|
|
7044
|
-
function
|
|
7045
|
-
|
|
7081
|
+
function pv(e4, t2) {
|
|
7082
|
+
fv(), Z_.setAttribute("hidden", ""), k_({ container: Q_, message: e4, onRetry: t2 });
|
|
7046
7083
|
}
|
|
7047
|
-
function
|
|
7048
|
-
|
|
7049
|
-
|
|
7050
|
-
}, 3e4),
|
|
7084
|
+
function mv() {
|
|
7085
|
+
fv(), Q_.setAttribute("hidden", ""), Z_.removeAttribute("hidden"), dv = setTimeout(() => {
|
|
7086
|
+
pv("The Vedic chart didn't load. Tap to try again.", mv);
|
|
7087
|
+
}, 3e4), tv.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the Vedic chart." }] }).catch(() => {
|
|
7051
7088
|
});
|
|
7052
7089
|
}
|
|
7053
|
-
async function
|
|
7054
|
-
if (!(e4 ===
|
|
7055
|
-
|
|
7090
|
+
async function hv(e4) {
|
|
7091
|
+
if (!(e4 === nv || rv || !($ != null && $._birth_params))) {
|
|
7092
|
+
rv = true, nv = e4;
|
|
7056
7093
|
try {
|
|
7057
7094
|
var t2, n2, r2, i2;
|
|
7058
|
-
let a2 = $._birth_params, o2 =
|
|
7059
|
-
o2 && ((i2 = o2.planets) != null && i2.length || o2._svg) &&
|
|
7095
|
+
let a2 = $._birth_params, o2 = D_(await tv.callServerTool({ name: "vedic_chart_recalculate", arguments: { datetime: a2.datetime, latitude: (t2 = a2.latitude) == null ? void 0 : t2, longitude: (n2 = a2.longitude) == null ? void 0 : n2, ayanamsa: (r2 = a2.ayanamsa) == null ? void 0 : r2, theme: e4, ...$._render_token ? { render_token: $._render_token } : {} } }));
|
|
7096
|
+
o2 && ((i2 = o2.planets) != null && i2.length || o2._svg) && uv(o2);
|
|
7060
7097
|
} catch (e5) {
|
|
7061
7098
|
console.error("[VedicChart] Theme re-fetch failed:", e5);
|
|
7062
7099
|
} finally {
|
|
7063
|
-
|
|
7100
|
+
rv = false;
|
|
7064
7101
|
}
|
|
7065
7102
|
}
|
|
7066
7103
|
}
|
|
7067
|
-
|
|
7068
|
-
|
|
7104
|
+
tv.ontoolresult = (e4) => {
|
|
7105
|
+
fv();
|
|
7069
7106
|
try {
|
|
7070
|
-
let t2 =
|
|
7071
|
-
if (((t2 == null ? void 0 : t2._theme) === "light" || (t2 == null ? void 0 : t2._theme) === "dark") && (
|
|
7072
|
-
|
|
7107
|
+
let t2 = D_(e4);
|
|
7108
|
+
if (((t2 == null ? void 0 : t2._theme) === "light" || (t2 == null ? void 0 : t2._theme) === "dark") && (nv = t2._theme), !t2 || !t2.planets) {
|
|
7109
|
+
pv("Vedic chart data could not be parsed from the server response.", mv);
|
|
7073
7110
|
return;
|
|
7074
7111
|
}
|
|
7075
|
-
|
|
7112
|
+
uv(t2), hv(iv());
|
|
7076
7113
|
} catch (e5) {
|
|
7077
|
-
|
|
7114
|
+
pv("An error occurred while rendering the Vedic chart.", mv), console.error("[VedicChart] Render error:", e5);
|
|
7078
7115
|
}
|
|
7079
|
-
},
|
|
7080
|
-
|
|
7116
|
+
}, W_(tv, { loadingEl: Z_, contentEl: Q_, statusFn: av, paramControls: null }), dv = setTimeout(() => {
|
|
7117
|
+
pv("Vedic chart data is taking longer than expected.", mv);
|
|
7081
7118
|
}, 3e4), (async () => {
|
|
7082
7119
|
try {
|
|
7083
|
-
await
|
|
7120
|
+
await tv.connect(), H_(tv, document.getElementById("pan-zoom-controls"), ["info-panel", "vedic-action-bar"]), K_(tv), P_(tv, (e4) => void hv(e4));
|
|
7084
7121
|
} catch (e4) {
|
|
7085
7122
|
console.error("[VedicChart] connect() failed:", e4);
|
|
7086
7123
|
}
|