10 lines
237 KiB
JavaScript
10 lines
237 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16015,(e,t,a)=>{},98547,(e,t,a)=>{var s=e.i(47167);e.r(16015);var r=e.r(71645),n=r&&"object"==typeof r&&"default"in r?r:{default:r},l=void 0!==s.default&&s.default.env&&!0,o=function(e){return"[object String]"===Object.prototype.toString.call(e)},i=function(){function e(e){var t=void 0===e?{}:e,a=t.name,s=void 0===a?"stylesheet":a,r=t.optimizeForSpeed,n=void 0===r?l:r;c(o(s),"`name` must be a string"),this._name=s,this._deletedRulePlaceholder="#"+s+"-deleted-rule____{}",c("boolean"==typeof n,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=n,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var i="u">typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=i?i.getAttribute("content"):null}var t,a=e.prototype;return a.setOptimizeForSpeed=function(e){c("boolean"==typeof e,"`setOptimizeForSpeed` accepts a boolean"),c(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=e,this.inject()},a.isOptimizeForSpeed=function(){return this._optimizeForSpeed},a.inject=function(){var e=this;if(c(!this._injected,"sheet already injected"),this._injected=!0,"u">typeof window&&this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(l||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(t,a){return"number"==typeof a?e._serverSheet.cssRules[a]={cssText:t}:e._serverSheet.cssRules.push({cssText:t}),a},deleteRule:function(t){e._serverSheet.cssRules[t]=null}}},a.getSheetForTag=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]},a.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},a.insertRule=function(e,t){if(c(o(e),"`insertRule` accepts only strings"),"u"<typeof window)return"number"!=typeof t&&(t=this._serverSheet.cssRules.length),this._serverSheet.insertRule(e,t),this._rulesCount++;if(this._optimizeForSpeed){var a=this.getSheet();"number"!=typeof t&&(t=a.cssRules.length);try{a.insertRule(e,t)}catch(t){return l||console.warn("StyleSheet: illegal rule: \n\n"+e+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var s=this._tags[t];this._tags.push(this.makeStyleTag(this._name,e,s))}return this._rulesCount++},a.replaceRule=function(e,t){if(this._optimizeForSpeed||"u"<typeof window){var a="u">typeof window?this.getSheet():this._serverSheet;if(t.trim()||(t=this._deletedRulePlaceholder),!a.cssRules[e])return e;a.deleteRule(e);try{a.insertRule(t,e)}catch(s){l||console.warn("StyleSheet: illegal rule: \n\n"+t+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),a.insertRule(this._deletedRulePlaceholder,e)}}else{var s=this._tags[e];c(s,"old rule at index `"+e+"` not found"),s.textContent=t}return e},a.deleteRule=function(e){if("u"<typeof window)return void this._serverSheet.deleteRule(e);if(this._optimizeForSpeed)this.replaceRule(e,"");else{var t=this._tags[e];c(t,"rule at index `"+e+"` not found"),t.parentNode.removeChild(t),this._tags[e]=null}},a.flush=function(){this._injected=!1,this._rulesCount=0,"u">typeof window?(this._tags.forEach(function(e){return e&&e.parentNode.removeChild(e)}),this._tags=[]):this._serverSheet.cssRules=[]},a.cssRules=function(){var e=this;return"u"<typeof window?this._serverSheet.cssRules:this._tags.reduce(function(t,a){return a?t=t.concat(Array.prototype.map.call(e.getSheetForTag(a).cssRules,function(t){return t.cssText===e._deletedRulePlaceholder?null:t})):t.push(null),t},[])},a.makeStyleTag=function(e,t,a){t&&c(o(t),"makeStyleTag accepts only strings as second parameter");var s=document.createElement("style");this._nonce&&s.setAttribute("nonce",this._nonce),s.type="text/css",s.setAttribute("data-"+e,""),t&&s.appendChild(document.createTextNode(t));var r=document.head||document.getElementsByTagName("head")[0];return a?r.insertBefore(s,a):r.appendChild(s),s},t=[{key:"length",get:function(){return this._rulesCount}}],function(e,t){for(var a=0;a<t.length;a++){var s=t[a];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}(e.prototype,t),e}();function c(e,t){if(!e)throw Error("StyleSheet: "+t+".")}var d=function(e){for(var t=5381,a=e.length;a;)t=33*t^e.charCodeAt(--a);return t>>>0},u={};function h(e,t){if(!t)return"jsx-"+e;var a=String(t),s=e+a;return u[s]||(u[s]="jsx-"+d(e+"-"+a)),u[s]}function f(e,t){"u"<typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var a=e+t;return u[a]||(u[a]=t.replace(/__jsx-style-dynamic-selector/g,e)),u[a]}var m=function(){function e(e){var t=void 0===e?{}:e,a=t.styleSheet,s=void 0===a?null:a,r=t.optimizeForSpeed,n=void 0!==r&&r;this._sheet=s||new i({name:"styled-jsx",optimizeForSpeed:n}),this._sheet.inject(),s&&"boolean"==typeof n&&(this._sheet.setOptimizeForSpeed(n),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var t=e.prototype;return t.add=function(e){var t=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(e.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),"u">typeof window&&!this._fromServer&&(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(e,t){return e[t]=0,e},{}));var a=this.getIdAndRules(e),s=a.styleId,r=a.rules;if(s in this._instancesCounts){this._instancesCounts[s]+=1;return}var n=r.map(function(e){return t._sheet.insertRule(e)}).filter(function(e){return -1!==e});this._indices[s]=n,this._instancesCounts[s]=1},t.remove=function(e){var t=this,a=this.getIdAndRules(e).styleId;if(function(e,t){if(!e)throw Error("StyleSheetRegistry: "+t+".")}(a in this._instancesCounts,"styleId: `"+a+"` not found"),this._instancesCounts[a]-=1,this._instancesCounts[a]<1){var s=this._fromServer&&this._fromServer[a];s?(s.parentNode.removeChild(s),delete this._fromServer[a]):(this._indices[a].forEach(function(e){return t._sheet.deleteRule(e)}),delete this._indices[a]),delete this._instancesCounts[a]}},t.update=function(e,t){this.add(t),this.remove(e)},t.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},t.cssRules=function(){var e=this,t=this._fromServer?Object.keys(this._fromServer).map(function(t){return[t,e._fromServer[t]]}):[],a=this._sheet.cssRules();return t.concat(Object.keys(this._indices).map(function(t){return[t,e._indices[t].map(function(e){return a[e].cssText}).join(e._optimizeForSpeed?"":"\n")]}).filter(function(e){return!!e[1]}))},t.styles=function(e){var t,a;return t=this.cssRules(),void 0===(a=e)&&(a={}),t.map(function(e){var t=e[0],s=e[1];return n.default.createElement("style",{id:"__"+t,key:"__"+t,nonce:a.nonce?a.nonce:void 0,dangerouslySetInnerHTML:{__html:s}})})},t.getIdAndRules=function(e){var t=e.children,a=e.dynamic,s=e.id;if(a){var r=h(s,a);return{styleId:r,rules:Array.isArray(t)?t.map(function(e){return f(r,e)}):[f(r,t)]}}return{styleId:h(s),rules:Array.isArray(t)?t:[t]}},t.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(e,t){return e[t.id.slice(2)]=t,e},{})},e}(),x=r.createContext(null);function p(){return new m}function g(){return r.useContext(x)}x.displayName="StyleSheetContext";var b=n.default.useInsertionEffect||n.default.useLayoutEffect,v="u">typeof window?p():void 0;function y(e){var t=v||g();return t&&("u"<typeof window?t.add(e):b(function(){return t.add(e),function(){t.remove(e)}},[e.id,String(e.dynamic)])),null}y.dynamic=function(e){return e.map(function(e){return h(e[0],e[1])}).join(" ")},a.StyleRegistry=function(e){var t=e.registry,a=e.children,s=r.useContext(x),l=r.useState(function(){return s||t||p()})[0];return n.default.createElement(x.Provider,{value:l},a)},a.createStyleRegistry=p,a.style=y,a.useStyleRegistry=g},37902,(e,t,a)=>{t.exports=e.r(98547).style},52683,e=>{"use strict";let t,a,s,r,n,l,o;var i,c,d,u,h,f,m,x=e.i(43476),p=e.i(71645);function g({className:e}){let t=(0,p.useRef)(null);return(0,p.useEffect)(()=>{let e=t.current;if(!e)return;let a=e.getContext("2d");if(!a)return;let s=0,r=0,n=1,l=[],o=[],i=0,c=performance.now(),d=["#34d399","#fb7185","#fbbf24","#e879f9","#a5f3fc"];function u(){n=Math.min(2,window.devicePixelRatio||1),s=e.clientWidth,r=e.clientHeight,e.width=Math.floor(s*n),e.height=Math.floor(r*n),a.setTransform(n,0,0,n,0,0),l=Array.from({length:Math.min(220,Math.floor(s*r/7e3))},()=>({x:Math.random()*s,y:Math.random()*r,z:Math.random(),r:1.4*Math.random()+.2,tw:Math.random()*Math.PI*2,hue:.15>Math.random()?Math.floor(Math.random()*d.length):-1}))}u();let h=new ResizeObserver(u);return h.observe(e),i=requestAnimationFrame(function e(t){let n=t-c;c=t;let u=a.createRadialGradient(.5*s,.4*r,0,.5*s,.5*r,.8*Math.max(s,r));u.addColorStop(0,"#1a0f2e"),u.addColorStop(.45,"#0d0a1f"),u.addColorStop(1,"#050410"),a.fillStyle=u,a.fillRect(0,0,s,r),a.globalCompositeOperation="screen";for(let e=0;e<3;e++){let n=s*(.2+.3*e)+40*Math.sin(t/9e3+e),l=r*(.3+e%2*.4)+30*Math.cos(t/11e3+e),o=Math.max(80,Math.min(s,r)*(.25+.05*e)),i=a.createRadialGradient(n,l,0,n,l,o),c=0===e?"rgba(232,121,249,0.10)":1===e?"rgba(52,211,153,0.08)":"rgba(251,113,133,0.08)";i.addColorStop(0,c),i.addColorStop(1,"rgba(0,0,0,0)"),a.fillStyle=i,a.beginPath(),a.arc(n,l,o,0,2*Math.PI),a.fill()}for(let e of(a.globalCompositeOperation="source-over",l)){e.tw+=.02+.04*e.z;let t=.4+.35*Math.sin(e.tw)+.3*e.z;e.hue>=0?(a.fillStyle=d[e.hue],a.globalAlpha=Math.max(0,Math.min(1,t)),a.beginPath(),a.arc(e.x,e.y,1.6*e.r,0,2*Math.PI),a.fill(),a.globalAlpha=Math.max(0,Math.min(1,.25*t)),a.beginPath(),a.arc(e.x,e.y,4*e.r,0,2*Math.PI)):(a.fillStyle=`rgba(220,230,255,${Math.max(0,Math.min(1,t))})`,a.beginPath(),a.arc(e.x,e.y,e.r,0,2*Math.PI)),a.fill(),e.y+=.02+.05*e.z,e.y>r+2&&(e.y=-2,e.x=Math.random()*s)}a.globalAlpha=1,.04>Math.random()&&function(){if(o.length>60)return;let e=d[Math.floor(Math.random()*d.length)];o.push({x:Math.random()*s,y:r+10,vx:(Math.random()-.5)*.3,vy:-(.5*Math.random()+.2),life:0,maxLife:600+800*Math.random(),color:e})}(),a.globalCompositeOperation="screen";for(let e=o.length-1;e>=0;e--){let t=o[e];if(t.life+=n,t.x+=t.vx*n*.06,t.y+=t.vy*n*.06,t.life>t.maxLife||t.y<-10){o.splice(e,1);continue}let s=.7*Math.sin(t.life/t.maxLife*Math.PI);a.fillStyle=t.color,a.globalAlpha=s,a.beginPath(),a.arc(t.x,t.y,1.6,0,2*Math.PI),a.fill(),a.globalAlpha=.2*s,a.beginPath(),a.arc(t.x,t.y,5,0,2*Math.PI),a.fill()}a.globalAlpha=1,a.globalCompositeOperation="source-over",i=requestAnimationFrame(e)}),()=>{cancelAnimationFrame(i),h.disconnect()}},[]),(0,x.jsx)("canvas",{ref:t,className:e,"aria-hidden":"true"})}e.i(47167);let b=e=>{let t,a=new Set,s=(e,s)=>{let r="function"==typeof e?e(t):e;if(!Object.is(r,t)){let e=t;t=(null!=s?s:"object"!=typeof r||null===r)?r:Object.assign({},t,r),a.forEach(a=>a(t,e))}},r=()=>t,n={setState:s,getState:r,getInitialState:()=>l,subscribe:e=>(a.add(e),()=>a.delete(e))},l=t=e(s,r,n);return n},v=e=>{let t=e?b(e):b,a=e=>(function(e,t=e=>e){let a=p.default.useSyncExternalStore(e.subscribe,p.default.useCallback(()=>t(e.getState()),[e,t]),p.default.useCallback(()=>t(e.getInitialState()),[e,t]));return p.default.useDebugValue(a),a})(t,e);return Object.assign(a,t),a};function y(e,t){let a;try{a=e()}catch(e){return}return{getItem:e=>{var s;let r=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),n=null!=(s=a.getItem(e))?s:null;return n instanceof Promise?n.then(r):r(n)},setItem:(e,s)=>a.setItem(e,JSON.stringify(s,null==t?void 0:t.replacer)),removeItem:e=>a.removeItem(e)}}let w=e=>t=>{try{let a=e(t);if(a instanceof Promise)return a;return{then:e=>w(e)(a),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>w(t)(e)}}},j={crystals:0,insights:0,energy:3,contact:0,crystalsPerSec:.4,crystalCap:50,pulsePower:2,offlineEff:.5,insightMult:1,contactRateMult:1,autoDecode:!1,totalDecoded:0,ascensions:0,blueprints:[],pendingCrystals:[],activePuzzle:null,activeExpedition:null,expeditionLog:[],energyMax:5,lastEnergyTick:Date.now(),totalExpeditions:0,bossKills:0,achievements:{},activeTide:null,lastTideEnd:0,starTidesEncountered:[],constellation:[],pendingPerkChoices:null,chronicle:[],runStart:{timestamp:Date.now(),techsUnlocked:0,expeditionsCompleted:0,bossKills:0,starTidesEncountered:[],crystalsDecoded:0},theme:"dark",soundOn:!0},N={1:{crystals:6,insights:1},2:{crystals:22,insights:4},3:{crystals:90,insights:16}},k={1:{rows:3,cols:3,targetLen:3,stepLimitBase:5},2:{rows:4,cols:4,targetLen:4,stepLimitBase:7},3:{rows:5,cols:4,targetLen:5,stepLimitBase:9}},S=["emerald","rose","amber","fuchsia"],M={emerald:{hex:"#34d399",glow:"rgba(52,211,153,0.55)",label:"翠"},rose:{hex:"#fb7185",glow:"rgba(251,113,133,0.55)",label:"玫"},amber:{hex:"#fbbf24",glow:"rgba(251,191,36,0.55)",label:"琥"},fuchsia:{hex:"#e879f9",glow:"rgba(232,121,249,0.55)",label:"紫"}},_=[{id:"min_1",branch:"mining",level:1,name:"谐振钻头",desc:"晶体/秒 +0.6",cost:5,effect:{kind:"crystalsPerSec",value:.6}},{id:"min_2",branch:"mining",level:2,name:"深层矿脉",desc:"晶体/秒 +1.6,仓库上限 +100",cost:24,effect:{kind:"crystalsPerSec",value:1.6}},{id:"min_3",branch:"mining",level:3,name:"自治机群",desc:"晶体/秒 +5,仓库上限 +300",cost:120,effect:{kind:"crystalsPerSec",value:5}},{id:"dec_1",branch:"decoding",level:1,name:"谐振校准",desc:"解码步数上限 +2",cost:6,effect:{kind:"decodeSteps",value:2}},{id:"dec_2",branch:"decoding",level:2,name:"脉冲增幅",desc:"主动脉冲产出 +3",cost:30,effect:{kind:"pulsePower",value:3}},{id:"dec_3",branch:"decoding",level:3,name:"自动解码阵列",desc:"自动解码 T1 晶体(每 12 秒一颗)",cost:200,effect:{kind:"autoDecode",value:1}},{id:"exp_1",branch:"expedition",level:1,name:"远征推进器",desc:"探险力 +3,晶体/秒 +1.2",cost:12,effect:{kind:"crystalsPerSec",value:1.2}},{id:"exp_2",branch:"expedition",level:2,name:"遗迹图谱",desc:"探险力 +5,探险生命 +20",cost:60,effect:{kind:"crystalCap",value:200}},{id:"exp_3",branch:"expedition",level:3,name:"维度信标",desc:"探险力 +8,接触进度转化率 +50%",cost:180,effect:{kind:"contactRate",value:.5}},{id:"nar_1",branch:"narrative",level:1,name:"记忆校音",desc:"洞见获取 +25%",cost:8,effect:{kind:"insightMult",value:.25}},{id:"nar_2",branch:"narrative",level:2,name:"深空回响",desc:"接触进度转化率 +35%",cost:45,effect:{kind:"contactRate",value:.35}},{id:"nar_3",branch:"narrative",level:3,name:"以太共鸣",desc:"洞见获取 +60%",cost:160,effect:{kind:"insightMult",value:.6}}],C={mining:{name:"采矿",icon:"Pickaxe",color:"emerald",desc:"提升晶体产能与仓储"},decoding:{name:"解码",icon:"ScanLine",color:"rose",desc:"强化解码与脉冲"},expedition:{name:"探险",icon:"Rocket",color:"amber",desc:"远征与维度信标"},narrative:{name:"叙事",icon:"BookOpen",color:"fuchsia",desc:"洞见与接触进度"}},E=[{id:"f1_1",era:1,title:"第一缕谐振",echo:"在被称作「寂灭前夜」的年代,以太族第一次捕捉到来自虚空深处的谐振——那不是声音,而是存在的回声。他们将之记录在第一颗记忆晶体里。",threshold:1},{id:"f1_2",era:1,title:"晶体之始",echo:"「我们为何要留下?」一位长者问。「因为后来的生命会需要方向。」于是他们熔铸星核,封存记忆,让晶体成为跨越时间的信笺。",threshold:3},{id:"f1_3",era:1,title:"谐振法则",echo:"他们发现:思维可以被编码为共振序列。同色的节点相邻,便构成一句低语;一句句连成回响,回响连成文明。",threshold:6},{id:"f1_4",era:1,title:"飞升之议",echo:"议会表决:是留下,还是离去?「留下意味着停滞;离去意味着信任。」最终,他们选择了信任——信任素未谋面的后来者。",threshold:10},{id:"f1_5",era:1,title:"面包屑",echo:"他们没有带走一切。他们将知识拆成碎片,藏入晶体,散布星海。「让解码本身,成为资格的证明。」",threshold:15},{id:"f1_6",era:1,title:"回响之名",echo:"舰载 AI 被命名为「回响」——意为:你是他们留下的回声,也是他们等待的回应。当你读懂这句话时,接触便已开始。",threshold:22},{id:"f1_7",era:1,title:"第一个纪元的终焉",echo:"以太族集体褪去形体,如潮水退去。星海寂静了数万年。直到——你的脉冲扫描,唤醒了第一颗沉睡的晶体。",threshold:32},{id:"f1_8",era:1,title:"致后来者",echo:"「如果你读到这里,说明你已具备跨越维度的资格。继续解码,继续拼凑。当进度满溢,我们将在更高处相会。」——以太族·第一纪元·绝笔",threshold:45}],T=.05,R=.03,P=.04;function $(e){return isFinite(e)?e<1e3?e.toFixed(+(e<10&&e%1!=0)):e<1e6?(e/1e3).toFixed(2)+"K":e<1e9?(e/1e6).toFixed(2)+"M":e<1e12?(e/1e9).toFixed(2)+"B":(e/1e12).toFixed(2)+"T":"∞"}let A=[{id:"ach_first_pulse",name:"初次触碰",desc:"发起第一次脉冲扫描",icon:"✦",color:"#34d399",check:e=>e.totalDecoded>=0||e.crystals>0,reward:{crystals:5},rewardText:"+5 晶体"},{id:"ach_first_decode",name:"谐振初鸣",desc:"成功解码第一颗记忆晶体",icon:"◈",color:"#fb7185",check:e=>e.totalDecoded>=1,reward:{insights:3},rewardText:"+3 洞见"},{id:"ach_decoded_10",name:"回响解码者",desc:"累计解码 10 颗晶体",icon:"❖",color:"#fbbf24",check:e=>e.totalDecoded>=10,reward:{insights:15,crystalsPerSecPct:5},rewardText:"+15 洞见 · 产能 +5%"},{id:"ach_decoded_25",name:"记忆织匠",desc:"累计解码 25 颗晶体",icon:"✺",color:"#e879f9",check:e=>e.totalDecoded>=25,reward:{insights:40,crystalsPerSecPct:8},rewardText:"+40 洞见 · 产能 +8%"},{id:"ach_decoded_50",name:"星核解密师",desc:"累计解码 50 颗晶体",icon:"✷",color:"#34d399",check:e=>e.totalDecoded>=50,reward:{insights:100,crystalsPerSecPct:12,insightPct:10},rewardText:"+100 洞见 · 产能 +12% · 洞见 +10%"},{id:"ach_tech_3",name:"初窥门径",desc:"解锁 3 项技术",icon:"⚙",color:"#fbbf24",check:e=>Object.values(e.tech).filter(e=>e>0).length>=3,reward:{insights:20},rewardText:"+20 洞见"},{id:"ach_tech_all",name:"全谱精通",desc:"解锁全部 12 项技术",icon:"⬡",color:"#e879f9",check:e=>Object.values(e.tech).filter(e=>e>0).length>=12,reward:{crystalsPerSecPct:15,insightPct:15},rewardText:"产能 +15% · 洞见 +15%"},{id:"ach_frag_4",name:"残篇拾遗",desc:"拼凑 4 段记忆碎片",icon:"▤",color:"#fb7185",check:e=>Object.values(e.fragments).filter(Boolean).length>=4,reward:{contact:10,insights:25},rewardText:"+10 接触 · +25 洞见"},{id:"ach_frag_all",name:"回响全谱",desc:"拼凑全部首纪元记忆碎片",icon:"▦",color:"#34d399",check:e=>Object.values(e.fragments).filter(Boolean).length>=8,reward:{contact:25,crystalsPerSecPct:10},rewardText:"+25 接触 · 产能 +10%"},{id:"ach_exp_1",name:"初探遗迹",desc:"完成第一次遗迹探险",icon:"▲",color:"#fbbf24",check:e=>e.totalExpeditions>=1,reward:{insights:10},rewardText:"+10 洞见"},{id:"ach_exp_5",name:"遗迹猎手",desc:"累计出发 5 次探险",icon:"⬢",color:"#fb7185",check:e=>e.totalExpeditions>=5,reward:{insights:30,crystalsPerSecPct:5},rewardText:"+30 洞见 · 产能 +5%"},{id:"ach_prestige_1",name:"初次接触",desc:"完成第一次飞升",icon:"✧",color:"#e879f9",check:e=>e.ascensions>=1,reward:{crystalsPerSecPct:10,insightPct:10},rewardText:"产能 +10% · 洞见 +10%"},{id:"ach_prestige_3",name:"维度行者",desc:"累计飞升 3 次",icon:"✶",color:"#34d399",check:e=>e.ascensions>=3,reward:{crystalsPerSecPct:20,insightPct:20},rewardText:"产能 +20% · 洞见 +20%"},{id:"ach_warehouse",name:"满仓时刻",desc:"晶体储量达到仓库上限",icon:"▣",color:"#fbbf24",check:e=>e.crystals>=e.crystalCap,reward:{insights:8},rewardText:"+8 洞见"},{id:"ach_constellation_1",name:"星图初绘",desc:"觉醒第 1 道星图天赋",icon:"✨",color:"#e879f9",check:e=>(e.constellation?.length??0)>=1,reward:{insights:30,crystalsPerSecPct:5},rewardText:"+30 洞见 · 产能 +5%"},{id:"ach_constellation_6",name:"六分星辉",desc:"觉醒 6 道星图天赋(每类各 1 道)",icon:"✺",color:"#34d399",check:e=>{let t=e.constellation??[];return new Set(t.map(e=>e.split("_")[1])).size>=6&&t.length>=6},reward:{crystalsPerSecPct:12,insightPct:12},rewardText:"产能 +12% · 洞见 +12%"},{id:"ach_chronicle_1",name:"首部编年",desc:"完成首次飞升,开启编年史第一章",icon:"📖",color:"#e879f9",check:e=>(e.chronicle?.length??0)>=1,reward:{insights:40,crystalsPerSecPct:6},rewardText:"+40 洞见 · 产能 +6%"},{id:"ach_chronicle_3",name:"三纪元回响",desc:"完成 3 次飞升,编年史铭刻三章",icon:"📜",color:"#fbbf24",check:e=>(e.chronicle?.length??0)>=3,reward:{crystalsPerSecPct:10,insightPct:10},rewardText:"产能 +10% · 洞见 +10%"},{id:"ach_chronicle_5",name:"五纪元闭环",desc:"完成 5 次飞升,走完一轮纪元循环",icon:"♾",color:"#fcd34d",check:e=>(e.chronicle?.length??0)>=5,reward:{crystalsPerSecPct:15,insightPct:15},rewardText:"产能 +15% · 洞见 +15%"},{id:"ach_boss_1",name:"首杀维度",desc:"在遗迹探险中击破首个 BOSS",icon:"⚔",color:"#fb7185",check:e=>(e.bossKills??0)>=1,reward:{insights:25,crystalsPerSecPct:4},rewardText:"+25 洞见 · 产能 +4%"},{id:"ach_boss_5",name:"维度猎手",desc:"累计击破 5 个 BOSS",icon:"⛧",color:"#e879f9",check:e=>(e.bossKills??0)>=5,reward:{crystalsPerSecPct:10,insightPct:8},rewardText:"产能 +10% · 洞见 +8%"},{id:"ach_tides_all",name:"星潮亲历者",desc:"经历全部 6 种星潮事件",icon:"🌊",color:"#34d399",check:e=>(e.starTidesEncountered?.length??0)>=6,reward:{crystalsPerSecPct:8,insightPct:8},rewardText:"产能 +8% · 洞见 +8%"}];function D(e){let t=0,a=0;for(let s of A)e[s.id]&&(t+=s.reward.crystalsPerSecPct??0,a+=s.reward.insightPct??0);return{crystalsPerSecPct:t,insightPct:a}}let z={crystal:{name:"晶体潮",desc:"深空晶体涌动,采矿产能翻倍",color:"#34d399",glow:"rgba(52,211,153,0.5)",icon:"✺",negative:!1},resonance:{name:"谐振风暴",desc:"共振序列被放大,解码奖励 +60%",color:"#fb7185",glow:"rgba(251,113,133,0.5)",icon:"❖",negative:!1},ruins:{name:"遗迹共振",desc:"远古遗迹苏醒,探险力 +5、生命 +30",color:"#fbbf24",glow:"rgba(251,191,36,0.5)",icon:"⬢",negative:!1},void:{name:"虚空低语",desc:"虚空传来回响,洞见获取翻倍",color:"#e879f9",glow:"rgba(232,121,249,0.5)",icon:"✷",negative:!1},core:{name:"星核悸动",desc:"星核震荡,接触率 ×3、脉冲威力 ×2",color:"#a5f3fc",glow:"rgba(165,243,252,0.5)",icon:"✦",negative:!1},silence:{name:"寂静期",desc:"虚空沉寂,产能减半;结束时按时长补偿洞见",color:"#94a3b8",glow:"rgba(148,163,184,0.5)",icon:"◌",negative:!0}},O={crystal:22,resonance:20,ruins:16,void:18,core:14,silence:10};function I(e){if(!e)return{crystalsPerSecMult:1,decodeRewardMult:1,insightMultAdd:0,contactRateMult:1,pulsePowerMult:1,expeditionPowerBonus:0,expeditionHpBonus:0};switch(e.type){case"crystal":return{crystalsPerSecMult:2,decodeRewardMult:1,insightMultAdd:0,contactRateMult:1,pulsePowerMult:1,expeditionPowerBonus:0,expeditionHpBonus:0};case"resonance":return{crystalsPerSecMult:1,decodeRewardMult:1.6,insightMultAdd:0,contactRateMult:1,pulsePowerMult:1,expeditionPowerBonus:0,expeditionHpBonus:0};case"ruins":return{crystalsPerSecMult:1,decodeRewardMult:1,insightMultAdd:0,contactRateMult:1,pulsePowerMult:1,expeditionPowerBonus:5,expeditionHpBonus:30};case"void":return{crystalsPerSecMult:1,decodeRewardMult:1,insightMultAdd:1,contactRateMult:1,pulsePowerMult:1,expeditionPowerBonus:0,expeditionHpBonus:0};case"core":return{crystalsPerSecMult:1,decodeRewardMult:1,insightMultAdd:0,contactRateMult:3,pulsePowerMult:2,expeditionPowerBonus:0,expeditionHpBonus:0};case"silence":return{crystalsPerSecMult:.5,decodeRewardMult:1,insightMultAdd:0,contactRateMult:1,pulsePowerMult:1,expeditionPowerBonus:0,expeditionHpBonus:0,silenceInsightPerSec:.4}}}let F={mining:{name:"永动矿脉",color:"emerald",glow:"rgba(52,211,153,0.55)",hex:"#34d399",icon:"Pickaxe",desc:"晶体产能与仓储"},decoding:{name:"光谱矩阵",color:"rose",glow:"rgba(251,113,133,0.55)",hex:"#fb7185",icon:"ScanLine",desc:"解码效率与脉冲"},expedition:{name:"远征星图",color:"amber",glow:"rgba(251,191,36,0.55)",hex:"#fbbf24",icon:"Rocket",desc:"探险力与生命"},contact:{name:"接触回响",color:"fuchsia",glow:"rgba(232,121,249,0.55)",hex:"#e879f9",icon:"Sparkles",desc:"接触进度与飞升"},economy:{name:"虚空市场",color:"slate",glow:"rgba(148,163,184,0.55)",hex:"#94a3b8",icon:"Coins",desc:"经济与离线"},cosmic:{name:"宇宙回响",color:"amber",glow:"rgba(251,191,36,0.55)",hex:"#fcd34d",icon:"Star",desc:"全局综合增益"}},L=[{id:"c_min_1",category:"mining",order:1,name:"永动钻头",desc:"晶体/秒 +20%"},{id:"c_min_2",category:"mining",order:2,name:"深井网络",desc:"仓库上限 +50%"},{id:"c_min_3",category:"mining",order:3,name:"谐振熔炉",desc:"主动脉冲威力 +50%"},{id:"c_dec_1",category:"decoding",order:1,name:"光谱记忆",desc:"洞见倍率 +15%"},{id:"c_dec_2",category:"decoding",order:2,name:"步幅延展",desc:"解码步数上限 +1"},{id:"c_dec_3",category:"decoding",order:3,name:"自动校准",desc:"自动解码周期 -3s"},{id:"c_exp_1",category:"expedition",order:1,name:"维生护盾",desc:"探险生命 +25%"},{id:"c_exp_2",category:"expedition",order:2,name:"信标矩阵",desc:"探险力 +20%"},{id:"c_exp_3",category:"expedition",order:3,name:"能量共振",desc:"能量上限 +1"},{id:"c_con_1",category:"contact",order:1,name:"接触共鸣",desc:"接触进度率 +20%"},{id:"c_con_2",category:"contact",order:2,name:"飞升加速",desc:"飞升所需接触 -10"},{id:"c_con_3",category:"contact",order:3,name:"蓝图回响",desc:"每个蓝图额外 +2% 全属性"},{id:"c_eco_1",category:"economy",order:1,name:"离线缓存",desc:"离线效率 +15%"},{id:"c_eco_2",category:"economy",order:2,name:"晶体富集",desc:"T2/T3 晶体出现率 +8%"},{id:"c_eco_3",category:"economy",order:3,name:"星潮引导",desc:"星潮间隙 -10s"},{id:"c_cos_1",category:"cosmic",order:1,name:"飞升礼包",desc:"每次飞升后获得 +30 晶体 / +5 洞见"},{id:"c_cos_2",category:"cosmic",order:2,name:"二周目经验",desc:"解码奖励 +10%"},{id:"c_cos_3",category:"cosmic",order:3,name:"全息共振",desc:"所有产能与脉冲 +8%"}];function B(e){return L.find(t=>t.id===e)}function H(e){let t=new Set(e),a={crystalsPerSecMult:1,crystalCapMult:1,pulsePowerMult:1,insightMultAdd:0,decodeStepsBonus:0,autoDecodeIntervalDeltaSec:0,expeditionHpMult:1,expeditionPowerMult:1,energyMaxBonus:0,contactRateMult:1,prestigeContactMinDelta:0,perBlueprintAllStatsPct:0,offlineEffBonus:0,t2t3BonusRate:0,tideGapDeltaSec:0,prestigeStartCrystals:0,prestigeStartInsights:0,decodeRewardMult:1,allProductionMult:1};return t.has("c_min_1")&&(a.crystalsPerSecMult+=.2),t.has("c_min_2")&&(a.crystalCapMult+=.5),t.has("c_min_3")&&(a.pulsePowerMult+=.5),t.has("c_dec_1")&&(a.insightMultAdd+=.15),t.has("c_dec_2")&&(a.decodeStepsBonus+=1),t.has("c_dec_3")&&(a.autoDecodeIntervalDeltaSec-=3),t.has("c_exp_1")&&(a.expeditionHpMult+=.25),t.has("c_exp_2")&&(a.expeditionPowerMult+=.2),t.has("c_exp_3")&&(a.energyMaxBonus+=1),t.has("c_con_1")&&(a.contactRateMult+=.2),t.has("c_con_2")&&(a.prestigeContactMinDelta-=10),t.has("c_con_3")&&(a.perBlueprintAllStatsPct+=2),t.has("c_eco_1")&&(a.offlineEffBonus+=.15),t.has("c_eco_2")&&(a.t2t3BonusRate+=.08),t.has("c_eco_3")&&(a.tideGapDeltaSec-=10),t.has("c_cos_1")&&(a.prestigeStartCrystals+=30,a.prestigeStartInsights+=5),t.has("c_cos_2")&&(a.decodeRewardMult+=.1),t.has("c_cos_3")&&(a.allProductionMult+=.08),a}function K(e,t=Math.random){let a=new Set(e),s=L.filter(e=>!a.has(e.id));if(0===s.length)return[];let r=[...s].sort(()=>t()-.5),n=[],l=new Set;for(let e of r){if(n.length>=3)break;l.has(e.category)||(n.push(e),l.add(e.category))}for(let e of r){if(n.length>=3)break;n.includes(e)||n.push(e)}return n.slice(0,3).map(e=>e.id)}function W(e,t){let a=new Set(e);return L.filter(e=>e.category===t&&a.has(e.id)).length}function q(e){return{unlocked:e.length,total:L.length}}let V=Object.fromEntries(L.map(e=>[e.id,e.name])),U=Object.fromEntries(Object.entries(z).map(([e,t])=>[`tide_${e}`,t.name])),X=[{prefix:"第一纪元",suffixes:["觉醒之晨","初鸣之夕","晶体降诞","回响初啼"]},{prefix:"第二纪元",suffixes:["谐振潮汐","光谱涌动","深空低语","残响交织"]},{prefix:"第三纪元",suffixes:["遗迹苏醒","星辉汇聚","虚空回望","接触前夜"]},{prefix:"第四纪元",suffixes:["维度折叠","以太共振","星核悸动","飞升之歌"]},{prefix:"第五纪元",suffixes:["终末回响","永恒闭环","超越之境","起源重述"]}];function Y(e){let t=Math.max(1,Math.round(e.durationSec/60)),a=[];a.push(`「${e.epochName}」——无人机群在第 ${e.ascensionNumber} 次跨越维度的余烬中重新校准。这一周目持续了约 ${t} 分钟。`);let s=[];if(e.decodedThisRun>0&&s.push(`解码了 ${e.decodedThisRun} 颗记忆晶体`),e.techsThisRun>0&&s.push(`激活了 ${e.techsThisRun} 项新技术`),e.expThisRun>0&&s.push(`完成了 ${e.expThisRun} 次遗迹探险`),e.bossKillsThisRun>0&&s.push(`击破 ${e.bossKillsThisRun} 处维度 BOSS`),s.length>0?a.push(`自治机群${s.join(",")},回响在虚空中沉淀。`):a.push(`自治机群在静默中等待,仅完成最基本的脉冲扫描。`),e.newTides.length>0){let t=e.newTides.map(e=>U[e]||e).join("、");a.push(`本周目经历了 ${e.newTides.length} 次星潮事件(${t}),深空的呼吸塑造了每一个决策。`)}if(e.perksThisAscension.length>0){let t=e.perksThisAscension.map(e=>V[e]||e).join("、");a.push(`飞升之际,星图觉醒「${t}」,铭刻于永恒回响。`)}return e.milestones.length>0&&a.push(`✦ 里程碑:${e.milestones.join(";")}。`),a.push(`蓝图累计 ${e.blueprintsAfter} 张,新的周目在等深处的回声。`),a.join(" ")}function G(e){let t=e.tech??{},a=e.blueprints?.length??0,s=D(e.achievements??{}),r=I(e.activeTide??null),n=H(e.constellation??[]),l=j.crystalsPerSec,o=j.crystalCap,i=j.pulsePower,c=j.offlineEff,d=j.insightMult,u=1,h=!1,f=0;for(let e of _){let a=t[e.id]??0;if(!a)continue;let s=e.effect;switch(s.kind){case"crystalsPerSec":l+=s.value*a;break;case"crystalCap":o+=s.value*a;break;case"pulsePower":i+=s.value*a;break;case"offlineEff":c=Math.min(1,c+s.value*a);break;case"insightMult":d+=s.value*a;break;case"contactRate":u+=s.value*a;break;case"decodeSteps":f+=s.value*a;break;case"autoDecode":h=a>0}}let m=n.perBlueprintAllStatsPct/100;return l*=1+a*(T+m),d*=1+a*(R+m),u*=1+a*(P+m),l*=1+s.crystalsPerSecPct/100,d*=1+s.insightPct/100,l*=n.crystalsPerSecMult*n.allProductionMult,o*=n.crystalCapMult,i*=n.pulsePowerMult*n.allProductionMult,c=Math.min(1,c+n.offlineEffBonus),d+=n.insightMultAdd,u*=n.contactRateMult,f+=n.decodeStepsBonus,{crystalsPerSec:l,crystalCap:o,pulsePower:i,offlineEff:c,insightMult:d+=r.insightMultAdd,contactRateMult:u*=r.contactRateMult,autoDecode:h,decodeStepsBonus:f}}function J(e){return Math.max(0,Math.min(6,Math.floor(e.totalDecoded/20))-e.blueprints.length)}function Z(){return{...j,tech:{},fragments:{},achievements:{},activeTide:null,lastTideEnd:Date.now(),pendingCrystals:[],activePuzzle:null,activeExpedition:null,expeditionLog:[],lastEnergyTick:Date.now(),createdAt:Date.now(),lastTick:Date.now()}}function Q(e,t,a){let s=N[e];return{crystals:s.crystals,insights:Math.ceil(s.insights*t),contact:+(.6*e*a).toFixed(2)}}function ee(e,t){let a,s=k[e],r=t??Math.floor(1e9*Math.random()),n=(a=r>>>0,()=>{a|=0;let e=Math.imul((a=a+0x6d2b79f5|0)^a>>>15,1|a);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}),{rows:l,cols:o,targetLen:i}=s,c=l*o,d=[];for(let e=0;e<i;e++)d.push(S[Math.floor(n()*S.length)]);new Set(d).size<2&&(d[d.length-1]=S[(S.indexOf(d[0])+1)%S.length]);let u=e=>{let t=Math.floor(e/o),a=e%o,s=[];return t>0&&s.push((t-1)*o+a),t<l-1&&s.push((t+1)*o+a),a>0&&s.push(t*o+(a-1)),a<o-1&&s.push(t*o+(a+1)),s},h=null;for(let e=0;e<300&&!h;e++){let e=new Set,t=[],a=Math.floor(n()*c);e.add(a),t.push(a);let s=a,r=!0;for(let a=1;a<d.length;a++){let a=u(s).filter(t=>!e.has(t));if(0===a.length){r=!1;break}s=a[Math.floor(n()*a.length)],e.add(s),t.push(s)}r&&(h=t)}h||(h=Array.from({length:d.length},(e,t)=>t));let f=new Map;h.forEach((e,t)=>f.set(e,d[t]));let m=[];for(let e=0;e<l;e++)for(let t=0;t<o;t++){let a,s=e*o+t;a=f.has(s)?f.get(s):.6>n()?d[Math.floor(n()*d.length)]:S[Math.floor(n()*S.length)],m.push({id:s,row:e,col:t,color:a,used:!1})}return{tier:e,grid:m,rows:l,cols:o,target:d,path:[],stepLimit:s.stepLimitBase,seed:r}}function et(e){let t=e.target.slice(e.path.length);if(0===t.length)return!0;let a=new Set(e.path),s=0===e.path.length?e.grid.filter(e=>!a.has(e.id)&&e.color===t[0]).map(e=>e.id):[e.path[e.path.length-1]],r=(s,n)=>{if(n>=t.length)return!0;let l=t[n];for(let t of(t=>{let a=e.grid.find(e=>e.id===t);if(!a)return[];let s=[];return a.row>0&&s.push((a.row-1)*e.cols+a.col),a.row<e.rows-1&&s.push((a.row+1)*e.cols+a.col),a.col>0&&s.push(a.row*e.cols+(a.col-1)),a.col<e.cols-1&&s.push(a.row*e.cols+(a.col+1)),s})(s)){if(a.has(t))continue;let o=e.grid.find(e=>e.id===t);if(o&&o.color===l){if(0===n&&0===e.path.length){let t=e.grid.find(e=>e.id===s);if(!t||t.color!==l)continue}if(a.add(t),r(t,n+1))return!0;a.delete(t)}}return!1};for(let n of s)if(0===e.path.length){let s=e.grid.find(e=>e.id===n);if(!s||s.color!==t[0])continue;if(a.add(n),r(n,1))return!0;a.delete(n)}else if(r(n,0))return!0;return!1}let ea={combat:.3,treasure:.25,choice:.2,puzzle:.1,rest:.15,boss:0},es={combat:{titles:["守卫残影","虚空巡游者","腐化无人机","以太守门人"],descs:["一道扭曲的残影拦住去路,它是被遗忘的守卫。","虚空巡游者在走廊游荡,感知到了你的存在。","腐化的自治无人机识别为入侵者,启动攻击协议。","以太守门人挡在门前,唯有将其击溃方可通过。"]},treasure:{titles:["遗失货舱","晶体宝库","遗物储藏室","谐振宝箱"],descs:["一扇半开的舱门后,散落着未及带走的晶体。","宝库的能量护盾早已失效,宝藏唾手可得。","储藏室里的容器还亮着微光,里面是珍贵的洞见核心。","一只谐振宝箱静静等候,似乎在等故人归来。"]},choice:{titles:["分岔甬道","低语祭坛","未知装置","回响之井"],descs:["甬道在此分岔,两条路都传来不同的低语。","祭坛上浮动着两团光,你必须选择其一。","未知装置闪烁着两个按钮,你不知道后果。","回响之井倒映出两种可能的未来。"]},puzzle:{titles:["封印之门","谐振锁","记忆机关","维度栅栏"],descs:["一道封印之门需要正确的谐振才能开启。","谐振锁闪烁着复杂的图案,解之有大奖。","记忆机关考验着你的解码技艺。","维度栅栏以谜题为钥,智者得通行。"]},rest:{titles:["休憩节点","能量泉眼","静默之厅","回响营地"],descs:["一处宁静的节点,可在此恢复生命。","能量泉眼涌出暖流,抚慰你的探险队。","静默之厅中,时间仿佛静止,伤痛缓缓消散。","前人留下的营地,尚有补给可用。"]},boss:{titles:["以太回响体","维度守护者","飞升残念","终焉之核"],descs:["路径尽头,以太回响体静静伫立——它是这个遗迹意志的化身。","维度守护者挡在最后,唯有超越它方能触及终焉。","飞升残念凝聚成形,它是以太族离去前留下的最后一道试炼。","终焉之核悬浮于大厅中央,接触它即完成本次探险。"]}};function er(e,t){return Math.max(.25,Math.min(.95,e/(e+8*t)))}let en={routine:{label:"常规信标",color:"#34d399",glow:"rgba(52,211,153,0.45)",mult:1,icon:"◍"},anomaly:{label:"异常波动",color:"#fbbf24",glow:"rgba(251,191,36,0.45)",mult:1.6,icon:"◈"},singular:{label:"奇点回响",color:"#f43f5e",glow:"rgba(244,63,94,0.5)",mult:2.4,icon:"✶"}},el={decode:{label:"解码协议",icon:"❖",unit:"颗",verb:"解码记忆晶体"},expedition:{label:"远征指令",icon:"⬢",unit:"次",verb:"完成遗迹探险"},pulse:{label:"脉冲任务",icon:"✺",unit:"次",verb:"发起脉冲扫描"},boss:{label:"猎杀契约",icon:"☠",unit:"处",verb:"击破维度 BOSS"},insight:{label:"洞见采集",icon:"✦",unit:"点",verb:"累计获取洞见"}};function eo(e=new Date){let t=e.getUTCFullYear(),a=String(e.getUTCMonth()+1).padStart(2,"0"),s=String(e.getUTCDate()).padStart(2,"0");return`${t}-${a}-${s}`}function ei(e=new Date){let t,a=eo(e),s=function(e){let t=0x811c9dc5;for(let a=0;a<e.length;a++)t^=e.charCodeAt(a),t=Math.imul(t,0x1000193)>>>0;return t>>>0}(a),r=(t=s>>>0,()=>{t|=0;let e=Math.imul((t=t+0x6d2b79f5|0)^t>>>15,1|t);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}),n=["decode","expedition","pulse","boss","insight"],l=n[Math.floor(r()*n.length)],o=r(),i=o<.55?"routine":o<.88?"anomaly":"singular",c=en[i].mult,d=0,u=0,h=0,f="",m="";switch(l){case"decode":u=Math.round(4*(d=Math.round((6+Math.floor(10*r()))*c))*c),h=.8*d,f=`解码 ${d} 颗记忆晶体`,m=`深空信标要求解码 ${d} 颗晶体。谐振风暴期间效率更高。`;break;case"expedition":u=Math.round(12*(d=Math.max(1,Math.round((1+Math.floor(3*r()))*c)))*c),h=1.5*d,f=`完成 ${d} 次遗迹探险`,m=`派出探险队完成 ${d} 次远征,无论胜负均计入。`;break;case"pulse":u=Math.round(1.2*(d=Math.round((20+Math.floor(30*r()))*c))*c),h=.3*d,f=`发起 ${d} 次脉冲扫描`,m=`主动点击晶体发起 ${d} 次脉冲。连击可叠加加成。`;break;case"boss":u=Math.round(30*(d=Math.max(1,Math.round(c)))*c),h=3*d,f=`击破 ${d} 处维度 BOSS`,m=`在探险终点击破 ${d} 处 BOSS。提升探险力后再挑战。`;break;case"insight":d=Math.round((40+Math.floor(80*r()))*c),u=0,h=.1*d,f=`累计获取 ${d} 洞见`,m=`通过解码、探险、星潮等途径累计 ${d} 洞见。`}return{dateKey:a,type:l,difficulty:i,goal:d,rewardInsight:u,rewardContact:h,seed:s,title:f,desc:m}}let ec="echo-nexus-beacon-lb-v1",ed="echo-nexus-beacon-prog-v1";function eu(){if("u"<typeof localStorage)return[];try{let e=localStorage.getItem(ec);if(!e)return[];return JSON.parse(e).sort((e,t)=>t.score-e.score).slice(0,20)}catch{return[]}}function eh(e=new Date){let t=eo(e);if("u"<typeof localStorage)return{dateKey:t,progress:0,startedAt:Date.now(),completedAt:null,claimed:!1,durationSec:0};try{let e=localStorage.getItem(ed);if(!e)return{dateKey:t,progress:0,startedAt:Date.now(),completedAt:null,claimed:!1,durationSec:0};let a=JSON.parse(e);if(a.dateKey!==t)return{dateKey:t,progress:0,startedAt:Date.now(),completedAt:null,claimed:!1,durationSec:0};return a}catch{return{dateKey:t,progress:0,startedAt:Date.now(),completedAt:null,claimed:!1,durationSec:0}}}function ef(e){"u">typeof localStorage&&localStorage.setItem(ed,JSON.stringify(e))}let em=null;function ex(e){em=e,window.dispatchEvent(new CustomEvent("echo-nexus-offline-report"))}function ep(){let e=em;return em=null,e}function eg(e){let t=G(e);return{crystalsPerSec:t.crystalsPerSec,crystalCap:t.crystalCap,pulsePower:t.pulsePower,offlineEff:t.offlineEff,insightMult:t.insightMult,contactRateMult:t.contactRateMult,autoDecode:t.autoDecode,decodeStepsBonus:t.decodeStepsBonus}}function eb(e,t){try{let a,s,r,n,l,o=ei();if(o.type!==e)return!1;let i=eh();if(null!==i.completedAt)return!1;let{justCompleted:c}=(a=Math.min(o.goal,i.progress+t),r=(s=null===i.completedAt&&a>=o.goal)?Date.now():i.completedAt,n=null!==r?Math.floor((r-i.startedAt)/1e3):i.durationSec,l={...i,progress:a,completedAt:r,durationSec:n},ef(l),{progress:l,justCompleted:s});return c}catch{return!1}}function ev(e){let t=[];for(let a of E)!e.fragments[a.id]&&e.totalDecoded>=a.threshold&&(e.fragments[a.id]=!0,t.push(a.id));return t}window.__setOfflineReport=ex;let ey=(t?v(t):v)((a=(e,t)=>({...Z(),_lastAutoDecode:Date.now(),_lastSpawn:Date.now(),_combo:0,_lastPulse:0,_achievementQueue:[],_tideEvents:[],init:()=>{let a=t(),s=Date.now(),r=a.activePuzzle;if(r&&!et(r)){let t={id:`c_${s}_rec`,tier:r.tier,value:N[r.tier].crystals,createdAt:s};r=null,e({pendingCrystals:[...a.pendingCrystals,t].slice(-6)})}let n=a.achievements??{},l=a.activeTide??null,o=a.constellation??[],i=a.pendingPerkChoices??null,c={chronicle:Array.isArray(a.chronicle)?a.chronicle:[],runStart:a.runStart||{timestamp:a.createdAt||Date.now(),techsUnlocked:Object.keys(a.tech||{}).length,expeditionsCompleted:a.totalExpeditions||0,bossKills:a.bossKills||0,starTidesEncountered:[...a.starTidesEncountered||[]],crystalsDecoded:a.totalDecoded||0},bossKills:"number"==typeof a.bossKills?a.bossKills:0,starTidesEncountered:Array.isArray(a.starTidesEncountered)?a.starTidesEncountered:[]},d=H(o),u=j.energyMax+d.energyMaxBonus,h=a.lastTideEnd??0,f=l&&l.endsAt>s?l:null,m=Math.max(0,(s-a.lastTick)/1e3);if(window.__initTrace={lastTick:a.lastTick,now:s,elapsed:m,crystalsBefore:a.crystals,hydrated:ey.persist.hasHydrated(),at:Date.now()},m>5){let t=Math.min(m,28800),l=a.crystalsPerSec*t*a.offlineEff,d=a.crystals,x=Math.min(a.crystalCap,a.crystals+l),p={elapsedSec:t,rawElapsedSec:m,gain:x-d,rate:a.crystalsPerSec,eff:a.offlineEff,capped:m>28800,crystalsBefore:d,crystalsAfter:x,crystalCap:a.crystalCap};window.__lastOfflineReport={gain:p.gain,elapsed:p.elapsedSec,at:Date.now()},ex(p),e({crystals:x,lastTick:s,activePuzzle:r,achievements:n,activeTide:f,lastTideEnd:h,constellation:o,pendingPerkChoices:i,energyMax:u,chronicle:c.chronicle,runStart:c.runStart,bossKills:c.bossKills,starTidesEncountered:c.starTidesEncountered,...eg({tech:a.tech,blueprints:a.blueprints,achievements:n,activeTide:f,constellation:o})})}else e({lastTick:s,activePuzzle:r,achievements:n,activeTide:f,lastTideEnd:h,constellation:o,pendingPerkChoices:i,energyMax:u,chronicle:c.chronicle,runStart:c.runStart,bossKills:c.bossKills,starTidesEncountered:c.starTidesEncountered,...eg({tech:a.tech,blueprints:a.blueprints,achievements:n,activeTide:f,constellation:o})})},loadOnline:()=>{let a=t();e({...eg({tech:a.tech,blueprints:a.blueprints,achievements:a.achievements,activeTide:a.activeTide,constellation:a.constellation})})},hardReset:()=>{e({...Z(),_lastAutoDecode:Date.now(),_lastSpawn:Date.now(),_combo:0,_lastPulse:0,_achievementQueue:[],_tideEvents:[]})},tickTide:a=>{let s=t(),r=s.activeTide,n=Math.max(15e3,4e4+1e3*H(s.constellation??[]).tideGapDeltaSec);if(r&&a>=r.endsAt){let t=r.type,n=0;"silence"===r.type&&(n=function(e){let t=I(e);if(!t.silenceInsightPerSec)return 0;let a=(e.endsAt-e.startedAt)/1e3;return Math.round(t.silenceInsightPerSec*a)}(r));let l=s.insights+n,o={ended:t};return n>0&&(o.silenceCompensation=n),e({activeTide:null,lastTideEnd:a,insights:l,...eg({tech:s.tech,blueprints:s.blueprints,achievements:s.achievements,activeTide:null,constellation:s.constellation}),_tideEvents:[...s._tideEvents,o]}),o}if(!r&&a-s.lastTideEnd>=(0===s.lastTideEnd||s.lastTideEnd<=s.createdAt+1e3?3e4:n)){let t=function(e=Math.random){let t=Object.values(O).reduce((e,t)=>e+t,0),a=e()*t;for(let e of Object.keys(O))if((a-=O[e])<=0)return e;return"crystal"}(),r={id:`tide_${a}_${Math.random().toString(36).slice(2,7)}`,type:t,startedAt:a,endsAt:a+75e3},n={started:t},l=s.starTidesEncountered??[],o=`tide_${t}`;return e({activeTide:r,starTidesEncountered:l.includes(o)?l:[...l,o],...eg({tech:s.tech,blueprints:s.blueprints,achievements:s.achievements,activeTide:r,constellation:s.constellation}),_tideEvents:[...s._tideEvents,n]}),n}return null},consumeTideEvents:()=>{let a=t();if(0===a._tideEvents.length)return[];let s=a._tideEvents;return e({_tideEvents:[]}),s},tick:a=>{let s=t(),r=Math.max(0,(a-s.lastTick)/1e3);if(r<=0)return;let n=I(s.activeTide),l=s.crystalsPerSec*n.crystalsPerSecMult,o=s.crystals>=s.crystalCap?s.crystals:Math.min(s.crystalCap,s.crystals+l*r),i=1+.03*s.blueprints.length,c=s.pendingCrystals,d=s._lastSpawn;if(a-d>8/i*1e3&&c.length<6){let e=function(e,t=Math.random){if(e<=0)return function(e=Math.random){let t=e();return t<.7?1:t<.95?2:3}(t);let a=t(),s=Math.min(.5,e),r=.7-.7*s;return a<r?1:a<r+(.25+.25*s*.7)?2:3}(H(s.constellation??[]).t2t3BonusRate);c=[...c,{id:`c_${a}_${Math.random().toString(36).slice(2,7)}`,tier:e,value:N[e].crystals,createdAt:a}],d=a}let u=s.energy,h=s.lastEnergyTick;if(u<s.energyMax){var f,m,x;let e,t,r=(f=h,m=u,x=s.energyMax,(t=Math.floor((a-f)/(e=45e3)))<=0?{energy:m,lastTick:f}:{energy:Math.min(x,m+t),lastTick:f+t*e});u=r.energy,h=r.lastTick}else h=a;e({crystals:o,lastTick:a,pendingCrystals:c,_lastSpawn:d,energy:u,lastEnergyTick:h})},pulse:()=>{let a=t(),s=Date.now(),r=1;s-a._lastPulse<1500&&(r=Math.min(10,a._combo+1));let n=1+(r-1)*.15,l=I(a.activeTide),o=a.pulsePower*n*l.pulsePowerMult;return e({crystals:Math.min(a.crystalCap,a.crystals+o),_combo:r,_lastPulse:s}),eb("pulse",1),{gain:o,combo:r}},startDecode:a=>{let s=t(),r=s.pendingCrystals.find(e=>e.id===a);r&&e({activePuzzle:ee(r.tier),pendingCrystals:s.pendingCrystals.filter(e=>e.id!==a)})},clickNode:a=>{let s=t();if(!s.activePuzzle)return{ok:!1,finished:!1,failReason:"无活跃谜题"};let r=JSON.parse(JSON.stringify(s.activePuzzle)),n=function(e,t){let a=e.grid.find(e=>e.id===t);if(!a)return{ok:!1,finished:!1,failReason:"无效节点"};if(a.used)return{ok:!1,finished:!1,failReason:"节点已使用"};let s=e.path.length;if(a.color!==e.target[s])return{ok:!1,finished:!1,failReason:"谐振不匹配"};if(s>0){var r;if(r=e.grid.find(t=>t.id===e.path[s-1]),Math.abs(r.row-a.row)+Math.abs(r.col-a.col)!==1)return{ok:!1,finished:!1,failReason:"节点不相邻"}}return s>=e.stepLimit?{ok:!1,finished:!1,failReason:"步数耗尽"}:(a.used=!0,e.path.push(t),{ok:!0,finished:e.path.length>=e.target.length})}(r,a);if(n.ok){if(n.finished){let t=I(s.activeTide),a=H(s.constellation??[]),n=Q(r.tier,s.insightMult,s.contactRateMult),l=t.decodeRewardMult*a.decodeRewardMult,o={crystals:Math.round(n.crystals*l),insights:Math.round(n.insights*l),contact:+(n.contact*l).toFixed(2)},i=s.totalDecoded+1,c=Math.min(100,s.contact+o.contact),d=s.insights+o.insights,u=s.crystals+o.crystals,h={...s,totalDecoded:i,fragments:{...s.fragments}},f=ev(h);return e({activePuzzle:null,crystals:u,insights:d,contact:c,totalDecoded:i,fragments:h.fragments}),eb("decode",1),eb("insight",o.insights),{ok:!0,finished:!0,failReason:f.join(",")||void 0}}let t=et(r);return e({activePuzzle:r}),{ok:!0,finished:!1,solvable:t}}return n},undoStep:()=>{let a=t();if(!a.activePuzzle||0===a.activePuzzle.path.length)return;let s=JSON.parse(JSON.stringify(a.activePuzzle)),r=s.path.pop();if(void 0!==r){let e=s.grid.find(e=>e.id===r);e&&(e.used=!1)}e({activePuzzle:s})},retryPuzzle:()=>{let a=t();if(a.activePuzzle){var s;e({activePuzzle:ee((s=a.activePuzzle).tier,s.seed+1)})}},abandonPuzzle:()=>{let a=t();if(!a.activePuzzle)return;let s={id:`c_${Date.now()}_ret`,tier:a.activePuzzle.tier,value:N[a.activePuzzle.tier].crystals,createdAt:Date.now()};e({activePuzzle:null,pendingCrystals:[...a.pendingCrystals,s].slice(-6)})},autoDecodeTick:()=>{let a=t();if(!a.autoDecode)return;let s=Date.now(),r=H(a.constellation??[]),n=Math.max(5e3,12e3+1e3*r.autoDecodeIntervalDeltaSec);if(s-a._lastAutoDecode<n)return;let l=a.pendingCrystals.findIndex(e=>1===e.tier);if(l<0)return;let o=a.pendingCrystals[l],i=I(a.activeTide),c=Q(1,a.insightMult,a.contactRateMult),d=i.decodeRewardMult*r.decodeRewardMult,u={crystals:Math.round(c.crystals*d),insights:Math.round(c.insights*d),contact:+(c.contact*d).toFixed(2)},h=a.totalDecoded+1,f={...a,totalDecoded:h,fragments:{...a.fragments}};ev(f),e({pendingCrystals:a.pendingCrystals.filter(e=>e.id!==o.id),crystals:a.crystals+u.crystals,insights:a.insights+u.insights,contact:Math.min(100,a.contact+u.contact),totalDecoded:h,fragments:f.fragments,_lastAutoDecode:s}),eb("decode",1),eb("insight",u.insights)},buyTech:a=>{let s=t(),r=_.find(e=>e.id===a);if(!r||(s.tech[a]??0)>=1||s.insights<r.cost)return!1;let n={...s.tech,[a]:1};return e({insights:s.insights-r.cost,tech:n,...eg({tech:n,blueprints:s.blueprints,achievements:s.achievements,activeTide:s.activeTide,constellation:s.constellation})}),!0},startExpedition:()=>{let a,s,r=t();if(r.activeExpedition&&!r.activeExpedition.finished)return{ok:!1,reason:"已有进行中的探险"};if(r.energy<1)return{ok:!1,reason:"能量不足"};let n=I(r.activeTide);return e({activeExpedition:function(e,t,a){let s,r=(s=e>>>0,()=>{s|=0;let e=Math.imul((s=s+0x6d2b79f5|0)^s>>>15,1|s);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}),n=5+Math.floor(3*r()),l=[];for(let e=0;e<n;e++){let t=e===n-1,a=t?"boss":function(e){let t=Object.keys(ea),a=t.reduce((e,t)=>e+ea[t],0),s=e()*a;for(let e of t)if((s-=ea[e])<=0)return e;return"combat"}(r),s=es[a],o=Math.floor(r()*s.titles.length);l.push({id:e,type:a,title:s.titles[o],desc:s.descs[o],cleared:!1,difficulty:t?5+Math.floor(3*r()):1+Math.floor(4*r()),position:e})}if("combat"===l[0].type||"boss"===l[0].type){l[0].type=.5>r()?"treasure":"rest";let e=es[l[0].type];l[0].title=e.titles[0],l[0].desc=e.descs[0],l[0].difficulty=1}return{id:`exp_${e}_${Date.now()}`,nodes:l,currentNode:0,finished:!1,rewards:{crystals:0,insights:0,contact:0,fragments:[]},power:t,hp:a,maxHp:a,seed:e,startedAt:Date.now()}}(Math.floor(1e9*Math.random()),(a=10,s=r.tech?.exp_1??0,a+=3*s+5*(r.tech?.exp_2??0)+8*(r.tech?.exp_3??0),Math.round(a*=(1+(r.blueprints?.length??0)*.08)*(1+(r.ascensions??0)*.15)*H(r.constellation??[]).expeditionPowerMult)+n.expeditionPowerBonus),Math.round((100+(r.tech?.exp_2??0)*20+(r.ascensions??0)*10)*H(r.constellation??[]).expeditionHpMult)+n.expeditionHpBonus),energy:r.energy-1,totalExpeditions:r.totalExpeditions+1}),{ok:!0}},resolveCurrentNode:()=>{let a=t();if(!a.activeExpedition||a.activeExpedition.finished)return null;let s=JSON.parse(JSON.stringify(a.activeExpedition)),r=function(e,t=Math.random){let a=e.nodes[e.currentNode];if(!a)return{log:"无节点",ended:!0,endReason:"abort"};if(a.cleared)return e.currentNode>=e.nodes.length-1?{log:"探险已完成",ended:!0,endReason:"victory"}:(e.currentNode++,{log:`前进至节点 ${e.currentNode+1}`,ended:!1});let s=e.power,r=a.difficulty;switch(a.type){case"combat":{let n=er(s,r);if(t()<n){let e=8+6*r+Math.floor(10*t()),s=1+r+Math.floor(2*t());return a.cleared=!0,{log:`击败「${a.title}」,缴获 ${e} 晶体、${s} 洞见。`,crystals:e,insights:s,ended:!1}}let l=20+10*r+Math.floor(15*t());if(e.hp-l<=0)return a.cleared=!0,{log:`「${a.title}」过于强大,探险队全灭…(生命 -${e.hp})`,hpDelta:-e.hp,ended:!0,endReason:"defeat"};return a.cleared=!0,{log:`「${a.title}」击退了探险队,损失 ${l} 生命,狼狈通过。`,hpDelta:-l,ended:!1}}case"treasure":{let e=10+8*r+Math.floor(15*t()),s=2+r+Math.floor(3*t());return a.cleared=!0,{log:`在「${a.title}」中发现 ${e} 晶体、${s} 洞见。`,crystals:e,insights:s,ended:!1}}case"rest":{let e=15+8*r+Math.floor(10*t());return a.cleared=!0,{log:`在「${a.title}」休整,恢复 ${e} 生命。`,hpDelta:e,ended:!1}}case"puzzle":{let e=Math.min(.9,.4+.01*s);if(t()<e){let e=20+12*r,t=5+3*r,s=1+.5*r;return a.cleared=!0,{log:`解开「${a.title}」,获得 ${e} 晶体、${t} 洞见、${s.toFixed(1)} 接触进度。`,crystals:e,insights:t,contact:s,ended:!1}}return a.cleared=!0,{log:`「${a.title}」未能解开,但探险队平安通过。`,ended:!1}}case"choice":{if(.55>t()){let e=6+5*r+Math.floor(8*t());return a.cleared=!0,{log:`在「${a.title}」做出了明智的选择,获得 ${e} 晶体。`,crystals:e,ended:!1}}let e=8+5*r;return a.cleared=!0,{log:`在「${a.title}」的选择带来了代价,损失 ${e} 生命。`,hpDelta:-e,ended:!1}}case"boss":{let n=er(s,r),l=t()<n;if(a.cleared=!0,l){let e=60+25*r,t=15+6*r,s=5+1.5*r;return{log:`✦ 击败「${a.title}」!获得 ${e} 晶体、${t} 洞见、${s.toFixed(1)} 接触进度。`,crystals:e,insights:t,contact:s,ended:!0,endReason:"victory"}}return{log:`「${a.title}」的力量超出想象,探险队全军覆没…`,hpDelta:-e.hp,ended:!0,endReason:"defeat"}}}}(s);r.crystals&&(s.rewards.crystals+=r.crystals),r.insights&&(s.rewards.insights+=r.insights),r.contact&&(s.rewards.contact+=r.contact),r.fragments&&s.rewards.fragments.push(...r.fragments),r.hpDelta&&(s.hp=Math.max(0,Math.min(s.maxHp,s.hp+r.hpDelta)));let n=a.crystals+(r.crystals||0),l=a.insights+(r.insights||0),o=Math.min(100,a.contact+(r.contact||0)),i={...a.fragments};if(r.fragments)for(let e of r.fragments)i[e]=!0;let c=[{expeditionId:s.id,nodeType:s.nodes[s.currentNode]?.type||"combat",result:r.log,rewards:[r.crystals?`+${r.crystals}晶体`:"",r.insights?`+${r.insights}洞见`:"",r.contact?`+${r.contact.toFixed(1)}接触`:"",r.hpDelta?`${r.hpDelta>0?"+":""}${r.hpDelta}生命`:""].filter(Boolean).join(" "),timestamp:Date.now()},...a.expeditionLog].slice(0,30);r.ended&&(s.finished=!0);let d=a.bossKills??0;return r.ended&&"victory"===r.endReason&&s.nodes[s.currentNode]?.type==="boss"&&(d+=1),e({activeExpedition:s,crystals:n,insights:l,contact:o,fragments:i,expeditionLog:c,bossKills:d}),r.ended&&(eb("expedition",1),"victory"===r.endReason&&s.nodes[s.currentNode]?.type==="boss"&&eb("boss",1)),r.insights&&eb("insight",r.insights),r},advanceNode:()=>{let a=t();if(!a.activeExpedition||a.activeExpedition.finished)return;let s=JSON.parse(JSON.stringify(a.activeExpedition)),r=s.nodes[s.currentNode];r&&r.cleared&&(s.currentNode>=s.nodes.length-1||(s.currentNode++,e({activeExpedition:s})))},abortExpedition:()=>{let a=t();if(!a.activeExpedition)return;let s=JSON.parse(JSON.stringify(a.activeExpedition));s.finished=!0;let r={expeditionId:s.id,nodeType:"rest",result:"探险队主动撤退,保留已获奖励。",rewards:"",timestamp:Date.now()};e({activeExpedition:s,expeditionLog:[r,...a.expeditionLog].slice(0,30)})},doPrestige:()=>{let a,s,r,n,l,o,i,c,d,u=t();if(u.contact<100)return null;let h=J(u),f=(a=J(u),s=[...u.blueprints,...Array.from({length:a},(e,t)=>`bp_${Date.now()}_${t}`)].slice(0,6),r=K(u.constellation??[]),n=H(u.constellation??[]),l=function(e,t=[]){let a,s,r,n,l,o,i=e.ascensions+1,c=(a=Date.now(),{durationSec:Math.max(1,Math.floor((a-(s=e.runStart).timestamp)/1e3)),techsThisRun:Math.max(0,Object.keys(e.tech||{}).length-s.techsUnlocked),expThisRun:Math.max(0,e.totalExpeditions-s.expeditionsCompleted),bossKillsThisRun:Math.max(0,e.bossKills-s.bossKills),decodedThisRun:Math.max(0,e.totalDecoded-s.crystalsDecoded),newTides:(e.starTidesEncountered||[]).filter(e=>!(s.starTidesEncountered||[]).includes(e))}),d=e.createdAt+7919*i>>>0,u=(r=(i-1)%X.length,l=d%(n=X[r]).suffixes.length,`${n.prefix} \xb7 ${n.suffixes[l]}`),h=(o=[],1===e.ascensions+1&&o.push("首次飞升"),c.expThisRun>0&&0===e.runStart.expeditionsCompleted&&o.push("首次完成遗迹探险"),c.bossKillsThisRun>0&&o.push("首杀维度 BOSS"),c.decodedThisRun>=10&&o.push(`单周目解码 ${c.decodedThisRun} 颗`),c.decodedThisRun>=30&&o.push(`单周目解码 ${c.decodedThisRun} 颗`),c.techsThisRun>=5&&o.push("技术狂人"),c.newTides.length>=3&&o.push("星潮亲历者"),(e.constellation?.length||0)>=6&&o.push("星图六分"),(e.constellation?.length||0)>=12&&o.push("星图十二宫"),o),f=Math.min(e.blueprints.length+1,6),m=Y({ascensionNumber:i,epochName:u,durationSec:c.durationSec,techsThisRun:c.techsThisRun,expThisRun:c.expThisRun,bossKillsThisRun:c.bossKillsThisRun,decodedThisRun:c.decodedThisRun,newTides:c.newTides,perksThisAscension:t,blueprintsAfter:f,milestones:h});return{ascensionNumber:i,epochName:u,timestamp:Date.now(),durationSec:c.durationSec,summary:{techsUnlocked:Object.keys(e.tech||{}).length,constellationsTotal:e.constellation?.length||0,expeditionsCompleted:e.totalExpeditions,bossKills:e.bossKills,starTidesEncountered:e.starTidesEncountered?.length||0,blueprintsAfter:f,crystalsDecoded:e.totalDecoded,crystalsDecodedThisRun:c.decodedThisRun},perksThisAscension:t,tidesThisRun:c.newTides,lore:m,milestones:h}}(u,[]),o=[...u.chronicle||[],l].slice(-50),i={timestamp:Date.now(),techsUnlocked:Object.keys(u.tech||{}).length,expeditionsCompleted:u.totalExpeditions,bossKills:u.bossKills,starTidesEncountered:[...u.starTidesEncountered||[]],crystalsDecoded:u.totalDecoded},c=Z(),d=G({tech:{},blueprints:s,achievements:u.achievements,constellation:u.constellation}),{...c,fragments:u.fragments,totalDecoded:u.totalDecoded,ascensions:u.ascensions+1,blueprints:s,achievements:u.achievements,constellation:u.constellation,pendingPerkChoices:r.length>0?r:null,crystals:n.prestigeStartCrystals,insights:n.prestigeStartInsights,theme:u.theme,soundOn:u.soundOn,createdAt:u.createdAt,lastTick:Date.now(),lastEnergyTick:Date.now(),expeditionLog:u.expeditionLog,totalExpeditions:u.totalExpeditions,bossKills:u.bossKills,starTidesEncountered:u.starTidesEncountered,chronicle:o,runStart:i,activeTide:null,lastTideEnd:Date.now(),...d}),m=H(f.constellation??[]),x=j.energyMax+m.energyMaxBonus;return e({...f,energyMax:x,...eg({tech:f.tech,blueprints:f.blueprints,achievements:f.achievements,activeTide:f.activeTide,constellation:f.constellation}),_lastAutoDecode:Date.now(),_lastSpawn:Date.now(),_combo:0,_lastPulse:0,_tideEvents:[]}),{newBp:h}},chooseConstellationPerk:a=>{let s=t();if(!s.pendingPerkChoices||!s.pendingPerkChoices.includes(a)||!B(a)||s.constellation?.includes(a))return!1;let r=[...s.constellation??[],a],n=H(r),l=j.energyMax+n.energyMaxBonus,o=s.chronicle??[],i=o;if(o.length>0){let e=function(e,t){if(e.perksThisAscension.length===t.length&&e.perksThisAscension.every((e,a)=>e===t[a]))return e;let a=t.map(e=>V[e]||e).join("、"),s=t.length>0?` 飞升之际,星图觉醒「${a}」,铭刻于永恒回响。`:"",r=e.lore.includes("飞升之际")?e.lore:e.lore+s;return{...e,perksThisAscension:t,lore:r}}(o[o.length-1],[a]);i=[...o.slice(0,-1),e]}return e({constellation:r,pendingPerkChoices:null,energyMax:l,chronicle:i,...eg({tech:s.tech,blueprints:s.blueprints,achievements:s.achievements,activeTide:s.activeTide,constellation:r})}),!0},rerollPerkChoices:()=>{let a=t();if(!a.pendingPerkChoices)return;let s=K(a.constellation??[]);s.length>0&&e({pendingPerkChoices:s})},checkAchievements:()=>{let a=t(),s=[],r={...a.achievements},n=a.crystals,l=a.insights,o=a.contact,i=!1;for(let e of A)!r[e.id]&&e.check(a)&&(r[e.id]=!0,s.push(e),e.reward.crystals&&(n+=e.reward.crystals),e.reward.insights&&(l+=e.reward.insights),e.reward.contact&&(o=Math.min(100,o+e.reward.contact)),(e.reward.crystalsPerSecPct||e.reward.insightPct)&&(i=!0));return 0===s.length?[]:(e({achievements:r,crystals:n,insights:l,contact:o,...i?eg({tech:a.tech,blueprints:a.blueprints,achievements:r,activeTide:a.activeTide,constellation:a.constellation}):{},_achievementQueue:[...a._achievementQueue,...s]}),s)},consumeAchievementQueue:()=>{let a=t();if(0===a._achievementQueue.length)return[];let s=a._achievementQueue;return e({_achievementQueue:[]}),s},canPrestige:()=>t().contact>=100,toggleTheme:()=>e({theme:"dark"===t().theme?"light":"dark"}),toggleSound:()=>e({soundOn:!t().soundOn}),grantBeaconReward:(a,s)=>{let r=t();e({insights:r.insights+Math.round(a),contact:Math.min(100,r.contact+s)})}}),s={name:"echo-nexus-save-v1",storage:y(()=>localStorage),partialize:e=>{let{_lastAutoDecode:t,_lastSpawn:a,_combo:s,_lastPulse:r,_achievementQueue:n,_tideEvents:l,...o}=e;return o}},(e,t,r)=>{let n,l={storage:y(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...s},o=!1,i=0,c=new Set,d=new Set,u=l.storage;if(!u)return a((...t)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),e(...t)},t,r);let h=()=>{let e=l.partialize({...t()});return u.setItem(l.name,{state:e,version:l.version})},f=r.setState;r.setState=(e,t)=>(f(e,t),h());let m=a((...t)=>(e(...t),h()),t,r);r.getInitialState=()=>m;let x=()=>{var a,s;if(!u)return;let r=++i;o=!1,c.forEach(e=>{var a;return e(null!=(a=t())?a:m)});let f=(null==(s=l.onRehydrateStorage)?void 0:s.call(l,null!=(a=t())?a:m))||void 0;return w(u.getItem.bind(u))(l.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===l.version)return[!1,e.state];else{if(l.migrate){let t=l.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(a=>{var s;if(r!==i)return;let[o,c]=a;if(e(n=l.merge(c,null!=(s=t())?s:m),!0),o)return h()}).then(()=>{r===i&&(null==f||f(n,void 0),n=t(),o=!0,d.forEach(e=>e(n)))}).catch(e=>{r===i&&(null==f||f(void 0,e))})};return r.persist={setOptions:e=>{l={...l,...e},e.storage&&(u=e.storage)},clearStorage:()=>{null==u||u.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>x(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},l.skipHydration||x(),n||m}));var ew=e.i(75254);let ej=(0,ew.default)("gem",[["path",{d:"M6 3h12l4 6-10 13L2 9Z",key:"1pcd5k"}],["path",{d:"M11 3 8 9l4 13 4-13-3-6",key:"1fcu3u"}],["path",{d:"M2 9h20",key:"16fsjt"}]]),eN=(0,ew.default)("lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]]),ek=(0,ew.default)("waves",[["path",{d:"M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"knzxuh"}],["path",{d:"M2 12c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"2jd2cc"}],["path",{d:"M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1",key:"rd2r6e"}]]),eS=(0,ew.default)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);e.i(74080);var eM=e.i(20783),e_=Symbol.for("react.lazy"),eC=p[" use ".trim().toString()];function eE(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===e_&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function eT(e){var t;let a,s=(t=e,(a=p.forwardRef((e,t)=>{let{children:a,...s}=e;if(eE(a)&&"function"==typeof eC&&(a=eC(a._payload)),p.isValidElement(a)){var r;let e,n,l=(r=a,(n=(e=Object.getOwnPropertyDescriptor(r.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?r.ref:(n=(e=Object.getOwnPropertyDescriptor(r,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?r.props.ref:r.props.ref||r.ref),o=function(e,t){let a={...t};for(let s in t){let r=e[s],n=t[s];/^on[A-Z]/.test(s)?r&&n?a[s]=(...e)=>{let t=n(...e);return r(...e),t}:r&&(a[s]=r):"style"===s?a[s]={...r,...n}:"className"===s&&(a[s]=[r,n].filter(Boolean).join(" "))}return{...e,...a}}(s,a.props);return a.type!==p.Fragment&&(o.ref=t?(0,eM.composeRefs)(t,l):l),p.cloneElement(a,o)}return p.Children.count(a)>1?p.Children.only(null):null})).displayName=`${t}.SlotClone`,a),r=p.forwardRef((e,t)=>{let{children:a,...r}=e;eE(a)&&"function"==typeof eC&&(a=eC(a._payload));let n=p.Children.toArray(a),l=n.find(e$);if(l){let e=l.props.children,a=n.map(t=>t!==l?t:p.Children.count(e)>1?p.Children.only(null):p.isValidElement(e)?e.props.children:null);return(0,x.jsx)(s,{...r,ref:t,children:p.isValidElement(e)?p.cloneElement(e,void 0,a):null})}return(0,x.jsx)(s,{...r,ref:t,children:a})});return r.displayName=`${e}.Slot`,r}var eR=eT("Slot"),eP=Symbol("radix.slottable");function e$(e){return p.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===eP}var eA=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let a=eT(`Primitive.${t}`),s=p.forwardRef((e,s)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,x.jsx)(r?a:t,{...n,ref:s})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{}),eD="Progress",[ez,eO]=function(e,t=[]){let a=[],s=()=>{let t=a.map(e=>p.createContext(e));return function(a){let s=a?.[e]||t;return p.useMemo(()=>({[`__scope${e}`]:{...a,[e]:s}}),[a,s])}};return s.scopeName=e,[function(t,s){let r=p.createContext(s);r.displayName=t+"Context";let n=a.length;a=[...a,s];let l=t=>{let{scope:a,children:s,...l}=t,o=a?.[e]?.[n]||r,i=p.useMemo(()=>l,Object.values(l));return(0,x.jsx)(o.Provider,{value:i,children:s})};return l.displayName=t+"Provider",[l,function(a,l){let o=l?.[e]?.[n]||r,i=p.useContext(o);if(i)return i;if(void 0!==s)return s;throw Error(`\`${a}\` must be used within \`${t}\``)}]},function(...e){let t=e[0];if(1===e.length)return t;let a=()=>{let a=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let s=a.reduce((t,{useScope:a,scopeName:s})=>{let r=a(e)[`__scope${s}`];return{...t,...r}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return a.scopeName=t.scopeName,a}(s,...t)]}(eD),[eI,eF]=ez(eD),eL=p.forwardRef((e,t)=>{var a,s;let{__scopeProgress:r,value:n=null,max:l,getValueLabel:o=eK,...i}=e;(l||0===l)&&!eV(l)&&console.error((a=`${l}`,`Invalid prop \`max\` of value \`${a}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let c=eV(l)?l:100;null===n||eU(n,c)||console.error((s=`${n}`,`Invalid prop \`value\` of value \`${s}\` supplied to \`Progress\`. The \`value\` prop must be:
|
||
- a positive number
|
||
- less than the value passed to \`max\` (or 100 if no \`max\` prop is set)
|
||
- \`null\` or \`undefined\` if the progress is indeterminate.
|
||
|
||
Defaulting to \`null\`.`));let d=eU(n,c)?n:null,u=eq(d)?o(d,c):void 0;return(0,x.jsx)(eI,{scope:r,value:d,max:c,children:(0,x.jsx)(eA.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":eq(d)?d:void 0,"aria-valuetext":u,role:"progressbar","data-state":eW(d,c),"data-value":d??void 0,"data-max":c,...i,ref:t})})});eL.displayName=eD;var eB="ProgressIndicator",eH=p.forwardRef((e,t)=>{let{__scopeProgress:a,...s}=e,r=eF(eB,a);return(0,x.jsx)(eA.div,{"data-state":eW(r.value,r.max),"data-value":r.value??void 0,"data-max":r.max,...s,ref:t})});function eK(e,t){return`${Math.round(e/t*100)}%`}function eW(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function eq(e){return"number"==typeof e}function eV(e){return eq(e)&&!isNaN(e)&&e>0}function eU(e,t){return eq(e)&&!isNaN(e)&&e<=t&&e>=0}eH.displayName=eB;var eX=e.i(75157);function eY({className:e,value:t,...a}){return(0,x.jsx)(eL,{"data-slot":"progress",className:(0,eX.cn)("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",e),...a,children:(0,x.jsx)(eH,{"data-slot":"progress-indicator",className:"bg-primary h-full w-full flex-1 transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})})}function eG({onPrestige:e}){let t=ey(e=>e.crystals),a=ey(e=>e.crystalsPerSec),s=ey(e=>e.insights),r=ey(e=>e.contact),n=ey(e=>e.ascensions),l=ey(e=>e.blueprints);return(0,x.jsxs)("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-2 sm:gap-x-4 px-3.5 py-2.5 rounded-2xl border border-white/10 bg-black/40 backdrop-blur-md",children:[(0,x.jsx)(eJ,{icon:(0,x.jsx)(ej,{className:"h-4 w-4 text-emerald-400"}),label:"记忆晶体",value:$(t),sub:`+${a.toFixed(1)}/s`,glow:"rgba(52,211,153,0.4)"}),(0,x.jsx)("div",{className:"h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block"}),(0,x.jsx)(eJ,{icon:(0,x.jsx)(eN,{className:"h-4 w-4 text-amber-400"}),label:"技术洞见",value:$(s),sub:"解码产出",glow:"rgba(251,191,36,0.4)"}),(0,x.jsx)("div",{className:"h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block"}),(0,x.jsxs)("div",{className:"flex-1 min-w-[200px] flex flex-col gap-1.5",children:[(0,x.jsxs)("div",{className:"flex items-center gap-2",children:[(0,x.jsx)(ek,{className:"h-4 w-4 text-fuchsia-400 shrink-0"}),(0,x.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:"接触进度"}),(0,x.jsxs)("span",{className:"text-xs font-mono font-semibold text-fuchsia-300 ml-auto tabular-nums",children:[r.toFixed(1),"%"]}),r>=100&&(0,x.jsx)("button",{onClick:e,className:"text-[10px] px-2 py-0.5 rounded-full bg-fuchsia-500/20 border border-fuchsia-400/50 text-fuchsia-200 hover:bg-fuchsia-500/30 transition animate-pulse whitespace-nowrap ml-1",children:"飞升"})]}),(0,x.jsx)(eY,{value:r,className:"h-1.5 bg-white/10 [&>div]:bg-gradient-to-r [&>div]:from-fuchsia-500 [&>div]:to-rose-400"})]}),(0,x.jsx)("div",{className:"h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block"}),(0,x.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,x.jsx)(eS,{className:"h-4 w-4 text-rose-400 shrink-0"}),(0,x.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,x.jsx)("span",{className:"text-[10px] text-muted-foreground leading-none",children:"飞升"}),(0,x.jsxs)("div",{className:"flex items-baseline gap-1.5",children:[(0,x.jsx)("span",{className:"text-sm font-mono font-semibold leading-none",children:n}),(0,x.jsxs)("span",{className:"text-amber-300 text-xs leading-none",children:["×",l.length]})]})]})]})]})}function eJ({icon:e,label:t,value:a,sub:s,glow:r}){return(0,x.jsxs)("div",{className:"flex items-center gap-2.5",style:{filter:`drop-shadow(0 0 6px ${r})`},children:[e,(0,x.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,x.jsx)("span",{className:"text-[10px] text-muted-foreground leading-none",children:t}),(0,x.jsxs)("div",{className:"flex items-baseline gap-1.5",children:[(0,x.jsx)("span",{className:"text-sm font-mono font-semibold leading-none tabular-nums",children:a}),(0,x.jsx)("span",{className:"text-[10px] text-muted-foreground/80 whitespace-nowrap",children:s})]})]})]})}var eZ=e.i(37902),eQ=e.i(74911);let e0={emerald:523.25,rose:587.33,amber:659.25,fuchsia:698.46};class e1{ctx=null;master=null;enabled=!0;volume=.35;ensure(){if(!this.ctx){let e=window.AudioContext||window.webkitAudioContext;if(!e)return null;this.ctx=new e,this.master=this.ctx.createGain(),this.master.gain.value=this.volume,this.master.connect(this.ctx.destination)}return"suspended"===this.ctx.state&&this.ctx.resume(),this.ctx}setEnabled(e){this.enabled=e}setVolume(e){this.volume=Math.max(0,Math.min(1,e)),this.master&&(this.master.gain.value=this.volume)}tone(e,t,a="sine",s=.3,r=0,n=0,l){let o=this.ensure();if(!o||!this.master)return;let i=o.currentTime+r,c=o.createOscillator(),d=o.createGain();if(c.type=a,c.frequency.setValueAtTime(e,i),n&&c.detune.setValueAtTime(n,i),d.gain.setValueAtTime(0,i),d.gain.linearRampToValueAtTime(s,i+.008),d.gain.exponentialRampToValueAtTime(1e-4,i+t),l){let e=o.createBiquadFilter();e.type="lowpass",e.frequency.value=l,c.connect(e),e.connect(d)}else c.connect(d);d.connect(this.master),c.start(i),c.stop(i+t+.05)}sweep(e,t,a,s="sine",r=.3,n=0){let l=this.ensure();if(!l||!this.master)return;let o=l.currentTime+n,i=l.createOscillator(),c=l.createGain();i.type=s,i.frequency.setValueAtTime(e,o),i.frequency.exponentialRampToValueAtTime(Math.max(1,t),o+a),c.gain.setValueAtTime(0,o),c.gain.linearRampToValueAtTime(r,o+.02),c.gain.exponentialRampToValueAtTime(1e-4,o+a),i.connect(c),c.connect(this.master),i.start(o),i.stop(o+a+.05)}noise(e,t=.2,a=0,s=1200){let r=this.ensure();if(!r||!this.master)return;let n=r.currentTime+a,l=Math.floor(r.sampleRate*e),o=r.createBuffer(1,l,r.sampleRate),i=o.getChannelData(0);for(let e=0;e<l;e++)i[e]=(2*Math.random()-1)*(1-e/l);let c=r.createBufferSource();c.buffer=o;let d=r.createBiquadFilter();d.type="lowpass",d.frequency.value=s;let u=r.createGain();u.gain.setValueAtTime(t,n),u.gain.exponentialRampToValueAtTime(1e-4,n+e),c.connect(d),d.connect(u),u.connect(this.master),c.start(n),c.stop(n+e+.02)}play(e,t){if(this.enabled&&this.ensure())switch(e){case"pulse":{let e=220+(t?.combo?18*t.combo:0);this.tone(e,.18,"sine",.28),this.tone(2*e,.14,"triangle",.1,.01);break}case"pulseCombo":{let e=440+(t?.combo?24*t.combo:0);this.tone(e,.2,"sine",.3),this.tone(1.5*e,.18,"triangle",.14,.01),this.tone(2*e,.16,"sine",.08,.02);break}case"decodeClick":{let e=t?.color?e0[t.color]??523:523;this.tone(e,.16,"sine",.26),this.tone(2*e,.1,"triangle",.08,.005);break}case"decodeFail":this.tone(160,.16,"sawtooth",.18,0,0,800),this.noise(.08,.1,0,600);break;case"decodeSuccess":this.tone(523.25,.22,"sine",.24,0),this.tone(659.25,.22,"sine",.22,.08),this.tone(783.99,.3,"sine",.24,.16),this.tone(1046.5,.34,"triangle",.12,.2);break;case"fragmentUnlock":this.tone(880,.7,"sine",.18,0),this.tone(1108.73,.7,"sine",.12,.04),this.tone(1318.51,.8,"triangle",.08,.1),this.sweep(440,880,.6,"sine",.1,.05);break;case"techBuy":this.tone(587.33,.12,"sine",.22),this.tone(880,.16,"triangle",.16,.06);break;case"expeditionStart":this.sweep(80,240,.5,"sawtooth",.16),this.sweep(120,360,.5,"square",.06,.02),this.noise(.4,.08,0,400);break;case"expeditionNode":this.tone(440,.14,"triangle",.2),this.tone(660,.12,"sine",.1,.04);break;case"expeditionVictory":this.tone(523.25,.18,"sine",.24,0),this.tone(659.25,.18,"sine",.24,.1),this.tone(783.99,.18,"sine",.24,.2),this.tone(1046.5,.4,"triangle",.2,.3);break;case"expeditionDefeat":this.tone(330,.3,"sawtooth",.2,0,0,700),this.tone(220,.4,"sine",.18,.12),this.tone(146.83,.5,"sine",.16,.24);break;case"prestige":this.sweep(110,880,1.2,"sine",.2),this.sweep(220,1760,1.2,"triangle",.1,.05),this.tone(523.25,.6,"sine",.16,.3),this.tone(659.25,.6,"sine",.16,.42),this.tone(783.99,.8,"sine",.16,.54),this.tone(1046.5,1,"triangle",.12,.66);break;case"achievement":this.tone(659.25,.16,"sine",.22,0),this.tone(880,.16,"sine",.22,.08),this.tone(1046.5,.16,"sine",.22,.16),this.tone(1318.51,.4,"triangle",.18,.24);break;case"tideStart":this.sweep(330,660,.8,"sine",.16),this.sweep(440,880,.8,"triangle",.08,.04),this.tone(523.25,.5,"sine",.1,.2),this.tone(783.99,.6,"sine",.08,.3);break;case"tideEnd":this.tone(659.25,.3,"sine",.14,0),this.tone(523.25,.35,"sine",.12,.1),this.tone(392,.5,"triangle",.1,.22);break;case"constellation":this.tone(523.25,.18,"sine",.16,0),this.tone(659.25,.2,"sine",.16,.08),this.tone(783.99,.22,"sine",.18,.16),this.tone(1046.5,.35,"triangle",.16,.24),this.tone(2093,.15,"sine",.08,.3);break;case"uiHover":this.tone(880,.05,"sine",.05);break;case"uiClick":this.tone(660,.07,"sine",.1);break;case"chronicle":this.tone(196,.6,"sine",.18,0),this.tone(261.63,.55,"sine",.14,.05),this.tone(392,.5,"sine",.1,.1),this.tone(523.25,.4,"triangle",.08,.18),this.tone(783.99,.3,"sine",.05,.25);break;case"chronicleOpen":this.tone(440,.08,"sine",.06,0),this.tone(587.33,.1,"sine",.05,.04),this.tone(880,.06,"triangle",.04,.1)}}}let e2=null;function e5(){return e2||(e2=new e1),e2}function e3(e,t){e5().play(e,t)}function e4(){let e=ey(e=>e.pulse),t=ey(e=>e.crystals),a=ey(e=>e.crystalsPerSec),s=ey(e=>e.crystalCap),r=ey(e=>e._combo),{toast:n}=(0,eQ.useToast)(),[l,o]=(0,p.useState)([]),[i,c]=(0,p.useState)([]),[d,u]=(0,p.useState)(0),h=(0,p.useRef)(0),f=(0,p.useCallback)(t=>{let a=e();if(!a)return;let s=t.currentTarget.getBoundingClientRect(),r=t.clientX-s.left,l=t.clientY-s.top,i=h.current++,d=a.combo>=5?"#fbbf24":a.combo>=3?"#e879f9":"#34d399";o(e=>[...e,{id:i,x:r,y:l,text:`+${a.gain.toFixed(1)}`,born:Date.now(),color:d}]);let f=[],m=6+Math.min(6,a.combo);for(let e=0;e<m;e++)f.push({id:h.current++,angle:2*Math.PI*e/m+.3*Math.random(),dist:0,born:Date.now(),color:d});c(e=>[...e,...f]),u(e=>e+1),e3(a.combo>=3?"pulseCombo":"pulse",{combo:a.combo}),setTimeout(()=>{o(e=>e.filter(e=>e.id!==i))},900),setTimeout(()=>{c(e=>e.filter(e=>!f.includes(e)))},700),a.combo>=5&&a.combo%5==0&&n({title:`\xd7${a.combo} 连击!`,description:"谐振叠加,产能飙升。"})},[e,n]),m=Math.min(100,t/Math.max(1,s)*100);return(0,x.jsxs)("div",{className:"jsx-14e60529209e63ba relative flex flex-col items-center justify-center gap-4 select-none",children:[r>1&&(0,x.jsxs)("div",{className:"jsx-14e60529209e63ba absolute -top-2 left-1/2 -translate-x-1/2 px-3 py-1 rounded-full bg-rose-500/20 border border-rose-400/40 text-rose-200 text-xs font-mono animate-pulse",children:["×",r," 连击"]}),(0,x.jsxs)("button",{onClick:f,"aria-label":"脉冲扫描,获取记忆晶体",className:"jsx-14e60529209e63ba relative h-52 w-52 sm:h-64 sm:w-64 rounded-full focus:outline-none group",children:[(0,x.jsx)("div",{className:"jsx-14e60529209e63ba absolute inset-0 rounded-full bg-emerald-500/10 blur-2xl group-hover:bg-emerald-500/20 transition-colors"}),(0,x.jsxs)("div",{style:{animation:"echo-spin 18s linear infinite"},className:"jsx-14e60529209e63ba absolute inset-2 rounded-full border border-emerald-400/30",children:[(0,x.jsx)("div",{className:"jsx-14e60529209e63ba absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 h-2 w-2 rounded-full bg-emerald-300 shadow-[0_0_8px_#34d399]"}),(0,x.jsx)("div",{className:"jsx-14e60529209e63ba absolute bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2 h-1.5 w-1.5 rounded-full bg-rose-300 shadow-[0_0_8px_#fb7185]"})]}),(0,x.jsx)("div",{style:{animation:"echo-spin 24s linear infinite reverse"},className:"jsx-14e60529209e63ba absolute inset-6 rounded-full border border-fuchsia-400/20 border-dashed"}),(0,x.jsxs)("svg",{viewBox:"0 0 100 100",className:"jsx-14e60529209e63ba absolute inset-0 -rotate-90",children:[(0,x.jsx)("circle",{cx:"50",cy:"50",r:"44",fill:"none",stroke:"rgba(255,255,255,0.06)",strokeWidth:"2",className:"jsx-14e60529209e63ba"}),(0,x.jsx)("circle",{cx:"50",cy:"50",r:"44",fill:"none",stroke:"url(#echoGrad)",strokeWidth:"2.5",strokeLinecap:"round",strokeDasharray:`${2*Math.PI*44}`,strokeDashoffset:`${2*Math.PI*44*(1-m/100)}`,style:{transition:"stroke-dashoffset 0.3s ease",filter:"drop-shadow(0 0 4px rgba(52,211,153,0.6))"},className:"jsx-14e60529209e63ba"}),(0,x.jsx)("defs",{className:"jsx-14e60529209e63ba",children:(0,x.jsxs)("linearGradient",{id:"echoGrad",x1:"0",y1:"0",x2:"1",y2:"1",className:"jsx-14e60529209e63ba",children:[(0,x.jsx)("stop",{offset:"0%",stopColor:"#34d399",className:"jsx-14e60529209e63ba"}),(0,x.jsx)("stop",{offset:"50%",stopColor:"#e879f9",className:"jsx-14e60529209e63ba"}),(0,x.jsx)("stop",{offset:"100%",stopColor:"#fb7185",className:"jsx-14e60529209e63ba"})]})})]}),(0,x.jsx)("div",{style:{animation:"echo-ring 0.7s ease-out forwards"},className:"jsx-14e60529209e63ba absolute inset-8 rounded-full border-2 border-emerald-400/60 pointer-events-none"},`ring-${d}`),(0,x.jsx)("div",{style:{animation:"echo-ping 0.4s ease-out"},className:"jsx-14e60529209e63ba absolute inset-12 rounded-full flex items-center justify-center",children:(0,x.jsxs)("div",{className:"jsx-14e60529209e63ba relative h-full w-full",children:[(0,x.jsx)("div",{style:{background:"radial-gradient(circle at 35% 30%, rgba(255,255,255,0.9), rgba(52,211,153,0.7) 35%, rgba(232,121,249,0.5) 70%, rgba(251,113,133,0.3))",boxShadow:"0 0 30px rgba(52,211,153,0.6), 0 0 60px rgba(232,121,249,0.4), inset 0 0 20px rgba(255,255,255,0.3)"},className:"jsx-14e60529209e63ba absolute inset-0 rounded-full"}),(0,x.jsx)("div",{className:"jsx-14e60529209e63ba absolute top-3 left-6 h-6 w-10 rounded-full bg-white/40 blur-sm rotate-[-20deg]"}),(0,x.jsx)("div",{style:{backgroundImage:"repeating-linear-gradient(60deg, rgba(255,255,255,0.4) 0 1px, transparent 1px 8px), repeating-linear-gradient(-60deg, rgba(255,255,255,0.4) 0 1px, transparent 1px 8px)"},className:"jsx-14e60529209e63ba absolute inset-4 rounded-full opacity-30"})]})},d),i.map(e=>(0,x.jsx)("span",{style:{width:4,height:4,background:e.color,boxShadow:`0 0 6px ${e.color}`,"--angle":`${e.angle}rad`,animation:"echo-burst 0.7s ease-out forwards"},className:"jsx-14e60529209e63ba absolute left-1/2 top-1/2 rounded-full pointer-events-none"},e.id)),l.map(e=>(0,x.jsx)("span",{style:{left:e.x,top:e.y,color:e.color,transform:"translate(-50%, -50%)",animation:"echo-float 0.9s ease-out forwards",textShadow:`0 0 8px ${e.color}`},className:"jsx-14e60529209e63ba absolute pointer-events-none font-mono font-bold text-sm",children:e.text},e.id))]}),(0,x.jsxs)("div",{className:"jsx-14e60529209e63ba text-center",children:[(0,x.jsx)("div",{style:{textShadow:"0 0 12px rgba(52,211,153,0.5)"},className:"jsx-14e60529209e63ba text-2xl font-mono font-bold text-emerald-300",children:$(t)}),(0,x.jsxs)("div",{className:"jsx-14e60529209e63ba text-xs text-muted-foreground mt-0.5",children:["记忆晶体 · ",a.toFixed(1),"/s · 上限 ",$(s)]}),(0,x.jsxs)("div",{className:"jsx-14e60529209e63ba text-[11px] text-muted-foreground/70 mt-2",children:["点击晶体发起",(0,x.jsx)("span",{className:"jsx-14e60529209e63ba text-emerald-300",children:"脉冲扫描"}),",连击叠加加成"]})]}),(0,x.jsx)(eZ.default,{id:"14e60529209e63ba",children:"@keyframes echo-spin{to{transform:rotate(360deg)}}@keyframes echo-ping{0%{transform:scale(.92)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes echo-float{0%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-180%)scale(1.3)}}@keyframes echo-ring{0%{opacity:.8;transform:scale(.8)}to{opacity:0;transform:scale(1.6)}}@keyframes echo-burst{0%{transform:translate(-50%,-50%)rotate(var(--angle))translateX(0)rotate(calc(-1*var(--angle)));opacity:1}to{transform:translate(-50%,-50%)rotate(var(--angle))translateX(80px)rotate(calc(-1*var(--angle)));opacity:0}}"})]})}let e6=(0,e.i(25913).cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function e8({className:e,variant:t,size:a,asChild:s=!1,...r}){return(0,x.jsx)(s?eR:"button",{"data-slot":"button",className:(0,eX.cn)(e6({variant:t,size:a,className:e})),...r})}var e9=e.i(37727);let e7=(0,ew.default)("sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]),te=(0,ew.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),tt=(0,ew.default)("undo-2",[["path",{d:"M9 14 4 9l5-5",key:"102s5s"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11",key:"f3b9sd"}]]),ta=(0,ew.default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);function ts(){let e=ey(e=>e.activePuzzle),t=ey(e=>e.clickNode),a=ey(e=>e.undoStep),s=ey(e=>e.retryPuzzle),r=ey(e=>e.abandonPuzzle),{toast:n}=(0,eQ.useToast)(),[l,o]=(0,p.useState)(null),[i,c]=(0,p.useState)(null),[d,u]=(0,p.useState)(!1);if(!e)return null;let{grid:h,rows:f,cols:m,target:g,path:b,stepLimit:v,tier:y}=e,w=b.length,j=g[w],N=b.length>0&&b.length<g.length&&!et(e),k=()=>{a(),u(!1),c(null)},S=100/m,_=100/f,C=b.map(e=>h.find(t=>t.id===e)).filter(Boolean);return(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex flex-col gap-4 h-full",children:[(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center justify-center gap-2 flex-wrap",children:[(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-xs text-muted-foreground mr-1",children:"目标谐振"}),g.map((e,t)=>{let a=t<w,s=t===w,r=M[e];return(0,x.jsxs)("div",{style:{background:`radial-gradient(circle at 35% 30%, ${r.hex}, ${r.hex}aa 60%, ${r.hex}44)`,boxShadow:s?`0 0 18px ${r.glow}, 0 0 36px ${r.glow}`:`0 0 8px ${r.glow}`,"--tw-ring-color":r.hex},className:`jsx-35ab0418fdc54847 relative h-9 w-9 rounded-full flex items-center justify-center transition-all duration-300 ${a?"opacity-30 scale-90":""} ${s?"scale-125 ring-2 ring-offset-2 ring-offset-background":""}`,children:[a&&(0,x.jsx)(te,{className:"h-4 w-4 text-white"}),s&&(0,x.jsx)("span",{style:{color:r.hex},className:"jsx-35ab0418fdc54847 absolute -bottom-5 text-[10px] font-medium",children:"下一个"})]},t)})]}),(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 relative flex-1 min-h-[260px] rounded-2xl border border-white/10 bg-black/30 backdrop-blur-sm overflow-hidden",children:[(0,x.jsx)("div",{style:{backgroundImage:"linear-gradient(rgba(255,255,255,0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,0.08) 1px, transparent 1px)",backgroundSize:`${S}% ${_}%`},className:"jsx-35ab0418fdc54847 absolute inset-0 opacity-20"}),(0,x.jsx)("svg",{className:"jsx-35ab0418fdc54847 absolute inset-0 w-full h-full pointer-events-none",children:C.map((e,t)=>{if(0===t)return null;let a=C[t-1],s=(a.col+.5)*S,r=(a.row+.5)*_,n=(e.col+.5)*S,l=(e.row+.5)*_,o=M[e.color];return(0,x.jsx)("line",{x1:`${s}%`,y1:`${r}%`,x2:`${n}%`,y2:`${l}%`,stroke:o.hex,strokeWidth:2.5,strokeLinecap:"round",style:{filter:`drop-shadow(0 0 4px ${o.glow})`},className:"jsx-35ab0418fdc54847 echo-path-line"},t)})}),h.map(a=>{let s=M[a.color],r=a.used,h=void 0!==j&&a.color===j&&!r,f=0===b.length&&h&&function(e,t){if(0!==e.path.length)return!1;let a=e.grid.find(e=>e.id===t);if(!a||a.used||a.color!==e.target[0])return!1;let s=JSON.parse(JSON.stringify(e));return s.grid.find(e=>e.id===t).used=!0,s.path.push(t),et(s)}(e,a.id),p=0===b.length&&h&&!f,g=l===a.id,v=i?.id===a.id,y=(a.col+.5)*S,w=(a.row+.5)*_;return(0,x.jsx)("button",{onClick:()=>(e=>{let a=t(e.id);if(a.ok&&a.finished){u(!1),e3("decodeSuccess"),a.failReason&&a.failReason.split(",").filter(Boolean).length&&(e3("fragmentUnlock"),n({title:"✦ 记忆碎片浮现",description:"新的回响被拼入图谱,前往「记忆图谱」查看。"})),n({title:"谐振闭合!",description:"晶体解码成功,记忆已释放。"});return}a.ok?(e3("decodeClick",{color:e.color}),c({id:e.id,ok:!0}),setTimeout(()=>c(null),280),!1!==a.solvable||d||(u(!0),n({title:"谐振受阻",description:"此路不通,建议撤销上一步或重排。"})),!0===a.solvable&&u(!1)):(e3("decodeFail"),c({id:e.id,ok:!1}),setTimeout(()=>c(null),280))})(a),onMouseEnter:()=>o(a.id),onMouseLeave:()=>o(null),disabled:r,style:{left:`${y}%`,top:`${w}%`,width:`min(${100/m*.62}%, 56px)`,aspectRatio:"1",background:r?"rgba(255,255,255,0.04)":`radial-gradient(circle at 35% 30%, ${s.hex}, ${s.hex}cc 55%, ${s.hex}55)`,boxShadow:r?"inset 0 0 12px rgba(0,0,0,0.5)":f?`0 0 16px ${s.glow}, 0 0 32px ${s.glow}, inset 0 0 10px rgba(255,255,255,0.5)`:h?`0 0 10px ${s.glow}, 0 0 20px ${s.glow}, inset 0 0 6px rgba(255,255,255,0.3)`:`0 0 6px ${s.glow}`,border:f?`2px solid ${s.hex}`:h?`1.5px solid ${s.hex}aa`:"1px solid rgba(255,255,255,0.12)",opacity:r?.35:p?.5:1,transform:`translate(-50%, -50%) scale(${g&&!r?1.12:v?i?.ok?1.25:.8:1})`,animation:f?"echo-pulse 1.2s ease-in-out infinite":h&&!p?"echo-pulse 1.6s ease-in-out infinite":void 0},"aria-label":`${s.label}色节点 ${a.row+1}-${a.col+1}`,className:"jsx-35ab0418fdc54847 absolute -translate-x-1/2 -translate-y-1/2 rounded-full transition-all duration-200 focus:outline-none disabled:cursor-not-allowed",children:!r&&(0,x.jsx)("span",{style:{background:"radial-gradient(circle at 35% 30%, rgba(255,255,255,0.5), transparent 45%)"},className:"jsx-35ab0418fdc54847 absolute inset-0 rounded-full"})},a.id)})]}),N&&(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center gap-2 px-3 py-2 rounded-lg border border-rose-400/40 bg-rose-950/40 text-rose-200 text-xs animate-pulse",children:[(0,x.jsx)(ta,{className:"h-3.5 w-3.5 shrink-0"}),(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847",children:"谐振受阻,此路已无解。"}),(0,x.jsxs)(e8,{size:"sm",variant:"outline",onClick:k,className:"h-6 px-2 ml-auto border-rose-400/50 text-rose-100 hover:bg-rose-500/20 text-[11px]",children:[(0,x.jsx)(tt,{className:"h-3 w-3 mr-1"}),"撤销"]})]}),(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center justify-between gap-3",children:[(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center gap-2 text-xs",children:[(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-muted-foreground",children:"步数"}),(0,x.jsxs)("span",{className:`jsx-35ab0418fdc54847 font-mono font-semibold ${b.length>=v?"text-rose-400":"text-foreground"}`,children:[b.length," / ",v]}),(0,x.jsxs)("span",{className:"jsx-35ab0418fdc54847 ml-2 text-muted-foreground",children:["T",y]})]}),(0,x.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center gap-1.5",children:[(0,x.jsxs)(e8,{variant:"ghost",size:"sm",onClick:k,disabled:0===b.length,className:"h-7",children:[(0,x.jsx)(tt,{className:"h-3.5 w-3.5 mr-1"}),"撤销"]}),(0,x.jsxs)(e8,{variant:"ghost",size:"sm",onClick:()=>{s(),u(!1),c(null)},className:"h-7",children:[(0,x.jsx)(eS,{className:"h-3.5 w-3.5 mr-1"}),"重排"]}),(0,x.jsxs)(e8,{variant:"ghost",size:"sm",onClick:()=>{r(),c(null),u(!1)},className:"h-7",children:[(0,x.jsx)(e9.X,{className:"h-3.5 w-3.5 mr-1"}),"放回"]})]})]}),(0,x.jsx)("p",{className:"jsx-35ab0418fdc54847 text-[11px] text-muted-foreground/80 text-center leading-relaxed",children:0===b.length?(0,x.jsxs)(x.Fragment,{children:["点击",(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-emerald-300",children:"高亮"}),"的可行起点开始,按目标顺序走",(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-emerald-300",children:"相邻同色"}),"节点;走错可",(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-rose-300",children:"撤销"}),"。"]}):(0,x.jsxs)(x.Fragment,{children:["按「目标谐振」顺序,点击",(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-emerald-300",children:"上下左右相邻"}),"的同色节点。每个节点仅可使用一次;走错可",(0,x.jsx)("span",{className:"jsx-35ab0418fdc54847 text-rose-300",children:"撤销"}),"。"]})}),(0,x.jsx)(eZ.default,{id:"35ab0418fdc54847",children:"@keyframes echo-pulse{0%,to{filter:brightness()}50%{filter:brightness(1.4)}}@keyframes echo-line{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0}}.echo-path-line{stroke-dasharray:100;animation:.4s ease-out forwards echo-line}"})]})}function tr(){let e=ey(e=>e.activePuzzle),t=ey(e=>e.pendingCrystals),a=ey(e=>e.startDecode),s=ey(e=>e.crystalsPerSec),r=ey(e=>e.crystalCap),n=ey(e=>e.crystals);return e?(0,x.jsxs)("div",{className:"h-full flex flex-col",children:[(0,x.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,x.jsx)(e7,{className:"h-4 w-4 text-rose-400"}),(0,x.jsx)("h3",{className:"text-sm font-semibold",children:"解码共振阵列"})]}),(0,x.jsx)("div",{className:"flex-1 min-h-0",children:(0,x.jsx)(ts,{})})]}):(0,x.jsxs)("div",{className:"jsx-53059b9e32765d5f h-full flex flex-col",children:[(0,x.jsxs)("div",{className:"jsx-53059b9e32765d5f flex items-center gap-2 mb-3",children:[(0,x.jsx)(e7,{className:"h-4 w-4 text-rose-400"}),(0,x.jsx)("h3",{className:"jsx-53059b9e32765d5f text-sm font-semibold",children:"待解码晶体"}),(0,x.jsxs)("span",{className:"jsx-53059b9e32765d5f text-xs text-muted-foreground ml-auto",children:["产能 ",s.toFixed(1),"/s · ",Math.floor(n),"/",Math.floor(r)]})]}),0===t.length?(0,x.jsxs)("div",{className:"jsx-53059b9e32765d5f flex-1 flex flex-col items-center justify-center text-center gap-3 rounded-2xl border border-dashed border-white/10 bg-black/20 p-6",children:[(0,x.jsxs)("div",{className:"jsx-53059b9e32765d5f relative h-16 w-16",children:[(0,x.jsx)("div",{className:"jsx-53059b9e32765d5f absolute inset-0 rounded-full bg-rose-500/20 blur-xl animate-pulse"}),(0,x.jsx)("div",{className:"jsx-53059b9e32765d5f absolute inset-2 rounded-full border-2 border-rose-400/40 rotate-45"}),(0,x.jsx)("div",{className:"jsx-53059b9e32765d5f absolute inset-4 rounded-full bg-rose-500/30"})]}),(0,x.jsx)("p",{className:"jsx-53059b9e32765d5f text-sm text-muted-foreground",children:"晶体正在生成中…"}),(0,x.jsx)("p",{className:"jsx-53059b9e32765d5f text-xs text-muted-foreground/70 max-w-[220px]",children:"自治无人机每数秒回收一颗记忆晶体,点击下方晶体开启解码。"})]}):(0,x.jsx)("div",{className:"jsx-53059b9e32765d5f flex-1 grid grid-cols-2 sm:grid-cols-3 gap-3 content-start max-h-[420px] overflow-y-auto echo-scroll pr-1",children:t.map(e=>(0,x.jsx)(tn,{crystal:e,onClick:()=>a(e.id)},e.id))}),(0,x.jsx)(eZ.default,{id:"53059b9e32765d5f",children:".echo-scroll::-webkit-scrollbar{width:6px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}"})]})}function tn({crystal:e,onClick:t}){let a=1===e.tier?"#34d399":2===e.tier?"#fbbf24":"#e879f9",s=1===e.tier?"常见":2===e.tier?"稀有":"史诗";return(0,x.jsxs)("button",{onClick:t,className:"group relative aspect-square rounded-2xl border border-white/10 bg-black/40 hover:border-white/30 transition-all duration-300 hover:scale-[1.03] focus:outline-none overflow-hidden",style:{boxShadow:`inset 0 0 24px ${a}22`},children:[(0,x.jsx)("div",{className:"absolute inset-0 flex items-center justify-center",children:(0,x.jsxs)("div",{className:"relative h-12 w-12 transition-transform duration-500 group-hover:rotate-180",style:{filter:`drop-shadow(0 0 12px ${a}88)`},children:[(0,x.jsx)("div",{className:"absolute inset-0 rotate-45 rounded-md",style:{background:`linear-gradient(135deg, ${a}, ${a}66)`,border:`1px solid ${a}`}}),(0,x.jsx)("div",{className:"absolute inset-2 rotate-45 rounded-sm",style:{background:"linear-gradient(135deg, rgba(255,255,255,0.5), transparent)"}})]})}),(0,x.jsxs)("div",{className:"absolute top-1.5 left-1.5 text-[10px] font-mono px-1.5 py-0.5 rounded bg-black/50",style:{color:a},children:["T",e.tier]}),(0,x.jsx)("div",{className:"absolute bottom-1.5 right-1.5 text-[10px] text-white/70",children:s}),(0,x.jsx)("div",{className:"absolute inset-0 bg-gradient-to-t from-black/60 to-transparent opacity-0 group-hover:opacity-100 transition-opacity flex items-end justify-center pb-2",children:(0,x.jsx)("span",{className:"text-[11px] font-medium text-white",children:"解码 →"})})]})}function tl({className:e,...t}){return(0,x.jsx)("div",{"data-slot":"card",className:(0,eX.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}let to=(0,ew.default)("pickaxe",[["path",{d:"M14.531 12.469 6.619 20.38a1 1 0 1 1-3-3l7.912-7.912",key:"we99rg"}],["path",{d:"M15.686 4.314A12.5 12.5 0 0 0 5.461 2.958 1 1 0 0 0 5.58 4.71a22 22 0 0 1 6.318 3.393",key:"1w6hck"}],["path",{d:"M17.7 3.7a1 1 0 0 0-1.4 0l-4.6 4.6a1 1 0 0 0 0 1.4l2.6 2.6a1 1 0 0 0 1.4 0l4.6-4.6a1 1 0 0 0 0-1.4z",key:"15hgfx"}],["path",{d:"M19.686 8.314a12.501 12.501 0 0 1 1.356 10.225 1 1 0 0 1-1.751-.119 22 22 0 0 0-3.393-6.319",key:"452b4h"}]]),ti=(0,ew.default)("scan-line",[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2",key:"aa7l1z"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2",key:"4qcy5o"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2",key:"6vwrx8"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2",key:"ioqczr"}],["path",{d:"M7 12h10",key:"b7w52i"}]]),tc=(0,ew.default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]),td=(0,ew.default)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]),tu=(0,ew.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]),th={Pickaxe:to,ScanLine:ti,Rocket:tc,BookOpen:td},tf={mining:"#34d399",decoding:"#fb7185",expedition:"#fbbf24",narrative:"#e879f9"};function tm(){let e=ey(e=>e.tech),t=ey(e=>e.insights),a=ey(e=>e.buyTech);return(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex flex-col gap-3 h-full",children:[(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center justify-between",children:[(0,x.jsx)("h3",{className:"jsx-fbf3fdae687a84dd text-sm font-semibold",children:"技术树"}),(0,x.jsxs)("span",{className:"jsx-fbf3fdae687a84dd text-xs text-muted-foreground",children:["洞见 ",(0,x.jsx)("span",{className:"jsx-fbf3fdae687a84dd text-amber-300 font-mono",children:$(t)})]})]}),(0,x.jsx)("div",{className:"jsx-fbf3fdae687a84dd flex-1 overflow-y-auto echo-scroll pr-1 space-y-3",children:["mining","decoding","expedition","narrative"].map(s=>{let r=C[s],n=th[r.icon],l=tf[s],o=_.filter(e=>e.branch===s);return(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd",children:[(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center gap-2 mb-1.5 px-1",children:[(0,x.jsx)(n,{className:"jsx-fbf3fdae687a84dd h-3.5 w-3.5"}),(0,x.jsx)("span",{style:{color:l},className:"jsx-fbf3fdae687a84dd text-xs font-medium",children:r.name}),(0,x.jsx)("span",{className:"jsx-fbf3fdae687a84dd text-[10px] text-muted-foreground/70",children:r.desc})]}),(0,x.jsx)("div",{className:"jsx-fbf3fdae687a84dd grid gap-1.5",children:o.map(s=>{let r=(e[s.id]??0)>=1,n=t>=s.cost;return(0,x.jsx)(tl,{className:`p-2.5 transition-all duration-200 ${r?"bg-white/5 border-white/10":n?"bg-black/30 border-white/15 hover:border-white/30 cursor-pointer":"bg-black/20 border-white/5 opacity-60"}`,style:r?{boxShadow:`inset 0 0 0 1px ${l}44, 0 0 12px ${l}22`}:void 0,children:(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center gap-2",children:[(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex-1 min-w-0",children:[(0,x.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center gap-1.5",children:[(0,x.jsx)("span",{style:{color:r?l:void 0},className:"jsx-fbf3fdae687a84dd text-xs font-semibold truncate",children:s.name}),r&&(0,x.jsx)(te,{className:"h-3 w-3",style:{color:l}})]}),(0,x.jsx)("p",{className:"jsx-fbf3fdae687a84dd text-[10px] text-muted-foreground/80 truncate",children:s.desc})]}),!r&&(0,x.jsxs)(e8,{size:"sm",variant:n?"default":"ghost",disabled:!n,onClick:()=>{a(s.id)&&e3("techBuy")},className:"h-7 px-2 text-[11px] shrink-0",style:n?{background:`${l}22`,border:`1px solid ${l}66`,color:l}:void 0,children:[(0,x.jsx)(tu,{className:"h-2.5 w-2.5 mr-1"}),s.cost]})]})},s.id)})})]},s)})}),(0,x.jsx)(eZ.default,{id:"fbf3fdae687a84dd",children:".echo-scroll::-webkit-scrollbar{width:5px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}"})]})}var tx=e.i(48425),tp=e.i(96626),tg=e.i(30030),tb=e.i(30207),tv=p.createContext(void 0);function ty(e){let t=p.useContext(tv);return e||t||"ltr"}var tw=e.i(34620),tj=e.i(81140),tN="ScrollArea",[tk,tS]=(0,tg.createContextScope)(tN),[tM,t_]=tk(tN),tC=p.forwardRef((e,t)=>{let{__scopeScrollArea:a,type:s="hover",dir:r,scrollHideDelay:n=600,...l}=e,[o,i]=p.useState(null),[c,d]=p.useState(null),[u,h]=p.useState(null),[f,m]=p.useState(null),[g,b]=p.useState(null),[v,y]=p.useState(0),[w,j]=p.useState(0),[N,k]=p.useState(!1),[S,M]=p.useState(!1),_=(0,eM.useComposedRefs)(t,e=>i(e)),C=ty(r);return(0,x.jsx)(tM,{scope:a,type:s,dir:C,scrollHideDelay:n,scrollArea:o,viewport:c,onViewportChange:d,content:u,onContentChange:h,scrollbarX:f,onScrollbarXChange:m,scrollbarXEnabled:N,onScrollbarXEnabledChange:k,scrollbarY:g,onScrollbarYChange:b,scrollbarYEnabled:S,onScrollbarYEnabledChange:M,onCornerWidthChange:y,onCornerHeightChange:j,children:(0,x.jsx)(tx.Primitive.div,{dir:C,...l,ref:_,style:{position:"relative","--radix-scroll-area-corner-width":v+"px","--radix-scroll-area-corner-height":w+"px",...e.style}})})});tC.displayName=tN;var tE="ScrollAreaViewport",tT=p.forwardRef((e,t)=>{let{__scopeScrollArea:a,children:s,nonce:r,...n}=e,l=t_(tE,a),o=p.useRef(null),i=(0,eM.useComposedRefs)(t,o,l.onViewportChange);return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),(0,x.jsx)(tx.Primitive.div,{"data-radix-scroll-area-viewport":"",...n,ref:i,style:{overflowX:l.scrollbarXEnabled?"scroll":"hidden",overflowY:l.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,x.jsx)("div",{ref:l.onContentChange,style:{minWidth:"100%",display:"table"},children:s})})]})});tT.displayName=tE;var tR="ScrollAreaScrollbar",tP=p.forwardRef((e,t)=>{let{forceMount:a,...s}=e,r=t_(tR,e.__scopeScrollArea),{onScrollbarXEnabledChange:n,onScrollbarYEnabledChange:l}=r,o="horizontal"===e.orientation;return p.useEffect(()=>(o?n(!0):l(!0),()=>{o?n(!1):l(!1)}),[o,n,l]),"hover"===r.type?(0,x.jsx)(t$,{...s,ref:t,forceMount:a}):"scroll"===r.type?(0,x.jsx)(tA,{...s,ref:t,forceMount:a}):"auto"===r.type?(0,x.jsx)(tD,{...s,ref:t,forceMount:a}):"always"===r.type?(0,x.jsx)(tz,{...s,ref:t}):null});tP.displayName=tR;var t$=p.forwardRef((e,t)=>{let{forceMount:a,...s}=e,r=t_(tR,e.__scopeScrollArea),[n,l]=p.useState(!1);return p.useEffect(()=>{let e=r.scrollArea,t=0;if(e){let a=()=>{window.clearTimeout(t),l(!0)},s=()=>{t=window.setTimeout(()=>l(!1),r.scrollHideDelay)};return e.addEventListener("pointerenter",a),e.addEventListener("pointerleave",s),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",a),e.removeEventListener("pointerleave",s)}}},[r.scrollArea,r.scrollHideDelay]),(0,x.jsx)(tp.Presence,{present:a||n,children:(0,x.jsx)(tD,{"data-state":n?"visible":"hidden",...s,ref:t})})}),tA=p.forwardRef((e,t)=>{var a;let{forceMount:s,...r}=e,n=t_(tR,e.__scopeScrollArea),l="horizontal"===e.orientation,o=t0(()=>c("SCROLL_END"),100),[i,c]=(a={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},p.useReducer((e,t)=>a[e][t]??e,"hidden"));return p.useEffect(()=>{if("idle"===i){let e=window.setTimeout(()=>c("HIDE"),n.scrollHideDelay);return()=>window.clearTimeout(e)}},[i,n.scrollHideDelay,c]),p.useEffect(()=>{let e=n.viewport,t=l?"scrollLeft":"scrollTop";if(e){let a=e[t],s=()=>{let s=e[t];a!==s&&(c("SCROLL"),o()),a=s};return e.addEventListener("scroll",s),()=>e.removeEventListener("scroll",s)}},[n.viewport,l,c,o]),(0,x.jsx)(tp.Presence,{present:s||"hidden"!==i,children:(0,x.jsx)(tz,{"data-state":"hidden"===i?"hidden":"visible",...r,ref:t,onPointerEnter:(0,tj.composeEventHandlers)(e.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:(0,tj.composeEventHandlers)(e.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),tD=p.forwardRef((e,t)=>{let a=t_(tR,e.__scopeScrollArea),{forceMount:s,...r}=e,[n,l]=p.useState(!1),o="horizontal"===e.orientation,i=t0(()=>{if(a.viewport){let e=a.viewport.offsetWidth<a.viewport.scrollWidth,t=a.viewport.offsetHeight<a.viewport.scrollHeight;l(o?e:t)}},10);return t1(a.viewport,i),t1(a.content,i),(0,x.jsx)(tp.Presence,{present:s||n,children:(0,x.jsx)(tz,{"data-state":n?"visible":"hidden",...r,ref:t})})}),tz=p.forwardRef((e,t)=>{let{orientation:a="vertical",...s}=e,r=t_(tR,e.__scopeScrollArea),n=p.useRef(null),l=p.useRef(0),[o,i]=p.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),c=tY(o.viewport,o.content),d={...s,sizes:o,onSizesChange:i,hasThumb:!!(c>0&&c<1),onThumbChange:e=>n.current=e,onThumbPointerUp:()=>l.current=0,onThumbPointerDown:e=>l.current=e};function u(e,t){return function(e,t,a,s="ltr"){let r=tG(a),n=t||r/2,l=a.scrollbar.paddingStart+n,o=a.scrollbar.size-a.scrollbar.paddingEnd-(r-n),i=a.content-a.viewport;return tZ([l,o],"ltr"===s?[0,i]:[-1*i,0])(e)}(e,l.current,o,t)}return"horizontal"===a?(0,x.jsx)(tO,{...d,ref:t,onThumbPositionChange:()=>{if(r.viewport&&n.current){let e=tJ(r.viewport.scrollLeft,o,r.dir);n.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{r.viewport&&(r.viewport.scrollLeft=e)},onDragScroll:e=>{r.viewport&&(r.viewport.scrollLeft=u(e,r.dir))}}):"vertical"===a?(0,x.jsx)(tI,{...d,ref:t,onThumbPositionChange:()=>{if(r.viewport&&n.current){let e=tJ(r.viewport.scrollTop,o);n.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{r.viewport&&(r.viewport.scrollTop=e)},onDragScroll:e=>{r.viewport&&(r.viewport.scrollTop=u(e))}}):null}),tO=p.forwardRef((e,t)=>{let{sizes:a,onSizesChange:s,...r}=e,n=t_(tR,e.__scopeScrollArea),[l,o]=p.useState(),i=p.useRef(null),c=(0,eM.useComposedRefs)(t,i,n.onScrollbarXChange);return p.useEffect(()=>{i.current&&o(getComputedStyle(i.current))},[i]),(0,x.jsx)(tB,{"data-orientation":"horizontal",...r,ref:c,sizes:a,style:{bottom:0,left:"rtl"===n.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===n.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":tG(a)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,a)=>{if(n.viewport){var s,r;let l=n.viewport.scrollLeft+t.deltaX;e.onWheelScroll(l),s=l,r=a,s>0&&s<r&&t.preventDefault()}},onResize:()=>{i.current&&n.viewport&&l&&s({content:n.viewport.scrollWidth,viewport:n.viewport.offsetWidth,scrollbar:{size:i.current.clientWidth,paddingStart:tX(l.paddingLeft),paddingEnd:tX(l.paddingRight)}})}})}),tI=p.forwardRef((e,t)=>{let{sizes:a,onSizesChange:s,...r}=e,n=t_(tR,e.__scopeScrollArea),[l,o]=p.useState(),i=p.useRef(null),c=(0,eM.useComposedRefs)(t,i,n.onScrollbarYChange);return p.useEffect(()=>{i.current&&o(getComputedStyle(i.current))},[i]),(0,x.jsx)(tB,{"data-orientation":"vertical",...r,ref:c,sizes:a,style:{top:0,right:"ltr"===n.dir?0:void 0,left:"rtl"===n.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":tG(a)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,a)=>{if(n.viewport){var s,r;let l=n.viewport.scrollTop+t.deltaY;e.onWheelScroll(l),s=l,r=a,s>0&&s<r&&t.preventDefault()}},onResize:()=>{i.current&&n.viewport&&l&&s({content:n.viewport.scrollHeight,viewport:n.viewport.offsetHeight,scrollbar:{size:i.current.clientHeight,paddingStart:tX(l.paddingTop),paddingEnd:tX(l.paddingBottom)}})}})}),[tF,tL]=tk(tR),tB=p.forwardRef((e,t)=>{let{__scopeScrollArea:a,sizes:s,hasThumb:r,onThumbChange:n,onThumbPointerUp:l,onThumbPointerDown:o,onThumbPositionChange:i,onDragScroll:c,onWheelScroll:d,onResize:u,...h}=e,f=t_(tR,a),[m,g]=p.useState(null),b=(0,eM.useComposedRefs)(t,e=>g(e)),v=p.useRef(null),y=p.useRef(""),w=f.viewport,j=s.content-s.viewport,N=(0,tb.useCallbackRef)(d),k=(0,tb.useCallbackRef)(i),S=t0(u,10);function M(e){v.current&&c({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return p.useEffect(()=>{let e=e=>{let t=e.target;m?.contains(t)&&N(e,j)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[w,m,j,N]),p.useEffect(k,[s,k]),t1(m,S),t1(f.content,S),(0,x.jsx)(tF,{scope:a,scrollbar:m,hasThumb:r,onThumbChange:(0,tb.useCallbackRef)(n),onThumbPointerUp:(0,tb.useCallbackRef)(l),onThumbPositionChange:k,onThumbPointerDown:(0,tb.useCallbackRef)(o),children:(0,x.jsx)(tx.Primitive.div,{...h,ref:b,style:{position:"absolute",...h.style},onPointerDown:(0,tj.composeEventHandlers)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),v.current=m.getBoundingClientRect(),y.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",f.viewport&&(f.viewport.style.scrollBehavior="auto"),M(e))}),onPointerMove:(0,tj.composeEventHandlers)(e.onPointerMove,M),onPointerUp:(0,tj.composeEventHandlers)(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=y.current,f.viewport&&(f.viewport.style.scrollBehavior=""),v.current=null})})})}),tH="ScrollAreaThumb",tK=p.forwardRef((e,t)=>{let{forceMount:a,...s}=e,r=tL(tH,e.__scopeScrollArea);return(0,x.jsx)(tp.Presence,{present:a||r.hasThumb,children:(0,x.jsx)(tW,{ref:t,...s})})}),tW=p.forwardRef((e,t)=>{let{__scopeScrollArea:a,style:s,...r}=e,n=t_(tH,a),l=tL(tH,a),{onThumbPositionChange:o}=l,i=(0,eM.useComposedRefs)(t,e=>l.onThumbChange(e)),c=p.useRef(void 0),d=t0(()=>{c.current&&(c.current(),c.current=void 0)},100);return p.useEffect(()=>{let e=n.viewport;if(e){let t=()=>{d(),c.current||(c.current=tQ(e,o),o())};return o(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[n.viewport,d,o]),(0,x.jsx)(tx.Primitive.div,{"data-state":l.hasThumb?"visible":"hidden",...r,ref:i,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...s},onPointerDownCapture:(0,tj.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),a=e.clientX-t.left,s=e.clientY-t.top;l.onThumbPointerDown({x:a,y:s})}),onPointerUp:(0,tj.composeEventHandlers)(e.onPointerUp,l.onThumbPointerUp)})});tK.displayName=tH;var tq="ScrollAreaCorner",tV=p.forwardRef((e,t)=>{let a=t_(tq,e.__scopeScrollArea),s=!!(a.scrollbarX&&a.scrollbarY);return"scroll"!==a.type&&s?(0,x.jsx)(tU,{...e,ref:t}):null});tV.displayName=tq;var tU=p.forwardRef((e,t)=>{let{__scopeScrollArea:a,...s}=e,r=t_(tq,a),[n,l]=p.useState(0),[o,i]=p.useState(0),c=!!(n&&o);return t1(r.scrollbarX,()=>{let e=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(e),i(e)}),t1(r.scrollbarY,()=>{let e=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(e),l(e)}),c?(0,x.jsx)(tx.Primitive.div,{...s,ref:t,style:{width:n,height:o,position:"absolute",right:"ltr"===r.dir?0:void 0,left:"rtl"===r.dir?0:void 0,bottom:0,...e.style}}):null});function tX(e){return e?parseInt(e,10):0}function tY(e,t){let a=e/t;return isNaN(a)?0:a}function tG(e){let t=tY(e.viewport,e.content),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-a)*t,18)}function tJ(e,t,a="ltr"){let s=tG(t),r=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,n=t.scrollbar.size-r,l=t.content-t.viewport,o=function(e,[t,a]){return Math.min(a,Math.max(t,e))}(e,"ltr"===a?[0,l]:[-1*l,0]);return tZ([0,l],[0,n-s])(o)}function tZ(e,t){return a=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let s=(t[1]-t[0])/(e[1]-e[0]);return t[0]+s*(a-e[0])}}var tQ=(e,t=()=>{})=>{let a={left:e.scrollLeft,top:e.scrollTop},s=0;return!function r(){let n={left:e.scrollLeft,top:e.scrollTop},l=a.left!==n.left,o=a.top!==n.top;(l||o)&&t(),a=n,s=window.requestAnimationFrame(r)}(),()=>window.cancelAnimationFrame(s)};function t0(e,t){let a=(0,tb.useCallbackRef)(e),s=p.useRef(0);return p.useEffect(()=>()=>window.clearTimeout(s.current),[]),p.useCallback(()=>{window.clearTimeout(s.current),s.current=window.setTimeout(a,t)},[a,t])}function t1(e,t){let a=(0,tb.useCallbackRef)(t);(0,tw.useLayoutEffect)(()=>{let t=0;if(e){let s=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(a)});return s.observe(e),()=>{window.cancelAnimationFrame(t),s.unobserve(e)}}},[e,a])}function t2({className:e,children:t,...a}){return(0,x.jsxs)(tC,{"data-slot":"scroll-area",className:(0,eX.cn)("relative",e),...a,children:[(0,x.jsx)(tT,{"data-slot":"scroll-area-viewport",className:"focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1",children:t}),(0,x.jsx)(t5,{}),(0,x.jsx)(tV,{})]})}function t5({className:e,orientation:t="vertical",...a}){return(0,x.jsx)(tP,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,eX.cn)("flex touch-none p-px transition-colors select-none","vertical"===t&&"h-full w-2.5 border-l border-l-transparent","horizontal"===t&&"h-2.5 flex-col border-t border-t-transparent",e),...a,children:(0,x.jsx)(tK,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}let t3=["","寂灭前夜","谐振纪","飞升潮","回响纪","接触纪"];function t4(){let e=ey(e=>e.fragments),t=ey(e=>e.totalDecoded),a=function(e){for(let t of E)if(e<t.threshold)return t.threshold;return null}(t),[s,r]=(0,p.useState)(null),n=E.filter(e=>1===e.era),l=n.filter(t=>e[t.id]).length;return(0,x.jsxs)("div",{className:"flex flex-col gap-2 h-full",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between",children:[(0,x.jsxs)("h3",{className:"text-sm font-semibold flex items-center gap-1.5",children:[(0,x.jsx)(td,{className:"h-4 w-4 text-fuchsia-400"}),"记忆图谱"]}),(0,x.jsxs)("span",{className:"text-xs text-muted-foreground",children:[l,"/",n.length," · 第一纪元"]})]}),a&&(0,x.jsxs)("div",{className:"text-[10px] text-muted-foreground/80 px-1",children:["再解码 ",(0,x.jsx)("span",{className:"text-fuchsia-300 font-mono",children:a-t})," 颗 → 下一个碎片"]}),(0,x.jsx)(t2,{className:"flex-1 min-h-0",children:(0,x.jsx)("div",{className:"grid grid-cols-2 gap-2 pr-2",children:n.map((t,a)=>{let s=!!e[t.id];return(0,x.jsxs)("button",{onClick:()=>s&&r(t),disabled:!s,className:`relative aspect-[4/3] rounded-xl border text-left p-2 transition-all duration-300 overflow-hidden ${s?"border-fuchsia-400/40 bg-gradient-to-br from-fuchsia-950/40 to-black/40 hover:border-fuchsia-400/70 hover:scale-[1.02] cursor-pointer":"border-white/5 bg-black/30 cursor-not-allowed"}`,style:s?{boxShadow:"0 0 16px rgba(232,121,249,0.15)"}:void 0,children:[(0,x.jsx)("span",{className:`absolute top-1.5 right-1.5 text-[9px] font-mono ${s?"text-fuchsia-300/70":"text-white/20"}`,children:String(a+1).padStart(2,"0")}),s?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("div",{className:"absolute -top-3 -right-3 h-12 w-12 rounded-full bg-fuchsia-500/20 blur-xl"}),(0,x.jsx)(e7,{className:"h-3 w-3 text-fuchsia-300 mb-1"}),(0,x.jsx)("div",{className:"text-[11px] font-semibold text-fuchsia-100 leading-tight",children:t.title}),(0,x.jsxs)("div",{className:"text-[9px] text-muted-foreground mt-1 line-clamp-2",children:[t.echo.slice(0,28),"…"]})]}):(0,x.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-1",children:[(0,x.jsx)(tu,{className:"h-4 w-4 text-white/20"}),(0,x.jsxs)("span",{className:"text-[9px] text-white/30",children:["需解码 ",t.threshold," 颗"]})]})]},t.id)})})}),s&&(0,x.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/70 backdrop-blur-sm",onClick:()=>r(null),children:(0,x.jsxs)(tl,{className:"max-w-md w-full p-5 bg-gradient-to-br from-fuchsia-950/60 to-black/80 border-fuchsia-400/40",onClick:e=>e.stopPropagation(),style:{boxShadow:"0 0 40px rgba(232,121,249,0.25)"},children:[(0,x.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,x.jsx)(e7,{className:"h-4 w-4 text-fuchsia-300"}),(0,x.jsxs)("span",{className:"text-[10px] text-fuchsia-300/70 font-mono",children:["第 ",s.era," 纪元 · ",t3[s.era]||""]})]}),(0,x.jsx)("h4",{className:"text-lg font-bold text-fuchsia-100 mb-3",children:s.title}),(0,x.jsxs)("p",{className:"text-sm text-foreground/90 leading-relaxed italic",children:["「",s.echo,"」"]}),(0,x.jsx)("button",{onClick:()=>r(null),className:"mt-4 text-xs text-muted-foreground hover:text-foreground transition",children:"关闭"})]})})]})}var t6=p[" useId ".trim().toString()]||(()=>void 0),t8=0;function t9(e){let[t,a]=p.useState(t6());return(0,tw.useLayoutEffect)(()=>{e||a(e=>e??String(t8++))},[e]),e||(t?`radix-${t}`:"")}var t7=e.i(69340),ae=e.i(26330),at="focusScope.autoFocusOnMount",aa="focusScope.autoFocusOnUnmount",as={bubbles:!1,cancelable:!0},ar=p.forwardRef((e,t)=>{let{loop:a=!1,trapped:s=!1,onMountAutoFocus:r,onUnmountAutoFocus:n,...l}=e,[o,i]=p.useState(null),c=(0,tb.useCallbackRef)(r),d=(0,tb.useCallbackRef)(n),u=p.useRef(null),h=(0,eM.useComposedRefs)(t,e=>i(e)),f=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(s){let e=function(e){if(f.paused||!o)return;let t=e.target;o.contains(t)?u.current=t:ao(u.current,{select:!0})},t=function(e){if(f.paused||!o)return;let t=e.relatedTarget;null!==t&&(o.contains(t)||ao(u.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let a=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&ao(o)});return o&&a.observe(o,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),a.disconnect()}}},[s,o,f.paused]),p.useEffect(()=>{if(o){ai.add(f);let e=document.activeElement;if(!o.contains(e)){let t=new CustomEvent(at,as);o.addEventListener(at,c),o.dispatchEvent(t),t.defaultPrevented||(function(e,{select:t=!1}={}){let a=document.activeElement;for(let s of e)if(ao(s,{select:t}),document.activeElement!==a)return}(an(o).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&ao(o))}return()=>{o.removeEventListener(at,c),setTimeout(()=>{let t=new CustomEvent(aa,as);o.addEventListener(aa,d),o.dispatchEvent(t),t.defaultPrevented||ao(e??document.body,{select:!0}),o.removeEventListener(aa,d),ai.remove(f)},0)}}},[o,c,d,f]);let m=p.useCallback(e=>{if(!a&&!s||f.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){var n;let t,s=e.currentTarget,[l,o]=[al(t=an(n=s),n),al(t.reverse(),n)];l&&o?e.shiftKey||r!==o?e.shiftKey&&r===l&&(e.preventDefault(),a&&ao(o,{select:!0})):(e.preventDefault(),a&&ao(l,{select:!0})):r===s&&e.preventDefault()}},[a,s,f.paused]);return(0,x.jsx)(tx.Primitive.div,{tabIndex:-1,...l,ref:h,onKeyDown:m})});function an(e){let t=[],a=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;a.nextNode();)t.push(a.currentNode);return t}function al(e,t){for(let a of e)if(!function(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===t||e!==t);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(a,{upTo:t}))return a}function ao(e,{select:t=!1}={}){if(e&&e.focus){var a;let s=document.activeElement;e.focus({preventScroll:!0}),e!==s&&(a=e)instanceof HTMLInputElement&&"select"in a&&t&&e.select()}}ar.displayName="FocusScope";var ai=(l=[],{add(e){let t=l[0];e!==t&&t?.pause(),(l=ac(l,e)).unshift(e)},remove(e){l=ac(l,e),l[0]?.resume()}});function ac(e,t){let a=[...e],s=a.indexOf(t);return -1!==s&&a.splice(s,1),a}var ad=e.i(74606),au=0;function ah(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var af=function(){return(af=Object.assign||function(e){for(var t,a=1,s=arguments.length;a<s;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)};function am(e,t){var a={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&0>t.indexOf(s)&&(a[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,s=Object.getOwnPropertySymbols(e);r<s.length;r++)0>t.indexOf(s[r])&&Object.prototype.propertyIsEnumerable.call(e,s[r])&&(a[s[r]]=e[s[r]]);return a}var ax=("function"==typeof SuppressedError&&SuppressedError,"right-scroll-bar-position"),ap="width-before-scroll-bar";function ag(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var ab="u">typeof window?p.useLayoutEffect:p.useEffect,av=new WeakMap,ay=(void 0===i&&(i={}),(void 0===c&&(c=function(e){return e}),d=[],u=!1,h={read:function(){if(u)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return d.length?d[d.length-1]:null},useMedium:function(e){var t=c(e,u);return d.push(t),function(){d=d.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(u=!0;d.length;){var t=d;d=[],t.forEach(e)}d={push:function(t){return e(t)},filter:function(){return d}}},assignMedium:function(e){u=!0;var t=[];if(d.length){var a=d;d=[],a.forEach(e),t=d}var s=function(){var a=t;t=[],a.forEach(e)},r=function(){return Promise.resolve().then(s)};r(),d={push:function(e){t.push(e),r()},filter:function(e){return t=t.filter(e),d}}}}).options=af({async:!0,ssr:!1},i),h),aw=function(){},aj=p.forwardRef(function(e,t){var a,s,r,n,l=p.useRef(null),o=p.useState({onScrollCapture:aw,onWheelCapture:aw,onTouchMoveCapture:aw}),i=o[0],c=o[1],d=e.forwardProps,u=e.children,h=e.className,f=e.removeScrollBar,m=e.enabled,x=e.shards,g=e.sideCar,b=e.noRelative,v=e.noIsolation,y=e.inert,w=e.allowPinchZoom,j=e.as,N=e.gapMode,k=am(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),S=(a=[l,t],s=function(e){return a.forEach(function(t){return ag(t,e)})},(r=(0,p.useState)(function(){return{value:null,callback:s,facade:{get current(){return r.value},set current(value){var e=r.value;e!==value&&(r.value=value,r.callback(value,e))}}}})[0]).callback=s,n=r.facade,ab(function(){var e=av.get(n);if(e){var t=new Set(e),s=new Set(a),r=n.current;t.forEach(function(e){s.has(e)||ag(e,null)}),s.forEach(function(e){t.has(e)||ag(e,r)})}av.set(n,a)},[a]),n),M=af(af({},k),i);return p.createElement(p.Fragment,null,m&&p.createElement(g,{sideCar:ay,removeScrollBar:f,shards:x,noRelative:b,noIsolation:v,inert:y,setCallbacks:c,allowPinchZoom:!!w,lockRef:l,gapMode:N}),d?p.cloneElement(p.Children.only(u),af(af({},M),{ref:S})):p.createElement(void 0===j?"div":j,af({},M,{className:h,ref:S}),u))});aj.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},aj.classNames={fullWidth:ap,zeroRight:ax};var aN=function(e){var t=e.sideCar,a=am(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var s=t.read();if(!s)throw Error("Sidecar medium not found");return p.createElement(s,af({},a))};aN.isSideCarExport=!0;var ak=function(){var e=0,t=null;return{add:function(a){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=m||("u">typeof __webpack_nonce__?__webpack_nonce__:void 0);return t&&e.setAttribute("nonce",t),e}())){var s,r;(s=t).styleSheet?s.styleSheet.cssText=a:s.appendChild(document.createTextNode(a)),r=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(r)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},aS=function(){var e=ak();return function(t,a){p.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&a])}},aM=function(){var e=aS();return function(t){return e(t.styles,t.dynamic),null}},a_={left:0,top:0,right:0,gap:0},aC=function(e){return parseInt(e||"",10)||0},aE=function(e){var t=window.getComputedStyle(document.body),a=t["padding"===e?"paddingLeft":"marginLeft"],s=t["padding"===e?"paddingTop":"marginTop"],r=t["padding"===e?"paddingRight":"marginRight"];return[aC(a),aC(s),aC(r)]},aT=function(e){if(void 0===e&&(e="margin"),"u"<typeof window)return a_;var t=aE(e),a=document.documentElement.clientWidth,s=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,s-a+t[2]-t[0])}},aR=aM(),aP="data-scroll-locked",a$=function(e,t,a,s){var r=e.left,n=e.top,l=e.right,o=e.gap;return void 0===a&&(a="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(s,";\n padding-right: ").concat(o,"px ").concat(s,";\n }\n body[").concat(aP,"] {\n overflow: hidden ").concat(s,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(s,";"),"margin"===a&&"\n padding-left: ".concat(r,"px;\n padding-top: ").concat(n,"px;\n padding-right: ").concat(l,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(o,"px ").concat(s,";\n "),"padding"===a&&"padding-right: ".concat(o,"px ").concat(s,";")].filter(Boolean).join(""),"\n }\n \n .").concat(ax," {\n right: ").concat(o,"px ").concat(s,";\n }\n \n .").concat(ap," {\n margin-right: ").concat(o,"px ").concat(s,";\n }\n \n .").concat(ax," .").concat(ax," {\n right: 0 ").concat(s,";\n }\n \n .").concat(ap," .").concat(ap," {\n margin-right: 0 ").concat(s,";\n }\n \n body[").concat(aP,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(o,"px;\n }\n")},aA=function(){var e=parseInt(document.body.getAttribute(aP)||"0",10);return isFinite(e)?e:0},aD=function(){p.useEffect(function(){return document.body.setAttribute(aP,(aA()+1).toString()),function(){var e=aA()-1;e<=0?document.body.removeAttribute(aP):document.body.setAttribute(aP,e.toString())}},[])},az=function(e){var t=e.noRelative,a=e.noImportant,s=e.gapMode,r=void 0===s?"margin":s;aD();var n=p.useMemo(function(){return aT(r)},[r]);return p.createElement(aR,{styles:a$(n,!t,r,a?"":"!important")})},aO=!1;if("u">typeof window)try{var aI=Object.defineProperty({},"passive",{get:function(){return aO=!0,!0}});window.addEventListener("test",aI,aI),window.removeEventListener("test",aI,aI)}catch(e){aO=!1}var aF=!!aO&&{passive:!1},aL=function(e,t){if(!(e instanceof Element))return!1;var a=window.getComputedStyle(e);return"hidden"!==a[t]&&(a.overflowY!==a.overflowX||"TEXTAREA"===e.tagName||"visible"!==a[t])},aB=function(e,t){var a=t.ownerDocument,s=t;do{if("u">typeof ShadowRoot&&s instanceof ShadowRoot&&(s=s.host),aH(e,s)){var r=aK(e,s);if(r[1]>r[2])return!0}s=s.parentNode}while(s&&s!==a.body)return!1},aH=function(e,t){return"v"===e?aL(t,"overflowY"):aL(t,"overflowX")},aK=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},aW=function(e,t,a,s,r){var n,l=(n=window.getComputedStyle(t).direction,"h"===e&&"rtl"===n?-1:1),o=l*s,i=a.target,c=t.contains(i),d=!1,u=o>0,h=0,f=0;do{if(!i)break;var m=aK(e,i),x=m[0],p=m[1]-m[2]-l*x;(x||p)&&aH(e,i)&&(h+=p,f+=x);var g=i.parentNode;i=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&i!==document.body||c&&(t.contains(i)||t===i))return u&&(r&&1>Math.abs(h)||!r&&o>h)?d=!0:!u&&(r&&1>Math.abs(f)||!r&&-o>f)&&(d=!0),d},aq=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},aV=function(e){return[e.deltaX,e.deltaY]},aU=function(e){return e&&"current"in e?e.current:e},aX=0,aY=[];let aG=(f=function(e){var t=p.useRef([]),a=p.useRef([0,0]),s=p.useRef(),r=p.useState(aX++)[0],n=p.useState(aM)[0],l=p.useRef(e);p.useEffect(function(){l.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var t=(function(e,t,a){if(a||2==arguments.length)for(var s,r=0,n=t.length;r<n;r++)!s&&r in t||(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return e.concat(s||Array.prototype.slice.call(t))})([e.lockRef.current],(e.shards||[]).map(aU),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var o=p.useCallback(function(e,t){if("touches"in e&&2===e.touches.length||"wheel"===e.type&&e.ctrlKey)return!l.current.allowPinchZoom;var r,n=aq(e),o=a.current,i="deltaX"in e?e.deltaX:o[0]-n[0],c="deltaY"in e?e.deltaY:o[1]-n[1],d=e.target,u=Math.abs(i)>Math.abs(c)?"h":"v";if("touches"in e&&"h"===u&&"range"===d.type)return!1;var h=window.getSelection(),f=h&&h.anchorNode;if(f&&(f===d||f.contains(d)))return!1;var m=aB(u,d);if(!m)return!0;if(m?r=u:(r="v"===u?"h":"v",m=aB(u,d)),!m)return!1;if(!s.current&&"changedTouches"in e&&(i||c)&&(s.current=r),!r)return!0;var x=s.current||r;return aW(x,t,e,"h"===x?i:c,!0)},[]),i=p.useCallback(function(e){if(aY.length&&aY[aY.length-1]===n){var a="deltaY"in e?aV(e):aq(e),s=t.current.filter(function(t){var s;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(s=t.delta,s[0]===a[0]&&s[1]===a[1])})[0];if(s&&s.should){e.cancelable&&e.preventDefault();return}if(!s){var r=(l.current.shards||[]).map(aU).filter(Boolean).filter(function(t){return t.contains(e.target)});(r.length>0?o(e,r[0]):!l.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),c=p.useCallback(function(e,a,s,r){var n={name:e,delta:a,target:s,should:r,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(s)};t.current.push(n),setTimeout(function(){t.current=t.current.filter(function(e){return e!==n})},1)},[]),d=p.useCallback(function(e){a.current=aq(e),s.current=void 0},[]),u=p.useCallback(function(t){c(t.type,aV(t),t.target,o(t,e.lockRef.current))},[]),h=p.useCallback(function(t){c(t.type,aq(t),t.target,o(t,e.lockRef.current))},[]);p.useEffect(function(){return aY.push(n),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:h}),document.addEventListener("wheel",i,aF),document.addEventListener("touchmove",i,aF),document.addEventListener("touchstart",d,aF),function(){aY=aY.filter(function(e){return e!==n}),document.removeEventListener("wheel",i,aF),document.removeEventListener("touchmove",i,aF),document.removeEventListener("touchstart",d,aF)}},[]);var f=e.removeScrollBar,m=e.inert;return p.createElement(p.Fragment,null,m?p.createElement(n,{styles:"\n .block-interactivity-".concat(r," {pointer-events: none;}\n .allow-interactivity-").concat(r," {pointer-events: all;}\n")}):null,f?p.createElement(az,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},ay.useMedium(f),aN);var aJ=p.forwardRef(function(e,t){return p.createElement(aj,af({},e,{ref:t,sideCar:aG}))});aJ.classNames=aj.classNames;var aZ=new WeakMap,aQ=new WeakMap,a0={},a1=0,a2=function(e){return e&&(e.host||a2(e.parentNode))},a5=function(e,t,a,s){var r=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var a=a2(e);return a&&t.contains(a)?a:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});a0[a]||(a0[a]=new WeakMap);var n=a0[a],l=[],o=new Set,i=new Set(r),c=function(e){!e||o.has(e)||(o.add(e),c(e.parentNode))};r.forEach(c);var d=function(e){!e||i.has(e)||Array.prototype.forEach.call(e.children,function(e){if(o.has(e))d(e);else try{var t=e.getAttribute(s),r=null!==t&&"false"!==t,i=(aZ.get(e)||0)+1,c=(n.get(e)||0)+1;aZ.set(e,i),n.set(e,c),l.push(e),1===i&&r&&aQ.set(e,!0),1===c&&e.setAttribute(a,"true"),r||e.setAttribute(s,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return d(t),o.clear(),a1++,function(){l.forEach(function(e){var t=aZ.get(e)-1,r=n.get(e)-1;aZ.set(e,t),n.set(e,r),t||(aQ.has(e)||e.removeAttribute(s),aQ.delete(e)),r||e.removeAttribute(a)}),--a1||(aZ=new WeakMap,aZ=new WeakMap,aQ=new WeakMap,a0={})}},a3=function(e,t,a){void 0===a&&(a="data-aria-hidden");var s=Array.from(Array.isArray(e)?e:[e]),r=t||("u"<typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body);return r?(s.push.apply(s,Array.from(r.querySelectorAll("[aria-live], script"))),a5(s,r,a,"aria-hidden")):function(){return null}},a4=Symbol("radix.slottable");function a6(e){return p.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===a4}var a8="Dialog",[a9,a7]=(0,tg.createContextScope)(a8),[se,st]=a9(a8),sa=e=>{let{__scopeDialog:t,children:a,open:s,defaultOpen:r,onOpenChange:n,modal:l=!0}=e,o=p.useRef(null),i=p.useRef(null),[c,d]=(0,t7.useControllableState)({prop:s,defaultProp:r??!1,onChange:n,caller:a8});return(0,x.jsx)(se,{scope:t,triggerRef:o,contentRef:i,contentId:t9(),titleId:t9(),descriptionId:t9(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(e=>!e),[d]),modal:l,children:a})};sa.displayName=a8;var ss="DialogTrigger";p.forwardRef((e,t)=>{let{__scopeDialog:a,...s}=e,r=st(ss,a),n=(0,eM.useComposedRefs)(t,r.triggerRef);return(0,x.jsx)(tx.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":sN(r.open),...s,ref:n,onClick:(0,tj.composeEventHandlers)(e.onClick,r.onOpenToggle)})}).displayName=ss;var sr="DialogPortal",[sn,sl]=a9(sr,{forceMount:void 0}),so=e=>{let{__scopeDialog:t,forceMount:a,children:s,container:r}=e,n=st(sr,t);return(0,x.jsx)(sn,{scope:t,forceMount:a,children:p.Children.map(s,e=>(0,x.jsx)(tp.Presence,{present:a||n.open,children:(0,x.jsx)(ad.Portal,{asChild:!0,container:r,children:e})}))})};so.displayName=sr;var si="DialogOverlay",sc=p.forwardRef((e,t)=>{let a=sl(si,e.__scopeDialog),{forceMount:s=a.forceMount,...r}=e,n=st(si,e.__scopeDialog);return n.modal?(0,x.jsx)(tp.Presence,{present:s||n.open,children:(0,x.jsx)(su,{...r,ref:t})}):null});sc.displayName=si;var sd=((o=p.forwardRef((e,t)=>{let{children:a,...s}=e;if(p.isValidElement(a)){var r;let e,n,l=(r=a,(n=(e=Object.getOwnPropertyDescriptor(r.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?r.ref:(n=(e=Object.getOwnPropertyDescriptor(r,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?r.props.ref:r.props.ref||r.ref),o=function(e,t){let a={...t};for(let s in t){let r=e[s],n=t[s];/^on[A-Z]/.test(s)?r&&n?a[s]=(...e)=>{let t=n(...e);return r(...e),t}:r&&(a[s]=r):"style"===s?a[s]={...r,...n}:"className"===s&&(a[s]=[r,n].filter(Boolean).join(" "))}return{...e,...a}}(s,a.props);return a.type!==p.Fragment&&(o.ref=t?(0,eM.composeRefs)(t,l):l),p.cloneElement(a,o)}return p.Children.count(a)>1?p.Children.only(null):null})).displayName="DialogOverlay.RemoveScroll.SlotClone",r=o,(n=p.forwardRef((e,t)=>{let{children:a,...s}=e,n=p.Children.toArray(a),l=n.find(a6);if(l){let e=l.props.children,a=n.map(t=>t!==l?t:p.Children.count(e)>1?p.Children.only(null):p.isValidElement(e)?e.props.children:null);return(0,x.jsx)(r,{...s,ref:t,children:p.isValidElement(e)?p.cloneElement(e,void 0,a):null})}return(0,x.jsx)(r,{...s,ref:t,children:a})})).displayName="DialogOverlay.RemoveScroll.Slot",n),su=p.forwardRef((e,t)=>{let{__scopeDialog:a,...s}=e,r=st(si,a);return(0,x.jsx)(aJ,{as:sd,allowPinchZoom:!0,shards:[r.contentRef],children:(0,x.jsx)(tx.Primitive.div,{"data-state":sN(r.open),...s,ref:t,style:{pointerEvents:"auto",...s.style}})})}),sh="DialogContent",sf=p.forwardRef((e,t)=>{let a=sl(sh,e.__scopeDialog),{forceMount:s=a.forceMount,...r}=e,n=st(sh,e.__scopeDialog);return(0,x.jsx)(tp.Presence,{present:s||n.open,children:n.modal?(0,x.jsx)(sm,{...r,ref:t}):(0,x.jsx)(sx,{...r,ref:t})})});sf.displayName=sh;var sm=p.forwardRef((e,t)=>{let a=st(sh,e.__scopeDialog),s=p.useRef(null),r=(0,eM.useComposedRefs)(t,a.contentRef,s);return p.useEffect(()=>{let e=s.current;if(e)return a3(e)},[]),(0,x.jsx)(sp,{...e,ref:r,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,tj.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),a.triggerRef.current?.focus()}),onPointerDownOutside:(0,tj.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,a=0===t.button&&!0===t.ctrlKey;(2===t.button||a)&&e.preventDefault()}),onFocusOutside:(0,tj.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),sx=p.forwardRef((e,t)=>{let a=st(sh,e.__scopeDialog),s=p.useRef(!1),r=p.useRef(!1);return(0,x.jsx)(sp,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(s.current||a.triggerRef.current?.focus(),t.preventDefault()),s.current=!1,r.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(s.current=!0,"pointerdown"===t.detail.originalEvent.type&&(r.current=!0));let n=t.target;a.triggerRef.current?.contains(n)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&r.current&&t.preventDefault()}})}),sp=p.forwardRef((e,t)=>{let{__scopeDialog:a,trapFocus:s,onOpenAutoFocus:r,onCloseAutoFocus:n,...l}=e,o=st(sh,a),i=p.useRef(null),c=(0,eM.useComposedRefs)(t,i);return p.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??ah()),document.body.insertAdjacentElement("beforeend",e[1]??ah()),au++,()=>{1===au&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),au--}},[]),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(ar,{asChild:!0,loop:!0,trapped:s,onMountAutoFocus:r,onUnmountAutoFocus:n,children:(0,x.jsx)(ae.DismissableLayer,{role:"dialog",id:o.contentId,"aria-describedby":o.descriptionId,"aria-labelledby":o.titleId,"data-state":sN(o.open),...l,ref:c,onDismiss:()=>o.onOpenChange(!1)})}),(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s_,{titleId:o.titleId}),(0,x.jsx)(sC,{contentRef:i,descriptionId:o.descriptionId})]})]})}),sg="DialogTitle",sb=p.forwardRef((e,t)=>{let{__scopeDialog:a,...s}=e,r=st(sg,a);return(0,x.jsx)(tx.Primitive.h2,{id:r.titleId,...s,ref:t})});sb.displayName=sg;var sv="DialogDescription",sy=p.forwardRef((e,t)=>{let{__scopeDialog:a,...s}=e,r=st(sv,a);return(0,x.jsx)(tx.Primitive.p,{id:r.descriptionId,...s,ref:t})});sy.displayName=sv;var sw="DialogClose",sj=p.forwardRef((e,t)=>{let{__scopeDialog:a,...s}=e,r=st(sw,a);return(0,x.jsx)(tx.Primitive.button,{type:"button",...s,ref:t,onClick:(0,tj.composeEventHandlers)(e.onClick,()=>r.onOpenChange(!1))})});function sN(e){return e?"open":"closed"}sj.displayName=sw;var sk="DialogTitleWarning",[sS,sM]=(0,tg.createContext)(sk,{contentName:sh,titleName:sg,docsSlug:"dialog"}),s_=({titleId:e})=>{let t=sM(sk),a=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
|
||
|
||
If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
|
||
|
||
For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return p.useEffect(()=>{e&&(document.getElementById(e)||console.error(a))},[a,e]),null},sC=({contentRef:e,descriptionId:t})=>{let a=sM("DialogDescriptionWarning"),s=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${a.contentName}}.`;return p.useEffect(()=>{let a=e.current?.getAttribute("aria-describedby");t&&a&&(document.getElementById(t)||console.warn(s))},[s,e,t]),null},sE=e.i(41947),sE=sE;function sT({...e}){return(0,x.jsx)(sa,{"data-slot":"dialog",...e})}function sR({...e}){return(0,x.jsx)(so,{"data-slot":"dialog-portal",...e})}function sP({className:e,...t}){return(0,x.jsx)(sc,{"data-slot":"dialog-overlay",className:(0,eX.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function s$({className:e,children:t,showCloseButton:a=!0,...s}){return(0,x.jsxs)(sR,{"data-slot":"dialog-portal",children:[(0,x.jsx)(sP,{}),(0,x.jsxs)(sf,{"data-slot":"dialog-content",className:(0,eX.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...s,children:[t,a&&(0,x.jsxs)(sj,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,x.jsx)(sE.default,{}),(0,x.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function sA({className:e,...t}){return(0,x.jsx)("div",{"data-slot":"dialog-header",className:(0,eX.cn)("flex flex-col gap-2 text-center sm:text-left",e),...t})}function sD({className:e,...t}){return(0,x.jsx)("div",{"data-slot":"dialog-footer",className:(0,eX.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}function sz({className:e,...t}){return(0,x.jsx)(sb,{"data-slot":"dialog-title",className:(0,eX.cn)("text-lg leading-none font-semibold",e),...t})}function sO({className:e,...t}){return(0,x.jsx)(sy,{"data-slot":"dialog-description",className:(0,eX.cn)("text-muted-foreground text-sm",e),...t})}let sI=(0,ew.default)("star",[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]]);function sF({open:e,onOpenChange:t}){let a=ey(),s=ey(e=>e.doPrestige),{toast:r}=(0,eQ.useToast)(),[n,l]=(0,p.useState)(!1),[o,i]=(0,p.useState)(!1),c=J(a);a.blueprints.length;let d=Math.min(6,a.blueprints.length+c),u=q(a.constellation??[]);return(0,x.jsx)(sT,{open:e,onOpenChange:t,children:(0,x.jsxs)(s$,{className:"bg-gradient-to-br from-fuchsia-950/70 to-black/90 border-fuchsia-400/40",children:[(0,x.jsxs)(sA,{children:[(0,x.jsxs)(sz,{className:"flex items-center gap-2 text-fuchsia-100",children:[(0,x.jsx)(eS,{className:"h-5 w-5"}),"飞升 · 跨越维度"]}),(0,x.jsx)(sO,{className:"text-fuchsia-200/70",children:"当接触进度满溢,你将跨越维度与以太族相会。本次飞升将重置资源与技术,但保留记忆图谱与蓝图加成。"})]}),(0,x.jsxs)("div",{className:"space-y-3 py-2",children:[(0,x.jsxs)("div",{className:"rounded-lg border border-fuchsia-400/30 bg-fuchsia-950/30 p-3",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between",children:[(0,x.jsx)("span",{className:"text-sm text-fuchsia-200",children:"本次获得蓝图"}),(0,x.jsxs)("span",{className:"text-2xl font-mono font-bold text-fuchsia-100",children:["+",c]})]}),(0,x.jsxs)("p",{className:"text-[11px] text-muted-foreground mt-1",children:["蓝图总数将达 ",d,"/",6,"(每 ",20," 次解码产出 1 张)"]})]}),(0,x.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,x.jsx)(sL,{label:"产能",value:`+${(d*T*100).toFixed(0)}%`,color:"#34d399"}),(0,x.jsx)(sL,{label:"洞见",value:`+${(d*R*100).toFixed(0)}%`,color:"#fbbf24"}),(0,x.jsx)(sL,{label:"接触",value:`+${(d*P*100).toFixed(0)}%`,color:"#e879f9"})]}),(0,x.jsxs)("div",{className:"text-[11px] text-muted-foreground space-y-1 pt-1",children:[(0,x.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,x.jsx)(e7,{className:"h-3 w-3 text-fuchsia-400"}),"保留:记忆图谱、累计解码数、飞升次数、蓝图、星图天赋"]}),(0,x.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,x.jsx)(eS,{className:"h-3 w-3 text-rose-400"}),"重置:晶体、洞见、技术树、接触进度、待解码晶体"]})]}),(0,x.jsx)("div",{className:"rounded-lg border border-fuchsia-400/30 bg-gradient-to-r from-fuchsia-950/40 to-purple-950/40 p-2.5",children:(0,x.jsxs)("div",{className:"flex items-center gap-2",children:[(0,x.jsx)(sI,{className:"h-4 w-4 text-fuchsia-300"}),(0,x.jsxs)("div",{className:"flex-1",children:[(0,x.jsx)("div",{className:"text-[12px] text-fuchsia-200 font-bold",children:"星图觉醒预告"}),(0,x.jsxs)("div",{className:"text-[10px] text-muted-foreground",children:["飞升后将从 3 道随机天赋中选 1,永久获得加成",u.unlocked<u.total&&(0,x.jsxs)("span",{className:"text-fuchsia-300/80",children:[" · 当前 ",u.unlocked,"/",u.total]})]})]}),(0,x.jsx)("div",{className:"text-[10px] text-fuchsia-300/70 font-mono",children:u.unlocked<u.total?"✦ 可觉醒":"✧ 已圆满"})]})}),(0,x.jsxs)("div",{className:"rounded-lg border border-violet-400/25 bg-violet-950/20 p-2.5 flex items-center gap-2",children:[(0,x.jsx)(td,{className:"h-4 w-4 text-violet-300 flex-shrink-0"}),(0,x.jsxs)("div",{className:"flex-1 text-[10px] text-violet-100/70 leading-relaxed",children:["本次飞升将铭刻入",(0,x.jsx)("span",{className:"text-violet-200 font-bold",children:"回响编年史"}),", 记录本周目的解码、探险、星潮与觉醒天赋,形成永恒叙事时间轴。"]})]})]}),(0,x.jsxs)(sD,{children:[(0,x.jsx)(e8,{variant:"ghost",onClick:()=>t(!1),children:"取消"}),(0,x.jsx)(e8,{disabled:n&&!o,onClick:()=>{if(!n){l(!0),i(!1),window.setTimeout(()=>i(!0),900);return}let e=s();t(!1),l(!1),i(!1),e&&(e3("prestige"),window.setTimeout(()=>e3("chronicle"),600),r({title:"✦ 飞升成功",description:`获得 ${e.newBp} 张蓝图,进入第 ${a.ascensions+2} 周目。编年史已铭刻新纪元。`}))},className:"bg-gradient-to-r from-fuchsia-600 to-rose-500 hover:from-fuchsia-500 hover:to-rose-400 text-white border-0",children:n?o?"再次确认飞升":"请确认…":c<=0?"飞升(无新蓝图)":"飞升"})]})]})})}function sL({label:e,value:t,color:a}){return(0,x.jsxs)("div",{className:"rounded-lg border p-2 text-center",style:{borderColor:`${a}44`,background:`${a}11`},children:[(0,x.jsx)("div",{className:"text-[10px] text-muted-foreground",children:e}),(0,x.jsx)("div",{className:"text-sm font-mono font-bold",style:{color:a},children:t})]})}var sB="Switch",[sH,sK]=(0,tg.createContextScope)(sB),[sW,sq]=sH(sB),sV=p.forwardRef((e,t)=>{let{__scopeSwitch:a,name:s,checked:r,defaultChecked:n,required:l,disabled:o,value:i="on",onCheckedChange:c,form:d,...u}=e,[h,f]=p.useState(null),m=(0,eM.useComposedRefs)(t,e=>f(e)),g=p.useRef(!1),b=!h||d||!!h.closest("form"),[v,y]=(0,t7.useControllableState)({prop:r,defaultProp:n??!1,onChange:c,caller:sB});return(0,x.jsxs)(sW,{scope:a,checked:v,disabled:o,children:[(0,x.jsx)(tx.Primitive.button,{type:"button",role:"switch","aria-checked":v,"aria-required":l,"data-state":sG(v),"data-disabled":o?"":void 0,disabled:o,value:i,...u,ref:m,onClick:(0,tj.composeEventHandlers)(e.onClick,e=>{y(e=>!e),b&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())})}),b&&(0,x.jsx)(sY,{control:h,bubbles:!g.current,name:s,value:i,checked:v,required:l,disabled:o,form:d,style:{transform:"translateX(-100%)"}})]})});sV.displayName=sB;var sU="SwitchThumb",sX=p.forwardRef((e,t)=>{let{__scopeSwitch:a,...s}=e,r=sq(sU,a);return(0,x.jsx)(tx.Primitive.span,{"data-state":sG(r.checked),"data-disabled":r.disabled?"":void 0,...s,ref:t})});sX.displayName=sU;var sY=p.forwardRef(({__scopeSwitch:e,control:t,checked:a,bubbles:s=!0,...r},n)=>{let l,o=p.useRef(null),i=(0,eM.useComposedRefs)(o,n),c=(l=p.useRef({value:a,previous:a}),p.useMemo(()=>(l.current.value!==a&&(l.current.previous=l.current.value,l.current.value=a),l.current.previous),[a])),d=function(e){let[t,a]=p.useState(void 0);return(0,tw.useLayoutEffect)(()=>{if(e){a({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let s,r;if(!Array.isArray(t)||!t.length)return;let n=t[0];if("borderBoxSize"in n){let e=n.borderBoxSize,t=Array.isArray(e)?e[0]:e;s=t.inlineSize,r=t.blockSize}else s=e.offsetWidth,r=e.offsetHeight;a({width:s,height:r})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}a(void 0)},[e]),t}(t);return p.useEffect(()=>{let e=o.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(c!==a&&t){let r=new Event("click",{bubbles:s});t.call(e,a),e.dispatchEvent(r)}},[c,a,s]),(0,x.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:a,...r,tabIndex:-1,ref:i,style:{...r.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function sG(e){return e?"checked":"unchecked"}function sJ({className:e,...t}){return(0,x.jsx)(sV,{"data-slot":"switch",className:(0,eX.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:(0,x.jsx)(sX,{"data-slot":"switch-thumb",className:(0,eX.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}sY.displayName="SwitchBubbleInput";var sZ=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let a=eT(`Primitive.${t}`),s=p.forwardRef((e,s)=>{let{asChild:r,...n}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,x.jsx)(r?a:t,{...n,ref:s})});return s.displayName=`Primitive.${t}`,{...e,[t]:s}},{}),sQ=p.forwardRef((e,t)=>(0,x.jsx)(sZ.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));function s0({className:e,...t}){return(0,x.jsx)(sQ,{"data-slot":"label",className:(0,eX.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",e),...t})}sQ.displayName="Label";let s1=(0,ew.default)("trash-2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]]),s2=(0,ew.default)("github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]),s5=(0,ew.default)("volume-2",[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z",key:"uqj9uw"}],["path",{d:"M16 9a5 5 0 0 1 0 6",key:"1q6k2b"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728",key:"ijwkga"}]]),s3=(0,ew.default)("graduation-cap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]),s4=(0,ew.default)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]),s6=[{id:"welcome",placement:"bottom",title:"✦ 欢迎来到回响星核",body:"你是一台苏醒在深空遗迹中的自治无人机。在这里,你需要采矿、解码以太文明遗留的记忆晶体,逐步拼凑出一段跨越维度的叙事。\n\n本引导将带你认识 5 个核心玩法,约 1 分钟。可随时跳过。"},{id:"crystal",target:"crystal-orb",placement:"right",title:"① 脉冲扫描 · 采矿",body:"点击中央的「记忆晶体」发起脉冲扫描,获得记忆晶体。\n\n连续点击可触发连击,连击越高单次产出越多。无人机也会每秒自动采集(+0.4/s 起)。",expectAction:"pulse"},{id:"decode",target:"decode-panel",placement:"left",title:"② 谐振序列 · 解码",body:"记忆晶体存满后,点击右侧「待解码晶体」开启谐振谜题:按目标色序依次点击相邻同色节点重建回路。\n\n解码成功 → 获得技术洞见 + 记忆碎片(叙事片段)。这是游戏的核心解谜层。",expectAction:"decode-start"},{id:"tech",target:"tab-tech",placement:"top",title:"③ 技术树 · 成长",body:"用「技术洞见」在「技术」标签升级 4 大分支:产能 / 解码 / 仓库 / 探险。\n\n每个分支 3 级,策略性地分配洞见是关键。",expectAction:"tech-buy"},{id:"expedition",target:"tab-expedition",placement:"top",title:"④ 遗迹探险 · 肉鸽",body:"累积足够实力后,「探险」标签可深入遗迹:6 种节点(战斗/宝藏/抉择/解谜/休整/BOSS)程序化路径,有生命系统,失败保留奖励。\n\n这是放置之外的主动玩法层。",expectAction:"expedition-start"},{id:"prestige",target:"prestige-btn",placement:"bottom",title:"⑤ 飞升 · 多周目",body:"「接触进度」满 100% 后可飞升:重置进度,获得永久蓝图加成 + 星图天赋(3 选 1 draft)+ 编年史记录。\n\n多周目叠加,越飞越强。还有每日信标挑战、6 种星潮事件等你探索。"},{id:"done",placement:"bottom",title:"✦ 回响已唤醒",body:"教程结束!后续可在「设置 → 重新查看教程」再次查看。\n\n深空之中,回响永续。祝你考古愉快。"}],s8="echo-nexus-tutorial-v1";function s9({open:e,onOpenChange:t}){let a=ey(e=>e.soundOn),s=ey(e=>e.toggleSound),r=ey(e=>e.hardReset),n=ey(e=>e.ascensions),l=ey(e=>e.totalDecoded),{toast:o}=(0,eQ.useToast)(),[i,c]=(0,p.useState)(!1);return(0,x.jsx)(sT,{open:e,onOpenChange:t,children:(0,x.jsxs)(s$,{className:"bg-gradient-to-br from-slate-900/80 to-black/90 border-white/15",children:[(0,x.jsxs)(sA,{children:[(0,x.jsx)(sz,{children:"设置"}),(0,x.jsx)(sO,{children:"游戏偏好与存档管理"})]}),(0,x.jsxs)("div",{className:"space-y-4 py-2",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-white/10 bg-black/30 p-3",children:[(0,x.jsxs)("div",{children:[(0,x.jsx)(s0,{className:"text-sm",children:"音效反馈"}),(0,x.jsx)("p",{className:"text-[11px] text-muted-foreground mt-0.5",children:"脉冲、解码、探险、飞升等程序化音效"})]}),(0,x.jsxs)("div",{className:"flex items-center gap-2",children:[(0,x.jsx)(e8,{size:"sm",variant:"ghost",className:"h-7 px-2 text-muted-foreground hover:text-foreground",onClick:()=>e3("decodeSuccess"),"aria-label":"试听音效",children:(0,x.jsx)(s5,{className:"h-3.5 w-3.5"})}),(0,x.jsx)(sJ,{checked:a,onCheckedChange:s})]})]}),(0,x.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-white/10 bg-black/30 p-3",children:[(0,x.jsxs)("div",{children:[(0,x.jsx)(s0,{className:"text-sm",children:"新手教程"}),(0,x.jsx)("p",{className:"text-[11px] text-muted-foreground mt-0.5",children:"重新查看 5 步玩法引导"})]}),(0,x.jsxs)(e8,{size:"sm",variant:"outline",className:"h-7 px-2 text-[11px] border-fuchsia-400/40 text-fuchsia-200 hover:bg-fuchsia-500/10",onClick:()=>{try{localStorage.removeItem(s8)}catch{}window.dispatchEvent(new CustomEvent("echo-nexus-tutorial-restart")),t(!1)},children:[(0,x.jsx)(s3,{className:"h-3.5 w-3.5 mr-1"}),"重看教程"]})]}),(0,x.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/30 p-3 text-xs space-y-1.5",children:[(0,x.jsxs)("div",{className:"flex justify-between",children:[(0,x.jsx)("span",{className:"text-muted-foreground",children:"累计解码"}),(0,x.jsxs)("span",{className:"font-mono",children:[l," 颗"]})]}),(0,x.jsxs)("div",{className:"flex justify-between",children:[(0,x.jsx)("span",{className:"text-muted-foreground",children:"飞升周目"}),(0,x.jsx)("span",{className:"font-mono",children:n})]}),(0,x.jsxs)("div",{className:"flex justify-between",children:[(0,x.jsx)("span",{className:"text-muted-foreground",children:"存档位置"}),(0,x.jsx)("span",{className:"font-mono text-[10px]",children:"浏览器本地"})]})]}),(0,x.jsxs)("div",{className:"rounded-lg border border-rose-500/30 bg-rose-950/20 p-3",children:[(0,x.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,x.jsx)(ta,{className:"h-4 w-4 text-rose-400"}),(0,x.jsx)("span",{className:"text-sm font-medium text-rose-200",children:"危险操作"})]}),(0,x.jsx)("p",{className:"text-[11px] text-muted-foreground mb-2",children:"清空所有进度,包括记忆图谱与飞升记录,不可恢复。"}),(0,x.jsxs)(e8,{variant:"outline",size:"sm",className:"border-rose-500/40 text-rose-300 hover:bg-rose-500/10",onClick:()=>{i?(r(),c(!1),t(!1),o({title:"存档已清空",description:"一切归零,重新开始。"})):c(!0)},children:[(0,x.jsx)(s1,{className:"h-3.5 w-3.5 mr-1"}),i?"再次点击确认清空":"清空存档"]})]}),(0,x.jsxs)("div",{className:"space-y-1.5",children:[(0,x.jsxs)("a",{href:"https://gitea-pages.atdunbg.xyz/Super_Z/echo-nexus/",target:"_blank",rel:"noreferrer",className:"flex items-center gap-2 text-xs text-emerald-300/80 hover:text-emerald-200 transition px-1 py-1 rounded hover:bg-emerald-500/5",children:[(0,x.jsx)(s4,{className:"h-3.5 w-3.5"}),"在线游玩(gitea-pages)"]}),(0,x.jsxs)("a",{href:"https://git.atdunbg.xyz/Super_Z/echo-nexus",target:"_blank",rel:"noreferrer",className:"flex items-center gap-2 text-xs text-muted-foreground hover:text-foreground transition px-1 py-1 rounded hover:bg-white/5",children:[(0,x.jsx)(s2,{className:"h-3.5 w-3.5"}),"git.atdunbg.xyz/Super_Z/echo-nexus"]})]})]}),(0,x.jsx)(sD,{children:(0,x.jsx)(e8,{variant:"ghost",onClick:()=>t(!1),children:"关闭"})})]})})}let s7=(0,ew.default)("swords",[["polyline",{points:"14.5 17.5 3 6 3 3 6 3 17.5 14.5",key:"1hfsw2"}],["line",{x1:"13",x2:"19",y1:"19",y2:"13",key:"1vrmhu"}],["line",{x1:"16",x2:"20",y1:"16",y2:"20",key:"1bron3"}],["line",{x1:"19",x2:"21",y1:"21",y2:"19",key:"13pww6"}],["polyline",{points:"14.5 6.5 18 3 21 3 21 6 17.5 9.5",key:"hbey2j"}],["line",{x1:"5",x2:"9",y1:"14",y2:"18",key:"1hf58s"}],["line",{x1:"7",x2:"4",y1:"17",y2:"20",key:"pidxm4"}],["line",{x1:"3",x2:"5",y1:"19",y2:"21",key:"1pehsh"}]]),re=(0,ew.default)("circle-question-mark",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]]),rt=(0,ew.default)("puzzle",[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]]),ra=(0,ew.default)("skull",[["path",{d:"m12.5 17-.5-1-.5 1h1z",key:"3me087"}],["path",{d:"M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z",key:"1o5pge"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}]]),rs=(0,ew.default)("heart",[["path",{d:"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z",key:"c3ymky"}]]),rr=(0,ew.default)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),rn=(0,ew.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),rl=(0,ew.default)("log-out",[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]]),ro={combat:{icon:s7,color:"#fb7185",label:"战斗",bg:"rgba(251,113,133,0.15)"},treasure:{icon:ej,color:"#fbbf24",label:"宝藏",bg:"rgba(251,191,36,0.15)"},choice:{icon:re,color:"#a5f3fc",label:"抉择",bg:"rgba(165,243,252,0.15)"},puzzle:{icon:rt,color:"#e879f9",label:"解谜",bg:"rgba(232,121,249,0.15)"},rest:{icon:rs,color:"#34d399",label:"休整",bg:"rgba(52,211,153,0.15)"},boss:{icon:ra,color:"#f43f5e",label:"BOSS",bg:"rgba(244,63,94,0.2)"}};function ri(){let e=ey(e=>e.activeExpedition),t=ey(e=>e.energy),a=ey(e=>e.energyMax),s=ey(e=>e.lastEnergyTick),r=ey(e=>e.expeditionLog),n=ey(e=>e.totalExpeditions),l=ey(e=>e.startExpedition),o=ey(e=>e.resolveCurrentNode),i=ey(e=>e.advanceNode),c=ey(e=>e.abortExpedition),{toast:d}=(0,eQ.useToast)(),[u,h]=(0,p.useState)(null),f=Date.now(),m=45e3,g=t>=a?100:Math.min(100,(f-s)/m*100);if(!e||e.finished)return(0,x.jsxs)("div",{className:"flex flex-col gap-3 h-full",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between",children:[(0,x.jsxs)("h3",{className:"text-sm font-semibold flex items-center gap-1.5",children:[(0,x.jsx)(tc,{className:"h-4 w-4 text-amber-400"}),"遗迹探险"]}),(0,x.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["已探索 ",n," 次"]})]}),(0,x.jsxs)("div",{className:"rounded-xl border border-amber-400/20 bg-amber-950/20 p-3",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,x.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,x.jsx)(rr,{className:"h-3.5 w-3.5 text-amber-400"}),(0,x.jsx)("span",{className:"text-xs text-amber-200",children:"探险能量"})]}),(0,x.jsxs)("span",{className:"text-xs font-mono text-amber-100",children:[t," / ",a]})]}),t<a?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(eY,{value:g,className:"h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-amber-500 [&>div]:to-yellow-300"}),(0,x.jsxs)("p",{className:"text-[10px] text-muted-foreground/70 mt-1",children:["下一点能量约 ",Math.ceil((m-(f-s))/1e3),"s 后恢复"]})]}):(0,x.jsx)("p",{className:"text-[10px] text-amber-300/80 mt-0.5",children:"能量已满,可立即出发"})]}),(0,x.jsxs)("div",{className:"flex-1 flex flex-col items-center justify-center gap-4 rounded-2xl border border-dashed border-amber-400/20 bg-black/30 p-6 relative overflow-hidden",children:[(0,x.jsx)("div",{className:"absolute -top-10 -right-10 h-32 w-32 rounded-full bg-amber-500/10 blur-2xl"}),(0,x.jsx)("div",{className:"relative",children:(0,x.jsx)("div",{className:"h-20 w-20 rounded-full bg-gradient-to-br from-amber-500/30 to-rose-500/20 flex items-center justify-center mx-auto",style:{boxShadow:"0 0 30px rgba(251,191,36,0.3)"},children:(0,x.jsx)(tc,{className:"h-9 w-9 text-amber-300"})})}),(0,x.jsxs)("div",{className:"text-center space-y-1",children:[(0,x.jsx)("p",{className:"text-sm font-medium text-amber-100",children:"深入以太遗迹"}),(0,x.jsx)("p",{className:"text-[11px] text-muted-foreground/80 max-w-[220px]",children:"派出探险队进入程序化生成的遗迹路径,沿途遭遇战斗、宝藏、抉择与解谜,击败终点 BOSS 获取丰厚奖励。"})]}),(0,x.jsxs)(e8,{onClick:()=>{let e=l();e.ok?(e3("expeditionStart"),d({title:"探险队出发",description:"深入遗迹,谨慎前行。"}),h(null)):d({title:"无法出发",description:e.reason,variant:"destructive"})},disabled:t<1,className:"bg-gradient-to-r from-amber-600 to-rose-500 hover:from-amber-500 hover:to-rose-400 text-white border-0",children:[(0,x.jsx)(tc,{className:"h-4 w-4 mr-1.5"}),"出发(消耗 ",1," 能量)"]}),t<1&&(0,x.jsx)("p",{className:"text-[10px] text-rose-300/80",children:"能量不足,请等待恢复"})]}),r.length>0&&(0,x.jsxs)("div",{className:"rounded-xl border border-white/5 bg-black/20 p-2 max-h-32 overflow-y-auto echo-scroll",children:[(0,x.jsx)("div",{className:"text-[10px] text-muted-foreground/60 mb-1 px-1",children:"最近探险记录"}),r.slice(0,4).map((e,t)=>(0,x.jsxs)("div",{className:"text-[10px] text-muted-foreground/70 px-1 py-0.5 border-b border-white/5 last:border-0",children:[(0,x.jsx)("span",{className:"text-amber-300/60",children:"›"})," ",e.result,e.rewards&&(0,x.jsx)("span",{className:"text-emerald-300/70 ml-1",children:e.rewards})]},t))]})]});let b=e.nodes[e.currentNode],v=ro[b.type],y=v.icon,w=e.hp/e.maxHp*100,j=(e.currentNode+ +!!b.cleared)/e.nodes.length*100;return(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex flex-col gap-2.5 h-full",children:[(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center justify-between gap-2",children:[(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[(0,x.jsx)(tc,{className:"h-3.5 w-3.5 text-amber-400"}),(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-xs font-semibold",children:"遗迹探险"}),(0,x.jsxs)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:["第 ",e.currentNode+1,"/",e.nodes.length," 节点"]})]}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:"探险力"}),(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-xs font-mono font-semibold text-amber-300",children:e.power})]})]}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264",children:[(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center justify-between mb-0.5",children:[(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1",children:[(0,x.jsx)(rs,{className:"h-3 w-3 text-rose-400"}),(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:"探险队生命"})]}),(0,x.jsxs)("span",{className:`jsx-df1c681cdb543264 text-[10px] font-mono ${w<30?"text-rose-400":"text-foreground"}`,children:[e.hp," / ",e.maxHp]})]}),(0,x.jsx)(eY,{value:w,className:"h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-rose-500 [&>div]:to-emerald-400"})]}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 rounded-xl border border-white/10 bg-black/30 p-2.5",children:[(0,x.jsx)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1 overflow-x-auto echo-scroll pb-1",children:e.nodes.map((t,a)=>{let s=ro[t.type],r=s.icon,n=a===e.currentNode,l=t.cleared,o=a<e.currentNode;return(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center shrink-0",children:[(0,x.jsxs)("div",{style:{background:l||o?"rgba(255,255,255,0.04)":s.bg,border:n?`1.5px solid ${s.color}`:"1px solid rgba(255,255,255,0.08)",boxShadow:n?`0 0 12px ${s.color}66`:"none"},title:`${s.label} \xb7 ${t.title}`,className:`jsx-df1c681cdb543264 relative h-9 w-9 rounded-lg flex items-center justify-center transition-all duration-300 ${n?"scale-125":""}`,children:[(0,x.jsx)(r,{style:{color:l||o?"#666":s.color},className:`jsx-df1c681cdb543264 h-4 w-4 ${l||o?"opacity-30":""}`}),l&&(0,x.jsx)("div",{className:"jsx-df1c681cdb543264 absolute -top-1 -right-1 h-3 w-3 rounded-full bg-emerald-500/80 flex items-center justify-center",children:(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-[8px] text-white",children:"✓"})})]}),a<e.nodes.length-1&&(0,x.jsx)(rn,{className:`h-3 w-3 mx-0.5 ${o||n&&l?"text-amber-400/60":"text-white/15"}`})]},t.id)})}),(0,x.jsx)("div",{className:"jsx-df1c681cdb543264 mt-1.5",children:(0,x.jsx)(eY,{value:j,className:"h-1 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-amber-500 [&>div]:to-rose-400"})})]}),(0,x.jsxs)("div",{style:{borderColor:`${v.color}44`,background:`linear-gradient(135deg, ${v.color}11, rgba(0,0,0,0.4))`,boxShadow:`0 0 20px ${v.color}22`},className:"jsx-df1c681cdb543264 rounded-xl border p-3 relative overflow-hidden",children:[(0,x.jsx)("div",{style:{background:`${v.color}22`},className:"jsx-df1c681cdb543264 absolute -top-8 -right-8 h-24 w-24 rounded-full blur-2xl"}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 relative",children:[(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-2 mb-1.5",children:[(0,x.jsx)("div",{style:{background:v.bg,border:`1px solid ${v.color}44`},className:"jsx-df1c681cdb543264 h-8 w-8 rounded-lg flex items-center justify-center",children:(0,x.jsx)(y,{style:{color:v.color},className:"jsx-df1c681cdb543264 h-4 w-4"})}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264",children:[(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[(0,x.jsx)("span",{style:{background:v.bg,color:v.color},className:"jsx-df1c681cdb543264 text-[10px] font-mono px-1.5 py-0.5 rounded",children:v.label}),"combat"===b.type&&(0,x.jsxs)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:["胜率 ",Math.round(100*er(e.power,b.difficulty)),"%"]}),b.difficulty>0&&(0,x.jsxs)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground/60",children:["难度 ",b.difficulty]})]}),(0,x.jsx)("h4",{style:{color:v.color},className:"jsx-df1c681cdb543264 text-sm font-semibold mt-0.5",children:b.title})]})]}),(0,x.jsx)("p",{className:"jsx-df1c681cdb543264 text-[11px] text-muted-foreground/90 leading-relaxed",children:b.desc}),u&&(0,x.jsx)("div",{className:"jsx-df1c681cdb543264 mt-2 px-2 py-1.5 rounded-lg bg-black/40 border border-white/10",children:(0,x.jsx)("p",{className:"jsx-df1c681cdb543264 text-[11px] text-foreground/90",children:u})})]})]}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[b.cleared?e.currentNode<e.nodes.length-1?(0,x.jsxs)(e8,{onClick:()=>{i(),h(null)},className:"flex-1 h-8",variant:"outline",children:[(0,x.jsx)(rn,{className:"h-3.5 w-3.5 mr-1"}),"前进"]}):(0,x.jsx)("div",{className:"jsx-df1c681cdb543264 flex-1 text-center text-xs text-emerald-300 py-1.5",children:"探险已完成 ✓"}):(0,x.jsxs)(e8,{onClick:()=>{let e=o();e&&(h(e.log),e.ended?"victory"===e.endReason?e3("expeditionVictory"):e3("expeditionDefeat"):e3("expeditionNode"),d({title:e.ended?"victory"===e.endReason?"✦ 探险胜利!":"探险失败":"节点结算",description:e.log,variant:"defeat"===e.endReason?"destructive":"default"}))},className:"flex-1 bg-gradient-to-r from-amber-600 to-rose-500 hover:from-amber-500 hover:to-rose-400 text-white border-0 h-8",children:[(0,x.jsx)(e7,{className:"h-3.5 w-3.5 mr-1"}),"探索节点"]}),(0,x.jsx)(e8,{onClick:()=>{c(),d({title:"探险队撤退",description:"保留已获奖励,安全返回。"}),h(null)},variant:"ghost",size:"sm",className:"h-8 px-2 text-muted-foreground hover:text-rose-300",children:(0,x.jsx)(rl,{className:"h-3.5 w-3.5"})})]}),(0,x.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-2 text-[10px] px-1",children:[(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-muted-foreground/60",children:"本次已获:"}),e.rewards.crystals>0&&(0,x.jsxs)("span",{className:"jsx-df1c681cdb543264 text-emerald-300",children:[$(e.rewards.crystals),"晶体"]}),e.rewards.insights>0&&(0,x.jsxs)("span",{className:"jsx-df1c681cdb543264 text-amber-300",children:[e.rewards.insights,"洞见"]}),e.rewards.contact>0&&(0,x.jsxs)("span",{className:"jsx-df1c681cdb543264 text-fuchsia-300",children:[e.rewards.contact.toFixed(1),"接触"]}),0===e.rewards.crystals&&0===e.rewards.insights&&(0,x.jsx)("span",{className:"jsx-df1c681cdb543264 text-muted-foreground/40",children:"暂无"})]}),(0,x.jsx)(eZ.default,{id:"df1c681cdb543264",children:".echo-scroll::-webkit-scrollbar{width:4px;height:4px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.echo-scroll::-webkit-scrollbar-track{background:0 0}"})]})}let rc=(0,ew.default)("trophy",[["path",{d:"M10 14.66v1.626a2 2 0 0 1-.976 1.696A5 5 0 0 0 7 21.978",key:"1n3hpd"}],["path",{d:"M14 14.66v1.626a2 2 0 0 0 .976 1.696A5 5 0 0 1 17 21.978",key:"rfe1zi"}],["path",{d:"M18 9h1.5a1 1 0 0 0 0-5H18",key:"7xy6bh"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M6 9a6 6 0 0 0 12 0V3a1 1 0 0 0-1-1H7a1 1 0 0 0-1 1z",key:"1mhfuq"}],["path",{d:"M6 9H4.5a1 1 0 0 1 0-5H6",key:"tex48p"}]]);function rd(){let e=ey(e=>e.achievements),t=Object.values(e).filter(Boolean).length,a=D(e);return(0,x.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d flex flex-col gap-2.5 h-full",children:[(0,x.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d flex items-center justify-between",children:[(0,x.jsxs)("h3",{className:"jsx-7e1dc0c087b6bd3d text-sm font-semibold flex items-center gap-1.5",children:[(0,x.jsx)(rc,{className:"h-4 w-4 text-amber-400"}),"成就"]}),(0,x.jsxs)("span",{className:"jsx-7e1dc0c087b6bd3d text-[10px] text-muted-foreground font-mono",children:[t," / ",A.length]})]}),(0,x.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d rounded-lg border border-amber-400/20 bg-amber-950/20 px-2.5 py-1.5 flex items-center gap-3 text-[10px]",children:[(0,x.jsx)("span",{className:"jsx-7e1dc0c087b6bd3d text-amber-300/80",children:"永久加成"}),a.crystalsPerSecPct>0&&(0,x.jsxs)("span",{className:"jsx-7e1dc0c087b6bd3d text-emerald-300",children:["产能 +",a.crystalsPerSecPct,"%"]}),a.insightPct>0&&(0,x.jsxs)("span",{className:"jsx-7e1dc0c087b6bd3d text-fuchsia-300",children:["洞见 +",a.insightPct,"%"]}),0===a.crystalsPerSecPct&&0===a.insightPct&&(0,x.jsx)("span",{className:"jsx-7e1dc0c087b6bd3d text-muted-foreground/60",children:"暂无(达成成就解锁)"})]}),(0,x.jsx)("div",{className:"jsx-7e1dc0c087b6bd3d flex-1 grid grid-cols-1 sm:grid-cols-2 gap-1.5 content-start overflow-y-auto echo-scroll pr-1 max-h-[300px]",children:A.map(t=>{let a=!!e[t.id];return(0,x.jsxs)("div",{style:a?{boxShadow:`inset 0 0 16px ${t.color}11`}:void 0,className:`jsx-7e1dc0c087b6bd3d relative rounded-lg border px-2.5 py-2 transition-all duration-300 overflow-hidden ${a?"border-white/15 bg-black/30":"border-white/5 bg-black/15 opacity-60"}`,children:[a&&(0,x.jsx)("div",{style:{background:t.color},className:"jsx-7e1dc0c087b6bd3d absolute -top-6 -right-6 h-16 w-16 rounded-full blur-2xl opacity-40"}),(0,x.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d relative flex items-start gap-2",children:[(0,x.jsx)("div",{style:{background:a?`${t.color}22`:"rgba(255,255,255,0.04)",border:`1px solid ${a?t.color+"55":"rgba(255,255,255,0.08)"}`,color:a?t.color:"#666",boxShadow:a?`0 0 10px ${t.color}33`:"none"},className:"jsx-7e1dc0c087b6bd3d shrink-0 h-8 w-8 rounded-lg flex items-center justify-center text-base",children:a?t.icon:(0,x.jsx)(tu,{className:"h-3.5 w-3.5"})}),(0,x.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d min-w-0 flex-1",children:[(0,x.jsx)("div",{style:{color:a?t.color:"rgba(255,255,255,0.5)"},className:"jsx-7e1dc0c087b6bd3d text-[11px] font-semibold truncate",children:t.name}),(0,x.jsx)("div",{className:"jsx-7e1dc0c087b6bd3d text-[10px] text-muted-foreground/80 leading-tight mt-0.5",children:t.desc}),a&&(0,x.jsxs)("div",{style:{color:t.color+"cc"},className:"jsx-7e1dc0c087b6bd3d text-[9px] mt-1 font-mono",children:["✦ ",t.rewardText]})]})]})]},t.id)})}),(0,x.jsx)(eZ.default,{id:"7e1dc0c087b6bd3d",children:".echo-scroll::-webkit-scrollbar{width:5px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff24;border-radius:3px}.echo-scroll::-webkit-scrollbar-track{background:0 0}"})]})}function ru(){let e=ey(e=>e._achievementQueue),t=ey(e=>e.consumeAchievementQueue),{toast:a}=(0,eQ.useToast)();return(0,p.useEffect)(()=>{if(0!==e.length)for(let e of t())e3("achievement"),a({title:`🏆 成就解锁:${e.name}`,description:`${e.desc} 奖励:${e.rewardText}`})},[e,t,a]),null}function rh(){let e=ey(e=>e.constellation??[]),t=(0,p.useRef)(null),a=(0,p.useRef)(null),[s,r]=(0,p.useState)({w:360,h:360}),[n,l]=(0,p.useState)(null),o=(0,p.useMemo)(()=>new Set(e),[e]);(0,p.useEffect)(()=>{let e=a.current;if(!e)return;let t=new ResizeObserver(()=>{let t=e.getBoundingClientRect();r({w:Math.max(280,t.width),h:Math.max(280,Math.min(420,t.width))})});return t.observe(e),()=>t.disconnect()},[]);let i=(0,p.useMemo)(()=>{let e=s.w/2;return{cx:e,cy:s.h/2,radius:.32*Math.min(s.w,s.h)}},[s]),c=(0,p.useMemo)(()=>{var e,t,a;return(e=i.cx,t=i.cy,a=i.radius,["mining","decoding","expedition","contact","economy","cosmic"].map((s,r)=>{let n=Math.PI/3*r-Math.PI/2;return{category:s,cx:e+a*Math.cos(n),cy:t+a*Math.sin(n),meta:F[s]}})).map(e=>{let t=function(e,t,a,s=1){return L.filter(t=>t.category===e).sort((e,t)=>e.order-t.order).map((e,r)=>({perk:e,x:t+(0===r?0:1===r?-18*s:18*s),y:a+(0===r?-22*s:14*s)}))}(e.category,e.cx,e.cy,1);return{...e,stars:t}})},[i]);(0,p.useEffect)(()=>{let a=t.current;if(!a)return;let r=a.getContext("2d");if(!r)return;let n=window.devicePixelRatio||1;a.width=s.w*n,a.height=s.h*n,a.style.width=`${s.w}px`,a.style.height=`${s.h}px`,r.setTransform(n,0,0,n,0,0);let l=0,d=performance.now(),u=t=>{let a=(t-d)/1e3;r.clearRect(0,0,s.w,s.h);let n=r.createRadialGradient(i.cx,i.cy,0,i.cx,i.cy,1.6*i.radius);n.addColorStop(0,"rgba(40,30,80,0.18)"),n.addColorStop(1,"rgba(5,4,16,0)"),r.fillStyle=n,r.fillRect(0,0,s.w,s.h),r.save(),r.translate(i.cx,i.cy);let h=6+1.5*Math.sin(1.5*a),f=r.createRadialGradient(0,0,0,0,0,3*h);for(let t of(f.addColorStop(0,"rgba(232,121,249,0.9)"),f.addColorStop(.4,"rgba(232,121,249,0.3)"),f.addColorStop(1,"rgba(232,121,249,0)"),r.fillStyle=f,r.beginPath(),r.arc(0,0,3*h,0,2*Math.PI),r.fill(),r.fillStyle="#fce7ff",r.beginPath(),r.arc(0,0,.6*h,0,2*Math.PI),r.fill(),r.restore(),c))W(e,t.category)>0&&(r.save(),r.strokeStyle=t.meta.glow,r.lineWidth=1,r.setLineDash([2,4]),r.globalAlpha=.4+.1*Math.sin(2*a+t.cx),r.beginPath(),r.moveTo(i.cx,i.cy),r.lineTo(t.cx,t.cy),r.stroke(),r.restore());for(let t of c){let s=W(e,t.category);r.save(),r.font="10px ui-monospace, monospace",r.textAlign="center",r.fillStyle=s>0?t.meta.hex:"rgba(148,163,184,0.5)",r.globalAlpha=.85,r.fillText(t.meta.name,t.cx,t.cy+38),r.restore();let n=t.stars.filter(e=>o.has(e.perk.id));for(let e of(n.length>=2&&(r.save(),r.strokeStyle=t.meta.glow,r.lineWidth=1.5,r.globalAlpha=.6,r.beginPath(),n.forEach((e,t)=>{0===t?r.moveTo(e.x,e.y):r.lineTo(e.x,e.y)}),r.stroke(),r.restore()),t.stars)){let s=o.has(e.perk.id);r.save(),r.translate(e.x,e.y);let n=s?.85+.15*Math.sin(3*a+.1*e.x):.3,l=s?10:5,i=r.createRadialGradient(0,0,0,0,0,l);if(i.addColorStop(0,s?t.meta.glow:"rgba(100,116,139,0.2)"),i.addColorStop(1,"rgba(0,0,0,0)"),r.fillStyle=i,r.globalAlpha=n,r.beginPath(),r.arc(0,0,l,0,2*Math.PI),r.fill(),r.globalAlpha=s?1:.4,r.fillStyle=s?t.meta.hex:"#475569",r.beginPath(),r.arc(0,0,s?3.5:2,0,2*Math.PI),r.fill(),s){r.strokeStyle=t.meta.hex,r.globalAlpha=.7*n,r.lineWidth=.8;let s=7+1.5*Math.sin(4*a+.1*e.y);r.beginPath(),r.moveTo(-s,0),r.lineTo(s,0),r.moveTo(0,-s),r.lineTo(0,s),r.stroke()}r.restore()}}l=requestAnimationFrame(u)};return l=requestAnimationFrame(u),()=>cancelAnimationFrame(l)},[c,i,s,e,o]);let d=q(e);return(0,x.jsxs)("div",{ref:a,className:"flex flex-col gap-2 min-h-0 h-full",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between text-[11px] px-1",children:[(0,x.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,x.jsx)("span",{className:"text-fuchsia-300",children:"✦"}),(0,x.jsx)("span",{className:"text-muted-foreground",children:"星图天赋"}),(0,x.jsxs)("span",{className:"font-mono text-foreground",children:[d.unlocked,"/",d.total]})]}),(0,x.jsx)("span",{className:"text-muted-foreground/60 text-[10px]",children:"每次飞升可解锁 1 个"})]}),(0,x.jsxs)("div",{className:"relative rounded-xl bg-black/30 border border-white/5 overflow-hidden flex-shrink-0",children:[(0,x.jsx)("canvas",{ref:t,onMouseMove:e=>{let a=t.current;if(!a)return;let s=a.getBoundingClientRect(),r=e.clientX-s.left,n=e.clientY-s.top,i=null,d=14;for(let e of c)for(let t of e.stars){let e=Math.hypot(t.x-r,t.y-n);e<d&&(d=e,i={perk:t.perk,x:t.x,y:t.y,unlocked:o.has(t.perk.id)})}l(i)},onMouseLeave:()=>l(null),className:"block cursor-pointer"}),n&&(0,x.jsxs)("div",{className:"pointer-events-none absolute z-10 max-w-[200px] rounded-md bg-black/85 border border-white/10 px-2 py-1.5 text-[10px] leading-tight shadow-lg backdrop-blur-sm",style:{left:Math.min(n.x+12,s.w-200),top:Math.max(0,n.y-40)},children:[(0,x.jsxs)("div",{className:"font-bold mb-0.5",style:{color:F[n.perk.category].hex},children:[n.unlocked?"★ ":"☆ ",n.perk.name]}),(0,x.jsx)("div",{className:"text-muted-foreground",children:n.perk.desc}),(0,x.jsxs)("div",{className:"text-muted-foreground/60 mt-0.5",children:[F[n.perk.category].name," · 序",n.perk.order]})]})]}),(0,x.jsx)("div",{className:"grid grid-cols-3 gap-1 text-[10px]",children:Object.keys(F).map(t=>{let a=F[t],s=W(e,t),r=L.filter(e=>e.category===t).length;return(0,x.jsxs)("div",{className:"rounded-md bg-black/25 border border-white/5 px-1.5 py-1 flex items-center gap-1",style:s>0?{borderColor:`${a.hex}40`}:void 0,children:[(0,x.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full flex-shrink-0",style:{background:a.hex,boxShadow:s>0?`0 0 4px ${a.hex}`:"none"}}),(0,x.jsx)("span",{className:"text-muted-foreground truncate",children:a.name}),(0,x.jsxs)("span",{className:"ml-auto font-mono",style:{color:s>0?a.hex:"rgba(148,163,184,0.5)"},children:[s,"/",r]})]},t)})}),(0,x.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto pr-1 echo-scrollbar",children:0===e.length?(0,x.jsxs)("div",{className:"rounded-md bg-black/25 border border-dashed border-white/10 px-3 py-3 text-center text-[11px] text-muted-foreground/70",children:[(0,x.jsx)("div",{className:"mb-1 text-fuchsia-300/80",children:"✦"}),"尚未解锁任何天赋。",(0,x.jsx)("br",{}),"累积接触进度至 100%,发起「飞升」即可在 3 个随机天赋中选 1。"]}):(0,x.jsx)("div",{className:"flex flex-col gap-1",children:e.map(e=>{let t=B(e);if(!t)return null;let a=F[t.category];return(0,x.jsxs)("div",{className:"rounded-md bg-black/25 border px-2 py-1.5 flex items-center gap-2 text-[11px]",style:{borderColor:`${a.hex}30`},children:[(0,x.jsx)("span",{className:"inline-block h-2 w-2 rounded-full flex-shrink-0",style:{background:a.hex,boxShadow:`0 0 6px ${a.hex}`}}),(0,x.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,x.jsx)("div",{className:"text-foreground truncate",children:t.name}),(0,x.jsx)("div",{className:"text-muted-foreground/70 text-[10px] truncate",children:t.desc})]}),(0,x.jsx)("span",{className:"text-[9px] text-muted-foreground/50 font-mono",children:a.name})]},e)})})})]})}let rf=(0,ew.default)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);function rm({open:e,onOpenChange:t}){let a=ey(e=>e.pendingPerkChoices),s=ey(e=>e.constellation??[]),r=ey(e=>e.chooseConstellationPerk),n=ey(e=>e.rerollPerkChoices),[l,o]=(0,p.useState)(null);if((0,p.useEffect)(()=>{e||o(null)},[e]),(0,p.useEffect)(()=>{a&&a.length>0&&!e&&t(!0),(!a||0===a.length)&&e&&t(!1)},[a,e,t]),!a||0===a.length)return null;let i=q(s);return(0,x.jsx)(sT,{open:e,onOpenChange:t,children:(0,x.jsxs)(s$,{className:"max-w-md border-fuchsia-400/30 bg-gradient-to-br from-[#0a0820]/95 to-[#1a0f30]/95 backdrop-blur-md",children:[(0,x.jsxs)(sA,{children:[(0,x.jsxs)(sz,{className:"flex items-center gap-2 text-fuchsia-200",children:[(0,x.jsx)(e7,{className:"h-4 w-4"}),"星图觉醒"]}),(0,x.jsxs)(sO,{className:"text-muted-foreground text-xs",children:["飞升带来的回响在星图上凝聚。从 3 道星辉中选择 1 道,永久获得其加成。",(0,x.jsx)("br",{}),(0,x.jsxs)("span",{className:"text-fuchsia-300/80",children:["当前已觉醒 ",i.unlocked,"/",i.total]})]})]}),(0,x.jsx)("div",{className:"grid grid-cols-1 gap-2 mt-1",children:a.map(e=>{let a=B(e);if(!a)return null;let s=F[a.category],n=l===e;return(0,x.jsxs)("button",{onClick:()=>{o(e),r(e)&&(e3("constellation"),setTimeout(()=>t(!1),500))},disabled:!!l,className:`group relative w-full text-left rounded-lg border px-3 py-2.5 transition-all overflow-hidden ${n?"border-fuchsia-400/80 bg-fuchsia-500/10 scale-[1.02]":l?"border-white/5 opacity-40":"border-white/10 hover:border-white/30 hover:bg-white/5"}`,style:{boxShadow:n?`0 0 20px ${s.glow}`:void 0},children:[(0,x.jsx)("div",{className:"absolute left-0 top-0 bottom-0 w-1",style:{background:s.hex,boxShadow:`0 0 8px ${s.hex}`}}),(0,x.jsxs)("div",{className:"pl-2 flex items-start gap-3",children:[(0,x.jsx)("div",{className:"flex-shrink-0 mt-0.5 h-8 w-8 rounded-full flex items-center justify-center text-sm font-bold",style:{background:`${s.hex}20`,color:s.hex,border:`1px solid ${s.hex}40`},children:s.name.charAt(0)}),(0,x.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,x.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,x.jsx)("span",{className:"text-sm font-bold text-foreground",children:a.name}),(0,x.jsx)("span",{className:"text-[9px] px-1 py-0.5 rounded font-mono",style:{background:`${s.hex}20`,color:s.hex},children:s.name})]}),(0,x.jsx)("div",{className:"text-[11px] text-muted-foreground",children:a.desc})]})]}),n&&(0,x.jsx)("div",{className:"absolute inset-0 pointer-events-none",children:[...Array(8)].map((e,t)=>(0,x.jsx)("span",{className:"absolute h-1 w-1 rounded-full animate-ping",style:{background:s.hex,left:`${20+8*t}%`,top:`${30+t%3*20}%`,animationDelay:`${50*t}ms`,animationDuration:"800ms"}},t))})]},e)})}),(0,x.jsxs)("div",{className:"flex items-center justify-between mt-3 pt-2 border-t border-white/5",children:[(0,x.jsxs)(e8,{variant:"ghost",size:"sm",onClick:()=>{n(),e3("uiClick")},disabled:!!l,className:"text-muted-foreground hover:text-foreground h-7 text-[11px]",children:[(0,x.jsx)(rf,{className:"h-3 w-3 mr-1"}),"重新抽取"]}),(0,x.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:"✦ 选择后永久保留,跨周目生效"})]})]})})}let rx=(0,ew.default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),rp=(0,ew.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);function rg({open:e,onOpenChange:t}){let a=ey(e=>e.chronicle??[]),s=ey(e=>e.ascensions??0),r=ey(e=>e.bossKills??0),n=ey(e=>e.starTidesEncountered??[]),l=[...a].reverse();return(0,p.useEffect)(()=>{e&&e3("chronicleOpen")},[e]),(0,x.jsx)(sT,{open:e,onOpenChange:t,children:(0,x.jsxs)(s$,{className:"bg-gradient-to-br from-violet-950/80 via-black/90 to-fuchsia-950/60 border-fuchsia-400/30 max-w-3xl max-h-[88vh] overflow-hidden flex flex-col p-0 gap-0",children:[(0,x.jsx)("div",{className:"h-1 bg-gradient-to-r from-emerald-500 via-fuchsia-500 to-amber-500 opacity-70"}),(0,x.jsxs)(sA,{className:"px-6 pt-5 pb-3 space-y-1",children:[(0,x.jsxs)(sz,{className:"flex items-center gap-2 text-fuchsia-100 text-xl",children:[(0,x.jsx)(td,{className:"h-5 w-5 text-fuchsia-300"}),"回响编年史",(0,x.jsx)("span",{className:"text-[11px] font-normal text-fuchsia-300/60 ml-2",children:"Chronicle of Echoes"})]}),(0,x.jsx)(sO,{className:"text-fuchsia-200/60 text-xs",children:"每一次飞升都在深空留下回响。这里铭刻着跨越维度的全部纪元。"}),(0,x.jsxs)("div",{className:"grid grid-cols-3 gap-2 pt-2",children:[(0,x.jsx)(rb,{icon:(0,x.jsx)(e7,{className:"h-3 w-3"}),label:"飞升次数",value:s,color:"#e879f9"}),(0,x.jsx)(rb,{icon:(0,x.jsx)(rc,{className:"h-3 w-3"}),label:"BOSS 击破",value:r,color:"#fbbf24"}),(0,x.jsx)(rb,{icon:(0,x.jsx)(ek,{className:"h-3 w-3"}),label:"星潮亲历",value:n.length,color:"#34d399"})]})]}),(0,x.jsx)("div",{className:"flex-1 overflow-y-auto px-6 pb-6 echo-scroll",children:0===l.length?(0,x.jsx)(rv,{ascensions:s}):(0,x.jsxs)("div",{className:"relative",children:[(0,x.jsx)("div",{className:"absolute left-[27px] top-2 bottom-2 w-px bg-gradient-to-b from-fuchsia-400/40 via-violet-400/30 to-transparent"}),(0,x.jsx)("div",{className:"space-y-4",children:l.map((e,t)=>(0,x.jsx)(ry,{entry:e,isLatest:0===t,index:t},`${e.ascensionNumber}-${e.timestamp}`))})]})})]})})}function rb({icon:e,label:t,value:a,color:s}){return(0,x.jsxs)("div",{className:"rounded-md border px-3 py-2 flex items-center gap-2",style:{borderColor:`${s}33`,background:`${s}0d`},children:[(0,x.jsx)("div",{style:{color:s},children:e}),(0,x.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,x.jsx)("div",{className:"text-[10px] text-muted-foreground truncate",children:t}),(0,x.jsx)("div",{className:"text-sm font-mono font-bold",style:{color:s},children:a})]})]})}function rv({ascensions:e}){let t=e>0;return(0,x.jsxs)("div",{className:"flex flex-col items-center justify-center py-20 text-center",children:[(0,x.jsxs)("div",{className:"relative mb-4",children:[(0,x.jsx)("div",{className:"absolute inset-0 blur-xl bg-fuchsia-500/20 rounded-full animate-pulse"}),(0,x.jsx)(td,{className:"relative h-12 w-12 text-fuchsia-400/50"})]}),t?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)("div",{className:"text-fuchsia-200/70 text-sm",children:["已飞升 ",e," 次,但编年史尚无记录"]}),(0,x.jsx)("div",{className:"text-fuchsia-300/40 text-[11px] mt-2 max-w-xs",children:"编年史于 v0.4 启用。下一次飞升将自动铭刻新纪元,开启永恒叙事时间轴。"})]}):(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("div",{className:"text-fuchsia-200/70 text-sm",children:"尚未飞升,等待第一次跨越维度"}),(0,x.jsx)("div",{className:"text-fuchsia-300/40 text-[11px] mt-2 max-w-xs",children:"当接触进度满溢时,发起飞升将开启新周目,并在编年史中铭刻一段永恒回响。"})]})]})}function ry({entry:e,isLatest:t,index:a}){let s,r,n,l,o,i=["#34d399","#fb7185","#fbbf24","#e879f9","#fcd34d"][(e.ascensionNumber-1)%5];return(0,x.jsxs)("div",{className:"relative pl-16 animate-in fade-in slide-in-from-bottom-2 duration-500",style:{animationDelay:`${80*a}ms`},children:[(0,x.jsxs)("div",{className:"absolute left-[19px] top-3 z-10",children:[(0,x.jsx)("div",{className:"w-4 h-4 rounded-full border-2 flex items-center justify-center",style:{borderColor:i,background:`${i}22`,boxShadow:`0 0 12px ${i}88, 0 0 24px ${i}44`},children:(0,x.jsx)("div",{className:"w-1.5 h-1.5 rounded-full",style:{background:i}})}),t&&(0,x.jsx)("div",{className:"absolute inset-0 rounded-full animate-ping",style:{background:`${i}33`}})]}),(0,x.jsxs)("div",{className:"rounded-lg border bg-black/40 backdrop-blur-sm overflow-hidden transition-all hover:scale-[1.005] hover:border-fuchsia-400/40",style:{borderColor:`${i}33`,boxShadow:t?`0 0 0 1px ${i}22, 0 4px 24px ${i}22`:"0 2px 8px rgba(0,0,0,0.4)"},children:[(0,x.jsx)("div",{className:"px-4 py-3 flex items-center justify-between border-b",style:{background:`linear-gradient(135deg, ${i}11, transparent)`,borderColor:`${i}22`},children:(0,x.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,x.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,x.jsxs)("span",{className:"text-[10px] font-mono font-bold px-1.5 py-0.5 rounded",style:{color:i,background:`${i}22`},children:["#",String(e.ascensionNumber).padStart(2,"0")]}),(0,x.jsx)("h4",{className:"text-sm font-bold tracking-wide truncate",style:{color:i,textShadow:`0 0 12px ${i}55`},children:e.epochName})]}),(0,x.jsxs)("div",{className:"flex items-center gap-2 mt-1 text-[10px] text-muted-foreground/80",children:[(0,x.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,x.jsx)(rx,{className:"h-2.5 w-2.5"}),(r=String((s=new Date(e.timestamp)).getMonth()+1).padStart(2,"0"),n=String(s.getDate()).padStart(2,"0"),l=String(s.getHours()).padStart(2,"0"),o=String(s.getMinutes()).padStart(2,"0"),`${r}-${n} ${l}:${o}`)]}),(0,x.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,x.jsx)("span",{children:function(e){if(e<60)return`${e}秒`;let t=Math.floor(e/60),a=e%60;if(t<60)return a>0?`${t}分${a}秒`:`${t}分钟`;let s=Math.floor(t/60);return`${s}小时${t%60}分`}(e.durationSec)}),t&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,x.jsx)("span",{className:"text-fuchsia-300 font-bold",children:"最新"})]})]})]})}),(0,x.jsx)("div",{className:"px-4 py-3 text-[12px] leading-relaxed text-fuchsia-100/75 font-serif",children:Y({ascensionNumber:e.ascensionNumber,epochName:e.epochName,durationSec:e.durationSec,techsThisRun:e.summary.techsUnlocked,expThisRun:e.summary.expeditionsCompleted,bossKillsThisRun:e.summary.bossKills,decodedThisRun:e.summary.crystalsDecodedThisRun,newTides:e.tidesThisRun||[],perksThisAscension:e.perksThisAscension||[],blueprintsAfter:e.summary.blueprintsAfter,milestones:e.milestones||[]})}),(0,x.jsxs)("div",{className:"px-4 pb-3 flex flex-wrap gap-1.5",children:[(0,x.jsx)(rw,{icon:(0,x.jsx)(rp,{className:"h-2.5 w-2.5"}),label:"解码",value:e.summary.crystalsDecodedThisRun,color:"#fb7185"}),(0,x.jsx)(rw,{icon:(0,x.jsx)(e7,{className:"h-2.5 w-2.5"}),label:"技术",value:e.summary.techsUnlocked,color:"#34d399"}),(0,x.jsx)(rw,{icon:(0,x.jsx)(s7,{className:"h-2.5 w-2.5"}),label:"探险",value:e.summary.expeditionsCompleted,color:"#fbbf24"}),e.summary.bossKills>0&&(0,x.jsx)(rw,{icon:(0,x.jsx)(rc,{className:"h-2.5 w-2.5"}),label:"BOSS",value:e.summary.bossKills,color:"#e879f9"}),(0,x.jsx)(rw,{icon:(0,x.jsx)(ek,{className:"h-2.5 w-2.5"}),label:"星潮",value:e.tidesThisRun.length,color:"#94a3b8"}),(0,x.jsx)(rw,{icon:(0,x.jsx)(sI,{className:"h-2.5 w-2.5"}),label:"星图",value:e.summary.constellationsTotal,color:"#fcd34d"})]}),e.tidesThisRun.length>0&&(0,x.jsx)("div",{className:"px-4 pb-2 flex flex-wrap gap-1",children:e.tidesThisRun.map(e=>{let t,a=(t=z[e.startsWith("tide_")?e.slice(5):e])?{name:t.name,color:t.color}:{name:e,color:"#94a3b8"};return(0,x.jsxs)("span",{className:"text-[9px] px-1.5 py-0.5 rounded border",style:{color:a.color,borderColor:`${a.color}44`,background:`${a.color}11`},children:["✦ ",a.name]},e)})}),e.perksThisAscension.length>0&&(0,x.jsx)("div",{className:"px-4 pb-2 flex flex-wrap gap-1",children:e.perksThisAscension.map(e=>{let t=B(e),a=t?.category||"cosmic",s=F[a]?.hex||"#94a3b8",r=F[a]?.name||a,n=V[e]||e;return(0,x.jsxs)("span",{className:"text-[9px] px-1.5 py-0.5 rounded border inline-flex items-center gap-1",style:{color:s,borderColor:`${s}55`,background:`${s}11`},title:`${r} \xb7 ${t?.desc||""}`,children:[(0,x.jsx)(rr,{className:"h-2 w-2"}),n]},e)})}),e.milestones.length>0&&(0,x.jsx)("div",{className:"px-4 py-2 border-t flex flex-wrap gap-1.5",style:{borderColor:`${i}22`,background:`${i}08`},children:e.milestones.map((e,t)=>(0,x.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full bg-fuchsia-500/15 text-fuchsia-200 border border-fuchsia-400/30 inline-flex items-center gap-1",children:[(0,x.jsx)(e7,{className:"h-2 w-2"}),e]},t))})]})]})}function rw({icon:e,label:t,value:a,color:s}){return(0,x.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded inline-flex items-center gap-1 font-mono",style:{color:s,background:`${s}11`,border:`1px solid ${s}22`},children:[e,(0,x.jsx)("span",{className:"opacity-70",children:t}),(0,x.jsx)("span",{className:"font-bold",children:a})]})}let rj=(0,ew.default)("radio",[["path",{d:"M16.247 7.761a6 6 0 0 1 0 8.478",key:"1fwjs5"}],["path",{d:"M19.075 4.933a10 10 0 0 1 0 14.134",key:"ehdyv1"}],["path",{d:"M4.925 19.067a10 10 0 0 1 0-14.134",key:"1q22gi"}],["path",{d:"M7.753 16.239a6 6 0 0 1 0-8.478",key:"r2q7qm"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}]]),rN=(0,ew.default)("award",[["path",{d:"m15.477 12.89 1.515 8.526a.5.5 0 0 1-.81.47l-3.58-2.687a1 1 0 0 0-1.197 0l-3.586 2.686a.5.5 0 0 1-.81-.469l1.514-8.526",key:"1yiouv"}],["circle",{cx:"12",cy:"8",r:"6",key:"1vp47v"}]]),rk=(0,ew.default)("crown",[["path",{d:"M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z",key:"1vdc57"}],["path",{d:"M5 21h14",key:"11awu3"}]]),rS=(0,ew.default)("medal",[["path",{d:"M7.21 15 2.66 7.14a2 2 0 0 1 .13-2.2L4.4 2.8A2 2 0 0 1 6 2h12a2 2 0 0 1 1.6.8l1.6 2.14a2 2 0 0 1 .14 2.2L16.79 15",key:"143lza"}],["path",{d:"M11 12 5.12 2.2",key:"qhuxz6"}],["path",{d:"m13 12 5.88-9.8",key:"hbye0f"}],["path",{d:"M8 7h8",key:"i86dvs"}],["circle",{cx:"12",cy:"17",r:"5",key:"qbz8iq"}],["path",{d:"M12 18v-2h-.5",key:"fawc4q"}]]),rM=["routine","anomaly","singular"];function r_(){ey(e=>e.insights);let e=ey(e=>e.grantBeaconReward),{toast:t}=(0,eQ.useToast)(),[a,s]=(0,p.useState)(null),[r,n]=(0,p.useState)(null),[l,o]=(0,p.useState)([]),[i,c]=(0,p.useState)("00:00:00"),[d,u]=(0,p.useState)(Date.now());(0,p.useEffect)(()=>{s(ei()),n(eh()),o(eu());let e=setInterval(()=>{u(Date.now()),n(eh()),s(e=>e??ei())},1e3);return()=>clearInterval(e)},[]),(0,p.useEffect)(()=>{let e,t,a,s;c((t=String(Math.floor((e=Math.max(0,Math.floor(function(e=new Date){return Math.max(0,Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1,0,0,0)-e.getTime())}(new Date(d))/1e3)))/3600)).padStart(2,"0"),a=String(Math.floor(e%3600/60)).padStart(2,"0"),s=String(e%60).padStart(2,"0"),`${t}:${a}:${s}`))},[d]);let h=(0,p.useCallback)(()=>{if(!a||!r||null===r.completedAt||r.claimed)return;let s=function(e,t){var a,s,r;let n,l,o,i,c;if(t.claimed||null===t.completedAt)return{rewardInsight:0,rewardContact:0,score:0,leaderboard:eu()};let d=(a=t.progress,s=t.durationSec,n=Math.min(1,a/e.goal),l=en[e.difficulty].mult,o=n>=1&&s>0?Math.max(0,500-.5*s):0,Math.round(1e3*n*l+o)),u=(r={timestamp:Date.now(),dateKey:e.dateKey,challenge:e.type,difficulty:e.difficulty,progress:t.progress/e.goal,score:d,durationSec:t.durationSec},(i=eu()).push(r),i.sort((e,t)=>t.score-e.score),c=i.slice(0,20),"u">typeof localStorage&&localStorage.setItem(ec,JSON.stringify(c)),c);return ef({...t,claimed:!0}),{rewardInsight:e.rewardInsight,rewardContact:e.rewardContact,score:d,leaderboard:u}}(a,r);o(s.leaderboard),n(eh()),e(s.rewardInsight,s.rewardContact),e3("achievement"),t({title:"✦ 信标奖励已领取",description:`+${s.rewardInsight} 洞见 \xb7 +${s.rewardContact.toFixed(1)} 接触 \xb7 得分 ${s.score}`})},[a,r,t,e]);if(!a||!r)return(0,x.jsx)("div",{className:"flex items-center justify-center h-full text-xs text-muted-foreground/60",children:"正在校准深空信标…"});let f=en[a.difficulty],m=el[a.type],g=Math.min(100,r.progress/a.goal*100),b=null!==r.completedAt,v=r.claimed,y=b&&!v;return(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex flex-col gap-2.5 h-full overflow-y-auto echo-scroll pr-0.5",children:[(0,x.jsx)(eZ.default,{id:"d680841b243a9849",dynamic:[f.glow,f.glow,f.glow,f.glow],children:`.echo-scroll::-webkit-scrollbar{width:4px}.echo-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.echo-scroll::-webkit-scrollbar-track{background:0 0}@keyframes beacon-pulse-ring{0%{opacity:.8;transform:scale(.8)}to{opacity:0;transform:scale(2.2)}}@keyframes beacon-glow{0%,to{box-shadow:0 0 18px ${f.glow},inset 0 0 12px ${f.glow}}50%{box-shadow:0 0 32px ${f.glow},inset 0 0 20px ${f.glow}}}`}),(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center justify-between",children:[(0,x.jsxs)("h3",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-sm font-semibold flex items-center gap-1.5",children:[(0,x.jsx)(rj,{className:"h-4 w-4 text-fuchsia-400"}),"深空信标"]}),(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center gap-1 text-[10px] text-muted-foreground/70",children:[(0,x.jsx)(rx,{className:"h-3 w-3"}),"次日重置",(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" font-mono text-fuchsia-300/90",children:i})]})]}),(0,x.jsxs)("div",{style:{borderColor:`${f.color}55`,background:`linear-gradient(135deg, ${f.color}1f, rgba(0,0,0,0.45))`,animation:b?"none":"beacon-glow 3s ease-in-out infinite"},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" relative rounded-xl border p-3 overflow-hidden",children:[!b&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("div",{style:{border:`1.5px solid ${f.color}`,animation:"beacon-pulse-ring 2.5s ease-out infinite"},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" absolute top-4 right-4 h-10 w-10 rounded-full pointer-events-none"}),(0,x.jsx)("div",{style:{border:`1.5px solid ${f.color}`,animation:"beacon-pulse-ring 2.5s ease-out infinite 1.25s"},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" absolute top-4 right-4 h-10 w-10 rounded-full pointer-events-none"})]}),(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" relative",children:[(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center gap-1.5 mb-2",children:[(0,x.jsxs)("span",{style:{background:`${f.color}22`,color:f.color,border:`1px solid ${f.color}55`},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-1",children:[(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]]),children:f.icon}),f.label]}),(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 text-muted-foreground border border-white/10",children:[m.icon," ",m.label]}),b&&(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded bg-emerald-500/20 text-emerald-300 border border-emerald-500/40 flex items-center gap-1",children:[(0,x.jsx)(e7,{className:"h-2.5 w-2.5"})," 已完成"]})]}),(0,x.jsx)("h4",{style:{color:f.color,textShadow:`0 0 10px ${f.glow}`},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-sm font-semibold mb-1",children:a.title}),(0,x.jsx)("p",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[11px] text-muted-foreground/80 leading-relaxed mb-2.5",children:a.desc}),(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" mb-2",children:[(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center justify-between mb-1",children:[(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[10px] text-muted-foreground/70",children:"进度"}),(0,x.jsxs)("span",{style:{color:f.color},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[11px] font-mono font-semibold",children:[Math.min(r.progress,a.goal)," / ",a.goal," ",m.unit]})]}),(0,x.jsx)(eY,{value:g,className:"h-2 bg-black/40",style:{"--progress-color":f.color}})]}),(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center justify-between gap-2",children:[(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center gap-2 text-[10px]",children:[(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-muted-foreground/60",children:"奖励:"}),a.rewardInsight>0&&(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-amber-300 font-mono",children:["+",$(a.rewardInsight),"洞见"]}),(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-fuchsia-300 font-mono",children:["+",a.rewardContact.toFixed(1),"接触"]})]}),(0,x.jsx)(e8,{onClick:h,disabled:!y,size:"sm",className:"h-7 px-3 text-[11px] border-0",style:{background:y?`linear-gradient(90deg, ${f.color}, ${f.color}cc)`:void 0},children:v?"已领取":y?"领取奖励":b?"已领取":"进行中…"})]}),b&&r.durationSec>0&&(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" mt-1.5 text-[10px] text-muted-foreground/50 text-center",children:["完成用时 ",Math.floor(r.durationSec/60),"分",r.durationSec%60,"秒"]})]})]}),(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" rounded-xl border border-white/10 bg-black/30 p-2.5",children:[(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center gap-1.5 mb-2",children:[(0,x.jsx)(rc,{className:"h-3.5 w-3.5 text-amber-400"}),(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-xs font-semibold",children:"深空排行榜"}),(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-[10px] text-muted-foreground/50",children:["本地 · Top ",l.length||0]})]}),0===l.length?(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-center py-4 text-[11px] text-muted-foreground/40",children:[(0,x.jsx)(rc,{className:"h-6 w-6 mx-auto mb-1 opacity-30"}),"尚无记录。完成今日信标即可登榜。"]}):(0,x.jsx)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" space-y-0.5 max-h-[180px] overflow-y-auto echo-scroll",children:l.map((e,t)=>{let a=0===t?{icon:rk,color:"#fbbf24",label:"1st"}:1===t?{icon:rS,color:"#cbd5e1",label:"2nd"}:2===t?{icon:rN,color:"#f97316",label:"3rd"}:null,s=en[e.difficulty],r=el[e.challenge],n=e.dateKey===eo();return(0,x.jsxs)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" "+`flex items-center gap-2 px-2 py-1 rounded-lg text-[11px] ${n?"bg-fuchsia-500/10 border border-fuchsia-500/20":"hover:bg-white/5"}`,children:[(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" w-6 flex items-center justify-center",children:a?(0,x.jsx)(a.icon,{className:"h-3.5 w-3.5",style:{color:a.color}}):(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-muted-foreground/50 font-mono",children:t+1})}),(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center gap-1 flex-1 min-w-0",children:[(0,x.jsx)("span",{style:{color:s.color},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" font-mono",children:s.icon}),(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-muted-foreground/80 truncate",children:r.label}),e.progress>=1&&(0,x.jsx)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-emerald-400/70",children:"✓"})]}),(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" text-muted-foreground/50 font-mono text-[10px] w-16 text-right",children:[Math.floor(e.durationSec/60),"m",e.durationSec%60,"s"]}),(0,x.jsx)("span",{style:{color:s.color},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" font-mono font-semibold w-12 text-right",children:$(e.score)})]},`${e.timestamp}-${t}`)})})]}),(0,x.jsx)("div",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center justify-center gap-3 text-[9px] text-muted-foreground/50",children:rM.map(e=>{let t=en[e];return(0,x.jsxs)("span",{className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]])+" flex items-center gap-1",children:[(0,x.jsx)("span",{style:{color:t.color},className:eZ.default.dynamic([["d680841b243a9849",[f.glow,f.glow,f.glow,f.glow]]]),children:t.icon}),t.label," ×",t.mult]},e)})})]})}let rC=(0,ew.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);function rE(){let[e,t]=(0,p.useState)(!1),[a,s]=(0,p.useState)(0),[r,n]=(0,p.useState)(null),[l,o]=(0,p.useState)(!1),i=(0,p.useRef)(null);(0,p.useEffect)(()=>{if(!function(){try{return"1"===localStorage.getItem(s8)}catch{return!0}}()){let e=setTimeout(()=>t(!0),600);return()=>clearTimeout(e)}},[]),(0,p.useEffect)(()=>{let e=()=>{s(0),o(!1),t(!0)};return window.addEventListener("echo-nexus-tutorial-restart",e),()=>window.removeEventListener("echo-nexus-tutorial-restart",e)},[]),ey(e=>e.crystals),ey(e=>e.pulsePower),ey(e=>e.tech),ey(e=>e.activePuzzle),ey(e=>!!e.activeExpedition&&!e.activeExpedition.finished);let c=(0,p.useRef)(null);(0,p.useEffect)(()=>{if(!e)return;let t=s6[a];if(!t?.expectAction)return;let s=0,r=()=>{let e=ey.getState(),a=!1;"pulse"===t.expectAction?(null===c.current&&(c.current=e.crystals),a=e.crystals>=(c.current??0)+Math.max(.5,.5*e.pulsePower)):"decode-start"===t.expectAction?a=!!e.activePuzzle:"tech-buy"===t.expectAction?a=Object.values(e.tech).some(e=>e>0):"expedition-start"===t.expectAction&&(a=!!e.activeExpedition&&!e.activeExpedition.finished),o(e=>e!==a?a:e),s=requestAnimationFrame(r)};return s=requestAnimationFrame(r),()=>cancelAnimationFrame(s)},[e,a]);let d=(0,p.useCallback)(()=>{let e=s6[a];if(!e?.target)return void n(null);let t=document.querySelector(`[data-tut="${e.target}"]`);if(!t)return void n(null);let s=t.getBoundingClientRect();n({left:s.left,top:s.top,width:s.width,height:s.height})},[a]);(0,p.useEffect)(()=>{if(!e)return;let t=()=>{d(),i.current=requestAnimationFrame(t)};return i.current=requestAnimationFrame(t),()=>{i.current&&cancelAnimationFrame(i.current)}},[e,a,d]);let u=(0,p.useCallback)(()=>{t(!1);try{localStorage.setItem(s8,"1")}catch{}},[]),h=(0,p.useCallback)(()=>{a>=s6.length-1?u():(s(e=>e+1),o(!1))},[a,u]),f=(0,p.useCallback)(()=>{a<=0||(s(e=>e-1),o(!1))},[a]);if(!e)return null;let m=s6[a],g=a>=s6.length-1,b=m.placement??"auto",v={};return v=r?"right"===b?{left:r.left+r.width+16,top:r.top+r.height/2,transform:"translateY(-50%)"}:"left"===b?{left:Math.max(16,r.left-360-16),top:r.top+r.height/2,transform:"translateY(-50%)",maxWidth:340}:"top"===b?{left:Math.max(16,Math.min(r.left,window.innerWidth-360-16)),top:Math.max(16,r.top-220),maxWidth:340}:{left:Math.max(16,Math.min(window.innerWidth/2-170,window.innerWidth-360-16)),top:Math.min(window.innerHeight-260,(r?.bottom??window.innerHeight/2)+16),maxWidth:340}:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",maxWidth:440},(0,x.jsxs)("div",{className:"fixed inset-0 z-[79]",children:[(()=>{if(!r)return(0,x.jsx)("div",{className:"fixed inset-0 bg-black/70 z-[80] pointer-events-auto"});let{left:e,top:t,width:a,height:s}=r,n=e-6,l=t-6,o=a+12,i=s+12;return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:0,top:0,right:0,height:Math.max(0,l)}}),(0,x.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:0,top:l+i,right:0,bottom:0}}),(0,x.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:0,top:l,width:Math.max(0,n),height:i}}),(0,x.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:n+o,top:l,right:0,height:i}}),(0,x.jsx)("div",{className:"fixed z-[81] pointer-events-none rounded-lg",style:{left:n,top:l,width:o,height:i,boxShadow:"0 0 0 2px rgba(232,121,249,0.9), 0 0 24px 4px rgba(232,121,249,0.5)",animation:"tut-pulse 1.6s ease-in-out infinite"}})]})})(),(0,x.jsx)("div",{className:"fixed z-[82] w-[340px] sm:w-[360px] max-w-[calc(100vw-32px)]",style:v,children:(0,x.jsxs)("div",{className:"relative rounded-2xl border border-fuchsia-400/40 bg-gradient-to-br from-[#1a0a2e]/95 to-[#0a0a1e]/95 backdrop-blur-xl shadow-2xl shadow-fuchsia-500/20 overflow-hidden",children:[(0,x.jsx)("div",{className:"h-1 w-full bg-gradient-to-r from-emerald-400 via-fuchsia-500 to-rose-400"}),(0,x.jsx)("button",{onClick:u,className:"absolute top-2 right-2 h-7 w-7 rounded-full flex items-center justify-center text-muted-foreground hover:text-foreground hover:bg-white/10 transition z-10","aria-label":"关闭教程",children:(0,x.jsx)(e9.X,{className:"h-3.5 w-3.5"})}),(0,x.jsxs)("div",{className:"p-4 pt-3.5",children:[(0,x.jsx)("div",{className:"flex items-center gap-1.5 mb-2.5",children:s6.map((e,t)=>(0,x.jsx)("div",{className:`h-1 rounded-full transition-all ${t===a?"w-6 bg-fuchsia-400":t<a?"w-3 bg-fuchsia-400/50":"w-3 bg-white/15"}`},e.id))}),(0,x.jsxs)("h3",{className:"text-sm font-bold text-fuchsia-100 mb-1.5 flex items-center gap-1.5 pr-6",children:[(0,x.jsx)(e7,{className:"h-3.5 w-3.5 text-fuchsia-300 shrink-0"}),m.title]}),(0,x.jsx)("p",{className:"text-[12.5px] text-muted-foreground leading-relaxed whitespace-pre-line",children:m.body}),m.expectAction&&!l&&(0,x.jsxs)("div",{className:"mt-3 px-2.5 py-1.5 rounded-lg bg-amber-500/10 border border-amber-400/30 text-[11px] text-amber-200 flex items-center gap-1.5",children:[(0,x.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 animate-pulse"}),"完成动作后自动进入下一步,或点跳过"]}),m.expectAction&&l&&(0,x.jsx)("div",{className:"mt-3 px-2.5 py-1.5 rounded-lg bg-emerald-500/10 border border-emerald-400/30 text-[11px] text-emerald-200 flex items-center gap-1.5",children:"✓ 已检测到动作"}),(0,x.jsxs)("div",{className:"flex items-center gap-2 mt-4",children:[(0,x.jsxs)(e8,{size:"sm",variant:"ghost",onClick:f,disabled:0===a,className:"h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground",children:[(0,x.jsx)(rC,{className:"h-3.5 w-3.5"}),"上一步"]}),(0,x.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,x.jsx)(e8,{size:"sm",variant:"ghost",onClick:u,className:"h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground",children:"跳过"}),(0,x.jsxs)(e8,{size:"sm",onClick:h,className:"h-7 px-3 text-[11px] bg-fuchsia-500 hover:bg-fuchsia-600 text-white border-fuchsia-400/50",children:[g?"完成":"下一步",(0,x.jsx)(rn,{className:"h-3.5 w-3.5 ml-0.5"})]})]})]}),(0,x.jsxs)("div",{className:"text-[10px] text-muted-foreground/60 text-center mt-2",children:[a+1," / ",s6.length]})]})]})})]})}let rT=(0,ew.default)("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]),rR=(0,ew.default)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);function rP(){let[e,t]=(0,p.useState)(null);(0,p.useEffect)(()=>{window.__offlineEffect={at:Date.now()};let e=()=>{let e=em;window.__offlineCheck={at:Date.now(),hasReport:!!e,gain:e?.gain},e&&e.gain>.1?(t(e),setTimeout(()=>e3("decodeSuccess"),300)):e&&ep()},a=setTimeout(e,1500),s=()=>e();return window.addEventListener("echo-nexus-offline-report",s),()=>{window.__offlineCleanup={at:Date.now()},clearTimeout(a),window.removeEventListener("echo-nexus-offline-report",s)}},[]);let a=()=>{ep(),t(null)};if(!e)return null;let s=e.gain<e.rate*e.elapsedSec*e.eff-.01;return(0,x.jsx)(sT,{open:!!e,onOpenChange:e=>!e&&a(),children:(0,x.jsxs)(s$,{className:"bg-gradient-to-br from-[#0f0a2e]/95 to-[#050410]/95 border-emerald-400/30 max-w-[400px]",children:[(0,x.jsxs)(sA,{children:[(0,x.jsx)("div",{className:"absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-emerald-400 via-cyan-400 to-blue-400 rounded-t-xl"}),(0,x.jsxs)(sz,{className:"flex items-center gap-2 text-emerald-100",children:[(0,x.jsx)(e7,{className:"h-4 w-4 text-emerald-300"}),"欢迎回来,无人机"]}),(0,x.jsx)(sO,{className:"text-muted-foreground",children:"在你离开的这段时间里,采矿机群持续运转…"})]}),(0,x.jsxs)("div",{className:"space-y-3 py-1",children:[(0,x.jsxs)("div",{className:"relative rounded-xl border border-emerald-400/30 bg-emerald-500/5 p-4 overflow-hidden",children:[(0,x.jsx)("div",{className:"pointer-events-none absolute -top-8 -right-8 h-24 w-24 rounded-full bg-emerald-500/20 blur-2xl"}),(0,x.jsxs)("div",{className:"relative flex items-center gap-3",children:[(0,x.jsx)("div",{className:"h-12 w-12 rounded-xl bg-emerald-500/15 border border-emerald-400/40 flex items-center justify-center shrink-0",children:(0,x.jsx)(ej,{className:"h-6 w-6 text-emerald-300"})}),(0,x.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,x.jsx)("div",{className:"text-[11px] text-muted-foreground",children:"离线采集获得"}),(0,x.jsxs)("div",{className:"text-2xl font-bold font-mono text-emerald-200 tabular-nums leading-tight",children:["+",$(e.gain)]}),(0,x.jsx)("div",{className:"text-[10px] text-muted-foreground/80",children:"记忆晶体"})]})]})]}),(0,x.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[(0,x.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/30 px-3 py-2",children:[(0,x.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground mb-1",children:[(0,x.jsx)(rx,{className:"h-3 w-3"}),"离线时长"]}),(0,x.jsx)("div",{className:"font-mono font-semibold text-foreground",children:function(e){if(e<60)return`${Math.floor(e)}秒`;let t=Math.floor(e/60);if(t<60)return`${t}分钟`;let a=Math.floor(t/60),s=t%60;if(a<24)return s>0?`${a}小时${s}分`:`${a}小时`;let r=Math.floor(a/24),n=a%24;return n>0?`${r}天${n}小时`:`${r}天`}(e.rawElapsedSec)}),e.capped&&(0,x.jsx)("div",{className:"text-[9px] text-amber-400/80 mt-0.5",children:"已达 8h 上限"})]}),(0,x.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/30 px-3 py-2",children:[(0,x.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground mb-1",children:[(0,x.jsx)(rT,{className:"h-3 w-3"}),"采集速率"]}),(0,x.jsxs)("div",{className:"font-mono font-semibold text-foreground",children:[$(e.rate),"/s"]}),(0,x.jsxs)("div",{className:"text-[9px] text-muted-foreground/70 mt-0.5",children:["效率 ",Math.round(100*e.eff),"%"]})]})]}),s&&(0,x.jsxs)("div",{className:"flex items-start gap-2 rounded-lg border border-amber-400/30 bg-amber-500/5 px-3 py-2 text-[11px] text-amber-200",children:[(0,x.jsx)(rR,{className:"h-3.5 w-3.5 shrink-0 mt-0.5"}),(0,x.jsx)("span",{children:"仓库已满,部分离线产出被截断。升级仓库容量或解码晶体可避免浪费。"})]}),(0,x.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/20 px-3 py-2",children:[(0,x.jsxs)("div",{className:"flex items-center justify-between text-[11px]",children:[(0,x.jsx)("span",{className:"text-muted-foreground",children:"当前晶体"}),(0,x.jsxs)("span",{className:"font-mono text-foreground tabular-nums",children:[$(e.crystalsAfter)," / ",$(e.crystalCap)]})]}),(0,x.jsx)("div",{className:"mt-1.5 h-1.5 rounded-full bg-white/10 overflow-hidden",children:(0,x.jsx)("div",{className:"h-full bg-gradient-to-r from-emerald-500 to-cyan-400 transition-all",style:{width:`${Math.min(100,e.crystalsAfter/e.crystalCap*100)}%`}})})]})]}),(0,x.jsx)("div",{className:"flex justify-end gap-2 mt-1",children:(0,x.jsxs)(e8,{onClick:a,className:"bg-emerald-500 hover:bg-emerald-600 text-white border-emerald-400/50",children:[(0,x.jsx)(ej,{className:"h-3.5 w-3.5 mr-1"}),"领取收益"]})})]})})}function r$(){let e=ey(e=>e._tideEvents),t=ey(e=>e.consumeTideEvents),{toast:a}=(0,eQ.useToast)();return(0,p.useEffect)(()=>{if(0!==e.length)for(let e of t()){if(e.started){let t=z[e.started];e3("tideStart"),a({title:`${t.icon} 星潮降临:${t.name}`,description:t.desc})}if(e.ended){let t=z[e.ended];e.silenceCompensation&&e.silenceCompensation>0?(e3("techBuy"),a({title:`${t.icon} 寂静期消散`,description:`虚空回赠 ${e.silenceCompensation} 洞见。`})):(e3("tideEnd"),a({title:`${t.icon} ${t.name}结束`,description:"星潮退去,物理法则恢复。"}))}}},[e,t,a]),null}function rA(){let e=ey(e=>e.activeTide),[,t]=(0,p.useState)(0);if((0,p.useEffect)(()=>{if(!e)return;let a=setInterval(()=>t(e=>e+1),500);return()=>clearInterval(a)},[e]),!e)return null;let a=z[e.type],s=Math.max(0,e.endsAt-Date.now()),r=Math.ceil(s/1e3),n=1-s/75e3;return(0,x.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 rounded-full text-[10px] font-medium relative overflow-hidden",style:{background:`${a.color}1a`,border:`1px solid ${a.color}55`,color:a.color,boxShadow:`0 0 10px ${a.glow}`},title:a.desc,children:[(0,x.jsx)("div",{className:"absolute inset-0 opacity-20",style:{background:`linear-gradient(90deg, ${a.color}40 ${100*n}%, transparent ${100*n}%)`}}),(0,x.jsx)("span",{className:"relative text-xs leading-none",children:a.icon}),(0,x.jsx)("span",{className:"relative leading-none",children:a.name}),(0,x.jsxs)("span",{className:"relative font-mono leading-none opacity-80",children:[r,"s"]})]})}function rD(){let e=ey(e=>e.activeTide);if(!e)return null;let t=z[e.type];return(0,x.jsxs)("div",{className:"jsx-10d58630b8785c8d fixed inset-0 pointer-events-none z-0 transition-opacity duration-1000",children:[(0,x.jsx)("div",{style:{background:`linear-gradient(180deg, ${t.color}22, transparent)`},className:"jsx-10d58630b8785c8d absolute top-0 left-0 right-0 h-24 opacity-40"}),(0,x.jsx)("div",{style:{background:`linear-gradient(0deg, ${t.color}22, transparent)`},className:"jsx-10d58630b8785c8d absolute bottom-0 left-0 right-0 h-24 opacity-40"}),(0,x.jsx)("div",{style:{boxShadow:`inset 0 0 120px ${t.glow}`,animation:"tide-breathe 3s ease-in-out infinite"},className:"jsx-10d58630b8785c8d absolute inset-0"}),(0,x.jsx)(eZ.default,{id:"10d58630b8785c8d",children:"@keyframes tide-breathe{0%,to{opacity:.5}50%{opacity:.9}}"})]})}var rz=e.i(75830),rO="rovingFocusGroup.onEntryFocus",rI={bubbles:!1,cancelable:!0},rF="RovingFocusGroup",[rL,rB,rH]=(0,rz.createCollection)(rF),[rK,rW]=(0,tg.createContextScope)(rF,[rH]),[rq,rV]=rK(rF),rU=p.forwardRef((e,t)=>(0,x.jsx)(rL.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,x.jsx)(rL.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,x.jsx)(rX,{...e,ref:t})})}));rU.displayName=rF;var rX=p.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:a,orientation:s,loop:r=!1,dir:n,currentTabStopId:l,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:i,onEntryFocus:c,preventScrollOnEntryFocus:d=!1,...u}=e,h=p.useRef(null),f=(0,eM.useComposedRefs)(t,h),m=ty(n),[g,b]=(0,t7.useControllableState)({prop:l,defaultProp:o??null,onChange:i,caller:rF}),[v,y]=p.useState(!1),w=(0,tb.useCallbackRef)(c),j=rB(a),N=p.useRef(!1),[k,S]=p.useState(0);return p.useEffect(()=>{let e=h.current;if(e)return e.addEventListener(rO,w),()=>e.removeEventListener(rO,w)},[w]),(0,x.jsx)(rq,{scope:a,orientation:s,dir:m,loop:r,currentTabStopId:g,onItemFocus:p.useCallback(e=>b(e),[b]),onItemShiftTab:p.useCallback(()=>y(!0),[]),onFocusableItemAdd:p.useCallback(()=>S(e=>e+1),[]),onFocusableItemRemove:p.useCallback(()=>S(e=>e-1),[]),children:(0,x.jsx)(tx.Primitive.div,{tabIndex:v||0===k?-1:0,"data-orientation":s,...u,ref:f,style:{outline:"none",...e.style},onMouseDown:(0,tj.composeEventHandlers)(e.onMouseDown,()=>{N.current=!0}),onFocus:(0,tj.composeEventHandlers)(e.onFocus,e=>{let t=!N.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(rO,rI);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=j().filter(e=>e.focusable);rZ([e.find(e=>e.active),e.find(e=>e.id===g),...e].filter(Boolean).map(e=>e.ref.current),d)}}N.current=!1}),onBlur:(0,tj.composeEventHandlers)(e.onBlur,()=>y(!1))})})}),rY="RovingFocusGroupItem",rG=p.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:a,focusable:s=!0,active:r=!1,tabStopId:n,children:l,...o}=e,i=t9(),c=n||i,d=rV(rY,a),u=d.currentTabStopId===c,h=rB(a),{onFocusableItemAdd:f,onFocusableItemRemove:m,currentTabStopId:g}=d;return p.useEffect(()=>{if(s)return f(),()=>m()},[s,f,m]),(0,x.jsx)(rL.ItemSlot,{scope:a,id:c,focusable:s,active:r,children:(0,x.jsx)(tx.Primitive.span,{tabIndex:u?0:-1,"data-orientation":d.orientation,...o,ref:t,onMouseDown:(0,tj.composeEventHandlers)(e.onMouseDown,e=>{s?d.onItemFocus(c):e.preventDefault()}),onFocus:(0,tj.composeEventHandlers)(e.onFocus,()=>d.onItemFocus(c)),onKeyDown:(0,tj.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void d.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,a){var s;let r=(s=e.key,"rtl"!==a?s:"ArrowLeft"===s?"ArrowRight":"ArrowRight"===s?"ArrowLeft":s);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(r))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)))return rJ[r]}(e,d.orientation,d.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let r=h().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)r.reverse();else if("prev"===t||"next"===t){var a,s;"prev"===t&&r.reverse();let n=r.indexOf(e.currentTarget);r=d.loop?(a=r,s=n+1,a.map((e,t)=>a[(s+t)%a.length])):r.slice(n+1)}setTimeout(()=>rZ(r))}}),children:"function"==typeof l?l({isCurrentTabStop:u,hasTabStop:null!=g}):l})})});rG.displayName=rY;var rJ={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function rZ(e,t=!1){let a=document.activeElement;for(let s of e)if(s===a||(s.focus({preventScroll:t}),document.activeElement!==a))return}var rQ="Tabs",[r0,r1]=(0,tg.createContextScope)(rQ,[rW]),r2=rW(),[r5,r3]=r0(rQ),r4=p.forwardRef((e,t)=>{let{__scopeTabs:a,value:s,onValueChange:r,defaultValue:n,orientation:l="horizontal",dir:o,activationMode:i="automatic",...c}=e,d=ty(o),[u,h]=(0,t7.useControllableState)({prop:s,onChange:r,defaultProp:n??"",caller:rQ});return(0,x.jsx)(r5,{scope:a,baseId:t9(),value:u,onValueChange:h,orientation:l,dir:d,activationMode:i,children:(0,x.jsx)(tx.Primitive.div,{dir:d,"data-orientation":l,...c,ref:t})})});r4.displayName=rQ;var r6="TabsList",r8=p.forwardRef((e,t)=>{let{__scopeTabs:a,loop:s=!0,...r}=e,n=r3(r6,a),l=r2(a);return(0,x.jsx)(rU,{asChild:!0,...l,orientation:n.orientation,dir:n.dir,loop:s,children:(0,x.jsx)(tx.Primitive.div,{role:"tablist","aria-orientation":n.orientation,...r,ref:t})})});r8.displayName=r6;var r9="TabsTrigger",r7=p.forwardRef((e,t)=>{let{__scopeTabs:a,value:s,disabled:r=!1,...n}=e,l=r3(r9,a),o=r2(a),i=na(l.baseId,s),c=ns(l.baseId,s),d=s===l.value;return(0,x.jsx)(rG,{asChild:!0,...o,focusable:!r,active:d,children:(0,x.jsx)(tx.Primitive.button,{type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:i,...n,ref:t,onMouseDown:(0,tj.composeEventHandlers)(e.onMouseDown,e=>{r||0!==e.button||!1!==e.ctrlKey?e.preventDefault():l.onValueChange(s)}),onKeyDown:(0,tj.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&l.onValueChange(s)}),onFocus:(0,tj.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==l.activationMode;d||r||!e||l.onValueChange(s)})})})});r7.displayName=r9;var ne="TabsContent",nt=p.forwardRef((e,t)=>{let{__scopeTabs:a,value:s,forceMount:r,children:n,...l}=e,o=r3(ne,a),i=na(o.baseId,s),c=ns(o.baseId,s),d=s===o.value,u=p.useRef(d);return p.useEffect(()=>{let e=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,x.jsx)(tp.Presence,{present:r||d,children:({present:a})=>(0,x.jsx)(tx.Primitive.div,{"data-state":d?"active":"inactive","data-orientation":o.orientation,role:"tabpanel","aria-labelledby":i,hidden:!a,id:c,tabIndex:0,...l,ref:t,style:{...e.style,animationDuration:u.current?"0s":void 0},children:a&&n})})});function na(e,t){return`${e}-trigger-${t}`}function ns(e,t){return`${e}-content-${t}`}function nr({className:e,...t}){return(0,x.jsx)(r4,{"data-slot":"tabs",className:(0,eX.cn)("flex flex-col gap-2",e),...t})}function nn({className:e,...t}){return(0,x.jsx)(r8,{"data-slot":"tabs-list",className:(0,eX.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function nl({className:e,...t}){return(0,x.jsx)(r7,{"data-slot":"tabs-trigger",className:(0,eX.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function no({className:e,...t}){return(0,x.jsx)(nt,{"data-slot":"tabs-content",className:(0,eX.cn)("flex-1 outline-none",e),...t})}nt.displayName=ne;let ni=(0,ew.default)("settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]),nc=(0,ew.default)("chart-column",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]]);function nd(){let e,t,a,s,r,n,l;e=ey(e=>e.tick),t=ey(e=>e.autoDecodeTick),a=ey(e=>e.tickTide),s=ey(e=>e.checkAchievements),r=ey(e=>e.init),n=(0,p.useRef)(!1),(0,p.useEffect)(()=>{window.__loopMounted={at:Date.now(),hydrated:ey.persist.hasHydrated()};let l=()=>{window.__doInitCalled={at:Date.now(),inited:n.current},n.current||(r(),n.current=!0)},o=null,i=null;ey.persist.hasHydrated()?l():(o=ey.persist.onFinishHydration(l),i=setTimeout(l,500));let c=0,d=setInterval(()=>{let r=Date.now();e(r),t(),a(r),++c%4==0&&s()},250);return()=>{clearInterval(d),o&&o(),i&&clearTimeout(i)}},[e,t,a,s,r]),(0,p.useEffect)(()=>{let t=()=>{"visible"===document.visibilityState&&(e(Date.now()),a(Date.now()),s())};return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},[e,a,s]),l=ey(e=>e.soundOn),(0,p.useEffect)(()=>{e5().setEnabled(l)},[l]);let[o,i]=(0,p.useState)(!1),[c,d]=(0,p.useState)(!1),[u,h]=(0,p.useState)(!1),[f,m]=(0,p.useState)(!1),[b,v]=(0,p.useState)(!1),y=ey(e=>e.contact),w=ey(e=>e.totalDecoded),j=ey(e=>e.crystalsPerSec),N=ey(e=>e.ascensions),k=ey(e=>e.tech),S=ey(e=>e.fragments),M=ey(e=>e.achievements),_=ey(e=>e.constellation??[]),C=ey(e=>e.pendingPerkChoices),T=ey(e=>e.crystals),R=ey(e=>e.crystalCap),P=ey(e=>e.activeTide),D=ey(e=>e.energy),O=ey(e=>!!e.activeExpedition&&!e.activeExpedition.finished),I=ey(e=>e.chronicle?.length??0),[F,L]=(0,p.useState)(!1);if((0,p.useEffect)(()=>{let e=!1,t=()=>{try{let t=ei(),a=eh();e||L(null!==a.completedAt&&!a.claimed&&a.dateKey===t.dateKey)}catch{e||L(!1)}};t();let a=setInterval(t,2e3);return()=>{e=!0,clearInterval(a)}},[]),(0,p.useEffect)(()=>{v(!0)},[]),!b)return(0,x.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-[#050410] text-muted-foreground",children:(0,x.jsx)("div",{className:"animate-pulse",children:"唤醒回响中…"})});let B=Object.values(k).filter(e=>e>0).length,H=Object.values(S).filter(Boolean).length,K=Object.values(M).filter(Boolean).length,W=y>=100,q=C&&C.length>0,V=T>=.98*R,U="点击中央晶体发起脉冲,累积记忆晶体";if(0===w&&T>=5?U="右侧「待解码晶体」点击一颗晶体,开始解码":w>0&&0===B?U="用洞见解锁技术树,提升产能":w>0&&H<E.length&&(U=`继续解码,拼凑记忆图谱(${H}/${E.length})`),D>=1&&w>=3&&(U="「探险」标签可深入遗迹,获取丰厚奖励"),N>=1&&_.length>0&&(U=`星图天赋已觉醒 ${_.length}/18,继续飞升获取更多`),V&&(U="⚠ 仓库已满,产能浪费中!请解码晶体或升级仓库"),q&&(U="✦ 星图觉醒!点击顶部「星图」按钮选择一道天赋"),P){let e=z[P.type];U=`${e.icon} 星潮「${e.name}」进行中 \xb7 ${e.desc}`}return W&&(U="✦ 接触进度已满,可发起飞升进入新周目"),(0,x.jsxs)("div",{className:"relative min-h-screen flex flex-col bg-[#050410] text-foreground overflow-x-hidden",children:[(0,x.jsx)(g,{className:"fixed inset-0 w-full h-full -z-10"}),(0,x.jsx)(rD,{}),(0,x.jsxs)("header",{className:"sticky top-0 z-30 px-3 sm:px-5 pt-3 pb-2",children:[(0,x.jsxs)("div",{className:"flex items-center gap-3 mb-2.5",children:[(0,x.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,x.jsxs)("div",{className:"relative h-9 w-9",children:[(0,x.jsx)("div",{className:"absolute inset-0 rounded-full bg-gradient-to-br from-emerald-400 via-fuchsia-500 to-rose-400 blur-md opacity-60"}),(0,x.jsx)("div",{className:"absolute inset-1 rounded-full bg-[#050410] flex items-center justify-center",children:(0,x.jsx)(e7,{className:"h-4 w-4 text-fuchsia-300"})})]}),(0,x.jsxs)("div",{className:"leading-tight",children:[(0,x.jsx)("h1",{className:"text-base sm:text-lg font-bold text-gradient",children:"回响星核"}),(0,x.jsx)("p",{className:"text-[9px] sm:text-[10px] text-muted-foreground/70 -mt-0.5 tracking-wider",children:"ECHO NEXUS · v0.5.2"})]})]}),(0,x.jsxs)("div",{className:"ml-auto flex items-center gap-1.5",children:[(0,x.jsx)(rA,{}),(0,x.jsxs)(e8,{size:"icon",variant:"ghost",onClick:()=>m(!0),className:"h-8 w-8 relative group","aria-label":"编年史",title:"回响编年史",children:[(0,x.jsx)(td,{className:"h-4 w-4 group-hover:text-fuchsia-300 transition-colors"}),I>0&&(0,x.jsx)("span",{className:"absolute -top-0.5 -right-0.5 min-w-[14px] h-[14px] px-1 rounded-full bg-fuchsia-500 text-[9px] font-mono font-bold text-white flex items-center justify-center border border-fuchsia-300/50",children:I})]}),q&&(0,x.jsxs)(e8,{size:"sm",variant:"outline",onClick:()=>h(!0),className:"border-fuchsia-400/60 text-fuchsia-200 hover:bg-fuchsia-500/15 h-8 px-2.5 animate-pulse",children:[(0,x.jsx)(sI,{className:"h-3.5 w-3.5 mr-1"}),"觉醒"]}),W&&(0,x.jsxs)(e8,{size:"sm",variant:"outline",onClick:()=>i(!0),"data-tut":"prestige-btn",className:"border-fuchsia-400/50 text-fuchsia-200 hover:bg-fuchsia-500/10 h-8 px-2.5",children:[(0,x.jsx)(eS,{className:"h-3.5 w-3.5 mr-1"}),"飞升"]}),(0,x.jsx)(e8,{size:"icon",variant:"ghost",onClick:()=>d(!0),className:"h-8 w-8","aria-label":"设置",children:(0,x.jsx)(ni,{className:"h-4 w-4"})})]})]}),(0,x.jsx)(eG,{onPrestige:()=>i(!0)})]}),(0,x.jsx)("main",{className:"flex-1 px-3 sm:px-5 pb-3 min-h-0",children:(0,x.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_minmax(360px,420px)] gap-3 h-full",children:[(0,x.jsxs)("section",{className:"glass rounded-2xl p-4 sm:p-6 flex flex-col items-center justify-center min-h-[420px] relative overflow-hidden",children:[(0,x.jsx)("div",{className:"pointer-events-none absolute -top-20 -left-20 h-60 w-60 rounded-full bg-emerald-500/10 blur-3xl"}),(0,x.jsx)("div",{className:"pointer-events-none absolute -bottom-20 -right-20 h-60 w-60 rounded-full bg-fuchsia-500/10 blur-3xl"}),(0,x.jsx)("div",{"data-tut":"crystal-orb",className:"contents",children:(0,x.jsx)(e4,{})})]}),(0,x.jsxs)("section",{className:"flex flex-col gap-3 min-h-0",children:[(0,x.jsx)("div",{"data-tut":"decode-panel",className:"glass rounded-2xl p-4 flex-1 min-h-[360px] max-h-[560px]",children:(0,x.jsx)(tr,{})}),(0,x.jsx)("div",{className:"glass rounded-2xl p-3 min-h-[320px] max-h-[440px]",children:(0,x.jsxs)(nr,{defaultValue:O?"expedition":q?"constellation":"tech",className:"h-full flex flex-col",children:[(0,x.jsxs)(nn,{className:"grid grid-cols-7 h-9 bg-black/30 gap-0.5 p-1",children:[(0,x.jsxs)(nl,{value:"expedition","data-tut":"tab-expedition",className:"text-[11px] gap-1 relative px-0.5 flex-col h-7 data-[state=active]:bg-amber-500/15 data-[state=active]:shadow-[0_0_12px_rgba(251,191,36,0.3)] transition-all",children:[(0,x.jsx)(tc,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"探险"}),D>=1&&!O&&(0,x.jsx)("span",{className:"absolute -top-0.5 -right-0.5 h-2 w-2 rounded-full bg-amber-400 animate-pulse ring-1 ring-black/50"}),O&&(0,x.jsx)("span",{className:"absolute -top-0.5 -right-0.5 h-2 w-2 rounded-full bg-rose-400 animate-pulse ring-1 ring-black/50"})]}),(0,x.jsxs)(nl,{value:"tech","data-tut":"tab-tech",className:"text-[11px] gap-1 px-0.5 flex-col h-7 data-[state=active]:bg-emerald-500/15 data-[state=active]:shadow-[0_0_12px_rgba(52,211,153,0.3)] transition-all",children:[(0,x.jsx)(rp,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"技术"})]}),(0,x.jsxs)(nl,{value:"constellation",className:"text-[11px] gap-1 relative px-0.5 flex-col h-7 data-[state=active]:bg-fuchsia-500/15 data-[state=active]:shadow-[0_0_12px_rgba(232,121,249,0.3)] transition-all",children:[(0,x.jsx)(sI,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"星图"}),q&&(0,x.jsx)("span",{className:"absolute -top-0.5 -right-0.5 h-2 w-2 rounded-full bg-fuchsia-400 animate-pulse ring-1 ring-black/50"})]}),(0,x.jsxs)(nl,{value:"codex",className:"text-[11px] gap-1 px-0.5 flex-col h-7 data-[state=active]:bg-cyan-500/15 data-[state=active]:shadow-[0_0_12px_rgba(34,211,238,0.3)] transition-all",children:[(0,x.jsx)(td,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"图谱"})]}),(0,x.jsxs)(nl,{value:"ach",className:"text-[11px] gap-1 relative px-0.5 flex-col h-7 data-[state=active]:bg-amber-500/15 data-[state=active]:shadow-[0_0_12px_rgba(251,191,36,0.3)] transition-all",children:[(0,x.jsx)(rc,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"成就"}),K<A.length&&(0,x.jsx)("span",{className:"absolute -top-0.5 -right-0.5 h-2 w-2 rounded-full bg-amber-400 animate-pulse ring-1 ring-black/50"})]}),(0,x.jsxs)(nl,{value:"beacon",className:"text-[11px] gap-1 relative px-0.5 flex-col h-7 data-[state=active]:bg-emerald-500/15 data-[state=active]:shadow-[0_0_12px_rgba(52,211,153,0.3)] transition-all",children:[(0,x.jsx)(rj,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"信标"}),F&&(0,x.jsx)("span",{className:"absolute -top-0.5 -right-0.5 h-2 w-2 rounded-full bg-emerald-400 animate-pulse ring-1 ring-black/50"})]}),(0,x.jsxs)(nl,{value:"stats",className:"text-[11px] gap-1 px-0.5 flex-col h-7 data-[state=active]:bg-slate-500/15 data-[state=active]:shadow-[0_0_12px_rgba(148,163,184,0.3)] transition-all",children:[(0,x.jsx)(nc,{className:"h-3.5 w-3.5"}),(0,x.jsx)("span",{className:"leading-none",children:"统计"})]})]}),(0,x.jsx)(no,{value:"expedition",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,x.jsx)(ri,{})}),(0,x.jsx)(no,{value:"tech",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,x.jsx)(tm,{})}),(0,x.jsx)(no,{value:"constellation",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,x.jsx)(rh,{})}),(0,x.jsx)(no,{value:"codex",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,x.jsx)(t4,{})}),(0,x.jsx)(no,{value:"ach",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,x.jsx)(rd,{})}),(0,x.jsx)(no,{value:"beacon",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,x.jsx)(r_,{})}),(0,x.jsx)(no,{value:"stats",className:"flex-1 mt-2 min-h-0",children:(0,x.jsx)(nu,{})})]})})]})]})}),(0,x.jsx)("footer",{className:"sticky bottom-0 z-20 mt-auto px-3 sm:px-5 pb-2 pt-1",children:(0,x.jsxs)("div",{className:`glass rounded-xl px-3 py-2 flex items-center gap-2 text-xs ${V?"border-amber-400/40 animate-pulse":""} ${P?"border-white/20":""}`,style:P?{boxShadow:`inset 0 0 16px ${z[P.type].glow}`}:void 0,children:[(0,x.jsx)("span",{className:V?"text-amber-400":P?"":"text-fuchsia-300",style:P?{color:z[P.type].color}:void 0,children:"▶"}),(0,x.jsx)("span",{className:`flex-1 truncate ${V?"text-amber-200":"text-muted-foreground"}`,children:U}),(0,x.jsx)("span",{className:"hidden sm:inline text-muted-foreground/60",children:"|"}),(0,x.jsxs)("span",{className:"hidden sm:inline text-muted-foreground/70",children:["产能 ",$(j),"/s"]}),(0,x.jsx)("a",{href:"https://git.atdunbg.xyz/Super_Z/echo-nexus",target:"_blank",rel:"noreferrer",className:"text-muted-foreground/60 hover:text-foreground transition ml-1","aria-label":"仓库",children:(0,x.jsx)(s2,{className:"h-3.5 w-3.5"})})]})}),(0,x.jsx)(sF,{open:o,onOpenChange:i}),(0,x.jsx)(rg,{open:f,onOpenChange:m}),(0,x.jsx)(rm,{open:u,onOpenChange:h}),(0,x.jsx)(s9,{open:c,onOpenChange:d}),(0,x.jsx)(ru,{}),(0,x.jsx)(r$,{}),(0,x.jsx)(rE,{}),(0,x.jsx)(rP,{})]})}function nu(){let e=ey(),t=Object.values(e.achievements).filter(Boolean).length,[a,s]=(0,p.useState)(null);(0,p.useEffect)(()=>{try{let e=eu();s(e.length>0?e[0].score:null)}catch{s(null)}},[]);let r=[{label:"累计解码晶体",value:`${e.totalDecoded} 颗`},{label:"飞升周目",value:`${e.ascensions}`},{label:"持有蓝图",value:`${e.blueprints.length} / 6`},{label:"已学技术",value:`${Object.values(e.tech).filter(e=>e>0).length} / ${_.length}`},{label:"已获碎片",value:`${Object.values(e.fragments).filter(Boolean).length} / ${E.length}`},{label:"已解锁成就",value:`${t} / ${A.length}`},{label:"星图天赋",value:`${e.constellation?.length??0} / ${L.length}`},{label:"接触进度",value:`${e.contact.toFixed(1)}%`},{label:"晶体产能",value:`${e.crystalsPerSec.toFixed(2)} /s`},{label:"仓库上限",value:`${$(e.crystalCap)}`},{label:"洞见倍率",value:`\xd7${e.insightMult.toFixed(2)}`},{label:"累计探险",value:`${e.totalExpeditions} 次`},{label:"BOSS 击破",value:`${e.bossKills??0} 次`},{label:"星潮亲历",value:`${(e.starTidesEncountered??[]).length} / 6`},{label:"编年史条目",value:`${(e.chronicle??[]).length} 纪元`},{label:"探险能量",value:`${Math.floor(e.energy)} / ${e.energyMax}`},{label:"信标最高分",value:null!==a?$(a):"—"}];return(0,x.jsx)("div",{className:"grid grid-cols-2 gap-1.5 text-xs",children:r.map(e=>(0,x.jsxs)("div",{className:"flex items-center justify-between rounded-md bg-black/25 border border-white/5 px-2 py-1.5",children:[(0,x.jsx)("span",{className:"text-muted-foreground",children:e.label}),(0,x.jsx)("span",{className:"font-mono text-foreground",children:e.value})]},e.label))})}e.s(["default",()=>nd],52683)}]); |