dsh-metaphysics 0.62.2 → 0.62.4

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/client.js CHANGED
@@ -1,4 +1,4 @@
1
- window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){const yt=(function(){try{return Pt("react")}catch{return globalThis.React}})();if(!yt)return{inject:[],apply(){}};const p=yt.createElement,Ma={bazi:"client.bazi.js",ziwei:"client.ziwei.js",hepan:"client.hepan.js",trend:"client.trend.js",name:"client.name.js",fengshui:"client.fengshui.js",liuyao:"client.liuyao.js",meihua:"client.liuyao.js",qimen:"client.qimen.js",daliuren:"client.daliuren.js",tarot:"client.tarot.js",almanac:"client.almanac.js",convert:"client.convert.js",zeri:"client.zeri.js",chenggu:"client.chenggu.js",xiaoliuren:"client.xiaoliuren.js",star:"client.star.js",numerology:"client.numerology.js",mbti:"client.mbti.js"},Na=[{key:"general",label:"综合",dim:null,focus:""},{key:"wealth",label:"财运",dim:"work",focus:"钱财进出的落点主要看「工作与职业选择」与「事业发展」这两条。"},{key:"career",label:"事业",dim:"career",focus:"事业发展这条与你的问题最直接。"},{key:"love",label:"感情",dim:"love",focus:"感情这条与你的问题最直接。"},{key:"health",label:"健康",dim:"health",focus:"健康这条与你的问题最直接;下面只作提醒,不作任何诊断。"},{key:"study",label:"学业",dim:"career",focus:"学业与考试更贴近「事业发展」这条,讲的是长期积累与阶段进展。"},{key:"travel",label:"出行",dim:"overall",focus:"出行与迁动更贴近「整体运势」这条,看的是当下这一段的大环境。"}];window.__MP_VER="0.62.2",window.__MPGroups=[{title:"问一件事",hint:"心里有一件具体的事,起一卦再决定",items:[{k:"liuyao",label:"六爻",tip:"摇六次,问一件事"},{k:"meihua",label:"梅花",tip:"见闻起卦,看当下"},{k:"tarot",label:"塔罗",tip:"抽牌,看关系与选择"},{k:"qimen",label:"奇门",tip:"看方位、时机与取舍"},{k:"daliuren",label:"六壬",tip:"占事,断来意与结果"},{k:"xiaoliuren",label:"小六壬",tip:"掐指一算,快速断"}]},{title:"看一个人",hint:"看自己或身边人的性情、格局与运程",items:[{k:"bazi",label:"八字",tip:"四柱看一生格局"},{k:"ziwei",label:"紫微",tip:"十二宫细看"},{k:"hepan",label:"合盘",tip:"两个人合不合"},{k:"mbti",label:"人格",tip:"16 型性格问卷"},{k:"chenggu",label:"称骨",tip:"按生辰称命重"},{k:"numerology",label:"数字",tip:"生日数字看性格"},{k:"trend",label:"人生K",tip:"一生高低走势",wide:!0}]},{title:"查日子",hint:"挑时间、换农历,顺带看看家里和名字",items:[{k:"almanac",label:"黄历",tip:"今天宜忌、时辰吉凶"},{k:"zeri",label:"择日",tip:"挑个办事的好日子"},{k:"convert",label:"农历",tip:"公历农历互转"},{k:"star",label:"星座",tip:"星座性格与今日运"},{k:"fengshui",label:"风水",tip:"房屋朝向与布置"},{k:"name",label:"起名",tip:"按八字选字"}]}],window.__MP_UNRELEASED=[];const K={};K.DIRECTIONS=Na,K.compute=()=>{throw new Error("命理引擎尚未加载")};const Aa=Object.create(null),da=Object.create(null);function Ni(s){return Ma[s]||Ma.bazi||"client.bazi.js"}const La=()=>typeof performance<"u"&&performance.now?performance.now():Date.now();async function Ai(s){const n=Ni(s);let k=Aa[n];const I=!!k,X=La();if(!k){if(!Pt||typeof Pt.async!="function")throw new Error("当前宿主不支持客户端分块加载(require.async 缺失),请升级 DeepSeek Harness");let ae=da[n];ae||(ae=Pt.async(`./${n}`).then(re=>{const se=re&&(re.Engine||re.default);if(!se||typeof se.compute!="function")throw new Error(`命理引擎分块 ${n} 未返回 Engine`);return Aa[n]=se,se}),da[n]=ae,ae.catch(()=>{}).then(()=>{delete da[n]})),k=await ae}for(const ae of Object.keys(k))k[ae]!==void 0&&(K[ae]=k[ae]);return Array.isArray(K.DIRECTIONS)||(K.DIRECTIONS=Na),window.Engine=K,window.__MP_ENGINE_READY__=!0,window.__MP_LAST_LOAD={tab:s,chunk:n,cached:I,ms:Math.round((La()-X)*10)/10},K}window.__mpEnsureEngine=Ai,window.Engine=K,(function(){const s={liuyao:!0,meihua:!0,daliuren:!0,tarot:!0},n=Q=>!!s[Q],k={general:"other",wealth:"business",career:"career",love:"love",health:"other",study:"career",travel:"action"},I=Q=>k[Q]||"other",X="#ffffff",ae="#1c1a15";function re(Q){const ee=String(Q??"").match(/rgba?\(([^)]+)\)/i);if(!ee)return null;const G=ee[1].split(/[,\s/]+/).filter(Boolean).map(Number);return G.length<3||G.slice(0,3).some(B=>!Number.isFinite(B))||G.length>3&&Number.isFinite(G[3])&&G[3]<.95?null:[G[0],G[1],G[2]]}function se(Q){const ee=String(Q||"").replace("#",""),G=ee.length===3?ee.split("").map(B=>B+B).join(""):ee;return/^[0-9a-f]{6}$/i.test(G)?[0,2,4].map(B=>parseInt(G.slice(B,B+2),16)):null}function a(Q){const ee=G=>{const B=G/255;return B<=.03928?B/12.92:Math.pow((B+.055)/1.055,2.4)};return .2126*ee(Q[0])+.7152*ee(Q[1])+.0722*ee(Q[2])}function ce(Q,ee){const G=a(Q),B=a(ee),he=Math.max(G,B),ct=Math.min(G,B);return(he+.05)/(ct+.05)}function Z(Q){const ee=typeof Q=="string"?re(Q):Q;return ee?ce(ee,se(X))>=ce(ee,se(ae))?X:ae:""}function le(Q){const ee=String(Q??"").trim();if(!ee)return{lines:null,warning:""};const G=ee.split(/[^0-9]+/).filter(Boolean).map(Number),B=G.filter(he=>![6,7,8,9].includes(he));return G.length===6&&B.length===0?{lines:G,warning:""}:{lines:null,warning:G.length!==6?`爻值需要正好 6 个数字(当前 ${G.length} 个),本次按随机摇卦。`:`爻值只能是 6/7/8/9(收到 ${B.join("/")}),本次按随机摇卦。`}}function ge(Q){const ee=String(Q??"").trim();if(!ee)return null;const G=Number(ee);return Number.isFinite(G)?G:null}function ve(Q){const ee=Q instanceof Date?Q:new Date,G=B=>String(B).padStart(2,"0");return`${ee.getFullYear()}-${G(ee.getMonth()+1)}-${G(ee.getDate())}`}window.__MPCore={NEED_ASK:s,needAsk:n,parseLines:le,toNumber:ge,parseRGB:re,hexToRGB:se,luminance:a,contrastRatio:ce,pickOnColor:Z,ON_DARK:X,ON_LIGHT:ae,kindOfDirection:I,todayStamp:ve}})(),(function(){const s=`
1
+ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.4",factory(Pt){const yt=(function(){try{return Pt("react")}catch{return globalThis.React}})();if(!yt)return{inject:[],apply(){}};const p=yt.createElement,Ma={bazi:"client.bazi.js",ziwei:"client.ziwei.js",hepan:"client.hepan.js",trend:"client.trend.js",name:"client.name.js",fengshui:"client.fengshui.js",liuyao:"client.liuyao.js",meihua:"client.liuyao.js",qimen:"client.qimen.js",daliuren:"client.daliuren.js",tarot:"client.tarot.js",almanac:"client.almanac.js",convert:"client.convert.js",zeri:"client.zeri.js",chenggu:"client.chenggu.js",xiaoliuren:"client.xiaoliuren.js",star:"client.star.js",numerology:"client.numerology.js",mbti:"client.mbti.js"},Na=[{key:"general",label:"综合",dim:null,focus:""},{key:"wealth",label:"财运",dim:"work",focus:"钱财进出的落点主要看「工作与职业选择」与「事业发展」这两条。"},{key:"career",label:"事业",dim:"career",focus:"事业发展这条与你的问题最直接。"},{key:"love",label:"感情",dim:"love",focus:"感情这条与你的问题最直接。"},{key:"health",label:"健康",dim:"health",focus:"健康这条与你的问题最直接;下面只作提醒,不作任何诊断。"},{key:"study",label:"学业",dim:"career",focus:"学业与考试更贴近「事业发展」这条,讲的是长期积累与阶段进展。"},{key:"travel",label:"出行",dim:"overall",focus:"出行与迁动更贴近「整体运势」这条,看的是当下这一段的大环境。"}];window.__MP_VER="0.62.4",window.__MPGroups=[{title:"问一件事",hint:"心里有一件具体的事,起一卦再决定",items:[{k:"liuyao",label:"六爻",tip:"摇六次,问一件事"},{k:"meihua",label:"梅花",tip:"见闻起卦,看当下"},{k:"tarot",label:"塔罗",tip:"抽牌,看关系与选择"},{k:"qimen",label:"奇门",tip:"看方位、时机与取舍"},{k:"daliuren",label:"六壬",tip:"占事,断来意与结果"},{k:"xiaoliuren",label:"小六壬",tip:"掐指一算,快速断"}]},{title:"看一个人",hint:"看自己或身边人的性情、格局与运程",items:[{k:"bazi",label:"八字",tip:"四柱看一生格局"},{k:"ziwei",label:"紫微",tip:"十二宫细看"},{k:"hepan",label:"合盘",tip:"两个人合不合"},{k:"mbti",label:"人格",tip:"16 型性格问卷"},{k:"chenggu",label:"称骨",tip:"按生辰称命重"},{k:"numerology",label:"数字",tip:"生日数字看性格"},{k:"trend",label:"人生K",tip:"一生高低走势",wide:!0}]},{title:"查日子",hint:"挑时间、换农历,顺带看看家里和名字",items:[{k:"almanac",label:"黄历",tip:"今天宜忌、时辰吉凶"},{k:"zeri",label:"择日",tip:"挑个办事的好日子"},{k:"convert",label:"农历",tip:"公历农历互转"},{k:"star",label:"星座",tip:"星座性格与今日运"},{k:"fengshui",label:"风水",tip:"房屋朝向与布置"},{k:"name",label:"起名",tip:"按八字选字"}]}],window.__MP_UNRELEASED=[];const K={};K.DIRECTIONS=Na,K.compute=()=>{throw new Error("命理引擎尚未加载")};const Aa=Object.create(null),da=Object.create(null);function Ni(s){return Ma[s]||Ma.bazi||"client.bazi.js"}const La=()=>typeof performance<"u"&&performance.now?performance.now():Date.now();async function Ai(s){const n=Ni(s);let k=Aa[n];const I=!!k,X=La();if(!k){if(!Pt||typeof Pt.async!="function")throw new Error("当前宿主不支持客户端分块加载(require.async 缺失),请升级 DeepSeek Harness");let ae=da[n];ae||(ae=Pt.async(`./${n}`).then(re=>{const se=re&&(re.Engine||re.default);if(!se||typeof se.compute!="function")throw new Error(`命理引擎分块 ${n} 未返回 Engine`);return Aa[n]=se,se}),da[n]=ae,ae.catch(()=>{}).then(()=>{delete da[n]})),k=await ae}for(const ae of Object.keys(k))k[ae]!==void 0&&(K[ae]=k[ae]);return Array.isArray(K.DIRECTIONS)||(K.DIRECTIONS=Na),window.Engine=K,window.__MP_ENGINE_READY__=!0,window.__MP_LAST_LOAD={tab:s,chunk:n,cached:I,ms:Math.round((La()-X)*10)/10},K}window.__mpEnsureEngine=Ai,window.Engine=K,(function(){const s={liuyao:!0,meihua:!0,daliuren:!0,tarot:!0},n=Q=>!!s[Q],k={general:"other",wealth:"business",career:"career",love:"love",health:"other",study:"career",travel:"action"},I=Q=>k[Q]||"other",X="#ffffff",ae="#1c1a15";function re(Q){const ee=String(Q??"").match(/rgba?\(([^)]+)\)/i);if(!ee)return null;const G=ee[1].split(/[,\s/]+/).filter(Boolean).map(Number);return G.length<3||G.slice(0,3).some(B=>!Number.isFinite(B))||G.length>3&&Number.isFinite(G[3])&&G[3]<.95?null:[G[0],G[1],G[2]]}function se(Q){const ee=String(Q||"").replace("#",""),G=ee.length===3?ee.split("").map(B=>B+B).join(""):ee;return/^[0-9a-f]{6}$/i.test(G)?[0,2,4].map(B=>parseInt(G.slice(B,B+2),16)):null}function a(Q){const ee=G=>{const B=G/255;return B<=.03928?B/12.92:Math.pow((B+.055)/1.055,2.4)};return .2126*ee(Q[0])+.7152*ee(Q[1])+.0722*ee(Q[2])}function me(Q,ee){const G=a(Q),B=a(ee),he=Math.max(G,B),ct=Math.min(G,B);return(he+.05)/(ct+.05)}function Z(Q){const ee=typeof Q=="string"?re(Q):Q;return ee?me(ee,se(X))>=me(ee,se(ae))?X:ae:""}function le(Q){const ee=String(Q??"").trim();if(!ee)return{lines:null,warning:""};const G=ee.split(/[^0-9]+/).filter(Boolean).map(Number),B=G.filter(he=>![6,7,8,9].includes(he));return G.length===6&&B.length===0?{lines:G,warning:""}:{lines:null,warning:G.length!==6?`爻值需要正好 6 个数字(当前 ${G.length} 个),本次按随机摇卦。`:`爻值只能是 6/7/8/9(收到 ${B.join("/")}),本次按随机摇卦。`}}function ge(Q){const ee=String(Q??"").trim();if(!ee)return null;const G=Number(ee);return Number.isFinite(G)?G:null}function ve(Q){const ee=Q instanceof Date?Q:new Date,G=B=>String(B).padStart(2,"0");return`${ee.getFullYear()}-${G(ee.getMonth()+1)}-${G(ee.getDate())}`}window.__MPCore={NEED_ASK:s,needAsk:n,parseLines:le,toNumber:ge,parseRGB:re,hexToRGB:se,luminance:a,contrastRatio:me,pickOnColor:Z,ON_DARK:X,ON_LIGHT:ae,kindOfDirection:I,todayStamp:ve}})(),(function(){const s=`
2
2
  .pp,.mp-it,.mp-al,.mp-cg,.mp-cl,.mp-cli,.mp-kline,.mp-mb,.mp-mb-paper,.mp-nm,.mp-quick,.mp-cdiff,.mp-shadow,.mp-trace-card,.mp-trace-layer,.mp-prof{--ink:#1b1b1b;--ink2:#3f3a33;--muted:#6f6a60;--label:#8a8378;--faint:#a9a296;
3
3
  --line:#c8c1b2;--dimline:#b9b2a4;--hair:#e9e2d3;
4
4
  /* 底色略沉作「桌面」,--card 跳到近白:原先 bg 与 card 只差 1/255,卡片感等于零。
@@ -1342,7 +1342,7 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1342
1342
  .mp-prof-bar button.ghost{background:transparent;color:var(--muted);border-color:var(--line)}
1343
1343
  .mp-prof-bar .mp-prof-tip{font-size:11.5px;color:var(--muted)}
1344
1344
  @media (max-width:360px){.mp-prof-list{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}
1345
- `,n=window.__PP=window.__PP||{};n.CSS=s;const k={主星:"main",吉星:"good",煞星:"bad",辅星:"aux",杂曜:"aux"},I={禄:"lu",权:"quan",科:"ke",忌:"ji"},X={庙:"good",旺:"good",得:"mid",利:"mid",平:"mid",不:"bad",陷:"bad"},ae={巳:[1,1],午:[1,2],未:[1,3],申:[1,4],辰:[2,1],酉:[2,4],卯:[3,1],戌:[3,4],寅:[4,1],丑:[4,2],子:[4,3],亥:[4,4]},re={乾:[1,1,1],兑:[1,1,0],离:[1,0,1],震:[1,0,0],巽:[0,1,1],坎:[0,1,0],艮:[0,0,1],坤:[0,0,0]},se=["初爻","二爻","三爻","四爻","五爻","上爻"],a=e=>String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),ce=(e,i,r)=>{const x=Math.round(43),h=e?`<rect x="0" y="${2.5}" width="104" height="7" rx="${1.6}" fill="currentColor"/>`:`<rect x="0" y="${2.5}" width="${x}" height="7" rx="${1.6}" fill="currentColor"/><rect x="${x+18}" y="${2.5}" width="${104-x-18}" height="7" rx="${1.6}" fill="currentColor"/>`;return`<svg class="mp-hex${i?" hex-on":""}${r?" "+r:""}" viewBox="0 0 104 12" preserveAspectRatio="none" aria-hidden="true" focusable="false">${h}</svg>`},Z={木:"M6 1.6V10.8M6 5.2 2.6 2.2M6 7.4 9.4 4.4",火:"M6 1.4C7.6 3.6 9.2 5.4 9.2 7.6A3.2 3.2 0 0 1 2.8 7.6C2.8 5.4 4.4 3.6 6 1.4Z",土:"M1.6 9.6h8.8M6 2.4v7.2M3.4 5.6h5.2",金:"M6 1.2 10.6 6 6 10.8 1.4 6Z",水:"M1.4 7.2C2.9 4.2 4.5 10.2 6 7.2 7.5 4.2 9.1 10.2 10.6 7.2"},le=e=>{const i=Z[e];return i?`<svg class="mp-wxi" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="${i}" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>`:""},ge=e=>`<svg class="mp-trig" viewBox="0 0 14 10" aria-hidden="true" focusable="false">${(re[e]||[0,0,0]).slice().reverse().map((l,o)=>{const m=o*4;return l?`<rect x="0" y="${m}" width="14" height="2" rx="0.6" fill="currentColor"/>`:`<rect x="0" y="${m}" width="5.6" height="2" rx="0.6" fill="currentColor"/><rect x="8.4" y="${m}" width="5.6" height="2" rx="0.6" fill="currentColor"/>`}).join("")}</svg>`;n._hexBar=ce,n._wxIcon=le,n._triGlyph=ge;function ve(e,i){return!e||!e.length?"":e.map(r=>{const l=k[r.type]||"aux",o=r.mutagen?`<i class="pp-m ${I[r.mutagen]}">${r.mutagen}</i>`:"",m=i&&i[r.name],d=m?`<i class="pp-m view ${I[m]}">${m}</i>`:"",c=r.brightness?`<em class="pp-b ${X[r.brightness]||"mid"}">${r.brightness}</em>`:"",g=r.inTemple?'<em class="pp-b good">庙</em>':"";return`<span class="pp-st ${l}">${r.name}${c}${g}${o}${d}</span>`}).join("")}function Q(e){const i=[];for(let r=0;r<6;r++)i.push(e+r*12);return i.join(",")}const ee=["命宫","兄弟","夫妻","子女","财帛","疾厄","迁移","交友","官禄","田宅","福德","父母"],G=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],B=e=>(e%12+12)%12,he=(e,i)=>e!==i&&[B(i+4),B(i+8),B(i+6)].includes(e);function ct(e,i,r,l,o){const m=ae[e.branch]||[1,1],d=G.indexOf(e.branch),c=["pp-cell"];d===i?c.push("pp-soul"):he(d,i)&&c.push("pp-tri"),e.isBody&&c.push("pp-shen"),m[0]===4&&c.push("pp-lastrow"),m[1]===4&&c.push("pp-lastcol");const g=e.shensha||{},x=ee[B(i-d)],h=e.selfHua&&e.selfHua.length?`<span class="pp-zh">${e.selfHua.map(j=>`<i class="pp-m self ${I[j.type]}" title="自化:宫干化回本宫">${j.type}</i>`).join("")}</span>`:"";let T="";if(d===i&&l){const j=z=>(k[z.type]||"")==="main";if(!(e.stars||[]).some(j)){const z=l.find(H=>G.indexOf(H.branch)===B(d+6)),q=z?(z.stars||[]).filter(j):[];q.length&&(T=`<div class="pp-borrow" title="命宫无主星,借对宫(迁移宫)主星">借 ${q.map(H=>H.name).join(" ")}</div>`)}}return`<div class="${c.join(" ")}" data-pi="${d}" data-view="${r}" role="button" tabindex="0" aria-expanded="false" style="grid-row:${m[0]};grid-column:${m[1]}">
1345
+ `,n=window.__PP=window.__PP||{};n.CSS=s;const k={主星:"main",吉星:"good",煞星:"bad",辅星:"aux",杂曜:"aux"},I={禄:"lu",权:"quan",科:"ke",忌:"ji"},X={庙:"good",旺:"good",得:"mid",利:"mid",平:"mid",不:"bad",陷:"bad"},ae={巳:[1,1],午:[1,2],未:[1,3],申:[1,4],辰:[2,1],酉:[2,4],卯:[3,1],戌:[3,4],寅:[4,1],丑:[4,2],子:[4,3],亥:[4,4]},re={乾:[1,1,1],兑:[1,1,0],离:[1,0,1],震:[1,0,0],巽:[0,1,1],坎:[0,1,0],艮:[0,0,1],坤:[0,0,0]},se=["初爻","二爻","三爻","四爻","五爻","上爻"],a=e=>String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;"),me=(e,i,r)=>{const x=Math.round(43),h=e?`<rect x="0" y="${2.5}" width="104" height="7" rx="${1.6}" fill="currentColor"/>`:`<rect x="0" y="${2.5}" width="${x}" height="7" rx="${1.6}" fill="currentColor"/><rect x="${x+18}" y="${2.5}" width="${104-x-18}" height="7" rx="${1.6}" fill="currentColor"/>`;return`<svg class="mp-hex${i?" hex-on":""}${r?" "+r:""}" viewBox="0 0 104 12" preserveAspectRatio="none" aria-hidden="true" focusable="false">${h}</svg>`},Z={木:"M6 1.6V10.8M6 5.2 2.6 2.2M6 7.4 9.4 4.4",火:"M6 1.4C7.6 3.6 9.2 5.4 9.2 7.6A3.2 3.2 0 0 1 2.8 7.6C2.8 5.4 4.4 3.6 6 1.4Z",土:"M1.6 9.6h8.8M6 2.4v7.2M3.4 5.6h5.2",金:"M6 1.2 10.6 6 6 10.8 1.4 6Z",水:"M1.4 7.2C2.9 4.2 4.5 10.2 6 7.2 7.5 4.2 9.1 10.2 10.6 7.2"},le=e=>{const i=Z[e];return i?`<svg class="mp-wxi" viewBox="0 0 12 12" aria-hidden="true" focusable="false"><path d="${i}" fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>`:""},ge=e=>`<svg class="mp-trig" viewBox="0 0 14 10" aria-hidden="true" focusable="false">${(re[e]||[0,0,0]).slice().reverse().map((l,o)=>{const m=o*4;return l?`<rect x="0" y="${m}" width="14" height="2" rx="0.6" fill="currentColor"/>`:`<rect x="0" y="${m}" width="5.6" height="2" rx="0.6" fill="currentColor"/><rect x="8.4" y="${m}" width="5.6" height="2" rx="0.6" fill="currentColor"/>`}).join("")}</svg>`;n._hexBar=me,n._wxIcon=le,n._triGlyph=ge;function ve(e,i){return!e||!e.length?"":e.map(r=>{const l=k[r.type]||"aux",o=r.mutagen?`<i class="pp-m ${I[r.mutagen]}">${r.mutagen}</i>`:"",m=i&&i[r.name],d=m?`<i class="pp-m view ${I[m]}">${m}</i>`:"",c=r.brightness?`<em class="pp-b ${X[r.brightness]||"mid"}">${r.brightness}</em>`:"",g=r.inTemple?'<em class="pp-b good">庙</em>':"";return`<span class="pp-st ${l}">${r.name}${c}${g}${o}${d}</span>`}).join("")}function Q(e){const i=[];for(let r=0;r<6;r++)i.push(e+r*12);return i.join(",")}const ee=["命宫","兄弟","夫妻","子女","财帛","疾厄","迁移","交友","官禄","田宅","福德","父母"],G=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],B=e=>(e%12+12)%12,he=(e,i)=>e!==i&&[B(i+4),B(i+8),B(i+6)].includes(e);function ct(e,i,r,l,o){const m=ae[e.branch]||[1,1],d=G.indexOf(e.branch),c=["pp-cell"];d===i?c.push("pp-soul"):he(d,i)&&c.push("pp-tri"),e.isBody&&c.push("pp-shen"),m[0]===4&&c.push("pp-lastrow"),m[1]===4&&c.push("pp-lastcol");const g=e.shensha||{},x=ee[B(i-d)],h=e.selfHua&&e.selfHua.length?`<span class="pp-zh">${e.selfHua.map(j=>`<i class="pp-m self ${I[j.type]}" title="自化:宫干化回本宫">${j.type}</i>`).join("")}</span>`:"";let T="";if(d===i&&l){const j=z=>(k[z.type]||"")==="main";if(!(e.stars||[]).some(j)){const z=l.find(H=>G.indexOf(H.branch)===B(d+6)),q=z?(z.stars||[]).filter(j):[];q.length&&(T=`<div class="pp-borrow" title="命宫无主星,借对宫(迁移宫)主星">借 ${q.map(H=>H.name).join(" ")}</div>`)}}return`<div class="${c.join(" ")}" data-pi="${d}" data-view="${r}" role="button" tabindex="0" aria-expanded="false" style="grid-row:${m[0]};grid-column:${m[1]}">
1346
1346
  <div class="pp-stars">${ve(e.stars,o)}${h}</div>
1347
1347
  ${T}
1348
1348
  <div class="pp-ages">${Q(e.xiaoxian.age)}</div>
@@ -1367,7 +1367,7 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1367
1367
  <div class="ct-t4">命宫 ${e.soul.branch} 身宫 ${e.body.branch} 五行局 ${e.bureau.name}</div>
1368
1368
  <div class="ct-t4">子年斗君 ${e.doujun?e.doujun.zinian:"—"} 流年斗君 ${r&&r.doujun?r.doujun:"—"}</div>
1369
1369
  <div class="ct-t4">紫微 ${e.ziwei} 天府 ${e.tianfu} ${M==="da"?"大限命宫 "+G[m]:M==="ln"?"流年命宫 "+G[d]:"本命命宫 "+e.soul.branch}</div>
1370
- ${M==="da"||M==="ln"?`<div class="ct-t4 pp-viewhua">${M==="da"?"大限":"流年"}四化 ${(M==="da"?x.da:x.ln)&&Object.keys(M==="da"?x.da:x.ln).length?Object.entries(M==="da"?x.da:x.ln).map(([me,fe])=>`${me}化${fe}`).join(" "):'<span class="pp-dim">未飞四化</span>'}</div>`:""}
1370
+ ${M==="da"||M==="ln"?`<div class="ct-t4 pp-viewhua">${M==="da"?"大限":"流年"}四化 ${(M==="da"?x.da:x.ln)&&Object.keys(M==="da"?x.da:x.ln).length?Object.entries(M==="da"?x.da:x.ln).map(([ue,fe])=>`${ue}化${fe}`).join(" "):'<span class="pp-dim">未飞四化</span>'}</div>`:""}
1371
1371
  <div class="pp-legend"><span class="pp-m lu">禄</span><span class="pp-m quan">权</span><span class="pp-m ke">科</span><span class="pp-m ji">忌</span><span>实心=生年四化 空心=大限/流年四化 虚下划线=自化 红框=命宫 浅底=三方四正</span></div>
1372
1372
  </div>`,j=(S,M,W)=>`<div class="pp-body ${S}" data-view="${W}" data-soul="${M}"><div class="pp-grid">${h(M,W)}${T(M,W)}</div><div class="pp-detail"></div></div>`,z=e.changqu,q=z?`<div class="pp-chips">
1373
1373
  <span class="pp-chip">昌 ${z.wenchang.branch}(${z.wenchang.palace})</span>
@@ -1379,10 +1379,10 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1379
1379
  <div class="pp-chips">${y.placed.map(S=>`<span class="pp-chip${S.inTemple?" ok":""}" title="${a(S.meaning||"")}">${a(S.name)} ${a(S.branch)}(${a(S.palace)})${S.inTemple?"·庙":""}</span>`).join("")}</div>
1380
1380
  <details class="pp-zy"><summary>逐颗安星诀(${y.placed.length} 条 · 出多处近代通行辑本并核,属通行说,不是《全书》原文)</summary><div class="pp-zy-v">${a(y.verses).replace(/\n/g,"<br>")}</div></div></details>
1381
1381
  ${y.skipped&&y.skipped.length?`<div class="pp-zy-s">${y.skipped.map(S=>a(S)).join("")}</div>`:""}</div>`:`<div class="pp-sec"><div class="pp-sec-h">杂曜 · 本盘 ${y.starTotal} 颗(通行简盘)</div>
1382
- <div class="pp-zy-s">开「杂曜全表」追加十二颗:解神·天巫·天月·阴煞(生月)/天官·天福·天厨(生年干)/蜚廉·天德·年解(生年支)/天才(命宫+生年支)·天寿(身宫+生年支)。${y.skipped&&y.skipped.length?`不另立:${y.skipped.map(S=>a(S)).join("")}`:""}</div></div>`:"",ie=e.flyChains?(()=>{const S=["禄","权","科","忌"].map(M=>{const W=e.flyChains[M];if(!W||!W.steps.length)return"";const me=W.path.map(de=>String(de).replace(/宫$/,"")).join("→"),fe=W.steps.map(de=>`${de.from}(${de.fromStem})化${M}${de.star}→${de.to}`).join(";");return`<span class="pp-chip ${M==="忌"?"warn":M==="禄"?"ok":""}" title="${a(fe)}">飞${M} ${a(me)}${W.closed?"↺":""}</span>`}).join("");return S?`<div class="pp-chips">${S}</div>`:""})():"",F=e.flyComposite&&Array.isArray(e.flyComposite.labels)&&e.flyComposite.labels.length?`<div class="pp-chips">${e.flyComposite.labels.map(S=>{const M=/忌/.test(S)?"warn":/自化/.test(S)?"":"ok",W=ne=>String(ne).replace(/^.*?会/,"").replace(/^禄忌同宫/,"").replace(/自化$/,""),me=(e.flyComposite.targets||[]).find(ne=>ne.palace===W(S)),fe=me?me.incoming.map(ne=>`${ne.from}化${ne.type}${ne.star}`).join("、"):e.flyComposite.note;return`<span class="pp-chip ${M}" title="${a(fe)}">三方四正 ${a(S)}</span>`}).join("")}</div>`:"",U=e.flow,$=U?(()=>{const S=fe=>(fe.mutagenHits||[]).length?fe.mutagenHits.map(ne=>`<i>${ne.star}化${ne.type}<em>→${ne.palace||"未上盘"}</em></i>`).join(""):'<i class="dim">宫干无四化</i>',M=(fe,ne,de)=>`<div class="flow-row"><b>${fe}</b><span class="flow-p"><span class="flow-k">${ne.ganzhi||"—"} 落${ne.palace||"未上盘"}(${ne.branch})</span>${de?`<em class="flow-same">${de}</em>`:""}</span><span class="flow-m">${S(ne)}</span></div>`,me=U.day.branch===U.month.branch?"(日数走满一圈,故同宫)":"";return`<div class="pp-flow">
1382
+ <div class="pp-zy-s">开「杂曜全表」追加十二颗:解神·天巫·天月·阴煞(生月)/天官·天福·天厨(生年干)/蜚廉·天德·年解(生年支)/天才(命宫+生年支)·天寿(身宫+生年支)。${y.skipped&&y.skipped.length?`不另立:${y.skipped.map(S=>a(S)).join("")}`:""}</div></div>`:"",ie=e.flyChains?(()=>{const S=["禄","权","科","忌"].map(M=>{const W=e.flyChains[M];if(!W||!W.steps.length)return"";const ue=W.path.map(de=>String(de).replace(/宫$/,"")).join("→"),fe=W.steps.map(de=>`${de.from}(${de.fromStem})化${M}${de.star}→${de.to}`).join(";");return`<span class="pp-chip ${M==="忌"?"warn":M==="禄"?"ok":""}" title="${a(fe)}">飞${M} ${a(ue)}${W.closed?"↺":""}</span>`}).join("");return S?`<div class="pp-chips">${S}</div>`:""})():"",F=e.flyComposite&&Array.isArray(e.flyComposite.labels)&&e.flyComposite.labels.length?`<div class="pp-chips">${e.flyComposite.labels.map(S=>{const M=/忌/.test(S)?"warn":/自化/.test(S)?"":"ok",W=ne=>String(ne).replace(/^.*?会/,"").replace(/^禄忌同宫/,"").replace(/自化$/,""),ue=(e.flyComposite.targets||[]).find(ne=>ne.palace===W(S)),fe=ue?ue.incoming.map(ne=>`${ne.from}化${ne.type}${ne.star}`).join("、"):e.flyComposite.note;return`<span class="pp-chip ${M}" title="${a(fe)}">三方四正 ${a(S)}</span>`}).join("")}</div>`:"",U=e.flow,$=U?(()=>{const S=fe=>(fe.mutagenHits||[]).length?fe.mutagenHits.map(ne=>`<i>${ne.star}化${ne.type}<em>→${ne.palace||"未上盘"}</em></i>`).join(""):'<i class="dim">宫干无四化</i>',M=(fe,ne,de)=>`<div class="flow-row"><b>${fe}</b><span class="flow-p"><span class="flow-k">${ne.ganzhi||"—"} 落${ne.palace||"未上盘"}(${ne.branch})</span>${de?`<em class="flow-same">${de}</em>`:""}</span><span class="flow-m">${S(ne)}</span></div>`,ue=U.day.branch===U.month.branch?"(日数走满一圈,故同宫)":"";return`<div class="pp-flow">
1383
1383
  <div class="flow-row"><b>基准</b><span class="flow-p">${U.asOf.solar}</span><span class="flow-m">农历 ${U.asOf.lunar} 流年 ${U.asOf.yearGanzhi}(斗君 ${U.year.doujun})</span></div>
1384
1384
  ${M(`流月 ${U.month.index} 月`,U.month)}
1385
- ${M(`流日 ${U.day.index} 日`,U.day,me)}
1385
+ ${M(`流日 ${U.day.index} 日`,U.day,ue)}
1386
1386
  ${M(`流时 ${G[U.hour.hourIndex]}时`,U.hour)}
1387
1387
  </div>`})():"";return n._zw=e,n.briefHTML(e)+`<div class="pp">
1388
1388
  <input type="radio" name="ppm" id="ppm-ben" class="pp-r" checked>
@@ -1411,11 +1411,11 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1411
1411
  ${D("三方四正",`<span class="dt-tri">${z}</span>`)}
1412
1412
  <div class="hint">三方四正在盘上已同步标出(浅红描边)。再点一次本宫可收起。</div>`}function mt(e){e.querySelectorAll(".pp-cell.pp-sel,.pp-cell.pp-link").forEach(i=>{i.classList.remove("pp-sel"),i.classList.remove("pp-link")}),e.querySelectorAll('.pp-cell[aria-expanded="true"]').forEach(i=>i.setAttribute("aria-expanded","false"))}function Ze(){if(Ze.done||typeof document>"u"||!document.addEventListener)return;Ze.done=!0;const e=i=>{const r=i.closest(".pp-body");if(!r)return;const l=r.querySelector(".pp-detail");if(!l)return;if(i.classList.contains("pp-sel")){mt(r),l.classList.remove("open"),l.innerHTML="";return}mt(r);const o=Number(i.dataset.pi),m=Number(r.dataset.soul);r.querySelectorAll(".pp-cell").forEach(c=>{const g=Number(c.dataset.pi);(g===B(o+4)||g===B(o+8)||g===B(o+6))&&c.classList.add("pp-link")}),i.classList.add("pp-sel"),i.setAttribute("aria-expanded","true"),l.innerHTML=Te(o,m),l.classList.add("open")};document.addEventListener("click",i=>{const r=i.target;if(r&&r.closest&&r.closest("[data-pp-close]")){const o=r.closest(".pp-body");if(o){mt(o);const m=o.querySelector(".pp-detail");m&&(m.classList.remove("open"),m.innerHTML="");return}}const l=r&&r.closest?r.closest(".pp-cell[data-pi]"):null;l&&e(l)}),document.addEventListener("keydown",i=>{if(i.key!=="Enter"&&i.key!==" ")return;const r=i.target&&i.target.closest?i.target.closest(".pp-cell[data-pi]"):null;r&&(i.preventDefault(),e(r))})}n.bindZiwei=Ze,n._palaceDetailHTML=Te,Ze();function wt(e,i){const r=i||{},l=e.slice().sort((o,m)=>m.position-o.position);return r.plain?l.map(o=>`<div class="mp-hy-row hy-plain">
1413
1413
  <span class="mp-hy-nm">${o.name||se[o.position-1]}</span>
1414
- ${ce(o.yinYang==="阳",o.moving)}
1414
+ ${me(o.yinYang==="阳",o.moving)}
1415
1415
  </div>`).join(""):l.map(o=>{const m=o.yinYang==="阳",d=r.shiYing?o.position===r.shi?'<span class="mp-hy-sy">世</span>':o.position===r.ying?'<span class="mp-hy-sy">应</span>':"<span></span>":"<span></span>",c=o.moving?`<i class="mp-hy-mv" title="动爻">${m?"○":"×"}</i>`:'<i class="mp-hy-mv"></i>';return`<div class="mp-hy-row">
1416
1416
  ${d}
1417
1417
  <span class="mp-hy-nm">${o.name||se[o.position-1]}</span>
1418
- <span class="mp-hy-ln">${ce(m,o.moving)}${c}</span>
1418
+ <span class="mp-hy-ln">${me(m,o.moving)}${c}</span>
1419
1419
  <span class="mp-hy-gz">${a(o.ganzhi||"")}</span>
1420
1420
  <span class="mp-hy-lq">${a(o.liuqin||"")}</span>
1421
1421
  <span class="mp-hy-ls">${a(o.liushen||"")}</span>
@@ -1433,7 +1433,7 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1433
1433
  ${z}
1434
1434
  ${H}
1435
1435
  ${D}
1436
- </div>`},n.meihuaHTML=function(e){const i=(z,q,H,te,D)=>{const A=[...re[te]||[0,0,0],...re[H]||[0,0,0]].slice().reverse().map(ie=>ce(!!ie,!1,"sm")).join("");return`<div class="mp-hexbox hb-mini">
1436
+ </div>`},n.meihuaHTML=function(e){const i=(z,q,H,te,D)=>{const A=[...re[te]||[0,0,0],...re[H]||[0,0,0]].slice().reverse().map(ie=>me(!!ie,!1,"sm")).join("");return`<div class="mp-hexbox hb-mini">
1437
1437
  <div class="hb-h">${z}</div>
1438
1438
  <div class="hb-n">${q}</div>
1439
1439
  <div class="mp-mh-mini">${A}</div>
@@ -1574,17 +1574,17 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1574
1574
  </div>
1575
1575
  ${ut(e.triple)}
1576
1576
  <div class="mp-hp-notes">${e.notes.map(o=>`<p>${o}</p>`).join("")}</div>
1577
- </div>`},n.curveHTML=function(e){const i=e&&e.dayun&&Array.isArray(e.dayun.list)?e.dayun.list:[],r=e&&Array.isArray(e.liunian)?e.liunian:[];if(i.length<2)return"";const l=E=>typeof E=="number"&&isFinite(E)?E:0,o=E=>E.luck?l(E.luck.score):0,m=4.2,d=-2.2,c=l(e.dayun.startAge&&e.dayun.startAge.years),g=i.length?i[i.length-1].startAge+10:c+80,x=r.map(E=>l(E.age)).filter(E=>E>0),h=Math.min(c,...x.length?x:[c]),T=Math.max(g,...x.length?x:[g]),j=Math.max(1,T-h),z=640,q=190,H={t:14,r:16,b:26,l:30},te=z-H.l-H.r,D=q-H.t-H.b,y=E=>H.l+(E-h)/j*te,A=E=>H.t+D-(Math.max(d,Math.min(m,E))-d)/(m-d)*D,F=[{from:1.2,to:m,cls:"b-good"},{from:.55,to:1.2,cls:"b-good"},{from:-.8,to:.55,cls:"b-flat"},{from:-1.45,to:-.8,cls:"b-bad"},{from:d,to:-1.45,cls:"b-bad"}].map(E=>`<rect class="cv-band ${E.cls}" x="${H.l}" y="${A(E.to).toFixed(1)}" width="${te}" height="${(A(E.from)-A(E.to)).toFixed(1)}"/>`).join(""),U=10/j*te,$=[];i.forEach((E,ue)=>{const Me=l(E.startAge),we=o(E),Je=Math.max(H.l,y(Me)),Ee=Math.min(H.l+te,y(Me+10));$.push(`${Je.toFixed(1)},${A(we).toFixed(1)}`),$.push(`${Ee.toFixed(1)},${A(we).toFixed(1)}`)});const S=$.length?`<polyline class="cv-dy" points="${$.join(" ")}"/>`:"",M=$.length?`<polygon class="cv-dyfill" points="${H.l},${(H.t+D).toFixed(1)} ${$.join(" ")} ${(H.l+te).toFixed(1)},${(H.t+D).toFixed(1)}"/>`:"",W=r.filter(E=>E.luck&&typeof E.luck.score=="number").map(E=>({x:y(l(E.age)),y:A(l(E.luck.score)),y0:l(E.year),gz:E.ganzhi,tier:E.luck.tier,v:l(E.luck.score),age:l(E.age)})),me=W.length>1?`<polyline class="cv-ln" points="${W.map(E=>`${E.x.toFixed(1)},${E.y.toFixed(1)}`).join(" ")}"/>`:"",fe={大吉:"var(--lu)",吉:"var(--lu)",平:"var(--muted)",忌:"var(--red)",大忌:"var(--red)"},ne=W.length?Math.min(...W.map(E=>E.y0)):null,de=W.map(E=>`<circle class="cv-dot${E.y0===ne?" now":""}" cx="${E.x.toFixed(1)}" cy="${E.y.toFixed(1)}" fill="${fe[E.tier]||"var(--muted)"}"><title>${a(`${E.y0}年(${E.age}岁)${E.gz} ${E.tier} ${E.v}`)}</title></circle>`).join(""),$e=`<line class="cv-ax zero" x1="${H.l}" y1="${A(0).toFixed(1)}" x2="${H.l+te}" y2="${A(0).toFixed(1)}"/><line class="cv-ax" x1="${H.l}" y1="${H.t}" x2="${H.l}" y2="${H.t+D}"/>`,Ce=j>60?10:5,_e=[];for(let E=Math.ceil(h/Ce)*Ce;E<=T;E+=Ce)_e.push(`<text class="cv-lbl age" x="${y(E).toFixed(1)}" y="${(H.t+D+13).toFixed(1)}" text-anchor="middle">${E}岁</text>`);const We=`<text class="cv-lbl" x="${(H.l-5).toFixed(1)}" y="${(A(2.4)+3).toFixed(1)}" text-anchor="end">吉</text><text class="cv-lbl" x="${(H.l-5).toFixed(1)}" y="${(A(0)+3).toFixed(1)}" text-anchor="end">平</text><text class="cv-lbl" x="${(H.l-5).toFixed(1)}" y="${(A(-1.8)+3).toFixed(1)}" text-anchor="end">忌</text>`,Se=i.slice().sort((E,ue)=>o(ue)-o(E)),_=Se[0],u=Se[Se.length-1],w=_&&o(_)>.55?`<text class="cv-lbl" x="${y(l(_.startAge)+5).toFixed(1)}" y="${(A(o(_))-5).toFixed(1)}" text-anchor="middle">▲${_.startAge}岁 ${_.luck.tier}</text>`:"",V=u&&o(u)<-.8?`<text class="cv-lbl" x="${y(l(u.startAge)+5).toFixed(1)}" y="${(A(o(u))+11).toFixed(1)}" text-anchor="middle">▼${u.startAge}岁 ${u.luck.tier}</text>`:"",Y=`<div class="cv-legend">
1577
+ </div>`},n.curveHTML=function(e){const i=e&&e.dayun&&Array.isArray(e.dayun.list)?e.dayun.list:[],r=e&&Array.isArray(e.liunian)?e.liunian:[];if(i.length<2)return"";const l=E=>typeof E=="number"&&isFinite(E)?E:0,o=E=>E.luck?l(E.luck.score):0,m=4.2,d=-2.2,c=l(e.dayun.startAge&&e.dayun.startAge.years),g=i.length?i[i.length-1].startAge+10:c+80,x=r.map(E=>l(E.age)).filter(E=>E>0),h=Math.min(c,...x.length?x:[c]),T=Math.max(g,...x.length?x:[g]),j=Math.max(1,T-h),z=640,q=190,H={t:14,r:16,b:26,l:30},te=z-H.l-H.r,D=q-H.t-H.b,y=E=>H.l+(E-h)/j*te,A=E=>H.t+D-(Math.max(d,Math.min(m,E))-d)/(m-d)*D,F=[{from:1.2,to:m,cls:"b-good"},{from:.55,to:1.2,cls:"b-good"},{from:-.8,to:.55,cls:"b-flat"},{from:-1.45,to:-.8,cls:"b-bad"},{from:d,to:-1.45,cls:"b-bad"}].map(E=>`<rect class="cv-band ${E.cls}" x="${H.l}" y="${A(E.to).toFixed(1)}" width="${te}" height="${(A(E.from)-A(E.to)).toFixed(1)}"/>`).join(""),U=10/j*te,$=[];i.forEach((E,ce)=>{const Me=l(E.startAge),we=o(E),Je=Math.max(H.l,y(Me)),Ee=Math.min(H.l+te,y(Me+10));$.push(`${Je.toFixed(1)},${A(we).toFixed(1)}`),$.push(`${Ee.toFixed(1)},${A(we).toFixed(1)}`)});const S=$.length?`<polyline class="cv-dy" points="${$.join(" ")}"/>`:"",M=$.length?`<polygon class="cv-dyfill" points="${H.l},${(H.t+D).toFixed(1)} ${$.join(" ")} ${(H.l+te).toFixed(1)},${(H.t+D).toFixed(1)}"/>`:"",W=r.filter(E=>E.luck&&typeof E.luck.score=="number").map(E=>({x:y(l(E.age)),y:A(l(E.luck.score)),y0:l(E.year),gz:E.ganzhi,tier:E.luck.tier,v:l(E.luck.score),age:l(E.age)})),ue=W.length>1?`<polyline class="cv-ln" points="${W.map(E=>`${E.x.toFixed(1)},${E.y.toFixed(1)}`).join(" ")}"/>`:"",fe={大吉:"var(--lu)",吉:"var(--lu)",平:"var(--muted)",忌:"var(--red)",大忌:"var(--red)"},ne=W.length?Math.min(...W.map(E=>E.y0)):null,de=W.map(E=>`<circle class="cv-dot${E.y0===ne?" now":""}" cx="${E.x.toFixed(1)}" cy="${E.y.toFixed(1)}" fill="${fe[E.tier]||"var(--muted)"}"><title>${a(`${E.y0}年(${E.age}岁)${E.gz} ${E.tier} ${E.v}`)}</title></circle>`).join(""),$e=`<line class="cv-ax zero" x1="${H.l}" y1="${A(0).toFixed(1)}" x2="${H.l+te}" y2="${A(0).toFixed(1)}"/><line class="cv-ax" x1="${H.l}" y1="${H.t}" x2="${H.l}" y2="${H.t+D}"/>`,Ce=j>60?10:5,_e=[];for(let E=Math.ceil(h/Ce)*Ce;E<=T;E+=Ce)_e.push(`<text class="cv-lbl age" x="${y(E).toFixed(1)}" y="${(H.t+D+13).toFixed(1)}" text-anchor="middle">${E}岁</text>`);const We=`<text class="cv-lbl" x="${(H.l-5).toFixed(1)}" y="${(A(2.4)+3).toFixed(1)}" text-anchor="end">吉</text><text class="cv-lbl" x="${(H.l-5).toFixed(1)}" y="${(A(0)+3).toFixed(1)}" text-anchor="end">平</text><text class="cv-lbl" x="${(H.l-5).toFixed(1)}" y="${(A(-1.8)+3).toFixed(1)}" text-anchor="end">忌</text>`,Se=i.slice().sort((E,ce)=>o(ce)-o(E)),_=Se[0],u=Se[Se.length-1],w=_&&o(_)>.55?`<text class="cv-lbl" x="${y(l(_.startAge)+5).toFixed(1)}" y="${(A(o(_))-5).toFixed(1)}" text-anchor="middle">▲${_.startAge}岁 ${_.luck.tier}</text>`:"",V=u&&o(u)<-.8?`<text class="cv-lbl" x="${y(l(u.startAge)+5).toFixed(1)}" y="${(A(o(u))+11).toFixed(1)}" text-anchor="middle">▼${u.startAge}岁 ${u.luck.tier}</text>`:"",Y=`<div class="cv-legend">
1578
1578
  <span><i style="background:var(--quan)"></i>大运(阶梯,一步十年)</span>
1579
1579
  <span><i style="background:var(--ke)"></i>流年(逐年折线)</span>
1580
1580
  <span>绿带=吉 灰带=平 红带=忌</span>
1581
1581
  </div>`,b=`<div class="cv-tip">曲线只呈现引擎已给出的行运评分(${d} ~ ${m}),不预测具体事件;档位与依据见下方「大运 / 流年」各节。悬停看逐年详情。</div>`;return`<div class="mp-curve">
1582
1582
  <div class="mp-curve-h"><b>人生运势曲线</b><span>${h}–${T} 岁 ${e.dayun.rule},${c} 岁起运${e.dayun.jiao&&e.dayun.jiao.at?`,交运 ${e.dayun.jiao.at}`:""}</span></div>
1583
1583
  <svg viewBox="0 0 ${z} ${q}" role="img" aria-label="人生运势曲线:${h} 到 ${T} 岁的大运与流年评分走势">
1584
- ${F}${$e}${M}${S}${me}${de}${_e.join("")}${We}${w}${V}
1584
+ ${F}${$e}${M}${S}${ue}${de}${_e.join("")}${We}${w}${V}
1585
1585
  </svg>
1586
1586
  ${Y}${b}
1587
- </div>`},n.trendChart=function(e){const i=e&&Array.isArray(e.points)?e.points:[];if(i.length<2)return"";const r=e&&Array.isArray(e.segments)?e.segments:[],l=_=>typeof _=="number"&&isFinite(_)?_:0,o=720,m=322,d={t:34,r:46,b:66,l:36},c=o-d.l-d.r,g=m-d.t-d.b,x=i.length,h=c/x,T=_=>d.l+(_+.5)*h,j=_=>d.t+g-Math.max(0,Math.min(100,_))/100*g,z=Math.max(1.1,Math.min(10,h*.62)),q=_=>l(_.score),H=d.t+g,te=H+20,D=22,A=`klclip${(()=>{let _=2166136261;const u=w=>{const V=String(w??"");for(let Y=0;Y<V.length;Y++)_^=V.charCodeAt(Y),_=Math.imul(_,16777619)};u(x),u(i[0]&&i[0].age),u(i[x-1]&&i[x-1].age);for(const w of i)u(w&&w.score);return(_>>>0).toString(36)})()}`,ie=r.map((_,u)=>{const w=Math.max(0,_.startAge-1),V=Math.min(x-1,_.endAge-1);if(V<w)return"";const Y=d.l+w*h,b=Math.max(.6,(V-w+1)*h),ue=u%2===1?`<rect class="kl-band" x="${Y.toFixed(1)}" y="${d.t}" width="${b.toFixed(1)}" height="${g}"/><rect class="kl-stripband" x="${Y.toFixed(1)}" y="${te}" width="${b.toFixed(1)}" height="${D}"/>`:"",Me=u===0?"":`<line class="kl-segline" x1="${Y.toFixed(1)}" y1="${d.t}" x2="${Y.toFixed(1)}" y2="${H}"/>`,we=Math.min(Math.max(d.l+(w+V+1)/2*h,d.l+22),d.l+c-22);return ue+Me+`<text class="kl-seg" x="${we.toFixed(1)}" y="${(te+15).toFixed(1)}" text-anchor="middle">${a(_.ganZhi)}</text>`}).join(""),F=[0,25,50,75,100].map(_=>`<line class="kl-grid${_===50?" mid":""}" x1="${d.l}" y1="${j(_).toFixed(1)}" x2="${d.l+c}" y2="${j(_).toFixed(1)}"/><text class="kl-lbl" x="${d.l-6}" y="${(j(_)+3).toFixed(1)}" text-anchor="end">${_}</text>`).join(""),U=i.map((_,u)=>{const w=_.kline||{},V=l(w.open),Y=l(w.close),b=Math.min(100,l(w.high)),E=Math.max(0,l(w.low)),ue=Y>=V,Me=j(V),we=j(Y),Je=Math.min(Me,we),Ee=Math.max(.8,Math.abs(Me-we)),Ct=T(u),ba=`${_.age}岁(${_.year}年 ${_.ganZhi})${Y}分${_.dayunGanZhi?` · ${_.dayunGanZhi}运`:""}`;return`<g class="kl-c${ue?" up":" down"}"><title>${a(ba)}</title><line x1="${Ct.toFixed(2)}" y1="${j(b).toFixed(1)}" x2="${Ct.toFixed(2)}" y2="${j(E).toFixed(1)}"/><rect x="${(Ct-z/2).toFixed(2)}" y="${Je.toFixed(1)}" width="${z.toFixed(2)}" height="${Ee.toFixed(1)}" rx="0.7"/></g>`}).join(""),$=_=>{const u=[];for(let w=0;w<x;w++){if(w+1<_)continue;let V=0;for(let Y=w+1-_;Y<=w;Y++)V+=q(i[Y]);u.push({i:w,v:V/_})}return u},S=_=>$(_).map((u,w)=>`${w?"L":"M"}${T(u.i).toFixed(1)} ${j(u.v).toFixed(1)}`).join(" "),M=(_,u)=>{const w=$(_);if(!w.length)return"";const V=w[w.length-1];return{cls:u,y:j(V.v),text:`<text class="kl-ma-lbl ${u}" x="${d.l+c+5}" y="${j(V.v).toFixed(1)}" text-anchor="start">${V.v.toFixed(0)}</text>`}},W=M(10,"m10"),me=M(5,"m5"),fe=(()=>{if(!me||!W)return`${W?W.text:""}${me?me.text:""}`;let _=me.y,u=W.y;if(Math.abs(_-u)<10){const w=Math.min(_,u),V=Math.max(_,u);_=w-6,u=V+6}return`<text class="kl-ma-lbl m10" x="${d.l+c+5}" y="${u.toFixed(1)}" text-anchor="start">${$(10).slice(-1)[0].v.toFixed(0)}</text><text class="kl-ma-lbl m5" x="${d.l+c+5}" y="${_.toFixed(1)}" text-anchor="start">${$(5).slice(-1)[0].v.toFixed(0)}</text>`})();let ne=i[0],de=i[0];for(const _ of i)q(_)>q(ne)&&(ne=_),q(_)<q(de)&&(de=_);const $e=(_,u,w)=>{const V=i.indexOf(_),Y=T(V),b=j(q(_)),E=Math.min(Math.max(Y,d.l+26),d.l+c-26),ue=u==="hi"?b-8<d.t+6?14:w:b+12>d.t+g-2?-8:w;return`<g class="kl-mark ${u}"><circle cx="${Y.toFixed(1)}" cy="${b.toFixed(1)}" r="2"/><circle class="ring" cx="${Y.toFixed(1)}" cy="${b.toFixed(1)}" r="4.6"/><text x="${E.toFixed(1)}" y="${(b+ue).toFixed(1)}" text-anchor="middle">${_.age}岁 ${q(_)}</text></g>`},Ce=x>60?10:5,_e=i.filter(_=>_.age%Ce===0).map(_=>`<text class="kl-lbl age" x="${T(i.indexOf(_)).toFixed(1)}" y="${(H+14).toFixed(1)}" text-anchor="middle">${_.age}</text>`).join(""),We=`<text class="kl-lbl axis" x="${d.l}" y="${(m-6).toFixed(1)}">年龄(岁)</text><text class="kl-lbl axis" x="${d.l+c}" y="${(m-6).toFixed(1)}" text-anchor="end">每岁一分 · 满分 100</text>`;return`<div class="mp-kline-fig">
1587
+ </div>`},n.trendChart=function(e){const i=e&&Array.isArray(e.points)?e.points:[];if(i.length<2)return"";const r=e&&Array.isArray(e.segments)?e.segments:[],l=_=>typeof _=="number"&&isFinite(_)?_:0,o=720,m=322,d={t:34,r:46,b:66,l:36},c=o-d.l-d.r,g=m-d.t-d.b,x=i.length,h=c/x,T=_=>d.l+(_+.5)*h,j=_=>d.t+g-Math.max(0,Math.min(100,_))/100*g,z=Math.max(1.1,Math.min(10,h*.62)),q=_=>l(_.score),H=d.t+g,te=H+20,D=22,A=`klclip${(()=>{let _=2166136261;const u=w=>{const V=String(w??"");for(let Y=0;Y<V.length;Y++)_^=V.charCodeAt(Y),_=Math.imul(_,16777619)};u(x),u(i[0]&&i[0].age),u(i[x-1]&&i[x-1].age);for(const w of i)u(w&&w.score);return(_>>>0).toString(36)})()}`,ie=r.map((_,u)=>{const w=Math.max(0,_.startAge-1),V=Math.min(x-1,_.endAge-1);if(V<w)return"";const Y=d.l+w*h,b=Math.max(.6,(V-w+1)*h),ce=u%2===1?`<rect class="kl-band" x="${Y.toFixed(1)}" y="${d.t}" width="${b.toFixed(1)}" height="${g}"/><rect class="kl-stripband" x="${Y.toFixed(1)}" y="${te}" width="${b.toFixed(1)}" height="${D}"/>`:"",Me=u===0?"":`<line class="kl-segline" x1="${Y.toFixed(1)}" y1="${d.t}" x2="${Y.toFixed(1)}" y2="${H}"/>`,we=Math.min(Math.max(d.l+(w+V+1)/2*h,d.l+22),d.l+c-22);return ce+Me+`<text class="kl-seg" x="${we.toFixed(1)}" y="${(te+15).toFixed(1)}" text-anchor="middle">${a(_.ganZhi)}</text>`}).join(""),F=[0,25,50,75,100].map(_=>`<line class="kl-grid${_===50?" mid":""}" x1="${d.l}" y1="${j(_).toFixed(1)}" x2="${d.l+c}" y2="${j(_).toFixed(1)}"/><text class="kl-lbl" x="${d.l-6}" y="${(j(_)+3).toFixed(1)}" text-anchor="end">${_}</text>`).join(""),U=i.map((_,u)=>{const w=_.kline||{},V=l(w.open),Y=l(w.close),b=Math.min(100,l(w.high)),E=Math.max(0,l(w.low)),ce=Y>=V,Me=j(V),we=j(Y),Je=Math.min(Me,we),Ee=Math.max(.8,Math.abs(Me-we)),Ct=T(u),ba=`${_.age}岁(${_.year}年 ${_.ganZhi})${Y}分${_.dayunGanZhi?` · ${_.dayunGanZhi}运`:""}`;return`<g class="kl-c${ce?" up":" down"}"><title>${a(ba)}</title><line x1="${Ct.toFixed(2)}" y1="${j(b).toFixed(1)}" x2="${Ct.toFixed(2)}" y2="${j(E).toFixed(1)}"/><rect x="${(Ct-z/2).toFixed(2)}" y="${Je.toFixed(1)}" width="${z.toFixed(2)}" height="${Ee.toFixed(1)}" rx="0.7"/></g>`}).join(""),$=_=>{const u=[];for(let w=0;w<x;w++){if(w+1<_)continue;let V=0;for(let Y=w+1-_;Y<=w;Y++)V+=q(i[Y]);u.push({i:w,v:V/_})}return u},S=_=>$(_).map((u,w)=>`${w?"L":"M"}${T(u.i).toFixed(1)} ${j(u.v).toFixed(1)}`).join(" "),M=(_,u)=>{const w=$(_);if(!w.length)return"";const V=w[w.length-1];return{cls:u,y:j(V.v),text:`<text class="kl-ma-lbl ${u}" x="${d.l+c+5}" y="${j(V.v).toFixed(1)}" text-anchor="start">${V.v.toFixed(0)}</text>`}},W=M(10,"m10"),ue=M(5,"m5"),fe=(()=>{if(!ue||!W)return`${W?W.text:""}${ue?ue.text:""}`;let _=ue.y,u=W.y;if(Math.abs(_-u)<10){const w=Math.min(_,u),V=Math.max(_,u);_=w-6,u=V+6}return`<text class="kl-ma-lbl m10" x="${d.l+c+5}" y="${u.toFixed(1)}" text-anchor="start">${$(10).slice(-1)[0].v.toFixed(0)}</text><text class="kl-ma-lbl m5" x="${d.l+c+5}" y="${_.toFixed(1)}" text-anchor="start">${$(5).slice(-1)[0].v.toFixed(0)}</text>`})();let ne=i[0],de=i[0];for(const _ of i)q(_)>q(ne)&&(ne=_),q(_)<q(de)&&(de=_);const $e=(_,u,w)=>{const V=i.indexOf(_),Y=T(V),b=j(q(_)),E=Math.min(Math.max(Y,d.l+26),d.l+c-26),ce=u==="hi"?b-8<d.t+6?14:w:b+12>d.t+g-2?-8:w;return`<g class="kl-mark ${u}"><circle cx="${Y.toFixed(1)}" cy="${b.toFixed(1)}" r="2"/><circle class="ring" cx="${Y.toFixed(1)}" cy="${b.toFixed(1)}" r="4.6"/><text x="${E.toFixed(1)}" y="${(b+ce).toFixed(1)}" text-anchor="middle">${_.age}岁 ${q(_)}</text></g>`},Ce=x>60?10:5,_e=i.filter(_=>_.age%Ce===0).map(_=>`<text class="kl-lbl age" x="${T(i.indexOf(_)).toFixed(1)}" y="${(H+14).toFixed(1)}" text-anchor="middle">${_.age}</text>`).join(""),We=`<text class="kl-lbl axis" x="${d.l}" y="${(m-6).toFixed(1)}">年龄(岁)</text><text class="kl-lbl axis" x="${d.l+c}" y="${(m-6).toFixed(1)}" text-anchor="end">每岁一分 · 满分 100</text>`;return`<div class="mp-kline-fig">
1588
1588
  <svg viewBox="0 0 ${o} ${m}" role="img" aria-label="人生K线:1 到 ${x} 岁的逐年评分蜡烛图">
1589
1589
  <defs><clipPath id="${A}"><rect x="${d.l}" y="${d.t}" width="${c}" height="${g}"/></clipPath></defs>
1590
1590
  ${ie}${F}
@@ -1645,10 +1645,10 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1645
1645
  <div class="pp-tl">喜 ${A.yongshen.favor.map(d).join("")} 忌 ${A.yongshen.avoid.map(d).join("")} <span class="pp-dim">${a(A.yongshen.method)}</span></div>
1646
1646
  <div class="pp-chips">${A.yongshen.favorTenGods.map(u=>`<span class="pp-chip ok">${a(u)}</span>`).join("")}${$}</div>
1647
1647
  ${(A.yongshen.disputed||[]).length?`<div class="pp-tl pp-dim">有争议:${A.yongshen.disputed.map(u=>`${a(u.element)}(扶抑为${a(u.favorRole)}·${a(u.favorVerb)},${a(u.climate)}盘调候忌${a(u.element)})`).join("、")} 保留在喜用,不列入忌</div>`:""}
1648
- <div class="pp-tl pp-dim">${a(A.yongshen.detail)}</div>`:"",M=e.climate||A.yongshen&&A.yongshen.climate||null,W=M?(()=>{const u=Math.max(2,Math.min(98,Math.round(((Number(M.temp)||0)+3)/6*100))),w=M.need?`<em>调候取</em><b>${a(M.need.stem+M.need.element)}</b>`:"<em>气候平和</em>",V=!!(A.yongshen&&Array.isArray(A.yongshen.disputed))&&A.yongshen.disputed.some(we=>we.element===M.avoidElement),Y=M.need?`<em>忌</em><b>${a(M.avoidElement)}</b>${V?'<span class="pp-dim">(有争议)</span>':""}`:"",b=(M.evidence||[]).length?`<em>依据</em><span>${a(M.evidence.join("、"))}</span>`:"",E=M.priority==="调候优先"?'<span class="mp-cli-p">调候优先</span>':'<span class="mp-cli-p">扶抑为主</span>',ue=e.frame&&e.frame.yongshen&&e.frame.yongshen.qt,Me=ue?`<div class="mp-qt">
1649
- <div class="mp-qt-h"><b>穷通宝鉴</b><span>${a(ue.label)}</span></div>
1650
- <div class="mp-qt-y"><em>用神</em>${ue.yong.map((we,Je)=>`<b class="${Je===0?"first":""}">${a(we)}</b>`).join("")}<em>首取 ${a(ue.primary)}</em></div>
1651
- <div class="mp-qt-q" title="${a(ue.quote)}">「${a(ue.quote)}」<span>第 ${ue.chapter} 章${ue.note?" · "+a(ue.note):""}</span></div>
1648
+ <div class="pp-tl pp-dim">${a(A.yongshen.detail)}</div>`:"",M=e.climate||A.yongshen&&A.yongshen.climate||null,W=M?(()=>{const u=Math.max(2,Math.min(98,Math.round(((Number(M.temp)||0)+3)/6*100))),w=M.need?`<em>调候取</em><b>${a(M.need.stem+M.need.element)}</b>`:"<em>气候平和</em>",V=!!(A.yongshen&&Array.isArray(A.yongshen.disputed))&&A.yongshen.disputed.some(we=>we.element===M.avoidElement),Y=M.need?`<em>忌</em><b>${a(M.avoidElement)}</b>${V?'<span class="pp-dim">(有争议)</span>':""}`:"",b=(M.evidence||[]).length?`<em>依据</em><span>${a(M.evidence.join("、"))}</span>`:"",E=M.priority==="调候优先"?'<span class="mp-cli-p">调候优先</span>':'<span class="mp-cli-p">扶抑为主</span>',ce=e.frame&&e.frame.yongshen&&e.frame.yongshen.qt,Me=ce?`<div class="mp-qt">
1649
+ <div class="mp-qt-h"><b>穷通宝鉴</b><span>${a(ce.label)}</span></div>
1650
+ <div class="mp-qt-y"><em>用神</em>${ce.yong.map((we,Je)=>`<b class="${Je===0?"first":""}">${a(we)}</b>`).join("")}<em>首取 ${a(ce.primary)}</em></div>
1651
+ <div class="mp-qt-q" title="${a(ce.quote)}">「${a(ce.quote)}」<span>第 ${ce.chapter} 章${ce.truncated?" · 首段更长,摘句下略":""}${ce.note?" · "+a(ce.note):""}</span></div>
1652
1652
  </div>`:"";return`<section class="mp-cli" aria-label="寒暖燥湿">
1653
1653
  <div class="mp-cli-h"><b>寒暖燥湿</b><span class="mp-cli-k">${a(M.label||"")}</span>${E}</div>
1654
1654
  <div class="mp-cli-bar" title="寒 ← → 热"><i style="left:${u}%"></i></div>
@@ -1656,7 +1656,7 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1656
1656
  <div class="mp-cli-row">${w}${Y}${b}</div>
1657
1657
  <div class="mp-cli-narr">${a(M.narration||"")}</div>
1658
1658
  ${Me}
1659
- </section>`})():"",me=A.godStats?`<div class="pp-chips">${Object.entries(A.godStats.groups).map(([u,w])=>`<span class="pp-chip">${u} ${w}</span>`).join("")}</div>`:"",fe=e.dayun.list.map(u=>{const w=u.luck||null;return`<span class="pp-chip ${w?ie(w.tier):""}" title="${a(`${u.fromDate?`${u.fromDate} 交运;`:""}${w?`${w.tier} ${w.score}|${(w.reasons||[]).join(";")}`:""}`)}">${u.startAge} ${u.ganzhi}${u.relations&&u.relations.length?` <i class="pp-drel">${u.relations.join("")}</i>`:""}${w?` ${w.tier}`:""}</span>`}).join(""),ne=e.liunian&&e.liunian.length?`<div class="pp-chips">${e.liunian.slice(0,8).map(u=>{const w=u.luck||null,V=u.suiyun&&Array.isArray(u.suiyun.signals)?u.suiyun.signals:[],Y=V.length?`|${V.map(b=>b.detail).join(";")}`:"";return`<span class="pp-chip ${w?ie(w.tier):""}" title="${a(w?`${w.tier} ${w.score}|${(w.reasons||[]).join(";")}${Y}`:Y.replace(/^|/,""))}">${u.year} ${u.ganzhi}${w?` ${w.tier}`:""}</span>`}).join("")}</div>`:"",de=(e.liunian||[]).filter(u=>u.suiyun&&Array.isArray(u.suiyun.signals)&&u.suiyun.signals.length),$e=e.suiyunClassic,Ce=$e?`<div class="pp-dim pp-sy-src" title="${a($e.plain||"")}">《${a($e.bookName||"")}·${a($e.chapter||"")}》「${a($e.quote||"")}」</div>`:"",_e=de.length?`<div class="pp-tl pp-dim">岁运提示(只标干支变动,不判吉凶)</div><div class="pp-chips">${de.map(u=>`<span class="pp-chip" title="${a(`${u.suiyun.signals.map(w=>w.detail).join(";")}|${u.suiyun.note||""}`)}">${u.year} ${a(u.suiyun.signals.map(w=>`${w.type}${(w.type.startsWith("流年")||w.type.startsWith("大运"))&&w.target?`·${w.target}`:""}`).join("/"))}</span>`).join("")}</div>${Ce}`:"",We=e.strength?`<div class="pp-str">日主强弱:<b>${e.strength.level}</b>${e.strength.score} <span class="pp-dim">${e.strength.detail}</span></div>`:"",Se=e.shensha&&e.shensha.groups||[],_=Se.length?`
1659
+ </section>`})():"",ue=A.godStats?`<div class="pp-chips">${Object.entries(A.godStats.groups).map(([u,w])=>`<span class="pp-chip">${u} ${w}</span>`).join("")}</div>`:"",fe=e.dayun.list.map(u=>{const w=u.luck||null;return`<span class="pp-chip ${w?ie(w.tier):""}" title="${a(`${u.fromDate?`${u.fromDate} 交运;`:""}${w?`${w.tier} ${w.score}|${(w.reasons||[]).join(";")}`:""}`)}">${u.startAge} ${u.ganzhi}${u.relations&&u.relations.length?` <i class="pp-drel">${u.relations.join("")}</i>`:""}${w?` ${w.tier}`:""}</span>`}).join(""),ne=e.liunian&&e.liunian.length?`<div class="pp-chips">${e.liunian.slice(0,8).map(u=>{const w=u.luck||null,V=u.suiyun&&Array.isArray(u.suiyun.signals)?u.suiyun.signals:[],Y=V.length?`|${V.map(b=>b.detail).join(";")}`:"";return`<span class="pp-chip ${w?ie(w.tier):""}" title="${a(w?`${w.tier} ${w.score}|${(w.reasons||[]).join(";")}${Y}`:Y.replace(/^|/,""))}">${u.year} ${u.ganzhi}${w?` ${w.tier}`:""}</span>`}).join("")}</div>`:"",de=(e.liunian||[]).filter(u=>u.suiyun&&Array.isArray(u.suiyun.signals)&&u.suiyun.signals.length),$e=e.suiyunClassic,Ce=$e?`<div class="pp-dim pp-sy-src" title="${a($e.plain||"")}">《${a($e.bookName||"")}·${a($e.chapter||"")}》「${a($e.quote||"")}」</div>`:"",_e=de.length?`<div class="pp-tl pp-dim">岁运提示(只标干支变动,不判吉凶)</div><div class="pp-chips">${de.map(u=>`<span class="pp-chip" title="${a(`${u.suiyun.signals.map(w=>w.detail).join(";")}|${u.suiyun.note||""}`)}">${u.year} ${a(u.suiyun.signals.map(w=>`${w.type}${(w.type.startsWith("流年")||w.type.startsWith("大运"))&&w.target?`·${w.target}`:""}`).join("/"))}</span>`).join("")}</div>${Ce}`:"",We=e.strength?`<div class="pp-str">日主强弱:<b>${e.strength.level}</b>${e.strength.score} <span class="pp-dim">${e.strength.detail}</span></div>`:"",Se=e.shensha&&e.shensha.groups||[],_=Se.length?`
1660
1660
  <div class="pp-ssx">
1661
1661
  <div class="ssx-h"><b>神煞全览</b><span>共 ${e.shensha.count} 见 · ${Se.length} 类 · 悬停看查法</span></div>
1662
1662
  ${Se.map(u=>`<div class="pp-ssg"><span class="ssg-gt">${u.cat}</span><span class="ssg-gi">${u.items.map(w=>`<span class="pp-ssi ${w.luck||"neutral"}" title="${a(`${w.via}查${w.target} | ${w.rule}`)}">${w.name}<em>${w.pillars.map(V=>r[V]||"").join("")}</em></span>`).join("")}</span></div>`).join("")}
@@ -1678,7 +1678,7 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
1678
1678
  <div class="mp-cl-p">${a(u.plain)}</div>
1679
1679
  </div>`).join("")}
1680
1680
  </section>`:""}
1681
- ${F("五行与十神",`<div class="pp-chips">${y}</div>${me}`)}
1681
+ ${F("五行与十神",`<div class="pp-chips">${y}</div>${ue}`)}
1682
1682
  ${F("大运",`${n.curveHTML(e)}<div class="pp-chips">${fe}</div>`)}
1683
1683
  ${ne?F("流年",ne+_e):""}
1684
1684
  ${e.palaces?F("胎命身",`<div class="pp-chips">
@@ -2110,8 +2110,8 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.62.2",factory(Pt){
2110
2110
  @media (prefers-reduced-motion:reduce){
2111
2111
  *,*::before,*::after{transition-duration:.001ms!important;animation-duration:.001ms!important}
2112
2112
  }
2113
- `,{useState:L,useEffect:lt,useRef:Ei}=yt,_a=s=>String(s).padStart(2,"0");function Hi(s){const n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(s||""));if(!n)return!1;const k=Number(n[1]),I=Number(n[2]),X=Number(n[3]);if(I<1||I>12||X<1)return!1;const re=[31,k%4===0&&k%100!==0||k%400===0?29:28,31,30,31,30,31,31,30,31,30,31];return X<=re[I-1]}function Ea(s){const n=/^(\d{4})\s*[年./-]\s*(\d{1,2})\s*[月./-]\s*(\d{1,2})\s*日?$/.exec(String(s||"").trim());if(!n)return"";const k=`${n[1]}-${_a(n[2])}-${_a(n[3])}`;return Hi(k)?k:""}function Oi(s){const n=String(s||"").trim();if(/^\d{0,4}(-\d{0,2}){0,2}$/.test(n))return n;if(/[年月日/.]/.test(n)){const I=Ea(n);if(I)return I}const k=n.replace(/\D/g,"").slice(0,8);return k.length<=4?k:k.length<=6?`${k.slice(0,4)}-${k.slice(4)}`:`${k.slice(0,4)}-${k.slice(4,6)}-${k.slice(6)}`}function ma(s){const n=s.value||"",[k,I]=L(n),X=Ei(n);lt(()=>{X.current=n,I(n)},[n]);const ae=()=>{const re=k.trim();if(!re){I(X.current),s.onInvalid&&s.onInvalid("");return}const se=Ea(re);if(se){X.current=se,I(se),se!==n&&s.onChange(se);return}I(X.current),s.onInvalid&&s.onInvalid(re)};return p("input",{className:"mp-input",type:"text",inputMode:"numeric",autoComplete:"off",placeholder:"年-月-日,如 1990-05-12",value:k,onChange:re=>{I(Oi(re.target.value))},onBlur:ae,onKeyDown:re=>{re.key==="Enter"&&(re.preventDefault(),ae())}})}const Dt=4,Re=12;let Rt=null;function It(){if(Rt)return Rt;let s=null;try{s=K.compute({system:"mbti"})}catch{s=null}const n=s&&s.questions||[];return n.length?(Rt={total:s&&s.total||n.length,questions:n,scale:s&&s.scale||{}},Rt):{total:0,questions:[],scale:{}}}function Fi(s){const{answers:n,page:k,onPick:I,onPage:X,onSubmit:ae,onClear:re}=s,se=It(),a=Math.max(1,Math.ceil(se.total/Dt)),ce=k*Dt,Z=se.questions.slice(ce,ce+Dt),le=n.filter(ee=>ee!=null).length,ge=se.total?Math.round(le/se.total*100):0,ve=k>=a-1,Q=le>=Re;return p("div",{className:"mp-quiz"},p("div",{className:"mp-quiz-top"},p("div",{className:"mp-quiz-bar","aria-hidden":"true"},p("i",{style:{width:ge+"%"}})),p("span",{className:"mp-quiz-count"},`第 ${k+1} / ${a} 页 · 已答 ${le} / ${se.total}`)),p("div",{className:"mp-quiz-list"},Z.map((ee,G)=>{const B=ce+G;return p("div",{key:ee.id||B,className:"mp-quiz-q"},p("div",{className:"mp-quiz-qt"},p("b",null,String(B+1).padStart(2,"0")),p("span",null,ee.text)),p("div",{className:"mp-quiz-opts",role:"radiogroup","aria-label":`第 ${B+1} 题`},[1,2,3,4,5].map(he=>p("label",{key:he,className:"mp-quiz-o"+(n[B]===he?" on":"")},p("input",{type:"radio",name:`mpmbq${B}`,value:String(he),checked:n[B]===he,onChange:()=>I(B,he)}),p("b",null,String(he)),p("span",null,se.scale[he]||"")))))})),p("div",{className:"mp-quiz-nav"},p("button",{className:"mp-quiz-btn",disabled:k<=0,onClick:()=>X(-1)},"上一页"),ve?null:p("button",{className:"mp-quiz-btn",onClick:()=>X(1)},"下一页"),p("button",{className:"mp-quiz-btn primary",disabled:!Q,onClick:ae},"看结果"),p("button",{className:"mp-quiz-btn",onClick:re},"清空"),p("span",{className:"mp-quiz-hint"},Q?`已够 ${Re} 题,可以看结果;答完 ${se.total} 题会更准。`:`答满 ${Re} 题可先看结果(还差 ${Re-le} 题)。`)))}class Pi extends(yt.Component||Object){constructor(n){super(n),this.state={err:null}}static getDerivedStateFromError(n){return{err:n}}componentDidCatch(n,k){console.error("[metaphysics] 面板渲染异常",n,k)}render(){if(!this.state.err)return this.props.children;const n=this.state.err,k=String(n&&n.stack||"").split(`
2113
+ `,{useState:L,useEffect:lt,useRef:Ei}=yt,_a=s=>String(s).padStart(2,"0");function Hi(s){const n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(s||""));if(!n)return!1;const k=Number(n[1]),I=Number(n[2]),X=Number(n[3]);if(I<1||I>12||X<1)return!1;const re=[31,k%4===0&&k%100!==0||k%400===0?29:28,31,30,31,30,31,31,30,31,30,31];return X<=re[I-1]}function Ea(s){const n=/^(\d{4})\s*[年./-]\s*(\d{1,2})\s*[月./-]\s*(\d{1,2})\s*日?$/.exec(String(s||"").trim());if(!n)return"";const k=`${n[1]}-${_a(n[2])}-${_a(n[3])}`;return Hi(k)?k:""}function Oi(s){const n=String(s||"").trim();if(/^\d{0,4}(-\d{0,2}){0,2}$/.test(n))return n;if(/[年月日/.]/.test(n)){const I=Ea(n);if(I)return I}const k=n.replace(/\D/g,"").slice(0,8);return k.length<=4?k:k.length<=6?`${k.slice(0,4)}-${k.slice(4)}`:`${k.slice(0,4)}-${k.slice(4,6)}-${k.slice(6)}`}function ma(s){const n=s.value||"",[k,I]=L(n),X=Ei(n);lt(()=>{X.current=n,I(n)},[n]);const ae=()=>{const re=k.trim();if(!re){I(X.current),s.onInvalid&&s.onInvalid("");return}const se=Ea(re);if(se){X.current=se,I(se),se!==n&&s.onChange(se);return}I(X.current),s.onInvalid&&s.onInvalid(re)};return p("input",{className:"mp-input",type:"text",inputMode:"numeric",autoComplete:"off",placeholder:"年-月-日,如 1990-05-12",value:k,onChange:re=>{I(Oi(re.target.value))},onBlur:ae,onKeyDown:re=>{re.key==="Enter"&&(re.preventDefault(),ae())}})}const Dt=4,Re=12;let Rt=null;function It(){if(Rt)return Rt;let s=null;try{s=K.compute({system:"mbti"})}catch{s=null}const n=s&&s.questions||[];return n.length?(Rt={total:s&&s.total||n.length,questions:n,scale:s&&s.scale||{}},Rt):{total:0,questions:[],scale:{}}}function Fi(s){const{answers:n,page:k,onPick:I,onPage:X,onSubmit:ae,onClear:re}=s,se=It(),a=Math.max(1,Math.ceil(se.total/Dt)),me=k*Dt,Z=se.questions.slice(me,me+Dt),le=n.filter(ee=>ee!=null).length,ge=se.total?Math.round(le/se.total*100):0,ve=k>=a-1,Q=le>=Re;return p("div",{className:"mp-quiz"},p("div",{className:"mp-quiz-top"},p("div",{className:"mp-quiz-bar","aria-hidden":"true"},p("i",{style:{width:ge+"%"}})),p("span",{className:"mp-quiz-count"},`第 ${k+1} / ${a} 页 · 已答 ${le} / ${se.total}`)),p("div",{className:"mp-quiz-list"},Z.map((ee,G)=>{const B=me+G;return p("div",{key:ee.id||B,className:"mp-quiz-q"},p("div",{className:"mp-quiz-qt"},p("b",null,String(B+1).padStart(2,"0")),p("span",null,ee.text)),p("div",{className:"mp-quiz-opts",role:"radiogroup","aria-label":`第 ${B+1} 题`},[1,2,3,4,5].map(he=>p("label",{key:he,className:"mp-quiz-o"+(n[B]===he?" on":"")},p("input",{type:"radio",name:`mpmbq${B}`,value:String(he),checked:n[B]===he,onChange:()=>I(B,he)}),p("b",null,String(he)),p("span",null,se.scale[he]||"")))))})),p("div",{className:"mp-quiz-nav"},p("button",{className:"mp-quiz-btn",disabled:k<=0,onClick:()=>X(-1)},"上一页"),ve?null:p("button",{className:"mp-quiz-btn",onClick:()=>X(1)},"下一页"),p("button",{className:"mp-quiz-btn primary",disabled:!Q,onClick:ae},"看结果"),p("button",{className:"mp-quiz-btn",onClick:re},"清空"),p("span",{className:"mp-quiz-hint"},Q?`已够 ${Re} 题,可以看结果;答完 ${se.total} 题会更准。`:`答满 ${Re} 题可先看结果(还差 ${Re-le} 题)。`)))}class Pi extends(yt.Component||Object){constructor(n){super(n),this.state={err:null}}static getDerivedStateFromError(n){return{err:n}}componentDidCatch(n,k){console.error("[metaphysics] 面板渲染异常",n,k)}render(){if(!this.state.err)return this.props.children;const n=this.state.err,k=String(n&&n.stack||"").split(`
2114
2114
  `).slice(0,14).join(`
2115
2115
  `);return p("div",{className:"mp-wrap"},p("div",{className:"mp-panel"},p("div",{className:"mp-lbl"},"命理面板渲染出错——把下面这段发给我"),p("pre",{style:{whiteSpace:"pre-wrap",fontSize:12,lineHeight:1.5,maxHeight:320,overflow:"auto",margin:"8px 0"}},String(n&&n.message||n)+`
2116
2116
 
2117
- `+k),p("div",{className:"mp-lbl"},"环境:__PP "+typeof R+" · Engine "+typeof window.Engine+" · React "+typeof yt+" · 版本 "+(typeof R=="object"&&R&&(window.__MP_VER||"?"))+((window.__MP_UNRELEASED||[]).length?" · 未发版改动 "+window.__MP_UNRELEASED.length+" 项":""))))}}function Di(s){const n=s&&s.size?s.size:20,k=s&&s.active;return p("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.6,strokeLinecap:"round","aria-hidden":!0,style:{opacity:k?1:.72}},p("circle",{cx:12,cy:12,r:8.2}),p("path",{d:"M12 3.8a4.1 4.1 0 0 1 0 8.2 4.1 4.1 0 0 0 0 8.2"}),p("circle",{cx:12,cy:8,r:1.1,fill:"currentColor",stroke:"none"}),p("circle",{cx:12,cy:16,r:1.1,fill:"currentColor",stroke:"none"}))}const Ie=[{k:"ziwei",label:"紫微",timeLabel:"出生时刻",hint:"紫微斗数需要出生日期、时刻与性别;出生地只影响真太阳时修正。"},{k:"bazi",label:"八字",timeLabel:"出生时刻",hint:"四柱八字按节气与真太阳时定时柱,出生地越准,时柱越稳。"},{k:"liuyao",label:"六爻",timeLabel:"起卦时刻",hint:"六爻不需要出生时间:只用起卦当下的日辰定六神、月建定旺衰,卦由摇出。"},{k:"meihua",label:"梅花",timeLabel:"起卦时刻",hint:"梅花用起卦时刻的年月日时数成卦,也可直接给两个数字起卦;与出生时间无关。"},{k:"daliuren",label:"六壬",timeLabel:"起卦时刻",hint:"大六壬用起卦时刻的日干支、时支与月将起天地盘;同样与出生时间无关。"},{k:"qimen",label:"奇门",timeLabel:"起局时刻",hint:"奇门时家转盘:用起局时刻定节气、三元与局数;换局规则决定符头与节气如何对齐。"},{k:"hepan",label:"合盘",timeLabel:"你的出生时刻",hint:"合盘按「日主 + 夫妻宫 + 五行互补」看两个人的相处与互补,需要双方出生信息。"},{k:"tarot",label:"塔罗",timeLabel:"",hint:"塔罗不看时间,只记录抽牌时刻与你的提问。"},{k:"almanac",label:"黄历",timeLabel:"",hint:"黄历按公历日期查农历、干支、宜忌、时辰吉凶、二十八宿与吉神方位;只做本地计算。"},{k:"convert",label:"农历",timeLabel:"",hint:"公农历互转:公历生日可反查农历;只知道农历生日时,可转成公历再排盘。"},{k:"zeri",label:"择日",timeLabel:"",hint:"择日把区间内每天的建除宜忌与事项适配打分排序,并按属相排除冲煞日。"},{k:"chenggu",label:"称骨",timeLabel:"出生时刻",hint:"称骨按农历年、月、日、时的骨重求和;时辰必填。"},{k:"xiaoliuren",label:"小六壬",timeLabel:"起课时刻",hint:"小六壬用农历月/日/时掐指,也可用三个随机数起课。"},{k:"star",label:"星座",timeLabel:"",hint:"星座按公历日期给出太阳星座与当日基调;同日同星座结果固定。"},{k:"numerology",label:"生命数字",timeLabel:"",hint:"生命数字按公历生日归约出生命路径数、生日数与态度数。"},{k:"mbti",label:"人格",timeLabel:"",hint:"十六型人格是 24 道自我报告题的 MBTI 风格测算:4 题一页,按 1–5 打分,答满 12 题即可看结果;只作自我参照,不是官方量表。"},{k:"trend",label:"人生K线",timeLabel:"出生时刻",hint:"人生 K 线按大运与流年十神给逐年运势分,画成走势图。"},{k:"fengshui",label:"风水",timeLabel:"",hint:"风水看八宅命卦、大游年四吉四凶与流年九宫飞星;也可按坐向看门主灶倾向,或按运与坐向排玄空下卦盘。"},{k:"name",label:"起名",timeLabel:"",hint:"起名按八字喜用匹配字库五行,可评估现有名字或生成候选名。"}];function dt(s){return String(s).padStart(2,"0")}const ua=["almanac","convert","zeri","chenggu","xiaoliuren","star","numerology","trend","fengshui","name"],Ri=Array.isArray(window.__MPGroups)?window.__MPGroups:[],Ha="mp.recent.tabs",Oa="mp.first.view",Fa=3;function Pa(s){try{return JSON.parse(window.localStorage.getItem(s)||"null")}catch{return null}}function Da(s,n){try{window.localStorage.setItem(s,JSON.stringify(n))}catch{}}function Ii(s){const n=new Date(s);if(Number.isNaN(n.getTime()))return"";const k=X=>new Date(X.getFullYear(),X.getMonth(),X.getDate()).getTime(),I=Math.round((k(new Date)-k(n))/864e5);return I<=0?"今天":I===1?"昨天":`${dt(n.getMonth()+1)}-${dt(n.getDate())}`}function ga(){const s=new Date;return{date:`${s.getFullYear()}-${dt(s.getMonth()+1)}-${dt(s.getDate())}`,time:`${dt(s.getHours())}:${dt(s.getMinutes())}`}}const Gi={ziwei:"birth",bazi:"birth",hepan:"birth",liuyao:"cast",meihua:"cast",daliuren:"cast",qimen:"cast",tarot:"none",almanac:"date",zeri:"date",star:"date",numerology:"date",convert:"date",chenggu:"birth",trend:"birth",fengshui:"birth",name:"birth",xiaoliuren:"cast",mbti:"none"},Ra={date:"1990-05-12",time:"14:30"},fa=s=>Gi[s]||"none",qe=window.__MPCore||{},Oe=qe.needAsk||(s=>!1),oe={ref:null,seats:[],seatOk:{},keys:"",injectType:"",spec:"",errs:[],regs:0,mounted:0},Qe={r:null,q:"",it:null};let Ge="";function Ia(){const s=[];return s.push("inputActions "+(oe.ref?"已拿到":"未拿到")),s.push("渲染 "+oe.mounted+" 次"),s.push("注册 "+oe.regs+" 次"),s.push("inject "+(oe.injectType||"?")),s.push("槽位 "+(oe.spec||"?")),oe.errs.length&&s.push("错误:"+oe.errs.join(" / ")),"桥自检:"+s.join(";")}function Ga(s){if(oe.errs.length>=3)return;const n=s&&s.message?String(s.message):String(s);oe.errs.push(n.slice(0,90))}function Bi(s){if(!s)return null;const n=s.inputActions;if(n&&typeof n.setDraft=="function"&&typeof n.submit=="function")return n;const k=s.actions&&s.actions.input;return k&&typeof k.setDraft=="function"&&typeof k.submit=="function"?k:null}function Ba(s,n){const k=Bi(s);return lt(()=>{if(oe.seats.indexOf(n)<0&&oe.seats.push(n),oe.keys=s?Object.keys(s).join(","):"",k){oe.ref=k;try{window.__MPComposer=k}catch{}}return()=>{oe.ref===k&&(oe.ref=null)}},[k,n]),k}function Zi(){const s=Qe.r;if(!s)return"";try{const n=K.askPrompt?K.askPrompt(s,{question:Qe.q,interpret:Qe.it}):null;return n&&n.text||String(s.summary||"")}catch{return String(s.summary||"")}}function Za(s){return oe.mounted+=1,Ba(s,"input.right")?p("button",{type:"button",className:"mp-chip ok",title:Qe.r?"把上一张盘的摘要和问题发进对话窗":"先在侧栏「命理」里排一张盘",onClick:()=>{const k=Zi();k&&Ka(k)}},"命理·问"):p("span",{className:"mp-chip warn",title:"命理:已占住输入框槽位,但没拿到 inputActions;把这句话告诉作者"},"命理·未就绪")}function Ua(s){return oe.mounted+=1,Ba(s,"composer.dock"),null}function Ka(s){let n=oe.ref;if(!n)try{n=window.__MPComposer||null}catch{n=null}return!n||typeof n.setDraft!="function"||typeof n.submit!="function"?!1:(n.setDraft(s),n.submit(),!0)}function Ui(){const[s,n]=L("ziwei"),[k,I]=L("1990-05-12"),[X,ae]=L("14:30"),[re,se]=L(!1),[a,ce]=L("female"),[Z,le]=L(""),[ge,ve]=L("1992-08-15"),[Q,ee]=L("10:00"),[G,B]=L("female"),[he,ct]=L(""),[et,Be]=L("bazi"),[Te,mt]=L(!1),[Ze,wt]=L("1990-01-01"),[kt,zt]=L("12:00"),[jt,qt]=L("male"),[ut,Gt]=L(""),[St,Bt]=L("chaibu"),[Ue,Ke]=L(!0),[Fe,Ye]=L(!0),[Mt,Zt]=L("same-day"),[Nt,ha]=L(!1),[je,gt]=L(""),[Ut,be]=L(""),[Kt,At]=L(null),[ft,Yt]=L({}),[tt,Vt]=L(null),[at,Xt]=L([{year:"2019",kind:"career"},{year:"2022",kind:"love"}]),[Ve,ye]=L(null),[Xe,xt]=L("开业"),[it,Lt]=L("30"),[ht,Wt]=L(""),[Tt,e]=L(""),[i,r]=L("solar2lunar"),[l,o]=L(""),[m,d]=L(!1),[c,g]=L("time"),[x,h]=L(""),[T,j]=L(""),[z,q]=L(""),[H,te]=L(()=>new Array(It().total).fill(null)),[D,y]=L(0),[A,ie]=L("60"),[F,U]=L("natal"),[$,S]=L("9"),[M,W]=L("子"),[me,fe]=L("午"),[ne,de]=L("assess"),[$e,Ce]=L("李"),[_e,We]=L(""),[Se,_]=L("6"),[u,w]=L(!1),[V,Y]=L(""),[b,E]=L(null),[ue,Me]=L(null),[we,Je]=L(()=>Li()),[Ee,Ct]=L(()=>Pa(Oa)==="flat"?"flat":"group"),[ba,Xi]=L(()=>{const t=Pa(Ha);return Array.isArray(t)?t:[]}),[Wi,Ji]=L({}),[va,Va]=L(null),[Xa,Jt]=L(()=>R.profilesLoad()),[_t,Qt]=L(null),[Wa,Ja]=L(""),[ea,Pe]=L(""),[Qa,Ne]=L(""),[Qi,ta]=L(!1),[ya,ei]=L("3"),[bt,$a]=L(""),[nt,ti]=L("general");function wa(){return je.trim()||(b&&Oe(b.kind)?String(bt||"").trim():"")}lt(()=>{b&&b.r&&(Qe.r=b.r,Qe.q=wa(),Qe.it=b.it||null)},[b,je,bt]);const[ai,en]=L(null),[tn,aa]=L(!1),[st,ii]=L("time"),[ia,ni]=L(""),[na,si]=L(""),[sa,oi]=L(""),[an,ot]=L(""),[ka,oa]=L({birth:null,cast:null}),nn=Ie.find(t=>t.k===s)||Ie[0],Et=s==="bazi"||s==="ziwei"||s==="hepan"||s==="chenggu"||s==="trend"||s==="fengshui"||s==="name",Ae=fa(s),ri=!(s==="meihua"&&st==="number"),pi=s!=="tarot"&&s!=="mbti"&&ri,li=pi&&Ae!=="date",Gn=li,ke=async(t,f,C,O)=>{const v=t||s,pe=C||st,xe=v==="bazi"||v==="trend",De=O&&typeof O.hourUnknown=="boolean"?O.hourUnknown:re,ze=f||(xe&&De?{date:k,time:"12:00"}:{date:k,time:X}),Le=O&&O.gender?O.gender:a,rt=O&&typeof O.address=="string"?O.address:Z,Ht=O&&typeof O.trueSolar=="boolean"?O.trueSolar:Ue,Ot=O&&typeof O.lateZi=="boolean"?O.lateZi:Fe,yi=O&&typeof O.lines=="string"?O.lines:V,pa=O&&typeof O.question=="string"?O.question:bt,$i=$t(),wi=++He,Ft=()=>wi!==He;Me(null),Ne("");try{let pt=0,ki=null;ta(!0);try{await ca(v);const P=window.__MP_LAST_LOAD;pt=P&&typeof P.ms=="number"?P.ms:$t()-$i,ki=P&&typeof P.cached=="boolean"?P.cached:null}catch(P){if(Ft())return;Pe(P&&P.message?P.message:String(P)),E(null);return}finally{Ft()||ta(!1)}if(Ft())return;const zi=`${ze.date}T${ze.time}`,N={system:v};if(N.shadow=v!=="mbti",N.trace=v==="liuyao"||v==="bazi"||v==="ziwei"||v==="qimen"||v==="daliuren",v!=="tarot"&&(N.datetime=zi),v==="bazi"||v==="ziwei"||v==="hepan"||v==="trend"){if(N.gender=Le,N.trueSolar=Ht,rt.trim()){N.address=rt.trim();try{const P=await K.geocodeAddress(N.address,{online:u});P&&typeof P.lon=="number"&&(N.longitude=P.lon,N.geo=P)}catch(P){console.error("[metaphysics] 地址解析失败,退回内置表",P)}if(Ft())return}(v==="bazi"||v==="ziwei")&&(N.cross=Nt),N.lateZi=Ot,xe&&De&&(N.hourUnknown=!0)}if(v==="liuyao"){const P=qe.parseLines(yi);P.lines?N.lines=P.lines:P.warning&&Ne(P.warning)}if(v==="qimen"&&(N.juMethod=St,N.lateZiHourMode=Mt,N.direction=nt),v==="bazi"&&(N.verifyPast=6),v==="zeri"){N.startDate=ze.date,N.task=Xe,N.days=Number(it)||30,ht&&(N.shengXiao=ht);const P=Tt.split(/[,,、\s]+/).filter(Boolean);P.length&&(N.candidates=P)}if(v==="xiaoliuren")if(N.mode=c,c==="number")N.num1=Number(x)||void 0,N.num2=Number(T)||void 0,N.num3=Number(z)||void 0;else{N.date=ze.date;const P=Number(String(ze.time).split(":")[0]);N.hour=Number.isFinite(P)?P:12}if(v==="mbti"){delete N.datetime;const P=H.slice();for(;P.length&&P[P.length-1]==null;)P.pop();P.length&&(N.answers=P)}if(v==="trend"&&xe&&De&&(N.hourUnknown=!0),v==="trend"&&(N.toAge=Number(A)||60),v==="fengshui"&&(N.action=F,F==="natal"?N.gender=Le:(N.sitting=M,N.facing=me,delete N.datetime,F==="xuankong"&&(N.period=Number($)||9))),v==="name"&&(N.action=ne,N.surname=$e.trim(),ne==="generate"?(N.gender=Le,N.limit=Number(Se)||6,N.trueSolar=Ht,N.lateZi=Ot):(N.givenName=_e.trim(),(!ze.date||!ze.time)&&delete N.datetime)),v==="convert")if(N.system="convert",i==="lunar2solar"){const P=/^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(String(l).trim());if(!P){Pe("农历转公历请按「农历年-月-日」填写,例如 2026-9-17;闰月单独勾选。");return}N.mode="lunar2solar",N.lunarYear=Number(P[1]),N.lunarMonth=Number(P[2]),N.lunarDay=Number(P[3]),N.isLeapMonth=m,delete N.datetime}else N.mode="solar2lunar";if(v==="tarot"&&(N.count=Number(ya)),v==="hepan"&&(N.chart=et,N.partner={datetime:`${ge}T${Q}`,gender:G,address:he.trim()||void 0,trueSolar:Ue},Te&&(N.partner2={datetime:`${Ze}T${kt}`,gender:jt,address:ut.trim()||void 0,trueSolar:Ue})),Oe(v)){if(!pa.trim()){Pe("请先填写「所问之事」——一句话即可,例如:今年是否适合换工作?"),aa(!0),E(null);return}aa(!1),N.question=pa.trim(),v==="liuyao"&&(N.direction=nt)}if(v==="meihua"&&(N.mode=pe,pe==="number")){if(ia.trim()===""||na.trim()===""){Pe("数字起卦需要填两个数(第一个数定上卦、第二个数定下卦)。"),E(null);return}if(N.upper=Number(ia),N.lower=Number(na),!Number.isFinite(N.upper)||!Number.isFinite(N.lower)){Pe("两个数都要是数字,例如 17 和 29。"),E(null);return}sa!==""&&(N.changing=Number(sa))}const On=$t();v==="trend"&&!N.asOf&&qe.todayStamp&&(N.asOf=qe.todayStamp());const vt=K.compute(N),Fn=$t()-On;let ja=null;try{ja=R.shadowTrack?R.shadowTrack(vt):null}catch{ja=null}let qa=null;if(v==="bazi")try{qa=K.compute({system:"trend",datetime:zi,gender:Le,toAge:100,trueSolar:Ht,lateZi:Ot,...qe.todayStamp?{asOf:N.asOf||qe.todayStamp()}:{},...N.dst!==void 0?{dst:N.dst}:{},...N.address?{address:N.address}:{},...typeof N.longitude=="number"?{longitude:N.longitude}:{},...N.geo?{geo:N.geo}:{}})}catch{qa=null}let Sa=null;if(K.caliberCompare)try{Sa=K.caliberCompare(N)}catch{Sa=null}const Pn=Oe(v)||v==="qimen"?{question:Oe(v)?pa.trim():"",direction:nt}:void 0,la=K.interpret?K.interpret(vt,Pn):null;la&&vt.cross&&K.crossSection&&(la.sections=[...la.sections||[],K.crossSection(vt.cross)]);const Dn=fa(v)==="cast"&&(v!=="meihua"||pe==="time");E({kind:v,r:vt,it:la,at:ze,timed:Dn,trend:qa,caliber:Sa,shadowDiff:ja,gender:Le,address:rt,trueSolar:Ht,lateZi:Ot});const ji=P=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>P>1?ji(P-1):qi()):setTimeout(qi,0)},qi=()=>{wi===He&&Me({engineMs:pt,computeMs:Fn,cached:ki,totalMs:$t()-$i,renderMs:null})};if(ji(2),At(null),Vt(null),Yt({}),ye(null),Pe(""),ot(""),v!=="tarot"&&v!=="mbti"){const P=!!(xe&&De),Si={kind:v,date:ze.date,time:P?"":ze.time,hourUnknown:P,gender:Le,address:rt,trueSolar:Ht,lateZi:Ot,lines:v==="liuyao"?yi:"",question:Oe(v)?pa.trim():"",direction:nt,count:ya,mhMode:pe,upper:ia,lower:na,changing:sa,...v==="qimen"?{qimenRule:St,qLateZi:Mt}:{},...v==="zeri"?{task:Xe,days:it,shengXiao:ht,zCand:Tt}:{},...v==="xiaoliuren"?{xlrMode:c,num1:x,num2:T,num3:z}:{},...v==="trend"?{toAge:A}:{},...v==="fengshui"?{fsMode:F,fsPeriod:$,sitting:M,facing:me}:{},...v==="name"?{nnMode:ne,surname:$e,givenName:_e,limitN:Se}:{},...v==="convert"?{convMode:i,lunarDate:l,leapMonth:m}:{},...v==="hepan"?{hpChart:et,partnerDate:ge,partnerTime:Q,partnerGender:G,partnerAddress:he,thirdOn:Te,p2Date:Ze,p2Time:kt,p2Gender:jt,p2Address:ut}:{},label:Ci(v,vt),at:Date.now()};Je(Rn=>{const Mi=[Si,...Rn.filter(In=>!Ti(In,Si))].slice(0,20);return Ca(Mi),Mi})}}catch(pt){if(Ft())return;Pe(pt&&pt.message?pt.message:String(pt)),E(null)}},sn=async t=>{const f=fa(t),C=++He;if(Pe(""),t==="mbti"){Ne(""),ta(!0);try{await ca(t)}catch(v){C===He&&Pe(v&&v.message?v.message:String(v))}finally{C===He&&ta(!1)}if(C!==He)return;n(t),H.filter(v=>v!=null).length>=Re?ke(t):E(null);return}if(n(t),f==="none"){ke(t);return}const O=ka[f]||(f==="cast"||f==="date"?ga():{date:Ra.date,time:Ra.time});I(O.date),ae(O.time),ke(t,O)},on=t=>{Ie.some(f=>f.k===t)&&Xi(f=>{const C=(f||[]).filter(v=>v&&v.tab&&v.tab!==t),O=[{tab:t,at:Date.now()}].concat(C).slice(0,Fa);return Da(Ha,O),O})},di=t=>{const f=t==="flat"?"flat":"group";Ct(f),Da(Oa,f)},za=t=>{on(t),sn(t)},rn=t=>{I(t),Ae!=="none"&&oa(f=>Object.assign({},f,{[Ae]:{date:t,time:X}}))},pn=t=>{ae(t),Ae!=="none"&&oa(f=>Object.assign({},f,{[Ae]:{date:k,time:t}}))},Bn=()=>{const t=ga();I(t.date),ae(t.time),Ae!=="none"&&oa(f=>Object.assign({},f,{[Ae]:null})),ke(s,t)},ci=()=>{if(s==="mbti"){const t=H.filter(f=>f!=null).length;if(t<Re){Ne(`先答满 ${Re} 题再看结果(现答 ${t} 题,还差 ${Re-t} 题)。`);return}ke(s);return}if(Ae!=="none"&&!ka[Ae]){const t=ga();I(t.date),ae(t.time),ke(s,t);return}ke(s)},ln=()=>{const t={date:"1990-05-12",time:"14:30"};n("bazi"),ce("male"),le("河北石家庄"),oa(f=>Object.assign({},f,{birth:t})),I(t.date),ae(t.time),ke("bazi",t,null,{gender:"male",address:"河北石家庄"})},mi=t=>{ii(t),ke(s,{date:k,time:X},t)},dn=()=>!!(window.matchMedia&&window.matchMedia("(max-width: 640px)").matches),cn=()=>ai===null?dn():ai,ra=(t,f,C)=>{if(!f)return;const O=pe=>{t.textContent=pe?"已复制":"复制失败",setTimeout(()=>{t.textContent=C},1400)},v=()=>{try{const pe=document.createElement("textarea");pe.value=f,pe.setAttribute("readonly",""),pe.style.position="fixed",pe.style.opacity="0",document.body.appendChild(pe),pe.select();const xe=!!(document.execCommand&&document.execCommand("copy"));return document.body.removeChild(pe),xe}catch{return!1}};try{if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(f).then(()=>O(!0),()=>O(v()));return}}catch{}O(v())},mn=t=>ra(t,t.getAttribute("data-shadow-copy")||"","复制 ID"),un=t=>ra(t,t.getAttribute("data-handle-copy")||"","复制句柄"),gn=t=>{const f=t.closest(".mp-trace-layer")||document.getElementById("mp-trace-layer"),C=f&&f.querySelector("[data-trace-md]");ra(t,C?C.value:"","复制 Markdown")},fn=()=>{try{return String(location.href).split("#")[0]}catch{return""}},xn=()=>{if(!b||!b.r)return null;try{return K.askPackages?K.askPackages(b.r,{question:wa(),interpret:b.it,base:fn()}):null}catch{return null}},ui=[["full","复制提问","完整提问:盘面摘要 + 阅读层次 + 回答骨架,粘进任何对话窗都能用"],["brief","复制精简","一句话版:体系 + 排盘句柄 + 你的问题,够助手认出是哪张盘"],["structured","复制参数","结构化参数(JSON):助手可直接照 args 调 compute,不必解析自然语言"],["link","复制深链","深链:把这张盘的参数编进链接,打开即还原同一张盘(换台机器、发给朋友都行)"]],hn=(t,f)=>{const C=xn();if(!C){be("还没有可以复制的盘:先排一张。");return}const O=t==="link"?C.link:C[t];if(!O){be(t==="link"?"这张盘没拿到句柄(随机抽牌只复现参数、不复现牌面),深链做不出来;用「复制提问」那一档。":"这一档暂时是空的,换一档试试。");return}ra(f,O,ui.find(v=>v[0]===t)[1]),t==="link"&&be("深链已复制:打开就还原这张盘,也可以直接发给别人。链接里是编码不是加密,别公开贴。")},bn=()=>{const t=document.getElementById("mp-trace-layer");if(!t)return;t.classList.add("open"),t.setAttribute("aria-hidden","false");const f=t.querySelector("[data-trace-close]");f&&f.focus&&f.focus()},gi=()=>{const t=document.getElementById("mp-trace-layer");if(!t)return;t.classList.remove("open"),t.setAttribute("aria-hidden","true");const f=document.querySelector("[data-trace-open]");f&&f.focus&&f.focus()},vn=t=>{const f=t.target&&t.target.closest?t.target.closest("[data-shadow-copy]"):null;if(f){mn(f);return}const C=t.target&&t.target.closest?t.target.closest("[data-handle-copy]"):null;if(C){un(C);return}if(t.target&&t.target.closest?t.target.closest("[data-trace-open]"):null){bn();return}const v=t.target&&t.target.closest?t.target.closest("[data-trace-copy]"):null;if(v){gn(v);return}if(t.target&&t.target.closest?t.target.closest("[data-mp-askcopy]"):null){wn();return}if(t.target&&t.target.closest?t.target.closest("[data-trace-close]"):null){gi();return}const De=t.target&&t.target.closest?t.target.closest(".mp-it-head"):null;if(!De)return;const ze=De.closest(".mp-it");if(!ze)return;const Le=!ze.classList.contains("folded");ze.classList.toggle("folded",Le),De.setAttribute("aria-expanded",Le?"false":"true");const rt=De.querySelector(".mp-it-hint");rt&&(rt.textContent=Le?"点击展开":"点击收起"),en(Le)},fi=(t,f)=>{if(!b||!(Oe(s)||s==="qimen"))return;const C={question:Oe(s)?(f===void 0?bt:f).trim():"",direction:t===void 0?nt:t},O=K.interpret?K.interpret(b.r,C):null;let v=b.r;if((s==="liuyao"||s==="qimen")&&v&&v.trace&&K.buildTrace)try{const pe=s==="liuyao"?K.buildTrace(v,{direction:C.direction,gender:v.useGod&&v.useGod.gender||"male",refresh:!0}):K.buildTrace(v,{direction:C.direction});pe&&(v=Object.assign({},v,{trace:pe}))}catch{}E(Object.assign({},b,{r:v,it:O}))},yn=t=>!t||!t.timed||!t.at?"":`<div class="mp-cast">起卦时刻:<b>${t.at.date} ${t.at.time}</b> (来自你的本机时间,点「此刻」可重新取当下)</div>`,$n=()=>{try{const t=b&&b.r&&b.r.summary?b.r.summary:"";if(!t)return;navigator.clipboard.writeText(t).then(()=>ot("已复制"),()=>ot("复制失败"))}catch{ot("复制失败")}},wn=()=>{if(!b||!b.r||!window.Engine||!window.Engine.buildEventPrompt)return;const t=qe&&qe.kindOfDirection?qe.kindOfDirection(nt):"other";let f;try{f=window.Engine.buildEventPrompt(b.r,{question:(bt||"").trim(),kind:t,gender:a,timeKnown:!0})}catch{f=null}f&&f.text&&navigator.clipboard.writeText(f.text).then(()=>ot("已复制问事提示"),()=>ot("复制失败"))},xi=()=>{if(!(!b||!b.r||!je.trim()))try{At(K.followup?K.followup(b.r,je.trim()):null)}catch(t){At({question:je.trim(),ok:!1,answer:"追问失败:"+(t&&t.message?t.message:t),evidence:[],confidence:"弱"})}},kn=()=>{if(!(!b||!b.r))try{const t=K.askPrompt?K.askPrompt(b.r,{question:wa(),interpret:b.it}):null,f=t&&t.text?t.text:String(b.r.summary||"");if(Ka(f)){be("已发到对话窗,往下看回复。");return}const C="("+Ia()+")";navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(f).then(()=>be("对话输入框还没就绪"+C+",已复制提问;粘进对话窗回车即可。"),()=>be("对话输入框还没就绪"+C+",复制也没成功;先点「复制文字结果」再贴。")):be("对话输入框还没就绪"+C+";先点「复制文字结果」再贴进对话窗。")}catch(t){be("发到对话窗失败:"+(t&&t.message?t.message:t))}},zn=()=>{if(!(!b||!b.r))try{const t=K.renderText?K.renderText(b.r):b.r.summary||"",f=new Blob([t],{type:"text/markdown;charset=utf-8"}),C=document.createElement("a");C.href=URL.createObjectURL(f),C.download=`命理报告-${b.r.system}.md`,document.body.appendChild(C),C.click(),C.remove(),setTimeout(()=>URL.revokeObjectURL(C.href),2e3)}catch(t){console.error("[metaphysics] 导出失败",t)}},jn=()=>{if(!(!b||!b.r))try{const t=R.summaryCardPNG?R.summaryCardPNG(b.r,b.it):"";if(!t){ot("当前环境不支持 Canvas 导出");return}const f=document.createElement("a");f.href=t,f.download=`命理摘要-${b.r.system}.png`,document.body.appendChild(f),f.click(),f.remove()}catch(t){console.error("[metaphysics] 长图导出失败",t)}},hi={fontSize:12,padding:"5px 12px"},qn=()=>{!b||!b.r||!b.r.past||Vt(K.verifyFit?K.verifyFit(b.r.past.rows,ft):null)},Sn=()=>{if(!(!b||b.kind!=="bazi"))try{const t=b.at||{date:k,time:X},[f,C,O]=String(t.date).split("-").map(Number),[,v]=String(t.time).split(":").map(Number),pe=at.filter(xe=>Number(xe.year)).map(xe=>({year:Number(xe.year),kind:xe.kind}));ye(K.rectifyBirth?K.rectifyBirth({base:{year:f,month:C,day:O,minute:Number.isFinite(v)?v:0},gender:b.gender||a,events:pe,lateZi:typeof b.lateZi=="boolean"?b.lateZi:Fe,trueSolar:typeof b.trueSolar=="boolean"?b.trueSolar:Ue,address:String(b.address||"").trim()||void 0}):{error:"当前客户端未加载生时校正模块"})}catch(t){ye({error:t&&t.message?t.message:String(t)})}},J=(t,f)=>p("label",{className:"mp-field"},p("span",{className:"mp-lbl"},t),f),Mn=t=>{n(t.kind),t.date&&I(t.date),t.time&&ae(t.time),se(!!t.hourUnknown),t.gender&&ce(t.gender),le(t.address||""),typeof t.trueSolar=="boolean"&&Ke(t.trueSolar),typeof t.lateZi=="boolean"&&Ye(t.lateZi),Y(t.lines||""),$a(t.question||""),ti(t.direction||"general"),ei(t.count||"3"),ii(t.mhMode||"time"),ni(t.upper||""),si(t.lower||""),oi(t.changing||""),t.kind==="qimen"&&(typeof t.qimenRule=="string"&&Bt(t.qimenRule),typeof t.qLateZi=="string"&&Zt(t.qLateZi)),t.kind==="zeri"&&(typeof t.task=="string"&&xt(t.task),t.days!=null&&Lt(String(t.days)),typeof t.shengXiao=="string"&&Wt(t.shengXiao),typeof t.zCand=="string"&&e(t.zCand)),t.kind==="xiaoliuren"&&(g(t.xlrMode==="number"?"number":"time"),t.num1!=null&&h(String(t.num1)),t.num2!=null&&j(String(t.num2)),t.num3!=null&&q(String(t.num3))),t.kind==="trend"&&t.toAge!=null&&ie(String(t.toAge)),t.kind==="fengshui"&&(typeof t.fsMode=="string"&&U(t.fsMode),t.fsPeriod!=null&&S(String(t.fsPeriod)),typeof t.sitting=="string"&&W(t.sitting),typeof t.facing=="string"&&fe(t.facing)),t.kind==="name"&&(typeof t.nnMode=="string"&&de(t.nnMode),typeof t.surname=="string"&&Ce(t.surname),typeof t.givenName=="string"&&We(t.givenName),t.limitN!=null&&_(String(t.limitN))),t.kind==="convert"&&(typeof t.convMode=="string"&&r(t.convMode),typeof t.lunarDate=="string"&&o(t.lunarDate),typeof t.leapMonth=="boolean"&&d(t.leapMonth)),t.kind==="hepan"&&(t.hpChart&&Be(t.hpChart),typeof t.partnerDate=="string"&&ve(t.partnerDate),typeof t.partnerTime=="string"&&ee(t.partnerTime),typeof t.partnerGender=="string"&&B(t.partnerGender),typeof t.partnerAddress=="string"&&ct(t.partnerAddress),typeof t.thirdOn=="boolean"&&mt(t.thirdOn),typeof t.p2Date=="string"&&wt(t.p2Date),typeof t.p2Time=="string"&&zt(t.p2Time),typeof t.p2Gender=="string"&&qt(t.p2Gender),typeof t.p2Address=="string"&&Gt(t.p2Address)),aa(!1),Va(t)},Nn=()=>{Je([]),Ca([])},An=["bazi","ziwei","trend","chenggu"],bi=t=>{n(t.kind),I(t.date),t.time&&ae(t.time),se(!!t.hourUnknown),t.gender&&ce(t.gender),le(t.address||""),Ke(t.trueSolar!==!1),Ye(t.lateZi!==!1)},Ln=t=>{const f=R.profEvent(t.target);if(!f)return;const C=v=>Xa.find(pe=>pe.id===v),O=t.currentTarget.querySelector(".mp-prof-name");if(Ja(""),f.action==="use"){const v=C(f.id);if(!v)return;if(!R.profUsable(v)){Ne("这张档案没有出生时刻,先补上时刻再存一次。");return}Ge="",Jt(R.profilesTouch(v.id)),bi(v),ke(v.kind,{date:v.date,time:v.hourUnknown?"12:00":v.time},void 0,{gender:v.gender||void 0,address:v.address||"",hourUnknown:!!v.hourUnknown,trueSolar:v.trueSolar!==!1,lateZi:v.lateZi!==!1});return}if(f.action==="edit"){const v=C(f.id);if(!v)return;bi(v),Ge=v.label,Qt(v.id);return}if(f.action==="cancel"){Ge="",Qt(null);return}if(f.action==="pin"){Jt(R.profilesPin(f.id));return}if(f.action==="del"){if(Wa!==f.id){Ja(f.id);return}Jt(R.profilesRemove(f.id)),_t===f.id&&(Ge="",Qt(null)),Ne("已从本机删除这张档案卡(不影响已经排出来的盘)。");return}if(f.action==="put"){const v=_t,pe=R.profFromForm({kind:s,date:k,time:X,hourUnknown:re,gender:a,address:Z,trueSolar:Ue,lateZi:Fe},O?O.value:Ge,_t||void 0);if(!pe){Ne("先填好出生日期(和时刻),再存档案。");return}const xe=R.profilesPut(pe);if(!xe.ok){Ne("档案没能存进本机(存储被禁用或已满),排盘不受影响。");return}Jt(xe.list),Ge="",Qt(null),O&&(O.value=""),Ne(`${v?"已更新档案":"已存入我的命盘"}「${xe.item.label}」。`)}},Tn=t=>{const f=t.target&&t.target.closest?t.target.closest(".mp-prof-name"):null;f&&(Ge=f.value)},Cn=t=>{const f=K.formOf?K.formOf(t):null;if(!f){ke("ziwei");return}const C=Ie.some(xe=>xe.k===f.tab)?f.tab:"ziwei",O={date:f.date||k,time:f.time||X},v=f.lines===void 0?void 0:Array.isArray(f.lines)?f.lines.join(" "):String(f.lines);f.date&&I(f.date),f.time&&ae(f.time),f.gender&&ce(f.gender),typeof f.address=="string"&&le(f.address),typeof f.trueSolar=="boolean"&&Ke(f.trueSolar),typeof f.lateZi=="boolean"&&Ye(f.lateZi),v!==void 0&&Y(v),f.question&&$a(f.question),n(C);const pe=K.restNote?K.restNote(f):"";be(`已按深链还原:${t.label}${f.question?`|${f.question}`:""}${pe?` ${pe}`:""}`),ke(C,O,void 0,{gender:f.gender,address:f.address,trueSolar:f.trueSolar,lateZi:f.lateZi,lines:v,question:f.question})};lt(()=>{let t=!1;const f=He;return(async()=>{let C=null;try{await ca(s);const O=typeof location<"u"?String(location.href):"";O&&O.indexOf("mp=")>=0&&window.Engine&&window.Engine.parseAskLink&&(C=window.Engine.parseAskLink(O))}catch{C=null}if(!(t||He!==f)){if(C&&C.ok)try{Cn(C);return}catch{}ke("ziwei")}})(),()=>{t=!0}},[]),lt(()=>{if(!va)return;const t=va.kind;Va(null),ke(t)},[va]),lt(()=>{const t=f=>{if(f.key!=="Escape")return;const C=document.getElementById("mp-trace-layer");C&&C.classList.contains("open")&&gi()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[]);const vi=(ba||[]).filter(t=>t&&Ie.some(f=>f.k===t.tab)).slice(0,Fa),_n=t=>(Ie.find(f=>f.k===t)||{}).label||t,En=({k:t,label:f,tip:C,wide:O})=>p("button",{key:t,type:"button",className:"mp-tool"+(O?" wide":"")+(s===t?" on":""),"data-tab":t,onClick:()=>za(t)},p("b",null,f),p("span",null,C)),Hn=[p("div",{key:"profiles",className:"mp-profwrap",onClick:Ln,onInput:Tn,dangerouslySetInnerHTML:{__html:R.profilesHTML(Xa,{editingId:_t,armedDel:Wa,bar:An.indexOf(s)>=0?R.profilesBarHTML({editingId:_t,name:Ge}):""})}}),p("section",{key:"start",className:"mp-start","aria-label":"选择要算的事"},p("div",{className:"mp-start-top"},p("div",{className:"mp-recent",hidden:vi.length===0},p("span",{className:"mp-recent-lbl"},"最近用过"),p("span",{className:"mp-recent-list"},vi.map(t=>p("button",{key:t.tab,type:"button",className:"mp-rc",onClick:()=>za(t.tab)},_n(t.tab),p("i",null,Ii(t.at)))))),p("div",{className:"mp-viewsw",role:"group","aria-label":"首屏视图"},p("button",{type:"button",className:Ee==="group"?"on":"","aria-pressed":Ee==="group"?"true":"false",onClick:()=>di("group")},"分组"),p("button",{type:"button",className:Ee==="flat"?"on":"","aria-pressed":Ee==="flat"?"true":"false",onClick:()=>di("flat")},"平铺"))),Ee==="group"?p("div",{className:"mp-groups"},Ri.map(t=>{const f=!!Wi[t.title],C=Math.max(0,t.items.length-4);return p("section",{key:t.title,className:"mp-tgroup"+(f?" open":"")},p("div",{className:"mp-tgroup-head"},p("h2",null,t.title),p("p",null,t.hint)),p("div",{className:"mp-ttools"},t.items.map(En),C>0?p("button",{key:"more",type:"button",className:"mp-tmore","aria-expanded":f?"true":"false",onClick:()=>Ji(O=>Object.assign({},O,{[t.title]:!f}))},f?"收起":`还有 ${C} 个`):null))})):null),p("div",{key:"tabs",className:"mp-tabs"+(Ee==="flat"?"":" hide"),role:"tablist","aria-label":"命理体系"},Ie.map(t=>p("button",{key:t.k,role:"tab","aria-selected":s===t.k?"true":"false",tabIndex:s===t.k?0:-1,className:"mp-tab"+(s===t.k?" on":""),onClick:()=>za(t.k)},t.label))),p("div",{key:"head",className:"mp-panel"},p("div",{className:"mp-row"},pi?J(Et?"出生日期(公历)":Ae==="date"?"日期(公历)":"起卦日期(公历)",p(ma,{value:k,onChange:rn,onInvalid:()=>Ne("日期请按「年-月-日」填写,例如 1990-05-12。")})):null,li?J(Et?"出生时刻":"起卦时刻",p("input",{className:"mp-input",type:"time",value:X,disabled:re&&(s==="bazi"||s==="trend"),onChange:t=>pn(t.target.value)})):null,s==="bazi"||s==="trend"?p("label",{className:"mp-chk",title:"不知道出生时辰时勾这里:不排时柱,起运按日估算,结果首行会写明"},p("input",{type:"checkbox",checked:re,onChange:t=>se(t.target.checked)})," 时辰未知"):null,Et?J("性别",p("select",{className:"mp-input",value:a,onChange:t=>ce(t.target.value)},p("option",{value:"female"},"女"),p("option",{value:"male"},"男"))):null,Et?J("出生地(省/市即可)",p("input",{className:"mp-input",placeholder:"如 河北石家庄 / 成都",value:Z,onChange:t=>le(t.target.value)})):null,s==="bazi"||s==="ziwei"?p("label",{className:"mp-field mp-checks"},p("input",{type:"checkbox",checked:Nt,onChange:t=>ha(t.target.checked)}),p("span",{className:"mp-lbl"},"八字 × 紫微 交叉验证")):null,s==="hepan"?J("对方出生日期",p(ma,{value:ge,onChange:ve,onInvalid:()=>Ne("对方出生日期请按「年-月-日」填写,例如 1992-08-15。")})):null,s==="hepan"?J("对方出生时刻",p("input",{className:"mp-input",type:"time",value:Q,onChange:t=>ee(t.target.value)})):null,s==="hepan"?J("对方性别",p("select",{className:"mp-input",value:G,onChange:t=>B(t.target.value)},p("option",{value:"female"},"女"),p("option",{value:"male"},"男"))):null,s==="hepan"?J("合盘方式",p("div",{className:"mp-seg"},p("button",{className:et==="bazi"?"on":"",onClick:()=>Be("bazi")},"八字"),p("button",{className:et==="ziwei"?"on":"",onClick:()=>Be("ziwei")},"紫微"))):null,s==="hepan"?J("对方出生地(可空)",p("input",{className:"mp-input",placeholder:"如 四川成都",value:he,onChange:t=>ct(t.target.value)})):null,s==="hepan"?p("label",{className:"mp-field mp-checks"},p("input",{type:"checkbox",checked:Te,onChange:t=>mt(t.target.checked)}),p("span",{className:"mp-lbl"},"三方合盘(加入第三人)")):null,s==="hepan"&&Te?J("第三方出生日期",p(ma,{value:Ze,onChange:wt,onInvalid:()=>Ne("第三方出生日期请按「年-月-日」填写,例如 1990-01-01。")})):null,s==="hepan"&&Te?J("第三方出生时刻",p("input",{className:"mp-input",type:"time",value:kt,onChange:t=>zt(t.target.value)})):null,s==="hepan"&&Te?J("第三方性别",p("select",{className:"mp-input",value:jt,onChange:t=>qt(t.target.value)},p("option",{value:"female"},"女"),p("option",{value:"male"},"男"))):null,s==="hepan"&&Te?J("第三方出生地(可空)",p("input",{className:"mp-input",placeholder:"如 广东广州",value:ut,onChange:t=>Gt(t.target.value)})):null,s==="qimen"?p("fieldset",{key:"qmr",className:"mp-qmrule"},p("legend",{className:"mp-lbl"},"换局规则"),p("div",{className:"mp-qmopts",role:"radiogroup","aria-label":"奇门换局规则"},[["chaibu","拆补"],["chaoshen","超神接气"],["zhirun","置闰"]].map(([t,f])=>p("label",{key:t,className:"mp-qmopt"},p("input",{type:"radio",name:"qimen_rule",value:t,checked:St===t,onChange:()=>Bt(t)}),p("span",null,f)))),p("div",{className:"mp-field"},p("span",{className:"mp-lbl"},"晚子时"),p("select",{className:"mp-input",value:Mt,onChange:t=>Zt(t.target.value)},p("option",{value:"same-day"},"23:00 后归当日"),p("option",{value:"next-day"},"23:00 后归次日"))),p("details",{className:"mp-qmhelp"},p("summary",null,"三种规则有什么区别?"),p("p",null,"决定符头与节气如何对齐、是否插入闰局;同一个时刻在不同规则下可能得到不同局数。默认「拆补」与工具层一致。"))):null,Oe(s)||s==="qimen"?J(s==="qimen"?"询问方向(定用神)":"询问方向",p("select",{className:"mp-input",value:nt,onChange:t=>{ti(t.target.value),fi(t.target.value)}},(K.DIRECTIONS||[]).map(t=>p("option",{key:t.key,value:t.key},t.label)))):null,s==="tarot"?J("张数",p("select",{className:"mp-input",value:ya,onChange:t=>ei(t.target.value)},p("option",{value:"1"},"1 张 · 指引"),p("option",{value:"3"},"3 张 · 过去现在未来"),p("option",{value:"5"},"5 张 · 十字牌阵"))):null,s==="liuyao"?J("六爻(可空)",p("input",{className:"mp-input",placeholder:"空则随机,如 9 7 8 8 7 6",value:V,onChange:t=>Y(t.target.value)})):null,s==="meihua"?J("起卦方式",p("div",{className:"mp-seg"},p("button",{className:st==="time"?"on":"",onClick:()=>mi("time")},"时间"),p("button",{className:st==="number"?"on":"",onClick:()=>mi("number")},"数字"))):null,s==="meihua"&&st==="number"?J("第一个数",p("input",{className:"mp-input",value:ia,placeholder:"如 17",onChange:t=>ni(t.target.value)})):null,s==="meihua"&&st==="number"?J("第二个数",p("input",{className:"mp-input",value:na,placeholder:"如 29",onChange:t=>si(t.target.value)})):null,s==="meihua"&&st==="number"?J("动爻(可空)",p("input",{className:"mp-input",value:sa,placeholder:"1-6",onChange:t=>oi(t.target.value)})):null,s==="zeri"?J("所办事项",p("select",{className:"mp-input",value:Xe,onChange:t=>xt(t.target.value)},[["常用",["嫁娶","搬家入宅","出行","开业","签订合同","祭祀"]],["婚嫁",["嫁娶","订婚","领证","提亲","收送聘金","满月酒"]],["生活",["搬家","入宅","旅行","访亲友","入学","求医","祭祀"]],["建造",["动土","装修","装修建造","安葬","试车买车"]],["工商",["开业","交易","投资","签订合同","签约","纳财","赴任"]]].map(([t,f])=>p("optgroup",{key:t,label:t},f.map(C=>p("option",{key:`${t}-${C}`,value:C},C)))))):null,s==="convert"?J("转换方向",p("div",{className:"mp-seg"},p("button",{className:i==="solar2lunar"?"on":"",onClick:()=>r("solar2lunar")},"公历 → 农历"),p("button",{className:i==="lunar2solar"?"on":"",onClick:()=>r("lunar2solar")},"农历 → 公历"))):null,s==="convert"&&i==="lunar2solar"?J("农历日期",p("input",{className:"mp-input",value:l,placeholder:"如 2026-9-17",onChange:t=>o(t.target.value)})):null,s==="convert"&&i==="lunar2solar"?p("label",{className:"mp-check"},p("input",{type:"checkbox",checked:m,onChange:t=>d(t.target.checked)})," 闰月"):null,s==="zeri"?J("看多少天",p("input",{className:"mp-input",type:"number",min:1,max:60,value:it,onChange:t=>Lt(t.target.value)})):null,s==="zeri"?J("候选日(可空,只比这几天)",p("input",{className:"mp-input",placeholder:"如 2026-12-01, 2026-12-08, 2026-12-15",value:Tt,onChange:t=>e(t.target.value)})):null,s==="zeri"?J("当事人属相(可空)",p("select",{className:"mp-input",value:ht,onChange:t=>Wt(t.target.value)},p("option",{value:""},"不排除"),["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"].map(t=>p("option",{key:t,value:t},t)))):null,s==="xiaoliuren"?J("起课方式",p("div",{className:"mp-seg"},p("button",{className:c==="time"?"on":"",onClick:()=>g("time")},"时间"),p("button",{className:c==="number"?"on":"",onClick:()=>g("number")},"报数"))):null,s==="xiaoliuren"&&c==="number"?J("第一个数",p("input",{className:"mp-input",type:"number",min:1,max:99,value:x,onChange:t=>h(t.target.value)})):null,s==="xiaoliuren"&&c==="number"?J("第二个数",p("input",{className:"mp-input",type:"number",min:1,max:99,value:T,onChange:t=>j(t.target.value)})):null,s==="xiaoliuren"&&c==="number"?J("第三个数",p("input",{className:"mp-input",type:"number",min:1,max:99,value:z,onChange:t=>q(t.target.value)})):null,s==="mbti"?p("div",{className:"mp-quiz-wrap"},p("div",{className:"mp-lbl"},"十六型人格问卷 · 4 题一页,按 1(完全不像)到 5(很像我)打分"),p(Fi,{answers:H,page:D,onPick:(t,f)=>te(C=>{const O=C.slice();return O[t]=f,O}),onPage:t=>y(f=>Math.max(0,Math.min(f+t,Math.max(0,Math.ceil(It().total/Dt)-1)))),onSubmit:ci,onClear:()=>{te(new Array(It().total).fill(null)),y(0),E(null)}})):null,s==="trend"?J("算到几岁",p("input",{className:"mp-input",type:"number",min:10,max:100,value:A,onChange:t=>ie(t.target.value)})):null,s==="fengshui"?J("看什么",p("div",{className:"mp-seg"},p("button",{className:F==="natal"?"on":"",onClick:()=>U("natal")},"命卦"),p("button",{className:F==="advise"?"on":"",onClick:()=>U("advise")},"门主灶"),p("button",{className:F==="xuankong"?"on":"",onClick:()=>U("xuankong")},"玄空"))):null,s==="fengshui"&&F!=="natal"?J("坐山(24 山)",p("input",{className:"mp-input",value:M,placeholder:"如 子 / 乾",onChange:t=>W(t.target.value)})):null,s==="fengshui"&&F!=="natal"?J("朝向(24 山)",p("input",{className:"mp-input",value:me,placeholder:"如 午 / 巽",onChange:t=>fe(t.target.value)})):null,s==="fengshui"&&F==="xuankong"?J("运(1–9)",p("input",{className:"mp-input",type:"number",min:1,max:9,value:$,onChange:t=>S(t.target.value)})):null,s==="name"?J("看什么",p("div",{className:"mp-seg"},p("button",{className:ne==="assess"?"on":"",onClick:()=>de("assess")},"评名字"),p("button",{className:ne==="generate"?"on":"",onClick:()=>de("generate")},"生成候选"))):null,s==="name"?J("姓",p("input",{className:"mp-input",value:$e,placeholder:"如 李",onChange:t=>Ce(t.target.value)})):null,s==="name"&&ne==="assess"?J("名字",p("input",{className:"mp-input",value:_e,placeholder:"如 沐宸",onChange:t=>We(t.target.value)})):null,s==="name"&&ne==="generate"?J("候选个数",p("input",{className:"mp-input",type:"number",min:1,max:20,value:Se,onChange:t=>_(t.target.value)})):null),Et?p("div",{className:"mp-checks"},p("label",{title:"按出生地经度把钟表时间换算成真太阳时"},p("input",{type:"checkbox",checked:Ue,onChange:t=>Ke(t.target.checked)}),"真太阳时"),p("label",{title:"23:00–23:59 出生时:勾选=按次日日柱起时柱;不勾=仍用当日日柱"},p("input",{type:"checkbox",checked:Fe,onChange:t=>Ye(t.target.checked)}),"晚子时换日"),p("label",{title:"开启后会请求 OpenStreetMap,把区县/村落到更精确的坐标"},p("input",{type:"checkbox",checked:u,onChange:t=>w(t.target.checked)}),"联网精确到区县")):null,Oe(s)?p("div",{className:"mp-askblock"},p("span",{className:"mp-lbl"},"所问之事(必填)"),p("textarea",{className:"mp-textarea"+(tn?" invalid":""),rows:2,value:bt,placeholder:"用一句话描述所问之事,例如:今年是否适合换工作?",onChange:t=>{$a(t.target.value),aa(!1)},onBlur:t=>fi(void 0,t.target.value)})):null,s==="mbti"?null:p("div",{key:"actions",className:"mp-actions"},p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginRight:8},onClick:ln,title:"用固定示例盘看完整报告(不改动你已填的数据)"},"看示例"),p("button",{className:"mp-btn",onClick:ci,title:"时间仍为自动时,点它会取当下再起卦"},s==="tarot"?"抽牌":s==="bazi"||s==="ziwei"?"排盘":s==="hepan"?"合盘":s==="qimen"?"起局":ua.indexOf(s)>=0?"看结果":"起卦"))),p("div",{key:"hint",className:"mp-hint"},nn.hint),we.length?p("div",{key:"hist",className:"mp-hist"},p("div",{className:"mp-hist-h"},p("span",null,"最近排过"),p("button",{className:"mp-hist-clear",onClick:Nn},"清空")),p("div",{className:"mp-hist-list"},we.map((t,f)=>p("button",{key:f,className:"mp-hist-item",title:`${String(t.date||"")} ${t.hourUnknown?"时辰未知":String(t.time||"")}`,onClick:()=>Mn(t)},p("b",null,(Ie.find(C=>C.k===t.kind)||{}).label||t.kind),p("span",null,t.label||"—"),p("i",null,`${String(t.date||"").slice(5)} ${t.hourUnknown?"时辰未知":String(t.time||"")}`))))):null,Ae==="cast"&&ri?p("div",{key:"auto",className:"mp-auto"},ka.cast?`起卦时刻用的是你手动填的(${X});想跟随当下,把时间改回或清空即可。`:`起卦时刻已自动取本机时间(${X}),每次点起卦都会重新取当下;想固定时刻就在上面改。`):null,ea?p("div",{key:"err",className:"mp-err",role:"alert"},ea):null,Qa?p("div",{key:"ntc",className:"mp-note",role:"status"},Qa):null,Qi?p("div",{key:"load",className:"mp-note",role:"status"},"正在加载本页需要的引擎…"):null,!b&&!ea?p("div",{key:"empty",className:"mp-empty"},p("b",null,s==="ziwei"||s==="bazi"?"填好出生信息,点「排盘」":s==="tarot"?"写下想问的事,点「抽牌」":s==="mbti"?"按 1–5 给题目打分,答满 12 题就能看结果":ua.indexOf(s)>=0?"填好参数,点「看结果」":"写下所问之事,点「起卦」"),s==="ziwei"||s==="bazi"?"出生日期、时刻与性别即可;出生地只影响真太阳时。":s==="mbti"?"4 题一页,答案只在本地参与计算,不会上传。":ua.indexOf(s)>=0?"按上面的选项填好参数即可;全部在本机计算,不上传。":"起卦时刻已自动取当下,也可以手动改。"):null,b?p("div",{key:"card",className:"mp-card mp-flat",role:"region","aria-label":"排盘结果","aria-live":"polite",onClick:vn,dangerouslySetInnerHTML:{__html:yn(b)+R.perfHTML(ue)+R.revisionHTML(b.r.revision)+R.handleHTML(b.r.handle)+R.shadowHTML(b.r.shadow,b.shadowDiff)+R.traceHTML(b.r.trace,b.r.system,b.r.traceText)+R.resultWithInterpret(b.kind==="ziwei"?R.ziweiHTML(b.r):b.kind==="bazi"?R.baziHTML(b.r)+(b.trend?R.trendHTML(b.trend,{brief:!1}):""):b.kind==="meihua"?R.meihuaHTML(b.r):b.kind==="daliuren"?R.daliurenHTML(b.r):b.kind==="qimen"?R.qimenHTML(b.r)+R.qimenFactsHTML(b.r):b.kind==="hepan"?b.r.chart==="ziwei"?R.ziweiHepanHTML(b.r):R.hepanHTML(b.r):b.kind==="tarot"?R.tarotHTML(b.r):b.kind==="liuyao"?R.liuyaoHTML(b.r):b.kind==="chenggu"?R.chengguHTML(b.r):b.kind==="almanac"?R.almanacHTML(b.r):b.kind==="zeri"?R.zeriHTML(b.r):b.kind==="trend"?R.trendHTML(b.r):b.kind==="name"?R.nameHTML(b.r):b.kind==="mbti"?R.mbtiHTML(b.r):b.kind==="fengshui"?R.fengshuiHTML(b.r):R.quickHTML(b.r),b.it,{folded:cn()})+R.caliberHTML(b.caliber)}}):null,b?p("div",{key:"bar",className:"mp-bar"},p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px"},onClick:$n},an||"复制文字结果"),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginLeft:8},onClick:zn,title:"导出盘面 + 解析(含一页读懂、三张表)为 Markdown"},"导出 .md"),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginLeft:8},onClick:jn,title:"生成 PNG 摘要卡(一页读懂 + 首张表),适合直接分享"},"存为摘要长图")):null,b?p("div",{key:"ask",className:"mp-askbox",style:{flexWrap:"wrap"}},p("input",{className:"mp-input",value:je,maxLength:120,placeholder:"追问:如 2027 年事业怎么样(回车提交)",onChange:t=>gt(t.target.value),onKeyDown:t=>{t.key==="Enter"&&xi()}}),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px"},onClick:xi},"追问"),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginLeft:8},onClick:kn,title:"把这张盘的摘要和你的问题一起发进 DSH 对话窗,由对话里的模型接着答"},"问进对话"),oe.ref?null:p("div",{key:"bridgediag",className:"mp-note",style:{marginTop:6,fontSize:11,flexBasis:"100%"}},Ia()),Ut?p("div",{key:"chatnote",className:"mp-note",style:{marginTop:6,fontSize:12,flexBasis:"100%"}},Ut):null):null,b?p("div",{key:"bridge",className:"mp-bridge"},p("span",{className:"mp-bridge-lbl"},oe.ref?"桥可用;也可以:":"桥未就绪,改走这几档:"),ui.map(([t,f,C])=>p("button",{key:t,type:"button",className:"mp-chip","data-bridge-copy":t,title:C,onClick:O=>hn(t,O.currentTarget)},f))):null,Kt?p("div",{key:"fx",className:"mp-fx",dangerouslySetInnerHTML:{__html:R.followupHTML(Kt)}}):null,b&&b.kind==="bazi"&&b.r.past?p("div",{key:"verify",className:"mp-verify"},p("div",{className:"mp-verify-h"},"验前事 · 过去几年的信号(只读,不改盘)"),b.r.past.rows.map(t=>p("div",{key:t.year,className:"mp-verify-row"},p("span",{className:"mp-verify-txt"},`${t.year} ${t.ganzhi} · ${t.theme}`),p("span",{className:"mp-verify-btns"},["yes","no","unsure"].map(f=>p("button",{key:f,className:"mp-chip"+(ft[t.year]===f?" on":""),onClick:()=>Yt(Object.assign({},ft,{[t.year]:f}))},f==="yes"?"准":f==="no"?"不准":"不确定"))))),p("div",{className:"mp-verify-foot"},p("button",{className:"mp-btn ghost",style:hi,onClick:qn},"算贴合度"),tt?p("span",{className:"mp-verify-fit"},`命中 ${tt.yes}/${tt.answered}(${tt.level}):${tt.advice}`):null)):null,b&&b.kind==="bazi"?p("div",{key:"rect",className:"mp-rect"},p("div",{className:"mp-verify-h"},"生时校正 · 用过去的事反推时辰"),at.map((t,f)=>p("div",{key:f,className:"mp-rect-row"},p("input",{className:"mp-input",type:"number",min:1900,max:2100,value:t.year,onChange:C=>Xt(at.map((O,v)=>v===f?Object.assign({},O,{year:C.target.value}):O))}),p("select",{className:"mp-input",value:t.kind,onChange:C=>Xt(at.map((O,v)=>v===f?Object.assign({},O,{kind:C.target.value}):O))},[["career","事业变动"],["wealth","财运"],["love","感情"],["move","搬迁/出行"],["health","健康"],["other","其他"]].map(([C,O])=>p("option",{key:C,value:C},O))))),p("button",{className:"mp-btn ghost",style:hi,onClick:Sn},"计算候选时辰"),Ve?Ve.error?p("div",{className:"mp-rect-err"},Ve.error):p("div",{className:"mp-rect-out"},p("div",{className:"mp-verify-fit"},Ve.note),Ve.candidates.slice(0,6).map(t=>p("div",{key:t.hour,className:"mp-rect-cand"+(t===Ve.best?" best":"")},`${t.label} · 时柱 ${t.hourGanzhi} · 日柱 ${t.dayGanzhi} · 命中 ${t.hits}/${t.total}`))):null):null,!b&&!ea?p("div",{key:"ph",className:"mp-dim",style:{marginTop:24,fontSize:12}},"选择体系后点「排盘」。所有计算在本机完成,不上传任何数据。"):null];return p("div",{className:"mp-wrap"},Hn)}function Ki(s){try{if(typeof styles<"u"&&styles&&typeof styles.insert=="function")return styles.insert(s)}catch(n){console.error("[metaphysics] styles.insert 不可用,改用 DOM 注入",n)}try{const n=document.createElement("style");return n.setAttribute("data-plugin","@local/metaphysics"),n.textContent=s,document.head.appendChild(n),()=>n.remove()}catch(n){return console.error("[metaphysics] DOM 注入样式也失败",n),()=>{}}}let Ya=!1;function xa(){try{const s=document.documentElement;if(!s||!document.body)return;const n=document.createElement("span");n.setAttribute("aria-hidden","true"),n.style.cssText="position:absolute;left:-9999px;top:0;width:0;height:0;pointer-events:none;background:var(--dsw-alias-brand-primary)",document.body.appendChild(n);const k=getComputedStyle(n).backgroundColor;n.remove();const I=qe&&typeof qe.pickOnColor=="function"?qe.pickOnColor(k):"";I&&s.style&&s.style.getPropertyValue("--mp-on-brand")!==I&&s.style.setProperty("--mp-on-brand",I)}catch{}}function Yi(){if(!Ya){Ya=!0,xa();try{const s=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)");s&&typeof s.addEventListener=="function"&&s.addEventListener("change",xa)}catch{}try{typeof MutationObserver=="function"&&document.documentElement&&new MutationObserver(xa).observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-theme"]})}catch{}}}function Vi(s){try{const Z=Ki(_i+(R&&R.CSS?R.CSS:""));typeof s.effect=="function"&&typeof Z=="function"&&s.effect(()=>Z)}catch(Z){console.error("[metaphysics] 样式注入失败",Z)}try{Yi()}catch(Z){console.error("[metaphysics] 字色同步失败",Z)}let n=null;try{n=s&&s.slots||(s&&typeof s.get=="function"?s.get("slots"):null)}catch(Z){console.error("[metaphysics] 取 slots 服务失败",Z)}if(!n||typeof n.register!="function"){console.error("[metaphysics] slots 服务不可用,面板未注册");return}try{oe.injectType=typeof n.inject;const Z=typeof n.spec=="function"?n.spec("conversation.input.right"):null;oe.spec=Z?Z.kind+"/"+Z.scope:"未声明"}catch(Z){oe.spec="取声明失败",Ga(Z)}const k=(Z,le)=>{try{const ge=n.register(Z,le);return oe.regs+=1,oe.seatOk[Z.name]=!0,ge}catch(ge){return Ga(ge),null}},I=(Z,le)=>{try{typeof n.inject=="function"?n.inject(Z,le):le()}catch(ge){console.error("[metaphysics] 等待槽位失败:"+Z,ge);try{le()}catch(ve){console.error("[metaphysics] 直接注册也失败:"+Z,ve)}}};I("sidebar.panellist",()=>k({name:"sidebar.panellist",id:"metaphysics",order:20,label:()=>"命理 v"+(window.__MP_VER||"")},Di)),I("main",()=>k({name:"main",key:"metaphysics"},Z=>p(Pi,null,p(Ui,Z))));const X=(Z,le)=>{const ge=()=>{try{n.inject(Z,le)}catch(ve){console.error("[metaphysics] 槽位注册失败:"+Z,ve);try{le()}catch(Q){console.error("[metaphysics] 直接注册也失败:"+Z,Q)}}};try{typeof s.effect=="function"?s.effect(ge,"metaphysics: "+Z):ge()}catch(ve){console.error("[metaphysics] effect 包裹失败:"+Z,ve),ge()}};X("conversation.input.right",()=>k({name:"conversation.input.right",id:"metaphysics-ask",order:40},Za)),X("conversation.composer.dock",()=>k({name:"conversation.composer.dock",id:"metaphysics-dock",order:60},Ua));let ae=0;const re=()=>{if(oe.ref)return;ae+=1;const Z="-"+ae;oe.seatOk["conversation.input.right"]||k({name:"conversation.input.right",id:"metaphysics-ask"+Z,order:40},Za),oe.seatOk["conversation.composer.dock"]||k({name:"conversation.composer.dock",id:"metaphysics-dock"+Z,order:60},Ua)};let se=20;const a=()=>oe.seatOk["conversation.input.right"]&&oe.seatOk["conversation.composer.dock"],ce=()=>{oe.ref||se<=0||a()||(se-=1,re(),!a()&&setTimeout(ce,700))};try{setTimeout(ce,700)}catch{}try{document.addEventListener("pointerdown",()=>re(),{once:!0,capture:!0})}catch{}}return{inject:["slots"],apply(s){try{Vi(s)}catch(n){console.error("[metaphysics] apply 异常",n)}}}}});
2117
+ `+k),p("div",{className:"mp-lbl"},"环境:__PP "+typeof R+" · Engine "+typeof window.Engine+" · React "+typeof yt+" · 版本 "+(typeof R=="object"&&R&&(window.__MP_VER||"?"))+((window.__MP_UNRELEASED||[]).length?" · 未发版改动 "+window.__MP_UNRELEASED.length+" 项":""))))}}function Di(s){const n=s&&s.size?s.size:20,k=s&&s.active;return p("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.6,strokeLinecap:"round","aria-hidden":!0,style:{opacity:k?1:.72}},p("circle",{cx:12,cy:12,r:8.2}),p("path",{d:"M12 3.8a4.1 4.1 0 0 1 0 8.2 4.1 4.1 0 0 0 0 8.2"}),p("circle",{cx:12,cy:8,r:1.1,fill:"currentColor",stroke:"none"}),p("circle",{cx:12,cy:16,r:1.1,fill:"currentColor",stroke:"none"}))}const Ie=[{k:"ziwei",label:"紫微",timeLabel:"出生时刻",hint:"紫微斗数需要出生日期、时刻与性别;出生地只影响真太阳时修正。"},{k:"bazi",label:"八字",timeLabel:"出生时刻",hint:"四柱八字按节气与真太阳时定时柱,出生地越准,时柱越稳。"},{k:"liuyao",label:"六爻",timeLabel:"起卦时刻",hint:"六爻不需要出生时间:只用起卦当下的日辰定六神、月建定旺衰,卦由摇出。"},{k:"meihua",label:"梅花",timeLabel:"起卦时刻",hint:"梅花用起卦时刻的年月日时数成卦,也可直接给两个数字起卦;与出生时间无关。"},{k:"daliuren",label:"六壬",timeLabel:"起卦时刻",hint:"大六壬用起卦时刻的日干支、时支与月将起天地盘;同样与出生时间无关。"},{k:"qimen",label:"奇门",timeLabel:"起局时刻",hint:"奇门时家转盘:用起局时刻定节气、三元与局数;换局规则决定符头与节气如何对齐。"},{k:"hepan",label:"合盘",timeLabel:"你的出生时刻",hint:"合盘按「日主 + 夫妻宫 + 五行互补」看两个人的相处与互补,需要双方出生信息。"},{k:"tarot",label:"塔罗",timeLabel:"",hint:"塔罗不看时间,只记录抽牌时刻与你的提问。"},{k:"almanac",label:"黄历",timeLabel:"",hint:"黄历按公历日期查农历、干支、宜忌、时辰吉凶、二十八宿与吉神方位;只做本地计算。"},{k:"convert",label:"农历",timeLabel:"",hint:"公农历互转:公历生日可反查农历;只知道农历生日时,可转成公历再排盘。"},{k:"zeri",label:"择日",timeLabel:"",hint:"择日把区间内每天的建除宜忌与事项适配打分排序,并按属相排除冲煞日。"},{k:"chenggu",label:"称骨",timeLabel:"出生时刻",hint:"称骨按农历年、月、日、时的骨重求和;时辰必填。"},{k:"xiaoliuren",label:"小六壬",timeLabel:"起课时刻",hint:"小六壬用农历月/日/时掐指,也可用三个随机数起课。"},{k:"star",label:"星座",timeLabel:"",hint:"星座按公历日期给出太阳星座与当日基调;同日同星座结果固定。"},{k:"numerology",label:"生命数字",timeLabel:"",hint:"生命数字按公历生日归约出生命路径数、生日数与态度数。"},{k:"mbti",label:"人格",timeLabel:"",hint:"十六型人格是 24 道自我报告题的 MBTI 风格测算:4 题一页,按 1–5 打分,答满 12 题即可看结果;只作自我参照,不是官方量表。"},{k:"trend",label:"人生K线",timeLabel:"出生时刻",hint:"人生 K 线按大运与流年十神给逐年运势分,画成走势图。"},{k:"fengshui",label:"风水",timeLabel:"",hint:"风水看八宅命卦、大游年四吉四凶与流年九宫飞星;也可按坐向看门主灶倾向,或按运与坐向排玄空下卦盘。"},{k:"name",label:"起名",timeLabel:"",hint:"起名按八字喜用匹配字库五行,可评估现有名字或生成候选名。"}];function dt(s){return String(s).padStart(2,"0")}const ua=["almanac","convert","zeri","chenggu","xiaoliuren","star","numerology","trend","fengshui","name"],Ri=Array.isArray(window.__MPGroups)?window.__MPGroups:[],Ha="mp.recent.tabs",Oa="mp.first.view",Fa=3;function Pa(s){try{return JSON.parse(window.localStorage.getItem(s)||"null")}catch{return null}}function Da(s,n){try{window.localStorage.setItem(s,JSON.stringify(n))}catch{}}function Ii(s){const n=new Date(s);if(Number.isNaN(n.getTime()))return"";const k=X=>new Date(X.getFullYear(),X.getMonth(),X.getDate()).getTime(),I=Math.round((k(new Date)-k(n))/864e5);return I<=0?"今天":I===1?"昨天":`${dt(n.getMonth()+1)}-${dt(n.getDate())}`}function ga(){const s=new Date;return{date:`${s.getFullYear()}-${dt(s.getMonth()+1)}-${dt(s.getDate())}`,time:`${dt(s.getHours())}:${dt(s.getMinutes())}`}}const Gi={ziwei:"birth",bazi:"birth",hepan:"birth",liuyao:"cast",meihua:"cast",daliuren:"cast",qimen:"cast",tarot:"none",almanac:"date",zeri:"date",star:"date",numerology:"date",convert:"date",chenggu:"birth",trend:"birth",fengshui:"birth",name:"birth",xiaoliuren:"cast",mbti:"none"},Ra={date:"1990-05-12",time:"14:30"},fa=s=>Gi[s]||"none",qe=window.__MPCore||{},Oe=qe.needAsk||(s=>!1),oe={ref:null,seats:[],seatOk:{},keys:"",injectType:"",spec:"",errs:[],regs:0,mounted:0},Qe={r:null,q:"",it:null};let Ge="";function Ia(){const s=[];return s.push("inputActions "+(oe.ref?"已拿到":"未拿到")),s.push("渲染 "+oe.mounted+" 次"),s.push("注册 "+oe.regs+" 次"),s.push("inject "+(oe.injectType||"?")),s.push("槽位 "+(oe.spec||"?")),oe.errs.length&&s.push("错误:"+oe.errs.join(" / ")),"桥自检:"+s.join(";")}function Ga(s){if(oe.errs.length>=3)return;const n=s&&s.message?String(s.message):String(s);oe.errs.push(n.slice(0,90))}function Bi(s){if(!s)return null;const n=s.inputActions;if(n&&typeof n.setDraft=="function"&&typeof n.submit=="function")return n;const k=s.actions&&s.actions.input;return k&&typeof k.setDraft=="function"&&typeof k.submit=="function"?k:null}function Ba(s,n){const k=Bi(s);return lt(()=>{if(oe.seats.indexOf(n)<0&&oe.seats.push(n),oe.keys=s?Object.keys(s).join(","):"",k){oe.ref=k;try{window.__MPComposer=k}catch{}}return()=>{oe.ref===k&&(oe.ref=null)}},[k,n]),k}function Zi(){const s=Qe.r;if(!s)return"";try{const n=K.askPrompt?K.askPrompt(s,{question:Qe.q,interpret:Qe.it}):null;return n&&n.text||String(s.summary||"")}catch{return String(s.summary||"")}}function Za(s){return oe.mounted+=1,Ba(s,"input.right")?p("button",{type:"button",className:"mp-chip ok",title:Qe.r?"把上一张盘的摘要和问题发进对话窗":"先在侧栏「命理」里排一张盘",onClick:()=>{const k=Zi();k&&Ka(k)}},"命理·问"):p("span",{className:"mp-chip warn",title:"命理:已占住输入框槽位,但没拿到 inputActions;把这句话告诉作者"},"命理·未就绪")}function Ua(s){return oe.mounted+=1,Ba(s,"composer.dock"),null}function Ka(s){let n=oe.ref;if(!n)try{n=window.__MPComposer||null}catch{n=null}return!n||typeof n.setDraft!="function"||typeof n.submit!="function"?!1:(n.setDraft(s),n.submit(),!0)}function Ui(){const[s,n]=L("ziwei"),[k,I]=L("1990-05-12"),[X,ae]=L("14:30"),[re,se]=L(!1),[a,me]=L("female"),[Z,le]=L(""),[ge,ve]=L("1992-08-15"),[Q,ee]=L("10:00"),[G,B]=L("female"),[he,ct]=L(""),[et,Be]=L("bazi"),[Te,mt]=L(!1),[Ze,wt]=L("1990-01-01"),[kt,zt]=L("12:00"),[jt,qt]=L("male"),[ut,Gt]=L(""),[St,Bt]=L("chaibu"),[Ue,Ke]=L(!0),[Fe,Ye]=L(!0),[Mt,Zt]=L("same-day"),[Nt,ha]=L(!1),[je,gt]=L(""),[Ut,be]=L(""),[Kt,At]=L(null),[ft,Yt]=L({}),[tt,Vt]=L(null),[at,Xt]=L([{year:"2019",kind:"career"},{year:"2022",kind:"love"}]),[Ve,ye]=L(null),[Xe,xt]=L("开业"),[it,Lt]=L("30"),[ht,Wt]=L(""),[Tt,e]=L(""),[i,r]=L("solar2lunar"),[l,o]=L(""),[m,d]=L(!1),[c,g]=L("time"),[x,h]=L(""),[T,j]=L(""),[z,q]=L(""),[H,te]=L(()=>new Array(It().total).fill(null)),[D,y]=L(0),[A,ie]=L("60"),[F,U]=L("natal"),[$,S]=L("9"),[M,W]=L("子"),[ue,fe]=L("午"),[ne,de]=L("assess"),[$e,Ce]=L("李"),[_e,We]=L(""),[Se,_]=L("6"),[u,w]=L(!1),[V,Y]=L(""),[b,E]=L(null),[ce,Me]=L(null),[we,Je]=L(()=>Li()),[Ee,Ct]=L(()=>Pa(Oa)==="flat"?"flat":"group"),[ba,Xi]=L(()=>{const t=Pa(Ha);return Array.isArray(t)?t:[]}),[Wi,Ji]=L({}),[va,Va]=L(null),[Xa,Jt]=L(()=>R.profilesLoad()),[_t,Qt]=L(null),[Wa,Ja]=L(""),[ea,Pe]=L(""),[Qa,Ne]=L(""),[Qi,ta]=L(!1),[ya,ei]=L("3"),[bt,$a]=L(""),[nt,ti]=L("general");function wa(){return je.trim()||(b&&Oe(b.kind)?String(bt||"").trim():"")}lt(()=>{b&&b.r&&(Qe.r=b.r,Qe.q=wa(),Qe.it=b.it||null)},[b,je,bt]);const[ai,en]=L(null),[tn,aa]=L(!1),[st,ii]=L("time"),[ia,ni]=L(""),[na,si]=L(""),[sa,oi]=L(""),[an,ot]=L(""),[ka,oa]=L({birth:null,cast:null}),nn=Ie.find(t=>t.k===s)||Ie[0],Et=s==="bazi"||s==="ziwei"||s==="hepan"||s==="chenggu"||s==="trend"||s==="fengshui"||s==="name",Ae=fa(s),ri=!(s==="meihua"&&st==="number"),pi=s!=="tarot"&&s!=="mbti"&&ri,li=pi&&Ae!=="date",Gn=li,ke=async(t,f,C,O)=>{const v=t||s,pe=C||st,xe=v==="bazi"||v==="trend",De=O&&typeof O.hourUnknown=="boolean"?O.hourUnknown:re,ze=f||(xe&&De?{date:k,time:"12:00"}:{date:k,time:X}),Le=O&&O.gender?O.gender:a,rt=O&&typeof O.address=="string"?O.address:Z,Ht=O&&typeof O.trueSolar=="boolean"?O.trueSolar:Ue,Ot=O&&typeof O.lateZi=="boolean"?O.lateZi:Fe,yi=O&&typeof O.lines=="string"?O.lines:V,pa=O&&typeof O.question=="string"?O.question:bt,$i=$t(),wi=++He,Ft=()=>wi!==He;Me(null),Ne("");try{let pt=0,ki=null;ta(!0);try{await ca(v);const P=window.__MP_LAST_LOAD;pt=P&&typeof P.ms=="number"?P.ms:$t()-$i,ki=P&&typeof P.cached=="boolean"?P.cached:null}catch(P){if(Ft())return;Pe(P&&P.message?P.message:String(P)),E(null);return}finally{Ft()||ta(!1)}if(Ft())return;const zi=`${ze.date}T${ze.time}`,N={system:v};if(N.shadow=v!=="mbti",N.trace=v==="liuyao"||v==="bazi"||v==="ziwei"||v==="qimen"||v==="daliuren",v!=="tarot"&&(N.datetime=zi),v==="bazi"||v==="ziwei"||v==="hepan"||v==="trend"){if(N.gender=Le,N.trueSolar=Ht,rt.trim()){N.address=rt.trim();try{const P=await K.geocodeAddress(N.address,{online:u});P&&typeof P.lon=="number"&&(N.longitude=P.lon,N.geo=P)}catch(P){console.error("[metaphysics] 地址解析失败,退回内置表",P)}if(Ft())return}(v==="bazi"||v==="ziwei")&&(N.cross=Nt),N.lateZi=Ot,xe&&De&&(N.hourUnknown=!0)}if(v==="liuyao"){const P=qe.parseLines(yi);P.lines?N.lines=P.lines:P.warning&&Ne(P.warning)}if(v==="qimen"&&(N.juMethod=St,N.lateZiHourMode=Mt,N.direction=nt),v==="bazi"&&(N.verifyPast=6),v==="zeri"){N.startDate=ze.date,N.task=Xe,N.days=Number(it)||30,ht&&(N.shengXiao=ht);const P=Tt.split(/[,,、\s]+/).filter(Boolean);P.length&&(N.candidates=P)}if(v==="xiaoliuren")if(N.mode=c,c==="number")N.num1=Number(x)||void 0,N.num2=Number(T)||void 0,N.num3=Number(z)||void 0;else{N.date=ze.date;const P=Number(String(ze.time).split(":")[0]);N.hour=Number.isFinite(P)?P:12}if(v==="mbti"){delete N.datetime;const P=H.slice();for(;P.length&&P[P.length-1]==null;)P.pop();P.length&&(N.answers=P)}if(v==="trend"&&xe&&De&&(N.hourUnknown=!0),v==="trend"&&(N.toAge=Number(A)||60),v==="fengshui"&&(N.action=F,F==="natal"?N.gender=Le:(N.sitting=M,N.facing=ue,delete N.datetime,F==="xuankong"&&(N.period=Number($)||9))),v==="name"&&(N.action=ne,N.surname=$e.trim(),ne==="generate"?(N.gender=Le,N.limit=Number(Se)||6,N.trueSolar=Ht,N.lateZi=Ot):(N.givenName=_e.trim(),(!ze.date||!ze.time)&&delete N.datetime)),v==="convert")if(N.system="convert",i==="lunar2solar"){const P=/^(\d{4})-(\d{1,2})-(\d{1,2})$/.exec(String(l).trim());if(!P){Pe("农历转公历请按「农历年-月-日」填写,例如 2026-9-17;闰月单独勾选。");return}N.mode="lunar2solar",N.lunarYear=Number(P[1]),N.lunarMonth=Number(P[2]),N.lunarDay=Number(P[3]),N.isLeapMonth=m,delete N.datetime}else N.mode="solar2lunar";if(v==="tarot"&&(N.count=Number(ya)),v==="hepan"&&(N.chart=et,N.partner={datetime:`${ge}T${Q}`,gender:G,address:he.trim()||void 0,trueSolar:Ue},Te&&(N.partner2={datetime:`${Ze}T${kt}`,gender:jt,address:ut.trim()||void 0,trueSolar:Ue})),Oe(v)){if(!pa.trim()){Pe("请先填写「所问之事」——一句话即可,例如:今年是否适合换工作?"),aa(!0),E(null);return}aa(!1),N.question=pa.trim(),v==="liuyao"&&(N.direction=nt)}if(v==="meihua"&&(N.mode=pe,pe==="number")){if(ia.trim()===""||na.trim()===""){Pe("数字起卦需要填两个数(第一个数定上卦、第二个数定下卦)。"),E(null);return}if(N.upper=Number(ia),N.lower=Number(na),!Number.isFinite(N.upper)||!Number.isFinite(N.lower)){Pe("两个数都要是数字,例如 17 和 29。"),E(null);return}sa!==""&&(N.changing=Number(sa))}const On=$t();v==="trend"&&!N.asOf&&qe.todayStamp&&(N.asOf=qe.todayStamp());const vt=K.compute(N),Fn=$t()-On;let ja=null;try{ja=R.shadowTrack?R.shadowTrack(vt):null}catch{ja=null}let qa=null;if(v==="bazi")try{qa=K.compute({system:"trend",datetime:zi,gender:Le,toAge:100,trueSolar:Ht,lateZi:Ot,...qe.todayStamp?{asOf:N.asOf||qe.todayStamp()}:{},...N.dst!==void 0?{dst:N.dst}:{},...N.address?{address:N.address}:{},...typeof N.longitude=="number"?{longitude:N.longitude}:{},...N.geo?{geo:N.geo}:{}})}catch{qa=null}let Sa=null;if(K.caliberCompare)try{Sa=K.caliberCompare(N)}catch{Sa=null}const Pn=Oe(v)||v==="qimen"?{question:Oe(v)?pa.trim():"",direction:nt}:void 0,la=K.interpret?K.interpret(vt,Pn):null;la&&vt.cross&&K.crossSection&&(la.sections=[...la.sections||[],K.crossSection(vt.cross)]);const Dn=fa(v)==="cast"&&(v!=="meihua"||pe==="time");E({kind:v,r:vt,it:la,at:ze,timed:Dn,trend:qa,caliber:Sa,shadowDiff:ja,gender:Le,address:rt,trueSolar:Ht,lateZi:Ot});const ji=P=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>P>1?ji(P-1):qi()):setTimeout(qi,0)},qi=()=>{wi===He&&Me({engineMs:pt,computeMs:Fn,cached:ki,totalMs:$t()-$i,renderMs:null})};if(ji(2),At(null),Vt(null),Yt({}),ye(null),Pe(""),ot(""),v!=="tarot"&&v!=="mbti"){const P=!!(xe&&De),Si={kind:v,date:ze.date,time:P?"":ze.time,hourUnknown:P,gender:Le,address:rt,trueSolar:Ht,lateZi:Ot,lines:v==="liuyao"?yi:"",question:Oe(v)?pa.trim():"",direction:nt,count:ya,mhMode:pe,upper:ia,lower:na,changing:sa,...v==="qimen"?{qimenRule:St,qLateZi:Mt}:{},...v==="zeri"?{task:Xe,days:it,shengXiao:ht,zCand:Tt}:{},...v==="xiaoliuren"?{xlrMode:c,num1:x,num2:T,num3:z}:{},...v==="trend"?{toAge:A}:{},...v==="fengshui"?{fsMode:F,fsPeriod:$,sitting:M,facing:ue}:{},...v==="name"?{nnMode:ne,surname:$e,givenName:_e,limitN:Se}:{},...v==="convert"?{convMode:i,lunarDate:l,leapMonth:m}:{},...v==="hepan"?{hpChart:et,partnerDate:ge,partnerTime:Q,partnerGender:G,partnerAddress:he,thirdOn:Te,p2Date:Ze,p2Time:kt,p2Gender:jt,p2Address:ut}:{},label:Ci(v,vt),at:Date.now()};Je(Rn=>{const Mi=[Si,...Rn.filter(In=>!Ti(In,Si))].slice(0,20);return Ca(Mi),Mi})}}catch(pt){if(Ft())return;Pe(pt&&pt.message?pt.message:String(pt)),E(null)}},sn=async t=>{const f=fa(t),C=++He;if(Pe(""),t==="mbti"){Ne(""),ta(!0);try{await ca(t)}catch(v){C===He&&Pe(v&&v.message?v.message:String(v))}finally{C===He&&ta(!1)}if(C!==He)return;n(t),H.filter(v=>v!=null).length>=Re?ke(t):E(null);return}if(n(t),f==="none"){ke(t);return}const O=ka[f]||(f==="cast"||f==="date"?ga():{date:Ra.date,time:Ra.time});I(O.date),ae(O.time),ke(t,O)},on=t=>{Ie.some(f=>f.k===t)&&Xi(f=>{const C=(f||[]).filter(v=>v&&v.tab&&v.tab!==t),O=[{tab:t,at:Date.now()}].concat(C).slice(0,Fa);return Da(Ha,O),O})},di=t=>{const f=t==="flat"?"flat":"group";Ct(f),Da(Oa,f)},za=t=>{on(t),sn(t)},rn=t=>{I(t),Ae!=="none"&&oa(f=>Object.assign({},f,{[Ae]:{date:t,time:X}}))},pn=t=>{ae(t),Ae!=="none"&&oa(f=>Object.assign({},f,{[Ae]:{date:k,time:t}}))},Bn=()=>{const t=ga();I(t.date),ae(t.time),Ae!=="none"&&oa(f=>Object.assign({},f,{[Ae]:null})),ke(s,t)},ci=()=>{if(s==="mbti"){const t=H.filter(f=>f!=null).length;if(t<Re){Ne(`先答满 ${Re} 题再看结果(现答 ${t} 题,还差 ${Re-t} 题)。`);return}ke(s);return}if(Ae!=="none"&&!ka[Ae]){const t=ga();I(t.date),ae(t.time),ke(s,t);return}ke(s)},ln=()=>{const t={date:"1990-05-12",time:"14:30"};n("bazi"),me("male"),le("河北石家庄"),oa(f=>Object.assign({},f,{birth:t})),I(t.date),ae(t.time),ke("bazi",t,null,{gender:"male",address:"河北石家庄"})},mi=t=>{ii(t),ke(s,{date:k,time:X},t)},dn=()=>!!(window.matchMedia&&window.matchMedia("(max-width: 640px)").matches),cn=()=>ai===null?dn():ai,ra=(t,f,C)=>{if(!f)return;const O=pe=>{t.textContent=pe?"已复制":"复制失败",setTimeout(()=>{t.textContent=C},1400)},v=()=>{try{const pe=document.createElement("textarea");pe.value=f,pe.setAttribute("readonly",""),pe.style.position="fixed",pe.style.opacity="0",document.body.appendChild(pe),pe.select();const xe=!!(document.execCommand&&document.execCommand("copy"));return document.body.removeChild(pe),xe}catch{return!1}};try{if(navigator.clipboard&&navigator.clipboard.writeText){navigator.clipboard.writeText(f).then(()=>O(!0),()=>O(v()));return}}catch{}O(v())},mn=t=>ra(t,t.getAttribute("data-shadow-copy")||"","复制 ID"),un=t=>ra(t,t.getAttribute("data-handle-copy")||"","复制句柄"),gn=t=>{const f=t.closest(".mp-trace-layer")||document.getElementById("mp-trace-layer"),C=f&&f.querySelector("[data-trace-md]");ra(t,C?C.value:"","复制 Markdown")},fn=()=>{try{return String(location.href).split("#")[0]}catch{return""}},xn=()=>{if(!b||!b.r)return null;try{return K.askPackages?K.askPackages(b.r,{question:wa(),interpret:b.it,base:fn()}):null}catch{return null}},ui=[["full","复制提问","完整提问:盘面摘要 + 阅读层次 + 回答骨架,粘进任何对话窗都能用"],["brief","复制精简","一句话版:体系 + 排盘句柄 + 你的问题,够助手认出是哪张盘"],["structured","复制参数","结构化参数(JSON):助手可直接照 args 调 compute,不必解析自然语言"],["link","复制深链","深链:把这张盘的参数编进链接,打开即还原同一张盘(换台机器、发给朋友都行)"]],hn=(t,f)=>{const C=xn();if(!C){be("还没有可以复制的盘:先排一张。");return}const O=t==="link"?C.link:C[t];if(!O){be(t==="link"?"这张盘没拿到句柄(随机抽牌只复现参数、不复现牌面),深链做不出来;用「复制提问」那一档。":"这一档暂时是空的,换一档试试。");return}ra(f,O,ui.find(v=>v[0]===t)[1]),t==="link"&&be("深链已复制:打开就还原这张盘,也可以直接发给别人。链接里是编码不是加密,别公开贴。")},bn=()=>{const t=document.getElementById("mp-trace-layer");if(!t)return;t.classList.add("open"),t.setAttribute("aria-hidden","false");const f=t.querySelector("[data-trace-close]");f&&f.focus&&f.focus()},gi=()=>{const t=document.getElementById("mp-trace-layer");if(!t)return;t.classList.remove("open"),t.setAttribute("aria-hidden","true");const f=document.querySelector("[data-trace-open]");f&&f.focus&&f.focus()},vn=t=>{const f=t.target&&t.target.closest?t.target.closest("[data-shadow-copy]"):null;if(f){mn(f);return}const C=t.target&&t.target.closest?t.target.closest("[data-handle-copy]"):null;if(C){un(C);return}if(t.target&&t.target.closest?t.target.closest("[data-trace-open]"):null){bn();return}const v=t.target&&t.target.closest?t.target.closest("[data-trace-copy]"):null;if(v){gn(v);return}if(t.target&&t.target.closest?t.target.closest("[data-mp-askcopy]"):null){wn();return}if(t.target&&t.target.closest?t.target.closest("[data-trace-close]"):null){gi();return}const De=t.target&&t.target.closest?t.target.closest(".mp-it-head"):null;if(!De)return;const ze=De.closest(".mp-it");if(!ze)return;const Le=!ze.classList.contains("folded");ze.classList.toggle("folded",Le),De.setAttribute("aria-expanded",Le?"false":"true");const rt=De.querySelector(".mp-it-hint");rt&&(rt.textContent=Le?"点击展开":"点击收起"),en(Le)},fi=(t,f)=>{if(!b||!(Oe(s)||s==="qimen"))return;const C={question:Oe(s)?(f===void 0?bt:f).trim():"",direction:t===void 0?nt:t},O=K.interpret?K.interpret(b.r,C):null;let v=b.r;if((s==="liuyao"||s==="qimen")&&v&&v.trace&&K.buildTrace)try{const pe=s==="liuyao"?K.buildTrace(v,{direction:C.direction,gender:v.useGod&&v.useGod.gender||"male",refresh:!0}):K.buildTrace(v,{direction:C.direction});pe&&(v=Object.assign({},v,{trace:pe}))}catch{}E(Object.assign({},b,{r:v,it:O}))},yn=t=>!t||!t.timed||!t.at?"":`<div class="mp-cast">起卦时刻:<b>${t.at.date} ${t.at.time}</b> (来自你的本机时间,点「此刻」可重新取当下)</div>`,$n=()=>{try{const t=b&&b.r&&b.r.summary?b.r.summary:"";if(!t)return;navigator.clipboard.writeText(t).then(()=>ot("已复制"),()=>ot("复制失败"))}catch{ot("复制失败")}},wn=()=>{if(!b||!b.r||!window.Engine||!window.Engine.buildEventPrompt)return;const t=qe&&qe.kindOfDirection?qe.kindOfDirection(nt):"other";let f;try{f=window.Engine.buildEventPrompt(b.r,{question:(bt||"").trim(),kind:t,gender:a,timeKnown:!0})}catch{f=null}f&&f.text&&navigator.clipboard.writeText(f.text).then(()=>ot("已复制问事提示"),()=>ot("复制失败"))},xi=()=>{if(!(!b||!b.r||!je.trim()))try{At(K.followup?K.followup(b.r,je.trim()):null)}catch(t){At({question:je.trim(),ok:!1,answer:"追问失败:"+(t&&t.message?t.message:t),evidence:[],confidence:"弱"})}},kn=()=>{if(!(!b||!b.r))try{const t=K.askPrompt?K.askPrompt(b.r,{question:wa(),interpret:b.it}):null,f=t&&t.text?t.text:String(b.r.summary||"");if(Ka(f)){be("已发到对话窗,往下看回复。");return}const C="("+Ia()+")";navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(f).then(()=>be("对话输入框还没就绪"+C+",已复制提问;粘进对话窗回车即可。"),()=>be("对话输入框还没就绪"+C+",复制也没成功;先点「复制文字结果」再贴。")):be("对话输入框还没就绪"+C+";先点「复制文字结果」再贴进对话窗。")}catch(t){be("发到对话窗失败:"+(t&&t.message?t.message:t))}},zn=()=>{if(!(!b||!b.r))try{const t=K.renderText?K.renderText(b.r):b.r.summary||"",f=new Blob([t],{type:"text/markdown;charset=utf-8"}),C=document.createElement("a");C.href=URL.createObjectURL(f),C.download=`命理报告-${b.r.system}.md`,document.body.appendChild(C),C.click(),C.remove(),setTimeout(()=>URL.revokeObjectURL(C.href),2e3)}catch(t){console.error("[metaphysics] 导出失败",t)}},jn=()=>{if(!(!b||!b.r))try{const t=R.summaryCardPNG?R.summaryCardPNG(b.r,b.it):"";if(!t){ot("当前环境不支持 Canvas 导出");return}const f=document.createElement("a");f.href=t,f.download=`命理摘要-${b.r.system}.png`,document.body.appendChild(f),f.click(),f.remove()}catch(t){console.error("[metaphysics] 长图导出失败",t)}},hi={fontSize:12,padding:"5px 12px"},qn=()=>{!b||!b.r||!b.r.past||Vt(K.verifyFit?K.verifyFit(b.r.past.rows,ft):null)},Sn=()=>{if(!(!b||b.kind!=="bazi"))try{const t=b.at||{date:k,time:X},[f,C,O]=String(t.date).split("-").map(Number),[,v]=String(t.time).split(":").map(Number),pe=at.filter(xe=>Number(xe.year)).map(xe=>({year:Number(xe.year),kind:xe.kind}));ye(K.rectifyBirth?K.rectifyBirth({base:{year:f,month:C,day:O,minute:Number.isFinite(v)?v:0},gender:b.gender||a,events:pe,lateZi:typeof b.lateZi=="boolean"?b.lateZi:Fe,trueSolar:typeof b.trueSolar=="boolean"?b.trueSolar:Ue,address:String(b.address||"").trim()||void 0}):{error:"当前客户端未加载生时校正模块"})}catch(t){ye({error:t&&t.message?t.message:String(t)})}},J=(t,f)=>p("label",{className:"mp-field"},p("span",{className:"mp-lbl"},t),f),Mn=t=>{n(t.kind),t.date&&I(t.date),t.time&&ae(t.time),se(!!t.hourUnknown),t.gender&&me(t.gender),le(t.address||""),typeof t.trueSolar=="boolean"&&Ke(t.trueSolar),typeof t.lateZi=="boolean"&&Ye(t.lateZi),Y(t.lines||""),$a(t.question||""),ti(t.direction||"general"),ei(t.count||"3"),ii(t.mhMode||"time"),ni(t.upper||""),si(t.lower||""),oi(t.changing||""),t.kind==="qimen"&&(typeof t.qimenRule=="string"&&Bt(t.qimenRule),typeof t.qLateZi=="string"&&Zt(t.qLateZi)),t.kind==="zeri"&&(typeof t.task=="string"&&xt(t.task),t.days!=null&&Lt(String(t.days)),typeof t.shengXiao=="string"&&Wt(t.shengXiao),typeof t.zCand=="string"&&e(t.zCand)),t.kind==="xiaoliuren"&&(g(t.xlrMode==="number"?"number":"time"),t.num1!=null&&h(String(t.num1)),t.num2!=null&&j(String(t.num2)),t.num3!=null&&q(String(t.num3))),t.kind==="trend"&&t.toAge!=null&&ie(String(t.toAge)),t.kind==="fengshui"&&(typeof t.fsMode=="string"&&U(t.fsMode),t.fsPeriod!=null&&S(String(t.fsPeriod)),typeof t.sitting=="string"&&W(t.sitting),typeof t.facing=="string"&&fe(t.facing)),t.kind==="name"&&(typeof t.nnMode=="string"&&de(t.nnMode),typeof t.surname=="string"&&Ce(t.surname),typeof t.givenName=="string"&&We(t.givenName),t.limitN!=null&&_(String(t.limitN))),t.kind==="convert"&&(typeof t.convMode=="string"&&r(t.convMode),typeof t.lunarDate=="string"&&o(t.lunarDate),typeof t.leapMonth=="boolean"&&d(t.leapMonth)),t.kind==="hepan"&&(t.hpChart&&Be(t.hpChart),typeof t.partnerDate=="string"&&ve(t.partnerDate),typeof t.partnerTime=="string"&&ee(t.partnerTime),typeof t.partnerGender=="string"&&B(t.partnerGender),typeof t.partnerAddress=="string"&&ct(t.partnerAddress),typeof t.thirdOn=="boolean"&&mt(t.thirdOn),typeof t.p2Date=="string"&&wt(t.p2Date),typeof t.p2Time=="string"&&zt(t.p2Time),typeof t.p2Gender=="string"&&qt(t.p2Gender),typeof t.p2Address=="string"&&Gt(t.p2Address)),aa(!1),Va(t)},Nn=()=>{Je([]),Ca([])},An=["bazi","ziwei","trend","chenggu"],bi=t=>{n(t.kind),I(t.date),t.time&&ae(t.time),se(!!t.hourUnknown),t.gender&&me(t.gender),le(t.address||""),Ke(t.trueSolar!==!1),Ye(t.lateZi!==!1)},Ln=t=>{const f=R.profEvent(t.target);if(!f)return;const C=v=>Xa.find(pe=>pe.id===v),O=t.currentTarget.querySelector(".mp-prof-name");if(Ja(""),f.action==="use"){const v=C(f.id);if(!v)return;if(!R.profUsable(v)){Ne("这张档案没有出生时刻,先补上时刻再存一次。");return}Ge="",Jt(R.profilesTouch(v.id)),bi(v),ke(v.kind,{date:v.date,time:v.hourUnknown?"12:00":v.time},void 0,{gender:v.gender||void 0,address:v.address||"",hourUnknown:!!v.hourUnknown,trueSolar:v.trueSolar!==!1,lateZi:v.lateZi!==!1});return}if(f.action==="edit"){const v=C(f.id);if(!v)return;bi(v),Ge=v.label,Qt(v.id);return}if(f.action==="cancel"){Ge="",Qt(null);return}if(f.action==="pin"){Jt(R.profilesPin(f.id));return}if(f.action==="del"){if(Wa!==f.id){Ja(f.id);return}Jt(R.profilesRemove(f.id)),_t===f.id&&(Ge="",Qt(null)),Ne("已从本机删除这张档案卡(不影响已经排出来的盘)。");return}if(f.action==="put"){const v=_t,pe=R.profFromForm({kind:s,date:k,time:X,hourUnknown:re,gender:a,address:Z,trueSolar:Ue,lateZi:Fe},O?O.value:Ge,_t||void 0);if(!pe){Ne("先填好出生日期(和时刻),再存档案。");return}const xe=R.profilesPut(pe);if(!xe.ok){Ne("档案没能存进本机(存储被禁用或已满),排盘不受影响。");return}Jt(xe.list),Ge="",Qt(null),O&&(O.value=""),Ne(`${v?"已更新档案":"已存入我的命盘"}「${xe.item.label}」。`)}},Tn=t=>{const f=t.target&&t.target.closest?t.target.closest(".mp-prof-name"):null;f&&(Ge=f.value)},Cn=t=>{const f=K.formOf?K.formOf(t):null;if(!f){ke("ziwei");return}const C=Ie.some(xe=>xe.k===f.tab)?f.tab:"ziwei",O={date:f.date||k,time:f.time||X},v=f.lines===void 0?void 0:Array.isArray(f.lines)?f.lines.join(" "):String(f.lines);f.date&&I(f.date),f.time&&ae(f.time),f.gender&&me(f.gender),typeof f.address=="string"&&le(f.address),typeof f.trueSolar=="boolean"&&Ke(f.trueSolar),typeof f.lateZi=="boolean"&&Ye(f.lateZi),v!==void 0&&Y(v),f.question&&$a(f.question),n(C);const pe=K.restNote?K.restNote(f):"";be(`已按深链还原:${t.label}${f.question?`|${f.question}`:""}${pe?` ${pe}`:""}`),ke(C,O,void 0,{gender:f.gender,address:f.address,trueSolar:f.trueSolar,lateZi:f.lateZi,lines:v,question:f.question})};lt(()=>{let t=!1;const f=He;return(async()=>{let C=null;try{await ca(s);const O=typeof location<"u"?String(location.href):"";O&&O.indexOf("mp=")>=0&&window.Engine&&window.Engine.parseAskLink&&(C=window.Engine.parseAskLink(O))}catch{C=null}if(!(t||He!==f)){if(C&&C.ok)try{Cn(C);return}catch{}ke("ziwei")}})(),()=>{t=!0}},[]),lt(()=>{if(!va)return;const t=va.kind;Va(null),ke(t)},[va]),lt(()=>{const t=f=>{if(f.key!=="Escape")return;const C=document.getElementById("mp-trace-layer");C&&C.classList.contains("open")&&gi()};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[]);const vi=(ba||[]).filter(t=>t&&Ie.some(f=>f.k===t.tab)).slice(0,Fa),_n=t=>(Ie.find(f=>f.k===t)||{}).label||t,En=({k:t,label:f,tip:C,wide:O})=>p("button",{key:t,type:"button",className:"mp-tool"+(O?" wide":"")+(s===t?" on":""),"data-tab":t,onClick:()=>za(t)},p("b",null,f),p("span",null,C)),Hn=[p("div",{key:"profiles",className:"mp-profwrap",onClick:Ln,onInput:Tn,dangerouslySetInnerHTML:{__html:R.profilesHTML(Xa,{editingId:_t,armedDel:Wa,bar:An.indexOf(s)>=0?R.profilesBarHTML({editingId:_t,name:Ge}):""})}}),p("section",{key:"start",className:"mp-start","aria-label":"选择要算的事"},p("div",{className:"mp-start-top"},p("div",{className:"mp-recent",hidden:vi.length===0},p("span",{className:"mp-recent-lbl"},"最近用过"),p("span",{className:"mp-recent-list"},vi.map(t=>p("button",{key:t.tab,type:"button",className:"mp-rc",onClick:()=>za(t.tab)},_n(t.tab),p("i",null,Ii(t.at)))))),p("div",{className:"mp-viewsw",role:"group","aria-label":"首屏视图"},p("button",{type:"button",className:Ee==="group"?"on":"","aria-pressed":Ee==="group"?"true":"false",onClick:()=>di("group")},"分组"),p("button",{type:"button",className:Ee==="flat"?"on":"","aria-pressed":Ee==="flat"?"true":"false",onClick:()=>di("flat")},"平铺"))),Ee==="group"?p("div",{className:"mp-groups"},Ri.map(t=>{const f=!!Wi[t.title],C=Math.max(0,t.items.length-4);return p("section",{key:t.title,className:"mp-tgroup"+(f?" open":"")},p("div",{className:"mp-tgroup-head"},p("h2",null,t.title),p("p",null,t.hint)),p("div",{className:"mp-ttools"},t.items.map(En),C>0?p("button",{key:"more",type:"button",className:"mp-tmore","aria-expanded":f?"true":"false",onClick:()=>Ji(O=>Object.assign({},O,{[t.title]:!f}))},f?"收起":`还有 ${C} 个`):null))})):null),p("div",{key:"tabs",className:"mp-tabs"+(Ee==="flat"?"":" hide"),role:"tablist","aria-label":"命理体系"},Ie.map(t=>p("button",{key:t.k,role:"tab","aria-selected":s===t.k?"true":"false",tabIndex:s===t.k?0:-1,className:"mp-tab"+(s===t.k?" on":""),onClick:()=>za(t.k)},t.label))),p("div",{key:"head",className:"mp-panel"},p("div",{className:"mp-row"},pi?J(Et?"出生日期(公历)":Ae==="date"?"日期(公历)":"起卦日期(公历)",p(ma,{value:k,onChange:rn,onInvalid:()=>Ne("日期请按「年-月-日」填写,例如 1990-05-12。")})):null,li?J(Et?"出生时刻":"起卦时刻",p("input",{className:"mp-input",type:"time",value:X,disabled:re&&(s==="bazi"||s==="trend"),onChange:t=>pn(t.target.value)})):null,s==="bazi"||s==="trend"?p("label",{className:"mp-chk",title:"不知道出生时辰时勾这里:不排时柱,起运按日估算,结果首行会写明"},p("input",{type:"checkbox",checked:re,onChange:t=>se(t.target.checked)})," 时辰未知"):null,Et?J("性别",p("select",{className:"mp-input",value:a,onChange:t=>me(t.target.value)},p("option",{value:"female"},"女"),p("option",{value:"male"},"男"))):null,Et?J("出生地(省/市即可)",p("input",{className:"mp-input",placeholder:"如 河北石家庄 / 成都",value:Z,onChange:t=>le(t.target.value)})):null,s==="bazi"||s==="ziwei"?p("label",{className:"mp-field mp-checks"},p("input",{type:"checkbox",checked:Nt,onChange:t=>ha(t.target.checked)}),p("span",{className:"mp-lbl"},"八字 × 紫微 交叉验证")):null,s==="hepan"?J("对方出生日期",p(ma,{value:ge,onChange:ve,onInvalid:()=>Ne("对方出生日期请按「年-月-日」填写,例如 1992-08-15。")})):null,s==="hepan"?J("对方出生时刻",p("input",{className:"mp-input",type:"time",value:Q,onChange:t=>ee(t.target.value)})):null,s==="hepan"?J("对方性别",p("select",{className:"mp-input",value:G,onChange:t=>B(t.target.value)},p("option",{value:"female"},"女"),p("option",{value:"male"},"男"))):null,s==="hepan"?J("合盘方式",p("div",{className:"mp-seg"},p("button",{className:et==="bazi"?"on":"",onClick:()=>Be("bazi")},"八字"),p("button",{className:et==="ziwei"?"on":"",onClick:()=>Be("ziwei")},"紫微"))):null,s==="hepan"?J("对方出生地(可空)",p("input",{className:"mp-input",placeholder:"如 四川成都",value:he,onChange:t=>ct(t.target.value)})):null,s==="hepan"?p("label",{className:"mp-field mp-checks"},p("input",{type:"checkbox",checked:Te,onChange:t=>mt(t.target.checked)}),p("span",{className:"mp-lbl"},"三方合盘(加入第三人)")):null,s==="hepan"&&Te?J("第三方出生日期",p(ma,{value:Ze,onChange:wt,onInvalid:()=>Ne("第三方出生日期请按「年-月-日」填写,例如 1990-01-01。")})):null,s==="hepan"&&Te?J("第三方出生时刻",p("input",{className:"mp-input",type:"time",value:kt,onChange:t=>zt(t.target.value)})):null,s==="hepan"&&Te?J("第三方性别",p("select",{className:"mp-input",value:jt,onChange:t=>qt(t.target.value)},p("option",{value:"female"},"女"),p("option",{value:"male"},"男"))):null,s==="hepan"&&Te?J("第三方出生地(可空)",p("input",{className:"mp-input",placeholder:"如 广东广州",value:ut,onChange:t=>Gt(t.target.value)})):null,s==="qimen"?p("fieldset",{key:"qmr",className:"mp-qmrule"},p("legend",{className:"mp-lbl"},"换局规则"),p("div",{className:"mp-qmopts",role:"radiogroup","aria-label":"奇门换局规则"},[["chaibu","拆补"],["chaoshen","超神接气"],["zhirun","置闰"]].map(([t,f])=>p("label",{key:t,className:"mp-qmopt"},p("input",{type:"radio",name:"qimen_rule",value:t,checked:St===t,onChange:()=>Bt(t)}),p("span",null,f)))),p("div",{className:"mp-field"},p("span",{className:"mp-lbl"},"晚子时"),p("select",{className:"mp-input",value:Mt,onChange:t=>Zt(t.target.value)},p("option",{value:"same-day"},"23:00 后归当日"),p("option",{value:"next-day"},"23:00 后归次日"))),p("details",{className:"mp-qmhelp"},p("summary",null,"三种规则有什么区别?"),p("p",null,"决定符头与节气如何对齐、是否插入闰局;同一个时刻在不同规则下可能得到不同局数。默认「拆补」与工具层一致。"))):null,Oe(s)||s==="qimen"?J(s==="qimen"?"询问方向(定用神)":"询问方向",p("select",{className:"mp-input",value:nt,onChange:t=>{ti(t.target.value),fi(t.target.value)}},(K.DIRECTIONS||[]).map(t=>p("option",{key:t.key,value:t.key},t.label)))):null,s==="tarot"?J("张数",p("select",{className:"mp-input",value:ya,onChange:t=>ei(t.target.value)},p("option",{value:"1"},"1 张 · 指引"),p("option",{value:"3"},"3 张 · 过去现在未来"),p("option",{value:"5"},"5 张 · 十字牌阵"))):null,s==="liuyao"?J("六爻(可空)",p("input",{className:"mp-input",placeholder:"空则随机,如 9 7 8 8 7 6",value:V,onChange:t=>Y(t.target.value)})):null,s==="meihua"?J("起卦方式",p("div",{className:"mp-seg"},p("button",{className:st==="time"?"on":"",onClick:()=>mi("time")},"时间"),p("button",{className:st==="number"?"on":"",onClick:()=>mi("number")},"数字"))):null,s==="meihua"&&st==="number"?J("第一个数",p("input",{className:"mp-input",value:ia,placeholder:"如 17",onChange:t=>ni(t.target.value)})):null,s==="meihua"&&st==="number"?J("第二个数",p("input",{className:"mp-input",value:na,placeholder:"如 29",onChange:t=>si(t.target.value)})):null,s==="meihua"&&st==="number"?J("动爻(可空)",p("input",{className:"mp-input",value:sa,placeholder:"1-6",onChange:t=>oi(t.target.value)})):null,s==="zeri"?J("所办事项",p("select",{className:"mp-input",value:Xe,onChange:t=>xt(t.target.value)},[["常用",["嫁娶","搬家入宅","出行","开业","签订合同","祭祀"]],["婚嫁",["嫁娶","订婚","领证","提亲","收送聘金","满月酒"]],["生活",["搬家","入宅","旅行","访亲友","入学","求医","祭祀"]],["建造",["动土","装修","装修建造","安葬","试车买车"]],["工商",["开业","交易","投资","签订合同","签约","纳财","赴任"]]].map(([t,f])=>p("optgroup",{key:t,label:t},f.map(C=>p("option",{key:`${t}-${C}`,value:C},C)))))):null,s==="convert"?J("转换方向",p("div",{className:"mp-seg"},p("button",{className:i==="solar2lunar"?"on":"",onClick:()=>r("solar2lunar")},"公历 → 农历"),p("button",{className:i==="lunar2solar"?"on":"",onClick:()=>r("lunar2solar")},"农历 → 公历"))):null,s==="convert"&&i==="lunar2solar"?J("农历日期",p("input",{className:"mp-input",value:l,placeholder:"如 2026-9-17",onChange:t=>o(t.target.value)})):null,s==="convert"&&i==="lunar2solar"?p("label",{className:"mp-check"},p("input",{type:"checkbox",checked:m,onChange:t=>d(t.target.checked)})," 闰月"):null,s==="zeri"?J("看多少天",p("input",{className:"mp-input",type:"number",min:1,max:60,value:it,onChange:t=>Lt(t.target.value)})):null,s==="zeri"?J("候选日(可空,只比这几天)",p("input",{className:"mp-input",placeholder:"如 2026-12-01, 2026-12-08, 2026-12-15",value:Tt,onChange:t=>e(t.target.value)})):null,s==="zeri"?J("当事人属相(可空)",p("select",{className:"mp-input",value:ht,onChange:t=>Wt(t.target.value)},p("option",{value:""},"不排除"),["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"].map(t=>p("option",{key:t,value:t},t)))):null,s==="xiaoliuren"?J("起课方式",p("div",{className:"mp-seg"},p("button",{className:c==="time"?"on":"",onClick:()=>g("time")},"时间"),p("button",{className:c==="number"?"on":"",onClick:()=>g("number")},"报数"))):null,s==="xiaoliuren"&&c==="number"?J("第一个数",p("input",{className:"mp-input",type:"number",min:1,max:99,value:x,onChange:t=>h(t.target.value)})):null,s==="xiaoliuren"&&c==="number"?J("第二个数",p("input",{className:"mp-input",type:"number",min:1,max:99,value:T,onChange:t=>j(t.target.value)})):null,s==="xiaoliuren"&&c==="number"?J("第三个数",p("input",{className:"mp-input",type:"number",min:1,max:99,value:z,onChange:t=>q(t.target.value)})):null,s==="mbti"?p("div",{className:"mp-quiz-wrap"},p("div",{className:"mp-lbl"},"十六型人格问卷 · 4 题一页,按 1(完全不像)到 5(很像我)打分"),p(Fi,{answers:H,page:D,onPick:(t,f)=>te(C=>{const O=C.slice();return O[t]=f,O}),onPage:t=>y(f=>Math.max(0,Math.min(f+t,Math.max(0,Math.ceil(It().total/Dt)-1)))),onSubmit:ci,onClear:()=>{te(new Array(It().total).fill(null)),y(0),E(null)}})):null,s==="trend"?J("算到几岁",p("input",{className:"mp-input",type:"number",min:10,max:100,value:A,onChange:t=>ie(t.target.value)})):null,s==="fengshui"?J("看什么",p("div",{className:"mp-seg"},p("button",{className:F==="natal"?"on":"",onClick:()=>U("natal")},"命卦"),p("button",{className:F==="advise"?"on":"",onClick:()=>U("advise")},"门主灶"),p("button",{className:F==="xuankong"?"on":"",onClick:()=>U("xuankong")},"玄空"))):null,s==="fengshui"&&F!=="natal"?J("坐山(24 山)",p("input",{className:"mp-input",value:M,placeholder:"如 子 / 乾",onChange:t=>W(t.target.value)})):null,s==="fengshui"&&F!=="natal"?J("朝向(24 山)",p("input",{className:"mp-input",value:ue,placeholder:"如 午 / 巽",onChange:t=>fe(t.target.value)})):null,s==="fengshui"&&F==="xuankong"?J("运(1–9)",p("input",{className:"mp-input",type:"number",min:1,max:9,value:$,onChange:t=>S(t.target.value)})):null,s==="name"?J("看什么",p("div",{className:"mp-seg"},p("button",{className:ne==="assess"?"on":"",onClick:()=>de("assess")},"评名字"),p("button",{className:ne==="generate"?"on":"",onClick:()=>de("generate")},"生成候选"))):null,s==="name"?J("姓",p("input",{className:"mp-input",value:$e,placeholder:"如 李",onChange:t=>Ce(t.target.value)})):null,s==="name"&&ne==="assess"?J("名字",p("input",{className:"mp-input",value:_e,placeholder:"如 沐宸",onChange:t=>We(t.target.value)})):null,s==="name"&&ne==="generate"?J("候选个数",p("input",{className:"mp-input",type:"number",min:1,max:20,value:Se,onChange:t=>_(t.target.value)})):null),Et?p("div",{className:"mp-checks"},p("label",{title:"按出生地经度把钟表时间换算成真太阳时"},p("input",{type:"checkbox",checked:Ue,onChange:t=>Ke(t.target.checked)}),"真太阳时"),p("label",{title:"23:00–23:59 出生时:勾选=按次日日柱起时柱;不勾=仍用当日日柱"},p("input",{type:"checkbox",checked:Fe,onChange:t=>Ye(t.target.checked)}),"晚子时换日"),p("label",{title:"开启后会请求 OpenStreetMap,把区县/村落到更精确的坐标"},p("input",{type:"checkbox",checked:u,onChange:t=>w(t.target.checked)}),"联网精确到区县")):null,Oe(s)?p("div",{className:"mp-askblock"},p("span",{className:"mp-lbl"},"所问之事(必填)"),p("textarea",{className:"mp-textarea"+(tn?" invalid":""),rows:2,value:bt,placeholder:"用一句话描述所问之事,例如:今年是否适合换工作?",onChange:t=>{$a(t.target.value),aa(!1)},onBlur:t=>fi(void 0,t.target.value)})):null,s==="mbti"?null:p("div",{key:"actions",className:"mp-actions"},p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginRight:8},onClick:ln,title:"用固定示例盘看完整报告(不改动你已填的数据)"},"看示例"),p("button",{className:"mp-btn",onClick:ci,title:"时间仍为自动时,点它会取当下再起卦"},s==="tarot"?"抽牌":s==="bazi"||s==="ziwei"?"排盘":s==="hepan"?"合盘":s==="qimen"?"起局":ua.indexOf(s)>=0?"看结果":"起卦"))),p("div",{key:"hint",className:"mp-hint"},nn.hint),we.length?p("div",{key:"hist",className:"mp-hist"},p("div",{className:"mp-hist-h"},p("span",null,"最近排过"),p("button",{className:"mp-hist-clear",onClick:Nn},"清空")),p("div",{className:"mp-hist-list"},we.map((t,f)=>p("button",{key:f,className:"mp-hist-item",title:`${String(t.date||"")} ${t.hourUnknown?"时辰未知":String(t.time||"")}`,onClick:()=>Mn(t)},p("b",null,(Ie.find(C=>C.k===t.kind)||{}).label||t.kind),p("span",null,t.label||"—"),p("i",null,`${String(t.date||"").slice(5)} ${t.hourUnknown?"时辰未知":String(t.time||"")}`))))):null,Ae==="cast"&&ri?p("div",{key:"auto",className:"mp-auto"},ka.cast?`起卦时刻用的是你手动填的(${X});想跟随当下,把时间改回或清空即可。`:`起卦时刻已自动取本机时间(${X}),每次点起卦都会重新取当下;想固定时刻就在上面改。`):null,ea?p("div",{key:"err",className:"mp-err",role:"alert"},ea):null,Qa?p("div",{key:"ntc",className:"mp-note",role:"status"},Qa):null,Qi?p("div",{key:"load",className:"mp-note",role:"status"},"正在加载本页需要的引擎…"):null,!b&&!ea?p("div",{key:"empty",className:"mp-empty"},p("b",null,s==="ziwei"||s==="bazi"?"填好出生信息,点「排盘」":s==="tarot"?"写下想问的事,点「抽牌」":s==="mbti"?"按 1–5 给题目打分,答满 12 题就能看结果":ua.indexOf(s)>=0?"填好参数,点「看结果」":"写下所问之事,点「起卦」"),s==="ziwei"||s==="bazi"?"出生日期、时刻与性别即可;出生地只影响真太阳时。":s==="mbti"?"4 题一页,答案只在本地参与计算,不会上传。":ua.indexOf(s)>=0?"按上面的选项填好参数即可;全部在本机计算,不上传。":"起卦时刻已自动取当下,也可以手动改。"):null,b?p("div",{key:"card",className:"mp-card mp-flat",role:"region","aria-label":"排盘结果","aria-live":"polite",onClick:vn,dangerouslySetInnerHTML:{__html:yn(b)+R.perfHTML(ce)+R.revisionHTML(b.r.revision)+R.handleHTML(b.r.handle)+R.shadowHTML(b.r.shadow,b.shadowDiff)+R.traceHTML(b.r.trace,b.r.system,b.r.traceText)+R.resultWithInterpret(b.kind==="ziwei"?R.ziweiHTML(b.r):b.kind==="bazi"?R.baziHTML(b.r)+(b.trend?R.trendHTML(b.trend,{brief:!1}):""):b.kind==="meihua"?R.meihuaHTML(b.r):b.kind==="daliuren"?R.daliurenHTML(b.r):b.kind==="qimen"?R.qimenHTML(b.r)+R.qimenFactsHTML(b.r):b.kind==="hepan"?b.r.chart==="ziwei"?R.ziweiHepanHTML(b.r):R.hepanHTML(b.r):b.kind==="tarot"?R.tarotHTML(b.r):b.kind==="liuyao"?R.liuyaoHTML(b.r):b.kind==="chenggu"?R.chengguHTML(b.r):b.kind==="almanac"?R.almanacHTML(b.r):b.kind==="zeri"?R.zeriHTML(b.r):b.kind==="trend"?R.trendHTML(b.r):b.kind==="name"?R.nameHTML(b.r):b.kind==="mbti"?R.mbtiHTML(b.r):b.kind==="fengshui"?R.fengshuiHTML(b.r):R.quickHTML(b.r),b.it,{folded:cn()})+R.caliberHTML(b.caliber)}}):null,b?p("div",{key:"bar",className:"mp-bar"},p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px"},onClick:$n},an||"复制文字结果"),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginLeft:8},onClick:zn,title:"导出盘面 + 解析(含一页读懂、三张表)为 Markdown"},"导出 .md"),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginLeft:8},onClick:jn,title:"生成 PNG 摘要卡(一页读懂 + 首张表),适合直接分享"},"存为摘要长图")):null,b?p("div",{key:"ask",className:"mp-askbox",style:{flexWrap:"wrap"}},p("input",{className:"mp-input",value:je,maxLength:120,placeholder:"追问:如 2027 年事业怎么样(回车提交)",onChange:t=>gt(t.target.value),onKeyDown:t=>{t.key==="Enter"&&xi()}}),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px"},onClick:xi},"追问"),p("button",{className:"mp-btn ghost",style:{fontSize:12,padding:"5px 12px",marginLeft:8},onClick:kn,title:"把这张盘的摘要和你的问题一起发进 DSH 对话窗,由对话里的模型接着答"},"问进对话"),oe.ref?null:p("div",{key:"bridgediag",className:"mp-note",style:{marginTop:6,fontSize:11,flexBasis:"100%"}},Ia()),Ut?p("div",{key:"chatnote",className:"mp-note",style:{marginTop:6,fontSize:12,flexBasis:"100%"}},Ut):null):null,b?p("div",{key:"bridge",className:"mp-bridge"},p("span",{className:"mp-bridge-lbl"},oe.ref?"桥可用;也可以:":"桥未就绪,改走这几档:"),ui.map(([t,f,C])=>p("button",{key:t,type:"button",className:"mp-chip","data-bridge-copy":t,title:C,onClick:O=>hn(t,O.currentTarget)},f))):null,Kt?p("div",{key:"fx",className:"mp-fx",dangerouslySetInnerHTML:{__html:R.followupHTML(Kt)}}):null,b&&b.kind==="bazi"&&b.r.past?p("div",{key:"verify",className:"mp-verify"},p("div",{className:"mp-verify-h"},"验前事 · 过去几年的信号(只读,不改盘)"),b.r.past.rows.map(t=>p("div",{key:t.year,className:"mp-verify-row"},p("span",{className:"mp-verify-txt"},`${t.year} ${t.ganzhi} · ${t.theme}`),p("span",{className:"mp-verify-btns"},["yes","no","unsure"].map(f=>p("button",{key:f,className:"mp-chip"+(ft[t.year]===f?" on":""),onClick:()=>Yt(Object.assign({},ft,{[t.year]:f}))},f==="yes"?"准":f==="no"?"不准":"不确定"))))),p("div",{className:"mp-verify-foot"},p("button",{className:"mp-btn ghost",style:hi,onClick:qn},"算贴合度"),tt?p("span",{className:"mp-verify-fit"},`命中 ${tt.yes}/${tt.answered}(${tt.level}):${tt.advice}`):null)):null,b&&b.kind==="bazi"?p("div",{key:"rect",className:"mp-rect"},p("div",{className:"mp-verify-h"},"生时校正 · 用过去的事反推时辰"),at.map((t,f)=>p("div",{key:f,className:"mp-rect-row"},p("input",{className:"mp-input",type:"number",min:1900,max:2100,value:t.year,onChange:C=>Xt(at.map((O,v)=>v===f?Object.assign({},O,{year:C.target.value}):O))}),p("select",{className:"mp-input",value:t.kind,onChange:C=>Xt(at.map((O,v)=>v===f?Object.assign({},O,{kind:C.target.value}):O))},[["career","事业变动"],["wealth","财运"],["love","感情"],["move","搬迁/出行"],["health","健康"],["other","其他"]].map(([C,O])=>p("option",{key:C,value:C},O))))),p("button",{className:"mp-btn ghost",style:hi,onClick:Sn},"计算候选时辰"),Ve?Ve.error?p("div",{className:"mp-rect-err"},Ve.error):p("div",{className:"mp-rect-out"},p("div",{className:"mp-verify-fit"},Ve.note),Ve.candidates.slice(0,6).map(t=>p("div",{key:t.hour,className:"mp-rect-cand"+(t===Ve.best?" best":"")},`${t.label} · 时柱 ${t.hourGanzhi} · 日柱 ${t.dayGanzhi} · 命中 ${t.hits}/${t.total}`))):null):null,!b&&!ea?p("div",{key:"ph",className:"mp-dim",style:{marginTop:24,fontSize:12}},"选择体系后点「排盘」。所有计算在本机完成,不上传任何数据。"):null];return p("div",{className:"mp-wrap"},Hn)}function Ki(s){try{if(typeof styles<"u"&&styles&&typeof styles.insert=="function")return styles.insert(s)}catch(n){console.error("[metaphysics] styles.insert 不可用,改用 DOM 注入",n)}try{const n=document.createElement("style");return n.setAttribute("data-plugin","@local/metaphysics"),n.textContent=s,document.head.appendChild(n),()=>n.remove()}catch(n){return console.error("[metaphysics] DOM 注入样式也失败",n),()=>{}}}let Ya=!1;function xa(){try{const s=document.documentElement;if(!s||!document.body)return;const n=document.createElement("span");n.setAttribute("aria-hidden","true"),n.style.cssText="position:absolute;left:-9999px;top:0;width:0;height:0;pointer-events:none;background:var(--dsw-alias-brand-primary)",document.body.appendChild(n);const k=getComputedStyle(n).backgroundColor;n.remove();const I=qe&&typeof qe.pickOnColor=="function"?qe.pickOnColor(k):"";I&&s.style&&s.style.getPropertyValue("--mp-on-brand")!==I&&s.style.setProperty("--mp-on-brand",I)}catch{}}function Yi(){if(!Ya){Ya=!0,xa();try{const s=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)");s&&typeof s.addEventListener=="function"&&s.addEventListener("change",xa)}catch{}try{typeof MutationObserver=="function"&&document.documentElement&&new MutationObserver(xa).observe(document.documentElement,{attributes:!0,attributeFilter:["class","data-theme"]})}catch{}}}function Vi(s){try{const Z=Ki(_i+(R&&R.CSS?R.CSS:""));typeof s.effect=="function"&&typeof Z=="function"&&s.effect(()=>Z)}catch(Z){console.error("[metaphysics] 样式注入失败",Z)}try{Yi()}catch(Z){console.error("[metaphysics] 字色同步失败",Z)}let n=null;try{n=s&&s.slots||(s&&typeof s.get=="function"?s.get("slots"):null)}catch(Z){console.error("[metaphysics] 取 slots 服务失败",Z)}if(!n||typeof n.register!="function"){console.error("[metaphysics] slots 服务不可用,面板未注册");return}try{oe.injectType=typeof n.inject;const Z=typeof n.spec=="function"?n.spec("conversation.input.right"):null;oe.spec=Z?Z.kind+"/"+Z.scope:"未声明"}catch(Z){oe.spec="取声明失败",Ga(Z)}const k=(Z,le)=>{try{const ge=n.register(Z,le);return oe.regs+=1,oe.seatOk[Z.name]=!0,ge}catch(ge){return Ga(ge),null}},I=(Z,le)=>{try{typeof n.inject=="function"?n.inject(Z,le):le()}catch(ge){console.error("[metaphysics] 等待槽位失败:"+Z,ge);try{le()}catch(ve){console.error("[metaphysics] 直接注册也失败:"+Z,ve)}}};I("sidebar.panellist",()=>k({name:"sidebar.panellist",id:"metaphysics",order:20,label:()=>"命理 v"+(window.__MP_VER||"")},Di)),I("main",()=>k({name:"main",key:"metaphysics"},Z=>p(Pi,null,p(Ui,Z))));const X=(Z,le)=>{const ge=()=>{try{n.inject(Z,le)}catch(ve){console.error("[metaphysics] 槽位注册失败:"+Z,ve);try{le()}catch(Q){console.error("[metaphysics] 直接注册也失败:"+Z,Q)}}};try{typeof s.effect=="function"?s.effect(ge,"metaphysics: "+Z):ge()}catch(ve){console.error("[metaphysics] effect 包裹失败:"+Z,ve),ge()}};X("conversation.input.right",()=>k({name:"conversation.input.right",id:"metaphysics-ask",order:40},Za)),X("conversation.composer.dock",()=>k({name:"conversation.composer.dock",id:"metaphysics-dock",order:60},Ua));let ae=0;const re=()=>{if(oe.ref)return;ae+=1;const Z="-"+ae;oe.seatOk["conversation.input.right"]||k({name:"conversation.input.right",id:"metaphysics-ask"+Z,order:40},Za),oe.seatOk["conversation.composer.dock"]||k({name:"conversation.composer.dock",id:"metaphysics-dock"+Z,order:60},Ua)};let se=20;const a=()=>oe.seatOk["conversation.input.right"]&&oe.seatOk["conversation.composer.dock"],me=()=>{oe.ref||se<=0||a()||(se-=1,re(),!a()&&setTimeout(me,700))};try{setTimeout(me,700)}catch{}try{document.addEventListener("pointerdown",()=>re(),{once:!0,capture:!0})}catch{}}return{inject:["slots"],apply(s){try{Vi(s)}catch(n){console.error("[metaphysics] apply 异常",n)}}}}});