@openephemeris/mcp-server 4.17.0 → 4.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/README.md +10 -10
- package/dist/backend/client.d.ts +57 -1
- package/dist/backend/client.js +125 -15
- package/dist/index.js +8 -110
- package/dist/prompts.js +26 -24
- package/dist/server-sse.d.ts +18 -0
- package/dist/server-sse.js +48 -120
- package/dist/tools/apps/_render-token.d.ts +34 -0
- package/dist/tools/apps/_render-token.js +50 -0
- package/dist/tools/apps/bazi-app.d.ts +1 -1
- package/dist/tools/apps/bazi-app.js +39 -14
- package/dist/tools/apps/bi-wheel-app.d.ts +10 -3
- package/dist/tools/apps/bi-wheel-app.js +79 -119
- package/dist/tools/apps/bodygraph-app.d.ts +7 -4
- package/dist/tools/apps/bodygraph-app.js +101 -46
- package/dist/tools/apps/chart-wheel-app.d.ts +1 -1
- package/dist/tools/apps/chart-wheel-app.js +59 -18
- package/dist/tools/apps/location-tools.js +10 -3
- package/dist/tools/apps/moon-phase-app.d.ts +1 -1
- package/dist/tools/apps/moon-phase-app.js +13 -4
- package/dist/tools/apps/transit-timeline-app.d.ts +1 -1
- package/dist/tools/apps/transit-timeline-app.js +6 -6
- package/dist/tools/apps/ui-resource.d.ts +43 -0
- package/dist/tools/apps/ui-resource.js +66 -0
- package/dist/tools/apps/ui-resources.d.ts +22 -0
- package/dist/tools/apps/ui-resources.js +105 -0
- package/dist/tools/apps/vedic-chart-app.d.ts +1 -1
- package/dist/tools/apps/vedic-chart-app.js +13 -3
- package/dist/tools/datetime-historical.js +7 -2
- package/dist/tools/datetime.js +2 -1
- package/dist/tools/dev.js +7 -6
- package/dist/tools/specialized/electional.js +4 -3
- package/dist/tools/specialized/ephemeris_extended.js +19 -4
- package/dist/tools/specialized/hd_group.js +2 -2
- package/dist/tools/specialized/moon.d.ts +1 -1
- package/dist/tools/specialized/moon.js +51 -43
- package/dist/tools/specialized/progressed.js +2 -25
- package/dist/tools/specialized/transits.js +5 -5
- package/dist/ui/bazi.html +1199 -1161
- package/dist/ui/bi-wheel.html +573 -504
- package/dist/ui/bodygraph.html +437 -337
- package/dist/ui/chart-wheel.html +654 -584
- package/dist/ui/moon-phase.html +190 -155
- package/dist/ui/transit-timeline.html +865 -830
- package/dist/ui/vedic-chart.html +971 -934
- package/package.json +2 -1
package/dist/ui/moon-phase.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data:; connect-src 'none'" />
|
|
4
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; font-src data: https:; connect-src 'none'" />
|
|
5
5
|
<meta charset="UTF-8" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<meta name="color-scheme" content="dark light" />
|
|
@@ -14,7 +14,7 @@
|
|
|
14
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% -.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}
|
|
17
|
+
<style>:root{--bg:#010102;--surface:#030408;--surface-2:#080b11;--border:#13161d;--border-strong:#242933;--text:#e2e4e9;--text-secondary:#a1a5ab;--muted:#84868b;--gold:#cc9c42;--gold-dim:#7b6540;--gold-glow:rgba(204,156,66,.2);--gold-subtle:rgba(204,156,66,.1);--success:#1da871;--error:#c53443;--radius:10px;--radius-sm:6px;--radius-pill:99px;--oe-shadow-md:0 8px 40px rgba(0,0,0,.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px rgba(204,156,66,.15), 0 0 0 1px rgba(204,156,66,.2);--font-ui:var(--font-sans,system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);--font-code:var(--font-mono,ui-monospace, "SFMono-Regular", "Cascadia Mono", Menlo, Consolas, monospace);--oe-page-bg:var(--color-background-primary,var(--bg));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@supports (color:color(display-p3 0 0 0)){:root{--bg:color(display-p3 .00306656 .00431968 .00888397);--surface:color(display-p3 .013072 .016989 .0298495);--surface-2:color(display-p3 .0345774 .0431759 .0653236);--border:color(display-p3 .0763929 .0859556 .109705);--border-strong:color(display-p3 .144788 .159634 .196542);--text:color(display-p3 .889546 .895785 .910689);--text-secondary:color(display-p3 .635245 .644982 .668335);--muted:color(display-p3 .518127 .525635 .543633);--gold:color(display-p3 .76996 .617341 .321369);--gold-dim:color(display-p3 .469305 .400291 .270966);--gold-glow:color(display-p3 .76996 .617341 .321369/.2);--gold-subtle:color(display-p3 .76996 .617341 .321369/.1);--success:color(display-p3 .313719 .651039 .459895);--error:color(display-p3 .710345 .252818 .279408);--oe-shadow-md:0 8px 40px color(display-p3 0 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px color(display-p3 .76996 .617341 .321369/.15), 0 0 0 1px color(display-p3 .76996 .617341 .321369/.2)}}@supports (color:lab(0% 0 0)){:root{--bg:lab(.302122% .0219196 -.522962);--surface:lab(1.18159% .0276566 -1.4848);--surface-2:lab(3.00584% .0228807 -3.15676);--border:lab(7.15581% -.0557452 -5.11242);--border-strong:lab(16.3712% -.0768155 -7.37782);--text:lab(90.6942% -.142366 -2.26941);--text-secondary:lab(67.4758% -.215352 -3.76978);--muted:lab(55.8848% -.174642 -3.01716);--gold:lab(67.5798% 11.9379 52.333);--gold-dim:lab(44.394% 5.21132 24.4453);--gold-glow:lab(67.5798% 11.9379 52.333/.2);--gold-subtle:lab(67.5798% 11.9379 52.333/.1);--success:lab(61.2436% -46.7762 18.3644);--error:lab(45.8893% 57.7361 27.393);--oe-shadow-md:0 8px 40px lab(0% 0 0/.65), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 28px lab(67.5798% 11.9379 52.333/.15), 0 0 0 1px lab(67.5798% 11.9379 52.333/.2)}}:root[data-theme=light]{--bg:#f4f5f8;--surface:#fbfcfe;--surface-2:#eceef3;--border:#d5d7dd;--border-strong:#babec6;--text:#181b1f;--text-secondary:#4a4d54;--muted:#606369;--gold:#8a6000;--gold-dim:#967c4f;--gold-glow:rgba(141,95,0,.25);--gold-subtle:rgba(141,95,0,.07);--success:#007145;--error:#b1002b;--oe-shadow-md:0 4px 24px rgba(0,0,0,.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px rgba(141,95,0,.18), 0 0 0 1px rgba(141,95,0,.22);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--bg:color(display-p3 .956515 .960735 .970805);--surface:color(display-p3 .98376 .986943 .994535);--surface-2:color(display-p3 .928401 .934691 .949715);--border:color(display-p3 .836244 .844458 .864107);--border-strong:color(display-p3 .731542 .743532 .772301);--text:color(display-p3 .096883 .103987 .12134);--text-secondary:color(display-p3 .291758 .301882 .326359);--muted:color(display-p3 .379924 .388781 .410092);--gold:color(display-p3 .524671 .380491 .0387678);--gold-dim:color(display-p3 .572756 .489268 .332751);--gold-glow:color(display-p3 .542549 .371783 -.107551/.25);--gold-subtle:color(display-p3 .542549 .371783 -.107551/.07);--success:color(display-p3 -.0793084 .456092 .255685);--error:color(display-p3 .642198 .101724 .18242);--oe-shadow-md:0 4px 24px color(display-p3 0 0 0/.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px color(display-p3 .542549 .371783 -.107551/.18), 0 0 0 1px color(display-p3 .542549 .371783 -.107551/.22)}}@supports (color:lab(0% 0 0)){:root[data-theme=light]{--bg:lab(96.503% -.0977516 -1.51461);--surface:lab(98.8273% -.0742674 -1.13657);--surface-2:lab(94.1743% -.142753 -2.26963);--border:lab(86.0453% -.183702 -3.02233);--border-strong:lab(76.7468% -.254452 -4.52154);--text:lab(9.4703% -.119448 -3.722);--text-secondary:lab(32.6639% -.205323 -4.4957);--muted:lab(41.9548% -.197023 -3.7598);--gold:lab(44.2758% 13.6718 62.9124);--gold-dim:lab(53.685% 6.10271 28.558);--gold-glow:lab(44.1995% 17.0662 84.3373/.25);--gold-subtle:lab(44.1995% 17.0662 84.3373/.07);--success:lab(41.7514% -55.3249 21.5039);--error:lab(37.5238% 64.2774 32.6097);--oe-shadow-md:0 4px 24px lab(0% 0 0/.12), 0 0 0 1px var(--border-strong);--shadow-gold:0 0 16px lab(44.1995% 17.0662 84.3373/.18), 0 0 0 1px lab(44.1995% 17.0662 84.3373/.22)}}:root{--safe-top:0px;--safe-right:0px;--safe-bottom:0px;--safe-left:0px;--oe-host-h:var(--host-height,var(--host-max-height,640px));--oe-chart-max:clamp(260px, calc(var(--oe-host-h) * .72), 560px);--oe-chart-max-lg:clamp(280px, calc(var(--oe-host-h) * .8), 720px);--oe-drawer-max:clamp(160px, calc(var(--oe-host-h) * .4), 360px);--oe-scroll-max:clamp(240px, calc(var(--oe-host-h) * .7), 560px)}html,body{font-family:var(--font-ui)}body{background-color:var(--oe-page-bg)}.oe-pannable{touch-action:pan-y}body.is-fullscreen .oe-pannable{touch-action:none}.pan-zoom-controls [hidden],.pan-btn[hidden]{display:none!important}.fs-hint-banner{top:calc(12px + var(--safe-top));z-index:9999;border-radius:var(--radius-pill);border:1px solid color-mix(in oklab, var(--gold) 35%, transparent);background:color-mix(in oklab, var(--surface-2) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:calc(100% - 32px);color:var(--text);font:600 11px/1.4 var(--font-ui);letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;opacity:0;padding:6px 16px;transition:opacity .3s;position:fixed;left:50%;overflow:hidden;transform:translate(-50%)}.fs-hint-banner.visible{opacity:1}@media (prefers-reduced-motion:reduce){.fs-hint-banner{transition:none}}body.is-fullscreen{height:100vh;height:100dvh;overflow:hidden}body.is-fullscreen #app{width:100%;max-width:none;height:100%;min-height:0;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);flex-direction:column;gap:0;margin:0;display:flex;overflow:hidden}body.is-fullscreen #app:has(>#fs-bottom-bar){padding-bottom:0}body.is-fullscreen #app .oe-stage{aspect-ratio:auto;width:100%;max-width:none;height:auto;min-height:0;max-height:none;box-shadow:none;background:0 0;border:0;border-radius:0;flex:auto;justify-content:center;align-items:center;margin:0;padding:16px 24px 8px;display:flex;overflow:hidden}body.is-fullscreen #app .oe-stage>svg{width:auto;max-width:100%;height:100%;max-height:100%}body.is-fullscreen #app .oe-stage--doc{width:100%;max-width:880px;padding:20px 24px calc(16px + var(--safe-bottom));flex-direction:column;justify-content:flex-start;align-items:stretch;margin:0 auto;display:flex;overflow-y:auto}body.is-fullscreen #app #loading-state{flex:1;height:auto;min-height:0}body.is-fullscreen #app .pan-zoom-controls{top:calc(54px + var(--safe-top));right:calc(12px + var(--safe-right));bottom:auto}body .oe-info-button{top:calc(12px + var(--safe-top));right:calc(12px + var(--safe-right))}#app #fs-bottom-bar{height:clamp(170px, calc(var(--oe-host-h) * .3), 280px);padding-bottom:var(--safe-bottom);border-top:1px solid var(--border);background:var(--surface);flex-shrink:0;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(200px,260px) minmax(0,1fr) minmax(200px,260px);display:grid}:root[data-safe-bottom] #app #fs-bottom-bar{height:calc(clamp(170px, calc(var(--oe-host-h) * .3), 280px) + var(--safe-bottom));grid-template-columns:minmax(0,1fr) minmax(0,1fr)}:root[data-safe-bottom] #fs-bottom-bar [data-column=center]{display:none}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex-direction:column;gap:4px;min-height:0;padding:10px 14px 12px;display:flex;overflow-x:hidden;overflow-y:auto}#fs-bottom-bar [data-column=left]{border-right:1px solid var(--border)}#fs-bottom-bar [data-column=right]{border-left:1px solid var(--border)}#fs-bottom-bar [data-column=center]{pointer-events:none}#fs-bottom-bar [data-column]>*+*{border-top:1px solid var(--border);margin-top:4px;padding-top:8px}#fs-bottom-bar [class$=-action-bar],#fs-bottom-bar [class*=-action-bar\ ]{flex-direction:column;padding:8px 0 0}#fs-bottom-bar .action-btn{justify-content:center;width:100%}@media (max-width:640px){#app #fs-bottom-bar,:root[data-safe-bottom] #app #fs-bottom-bar{height:auto;max-height:42%;display:block;overflow-y:auto}#fs-bottom-bar [data-column=center]{display:none}#fs-bottom-bar [data-column=left],#fs-bottom-bar [data-column=right]{border:0;min-height:auto;overflow:visible}#fs-bottom-bar [data-column=right]{border-top:1px solid var(--border)}body.is-fullscreen #app .oe-stage{padding:8px}}body.is-pip{overflow:hidden}body.is-pip #app{gap:6px;padding:6px 8px}body.is-pip .oe-pip-hide,body.is-pip #param-controls-container,body.is-pip #chart-status,body.is-pip .oe-info-button{display:none!important}body.is-pip #app .pan-zoom-controls{top:6px;right:6px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-primary:var(--bg);--bg-secondary:var(--surface);--bg-tertiary:var(--surface-2);--bg-hover:color-mix(in oklab, var(--surface-2) 70%, var(--border-strong));--border-subtle:var(--border);--text-primary:var(--text);--text-muted:var(--muted);--accent:var(--gold);--accent-warm:var(--gold);--radius-lg:14px;--font-display:var(--font-ui);--font-body:var(--font-ui);--voc-warn:#f6922e;--cue-warm:#f4a34b;--cue-cool:#6ab3fd}@supports (color:color(display-p3 0 0 0)){:root{--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{--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]{--voc-warn:#a95a00;--cue-warm:#954200;--cue-cool:#1e5ba1}@supports (color:color(display-p3 0 0 0)){:root[data-theme=light]{--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]{--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%;font-family:var(--font-body);background:var(--oe-page-bg);color:var(--text-primary);font-size:13px;line-height:1.5}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:12px;right:50px}.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;padding:16px;display:flex}#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{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}.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%}}body.is-fullscreen #app .pan-zoom-controls{top:calc(12px + var(--safe-top));right:calc(50px + var(--safe-right))}body.is-fullscreen .moon-layout{align-items:center;gap:40px}body.is-fullscreen .moon-dial{width:min(320px,38vw);height:min(320px,38vw)}body.is-pip #moon-container{padding:4px 8px;overflow:hidden}body.is-pip .moon-layout{flex-direction:row;align-items:center;gap:12px}body.is-pip .moon-dial-col{flex-direction:row;align-items:center;gap:10px}body.is-pip .moon-info-col,body.is-pip .moon-direction,body.is-pip .oe-info-button{display:none!important}body.is-pip .moon-dial{width:88px;height:88px}body.is-pip .moon-illum-ring{padding:1px 6px}body.is-pip .moon-illum-value{font-size:14px}body.is-pip .moon-illum-label{display:none}body.is-pip #app .pan-zoom-controls{right:6px}.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-family:var(--font-code,ui-monospace, "Cascadia Mono", Menlo, Consolas, monospace);font-variant-numeric:tabular-nums;color:var(--text-secondary);align-items:baseline;gap:4px;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
19
|
</head>
|
|
20
20
|
<body>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<!-- Moon phase doesn't need zoom — image is fixed. Container is kept so
|
|
28
28
|
setupFullscreenToggle has a host to inject the fullscreen button into. -->
|
|
29
29
|
<div id="pan-zoom-controls" class="pan-zoom-controls" hidden></div>
|
|
30
|
-
<div id="moon-container" hidden></div>
|
|
30
|
+
<div id="moon-container" class="oe-stage oe-stage--doc" hidden></div>
|
|
31
31
|
<div id="param-controls-container" hidden></div>
|
|
32
32
|
<div id="tooltip" class="tooltip" aria-live="polite"></div>
|
|
33
33
|
</div>
|
|
@@ -6326,7 +6326,15 @@ async function Zg(e5, t2, n2 = "") {
|
|
|
6326
6326
|
}
|
|
6327
6327
|
return r2.value;
|
|
6328
6328
|
}
|
|
6329
|
-
|
|
6329
|
+
function Qg(e5, t2 = document.documentElement) {
|
|
6330
|
+
for (let [n2, r2] of Object.entries(e5)) r2 !== void 0 && t2.style.setProperty(n2, r2);
|
|
6331
|
+
}
|
|
6332
|
+
function $g(e5) {
|
|
6333
|
+
if (document.getElementById("__mcp-host-fonts")) return;
|
|
6334
|
+
let t2 = document.createElement("style");
|
|
6335
|
+
t2.id = "__mcp-host-fonts", t2.textContent = e5, document.head.appendChild(t2);
|
|
6336
|
+
}
|
|
6337
|
+
var e_ = class e3 extends Cg {
|
|
6330
6338
|
_assertInitialized(e5) {
|
|
6331
6339
|
var t2;
|
|
6332
6340
|
if (this._initializedSent) return;
|
|
@@ -6558,13 +6566,13 @@ var Qg = class e3 extends Cg {
|
|
|
6558
6566
|
}
|
|
6559
6567
|
}
|
|
6560
6568
|
};
|
|
6561
|
-
o(
|
|
6562
|
-
var
|
|
6563
|
-
function
|
|
6569
|
+
o(e_, "ONE_SHOT_EVENTS", /* @__PURE__ */ new Set(["toolinput", "toolinputpartial", "toolresult", "toolcancelled"]));
|
|
6570
|
+
var t_ = { aries: "\u2648", taurus: "\u2649", gemini: "\u264A", cancer: "\u264B", leo: "\u264C", virgo: "\u264D", libra: "\u264E", scorpio: "\u264F", sagittarius: "\u2650", capricorn: "\u2651", aquarius: "\u2652", pisces: "\u2653" }, n_ = { "new moon": "\u{1F311}", "waxing crescent": "\u{1F312}", "first quarter": "\u{1F313}", "waxing gibbous": "\u{1F314}", "full moon": "\u{1F315}", "waning gibbous": "\u{1F316}", "last quarter": "\u{1F317}", "waning crescent": "\u{1F318}" }, r_ = { conjunction: "\u260C", opposition: "\u260D", trine: "\u25B3", square: "\u25A1", sextile: "\u26B9", quincunx: "\u2BF8", semisquare: "\u2220", sesquiquadrate: "\u2BFB", semisextile: "\u232F" }, i_ = { conjunction: "Conjunction", opposition: "Opposition", trine: "Trine", square: "Square", sextile: "Sextile", quincunx: "Quincunx", semisquare: "Semi-sq", sesquiquadrate: "Sesqui-sq", semisextile: "Semi-sxt" }, a_ = { aries: "assertive, pioneering, spontaneous", taurus: "sensual, steady, patient", gemini: "curious, communicative, adaptable", cancer: "nurturing, intuitive, protective", leo: "expressive, dramatic, generous", virgo: "analytical, precise, helpful", libra: "harmonious, diplomatic, social", scorpio: "intense, perceptive, transformative", sagittarius: "optimistic, expansive, philosophical", capricorn: "disciplined, ambitious, grounded", aquarius: "original, detached, humanitarian", pisces: "empathic, imaginative, fluid" };
|
|
6571
|
+
function o_(e5) {
|
|
6564
6572
|
var t2;
|
|
6565
|
-
return (t2 =
|
|
6573
|
+
return (t2 = n_[(e5 == null ? "" : e5).toLowerCase().trim()]) == null ? "\u{1F319}" : t2;
|
|
6566
6574
|
}
|
|
6567
|
-
function
|
|
6575
|
+
function s_(e5) {
|
|
6568
6576
|
if (!e5) return "\u2014";
|
|
6569
6577
|
try {
|
|
6570
6578
|
return new Date(e5).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", hour: "numeric", minute: "2-digit" });
|
|
@@ -6572,7 +6580,7 @@ function a_(e5) {
|
|
|
6572
6580
|
return e5;
|
|
6573
6581
|
}
|
|
6574
6582
|
}
|
|
6575
|
-
function
|
|
6583
|
+
function c_(e5) {
|
|
6576
6584
|
if (!e5) return "\u2014";
|
|
6577
6585
|
try {
|
|
6578
6586
|
return new Date(e5).toLocaleDateString("en-US", { month: "short", day: "numeric" });
|
|
@@ -6580,7 +6588,7 @@ function o_(e5) {
|
|
|
6580
6588
|
return e5;
|
|
6581
6589
|
}
|
|
6582
6590
|
}
|
|
6583
|
-
function
|
|
6591
|
+
function l_(e5, t2) {
|
|
6584
6592
|
var n2 = 80, r2 = 100, i2 = 100, a2 = e5, o2 = Math.abs(1 - 2 * a2) * n2, s2 = "oklch(" + (58 + a2 * 30) + "% 0.03 220)", c2 = "oklch(13% 0.01 260)", l2 = "oklch(40% 0.04 240)", u2 = +!!t2, d2 = a2 > 0.5 ? +!t2 : +!!t2, f2 = i2 - n2, p2 = i2 + n2, m2 = "";
|
|
6585
6593
|
if (a2 > 5e-3) {
|
|
6586
6594
|
var ee2 = "M " + r2 + " " + f2 + " A " + n2 + " " + n2 + " 0 0 " + u2 + " " + r2 + " " + p2, h2 = " A " + o2 + " " + n2 + " 0 0 " + d2 + " " + r2 + " " + f2;
|
|
@@ -6598,21 +6606,21 @@ function s_(e5, t2) {
|
|
|
6598
6606
|
}
|
|
6599
6607
|
return v2 += '<circle cx="' + r2 + '" cy="' + i2 + '" r="' + n2 + '"', v2 += ' fill="url(#terminator-grad)" clip-path="url(#' + (a2 > 5e-3 ? "lit-clip" : "moon-clip") + ')"/>', v2 += '<circle cx="' + r2 + '" cy="' + i2 + '" r="' + n2 + '"', v2 += ' fill="url(#limb-dark)" clip-path="url(#moon-clip)"/>', v2 += '<circle cx="' + r2 + '" cy="' + i2 + '" r="' + n2 + '"', v2 += ' fill="none" stroke="' + l2 + '" stroke-width="1" opacity="0.5"/>', v2 += "</svg>", v2;
|
|
6600
6608
|
}
|
|
6601
|
-
function
|
|
6602
|
-
var i2, a2, o2, s2, c2, l2, u2, d2 = (i2 = t2.illumination) == null ? 0 : i2, f2 = (a2 = t2.phase_name) == null ? "Unknown Phase" : a2, p2 =
|
|
6609
|
+
function u_(e5, t2, n2, r2) {
|
|
6610
|
+
var i2, a2, o2, s2, c2, l2, u2, d2 = (i2 = t2.illumination) == null ? 0 : i2, f2 = (a2 = t2.phase_name) == null ? "Unknown Phase" : a2, p2 = o_(f2), m2 = (() => {
|
|
6603
6611
|
var e6 = Math.round(d2 * 1e3) / 10;
|
|
6604
6612
|
return e6 >= 99.9 ? 100 : e6 <= 0.1 ? 0 : (e6 % 1, e6);
|
|
6605
|
-
})(), ee2 = (o2 = t2.waxing) == null ? true : o2, h2 = (s2 = t2.moon_sign) == null ? "" : s2, g2 = (c2 =
|
|
6606
|
-
b2 += '<div class="moon-dial-col">', b2 += '<div class="moon-dial">', b2 += ne2, b2 += '<div class="moon-illum-ring">', b2 += '<span class="moon-illum-value">' + m2 + "%</span>", b2 += '<span class="moon-illum-label">illumination</span>', b2 += "</div>", b2 += "</div>", b2 += '<div class="moon-phase-badge">', b2 += '<span class="moon-phase-icon">' + p2 + "</span>", b2 += '<span class="moon-phase-name">' +
|
|
6613
|
+
})(), ee2 = (o2 = t2.waxing) == null ? true : o2, h2 = (s2 = t2.moon_sign) == null ? "" : s2, g2 = (c2 = t_[(h2 == null ? "" : h2).toLowerCase()]) == null ? "" : c2, _2 = (l2 = (u2 = t2.voc_status) == null ? void 0 : u2.is_void) == null ? false : l2, te2 = t2.age_days == null ? null : Math.round(t2.age_days * 10) / 10, v2 = typeof t2.days_to_new == "number" ? t2.days_to_new : null, y2 = typeof t2.days_to_full == "number" ? t2.days_to_full : null, ne2 = l_(d2, ee2), b2 = '<div class="moon-layout">';
|
|
6614
|
+
b2 += '<div class="moon-dial-col">', b2 += '<div class="moon-dial">', b2 += ne2, b2 += '<div class="moon-illum-ring">', b2 += '<span class="moon-illum-value">' + m2 + "%</span>", b2 += '<span class="moon-illum-label">illumination</span>', b2 += "</div>", b2 += "</div>", b2 += '<div class="moon-phase-badge">', b2 += '<span class="moon-phase-icon">' + p2 + "</span>", b2 += '<span class="moon-phase-name">' + d_(f2) + "</span>", b2 += "</div>", b2 += '<div class="moon-direction">', b2 += ee2 ? '<span class="dir-arrow dir-waxing">\u2191</span> Waxing' : '<span class="dir-arrow dir-waning">\u2193</span> Waning', b2 += "</div>", b2 += "</div>", b2 += '<div class="moon-info-col">';
|
|
6607
6615
|
function x2(e6) {
|
|
6608
|
-
return e6 ? '<div class="moon-card-expand" aria-hidden="true"><div class="moon-card-expand-inner"><span class="moon-card-expand-text">' +
|
|
6616
|
+
return e6 ? '<div class="moon-card-expand" aria-hidden="true"><div class="moon-card-expand-inner"><span class="moon-card-expand-text">' + d_(e6) + "</span></div></div>" : "";
|
|
6609
6617
|
}
|
|
6610
6618
|
if (h2) {
|
|
6611
|
-
var re2, ie2 = (re2 =
|
|
6612
|
-
b2 += '<div class="moon-card moon-card--primary" data-detail="Moon in ' +
|
|
6619
|
+
var re2, ie2 = (re2 = a_[h2.toLowerCase()]) == null ? "lunar qualities" : re2, ae2 = "Moon in " + h2 + " \u2014 " + ie2 + ". Emotional tone shifts when the Moon changes signs, roughly every 2.5 days.";
|
|
6620
|
+
b2 += '<div class="moon-card moon-card--primary" data-detail="Moon in ' + d_(h2) + '">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">' + g2 + "</span>", b2 += '<span class="moon-card-title">Moon Sign</span>', b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += '<div class="moon-card-value">' + d_(h2) + "</div>", t2.moon_longitude != null && (b2 += '<div class="moon-card-detail">' + Math.round(t2.moon_longitude * 100) / 100 + "\xB0 longitude</div>"), b2 += x2(ae2), b2 += "</div>";
|
|
6613
6621
|
}
|
|
6614
6622
|
var S2 = _2 ? "Void of Course means the Moon forms no more major aspects before entering the next sign. Starting new projects, signing contracts, or making significant decisions during VOC periods often leads to outcomes that don't unfold as expected." : "The Moon is actively making aspects to other planets, keeping lunar energy focused and directional. A good time for purposeful action.";
|
|
6615
|
-
if (b2 += '<div class="moon-card moon-card--primary moon-card--voc' + (_2 ? " moon-card--active" : "") + '" data-detail="VOC: ' + (_2 ? "active" : "inactive") + '">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">' + (_2 ? "\u26A0" : "\u2713") + "</span>", b2 += '<span class="moon-card-title">Void of Course</span>', b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += '<div class="moon-card-value">' + (_2 ? "Yes \u2014 VOC Active" : "No \u2014 Moon is engaged") + "</div>", _2 && t2.voc_status && (t2.voc_status.ends && (b2 += '<div class="moon-card-detail">Ends ' +
|
|
6623
|
+
if (b2 += '<div class="moon-card moon-card--primary moon-card--voc' + (_2 ? " moon-card--active" : "") + '" data-detail="VOC: ' + (_2 ? "active" : "inactive") + '">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">' + (_2 ? "\u26A0" : "\u2713") + "</span>", b2 += '<span class="moon-card-title">Void of Course</span>', b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += '<div class="moon-card-value">' + (_2 ? "Yes \u2014 VOC Active" : "No \u2014 Moon is engaged") + "</div>", _2 && t2.voc_status && (t2.voc_status.ends && (b2 += '<div class="moon-card-detail">Ends ' + s_(t2.voc_status.ends) + "</div>"), t2.voc_status.next_sign && (b2 += '<div class="moon-card-detail">Next sign: ' + d_(t2.voc_status.next_sign) + "</div>")), b2 += x2(S2), b2 += "</div>", te2 != null) {
|
|
6616
6624
|
var oe2 = "Day " + te2 + " of the 29.5-day synodic cycle. The Moon completes one full cycle from New to New Moon in approximately 29.5 days.";
|
|
6617
6625
|
b2 += '<div class="moon-card moon-card--inline" data-detail="Lunar age: ' + te2 + ' days">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F550}</span>', b2 += '<span class="moon-card-title">Lunar Age</span>', b2 += '<span class="moon-card-inline-value">' + te2 + " days</span>", b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += x2(oe2), b2 += "</div>";
|
|
6618
6626
|
}
|
|
@@ -6620,11 +6628,11 @@ function c_(e5, t2, n2, r2) {
|
|
|
6620
6628
|
if (b2 += '<div class="moon-card moon-card--compact" data-detail="Upcoming lunar events">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F4C5}</span>', b2 += '<span class="moon-card-title">Upcoming</span>', b2 += "</div>", v2 !== null) {
|
|
6621
6629
|
var se2 = v2 < 1 ? "Tonight" : Math.ceil(v2) + (Math.ceil(v2) === 1 ? " day" : " days");
|
|
6622
6630
|
b2 += '<div class="moon-card-row"><span class="moon-card-row-icon">\u{1F311}</span> New Moon: <strong>' + se2 + "</strong></div>";
|
|
6623
|
-
} else t2.next_new_moon && (b2 += '<div class="moon-card-row"><span class="moon-card-row-icon">\u{1F311}</span> New Moon: ' +
|
|
6631
|
+
} else t2.next_new_moon && (b2 += '<div class="moon-card-row"><span class="moon-card-row-icon">\u{1F311}</span> New Moon: ' + c_(t2.next_new_moon) + "</div>");
|
|
6624
6632
|
if (y2 !== null) {
|
|
6625
6633
|
var ce2 = y2 < 1 ? "Tonight" : Math.ceil(y2) + (Math.ceil(y2) === 1 ? " day" : " days");
|
|
6626
6634
|
b2 += '<div class="moon-card-row"><span class="moon-card-row-icon">\u{1F315}</span> Full Moon: <strong>' + ce2 + "</strong></div>";
|
|
6627
|
-
} else t2.next_full_moon && (b2 += '<div class="moon-card-row"><span class="moon-card-row-icon">\u{1F315}</span> Full Moon: ' +
|
|
6635
|
+
} else t2.next_full_moon && (b2 += '<div class="moon-card-row"><span class="moon-card-row-icon">\u{1F315}</span> Full Moon: ' + c_(t2.next_full_moon) + "</div>");
|
|
6628
6636
|
b2 += "</div>";
|
|
6629
6637
|
}
|
|
6630
6638
|
if (typeof t2.moon_speed == "number") {
|
|
@@ -6636,8 +6644,8 @@ function c_(e5, t2, n2, r2) {
|
|
|
6636
6644
|
b2 += '<div class="moon-card moon-card--inline" data-detail="Angular diameter: ' + he2 + "'\">", b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F52D}</span>', b2 += '<span class="moon-card-title">Proximity</span>', b2 += '<span class="moon-card-inline-value ' + _e2 + '">' + he2 + "' \xB7 " + ge2.replace(" proximity", "") + "</span>", b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", b2 += x2((ve2 ? ve2 + " away. " : "") + "The Moon's angular diameter averages 31.08 arcminutes. A Supermoon (>32.5') appears up to 14% larger and 30% brighter than a Micromoon. Closer proximity also strengthens tidal forces and is associated with intensified lunar influence in some traditions."), b2 += "</div>";
|
|
6637
6645
|
} else t2.moon_distance_km && (b2 += '<div class="moon-card moon-card--inline" data-detail="Distance: ' + Math.round(t2.moon_distance_km).toLocaleString() + ' km">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F52D}</span>', b2 += '<span class="moon-card-title">Distance</span>', b2 += '<span class="moon-card-inline-value">' + Math.round(t2.moon_distance_km).toLocaleString() + " km</span>", b2 += "</div>", b2 += "</div>");
|
|
6638
6646
|
Array.isArray(t2.applying_aspects) && t2.applying_aspects.length > 0 && (b2 += '<div class="moon-card moon-card--compact" data-detail="Moon applying aspects">', b2 += '<div class="moon-card-header">', b2 += '<span class="moon-card-icon">\u{1F319}</span>', b2 += '<span class="moon-card-title">Approaching</span>', b2 += '<span class="moon-card-chevron">\u203A</span>', b2 += "</div>", t2.applying_aspects.slice(0, 3).forEach(function(e6) {
|
|
6639
|
-
var t3, n3, r3, i3, a3 = ((t3 = e6.aspect) == null ? "" : t3).toLowerCase().replace(/-/g, ""), o3 = (n3 =
|
|
6640
|
-
b2 += '<div class="moon-card-row">\u263D ' + o3 + ' <span style="color:var(--text-muted); font-size:10px; letter-spacing:.04em; text-transform:uppercase; margin-right:2px">' +
|
|
6647
|
+
var t3, n3, r3, i3, a3 = ((t3 = e6.aspect) == null ? "" : t3).toLowerCase().replace(/-/g, ""), o3 = (n3 = r_[a3]) == null ? e6.aspect : n3, s3 = (r3 = i_[a3]) == null ? e6.aspect : r3, c3 = e6.orb === null ? "" : " \xB7 " + (Math.round(((i3 = e6.orb) == null ? 0 : i3) * 100) / 100).toFixed(1) + "\xB0";
|
|
6648
|
+
b2 += '<div class="moon-card-row">\u263D ' + o3 + ' <span style="color:var(--text-muted); font-size:10px; letter-spacing:.04em; text-transform:uppercase; margin-right:2px">' + d_(s3) + "</span> \xB7 " + d_(e6.planet) + c3 + "</div>";
|
|
6641
6649
|
}), b2 += x2("Applying aspects are those the Moon is building toward before leaving the current sign. Tighter orbs (closer to 0\xB0) carry more weight. Aspects to benefics (Venus, Jupiter) are generally favorable; to malefics (Mars, Saturn) may bring tension."), b2 += "</div>"), b2 += '<div class="moon-actions">', b2 += '<button class="action-btn action-btn--primary" id="moon-interpret-btn">\u2728 Interpret this phase</button>', _2 && (b2 += '<button class="action-btn" id="moon-voc-btn">\u{1F52E} What does VOC mean?</button>'), b2 += "</div>", b2 += "</div>", b2 += "</div>", e5.innerHTML = b2, e5.querySelectorAll(".moon-card[data-detail]").forEach(function(t3) {
|
|
6642
6650
|
var n3 = t3.querySelector(".moon-card-title");
|
|
6643
6651
|
t3.setAttribute("tabindex", "0"), t3.setAttribute("role", "button"), t3.setAttribute("aria-expanded", "false"), t3.setAttribute("aria-label", (n3 && n3.textContent || t3.dataset.detail || "Detail") + " \u2014 expand details"), t3.addEventListener("keydown", function(e6) {
|
|
@@ -6667,15 +6675,28 @@ function c_(e5, t2, n2, r2) {
|
|
|
6667
6675
|
n2({ type: "voc_meaning", data: {} });
|
|
6668
6676
|
});
|
|
6669
6677
|
}
|
|
6670
|
-
function
|
|
6678
|
+
function d_(e5) {
|
|
6671
6679
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6672
6680
|
}
|
|
6673
|
-
|
|
6674
|
-
|
|
6681
|
+
var f_ = ["inline", "fullscreen", "pip"];
|
|
6682
|
+
function p_(e5) {
|
|
6683
|
+
var t2;
|
|
6684
|
+
return (t2 = e5.getHostContext) == null ? void 0 : t2.call(e5);
|
|
6685
|
+
}
|
|
6686
|
+
function m_(e5) {
|
|
6687
|
+
var t2;
|
|
6688
|
+
let n2 = (t2 = p_(e5)) == null ? void 0 : t2.availableDisplayModes;
|
|
6689
|
+
return Array.isArray(n2) ? n2 : [];
|
|
6690
|
+
}
|
|
6691
|
+
var h_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <polyline points="5,1 1,1 1,5"/>\n <polyline points="11,1 15,1 15,5"/>\n <polyline points="5,15 1,15 1,11"/>\n <polyline points="11,15 15,15 15,11"/>\n </svg>', g_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <polyline points="1,5 5,5 5,1"/>\n <polyline points="15,5 11,5 11,1"/>\n <polyline points="1,11 5,11 5,15"/>\n <polyline points="15,11 11,11 11,15"/>\n </svg>', __ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round" aria-hidden="true">\n <rect x="1" y="2.5" width="14" height="11" rx="1.5"/>\n <rect x="8" y="8" width="5.5" height="4" rx="0.8" fill="currentColor" stroke="none"/>\n </svg>', v_ = '<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">\n <rect x="1" y="2.5" width="14" height="11" rx="1.5"/>\n <polyline points="6,6 10,10"/>\n <polyline points="6,9.5 6,6 9.5,6"/>\n </svg>';
|
|
6692
|
+
function y_(e5, t2, n2 = [], r2 = {}) {
|
|
6693
|
+
var i2;
|
|
6675
6694
|
if (!t2 || t2.querySelector("#btn-fullscreen")) return;
|
|
6676
6695
|
let a2 = document.createElement("button");
|
|
6677
|
-
a2.id = "btn-fullscreen", a2.className = "pan-btn pan-btn--fullscreen", a2.
|
|
6678
|
-
let o2 =
|
|
6696
|
+
a2.id = "btn-fullscreen", a2.type = "button", a2.className = "pan-btn pan-btn--fullscreen", a2.innerHTML = h_, a2.hidden = true;
|
|
6697
|
+
let o2 = null;
|
|
6698
|
+
r2.pip && (o2 = document.createElement("button"), o2.id = "btn-pip", o2.type = "button", o2.className = "pan-btn pan-btn--pip", o2.innerHTML = __, o2.hidden = true);
|
|
6699
|
+
let s2 = ["param-controls", "aspect-filter", "controls-panel", "mode-badge"];
|
|
6679
6700
|
function c2() {
|
|
6680
6701
|
if (document.getElementById("fs-bottom-bar") || !n2.length) return;
|
|
6681
6702
|
let e6 = document.getElementById("app");
|
|
@@ -6708,59 +6729,59 @@ function u_(e5, t2, n2 = []) {
|
|
|
6708
6729
|
}
|
|
6709
6730
|
e6.remove();
|
|
6710
6731
|
}
|
|
6711
|
-
|
|
6712
|
-
|
|
6713
|
-
|
|
6732
|
+
let u2 = "inline";
|
|
6733
|
+
function d2(t3) {
|
|
6734
|
+
let n3 = u2 === "fullscreen", r3 = t3 === "fullscreen";
|
|
6735
|
+
u2 = t3, document.body.classList.toggle("is-fullscreen", r3), document.body.classList.toggle("is-pip", t3 === "pip"), document.documentElement.setAttribute("data-display-mode", t3), a2.innerHTML = r3 ? g_ : h_;
|
|
6736
|
+
let i3 = r3 ? "Exit fullscreen" : "Enter fullscreen";
|
|
6737
|
+
if (a2.setAttribute("aria-label", i3), a2.title = r3 ? "Exit fullscreen (Esc)" : i3, o2) {
|
|
6738
|
+
let e6 = t3 === "pip";
|
|
6739
|
+
o2.innerHTML = e6 ? v_ : __;
|
|
6740
|
+
let n4 = e6 ? "Return to the conversation" : "Pop out (picture-in-picture)";
|
|
6741
|
+
o2.setAttribute("aria-label", n4), o2.title = n4;
|
|
6742
|
+
}
|
|
6743
|
+
r3 && !n3 && (c2(), b_(e5)), !r3 && n3 && l2();
|
|
6714
6744
|
}
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
6722
|
-
|
|
6723
|
-
|
|
6724
|
-
|
|
6745
|
+
function f2() {
|
|
6746
|
+
var n3, r3;
|
|
6747
|
+
let i3 = m_(e5);
|
|
6748
|
+
a2.hidden = !i3.includes("fullscreen"), o2 && (o2.hidden = !i3.includes("pip")), (!a2.hidden || o2 && !o2.hidden) && (t2.hidden = false);
|
|
6749
|
+
let s3 = (n3 = (r3 = p_(e5)) == null ? void 0 : r3.displayMode) == null ? "inline" : n3;
|
|
6750
|
+
s3 !== u2 && d2(s3);
|
|
6751
|
+
}
|
|
6752
|
+
async function p2(t3) {
|
|
6753
|
+
if (!(t3 !== "inline" && !m_(e5).includes(t3))) try {
|
|
6754
|
+
var n3;
|
|
6755
|
+
let r3 = await e5.requestDisplayMode({ mode: t3 });
|
|
6756
|
+
d2((n3 = r3 == null ? void 0 : r3.mode) == null ? u2 : n3);
|
|
6725
6757
|
} catch (e6) {
|
|
6726
6758
|
console.warn("[AppChrome] requestDisplayMode failed:", e6);
|
|
6727
6759
|
}
|
|
6728
|
-
}), document.addEventListener("keydown", async (t3) => {
|
|
6729
|
-
if (t3.key === "Escape" && document.body.classList.contains("is-fullscreen")) {
|
|
6730
|
-
t3.preventDefault();
|
|
6731
|
-
try {
|
|
6732
|
-
var n3;
|
|
6733
|
-
let t4 = await e5.requestDisplayMode({ mode: "inline" });
|
|
6734
|
-
u2((n3 = t4 == null ? void 0 : t4.mode) == null ? "inline" : n3);
|
|
6735
|
-
} catch (e6) {
|
|
6736
|
-
console.warn("[AppChrome] Escape fullscreen failed:", e6);
|
|
6737
|
-
}
|
|
6738
|
-
}
|
|
6739
|
-
}), (r2 = e5.addEventListener) == null || r2.call(e5, "hostcontextchanged", (e6) => {
|
|
6740
|
-
var t3;
|
|
6741
|
-
u2((t3 = e6 == null ? void 0 : e6.displayMode) == null ? "inline" : t3);
|
|
6742
|
-
});
|
|
6743
|
-
let d2 = (i2 = e5.getHostContext) == null ? void 0 : i2.call(e5);
|
|
6744
|
-
d2 != null && d2.displayMode && u2(d2.displayMode), t2.insertBefore(a2, t2.firstChild), t2.removeAttribute("hidden");
|
|
6745
|
-
function f2() {
|
|
6746
|
-
let e6 = document.getElementById("fs-hint-banner");
|
|
6747
|
-
e6 && e6.remove();
|
|
6748
|
-
let t3 = document.createElement("div");
|
|
6749
|
-
t3.id = "fs-hint-banner", Object.assign(t3.style, { position: "fixed", top: "12px", left: "50%", transform: "translateX(-50%)", background: "oklch(14% 0.012 265 / 0.90)", backdropFilter: "blur(12px)", WebkitBackdropFilter: "blur(12px)", border: "1px solid oklch(72% 0.12 80 / 0.3)", borderRadius: "20px", padding: "6px 16px", fontSize: "11px", fontWeight: "600", color: "oklch(80% 0.08 80)", letterSpacing: "0.04em", zIndex: "9999", pointerEvents: "none", opacity: "0", transition: "opacity 300ms ease", whiteSpace: "nowrap" }), t3.textContent = "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(t3), requestAnimationFrame(() => {
|
|
6750
|
-
t3.style.opacity = "1";
|
|
6751
|
-
}), setTimeout(() => {
|
|
6752
|
-
t3.style.opacity = "0", setTimeout(() => t3.remove(), 350);
|
|
6753
|
-
}, 4e3);
|
|
6754
6760
|
}
|
|
6761
|
+
a2.addEventListener("click", () => {
|
|
6762
|
+
p2(u2 === "fullscreen" ? "inline" : "fullscreen");
|
|
6763
|
+
}), o2 == null || o2.addEventListener("click", () => {
|
|
6764
|
+
p2(u2 === "pip" ? "inline" : "pip");
|
|
6765
|
+
}), document.addEventListener("keydown", (e6) => {
|
|
6766
|
+
e6.key !== "Escape" || u2 !== "fullscreen" || (e6.preventDefault(), p2("inline"));
|
|
6767
|
+
}), (i2 = e5.addEventListener) == null || i2.call(e5, "hostcontextchanged", f2), o2 && t2.insertBefore(o2, t2.firstChild), t2.insertBefore(a2, t2.firstChild), d2("inline"), f2();
|
|
6755
6768
|
}
|
|
6756
|
-
function
|
|
6769
|
+
function b_(e5) {
|
|
6770
|
+
var t2, n2;
|
|
6771
|
+
(t2 = document.getElementById("fs-hint-banner")) == null || t2.remove();
|
|
6772
|
+
let r2 = (n2 = p_(e5)) == null ? void 0 : n2.deviceCapabilities, i2 = !!(r2 != null && r2.touch) && (r2 == null ? void 0 : r2.hover) === false, a2 = document.createElement("div");
|
|
6773
|
+
a2.id = "fs-hint-banner", a2.className = "fs-hint-banner", a2.setAttribute("role", "status"), a2.textContent = i2 ? "Tap the collapse button to return to the chat" : "Esc \u2014 exit fullscreen & return to chat", document.body.appendChild(a2), requestAnimationFrame(() => a2.classList.add("visible")), setTimeout(() => {
|
|
6774
|
+
a2.classList.remove("visible"), setTimeout(() => a2.remove(), 350);
|
|
6775
|
+
}, 4e3);
|
|
6776
|
+
}
|
|
6777
|
+
function x_(e5, t2) {
|
|
6757
6778
|
e5.ontoolcancelled = (e6) => {
|
|
6758
6779
|
var n2, r2, i2;
|
|
6759
6780
|
let a2 = (n2 = e6.reason) == null ? "Tool call was cancelled" : n2;
|
|
6760
|
-
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false),
|
|
6781
|
+
console.warn("[AppChrome] Tool cancelled:", a2), (r2 = t2.statusFn) == null || r2.call(t2, null), !t2.loadingEl.hidden && t2.loadingEl.getAttribute("hidden") === null && (t2.loadingEl.setAttribute("hidden", ""), t2.contentEl.removeAttribute("hidden")), (i2 = t2.paramControls) == null || (i2 = i2.call(t2)) == null || i2.setBusy(false), S_(a2);
|
|
6761
6782
|
};
|
|
6762
6783
|
}
|
|
6763
|
-
function
|
|
6784
|
+
function S_(e5) {
|
|
6764
6785
|
var t2;
|
|
6765
6786
|
(t2 = document.getElementById("cancel-toast")) == null || t2.remove();
|
|
6766
6787
|
let n2 = document.createElement("div");
|
|
@@ -6768,20 +6789,34 @@ function f_(e5) {
|
|
|
6768
6789
|
n2.classList.remove("visible"), setTimeout(() => n2.remove(), 300);
|
|
6769
6790
|
}, 3e3);
|
|
6770
6791
|
}
|
|
6771
|
-
function
|
|
6792
|
+
function C_(e5) {
|
|
6772
6793
|
var t2;
|
|
6773
|
-
|
|
6774
|
-
|
|
6775
|
-
|
|
6776
|
-
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
|
|
6780
|
-
|
|
6781
|
-
|
|
6782
|
-
|
|
6783
|
-
|
|
6784
|
-
|
|
6794
|
+
let n2 = document.documentElement, r2 = (e6, t3) => {
|
|
6795
|
+
typeof t3 == "number" && Number.isFinite(t3) && t3 > 0 ? n2.style.setProperty(e6, "".concat(t3, "px")) : n2.style.removeProperty(e6);
|
|
6796
|
+
}, i2 = (e6, t3) => {
|
|
6797
|
+
t3 === void 0 ? n2.removeAttribute(e6) : n2.setAttribute(e6, t3 ? "true" : "false");
|
|
6798
|
+
};
|
|
6799
|
+
function a2() {
|
|
6800
|
+
var t3, a3, o2;
|
|
6801
|
+
let s2 = p_(e5);
|
|
6802
|
+
if (!s2) return;
|
|
6803
|
+
let c2 = (t3 = s2.containerDimensions) == null ? {} : t3;
|
|
6804
|
+
r2("--host-width", c2.width), r2("--host-max-width", c2.maxWidth), r2("--host-height", c2.height), r2("--host-max-height", c2.maxHeight);
|
|
6805
|
+
let l2 = (a3 = s2.safeAreaInsets) == null ? {} : a3;
|
|
6806
|
+
for (let e6 of ["top", "right", "bottom", "left"]) {
|
|
6807
|
+
let t4 = l2[e6];
|
|
6808
|
+
n2.style.setProperty("--safe-".concat(e6), typeof t4 == "number" && t4 > 0 ? "".concat(t4, "px") : "0px");
|
|
6809
|
+
}
|
|
6810
|
+
let u2 = l2.bottom;
|
|
6811
|
+
n2.toggleAttribute("data-safe-bottom", typeof u2 == "number" && u2 > 0), typeof s2.platform == "string" && n2.setAttribute("data-platform", s2.platform);
|
|
6812
|
+
let d2 = s2.deviceCapabilities;
|
|
6813
|
+
i2("data-touch", d2 == null ? void 0 : d2.touch), i2("data-hover", d2 == null ? void 0 : d2.hover);
|
|
6814
|
+
let f2 = s2.styles;
|
|
6815
|
+
f2 != null && f2.variables && Qg(f2.variables, n2), !(f2 == null || (o2 = f2.css) == null) && o2.fonts && $g(f2.css.fonts);
|
|
6816
|
+
}
|
|
6817
|
+
a2(), (t2 = e5.addEventListener) == null || t2.call(e5, "hostcontextchanged", a2);
|
|
6818
|
+
}
|
|
6819
|
+
function w_(e5) {
|
|
6785
6820
|
var t2;
|
|
6786
6821
|
if (!e5) return null;
|
|
6787
6822
|
if (e5.structuredContent != null && typeof e5.structuredContent == "object") return e5.structuredContent;
|
|
@@ -6794,17 +6829,17 @@ function m_(e5) {
|
|
|
6794
6829
|
}
|
|
6795
6830
|
return null;
|
|
6796
6831
|
}
|
|
6797
|
-
function
|
|
6832
|
+
function T_(e5) {
|
|
6798
6833
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6799
6834
|
}
|
|
6800
|
-
function
|
|
6801
|
-
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(
|
|
6802
|
-
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(
|
|
6835
|
+
function E_(e5) {
|
|
6836
|
+
let { container: t2, message: n2, onRetry: r2, retryLabel: i2 = "\u21BA Try again" } = e5, a2 = r2 ? '<button class="error-retry-btn" type="button">'.concat(T_(i2), "</button>") : "";
|
|
6837
|
+
if (t2.innerHTML = '<div class="error-state" role="alert"><div class="error-icon" aria-hidden="true">\u26A0\uFE0F</div><p class="error-msg">'.concat(T_(n2), "</p>") + a2 + "</div>", t2.removeAttribute("hidden"), r2) {
|
|
6803
6838
|
var o2;
|
|
6804
6839
|
(o2 = t2.querySelector(".error-retry-btn")) == null || o2.addEventListener("click", r2);
|
|
6805
6840
|
}
|
|
6806
6841
|
}
|
|
6807
|
-
var
|
|
6842
|
+
var D_ = class e4 {
|
|
6808
6843
|
constructor(t2) {
|
|
6809
6844
|
var n2, r2, i2, a2, s2, c2;
|
|
6810
6845
|
o(this, "config", void 0), o(this, "params", void 0), o(this, "dateInput", void 0), o(this, "timeInput", void 0), o(this, "refreshBtn", void 0), o(this, "locInput", void 0), o(this, "locDropdown", void 0), o(this, "summaryBar", void 0), o(this, "extraToggleInput", void 0), o(this, "searchTimeout", null), o(this, "searchVersion", 0), o(this, "isSearching", false), o(this, "suggestions", []), o(this, "activeIndex", -1), o(this, "selecting", false), o(this, "listboxId", "loc-listbox-".concat(e4.comboSeq++)), this.config = t2, this.params = { date: ((n2 = t2.initialParams) == null ? void 0 : n2.date) || this.getTodayDate(), time: ((r2 = t2.initialParams) == null ? void 0 : r2.time) || "12:00", latitude: ((i2 = t2.initialParams) == null ? void 0 : i2.latitude) || null, longitude: ((a2 = t2.initialParams) == null ? void 0 : a2.longitude) || null, timezone: ((s2 = t2.initialParams) == null ? void 0 : s2.timezone) || null, locationName: ((c2 = t2.initialParams) == null ? void 0 : c2.locationName) || null }, this.render();
|
|
@@ -6984,14 +7019,14 @@ var __ = class e4 {
|
|
|
6984
7019
|
return e5.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
6985
7020
|
}
|
|
6986
7021
|
};
|
|
6987
|
-
o(
|
|
6988
|
-
var
|
|
6989
|
-
function
|
|
7022
|
+
o(D_, "comboSeq", 0);
|
|
7023
|
+
var O_ = { "chart-wheel": { stripIcon: "\u2726", stripTitle: "About the Natal Chart", stripHints: ["Click any <strong>planet</strong> for a deep placement reading", "Click any <strong>aspect line</strong> for its dynamic interpretation", "Click any <strong>house cusp</strong> for house themes", "Use the <strong>date controls</strong> to move through time"], modalText: "This wheel is an exact celestial snapshot of the sky at a given moment and place \u2014 every planet, house, and aspect line is clickable." }, "bi-wheel": { stripIcon: "\u2295", stripTitle: "About the Bi-Wheel", stripHints: ["Click any <strong>inner planet</strong> for natal placement depth", "Click any <strong>outer planet</strong> for transit or synastry meaning", "Click a <strong>cross-aspect line</strong> for inter-chart dynamics", "Use the <strong>date controls</strong> to advance transits"], modalText: "Two charts are layered here \u2014 the inner wheel is the natal chart; the outer ring shows the second chart (transits or another person's planets)." }, bodygraph: { stripIcon: "\u25C8", stripTitle: "About the Bodygraph", stripHints: ["Click any <strong>center</strong> (defined or undefined) for its meaning", "Click any <strong>channel</strong> to explore its life theme", "Click any <strong>gate number</strong> for its I Ching hexagram reading", "Click a <strong>planet row</strong> in the sidebar for its HD role"], modalText: "The bodygraph is a living map of the energy centres, channels, and gates that define a Human Design chart." }, "vedic-chart": { stripIcon: "\u{1F549}", stripTitle: "About the Jyotish Chart", stripHints: ["Click any <strong>rashi cell</strong> for its themes and any planets placed there", "The <strong>diagonal mark</strong> shows the Lagna (Ascendant) rashi", "Use the <strong>action bar</strong> for a full chart interpretation", "Click <strong>Moon & Nakshatra</strong> for lunar mansion detail"], modalText: "This is a Vedic birth chart rendered as a South Indian Rashi grid \u2014 sidereal planetary placements by fixed sign." }, "transit-timeline": { stripIcon: "\u2604", stripTitle: "About the Transit Timeline", stripHints: ["Each entry is an <strong>exact transit hit</strong> \u2014 a transiting planet contacting a natal point", "Events are <strong>grouped by month</strong> in chronological order", "The <strong>\u211E marker</strong> flags a retrograde crossing", "Click any transit for a focused <strong>interpretation</strong>"], modalText: "This timeline lists upcoming transits to the natal chart \u2014 the exact dates outer-planet energies activate each placement." }, "moon-phase": { stripIcon: "\u263E", stripTitle: "About the Moon Phase Dial", stripHints: ["Click the <strong>Moon</strong> for its phase interpretation", "Click the <strong>Void-of-Course</strong> card when the Moon is VOC", "Use the <strong>date control</strong> to move the sky to any moment"], modalText: "The dial shows the Moon's live illumination, phase, sign, and void-of-course status for the selected moment." }, bazi: { stripIcon: "\u56DB", stripTitle: "About the BaZi Chart", stripHints: ["Click any <strong>pillar</strong> (Year, Month, Day, Hour) for its interpretation", "The <strong>Day Master</strong> is the core identity element", "The <strong>Wu Xing bar</strong> shows the Five Element balance"], modalText: "This BaZi (Four Pillars of Destiny) chart maps the Heavenly Stems and Earthly Branches present at a given moment of birth." } }, k_ = '\n .oe-welcome-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: oklch(0% 0 0 / 0.55);\n backdrop-filter: blur(8px);\n -webkit-backdrop-filter: blur(8px);\n z-index: 9999;\n display: flex;\n align-items: center;\n justify-content: center;\n animation: oe-fade-in 0.4s ease both;\n font-family: system-ui, sans-serif;\n }\n\n .oe-welcome-modal {\n /* Themed, not hardcoded: the title/text/hints below all resolve through\n var(--text\u2026), so a fixed dark surface here meant that once the light\n palette became reachable the modal rendered near-black text on a\n near-black card \u2014 1.09:1, effectively invisible. The fallback is the\n previous literal, and every app\'s dark --surface is oklch(11-12%), so\n dark rendering is unchanged. */\n background: var(--surface, oklch(11% 0.010 265));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n border-radius: 16px;\n padding: 32px;\n width: 90%;\n max-width: 440px;\n box-shadow: 0 20px 40px oklch(0% 0 0 / 0.55), inset 0 1px 0 oklch(100% 0 0 / 0.06);\n animation: oe-modal-in 0.5s cubic-bezier(0.22, 1, 0.36, 1) both;\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n @keyframes oe-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n }\n\n @keyframes oe-modal-in {\n from { opacity: 0; transform: scale(0.95) translateY(10px); }\n to { opacity: 1; transform: scale(1) translateY(0); }\n }\n\n .oe-welcome-header {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 4px;\n }\n\n .oe-welcome-icon {\n font-size: 28px;\n color: var(--gold, oklch(72% 0.12 80));\n line-height: 1;\n text-shadow: 0 0 10px var(--gold-glow, oklch(72% 0.12 80 / 0.30));\n }\n\n .oe-welcome-title {\n font-size: 20px;\n font-weight: 600;\n color: var(--text, oklch(92% 0.006 265));\n margin: 0;\n letter-spacing: 0.02em;\n }\n\n .oe-welcome-text {\n font-size: 14.5px;\n line-height: 1.5;\n color: var(--text-secondary, oklch(68% 0.008 265));\n margin: 0;\n }\n\n .oe-welcome-hints {\n display: flex;\n flex-direction: column;\n gap: 12px;\n margin: 8px 0 12px 0;\n padding: 0;\n list-style: none;\n }\n\n .oe-welcome-hints li {\n font-size: 13.5px;\n line-height: 1.4;\n color: var(--text-secondary, oklch(68% 0.008 265));\n display: flex;\n align-items: flex-start;\n gap: 10px;\n opacity: 0;\n animation: oe-fade-in 0.4s ease forwards;\n }\n\n /* Stagger the hints */\n .oe-welcome-hints li:nth-child(1) { animation-delay: 0.15s; }\n .oe-welcome-hints li:nth-child(2) { animation-delay: 0.25s; }\n .oe-welcome-hints li:nth-child(3) { animation-delay: 0.35s; }\n .oe-welcome-hints li:nth-child(4) { animation-delay: 0.45s; }\n\n .oe-welcome-hints li::before {\n content: "\u2726";\n color: var(--gold-dim, oklch(52% 0.06 80));\n font-size: 12px;\n padding-top: 2px;\n }\n\n .oe-welcome-hints strong {\n color: var(--text, oklch(92% 0.006 265));\n font-weight: 600;\n }\n\n .oe-welcome-button {\n align-self: flex-end;\n background: var(--gold-subtle, oklch(72% 0.12 80 / 0.10));\n color: var(--gold, oklch(72% 0.12 80));\n border: 1px solid var(--gold-glow, oklch(72% 0.12 80 / 0.20));\n padding: 10px 24px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.2s ease, border-color 0.2s ease;\n margin-top: 4px;\n }\n\n .oe-welcome-button:hover {\n background: oklch(72% 0.12 80 / 0.18);\n border-color: oklch(72% 0.12 80 / 0.40);\n }\n\n .oe-welcome-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n\n .oe-welcome-backdrop.is-dismissing {\n animation: oe-fade-out 0.3s ease forwards;\n }\n\n .oe-welcome-backdrop.is-dismissing .oe-welcome-modal {\n animation: oe-modal-out 0.3s cubic-bezier(0.22, 1, 0.36, 1) forwards;\n }\n\n @keyframes oe-fade-out {\n to { opacity: 0; }\n }\n\n @keyframes oe-modal-out {\n to { opacity: 0; transform: scale(0.95) translateY(10px); }\n }\n';
|
|
7024
|
+
function A_() {
|
|
6990
7025
|
if (document.getElementById("oe-first-run-styles")) return;
|
|
6991
7026
|
let e5 = document.createElement("style");
|
|
6992
|
-
e5.id = "oe-first-run-styles", e5.textContent =
|
|
7027
|
+
e5.id = "oe-first-run-styles", e5.textContent = k_, document.head.appendChild(e5);
|
|
6993
7028
|
}
|
|
6994
|
-
function
|
|
7029
|
+
function j_(e5) {
|
|
6995
7030
|
let t2 = document.activeElement, n2 = document.createElement("div");
|
|
6996
7031
|
n2.className = "oe-welcome-backdrop";
|
|
6997
7032
|
let r2 = document.createElement("div");
|
|
@@ -7009,65 +7044,65 @@ function x_(e5) {
|
|
|
7009
7044
|
e6.key === "Escape" && (e6.preventDefault(), o2()), e6.key === "Tab" && (e6.preventDefault(), a2.focus());
|
|
7010
7045
|
}), requestAnimationFrame(() => a2.focus()), n2;
|
|
7011
7046
|
}
|
|
7012
|
-
function
|
|
7013
|
-
|
|
7014
|
-
let t2 =
|
|
7047
|
+
function M_(e5) {
|
|
7048
|
+
A_();
|
|
7049
|
+
let t2 = j_(O_[e5]);
|
|
7015
7050
|
document.body.appendChild(t2);
|
|
7016
7051
|
}
|
|
7017
|
-
var
|
|
7018
|
-
function
|
|
7052
|
+
var N_ = "\n .oe-info-button {\n position: fixed;\n top: 12px;\n right: 12px;\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: var(--surface-2, oklch(16% 0.010 265));\n border: 1px solid var(--border-strong, oklch(30% 0.010 265));\n color: var(--text-secondary, oklch(68% 0.008 265));\n font: 600 14px/1 Georgia, serif;\n font-style: italic;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n z-index: 9998;\n transition: all 150ms ease;\n }\n\n .oe-info-button:hover {\n background: var(--surface, oklch(11% 0.010 265));\n border-color: var(--gold-dim, oklch(52% 0.06 80));\n color: var(--gold, oklch(72% 0.12 80));\n }\n\n .oe-info-button:focus-visible {\n outline: 2px solid var(--gold, oklch(72% 0.12 80));\n outline-offset: 2px;\n }\n";
|
|
7053
|
+
function P_() {
|
|
7019
7054
|
if (document.getElementById("oe-info-button-styles")) return;
|
|
7020
7055
|
let e5 = document.createElement("style");
|
|
7021
|
-
e5.id = "oe-info-button-styles", e5.textContent =
|
|
7056
|
+
e5.id = "oe-info-button-styles", e5.textContent = N_, document.head.appendChild(e5);
|
|
7022
7057
|
}
|
|
7023
|
-
function
|
|
7058
|
+
function F_(e5) {
|
|
7024
7059
|
if (document.getElementById("oe-info-button")) return;
|
|
7025
|
-
|
|
7060
|
+
P_();
|
|
7026
7061
|
let t2 = document.createElement("button");
|
|
7027
|
-
t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () =>
|
|
7062
|
+
t2.id = "oe-info-button", t2.className = "oe-info-button", t2.setAttribute("aria-label", "About this chart"), t2.title = "About this chart", t2.textContent = "i", t2.addEventListener("click", () => M_(e5)), document.body.appendChild(t2);
|
|
7028
7063
|
}
|
|
7029
|
-
var
|
|
7030
|
-
function
|
|
7031
|
-
return
|
|
7064
|
+
var I_;
|
|
7065
|
+
function L_() {
|
|
7066
|
+
return I_ ? I_ === "dark" : window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
7032
7067
|
}
|
|
7033
|
-
function
|
|
7068
|
+
function R_(e5 = L_()) {
|
|
7034
7069
|
let t2 = e5 ? "dark" : "light";
|
|
7035
7070
|
return document.documentElement.setAttribute("data-theme", t2), t2;
|
|
7036
7071
|
}
|
|
7037
|
-
function
|
|
7038
|
-
|
|
7072
|
+
function z_(e5) {
|
|
7073
|
+
R_();
|
|
7039
7074
|
try {
|
|
7040
7075
|
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", (t2) => {
|
|
7041
|
-
|
|
7076
|
+
I_ || e5 == null || e5(R_(t2.matches));
|
|
7042
7077
|
});
|
|
7043
7078
|
} catch (e6) {
|
|
7044
7079
|
}
|
|
7045
7080
|
}
|
|
7046
|
-
function
|
|
7081
|
+
function B_(e5, t2) {
|
|
7047
7082
|
var n2, r2;
|
|
7048
7083
|
let i2 = (e6) => {
|
|
7049
7084
|
let n3 = e6 == null ? void 0 : e6.theme;
|
|
7050
7085
|
if (n3 !== "light" && n3 !== "dark") return;
|
|
7051
|
-
|
|
7052
|
-
let r3 = document.documentElement.getAttribute("data-theme"), i3 =
|
|
7086
|
+
I_ = n3;
|
|
7087
|
+
let r3 = document.documentElement.getAttribute("data-theme"), i3 = R_(n3 === "dark");
|
|
7053
7088
|
i3 !== r3 && (t2 == null || t2(i3));
|
|
7054
7089
|
};
|
|
7055
7090
|
(n2 = e5.addEventListener) == null || n2.call(e5, "hostcontextchanged", i2), i2((r2 = e5.getHostContext) == null ? void 0 : r2.call(e5));
|
|
7056
7091
|
}
|
|
7057
|
-
|
|
7058
|
-
var
|
|
7059
|
-
function
|
|
7060
|
-
if (
|
|
7092
|
+
z_();
|
|
7093
|
+
var V_ = document.getElementById("loading-state"), H_ = document.getElementById("moon-container"), U_ = document.getElementById("chart-status"), W_ = document.getElementById("param-controls-container"), G_ = new e_({ name: "Moon Phase Explorer", version: "1.0.0" }, { availableDisplayModes: f_ }), K_ = null, q_ = null, J_ = false;
|
|
7094
|
+
function Y_(e5) {
|
|
7095
|
+
if (U_) {
|
|
7061
7096
|
if (!e5) {
|
|
7062
|
-
|
|
7097
|
+
U_.classList.remove("visible");
|
|
7063
7098
|
return;
|
|
7064
7099
|
}
|
|
7065
|
-
|
|
7100
|
+
U_.textContent = "\xB7 " + e5, U_.classList.add("visible");
|
|
7066
7101
|
}
|
|
7067
7102
|
}
|
|
7068
|
-
async function
|
|
7069
|
-
if (
|
|
7070
|
-
var t2 =
|
|
7103
|
+
async function X_(e5) {
|
|
7104
|
+
if (K_) {
|
|
7105
|
+
var t2 = K_, n2 = "";
|
|
7071
7106
|
if (e5.type === "interpret_phase") {
|
|
7072
7107
|
var r2, i2, a2;
|
|
7073
7108
|
n2 = "The Moon is currently in " + String((r2 = t2.phase_name) == null ? "unknown phase" : r2) + " at " + Math.round(((i2 = t2.illumination) == null ? 0 : i2) * 100) + "% illumination" + (t2.moon_sign ? " in " + t2.moon_sign : "") + ((a2 = t2.voc_status) != null && a2.is_void ? ", currently Void of Course" : "") + ".\n\nWhat does this lunar phase mean for daily activities, emotional rhythms, and intention-setting? Include any relevant gardening, wellness, or spiritual correspondences.";
|
|
@@ -7076,69 +7111,69 @@ async function B_(e5) {
|
|
|
7076
7111
|
n2 = "The Moon is Void of Course" + ((o2 = t2.voc_status) != null && o2.started ? " since " + t2.voc_status.started : "") + ((s2 = t2.voc_status) != null && s2.ends ? " until " + t2.voc_status.ends : "") + ".\n\nWhat exactly does Void of Course mean in practical terms? What should be avoided and what is favored during this period?";
|
|
7077
7112
|
}
|
|
7078
7113
|
if (n2) try {
|
|
7079
|
-
await
|
|
7114
|
+
await G_.sendMessage({ role: "user", content: [{ type: "text", text: n2 }] });
|
|
7080
7115
|
} catch (e6) {
|
|
7081
7116
|
console.error("[MoonPhase] sendMessage failed:", e6);
|
|
7082
7117
|
}
|
|
7083
7118
|
}
|
|
7084
7119
|
}
|
|
7085
|
-
async function
|
|
7086
|
-
if (
|
|
7087
|
-
await
|
|
7120
|
+
async function Z_(e5) {
|
|
7121
|
+
if (Y_(e5), J_) try {
|
|
7122
|
+
await G_.updateModelContext({ content: [{ type: "text", text: "[Moon Phase] User viewed: " + e5 }] });
|
|
7088
7123
|
} catch (e6) {
|
|
7089
7124
|
}
|
|
7090
7125
|
}
|
|
7091
|
-
var
|
|
7092
|
-
function
|
|
7093
|
-
|
|
7126
|
+
var Q_;
|
|
7127
|
+
function $_() {
|
|
7128
|
+
Q_ && (clearTimeout(Q_), Q_ = void 0);
|
|
7094
7129
|
}
|
|
7095
|
-
function
|
|
7096
|
-
|
|
7130
|
+
function ev(e5, t2) {
|
|
7131
|
+
$_(), V_.setAttribute("hidden", ""), E_({ container: H_, message: e5, onRetry: t2 });
|
|
7097
7132
|
}
|
|
7098
|
-
function
|
|
7099
|
-
|
|
7100
|
-
|
|
7101
|
-
}, 3e4),
|
|
7133
|
+
function tv() {
|
|
7134
|
+
$_(), H_.setAttribute("hidden", ""), V_.removeAttribute("hidden"), Q_ = setTimeout(() => {
|
|
7135
|
+
ev("The moon phase didn't load. Tap to try again.", tv);
|
|
7136
|
+
}, 3e4), G_.sendMessage({ role: "user", content: [{ type: "text", text: "Please regenerate the moon phase." }] }).catch(() => {
|
|
7102
7137
|
});
|
|
7103
7138
|
}
|
|
7104
|
-
function
|
|
7105
|
-
|
|
7139
|
+
function nv(e5) {
|
|
7140
|
+
K_ = e5, V_.setAttribute("hidden", ""), H_.removeAttribute("hidden"), u_(H_, e5, X_, Z_), rv(e5), W_ == null || W_.removeAttribute("hidden"), F_("moon-phase");
|
|
7106
7141
|
}
|
|
7107
|
-
function
|
|
7142
|
+
function rv(e5) {
|
|
7108
7143
|
var t2;
|
|
7109
|
-
if (
|
|
7144
|
+
if (q_ || !W_) return;
|
|
7110
7145
|
let n2 = (t2 = e5.datetime) == null ? "" : t2, r2 = "", i2 = "12:00";
|
|
7111
|
-
n2.includes("T") && (r2 = n2.split("T")[0], i2 = n2.split("T")[1].substring(0, 5)),
|
|
7112
|
-
|
|
7146
|
+
n2.includes("T") && (r2 = n2.split("T")[0], i2 = n2.split("T")[1].substring(0, 5)), q_ = new D_({ app: G_, container: W_, initialParams: { date: r2, time: i2 }, hideLocation: true, costHint: "~3 credits", onRefresh: async (e6) => {
|
|
7147
|
+
q_ == null || q_.setBusy(true), V_.removeAttribute("hidden"), H_.setAttribute("hidden", "");
|
|
7113
7148
|
try {
|
|
7114
|
-
let t3 = "".concat(e6.date, "T").concat(e6.time, ":00Z"), n3 = new Promise((e7, t4) => setTimeout(() => t4(Error("Moon phase recalculate timed out after 30s")), 3e4)), r3 =
|
|
7115
|
-
r3 && (r3.phase_name || r3.illumination != null || r3.moon_sign) ?
|
|
7149
|
+
let t3 = "".concat(e6.date, "T").concat(e6.time, ":00Z"), n3 = new Promise((e7, t4) => setTimeout(() => t4(Error("Moon phase recalculate timed out after 30s")), 3e4)), r3 = w_(await Promise.race([G_.callServerTool({ name: "moon_phase_recalculate", arguments: { datetime: t3 } }), n3]));
|
|
7150
|
+
r3 && (r3.phase_name || r3.illumination != null || r3.moon_sign) ? nv(r3) : K_ && (V_.setAttribute("hidden", ""), H_.removeAttribute("hidden"));
|
|
7116
7151
|
} catch (e7) {
|
|
7117
|
-
console.error("[MoonPhase] Recalculate failed or timed out:", e7),
|
|
7152
|
+
console.error("[MoonPhase] Recalculate failed or timed out:", e7), K_ && (V_.setAttribute("hidden", ""), H_.removeAttribute("hidden"));
|
|
7118
7153
|
} finally {
|
|
7119
|
-
|
|
7154
|
+
q_ == null || q_.setBusy(false);
|
|
7120
7155
|
}
|
|
7121
7156
|
} });
|
|
7122
7157
|
}
|
|
7123
|
-
|
|
7124
|
-
|
|
7158
|
+
G_.ontoolresult = function(e5) {
|
|
7159
|
+
$_();
|
|
7125
7160
|
try {
|
|
7126
|
-
let t2 =
|
|
7161
|
+
let t2 = w_(e5);
|
|
7127
7162
|
if (!t2 || !(t2.phase_name || t2.illumination != null || t2.moon_sign)) {
|
|
7128
|
-
|
|
7163
|
+
ev("Moon phase data could not be parsed from the server response.", tv);
|
|
7129
7164
|
return;
|
|
7130
7165
|
}
|
|
7131
|
-
|
|
7166
|
+
nv(t2);
|
|
7132
7167
|
} catch (e6) {
|
|
7133
|
-
|
|
7168
|
+
ev("An error occurred while rendering the moon phase dial.", tv), console.error("[MoonPhase] Render error:", e6);
|
|
7134
7169
|
}
|
|
7135
|
-
},
|
|
7136
|
-
|
|
7170
|
+
}, x_(G_, { loadingEl: V_, contentEl: H_, statusFn: Y_, paramControls: null }), Q_ = setTimeout(() => {
|
|
7171
|
+
ev("Moon phase data is taking longer than expected.", tv);
|
|
7137
7172
|
}, 3e4), (async function() {
|
|
7138
7173
|
try {
|
|
7139
|
-
await
|
|
7140
|
-
var e5 =
|
|
7141
|
-
|
|
7174
|
+
await G_.connect();
|
|
7175
|
+
var e5 = G_.getHostCapabilities();
|
|
7176
|
+
J_ = !!(e5 != null && e5.modelContext), y_(G_, document.getElementById("pan-zoom-controls"), [], { pip: true }), C_(G_), B_(G_);
|
|
7142
7177
|
} catch (e6) {
|
|
7143
7178
|
console.error("[MoonPhase] connect() failed:", e6);
|
|
7144
7179
|
}
|