@openephemeris/mcp-server 4.6.0 → 4.8.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 +69 -0
- package/README.md +35 -3
- package/dist/index.js +5 -2
- package/dist/oauth/token.js +30 -3
- package/dist/prompts.js +3 -2
- package/dist/server-sse.js +7 -2
- package/dist/tools/apps/bazi-app.js +3 -3
- package/dist/tools/apps/bi-wheel-app.js +52 -18
- package/dist/tools/apps/bodygraph-app.js +12 -8
- package/dist/tools/apps/location-tools.js +67 -5
- package/dist/tools/apps/moon-phase-app.js +3 -2
- package/dist/tools/apps/vedic-chart-app.js +3 -3
- package/dist/tools/datetime-historical.d.ts +19 -0
- package/dist/tools/datetime-historical.js +77 -0
- package/dist/tools/index.d.ts +41 -2
- package/dist/tools/index.js +201 -4
- package/dist/tools/specialized/acg.js +4 -3
- package/dist/tools/specialized/hd_bodygraph.js +12 -3
- package/dist/tools/specialized/hd_cycles.js +19 -3
- package/dist/tools/specialized/hd_group.js +31 -6
- package/dist/tools/specialized/human_design.js +3 -2
- package/dist/tools/specialized/moon.js +11 -13
- package/dist/tools/specialized/vedic.js +3 -2
- package/dist/ui/bazi.html +30 -30
- package/dist/ui/bi-wheel.html +35 -35
- package/dist/ui/bodygraph.html +39 -39
- package/dist/ui/chart-wheel.html +93 -90
- package/dist/ui/moon-phase.html +32 -32
- package/dist/ui/transit-timeline.html +30 -30
- package/dist/ui/vedic-chart.html +35 -35
- package/package.json +4 -2
- package/smithery.yaml +14 -3
package/dist/ui/moon-phase.html
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
1
|
+
<!DOCTYPE html>
|
|
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'" />
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<meta name="color-scheme" content="dark light" />
|
|
8
|
-
<meta name="mcp-app-preferred-height" content="560" />
|
|
9
|
-
<!-- CSP is injected at build time by shared/singlefile-plugin.ts (the dev
|
|
10
|
-
server needs external src/ references that a strict CSP would block). -->
|
|
11
|
-
<title>Moon Phase Explorer</title>
|
|
12
|
-
<!-- External Google Fonts removed: Claude.ai sandbox enforces hardcoded
|
|
13
|
-
frame-src 'self' blob: data: and blocks external CDN fetches at
|
|
14
|
-
iframe render time. Styles fall back to the system font stack. -->
|
|
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'" />
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<meta name="color-scheme" content="dark light" />
|
|
8
|
+
<meta name="mcp-app-preferred-height" content="560" />
|
|
9
|
+
<!-- CSP is injected at build time by shared/singlefile-plugin.ts (the dev
|
|
10
|
+
server needs external src/ references that a strict CSP would block). -->
|
|
11
|
+
<title>Moon Phase Explorer</title>
|
|
12
|
+
<!-- External Google Fonts removed: Claude.ai sandbox enforces hardcoded
|
|
13
|
+
frame-src 'self' blob: data: and blocks external CDN fetches at
|
|
14
|
+
iframe render time. Styles fall back to the system font stack. -->
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
<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:#aab2be;--text-muted:#9399a2;--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 .67138 .695402 .740982);--text-muted:color(display-p3 .580249 .597798 .631048);--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(72.0905% -.941217 -7.41935);--text-muted:lab(62.8289% -.725299 -5.57443);--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)}}:root[data-theme=light]{--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[data-theme=light]{--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[data-theme=light]{--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:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.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)}:root[data-theme=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%}}.param-controls{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:6px 12px}.param-controls-grid{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.param-group{flex-direction:row;align-items:center;gap:6px;display:flex}.param-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:700}.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);color-scheme:inherit;border-radius:var(--radius-sm);width:120px;height:24px;padding:3px 6px;font-family:inherit;font-size:11px}@media (prefers-reduced-motion:no-preference){.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{transition:border-color .15s}}.param-group input:focus{border-color:var(--gold-dim);outline:none}.loc-searching{border-color:var(--gold-dim)!important}@media (prefers-reduced-motion:no-preference){.loc-searching{animation:1s ease-in-out infinite alternate loc-pulse}}@keyframes loc-pulse{0%{border-color:var(--gold-dim)}to{border-color:rgba(204,156,66,.55);border-color:color(display-p3 .76996 .617341 .321369/.55);border-color:lab(67.5798% 11.9379 52.333/.55)}}.param-group-loc{flex:1;position:relative}.param-group-loc input{width:100%}.loc-suggestions{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);z-index:100;max-height:200px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.35);box-shadow:0 4px 12px color(display-p3 0 0 0/.35);box-shadow:0 4px 12px lab(0% 0 0/.35)}.loc-item{color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;overflow:hidden}.loc-item:last-child{border-bottom:none}@media (prefers-reduced-motion:no-preference){.loc-item{transition:background .1s,color .1s}}.loc-item:hover,.loc-item--active{background:var(--gold-subtle);color:var(--gold)}.loc-status{color:var(--text-secondary);letter-spacing:.01em;padding:8px 10px;font-size:11px;font-style:italic}.loc-status-error{color:#d76a5a;color:color(display-p3 .788241 .439621 .373983);color:lab(58.1265% 42.6447 29.9439);font-style:normal;font-weight:600}.param-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.param-cost-hint{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;font-size:10px}.param-btn-icon{border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}@media (prefers-reduced-motion:no-preference){.param-btn-icon{transition:background .15s,border-color .15s,color .15s}}.param-btn-icon:hover{background:var(--surface-2);color:var(--text);border-color:var(--gold-dim)}.param-btn-primary{color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);height:24px;padding:3px 10px;font-family:inherit;font-size:10px;font-weight:600}@media (prefers-reduced-motion:no-preference){.param-btn-primary{transition:background .15s,border-color .15s}}.param-btn-primary:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.param-btn-primary:disabled{opacity:.5;cursor:not-allowed}.param-extra-toggle{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;cursor:pointer;align-items:center;gap:5px;font-size:10px;display:flex}.param-extra-toggle input[type=checkbox]{width:13px;height:13px;accent-color:var(--gold,oklch(72% .12 80));cursor:pointer}.param-extra-toggle input[type=checkbox]:disabled{cursor:not-allowed}.param-extra-toggle input[type=checkbox]:disabled~span{opacity:.5}:root[data-theme=light] .param-group input[type=date],:root[data-theme=light] .param-group input[type=time],:root[data-theme=light] .param-group input[type=text]{border-color:var(--border-strong);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167578 1.1277)}:root[data-theme=light] .loc-suggestions{border-color:var(--border-strong);background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167578 1.1277)}:root[data-theme=light] .param-btn-primary{background:rgba(160,112,0,.12);background:color(display-p3 .615135 .441554 -.0204711/.12);background:lab(51.2092% 16.2654 78.3504/.12);border-color:rgba(160,112,0,.4);border-color:color(display-p3 .615135 .441554 -.0204711/.4);border-color:lab(51.2092% 16.2654 78.3504/.4)}:root[data-theme=light] .param-btn-primary:hover:not(:disabled){background:rgba(160,112,0,.22);background:color(display-p3 .615135 .441554 -.0204711/.22);background:lab(51.2092% 16.2654 78.3504/.22);border-color:rgba(160,112,0,.65);border-color:color(display-p3 .615135 .441554 -.0204711/.65);border-color:lab(51.2092% 16.2654 78.3504/.65)}.param-summary-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:2px 0;margin-bottom:4px;padding:3px 4px 5px;font-size:10px;line-height:1.3;display:flex}.param-summary-bar[hidden]{display:none}.summary-name{color:var(--gold,#d6a54d);letter-spacing:.01em;padding-right:2px;font-size:12px;font-weight:700}@supports (color:color(display-p3 0 0 0)){.summary-name{color:var(--gold,color(display-p3 .808073 .654274 .358094))}}@supports (color:lab(0% 0 0)){.summary-name{color:var(--gold,lab(71.071% 11.7474 51.7651))}}.summary-datetime{font-variant-numeric:tabular-nums;color:var(--text-secondary);align-items:baseline;gap:4px;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:11px;display:inline-flex}.summary-time-sep{color:var(--border-strong);opacity:.7;font-family:inherit;font-size:9px}.summary-loc{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;padding-left:2px;font-size:11px;font-style:italic;overflow:hidden}.summary-sep{background:var(--border-strong);opacity:.5;vertical-align:middle;flex-shrink:0;width:1px;height:11px;margin:0 7px;display:inline-block}
|
|
17
|
+
<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:#aab2be;--text-muted:#9399a2;--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 .67138 .695402 .740982);--text-muted:color(display-p3 .580249 .597798 .631048);--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% -.603847 -7.27841);--bg-hover:lab(18.6882% -.727877 -9.08879);--border:lab(18.7165% -.689328 -7.3094);--border-subtle:lab(12.9391% -.548735 -5.49436);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(72.0905% -.941157 -7.41935);--text-muted:lab(62.8289% -.725299 -5.57443);--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.46357 -44.2057)}}:root[data-theme=light]{--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[data-theme=light]{--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[data-theme=light]{--bg-primary:lab(96.5044% -.267208 -1.87215);--bg-secondary:lab(93.0079% -.518054 -3.73492);--bg-tertiary:lab(88.3503% -.749856 -5.58736);--bg-hover:lab(86.0117% -.963032 -7.43047);--border:lab(79.0511% -.952899 -7.42528);--border-subtle:lab(86.0302% -.748128 -5.58643);--text-primary:lab(5.23796% -.285208 -3.0582);--text-secondary:lab(30.3224% -.794604 -7.35166);--text-muted:lab(39.6225% -.718504 -5.91863);--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.24845 -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:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.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)}:root[data-theme=light] .moon-card--voc.moon-card--active{background:#ffead8;background:color(display-p3 1.00032 .917094 .842425);background:lab(94.1113% 7.04327 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.201% -1.89924 -18.3428);background:#11397b;background:color(display-p3 .112797 .221529 .46413);background:lab(24.6079% 7.13964 -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.93907 -45.466);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.98773 -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%}}.param-controls{background:var(--surface);border-top:1px solid var(--border);flex-shrink:0;padding:6px 12px}.param-controls-grid{flex-wrap:wrap;align-items:center;gap:6px 10px;display:flex}.param-group{flex-direction:row;align-items:center;gap:6px;display:flex}.param-group label{text-transform:uppercase;color:var(--text-secondary);letter-spacing:.06em;white-space:nowrap;font-size:10px;font-weight:700}.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);color-scheme:inherit;border-radius:var(--radius-sm);width:120px;height:24px;padding:3px 6px;font-family:inherit;font-size:11px}@media (prefers-reduced-motion:no-preference){.param-group input[type=date],.param-group input[type=time],.param-group input[type=text]{transition:border-color .15s}}.param-group input:focus{border-color:var(--gold-dim);outline:none}.loc-searching{border-color:var(--gold-dim)!important}@media (prefers-reduced-motion:no-preference){.loc-searching{animation:1s ease-in-out infinite alternate loc-pulse}}@keyframes loc-pulse{0%{border-color:var(--gold-dim)}to{border-color:rgba(204,156,66,.55);border-color:color(display-p3 .76996 .617341 .321369/.55);border-color:lab(67.5798% 11.9379 52.333/.55)}}.param-group-loc{flex:1;position:relative}.param-group-loc input{width:100%}.loc-suggestions{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);z-index:100;max-height:200px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto;box-shadow:0 4px 12px rgba(0,0,0,.35);box-shadow:0 4px 12px color(display-p3 0 0 0/.35);box-shadow:0 4px 12px lab(0% 0 0/.35)}.loc-item{color:var(--text);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid var(--border);padding:8px 10px;font-size:12px;overflow:hidden}.loc-item:last-child{border-bottom:none}@media (prefers-reduced-motion:no-preference){.loc-item{transition:background .1s,color .1s}}.loc-item:hover,.loc-item--active{background:var(--gold-subtle);color:var(--gold)}.loc-status{color:var(--text-secondary);letter-spacing:.01em;padding:8px 10px;font-size:11px;font-style:italic}.loc-status-error{color:#d76a5a;color:color(display-p3 .788241 .439621 .373983);color:lab(58.1265% 42.6447 29.9439);font-style:normal;font-weight:600}.param-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.param-cost-hint{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;font-size:10px}.param-btn-icon{border:1px solid var(--border-strong);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}@media (prefers-reduced-motion:no-preference){.param-btn-icon{transition:background .15s,border-color .15s,color .15s}}.param-btn-icon:hover{background:var(--surface-2);color:var(--text);border-color:var(--gold-dim)}.param-btn-primary{color:var(--gold);border-radius:var(--radius-sm);cursor:pointer;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;background:rgba(204,156,66,.12);background:color(display-p3 .76996 .617341 .321369/.12);background:lab(67.5798% 11.9379 52.333/.12);border:1px solid rgba(204,156,66,.4);border:1px solid color(display-p3 .76996 .617341 .321369/.4);border:1px solid lab(67.5798% 11.9379 52.333/.4);height:24px;padding:3px 10px;font-family:inherit;font-size:10px;font-weight:600}@media (prefers-reduced-motion:no-preference){.param-btn-primary{transition:background .15s,border-color .15s}}.param-btn-primary:hover:not(:disabled){background:rgba(204,156,66,.2);background:color(display-p3 .76996 .617341 .321369/.2);background:lab(67.5798% 11.9379 52.333/.2);border-color:rgba(204,156,66,.65);border-color:color(display-p3 .76996 .617341 .321369/.65);border-color:lab(67.5798% 11.9379 52.333/.65)}.param-btn-primary:disabled{opacity:.5;cursor:not-allowed}.param-extra-toggle{color:var(--text-secondary);white-space:nowrap;letter-spacing:.02em;cursor:pointer;align-items:center;gap:5px;font-size:10px;display:flex}.param-extra-toggle input[type=checkbox]{width:13px;height:13px;accent-color:var(--gold,oklch(72% .12 80));cursor:pointer}.param-extra-toggle input[type=checkbox]:disabled{cursor:not-allowed}.param-extra-toggle input[type=checkbox]:disabled~span{opacity:.5}:root[data-theme=light] .param-group input[type=date],:root[data-theme=light] .param-group input[type=time],:root[data-theme=light] .param-group input[type=text]{border-color:var(--border-strong);color:var(--text);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167638 1.12768)}:root[data-theme=light] .loc-suggestions{border-color:var(--border-strong);background:#fdfcf9;background:color(display-p3 .990365 .986474 .97916);background:lab(98.849% .167638 1.12768)}:root[data-theme=light] .param-btn-primary{background:rgba(160,112,0,.12);background:color(display-p3 .615135 .441554 -.0204711/.12);background:lab(51.2092% 16.2654 78.3504/.12);border-color:rgba(160,112,0,.4);border-color:color(display-p3 .615135 .441554 -.0204711/.4);border-color:lab(51.2092% 16.2654 78.3504/.4)}:root[data-theme=light] .param-btn-primary:hover:not(:disabled){background:rgba(160,112,0,.22);background:color(display-p3 .615135 .441554 -.0204711/.22);background:lab(51.2092% 16.2654 78.3504/.22);border-color:rgba(160,112,0,.65);border-color:color(display-p3 .615135 .441554 -.0204711/.65);border-color:lab(51.2092% 16.2654 78.3504/.65)}.param-summary-bar{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:2px 0;margin-bottom:4px;padding:3px 4px 5px;font-size:10px;line-height:1.3;display:flex}.param-summary-bar[hidden]{display:none}.summary-name{color:var(--gold,#d6a54d);letter-spacing:.01em;padding-right:2px;font-size:12px;font-weight:700}@supports (color:color(display-p3 0 0 0)){.summary-name{color:var(--gold,color(display-p3 .808073 .654274 .358094))}}@supports (color:lab(0% 0 0)){.summary-name{color:var(--gold,lab(71.071% 11.7474 51.7651))}}.summary-datetime{font-variant-numeric:tabular-nums;color:var(--text-secondary);align-items:baseline;gap:4px;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:11px;display:inline-flex}.summary-time-sep{color:var(--border-strong);opacity:.7;font-family:inherit;font-size:9px}.summary-loc{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;padding-left:2px;font-size:11px;font-style:italic;overflow:hidden}.summary-sep{background:var(--border-strong);opacity:.5;vertical-align:middle;flex-shrink:0;width:1px;height:11px;margin:0 7px;display:inline-block}
|
|
18
18
|
/*$vite$:1*/</style>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<div id="app">
|
|
22
|
-
<div id="loading-state">
|
|
23
|
-
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
24
|
-
<p>Reading tonight's moon…</p>
|
|
25
|
-
</div>
|
|
26
|
-
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
27
|
-
<!-- Moon phase doesn't need zoom — image is fixed. Container is kept so
|
|
28
|
-
setupFullscreenToggle has a host to inject the fullscreen button into. -->
|
|
29
|
-
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden></div>
|
|
30
|
-
<div id="moon-container" hidden></div>
|
|
31
|
-
<div id="param-controls-container" hidden></div>
|
|
32
|
-
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
33
|
-
</div>
|
|
34
|
-
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<div id="app">
|
|
22
|
+
<div id="loading-state">
|
|
23
|
+
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
24
|
+
<p>Reading tonight's moon…</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
27
|
+
<!-- Moon phase doesn't need zoom — image is fixed. Container is kept so
|
|
28
|
+
setupFullscreenToggle has a host to inject the fullscreen button into. -->
|
|
29
|
+
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden></div>
|
|
30
|
+
<div id="moon-container" hidden></div>
|
|
31
|
+
<div id="param-controls-container" hidden></div>
|
|
32
|
+
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
35
|
<script type="module">var e = Object.defineProperty, t = (t2, n2) => {
|
|
36
36
|
let r2 = {};
|
|
37
37
|
for (var i2 in t2) e(r2, i2, { get: t2[i2], enumerable: true });
|
|
@@ -7141,5 +7141,5 @@ F_.ontoolresult = function(e5) {
|
|
|
7141
7141
|
}
|
|
7142
7142
|
})();
|
|
7143
7143
|
</script>
|
|
7144
|
-
</body>
|
|
7145
|
-
</html>
|
|
7144
|
+
</body>
|
|
7145
|
+
</html>
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
1
|
+
<!DOCTYPE html>
|
|
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'" />
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<meta name="color-scheme" content="dark light" />
|
|
8
|
-
<meta name="mcp-app-preferred-height" content="560" />
|
|
9
|
-
<!-- CSP is injected at build time by shared/singlefile-plugin.ts (the dev
|
|
10
|
-
server needs external src/ references that a strict CSP would block). -->
|
|
11
|
-
<title>Transit Timeline Explorer</title>
|
|
12
|
-
<!-- External Google Fonts removed: Claude.ai sandbox enforces hardcoded
|
|
13
|
-
frame-src 'self' blob: data: and blocks external CDN fetches at
|
|
14
|
-
iframe render time. Styles fall back to the system font stack. -->
|
|
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'" />
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<meta name="color-scheme" content="dark light" />
|
|
8
|
+
<meta name="mcp-app-preferred-height" content="560" />
|
|
9
|
+
<!-- CSP is injected at build time by shared/singlefile-plugin.ts (the dev
|
|
10
|
+
server needs external src/ references that a strict CSP would block). -->
|
|
11
|
+
<title>Transit Timeline Explorer</title>
|
|
12
|
+
<!-- External Google Fonts removed: Claude.ai sandbox enforces hardcoded
|
|
13
|
+
frame-src 'self' blob: data: and blocks external CDN fetches at
|
|
14
|
+
iframe render time. Styles fall back to the system font stack. -->
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
<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:#aab2be;--text-muted:#9399a2;--accent:#62b3ff;--accent-warm:#e6ac3d;--radius:8px;--radius-sm:4px;--radius-lg:12px;--planet-sun:#f0b135;--planet-moon:#aebedf;--planet-mercury:#47c58c;--planet-venus:#ec7fca;--planet-mars:#f05560;--planet-jupiter:#a492fb;--planet-saturn:#67acb0;--planet-uranus:#30c8cf;--planet-neptune:#3b9cf6;--planet-pluto:#b589d6;--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 .67138 .695402 .740982);--text-muted:color(display-p3 .580249 .597798 .631048);--accent:color(display-p3 .446063 .694439 1.01077);--accent-warm:color(display-p3 .866978 .684443 .324483);--planet-sun:color(display-p3 .903179 .705765 .311279);--planet-moon:color(display-p3 .694219 .742748 .862643);--planet-mercury:color(display-p3 .425739 .763831 .565642);--planet-venus:color(display-p3 .867795 .51996 .779002);--planet-mars:color(display-p3 .871142 .375628 .39222);--planet-jupiter:color(display-p3 .632215 .575747 .957982);--planet-saturn:color(display-p3 .466828 .667389 .683738);--planet-uranus:color(display-p3 .390298 .771661 .803762);--planet-neptune:color(display-p3 .341875 .605542 .938093);--planet-pluto:color(display-p3 .683949 .542579 .820326)}}@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(72.0905% -.941217 -7.41935);--text-muted:lab(62.8289% -.725299 -5.57443);--accent:lab(70.4043% -7.21234 -50.7672);--accent-warm:lab(74.5248% 14.3487 62.5064);--planet-sun:lab(76.8315% 15.651 68.1009);--planet-moon:lab(76.5362% -.332385 -18.4986);--planet-mercury:lab(71.6908% -46.4716 18.2798);--planet-venus:lab(67.5807% 49.5621 -19.9184);--planet-mars:lab(58.5572% 60.882 28.2409);--planet-jupiter:lab(65.5944% 24.778 -50.722);--planet-saturn:lab(65.8857% -22.0269 -9.1112);--planet-uranus:lab(73.3218% -37.5825 -15.4423);--planet-neptune:lab(62.1411% -5.66676 -53.8683);--planet-pluto:lab(63.5145% 28.3498 -33.4164)}}:root[data-theme=light]{--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;--planet-sun:#ab6a00;--planet-moon:#5b6986;--planet-mercury:#00784a;--planet-venus:#a13b85;--planet-mars:#be222a;--planet-jupiter:#644fb1;--planet-saturn:#276779;--planet-uranus:#00717f;--planet-neptune:#005bb4;--planet-pluto:#7d4b92;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--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);--planet-sun:color(display-p3 .653347 .414453 -.0616416);--planet-moon:color(display-p3 .366623 .409257 .517223);--planet-mercury:color(display-p3 .110777 .470086 .292341);--planet-venus:color(display-p3 .585722 .257645 .510421);--planet-mars:color(display-p3 .684596 .198589 .19246);--planet-jupiter:color(display-p3 .380719 .312728 .671899);--planet-saturn:color(display-p3 .222977 .397358 .465979);--planet-uranus:color(display-p3 -.0568507 .446018 .525418);--planet-neptune:color(display-p3 .142171 .351944 .684339);--planet-pluto:color(display-p3 .461413 .304902 .555395)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--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);--planet-sun:lab(50.8649% 25.8853 84.6379);--planet-moon:lab(44.0253% .202179 -18.3088);--planet-mercury:lab(43.8263% -47.6118 18.596);--planet-venus:lab(42.0231% 49.0779 -19.7923);--planet-mars:lab(42.3846% 60.2199 38.2468);--planet-jupiter:lab(39.7961% 27.9455 -50.2543);--planet-saturn:lab(40.042% -16.3361 -16.5904);--planet-uranus:lab(42.863% -32.0891 -21.9387);--planet-neptune:lab(38.3807% 4.98325 -54.8273);--planet-pluto:lab(40.2012% 30.8431 -30.6281)}}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;transition:background .15s,color .15s;display:flex}.pan-btn:hover{background:var(--bg-hover);color:var(--text-primary)}#timeline-container{flex-direction:column;flex:1;min-height:440px;padding:16px 16px 4px;display:flex;overflow:hidden}#timeline-container[hidden]{display:none}.tl-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.tl-title{font-family:var(--font-display);letter-spacing:.01em;color:var(--text-primary);font-size:18px;font-weight:600}.tl-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px}.tl-aspect-badge{background:color-mix(in oklab, var(--accent) 16%, transparent);border:1px solid color-mix(in oklab, var(--accent) 40%, transparent);color:var(--accent);white-space:nowrap;border-radius:999px;flex:none;padding:4px 10px;font-size:11px;font-weight:600}.tl-natal-bar{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;padding-bottom:12px;display:flex}.tl-natal-bar-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-right:2px;font-size:10.5px}.tl-chip{background:var(--bg-secondary);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:999px;padding:3px 8px;font-size:11px}.tl-scroll{flex:1;padding-right:2px;overflow-y:auto}.tl-group{margin-bottom:14px}.tl-group-label{z-index:2;font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--accent-warm);background:linear-gradient(var(--bg-primary) 70%, transparent);padding:4px 0 6px;font-size:12px;font-weight:600;position:-webkit-sticky;position:sticky;top:0}.tl-events{list-style:none}.tl-event{border-radius:var(--radius);cursor:pointer;grid-template-columns:18px 34px 1fr;align-items:start;gap:10px;padding:9px 10px 9px 0;transition:background .15s;display:grid;position:relative}.tl-event:hover{background:var(--bg-secondary)}.tl-event.active{background:color-mix(in oklab, var(--accent) 12%, var(--bg-secondary));box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--accent) 40%, transparent)}.tl-event:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tl-event-rail{justify-content:center;align-self:stretch;padding-top:6px;display:flex;position:relative}.tl-event-rail:before{content:"";background:var(--border);width:2px;position:absolute;top:0;bottom:-18px;left:50%;transform:translate(-50%)}.tl-event:last-child .tl-event-rail:before{bottom:50%}.tl-node{z-index:1;background:var(--planet-color,var(--accent));width:9px;height:9px;box-shadow:0 0 0 3px var(--bg-primary);border-radius:50%;position:relative}.tl-event-glyph{width:34px;height:34px;color:var(--planet-color,var(--accent));background:color-mix(in oklab, var(--planet-color,var(--accent)) 14%, transparent);border:1px solid color-mix(in oklab, var(--planet-color,var(--accent)) 35%, transparent);border-radius:50%;justify-content:center;align-items:center;font-size:18px;line-height:1;display:flex}.tl-event-body{min-width:0}.tl-event-line1{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;display:flex}.tl-planet-name{color:var(--text-primary);font-weight:600}.tl-retro{color:var(--accent-warm);font-size:12px;font-weight:600}.tl-natal{color:var(--text-secondary)}.tl-natal-glyph{color:var(--text-primary)}.tl-event-line2{color:var(--text-muted);align-items:center;gap:6px;margin-top:2px;font-size:11.5px;display:flex}.tl-dot{opacity:.5}.tl-pos{color:var(--text-secondary)}.tl-ask{border-radius:var(--radius-sm);border:1px solid color-mix(in oklab, var(--accent) 35%, transparent);background:color-mix(in oklab, var(--accent) 10%, transparent);color:var(--accent);font:inherit;cursor:pointer;margin-top:8px;padding:5px 10px;font-size:11px;font-weight:600;transition:background .15s;display:none}.tl-ask:hover{background:color-mix(in oklab, var(--accent) 20%, transparent)}.tl-event.active .tl-ask{display:inline-flex}.tl-actions{border-top:1px solid var(--border-subtle);gap:8px;margin-top:4px;padding:10px 0 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{background:color-mix(in oklab, var(--accent) 30%, var(--bg-secondary));border-color:color-mix(in oklab, var(--accent) 45%, transparent);color:var(--text-primary)}.action-btn--primary:hover{background:color-mix(in oklab, var(--accent) 40%, var(--bg-secondary));box-shadow:0 0 0 1px color-mix(in oklab, var(--accent) 50%, transparent)}.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-weight:600}.empty-desc,.error-msg{color:var(--text-secondary);max-width:320px}.error-retry-btn{border:1px solid var(--border);color:var(--accent-warm);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:var(--bg-hover)}.cancel-toast{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);z-index:200;opacity:0;pointer-events:none;border-radius:999px;padding:8px 16px;font-size:12px;transition:opacity .3s,transform .3s;position:fixed;bottom:16px;left:50%;transform:translate(-50%)translateY(10px)}.cancel-toast.visible{opacity:1;transform:translate(-50%)translateY(0)}body.is-fullscreen #timeline-container{width:100%;max-width:720px;margin:0 auto}
|
|
17
|
+
<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:#aab2be;--text-muted:#9399a2;--accent:#62b3ff;--accent-warm:#e6ac3d;--radius:8px;--radius-sm:4px;--radius-lg:12px;--planet-sun:#f0b135;--planet-moon:#aebedf;--planet-mercury:#47c58c;--planet-venus:#ec7fca;--planet-mars:#f05560;--planet-jupiter:#a492fb;--planet-saturn:#67acb0;--planet-uranus:#30c8cf;--planet-neptune:#3b9cf6;--planet-pluto:#b589d6;--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 .67138 .695402 .740982);--text-muted:color(display-p3 .580249 .597798 .631048);--accent:color(display-p3 .446063 .694439 1.01077);--accent-warm:color(display-p3 .866978 .684443 .324483);--planet-sun:color(display-p3 .903179 .705765 .311279);--planet-moon:color(display-p3 .694219 .742748 .862643);--planet-mercury:color(display-p3 .425739 .763831 .565642);--planet-venus:color(display-p3 .867795 .51996 .779002);--planet-mars:color(display-p3 .871142 .375628 .39222);--planet-jupiter:color(display-p3 .632215 .575747 .957982);--planet-saturn:color(display-p3 .466828 .667389 .683738);--planet-uranus:color(display-p3 .390298 .771661 .803762);--planet-neptune:color(display-p3 .341875 .605542 .938093);--planet-pluto:color(display-p3 .683949 .542579 .820326)}}@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% -.603847 -7.27841);--bg-hover:lab(18.6882% -.727877 -9.08879);--border:lab(18.7165% -.689328 -7.3094);--border-subtle:lab(12.9391% -.548735 -5.49436);--text-primary:lab(90.6878% -.517368 -3.73452);--text-secondary:lab(72.0905% -.941157 -7.41935);--text-muted:lab(62.8289% -.725299 -5.57443);--accent:lab(70.4043% -7.21234 -50.7672);--accent-warm:lab(74.5248% 14.3487 62.5064);--planet-sun:lab(76.8315% 15.651 68.1009);--planet-moon:lab(76.5362% -.332385 -18.4986);--planet-mercury:lab(71.6908% -46.4717 18.2798);--planet-venus:lab(67.5807% 49.5621 -19.9184);--planet-mars:lab(58.5572% 60.8819 28.2409);--planet-jupiter:lab(65.5944% 24.778 -50.7219);--planet-saturn:lab(65.8857% -22.0269 -9.1112);--planet-uranus:lab(73.3218% -37.5825 -15.4423);--planet-neptune:lab(62.1411% -5.66679 -53.8683);--planet-pluto:lab(63.5145% 28.3498 -33.4164)}}:root[data-theme=light]{--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;--planet-sun:#ab6a00;--planet-moon:#5b6986;--planet-mercury:#00784a;--planet-venus:#a13b85;--planet-mars:#be222a;--planet-jupiter:#644fb1;--planet-saturn:#276779;--planet-uranus:#00717f;--planet-neptune:#005bb4;--planet-pluto:#7d4b92;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--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);--planet-sun:color(display-p3 .653347 .414453 -.0616416);--planet-moon:color(display-p3 .366623 .409257 .517223);--planet-mercury:color(display-p3 .110777 .470086 .292341);--planet-venus:color(display-p3 .585722 .257645 .510421);--planet-mars:color(display-p3 .684596 .198589 .19246);--planet-jupiter:color(display-p3 .380719 .312728 .671899);--planet-saturn:color(display-p3 .222977 .397358 .465979);--planet-uranus:color(display-p3 -.0568507 .446018 .525418);--planet-neptune:color(display-p3 .142171 .351944 .684339);--planet-pluto:color(display-p3 .461413 .304902 .555395)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg-primary:lab(96.5044% -.267208 -1.87215);--bg-secondary:lab(93.0079% -.518054 -3.73492);--bg-tertiary:lab(88.3503% -.749856 -5.58736);--bg-hover:lab(86.0117% -.963032 -7.43047);--border:lab(79.0511% -.952899 -7.42528);--border-subtle:lab(86.0302% -.748128 -5.58643);--text-primary:lab(5.23796% -.285208 -3.0582);--text-secondary:lab(30.3224% -.794604 -7.35166);--text-muted:lab(39.6225% -.718504 -5.91863);--accent:lab(41.1205% -1.70796 -50.1423);--accent-warm:lab(47.6194% 20.1868 104.51);--planet-sun:lab(50.8649% 25.8853 84.6379);--planet-moon:lab(44.0253% .202179 -18.3088);--planet-mercury:lab(43.8263% -47.6118 18.596);--planet-venus:lab(42.0231% 49.078 -19.7923);--planet-mars:lab(42.3845% 60.2199 38.2468);--planet-jupiter:lab(39.7961% 27.9455 -50.2543);--planet-saturn:lab(40.042% -16.3361 -16.5904);--planet-uranus:lab(42.863% -32.0891 -21.9386);--planet-neptune:lab(38.3807% 4.98325 -54.8273);--planet-pluto:lab(40.2012% 30.8431 -30.6281)}}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;transition:background .15s,color .15s;display:flex}.pan-btn:hover{background:var(--bg-hover);color:var(--text-primary)}#timeline-container{flex-direction:column;flex:1;min-height:440px;padding:16px 16px 4px;display:flex;overflow:hidden}#timeline-container[hidden]{display:none}.tl-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.tl-title{font-family:var(--font-display);letter-spacing:.01em;color:var(--text-primary);font-size:18px;font-weight:600}.tl-subtitle{color:var(--text-muted);margin-top:2px;font-size:12px}.tl-aspect-badge{background:color-mix(in oklab, var(--accent) 16%, transparent);border:1px solid color-mix(in oklab, var(--accent) 40%, transparent);color:var(--accent);white-space:nowrap;border-radius:999px;flex:none;padding:4px 10px;font-size:11px;font-weight:600}.tl-natal-bar{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;padding-bottom:12px;display:flex}.tl-natal-bar-label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-right:2px;font-size:10.5px}.tl-chip{background:var(--bg-secondary);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:999px;padding:3px 8px;font-size:11px}.tl-scroll{flex:1;padding-right:2px;overflow-y:auto}.tl-group{margin-bottom:14px}.tl-group-label{z-index:2;font-family:var(--font-display);letter-spacing:.04em;text-transform:uppercase;color:var(--accent-warm);background:linear-gradient(var(--bg-primary) 70%, transparent);padding:4px 0 6px;font-size:12px;font-weight:600;position:-webkit-sticky;position:sticky;top:0}.tl-events{list-style:none}.tl-event{border-radius:var(--radius);cursor:pointer;grid-template-columns:18px 34px 1fr;align-items:start;gap:10px;padding:9px 10px 9px 0;transition:background .15s;display:grid;position:relative}.tl-event:hover{background:var(--bg-secondary)}.tl-event.active{background:color-mix(in oklab, var(--accent) 12%, var(--bg-secondary));box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--accent) 40%, transparent)}.tl-event:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tl-event-rail{justify-content:center;align-self:stretch;padding-top:6px;display:flex;position:relative}.tl-event-rail:before{content:"";background:var(--border);width:2px;position:absolute;top:0;bottom:-18px;left:50%;transform:translate(-50%)}.tl-event:last-child .tl-event-rail:before{bottom:50%}.tl-node{z-index:1;background:var(--planet-color,var(--accent));width:9px;height:9px;box-shadow:0 0 0 3px var(--bg-primary);border-radius:50%;position:relative}.tl-event-glyph{width:34px;height:34px;color:var(--planet-color,var(--accent));background:color-mix(in oklab, var(--planet-color,var(--accent)) 14%, transparent);border:1px solid color-mix(in oklab, var(--planet-color,var(--accent)) 35%, transparent);border-radius:50%;justify-content:center;align-items:center;font-size:18px;line-height:1;display:flex}.tl-event-body{min-width:0}.tl-event-line1{flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13px;display:flex}.tl-planet-name{color:var(--text-primary);font-weight:600}.tl-retro{color:var(--accent-warm);font-size:12px;font-weight:600}.tl-natal{color:var(--text-secondary)}.tl-natal-glyph{color:var(--text-primary)}.tl-event-line2{color:var(--text-muted);align-items:center;gap:6px;margin-top:2px;font-size:11.5px;display:flex}.tl-dot{opacity:.5}.tl-pos{color:var(--text-secondary)}.tl-ask{border-radius:var(--radius-sm);border:1px solid color-mix(in oklab, var(--accent) 35%, transparent);background:color-mix(in oklab, var(--accent) 10%, transparent);color:var(--accent);font:inherit;cursor:pointer;margin-top:8px;padding:5px 10px;font-size:11px;font-weight:600;transition:background .15s;display:none}.tl-ask:hover{background:color-mix(in oklab, var(--accent) 20%, transparent)}.tl-event.active .tl-ask{display:inline-flex}.tl-actions{border-top:1px solid var(--border-subtle);gap:8px;margin-top:4px;padding:10px 0 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{background:color-mix(in oklab, var(--accent) 30%, var(--bg-secondary));border-color:color-mix(in oklab, var(--accent) 45%, transparent);color:var(--text-primary)}.action-btn--primary:hover{background:color-mix(in oklab, var(--accent) 40%, var(--bg-secondary));box-shadow:0 0 0 1px color-mix(in oklab, var(--accent) 50%, transparent)}.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-weight:600}.empty-desc,.error-msg{color:var(--text-secondary);max-width:320px}.error-retry-btn{border:1px solid var(--border);color:var(--accent-warm);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:var(--bg-hover)}.cancel-toast{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);z-index:200;opacity:0;pointer-events:none;border-radius:999px;padding:8px 16px;font-size:12px;transition:opacity .3s,transform .3s;position:fixed;bottom:16px;left:50%;transform:translate(-50%)translateY(10px)}.cancel-toast.visible{opacity:1;transform:translate(-50%)translateY(0)}body.is-fullscreen #timeline-container{width:100%;max-width:720px;margin:0 auto}
|
|
18
18
|
/*$vite$:1*/</style>
|
|
19
|
-
</head>
|
|
20
|
-
<body>
|
|
21
|
-
<div id="app">
|
|
22
|
-
<div id="loading-state">
|
|
23
|
-
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
24
|
-
<p>Charting upcoming transits…</p>
|
|
25
|
-
</div>
|
|
26
|
-
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
27
|
-
<!-- Timeline scrolls vertically — no zoom. Container kept so
|
|
28
|
-
setupFullscreenToggle has a host to inject the fullscreen button into. -->
|
|
29
|
-
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden></div>
|
|
30
|
-
<div id="timeline-container" hidden></div>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<div id="app">
|
|
22
|
+
<div id="loading-state">
|
|
23
|
+
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
24
|
+
<p>Charting upcoming transits…</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
27
|
+
<!-- Timeline scrolls vertically — no zoom. Container kept so
|
|
28
|
+
setupFullscreenToggle has a host to inject the fullscreen button into. -->
|
|
29
|
+
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden></div>
|
|
30
|
+
<div id="timeline-container" hidden></div>
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
33
|
<script type="module">var e = Object.defineProperty, t = (t2, n2) => {
|
|
34
34
|
let r2 = {};
|
|
35
35
|
for (var i2 in t2) e(r2, i2, { get: t2[i2], enumerable: true });
|
|
@@ -6936,5 +6936,5 @@ I_.ontoolresult = function(e4) {
|
|
|
6936
6936
|
}
|
|
6937
6937
|
})();
|
|
6938
6938
|
</script>
|
|
6939
|
-
</body>
|
|
6940
|
-
</html>
|
|
6939
|
+
</body>
|
|
6940
|
+
</html>
|
package/dist/ui/vedic-chart.html
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
1
|
+
<!DOCTYPE html>
|
|
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'" />
|
|
5
|
-
<meta charset="UTF-8" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<meta name="color-scheme" content="dark light" />
|
|
8
|
-
<!-- CSP is injected at build time by shared/singlefile-plugin.ts (the dev
|
|
9
|
-
server needs external src/ references that a strict CSP would block). -->
|
|
10
|
-
<title>Vedic Chart Explorer</title>
|
|
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'" />
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<meta name="color-scheme" content="dark light" />
|
|
8
|
+
<!-- CSP is injected at build time by shared/singlefile-plugin.ts (the dev
|
|
9
|
+
server needs external src/ references that a strict CSP would block). -->
|
|
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.3713% -.0768304 -7.37782);--text:lab(90.6942% -.142396 -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.21129 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% -.0742972 -1.13657);--surface-2:lab(94.1743% -.142723 -2.26961);--border:lab(86.0453% -.183761 -3.02231);--border-strong:lab(76.7468% -.254452 -4.52154);--text:lab(9.4703% -.11944 -3.722);--text-secondary:lab(32.6639% -.205338 -4.49569);--muted:lab(41.9548% -.197008 -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% -.0742972 -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;--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)}
|
|
14
14
|
/*$vite$:1*/</style>
|
|
15
|
-
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<div id="app">
|
|
18
|
-
<div id="loading-state">
|
|
19
|
-
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
20
|
-
<p>Casting your Jyotish chart…</p>
|
|
21
|
-
</div>
|
|
22
|
-
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
23
|
-
<div id="vedic-container" hidden>
|
|
24
|
-
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden>
|
|
25
|
-
<button id="btn-zoom-in" class="pan-btn" aria-label="Zoom in">+</button>
|
|
26
|
-
<button id="btn-zoom-out" class="pan-btn" aria-label="Zoom out">-</button>
|
|
27
|
-
<button id="btn-reset-view" class="pan-btn reset" aria-label="Reset view">⟲ Reset</button>
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
31
|
-
<!-- tabindex: with the nodes/Chiron included, planet count can exceed the
|
|
32
|
-
220px max-height (styles.css) and this becomes a real scroll region —
|
|
33
|
-
axe's scrollable-region-focusable rule needs it keyboard-reachable,
|
|
34
|
-
since its rows are plain text with nothing else focusable inside. -->
|
|
35
|
-
<div id="info-panel" role="region" aria-label="Planetary positions" tabindex="0" hidden></div>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
15
|
+
</head>
|
|
16
|
+
<body>
|
|
17
|
+
<div id="app">
|
|
18
|
+
<div id="loading-state">
|
|
19
|
+
<svg class="oe-loader" viewBox="0 0 100 100"><circle cx="50" cy="50" r="45"/></svg>
|
|
20
|
+
<p>Casting your Jyotish chart…</p>
|
|
21
|
+
</div>
|
|
22
|
+
<div id="chart-status" class="chart-status" aria-live="polite"></div>
|
|
23
|
+
<div id="vedic-container" hidden>
|
|
24
|
+
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden>
|
|
25
|
+
<button id="btn-zoom-in" class="pan-btn" aria-label="Zoom in">+</button>
|
|
26
|
+
<button id="btn-zoom-out" class="pan-btn" aria-label="Zoom out">-</button>
|
|
27
|
+
<button id="btn-reset-view" class="pan-btn reset" aria-label="Reset view">⟲ Reset</button>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
31
|
+
<!-- tabindex: with the nodes/Chiron included, planet count can exceed the
|
|
32
|
+
220px max-height (styles.css) and this becomes a real scroll region —
|
|
33
|
+
axe's scrollable-region-focusable rule needs it keyboard-reachable,
|
|
34
|
+
since its rows are plain text with nothing else focusable inside. -->
|
|
35
|
+
<div id="info-panel" role="region" aria-label="Planetary positions" tabindex="0" hidden></div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
38
|
<script type="module">var e = Object.defineProperty, t = (t2, n2) => {
|
|
39
39
|
let r2 = {};
|
|
40
40
|
for (var i2 in t2) e(r2, i2, { get: t2[i2], enumerable: true });
|
|
@@ -7057,5 +7057,5 @@ B_.ontoolresult = (e4) => {
|
|
|
7057
7057
|
}
|
|
7058
7058
|
})();
|
|
7059
7059
|
</script>
|
|
7060
|
-
</body>
|
|
7061
|
-
</html>
|
|
7060
|
+
</body>
|
|
7061
|
+
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openephemeris/mcp-server",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.8.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",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"check:schema-packs": "tsx scripts/schema-packs.ts --check",
|
|
42
42
|
"sync:readme": "tsx scripts/sync-readme.ts --write",
|
|
43
43
|
"check:readme": "tsx scripts/sync-readme.ts --check",
|
|
44
|
+
"check:counts": "tsx scripts/check-counts.ts",
|
|
44
45
|
"check:pack": "tsx scripts/pack-audit.ts",
|
|
45
46
|
"regen:plugin": "tsx scripts/plugin-audit.ts --write",
|
|
46
47
|
"check:plugin": "tsx scripts/plugin-audit.ts --check",
|
|
@@ -48,7 +49,8 @@
|
|
|
48
49
|
"check:skills": "node scripts/build-skills.mjs --check",
|
|
49
50
|
"sync:public": "node scripts/sync-public-repo.mjs --write",
|
|
50
51
|
"check:public": "node scripts/sync-public-repo.mjs --check",
|
|
51
|
-
"
|
|
52
|
+
"check:public:strict": "node scripts/sync-public-repo.mjs --check --require-mirror",
|
|
53
|
+
"verify:release": "npm run check:dev-allowlist && npm run check:schema-packs && npm run check:readme && npm run check:counts && npm run check:skills && npm run check:plugin && npm run check:public:strict && npm run typecheck && npm test && npm run build && npm run check:pack",
|
|
52
54
|
"prepack": "npm run build",
|
|
53
55
|
"prepublishOnly": "npm run verify:release",
|
|
54
56
|
"capture:fixtures": "tsx scripts/capture-harness-fixtures.ts"
|
package/smithery.yaml
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
name: Open Ephemeris
|
|
9
9
|
description: >
|
|
10
|
-
NASA JPL DE440-backed astronomical computation engine for AI agents.
|
|
10
|
+
NASA JPL DE440-backed astronomical computation engine for AI agents. Typed tools spanning
|
|
11
11
|
natal charts, transit forecasting, Human Design charts, eclipses, astrocartography power
|
|
12
12
|
lines, Venus Star Points, electional timing windows, synastry, composite charts, Vedic
|
|
13
13
|
charts, Chinese BaZi, and more — powered by JPL DE440 ephemerides for sub-arcsecond
|
|
14
14
|
zero-hallucination accuracy. Includes an LLM-optimized output format
|
|
15
|
-
(format=llm) that compresses chart responses by
|
|
15
|
+
(format=llm) that compresses chart responses by 50–73%. Free Explorer tier available.
|
|
16
16
|
iconUrl: https://mcp.openephemeris.com/icon.png
|
|
17
17
|
homepage: https://openephemeris.com
|
|
18
18
|
|
|
@@ -38,7 +38,7 @@ configSchema:
|
|
|
38
38
|
- llm
|
|
39
39
|
description: >
|
|
40
40
|
Default output format for all tools. 'llm' returns compact,
|
|
41
|
-
token-optimized output (
|
|
41
|
+
token-optimized output (50–73% smaller). 'json' returns full verbose JSON.
|
|
42
42
|
Individual tool calls can override this setting.
|
|
43
43
|
default: json
|
|
44
44
|
baseUrl:
|
|
@@ -49,6 +49,16 @@ configSchema:
|
|
|
49
49
|
default production endpoint (https://api.openephemeris.com). Useful
|
|
50
50
|
for self-hosted or staging deployments.
|
|
51
51
|
default: ""
|
|
52
|
+
toolSurface:
|
|
53
|
+
type: string
|
|
54
|
+
title: Tool Surface
|
|
55
|
+
description: >
|
|
56
|
+
Which tools to advertise. Leave blank for the curated default set,
|
|
57
|
+
'full' for the whole catalog, or a comma list of traditions —
|
|
58
|
+
astrology, moon, hd, bazi, vedic, acg, electional, venus — to pay
|
|
59
|
+
context only for the work you do (e.g. 'hd,bazi'). Every tool stays
|
|
60
|
+
callable by name regardless of surface.
|
|
61
|
+
default: ""
|
|
52
62
|
|
|
53
63
|
# How to start the server locally (stdio transport for Claude Desktop / Cursor)
|
|
54
64
|
startCommand:
|
|
@@ -61,5 +71,6 @@ startCommand:
|
|
|
61
71
|
OPENEPHEMERIS_API_KEY: config.apiKey,
|
|
62
72
|
...(config.format && config.format !== "json" ? { OPENEPHEMERIS_FORMAT: config.format } : {}),
|
|
63
73
|
...(config.baseUrl ? { OPENEPHEMERIS_BACKEND_URL: config.baseUrl } : {}),
|
|
74
|
+
...(config.toolSurface ? { OPENEPHEMERIS_TOOLS: config.toolSurface } : {}),
|
|
64
75
|
}
|
|
65
76
|
})
|