@openephemeris/mcp-server 3.14.0 → 3.16.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 +25 -0
- package/README.md +8 -6
- package/dist/prompts.js +16 -16
- package/dist/server-sse.js +65 -14
- package/dist/tools/apps/bi-wheel-app.js +12 -3
- package/dist/tools/apps/bodygraph-app.d.ts +9 -5
- package/dist/tools/apps/bodygraph-app.js +207 -9
- package/dist/tools/apps/chart-wheel-app.js +29 -5
- package/dist/tools/apps/location-tools.js +38 -5
- package/dist/tools/apps/moon-phase-app.js +7 -1
- package/dist/tools/dev.js +102 -68
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.js +15 -1
- package/dist/tools/specialized/bazi.js +6 -6
- package/dist/tools/specialized/bi_wheel.js +3 -2
- package/dist/tools/specialized/chart_wheel.js +3 -2
- package/dist/tools/specialized/comparative.js +2 -2
- package/dist/tools/specialized/hd_bodygraph.js +4 -3
- package/dist/ui/bazi.html +21 -21
- package/dist/ui/bi-wheel.html +335 -293
- package/dist/ui/bodygraph.html +1645 -1615
- package/dist/ui/chart-wheel.html +1966 -1912
- package/dist/ui/moon-phase.html +72 -49
- package/dist/ui/transit-timeline.html +1 -1
- package/dist/ui/vedic-chart.html +21 -21
- package/package.json +5 -1
package/dist/ui/moon-phase.html
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
<meta name="color-scheme" content="dark light" />
|
|
7
7
|
<meta name="mcp-app-preferred-height" content="560" />
|
|
8
8
|
<title>Moon Phase Explorer</title>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
<!-- External Google Fonts removed: Claude.ai sandbox enforces hardcoded
|
|
10
|
+
frame-src 'self' blob: data: and blocks external CDN fetches at
|
|
11
|
+
iframe render time. Styles fall back to the system font stack. -->
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
<style>*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#090b0f;--bg-secondary:#12161d;--bg-tertiary:#1c222b;--bg-hover:#272e3b;--border:#282e38;--border-subtle:#1d2229;--text-primary:#e1e5eb;--text-secondary:#9da5b1;--text-muted:#6c727b;--accent:#62b3ff;--accent-warm:#e6ac3d;--voc-warn:#f6922e;--radius:8px;--radius-sm:4px;--radius-lg:12px;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .036047 .0438664 .059078);--bg-secondary:color(display-p3 .0739679 .0866504 .111186);--bg-tertiary:color(display-p3 .114361 .13221 .166818);--bg-hover:color(display-p3 .15679 .180114 .225406);--border:color(display-p3 .161376 .180145 .216325);--border-subtle:color(display-p3 .118728 .13221 .158123);--text-primary:color(display-p3 .883958 .896627 .920543);--text-secondary:color(display-p3 .622745 .646433 .6914);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .446063 .694439 1.01077);--accent-warm:color(display-p3 .866978 .684443 .324483);--voc-warn:color(display-p3 .910067 .591092 .274641)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(3.02674% -.179462 -2.15476);--bg-secondary:lab(7.16596% -.441141 -5.41423);--bg-tertiary:lab(12.9118% -.60384 -7.27841);--bg-hover:lab(18.6882% -.727877 -9.08878);--border:lab(18.7165% -.689313 -7.30941);--border-subtle:lab(12.9391% -.548743 -5.49436);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(67.45% -.932217 -7.41489);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(70.4043% -7.21234 -50.7672);--accent-warm:lab(74.5248% 14.3487 62.5064);--voc-warn:lab(70.3313% 33.71 65.3029)}}@media (prefers-color-scheme:light){:root{--bg-primary:#f3f5f9;--bg-secondary:#e7ebf2;--bg-tertiary:#d8dee8;--bg-hover:#d0d8e5;--border:#bdc5d1;--border-subtle:#d2d8e2;--text-primary:#0f1216;--text-secondary:#414853;--text-muted:#6c727b;--accent:#0065b2;--accent-warm:#966800;--voc-warn:#a95a00;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .95471 .961142 .973263);--bg-secondary:color(display-p3 .909797 .922535 .946581);--bg-tertiary:color(display-p3 .852455 .871315 .906983);--bg-hover:color(display-p3 .821139 .84609 .893374);--border:color(display-p3 .745559 .770059 .816515);--border-subtle:color(display-p3 .826933 .845684 .881152);--text-primary:color(display-p3 .0608605 .0691527 .0850621);--text-secondary:color(display-p3 .261513 .281801 .32064);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .143802 .388951 .683672);--accent-warm:color(display-p3 .596632 .396992 -.158844);--voc-warn:color(display-p3 .673365 .329149 -.157701)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(96.5044% -.267148 -1.87216);--bg-secondary:lab(93.0079% -.518024 -3.73493);--bg-tertiary:lab(88.3503% -.749856 -5.58736);--bg-hover:lab(86.0117% -.963002 -7.43048);--border:lab(79.0511% -.952899 -7.42528);--border-subtle:lab(86.0302% -.748128 -5.58645);--text-primary:lab(5.23796% -.285208 -3.0582);--text-secondary:lab(30.3224% -.794604 -7.35167);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(41.1205% -1.70796 -50.1423);--accent-warm:lab(47.6194% 20.1868 104.51);--voc-warn:lab(46.8395% 41.0975 106.287)}}}html,body{width:100%;height:100%;min-height:480px;font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);font-size:13px;line-height:1.5;overflow-y:auto}body{flex-direction:column;display:flex}#app{flex-direction:column;flex:1;display:flex;overflow:hidden}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}#loading-state[hidden]{display:none}.oe-loader{width:48px;height:48px;animation:1.2s linear infinite spin}.oe-loader circle{fill:none;stroke:var(--accent);stroke-width:3px;stroke-dasharray:200;stroke-dashoffset:80px;stroke-linecap:round}@keyframes spin{to{transform:rotate(360deg)}}.chart-status{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);color:var(--text-muted);opacity:0;z-index:50;padding:6px 14px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.chart-status.visible{opacity:1;transform:translateY(0)}.pan-zoom-controls{z-index:40;gap:4px;display:flex;position:fixed;top:8px;right:8px}.pan-zoom-controls[hidden]{display:none}.pan-btn{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;font-size:14px;transition:background .15s,color .15s;display:flex}.pan-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.pan-btn.reset{width:auto;padding:0 10px;font-size:12px}#moon-container{flex-direction:column;flex:1;min-height:440px;padding:16px;display:flex;overflow-y:auto}#moon-container[hidden]{display:none}.moon-layout{flex:1;align-items:flex-start;gap:24px;display:flex}@media (max-width:500px){.moon-layout{flex-direction:column;align-items:center;gap:16px}}.moon-dial-col{flex-direction:column;flex-shrink:0;align-items:center;gap:12px;display:flex}.moon-dial{justify-content:center;align-items:center;width:200px;height:200px;display:flex;position:relative}.moon-svg{filter:drop-shadow(0 0 20px rgba(131,163,187,.2));filter:drop-shadow(0 0 20px color(display-p3 .537913 .6362 .723376/.2));filter:drop-shadow(0 0 20px lab(65.2381% -7.35197 -16.1178/.2));width:100%;height:100%;animation:.8s ease-out moon-fade-in}@keyframes moon-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.moon-illum-ring{background:var(--bg-secondary);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:20px;flex-direction:column;align-items:center;gap:1px;padding:3px 10px;display:flex;position:absolute;bottom:-2px}.moon-illum-value{font-size:22px;font-weight:700;font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--accent-warm);letter-spacing:-.02em}.moon-illum-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:9px}.moon-phase-badge{background:var(--bg-secondary);border:1px solid var(--border);border-radius:20px;align-items:center;gap:6px;padding:6px 14px;display:flex}.moon-phase-icon{font-size:18px}.moon-phase-name{font-size:15px;font-weight:700;font-family:var(--font-display);letter-spacing:-.01em;text-transform:capitalize}.moon-direction{color:var(--text-muted);align-items:center;gap:4px;font-size:12px;display:flex}.dir-arrow{font-size:14px;font-weight:700}.dir-waxing{color:#57bc8a;color:color(display-p3 .44464 .726476 .557142);color:lab(69.1118% -39.6203 15.6094)}.dir-waning{color:#e6857e;color:color(display-p3 .850722 .541293 .507352);color:lab(66.3643% 37.397 20.9063)}.moon-info-col{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.moon-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius);cursor:pointer;padding:10px 14px;transition:background .15s,border-color .15s,box-shadow .15s}.moon-card:hover{background:var(--bg-hover);border-color:var(--border);box-shadow:0 2px 12px rgba(0,0,0,.1);box-shadow:0 2px 12px color(display-p3 0 0 0/.1);box-shadow:0 2px 12px lab(0% 0 0/.1)}.moon-card--voc.moon-card--active{border-color:var(--voc-warn);background:#2c1e13;background:color(display-p3 .165435 .120647 .0798046);background:lab(12.9057% 5.79391 10.6146)}@media (prefers-color-scheme:light){.moon-card--voc.moon-card--active{background:#ffead8;background:color(display-p3 1.00032 .917094 .842425);background:lab(94.1113% 7.0433 13.5336)}}.moon-card-header{align-items:center;gap:6px;margin-bottom:4px;display:flex}.moon-card-icon{font-size:14px}.moon-card-title{font-size:11px;font-weight:600;font-family:var(--font-body);text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted)}.moon-card-chevron{color:var(--text-muted);flex-shrink:0;margin-left:auto;font-size:13px;transition:transform .2s}.moon-card--open .moon-card-chevron{transform:rotate(90deg)}.moon-card-value{font-size:16px;font-weight:700;font-family:var(--font-display);color:var(--text-primary);text-transform:capitalize;line-height:1.2}.moon-card-detail{color:var(--text-muted);margin-top:2px;font-size:11px}.moon-card--primary{border-color:var(--border);padding:8px 13px}.moon-card--primary .moon-card-value{letter-spacing:-.02em;font-size:16px}.moon-card--primary .moon-card-header{margin-bottom:2px}.moon-card--primary .moon-card-title{font-size:10px}.moon-card--compact{padding:6px 12px}.moon-card--compact .moon-card-header{margin-bottom:2px}.moon-card--compact .moon-card-value{font-size:13px;font-weight:600}.moon-card--compact .moon-card-title{letter-spacing:.06em;font-size:10px}.moon-card--inline{padding:6px 12px}.moon-card--inline .moon-card-header{gap:8px;margin-bottom:0}.moon-card--inline .moon-card-title{letter-spacing:.06em;font-size:10px}.moon-card-inline-value{font-family:var(--font-display);color:var(--text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin-left:auto;font-size:13px;font-weight:600}.moon-card--inline .moon-card-chevron{margin-left:0}.moon-card-expand{grid-template-rows:0fr;margin-top:0;transition:grid-template-rows .22s,margin-top .22s;display:grid}.moon-card--open .moon-card-expand{grid-template-rows:1fr;margin-top:8px}.moon-card-expand-inner{overflow:hidden}.moon-card-expand-text{font-size:11px;font-family:var(--font-body);color:var(--text-secondary);border-top:1px solid var(--border-subtle);padding-top:7px;font-style:italic;line-height:1.55;display:block}.moon-card-row{color:var(--text-secondary);align-items:center;gap:4px;padding:1px 0;font-size:12px;display:flex}.moon-card-row-icon{font-size:12px}.moon-actions{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.action-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:8px 14px;font-size:12px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.action-btn--primary{color:#cbdfff;color:color(display-p3 .811259 .873257 .992208);color:lab(88.2011% -1.89927 -18.3428);background:#11397b;background:color(display-p3 .112797 .221529 .46413);background:lab(24.6079% 7.13965 -41.9262);border-color:#305289;border-color:color(display-p3 .218625 .316452 .521702);border-color:lab(34.3143% 2.02942 -35.2838)}.action-btn--primary:hover{background:#1b478f;background:color(display-p3 .151166 .273205 .543079);background:lab(30.361% 6.93905 -45.4659);box-shadow:0 0 0 1px #3862a7;box-shadow:0 0 0 1px color(display-p3 .2584 .379139 .634372);box-shadow:0 0 0 1px lab(41.0971% 2.98774 -42.2721)}.error-state,.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.error-icon,.empty-icon{font-size:32px}.tooltip{z-index:100;border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);pointer-events:none;opacity:0;max-width:200px;padding:6px 10px;font-size:11px;transition:opacity .15s;position:fixed}.tooltip.visible{opacity:1}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.floating-action-btn:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:50%;height:100%;animation:3s 2s infinite shimmer;position:absolute;top:0;left:-100%;transform:skew(-20deg)}@keyframes shimmer{0%{left:-100%}20%{left:200%}to{left:200%}}
|
|
14
|
+
<style>*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#090b0f;--bg-secondary:#12161d;--bg-tertiary:#1c222b;--bg-hover:#272e3b;--border:#282e38;--border-subtle:#1d2229;--text-primary:#e1e5eb;--text-secondary:#9da5b1;--text-muted:#6c727b;--accent:#62b3ff;--accent-warm:#e6ac3d;--voc-warn:#f6922e;--cue-warm:#f4a34b;--cue-cool:#6ab3fd;--radius:8px;--radius-sm:4px;--radius-lg:12px;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .036047 .0438664 .059078);--bg-secondary:color(display-p3 .0739679 .0866504 .111186);--bg-tertiary:color(display-p3 .114361 .13221 .166818);--bg-hover:color(display-p3 .15679 .180114 .225406);--border:color(display-p3 .161376 .180145 .216325);--border-subtle:color(display-p3 .118728 .13221 .158123);--text-primary:color(display-p3 .883958 .896627 .920543);--text-secondary:color(display-p3 .622745 .646433 .6914);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .446063 .694439 1.01077);--accent-warm:color(display-p3 .866978 .684443 .324483);--voc-warn:color(display-p3 .910067 .591092 .274641);--cue-warm:color(display-p3 .911412 .653072 .360243);--cue-cool:color(display-p3 .48245 .695507 .967802)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(3.02674% -.179462 -2.15476);--bg-secondary:lab(7.16596% -.441141 -5.41423);--bg-tertiary:lab(12.9118% -.60384 -7.27841);--bg-hover:lab(18.6882% -.727877 -9.08878);--border:lab(18.7165% -.689313 -7.30941);--border-subtle:lab(12.9391% -.548743 -5.49436);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(67.45% -.932217 -7.41489);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(70.4043% -7.21234 -50.7672);--accent-warm:lab(74.5248% 14.3487 62.5064);--voc-warn:lab(70.3313% 33.71 65.3029);--cue-warm:lab(74.0849% 25.4197 56.7058);--cue-cool:lab(70.5454% -7.4636 -44.2057)}}@media (prefers-color-scheme:light){:root{--bg-primary:#f3f5f9;--bg-secondary:#e7ebf2;--bg-tertiary:#d8dee8;--bg-hover:#d0d8e5;--border:#bdc5d1;--border-subtle:#d2d8e2;--text-primary:#0f1216;--text-secondary:#414853;--text-muted:#585e67;--accent:#0065b2;--accent-warm:#966800;--voc-warn:#a95a00;--cue-warm:#954200;--cue-cool:#1e5ba1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .95471 .961142 .973263);--bg-secondary:color(display-p3 .909797 .922535 .946581);--bg-tertiary:color(display-p3 .852455 .871315 .906983);--bg-hover:color(display-p3 .821139 .84609 .893374);--border:color(display-p3 .745559 .770059 .816515);--border-subtle:color(display-p3 .826933 .845684 .881152);--text-primary:color(display-p3 .0608605 .0691527 .0850621);--text-secondary:color(display-p3 .261513 .281801 .32064);--text-muted:color(display-p3 .350602 .367691 .400197);--accent:color(display-p3 .143802 .388951 .683672);--accent-warm:color(display-p3 .596632 .396992 -.158844);--voc-warn:color(display-p3 .673365 .329149 -.157701);--cue-warm:color(display-p3 .567457 .255699 -.0353967);--cue-cool:color(display-p3 .186321 .349931 .613332)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(96.5044% -.267148 -1.87216);--bg-secondary:lab(93.0079% -.518024 -3.73493);--bg-tertiary:lab(88.3503% -.749856 -5.58736);--bg-hover:lab(86.0117% -.963002 -7.43048);--border:lab(79.0511% -.952899 -7.42528);--border-subtle:lab(86.0302% -.748128 -5.58645);--text-primary:lab(5.23796% -.285208 -3.0582);--text-secondary:lab(30.3224% -.794604 -7.35167);--text-muted:lab(39.6225% -.718519 -5.91861);--accent:lab(41.1205% -1.70796 -50.1423);--accent-warm:lab(47.6194% 20.1868 104.51);--voc-warn:lab(46.8395% 41.0975 106.287);--cue-warm:lab(38.6598% 39.325 67.0649);--cue-cool:lab(37.6228% 1.24846 -44.7496)}}}html,body{width:100%;height:100%;min-height:480px;font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);font-size:13px;line-height:1.5;overflow-y:auto}body{flex-direction:column;display:flex}#app{flex-direction:column;flex:1;display:flex;overflow:hidden}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}#loading-state[hidden]{display:none}.oe-loader{width:48px;height:48px;animation:1.2s linear infinite spin}.oe-loader circle{fill:none;stroke:var(--accent);stroke-width:3px;stroke-dasharray:200;stroke-dashoffset:80px;stroke-linecap:round}@keyframes spin{to{transform:rotate(360deg)}}.chart-status{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);color:var(--text-muted);opacity:0;z-index:50;padding:6px 14px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.chart-status.visible{opacity:1;transform:translateY(0)}.pan-zoom-controls{z-index:40;gap:4px;display:flex;position:fixed;top:8px;right:8px}.pan-zoom-controls[hidden]{display:none}.pan-btn{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;font-size:14px;transition:background .15s,color .15s;display:flex}.pan-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.pan-btn.reset{width:auto;padding:0 10px;font-size:12px}#moon-container{flex-direction:column;flex:1;min-height:440px;padding:16px;display:flex;overflow-y:auto}#moon-container[hidden]{display:none}.moon-layout{flex:1;align-items:flex-start;gap:24px;display:flex}@media (max-width:500px){.moon-layout{flex-direction:column;align-items:center;gap:16px}}.moon-dial-col{flex-direction:column;flex-shrink:0;align-items:center;gap:12px;display:flex}.moon-dial{justify-content:center;align-items:center;width:200px;height:200px;display:flex;position:relative}.moon-svg{filter:drop-shadow(0 0 20px rgba(131,163,187,.2));filter:drop-shadow(0 0 20px color(display-p3 .537913 .6362 .723376/.2));filter:drop-shadow(0 0 20px lab(65.2381% -7.35197 -16.1178/.2));width:100%;height:100%;animation:.8s ease-out moon-fade-in}@keyframes moon-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.moon-illum-ring{background:var(--bg-secondary);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:20px;flex-direction:column;align-items:center;gap:1px;padding:3px 10px;display:flex;position:absolute;bottom:-2px}.moon-illum-value{font-size:22px;font-weight:700;font-family:var(--font-display);font-variant-numeric:tabular-nums;color:var(--accent-warm);letter-spacing:-.02em}.moon-illum-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:9px}.moon-phase-badge{background:var(--bg-secondary);border:1px solid var(--border);border-radius:20px;align-items:center;gap:6px;padding:6px 14px;display:flex}.moon-phase-icon{font-size:18px}.moon-phase-name{font-size:15px;font-weight:700;font-family:var(--font-display);letter-spacing:-.01em;text-transform:capitalize}.moon-direction{color:var(--text-muted);align-items:center;gap:4px;font-size:12px;display:flex}.dir-arrow{font-size:14px;font-weight:700}.dir-waxing{color:#57bc8a;color:color(display-p3 .44464 .726476 .557142);color:lab(69.1118% -39.6203 15.6094)}.dir-waning{color:#e6857e;color:color(display-p3 .850722 .541293 .507352);color:lab(66.3643% 37.397 20.9063)}.moon-info-col{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.moon-card{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius);cursor:pointer;padding:10px 14px;transition:background .15s,border-color .15s,box-shadow .15s}.moon-card:hover{background:var(--bg-hover);border-color:var(--border);box-shadow:0 2px 12px rgba(0,0,0,.1);box-shadow:0 2px 12px color(display-p3 0 0 0/.1);box-shadow:0 2px 12px lab(0% 0 0/.1)}.moon-card--voc.moon-card--active{border-color:var(--voc-warn);background:#2c1e13;background:color(display-p3 .165435 .120647 .0798046);background:lab(12.9057% 5.79391 10.6146)}@media (prefers-color-scheme:light){.moon-card--voc.moon-card--active{background:#ffead8;background:color(display-p3 1.00032 .917094 .842425);background:lab(94.1113% 7.0433 13.5336)}}.moon-card-header{align-items:center;gap:6px;margin-bottom:4px;display:flex}.moon-card-icon{font-size:14px}.moon-card-title{font-size:11px;font-weight:600;font-family:var(--font-body);text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted)}.moon-card-chevron{color:var(--text-muted);flex-shrink:0;margin-left:auto;font-size:13px;transition:transform .2s}.moon-card--open .moon-card-chevron{transform:rotate(90deg)}.moon-card-value{font-size:16px;font-weight:700;font-family:var(--font-display);color:var(--text-primary);text-transform:capitalize;line-height:1.2}.moon-card-detail{color:var(--text-muted);margin-top:2px;font-size:11px}.moon-card--primary{border-color:var(--border);padding:8px 13px}.moon-card--primary .moon-card-value{letter-spacing:-.02em;font-size:16px}.moon-card--primary .moon-card-header{margin-bottom:2px}.moon-card--primary .moon-card-title{font-size:10px}.moon-card--compact{padding:6px 12px}.moon-card--compact .moon-card-header{margin-bottom:2px}.moon-card--compact .moon-card-value{font-size:13px;font-weight:600}.moon-card--compact .moon-card-title{letter-spacing:.06em;font-size:10px}.moon-card--inline{padding:6px 12px}.moon-card--inline .moon-card-header{gap:8px;margin-bottom:0}.moon-card--inline .moon-card-title{letter-spacing:.06em;font-size:10px}.moon-card-inline-value{font-family:var(--font-display);color:var(--text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;margin-left:auto;font-size:13px;font-weight:600}.moon-card-inline-value.tempo-fast,.moon-card-inline-value.prox-super{color:var(--cue-warm)}.moon-card-inline-value.tempo-slow{color:var(--cue-cool)}.moon-card-inline-value.prox-micro{color:var(--text-secondary)}.moon-card--inline .moon-card-chevron{margin-left:0}.moon-card-expand{grid-template-rows:0fr;margin-top:0;transition:grid-template-rows .22s,margin-top .22s;display:grid}.moon-card--open .moon-card-expand{grid-template-rows:1fr;margin-top:8px}.moon-card-expand-inner{overflow:hidden}.moon-card-expand-text{font-size:11px;font-family:var(--font-body);color:var(--text-secondary);border-top:1px solid var(--border-subtle);padding-top:7px;font-style:italic;line-height:1.55;display:block}.moon-card-row{color:var(--text-secondary);align-items:center;gap:4px;padding:1px 0;font-size:12px;display:flex}.moon-card-row-icon{font-size:12px}.moon-actions{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.action-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:8px 14px;font-size:12px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.action-btn--primary{color:#cbdfff;color:color(display-p3 .811259 .873257 .992208);color:lab(88.2011% -1.89927 -18.3428);background:#11397b;background:color(display-p3 .112797 .221529 .46413);background:lab(24.6079% 7.13965 -41.9262);border-color:#305289;border-color:color(display-p3 .218625 .316452 .521702);border-color:lab(34.3143% 2.02942 -35.2838)}.action-btn--primary:hover{background:#1b478f;background:color(display-p3 .151166 .273205 .543079);background:lab(30.361% 6.93905 -45.4659);box-shadow:0 0 0 1px #3862a7;box-shadow:0 0 0 1px color(display-p3 .2584 .379139 .634372);box-shadow:0 0 0 1px lab(41.0971% 2.98774 -42.2721)}.error-state,.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.error-icon,.empty-icon{font-size:32px}.error-retry-btn{border:1px solid var(--border,rgba(128,128,160,.3));color:var(--accent-warm,var(--text-primary,inherit));font:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border-radius:999px;margin-top:4px;padding:7px 20px;font-size:11px;font-weight:600;transition:background .18s,border-color .18s}.error-retry-btn:hover{background:rgba(128,128,160,.12)}.tooltip{z-index:100;border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);pointer-events:none;opacity:0;max-width:200px;padding:6px 10px;font-size:11px;transition:opacity .15s;position:fixed}.tooltip.visible{opacity:1}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.floating-action-btn:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:50%;height:100%;animation:3s 2s infinite shimmer;position:absolute;top:0;left:-100%;transform:skew(-20deg)}@keyframes shimmer{0%{left:-100%}20%{left:200%}to{left:200%}}
|
|
15
15
|
/*$vite$:1*/</style>
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
@@ -6624,16 +6624,16 @@ function c_(e4, t2, n2, r2) {
|
|
|
6624
6624
|
b2 += "</div>";
|
|
6625
6625
|
}
|
|
6626
6626
|
if (typeof t2.moon_speed == "number") {
|
|
6627
|
-
var le2 = t2.moon_speed, ue2 = (Math.round(le2 * 100) / 100).toFixed(2), de2 = le2 > 14.5 ? "Fast" : le2 < 12 ? "Slow" : "Average", fe2 = le2 > 14.5 ? "Building momentum \u2014 quick emotional shifts" : le2 < 12 ? "Deliberate pace \u2014 deeper but slower" : "Steady rhythm \u2014 balanced lunar energy";
|
|
6628
|
-
b2 += '<div class="moon-card moon-card--inline" data-detail="Moon speed: ' + ue2 + '\xB0/day">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u26A1</span>', b2 += '<span class="moon-card-title">Moon Speed</span>', b2 += '<span class="moon-card-inline-value">' + ue2 + "\xB0/d \xB7 " + de2 + "</span>", b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += x2(
|
|
6627
|
+
var le2 = t2.moon_speed, ue2 = (Math.round(le2 * 100) / 100).toFixed(2), de2 = le2 > 14.5 ? "Fast" : le2 < 12 ? "Slow" : "Average", fe2 = le2 > 14.5 ? "tempo-fast" : le2 < 12 ? "tempo-slow" : "tempo-avg", pe2 = le2 > 14.5 ? "Building momentum \u2014 quick emotional shifts" : le2 < 12 ? "Deliberate pace \u2014 deeper but slower" : "Steady rhythm \u2014 balanced lunar energy";
|
|
6628
|
+
b2 += '<div class="moon-card moon-card--inline" data-detail="Moon speed: ' + ue2 + '\xB0/day">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u26A1</span>', b2 += '<span class="moon-card-title">Moon Speed</span>', b2 += '<span class="moon-card-inline-value ' + fe2 + '">' + ue2 + "\xB0/d \xB7 " + de2 + "</span>", b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += x2(pe2 + " The Moon's mean motion is 13.18\xB0/day. Above 14.5\xB0/day the Moon is moving faster than average, associated with rapidly shifting moods and a sense of momentum. Below 12\xB0/day it's slower, often linked to more sustained and inward emotional states."), b2 += "</div>";
|
|
6629
6629
|
}
|
|
6630
6630
|
if (typeof t2.angular_diameter == "number" && t2.angular_diameter > 0) {
|
|
6631
|
-
var
|
|
6632
|
-
b2 += '<div class="moon-card moon-card--inline" data-detail="Angular diameter: ' +
|
|
6631
|
+
var me2 = t2.angular_diameter, he2 = (Math.round(me2 * 100) / 100).toFixed(2), ge2 = me2 > 32.5 ? "Supermoon proximity" : me2 < 29.8 ? "Micromoon proximity" : "Average distance", _e2 = me2 > 32.5 ? "prox-super" : me2 < 29.8 ? "prox-micro" : "prox-avg", ve2 = t2.moon_distance_km ? Math.round(t2.moon_distance_km).toLocaleString() + " km" : "";
|
|
6632
|
+
b2 += '<div class="moon-card moon-card--inline" data-detail="Angular diameter: ' + he2 + "'\">", b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F52D}</span>', b2 += '<span class="moon-card-title">Proximity</span>', b2 += '<span class="moon-card-inline-value ' + _e2 + '">' + he2 + "' \xB7 " + ge2.replace(" proximity", "") + "</span>", b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += x2((ve2 ? ve2 + " away. " : "") + "The Moon's angular diameter averages 31.08 arcminutes. A Supermoon (>32.5') appears up to 14% larger and 30% brighter than a Micromoon. Closer proximity also strengthens tidal forces and is associated with intensified lunar influence in some traditions."), b2 += "</div>";
|
|
6633
6633
|
} else t2.moon_distance_km && (b2 += '<div class="moon-card moon-card--inline" data-detail="Distance: ' + Math.round(t2.moon_distance_km).toLocaleString() + ' km">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F52D}</span>', b2 += '<span class="moon-card-title">Distance</span>', b2 += '<span class="moon-card-inline-value">' + Math.round(t2.moon_distance_km).toLocaleString() + " km</span>", b2 += "</div>", b2 += "</div>");
|
|
6634
6634
|
Array.isArray(t2.applying_aspects) && t2.applying_aspects.length > 0 && (b2 += '<div class="moon-card moon-card--compact" data-detail="Moon applying aspects">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F319}</span>', b2 += '<span class="moon-card-title">Approaching</span>', b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", t2.applying_aspects.slice(0, 3).forEach(function(e5) {
|
|
6635
6635
|
var t3, n3, r3, i3, a3 = ((t3 = e5.aspect) == null ? "" : t3).toLowerCase().replace(/-/g, ""), o3 = (n3 = t_[a3]) == null ? e5.aspect : n3, s3 = (r3 = n_[a3]) == null ? e5.aspect : r3, c3 = e5.orb === null ? "" : " \xB7 " + (Math.round(((i3 = e5.orb) == null ? 0 : i3) * 100) / 100).toFixed(1) + "\xB0";
|
|
6636
|
-
b2 += '<div class="moon-card-row">\u263D ' + o3 + ' <span style="
|
|
6636
|
+
b2 += '<div class="moon-card-row">\u263D ' + o3 + ' <span style="color:var(--text-muted); font-size:10px; letter-spacing:.04em; text-transform:uppercase; margin-right:2px">' + l_(s3) + "</span> \xB7 " + l_(e5.planet) + c3 + "</div>";
|
|
6637
6637
|
}), b2 += x2("Applying aspects are those the Moon is building toward before leaving the current sign. Tighter orbs (closer to 0\xB0) carry more weight. Aspects to benefics (Venus, Jupiter) are generally favorable; to malefics (Mars, Saturn) may bring tension."), b2 += "</div>"), b2 += '<div class="moon-actions">', b2 += '<button class="action-btn action-btn--primary" id="moon-interpret-btn">\u2728 Interpret this phase</button>', _2 && (b2 += '<button class="action-btn" id="moon-voc-btn">\u{1F52E} What does VOC mean?</button>'), b2 += "</div>", b2 += "</div>", b2 += "</div>", e4.innerHTML = b2, e4.querySelectorAll(".moon-card[data-detail]").forEach(function(t3) {
|
|
6638
6638
|
t3.addEventListener("click", function(n3) {
|
|
6639
6639
|
var i3;
|
|
@@ -6650,12 +6650,12 @@ function c_(e4, t2, n2, r2) {
|
|
|
6650
6650
|
}
|
|
6651
6651
|
});
|
|
6652
6652
|
});
|
|
6653
|
-
var
|
|
6654
|
-
|
|
6653
|
+
var ye2 = document.getElementById("moon-interpret-btn");
|
|
6654
|
+
ye2 && ye2.addEventListener("click", function() {
|
|
6655
6655
|
n2({ type: "interpret_phase", data: {} });
|
|
6656
6656
|
});
|
|
6657
|
-
var
|
|
6658
|
-
|
|
6657
|
+
var be2 = document.getElementById("moon-voc-btn");
|
|
6658
|
+
be2 && be2.addEventListener("click", function() {
|
|
6659
6659
|
n2({ type: "voc_meaning", data: {} });
|
|
6660
6660
|
});
|
|
6661
6661
|
}
|
|
@@ -6690,19 +6690,42 @@ function f_(e4) {
|
|
|
6690
6690
|
n2(e5);
|
|
6691
6691
|
});
|
|
6692
6692
|
}
|
|
6693
|
-
|
|
6694
|
-
|
|
6695
|
-
if (
|
|
6693
|
+
function p_(e4) {
|
|
6694
|
+
var t2;
|
|
6695
|
+
if (!e4) return null;
|
|
6696
|
+
if (e4.structuredContent != null && typeof e4.structuredContent == "object") return e4.structuredContent;
|
|
6697
|
+
for (let n2 of (t2 = e4.content) == null ? [] : t2) {
|
|
6698
|
+
let e5 = n2 == null ? void 0 : n2.text;
|
|
6699
|
+
if (typeof e5 == "string" && e5.length > 0) try {
|
|
6700
|
+
return JSON.parse(e5);
|
|
6701
|
+
} catch (e6) {
|
|
6702
|
+
}
|
|
6703
|
+
}
|
|
6704
|
+
return null;
|
|
6705
|
+
}
|
|
6706
|
+
function m_(e4) {
|
|
6707
|
+
return e4.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6708
|
+
}
|
|
6709
|
+
function h_(e4) {
|
|
6710
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e4, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(m_(i2), "</button>") : "";
|
|
6711
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(m_(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
6712
|
+
var o2;
|
|
6713
|
+
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
6714
|
+
}
|
|
6715
|
+
}
|
|
6716
|
+
var g_ = document.getElementById("loading-state"), __ = document.getElementById("moon-container"), v_ = document.getElementById("chart-status"), y_ = new Qg({ name: "Moon Phase Explorer", version: "1.0.0" }), b_ = null, x_ = false;
|
|
6717
|
+
function S_(e4) {
|
|
6718
|
+
if (v_) {
|
|
6696
6719
|
if (!e4) {
|
|
6697
|
-
|
|
6720
|
+
v_.classList.remove("visible");
|
|
6698
6721
|
return;
|
|
6699
6722
|
}
|
|
6700
|
-
|
|
6723
|
+
v_.textContent = "\xB7 " + e4, v_.classList.add("visible");
|
|
6701
6724
|
}
|
|
6702
6725
|
}
|
|
6703
|
-
async function
|
|
6704
|
-
if (
|
|
6705
|
-
var t2 =
|
|
6726
|
+
async function C_(e4) {
|
|
6727
|
+
if (b_) {
|
|
6728
|
+
var t2 = b_, n2 = "";
|
|
6706
6729
|
if (e4.type === "interpret_phase") {
|
|
6707
6730
|
var r2, i2, a2;
|
|
6708
6731
|
n2 = "The Moon is currently in " + String((r2 = t2.phase_name) == null ? "unknown phase" : r2) + " at " + Math.round(((i2 = t2.illumination) == null ? 0 : i2) * 100) + "% illumination" + (t2.moon_sign ? " in " + t2.moon_sign : "") + ((a2 = t2.voc_status) != null && a2.is_void ? ", currently Void of Course" : "") + ".\n\nWhat does this lunar phase mean for daily activities, emotional rhythms, and intention-setting? Include any relevant gardening, wellness, or spiritual correspondences.";
|
|
@@ -6711,50 +6734,50 @@ async function b_(e4) {
|
|
|
6711
6734
|
n2 = "The Moon is Void of Course" + ((o2 = t2.voc_status) != null && o2.started ? " since " + t2.voc_status.started : "") + ((s2 = t2.voc_status) != null && s2.ends ? " until " + t2.voc_status.ends : "") + ".\n\nWhat exactly does Void of Course mean in practical terms? What should be avoided and what is favored during this period?";
|
|
6712
6735
|
}
|
|
6713
6736
|
if (n2) try {
|
|
6714
|
-
await
|
|
6737
|
+
await y_.sendMessage({ role: "user", content: [{ type: "text", text: n2 }] });
|
|
6715
6738
|
} catch (e5) {
|
|
6716
6739
|
console.error("[MoonPhase] sendMessage failed:", e5);
|
|
6717
6740
|
}
|
|
6718
6741
|
}
|
|
6719
6742
|
}
|
|
6720
|
-
async function
|
|
6721
|
-
if (
|
|
6722
|
-
await
|
|
6743
|
+
async function w_(e4) {
|
|
6744
|
+
if (S_(e4), x_) try {
|
|
6745
|
+
await y_.updateModelContext({ content: [{ type: "text", text: "[Moon Phase] User viewed: " + e4 }] });
|
|
6723
6746
|
} catch (e5) {
|
|
6724
6747
|
}
|
|
6725
6748
|
}
|
|
6726
|
-
|
|
6727
|
-
|
|
6749
|
+
var T_;
|
|
6750
|
+
function E_() {
|
|
6751
|
+
T_ && (clearTimeout(T_), T_ = void 0);
|
|
6728
6752
|
}
|
|
6729
|
-
function
|
|
6730
|
-
|
|
6753
|
+
function D_(e4, t2) {
|
|
6754
|
+
E_(), g_.setAttribute("hidden", ""), h_({ container: __, message: e4, onRetry: t2 });
|
|
6731
6755
|
}
|
|
6732
|
-
|
|
6756
|
+
function O_() {
|
|
6757
|
+
E_(), __.setAttribute("hidden", ""), g_.removeAttribute("hidden"), T_ = setTimeout(() => {
|
|
6758
|
+
D_("Still no response from the server. Please close and re-open the moon phase view.");
|
|
6759
|
+
}, 3e4), y_.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the moon phase." }] }).catch(() => {
|
|
6760
|
+
});
|
|
6761
|
+
}
|
|
6762
|
+
y_.ontoolresult = function(e4) {
|
|
6763
|
+
E_();
|
|
6733
6764
|
try {
|
|
6734
|
-
|
|
6735
|
-
|
|
6736
|
-
|
|
6737
|
-
var o2 = JSON.parse(a2.text);
|
|
6738
|
-
if (o2 && typeof o2 == "object" && (o2.phase_name || o2.illumination != null || o2.moon_sign)) {
|
|
6739
|
-
n2 = o2;
|
|
6740
|
-
break;
|
|
6741
|
-
}
|
|
6742
|
-
} catch (e5) {
|
|
6743
|
-
}
|
|
6744
|
-
}
|
|
6745
|
-
if (!n2) {
|
|
6746
|
-
S_("Moon phase data could not be parsed from the server response.");
|
|
6765
|
+
let t2 = p_(e4);
|
|
6766
|
+
if (!t2 || !(t2.phase_name || t2.illumination != null || t2.moon_sign)) {
|
|
6767
|
+
D_("Moon phase data could not be parsed from the server response.", O_);
|
|
6747
6768
|
return;
|
|
6748
6769
|
}
|
|
6749
|
-
|
|
6770
|
+
b_ = t2, g_.setAttribute("hidden", ""), __.removeAttribute("hidden"), c_(__, t2, C_, w_);
|
|
6750
6771
|
} catch (e5) {
|
|
6751
|
-
|
|
6772
|
+
D_("An error occurred while rendering the moon phase dial.", O_), console.error("[MoonPhase] Render error:", e5);
|
|
6752
6773
|
}
|
|
6753
|
-
}, u_(
|
|
6774
|
+
}, u_(y_, { loadingEl: g_, contentEl: __, statusFn: S_, paramControls: null }), T_ = setTimeout(() => {
|
|
6775
|
+
D_("Moon phase data is taking longer than expected.", O_);
|
|
6776
|
+
}, 3e4), (async function() {
|
|
6754
6777
|
try {
|
|
6755
|
-
await
|
|
6756
|
-
var e4 =
|
|
6757
|
-
|
|
6778
|
+
await y_.connect();
|
|
6779
|
+
var e4 = y_.getHostCapabilities();
|
|
6780
|
+
x_ = !!(e4 != null && e4.modelContext), f_(y_);
|
|
6758
6781
|
} catch (e5) {
|
|
6759
6782
|
console.error("[MoonPhase] connect() failed:", e5);
|
|
6760
6783
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<title>Transit Timeline Explorer</title>
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
<style>*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#090b0f;--bg-secondary:#12161d;--bg-tertiary:#1c222b;--bg-hover:#272e3b;--border:#282e38;--border-subtle:#1d2229;--text-primary:#e1e5eb;--text-secondary:#9da5b1;--text-muted:#6c727b;--accent:#7caeff;--accent-glow:rgba(99,143,216,.25);--radius:8px;--radius-sm:4px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .036047 .0438664 .059078);--bg-secondary:color(display-p3 .0739679 .0866504 .111186);--bg-tertiary:color(display-p3 .114361 .13221 .166818);--bg-hover:color(display-p3 .15679 .180114 .225406);--border:color(display-p3 .161376 .180145 .216325);--border-subtle:color(display-p3 .118728 .13221 .158123);--text-primary:color(display-p3 .883958 .896627 .920543);--text-secondary:color(display-p3 .622745 .646433 .6914);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .504479 .673595 1.02281);--accent-glow:color(display-p3 .425092 .556285 .824818/.25)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(3.02674% -.179462 -2.15476);--bg-secondary:lab(7.16596% -.441141 -5.41423);--bg-tertiary:lab(12.9118% -.60384 -7.27841);--bg-hover:lab(18.6882% -.727877 -9.08878);--border:lab(18.7165% -.689313 -7.30941);--border-subtle:lab(12.9391% -.548743 -5.49436);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(67.45% -.932217 -7.41489);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(69.9955% 1.58134 -53.1349);--accent-glow:lab(58.6334% .6136 -42.6155/.25)}}@media (prefers-color-scheme:light){:root{--bg-primary:#f3f5f9;--bg-secondary:#e7ebf2;--bg-tertiary:#d8dee8;--bg-hover:#d0d8e5;--border:#bdc5d1;--border-subtle:#d2d8e2;--text-primary:#0f1216;--text-secondary:#414853;--text-muted:#6c727b;--accent:#2a5fb7;--accent-glow:rgba(70,113,183,.15);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .95471 .961142 .973263);--bg-secondary:color(display-p3 .909797 .922535 .946581);--bg-tertiary:color(display-p3 .852455 .871315 .906983);--bg-hover:color(display-p3 .821139 .84609 .893374);--border:color(display-p3 .745559 .770059 .816515);--border-subtle:color(display-p3 .826933 .845684 .881152);--text-primary:color(display-p3 .0608605 .0691527 .0850621);--text-secondary:color(display-p3 .261513 .281801 .32064);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .22062 .369139 .694389);--accent-glow:color(display-p3 .31272 .437198 .696973/.15)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(96.5044% -.267148 -1.87216);--bg-secondary:lab(93.0079% -.518024 -3.73493);--bg-tertiary:lab(88.3503% -.749856 -5.58736);--bg-hover:lab(86.0117% -.963002 -7.43048);--border:lab(79.0511% -.952899 -7.42528);--border-subtle:lab(86.0302% -.748128 -5.58645);--text-primary:lab(5.23796% -.285208 -3.0582);--text-secondary:lab(30.3224% -.794604 -7.35167);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(40.6749% 7.04834 -52.5258);--accent-glow:lab(46.9518% 2.04313 -42.3932/.15)}}}html,body{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow:hidden}body{flex-direction:column;display:flex}#app{flex-direction:column;flex:1;display:flex;overflow:hidden}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}#loading-state[hidden]{display:none}.oe-loader{width:48px;height:48px;animation:1.2s linear infinite spin}.oe-loader circle{fill:none;stroke:var(--accent);stroke-width:3px;stroke-dasharray:200;stroke-dashoffset:80px;stroke-linecap:round}@keyframes spin{to{transform:rotate(360deg)}}.chart-status{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);color:var(--text-muted);opacity:0;z-index:50;padding:6px 14px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.chart-status.visible{opacity:1;transform:translateY(0)}.pan-zoom-controls{z-index:40;gap:4px;display:flex;position:absolute;top:8px;right:8px}.pan-zoom-controls[hidden]{display:none}.pan-btn{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;font-size:14px;transition:background .15s,color .15s;display:flex}.pan-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.pan-btn.reset{width:auto;padding:0 10px;font-size:12px}#timeline-container{flex-direction:column;flex:1;gap:10px;padding:16px;display:flex;position:relative;overflow-y:auto}#timeline-container[hidden]{display:none}.tl-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.tl-header-left{flex-direction:column;gap:3px;display:flex}.tl-title{letter-spacing:-.02em;background:linear-gradient(135deg,#accfff,#be95ff);background:linear-gradient(135deg,color(display-p3 .663419 .805776 1.09027),color(display-p3 .719754 .587108 .989297));background:linear-gradient(135deg,lab(81.935% -1.1887 -42.9782),lab(68.7632% 32.9719 -49.9367));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.tl-subtitle{color:var(--text-muted);font-size:12px}.tl-aspect-badge{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);border-radius:12px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin-top:2px;padding:2px 8px;font-size:11px;display:inline-block}.tl-header-right{align-items:center;gap:6px;display:flex}.tl-natal-bar{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.tl-natal-label{color:var(--text-muted);margin-right:2px;font-size:11px}.info-chip{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);font-variant-numeric:tabular-nums;align-items:center;padding:2px 6px;font-size:11px;display:inline-flex}.tl-axis{align-items:flex-end;gap:0;display:flex}.tl-axis-label-col{flex-shrink:0;width:100px}.tl-axis-track{border-bottom:1px solid var(--border);flex:1;height:24px;position:relative}.tl-axis-tick{position:absolute;bottom:0;transform:translate(-50%)}.tl-axis-tick:before{content:"";background:var(--border);width:1px;height:6px;margin:0 auto;display:block}.tl-axis-tick span{color:var(--text-muted);white-space:nowrap;text-align:center;margin-bottom:4px;font-size:10px;display:block}.tl-body{flex-direction:column;gap:0;display:flex}.tl-row{border-bottom:1px solid var(--border-subtle);align-items:stretch;min-height:36px;transition:background .15s;display:flex}.tl-row:hover{background:var(--bg-secondary)}.tl-row-label{border-right:2px solid var(--planet-color,var(--border));flex-shrink:0;align-items:center;gap:6px;width:100px;padding:6px 10px;display:flex}.tl-planet-glyph{color:var(--planet-color,var(--text-primary));text-shadow:0 0 8px var(--planet-color,transparent);opacity:.9;font-size:16px}.tl-planet-name{color:var(--text-secondary);text-transform:capitalize;font-size:11px;font-weight:600}.tl-row-track{flex:1;align-items:center;padding:4px 0;display:flex;position:relative}.tl-grid-line{background:var(--border-subtle);opacity:.5;width:1px;position:absolute;top:0;bottom:0}.tl-bar{cursor:pointer;z-index:2;border-radius:4px;justify-content:center;align-items:center;height:24px;transition:filter .15s,transform .15s,box-shadow .15s;display:flex;position:absolute}.tl-bar:hover{filter:brightness(1.15);z-index:3;box-shadow:0 2px 12px var(--bar-color,#6b90cc);transform:scaleY(1.15)}@supports (color:color(display-p3 0 0 0)){.tl-bar:hover{box-shadow:0 2px 12px var(--bar-color,color(display-p3 .449061 .559519 .781774))}}@supports (color:lab(0% 0 0)){.tl-bar:hover{box-shadow:0 2px 12px var(--bar-color,lab(58.8216% -.557482 -35.7189))}}.tl-bar.active{filter:brightness(1.25);z-index:4;box-shadow:0 0 16px var(--bar-color,#6b90cc);transform:scaleY(1.2)}@supports (color:color(display-p3 0 0 0)){.tl-bar.active{box-shadow:0 0 16px var(--bar-color,color(display-p3 .449061 .559519 .781774))}}@supports (color:lab(0% 0 0)){.tl-bar.active{box-shadow:0 0 16px var(--bar-color,lab(58.8216% -.557482 -35.7189))}}.tl-bar-fill{border-radius:inherit;background:var(--bar-color);opacity:.35;position:absolute;top:0;bottom:0;left:0;right:0}.tl-bar:hover .tl-bar-fill,.tl-bar.active .tl-bar-fill{opacity:.55}.tl-bar-marker{color:var(--bar-color);filter:brightness(1.6)saturate(1.2);text-shadow:0 0 6px var(--bar-color);pointer-events:none;font-size:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.tl-bar-label{color:var(--text-primary);opacity:0;pointer-events:none;white-space:nowrap;font-size:10px;font-weight:600;transition:opacity .15s;position:relative}.tl-bar:hover .tl-bar-label{opacity:1}.action-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.action-btn--primary{color:#cbdfff;color:color(display-p3 .811259 .873257 .992208);color:lab(88.2011% -1.89927 -18.3428);background:linear-gradient(135deg,#1d4587,#32326d);background:linear-gradient(135deg,color(display-p3 .153533 .2659 .511983),color(display-p3 .195291 .194916 .412031));background:linear-gradient(135deg,lab(29.3399% 5.63866 -42.0206),lab(23.3003% 14.2058 -35.0966));border-color:#33548c;border-color:color(display-p3 .229049 .327581 .533696);border-color:lab(35.4848% 1.84765 -35.3079)}.action-btn--primary:hover{background:linear-gradient(135deg,#2151a1,#3d3c86);background:linear-gradient(135deg,color(display-p3 .180134 .31482 .611657),color(display-p3 .239239 .236673 .50744));background:linear-gradient(135deg,lab(34.9279% 7.15981 -48.9835),lab(28.8006% 17.5515 -42.0715));box-shadow:0 2px 12px rgba(29,69,135,.3);box-shadow:0 2px 12px color(display-p3 .153533 .2659 .511983/.3);box-shadow:0 2px 12px lab(29.3399% 5.63866 -42.0206/.3)}.error-state,.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.error-icon,.empty-icon{font-size:32px}.empty-title{color:var(--text-primary);font-size:16px;font-weight:600}.empty-desc{color:var(--text-muted);font-size:13px}.tl-tooltip{z-index:200;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);pointer-events:auto;flex-direction:column;gap:8px;min-width:230px;max-width:270px;padding:12px 14px 10px;animation:.15s tt-in;display:flex;position:absolute;box-shadow:0 8px 32px rgba(0,0,0,.45),0 2px 8px rgba(0,0,0,.3);box-shadow:0 8px 32px color(display-p3 0 0 0/.45),0 2px 8px color(display-p3 0 0 0/.3);box-shadow:0 8px 32px lab(0% 0 0/.45),0 2px 8px lab(0% 0 0/.3)}@keyframes tt-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.tl-tooltip[hidden]{display:none!important}.tl-tooltip-close{border:1px solid var(--border);background:var(--bg-tertiary);width:20px;height:20px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:flex;position:absolute;top:8px;right:8px}.tl-tooltip-close:hover{background:var(--bg-hover);color:var(--text-primary)}.tl-tooltip-planet{color:var(--text-primary);flex-wrap:wrap;align-items:center;gap:5px;padding-right:24px;font-size:14px;font-weight:600;display:flex}.tt-sep{color:var(--text-muted);margin:0 2px;font-size:12px}.tl-tooltip-aspect{background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:10px;align-self:flex-start;align-items:center;padding:2px 8px;font-size:11px;display:inline-flex}.tl-tooltip-dates{border-top:1px solid var(--border-subtle);flex-direction:column;gap:4px;padding-top:8px;display:flex}.tt-date-row{color:var(--text-secondary);font-variant-numeric:tabular-nums;align-items:center;gap:10px;font-size:12px;display:flex}.tt-dl{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);flex-shrink:0;width:52px;font-size:10px;font-weight:600}.tt-date-peak{color:var(--text-primary);font-weight:600}.tt-date-peak .tt-dl{color:var(--accent,#6fa4fc)}@supports (color:color(display-p3 0 0 0)){.tt-date-peak .tt-dl{color:var(--accent,color(display-p3 .481698 .638218 .960393))}}@supports (color:lab(0% 0 0)){.tt-date-peak .tt-dl{color:var(--accent,lab(66.5981% 1.20059 -49.6365))}}.tl-tooltip-claude{border-radius:var(--radius-sm);color:#c1d9ff;color:color(display-p3 .774044 .847695 .989755);color:lab(85.8279% -2.03902 -21.9173);cursor:pointer;background:linear-gradient(135deg,#253e7c,#2e2e62);background:linear-gradient(135deg,color(display-p3 .166649 .240671 .470633),color(display-p3 .178667 .179657 .371356));background:linear-gradient(135deg,lab(26.9892% 7.73893 -38.9991),lab(21.137% 12.4425 -31.621));border:1px solid #33548c;border:1px solid color(display-p3 .229049 .327581 .533696);border:1px solid lab(35.4848% 1.84765 -35.3079);width:100%;margin-top:2px;padding:7px 10px;font-size:12px;font-weight:600;transition:background .15s,box-shadow .15s}.tl-tooltip-claude:hover{background:linear-gradient(135deg,#2c4a96,#39387b);background:linear-gradient(135deg,color(display-p3 .198595 .287609 .56917),color(display-p3 .222009 .221094 .465204));background:linear-gradient(135deg,lab(32.552% 9.74825 -46.0441),lab(26.6408% 15.748 -38.595));box-shadow:0 2px 10px rgba(29,69,135,.3);box-shadow:0 2px 10px color(display-p3 .153533 .2659 .511983/.3);box-shadow:0 2px 10px lab(29.3399% 5.63866 -42.0206/.3)}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.floating-action-btn:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:50%;height:100%;animation:3s 2s infinite shimmer;position:absolute;top:0;left:-100%;transform:skew(-20deg)}@keyframes shimmer{0%{left:-100%}20%{left:200%}to{left:200%}}@keyframes slideUpFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUpFadeInPanel{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}
|
|
10
|
+
<style>*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#090b0f;--bg-secondary:#12161d;--bg-tertiary:#1c222b;--bg-hover:#272e3b;--border:#282e38;--border-subtle:#1d2229;--text-primary:#e1e5eb;--text-secondary:#9da5b1;--text-muted:#6c727b;--accent:#7caeff;--accent-glow:rgba(99,143,216,.25);--radius:8px;--radius-sm:4px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .036047 .0438664 .059078);--bg-secondary:color(display-p3 .0739679 .0866504 .111186);--bg-tertiary:color(display-p3 .114361 .13221 .166818);--bg-hover:color(display-p3 .15679 .180114 .225406);--border:color(display-p3 .161376 .180145 .216325);--border-subtle:color(display-p3 .118728 .13221 .158123);--text-primary:color(display-p3 .883958 .896627 .920543);--text-secondary:color(display-p3 .622745 .646433 .6914);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .504479 .673595 1.02281);--accent-glow:color(display-p3 .425092 .556285 .824818/.25)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(3.02674% -.179462 -2.15476);--bg-secondary:lab(7.16596% -.441141 -5.41423);--bg-tertiary:lab(12.9118% -.60384 -7.27841);--bg-hover:lab(18.6882% -.727877 -9.08878);--border:lab(18.7165% -.689313 -7.30941);--border-subtle:lab(12.9391% -.548743 -5.49436);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(67.45% -.932217 -7.41489);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(69.9955% 1.58134 -53.1349);--accent-glow:lab(58.6334% .6136 -42.6155/.25)}}@media (prefers-color-scheme:light){:root{--bg-primary:#f3f5f9;--bg-secondary:#e7ebf2;--bg-tertiary:#d8dee8;--bg-hover:#d0d8e5;--border:#bdc5d1;--border-subtle:#d2d8e2;--text-primary:#0f1216;--text-secondary:#414853;--text-muted:#6c727b;--accent:#2a5fb7;--accent-glow:rgba(70,113,183,.15);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .95471 .961142 .973263);--bg-secondary:color(display-p3 .909797 .922535 .946581);--bg-tertiary:color(display-p3 .852455 .871315 .906983);--bg-hover:color(display-p3 .821139 .84609 .893374);--border:color(display-p3 .745559 .770059 .816515);--border-subtle:color(display-p3 .826933 .845684 .881152);--text-primary:color(display-p3 .0608605 .0691527 .0850621);--text-secondary:color(display-p3 .261513 .281801 .32064);--text-muted:color(display-p3 .429297 .445909 .477439);--accent:color(display-p3 .22062 .369139 .694389);--accent-glow:color(display-p3 .31272 .437198 .696973/.15)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(96.5044% -.267148 -1.87216);--bg-secondary:lab(93.0079% -.518024 -3.73493);--bg-tertiary:lab(88.3503% -.749856 -5.58736);--bg-hover:lab(86.0117% -.963002 -7.43048);--border:lab(79.0511% -.952899 -7.42528);--border-subtle:lab(86.0302% -.748128 -5.58645);--text-primary:lab(5.23796% -.285208 -3.0582);--text-secondary:lab(30.3224% -.794604 -7.35167);--text-muted:lab(47.7476% -.701487 -5.56231);--accent:lab(40.6749% 7.04834 -52.5258);--accent-glow:lab(46.9518% 2.04313 -42.3932/.15)}}}html,body{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow:hidden}body{flex-direction:column;display:flex}#app{flex-direction:column;flex:1;display:flex;overflow:hidden}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}#loading-state[hidden]{display:none}.oe-loader{width:48px;height:48px;animation:1.2s linear infinite spin}.oe-loader circle{fill:none;stroke:var(--accent);stroke-width:3px;stroke-dasharray:200;stroke-dashoffset:80px;stroke-linecap:round}@keyframes spin{to{transform:rotate(360deg)}}.chart-status{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);color:var(--text-muted);opacity:0;z-index:50;padding:6px 14px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.chart-status.visible{opacity:1;transform:translateY(0)}.pan-zoom-controls{z-index:40;gap:4px;display:flex;position:absolute;top:8px;right:8px}.pan-zoom-controls[hidden]{display:none}.pan-btn{background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;justify-content:center;align-items:center;font-size:14px;transition:background .15s,color .15s;display:flex}.pan-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.pan-btn.reset{width:auto;padding:0 10px;font-size:12px}#timeline-container{flex-direction:column;flex:1;gap:10px;padding:16px;display:flex;position:relative;overflow-y:auto}#timeline-container[hidden]{display:none}.tl-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.tl-header-left{flex-direction:column;gap:3px;display:flex}.tl-title{letter-spacing:-.02em;background:linear-gradient(135deg,#accfff,#be95ff);background:linear-gradient(135deg,color(display-p3 .663419 .805776 1.09027),color(display-p3 .719754 .587108 .989297));background:linear-gradient(135deg,lab(81.935% -1.1887 -42.9782),lab(68.7632% 32.9719 -49.9367));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.tl-subtitle{color:var(--text-muted);font-size:12px}.tl-aspect-badge{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary);border-radius:12px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;margin-top:2px;padding:2px 8px;font-size:11px;display:inline-block}.tl-header-right{align-items:center;gap:6px;display:flex}.tl-natal-bar{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.tl-natal-label{color:var(--text-muted);margin-right:2px;font-size:11px}.info-chip{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);font-variant-numeric:tabular-nums;align-items:center;padding:2px 6px;font-size:11px;display:inline-flex}.tl-axis{align-items:flex-end;gap:0;display:flex}.tl-axis-label-col{flex-shrink:0;width:100px}.tl-axis-track{border-bottom:1px solid var(--border);flex:1;height:24px;position:relative}.tl-axis-tick{position:absolute;bottom:0;transform:translate(-50%)}.tl-axis-tick:before{content:"";background:var(--border);width:1px;height:6px;margin:0 auto;display:block}.tl-axis-tick span{color:var(--text-muted);white-space:nowrap;text-align:center;margin-bottom:4px;font-size:10px;display:block}.tl-body{flex-direction:column;gap:0;display:flex}.tl-row{border-bottom:1px solid var(--border-subtle);align-items:stretch;min-height:36px;transition:background .15s;display:flex}.tl-row:hover{background:var(--bg-secondary)}.tl-row-label{border-right:2px solid var(--planet-color,var(--border));flex-shrink:0;align-items:center;gap:6px;width:100px;padding:6px 10px;display:flex}.tl-planet-glyph{color:var(--planet-color,var(--text-primary));text-shadow:0 0 8px var(--planet-color,transparent);opacity:.9;font-size:16px}.tl-planet-name{color:var(--text-secondary);text-transform:capitalize;font-size:11px;font-weight:600}.tl-row-track{flex:1;align-items:center;padding:4px 0;display:flex;position:relative}.tl-grid-line{background:var(--border-subtle);opacity:.5;width:1px;position:absolute;top:0;bottom:0}.tl-bar{cursor:pointer;z-index:2;border-radius:4px;justify-content:center;align-items:center;height:24px;transition:filter .15s,transform .15s,box-shadow .15s;display:flex;position:absolute}.tl-bar:hover{filter:brightness(1.15);z-index:3;box-shadow:0 2px 12px var(--bar-color,#6b90cc);transform:scaleY(1.15)}@supports (color:color(display-p3 0 0 0)){.tl-bar:hover{box-shadow:0 2px 12px var(--bar-color,color(display-p3 .449061 .559519 .781774))}}@supports (color:lab(0% 0 0)){.tl-bar:hover{box-shadow:0 2px 12px var(--bar-color,lab(58.8216% -.557482 -35.7189))}}.tl-bar.active{filter:brightness(1.25);z-index:4;box-shadow:0 0 16px var(--bar-color,#6b90cc);transform:scaleY(1.2)}@supports (color:color(display-p3 0 0 0)){.tl-bar.active{box-shadow:0 0 16px var(--bar-color,color(display-p3 .449061 .559519 .781774))}}@supports (color:lab(0% 0 0)){.tl-bar.active{box-shadow:0 0 16px var(--bar-color,lab(58.8216% -.557482 -35.7189))}}.tl-bar-fill{border-radius:inherit;background:var(--bar-color);opacity:.35;position:absolute;top:0;bottom:0;left:0;right:0}.tl-bar:hover .tl-bar-fill,.tl-bar.active .tl-bar-fill{opacity:.55}.tl-bar-marker{color:var(--bar-color);filter:brightness(1.6)saturate(1.2);text-shadow:0 0 6px var(--bar-color);pointer-events:none;font-size:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.tl-bar-label{color:var(--text-primary);opacity:0;pointer-events:none;white-space:nowrap;font-size:10px;font-weight:600;transition:opacity .15s;position:relative}.tl-bar:hover .tl-bar-label{opacity:1}.action-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:6px 12px;font-size:12px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.action-btn--primary{color:#cbdfff;color:color(display-p3 .811259 .873257 .992208);color:lab(88.2011% -1.89927 -18.3428);background:linear-gradient(135deg,#1d4587,#32326d);background:linear-gradient(135deg,color(display-p3 .153533 .2659 .511983),color(display-p3 .195291 .194916 .412031));background:linear-gradient(135deg,lab(29.3399% 5.63866 -42.0206),lab(23.3003% 14.2058 -35.0966));border-color:#33548c;border-color:color(display-p3 .229049 .327581 .533696);border-color:lab(35.4848% 1.84765 -35.3079)}.action-btn--primary:hover{background:linear-gradient(135deg,#2151a1,#3d3c86);background:linear-gradient(135deg,color(display-p3 .180134 .31482 .611657),color(display-p3 .239239 .236673 .50744));background:linear-gradient(135deg,lab(34.9279% 7.15981 -48.9835),lab(28.8006% 17.5515 -42.0715));box-shadow:0 2px 12px rgba(29,69,135,.3);box-shadow:0 2px 12px color(display-p3 .153533 .2659 .511983/.3);box-shadow:0 2px 12px lab(29.3399% 5.63866 -42.0206/.3)}.error-state,.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.error-icon,.empty-icon{font-size:32px}.empty-title{color:var(--text-primary);font-size:16px;font-weight:600}.empty-desc{color:var(--text-muted);font-size:13px}.tl-tooltip{z-index:200;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);pointer-events:auto;flex-direction:column;gap:8px;min-width:230px;max-width:270px;padding:12px 14px 10px;animation:.15s tt-in;display:flex;position:absolute;box-shadow:0 8px 32px rgba(0,0,0,.45),0 2px 8px rgba(0,0,0,.3);box-shadow:0 8px 32px color(display-p3 0 0 0/.45),0 2px 8px color(display-p3 0 0 0/.3);box-shadow:0 8px 32px lab(0% 0 0/.45),0 2px 8px lab(0% 0 0/.3)}@keyframes tt-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.tl-tooltip[hidden]{display:none!important}.tl-tooltip-close{border:1px solid var(--border);background:var(--bg-tertiary);width:20px;height:20px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;font-size:13px;line-height:1;transition:background .12s,color .12s;display:flex;position:absolute;top:8px;right:8px}.tl-tooltip-close:hover{background:var(--bg-hover);color:var(--text-primary)}.tl-tooltip-planet{color:var(--text-primary);flex-wrap:wrap;align-items:center;gap:5px;padding-right:24px;font-size:14px;font-weight:600;display:flex}.tt-sep{color:var(--text-muted);margin:0 2px;font-size:12px}.tl-tooltip-aspect{background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:10px;align-self:flex-start;align-items:center;padding:2px 8px;font-size:11px;display:inline-flex}.tl-tooltip-dates{border-top:1px solid var(--border-subtle);flex-direction:column;gap:4px;padding-top:8px;display:flex}.tt-date-row{color:var(--text-secondary);font-variant-numeric:tabular-nums;align-items:center;gap:10px;font-size:12px;display:flex}.tt-dl{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);flex-shrink:0;width:52px;font-size:10px;font-weight:600}.tt-date-peak{color:var(--text-primary);font-weight:600}.tt-date-peak .tt-dl{color:var(--accent,#6fa4fc)}@supports (color:color(display-p3 0 0 0)){.tt-date-peak .tt-dl{color:var(--accent,color(display-p3 .481698 .638218 .960393))}}@supports (color:lab(0% 0 0)){.tt-date-peak .tt-dl{color:var(--accent,lab(66.5981% 1.20059 -49.6365))}}.tl-tooltip-claude{border-radius:var(--radius-sm);color:#c1d9ff;color:color(display-p3 .774044 .847695 .989755);color:lab(85.8279% -2.03902 -21.9173);cursor:pointer;background:linear-gradient(135deg,#253e7c,#2e2e62);background:linear-gradient(135deg,color(display-p3 .166649 .240671 .470633),color(display-p3 .178667 .179657 .371356));background:linear-gradient(135deg,lab(26.9892% 7.73893 -38.9991),lab(21.137% 12.4425 -31.621));border:1px solid #33548c;border:1px solid color(display-p3 .229049 .327581 .533696);border:1px solid lab(35.4848% 1.84765 -35.3079);width:100%;margin-top:2px;padding:7px 10px;font-size:12px;font-weight:600;transition:background .15s,box-shadow .15s}.tl-tooltip-claude:hover{background:linear-gradient(135deg,#2c4a96,#39387b);background:linear-gradient(135deg,color(display-p3 .198595 .287609 .56917),color(display-p3 .222009 .221094 .465204));background:linear-gradient(135deg,lab(32.552% 9.74825 -46.0441),lab(26.6408% 15.748 -38.595));box-shadow:0 2px 10px rgba(29,69,135,.3);box-shadow:0 2px 10px color(display-p3 .153533 .2659 .511983/.3);box-shadow:0 2px 10px lab(29.3399% 5.63866 -42.0206/.3)}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.floating-action-btn:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:50%;height:100%;animation:3s 2s infinite shimmer;position:absolute;top:0;left:-100%;transform:skew(-20deg)}@keyframes shimmer{0%{left:-100%}20%{left:200%}to{left:200%}}@keyframes slideUpFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUpFadeInPanel{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (max-width:480px){body,#app{padding:0}#pan-zoom-controls{flex-wrap:wrap;gap:6px}.pan-btn{min-width:40px;min-height:40px}.controls,.control-row{flex-wrap:wrap;gap:8px}}
|
|
11
11
|
/*$vite$:1*/</style>
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
package/dist/ui/vedic-chart.html
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<meta name="color-scheme" content="dark light" />
|
|
7
|
-
<title>Vedic Jyotish Chart</title>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<meta name="color-scheme" content="dark light" />
|
|
7
|
+
<title>Vedic Jyotish Chart</title>
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
<style>*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:#05070c;--bg-secondary:#0d1219;--bg-tertiary:#171d26;--bg-hover:#222935;--border:#2c333e;--border-subtle:#1b1f27;--text-primary:#e1e5eb;--text-secondary:#979fab;--text-muted:#646972;--gold:#eaab05;--gold-dim:#aa7e1a;--gold-glow:rgba(234,171,5,.25);--gold-subtle:rgba(234,171,5,.08);--planet-sun:#ffa837;--planet-moon:#a1cae8;--planet-mercury:#6ec272;--planet-venus:#f18ac1;--planet-mars:#fc5855;--planet-jupiter:#eaab05;--planet-saturn:#8fa6cb;--planet-rahu:#8186d7;--planet-ketu:#da8659;--dignity-exalted:#eaab05;--dignity-debilitated:#f3625d;--dignity-own:#6ec272;--radius:6px;--radius-sm:3px;--radius-lg:10px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .0216652 .0286234 .0452973);--bg-secondary:color(display-p3 .0560261 .0691379 .0946654);--bg-tertiary:color(display-p3 .096217 .113655 .147573);--bg-hover:color(display-p3 .137776 .160653 .2052);--border:color(display-p3 .178937 .199903 .240355);--border-subtle:color(display-p3 .108709 .122909 .150282);--text-primary:color(display-p3 .883958 .896627 .920543);--text-secondary:color(display-p3 .598684 .622198 .66685);--text-muted:color(display-p3 .39567 .412041 .443131);--gold:color(display-p3 .879508 .6816 .234703);--gold-dim:color(display-p3 .639817 .500341 .194357);--gold-glow:color(display-p3 .879508 .6816 .234703/.25);--gold-subtle:color(display-p3 .879508 .6816 .234703/.08);--planet-sun:color(display-p3 .979154 .659227 .21215);--planet-moon:color(display-p3 .664971 .787746 .896611);--planet-mercury:color(display-p3 .509102 .751692 .477144);--planet-venus:color(display-p3 .89124 .561977 .746576);--planet-mars:color(display-p3 .913707 .390639 .360361);--planet-jupiter:color(display-p3 .879508 .6816 .234703);--planet-saturn:color(display-p3 .57766 .647332 .78263);--planet-rahu:color(display-p3 .510127 .524428 .81989);--planet-ketu:color(display-p3 .810621 .541171 .382256);--dignity-exalted:color(display-p3 .879508 .6816 .234703);--dignity-debilitated:color(display-p3 .885816 .42028 .386667);--dignity-own:color(display-p3 .509102 .751692 .477144)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(1.96267% -.122614 -2.00764);--bg-secondary:lab(5.21286% -.326827 -5.10724);--bg-tertiary:lab(10.5893% -.558816 -7.26317);--bg-hover:lab(16.3655% -.679582 -9.07274);--border:lab(21.0274% -.743657 -8.03484);--border-subtle:lab(11.7732% -.55144 -5.84751);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(65.1297% -.927329 -7.41251);--text-muted:lab(44.2672% -.694215 -5.55873);--gold:lab(74.5441% 15.4997 76.437);--gold-dim:lab(55.9871% 11.3091 55.5836);--gold-glow:lab(74.5441% 15.4997 76.437/.25);--gold-subtle:lab(74.5441% 15.4997 76.437/.08);--planet-sun:lab(76.3024% 31.6825 83.6057);--planet-moon:lab(79.1643% -8.79321 -19.3308);--planet-mercury:lab(71.5613% -39.2213 32.0347);--planet-venus:lab(70.2618% 44.9914 -10.5022);--planet-mars:lab(60.882% 63.057 37.6481);--planet-jupiter:lab(74.5441% 15.4997 76.437);--planet-saturn:lab(67.2517% -1.74686 -21.8131);--planet-rahu:lab(58.1033% 13.5385 -42.6181);--planet-ketu:lab(64.4827% 30.1677 38.2587);--dignity-exalted:lab(74.5441% 15.4997 76.437);--dignity-debilitated:lab(61.0965% 56.6147 33.1618);--dignity-own:lab(71.5613% -39.2213 32.0347)}}@media (prefers-color-scheme:light){:root{--bg-primary:#f3f5f8;--bg-secondary:#e5e8ed;--bg-tertiary:#d3d8e0;--bg-hover:#c4cbd7;--border:#b1b8c3;--border-subtle:#ccd1d9;--text-primary:#0b0d12;--text-secondary:#3d434c;--text-muted:#646971;--gold:#896100;--gold-dim:#6f4b00;--gold-glow:rgba(137,97,0,.2);--gold-subtle:rgba(137,97,0,.07);--planet-sun:#a45f00;--planet-moon:#1b5274;--planet-mercury:#006c15;--planet-venus:#a03273;--planet-mars:#bd001b;--planet-jupiter:#896100;--planet-saturn:#3f5374;--planet-rahu:#413e96;--planet-ketu:#964100;--dignity-exalted:#896100;--dignity-debilitated:#bd001b;--dignity-own:#006c15;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root{--bg-primary:color(display-p3 .955887 .961034 .970732);--bg-secondary:color(display-p3 .899196 .909367 .928554);--bg-tertiary:color(display-p3 .8304 .845419 .873798);--bg-hover:color(display-p3 .772896 .795102 .837167);--border:color(display-p3 .698201 .719987 .761278);--border-subtle:color(display-p3 .805005 .819937 .848152);--text-primary:color(display-p3 .0441372 .0521689 .0676233);--text-secondary:color(display-p3 .242812 .260856 .295362);--text-muted:color(display-p3 .396691 .411981 .440999);--gold:color(display-p3 .57038 .356834 -.203198);--gold-dim:color(display-p3 .442672 .285282 -.134595);--gold-glow:color(display-p3 .57038 .356834 -.203198/.2);--gold-subtle:color(display-p3 .57038 .356834 -.203198/.07);--planet-sun:color(display-p3 .652927 .351579 -.183632);--planet-moon:color(display-p3 .168375 .317534 .44376);--planet-mercury:color(display-p3 .148908 .420483 .120432);--planet-venus:color(display-p3 .579328 .227384 .442243);--planet-mars:color(display-p3 .694209 .0659429 .120262);--planet-jupiter:color(display-p3 .57038 .356834 -.203198);--planet-saturn:color(display-p3 .262684 .323159 .443709);--planet-rahu:color(display-p3 .254224 .245063 .569023);--planet-ketu:color(display-p3 .557919 .263616 .052663);--dignity-exalted:color(display-p3 .57038 .356834 -.203198);--dignity-debilitated:color(display-p3 .694209 .0659429 .120262);--dignity-own:color(display-p3 .148908 .420483 .120432)}}@supports (color:lab(0% 0 0)){:root{--bg-primary:lab(96.5076% -.214994 -1.49846);--bg-secondary:lab(91.8546% -.419319 -2.9907);--bg-tertiary:lab(86.0409% -.610828 -4.47587);--bg-hover:lab(81.3789% -.873804 -6.69111);--border:lab(74.4184% -.864774 -6.68644);--border-subtle:lab(83.7208% -.609636 -4.47524);--text-primary:lab(3.67543% -.212148 -2.43837);--text-secondary:lab(28.0109% -.729963 -6.62285);--text-muted:lab(44.2712% -.656128 -5.19227);--gold:lab(44.0736% 22.5353 118.781);--gold-dim:lab(34.8944% 16.8155 79.322);--gold-glow:lab(44.0736% 22.5353 118.781/.2);--gold-subtle:lab(44.0736% 22.5353 118.781/.07);--planet-sun:lab(47.0942% 34.9095 115.734);--planet-moon:lab(32.6468% -8.89629 -25.0579);--planet-mercury:lab(39.2064% -45.2416 40.6297);--planet-venus:lab(39.8088% 50.4598 -11.9132);--planet-mars:lab(39.7145% 70.0599 49.6254);--planet-jupiter:lab(44.0736% 22.5353 118.781);--planet-saturn:lab(34.713% -.692427 -21.5121);--planet-rahu:lab(30.7426% 21.8588 -48.9882);--planet-ketu:lab(38.7083% 37.2573 56.6234);--dignity-exalted:lab(44.0736% 22.5353 118.781);--dignity-debilitated:lab(39.7145% 70.0599 49.6254);--dignity-own:lab(39.2064% -45.2416 40.6297)}}}html,body{background:var(--bg-primary);width:100%;height:100%;color:var(--text-primary);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.5;overflow:hidden}body{flex-direction:column;display:flex}#app{flex-direction:column;flex:1;display:flex;overflow:hidden}#loading-state{color:var(--text-secondary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}#loading-state[hidden]{display:none}.oe-loader{width:48px;height:48px;animation:1.4s linear infinite spin}.oe-loader circle{fill:none;stroke:var(--gold);stroke-width:3px;stroke-dasharray:200;stroke-dashoffset:80px;stroke-linecap:round}@keyframes spin{to{transform:rotate(360deg)}}.chart-status{background:var(--bg-secondary);border-top:1px solid var(--border-subtle);color:var(--text-muted);opacity:0;z-index:50;padding:6px 14px;font-size:11px;transition:opacity .2s,transform .2s;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.chart-status.visible{opacity:1;transform:translateY(0)}#vedic-container{flex-direction:column;flex:1;align-items:center;gap:12px;padding:12px;display:flex;overflow-y:auto}#vedic-container[hidden]{display:none}.vedic-header{justify-content:space-between;align-items:center;gap:8px;width:100%;max-width:540px;animation:.5s ease-out vedic-fade-in;display:flex}.vedic-title{text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:12px;font-weight:700}.vedic-header-meta{align-items:center;gap:8px;display:flex}.vedic-ayanamsa-badge{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border-subtle);color:var(--text-secondary);font-variant-numeric:tabular-nums;padding:2px 8px;font-size:10px;font-weight:600}.vedic-toggle-btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;padding:3px 8px;font-size:10px;font-weight:600;transition:background .15s,color .15s}.vedic-toggle-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.vedic-toggle-btn.active{border-color:var(--gold-dim);color:var(--gold);background:var(--gold-subtle)}.rashi-grid{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius);width:min(100%,540px);box-shadow:0 0 0 1px var(--border-subtle), 0 4px 32px rgba(0,0,0,.3);grid-template-rows:repeat(4,1fr);grid-template-columns:repeat(4,1fr);animation:.6s ease-out vedic-fade-in;display:grid;overflow:hidden}@supports (color:color(display-p3 0 0 0)){.rashi-grid{box-shadow:0 0 0 1px var(--border-subtle), 0 4px 32px color(display-p3 0 0 0/.3)}}@supports (color:lab(0% 0 0)){.rashi-grid{box-shadow:0 0 0 1px var(--border-subtle), 0 4px 32px lab(0% 0 0/.3)}}@keyframes vedic-fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.rashi-cell{background:var(--bg-secondary);border:1px solid var(--border-subtle);cursor:pointer;flex-direction:column;min-width:0;min-height:0;padding:4px 5px;transition:background .12s,box-shadow .12s;display:flex;position:relative;overflow:hidden}.rashi-cell.occupied:hover{background:var(--bg-hover);box-shadow:inset 0 0 0 1px var(--gold-glow), 0 0 12px var(--gold-glow);z-index:2}.rashi-cell.lagna{border-color:var(--gold-dim);background:#110d05;background:color(display-p3 .0641956 .0497811 .0230015);background:lab(3.71843% .818238 3.47664)}.rashi-cell.lagna:hover{box-shadow:inset 0 0 0 1px var(--gold), 0 0 18px var(--gold-glow)}.rashi-cell.center{background:var(--bg-primary);border-color:var(--border-subtle);cursor:default;text-align:center;justify-content:center;align-items:center;gap:2px}.rashi-cell.center:hover{background:var(--bg-primary);box-shadow:none}.cell-sign{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;font-size:9px;font-weight:700;line-height:1.2;overflow:hidden}.cell-sign-devanagari{color:var(--text-muted);flex-shrink:0;font-family:Noto Sans Devanagari,Mangal,sans-serif;font-size:10px;line-height:1.2;display:none}#vedic-container.show-devanagari .cell-sign-devanagari{display:block}#vedic-container.show-devanagari .cell-sign{display:none}.cell-top-row{flex-shrink:0;justify-content:space-between;align-items:baseline;gap:2px;min-width:0;display:flex}.cell-house-num{color:var(--text-muted);opacity:.5;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:8px;font-weight:700;line-height:1}.rashi-cell.lagna .cell-house-num{color:var(--gold-dim);opacity:1}.cell-planets{flex-wrap:wrap;gap:2px;min-height:0;margin-top:auto;padding-top:2px;display:flex;overflow:hidden}.planet-badge{white-space:nowrap;font-variant-numeric:tabular-nums;background:rgba(0,0,0,.2);background:color(display-p3 0 0 0/.2);background:lab(0% 0 0/.2);border-radius:2px;padding:1px 3px;font-size:10px;font-weight:700;line-height:1}.planet-badge[data-planet=sun]{color:var(--planet-sun)}.planet-badge[data-planet=moon]{color:var(--planet-moon)}.planet-badge[data-planet=mercury]{color:var(--planet-mercury)}.planet-badge[data-planet=venus]{color:var(--planet-venus)}.planet-badge[data-planet=mars]{color:var(--planet-mars)}.planet-badge[data-planet=jupiter]{color:var(--planet-jupiter)}.planet-badge[data-planet=saturn]{color:var(--planet-saturn)}.planet-badge[data-planet=rahu]{color:var(--planet-rahu)}.planet-badge[data-planet=ketu]{color:var(--planet-ketu)}.planet-badge .retro{opacity:.75;font-size:8px}.planet-badge .dignity-ex{color:var(--dignity-exalted);font-size:7px}.planet-badge .dignity-db{color:var(--dignity-debilitated);font-size:7px}@media (max-width:420px){.planet-label-full{display:none}.planet-label-short{display:inline}}@media (min-width:421px){.planet-label-full{display:inline}.planet-label-short{display:none}}.lagna-diagonal{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.lagna-diagonal line{stroke:var(--gold);stroke-width:1.5px;stroke-linecap:round;opacity:.7}.center-label{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);font-size:9px;font-weight:700}.center-ayanamsa{color:var(--gold-dim);font-family:JetBrains Mono,Fira Mono,ui-monospace,monospace;font-size:10px;font-weight:600}.center-lagna{color:var(--text-secondary);font-family:Noto Sans Devanagari,Mangal,sans-serif;font-size:11px;font-weight:700}.vedic-legend{flex-wrap:wrap;justify-content:center;gap:6px 12px;width:100%;max-width:540px;animation:.8s ease-out .2s both vedic-fade-in;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:4px;font-size:10px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.vedic-actions{flex-wrap:wrap;gap:6px;width:100%;max-width:540px;animation:.8s ease-out .3s both vedic-fade-in;display:flex}.action-btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;align-items:center;gap:4px;padding:7px 12px;font-size:11px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.action-btn--primary{color:#cbdfff;color:color(display-p3 .811259 .873257 .992208);color:lab(88.2011% -1.89927 -18.3428);background:linear-gradient(135deg,#1d4587,#32326d);background:linear-gradient(135deg,color(display-p3 .153533 .2659 .511983),color(display-p3 .195291 .194916 .412031));background:linear-gradient(135deg,lab(29.3399% 5.63866 -42.0206),lab(23.3003% 14.2058 -35.0966));border-color:#33548c;border-color:color(display-p3 .229049 .327581 .533696);border-color:lab(35.4848% 1.84765 -35.3079)}.action-btn--primary:hover{background:linear-gradient(135deg,#2151a1,#3d3c86);background:linear-gradient(135deg,color(display-p3 .180134 .31482 .611657),color(display-p3 .239239 .236673 .50744));background:linear-gradient(135deg,lab(34.9279% 7.15981 -48.9835),lab(28.8006% 17.5515 -42.0715));box-shadow:0 2px 12px rgba(29,69,135,.3);box-shadow:0 2px 12px color(display-p3 .153533 .2659 .511983/.3);box-shadow:0 2px 12px lab(29.3399% 5.63866 -42.0206/.3)}.vedic-drawer-overlay{z-index:60;opacity:0;background:rgba(0,0,0,.45);background:color(display-p3 0 0 0/.45);background:lab(0% 0 0/.45);transition:opacity .2s;position:fixed;top:0;bottom:0;left:0;right:0}.vedic-drawer-overlay.visible{opacity:1}.vedic-drawer{background:var(--bg-secondary);border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;z-index:61;max-height:65vh;padding:16px;transition:transform .25s ease-out;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(100%)}.vedic-drawer.visible{transform:translateY(0)}.drawer-handle{background:var(--border);border-radius:2px;width:36px;height:4px;margin:0 auto 14px}.drawer-sign-title{align-items:center;gap:8px;margin-bottom:4px;font-size:16px;font-weight:700;display:flex}.drawer-sign-devanagari{color:var(--text-secondary);font-family:Noto Sans Devanagari,Mangal,sans-serif;font-size:14px;font-weight:400}.drawer-sign-element{border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;font-size:10px;font-weight:600}.drawer-section{margin-top:14px}.drawer-section-title{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin-bottom:8px;font-size:10px;font-weight:700}.drawer-planet-row{background:var(--bg-tertiary);border-radius:var(--radius-sm);align-items:flex-start;gap:10px;margin-bottom:5px;padding:8px 10px;display:flex}.drawer-planet-abbr{min-width:22px;font-size:14px;font-weight:700}.drawer-planet-info{flex-direction:column;flex:1;gap:1px;display:flex}.drawer-planet-name{color:var(--text-primary);font-size:12px;font-weight:600}.drawer-planet-meta{color:var(--text-secondary);font-size:11px}.drawer-planet-nakshatra{color:var(--text-muted);font-size:10px}.drawer-planet-dignity{border-radius:10px;align-self:center;margin-left:auto;padding:1px 5px;font-size:9px;font-weight:700}.drawer-planet-dignity.exalted{background:var(--gold-subtle);color:var(--gold)}.drawer-planet-dignity.debilitated{color:var(--planet-mars);background:rgba(243,98,93,.12);background:color(display-p3 .885816 .42028 .386667/.12);background:lab(61.0965% 56.6147 33.1618/.12)}.drawer-planet-dignity.own{color:var(--planet-mercury);background:rgba(110,194,114,.1);background:color(display-p3 .509102 .751692 .477144/.1);background:lab(71.5613% -39.2213 32.0347/.1)}.error-state,.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.error-icon,.empty-icon{font-size:32px}.tooltip{z-index:100;border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);pointer-events:none;opacity:0;white-space:pre-line;max-width:220px;padding:5px 9px;font-size:11px;transition:opacity .15s;position:fixed}.tooltip.visible{opacity:1}@media (max-width:360px){.cell-sign{font-size:7px}.planet-badge{padding:1px 2px;font-size:8px}#vedic-container{gap:8px;padding:8px}.vedic-legend{display:none}}@media (max-width:420px){.cell-sign{font-size:8px}.center-ayanamsa{font-size:9px}}.chart-layer{opacity:1;transform-origin:310px 310px;animation:.5s cubic-bezier(.16,1,.3,1) both svgLayerAssemble;animation-delay:calc(var(--layer-index,0) * 80ms);transform:scale(1)}@keyframes svgLayerAssemble{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.floating-action-btn:after{content:"";background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);width:50%;height:100%;animation:3s 2s infinite shimmer;position:absolute;top:0;left:-100%;transform:skew(-20deg)}@keyframes shimmer{0%{left:-100%}20%{left:200%}to{left:200%}}@keyframes slideUpFadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUpFadeInPanel{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}
|
|
11
11
|
/*$vite$:1*/</style>
|
|
12
|
-
</head>
|
|
13
|
-
<body>
|
|
14
|
-
<div id="app">
|
|
15
|
-
<div id="loading-state">
|
|
16
|
-
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
17
|
-
<p>Computing Vedic chart…</p>
|
|
18
|
-
</div>
|
|
19
|
-
<div id="chart-status" class="chart-status" role="status" aria-live="polite"></div>
|
|
20
|
-
<div id="vedic-container" hidden></div>
|
|
21
|
-
<div id="tooltip" class="tooltip"
|
|
22
|
-
</div>
|
|
23
|
-
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<div id="app">
|
|
15
|
+
<div id="loading-state">
|
|
16
|
+
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
17
|
+
<p>Computing Vedic chart…</p>
|
|
18
|
+
</div>
|
|
19
|
+
<div id="chart-status" class="chart-status" role="status" aria-live="polite"></div>
|
|
20
|
+
<div id="vedic-container" hidden></div>
|
|
21
|
+
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
24
|
<script type="module">(function() {
|
|
25
25
|
let e2 = document.createElement("link").relList;
|
|
26
26
|
if (e2 && e2.supports && e2.supports("modulepreload")) return;
|
|
@@ -206,5 +206,5 @@ function F(e2) {
|
|
|
206
206
|
}
|
|
207
207
|
document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", C) : C();
|
|
208
208
|
</script>
|
|
209
|
-
</body>
|
|
210
|
-
</html>
|
|
209
|
+
</body>
|
|
210
|
+
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openephemeris/mcp-server",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.16.0",
|
|
4
4
|
"description": "Model Context Protocol server for the Open Ephemeris astronomical computation API",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
"start:sse": "node dist/server-sse.js",
|
|
30
30
|
"test": "vitest run --exclude \"dist/**\"",
|
|
31
31
|
"test:watch": "vitest --exclude \"dist/**\"",
|
|
32
|
+
"harness": "vite --config vite.harness.config.ts",
|
|
33
|
+
"validate:visual": "node scripts/visual-check.mjs",
|
|
32
34
|
"test:integration": "tsx scripts/test-client.ts",
|
|
33
35
|
"test:sse": "tsx scripts/test-sse-client.ts",
|
|
34
36
|
"typecheck": "tsc --noEmit",
|
|
@@ -77,6 +79,8 @@
|
|
|
77
79
|
"zod": "^4.1.13"
|
|
78
80
|
},
|
|
79
81
|
"devDependencies": {
|
|
82
|
+
"@axe-core/playwright": "^4.11.3",
|
|
83
|
+
"@playwright/test": "^1.60.0",
|
|
80
84
|
"@types/express": "^5.0.3",
|
|
81
85
|
"@types/node": "^25.0.1",
|
|
82
86
|
"adm-zip": "^0.5.17",
|