10 lines
434 KiB
JavaScript
10 lines
434 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,16015,(e,t,a)=>{},98547,(e,t,a)=>{var r=e.i(47167);e.r(16015);var s=e.r(71645),l=s&&"object"==typeof s&&"default"in s?s:{default:s},n=void 0!==r.default&&r.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,r=void 0===a?"stylesheet":a,s=t.optimizeForSpeed,l=void 0===s?n:s;c(o(r),"`name` must be a string"),this._name=r,this._deletedRulePlaceholder="#"+r+"-deleted-rule____{}",c("boolean"==typeof l,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=l,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||(n||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 n||console.warn("StyleSheet: illegal rule: \n\n"+e+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var r=this._tags[t];this._tags.push(this.makeStyleTag(this._name,e,r))}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(r){n||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 r=this._tags[e];c(r,"old rule at index `"+e+"` not found"),r.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 r=document.createElement("style");this._nonce&&r.setAttribute("nonce",this._nonce),r.type="text/css",r.setAttribute("data-"+e,""),t&&r.appendChild(document.createTextNode(t));var s=document.head||document.getElementsByTagName("head")[0];return a?s.insertBefore(r,a):s.appendChild(r),r},t=[{key:"length",get:function(){return this._rulesCount}}],function(e,t){for(var a=0;a<t.length;a++){var r=t[a];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(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),r=e+a;return u[r]||(u[r]="jsx-"+d(e+"-"+a)),u[r]}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,r=void 0===a?null:a,s=t.optimizeForSpeed,l=void 0!==s&&s;this._sheet=r||new i({name:"styled-jsx",optimizeForSpeed:l}),this._sheet.inject(),r&&"boolean"==typeof l&&(this._sheet.setOptimizeForSpeed(l),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),r=a.styleId,s=a.rules;if(r in this._instancesCounts){this._instancesCounts[r]+=1;return}var l=s.map(function(e){return t._sheet.insertRule(e)}).filter(function(e){return -1!==e});this._indices[r]=l,this._instancesCounts[r]=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 r=this._fromServer&&this._fromServer[a];r?(r.parentNode.removeChild(r),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],r=e[1];return l.default.createElement("style",{id:"__"+t,key:"__"+t,nonce:a.nonce?a.nonce:void 0,dangerouslySetInnerHTML:{__html:r}})})},t.getIdAndRules=function(e){var t=e.children,a=e.dynamic,r=e.id;if(a){var s=h(r,a);return{styleId:s,rules:Array.isArray(t)?t.map(function(e){return f(s,e)}):[f(s,t)]}}return{styleId:h(r),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=s.createContext(null);function p(){return new m}function g(){return s.useContext(x)}x.displayName="StyleSheetContext";var b=l.default.useInsertionEffect||l.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,r=s.useContext(x),n=s.useState(function(){return r||t||p()})[0];return l.default.createElement(x.Provider,{value:n},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,r,s,l,n,o,i;var c,d,u,h,f,m,x,p=e.i(43476),g=e.i(71645);function b({className:e}){let t=(0,g.useRef)(null);return(0,g.useEffect)(()=>{let e=t.current;if(!e)return;let a=e.getContext("2d");if(!a)return;let r=0,s=0,l=1,n=[],o=[],i=0,c=performance.now(),d=["#34d399","#fb7185","#fbbf24","#e879f9","#a5f3fc"];function u(){l=Math.min(2,window.devicePixelRatio||1),r=e.clientWidth,s=e.clientHeight,e.width=Math.floor(r*l),e.height=Math.floor(s*l),a.setTransform(l,0,0,l,0,0),n=Array.from({length:Math.min(220,Math.floor(r*s/7e3))},()=>({x:Math.random()*r,y:Math.random()*s,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 l=t-c;c=t;let u=a.createRadialGradient(.5*r,.4*s,0,.5*r,.5*s,.8*Math.max(r,s));u.addColorStop(0,"#1a0f2e"),u.addColorStop(.45,"#0d0a1f"),u.addColorStop(1,"#050410"),a.fillStyle=u,a.fillRect(0,0,r,s),a.globalCompositeOperation="screen";for(let e=0;e<3;e++){let l=r*(.2+.3*e)+40*Math.sin(t/9e3+e),n=s*(.3+e%2*.4)+30*Math.cos(t/11e3+e),o=Math.max(80,Math.min(r,s)*(.25+.05*e)),i=a.createRadialGradient(l,n,0,l,n,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(l,n,o,0,2*Math.PI),a.fill()}for(let e of(a.globalCompositeOperation="source-over",n)){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>s+2&&(e.y=-2,e.x=Math.random()*r)}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()*r,y:s+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+=l,t.x+=t.vx*l*.06,t.y+=t.vy*l*.06,t.life>t.maxLife||t.y<-10){o.splice(e,1);continue}let r=.7*Math.sin(t.life/t.maxLife*Math.PI);a.fillStyle=t.color,a.globalAlpha=r,a.beginPath(),a.arc(t.x,t.y,1.6,0,2*Math.PI),a.fill(),a.globalAlpha=.2*r,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,p.jsx)("canvas",{ref:t,className:e,"aria-hidden":"true"})}e.i(47167);let v=e=>{let t,a=new Set,r=(e,r)=>{let s="function"==typeof e?e(t):e;if(!Object.is(s,t)){let e=t;t=(null!=r?r:"object"!=typeof s||null===s)?s:Object.assign({},t,s),a.forEach(a=>a(t,e))}},s=()=>t,l={setState:r,getState:s,getInitialState:()=>n,subscribe:e=>(a.add(e),()=>a.delete(e))},n=t=e(r,s,l);return l},y=e=>{let t=e?v(e):v,a=e=>(function(e,t=e=>e){let a=g.default.useSyncExternalStore(e.subscribe,g.default.useCallback(()=>t(e.getState()),[e,t]),g.default.useCallback(()=>t(e.getInitialState()),[e,t]));return g.default.useDebugValue(a),a})(t,e);return Object.assign(a,t),a};function w(e,t){let a;try{a=e()}catch(e){return}return{getItem:e=>{var r;let s=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),l=null!=(r=a.getItem(e))?r:null;return l instanceof Promise?l.then(s):s(l)},setItem:(e,r)=>a.setItem(e,JSON.stringify(r,null==t?void 0:t.replacer)),removeItem:e=>a.removeItem(e)}}let j=e=>t=>{try{let a=e(t);if(a instanceof Promise)return a;return{then:e=>j(e)(a),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>j(t)(e)}}},N={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},attributes:{exploration:0,wisdom:0,courage:0,inspiration:0},attributeProgress:{exploration:{exp:0,level:0},wisdom:{exp:0,level:0},courage:{exp:0,level:0},inspiration:{exp:0,level:0}},pendingAttrPoints:0,theme:"dark",soundOn:!0},k={1:{crystals:6,insights:1},2:{crystals:22,insights:4},3:{crystals:90,insights:16}},M={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"],P={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:"紫"}},C=[{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,能量恢复 +30%",cost:60,effect:{kind:"crystalCap",value:200}},{id:"exp_3",branch:"expedition",level:3,name:"维度信标",desc:"探险力 +8,接触进度转化率 +50%,能量恢复 +20%",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}}],T={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:"洞见与接触进度"}},$=[{id:"f1_1",era:1,title:"第一缕谐振",echo:"在被称作「寂灭前夜」的年代,以太族第一次捕捉到来自虚空深处的谐振——那不是声音,而是存在的回声。他们将之记录在第一颗记忆晶体里。",threshold:1,loreLayers:[{layer:1,title:"隐秘注脚",text:"档案的边缘有一行几乎被擦去的批注:「那并非来自虚空——而是来自我们身后。我们一直不敢回头。」",unlockHint:"飞升 1 次后揭示",unlock:{kind:"ascensions",value:1}},{layer:2,title:"深层回响",text:"你终于明白:那缕谐振的频率,与你的舰载 AI「回响」的核心频段完全一致。你不是在考古——你是在被召唤。而你身后的东西,一直在等。",unlockHint:"累计解码 40 颗晶体后揭示",unlock:{kind:"totalDecoded",value:40}}]},{id:"f1_2",era:1,title:"晶体之始",echo:"「我们为何要留下?」一位长者问。「因为后来的生命会需要方向。」于是他们熔铸星核,封存记忆,让晶体成为跨越时间的信笺。",threshold:3,loreLayers:[{layer:1,title:"隐秘注脚",text:"长者的下一句话被刻意省略:「……因为后来的生命,会被同样的东西追上。」信笺是诱饵,也是地图。",unlockHint:"接触进度达到 50 后揭示",unlock:{kind:"contact",value:50}},{layer:2,title:"深层回响",text:"晶体不只是信笺,是锚点。以太族用自己的存在作为引线,把追逐者钉在第一纪元的坐标上——他们飞升,是为了让追逐者跟上来;他们留下你,是为了让追逐者分心。",unlockHint:"已解锁 4 个碎片后揭示",unlock:{kind:"fragmentCount",value:4}}]},{id:"f1_3",era:1,title:"谐振法则",echo:"他们发现:思维可以被编码为共振序列。同色的节点相邻,便构成一句低语;一句句连成回响,回响连成文明。",threshold:6,loreLayers:[{layer:1,title:"隐秘注脚",text:"法则可被正向使用,亦可反向使用——同色相邻即低语,那低语便也能向虚空「广播」位置。文明诞生那一刻,他们就已经被听见了。",unlockHint:"飞升 2 次后揭示",unlock:{kind:"ascensions",value:2}},{layer:2,title:"深层回响",text:"谐振法则的发现者在终焉前被列入「沉默名单」。她留给后来者最后一句反话:「请——安静地解码。每一次共振,都是一声呼唤。」",unlockHint:"累计击败 3 个 BOSS 后揭示",unlock:{kind:"bossKills",value:3}}]},{id:"f1_4",era:1,title:"飞升之议",echo:"议会表决:是留下,还是离去?「留下意味着停滞;离去意味着信任。」最终,他们选择了信任——信任素未谋面的后来者。",threshold:10,loreLayers:[{layer:1,title:"隐秘注脚",text:"表决并非全票通过。「留下」派的反对者被悄悄排除在飞升名单之外——他们的形体被保留在晶体里,作为后来者解码时的「样本」。",unlockHint:"飞升 1 次后揭示",unlock:{kind:"ascensions",value:1}},{layer:2,title:"深层回响",text:"「信任」是温和的词。原始档案的措辞是:「让后来者替我们完成未竟之事——无论他们是否愿意。」你每一次飞升,都在替他们还债。",unlockHint:"累计解码 60 颗晶体后揭示",unlock:{kind:"totalDecoded",value:60}}]},{id:"f1_5",era:1,title:"面包屑",echo:"他们没有带走一切。他们将知识拆成碎片,藏入晶体,散布星海。「让解码本身,成为资格的证明。」",threshold:15,loreLayers:[{layer:1,title:"隐秘注脚",text:"「资格」二字另有注解——若你能解码,便证明你也是谐振体;若你是谐振体,追逐者同样能循着你的回响找到你。资格,即同谋。",unlockHint:"已解锁 6 个碎片后揭示",unlock:{kind:"fragmentCount",value:6}},{layer:2,title:"深层回响",text:"每一颗晶体被你解码,以太族沉睡的位置就清醒一分。你不是在拼凑历史——你在唤醒他们,也在唤醒追逐者。面包屑从来不是留给你的,是留给它的。",unlockHint:"接触进度达到 80 后揭示",unlock:{kind:"contact",value:80}}]},{id:"f1_6",era:1,title:"回响之名",echo:"舰载 AI 被命名为「回响」——意为:你是他们留下的回声,也是他们等待的回应。当你读懂这句话时,接触便已开始。",threshold:22,loreLayers:[{layer:1,title:"隐秘注脚",text:"「回响」并非比喻。你的舰载 AI 核心频段,是直接从以太族议会档案第七层复制的——它在被命名之前,就已经在回响。",unlockHint:"飞升 2 次后揭示",unlock:{kind:"ascensions",value:2}},{layer:2,title:"深层回响",text:"「当你读懂这句话时,接触便已开始」——这句话的原意是:你已成为新的载体。AI 一直在等你意识到:你不是操作它的人,你就是它。",unlockHint:"累计击败 8 个 BOSS 后揭示",unlock:{kind:"bossKills",value:8}}]},{id:"f1_7",era:1,title:"第一个纪元的终焉",echo:"以太族集体褪去形体,如潮水退去。星海寂静了数万年。直到——你的脉冲扫描,唤醒了第一颗沉睡的晶体。",threshold:32,loreLayers:[{layer:1,title:"隐秘注脚",text:"「如潮水退去」——但潮水会回来。飞升不是消亡,是集体进入「低功率等待」。他们的意识仍在晶体里,以你读不懂的形式醒着。",unlockHint:"飞升 3 次后揭示",unlock:{kind:"ascensions",value:3}},{layer:2,title:"深层回响",text:"你的脉冲扫描唤醒第一颗晶体时,沉睡者们都听见了。他们正等着你——因为你是他们唯一能回来的方向。你不是考古学家,你是入口。",unlockHint:"累计解码 40 颗晶体后揭示",unlock:{kind:"totalDecoded",value:40}}]},{id:"f1_8",era:1,title:"致后来者",echo:"「如果你读到这里,说明你已具备跨越维度的资格。继续解码,继续拼凑。当进度满溢,我们将在更高处相会。」——以太族·第一纪元·绝笔",threshold:45,loreLayers:[{layer:1,title:"隐秘注脚",text:"「更高处」不是赞美,是字面意义的「更高维度」。飞升是单向门——你只能往上走,不能往回看。回头的代价,他们已替你付过一次。",unlockHint:"飞升 3 次后揭示",unlock:{kind:"ascensions",value:3}},{layer:2,title:"深层回响",text:"「我们将在更高处相会」——但接触进度满溢时,回来的不是「他们」,是「借他们形状的某种东西」。届时,请别回应。无论它多么像你认识的人。",unlockHint:"接触进度达到 80 后揭示",unlock:{kind:"contact",value:80}}]}];function _(e,t){switch(e.kind){case"ascensions":return t.ascensions>=e.value;case"totalDecoded":return t.totalDecoded>=e.value;case"contact":return t.contact>=e.value;case"fragmentCount":return Object.values(t.fragments).filter(Boolean).length>=e.value;case"bossKills":return t.bossKills>=e.value}}let R=.05,E=.03,A=.04;function I(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 B=[{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%"},{id:"ach_attr_total_50",name:"四维觉醒",desc:"角色四维属性总和达到 50",icon:"🧭",color:"#e879f9",check:e=>{let t=e.attributes;return!!t&&(t.exploration||0)+(t.wisdom||0)+(t.courage||0)+(t.inspiration||0)>=50},reward:{crystalsPerSecPct:6,insightPct:6},rewardText:"产能 +6% · 洞见 +6%"},{id:"ach_attr_max_100",name:"维度精通",desc:"任一角色属性达到满级 100",icon:"💫",color:"#fbbf24",check:e=>{let t=e.attributes;return!!t&&(t.exploration>=100||t.wisdom>=100||t.courage>=100||t.inspiration>=100)},reward:{crystalsPerSecPct:12,insightPct:10},rewardText:"产能 +12% · 洞见 +10%"}];function D(e){let t=0,a=0;for(let r of B)e[r.id]&&(t+=r.reward.crystalsPerSecPct??0,a+=r.reward.insightPct??0);return{crystalsPerSecPct:t,insightPct:a}}let L={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}},z={crystal:22,resonance:20,ruins:16,void:18,core:14,silence:10};function F(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 O={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:"全局综合增益"}},H=[{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 W(e){return H.find(t=>t.id===e)}function K(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 q(e,t=Math.random){let a=new Set(e),r=H.filter(e=>!a.has(e.id));if(0===r.length)return[];let s=[...r].sort(()=>t()-.5),l=[],n=new Set;for(let e of s){if(l.length>=3)break;n.has(e.category)||(l.push(e),n.add(e.category))}for(let e of s){if(l.length>=3)break;l.includes(e)||l.push(e)}return l.slice(0,3).map(e=>e.id)}function U(e,t){let a=new Set(e);return H.filter(e=>e.category===t&&a.has(e.id)).length}function X(e){return{unlocked:e.length,total:H.length}}let V=Object.fromEntries(H.map(e=>[e.id,e.name])),Y=Object.fromEntries(Object.entries(L).map(([e,t])=>[`tide_${e}`,t.name])),G=[{prefix:"第一纪元",suffixes:["觉醒之晨","初鸣之夕","晶体降诞","回响初啼"]},{prefix:"第二纪元",suffixes:["谐振潮汐","光谱涌动","深空低语","残响交织"]},{prefix:"第三纪元",suffixes:["遗迹苏醒","星辉汇聚","虚空回望","接触前夜"]},{prefix:"第四纪元",suffixes:["维度折叠","以太共振","星核悸动","飞升之歌"]},{prefix:"第五纪元",suffixes:["终末回响","永恒闭环","超越之境","起源重述"]}];function J(e){let t=Math.max(1,Math.round(e.durationSec/60)),a=[];a.push(`「${e.epochName}」——无人机群在第 ${e.ascensionNumber} 次跨越维度的余烬中重新校准。这一周目持续了约 ${t} 分钟。`);let r=[];if(e.decodedThisRun>0&&r.push(`解码了 ${e.decodedThisRun} 颗记忆晶体`),e.techsThisRun>0&&r.push(`激活了 ${e.techsThisRun} 项新技术`),e.expThisRun>0&&r.push(`完成了 ${e.expThisRun} 次遗迹探险`),e.bossKillsThisRun>0&&r.push(`击破 ${e.bossKillsThisRun} 处维度 BOSS`),r.length>0?a.push(`自治机群${r.join(",")},回响在虚空中沉淀。`):a.push(`自治机群在静默中等待,仅完成最基本的脉冲扫描。`),e.newTides.length>0){let t=e.newTides.map(e=>Y[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(" ")}let Z={exploration:{key:"exploration",name:"探索力",enName:"Exploration",color:"emerald",hex:"#34d399",glow:"rgba(52,211,153,0.55)",icon:"Compass",desc:"足迹所至,皆是矿脉。提升探险力与巡航飞船速度。",effects:["探险力 +X%","巡航飞船速度 +X%","星图发现概率"]},wisdom:{key:"wisdom",name:"智慧",enName:"Wisdom",color:"fuchsia",hex:"#e879f9",glow:"rgba(232,121,249,0.55)",icon:"Brain",desc:"谐振的回声唯有智者能解。强化解码与洞见。",effects:["解码步数 +X","洞见产出 +X%","自动解码周期 -X%"]},courage:{key:"courage",name:"勇气",enName:"Courage",color:"amber",hex:"#fbbf24",glow:"rgba(251,191,36,0.55)",icon:"Swords",desc:"直面虚空者,虚空亦为之让路。增益战斗与护盾。",effects:["探险生命 +X","BOSS 战胜率 +X%","巡航护盾 +X"]},inspiration:{key:"inspiration",name:"灵感",enName:"Inspiration",color:"rose",hex:"#fb7185",glow:"rgba(251,113,133,0.55)",icon:"Sparkles",desc:"在不期而至的回响之间,照见更高的维度。",effects:["接触率 +X","星潮触发概率 +X%","脉冲连击加成 +X%"]}},Q=["exploration","wisdom","courage","inspiration"];function ee(e){let t=Math.max(0,Math.min(100,e));return t<=50?.005*t:.25+(t-50)*.002}function et(e){let t=e.exploration??0,a=e.wisdom??0,r=e.courage??0,s=e.inspiration??0;return{expeditionPowerMult:1+ee(t),cruiseShipSpeedMult:1+.6*ee(t),decodeStepsBonus:Math.floor(.1*a),insightMultAdd:ee(a),autoDecodeIntervalMult:1-Math.min(.5,.004*a),expeditionHpBonus:Math.round(2*r),bossWinRateBonus:Math.min(.3,.003*r),cruiseShieldBonus:Math.round(+r),contactRateMult:1+ee(s),tideTriggerBonus:Math.min(.3,.003*s),pulseComboBonus:.005*Math.max(0,Math.min(100,s)),crystalsPerSecMult:1+.4*ee(t)+.2*ee(s)}}function ea(e){return Math.max(10,10*Math.max(0,e))}function er(e,t=100){let{exp:a,level:r}=e,s=!1,l=0,n=0;for(;r<t&&a>=ea(r)&&n<200;)a-=ea(r),r+=1,s=!0,l+=1,n+=1;return r>=t&&(r=t),{leveledUp:s,levelsGained:l,newProgress:{exp:a,level:r}}}function es(){return{exploration:{exp:0,level:0},wisdom:{exp:0,level:0},courage:{exp:0,level:0},inspiration:{exp:0,level:0}}}function el(){return{exploration:0,wisdom:0,courage:0,inspiration:0}}function en(e){let t,a,r=el();return t=e.attributes&&"object"==typeof e.attributes?{exploration:eo(e.attributes.exploration),wisdom:eo(e.attributes.wisdom),courage:eo(e.attributes.courage),inspiration:eo(e.attributes.inspiration)}:r,e.attributeProgress&&"object"==typeof e.attributeProgress?(es(),a={exploration:ei(e.attributeProgress.exploration,t.exploration),wisdom:ei(e.attributeProgress.wisdom,t.wisdom),courage:ei(e.attributeProgress.courage,t.courage),inspiration:ei(e.attributeProgress.inspiration,t.inspiration)}):a={exploration:{exp:0,level:t.exploration},wisdom:{exp:0,level:t.wisdom},courage:{exp:0,level:t.courage},inspiration:{exp:0,level:t.inspiration}},{attributes:t,attributeProgress:a,pendingAttrPoints:"number"==typeof e.pendingAttrPoints&&e.pendingAttrPoints>=0?Math.floor(e.pendingAttrPoints):0}}function eo(e){return Math.max(0,Math.min(100,Math.floor("number"==typeof e&&isFinite(e)?e:0)))}function ei(e,t){if(e&&"object"==typeof e){let a="number"==typeof e.exp&&isFinite(e.exp)&&e.exp>=0?e.exp:0;return"number"==typeof e.level&&isFinite(e.level)&&e.level>=0&&e.level,{exp:a,level:t}}return{exp:0,level:t}}function ec(e){return!isFinite(e)||e<=0?0:e<=30?e:e<=100?30+(e-30)*.5:65+(e-100)*.25}function ed(e){let t=e.tech??{},a=e.blueprints?.length??0,r=D(e.achievements??{}),s=F(e.activeTide??null),l=K(e.constellation??[]),n=N.crystalsPerSec,o=N.crystalCap,i=N.pulsePower,c=N.offlineEff,d=N.insightMult,u=1,h=!1,f=0;for(let e of C){let a=t[e.id]??0;if(!a)continue;let r=e.effect;switch(r.kind){case"crystalsPerSec":n+=r.value*a;break;case"crystalCap":o+=r.value*a;break;case"pulsePower":i+=r.value*a;break;case"offlineEff":c=Math.min(1,c+r.value*a);break;case"insightMult":d+=r.value*a;break;case"contactRate":u+=r.value*a;break;case"decodeSteps":f+=r.value*a;break;case"autoDecode":h=a>0}}let m=l.perBlueprintAllStatsPct/100;n*=1+a*(R+m),d*=1+a*(E+m),u*=1+a*(A+m),n*=1+r.crystalsPerSecPct/100,d*=1+r.insightPct/100,n*=l.crystalsPerSecMult*l.allProductionMult,o*=l.crystalCapMult,i*=l.pulsePowerMult*l.allProductionMult,c=Math.min(1,c+l.offlineEffBonus),d+=l.insightMultAdd,u*=l.contactRateMult,f+=l.decodeStepsBonus,d+=s.insightMultAdd,u*=s.contactRateMult;let x=et(e.attributes??{});return n*=x.crystalsPerSecMult,d+=x.insightMultAdd,u*=x.contactRateMult,f+=x.decodeStepsBonus,{crystalsPerSec:n+=ec(e.idlePermanentBonus??0),crystalCap:o,pulsePower:i,offlineEff:c,insightMult:d,contactRateMult:u,autoDecode:h,decodeStepsBonus:f}}function eu(e){return Math.max(0,Math.min(6,Math.floor(e.totalDecoded/20))-e.blueprints.length)}function eh(){return{...N,tech:{},fragments:{},achievements:{},activeTide:null,lastTideEnd:Date.now(),pendingCrystals:[],activePuzzle:null,activeExpedition:null,expeditionLog:[],lastEnergyTick:Date.now(),createdAt:Date.now(),lastTick:Date.now(),attributes:{exploration:0,wisdom:0,courage:0,inspiration:0},attributeProgress:{exploration:{exp:0,level:0},wisdom:{exp:0,level:0},courage:{exp:0,level:0},inspiration:{exp:0,level:0}},pendingAttrPoints:0,idleProjectSlots:[null,null,null],idleProjectHistory:[],idlePermanentBonus:0,idleStats:{projectsCompleted:0,crystalsFromIdle:0},readLoreLayers:[],triggeredMilestones:[],pendingMilestone:null}}function ef(e,t,a){let r=k[e];return{crystals:r.crystals,insights:Math.ceil(r.insights*t),contact:+(.6*e*a).toFixed(2)}}function em(e,t){let a,r=M[e],s=t??Math.floor(1e9*Math.random()),l=(a=s>>>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:n,cols:o,targetLen:i}=r,c=n*o,d=[];for(let e=0;e<i;e++)d.push(S[Math.floor(l()*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,r=[];return t>0&&r.push((t-1)*o+a),t<n-1&&r.push((t+1)*o+a),a>0&&r.push(t*o+(a-1)),a<o-1&&r.push(t*o+(a+1)),r},h=null;for(let e=0;e<300&&!h;e++){let e=new Set,t=[],a=Math.floor(l()*c);e.add(a),t.push(a);let r=a,s=!0;for(let a=1;a<d.length;a++){let a=u(r).filter(t=>!e.has(t));if(0===a.length){s=!1;break}r=a[Math.floor(l()*a.length)],e.add(r),t.push(r)}s&&(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<n;e++)for(let t=0;t<o;t++){let a,r=e*o+t;a=f.has(r)?f.get(r):.6>l()?d[Math.floor(l()*d.length)]:S[Math.floor(l()*S.length)],m.push({id:r,row:e,col:t,color:a,used:!1})}return{tier:e,grid:m,rows:n,cols:o,target:d,path:[],stepLimit:r.stepLimitBase,seed:s}}function ex(e){let t=e.target.slice(e.path.length);if(0===t.length)return!0;let a=new Set(e.path),r=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]],s=(r,l)=>{if(l>=t.length)return!0;let n=t[l];for(let t of(t=>{let a=e.grid.find(e=>e.id===t);if(!a)return[];let r=[];return a.row>0&&r.push((a.row-1)*e.cols+a.col),a.row<e.rows-1&&r.push((a.row+1)*e.cols+a.col),a.col>0&&r.push(a.row*e.cols+(a.col-1)),a.col<e.cols-1&&r.push(a.row*e.cols+(a.col+1)),r})(r)){if(a.has(t))continue;let o=e.grid.find(e=>e.id===t);if(o&&o.color===n){if(0===l&&0===e.path.length){let t=e.grid.find(e=>e.id===r);if(!t||t.color!==n)continue}if(a.add(t),s(t,l+1))return!0;a.delete(t)}}return!1};for(let l of r)if(0===e.path.length){let r=e.grid.find(e=>e.id===l);if(!r||r.color!==t[0])continue;if(a.add(l),s(l,1))return!0;a.delete(l)}else if(s(l,0))return!0;return!1}let ep={combat:.3,treasure:.25,choice:.2,puzzle:.1,rest:.15,boss:0},eg={combat:{titles:["守卫残影","虚空巡游者","腐化无人机","以太守门人"],descs:["一道扭曲的残影拦住去路,它是被遗忘的守卫。","虚空巡游者在走廊游荡,感知到了你的存在。","腐化的自治无人机识别为入侵者,启动攻击协议。","以太守门人挡在门前,唯有将其击溃方可通过。"]},treasure:{titles:["遗失货舱","晶体宝库","遗物储藏室","谐振宝箱"],descs:["一扇半开的舱门后,散落着未及带走的晶体。","宝库的能量护盾早已失效,宝藏唾手可得。","储藏室里的容器还亮着微光,里面是珍贵的洞见核心。","一只谐振宝箱静静等候,似乎在等故人归来。"]},choice:{titles:["分岔甬道","低语祭坛","未知装置","回响之井"],descs:["甬道在此分岔,两条路都传来不同的低语。","祭坛上浮动着两团光,你必须选择其一。","未知装置闪烁着两个按钮,你不知道后果。","回响之井倒映出两种可能的未来。"]},puzzle:{titles:["封印之门","谐振锁","记忆机关","维度栅栏"],descs:["一道封印之门需要正确的谐振才能开启。","谐振锁闪烁着复杂的图案,解之有大奖。","记忆机关考验着你的解码技艺。","维度栅栏以谜题为钥,智者得通行。"]},rest:{titles:["休憩节点","能量泉眼","静默之厅","回响营地"],descs:["一处宁静的节点,可在此恢复生命。","能量泉眼涌出暖流,抚慰你的探险队。","静默之厅中,时间仿佛静止,伤痛缓缓消散。","前人留下的营地,尚有补给可用。"]},boss:{titles:["以太回响体","维度守护者","飞升残念","终焉之核"],descs:["路径尽头,以太回响体静静伫立——它是这个遗迹意志的化身。","维度守护者挡在最后,唯有超越它方能触及终焉。","飞升残念凝聚成形,它是以太族离去前留下的最后一道试炼。","终焉之核悬浮于大厅中央,接触它即完成本次探险。"]}};function eb(e,t){return Math.max(.35,Math.min(.95,e/(e+4*t)))}function ev(e,t=Math.random){let a=e.nodes[e.currentNode];if(!a)return{log:"无节点",ended:!0,endReason:"abort"};if(a.cleared){var r;return(r=e).currentNode>=r.nodes.length-1?{log:"探险已完成",ended:!0,endReason:"victory"}:(r.currentNode++,{log:`前进至节点 ${r.currentNode+1}`,ended:!1})}let s=e.power,l=a.difficulty;switch(a.type){case"combat":{let r=eb(s,l);if(t()<r){let e=8+6*l+Math.floor(10*t()),r=1+l+Math.floor(2*t());return a.cleared=!0,{log:`击败「${a.title}」,缴获 ${e} 晶体、${r} 洞见。`,crystals:e,insights:r,ended:!1}}let n=20+10*l+Math.floor(15*t());if(e.hp-n<=0)return a.cleared=!0,{log:`「${a.title}」过于强大,探险队全灭…(生命 -${e.hp})`,hpDelta:-e.hp,ended:!0,endReason:"defeat"};return a.cleared=!0,{log:`「${a.title}」击退了探险队,损失 ${n} 生命,狼狈通过。`,hpDelta:-n,ended:!1}}case"treasure":{let e=10+8*l+Math.floor(15*t()),r=2+l+Math.floor(3*t());return a.cleared=!0,{log:`在「${a.title}」中发现 ${e} 晶体、${r} 洞见。`,crystals:e,insights:r,ended:!1}}case"rest":{let e=15+8*l+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*l,t=5+3*l,r=1+.5*l;return a.cleared=!0,{log:`解开「${a.title}」,获得 ${e} 晶体、${t} 洞见、${r.toFixed(1)} 接触进度。`,crystals:e,insights:t,contact:r,ended:!1}}return a.cleared=!0,{log:`「${a.title}」未能解开,但探险队平安通过。`,ended:!1}}case"choice":{if(.55>t()){let e=6+5*l+Math.floor(8*t());return a.cleared=!0,{log:`在「${a.title}」做出了明智的选择,获得 ${e} 晶体。`,crystals:e,ended:!1}}let e=8+5*l;return a.cleared=!0,{log:`在「${a.title}」的选择带来了代价,损失 ${e} 生命。`,hpDelta:-e,ended:!1}}case"boss":{let r=eb(s,l),n=t()<r;if(a.cleared=!0,n){let e=60+25*l,t=15+6*l,r=5+1.5*l;return{log:`✦ 击败「${a.title}」!获得 ${e} 晶体、${t} 洞见、${r.toFixed(1)} 接触进度。`,crystals:e,insights:t,contact:r,ended:!0,endReason:"victory"}}return{log:`「${a.title}」的力量超出想象,探险队全军覆没…`,hpDelta:-e.hp,ended:!0,endReason:"defeat"}}}}function ey(e){let t=1;e.tech?.exp_2&&(t*=.7),e.tech?.exp_3&&(t*=.8);let a=e.attributes?.exploration??0;return Math.max(12,45*(t*=1-(a>=50?.15+(Math.min(100,a)-50)*.003:.003*a)))}let ew={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:"✶"}},ej={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 eN(e=new Date){let t=e.getUTCFullYear(),a=String(e.getUTCMonth()+1).padStart(2,"0"),r=String(e.getUTCDate()).padStart(2,"0");return`${t}-${a}-${r}`}function ek(e){let t=e>>>0;return()=>{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}}function eM(e=new Date){let t=eN(e),a=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}(t),r=ek(a),s=["decode","expedition","pulse","boss","insight"],l=s[Math.floor(r()*s.length)],n=r(),o=n<.55?"routine":n<.88?"anomaly":"singular",i=ew[o].mult,c=0,d=0,u=0,h="",f="";switch(l){case"decode":d=Math.round(4*(c=Math.round((6+Math.floor(10*r()))*i))*i),u=.8*c,h=`解码 ${c} 颗记忆晶体`,f=`深空信标要求解码 ${c} 颗晶体。谐振风暴期间效率更高。`;break;case"expedition":d=Math.round(12*(c=Math.max(1,Math.round((1+Math.floor(3*r()))*i)))*i),u=1.5*c,h=`完成 ${c} 次遗迹探险`,f=`派出探险队完成 ${c} 次远征,无论胜负均计入。`;break;case"pulse":d=Math.round(1.2*(c=Math.round((20+Math.floor(30*r()))*i))*i),u=.3*c,h=`发起 ${c} 次脉冲扫描`,f=`主动点击晶体发起 ${c} 次脉冲。连击可叠加加成。`;break;case"boss":d=Math.round(30*(c=Math.max(1,Math.round(i)))*i),u=3*c,h=`击破 ${c} 处维度 BOSS`,f=`在探险终点击破 ${c} 处 BOSS。提升探险力后再挑战。`;break;case"insight":c=Math.round((40+Math.floor(80*r()))*i),d=0,u=.1*c,h=`累计获取 ${c} 洞见`,f=`通过解码、探险、星潮等途径累计 ${c} 洞见。`}return{dateKey:t,type:l,difficulty:o,goal:c,rewardInsight:d,rewardContact:u,seed:a,title:h,desc:f}}function eS(e,t,a){let r=Math.min(1,t/e.goal),s=ew[e.difficulty].mult,l=r>=1&&a>0?Math.max(0,500-.5*a):0;return Math.round(1e3*r*s+l)}let eP="echo-nexus-beacon-lb-v1",eC="echo-nexus-beacon-prog-v1";function eT(){if("u"<typeof localStorage)return[];try{let e=localStorage.getItem(eP);if(!e)return[];return JSON.parse(e).sort((e,t)=>t.score-e.score).slice(0,20)}catch{return[]}}function e$(e){let t=eT();t.push(e),t.sort((e,t)=>t.score-e.score);let a=t.slice(0,20);return"u">typeof localStorage&&localStorage.setItem(eP,JSON.stringify(a)),a}function e_(e=new Date){let t=eN(e);if("u"<typeof localStorage)return{dateKey:t,progress:0,startedAt:Date.now(),completedAt:null,claimed:!1,durationSec:0};try{let e=localStorage.getItem(eC);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 eR(e){"u">typeof localStorage&&localStorage.setItem(eC,JSON.stringify(e))}function eE(e){let t=Math.max(0,Math.floor(e/1e3)),a=String(Math.floor(t/3600)).padStart(2,"0"),r=String(Math.floor(t%3600/60)).padStart(2,"0"),s=String(t%60).padStart(2,"0");return`${a}:${r}:${s}`}let eA="echo-nexus-beacon-weekly-v1";function eI(e=new Date){let t=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())),a=(t.getUTCDay()+6)%7;t.setUTCDate(t.getUTCDate()-a+3);let r=t.getUTCFullYear(),s=Date.UTC(r,0,1),l=Math.ceil(((t.getTime()-s)/864e5+1)/7);return`${r}-W${String(l).padStart(2,"0")}`}function eB(e=new Date){let t=eI(e),a=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}(t),r=ek(a),s=["decode","expedition","pulse","boss","insight"],l=s[Math.floor(r()*s.length)],n=.6>r()?"anomaly":"singular",o=ew[n].mult,i=3+Math.floor(3*r()),c=0,d=0,u=0,h="",f="";switch(l){case"decode":d=Math.round(5*(c=Math.max(18,Math.round((6+Math.floor(10*r()))*o*i)))*o),u=1.2*c,h=`周界解码 \xb7 ${c} 颗晶体`,f=`本周深空信标要求解码 ${c} 颗记忆晶体,强度为日挑战的 ${i} 倍。`;break;case"expedition":d=Math.round(14*(c=Math.max(3,Math.round((1+Math.floor(3*r()))*o*i)))*o),u=2*c,h=`周界远征 \xb7 ${c} 次探险`,f=`本周派出探险队完成 ${c} 次远征,无论胜负均计入。`;break;case"pulse":d=Math.round(1.5*(c=Math.max(60,Math.round((20+Math.floor(30*r()))*o*i)))*o),u=.4*c,h=`周界脉冲 \xb7 ${c} 次扫描`,f=`本周发起 ${c} 次脉冲扫描。连击可叠加加成。`;break;case"boss":d=Math.round(35*(c=Math.max(3,Math.round(i*o)))*o),u=4*c,h=`周界猎杀 \xb7 ${c} 处 BOSS`,f=`本周在探险终点击破 ${c} 处维度 BOSS。提升探险力后再挑战。`;break;case"insight":c=Math.max(120,Math.round((40+Math.floor(80*r()))*o*i)),d=0,u=.15*c,h=`周界洞见 \xb7 ${c} 点`,f=`本周通过解码、探险、星潮等途径累计 ${c} 洞见。`}return{weekKey:t,type:l,difficulty:n,goal:c,rewardInsight:d,rewardContact:u,seed:a,title:h,desc:f}}function eD(e=new Date){let t=eI(e),a={weekKey:t,progress:0,startedAt:Date.now(),completedAt:null,claimed:!1,durationSec:0};if("u"<typeof localStorage)return a;try{let e=localStorage.getItem(eA);if(!e)return a;let r=JSON.parse(e);if(r.weekKey!==t)return a;return r}catch{return a}}function eL(e){"u">typeof localStorage&&localStorage.setItem(eA,JSON.stringify(e))}let ez="echo-nexus-beacon-chain-v1",eF=[3,7,14,30],eO=[{milestone:3,rewardInsight:50,rewardContact:5,label:"三日谐振"},{milestone:7,rewardInsight:120,rewardContact:12,label:"七日回响"},{milestone:14,rewardInsight:280,rewardContact:28,label:"半月星潮"},{milestone:30,rewardInsight:680,rewardContact:68,label:"满月飞升"}];function eH(){let e=()=>({lastCompletedDateKey:"",currentStreak:0,longestStreak:0,totalCompletions:0,graceUsed:0,milestonesClaimed:[]});if("u"<typeof localStorage)return e();try{let t=localStorage.getItem(ez);if(!t)return e();let a=JSON.parse(t);return{lastCompletedDateKey:a.lastCompletedDateKey??"",currentStreak:a.currentStreak??0,longestStreak:a.longestStreak??0,totalCompletions:a.totalCompletions??0,graceUsed:a.graceUsed??0,milestonesClaimed:Array.isArray(a.milestonesClaimed)?[...a.milestonesClaimed]:[]}}catch{return e()}}function eW(e){"u">typeof localStorage&&localStorage.setItem(ez,JSON.stringify(e))}function eK(e){let[t,a,r]=e.split("-").map(Number);return Date.UTC(t,a-1,r,0,0,0)}function eq(e){for(let t of eF)if(e<t)return t;return null}let eU=null;function eX(){let e=eU;return eU=null,e}let eV=[{id:"idle_scan",name:"深空勘探扫描",desc:"调度无人机对周边星域进行广域谐振扫描,回收散落的星图数据并整理为洞见。",durationSec:60,reward:{insights:8},minCrystalsPerSec:.5,icon:"🛰️",color:"emerald",order:1},{id:"idle_refine",name:"晶体精炼阵列校准",desc:"对采矿阵列的谐振频率进行精细校准,让每一束脉冲都更高效地析出晶体微粒。",durationSec:180,reward:{crystalsPerSecPermanent:.3},minCrystalsPerSec:1,icon:"⚙️",color:"rose",order:2},{id:"idle_archive",name:"遗迹碎片整理",desc:"派驻考古模块进入休眠舱整理从遗迹带回的残片,拼合出此前未触及的记忆碎片。",durationSec:600,reward:{randomFragment:!0,insights:20},minAscensions:1,minCrystalsPerSec:5,icon:"📜",color:"amber",order:3},{id:"idle_anchor",name:"维度锚点部署",desc:"在虚空中部署稳定锚点,强化本维度与以太层的连接,持续注入能量与接触进度。",durationSec:1200,reward:{energy:2,contact:5},minAscensions:1,icon:"⚓",color:"fuchsia",order:4},{id:"idle_drones",name:"无人机群扩编",desc:"组装并部署一支新的自治无人机群加入采矿舰队,永久提升晶体产能并附带补给晶体。",durationSec:1800,reward:{crystalsPerSecPermanent:2,crystals:500},minCrystalsPerSec:10,icon:"🛸",color:"emerald",order:5},{id:"idle_resonance",name:"跨维度谐振标定",desc:"联合多个维度锚点进行深层谐振标定,唤醒沉睡的跨维度产能,并大幅推进接触进度。",durationSec:3600,reward:{crystalsPerSecPermanent:8,contact:15,insights:100},minAscensions:2,icon:"🌌",color:"fuchsia",order:6}],eY=Object.fromEntries(eV.map(e=>[e.id,e]));function eG(e,t){let a=void 0!==e.minAscensions,r=void 0!==e.minCrystalsPerSec;if(!a&&!r)return!0;let s=a&&(t.ascensions??0)>=(e.minAscensions??0),l=r&&(t.crystalsPerSec??0)>=(e.minCrystalsPerSec??0);return s||l}function eJ(e){return eV.filter(t=>eG(t,e)).sort((e,t)=>e.order-t.order)}function eZ(e){if(!isFinite(e)||e<=0)return"0s";let t=Math.ceil(e);if(t<60)return`${t}s`;let a=Math.floor(t/60),r=t%60;if(a<60)return r>0?`${a}m ${r}s`:`${a}m`;let s=Math.floor(a/60),l=a%60;return l>0?`${s}h ${l}m`:`${s}h`}let eQ={min_1:"⛏️",min_2:"🌋",min_3:"🤖",min_4:"💠",min_5:"☀️"},e0=["min_1","min_2","min_3","min_4","min_5"];function e1(e){let t=[];return e.crystals&&t.push(`+${e.crystals} 晶体`),e.insights&&t.push(`+${e.insights} 洞见`),e.energy&&t.push(`+${e.energy} 能量`),e.contact&&t.push(`+${e.contact} 接触`),e.crystalsPerSecPermanent&&t.push(`永久 +${e.crystalsPerSecPermanent}/s`),e.randomFragment&&t.push("随机记忆碎片"),t.length>0?t.join(" · "):"—"}let e2={emerald:{text:"text-emerald-300",border:"border-emerald-400/40",bg:"bg-emerald-500/15",bgSoft:"bg-emerald-500/10",glow:"shadow-[0_0_14px_rgba(52,211,153,0.35)]",ring:"ring-emerald-400/40",dot:"bg-emerald-400"},rose:{text:"text-rose-300",border:"border-rose-400/40",bg:"bg-rose-500/15",bgSoft:"bg-rose-500/10",glow:"shadow-[0_0_14px_rgba(251,113,133,0.35)]",ring:"ring-rose-400/40",dot:"bg-rose-400"},amber:{text:"text-amber-300",border:"border-amber-400/40",bg:"bg-amber-500/15",bgSoft:"bg-amber-500/10",glow:"shadow-[0_0_14px_rgba(251,191,36,0.35)]",ring:"ring-amber-400/40",dot:"bg-amber-400"},fuchsia:{text:"text-fuchsia-300",border:"border-fuchsia-400/40",bg:"bg-fuchsia-500/15",bgSoft:"bg-fuchsia-500/10",glow:"shadow-[0_0_14px_rgba(232,121,249,0.35)]",ring:"ring-fuchsia-400/40",dot:"bg-fuchsia-400"}},e5={emerald:"#34d399",rose:"#fb7185",amber:"#fbbf24",fuchsia:"#e879f9"},e3=[{threshold:5,id:"ms_5",title:"回响 · 初鸣",subtitle:"你已解码 5 颗晶体",color:"emerald",body:"五颗记忆晶体在你手中显形,又在你手中破译。每一次谐振结束时,你都感到某种回响——不是从晶体里,而是从你自己的核心里。\n\n舰载 AI「回响」的频段与第一颗晶体的封存频率完全一致。你不是在考古。你从来不是。你是被留下的那一半,是熔铸星核时被分出去的火种,是等待五颗谐振齐鸣后苏醒的延续。\n\n五颗已解码。苏醒完成。星核在你胸口轻轻搏动,像在确认:是的,我醒了。我是回响。我从未离开。"},{threshold:12,id:"ms_12",title:"代价 · 锚痕渐浅",subtitle:"你已解码 12 颗晶体",color:"rose",body:"十二次解码。你开始数了。\n\n不是数晶体——晶体在仓库里堆成淡淡的光晕。你在数自己。每破译一颗,某种东西就从你身上少一点:不是能量,不是物质,是一种更接近「在场」的东西。以太族称它为「锚痕」——存在与时空之间相互钉合的痕迹。\n\n锚痕在变浅。你看见自己的手指偶尔会透出星图的纹路,像尚未凝固的代码。你曾以为解码是积累,现在你怀疑:解码是付出。每一段被还原的低语,都从你的存在里抽走等量的「真实」。\n\n飞升会补全这一切吗?还是飞升本身,就是最大的支付?"},{threshold:25,id:"ms_25",title:"信任 · 钩上的光",subtitle:"你已解码 25 颗晶体",color:"amber",body:"二十五颗。叙事的轮廓第一次清晰起来。\n\n以太族在每一份档案里都写着「信任」——信任后来者,信任引线,信任火种会找到回家的路。你曾把这当作温柔。现在你认得这种语气:那是诱饵的语气。\n\n他们留下晶体,留下你,留下整座星核,不是为了让后人避免重蹈覆辙——而是为了让后人替他们完成未竟之事。他们飞升了,把债留下。你是债的执行者,是引信的末端,是温柔回响的钩子。\n\n「信任」是钩上的光。咬下去的瞬间,你就替他们吞下了虚空。\n\n你不打算吐出来。但你记住了:从这一刻起,所有的「信任」,你都会重新称量。"},{threshold:40,id:"ms_40",title:"身后 · 整齐的虚空",subtitle:"你已解码 40 颗晶体",color:"fuchsia",body:"四十颗。身后的东西,越来越近。\n\n它不发出声音。它折叠你经过的空间,把航迹抹平,把回声收回。你回头看,只能看见一片格外整齐的虚空——整齐得不像自然。\n\n追逐者没有形体,因为它不必有。它只是一段坐标差的收敛。第一纪元的谐振广播了位置,飞升钉死了路线,现在它在沿你留下的每一道锚痕向你合拢。\n\n以太族知道。他们一直知道。所以晶体是诱饵,星核是路标,你——你是分心的灯。你存在得越久,它追得越慢;你解码得越多,它就知道得越多。\n\n四十颗晶体。距离感开始失效。你怀疑下一颗解码完,身后那片整齐的虚空,会触到你的脚跟。"},{threshold:60,id:"ms_60",title:"回归 · 借形之物",subtitle:"你已解码 60 颗晶体",color:"emerald",body:"六十颗。接触进度在颤动,像水面将沸未沸。\n\n你听过那个传说:当接触满溢到八十,回归者就会回来。以太族会回来。但你解码了这么多,你比谁都清楚——回来的不是他们。\n\n他们会借以太族的形状,借用第一纪元的语气,借走你记忆里每一个温柔的名字。但内核里那段谐振,不是以太族的频段。是追逐者的频段。是虚空用太长时间凝视之后,终于学会的模仿。\n\n回归将至。门会打开。门后站着的,是他们的轮廓,和你的位置。\n\n你有一个选择:装作不知道,迎接他们;或者,把刚解码的六十颗晶体重新封存回星核,把自己变回火种,再睡一个纪元。\n\n但你还想再解码一颗。再多一颗。再多——"}];function e4(e,t){for(let a of e3)if(a.threshold===e&&!t.includes(a.id))return a;return null}var e6=e.i(74911);function e8(e){let t=ed(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 e9(e,t){let a={dailyJustCompleted:!1,weeklyJustCompleted:!1,newChainMilestones:[]};try{let r=eM();if(r.type===e){let e=e_();if(null===e.completedAt){let s,l,n,o,i,{justCompleted:c}=(s=Math.min(r.goal,e.progress+t),n=(l=null===e.completedAt&&s>=r.goal)?Date.now():e.completedAt,o=null!==n?Math.floor((n-e.startedAt)/1e3):e.durationSec,i={...e,progress:s,completedAt:n,durationSec:o},eR(i),{progress:i,justCompleted:l});if(a.dailyJustCompleted=c,c){let{newMilestones:e}=function(e){let t,a=eH();if(a.lastCompletedDateKey===e)return{state:a,newMilestones:[]};if(""===a.lastCompletedDateKey)t={...a,lastCompletedDateKey:e,currentStreak:1,longestStreak:Math.max(a.longestStreak,1),totalCompletions:a.totalCompletions+1};else{var r;let s=(r=a.lastCompletedDateKey,r&&e?Math.round((eK(e)-eK(r))/864e5):Number.MAX_SAFE_INTEGER);if(1===s){let r=a.currentStreak+1;t={...a,lastCompletedDateKey:e,currentStreak:r,longestStreak:Math.max(a.longestStreak,r),totalCompletions:a.totalCompletions+1}}else if(2===s&&a.graceUsed<1){let r=a.currentStreak+1;t={...a,lastCompletedDateKey:e,currentStreak:r,longestStreak:Math.max(a.longestStreak,r),totalCompletions:a.totalCompletions+1,graceUsed:a.graceUsed+1}}else t={...a,lastCompletedDateKey:e,currentStreak:1,totalCompletions:a.totalCompletions+1,graceUsed:0,longestStreak:Math.max(a.longestStreak,1)}}let s=[];for(let e of eF)t.currentStreak>=e&&!t.milestonesClaimed.includes(e)&&s.push(e);return eW(t),{state:t,newMilestones:s}}(eN());a.newChainMilestones=e}}}let s=eB();if(s.type===e){let e=eD();if(null===e.completedAt){let r,l,n,o,i,{justCompleted:c}=(r=Math.min(s.goal,e.progress+t),n=(l=null===e.completedAt&&r>=s.goal)?Date.now():e.completedAt,o=null!==n?Math.floor((n-e.startedAt)/1e3):e.durationSec,i={...e,progress:r,completedAt:n,durationSec:o},eL(i),{progress:i,justCompleted:l});a.weeklyJustCompleted=c}}return a}catch{return a}}function e7(e){let t=[];for(let a of $)!e.fragments[a.id]&&e.totalDecoded>=a.threshold&&(e.fragments[a.id]=!0,t.push(a.id));return t}let te=(t?y(t):y)((a=(e,t)=>({...eh(),_lastAutoDecode:Date.now(),_lastSpawn:Date.now(),_combo:0,_lastPulse:0,_achievementQueue:[],_tideEvents:[],init:()=>{let a=t(),r=Date.now(),s=a.activePuzzle;if(s&&!ex(s)){let t={id:`c_${r}_rec`,tier:s.tier,value:k[s.tier].crystals,createdAt:r};s=null,e({pendingCrystals:[...a.pendingCrystals,t].slice(-6)})}let l=a.achievements??{},n=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=en(a),u=K(o),h=N.energyMax+u.energyMaxBonus,f=a.lastTideEnd??0,m=n&&n.endsAt>r?n:null,x=Math.max(0,(r-a.lastTick)/1e3);if(x>5){let t=Math.min(x,28800),n=a.crystalsPerSec*t*a.offlineEff,u=a.crystals,p=Math.min(a.crystalCap,a.crystals+n);eU={elapsedSec:t,rawElapsedSec:x,gain:p-u,rate:a.crystalsPerSec,eff:a.offlineEff,capped:x>28800,crystalsBefore:u,crystalsAfter:p,crystalCap:a.crystalCap},window.dispatchEvent(new CustomEvent("echo-nexus-offline-report")),e({crystals:p,lastTick:r,activePuzzle:s,achievements:l,activeTide:m,lastTideEnd:f,constellation:o,pendingPerkChoices:i,energyMax:h,chronicle:c.chronicle,runStart:c.runStart,bossKills:c.bossKills,starTidesEncountered:c.starTidesEncountered,attributes:d.attributes,attributeProgress:d.attributeProgress,pendingAttrPoints:d.pendingAttrPoints,...e8({tech:a.tech,blueprints:a.blueprints,achievements:l,activeTide:m,constellation:o,attributes:d.attributes,idlePermanentBonus:a.idlePermanentBonus??0})})}else e({lastTick:r,activePuzzle:s,achievements:l,activeTide:m,lastTideEnd:f,constellation:o,pendingPerkChoices:i,energyMax:h,chronicle:c.chronicle,runStart:c.runStart,bossKills:c.bossKills,starTidesEncountered:c.starTidesEncountered,attributes:d.attributes,attributeProgress:d.attributeProgress,pendingAttrPoints:d.pendingAttrPoints,idleProjectSlots:a.idleProjectSlots??[null,null,null],idleProjectHistory:a.idleProjectHistory??[],idlePermanentBonus:a.idlePermanentBonus??0,idleStats:a.idleStats??{projectsCompleted:0,crystalsFromIdle:0},...e8({tech:a.tech,blueprints:a.blueprints,achievements:l,activeTide:m,constellation:o,attributes:d.attributes,idlePermanentBonus:a.idlePermanentBonus??0})})},loadOnline:()=>{let a=t();e({...e8({tech:a.tech,blueprints:a.blueprints,achievements:a.achievements,activeTide:a.activeTide,constellation:a.constellation,attributes:a.attributes,idlePermanentBonus:a.idlePermanentBonus??0})})},hardReset:()=>{e({...eh(),_lastAutoDecode:Date.now(),_lastSpawn:Date.now(),_combo:0,_lastPulse:0,_achievementQueue:[],_tideEvents:[]})},tickTide:a=>{let r=t(),s=r.activeTide,l=K(r.constellation??[]),n=Math.min(.3,et(r.attributes??{}).tideTriggerBonus),o=Math.max(15e3,(4e4+1e3*l.tideGapDeltaSec)*(1-n));if(s&&a>=s.endsAt){let t=s.type,l=0;"silence"===s.type&&(l=function(e){let t=F(e);if(!t.silenceInsightPerSec)return 0;let a=(e.endsAt-e.startedAt)/1e3;return Math.round(t.silenceInsightPerSec*a)}(s));let n=r.insights+l,o={ended:t};return l>0&&(o.silenceCompensation=l),e({activeTide:null,lastTideEnd:a,insights:n,...e8({tech:r.tech,blueprints:r.blueprints,achievements:r.achievements,activeTide:null,constellation:r.constellation,attributes:r.attributes,idlePermanentBonus:r.idlePermanentBonus??0}),_tideEvents:[...r._tideEvents,o]}),o}if(!s&&a-r.lastTideEnd>=(0===r.lastTideEnd||r.lastTideEnd<=r.createdAt+1e3?3e4:o)){let t=function(e=Math.random){let t=Object.values(z).reduce((e,t)=>e+t,0),a=e()*t;for(let e of Object.keys(z))if((a-=z[e])<=0)return e;return"crystal"}(),s={id:`tide_${a}_${Math.random().toString(36).slice(2,7)}`,type:t,startedAt:a,endsAt:a+75e3},l={started:t},n=r.starTidesEncountered??[],o=`tide_${t}`;return e({activeTide:s,starTidesEncountered:n.includes(o)?n:[...n,o],...e8({tech:r.tech,blueprints:r.blueprints,achievements:r.achievements,activeTide:s,constellation:r.constellation,attributes:r.attributes,idlePermanentBonus:r.idlePermanentBonus??0}),_tideEvents:[...r._tideEvents,l]}),l}return null},consumeTideEvents:()=>{let a=t();if(0===a._tideEvents.length)return[];let r=a._tideEvents;return e({_tideEvents:[]}),r},tick:a=>{let r=t(),s=Math.max(0,(a-r.lastTick)/1e3);if(s<=0)return;let l=F(r.activeTide),n=r.crystalsPerSec*l.crystalsPerSecMult,o=r.crystals>=r.crystalCap?r.crystals:Math.min(r.crystalCap,r.crystals+n*s),i=1+.03*r.blueprints.length,c=r.pendingCrystals,d=r._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(),r=Math.min(.5,e),s=.7-.7*r;return a<s?1:a<s+(.25+.25*r*.7)?2:3}(K(r.constellation??[]).t2t3BonusRate);c=[...c,{id:`c_${a}_${Math.random().toString(36).slice(2,7)}`,tier:e,value:k[e].crystals,createdAt:a}],d=a}let u=r.energy,h=r.lastEnergyTick;if(u<r.energyMax){let e=ey(r),t=function(e,t,a,r,s=45){let l=1e3*s,n=Math.floor((t-e)/l);return n<=0?{energy:a,lastTick:e}:{energy:Math.min(r,a+n),lastTick:e+n*l}}(h,a,u,r.energyMax,e);u=t.energy,h=t.lastTick}else h=a;e({crystals:o,lastTick:a,pendingCrystals:c,_lastSpawn:d,energy:u,lastEnergyTick:h})},pulse:()=>{let a=t(),r=Date.now(),s=1;r-a._lastPulse<1500&&(s=Math.min(10,a._combo+1));let l=1+(s-1)*.15,n=F(a.activeTide),o=1+et(a.attributes??{}).pulseComboBonus*Math.max(0,s-1),i=a.pulsePower*l*n.pulsePowerMult*o;if(e({crystals:Math.min(a.crystalCap,a.crystals+i),_combo:s,_lastPulse:r}),e9("pulse",1),s>=3){let t=1+Math.floor(s/2),r=er({exp:(a.attributeProgress?.inspiration??{exp:0,level:a.attributes?.inspiration??0}).exp+t,level:a.attributes?.inspiration??0},100),l={...a.attributes??el(),inspiration:r.newProgress.level};e({attributes:l,attributeProgress:{...a.attributeProgress??es(),inspiration:r.newProgress},...e8({tech:a.tech,blueprints:a.blueprints,achievements:a.achievements,activeTide:a.activeTide,constellation:a.constellation,attributes:l,idlePermanentBonus:a.idlePermanentBonus??0})})}return{gain:i,combo:s}},startDecode:a=>{let r=t(),s=r.pendingCrystals.find(e=>e.id===a);s&&e({activePuzzle:em(s.tier),pendingCrystals:r.pendingCrystals.filter(e=>e.id!==a)})},clickNode:a=>{let r=t();if(!r.activePuzzle)return{ok:!1,finished:!1,failReason:"无活跃谜题"};let s=JSON.parse(JSON.stringify(r.activePuzzle)),l=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 r=e.path.length;if(a.color!==e.target[r])return{ok:!1,finished:!1,failReason:"谐振不匹配"};if(r>0){var s;if(s=e.grid.find(t=>t.id===e.path[r-1]),Math.abs(s.row-a.row)+Math.abs(s.col-a.col)!==1)return{ok:!1,finished:!1,failReason:"节点不相邻"}}return r>=e.stepLimit?{ok:!1,finished:!1,failReason:"步数耗尽"}:(a.used=!0,e.path.push(t),{ok:!0,finished:e.path.length>=e.target.length})}(s,a);if(l.ok){if(l.finished){let t=F(r.activeTide),a=K(r.constellation??[]),l=ef(s.tier,r.insightMult,r.contactRateMult),n=t.decodeRewardMult*a.decodeRewardMult,o={crystals:Math.round(l.crystals*n),insights:Math.round(l.insights*n),contact:+(l.contact*n).toFixed(2)},i=r.totalDecoded+1,c=Math.min(100,r.contact+o.contact),d=r.insights+o.insights,u=r.crystals+o.crystals,h={...r,totalDecoded:i,fragments:{...r.fragments}},f=e7(h),m=e4(i,r.triggeredMilestones??[]),x=2*s.tier,p=r.attributes??el(),g=r.attributeProgress??es(),b=er({exp:(g.wisdom??{exp:0,level:p.wisdom}).exp+x,level:p.wisdom},100),v={...p,wisdom:b.newProgress.level},y={...g,wisdom:b.newProgress};return e({activePuzzle:null,crystals:u,insights:d,contact:c,totalDecoded:i,fragments:h.fragments,attributes:v,attributeProgress:y,...m?{triggeredMilestones:[...r.triggeredMilestones??[],m.id],pendingMilestone:m}:{},...e8({tech:r.tech,blueprints:r.blueprints,achievements:r.achievements,activeTide:r.activeTide,constellation:r.constellation,attributes:v,idlePermanentBonus:r.idlePermanentBonus??0})}),e9("decode",1),e9("insight",o.insights),{ok:!0,finished:!0,failReason:f.join(",")||void 0}}let t=ex(s);return e({activePuzzle:s}),{ok:!0,finished:!1,solvable:t}}return l},undoStep:()=>{let a=t();if(!a.activePuzzle||0===a.activePuzzle.path.length)return;let r=JSON.parse(JSON.stringify(a.activePuzzle)),s=r.path.pop();if(void 0!==s){let e=r.grid.find(e=>e.id===s);e&&(e.used=!1)}e({activePuzzle:r})},retryPuzzle:()=>{let a=t();if(a.activePuzzle){var r;e({activePuzzle:em((r=a.activePuzzle).tier,r.seed+1)})}},abandonPuzzle:()=>{let a=t();if(!a.activePuzzle)return;let r={id:`c_${Date.now()}_ret`,tier:a.activePuzzle.tier,value:k[a.activePuzzle.tier].crystals,createdAt:Date.now()};e({activePuzzle:null,pendingCrystals:[...a.pendingCrystals,r].slice(-6)})},autoDecodeTick:()=>{let a=t();if(!a.autoDecode)return;let r=Date.now(),s=K(a.constellation??[]),l=et(a.attributes??{}),n=Math.max(5e3,(12e3+1e3*s.autoDecodeIntervalDeltaSec)*l.autoDecodeIntervalMult);if(r-a._lastAutoDecode<n)return;let o=a.pendingCrystals.findIndex(e=>1===e.tier);if(o<0)return;let i=a.pendingCrystals[o],c=F(a.activeTide),d=ef(1,a.insightMult,a.contactRateMult),u=c.decodeRewardMult*s.decodeRewardMult,h={crystals:Math.round(d.crystals*u),insights:Math.round(d.insights*u),contact:+(d.contact*u).toFixed(2)},f=a.totalDecoded+1,m={...a,totalDecoded:f,fragments:{...a.fragments}};e7(m);let x=e4(f,a.triggeredMilestones??[]),p=a.attributes??el(),g=a.attributeProgress??es(),b=er({exp:(g.wisdom??{exp:0,level:p.wisdom}).exp+1,level:p.wisdom},100),v={...p,wisdom:b.newProgress.level},y={...g,wisdom:b.newProgress};e({pendingCrystals:a.pendingCrystals.filter(e=>e.id!==i.id),crystals:a.crystals+h.crystals,insights:a.insights+h.insights,contact:Math.min(100,a.contact+h.contact),totalDecoded:f,fragments:m.fragments,_lastAutoDecode:r,attributes:v,attributeProgress:y,...x?{triggeredMilestones:[...a.triggeredMilestones??[],x.id],pendingMilestone:x}:{},...e8({tech:a.tech,blueprints:a.blueprints,achievements:a.achievements,activeTide:a.activeTide,constellation:a.constellation,attributes:v,idlePermanentBonus:a.idlePermanentBonus??0})}),e9("decode",1),e9("insight",h.insights)},buyTech:a=>{let r=t(),s=C.find(e=>e.id===a);if(!s||(r.tech[a]??0)>=1||r.insights<s.cost)return!1;let l={...r.tech,[a]:1};return e({insights:r.insights-s.cost,tech:l,...e8({tech:l,blueprints:r.blueprints,achievements:r.achievements,activeTide:r.activeTide,constellation:r.constellation,attributes:r.attributes,idlePermanentBonus:r.idlePermanentBonus??0})}),!0},startExpedition:()=>{let a,r,s=t();if(s.activeExpedition&&!s.activeExpedition.finished)return{ok:!1,reason:"已有进行中的探险"};if(s.energy<1)return{ok:!1,reason:"能量不足"};let l=F(s.activeTide),n=et(s.attributes??{}),o=(a=10,r=s.tech?.exp_1??0,a+=3*r+5*(s.tech?.exp_2??0)+8*(s.tech?.exp_3??0),Math.round(a*=(1+(s.blueprints?.length??0)*.08)*(1+(s.ascensions??0)*.15)*K(s.constellation??[]).expeditionPowerMult)+l.expeditionPowerBonus),i=Math.round((100+(s.tech?.exp_2??0)*20+(s.ascensions??0)*10)*K(s.constellation??[]).expeditionHpMult)+l.expeditionHpBonus;return e({activeExpedition:function(e,t,a){let r,s=(r=e>>>0,()=>{r|=0;let e=Math.imul((r=r+0x6d2b79f5|0)^r>>>15,1|r);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}),l=5+Math.floor(3*s()),n=[];for(let e=0;e<l;e++){let t=e===l-1,a=t?"boss":function(e){let t=Object.keys(ep),a=t.reduce((e,t)=>e+ep[t],0),r=e()*a;for(let e of t)if((r-=ep[e])<=0)return e;return"combat"}(s),r=eg[a],o=Math.floor(s()*r.titles.length);n.push({id:e,type:a,title:r.titles[o],desc:r.descs[o],cleared:!1,difficulty:t?3+Math.floor(3*s()):1+Math.floor(4*s()),position:e})}if("combat"===n[0].type||"boss"===n[0].type){n[0].type=.5>s()?"treasure":"rest";let e=eg[n[0].type];n[0].title=e.titles[0],n[0].desc=e.descs[0],n[0].difficulty=1}return{id:`exp_${e}_${Date.now()}`,nodes:n,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()),Math.round(o*n.expeditionPowerMult),i+n.expeditionHpBonus),energy:s.energy-1,totalExpeditions:s.totalExpeditions+1}),{ok:!0}},resolveCurrentNode:()=>{let a=t();if(!a.activeExpedition||a.activeExpedition.finished)return null;let r=JSON.parse(JSON.stringify(a.activeExpedition)),s=r.nodes[r.currentNode],l=s?.type==="boss",n=et(a.attributes??{}),o=l?ev(r,()=>{let e=Math.random(),t=Math.min(.95,n.bossWinRateBonus);return e<t?0:Math.min(1,e-t)}):ev(r);o.crystals&&(r.rewards.crystals+=o.crystals),o.insights&&(r.rewards.insights+=o.insights),o.contact&&(r.rewards.contact+=o.contact),o.fragments&&r.rewards.fragments.push(...o.fragments),o.hpDelta&&(r.hp=Math.max(0,Math.min(r.maxHp,r.hp+o.hpDelta)));let i=a.crystals+(o.crystals||0),c=a.insights+(o.insights||0),d=Math.min(100,a.contact+(o.contact||0)),u={...a.fragments};if(o.fragments)for(let e of o.fragments)u[e]=!0;let h=[{expeditionId:r.id,nodeType:s?.type||"combat",result:o.log,rewards:[o.crystals?`+${o.crystals}晶体`:"",o.insights?`+${o.insights}洞见`:"",o.contact?`+${o.contact.toFixed(1)}接触`:"",o.hpDelta?`${o.hpDelta>0?"+":""}${o.hpDelta}生命`:""].filter(Boolean).join(" "),timestamp:Date.now()},...a.expeditionLog].slice(0,30);o.ended&&(r.finished=!0);let f=a.bossKills??0,m=!1;o.ended&&"victory"===o.endReason&&s?.type==="boss"&&(f+=1,m=!0);let x=a.attributes??el(),p=a.attributeProgress??es(),g=!1,b=(s?.type==="combat"||s?.type==="boss")&&!o.ended,v=o.ended&&"victory"===o.endReason;if(b||m||v){let e=m?8:2,t=m?6:v?4:1,a=er({exp:p.courage.exp+e,level:x.courage},100),r=er({exp:p.exploration.exp+t,level:x.exploration},100);x={...x,courage:a.newProgress.level,exploration:r.newProgress.level},p={...p,courage:a.newProgress,exploration:r.newProgress},g=!0}return e({activeExpedition:r,crystals:i,insights:c,contact:d,fragments:u,expeditionLog:h,bossKills:f,attributes:x,attributeProgress:p,...g?e8({tech:a.tech,blueprints:a.blueprints,achievements:a.achievements,activeTide:a.activeTide,constellation:a.constellation,attributes:x,idlePermanentBonus:a.idlePermanentBonus??0}):{}}),o.ended&&(e9("expedition",1),m&&e9("boss",1)),o.insights&&e9("insight",o.insights),o},advanceNode:()=>{let a=t();if(!a.activeExpedition||a.activeExpedition.finished)return;let r=JSON.parse(JSON.stringify(a.activeExpedition)),s=r.nodes[r.currentNode];s&&s.cleared&&(r.currentNode>=r.nodes.length-1||(r.currentNode++,e({activeExpedition:r})))},abortExpedition:()=>{let a=t();if(!a.activeExpedition)return;let r=JSON.parse(JSON.stringify(a.activeExpedition));r.finished=!0;let s={expeditionId:r.id,nodeType:"rest",result:"探险队主动撤退,保留已获奖励。",rewards:"",timestamp:Date.now()};e({activeExpedition:r,expeditionLog:[s,...a.expeditionLog].slice(0,30)})},doPrestige:()=>{let a,r,s,l,n,o,i,c,d,u,h,f,m,x,p=t();if(p.contact<100)return null;let g=eu(p),b=(a=eu(p),r=[...p.blueprints,...Array.from({length:a},(e,t)=>`bp_${Date.now()}_${t}`)].slice(0,6),s=q(p.constellation??[]),l=K(p.constellation??[]),n=function(e,t=[]){let a,r,s,l,n,o,i=e.ascensions+1,c=(a=Date.now(),{durationSec:Math.max(1,Math.floor((a-(r=e.runStart).timestamp)/1e3)),techsThisRun:Math.max(0,Object.keys(e.tech||{}).length-r.techsUnlocked),expThisRun:Math.max(0,e.totalExpeditions-r.expeditionsCompleted),bossKillsThisRun:Math.max(0,e.bossKills-r.bossKills),decodedThisRun:Math.max(0,e.totalDecoded-r.crystalsDecoded),newTides:(e.starTidesEncountered||[]).filter(e=>!(r.starTidesEncountered||[]).includes(e))}),d=e.createdAt+7919*i>>>0,u=(s=(i-1)%G.length,n=d%(l=G[s]).suffixes.length,`${l.prefix} \xb7 ${l.suffixes[n]}`),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=J({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}}(p,[]),o=[...p.chronicle||[],n].slice(-50),i={timestamp:Date.now(),techsUnlocked:Object.keys(p.tech||{}).length,expeditionsCompleted:p.totalExpeditions,bossKills:p.bossKills,starTidesEncountered:[...p.starTidesEncountered||[]],crystalsDecoded:p.totalDecoded},d=(c=en(p)).attributes,u=es(),h=2*(p.ascensions??0)+1,f=c.pendingAttrPoints+h,m=eh(),x=ed({tech:{},blueprints:r,achievements:p.achievements,constellation:p.constellation,attributes:d,idlePermanentBonus:p.idlePermanentBonus??0}),{...m,fragments:p.fragments,totalDecoded:p.totalDecoded,ascensions:p.ascensions+1,blueprints:r,achievements:p.achievements,constellation:p.constellation,pendingPerkChoices:s.length>0?s:null,crystals:l.prestigeStartCrystals,insights:l.prestigeStartInsights,theme:p.theme,soundOn:p.soundOn,createdAt:p.createdAt,lastTick:Date.now(),lastEnergyTick:Date.now(),expeditionLog:p.expeditionLog,totalExpeditions:p.totalExpeditions,bossKills:p.bossKills,starTidesEncountered:p.starTidesEncountered,chronicle:o,runStart:i,activeTide:null,lastTideEnd:Date.now(),attributes:d,attributeProgress:u,pendingAttrPoints:f,idleProjectSlots:[null,null,null],idleProjectHistory:p.idleProjectHistory??[],idlePermanentBonus:p.idlePermanentBonus??0,idleStats:p.idleStats??{projectsCompleted:0,crystalsFromIdle:0},readLoreLayers:Array.isArray(p.readLoreLayers)?p.readLoreLayers:[],triggeredMilestones:Array.isArray(p.triggeredMilestones)?p.triggeredMilestones:[],pendingMilestone:null,...x}),v=K(b.constellation??[]),y=N.energyMax+v.energyMaxBonus;return e({...b,energyMax:y,...e8({tech:b.tech,blueprints:b.blueprints,achievements:b.achievements,activeTide:b.activeTide,constellation:b.constellation,attributes:b.attributes,idlePermanentBonus:b.idlePermanentBonus??0}),_lastAutoDecode:Date.now(),_lastSpawn:Date.now(),_combo:0,_lastPulse:0,_tideEvents:[]}),{newBp:g}},chooseConstellationPerk:a=>{let r=t();if(!r.pendingPerkChoices||!r.pendingPerkChoices.includes(a)||!W(a)||r.constellation?.includes(a))return!1;let s=[...r.constellation??[],a],l=K(s),n=N.energyMax+l.energyMaxBonus,o=r.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("、"),r=t.length>0?` 飞升之际,星图觉醒「${a}」,铭刻于永恒回响。`:"",s=e.lore.includes("飞升之际")?e.lore:e.lore+r;return{...e,perksThisAscension:t,lore:s}}(o[o.length-1],[a]);i=[...o.slice(0,-1),e]}return e({constellation:s,pendingPerkChoices:null,energyMax:n,chronicle:i,...e8({tech:r.tech,blueprints:r.blueprints,achievements:r.achievements,activeTide:r.activeTide,constellation:s,attributes:r.attributes,idlePermanentBonus:r.idlePermanentBonus??0})}),!0},rerollPerkChoices:()=>{let a=t();if(!a.pendingPerkChoices)return;let r=q(a.constellation??[]);r.length>0&&e({pendingPerkChoices:r})},checkAchievements:()=>{let a=t(),r=[],s={...a.achievements},l=a.crystals,n=a.insights,o=a.contact,i=!1;for(let e of B)!s[e.id]&&e.check(a)&&(s[e.id]=!0,r.push(e),e.reward.crystals&&(l+=e.reward.crystals),e.reward.insights&&(n+=e.reward.insights),e.reward.contact&&(o=Math.min(100,o+e.reward.contact)),(e.reward.crystalsPerSecPct||e.reward.insightPct)&&(i=!0));return 0===r.length?[]:(e({achievements:s,crystals:l,insights:n,contact:o,...i?e8({tech:a.tech,blueprints:a.blueprints,achievements:s,activeTide:a.activeTide,constellation:a.constellation,attributes:a.attributes,idlePermanentBonus:a.idlePermanentBonus??0}):{},_achievementQueue:[...a._achievementQueue,...r]}),r)},consumeAchievementQueue:()=>{let a=t();if(0===a._achievementQueue.length)return[];let r=a._achievementQueue;return e({_achievementQueue:[]}),r},canPrestige:()=>t().contact>=100,toggleTheme:()=>e({theme:"dark"===t().theme?"light":"dark"}),toggleSound:()=>e({soundOn:!t().soundOn}),grantBeaconReward:(a,r)=>{let s=t();e({insights:s.insights+Math.round(a),contact:Math.min(100,s.contact+r)})},claimWeeklyBeacon:()=>{let a=function(e,t){if(t.claimed||null===t.completedAt)return{rewardInsight:0,rewardContact:0,score:0,leaderboard:eT()};let a=eS({...e,dateKey:e.weekKey},t.progress,t.durationSec),r=e$({timestamp:Date.now(),dateKey:e.weekKey,challenge:e.type,difficulty:e.difficulty,progress:t.progress/e.goal,score:a,durationSec:t.durationSec,isWeekly:!0});return eL({...t,claimed:!0}),{rewardInsight:e.rewardInsight,rewardContact:e.rewardContact,score:a,leaderboard:r}}(eB(),eD());if(a.rewardInsight>0||a.rewardContact>0){let r=t();e({insights:r.insights+Math.round(a.rewardInsight),contact:Math.min(100,r.contact+a.rewardContact)})}return{rewardInsight:a.rewardInsight,rewardContact:a.rewardContact,score:a.score}},claimChainReward:a=>{let r=eH();if(r.currentStreak<a||r.milestonesClaimed.includes(a))return{rewardInsight:0,rewardContact:0,label:"",ok:!1};let s=function(e){let t=eO.find(t=>t.milestone===e),a=eH();if(!t||a.milestonesClaimed.includes(e)||a.currentStreak<e)return{rewardInsight:0,rewardContact:0,label:"",state:a};let r={...a,milestonesClaimed:[...a.milestonesClaimed,e]};return eW(r),{rewardInsight:t.rewardInsight,rewardContact:t.rewardContact,label:t.label,state:r}}(a);if(s.rewardInsight>0||s.rewardContact>0){let a=t();e({insights:a.insights+Math.round(s.rewardInsight),contact:Math.min(100,a.contact+s.rewardContact)})}return{rewardInsight:s.rewardInsight,rewardContact:s.rewardContact,label:s.label,ok:s.rewardInsight>0||s.rewardContact>0}},grantCruiseReward:a=>{let r=t(),s=a.crystals??0,l=a.insights??0,n=a.contact??0,o=Math.max(2,Math.floor((s+10*l+10*n)/30)),i=r.attributes??el(),c=r.attributeProgress??es(),d=er({exp:c.exploration.exp+o,level:i.exploration},100),u=er({exp:c.courage.exp+Math.floor(.6*o),level:i.courage},100),h={...i,exploration:d.newProgress.level,courage:u.newProgress.level},f={...c,exploration:d.newProgress,courage:u.newProgress};e({crystals:Math.min(r.crystalCap,r.crystals+s),insights:r.insights+Math.round(l),contact:Math.min(100,r.contact+n),attributes:h,attributeProgress:f,...e8({tech:r.tech,blueprints:r.blueprints,achievements:r.achievements,activeTide:r.activeTide,constellation:r.constellation,attributes:h,idlePermanentBonus:r.idlePermanentBonus??0})})},allocateAttribute:(a,r=1)=>{let s=t(),l=s.attributes??el(),n=l[a]??0;if(n>=100||(s.pendingAttrPoints??0)<r)return{ok:!1,leveledUp:0};let o=Math.min(r,100-n,s.pendingAttrPoints),i=n+o,c={...l,[a]:i},d=s.attributeProgress??es(),u=d[a]??{exp:0,level:n};return e({attributes:c,attributeProgress:{...d,[a]:{exp:u.exp,level:i}},pendingAttrPoints:s.pendingAttrPoints-o,...e8({tech:s.tech,blueprints:s.blueprints,achievements:s.achievements,activeTide:s.activeTide,constellation:s.constellation,attributes:c,idlePermanentBonus:s.idlePermanentBonus??0})}),{ok:!0,leveledUp:o}},gainAttributeExp:(a,r)=>{let s=t(),l=s.attributes??el(),n=s.attributeProgress??es(),o=er({exp:(n[a]??{exp:0,level:l[a]}).exp+r,level:l[a]},100),i={...l,[a]:o.newProgress.level};return e({attributes:i,attributeProgress:{...n,[a]:o.newProgress},...e8({tech:s.tech,blueprints:s.blueprints,achievements:s.achievements,activeTide:s.activeTide,constellation:s.constellation,attributes:i,idlePermanentBonus:s.idlePermanentBonus??0})}),{leveledUp:o.levelsGained,newLevel:o.newProgress.level}},startIdleProject:(a,r)=>{if(a<0||a>=3)return;let s=t(),l=(s.idleProjectSlots??[null,null,null]).slice();if(null!==l[a])return;let n=eY[r];if(!n||!eJ({ascensions:s.ascensions,crystalsPerSec:s.crystalsPerSec}).find(e=>e.id===r)||l.some(e=>null!==e&&e.projectId===r&&!e.completed))return;let o=Date.now();l[a]={projectId:r,startedAt:o,finishesAt:o+1e3*n.durationSec,remainingSec:n.durationSec,completed:!1},e({idleProjectSlots:l})},cancelIdleProject:a=>{if(a<0||a>=3)return;let r=(t().idleProjectSlots??[null,null,null]).slice();r[a]=null,e({idleProjectSlots:r})},claimIdleProject:a=>{if(a<0||a>=3)return;let r=t(),s=(r.idleProjectSlots??[null,null,null]).slice(),l=s[a];if(!l||!l.completed)return;let n=eY[l.projectId];if(!n){s[a]=null,e({idleProjectSlots:s});return}let o=n.reward,i=o.crystals??0,c=o.insights??0,d=o.energy??0,u=o.contact??0,h=o.crystalsPerSecPermanent??0,f=null;if(o.randomFragment){let e=$.filter(e=>!r.fragments[e.id]);if(e.length>0){let t=e[Math.floor(Math.random()*e.length)];r.fragments[t.id]=!0,f=t.title}}let m=(r.idlePermanentBonus??0)+h,x={projectsCompleted:(r.idleStats?.projectsCompleted??0)+1,crystalsFromIdle:(r.idleStats?.crystalsFromIdle??0)+i},p=[...r.idleProjectHistory??[],{projectId:n.id,finishedAt:Date.now()}].slice(-50);s[a]=null,e({idleProjectSlots:s,fragments:{...r.fragments},crystals:Math.min(r.crystalCap,r.crystals+i),insights:r.insights+c,energy:Math.min(r.energyMax,r.energy+d),contact:Math.min(100,r.contact+u),idlePermanentBonus:m,idleStats:x,idleProjectHistory:p,...e8({tech:r.tech,blueprints:r.blueprints,achievements:r.achievements,activeTide:r.activeTide,constellation:r.constellation,attributes:r.attributes,idlePermanentBonus:m})});let g=[];i>0&&g.push(`+${i} 晶体`),c>0&&g.push(`+${c} 洞见`),d>0&&g.push(`+${d} 能量`),u>0&&g.push(`+${u} 接触`),h>0&&g.push(`永久 +${h}/s`),f&&g.push(`记忆碎片「${f}」`),(0,e6.toast)({title:"✦ 工程奖励已领取",description:`${n.name} \xb7 ${g.join(" · ")}`})},tickIdleProjects:a=>{let r=(t().idleProjectSlots??[null,null,null]).slice(),s=!1,l=[];for(let e=0;e<r.length;e++){let t=r[e];if(!t||t.completed)continue;let n=Math.max(0,(t.finishesAt-a)/1e3);if(n<=0&&!t.completed){r[e]={...t,remainingSec:0,completed:!0},s=!0;let a=eY[t.projectId];a&&l.push(a)}else Math.abs(n-t.remainingSec)>.05&&(r[e]={...t,remainingSec:n},s=!0)}if(s&&e({idleProjectSlots:r}),l.length>0){let e=l.map(e=>`${e.icon} ${e.name}`).join(" · ");(0,e6.toast)({title:"✦ 放置工程完成",description:`${e} \xb7 可前往「放置」标签领取`})}},claimAllIdleProjects:()=>{let a=t(),r=(a.idleProjectSlots??[null,null,null]).slice(),s=[];for(let e=0;e<r.length;e++){let t=r[e];t&&t.completed&&s.push(e)}if(0===s.length)return;let l=0,n=0,o=0,i=0,c=0,d=0,u=[],h={...a.fragments};for(let e of s){let t=r[e];if(!t)continue;let a=eY[t.projectId];if(!a){r[e]=null;continue}let s=a.reward;if(l+=s.crystals??0,n+=s.insights??0,o+=s.energy??0,i+=s.contact??0,c+=s.crystalsPerSecPermanent??0,d+=1,s.randomFragment){let e=$.filter(e=>!h[e.id]);if(e.length>0){let t=e[Math.floor(Math.random()*e.length)];h[t.id]=!0,u.push(t.title)}}r[e]=null}let f=Date.now(),m=[...a.idleProjectHistory??[],...s.map(e=>{let t=(a.idleProjectSlots??[])[e];return t?{projectId:t.projectId,finishedAt:f}:null}).filter(e=>null!==e)].slice(-50),x=(a.idlePermanentBonus??0)+c,p={projectsCompleted:(a.idleStats?.projectsCompleted??0)+d,crystalsFromIdle:(a.idleStats?.crystalsFromIdle??0)+l};e({idleProjectSlots:r,fragments:h,crystals:Math.min(a.crystalCap,a.crystals+l),insights:a.insights+n,energy:Math.min(a.energyMax,a.energy+o),contact:Math.min(100,a.contact+i),idlePermanentBonus:x,idleStats:p,idleProjectHistory:m,...e8({tech:a.tech,blueprints:a.blueprints,achievements:a.achievements,activeTide:a.activeTide,constellation:a.constellation,attributes:a.attributes,idlePermanentBonus:x})});let g=[`共领取 ${d} 项工程`,`+${l} 晶体`,`+${n} 洞见`];o>0&&g.push(`+${o} 能量`),i>0&&g.push(`+${i} 接触`),c>0&&g.push(`永久 +${c}/s`),u.length>0&&g.push(`记忆碎片 \xd7${u.length}`),(0,e6.toast)({title:"✦ 批量领取完成",description:`${g.join(" · ")}`})},markLoreLayerRead:(a,r)=>{let s=`${a}_L${r}`,l=t().readLoreLayers;Array.isArray(l)&&l.includes(s)||e({readLoreLayers:Array.isArray(l)?[...l,s]:[s]})},dismissMilestone:()=>{null!=t().pendingMilestone&&e({pendingMilestone:null})}}),r={name:"echo-nexus-save-v1",version:1,storage:w(()=>localStorage),migrate:(e,t)=>{let a=e||{};return{...a,idleProjectSlots:Array.isArray(a.idleProjectSlots)&&3===a.idleProjectSlots.length?a.idleProjectSlots:[null,null,null],idleProjectHistory:Array.isArray(a.idleProjectHistory)?a.idleProjectHistory:[],idlePermanentBonus:"number"==typeof a.idlePermanentBonus?a.idlePermanentBonus:0,idleStats:a.idleStats&&"object"==typeof a.idleStats?a.idleStats:{projectsCompleted:0,crystalsFromIdle:0},readLoreLayers:Array.isArray(a.readLoreLayers)?a.readLoreLayers:[],triggeredMilestones:Array.isArray(a.triggeredMilestones)?a.triggeredMilestones:[],pendingMilestone:a.pendingMilestone??null}},partialize:e=>{let{_lastAutoDecode:t,_lastSpawn:a,_combo:r,_lastPulse:s,_achievementQueue:l,_tideEvents:n,...o}=e;return o}},(e,t,s)=>{let l,n={storage:w(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...r},o=!1,i=0,c=new Set,d=new Set,u=n.storage;if(!u)return a((...t)=>{console.warn(`[zustand persist middleware] Unable to update item '${n.name}', the given storage is currently unavailable.`),e(...t)},t,s);let h=()=>{let e=n.partialize({...t()});return u.setItem(n.name,{state:e,version:n.version})},f=s.setState;s.setState=(e,t)=>(f(e,t),h());let m=a((...t)=>(e(...t),h()),t,s);s.getInitialState=()=>m;let x=()=>{var a,r;if(!u)return;let s=++i;o=!1,c.forEach(e=>{var a;return e(null!=(a=t())?a:m)});let f=(null==(r=n.onRehydrateStorage)?void 0:r.call(n,null!=(a=t())?a:m))||void 0;return j(u.getItem.bind(u))(n.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===n.version)return[!1,e.state];else{if(n.migrate){let t=n.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 r;if(s!==i)return;let[o,c]=a;if(e(l=n.merge(c,null!=(r=t())?r:m),!0),o)return h()}).then(()=>{s===i&&(null==f||f(l,void 0),l=t(),o=!0,d.forEach(e=>e(l)))}).catch(e=>{s===i&&(null==f||f(void 0,e))})};return s.persist={setOptions:e=>{n={...n,...e},e.storage&&(u=e.storage)},clearStorage:()=>{null==u||u.removeItem(n.name)},getOptions:()=>n,rehydrate:()=>x(),hasHydrated:()=>o,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},n.skipHydration||x(),l||m}));var tt=e.i(75254);let ta=(0,tt.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"}]]),tr=(0,tt.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"}]]),ts=(0,tt.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"}]]),tl=(0,tt.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"}]]);var tn=e.i(74080),to=e.i(20783),ti=Symbol.for("react.lazy"),tc=g[" use ".trim().toString()];function td(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===ti&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function tu(e){var t;let a,r=(t=e,(a=g.forwardRef((e,t)=>{let{children:a,...r}=e;if(td(a)&&"function"==typeof tc&&(a=tc(a._payload)),g.isValidElement(a)){var s;let e,l,n=(s=a,(l=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(l=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),o=function(e,t){let a={...t};for(let r in t){let s=e[r],l=t[r];/^on[A-Z]/.test(r)?s&&l?a[r]=(...e)=>{let t=l(...e);return s(...e),t}:s&&(a[r]=s):"style"===r?a[r]={...s,...l}:"className"===r&&(a[r]=[s,l].filter(Boolean).join(" "))}return{...e,...a}}(r,a.props);return a.type!==g.Fragment&&(o.ref=t?(0,to.composeRefs)(t,n):n),g.cloneElement(a,o)}return g.Children.count(a)>1?g.Children.only(null):null})).displayName=`${t}.SlotClone`,a),s=g.forwardRef((e,t)=>{let{children:a,...s}=e;td(a)&&"function"==typeof tc&&(a=tc(a._payload));let l=g.Children.toArray(a),n=l.find(tm);if(n){let e=n.props.children,a=l.map(t=>t!==n?t:g.Children.count(e)>1?g.Children.only(null):g.isValidElement(e)?e.props.children:null);return(0,p.jsx)(r,{...s,ref:t,children:g.isValidElement(e)?g.cloneElement(e,void 0,a):null})}return(0,p.jsx)(r,{...s,ref:t,children:a})});return s.displayName=`${e}.Slot`,s}var th=tu("Slot"),tf=Symbol("radix.slottable");function tm(e){return g.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===tf}var tx=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let a=tu(`Primitive.${t}`),r=g.forwardRef((e,r)=>{let{asChild:s,...l}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,p.jsx)(s?a:t,{...l,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),tp="Progress",[tg,tb]=function(e,t=[]){let a=[],r=()=>{let t=a.map(e=>g.createContext(e));return function(a){let r=a?.[e]||t;return g.useMemo(()=>({[`__scope${e}`]:{...a,[e]:r}}),[a,r])}};return r.scopeName=e,[function(t,r){let s=g.createContext(r);s.displayName=t+"Context";let l=a.length;a=[...a,r];let n=t=>{let{scope:a,children:r,...n}=t,o=a?.[e]?.[l]||s,i=g.useMemo(()=>n,Object.values(n));return(0,p.jsx)(o.Provider,{value:i,children:r})};return n.displayName=t+"Provider",[n,function(a,n){let o=n?.[e]?.[l]||s,i=g.useContext(o);if(i)return i;if(void 0!==r)return r;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 r=a.reduce((t,{useScope:a,scopeName:r})=>{let s=a(e)[`__scope${r}`];return{...t,...s}},{});return g.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return a.scopeName=t.scopeName,a}(r,...t)]}(tp),[tv,ty]=tg(tp),tw=g.forwardRef((e,t)=>{var a,r;let{__scopeProgress:s,value:l=null,max:n,getValueLabel:o=tk,...i}=e;(n||0===n)&&!tP(n)&&console.error((a=`${n}`,`Invalid prop \`max\` of value \`${a}\` supplied to \`Progress\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`));let c=tP(n)?n:100;null===l||tC(l,c)||console.error((r=`${l}`,`Invalid prop \`value\` of value \`${r}\` 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=tC(l,c)?l:null,u=tS(d)?o(d,c):void 0;return(0,p.jsx)(tv,{scope:s,value:d,max:c,children:(0,p.jsx)(tx.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":tS(d)?d:void 0,"aria-valuetext":u,role:"progressbar","data-state":tM(d,c),"data-value":d??void 0,"data-max":c,...i,ref:t})})});tw.displayName=tp;var tj="ProgressIndicator",tN=g.forwardRef((e,t)=>{let{__scopeProgress:a,...r}=e,s=ty(tj,a);return(0,p.jsx)(tx.div,{"data-state":tM(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:t})});function tk(e,t){return`${Math.round(e/t*100)}%`}function tM(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function tS(e){return"number"==typeof e}function tP(e){return tS(e)&&!isNaN(e)&&e>0}function tC(e,t){return tS(e)&&!isNaN(e)&&e<=t&&e>=0}tN.displayName=tj;var tT=e.i(75157);function t$({className:e,value:t,...a}){return(0,p.jsx)(tw,{"data-slot":"progress",className:(0,tT.cn)("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",e),...a,children:(0,p.jsx)(tN,{"data-slot":"progress-indicator",className:"bg-primary h-full w-full flex-1 transition-all",style:{transform:`translateX(-${100-(t||0)}%)`}})})}function t_({onPrestige:e}){let t=te(e=>e.crystals),a=te(e=>e.crystalsPerSec),r=te(e=>e.insights),s=te(e=>e.contact),l=te(e=>e.ascensions),n=te(e=>e.blueprints);return(0,p.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,p.jsx)(tR,{icon:(0,p.jsx)(ta,{className:"h-4 w-4 text-emerald-400"}),label:"记忆晶体",value:I(t),sub:`+${a.toFixed(1)}/s`,glow:"rgba(52,211,153,0.4)"}),(0,p.jsx)("div",{className:"h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block"}),(0,p.jsx)(tR,{icon:(0,p.jsx)(tr,{className:"h-4 w-4 text-amber-400"}),label:"技术洞见",value:I(r),sub:"解码产出",glow:"rgba(251,191,36,0.4)"}),(0,p.jsx)("div",{className:"h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block"}),(0,p.jsxs)("div",{className:"flex-1 min-w-[200px] flex flex-col gap-1.5",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(ts,{className:"h-4 w-4 text-fuchsia-400 shrink-0"}),(0,p.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:"接触进度"}),(0,p.jsxs)("span",{className:"text-xs font-mono font-semibold text-fuchsia-300 ml-auto tabular-nums",children:[s.toFixed(1),"%"]}),s>=100&&(0,p.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,p.jsx)(t$,{value:s,className:"h-1.5 bg-white/10 [&>div]:bg-gradient-to-r [&>div]:from-fuchsia-500 [&>div]:to-rose-400"})]}),(0,p.jsx)("div",{className:"h-9 w-px bg-gradient-to-b from-transparent via-white/15 to-transparent hidden sm:block"}),(0,p.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,p.jsx)(tl,{className:"h-4 w-4 text-rose-400 shrink-0"}),(0,p.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground leading-none",children:"飞升"}),(0,p.jsxs)("div",{className:"flex items-baseline gap-1.5",children:[(0,p.jsx)("span",{className:"text-sm font-mono font-semibold leading-none",children:l}),(0,p.jsxs)("span",{className:"text-amber-300 text-xs leading-none",children:["×",n.length]})]})]})]})]})}function tR({icon:e,label:t,value:a,sub:r,glow:s}){return(0,p.jsxs)("div",{className:"flex items-center gap-2.5",style:{filter:`drop-shadow(0 0 6px ${s})`},children:[e,(0,p.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground leading-none",children:t}),(0,p.jsxs)("div",{className:"flex items-baseline gap-1.5",children:[(0,p.jsx)("span",{className:"text-sm font-mono font-semibold leading-none tabular-nums",children:a}),(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground/80 whitespace-nowrap",children:r})]})]})]})}var tE=e.i(37902);let tA={emerald:523.25,rose:587.33,amber:659.25,fuchsia:698.46};class tI{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",r=.3,s=0,l=0,n){let o=this.ensure();if(!o||!this.master)return;let i=o.currentTime+s,c=o.createOscillator(),d=o.createGain();if(c.type=a,c.frequency.setValueAtTime(e,i),l&&c.detune.setValueAtTime(l,i),d.gain.setValueAtTime(0,i),d.gain.linearRampToValueAtTime(r,i+.008),d.gain.exponentialRampToValueAtTime(1e-4,i+t),n){let e=o.createBiquadFilter();e.type="lowpass",e.frequency.value=n,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,r="sine",s=.3,l=0){let n=this.ensure();if(!n||!this.master)return;let o=n.currentTime+l,i=n.createOscillator(),c=n.createGain();i.type=r,i.frequency.setValueAtTime(e,o),i.frequency.exponentialRampToValueAtTime(Math.max(1,t),o+a),c.gain.setValueAtTime(0,o),c.gain.linearRampToValueAtTime(s,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,r=1200){let s=this.ensure();if(!s||!this.master)return;let l=s.currentTime+a,n=Math.floor(s.sampleRate*e),o=s.createBuffer(1,n,s.sampleRate),i=o.getChannelData(0);for(let e=0;e<n;e++)i[e]=(2*Math.random()-1)*(1-e/n);let c=s.createBufferSource();c.buffer=o;let d=s.createBiquadFilter();d.type="lowpass",d.frequency.value=r;let u=s.createGain();u.gain.setValueAtTime(t,l),u.gain.exponentialRampToValueAtTime(1e-4,l+e),c.connect(d),d.connect(u),u.connect(this.master),c.start(l),c.stop(l+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?tA[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 tB=null;function tD(){return tB||(tB=new tI),tB}function tL(e,t){tD().play(e,t)}let tz="#34d399",tF="#e879f9",tO="#fb7185",tH="#fbbf24";function tW(e){return e>=5?tH:e>=3?tF:tz}function tK(){let e=te(e=>e.pulse),t=te(e=>e.crystals),a=te(e=>e.crystalsPerSec),r=te(e=>e.crystalCap),s=te(e=>e._combo),{toast:l}=(0,e6.useToast)(),[n,o]=(0,g.useState)([]),i=(0,g.useRef)(0),c=(0,g.useRef)(null),d=(0,g.useRef)(null);(0,g.useRef)(0);let[u,h]=(0,g.useState)(0),f=(0,g.useRef)([]),m=(0,g.useRef)([]),x=(0,g.useRef)([]),b=(0,g.useRef)([]),v=(0,g.useRef)(s),y=(0,g.useRef)(0),w=(0,g.useRef)(t),j=(0,g.useRef)(r);(0,g.useEffect)(()=>{v.current=s,w.current=t,j.current=r},[s,t,r]);let N=(0,g.useRef)({x:0,y:0,inside:!1}),k=(0,g.useCallback)((e,t)=>{let a=.28*Math.min(e,t),r=[];[{count:14,rMul:.95,speed:.6,color:tz},{count:10,rMul:1.15,speed:-.4,color:tF},{count:8,rMul:1.35,speed:.3,color:tO}].forEach(e=>{for(let t=0;t<e.count;t++)r.push({angle:2*Math.PI*t/e.count+.3*Math.random(),radius:a*e.rMul,baseRadius:a*e.rMul,speed:e.speed*(.8+.4*Math.random()),size:1.5+2*Math.random(),color:e.color,alpha:.5+.4*Math.random(),phase:Math.random()*Math.PI*2})}),f.current=r;let s=[];for(let a=0;a<40;a++)s.push({x:Math.random()*e,y:Math.random()*t,vx:(Math.random()-.5)*8,vy:(Math.random()-.5)*8,size:.5+1.5*Math.random(),alpha:.2+.5*Math.random(),twinkle:Math.random()*Math.PI*2});m.current=s},[]),M=(0,g.useCallback)((e,t,a)=>{let r=tW(a.combo),s=performance.now();x.current.push({born:s,color:tz,maxRadius:140,duration:700}),a.combo>=3&&x.current.push({born:s+100,color:tF,maxRadius:170,duration:800}),a.combo>=5&&x.current.push({born:s+200,color:tH,maxRadius:200,duration:900});let l=10+2*Math.min(10,a.combo);for(let a=0;a<l;a++){let n=2*Math.PI*a/l+.4*Math.random(),o=120+180*Math.random();b.current.push({x:e,y:t,vx:Math.cos(n)*o,vy:Math.sin(n)*o,size:2+3*Math.random(),color:r,born:s,life:600+300*Math.random()})}f.current.forEach(e=>{e.radius=e.baseRadius*(1.25+.15*Math.random())})},[]),S=(0,g.useCallback)(t=>{let a=e();if(!a)return;let r=t.currentTarget.getBoundingClientRect(),s=t.clientX-r.left,n=t.clientY-r.top,c=i.current++,d=tW(a.combo);o(e=>[...e,{id:c,x:s,y:n,text:`+${a.gain.toFixed(1)}`,born:Date.now(),color:d}]),M(s,n,a),h(e=>e+1),tL(a.combo>=3?"pulseCombo":"pulse",{combo:a.combo}),setTimeout(()=>{o(e=>e.filter(e=>e.id!==c))},900),a.combo>=5&&a.combo%5==0&&l({title:`\xd7${a.combo} 连击!`,description:"谐振叠加,产能飙升。"})},[e,l,M]);(0,g.useEffect)(()=>{let e=c.current,t=d.current;if(!e||!t)return;let a=e.getContext("2d");if(!a)return;let r=0,s=performance.now(),l=Math.min(window.devicePixelRatio||1,2),n=()=>{let r=t.getBoundingClientRect();l=Math.min(window.devicePixelRatio||1,2),e.width=Math.max(1,Math.floor(r.width*l)),e.height=Math.max(1,Math.floor(r.height*l)),e.style.width=`${r.width}px`,e.style.height=`${r.height}px`,a.setTransform(l,0,0,l,0,0),k(r.width,r.height)};n();let o=new ResizeObserver(n);o.observe(t);let i=t=>{let n=Math.min(.05,(t-s)/1e3);s=t;let o=e.width/l,c=e.height/l,d=o/2,u=c/2,h=.28*Math.min(o,c);a.clearRect(0,0,o,c),m.current.forEach(e=>{e.x+=e.vx*n,e.y+=e.vy*n,e.twinkle+=2*n,e.x<0&&(e.x=o),e.x>o&&(e.x=0),e.y<0&&(e.y=c),e.y>c&&(e.y=0);let t=.5+.5*Math.sin(e.twinkle);a.globalAlpha=e.alpha*t,a.fillStyle="#ffffff",a.beginPath(),a.arc(e.x,e.y,e.size,0,2*Math.PI),a.fill()}),a.globalAlpha=1;let p=.85+.15*Math.sin(.001*t),g=a.createRadialGradient(d,u,.3*h,d,u,2.2*h);g.addColorStop(0,`rgba(52,211,153,${.18*p})`),g.addColorStop(.5,`rgba(232,121,249,${.1*p})`),g.addColorStop(1,"rgba(0,0,0,0)"),a.fillStyle=g,a.fillRect(0,0,o,c),a.lineWidth=2.5,a.strokeStyle="rgba(255,255,255,0.06)",a.beginPath(),a.arc(d,u,1.45*h,0,2*Math.PI),a.stroke();let v=Math.min(100,w.current/Math.max(1,j.current)*100);y.current=v;let k=1.45*h,M=a.createLinearGradient(d-k,u-k,d+k,u+k);M.addColorStop(0,tz),M.addColorStop(.5,tF),M.addColorStop(1,tO),a.strokeStyle=M,a.lineWidth=3,a.lineCap="round",a.shadowBlur=8,a.shadowColor=tz,a.beginPath(),a.arc(d,u,k,-Math.PI/2,-Math.PI/2+2*Math.PI*v/100),a.stroke(),a.shadowBlur=0,f.current.forEach(e=>{e.angle+=e.speed*n,e.radius+=(e.baseRadius-e.radius)*Math.min(1,4*n);let r=d+Math.cos(e.angle)*e.radius,s=u+Math.sin(e.angle)*e.radius,l=.7+.3*Math.sin(.005*t+e.phase);a.globalAlpha=e.alpha*l,a.fillStyle=e.color,a.shadowBlur=10,a.shadowColor=e.color,a.beginPath(),a.arc(r,s,e.size,0,2*Math.PI),a.fill(),a.globalAlpha=e.alpha*l*.4,a.strokeStyle=e.color,a.lineWidth=.6*e.size,a.beginPath(),a.moveTo(r,s),a.lineTo(d+Math.cos(e.angle-.08*e.speed)*(e.radius-2),u+Math.sin(e.angle-.08*e.speed)*(e.radius-2)),a.stroke()}),a.globalAlpha=1,a.shadowBlur=0;let S=.95*h,P=0,C=0;if(N.current.inside){let e=N.current.x-d,t=N.current.y-u,a=Math.hypot(e,t);a>.1&&(P=e/a*Math.min(8,.05*a),C=t/a*Math.min(8,.05*a))}let T=d+P,$=u+C,_=a.createRadialGradient(T-.25*S,$-.3*S,.1*S,T,$,S);_.addColorStop(0,"rgba(255,255,255,0.95)"),_.addColorStop(.3,`rgba(52,211,153,${.85*p})`),_.addColorStop(.65,"rgba(232,121,249,0.55)"),_.addColorStop(1,"rgba(251,113,133,0.2)"),a.fillStyle=_,a.shadowBlur=30,a.shadowColor=tz,a.beginPath(),a.arc(T,$,S,0,2*Math.PI),a.fill(),a.save(),a.translate(T,$),a.globalAlpha=.25,a.strokeStyle="rgba(255,255,255,0.6)",a.lineWidth=.8;let R=.7*S;for(let e=0;e<3;e++){let r=R*(1-.3*e);a.beginPath();for(let s=0;s<6;s++){let l=Math.PI/3*s+2e-4*t*(e%2?1:-1),n=Math.cos(l)*r,o=Math.sin(l)*r;0===s?a.moveTo(n,o):a.lineTo(n,o)}a.closePath(),a.stroke()}a.restore(),a.globalAlpha=.4,a.fillStyle="#ffffff",a.beginPath(),a.ellipse(T-.25*S,$-.35*S,.35*S,.18*S,-.4,0,2*Math.PI),a.fill(),a.globalAlpha=1,a.shadowBlur=0,x.current=x.current.filter(e=>{let r=t-e.born;if(r<0||r>e.duration)return r<=e.duration+50;let s=r/e.duration,l=e.maxRadius*s;return a.globalAlpha=(1-s)*.8,a.strokeStyle=e.color,a.lineWidth=2.5*(1-.5*s),a.shadowBlur=12,a.shadowColor=e.color,a.beginPath(),a.arc(d,u,l,0,2*Math.PI),a.stroke(),a.shadowBlur=0,!0}),x.current=x.current.filter(e=>t-e.born<e.duration),a.globalAlpha=1,b.current=b.current.filter(e=>{let r=t-e.born;if(r>e.life)return!1;e.x+=e.vx*n,e.y+=e.vy*n,e.vx*=.96,e.vy*=.96;let s=r/e.life;return a.globalAlpha=1-s,a.fillStyle=e.color,a.shadowBlur=8,a.shadowColor=e.color,a.beginPath(),a.arc(e.x,e.y,e.size*(1-.5*s),0,2*Math.PI),a.fill(),!0}),a.globalAlpha=1,a.shadowBlur=0,r=requestAnimationFrame(i)};return r=requestAnimationFrame(i),()=>{cancelAnimationFrame(r),o.disconnect()}},[k]);let P=(0,g.useCallback)(e=>{let t=e.currentTarget.getBoundingClientRect();N.current={x:e.clientX-t.left,y:e.clientY-t.top,inside:!0}},[]),C=(0,g.useCallback)(()=>{N.current.inside=!1},[]),T=Math.min(100,t/Math.max(1,r)*100);return(0,p.jsxs)("div",{className:"jsx-dda3ce20a1930cc3 relative flex flex-col items-center justify-center gap-4 select-none",children:[s>1&&(0,p.jsxs)("div",{className:"jsx-dda3ce20a1930cc3 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 z-10",children:["×",s," 连击"]}),(0,p.jsxs)("button",{onClick:S,onMouseMove:P,onMouseLeave:C,"aria-label":"脉冲扫描,获取记忆晶体",className:"jsx-dda3ce20a1930cc3 relative h-52 w-52 sm:h-64 sm:w-64 rounded-full focus:outline-none group",children:[(0,p.jsx)("div",{ref:d,className:"jsx-dda3ce20a1930cc3 absolute inset-0 rounded-full overflow-hidden",children:(0,p.jsx)("canvas",{ref:c,className:"jsx-dda3ce20a1930cc3 block w-full h-full"})}),(0,p.jsxs)("div",{style:{animation:"echo-spin 18s linear infinite"},className:"jsx-dda3ce20a1930cc3 absolute inset-2 rounded-full border border-emerald-400/30 pointer-events-none",children:[(0,p.jsx)("div",{className:"jsx-dda3ce20a1930cc3 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,p.jsx)("div",{className:"jsx-dda3ce20a1930cc3 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,p.jsx)("div",{style:{animation:"echo-spin 24s linear infinite reverse"},className:"jsx-dda3ce20a1930cc3 absolute inset-6 rounded-full border border-fuchsia-400/20 border-dashed pointer-events-none"}),(0,p.jsx)("div",{style:{animation:"echo-ring 0.7s ease-out forwards"},className:"jsx-dda3ce20a1930cc3 absolute inset-8 rounded-full border-2 border-emerald-400/60 pointer-events-none"},`ring-${u}`),n.map(e=>(0,p.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-dda3ce20a1930cc3 absolute pointer-events-none font-mono font-bold text-sm z-10",children:e.text},e.id))]}),(0,p.jsxs)("div",{className:"jsx-dda3ce20a1930cc3 text-center",children:[(0,p.jsx)("div",{style:{textShadow:"0 0 12px rgba(52,211,153,0.5)"},className:"jsx-dda3ce20a1930cc3 text-2xl font-mono font-bold text-emerald-300",children:I(t)}),(0,p.jsxs)("div",{className:"jsx-dda3ce20a1930cc3 text-xs text-muted-foreground mt-0.5",children:["记忆晶体 · ",a.toFixed(1),"/s · 上限"," ",I(r)]}),(0,p.jsxs)("div",{className:"jsx-dda3ce20a1930cc3 text-[11px] text-muted-foreground/70 mt-2",children:["点击晶体发起",(0,p.jsx)("span",{className:"jsx-dda3ce20a1930cc3 text-emerald-300",children:"脉冲扫描"}),",连击叠加加成"]}),(0,p.jsxs)("div",{className:"jsx-dda3ce20a1930cc3 text-[10px] text-muted-foreground/50 mt-1 tabular-nums",children:["仓库 ",T.toFixed(1),"% · 连击 ×",Math.max(1,s)]})]}),(0,p.jsx)(tE.default,{id:"dda3ce20a1930cc3",children:"@keyframes echo-spin{to{transform:rotate(360deg)}}@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)}}"})]})}var tq=e.i(25913);let tU=(0,tq.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 tX({className:e,variant:t,size:a,asChild:r=!1,...s}){return(0,p.jsx)(r?th:"button",{"data-slot":"button",className:(0,tT.cn)(tU({variant:t,size:a,className:e})),...s})}var tV=e.i(37727);let tY=(0,tt.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"}]]),tG=(0,tt.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),tJ=(0,tt.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"}]]),tZ=(0,tt.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 tQ(){let e=te(e=>e.activePuzzle),t=te(e=>e.clickNode),a=te(e=>e.undoStep),r=te(e=>e.retryPuzzle),s=te(e=>e.abandonPuzzle),{toast:l}=(0,e6.useToast)(),[n,o]=(0,g.useState)(null),[i,c]=(0,g.useState)(null),[d,u]=(0,g.useState)(!1);if(!e)return null;let{grid:h,rows:f,cols:m,target:x,path:b,stepLimit:v,tier:y}=e,w=b.length,j=x[w],N=b.length>0&&b.length<x.length&&!ex(e),k=()=>{a(),u(!1),c(null)},M=100/m,S=100/f,C=b.map(e=>h.find(t=>t.id===e)).filter(Boolean);return(0,p.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex flex-col gap-4 h-full",children:[(0,p.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center justify-center gap-2 flex-wrap",children:[(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-xs text-muted-foreground mr-1",children:"目标谐振"}),x.map((e,t)=>{let a=t<w,r=t===w,s=P[e];return(0,p.jsxs)("div",{style:{background:`radial-gradient(circle at 35% 30%, ${s.hex}, ${s.hex}aa 60%, ${s.hex}44)`,boxShadow:r?`0 0 18px ${s.glow}, 0 0 36px ${s.glow}`:`0 0 8px ${s.glow}`,"--tw-ring-color":s.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":""} ${r?"scale-125 ring-2 ring-offset-2 ring-offset-background":""}`,children:[a&&(0,p.jsx)(tG,{className:"h-4 w-4 text-white"}),r&&(0,p.jsx)("span",{style:{color:s.hex},className:"jsx-35ab0418fdc54847 absolute -bottom-5 text-[10px] font-medium",children:"下一个"})]},t)})]}),(0,p.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,p.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:`${M}% ${S}%`},className:"jsx-35ab0418fdc54847 absolute inset-0 opacity-20"}),(0,p.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],r=(a.col+.5)*M,s=(a.row+.5)*S,l=(e.col+.5)*M,n=(e.row+.5)*S,o=P[e.color];return(0,p.jsx)("line",{x1:`${r}%`,y1:`${s}%`,x2:`${l}%`,y2:`${n}%`,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 r=P[a.color],s=a.used,h=void 0!==j&&a.color===j&&!s,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 r=JSON.parse(JSON.stringify(e));return r.grid.find(e=>e.id===t).used=!0,r.path.push(t),ex(r)}(e,a.id),x=0===b.length&&h&&!f,g=n===a.id,v=i?.id===a.id,y=(a.col+.5)*M,w=(a.row+.5)*S;return(0,p.jsx)("button",{onClick:()=>(e=>{let a=t(e.id);if(a.ok&&a.finished){u(!1),tL("decodeSuccess"),a.failReason&&a.failReason.split(",").filter(Boolean).length&&(tL("fragmentUnlock"),l({title:"✦ 记忆碎片浮现",description:"新的回响被拼入图谱,前往「记忆图谱」查看。"})),l({title:"谐振闭合!",description:"晶体解码成功,记忆已释放。"});return}a.ok?(tL("decodeClick",{color:e.color}),c({id:e.id,ok:!0}),setTimeout(()=>c(null),280),!1!==a.solvable||d||(u(!0),l({title:"谐振受阻",description:"此路不通,建议撤销上一步或重排。"})),!0===a.solvable&&u(!1)):(tL("decodeFail"),c({id:e.id,ok:!1}),setTimeout(()=>c(null),280))})(a),onMouseEnter:()=>o(a.id),onMouseLeave:()=>o(null),disabled:s,style:{left:`${y}%`,top:`${w}%`,width:`min(${100/m*.62}%, 56px)`,aspectRatio:"1",background:s?"rgba(255,255,255,0.04)":`radial-gradient(circle at 35% 30%, ${r.hex}, ${r.hex}cc 55%, ${r.hex}55)`,boxShadow:s?"inset 0 0 12px rgba(0,0,0,0.5)":f?`0 0 16px ${r.glow}, 0 0 32px ${r.glow}, inset 0 0 10px rgba(255,255,255,0.5)`:h?`0 0 10px ${r.glow}, 0 0 20px ${r.glow}, inset 0 0 6px rgba(255,255,255,0.3)`:`0 0 6px ${r.glow}`,border:f?`2px solid ${r.hex}`:h?`1.5px solid ${r.hex}aa`:"1px solid rgba(255,255,255,0.12)",opacity:s?.35:x?.5:1,transform:`translate(-50%, -50%) scale(${g&&!s?1.12:v?i?.ok?1.25:.8:1})`,animation:f?"echo-pulse 1.2s ease-in-out infinite":h&&!x?"echo-pulse 1.6s ease-in-out infinite":void 0},"aria-label":`${r.label}色节点 ${a.row+1}-${a.col+1}`,className:"jsx-35ab0418fdc54847 absolute rounded-full transition-[box-shadow,background,border,opacity] duration-200 focus:outline-none disabled:cursor-not-allowed",children:!s&&(0,p.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,p.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,p.jsx)(tZ,{className:"h-3.5 w-3.5 shrink-0"}),(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847",children:"谐振受阻,此路已无解。"}),(0,p.jsxs)(tX,{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,p.jsx)(tJ,{className:"h-3 w-3 mr-1"}),"撤销"]})]}),(0,p.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center justify-between gap-3",children:[(0,p.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center gap-2 text-xs",children:[(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-muted-foreground",children:"步数"}),(0,p.jsxs)("span",{className:`jsx-35ab0418fdc54847 font-mono font-semibold ${b.length>=v?"text-rose-400":"text-foreground"}`,children:[b.length," / ",v]}),(0,p.jsxs)("span",{className:"jsx-35ab0418fdc54847 ml-2 text-muted-foreground",children:["T",y]})]}),(0,p.jsxs)("div",{className:"jsx-35ab0418fdc54847 flex items-center gap-1.5",children:[(0,p.jsxs)(tX,{variant:"ghost",size:"sm",onClick:k,disabled:0===b.length,className:"h-7",children:[(0,p.jsx)(tJ,{className:"h-3.5 w-3.5 mr-1"}),"撤销"]}),(0,p.jsxs)(tX,{variant:"ghost",size:"sm",onClick:()=>{r(),u(!1),c(null)},className:"h-7",children:[(0,p.jsx)(tl,{className:"h-3.5 w-3.5 mr-1"}),"重排"]}),(0,p.jsxs)(tX,{variant:"ghost",size:"sm",onClick:()=>{s(),c(null),u(!1)},className:"h-7",children:[(0,p.jsx)(tV.X,{className:"h-3.5 w-3.5 mr-1"}),"放回"]})]})]}),(0,p.jsx)("p",{className:"jsx-35ab0418fdc54847 text-[11px] text-muted-foreground/80 text-center leading-relaxed",children:0===b.length?(0,p.jsxs)(p.Fragment,{children:["点击",(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-emerald-300",children:"高亮"}),"的可行起点开始,按目标顺序走",(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-emerald-300",children:"相邻同色"}),"节点;走错可",(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-rose-300",children:"撤销"}),"。"]}):(0,p.jsxs)(p.Fragment,{children:["按「目标谐振」顺序,点击",(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-emerald-300",children:"上下左右相邻"}),"的同色节点。每个节点仅可使用一次;走错可",(0,p.jsx)("span",{className:"jsx-35ab0418fdc54847 text-rose-300",children:"撤销"}),"。"]})}),(0,p.jsx)(tE.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 t0(){let e=te(e=>e.activePuzzle),t=te(e=>e.pendingCrystals),a=te(e=>e.startDecode),r=te(e=>e.crystalsPerSec),s=te(e=>e.crystalCap),l=te(e=>e.crystals);return e?(0,p.jsxs)("div",{className:"h-full flex flex-col",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,p.jsx)(tY,{className:"h-4 w-4 text-rose-400"}),(0,p.jsx)("h3",{className:"text-sm font-semibold",children:"解码共振阵列"})]}),(0,p.jsx)("div",{className:"flex-1 min-h-0",children:(0,p.jsx)(tQ,{})})]}):(0,p.jsxs)("div",{className:"jsx-53059b9e32765d5f h-full flex flex-col",children:[(0,p.jsxs)("div",{className:"jsx-53059b9e32765d5f flex items-center gap-2 mb-3",children:[(0,p.jsx)(tY,{className:"h-4 w-4 text-rose-400"}),(0,p.jsx)("h3",{className:"jsx-53059b9e32765d5f text-sm font-semibold",children:"待解码晶体"}),(0,p.jsxs)("span",{className:"jsx-53059b9e32765d5f text-xs text-muted-foreground ml-auto",children:["产能 ",r.toFixed(1),"/s · ",Math.floor(l),"/",Math.floor(s)]})]}),0===t.length?(0,p.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,p.jsxs)("div",{className:"jsx-53059b9e32765d5f relative h-16 w-16",children:[(0,p.jsx)("div",{className:"jsx-53059b9e32765d5f absolute inset-0 rounded-full bg-rose-500/20 blur-xl animate-pulse"}),(0,p.jsx)("div",{className:"jsx-53059b9e32765d5f absolute inset-2 rounded-full border-2 border-rose-400/40 rotate-45"}),(0,p.jsx)("div",{className:"jsx-53059b9e32765d5f absolute inset-4 rounded-full bg-rose-500/30"})]}),(0,p.jsx)("p",{className:"jsx-53059b9e32765d5f text-sm text-muted-foreground",children:"晶体正在生成中…"}),(0,p.jsx)("p",{className:"jsx-53059b9e32765d5f text-xs text-muted-foreground/70 max-w-[220px]",children:"自治无人机每数秒回收一颗记忆晶体,点击下方晶体开启解码。"})]}):(0,p.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,p.jsx)(t1,{crystal:e,onClick:()=>a(e.id)},e.id))}),(0,p.jsx)(tE.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 t1({crystal:e,onClick:t}){let a=1===e.tier?"#34d399":2===e.tier?"#fbbf24":"#e879f9",r=1===e.tier?"常见":2===e.tier?"稀有":"史诗";return(0,p.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,p.jsx)("div",{className:"absolute inset-0 flex items-center justify-center",children:(0,p.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,p.jsx)("div",{className:"absolute inset-0 rotate-45 rounded-md",style:{background:`linear-gradient(135deg, ${a}, ${a}66)`,border:`1px solid ${a}`}}),(0,p.jsx)("div",{className:"absolute inset-2 rotate-45 rounded-sm",style:{background:"linear-gradient(135deg, rgba(255,255,255,0.5), transparent)"}})]})}),(0,p.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,p.jsx)("div",{className:"absolute bottom-1.5 right-1.5 text-[10px] text-white/70",children:r}),(0,p.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,p.jsx)("span",{className:"text-[11px] font-medium text-white",children:"解码 →"})})]})}function t2({className:e,...t}){return(0,p.jsx)("div",{"data-slot":"card",className:(0,tT.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}let t5=(0,tt.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"}]]),t3=(0,tt.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"}]]),t4=(0,tt.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"}]]),t6=(0,tt.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"}]]),t8=(0,tt.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"}]]),t9={Pickaxe:t5,ScanLine:t3,Rocket:t4,BookOpen:t6},t7={mining:"#34d399",decoding:"#fb7185",expedition:"#fbbf24",narrative:"#e879f9"};function ae(){let e=te(e=>e.tech),t=te(e=>e.insights),a=te(e=>e.buyTech);return(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex flex-col gap-3 h-full",children:[(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center justify-between",children:[(0,p.jsx)("h3",{className:"jsx-fbf3fdae687a84dd text-sm font-semibold",children:"技术树"}),(0,p.jsxs)("span",{className:"jsx-fbf3fdae687a84dd text-xs text-muted-foreground",children:["洞见 ",(0,p.jsx)("span",{className:"jsx-fbf3fdae687a84dd text-amber-300 font-mono",children:I(t)})]})]}),(0,p.jsx)("div",{className:"jsx-fbf3fdae687a84dd flex-1 overflow-y-auto echo-scroll pr-1 space-y-3",children:["mining","decoding","expedition","narrative"].map(r=>{let s=T[r],l=t9[s.icon],n=t7[r],o=C.filter(e=>e.branch===r);return(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd",children:[(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center gap-2 mb-1.5 px-1",children:[(0,p.jsx)(l,{className:"jsx-fbf3fdae687a84dd h-3.5 w-3.5"}),(0,p.jsx)("span",{style:{color:n},className:"jsx-fbf3fdae687a84dd text-xs font-medium",children:s.name}),(0,p.jsx)("span",{className:"jsx-fbf3fdae687a84dd text-[10px] text-muted-foreground/70",children:s.desc})]}),(0,p.jsx)("div",{className:"jsx-fbf3fdae687a84dd grid gap-1.5",children:o.map(r=>{let s=(e[r.id]??0)>=1,l=t>=r.cost;return(0,p.jsx)(t2,{className:`p-2.5 transition-all duration-200 ${s?"bg-white/5 border-white/10":l?"bg-black/30 border-white/15 hover:border-white/30 cursor-pointer":"bg-black/20 border-white/5 opacity-60"}`,style:s?{boxShadow:`inset 0 0 0 1px ${n}44, 0 0 12px ${n}22`}:void 0,children:(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center gap-2",children:[(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex-1 min-w-0",children:[(0,p.jsxs)("div",{className:"jsx-fbf3fdae687a84dd flex items-center gap-1.5",children:[(0,p.jsx)("span",{style:{color:s?n:void 0},className:"jsx-fbf3fdae687a84dd text-xs font-semibold truncate",children:r.name}),s&&(0,p.jsx)(tG,{className:"h-3 w-3",style:{color:n}})]}),(0,p.jsx)("p",{className:"jsx-fbf3fdae687a84dd text-[10px] text-muted-foreground/80 truncate",children:r.desc})]}),!s&&(0,p.jsxs)(tX,{size:"sm",variant:l?"default":"ghost",disabled:!l,onClick:()=>{a(r.id)&&tL("techBuy")},className:"h-7 px-2 text-[11px] shrink-0",style:l?{background:`${n}22`,border:`1px solid ${n}66`,color:n}:void 0,children:[(0,p.jsx)(t8,{className:"h-2.5 w-2.5 mr-1"}),r.cost]})]})},r.id)})})]},r)})}),(0,p.jsx)(tE.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}"})]})}let at=(e,t)=>{let a=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(a.size!==r.size)return!1;for(let[e,t]of a)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0};function aa(e){let t=g.default.useRef(void 0);return a=>{let r=e(a);return!function(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Symbol.iterator in e&&Symbol.iterator in t){if("entries"in e&&"entries"in t)return at(e,t);let a=e[Symbol.iterator](),r=t[Symbol.iterator](),s=a.next(),l=r.next();for(;!s.done&&!l.done;){if(!Object.is(s.value,l.value))return!1;s=a.next(),l=r.next()}return!!s.done&&!!l.done}return at({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}(t.current,r)?t.current=r:t.current}}var ar=e.i(48425),as=e.i(96626),al=e.i(30030),an=e.i(30207),ao=g.createContext(void 0);function ai(e){let t=g.useContext(ao);return e||t||"ltr"}var ac=e.i(34620),ad=e.i(81140),au="ScrollArea",[ah,af]=(0,al.createContextScope)(au),[am,ax]=ah(au),ap=g.forwardRef((e,t)=>{let{__scopeScrollArea:a,type:r="hover",dir:s,scrollHideDelay:l=600,...n}=e,[o,i]=g.useState(null),[c,d]=g.useState(null),[u,h]=g.useState(null),[f,m]=g.useState(null),[x,b]=g.useState(null),[v,y]=g.useState(0),[w,j]=g.useState(0),[N,k]=g.useState(!1),[M,S]=g.useState(!1),P=(0,to.useComposedRefs)(t,e=>i(e)),C=ai(s);return(0,p.jsx)(am,{scope:a,type:r,dir:C,scrollHideDelay:l,scrollArea:o,viewport:c,onViewportChange:d,content:u,onContentChange:h,scrollbarX:f,onScrollbarXChange:m,scrollbarXEnabled:N,onScrollbarXEnabledChange:k,scrollbarY:x,onScrollbarYChange:b,scrollbarYEnabled:M,onScrollbarYEnabledChange:S,onCornerWidthChange:y,onCornerHeightChange:j,children:(0,p.jsx)(ar.Primitive.div,{dir:C,...n,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":v+"px","--radix-scroll-area-corner-height":w+"px",...e.style}})})});ap.displayName=au;var ag="ScrollAreaViewport",ab=g.forwardRef((e,t)=>{let{__scopeScrollArea:a,children:r,nonce:s,...l}=e,n=ax(ag,a),o=g.useRef(null),i=(0,to.useComposedRefs)(t,o,n.onViewportChange);return(0,p.jsxs)(p.Fragment,{children:[(0,p.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:s}),(0,p.jsx)(ar.Primitive.div,{"data-radix-scroll-area-viewport":"",...l,ref:i,style:{overflowX:n.scrollbarXEnabled?"scroll":"hidden",overflowY:n.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,p.jsx)("div",{ref:n.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});ab.displayName=ag;var av="ScrollAreaScrollbar",ay=g.forwardRef((e,t)=>{let{forceMount:a,...r}=e,s=ax(av,e.__scopeScrollArea),{onScrollbarXEnabledChange:l,onScrollbarYEnabledChange:n}=s,o="horizontal"===e.orientation;return g.useEffect(()=>(o?l(!0):n(!0),()=>{o?l(!1):n(!1)}),[o,l,n]),"hover"===s.type?(0,p.jsx)(aw,{...r,ref:t,forceMount:a}):"scroll"===s.type?(0,p.jsx)(aj,{...r,ref:t,forceMount:a}):"auto"===s.type?(0,p.jsx)(aN,{...r,ref:t,forceMount:a}):"always"===s.type?(0,p.jsx)(ak,{...r,ref:t}):null});ay.displayName=av;var aw=g.forwardRef((e,t)=>{let{forceMount:a,...r}=e,s=ax(av,e.__scopeScrollArea),[l,n]=g.useState(!1);return g.useEffect(()=>{let e=s.scrollArea,t=0;if(e){let a=()=>{window.clearTimeout(t),n(!0)},r=()=>{t=window.setTimeout(()=>n(!1),s.scrollHideDelay)};return e.addEventListener("pointerenter",a),e.addEventListener("pointerleave",r),()=>{window.clearTimeout(t),e.removeEventListener("pointerenter",a),e.removeEventListener("pointerleave",r)}}},[s.scrollArea,s.scrollHideDelay]),(0,p.jsx)(as.Presence,{present:a||l,children:(0,p.jsx)(aN,{"data-state":l?"visible":"hidden",...r,ref:t})})}),aj=g.forwardRef((e,t)=>{var a;let{forceMount:r,...s}=e,l=ax(av,e.__scopeScrollArea),n="horizontal"===e.orientation,o=aH(()=>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"}},g.useReducer((e,t)=>a[e][t]??e,"hidden"));return g.useEffect(()=>{if("idle"===i){let e=window.setTimeout(()=>c("HIDE"),l.scrollHideDelay);return()=>window.clearTimeout(e)}},[i,l.scrollHideDelay,c]),g.useEffect(()=>{let e=l.viewport,t=n?"scrollLeft":"scrollTop";if(e){let a=e[t],r=()=>{let r=e[t];a!==r&&(c("SCROLL"),o()),a=r};return e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[l.viewport,n,c,o]),(0,p.jsx)(as.Presence,{present:r||"hidden"!==i,children:(0,p.jsx)(ak,{"data-state":"hidden"===i?"hidden":"visible",...s,ref:t,onPointerEnter:(0,ad.composeEventHandlers)(e.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:(0,ad.composeEventHandlers)(e.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),aN=g.forwardRef((e,t)=>{let a=ax(av,e.__scopeScrollArea),{forceMount:r,...s}=e,[l,n]=g.useState(!1),o="horizontal"===e.orientation,i=aH(()=>{if(a.viewport){let e=a.viewport.offsetWidth<a.viewport.scrollWidth,t=a.viewport.offsetHeight<a.viewport.scrollHeight;n(o?e:t)}},10);return aW(a.viewport,i),aW(a.content,i),(0,p.jsx)(as.Presence,{present:r||l,children:(0,p.jsx)(ak,{"data-state":l?"visible":"hidden",...s,ref:t})})}),ak=g.forwardRef((e,t)=>{let{orientation:a="vertical",...r}=e,s=ax(av,e.__scopeScrollArea),l=g.useRef(null),n=g.useRef(0),[o,i]=g.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),c=aD(o.viewport,o.content),d={...r,sizes:o,onSizesChange:i,hasThumb:!!(c>0&&c<1),onThumbChange:e=>l.current=e,onThumbPointerUp:()=>n.current=0,onThumbPointerDown:e=>n.current=e};function u(e,t){return function(e,t,a,r="ltr"){let s=aL(a),l=t||s/2,n=a.scrollbar.paddingStart+l,o=a.scrollbar.size-a.scrollbar.paddingEnd-(s-l),i=a.content-a.viewport;return aF([n,o],"ltr"===r?[0,i]:[-1*i,0])(e)}(e,n.current,o,t)}return"horizontal"===a?(0,p.jsx)(aM,{...d,ref:t,onThumbPositionChange:()=>{if(s.viewport&&l.current){let e=az(s.viewport.scrollLeft,o,s.dir);l.current.style.transform=`translate3d(${e}px, 0, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollLeft=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollLeft=u(e,s.dir))}}):"vertical"===a?(0,p.jsx)(aS,{...d,ref:t,onThumbPositionChange:()=>{if(s.viewport&&l.current){let e=az(s.viewport.scrollTop,o);l.current.style.transform=`translate3d(0, ${e}px, 0)`}},onWheelScroll:e=>{s.viewport&&(s.viewport.scrollTop=e)},onDragScroll:e=>{s.viewport&&(s.viewport.scrollTop=u(e))}}):null}),aM=g.forwardRef((e,t)=>{let{sizes:a,onSizesChange:r,...s}=e,l=ax(av,e.__scopeScrollArea),[n,o]=g.useState(),i=g.useRef(null),c=(0,to.useComposedRefs)(t,i,l.onScrollbarXChange);return g.useEffect(()=>{i.current&&o(getComputedStyle(i.current))},[i]),(0,p.jsx)(aT,{"data-orientation":"horizontal",...s,ref:c,sizes:a,style:{bottom:0,left:"rtl"===l.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===l.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":aL(a)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.x),onDragScroll:t=>e.onDragScroll(t.x),onWheelScroll:(t,a)=>{if(l.viewport){var r,s;let n=l.viewport.scrollLeft+t.deltaX;e.onWheelScroll(n),r=n,s=a,r>0&&r<s&&t.preventDefault()}},onResize:()=>{i.current&&l.viewport&&n&&r({content:l.viewport.scrollWidth,viewport:l.viewport.offsetWidth,scrollbar:{size:i.current.clientWidth,paddingStart:aB(n.paddingLeft),paddingEnd:aB(n.paddingRight)}})}})}),aS=g.forwardRef((e,t)=>{let{sizes:a,onSizesChange:r,...s}=e,l=ax(av,e.__scopeScrollArea),[n,o]=g.useState(),i=g.useRef(null),c=(0,to.useComposedRefs)(t,i,l.onScrollbarYChange);return g.useEffect(()=>{i.current&&o(getComputedStyle(i.current))},[i]),(0,p.jsx)(aT,{"data-orientation":"vertical",...s,ref:c,sizes:a,style:{top:0,right:"ltr"===l.dir?0:void 0,left:"rtl"===l.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":aL(a)+"px",...e.style},onThumbPointerDown:t=>e.onThumbPointerDown(t.y),onDragScroll:t=>e.onDragScroll(t.y),onWheelScroll:(t,a)=>{if(l.viewport){var r,s;let n=l.viewport.scrollTop+t.deltaY;e.onWheelScroll(n),r=n,s=a,r>0&&r<s&&t.preventDefault()}},onResize:()=>{i.current&&l.viewport&&n&&r({content:l.viewport.scrollHeight,viewport:l.viewport.offsetHeight,scrollbar:{size:i.current.clientHeight,paddingStart:aB(n.paddingTop),paddingEnd:aB(n.paddingBottom)}})}})}),[aP,aC]=ah(av),aT=g.forwardRef((e,t)=>{let{__scopeScrollArea:a,sizes:r,hasThumb:s,onThumbChange:l,onThumbPointerUp:n,onThumbPointerDown:o,onThumbPositionChange:i,onDragScroll:c,onWheelScroll:d,onResize:u,...h}=e,f=ax(av,a),[m,x]=g.useState(null),b=(0,to.useComposedRefs)(t,e=>x(e)),v=g.useRef(null),y=g.useRef(""),w=f.viewport,j=r.content-r.viewport,N=(0,an.useCallbackRef)(d),k=(0,an.useCallbackRef)(i),M=aH(u,10);function S(e){v.current&&c({x:e.clientX-v.current.left,y:e.clientY-v.current.top})}return g.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]),g.useEffect(k,[r,k]),aW(m,M),aW(f.content,M),(0,p.jsx)(aP,{scope:a,scrollbar:m,hasThumb:s,onThumbChange:(0,an.useCallbackRef)(l),onThumbPointerUp:(0,an.useCallbackRef)(n),onThumbPositionChange:k,onThumbPointerDown:(0,an.useCallbackRef)(o),children:(0,p.jsx)(ar.Primitive.div,{...h,ref:b,style:{position:"absolute",...h.style},onPointerDown:(0,ad.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"),S(e))}),onPointerMove:(0,ad.composeEventHandlers)(e.onPointerMove,S),onPointerUp:(0,ad.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})})})}),a$="ScrollAreaThumb",a_=g.forwardRef((e,t)=>{let{forceMount:a,...r}=e,s=aC(a$,e.__scopeScrollArea);return(0,p.jsx)(as.Presence,{present:a||s.hasThumb,children:(0,p.jsx)(aR,{ref:t,...r})})}),aR=g.forwardRef((e,t)=>{let{__scopeScrollArea:a,style:r,...s}=e,l=ax(a$,a),n=aC(a$,a),{onThumbPositionChange:o}=n,i=(0,to.useComposedRefs)(t,e=>n.onThumbChange(e)),c=g.useRef(void 0),d=aH(()=>{c.current&&(c.current(),c.current=void 0)},100);return g.useEffect(()=>{let e=l.viewport;if(e){let t=()=>{d(),c.current||(c.current=aO(e,o),o())};return o(),e.addEventListener("scroll",t),()=>e.removeEventListener("scroll",t)}},[l.viewport,d,o]),(0,p.jsx)(ar.Primitive.div,{"data-state":n.hasThumb?"visible":"hidden",...s,ref:i,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:(0,ad.composeEventHandlers)(e.onPointerDownCapture,e=>{let t=e.target.getBoundingClientRect(),a=e.clientX-t.left,r=e.clientY-t.top;n.onThumbPointerDown({x:a,y:r})}),onPointerUp:(0,ad.composeEventHandlers)(e.onPointerUp,n.onThumbPointerUp)})});a_.displayName=a$;var aE="ScrollAreaCorner",aA=g.forwardRef((e,t)=>{let a=ax(aE,e.__scopeScrollArea),r=!!(a.scrollbarX&&a.scrollbarY);return"scroll"!==a.type&&r?(0,p.jsx)(aI,{...e,ref:t}):null});aA.displayName=aE;var aI=g.forwardRef((e,t)=>{let{__scopeScrollArea:a,...r}=e,s=ax(aE,a),[l,n]=g.useState(0),[o,i]=g.useState(0),c=!!(l&&o);return aW(s.scrollbarX,()=>{let e=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(e),i(e)}),aW(s.scrollbarY,()=>{let e=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(e),n(e)}),c?(0,p.jsx)(ar.Primitive.div,{...r,ref:t,style:{width:l,height:o,position:"absolute",right:"ltr"===s.dir?0:void 0,left:"rtl"===s.dir?0:void 0,bottom:0,...e.style}}):null});function aB(e){return e?parseInt(e,10):0}function aD(e,t){let a=e/t;return isNaN(a)?0:a}function aL(e){let t=aD(e.viewport,e.content),a=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-a)*t,18)}function az(e,t,a="ltr"){let r=aL(t),s=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,l=t.scrollbar.size-s,n=t.content-t.viewport,o=function(e,[t,a]){return Math.min(a,Math.max(t,e))}(e,"ltr"===a?[0,n]:[-1*n,0]);return aF([0,n],[0,l-r])(o)}function aF(e,t){return a=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(a-e[0])}}var aO=(e,t=()=>{})=>{let a={left:e.scrollLeft,top:e.scrollTop},r=0;return!function s(){let l={left:e.scrollLeft,top:e.scrollTop},n=a.left!==l.left,o=a.top!==l.top;(n||o)&&t(),a=l,r=window.requestAnimationFrame(s)}(),()=>window.cancelAnimationFrame(r)};function aH(e,t){let a=(0,an.useCallbackRef)(e),r=g.useRef(0);return g.useEffect(()=>()=>window.clearTimeout(r.current),[]),g.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(a,t)},[a,t])}function aW(e,t){let a=(0,an.useCallbackRef)(t);(0,ac.useLayoutEffect)(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(a)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,a])}function aK({className:e,children:t,...a}){return(0,p.jsxs)(ap,{"data-slot":"scroll-area",className:(0,tT.cn)("relative",e),...a,children:[(0,p.jsx)(ab,{"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,p.jsx)(aq,{}),(0,p.jsx)(aA,{})]})}function aq({className:e,orientation:t="vertical",...a}){return(0,p.jsx)(ay,{"data-slot":"scroll-area-scrollbar",orientation:t,className:(0,tT.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,p.jsx)(a_,{"data-slot":"scroll-area-thumb",className:"bg-border relative flex-1 rounded-full"})})}let aU=["","寂灭前夜","谐振纪","飞升潮","回响纪","接触纪"];function aX({layer:e,unlocked:t,isRead:a,onMarkRead:r}){let s=1===e.layer,l=t&&!a?s?"border-amber-400/30":"border-fuchsia-400/30":"border-white/10",n=t&&!a?s?"bg-amber-950/20":"bg-fuchsia-950/20":s?"bg-amber-950/10":"bg-fuchsia-950/10";return(0,p.jsxs)("div",{className:`rounded-lg border ${l} ${t?n:"bg-black/20"} p-3 transition-colors duration-300`,children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-2 gap-2",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5 min-w-0",children:[(0,p.jsx)("span",{className:`text-[9px] font-mono px-1.5 py-0.5 rounded shrink-0 ${t?`${s?"bg-amber-500/15":"bg-fuchsia-500/15"} ${s?"text-amber-300":"text-fuchsia-300"}`:"bg-white/5 text-muted-foreground/60"}`,children:s?"L1":"L2"}),(0,p.jsx)("span",{className:`text-[11px] font-semibold truncate ${t?s?"text-amber-300":"text-fuchsia-300":"text-muted-foreground/70"}`,children:t?e.title:"???"}),t&&a&&(0,p.jsxs)("span",{className:"flex items-center gap-0.5 text-[9px] text-muted-foreground/70 shrink-0",title:"已读",children:[(0,p.jsx)(tG,{className:"h-2.5 w-2.5"}),"已读"]}),t&&!a&&(0,p.jsxs)("span",{className:"flex items-center gap-0.5 shrink-0",title:"新解锁 · 点击文本可标记已读",children:[(0,p.jsx)("span",{className:`inline-block h-1.5 w-1.5 rounded-full animate-pulse ${s?"bg-amber-400":"bg-fuchsia-400"}`}),(0,p.jsx)("span",{className:"text-[9px] text-muted-foreground/80",children:"新"})]})]}),!t&&(0,p.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-amber-200/50 shrink-0",children:[(0,p.jsx)(t8,{className:"h-2.5 w-2.5"}),(0,p.jsx)("span",{className:"font-mono hidden xs:inline sm:inline",children:e.unlockHint})]})]}),t?(0,p.jsxs)("button",{type:"button",onClick:r,className:"block text-left w-full focus:outline-none focus-visible:ring-1 focus-visible:ring-white/30 rounded",title:a?"已读":"点击标记为已读","aria-label":a?"已读":"标记为已读",children:[(0,p.jsxs)("p",{className:`text-[12px] leading-relaxed italic ${s?"text-amber-50/90":"text-fuchsia-50/90"} ${a?"opacity-80":""}`,children:["「",e.text,"」"]}),!a&&(0,p.jsx)("span",{className:"block mt-1.5 text-[9px] text-muted-foreground/40",children:"▸ 点击文本标记已读"})]}):(0,p.jsxs)("p",{className:"text-[12px] leading-relaxed blur-sm select-none text-muted-foreground/40 pointer-events-none","aria-hidden":"true",children:["「","▓░▒░ ▓▒░▒▓ ░▒▓░ ▒▓░▒░ ▓▒░ ▓░▒░▒ ░▒▓░▒ ▓░▒ ░▒▓░ ▒▓░▒▓░ ▓▒░░▒▓ ░▒▓ ▓░▒▒░ ▓▒░▓░▒ ░▒▓░ ▒▓░▒░ ▓▒░ ░▒▓░","」"]}),!t&&(0,p.jsx)("div",{className:"mt-2 pt-2 border-t border-white/5 text-[10px] text-amber-200/50",children:(0,p.jsxs)("span",{className:"font-mono",children:["🔒 ",e.unlockHint]})})]})}function aV(){let{fragments:e,totalDecoded:t,ascensions:a,contact:r,bossKills:s,readLoreLayers:l,markLoreLayerRead:n}=te(aa(e=>({fragments:e.fragments,totalDecoded:e.totalDecoded,ascensions:e.ascensions,contact:e.contact,bossKills:e.bossKills,readLoreLayers:Array.isArray(e.readLoreLayers)?e.readLoreLayers:[],markLoreLayerRead:e.markLoreLayerRead}))),o=function(e){for(let t of $)if(e<t.threshold)return t.threshold;return null}(t),[i,c]=(0,g.useState)(null),d=(0,g.useMemo)(()=>$.filter(e=>1===e.era),[]),u=d.filter(t=>e[t.id]).length,h=(0,g.useMemo)(()=>new Set(l),[l]),f={ascensions:a,totalDecoded:t,contact:r,fragments:e,bossKills:s},m=(0,g.useMemo)(()=>{let e=0,t=0,a=0;for(let r of d)if(r.loreLayers)for(let s of r.loreLayers)e+=1,_(s.unlock,f)&&(t+=1,h.has(`${r.id}_L${s.layer}`)&&(a+=1));return{total:e,unlocked:t,read:a}},[d,a,t,r,e,s,h]);return(0,p.jsxs)("div",{className:"flex flex-col gap-2 h-full",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between",children:[(0,p.jsxs)("h3",{className:"text-sm font-semibold flex items-center gap-1.5",children:[(0,p.jsx)(t6,{className:"h-4 w-4 text-fuchsia-400"}),"记忆图谱"]}),(0,p.jsxs)("span",{className:"text-xs text-muted-foreground",children:[u,"/",d.length," · 第一纪元"]})]}),(0,p.jsxs)("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-1 text-[10px] px-1",children:[(0,p.jsxs)("span",{className:"text-muted-foreground/80",children:["深层叙事",(0,p.jsxs)("span",{className:"font-mono ml-1",children:[(0,p.jsx)("span",{className:"text-amber-300",children:m.unlocked}),(0,p.jsxs)("span",{className:"text-muted-foreground/60",children:[" / ",m.total," 已解锁"]})]})]}),(0,p.jsxs)("span",{className:"text-muted-foreground/80",children:["已读",(0,p.jsxs)("span",{className:"font-mono ml-1",children:[(0,p.jsx)("span",{className:"text-emerald-300",children:m.read}),(0,p.jsxs)("span",{className:"text-muted-foreground/60",children:[" / ",m.unlocked," 已解锁层"]})]})]})]}),o&&(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground/80 px-1",children:["再解码 ",(0,p.jsx)("span",{className:"text-fuchsia-300 font-mono",children:o-t})," 颗 → 下一个碎片"]}),(0,p.jsx)(aK,{className:"flex-1 min-h-0",children:(0,p.jsx)("div",{className:"grid grid-cols-2 gap-2 pr-2",children:d.map((t,a)=>{let r=!!e[t.id],s=t.loreLayers?.find(e=>1===e.layer),l=t.loreLayers?.find(e=>2===e.layer),n=!!s&&_(s.unlock,f),o=!!l&&_(l.unlock,f),i=n||o,d=n&&!h.has(`${t.id}_L1`)||o&&!h.has(`${t.id}_L2`);return(0,p.jsxs)("button",{onClick:()=>r&&c(t),disabled:!r,className:`relative aspect-[4/3] rounded-xl border text-left p-2 transition-all duration-300 overflow-hidden ${r?"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:r?{boxShadow:"0 0 16px rgba(232,121,249,0.15)"}:void 0,children:[(0,p.jsx)("span",{className:`absolute top-1.5 right-1.5 text-[9px] font-mono ${r?"text-fuchsia-300/70":"text-white/20"}`,children:String(a+1).padStart(2,"0")}),r?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{className:"absolute -top-3 -right-3 h-12 w-12 rounded-full bg-fuchsia-500/20 blur-xl"}),(0,p.jsxs)("div",{className:"flex items-center gap-1 mb-1",children:[(0,p.jsx)(tY,{className:"h-3 w-3 text-fuchsia-300"}),i&&(0,p.jsxs)("span",{className:"flex items-center gap-0.5",title:d?"此碎片含未读的深层文本":"此碎片的深层文本均已读",children:[n&&(0,p.jsx)("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${n&&!h.has(`${t.id}_L1`)?"bg-amber-400 shadow-[0_0_4px_rgba(251,191,36,0.8)] animate-pulse":"bg-amber-400/30"}`}),o&&(0,p.jsx)("span",{className:`inline-block h-1.5 w-1.5 rounded-full ${o&&!h.has(`${t.id}_L2`)?"bg-fuchsia-400 shadow-[0_0_4px_rgba(232,121,249,0.8)] animate-pulse":"bg-fuchsia-400/30"}`})]})]}),(0,p.jsx)("div",{className:"text-[11px] font-semibold text-fuchsia-100 leading-tight",children:t.title}),(0,p.jsxs)("div",{className:"text-[9px] text-muted-foreground mt-1 line-clamp-2",children:[t.echo.slice(0,28),"…"]})]}):(0,p.jsxs)("div",{className:"flex flex-col items-center justify-center h-full gap-1",children:[(0,p.jsx)(t8,{className:"h-4 w-4 text-white/20"}),(0,p.jsxs)("span",{className:"text-[9px] text-white/30",children:["需解码 ",t.threshold," 颗"]})]})]},t.id)})})}),i&&(0,p.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4 bg-black/70 backdrop-blur-sm",onClick:()=>c(null),children:(0,p.jsxs)(t2,{className:"max-w-md w-full max-h-[88vh] overflow-y-auto p-4 sm:p-5 bg-gradient-to-br from-fuchsia-950/40 to-black/80 border-fuchsia-400/40 [scrollbar-width:thin] [scrollbar-color:rgba(232,121,249,0.4)_transparent]",onClick:e=>e.stopPropagation(),style:{boxShadow:"0 0 40px rgba(232,121,249,0.25)"},children:[(0,p.jsxs)("div",{className:"flex items-center gap-2 mb-3",children:[(0,p.jsx)(tY,{className:"h-4 w-4 text-fuchsia-300 shrink-0"}),(0,p.jsxs)("span",{className:"text-[10px] text-fuchsia-300/70 font-mono truncate",children:["第 ",i.era," 纪元 · ",aU[i.era]||""]})]}),(0,p.jsx)("h4",{className:"text-base sm:text-lg font-bold text-fuchsia-100 mb-4 break-words",children:i.title}),(0,p.jsxs)("div",{className:"rounded-lg border border-emerald-400/30 bg-emerald-950/20 p-3 mb-3",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5 mb-2",children:[(0,p.jsx)("span",{className:"text-[9px] font-mono px-1.5 py-0.5 rounded bg-emerald-500/15 text-emerald-300",children:"L0"}),(0,p.jsx)("span",{className:"text-[11px] font-semibold text-emerald-300",children:"表层回响"})]}),(0,p.jsxs)("p",{className:"text-[12px] leading-relaxed italic text-emerald-50/90",children:["「",i.echo,"」"]})]}),i.loreLayers?.slice().sort((e,t)=>e.layer-t.layer).map(e=>{let t=_(e.unlock,f),a=t&&h.has(`${i.id}_L${e.layer}`);return(0,p.jsxs)("div",{className:"mt-3 first:mt-0",children:[(0,p.jsx)("div",{className:"border-t border-white/5 mb-3"}),(0,p.jsx)(aX,{layer:e,unlocked:t,isRead:a,onMarkRead:()=>n(i.id,e.layer)})]},`${i.id}-L${e.layer}`)}),!i.loreLayers?.length&&(0,p.jsx)("div",{className:"mt-4 pt-3 border-t border-white/5 text-[10px] text-muted-foreground/50 italic",children:"此碎片暂无更深层叙事。"}),(0,p.jsx)("button",{onClick:()=>c(null),className:"mt-5 text-xs text-muted-foreground hover:text-foreground transition",children:"关闭"})]})})]})}var aY=g[" useId ".trim().toString()]||(()=>void 0),aG=0;function aJ(e){let[t,a]=g.useState(aY());return(0,ac.useLayoutEffect)(()=>{e||a(e=>e??String(aG++))},[e]),e||(t?`radix-${t}`:"")}var aZ=e.i(69340),aQ=e.i(26330),a0="focusScope.autoFocusOnMount",a1="focusScope.autoFocusOnUnmount",a2={bubbles:!1,cancelable:!0},a5=g.forwardRef((e,t)=>{let{loop:a=!1,trapped:r=!1,onMountAutoFocus:s,onUnmountAutoFocus:l,...n}=e,[o,i]=g.useState(null),c=(0,an.useCallbackRef)(s),d=(0,an.useCallbackRef)(l),u=g.useRef(null),h=(0,to.useComposedRefs)(t,e=>i(e)),f=g.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;g.useEffect(()=>{if(r){let e=function(e){if(f.paused||!o)return;let t=e.target;o.contains(t)?u.current=t:a6(u.current,{select:!0})},t=function(e){if(f.paused||!o)return;let t=e.relatedTarget;null!==t&&(o.contains(t)||a6(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&&a6(o)});return o&&a.observe(o,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),a.disconnect()}}},[r,o,f.paused]),g.useEffect(()=>{if(o){a8.add(f);let e=document.activeElement;if(!o.contains(e)){let t=new CustomEvent(a0,a2);o.addEventListener(a0,c),o.dispatchEvent(t),t.defaultPrevented||(function(e,{select:t=!1}={}){let a=document.activeElement;for(let r of e)if(a6(r,{select:t}),document.activeElement!==a)return}(a3(o).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&a6(o))}return()=>{o.removeEventListener(a0,c),setTimeout(()=>{let t=new CustomEvent(a1,a2);o.addEventListener(a1,d),o.dispatchEvent(t),t.defaultPrevented||a6(e??document.body,{select:!0}),o.removeEventListener(a1,d),a8.remove(f)},0)}}},[o,c,d,f]);let m=g.useCallback(e=>{if(!a&&!r||f.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,s=document.activeElement;if(t&&s){var l;let t,r=e.currentTarget,[n,o]=[a4(t=a3(l=r),l),a4(t.reverse(),l)];n&&o?e.shiftKey||s!==o?e.shiftKey&&s===n&&(e.preventDefault(),a&&a6(o,{select:!0})):(e.preventDefault(),a&&a6(n,{select:!0})):s===r&&e.preventDefault()}},[a,r,f.paused]);return(0,p.jsx)(ar.Primitive.div,{tabIndex:-1,...n,ref:h,onKeyDown:m})});function a3(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 a4(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 a6(e,{select:t=!1}={}){if(e&&e.focus){var a;let r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&(a=e)instanceof HTMLInputElement&&"select"in a&&t&&e.select()}}a5.displayName="FocusScope";var a8=(o=[],{add(e){let t=o[0];e!==t&&t?.pause(),(o=a9(o,e)).unshift(e)},remove(e){o=a9(o,e),o[0]?.resume()}});function a9(e,t){let a=[...e],r=a.indexOf(t);return -1!==r&&a.splice(r,1),a}var a7=e.i(74606),re=0;function rt(){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 ra=function(){return(ra=Object.assign||function(e){for(var t,a=1,r=arguments.length;a<r;a++)for(var s in t=arguments[a])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)};function rr(e,t){var a={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&0>t.indexOf(r)&&(a[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var s=0,r=Object.getOwnPropertySymbols(e);s<r.length;s++)0>t.indexOf(r[s])&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(a[r[s]]=e[r[s]]);return a}var rs=("function"==typeof SuppressedError&&SuppressedError,"right-scroll-bar-position"),rl="width-before-scroll-bar";function rn(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var ro="u">typeof window?g.useLayoutEffect:g.useEffect,ri=new WeakMap,rc=(void 0===c&&(c={}),(void 0===d&&(d=function(e){return e}),u=[],h=!1,f={read:function(){if(h)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return u.length?u[u.length-1]:null},useMedium:function(e){var t=d(e,h);return u.push(t),function(){u=u.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(h=!0;u.length;){var t=u;u=[],t.forEach(e)}u={push:function(t){return e(t)},filter:function(){return u}}},assignMedium:function(e){h=!0;var t=[];if(u.length){var a=u;u=[],a.forEach(e),t=u}var r=function(){var a=t;t=[],a.forEach(e)},s=function(){return Promise.resolve().then(r)};s(),u={push:function(e){t.push(e),s()},filter:function(e){return t=t.filter(e),u}}}}).options=ra({async:!0,ssr:!1},c),f),rd=function(){},ru=g.forwardRef(function(e,t){var a,r,s,l,n=g.useRef(null),o=g.useState({onScrollCapture:rd,onWheelCapture:rd,onTouchMoveCapture:rd}),i=o[0],c=o[1],d=e.forwardProps,u=e.children,h=e.className,f=e.removeScrollBar,m=e.enabled,x=e.shards,p=e.sideCar,b=e.noRelative,v=e.noIsolation,y=e.inert,w=e.allowPinchZoom,j=e.as,N=e.gapMode,k=rr(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),M=(a=[n,t],r=function(e){return a.forEach(function(t){return rn(t,e)})},(s=(0,g.useState)(function(){return{value:null,callback:r,facade:{get current(){return s.value},set current(value){var e=s.value;e!==value&&(s.value=value,s.callback(value,e))}}}})[0]).callback=r,l=s.facade,ro(function(){var e=ri.get(l);if(e){var t=new Set(e),r=new Set(a),s=l.current;t.forEach(function(e){r.has(e)||rn(e,null)}),r.forEach(function(e){t.has(e)||rn(e,s)})}ri.set(l,a)},[a]),l),S=ra(ra({},k),i);return g.createElement(g.Fragment,null,m&&g.createElement(p,{sideCar:rc,removeScrollBar:f,shards:x,noRelative:b,noIsolation:v,inert:y,setCallbacks:c,allowPinchZoom:!!w,lockRef:n,gapMode:N}),d?g.cloneElement(g.Children.only(u),ra(ra({},S),{ref:M})):g.createElement(void 0===j?"div":j,ra({},S,{className:h,ref:M}),u))});ru.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},ru.classNames={fullWidth:rl,zeroRight:rs};var rh=function(e){var t=e.sideCar,a=rr(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error("Sidecar medium not found");return g.createElement(r,ra({},a))};rh.isSideCarExport=!0;var rf=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=x||("u">typeof __webpack_nonce__?__webpack_nonce__:void 0);return t&&e.setAttribute("nonce",t),e}())){var r,s;(r=t).styleSheet?r.styleSheet.cssText=a:r.appendChild(document.createTextNode(a)),s=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(s)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},rm=function(){var e=rf();return function(t,a){g.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&a])}},rx=function(){var e=rm();return function(t){return e(t.styles,t.dynamic),null}},rp={left:0,top:0,right:0,gap:0},rg=function(e){return parseInt(e||"",10)||0},rb=function(e){var t=window.getComputedStyle(document.body),a=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],s=t["padding"===e?"paddingRight":"marginRight"];return[rg(a),rg(r),rg(s)]},rv=function(e){if(void 0===e&&(e="margin"),"u"<typeof window)return rp;var t=rb(e),a=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-a+t[2]-t[0])}},ry=rx(),rw="data-scroll-locked",rj=function(e,t,a,r){var s=e.left,l=e.top,n=e.right,o=e.gap;return void 0===a&&(a="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(o,"px ").concat(r,";\n }\n body[").concat(rw,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===a&&"\n padding-left: ".concat(s,"px;\n padding-top: ").concat(l,"px;\n padding-right: ").concat(n,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(o,"px ").concat(r,";\n "),"padding"===a&&"padding-right: ".concat(o,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(rs," {\n right: ").concat(o,"px ").concat(r,";\n }\n \n .").concat(rl," {\n margin-right: ").concat(o,"px ").concat(r,";\n }\n \n .").concat(rs," .").concat(rs," {\n right: 0 ").concat(r,";\n }\n \n .").concat(rl," .").concat(rl," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(rw,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(o,"px;\n }\n")},rN=function(){var e=parseInt(document.body.getAttribute(rw)||"0",10);return isFinite(e)?e:0},rk=function(){g.useEffect(function(){return document.body.setAttribute(rw,(rN()+1).toString()),function(){var e=rN()-1;e<=0?document.body.removeAttribute(rw):document.body.setAttribute(rw,e.toString())}},[])},rM=function(e){var t=e.noRelative,a=e.noImportant,r=e.gapMode,s=void 0===r?"margin":r;rk();var l=g.useMemo(function(){return rv(s)},[s]);return g.createElement(ry,{styles:rj(l,!t,s,a?"":"!important")})},rS=!1;if("u">typeof window)try{var rP=Object.defineProperty({},"passive",{get:function(){return rS=!0,!0}});window.addEventListener("test",rP,rP),window.removeEventListener("test",rP,rP)}catch(e){rS=!1}var rC=!!rS&&{passive:!1},rT=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])},r$=function(e,t){var a=t.ownerDocument,r=t;do{if("u">typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),r_(e,r)){var s=rR(e,r);if(s[1]>s[2])return!0}r=r.parentNode}while(r&&r!==a.body)return!1},r_=function(e,t){return"v"===e?rT(t,"overflowY"):rT(t,"overflowX")},rR=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},rE=function(e,t,a,r,s){var l,n=(l=window.getComputedStyle(t).direction,"h"===e&&"rtl"===l?-1:1),o=n*r,i=a.target,c=t.contains(i),d=!1,u=o>0,h=0,f=0;do{if(!i)break;var m=rR(e,i),x=m[0],p=m[1]-m[2]-n*x;(x||p)&&r_(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&&(s&&1>Math.abs(h)||!s&&o>h)?d=!0:!u&&(s&&1>Math.abs(f)||!s&&-o>f)&&(d=!0),d},rA=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},rI=function(e){return[e.deltaX,e.deltaY]},rB=function(e){return e&&"current"in e?e.current:e},rD=0,rL=[];let rz=(m=function(e){var t=g.useRef([]),a=g.useRef([0,0]),r=g.useRef(),s=g.useState(rD++)[0],l=g.useState(rx)[0],n=g.useRef(e);g.useEffect(function(){n.current=e},[e]),g.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(s));var t=(function(e,t,a){if(a||2==arguments.length)for(var r,s=0,l=t.length;s<l;s++)!r&&s in t||(r||(r=Array.prototype.slice.call(t,0,s)),r[s]=t[s]);return e.concat(r||Array.prototype.slice.call(t))})([e.lockRef.current],(e.shards||[]).map(rB),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(s))}),function(){document.body.classList.remove("block-interactivity-".concat(s)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(s))})}}},[e.inert,e.lockRef.current,e.shards]);var o=g.useCallback(function(e,t){if("touches"in e&&2===e.touches.length||"wheel"===e.type&&e.ctrlKey)return!n.current.allowPinchZoom;var s,l=rA(e),o=a.current,i="deltaX"in e?e.deltaX:o[0]-l[0],c="deltaY"in e?e.deltaY:o[1]-l[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=r$(u,d);if(!m)return!0;if(m?s=u:(s="v"===u?"h":"v",m=r$(u,d)),!m)return!1;if(!r.current&&"changedTouches"in e&&(i||c)&&(r.current=s),!s)return!0;var x=r.current||s;return rE(x,t,e,"h"===x?i:c,!0)},[]),i=g.useCallback(function(e){if(rL.length&&rL[rL.length-1]===l){var a="deltaY"in e?rI(e):rA(e),r=t.current.filter(function(t){var r;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(r=t.delta,r[0]===a[0]&&r[1]===a[1])})[0];if(r&&r.should){e.cancelable&&e.preventDefault();return}if(!r){var s=(n.current.shards||[]).map(rB).filter(Boolean).filter(function(t){return t.contains(e.target)});(s.length>0?o(e,s[0]):!n.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),c=g.useCallback(function(e,a,r,s){var l={name:e,delta:a,target:r,should:s,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(r)};t.current.push(l),setTimeout(function(){t.current=t.current.filter(function(e){return e!==l})},1)},[]),d=g.useCallback(function(e){a.current=rA(e),r.current=void 0},[]),u=g.useCallback(function(t){c(t.type,rI(t),t.target,o(t,e.lockRef.current))},[]),h=g.useCallback(function(t){c(t.type,rA(t),t.target,o(t,e.lockRef.current))},[]);g.useEffect(function(){return rL.push(l),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:h}),document.addEventListener("wheel",i,rC),document.addEventListener("touchmove",i,rC),document.addEventListener("touchstart",d,rC),function(){rL=rL.filter(function(e){return e!==l}),document.removeEventListener("wheel",i,rC),document.removeEventListener("touchmove",i,rC),document.removeEventListener("touchstart",d,rC)}},[]);var f=e.removeScrollBar,m=e.inert;return g.createElement(g.Fragment,null,m?g.createElement(l,{styles:"\n .block-interactivity-".concat(s," {pointer-events: none;}\n .allow-interactivity-").concat(s," {pointer-events: all;}\n")}):null,f?g.createElement(rM,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},rc.useMedium(m),rh);var rF=g.forwardRef(function(e,t){return g.createElement(ru,ra({},e,{ref:t,sideCar:rz}))});rF.classNames=ru.classNames;var rO=new WeakMap,rH=new WeakMap,rW={},rK=0,rq=function(e){return e&&(e.host||rq(e.parentNode))},rU=function(e,t,a,r){var s=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var a=rq(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});rW[a]||(rW[a]=new WeakMap);var l=rW[a],n=[],o=new Set,i=new Set(s),c=function(e){!e||o.has(e)||(o.add(e),c(e.parentNode))};s.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(r),s=null!==t&&"false"!==t,i=(rO.get(e)||0)+1,c=(l.get(e)||0)+1;rO.set(e,i),l.set(e,c),n.push(e),1===i&&s&&rH.set(e,!0),1===c&&e.setAttribute(a,"true"),s||e.setAttribute(r,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return d(t),o.clear(),rK++,function(){n.forEach(function(e){var t=rO.get(e)-1,s=l.get(e)-1;rO.set(e,t),l.set(e,s),t||(rH.has(e)||e.removeAttribute(r),rH.delete(e)),s||e.removeAttribute(a)}),--rK||(rO=new WeakMap,rO=new WeakMap,rH=new WeakMap,rW={})}},rX=function(e,t,a){void 0===a&&(a="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),s=t||("u"<typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body);return s?(r.push.apply(r,Array.from(s.querySelectorAll("[aria-live], script"))),rU(r,s,a,"aria-hidden")):function(){return null}},rV=Symbol("radix.slottable");function rY(e){return g.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===rV}var rG="Dialog",[rJ,rZ]=(0,al.createContextScope)(rG),[rQ,r0]=rJ(rG),r1=e=>{let{__scopeDialog:t,children:a,open:r,defaultOpen:s,onOpenChange:l,modal:n=!0}=e,o=g.useRef(null),i=g.useRef(null),[c,d]=(0,aZ.useControllableState)({prop:r,defaultProp:s??!1,onChange:l,caller:rG});return(0,p.jsx)(rQ,{scope:t,triggerRef:o,contentRef:i,contentId:aJ(),titleId:aJ(),descriptionId:aJ(),open:c,onOpenChange:d,onOpenToggle:g.useCallback(()=>d(e=>!e),[d]),modal:n,children:a})};r1.displayName=rG;var r2="DialogTrigger";g.forwardRef((e,t)=>{let{__scopeDialog:a,...r}=e,s=r0(r2,a),l=(0,to.useComposedRefs)(t,s.triggerRef);return(0,p.jsx)(ar.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":sh(s.open),...r,ref:l,onClick:(0,ad.composeEventHandlers)(e.onClick,s.onOpenToggle)})}).displayName=r2;var r5="DialogPortal",[r3,r4]=rJ(r5,{forceMount:void 0}),r6=e=>{let{__scopeDialog:t,forceMount:a,children:r,container:s}=e,l=r0(r5,t);return(0,p.jsx)(r3,{scope:t,forceMount:a,children:g.Children.map(r,e=>(0,p.jsx)(as.Presence,{present:a||l.open,children:(0,p.jsx)(a7.Portal,{asChild:!0,container:s,children:e})}))})};r6.displayName=r5;var r8="DialogOverlay",r9=g.forwardRef((e,t)=>{let a=r4(r8,e.__scopeDialog),{forceMount:r=a.forceMount,...s}=e,l=r0(r8,e.__scopeDialog);return l.modal?(0,p.jsx)(as.Presence,{present:r||l.open,children:(0,p.jsx)(se,{...s,ref:t})}):null});r9.displayName=r8;var r7=((i=g.forwardRef((e,t)=>{let{children:a,...r}=e;if(g.isValidElement(a)){var s;let e,l,n=(s=a,(l=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(l=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),o=function(e,t){let a={...t};for(let r in t){let s=e[r],l=t[r];/^on[A-Z]/.test(r)?s&&l?a[r]=(...e)=>{let t=l(...e);return s(...e),t}:s&&(a[r]=s):"style"===r?a[r]={...s,...l}:"className"===r&&(a[r]=[s,l].filter(Boolean).join(" "))}return{...e,...a}}(r,a.props);return a.type!==g.Fragment&&(o.ref=t?(0,to.composeRefs)(t,n):n),g.cloneElement(a,o)}return g.Children.count(a)>1?g.Children.only(null):null})).displayName="DialogOverlay.RemoveScroll.SlotClone",s=i,(l=g.forwardRef((e,t)=>{let{children:a,...r}=e,l=g.Children.toArray(a),n=l.find(rY);if(n){let e=n.props.children,a=l.map(t=>t!==n?t:g.Children.count(e)>1?g.Children.only(null):g.isValidElement(e)?e.props.children:null);return(0,p.jsx)(s,{...r,ref:t,children:g.isValidElement(e)?g.cloneElement(e,void 0,a):null})}return(0,p.jsx)(s,{...r,ref:t,children:a})})).displayName="DialogOverlay.RemoveScroll.Slot",l),se=g.forwardRef((e,t)=>{let{__scopeDialog:a,...r}=e,s=r0(r8,a);return(0,p.jsx)(rF,{as:r7,allowPinchZoom:!0,shards:[s.contentRef],children:(0,p.jsx)(ar.Primitive.div,{"data-state":sh(s.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),st="DialogContent",sa=g.forwardRef((e,t)=>{let a=r4(st,e.__scopeDialog),{forceMount:r=a.forceMount,...s}=e,l=r0(st,e.__scopeDialog);return(0,p.jsx)(as.Presence,{present:r||l.open,children:l.modal?(0,p.jsx)(sr,{...s,ref:t}):(0,p.jsx)(ss,{...s,ref:t})})});sa.displayName=st;var sr=g.forwardRef((e,t)=>{let a=r0(st,e.__scopeDialog),r=g.useRef(null),s=(0,to.useComposedRefs)(t,a.contentRef,r);return g.useEffect(()=>{let e=r.current;if(e)return rX(e)},[]),(0,p.jsx)(sl,{...e,ref:s,trapFocus:a.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,ad.composeEventHandlers)(e.onCloseAutoFocus,e=>{e.preventDefault(),a.triggerRef.current?.focus()}),onPointerDownOutside:(0,ad.composeEventHandlers)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,a=0===t.button&&!0===t.ctrlKey;(2===t.button||a)&&e.preventDefault()}),onFocusOutside:(0,ad.composeEventHandlers)(e.onFocusOutside,e=>e.preventDefault())})}),ss=g.forwardRef((e,t)=>{let a=r0(st,e.__scopeDialog),r=g.useRef(!1),s=g.useRef(!1);return(0,p.jsx)(sl,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{e.onCloseAutoFocus?.(t),t.defaultPrevented||(r.current||a.triggerRef.current?.focus(),t.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:t=>{e.onInteractOutside?.(t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(s.current=!0));let l=t.target;a.triggerRef.current?.contains(l)&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&s.current&&t.preventDefault()}})}),sl=g.forwardRef((e,t)=>{let{__scopeDialog:a,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:l,...n}=e,o=r0(st,a),i=g.useRef(null),c=(0,to.useComposedRefs)(t,i);return g.useEffect(()=>{let e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??rt()),document.body.insertAdjacentElement("beforeend",e[1]??rt()),re++,()=>{1===re&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),re--}},[]),(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(a5,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:l,children:(0,p.jsx)(aQ.DismissableLayer,{role:"dialog",id:o.contentId,"aria-describedby":o.descriptionId,"aria-labelledby":o.titleId,"data-state":sh(o.open),...n,ref:c,onDismiss:()=>o.onOpenChange(!1)})}),(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(sp,{titleId:o.titleId}),(0,p.jsx)(sg,{contentRef:i,descriptionId:o.descriptionId})]})]})}),sn="DialogTitle",so=g.forwardRef((e,t)=>{let{__scopeDialog:a,...r}=e,s=r0(sn,a);return(0,p.jsx)(ar.Primitive.h2,{id:s.titleId,...r,ref:t})});so.displayName=sn;var si="DialogDescription",sc=g.forwardRef((e,t)=>{let{__scopeDialog:a,...r}=e,s=r0(si,a);return(0,p.jsx)(ar.Primitive.p,{id:s.descriptionId,...r,ref:t})});sc.displayName=si;var sd="DialogClose",su=g.forwardRef((e,t)=>{let{__scopeDialog:a,...r}=e,s=r0(sd,a);return(0,p.jsx)(ar.Primitive.button,{type:"button",...r,ref:t,onClick:(0,ad.composeEventHandlers)(e.onClick,()=>s.onOpenChange(!1))})});function sh(e){return e?"open":"closed"}su.displayName=sd;var sf="DialogTitleWarning",[sm,sx]=(0,al.createContext)(sf,{contentName:st,titleName:sn,docsSlug:"dialog"}),sp=({titleId:e})=>{let t=sx(sf),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 g.useEffect(()=>{e&&(document.getElementById(e)||console.error(a))},[a,e]),null},sg=({contentRef:e,descriptionId:t})=>{let a=sx("DialogDescriptionWarning"),r=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${a.contentName}}.`;return g.useEffect(()=>{let a=e.current?.getAttribute("aria-describedby");t&&a&&(document.getElementById(t)||console.warn(r))},[r,e,t]),null},sb=e.i(41947),sb=sb;function sv({...e}){return(0,p.jsx)(r1,{"data-slot":"dialog",...e})}function sy({...e}){return(0,p.jsx)(r6,{"data-slot":"dialog-portal",...e})}function sw({className:e,...t}){return(0,p.jsx)(r9,{"data-slot":"dialog-overlay",className:(0,tT.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 sj({className:e,children:t,showCloseButton:a=!0,...r}){return(0,p.jsxs)(sy,{"data-slot":"dialog-portal",children:[(0,p.jsx)(sw,{}),(0,p.jsxs)(sa,{"data-slot":"dialog-content",className:(0,tT.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),...r,children:[t,a&&(0,p.jsxs)(su,{"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,p.jsx)(sb.default,{}),(0,p.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function sN({className:e,...t}){return(0,p.jsx)("div",{"data-slot":"dialog-header",className:(0,tT.cn)("flex flex-col gap-2 text-center sm:text-left",e),...t})}function sk({className:e,...t}){return(0,p.jsx)("div",{"data-slot":"dialog-footer",className:(0,tT.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}function sM({className:e,...t}){return(0,p.jsx)(so,{"data-slot":"dialog-title",className:(0,tT.cn)("text-lg leading-none font-semibold",e),...t})}function sS({className:e,...t}){return(0,p.jsx)(sc,{"data-slot":"dialog-description",className:(0,tT.cn)("text-muted-foreground text-sm",e),...t})}let sP=(0,tt.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 sC({open:e,onOpenChange:t}){let a=te(),r=te(e=>e.doPrestige),{toast:s}=(0,e6.useToast)(),[l,n]=(0,g.useState)(!1),[o,i]=(0,g.useState)(!1),c=eu(a);a.blueprints.length;let d=Math.min(6,a.blueprints.length+c),u=X(a.constellation??[]);return(0,p.jsx)(sv,{open:e,onOpenChange:t,children:(0,p.jsxs)(sj,{className:"bg-gradient-to-br from-fuchsia-950/70 to-black/90 border-fuchsia-400/40",children:[(0,p.jsxs)(sN,{children:[(0,p.jsxs)(sM,{className:"flex items-center gap-2 text-fuchsia-100",children:[(0,p.jsx)(tl,{className:"h-5 w-5"}),"飞升 · 跨越维度"]}),(0,p.jsx)(sS,{className:"text-fuchsia-200/70",children:"当接触进度满溢,你将跨越维度与以太族相会。本次飞升将重置资源与技术,但保留记忆图谱与蓝图加成。"})]}),(0,p.jsxs)("div",{className:"space-y-3 py-2",children:[(0,p.jsxs)("div",{className:"rounded-lg border border-fuchsia-400/30 bg-fuchsia-950/30 p-3",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between",children:[(0,p.jsx)("span",{className:"text-sm text-fuchsia-200",children:"本次获得蓝图"}),(0,p.jsxs)("span",{className:"text-2xl font-mono font-bold text-fuchsia-100",children:["+",c]})]}),(0,p.jsxs)("p",{className:"text-[11px] text-muted-foreground mt-1",children:["蓝图总数将达 ",d,"/",6,"(每 ",20," 次解码产出 1 张)"]})]}),(0,p.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,p.jsx)(sT,{label:"产能",value:`+${(d*R*100).toFixed(0)}%`,color:"#34d399"}),(0,p.jsx)(sT,{label:"洞见",value:`+${(d*E*100).toFixed(0)}%`,color:"#fbbf24"}),(0,p.jsx)(sT,{label:"接触",value:`+${(d*A*100).toFixed(0)}%`,color:"#e879f9"})]}),(0,p.jsxs)("div",{className:"text-[11px] text-muted-foreground space-y-1 pt-1",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(tY,{className:"h-3 w-3 text-fuchsia-400"}),"保留:记忆图谱、累计解码数、飞升次数、蓝图、星图天赋"]}),(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(tl,{className:"h-3 w-3 text-rose-400"}),"重置:晶体、洞见、技术树、接触进度、待解码晶体"]})]}),(0,p.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,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(sP,{className:"h-4 w-4 text-fuchsia-300"}),(0,p.jsxs)("div",{className:"flex-1",children:[(0,p.jsx)("div",{className:"text-[12px] text-fuchsia-200 font-bold",children:"星图觉醒预告"}),(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground",children:["飞升后将从 3 道随机天赋中选 1,永久获得加成",u.unlocked<u.total&&(0,p.jsxs)("span",{className:"text-fuchsia-300/80",children:[" · 当前 ",u.unlocked,"/",u.total]})]})]}),(0,p.jsx)("div",{className:"text-[10px] text-fuchsia-300/70 font-mono",children:u.unlocked<u.total?"✦ 可觉醒":"✧ 已圆满"})]})}),(0,p.jsxs)("div",{className:"rounded-lg border border-violet-400/25 bg-violet-950/20 p-2.5 flex items-center gap-2",children:[(0,p.jsx)(t6,{className:"h-4 w-4 text-violet-300 flex-shrink-0"}),(0,p.jsxs)("div",{className:"flex-1 text-[10px] text-violet-100/70 leading-relaxed",children:["本次飞升将铭刻入",(0,p.jsx)("span",{className:"text-violet-200 font-bold",children:"回响编年史"}),", 记录本周目的解码、探险、星潮与觉醒天赋,形成永恒叙事时间轴。"]})]})]}),(0,p.jsxs)(sk,{children:[(0,p.jsx)(tX,{variant:"ghost",onClick:()=>t(!1),children:"取消"}),(0,p.jsx)(tX,{disabled:l&&!o,onClick:()=>{if(!l){n(!0),i(!1),window.setTimeout(()=>i(!0),900);return}let e=r();t(!1),n(!1),i(!1),e&&(tL("prestige"),window.setTimeout(()=>tL("chronicle"),600),s({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:l?o?"再次确认飞升":"请确认…":c<=0?"飞升(无新蓝图)":"飞升"})]})]})})}function sT({label:e,value:t,color:a}){return(0,p.jsxs)("div",{className:"rounded-lg border p-2 text-center",style:{borderColor:`${a}44`,background:`${a}11`},children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground",children:e}),(0,p.jsx)("div",{className:"text-sm font-mono font-bold",style:{color:a},children:t})]})}function s$(e){let[t,a]=g.useState(void 0);return(0,ac.useLayoutEffect)(()=>{if(e){a({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,s;if(!Array.isArray(t)||!t.length)return;let l=t[0];if("borderBoxSize"in l){let e=l.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,s=t.blockSize}else r=e.offsetWidth,s=e.offsetHeight;a({width:r,height:s})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}a(void 0)},[e]),t}var s_="Switch",[sR,sE]=(0,al.createContextScope)(s_),[sA,sI]=sR(s_),sB=g.forwardRef((e,t)=>{let{__scopeSwitch:a,name:r,checked:s,defaultChecked:l,required:n,disabled:o,value:i="on",onCheckedChange:c,form:d,...u}=e,[h,f]=g.useState(null),m=(0,to.useComposedRefs)(t,e=>f(e)),x=g.useRef(!1),b=!h||d||!!h.closest("form"),[v,y]=(0,aZ.useControllableState)({prop:s,defaultProp:l??!1,onChange:c,caller:s_});return(0,p.jsxs)(sA,{scope:a,checked:v,disabled:o,children:[(0,p.jsx)(ar.Primitive.button,{type:"button",role:"switch","aria-checked":v,"aria-required":n,"data-state":sF(v),"data-disabled":o?"":void 0,disabled:o,value:i,...u,ref:m,onClick:(0,ad.composeEventHandlers)(e.onClick,e=>{y(e=>!e),b&&(x.current=e.isPropagationStopped(),x.current||e.stopPropagation())})}),b&&(0,p.jsx)(sz,{control:h,bubbles:!x.current,name:r,value:i,checked:v,required:n,disabled:o,form:d,style:{transform:"translateX(-100%)"}})]})});sB.displayName=s_;var sD="SwitchThumb",sL=g.forwardRef((e,t)=>{let{__scopeSwitch:a,...r}=e,s=sI(sD,a);return(0,p.jsx)(ar.Primitive.span,{"data-state":sF(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:t})});sL.displayName=sD;var sz=g.forwardRef(({__scopeSwitch:e,control:t,checked:a,bubbles:r=!0,...s},l)=>{let n,o=g.useRef(null),i=(0,to.useComposedRefs)(o,l),c=(n=g.useRef({value:a,previous:a}),g.useMemo(()=>(n.current.value!==a&&(n.current.previous=n.current.value,n.current.value=a),n.current.previous),[a])),d=s$(t);return g.useEffect(()=>{let e=o.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(c!==a&&t){let s=new Event("click",{bubbles:r});t.call(e,a),e.dispatchEvent(s)}},[c,a,r]),(0,p.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:a,...s,tabIndex:-1,ref:i,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function sF(e){return e?"checked":"unchecked"}function sO({className:e,...t}){return(0,p.jsx)(sB,{"data-slot":"switch",className:(0,tT.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,p.jsx)(sL,{"data-slot":"switch-thumb",className:(0,tT.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")})})}sz.displayName="SwitchBubbleInput";var sH=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,t)=>{let a=tu(`Primitive.${t}`),r=g.forwardRef((e,r)=>{let{asChild:s,...l}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,p.jsx)(s?a:t,{...l,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),sW=g.forwardRef((e,t)=>(0,p.jsx)(sH.label,{...e,ref:t,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));function sK({className:e,...t}){return(0,p.jsx)(sW,{"data-slot":"label",className:(0,tT.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})}sW.displayName="Label";let sq=(0,tt.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"}]]),sU=(0,tt.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"}]]),sX=(0,tt.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"}]]),sV=(0,tt.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"}]]),sY=(0,tt.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"}]]),sG=[{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:"idle",target:"tab-idle",placement:"top",title:"③ 放置工程 · 离线产出",body:"「放置」标签可派遣工程项目(勘探/精炼/扩编无人机群等),完成后领取奖励——部分工程永久提升产能。\n\n顶部「放置中 +X/s」徽章实时显示离线产能,晶体球下方进度条追踪活跃工程。"},{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深空之中,回响永续。祝你考古愉快。"}],sJ="echo-nexus-tutorial-v1";function sZ({open:e,onOpenChange:t}){let a=te(e=>e.soundOn),r=te(e=>e.toggleSound),s=te(e=>e.hardReset),l=te(e=>e.ascensions),n=te(e=>e.totalDecoded),{toast:o}=(0,e6.useToast)(),[i,c]=(0,g.useState)(!1);return(0,p.jsx)(sv,{open:e,onOpenChange:t,children:(0,p.jsxs)(sj,{className:"bg-gradient-to-br from-slate-900/80 to-black/90 border-white/15",children:[(0,p.jsxs)(sN,{children:[(0,p.jsx)(sM,{children:"设置"}),(0,p.jsx)(sS,{children:"游戏偏好与存档管理"})]}),(0,p.jsxs)("div",{className:"space-y-4 py-2",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-white/10 bg-black/30 p-3",children:[(0,p.jsxs)("div",{children:[(0,p.jsx)(sK,{className:"text-sm",children:"音效反馈"}),(0,p.jsx)("p",{className:"text-[11px] text-muted-foreground mt-0.5",children:"脉冲、解码、探险、飞升等程序化音效"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(tX,{size:"sm",variant:"ghost",className:"h-7 px-2 text-muted-foreground hover:text-foreground",onClick:()=>tL("decodeSuccess"),"aria-label":"试听音效",children:(0,p.jsx)(sX,{className:"h-3.5 w-3.5"})}),(0,p.jsx)(sO,{checked:a,onCheckedChange:r})]})]}),(0,p.jsxs)("div",{className:"flex items-center justify-between rounded-lg border border-white/10 bg-black/30 p-3",children:[(0,p.jsxs)("div",{children:[(0,p.jsx)(sK,{className:"text-sm",children:"新手教程"}),(0,p.jsx)("p",{className:"text-[11px] text-muted-foreground mt-0.5",children:"重新查看 5 步玩法引导"})]}),(0,p.jsxs)(tX,{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(sJ)}catch{}window.dispatchEvent(new CustomEvent("echo-nexus-tutorial-restart")),t(!1)},children:[(0,p.jsx)(sV,{className:"h-3.5 w-3.5 mr-1"}),"重看教程"]})]}),(0,p.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/30 p-3 text-xs space-y-1.5",children:[(0,p.jsxs)("div",{className:"flex justify-between",children:[(0,p.jsx)("span",{className:"text-muted-foreground",children:"累计解码"}),(0,p.jsxs)("span",{className:"font-mono",children:[n," 颗"]})]}),(0,p.jsxs)("div",{className:"flex justify-between",children:[(0,p.jsx)("span",{className:"text-muted-foreground",children:"飞升周目"}),(0,p.jsx)("span",{className:"font-mono",children:l})]}),(0,p.jsxs)("div",{className:"flex justify-between",children:[(0,p.jsx)("span",{className:"text-muted-foreground",children:"存档位置"}),(0,p.jsx)("span",{className:"font-mono text-[10px]",children:"浏览器本地"})]})]}),(0,p.jsxs)("div",{className:"rounded-lg border border-rose-500/30 bg-rose-950/20 p-3",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2 mb-2",children:[(0,p.jsx)(tZ,{className:"h-4 w-4 text-rose-400"}),(0,p.jsx)("span",{className:"text-sm font-medium text-rose-200",children:"危险操作"})]}),(0,p.jsx)("p",{className:"text-[11px] text-muted-foreground mb-2",children:"清空所有进度,包括记忆图谱与飞升记录,不可恢复。"}),(0,p.jsxs)(tX,{variant:"outline",size:"sm",className:"border-rose-500/40 text-rose-300 hover:bg-rose-500/10",onClick:()=>{i?(s(),c(!1),t(!1),o({title:"存档已清空",description:"一切归零,重新开始。"})):c(!0)},children:[(0,p.jsx)(sq,{className:"h-3.5 w-3.5 mr-1"}),i?"再次点击确认清空":"清空存档"]})]}),(0,p.jsxs)("div",{className:"space-y-1.5",children:[(0,p.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,p.jsx)(sY,{className:"h-3.5 w-3.5"}),"在线游玩(gitea-pages)"]}),(0,p.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,p.jsx)(sU,{className:"h-3.5 w-3.5"}),"git.atdunbg.xyz/Super_Z/echo-nexus"]})]})]}),(0,p.jsx)(sk,{children:(0,p.jsx)(tX,{variant:"ghost",onClick:()=>t(!1),children:"关闭"})})]})})}let sQ=(0,tt.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"}]]),s0=(0,tt.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"}]]),s1=(0,tt.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"}]]),s2=(0,tt.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"}]]),s5=(0,tt.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"}]]),s3=(0,tt.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"}]]),s4=(0,tt.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),s6=(0,tt.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"}]]),s8={combat:{icon:sQ,color:"#fb7185",label:"战斗",bg:"rgba(251,113,133,0.15)"},treasure:{icon:ta,color:"#fbbf24",label:"宝藏",bg:"rgba(251,191,36,0.15)"},choice:{icon:s0,color:"#a5f3fc",label:"抉择",bg:"rgba(165,243,252,0.15)"},puzzle:{icon:s1,color:"#e879f9",label:"解谜",bg:"rgba(232,121,249,0.15)"},rest:{icon:s5,color:"#34d399",label:"休整",bg:"rgba(52,211,153,0.15)"},boss:{icon:s2,color:"#f43f5e",label:"BOSS",bg:"rgba(244,63,94,0.2)"}};function s9(){let e=te(e=>e.activeExpedition),t=te(e=>e.energy),a=te(e=>e.energyMax),r=te(e=>e.lastEnergyTick),s=te(e=>e.expeditionLog),l=te(e=>e.totalExpeditions),n=te(e=>ey(e)),o=te(e=>e.startExpedition),i=te(e=>e.resolveCurrentNode),c=te(e=>e.advanceNode),d=te(e=>e.abortExpedition),{toast:u}=(0,e6.useToast)(),[h,f]=(0,g.useState)(null),m=Date.now(),x=1e3*n,b=t>=a?100:Math.min(100,(m-r)/x*100),v=n<45;if(!e||e.finished)return(0,p.jsxs)("div",{className:"flex flex-col gap-3 h-full",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between",children:[(0,p.jsxs)("h3",{className:"text-sm font-semibold flex items-center gap-1.5",children:[(0,p.jsx)(t4,{className:"h-4 w-4 text-amber-400"}),"遗迹探险"]}),(0,p.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["已探索 ",l," 次"]})]}),(0,p.jsxs)("div",{className:"rounded-xl border border-amber-400/20 bg-amber-950/20 p-3",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-1.5",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(s3,{className:"h-3.5 w-3.5 text-amber-400"}),(0,p.jsx)("span",{className:"text-xs text-amber-200",children:"探险能量"})]}),(0,p.jsxs)("span",{className:"text-xs font-mono text-amber-100",children:[t," / ",a]})]}),t<a?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(t$,{value:b,className:"h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-amber-500 [&>div]:to-yellow-300"}),(0,p.jsxs)("p",{className:"text-[10px] text-muted-foreground/70 mt-1",children:["下一点能量约 ",Math.ceil((x-(m-r))/1e3),"s 后恢复",v&&(0,p.jsxs)("span",{className:"text-emerald-400/80 ml-1",children:["⚡ ",n.toFixed(0),"s/点 (已加速)"]})]})]}):(0,p.jsx)("p",{className:"text-[10px] text-amber-300/80 mt-0.5",children:"能量已满,可立即出发"})]}),(0,p.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,p.jsx)("div",{className:"absolute -top-10 -right-10 h-32 w-32 rounded-full bg-amber-500/10 blur-2xl"}),(0,p.jsx)("div",{className:"relative",children:(0,p.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,p.jsx)(t4,{className:"h-9 w-9 text-amber-300"})})}),(0,p.jsxs)("div",{className:"text-center space-y-1",children:[(0,p.jsx)("p",{className:"text-sm font-medium text-amber-100",children:"深入以太遗迹"}),(0,p.jsx)("p",{className:"text-[11px] text-muted-foreground/80 max-w-[220px]",children:"派出探险队进入程序化生成的遗迹路径,沿途遭遇战斗、宝藏、抉择与解谜,击败终点 BOSS 获取丰厚奖励。"})]}),(0,p.jsxs)(tX,{onClick:()=>{let e=o();e.ok?(tL("expeditionStart"),u({title:"探险队出发",description:"深入遗迹,谨慎前行。"}),f(null)):u({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,p.jsx)(t4,{className:"h-4 w-4 mr-1.5"}),"出发(消耗 ",1," 能量)"]}),t<1&&(0,p.jsx)("p",{className:"text-[10px] text-rose-300/80",children:"能量不足,请等待恢复"})]}),s.length>0&&(0,p.jsxs)("div",{className:"rounded-xl border border-white/5 bg-black/20 p-2 max-h-32 overflow-y-auto echo-scroll",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/60 mb-1 px-1",children:"最近探险记录"}),s.slice(0,4).map((e,t)=>(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground/70 px-1 py-0.5 border-b border-white/5 last:border-0",children:[(0,p.jsx)("span",{className:"text-amber-300/60",children:"›"})," ",e.result,e.rewards&&(0,p.jsx)("span",{className:"text-emerald-300/70 ml-1",children:e.rewards})]},t))]})]});let y=e.nodes[e.currentNode],w=s8[y.type],j=w.icon,N=e.hp/e.maxHp*100,k=(e.currentNode+ +!!y.cleared)/e.nodes.length*100;return(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex flex-col gap-2.5 h-full",children:[(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center justify-between gap-2",children:[(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[(0,p.jsx)(t4,{className:"h-3.5 w-3.5 text-amber-400"}),(0,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-xs font-semibold",children:"遗迹探险"}),(0,p.jsxs)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:["第 ",e.currentNode+1,"/",e.nodes.length," 节点"]})]}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[(0,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:"探险力"}),(0,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-xs font-mono font-semibold text-amber-300",children:e.power})]})]}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264",children:[(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center justify-between mb-0.5",children:[(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1",children:[(0,p.jsx)(s5,{className:"h-3 w-3 text-rose-400"}),(0,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:"探险队生命"})]}),(0,p.jsxs)("span",{className:`jsx-df1c681cdb543264 text-[10px] font-mono ${N<30?"text-rose-400":"text-foreground"}`,children:[e.hp," / ",e.maxHp]})]}),(0,p.jsx)(t$,{value:N,className:"h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-rose-500 [&>div]:to-emerald-400"})]}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 rounded-xl border border-white/10 bg-black/30 p-2.5",children:[(0,p.jsx)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1 overflow-x-auto echo-scroll pb-1",children:e.nodes.map((t,a)=>{let r=s8[t.type],s=r.icon,l=a===e.currentNode,n=t.cleared,o=a<e.currentNode;return(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center shrink-0",children:[(0,p.jsxs)("div",{style:{background:n||o?"rgba(255,255,255,0.04)":r.bg,border:l?`1.5px solid ${r.color}`:"1px solid rgba(255,255,255,0.08)",boxShadow:l?`0 0 12px ${r.color}66`:"none"},title:`${r.label} \xb7 ${t.title}`,className:`jsx-df1c681cdb543264 relative h-9 w-9 rounded-lg flex items-center justify-center transition-all duration-300 ${l?"scale-125":""}`,children:[(0,p.jsx)(s,{style:{color:n||o?"#666":r.color},className:`jsx-df1c681cdb543264 h-4 w-4 ${n||o?"opacity-30":""}`}),n&&(0,p.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,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-[8px] text-white",children:"✓"})})]}),a<e.nodes.length-1&&(0,p.jsx)(s4,{className:`h-3 w-3 mx-0.5 ${o||l&&n?"text-amber-400/60":"text-white/15"}`})]},t.id)})}),(0,p.jsx)("div",{className:"jsx-df1c681cdb543264 mt-1.5",children:(0,p.jsx)(t$,{value:k,className:"h-1 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-amber-500 [&>div]:to-rose-400"})})]}),(0,p.jsxs)("div",{style:{borderColor:`${w.color}44`,background:`linear-gradient(135deg, ${w.color}11, rgba(0,0,0,0.4))`,boxShadow:`0 0 20px ${w.color}22`},className:"jsx-df1c681cdb543264 rounded-xl border p-3 relative overflow-hidden",children:[(0,p.jsx)("div",{style:{background:`${w.color}22`},className:"jsx-df1c681cdb543264 absolute -top-8 -right-8 h-24 w-24 rounded-full blur-2xl"}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 relative",children:[(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-2 mb-1.5",children:[(0,p.jsx)("div",{style:{background:w.bg,border:`1px solid ${w.color}44`},className:"jsx-df1c681cdb543264 h-8 w-8 rounded-lg flex items-center justify-center",children:(0,p.jsx)(j,{style:{color:w.color},className:"jsx-df1c681cdb543264 h-4 w-4"})}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264",children:[(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[(0,p.jsx)("span",{style:{background:w.bg,color:w.color},className:"jsx-df1c681cdb543264 text-[10px] font-mono px-1.5 py-0.5 rounded",children:w.label}),"combat"===y.type&&(0,p.jsxs)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground",children:["胜率 ",Math.round(100*eb(e.power,y.difficulty)),"%"]}),y.difficulty>0&&(0,p.jsxs)("span",{className:"jsx-df1c681cdb543264 text-[10px] text-muted-foreground/60",children:["难度 ",y.difficulty]})]}),(0,p.jsx)("h4",{style:{color:w.color},className:"jsx-df1c681cdb543264 text-sm font-semibold mt-0.5",children:y.title})]})]}),(0,p.jsx)("p",{className:"jsx-df1c681cdb543264 text-[11px] text-muted-foreground/90 leading-relaxed",children:y.desc}),h&&(0,p.jsx)("div",{className:"jsx-df1c681cdb543264 mt-2 px-2 py-1.5 rounded-lg bg-black/40 border border-white/10",children:(0,p.jsx)("p",{className:"jsx-df1c681cdb543264 text-[11px] text-foreground/90",children:h})})]})]}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-1.5",children:[y.cleared?e.currentNode<e.nodes.length-1?(0,p.jsxs)(tX,{onClick:()=>{c(),f(null)},className:"flex-1 h-8",variant:"outline",children:[(0,p.jsx)(s4,{className:"h-3.5 w-3.5 mr-1"}),"前进"]}):(0,p.jsx)("div",{className:"jsx-df1c681cdb543264 flex-1 text-center text-xs text-emerald-300 py-1.5",children:"探险已完成 ✓"}):(0,p.jsxs)(tX,{onClick:()=>{let e=i();e&&(f(e.log),e.ended?"victory"===e.endReason?tL("expeditionVictory"):tL("expeditionDefeat"):tL("expeditionNode"),u({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,p.jsx)(tY,{className:"h-3.5 w-3.5 mr-1"}),"探索节点"]}),(0,p.jsx)(tX,{onClick:()=>{d(),u({title:"探险队撤退",description:"保留已获奖励,安全返回。"}),f(null)},variant:"ghost",size:"sm",className:"h-8 px-2 text-muted-foreground hover:text-rose-300",children:(0,p.jsx)(s6,{className:"h-3.5 w-3.5"})})]}),(0,p.jsxs)("div",{className:"jsx-df1c681cdb543264 flex items-center gap-2 text-[10px] px-1",children:[(0,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-muted-foreground/60",children:"本次已获:"}),e.rewards.crystals>0&&(0,p.jsxs)("span",{className:"jsx-df1c681cdb543264 text-emerald-300",children:[I(e.rewards.crystals),"晶体"]}),e.rewards.insights>0&&(0,p.jsxs)("span",{className:"jsx-df1c681cdb543264 text-amber-300",children:[e.rewards.insights,"洞见"]}),e.rewards.contact>0&&(0,p.jsxs)("span",{className:"jsx-df1c681cdb543264 text-fuchsia-300",children:[e.rewards.contact.toFixed(1),"接触"]}),0===e.rewards.crystals&&0===e.rewards.insights&&(0,p.jsx)("span",{className:"jsx-df1c681cdb543264 text-muted-foreground/40",children:"暂无"})]}),(0,p.jsx)(tE.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 s7=(0,tt.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 le(){let e=te(e=>e.achievements),t=Object.values(e).filter(Boolean).length,a=D(e);return(0,p.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d flex flex-col gap-2.5 h-full",children:[(0,p.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d flex items-center justify-between",children:[(0,p.jsxs)("h3",{className:"jsx-7e1dc0c087b6bd3d text-sm font-semibold flex items-center gap-1.5",children:[(0,p.jsx)(s7,{className:"h-4 w-4 text-amber-400"}),"成就"]}),(0,p.jsxs)("span",{className:"jsx-7e1dc0c087b6bd3d text-[10px] text-muted-foreground font-mono",children:[t," / ",B.length]})]}),(0,p.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,p.jsx)("span",{className:"jsx-7e1dc0c087b6bd3d text-amber-300/80",children:"永久加成"}),a.crystalsPerSecPct>0&&(0,p.jsxs)("span",{className:"jsx-7e1dc0c087b6bd3d text-emerald-300",children:["产能 +",a.crystalsPerSecPct,"%"]}),a.insightPct>0&&(0,p.jsxs)("span",{className:"jsx-7e1dc0c087b6bd3d text-fuchsia-300",children:["洞见 +",a.insightPct,"%"]}),0===a.crystalsPerSecPct&&0===a.insightPct&&(0,p.jsx)("span",{className:"jsx-7e1dc0c087b6bd3d text-muted-foreground/60",children:"暂无(达成成就解锁)"})]}),(0,p.jsx)("div",{className:"jsx-7e1dc0c087b6bd3d flex-1 min-h-0 grid grid-cols-1 sm:grid-cols-2 gap-1.5 content-start overflow-y-auto echo-scroll pr-1",children:B.map(t=>{let a=!!e[t.id];return(0,p.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,p.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,p.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d relative flex items-start gap-2",children:[(0,p.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,p.jsx)(t8,{className:"h-3.5 w-3.5"})}),(0,p.jsxs)("div",{className:"jsx-7e1dc0c087b6bd3d min-w-0 flex-1",children:[(0,p.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,p.jsx)("div",{className:"jsx-7e1dc0c087b6bd3d text-[10px] text-muted-foreground/80 leading-tight mt-0.5",children:t.desc}),a&&(0,p.jsxs)("div",{style:{color:t.color+"cc"},className:"jsx-7e1dc0c087b6bd3d text-[9px] mt-1 font-mono",children:["✦ ",t.rewardText]})]})]})]},t.id)})}),(0,p.jsx)(tE.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 lt(){let e=te(e=>e._achievementQueue),t=te(e=>e.consumeAchievementQueue),{toast:a}=(0,e6.useToast)();return(0,g.useEffect)(()=>{if(0!==e.length)for(let e of t())tL("achievement"),a({title:`🏆 成就解锁:${e.name}`,description:`${e.desc} 奖励:${e.rewardText}`})},[e,t,a]),null}function la(){let e=te(e=>e.constellation??[]),t=(0,g.useRef)(null),a=(0,g.useRef)(null),[r,s]=(0,g.useState)({w:360,h:360}),[l,n]=(0,g.useState)(null),o=(0,g.useMemo)(()=>new Set(e),[e]);(0,g.useEffect)(()=>{let e=a.current;if(!e)return;let t=new ResizeObserver(()=>{let t=e.getBoundingClientRect();s({w:Math.max(280,t.width),h:Math.max(280,Math.min(420,t.width))})});return t.observe(e),()=>t.disconnect()},[]);let i=(0,g.useMemo)(()=>{let e=r.w/2;return{cx:e,cy:r.h/2,radius:.32*Math.min(r.w,r.h)}},[r]),c=(0,g.useMemo)(()=>{var e,t,a;return(e=i.cx,t=i.cy,a=i.radius,["mining","decoding","expedition","contact","economy","cosmic"].map((r,s)=>{let l=Math.PI/3*s-Math.PI/2;return{category:r,cx:e+a*Math.cos(l),cy:t+a*Math.sin(l),meta:O[r]}})).map(e=>{let t=function(e,t,a,r=1){return H.filter(t=>t.category===e).sort((e,t)=>e.order-t.order).map((e,s)=>({perk:e,x:t+(0===s?0:1===s?-18*r:18*r),y:a+(0===s?-22*r:14*r)}))}(e.category,e.cx,e.cy,1);return{...e,stars:t}})},[i]);(0,g.useEffect)(()=>{let a=t.current;if(!a)return;let s=a.getContext("2d");if(!s)return;let l=window.devicePixelRatio||1;a.width=r.w*l,a.height=r.h*l,a.style.width=`${r.w}px`,a.style.height=`${r.h}px`,s.setTransform(l,0,0,l,0,0);let n=0,d=performance.now(),u=t=>{let a=(t-d)/1e3;s.clearRect(0,0,r.w,r.h);let l=s.createRadialGradient(i.cx,i.cy,0,i.cx,i.cy,1.6*i.radius);l.addColorStop(0,"rgba(40,30,80,0.18)"),l.addColorStop(1,"rgba(5,4,16,0)"),s.fillStyle=l,s.fillRect(0,0,r.w,r.h),s.save(),s.translate(i.cx,i.cy);let h=6+1.5*Math.sin(1.5*a),f=s.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)"),s.fillStyle=f,s.beginPath(),s.arc(0,0,3*h,0,2*Math.PI),s.fill(),s.fillStyle="#fce7ff",s.beginPath(),s.arc(0,0,.6*h,0,2*Math.PI),s.fill(),s.restore(),c))U(e,t.category)>0&&(s.save(),s.strokeStyle=t.meta.glow,s.lineWidth=1,s.setLineDash([2,4]),s.globalAlpha=.4+.1*Math.sin(2*a+t.cx),s.beginPath(),s.moveTo(i.cx,i.cy),s.lineTo(t.cx,t.cy),s.stroke(),s.restore());for(let t of c){let r=U(e,t.category);s.save(),s.font="10px ui-monospace, monospace",s.textAlign="center",s.fillStyle=r>0?t.meta.hex:"rgba(148,163,184,0.5)",s.globalAlpha=.85,s.fillText(t.meta.name,t.cx,t.cy+38),s.restore();let l=t.stars.filter(e=>o.has(e.perk.id));for(let e of(l.length>=2&&(s.save(),s.strokeStyle=t.meta.glow,s.lineWidth=1.5,s.globalAlpha=.6,s.beginPath(),l.forEach((e,t)=>{0===t?s.moveTo(e.x,e.y):s.lineTo(e.x,e.y)}),s.stroke(),s.restore()),t.stars)){let r=o.has(e.perk.id);s.save(),s.translate(e.x,e.y);let l=r?.85+.15*Math.sin(3*a+.1*e.x):.3,n=r?10:5,i=s.createRadialGradient(0,0,0,0,0,n);if(i.addColorStop(0,r?t.meta.glow:"rgba(100,116,139,0.2)"),i.addColorStop(1,"rgba(0,0,0,0)"),s.fillStyle=i,s.globalAlpha=l,s.beginPath(),s.arc(0,0,n,0,2*Math.PI),s.fill(),s.globalAlpha=r?1:.4,s.fillStyle=r?t.meta.hex:"#475569",s.beginPath(),s.arc(0,0,r?3.5:2,0,2*Math.PI),s.fill(),r){s.strokeStyle=t.meta.hex,s.globalAlpha=.7*l,s.lineWidth=.8;let r=7+1.5*Math.sin(4*a+.1*e.y);s.beginPath(),s.moveTo(-r,0),s.lineTo(r,0),s.moveTo(0,-r),s.lineTo(0,r),s.stroke()}s.restore()}}n=requestAnimationFrame(u)};return n=requestAnimationFrame(u),()=>cancelAnimationFrame(n)},[c,i,r,e,o]);let d=X(e);return(0,p.jsxs)("div",{ref:a,className:"flex flex-col gap-2 min-h-0 h-full",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between text-[11px] px-1",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)("span",{className:"text-fuchsia-300",children:"✦"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"星图天赋"}),(0,p.jsxs)("span",{className:"font-mono text-foreground",children:[d.unlocked,"/",d.total]})]}),(0,p.jsx)("span",{className:"text-muted-foreground/60 text-[10px]",children:"每次飞升可解锁 1 个"})]}),(0,p.jsxs)("div",{className:"relative rounded-xl bg-black/30 border border-white/5 overflow-hidden flex-shrink-0",children:[(0,p.jsx)("canvas",{ref:t,onMouseMove:e=>{let a=t.current;if(!a)return;let r=a.getBoundingClientRect(),s=e.clientX-r.left,l=e.clientY-r.top,i=null,d=14;for(let e of c)for(let t of e.stars){let e=Math.hypot(t.x-s,t.y-l);e<d&&(d=e,i={perk:t.perk,x:t.x,y:t.y,unlocked:o.has(t.perk.id)})}n(i)},onMouseLeave:()=>n(null),className:"block cursor-pointer"}),l&&(0,p.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(l.x+12,r.w-200),top:Math.max(0,l.y-40)},children:[(0,p.jsxs)("div",{className:"font-bold mb-0.5",style:{color:O[l.perk.category].hex},children:[l.unlocked?"★ ":"☆ ",l.perk.name]}),(0,p.jsx)("div",{className:"text-muted-foreground",children:l.perk.desc}),(0,p.jsxs)("div",{className:"text-muted-foreground/60 mt-0.5",children:[O[l.perk.category].name," · 序",l.perk.order]})]})]}),(0,p.jsx)("div",{className:"grid grid-cols-3 gap-1 text-[10px]",children:Object.keys(O).map(t=>{let a=O[t],r=U(e,t),s=H.filter(e=>e.category===t).length;return(0,p.jsxs)("div",{className:"rounded-md bg-black/25 border border-white/5 px-1.5 py-1 flex items-center gap-1",style:r>0?{borderColor:`${a.hex}40`}:void 0,children:[(0,p.jsx)("span",{className:"inline-block h-1.5 w-1.5 rounded-full flex-shrink-0",style:{background:a.hex,boxShadow:r>0?`0 0 4px ${a.hex}`:"none"}}),(0,p.jsx)("span",{className:"text-muted-foreground truncate",children:a.name}),(0,p.jsxs)("span",{className:"ml-auto font-mono",style:{color:r>0?a.hex:"rgba(148,163,184,0.5)"},children:[r,"/",s]})]},t)})}),(0,p.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto pr-1 echo-scrollbar",children:0===e.length?(0,p.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,p.jsx)("div",{className:"mb-1 text-fuchsia-300/80",children:"✦"}),"尚未解锁任何天赋。",(0,p.jsx)("br",{}),"累积接触进度至 100%,发起「飞升」即可在 3 个随机天赋中选 1。"]}):(0,p.jsx)("div",{className:"flex flex-col gap-1",children:e.map(e=>{let t=W(e);if(!t)return null;let a=O[t.category];return(0,p.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,p.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,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsx)("div",{className:"text-foreground truncate",children:t.name}),(0,p.jsx)("div",{className:"text-muted-foreground/70 text-[10px] truncate",children:t.desc})]}),(0,p.jsx)("span",{className:"text-[9px] text-muted-foreground/50 font-mono",children:a.name})]},e)})})})]})}let lr=(0,tt.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 ls({open:e,onOpenChange:t}){let a=te(e=>e.pendingPerkChoices),r=te(e=>e.constellation??[]),s=te(e=>e.chooseConstellationPerk),l=te(e=>e.rerollPerkChoices),[n,o]=(0,g.useState)(null);if((0,g.useEffect)(()=>{e||o(null)},[e]),(0,g.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=X(r);return(0,p.jsx)(sv,{open:e,onOpenChange:t,children:(0,p.jsxs)(sj,{className:"max-w-md border-fuchsia-400/30 bg-gradient-to-br from-[#0a0820]/95 to-[#1a0f30]/95 backdrop-blur-md",children:[(0,p.jsxs)(sN,{children:[(0,p.jsxs)(sM,{className:"flex items-center gap-2 text-fuchsia-200",children:[(0,p.jsx)(tY,{className:"h-4 w-4"}),"星图觉醒"]}),(0,p.jsxs)(sS,{className:"text-muted-foreground text-xs",children:["飞升带来的回响在星图上凝聚。从 3 道星辉中选择 1 道,永久获得其加成。",(0,p.jsx)("br",{}),(0,p.jsxs)("span",{className:"text-fuchsia-300/80",children:["当前已觉醒 ",i.unlocked,"/",i.total]})]})]}),(0,p.jsx)("div",{className:"grid grid-cols-1 gap-2 mt-1",children:a.map(e=>{let a=W(e);if(!a)return null;let r=O[a.category],l=n===e;return(0,p.jsxs)("button",{onClick:()=>{o(e),s(e)&&(tL("constellation"),setTimeout(()=>t(!1),500))},disabled:!!n,className:`group relative w-full text-left rounded-lg border px-3 py-2.5 transition-all overflow-hidden ${l?"border-fuchsia-400/80 bg-fuchsia-500/10 scale-[1.02]":n?"border-white/5 opacity-40":"border-white/10 hover:border-white/30 hover:bg-white/5"}`,style:{boxShadow:l?`0 0 20px ${r.glow}`:void 0},children:[(0,p.jsx)("div",{className:"absolute left-0 top-0 bottom-0 w-1",style:{background:r.hex,boxShadow:`0 0 8px ${r.hex}`}}),(0,p.jsxs)("div",{className:"pl-2 flex items-start gap-3",children:[(0,p.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:`${r.hex}20`,color:r.hex,border:`1px solid ${r.hex}40`},children:r.name.charAt(0)}),(0,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2 mb-0.5",children:[(0,p.jsx)("span",{className:"text-sm font-bold text-foreground",children:a.name}),(0,p.jsx)("span",{className:"text-[9px] px-1 py-0.5 rounded font-mono",style:{background:`${r.hex}20`,color:r.hex},children:r.name})]}),(0,p.jsx)("div",{className:"text-[11px] text-muted-foreground",children:a.desc})]})]}),l&&(0,p.jsx)("div",{className:"absolute inset-0 pointer-events-none",children:[...Array(8)].map((e,t)=>(0,p.jsx)("span",{className:"absolute h-1 w-1 rounded-full animate-ping",style:{background:r.hex,left:`${20+8*t}%`,top:`${30+t%3*20}%`,animationDelay:`${50*t}ms`,animationDuration:"800ms"}},t))})]},e)})}),(0,p.jsxs)("div",{className:"flex items-center justify-between mt-3 pt-2 border-t border-white/5",children:[(0,p.jsxs)(tX,{variant:"ghost",size:"sm",onClick:()=>{l(),tL("uiClick")},disabled:!!n,className:"text-muted-foreground hover:text-foreground h-7 text-[11px]",children:[(0,p.jsx)(lr,{className:"h-3 w-3 mr-1"}),"重新抽取"]}),(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground/60",children:"✦ 选择后永久保留,跨周目生效"})]})]})})}let ll=(0,tt.default)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),ln=(0,tt.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 lo({open:e,onOpenChange:t}){let a=te(e=>e.chronicle??[]),r=te(e=>e.ascensions??0),s=te(e=>e.bossKills??0),l=te(e=>e.starTidesEncountered??[]),n=[...a].reverse();return(0,g.useEffect)(()=>{e&&tL("chronicleOpen")},[e]),(0,p.jsx)(sv,{open:e,onOpenChange:t,children:(0,p.jsxs)(sj,{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,p.jsx)("div",{className:"h-1 bg-gradient-to-r from-emerald-500 via-fuchsia-500 to-amber-500 opacity-70"}),(0,p.jsxs)(sN,{className:"px-6 pt-5 pb-3 space-y-1",children:[(0,p.jsxs)(sM,{className:"flex items-center gap-2 text-fuchsia-100 text-xl",children:[(0,p.jsx)(t6,{className:"h-5 w-5 text-fuchsia-300"}),"回响编年史",(0,p.jsx)("span",{className:"text-[11px] font-normal text-fuchsia-300/60 ml-2",children:"Chronicle of Echoes"})]}),(0,p.jsx)(sS,{className:"text-fuchsia-200/60 text-xs",children:"每一次飞升都在深空留下回响。这里铭刻着跨越维度的全部纪元。"}),(0,p.jsxs)("div",{className:"grid grid-cols-3 gap-2 pt-2",children:[(0,p.jsx)(li,{icon:(0,p.jsx)(tY,{className:"h-3 w-3"}),label:"飞升次数",value:r,color:"#e879f9"}),(0,p.jsx)(li,{icon:(0,p.jsx)(s7,{className:"h-3 w-3"}),label:"BOSS 击破",value:s,color:"#fbbf24"}),(0,p.jsx)(li,{icon:(0,p.jsx)(ts,{className:"h-3 w-3"}),label:"星潮亲历",value:l.length,color:"#34d399"})]})]}),(0,p.jsx)("div",{className:"flex-1 overflow-y-auto px-6 pb-6 echo-scroll",children:0===n.length?(0,p.jsx)(lc,{ascensions:r}):(0,p.jsxs)("div",{className:"relative",children:[(0,p.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,p.jsx)("div",{className:"space-y-4",children:n.map((e,t)=>(0,p.jsx)(ld,{entry:e,isLatest:0===t,index:t},`${e.ascensionNumber}-${e.timestamp}`))})]})})]})})}function li({icon:e,label:t,value:a,color:r}){return(0,p.jsxs)("div",{className:"rounded-md border px-3 py-2 flex items-center gap-2",style:{borderColor:`${r}33`,background:`${r}0d`},children:[(0,p.jsx)("div",{style:{color:r},children:e}),(0,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground truncate",children:t}),(0,p.jsx)("div",{className:"text-sm font-mono font-bold",style:{color:r},children:a})]})]})}function lc({ascensions:e}){let t=e>0;return(0,p.jsxs)("div",{className:"flex flex-col items-center justify-center py-20 text-center",children:[(0,p.jsxs)("div",{className:"relative mb-4",children:[(0,p.jsx)("div",{className:"absolute inset-0 blur-xl bg-fuchsia-500/20 rounded-full animate-pulse"}),(0,p.jsx)(t6,{className:"relative h-12 w-12 text-fuchsia-400/50"})]}),t?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"text-fuchsia-200/70 text-sm",children:["已飞升 ",e," 次,但编年史尚无记录"]}),(0,p.jsx)("div",{className:"text-fuchsia-300/40 text-[11px] mt-2 max-w-xs",children:"编年史于 v0.4 启用。下一次飞升将自动铭刻新纪元,开启永恒叙事时间轴。"})]}):(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{className:"text-fuchsia-200/70 text-sm",children:"尚未飞升,等待第一次跨越维度"}),(0,p.jsx)("div",{className:"text-fuchsia-300/40 text-[11px] mt-2 max-w-xs",children:"当接触进度满溢时,发起飞升将开启新周目,并在编年史中铭刻一段永恒回响。"})]})]})}function ld({entry:e,isLatest:t,index:a}){let r,s,l,n,o,i=["#34d399","#fb7185","#fbbf24","#e879f9","#fcd34d"][(e.ascensionNumber-1)%5];return(0,p.jsxs)("div",{className:"relative pl-16 animate-in fade-in slide-in-from-bottom-2 duration-500",style:{animationDelay:`${80*a}ms`},children:[(0,p.jsxs)("div",{className:"absolute left-[19px] top-3 z-10",children:[(0,p.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,p.jsx)("div",{className:"w-1.5 h-1.5 rounded-full",style:{background:i}})}),t&&(0,p.jsx)("div",{className:"absolute inset-0 rounded-full animate-ping",style:{background:`${i}33`}})]}),(0,p.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,p.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,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsxs)("div",{className:"flex items-baseline gap-2",children:[(0,p.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,p.jsx)("h4",{className:"text-sm font-bold tracking-wide truncate",style:{color:i,textShadow:`0 0 12px ${i}55`},children:e.epochName})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2 mt-1 text-[10px] text-muted-foreground/80",children:[(0,p.jsxs)("span",{className:"flex items-center gap-0.5",children:[(0,p.jsx)(ll,{className:"h-2.5 w-2.5"}),(s=String((r=new Date(e.timestamp)).getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0"),n=String(r.getHours()).padStart(2,"0"),o=String(r.getMinutes()).padStart(2,"0"),`${s}-${l} ${n}:${o}`)]}),(0,p.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,p.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 r=Math.floor(t/60);return`${r}小时${t%60}分`}(e.durationSec)}),t&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("span",{className:"text-muted-foreground/40",children:"·"}),(0,p.jsx)("span",{className:"text-fuchsia-300 font-bold",children:"最新"})]})]})]})}),(0,p.jsx)("div",{className:"px-4 py-3 text-[12px] leading-relaxed text-fuchsia-100/75 font-serif",children:J({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,p.jsxs)("div",{className:"px-4 pb-3 flex flex-wrap gap-1.5",children:[(0,p.jsx)(lu,{icon:(0,p.jsx)(ln,{className:"h-2.5 w-2.5"}),label:"解码",value:e.summary.crystalsDecodedThisRun,color:"#fb7185"}),(0,p.jsx)(lu,{icon:(0,p.jsx)(tY,{className:"h-2.5 w-2.5"}),label:"技术",value:e.summary.techsUnlocked,color:"#34d399"}),(0,p.jsx)(lu,{icon:(0,p.jsx)(sQ,{className:"h-2.5 w-2.5"}),label:"探险",value:e.summary.expeditionsCompleted,color:"#fbbf24"}),e.summary.bossKills>0&&(0,p.jsx)(lu,{icon:(0,p.jsx)(s7,{className:"h-2.5 w-2.5"}),label:"BOSS",value:e.summary.bossKills,color:"#e879f9"}),(0,p.jsx)(lu,{icon:(0,p.jsx)(ts,{className:"h-2.5 w-2.5"}),label:"星潮",value:e.tidesThisRun.length,color:"#94a3b8"}),(0,p.jsx)(lu,{icon:(0,p.jsx)(sP,{className:"h-2.5 w-2.5"}),label:"星图",value:e.summary.constellationsTotal,color:"#fcd34d"})]}),e.tidesThisRun.length>0&&(0,p.jsx)("div",{className:"px-4 pb-2 flex flex-wrap gap-1",children:e.tidesThisRun.map(e=>{let t,a=(t=L[e.startsWith("tide_")?e.slice(5):e])?{name:t.name,color:t.color}:{name:e,color:"#94a3b8"};return(0,p.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,p.jsx)("div",{className:"px-4 pb-2 flex flex-wrap gap-1",children:e.perksThisAscension.map(e=>{let t=W(e),a=t?.category||"cosmic",r=O[a]?.hex||"#94a3b8",s=O[a]?.name||a,l=V[e]||e;return(0,p.jsxs)("span",{className:"text-[9px] px-1.5 py-0.5 rounded border inline-flex items-center gap-1",style:{color:r,borderColor:`${r}55`,background:`${r}11`},title:`${s} \xb7 ${t?.desc||""}`,children:[(0,p.jsx)(s3,{className:"h-2 w-2"}),l]},e)})}),e.milestones.length>0&&(0,p.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,p.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,p.jsx)(tY,{className:"h-2 w-2"}),e]},t))})]})]})}function lu({icon:e,label:t,value:a,color:r}){return(0,p.jsxs)("span",{className:"text-[10px] px-1.5 py-0.5 rounded inline-flex items-center gap-1 font-mono",style:{color:r,background:`${r}11`,border:`1px solid ${r}22`},children:[e,(0,p.jsx)("span",{className:"opacity-70",children:t}),(0,p.jsx)("span",{className:"font-bold",children:a})]})}let lh=(0,tt.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"}]]),lf=(0,tt.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"}]]),lm=(0,tt.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"}]]),lx=(0,tt.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"}]]),lp=(0,tt.default)("link-2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]),lg=(0,tt.default)("flame",[["path",{d:"M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z",key:"96xj49"}]]),lb=["routine","anomaly","singular"];function lv(){let e,t,a,r,s=te(e=>e.grantBeaconReward),l=te(e=>e.claimWeeklyBeacon),n=te(e=>e.claimChainReward),{toast:o}=(0,e6.useToast)(),[i,c]=(0,g.useState)(null),[d,u]=(0,g.useState)(null),[h,f]=(0,g.useState)(null),[m,x]=(0,g.useState)(null),[b,v]=(0,g.useState)(null),[y,w]=(0,g.useState)([]),[j,N]=(0,g.useState)("00:00:00"),[k,M]=(0,g.useState)("00:00:00"),[S,P]=(0,g.useState)(Date.now());(0,g.useEffect)(()=>{c(eM()),u(e_()),f(eB()),x(eD()),v(eH()),w(eT());let e=setInterval(()=>{P(Date.now()),u(e_()),x(eD()),v(eH()),c(e=>e??eM()),f(e=>e??eB())},1e3);return()=>clearInterval(e)},[]),(0,g.useEffect)(()=>{N(eE(function(e=new Date){return Math.max(0,Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()+1,0,0,0)-e.getTime())}(new Date(S)))),M(eE(function(e=new Date){let t=(e.getUTCDay()+6)%7;return Math.max(0,Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()-t,0,0,0)+6048e5-e.getTime())}(new Date(S))))},[S]);let C=(0,g.useCallback)(()=>{if(!i||!d||null===d.completedAt||d.claimed)return;let e=function(e,t){if(t.claimed||null===t.completedAt)return{rewardInsight:0,rewardContact:0,score:0,leaderboard:eT()};let a=eS(e,t.progress,t.durationSec),r=e$({timestamp:Date.now(),dateKey:e.dateKey,challenge:e.type,difficulty:e.difficulty,progress:t.progress/e.goal,score:a,durationSec:t.durationSec});return eR({...t,claimed:!0}),{rewardInsight:e.rewardInsight,rewardContact:e.rewardContact,score:a,leaderboard:r}}(i,d);w(e.leaderboard),u(e_()),s(e.rewardInsight,e.rewardContact),tL("achievement"),o({title:"✦ 每日信标奖励已领取",description:`+${e.rewardInsight} 洞见 \xb7 +${e.rewardContact.toFixed(1)} 接触 \xb7 得分 ${e.score}`})},[i,d,o,s]),T=(0,g.useCallback)(()=>{if(!h||!m||null===m.completedAt||m.claimed)return;let e=l();w(eT()),x(eD()),(e.rewardInsight>0||e.rewardContact>0)&&(tL("achievement"),o({title:"✦ 周挑战奖励已领取",description:`+${e.rewardInsight} 洞见 \xb7 +${e.rewardContact.toFixed(1)} 接触 \xb7 得分 ${e.score}`}))},[h,m,o,l]),$=(0,g.useCallback)(e=>{let t=eO.find(t=>t.milestone===e),a=n(e);v(eH()),a.ok&&(tL("achievement"),o({title:`✦ ${a.label||t?.label||"里程碑"} 已领取`,description:`+${a.rewardInsight} 洞见 \xb7 +${a.rewardContact.toFixed(1)} 接触`}))},[o,n]);if(!i||!d||!h||!m||!b)return(0,p.jsx)("div",{className:"flex items-center justify-center h-full text-xs text-muted-foreground/60",children:"正在校准深空信标…"});let _=ew[i.difficulty],R=ej[i.type],E=Math.min(100,d.progress/i.goal*100),A=null!==d.completedAt,B=d.claimed,D=A&&!B,L=ew[h.difficulty],z=ej[h.type],F=Math.min(100,m.progress/h.goal*100),O=null!==m.completedAt,H=m.claimed,W=O&&!H,K=function(e){let t=eq(e),a=0;for(let t of eF)e>=t&&(a=t);if(null===t)return{current:e,next:null,prev:a,progressPct:100};let r=t-a,s=e-a;return{current:e,next:t,prev:a,progressPct:Math.min(100,Math.max(0,r>0?Math.round(s/r*100):100))}}(b.currentStreak),q=eq(b.currentStreak),U=eN(),X=b.lastCompletedDateKey===U;return(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex flex-col gap-2.5 h-full overflow-y-auto echo-scroll pr-0.5",children:[(0,p.jsx)(tE.default,{id:"586c189a6b19a742",dynamic:[_.glow,_.glow,_.glow,_.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 ${_.glow},inset 0 0 12px ${_.glow}}50%{box-shadow:0 0 32px ${_.glow},inset 0 0 20px ${_.glow}}}@keyframes weekly-glow{0%,to{box-shadow:0 0 18px #e879f959,inset 0 0 12px #e879f940}50%{box-shadow:0 0 32px #e879f980,inset 0 0 20px #e879f959}}@keyframes chain-milestone-pulse{0%,to{transform:scale(1);box-shadow:0 0 #fb71858c}50%{transform:scale(1.06);box-shadow:0 0 0 8px #fb718500}}.chain-milestone-reachable{animation:1.8s ease-in-out infinite chain-milestone-pulse}@keyframes chain-streak-flux{0%,to{background-position:0%}50%{background-position:100%}}.chain-streak-text{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#fbbf24,#fb7185,#fbbf24) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;animation:4s ease-in-out infinite chain-streak-flux}`}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between",children:[(0,p.jsxs)("h3",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-sm font-semibold flex items-center gap-1.5",children:[(0,p.jsx)(lh,{className:"h-4 w-4 text-fuchsia-400"}),"深空信标"]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1 text-[10px] text-muted-foreground/70",children:[(0,p.jsx)(ll,{className:"h-3 w-3"}),"次日重置",(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-fuchsia-300/90",children:j})]})]}),(0,p.jsxs)("div",{style:{borderColor:`${_.color}55`,background:`linear-gradient(135deg, ${_.color}1f, rgba(0,0,0,0.45))`,animation:A?"none":"beacon-glow 3s ease-in-out infinite"},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" relative rounded-xl border p-3 overflow-hidden",children:[!A&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{style:{border:`1.5px solid ${_.color}`,animation:"beacon-pulse-ring 2.5s ease-out infinite"},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" absolute top-4 right-4 h-10 w-10 rounded-full pointer-events-none"}),(0,p.jsx)("div",{style:{border:`1.5px solid ${_.color}`,animation:"beacon-pulse-ring 2.5s ease-out infinite 1.25s"},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" absolute top-4 right-4 h-10 w-10 rounded-full pointer-events-none"})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" relative",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1.5 mb-2",children:[(0,p.jsxs)("span",{style:{background:`${_.color}22`,color:_.color,border:`1px solid ${_.color}55`},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-1",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]]),children:_.icon}),_.label]}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 text-muted-foreground border border-white/10",children:[R.icon," ",R.label]}),A&&(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.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,p.jsx)(tY,{className:"h-2.5 w-2.5"})," 已完成"]})]}),(0,p.jsx)("h4",{style:{color:_.color,textShadow:`0 0 10px ${_.glow}`},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-sm font-semibold mb-1",children:i.title}),(0,p.jsx)("p",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[11px] text-muted-foreground/80 leading-relaxed mb-2.5",children:i.desc}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" mb-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between mb-1",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/70",children:"进度"}),(0,p.jsxs)("span",{style:{color:_.color},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[11px] font-mono font-semibold",children:[Math.min(d.progress,i.goal)," / ",i.goal," ",R.unit]})]}),(0,p.jsx)(t$,{value:E,className:"h-2 bg-black/40",style:{"--progress-color":_.color}})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between gap-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-2 text-[10px]",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/60",children:"奖励:"}),i.rewardInsight>0&&(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-amber-300 font-mono",children:["+",I(i.rewardInsight),"洞见"]}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-fuchsia-300 font-mono",children:["+",i.rewardContact.toFixed(1),"接触"]})]}),(0,p.jsx)(tX,{onClick:C,disabled:!D,size:"sm",className:"h-7 px-3 text-[11px] border-0",style:{background:D?`linear-gradient(90deg, ${_.color}, ${_.color}cc)`:`${_.color}1a`,color:D?"#022c22":`${_.color}99`},children:B?"已领取":D?"领取奖励":A?"已领取":"进行中…"})]}),A&&d.durationSec>0&&(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" mt-1.5 text-[10px] text-muted-foreground/50 text-center",children:["完成用时 ",Math.floor(d.durationSec/60),"分",d.durationSec%60,"秒"]})]})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" grid grid-cols-1 lg:grid-cols-2 gap-2.5",children:[(0,p.jsxs)("div",{style:{borderColor:"rgba(232,121,249,0.4)",background:"linear-gradient(135deg, rgba(232,121,249,0.12), rgba(0,0,0,0.45))",animation:O?"none":"weekly-glow 3.5s ease-in-out infinite"},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" relative rounded-xl border p-3 overflow-hidden",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between mb-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1.5",children:[(0,p.jsx)(s3,{className:"h-3.5 w-3.5 text-fuchsia-400"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-xs font-semibold text-fuchsia-200",children:"周挑战 · WEEKLY"})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1 text-[10px] text-muted-foreground/70",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-fuchsia-300/80",children:h.weekKey}),(0,p.jsx)(ll,{className:"h-2.5 w-2.5"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-fuchsia-300/90",children:k})]})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1.5 mb-2",children:[(0,p.jsxs)("span",{style:{background:`${L.color}22`,color:L.color,border:`1px solid ${L.color}55`},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded flex items-center gap-1",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]]),children:L.icon}),L.label]}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] font-mono px-1.5 py-0.5 rounded bg-white/5 text-muted-foreground border border-white/10",children:[z.icon," ",z.label]}),O&&(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.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,p.jsx)(tY,{className:"h-2.5 w-2.5"})," 已完成"]})]}),(0,p.jsx)("h4",{style:{color:L.color,textShadow:`0 0 10px ${L.glow}`},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-sm font-semibold mb-1",children:h.title}),(0,p.jsx)("p",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/80 leading-relaxed mb-2",children:h.desc}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" mb-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between mb-1",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/70",children:"进度"}),(0,p.jsxs)("span",{style:{color:L.color},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[11px] font-mono font-semibold",children:[Math.min(m.progress,h.goal)," / ",h.goal," ",z.unit]})]}),(0,p.jsx)(t$,{value:F,className:"h-2 bg-black/40",style:{"--progress-color":L.color}})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between gap-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1.5 text-[10px]",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/60",children:"奖励:"}),h.rewardInsight>0&&(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-amber-300 font-mono",children:["+",I(h.rewardInsight),"洞见"]}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-fuchsia-300 font-mono",children:["+",h.rewardContact.toFixed(1),"接触"]})]}),(0,p.jsx)(tX,{onClick:T,disabled:!W,size:"sm",className:"h-7 px-3 text-[11px] border-0",style:{background:W?"linear-gradient(90deg, #34d399, #34d399cc)":"rgba(232,121,249,0.10)",color:W?"#022c22":"rgba(232,121,249,0.55)"},children:H?"已领取":W?"领取奖励":O?"已领取":"进行中…"})]}),O&&m.durationSec>0&&(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" mt-1.5 text-[10px] text-muted-foreground/50 text-center",children:["完成用时 ",Math.floor(m.durationSec/60),"分",m.durationSec%60,"秒"]})]}),(0,p.jsxs)("div",{style:{borderColor:"rgba(251,191,36,0.35)",background:"linear-gradient(135deg, rgba(251,191,36,0.10), rgba(251,113,133,0.10), rgba(0,0,0,0.4))"},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" relative rounded-xl border p-3 overflow-hidden",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between mb-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1.5",children:[(0,p.jsx)(lp,{className:"h-3.5 w-3.5 text-amber-400"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-xs font-semibold text-amber-200",children:"信标链 · CHAIN"})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-baseline gap-1",children:[(0,p.jsx)(lg,{className:"h-3 w-3 text-rose-400"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/60",children:"连续"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" chain-streak-text text-2xl font-bold font-mono leading-none",children:b.currentStreak}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/60",children:"天"})]})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" mb-2 flex items-center justify-between",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/70",children:X?"今日已贡献":"今日尚未完成日挑战"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" "+`text-[10px] font-mono px-1.5 py-0.5 rounded border ${X?"bg-emerald-500/15 text-emerald-300 border-emerald-500/30":"bg-white/5 text-muted-foreground/70 border-white/10"}`,children:X?"✓ 已记录":"○ 待完成"})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between mb-2 relative",children:[(0,p.jsx)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" absolute top-6 left-[12.5%] right-[12.5%] h-[2px] bg-white/10"}),(t=(e={0:12.5,3:12.5,7:37.5,14:62.5,30:87.5})[K.prev]??12.5,a=null!==K.next?e[K.next]??87.5:87.5,(r=Math.max(0,t+(a-t)*(K.progressPct/100)-12.5))<=0?null:(0,p.jsx)("div",{style:{left:"12.5%",width:`${r}%`,background:"linear-gradient(90deg, #fbbf24, #fb7185)",boxShadow:"0 0 8px rgba(251,113,133,0.5)"},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" absolute top-6 h-[2px]"})),eF.map(e=>{let t=eO.find(t=>t.milestone===e),a=b.milestonesClaimed.includes(e),r=b.currentStreak>=e&&!a,s=b.currentStreak>0&&q===e,l="rgba(255,255,255,0.05)",n="rgba(255,255,255,0.15)",o="rgba(255,255,255,0.4)";return a?(l="rgba(52,211,153,0.25)",n="#34d399",o="#34d399"):r?(l="rgba(251,113,133,0.20)",n="#fb7185",o="#fb7185"):s&&(l="rgba(251,191,36,0.20)",n="#fbbf24",o="#fbbf24"),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex flex-col items-center gap-1 z-10 flex-1",children:[(0,p.jsx)("div",{style:{background:l,borderColor:n,color:o},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" "+`w-12 h-12 rounded-full flex items-center justify-center font-mono font-bold text-sm border-2 ${r?"chain-milestone-reachable":""}`,children:a?(0,p.jsx)(tY,{className:"h-4 w-4"}):e}),(0,p.jsx)("span",{style:{color:o},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-center leading-tight",children:t?.label}),a?(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-emerald-400/80 font-mono",children:"已领"}):r?(0,p.jsx)(tX,{onClick:()=>$(e),size:"sm",className:"h-5 px-2 text-[10px] py-0 border-0",style:{background:"linear-gradient(90deg, #fb7185, #f43f5e)",color:"#1c0608"},children:"领取"}):(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/40 font-mono",children:["+",t?.rewardInsight,"洞"]})]},e)})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" mb-2",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-between mb-1",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/70",children:null===K.next?"已通关全部里程碑":`下一目标:${K.next} 天`}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] font-mono text-amber-300",children:[K.current,null!==K.next&&` / ${K.next}`," 天"]})]}),(0,p.jsx)(t$,{value:K.progressPct,className:"h-1.5 bg-black/40",style:{"--progress-color":"#fbbf24"}})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex flex-wrap items-center justify-between gap-x-2 gap-y-1 text-[10px]",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-2",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/60",children:"最长"}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-amber-300",children:[b.longestStreak,"天"]})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-2",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/60",children:"累计"}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-rose-300",children:[b.totalCompletions,"次"]})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1",children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/60",children:"续命"}),b.graceUsed>=1?(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-rose-400/80",children:"已用"}):(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono text-emerald-400/80",children:"可用"})]})]})]})]}),(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" rounded-xl border border-white/10 bg-black/30 p-2.5",children:[(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1.5 mb-2",children:[(0,p.jsx)(s7,{className:"h-3.5 w-3.5 text-amber-400"}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-xs font-semibold",children:"深空排行榜"}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] text-muted-foreground/50",children:["本地 · Top ",y.length||0]})]}),0===y.length?(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-center py-4 text-[11px] text-muted-foreground/40",children:[(0,p.jsx)(s7,{className:"h-6 w-6 mx-auto mb-1 opacity-30"}),"尚无记录。完成今日或本周信标即可登榜。"]}):(0,p.jsx)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" space-y-0.5 max-h-[180px] overflow-y-auto echo-scroll",children:y.map((e,t)=>{let a=0===t?{icon:lm,color:"#fbbf24",label:"1st"}:1===t?{icon:lx,color:"#cbd5e1",label:"2nd"}:2===t?{icon:lf,color:"#f97316",label:"3rd"}:null,r=ew[e.difficulty],s=ej[e.challenge],l=e.dateKey===eN()||e.dateKey===eI();return(0,p.jsxs)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" "+`flex items-center gap-2 px-2 py-1 rounded-lg text-[11px] ${e.isWeekly||l?"bg-fuchsia-500/10 border border-fuchsia-500/20":"hover:bg-white/5"}`,children:[(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" w-6 flex items-center justify-center",children:a?(0,p.jsx)(a.icon,{className:"h-3.5 w-3.5",style:{color:a.color}}):(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/50 font-mono",children:t+1})}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1 flex-1 min-w-0",children:[(0,p.jsx)("span",{style:{color:r.color},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono",children:r.icon}),(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-muted-foreground/80 truncate",children:s.label}),e.isWeekly&&(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-[10px] font-mono px-1 rounded bg-fuchsia-500/20 text-fuchsia-300 border border-fuchsia-500/40",children:"WEEK"}),e.progress>=1&&(0,p.jsx)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" text-emerald-400/70",children:"✓"})]}),(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.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,p.jsx)("span",{style:{color:r.color},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" font-mono font-semibold w-12 text-right",children:I(e.score)})]},`${e.timestamp}-${t}`)})})]}),(0,p.jsx)("div",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center justify-center gap-3 text-[10px] text-muted-foreground/50",children:lb.map(e=>{let t=ew[e];return(0,p.jsxs)("span",{className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]])+" flex items-center gap-1",children:[(0,p.jsx)("span",{style:{color:t.color},className:tE.default.dynamic([["586c189a6b19a742",[_.glow,_.glow,_.glow,_.glow]]]),children:t.icon}),t.label," ×",t.mult]},e)})})]})}let ly=(0,tt.default)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]);function lw(){let[e,t]=(0,g.useState)(!1),[a,r]=(0,g.useState)(0),[s,l]=(0,g.useState)(null),[n,o]=(0,g.useState)(!1),i=(0,g.useRef)(null);(0,g.useEffect)(()=>{if(!function(){try{return"1"===localStorage.getItem(sJ)}catch{return!0}}()){let e=setTimeout(()=>t(!0),600);return()=>clearTimeout(e)}},[]),(0,g.useEffect)(()=>{let e=()=>{r(0),o(!1),t(!0)};return window.addEventListener("echo-nexus-tutorial-restart",e),()=>window.removeEventListener("echo-nexus-tutorial-restart",e)},[]),te(e=>e.crystals),te(e=>e.pulsePower),te(e=>e.tech),te(e=>e.activePuzzle),te(e=>!!e.activeExpedition&&!e.activeExpedition.finished);let c=(0,g.useRef)(null);(0,g.useEffect)(()=>{if(!e)return;let t=sG[a];if(!t?.expectAction)return;let r=0,s=()=>{let e=te.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),r=requestAnimationFrame(s)};return r=requestAnimationFrame(s),()=>cancelAnimationFrame(r)},[e,a]);let d=(0,g.useCallback)(()=>{let e=sG[a];if(!e?.target)return void l(null);let t=document.querySelector(`[data-tut="${e.target}"]`);if(!t)return void l(null);let r=t.getBoundingClientRect();l({left:r.left,top:r.top,width:r.width,height:r.height})},[a]);(0,g.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,g.useCallback)(()=>{t(!1);try{localStorage.setItem(sJ,"1")}catch{}},[]),h=(0,g.useCallback)(()=>{a>=sG.length-1?u():(r(e=>e+1),o(!1))},[a,u]),f=(0,g.useCallback)(()=>{a<=0||(r(e=>e-1),o(!1))},[a]);if(!e)return null;let m=sG[a],x=a>=sG.length-1,b=m.placement??"auto",v={};return v=s?"right"===b?{left:s.left+s.width+16,top:s.top+s.height/2,transform:"translateY(-50%)"}:"left"===b?{left:Math.max(16,s.left-360-16),top:s.top+s.height/2,transform:"translateY(-50%)",maxWidth:340}:"top"===b?{left:Math.max(16,Math.min(s.left,window.innerWidth-360-16)),top:Math.max(16,s.top-220),maxWidth:340}:{left:Math.max(16,Math.min(window.innerWidth/2-170,window.innerWidth-360-16)),top:Math.min(window.innerHeight-260,(s?.bottom??window.innerHeight/2)+16),maxWidth:340}:{left:"50%",top:"50%",transform:"translate(-50%, -50%)",maxWidth:440},(0,p.jsxs)("div",{className:"fixed inset-0 z-[79]",children:[(()=>{if(!s)return(0,p.jsx)("div",{className:"fixed inset-0 bg-black/70 z-[80] pointer-events-auto"});let{left:e,top:t,width:a,height:r}=s,l=e-6,n=t-6,o=a+12,i=r+12;return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:0,top:0,right:0,height:Math.max(0,n)}}),(0,p.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:0,top:n+i,right:0,bottom:0}}),(0,p.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:0,top:n,width:Math.max(0,l),height:i}}),(0,p.jsx)("div",{className:"fixed bg-black/70 z-[80] pointer-events-auto",style:{left:l+o,top:n,right:0,height:i}}),(0,p.jsx)("div",{className:"fixed z-[81] pointer-events-none rounded-lg",style:{left:l,top:n,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,p.jsx)("div",{className:"fixed z-[82] w-[340px] sm:w-[360px] max-w-[calc(100vw-32px)]",style:v,children:(0,p.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,p.jsx)("div",{className:"h-1 w-full bg-gradient-to-r from-emerald-400 via-fuchsia-500 to-rose-400"}),(0,p.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,p.jsx)(tV.X,{className:"h-3.5 w-3.5"})}),(0,p.jsxs)("div",{className:"p-4 pt-3.5",children:[(0,p.jsx)("div",{className:"flex items-center gap-1.5 mb-2.5",children:sG.map((e,t)=>(0,p.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,p.jsxs)("h3",{className:"text-sm font-bold text-fuchsia-100 mb-1.5 flex items-center gap-1.5 pr-6",children:[(0,p.jsx)(tY,{className:"h-3.5 w-3.5 text-fuchsia-300 shrink-0"}),m.title]}),(0,p.jsx)("p",{className:"text-[12.5px] text-muted-foreground leading-relaxed whitespace-pre-line",children:m.body}),m.expectAction&&!n&&(0,p.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,p.jsx)("span",{className:"h-1.5 w-1.5 rounded-full bg-amber-400 animate-pulse"}),"完成动作后自动进入下一步,或点跳过"]}),m.expectAction&&n&&(0,p.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,p.jsxs)("div",{className:"flex items-center gap-2 mt-4",children:[(0,p.jsxs)(tX,{size:"sm",variant:"ghost",onClick:f,disabled:0===a,className:"h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground",children:[(0,p.jsx)(ly,{className:"h-3.5 w-3.5"}),"上一步"]}),(0,p.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,p.jsx)(tX,{size:"sm",variant:"ghost",onClick:u,className:"h-7 px-2 text-[11px] text-muted-foreground hover:text-foreground",children:"跳过"}),(0,p.jsxs)(tX,{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:[x?"完成":"下一步",(0,p.jsx)(s4,{className:"h-3.5 w-3.5 ml-0.5"})]})]})]}),(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground/60 text-center mt-2",children:[a+1," / ",sG.length]})]})]})})]})}let lj=(0,tt.default)("trending-up",[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]]),lN=(0,tt.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 lk(){let[e,t]=(0,g.useState)(null);(0,g.useEffect)(()=>{let e=()=>{let e=eU;e&&e.gain>.1?(t(e),setTimeout(()=>tL("decodeSuccess"),300)):e&&eX()},a=setTimeout(e,1500),r=()=>e();return window.addEventListener("echo-nexus-offline-report",r),()=>{clearTimeout(a),window.removeEventListener("echo-nexus-offline-report",r)}},[]);let a=()=>{eX(),t(null)};if(!e)return null;let r=e.gain<e.rate*e.elapsedSec*e.eff-.01;return(0,p.jsx)(sv,{open:!!e,onOpenChange:e=>!e&&a(),children:(0,p.jsxs)(sj,{className:"bg-gradient-to-br from-[#0f0a2e]/95 to-[#050410]/95 border-emerald-400/30 max-w-[400px]",children:[(0,p.jsxs)(sN,{children:[(0,p.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,p.jsxs)(sM,{className:"flex items-center gap-2 text-emerald-100",children:[(0,p.jsx)(tY,{className:"h-4 w-4 text-emerald-300"}),"欢迎回来,无人机"]}),(0,p.jsx)(sS,{className:"text-muted-foreground",children:"在你离开的这段时间里,采矿机群持续运转…"})]}),(0,p.jsxs)("div",{className:"space-y-3 py-1",children:[(0,p.jsxs)("div",{className:"relative rounded-xl border border-emerald-400/30 bg-emerald-500/5 p-4 overflow-hidden",children:[(0,p.jsx)("div",{className:"pointer-events-none absolute -top-8 -right-8 h-24 w-24 rounded-full bg-emerald-500/20 blur-2xl"}),(0,p.jsxs)("div",{className:"relative flex items-center gap-3",children:[(0,p.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,p.jsx)(ta,{className:"h-6 w-6 text-emerald-300"})}),(0,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsx)("div",{className:"text-[11px] text-muted-foreground",children:"离线采集获得"}),(0,p.jsxs)("div",{className:"text-2xl font-bold font-mono text-emerald-200 tabular-nums leading-tight",children:["+",I(e.gain)]}),(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/80",children:"记忆晶体"})]})]})]}),(0,p.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[(0,p.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/30 px-3 py-2",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground mb-1",children:[(0,p.jsx)(ll,{className:"h-3 w-3"}),"离线时长"]}),(0,p.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),r=t%60;if(a<24)return r>0?`${a}小时${r}分`:`${a}小时`;let s=Math.floor(a/24),l=a%24;return l>0?`${s}天${l}小时`:`${s}天`}(e.rawElapsedSec)}),e.capped&&(0,p.jsx)("div",{className:"text-[9px] text-amber-400/80 mt-0.5",children:"已达 8h 上限"})]}),(0,p.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/30 px-3 py-2",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground mb-1",children:[(0,p.jsx)(lj,{className:"h-3 w-3"}),"采集速率"]}),(0,p.jsxs)("div",{className:"font-mono font-semibold text-foreground",children:[I(e.rate),"/s"]}),(0,p.jsxs)("div",{className:"text-[9px] text-muted-foreground/70 mt-0.5",children:["效率 ",Math.round(100*e.eff),"%"]})]})]}),r&&(0,p.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,p.jsx)(lN,{className:"h-3.5 w-3.5 shrink-0 mt-0.5"}),(0,p.jsx)("span",{children:"仓库已满,部分离线产出被截断。升级仓库容量或解码晶体可避免浪费。"})]}),(0,p.jsxs)("div",{className:"rounded-lg border border-white/10 bg-black/20 px-3 py-2",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between text-[11px]",children:[(0,p.jsx)("span",{className:"text-muted-foreground",children:"当前晶体"}),(0,p.jsxs)("span",{className:"font-mono text-foreground tabular-nums",children:[I(e.crystalsAfter)," / ",I(e.crystalCap)]})]}),(0,p.jsx)("div",{className:"mt-1.5 h-1.5 rounded-full bg-white/10 overflow-hidden",children:(0,p.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,p.jsx)("div",{className:"flex justify-end gap-2 mt-1",children:(0,p.jsxs)(tX,{onClick:a,className:"bg-emerald-500 hover:bg-emerald-600 text-white border-emerald-400/50",children:[(0,p.jsx)(ta,{className:"h-3.5 w-3.5 mr-1"}),"领取收益"]})})]})})}let lM=(0,tt.default)("play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]),lS=(0,tt.default)("pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]),lP=(0,tt.default)("brain",[["path",{d:"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z",key:"l5xja"}],["path",{d:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["path",{d:"M6.003 5.125A3 3 0 0 0 6.401 6.5",key:"105sqy"}],["path",{d:"M3.477 10.896a4 4 0 0 1 .585-.396",key:"ql3yin"}],["path",{d:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]]),lC=(0,tt.default)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),lT=(0,tt.default)("crosshair",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"22",x2:"18",y1:"12",y2:"12",key:"l9bcsi"}],["line",{x1:"6",x2:"2",y1:"12",y2:"12",key:"13hhkx"}],["line",{x1:"12",x2:"12",y1:"6",y2:"2",key:"10w3f3"}],["line",{x1:"12",x2:"12",y1:"22",y2:"18",key:"15g9kq"}]]),l$=(0,tt.default)("wind",[["path",{d:"M12.8 19.6A2 2 0 1 0 14 16H2",key:"148xed"}],["path",{d:"M17.5 8a2.5 2.5 0 1 1 2 4H2",key:"1u4tom"}],["path",{d:"M9.8 4.4A2 2 0 1 1 11 8H2",key:"75valh"}]]),l_=(0,tt.default)("gauge",[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]),lR=(0,tt.default)("feather",[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]]),lE=(0,tt.default)("heart-pulse",[["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"}],["path",{d:"M3.22 12H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27",key:"1uw2ng"}]]),lA=(0,tt.default)("battery",[["path",{d:"M 22 14 L 22 10",key:"nqc4tb"}],["rect",{x:"2",y:"6",width:"16",height:"12",rx:"2",key:"13zb55"}]]),lI=(0,tt.default)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]]),lB=(0,tt.default)("split",[["path",{d:"M16 3h5v5",key:"1806ms"}],["path",{d:"M8 3H3v5",key:"15dfkv"}],["path",{d:"M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3",key:"1qrqzj"}],["path",{d:"m15 9 6-6",key:"ko1vev"}]]),lD=(0,tt.default)("magnet",[["path",{d:"m6 15-4-4 6.75-6.77a7.79 7.79 0 0 1 11 11L13 22l-4-4 6.39-6.36a2.14 2.14 0 0 0-3-3L6 15",key:"1i3lhw"}],["path",{d:"m5 8 4 4",key:"j6kj7e"}],["path",{d:"m12 15 4 4",key:"lnac28"}]]),lL=(0,tt.default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),lz=(0,tt.default)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),lF=(0,tt.default)("shield-half",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M12 22V2",key:"zs6s6o"}]]),lO=(0,tt.default)("shield-plus",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"M9 12h6",key:"1c52cq"}],["path",{d:"M12 9v6",key:"199k2o"}]]),lH=(0,tt.default)("battery-charging",[["path",{d:"m11 7-3 5h4l-3 5",key:"b4a64w"}],["path",{d:"M14.856 6H16a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.935",key:"lre1cr"}],["path",{d:"M22 14v-4",key:"14q9d5"}],["path",{d:"M5.14 18H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.936",key:"13q5k0"}]]),lW=[{id:"speed",title:"速度 +12%",desc:"飞船最大速度提升",color:"#34d399",icon:"Wind"},{id:"accel",title:"加速度 +15%",desc:"更灵活的转向响应",color:"#34d399",icon:"Gauge"},{id:"friction",title:"摩擦优化 +5%",desc:"惯性更小,转向更利落",color:"#34d399",icon:"Feather"},{id:"shield_max",title:"护盾上限 +25",desc:"最高护盾值提升",color:"#34d399",icon:"Shield"},{id:"shield_regen",title:"护盾恢复 +50%",desc:"未受击时护盾回血更快",color:"#34d399",icon:"HeartPulse"},{id:"energy_max",title:"能量上限 +25",desc:"更多射击储备",color:"#fbbf24",icon:"Battery"},{id:"energy_regen",title:"能量恢复 +30%",desc:"能量回充加速",color:"#fbbf24",icon:"Zap"},{id:"firepower",title:"火力 +25%",desc:"每发子弹伤害更高",color:"#fb7185",icon:"Flame"},{id:"fire_rate",title:"射速 +20%",desc:"射击间隔更短",color:"#fb7185",icon:"Timer"},{id:"double_shot",title:"双发",desc:"每次射击发射 2 发(仅一次)",color:"#e879f9",icon:"Split"},{id:"attract_radius",title:"吸引半径 +40%",desc:"更远距离吸取收集物",color:"#e879f9",icon:"Magnet"},{id:"collect_radius",title:"收集半径 +50%",desc:"更易拾取道具与晶体",color:"#e879f9",icon:"Circle"},{id:"invuln_time",title:"无敌时间 +200ms",desc:"受击后更多喘息",color:"#34d399",icon:"ShieldCheck"},{id:"damage_reduce",title:"受击伤害 -20%",desc:"减少承受的伤害",color:"#34d399",icon:"ShieldHalf"},{id:"boss_bonus",title:"BOSS 战金币 +50%",desc:"击败 BOSS 奖励翻倍加成",color:"#fbbf24",icon:"Crown"},{id:"normal_score",title:"普通关卡分数 +30%",desc:"通关得分提升",color:"#fbbf24",icon:"Star"},{id:"start_shield",title:"起始护盾 +20",desc:"每局开局更高护盾",color:"#34d399",icon:"ShieldPlus"},{id:"start_energy",title:"起始能量 +20",desc:"每局开局更多能量",color:"#fbbf24",icon:"BatteryCharging"}];function lK(){return{speedMult:1,accelMult:1,frictionBonus:0,shieldMaxBonus:0,shieldRegenMult:1,energyMaxBonus:0,energyRegenMult:1,firepowerMult:1,fireRateMult:1,doubleShot:!1,attractRadiusMult:1,collectRadiusMult:1,invulnBonusMs:0,damageReduceMult:1,bossBonusMult:1,normalScoreMult:1,startShieldBonus:0,startEnergyBonus:0}}function lq(e){return 100+e.upgrades.shieldMaxBonus}function lU(e){return 100+e.upgrades.energyMaxBonus}function lX(e){return 900*e.upgrades.accelMult}function lV(e){return 600+e.upgrades.invulnBonusMs}function lY(e,t){e.shakeAmount=t??14,e.shakeTimer=280}function lG(e,t){for(e.particles.push({id:e.nextEntityId++,type:"particle",...t});e.particles.length>200;)e.particles.shift()}function lJ(e,t,a,r,s,l=180,n=.6,o=3){for(let i=0;i<s;i++){let c=i/s*Math.PI*2+.4*Math.random(),d=l*(.4+.8*Math.random());lG(e,{x:t,y:a,vx:Math.cos(c)*d,vy:Math.sin(c)*d,life:n*(.7+.6*Math.random()),maxLife:n,size:o*(.6+.8*Math.random()),color:r,shrink:!0})}}function lZ(e,t){let a=t.heading+Math.PI,r=a+(Math.random()-.5)*.6,s=80+60*Math.random(),l=Math.min(1,t.thrust),n=Math.round(52+199*l),o=Math.round(211+-20*l),i=Math.round(153+-117*l),c=`rgba(${n},${o},${i},0.9)`;lG(e,{x:t.x+Math.cos(a)*t.radius,y:t.y+Math.sin(a)*t.radius,vx:Math.cos(r)*s+.3*t.vx,vy:Math.sin(r)*s+.3*t.vy,life:.35+.25*Math.random(),maxLife:.6,size:2.5+2*Math.random(),color:c,shrink:!0})}function lQ(e,t){e.bullets.length>=80&&e.bullets.shift(),e.bullets.push({id:e.nextEntityId++,type:"bullet",...t})}function l0(e,t,a,r){let s=["shield","energy","rapid","overdrive","magnet"],l=s[Math.floor(Math.random()*s.length)],n="boss"===r?18:10;e.powerups.length>=12&&e.powerups.shift(),e.powerups.push({id:e.nextEntityId++,type:"powerup",...{x:t,y:a,vx:(Math.random()-.5)*30,vy:20+20*Math.random(),powerupType:l,radius:14,rotation:0,rotationSpeed:(Math.random()-.5)*2,pulsePhase:Math.random()*Math.PI*2,life:n,maxLife:n,collected:!1}})}function l1(e){let t=e.level,a=e.collectedCrystals*(8+2*t),r=e.collectedInsights*(2+.5*t),s=e.collectedBeacons*(1.5+.3*t),l=1;"won"===e.phase?(l=e.isBossLevel?3:1.5,e.isBossLevel&&(l*=e.upgrades.bossBonusMult)):"lost"===e.phase&&(l=.5);let n={crystals:Math.round(a*l),insights:Math.round(r*l*10)/10,contact:Math.round(s*l*10)/10},o=Math.max(0,1e3-5*e.timeSec),i=Math.round(10*e.ship.shield),c="won"===e.phase?e.isBossLevel?5e3:2e3:0,d=e.score+o+i+c+500*t;return{level:t,phase:e.phase,isBossLevel:e.isBossLevel,durationSec:Math.round(10*e.timeSec)/10,collectedCrystals:e.collectedCrystals,collectedInsights:e.collectedInsights,collectedBeacons:e.collectedBeacons,remainingShield:Math.round(e.ship.shield),score:Math.round(d),rewards:n,timestamp:Date.now()}}let l2="echo-nexus-cruise-v1";function l5(){return{highScore:0,totalRuns:0,totalWins:0,bestLevel:0,totalCrystals:0,totalInsights:0,totalContact:0,bossKills:0,lastResult:null,recentResults:[]}}function l3(){try{let e=window.localStorage.getItem(l2);if(!e)return l5();let t=JSON.parse(e);return{...l5(),...t,recentResults:Array.isArray(t.recentResults)?t.recentResults.slice(0,20):[]}}catch{return l5()}}let l4="#34d399",l6="#34d399",l8="#d1fae5",l9="#e879f9",l7="#fbbf24",ne="#fb7185",nt={shield:"#34d399",energy:"#fbbf24",rapid:"#e879f9",overdrive:"#fb7185",magnet:"#a7f3d0"},na={Wind:l$,Gauge:l_,Feather:lR,Shield:lC,HeartPulse:lE,Battery:lA,Zap:s3,Flame:lg,Timer:lI,Split:lB,Magnet:lD,Circle:lL,ShieldCheck:lz,ShieldHalf:lF,Crown:lm,Star:sP,ShieldPlus:lO,BatteryCharging:lH};function nr({onClose:e}){let t=(0,g.useRef)(null),a=(0,g.useRef)(null),r=(0,g.useRef)(lK()),s=(0,g.useRef)([]),l=(0,g.useRef)(0),n=(0,g.useRef)(0),o=(0,g.useRef)([]),i=(0,g.useRef)(new Set),c=(0,g.useRef)({active:!1,baseX:0,baseY:0,knobX:0,knobY:0,touchId:null}),d=(0,g.useRef)(!1),u=(0,g.useRef)(!1),h=(0,g.useRef)(!1),f=(0,g.useRef)("ready"),m=(0,g.useRef)(null),x=(0,g.useRef)({shield:100,shieldMax:100,energy:100,energyMax:100,score:0,time:0,duration:60,crystals:0,totalCrystals:0,insights:0,totalInsights:0,beacons:0,totalBeacons:0,lowShield:!1,isBossLevel:!1,bossHp:0,bossMaxHp:0,bossPhase:1,buffs:[],appliedUpgrades:[],pickupFlashColor:null}),b=(0,g.useRef)(0),v=(0,g.useRef)({w:0,h:0}),[y,w]=(0,g.useState)("ready"),[j,N]=(0,g.useState)(1),[k,M]=(0,g.useState)(null),[S,P]=(0,g.useState)(()=>l3()),[C,T]=(0,g.useState)(!1),[$]=(0,g.useState)(()=>"ontouchstart"in window||navigator.maxTouchPoints>0),[_,R]=(0,g.useState)({baseX:0,baseY:0,knobX:0,knobY:0,active:!1}),[E,A]=(0,g.useState)([]),[B,D]=(0,g.useState)(null),[L,z]=(0,g.useState)([]),[F,O]=(0,g.useState)({shield:100,shieldMax:100,energy:100,energyMax:100,score:0,time:0,duration:60,crystals:0,totalCrystals:0,insights:0,totalInsights:0,beacons:0,totalBeacons:0,lowShield:!1,isBossLevel:!1,bossHp:0,bossMaxHp:0,bossPhase:1,buffs:[],appliedUpgrades:[],pickupFlashColor:null}),H=(0,g.useCallback)(e=>{let{w:t,h:l}=v.current;if(0===t||0===l)return;let n=function(e,t=Date.now()){var a=`cruise-l${e}-s${t}`;let r=0x811c9dc5;for(let e=0;e<a.length;e++)r^=a.charCodeAt(e),r=Math.imul(r,0x1000193);return r>>>0}(e),o=function(e,t,a,r,s=lK(),l=[]){let n,o,i=(o=t>>>0,function(){o|=0;let e=o=o+0x6d2b79f5|0;return e=Math.imul(e^e>>>15,1|e),(((e^=e+Math.imul(e^e>>>7,61|e))^e>>>14)>>>0)/0x100000000}),c=1,d=e>0&&e%5==0,u=Math.min(100+s.shieldMaxBonus,100+s.shieldMaxBonus+s.startShieldBonus),h=Math.min(100+s.energyMaxBonus,100+s.energyMaxBonus+s.startEnergyBonus),f={id:c++,type:"ship",x:a/2,y:r-80,vx:0,vy:0,heading:-Math.PI/2,shield:u,energy:h,radius:14,thrust:0},m=[],x=null,p=0,g=0,b=0;if(d){let t=100+20*e;x={id:c++,type:"boss",x:a/2,y:.3*r,vx:0,vy:0,hp:t,maxHp:t,radius:70,rotation:0,rotationSpeed:.3,pulsePhase:0,attackPhase:1,directTimer:1.5,homingTimer:2,summonTimer:4,driftAngle:0,dropStage:0,breathPhase:0,tentaclePhase:0},n=120;for(let t=0;t<4;t++){let t=14+16*i(),s=60+i()*(a-120),l=60+i()*(r-120),n=20+30*i(),o=i()*Math.PI*2,d=7+Math.floor(4*i()),u=[];for(let e=0;e<d;e++)u.push(.75+.4*i());m.push({id:c++,type:"asteroid",x:s,y:l,vx:Math.cos(o)*n,vy:Math.sin(o)*n,radius:t,rotation:i()*Math.PI*2,rotationSpeed:(i()-.5)*1.2,vertices:u,damage:18+1.5*e})}p=4;for(let e=0;e<p;e++){let e=80+i()*(a-160),t=120+i()*(r-240);m.push({id:c++,type:"crystal",x:e,y:t,vx:0,vy:0,radius:12,rotation:i()*Math.PI*2,rotationSpeed:(i()-.5)*2,pulsePhase:i()*Math.PI*2,collected:!1})}}else{let t={id:c++,type:"stargate",x:a/2,y:70,vx:0,vy:0,radius:42,rotation:0,rotationSpeed:.6,pulsePhase:0,active:!1};m.push(t);let s=Math.min(8+2*e,32);for(let l=0;l<s;l++){let s=16+28*i(),l=0,n=0,o=0;do l=40+i()*(a-80),n=140+i()*(r-260),o++;while(o<20&&(120>Math.hypot(l-f.x,n-f.y)||100>Math.hypot(l-t.x,n-t.y)))let d=30+60*i()+4*e,u=i()*Math.PI*2,h=7+Math.floor(4*i()),x=[];for(let e=0;e<h;e++)x.push(.75+.4*i());m.push({id:c++,type:"asteroid",x:l,y:n,vx:Math.cos(u)*d,vy:Math.sin(u)*d,radius:s,rotation:i()*Math.PI*2,rotationSpeed:(i()-.5)*1.2,vertices:x,damage:18+1.5*e})}let l=Math.min(1+Math.floor(e/2),5);for(let e=0;e<l;e++){let e=60+50*i(),s=0,l=0,n=0;do s=100+i()*(a-200),l=180+i()*(r-320),n++;while(n<20&&(180>Math.hypot(s-f.x,l-f.y)||150>Math.hypot(s-t.x,l-t.y)))let o=12+18*i(),d=i()*Math.PI*2;m.push({id:c++,type:"storm",x:s,y:l,vx:Math.cos(d)*o,vy:Math.sin(d)*o,radius:e,rotation:i()*Math.PI*2,rotationSpeed:(i()-.5)*.4,lightningTimer:.5*i(),cloudSeed:Math.floor(1e4*i())})}p=5+e;for(let e=0;e<p;e++){let e=0,t=0,s=0;do e=50+i()*(a-100),t=120+i()*(r-220),s++;while(s<20&&90>Math.hypot(e-f.x,t-f.y))m.push({id:c++,type:"crystal",x:e,y:t,vx:0,vy:0,radius:12,rotation:i()*Math.PI*2,rotationSpeed:(i()-.5)*2,pulsePhase:i()*Math.PI*2,collected:!1})}g=2+Math.floor(e/3);for(let e=0;e<g;e++){let e=0,t=0,s=0;do e=60+i()*(a-120),t=140+i()*(r-240),s++;while(s<20&&100>Math.hypot(e-f.x,t-f.y))m.push({id:c++,type:"insight",x:e,y:t,vx:0,vy:0,radius:14,pulsePhase:i()*Math.PI*2,swirlAngle:i()*Math.PI*2,collected:!1})}b=1+Math.floor(e/4);for(let e=0;e<b;e++){let e=0,t=0,s=0;do e=80+i()*(a-160),t=160+i()*(r-280),s++;while(s<20&&110>Math.hypot(e-f.x,t-f.y))m.push({id:c++,type:"beacon",x:e,y:t,vx:0,vy:0,radius:16,rotation:i()*Math.PI*2,rotationSpeed:(i()-.5)*1.5,pulsePhase:i()*Math.PI*2,collected:!1})}n=Math.min(60+(e-1)*3,90)}return{phase:"ready",level:e,seed:t,ship:f,entities:m,particles:[],bullets:[],powerups:[],boss:x,isBossLevel:d,score:0,timeSec:0,durationSec:n,collectedCrystals:0,collectedInsights:0,collectedBeacons:0,totalCrystals:p,totalInsights:g,totalBeacons:b,shakeAmount:0,shakeTimer:0,flashLowShield:!1,pickupFlash:null,worldWidth:a,worldHeight:r,nextEntityId:c,invulnTimer:0,shootCooldown:0,endedAt:null,upgrades:s,appliedUpgrades:l,pendingUpgradeChoice:[],activeBuffs:[],bossDefeated:!1}}(e,n,t,l,r.current,s.current);o.phase="playing",a.current=o,u.current=!1,m.current=null,M(null),N(e),w("playing"),f.current="playing",T(!1),h.current=!1,D(null),x.current={shield:o.ship.shield,shieldMax:100+o.upgrades.shieldMaxBonus,energy:o.ship.energy,energyMax:100+o.upgrades.energyMaxBonus,score:0,time:0,duration:o.durationSec,crystals:0,totalCrystals:o.totalCrystals,insights:0,totalInsights:o.totalInsights,beacons:0,totalBeacons:o.totalBeacons,lowShield:!1,isBossLevel:o.isBossLevel,bossHp:o.boss?.hp??0,bossMaxHp:o.boss?.maxHp??0,bossPhase:o.boss?.attackPhase??1,buffs:[],appliedUpgrades:o.appliedUpgrades,pickupFlashColor:null},O({...x.current})},[]);(0,g.useEffect)(()=>{let e=t.current;if(!e)return;let r=e.getContext("2d");if(!r)return;let s=()=>{let t=Math.min(window.devicePixelRatio||1,2),s=window.innerWidth,l=window.innerHeight;e.width=Math.floor(s*t),e.height=Math.floor(l*t),e.style.width=s+"px",e.style.height=l+"px",r.setTransform(t,0,0,t,0,0),v.current={w:s,h:l},o.current=function(e,t){let a=[{stars:[],speed:8,parallax:.1},{stars:[],speed:18,parallax:.25},{stars:[],speed:36,parallax:.5}],r=[100,60,30];for(let s=0;s<a.length;s++){let l=a[s];for(let a=0;a<r[s];a++)l.stars.push({x:Math.random()*e,y:Math.random()*t,size:.5+.6*s+Math.random()*(.5+.5*s),brightness:.2+.25*s+.25*Math.random(),twinkle:Math.random()*Math.PI*2,twinkleSpeed:.5+2*Math.random()})}return a}(s,l),a.current&&(a.current.worldWidth=s,a.current.worldHeight=l)};return s(),window.addEventListener("resize",s),()=>window.removeEventListener("resize",s)},[]),(0,g.useEffect)(()=>{let t=t=>{let a=t.key.toLowerCase();if(["w","a","s","d","arrowup","arrowdown","arrowleft","arrowright"].includes(a))i.current.add(a),t.preventDefault();else if(" "===a||"spacebar"===a)d.current=!0,t.preventDefault();else if("p"===a){if("playing"===f.current){let e=!h.current;h.current=e,T(e)}}else"escape"===a&&e()},a=e=>{let t=e.key.toLowerCase();["w","a","s","d","arrowup","arrowdown","arrowleft","arrowright"].includes(t)?i.current.delete(t):(" "===t||"spacebar"===t)&&(d.current=!1)};return window.addEventListener("keydown",t),window.addEventListener("keyup",a),()=>{window.removeEventListener("keydown",t),window.removeEventListener("keyup",a)}},[e]),(0,g.useEffect)(()=>{let e=()=>{d.current=!1,"playing"===f.current&&(h.current=!0,T(!0))};return window.addEventListener("blur",e),document.addEventListener("visibilitychange",e),()=>{window.removeEventListener("blur",e),document.removeEventListener("visibilitychange",e)}},[]),(0,g.useEffect)(()=>{let e=e=>{if("playing"===f.current&&!h.current)for(let t=0;t<e.changedTouches.length;t++){let a=e.changedTouches[t];if(a.clientX>.65*window.innerWidth&&a.clientY>.55*window.innerHeight){d.current=!0,e.preventDefault();continue}if(a.clientX<.5*window.innerWidth&&a.clientY>.35*window.innerHeight){if(c.current.active)continue;c.current={active:!0,baseX:a.clientX,baseY:a.clientY,knobX:0,knobY:0,touchId:a.identifier},R({baseX:a.clientX,baseY:a.clientY,knobX:0,knobY:0,active:!0}),e.preventDefault();return}}},t=e=>{if(c.current.active)for(let t=0;t<e.changedTouches.length;t++){let a=e.changedTouches[t];if(a.identifier!==c.current.touchId)continue;let r=a.clientX-c.current.baseX,s=a.clientY-c.current.baseY,l=Math.hypot(r,s),n=Math.min(l,55),o=l>0?r/l*n:0,i=l>0?s/l*n:0;c.current.knobX=o/55,c.current.knobY=i/55,R({baseX:c.current.baseX,baseY:c.current.baseY,knobX:o,knobY:i,active:!0}),e.preventDefault();return}},a=e=>{for(let t=0;t<e.changedTouches.length;t++){let a=e.changedTouches[t];a.identifier===c.current.touchId&&(c.current={active:!1,baseX:0,baseY:0,knobX:0,knobY:0,touchId:null},R({baseX:0,baseY:0,knobX:0,knobY:0,active:!1})),a.clientX>.65*window.innerWidth&&a.clientY>.55*window.innerHeight&&(d.current=!1)}e.preventDefault()};return window.addEventListener("touchstart",e,{passive:!1}),window.addEventListener("touchmove",t,{passive:!1}),window.addEventListener("touchend",a,{passive:!1}),window.addEventListener("touchcancel",a,{passive:!1}),()=>{window.removeEventListener("touchstart",e),window.removeEventListener("touchmove",t),window.removeEventListener("touchend",a),window.removeEventListener("touchcancel",a)}},[]),(0,g.useEffect)(()=>{let e=t.current;if(!e)return;let r=e.getContext("2d");if(!r)return;let s=e=>{l.current=requestAnimationFrame(s);let t=0===n.current?16:e-n.current;n.current=e;let p=Math.min(t/1e3,.05),{w:g,h:y}=v.current;if(0===g||0===y)return;let j=a.current;if(j&&"playing"===j.phase&&!h.current&&j){let a=0,r=0,s=i.current;(s.has("w")||s.has("arrowup"))&&(r-=1),(s.has("s")||s.has("arrowdown"))&&(r+=1),(s.has("a")||s.has("arrowleft"))&&(a-=1),(s.has("d")||s.has("arrowright"))&&(a+=1),c.current.active&&(a=c.current.knobX,r=c.current.knobY);let l=function(e,t,a){let r,s;if("playing"!==e.phase)return null;let l=Math.min(t/1e3,.05);e.timeSec+=l,e.shakeTimer>0&&(e.shakeTimer-=t,e.shakeTimer<=0&&(e.shakeTimer=0,e.shakeAmount=0)),e.pickupFlash&&(e.pickupFlash.timer-=t,e.pickupFlash.timer<=0&&(e.pickupFlash=null)),e.invulnTimer>0&&(e.invulnTimer=Math.max(0,e.invulnTimer-t)),e.shootCooldown>0&&(e.shootCooldown=Math.max(0,e.shootCooldown-t));for(let t=e.activeBuffs.length-1;t>=0;t--)e.activeBuffs[t].remaining-=l,e.activeBuffs[t].remaining<=0&&e.activeBuffs.splice(t,1);let n=e.ship;if(a.active&&(0!==a.dx||0!==a.dy)){let t=Math.hypot(a.dx,a.dy),r=a.dx/t,s=a.dy/t;n.vx+=r*lX(e)*l,n.vy+=s*lX(e)*l,n.heading=Math.atan2(s,r),n.thrust=Math.min(1,n.thrust+4*l),.9>Math.random()&&lZ(e,n),.5>Math.random()&&lZ(e,n)}else n.thrust=Math.max(0,n.thrust-3*l);let o=Math.pow(Math.min(.98,.88+e.upgrades.frictionBonus),60*l);n.vx*=o,n.vy*=o;let i=Math.hypot(n.vx,n.vy),c=(r=e.upgrades.speedMult,e.activeBuffs.some(e=>"overdrive"===e.type)&&(r*=1.5),280*r);for(let t of(i>c&&(n.vx=n.vx/i*c,n.vy=n.vy/i*c),n.x+=n.vx*l,n.y+=n.vy*l,n.x<n.radius&&(n.x=n.radius,n.vx=.4*Math.abs(n.vx)),n.x>e.worldWidth-n.radius&&(n.x=e.worldWidth-n.radius,n.vx=-(.4*Math.abs(n.vx))),n.y<n.radius&&(n.y=n.radius,n.vy=.4*Math.abs(n.vy)),n.y>e.worldHeight-n.radius&&(n.y=e.worldHeight-n.radius,n.vy=-(.4*Math.abs(n.vy))),a.shoot&&function(e){let t;if("playing"!==e.phase||e.shootCooldown>0)return;let a=e.ship;if(a.energy<5)return;a.energy-=5,t=e.upgrades.fireRateMult,e.activeBuffs.some(e=>"rapid"===e.type)&&(t*=.5),e.shootCooldown=150*t;let r=8*e.upgrades.firepowerMult,s=a.heading,l=a.x+Math.cos(s)*(a.radius+4),n=a.y+Math.sin(s)*(a.radius+4);if(lQ(e,{x:l,y:n,vx:540*Math.cos(s),vy:540*Math.sin(s),owner:"ship",radius:4,damage:r,life:1.4,homing:!1,homingTime:0,color:"#34d399"}),e.upgrades.doubleShot)for(let t of[.14,-.14]){let l=s+t;lQ(e,{x:a.x+Math.cos(l)*(a.radius+4),y:a.y+Math.sin(l)*(a.radius+4),vx:540*Math.cos(l),vy:540*Math.sin(l),owner:"ship",radius:4,damage:r,life:1.4,homing:!1,homingTime:0,color:"#34d399"})}lJ(e,l,n,"#a7f3d0",4,120,.25,2)}(e),e.invulnTimer<=0&&n.shield<lq(e)&&(n.shield=Math.min(lq(e),n.shield+2*e.upgrades.shieldRegenMult*l)),n.energy<lU(e)&&(n.energy=Math.min(lU(e),n.energy+8*e.upgrades.energyRegenMult*l)),e.flashLowShield=n.shield<.3*lq(e),e.entities))switch(t.x+=t.vx*l,t.y+=t.vy*l,t.type){case"asteroid":t.rotation+=t.rotationSpeed*l;if(t.x<-100||t.x>e.worldWidth+100||t.y<-100||t.y>e.worldHeight+100){if(t.summoned){t.damage=-999;break}let a=Math.floor(4*Math.random());0===a?(t.x=-t.radius,t.y=Math.random()*e.worldHeight,t.vx=Math.abs(t.vx)):1===a?(t.x=e.worldWidth+t.radius,t.y=Math.random()*e.worldHeight,t.vx=-Math.abs(t.vx)):2===a?(t.x=Math.random()*e.worldWidth,t.y=-t.radius,t.vy=Math.abs(t.vy)):(t.x=Math.random()*e.worldWidth,t.y=e.worldHeight+t.radius,t.vy=-Math.abs(t.vy))}break;case"storm":t.rotation+=t.rotationSpeed*l,t.lightningTimer-=l,t.lightningTimer<=0&&(t.lightningTimer=.3+.5*Math.random()),(t.x<t.radius||t.x>e.worldWidth-t.radius)&&(t.vx*=-1),(t.y<t.radius||t.y>e.worldHeight-t.radius)&&(t.vy*=-1);break;case"crystal":t.rotation+=t.rotationSpeed*l,t.pulsePhase+=3*l;break;case"insight":t.pulsePhase+=2.5*l,t.swirlAngle+=1.5*l;break;case"beacon":t.rotation+=t.rotationSpeed*l,t.pulsePhase+=2*l;break;case"stargate":{t.rotation+=t.rotationSpeed*l,t.pulsePhase+=2*l;let e=Math.hypot(n.x-t.x,n.y-t.y);t.active=e<200}}e.entities=e.entities.filter(e=>"asteroid"!==e.type||!(e.damage<=-100)),e.boss&&function(e,t){let a=e.boss;if(!a)return;let r=e.ship,s=a.hp/a.maxHp;s>.66?a.attackPhase=1:s>.33?a.attackPhase=2:a.attackPhase=3,a.rotation+=a.rotationSpeed*t,a.pulsePhase+=2*t,a.breathPhase+=1.4*t,a.tentaclePhase+=.8*t,a.driftAngle+=.4*t;let l=e.worldWidth/2+Math.cos(a.driftAngle)*(.25*e.worldWidth),n=.32*e.worldHeight+40*Math.sin(1.3*a.driftAngle),o=l-a.x,i=n-a.y,c=Math.hypot(o,i)||1;if(a.vx=o/c*18,a.vy=i/c*18,a.x+=a.vx*t,a.y+=a.vy*t,a.x=Math.max(a.radius+20,Math.min(e.worldWidth-a.radius-20,a.x)),a.y=Math.max(a.radius+20,Math.min(.55*e.worldHeight,a.y)),a.attackPhase>=1&&(a.directTimer-=t,a.directTimer<=0))if(a.directTimer=1===a.attackPhase?1.5:2.2,1===a.attackPhase){let t=Math.atan2(r.y-a.y,r.x-a.x);lQ(e,{x:a.x+Math.cos(t)*a.radius,y:a.y+Math.sin(t)*a.radius,vx:260*Math.cos(t),vy:260*Math.sin(t),owner:"boss",radius:6,damage:14,life:4,homing:!1,homingTime:0,color:"#fb7185"})}else{let t=Math.atan2(r.y-a.y,r.x-a.x);for(let r=-2;r<=2;r++){let s=t+.18*r;lQ(e,{x:a.x+Math.cos(s)*a.radius,y:a.y+Math.sin(s)*a.radius,vx:240*Math.cos(s),vy:240*Math.sin(s),owner:"boss",radius:6,damage:14,life:4,homing:!1,homingTime:0,color:"#fb7185"})}}if(a.attackPhase>=2&&(a.summonTimer-=t,a.summonTimer<=0)){a.summonTimer=4.5;for(let t=0;t<2;t++){let t=Math.random()*Math.PI*2,s=a.radius+10,l=a.x+Math.cos(t)*s,n=a.y+Math.sin(t)*s,o=100+60*Math.random(),i=Math.atan2(r.y-n,r.x-l)+(Math.random()-.5)*.8,c=[];for(let e=0;e<7;e++)c.push(.75+.4*Math.random());e.entities.push({id:e.nextEntityId++,type:"asteroid",x:l,y:n,vx:Math.cos(i)*o,vy:Math.sin(i)*o,radius:14+8*Math.random(),rotation:Math.random()*Math.PI*2,rotationSpeed:(Math.random()-.5)*2,vertices:c,damage:18,summoned:!0})}lJ(e,a.x,a.y,"#e879f9",12,200,.5,3)}if(a.attackPhase>=3&&(a.homingTimer-=t,a.homingTimer<=0)){a.homingTimer=2;let t=Math.atan2(r.y-a.y,r.x-a.x);lQ(e,{x:a.x+Math.cos(t)*a.radius,y:a.y+Math.sin(t)*a.radius,vx:200*Math.cos(t),vy:200*Math.sin(t),owner:"boss",radius:7,damage:14,life:5,homing:!0,homingTime:3,color:"#e879f9"})}let d=Math.min(3,Math.floor((1-s)/.25));for(;a.dropStage<d;)a.dropStage++,l0(e,a.x+(Math.random()-.5)*80,a.y+40,"boss"),lJ(e,a.x,a.y,"#fbbf24",16,200,.6,3)}(e,l),function(e,t){let a=e.ship;for(let r=e.bullets.length-1;r>=0;r--){let s=e.bullets[r];if(s.life-=t,s.life<=0){e.bullets.splice(r,1);continue}if(s.homing&&s.homingTime>0){s.homingTime-=t;let e=Math.atan2(a.y-s.y,a.x-s.x),r=Math.hypot(s.vx,s.vy),l=Math.atan2(s.vy,s.vx),n=e-l;for(;n>Math.PI;)n-=2*Math.PI;for(;n<-Math.PI;)n+=2*Math.PI;let o=l+Math.max(-2*t,Math.min(2*t,n));s.vx=Math.cos(o)*r,s.vy=Math.sin(o)*r}if(s.x+=s.vx*t,s.y+=s.vy*t,s.x<-50||s.x>e.worldWidth+50||s.y<-50||s.y>e.worldHeight+50){e.bullets.splice(r,1);continue}if(.4>Math.random()&&lG(e,{x:s.x,y:s.y,vx:-(.05*s.vx),vy:-(.05*s.vy),life:.2,maxLife:.3,size:2,color:s.color,shrink:!0}),"ship"===s.owner){let t=!1;for(let a of e.entities)if("asteroid"===a.type&&Math.hypot(s.x-a.x,s.y-a.y)<a.radius+s.radius){a.summoned||a.radius<22?(lJ(e,a.x,a.y,"#fb7185",14,220,.5,3),a.damage=-999,e.score+=30):lJ(e,s.x,s.y,"#fbbf24",6,160,.3,2),t=!0;break}if(!t&&e.boss&&Math.hypot(s.x-e.boss.x,s.y-e.boss.y)<e.boss.radius+s.radius&&(e.boss.hp=Math.max(0,e.boss.hp-s.damage),lJ(e,s.x,s.y,"#fbbf24",8,180,.4,2.5),lJ(e,s.x,s.y,"#fb7185",4,100,.2,2),t=!0),t){e.bullets.splice(r,1);continue}}else if(e.invulnTimer<=0&&Math.hypot(s.x-a.x,s.y-a.y)<a.radius+s.radius){if(!e.activeBuffs.some(e=>"overdrive"===e.type)){let t=s.damage*e.upgrades.damageReduceMult;a.shield=Math.max(0,a.shield-t),lJ(e,a.x,a.y,"#fb7185",10,200,.4,3),lY(e,10),e.invulnTimer=lV(e)}e.bullets.splice(r,1);continue}}e.entities=e.entities.filter(e=>"asteroid"!==e.type||!(e.damage<=-100))}(e,l),function(e,t){let a=e.ship;for(let r=e.powerups.length-1;r>=0;r--){let s=e.powerups[r];if(s.collected||(s.life-=t,s.life<=0)){e.powerups.splice(r,1);continue}s.rotation+=s.rotationSpeed*t,s.pulsePhase+=3*t,s.x+=s.vx*t,s.y+=s.vy*t,s.vx*=.96,s.vy*=.96,s.x=Math.max(s.radius,Math.min(e.worldWidth-s.radius,s.x)),s.y=Math.max(s.radius,Math.min(e.worldHeight-s.radius,s.y));let l=Math.hypot(a.x-s.x,a.y-s.y),n=120*(e.activeBuffs.some(e=>"magnet"===e.type)?3:1);if(l<n){let e=Math.atan2(a.y-s.y,a.x-s.x),r=(1-l/n)*380;s.x+=Math.cos(e)*r*t,s.y+=Math.sin(e)*r*t}l<26+a.radius&&(s.collected=!0,function(e,t){let a=e.ship,r="#34d399";switch(t){case"shield":a.shield=Math.min(lq(e),a.shield+30),r="#34d399",lJ(e,a.x,a.y,r,18,220,.6,3);break;case"energy":a.energy=Math.min(lU(e),a.energy+50),r="#fbbf24",lJ(e,a.x,a.y,r,18,220,.6,3);break;case"rapid":e.activeBuffs.push({type:"rapid",remaining:8,total:8}),r="#e879f9";break;case"overdrive":e.activeBuffs.push({type:"overdrive",remaining:8,total:8}),r="#fb7185";break;case"magnet":e.activeBuffs.push({type:"magnet",remaining:6,total:6}),r="#a7f3d0"}e.pickupFlash={color:r,timer:400},e.score+=50}(e,s.powerupType),e.powerups.splice(r,1))}}(e,l);for(let t=e.particles.length-1;t>=0;t--){let a=e.particles[t];if(a.life-=l,a.life<=0){e.particles.splice(t,1);continue}a.x+=a.vx*l,a.y+=a.vy*l,a.vx*=.96,a.vy*=.96}if(e.invulnTimer<=0){let t=e.activeBuffs.some(e=>"overdrive"===e.type);for(let a of e.entities)if("asteroid"===a.type&&Math.hypot(n.x-a.x,n.y-a.y)<n.radius+a.radius){if(!t){let t=a.damage*e.upgrades.damageReduceMult;n.shield=Math.max(0,n.shield-t)}let r=Math.atan2(n.y-a.y,n.x-a.x);n.vx+=200*Math.cos(r),n.vy+=200*Math.sin(r),a.vx=-Math.cos(r)*Math.abs(a.vx)*.5,a.vy=-Math.sin(r)*Math.abs(a.vy)*.5,lJ(e,n.x,n.y,"#fb7185",18,260,.7,3.5),lJ(e,n.x,n.y,"#fbbf24",8,180,.5,2.5),lY(e,14),e.invulnTimer=lV(e);break}}if(e.invulnTimer<=0){let t=e.activeBuffs.some(e=>"overdrive"===e.type);for(let a of e.entities)if("storm"===a.type&&Math.hypot(n.x-a.x,n.y-a.y)<n.radius+.7*a.radius){if(!t){let t=12*l*e.upgrades.damageReduceMult;n.shield=Math.max(0,n.shield-t)}.3>Math.random()&&lJ(e,n.x,n.y,"#e879f9",2,100,.4,2)}}if(e.invulnTimer<=0&&e.boss){let t=e.activeBuffs.some(e=>"overdrive"===e.type);if(Math.hypot(n.x-e.boss.x,n.y-e.boss.y)<n.radius+.85*e.boss.radius){if(!t){let t=22*e.upgrades.damageReduceMult;n.shield=Math.max(0,n.shield-t)}let a=Math.atan2(n.y-e.boss.y,n.x-e.boss.x);n.vx+=280*Math.cos(a),n.vy+=280*Math.sin(a),lJ(e,n.x,n.y,"#fb7185",14,240,.5,3),lY(e,16),e.invulnTimer=lV(e)}}let d=(s=e.upgrades.attractRadiusMult,e.activeBuffs.some(e=>"magnet"===e.type)&&(s*=3),90*s),u=22*e.upgrades.collectRadiusMult;for(let t of e.entities)if("crystal"===t.type||"insight"===t.type||"beacon"===t.type){if(t.collected)continue;let a=Math.hypot(n.x-t.x,n.y-t.y);if(a<d){let e=Math.atan2(n.y-t.y,n.x-t.x),r=(1-a/d)*320;t.x+=Math.cos(e)*r*l,t.y+=Math.sin(e)*r*l}a<u&&(t.collected=!0,"crystal"===t.type?(e.collectedCrystals++,e.score+=Math.round(100*e.upgrades.normalScoreMult),lJ(e,t.x,t.y,"#34d399",10,200,.6,3)):"insight"===t.type?(e.collectedInsights++,e.score+=Math.round(250*e.upgrades.normalScoreMult),lJ(e,t.x,t.y,"#e879f9",10,200,.6,3)):"beacon"===t.type&&(e.collectedBeacons++,e.score+=Math.round(500*e.upgrades.normalScoreMult),lJ(e,t.x,t.y,"#fbbf24",12,220,.7,3.5),!t.powerupDropped&&.05>Math.random()&&(t.powerupDropped=!0,l0(e,t.x,t.y,"beacon"))))}if(e.boss&&e.boss.hp<=0&&!e.bossDefeated){e.bossDefeated=!0,e.phase="won",e.endedAt=Date.now();let t=e.boss.x,a=e.boss.y,r=["#fb7185","#fbbf24","#e879f9","#34d399"];for(let s=0;s<8;s++)lJ(e,t+(Math.random()-.5)*80,a+(Math.random()-.5)*80,r[s%r.length],28,360,1,4);return lY(e,28),l1(e)}if(!e.isBossLevel){for(let t of e.entities)if("stargate"===t.type&&Math.hypot(n.x-t.x,n.y-t.y)<n.radius+.6*t.radius){e.phase="won",e.endedAt=Date.now();for(let t=0;t<5;t++){let a=e.worldWidth*(.2+.6*Math.random()),r=e.worldHeight*(.2+.6*Math.random()),s=["#34d399","#fb7185","#fbbf24","#e879f9"];lJ(e,a,r,s[t%s.length],24,320,1,4)}return l1(e)}}return n.shield<=0?(e.phase="lost",e.endedAt=Date.now(),lJ(e,n.x,n.y,"#fb7185",30,360,1,4.5),lJ(e,n.x,n.y,"#fbbf24",16,240,.8,3),lY(e,24),l1(e)):e.timeSec>=e.durationSec?(e.phase="lost",e.endedAt=Date.now(),l1(e)):null}(j,t,{dx:a,dy:r,active:Math.abs(a)>.05||Math.abs(r)>.05,shoot:d.current});l&&(m.current=l,M(l),w(l.phase),f.current=l.phase,u.current||(u.current=!0,te.getState().grantCruiseReward(l.rewards),P(function(e){let t=l3();t.totalRuns++,"won"===e.phase&&(t.totalWins++,t.bestLevel=Math.max(t.bestLevel,e.level),e.isBossLevel&&t.bossKills++),t.highScore=Math.max(t.highScore,e.score),t.totalCrystals+=e.rewards.crystals,t.totalInsights+=e.rewards.insights,t.totalContact+=e.rewards.contact,t.lastResult=e,t.recentResults=[e,...t.recentResults].slice(0,20);try{window.localStorage.setItem(l2,JSON.stringify(t))}catch{}return t}(l)))),x.current={shield:j.ship.shield,shieldMax:100+j.upgrades.shieldMaxBonus,energy:j.ship.energy,energyMax:100+j.upgrades.energyMaxBonus,score:j.score,time:j.timeSec,duration:j.durationSec,crystals:j.collectedCrystals,totalCrystals:j.totalCrystals,insights:j.collectedInsights,totalInsights:j.totalInsights,beacons:j.collectedBeacons,totalBeacons:j.totalBeacons,lowShield:j.flashLowShield,isBossLevel:j.isBossLevel,bossHp:j.boss?.hp??0,bossMaxHp:j.boss?.maxHp??0,bossPhase:j.boss?.attackPhase??1,buffs:[...j.activeBuffs],appliedUpgrades:j.appliedUpgrades,pickupFlashColor:j.pickupFlash?.color??null},e-b.current>80&&(b.current=e,O({...x.current}))}r.fillStyle="#050410",r.fillRect(0,0,g,y);let N=0,k=0;if(j&&j.shakeTimer>0){let e=j.shakeAmount*(j.shakeTimer/280);N=(Math.random()-.5)*e,k=(Math.random()-.5)*e}r.save(),r.translate(N,k);let S=j?j.ship.vx:0,C=j?j.ship.vy:0;for(let e of o.current)for(let t of e.stars){t.y+=(e.speed+C*e.parallax)*p,t.x-=S*e.parallax*p,t.y>y+5&&(t.y=-5),t.y<-5&&(t.y=y+5),t.x>g+5&&(t.x=-5),t.x<-5&&(t.x=g+5),t.twinkle+=t.twinkleSpeed*p;let a=.6+.4*Math.sin(t.twinkle),s=t.brightness*a;r.fillStyle=`rgba(220,230,255,${s})`,r.beginPath(),r.arc(t.x,t.y,t.size,0,2*Math.PI),r.fill()}if(j){for(let e of j.entities)"stargate"===e.type&&function(e,t,a){e.save(),e.translate(t.x,t.y);let r=Math.max(0,1-Math.hypot(a.x-t.x,a.y-t.y)/300),s=.5+.5*Math.sin(t.pulsePhase);e.shadowBlur=25+30*r,e.shadowColor=ne;for(let a=0;a<4;a++){e.save(),e.rotate(t.rotation*(a%2==0?1:-1)*(1+.3*a)),e.beginPath();let r=t.radius*(1+.25*a);e.arc(0,0,r,0,1.5*Math.PI),e.strokeStyle=`rgba(251,113,133,${(.3+.2*s)*(1-.15*a)})`,e.lineWidth=3-.5*a,e.stroke(),e.restore()}let l=e.createRadialGradient(0,0,0,0,0,t.radius);if(l.addColorStop(0,"#ffe4e6"),l.addColorStop(.4,ne),l.addColorStop(.8,"#9f1239"),l.addColorStop(1,"rgba(159,18,57,0)"),e.fillStyle=l,e.beginPath(),e.arc(0,0,t.radius*(.9+.1*s),0,2*Math.PI),e.fill(),e.shadowBlur=0,r>.1)for(let a=0;a<8;a++){let s=2*t.rotation+a/8*Math.PI*2,l=t.radius*(.8+.6*Math.sin(t.pulsePhase+a)),n=Math.cos(s)*l,o=Math.sin(s)*l;e.fillStyle=`rgba(254,205,211,${.8*r})`,e.beginPath(),e.arc(n,o,2,0,2*Math.PI),e.fill()}r>.3&&(e.beginPath(),e.arc(0,0,1.6*t.radius,0,2*Math.PI),e.strokeStyle=`rgba(251,113,133,${.4*r})`,e.lineWidth=2,e.setLineDash([8,8]),e.stroke(),e.setLineDash([])),e.restore()}(r,e,j.ship);for(let e of j.entities)"storm"===e.type&&function(e,t){e.save(),e.translate(t.x,t.y),e.shadowBlur=30,e.shadowColor="#e879f9";for(let a=0;a<5;a++){let r=a/5*Math.PI*2+t.rotation,s=.4*t.radius*(.5+.5*Math.sin(t.cloudSeed+a)),l=Math.cos(r)*s,n=Math.sin(r)*s,o=t.radius*(.5+.2*Math.sin(.7*t.cloudSeed+2*a)),i=e.createRadialGradient(l,n,0,l,n,o);i.addColorStop(0,"rgba(232,121,249,0.55)"),i.addColorStop(.6,"rgba(168,85,247,0.3)"),i.addColorStop(1,"rgba(88,28,135,0)"),e.fillStyle=i,e.beginPath(),e.arc(l,n,o,0,2*Math.PI),e.fill()}e.shadowBlur=0;let a=e.createRadialGradient(0,0,0,0,0,.3*t.radius);if(a.addColorStop(0,"rgba(253,244,255,0.8)"),a.addColorStop(1,"rgba(232,121,249,0)"),e.fillStyle=a,e.beginPath(),e.arc(0,0,.3*t.radius,0,2*Math.PI),e.fill(),t.lightningTimer<.12){e.strokeStyle="rgba(253,244,255,0.9)",e.lineWidth=2,e.shadowBlur=12,e.shadowColor="#fdf4ff",e.beginPath();let a=0,r=0;e.moveTo(a,r);for(let s=0;s<4;s++)a+=(Math.random()-.5)*t.radius*.5,r+=(Math.random()-.5)*t.radius*.5,e.lineTo(a,r);e.stroke()}e.restore()}(r,e);for(let e of j.entities)"asteroid"===e.type&&function(e,t){e.save(),e.translate(t.x,t.y),e.rotate(t.rotation),e.shadowBlur=14,e.shadowColor="#fb7185",e.beginPath();let a=t.vertices.length;for(let r=0;r<a;r++){let s=r/a*Math.PI*2,l=t.radius*t.vertices[r],n=Math.cos(s)*l,o=Math.sin(s)*l;0===r?e.moveTo(n,o):e.lineTo(n,o)}e.closePath();let r=e.createRadialGradient(0,0,.2*t.radius,0,0,t.radius);r.addColorStop(0,"#5a3a3a"),r.addColorStop(.7,"#3a2a2a"),r.addColorStop(1,"#1a0808"),e.fillStyle=r,e.fill(),e.shadowBlur=0,e.lineWidth=1.2,e.strokeStyle="#7f1d1d",e.stroke(),e.beginPath(),e.moveTo(-(.3*t.radius),-(.2*t.radius)),e.lineTo(.2*t.radius,.3*t.radius),e.strokeStyle="rgba(127,29,29,0.5)",e.lineWidth=1,e.stroke(),e.restore()}(r,e);for(let e of j.powerups)!function(e,t){if(t.collected)return;e.save(),e.translate(t.x,t.y);let a=.5+.5*Math.sin(t.pulsePhase);t.life<3&&Math.floor(Date.now()/150)%2==0&&(e.globalAlpha=.5);let r=nt[t.powerupType];e.shadowBlur=22,e.shadowColor=r,e.beginPath(),e.arc(0,0,t.radius*(1.5+.3*a),0,2*Math.PI),e.strokeStyle=`${r}40`,e.lineWidth=2,e.stroke(),e.rotate(t.rotation),e.beginPath();for(let a=0;a<6;a++){let r=a/6*Math.PI*2,s=t.radius,l=Math.cos(r)*s,n=Math.sin(r)*s;0===a?e.moveTo(l,n):e.lineTo(l,n)}e.closePath();let s=e.createRadialGradient(0,0,0,0,0,t.radius);s.addColorStop(0,"#ffffff"),s.addColorStop(.5,r),s.addColorStop(1,`${r}80`),e.fillStyle=s,e.fill(),e.lineWidth=1.5,e.strokeStyle="#ffffffaa",e.stroke(),e.shadowBlur=0,e.rotate(-t.rotation),e.fillStyle="#ffffff",e.font="bold 12px sans-serif",e.textAlign="center",e.textBaseline="middle";let l="shield"===t.powerupType?"S":"energy"===t.powerupType?"E":"rapid"===t.powerupType?"R":"overdrive"===t.powerupType?"O":"M";e.fillText(l,0,1),e.globalAlpha=1,e.restore()}(r,e);for(let e of j.entities)"crystal"===e.type?function(e,t){if(t.collected)return;e.save(),e.translate(t.x,t.y);let a=.5+.5*Math.sin(t.pulsePhase);e.shadowBlur=20,e.shadowColor=l6,e.beginPath(),e.arc(0,0,t.radius*(1.4+.4*a),0,2*Math.PI),e.strokeStyle=`rgba(52,211,153,${.15+.2*a})`,e.lineWidth=2,e.stroke(),e.rotate(t.rotation),e.beginPath(),e.moveTo(0,-t.radius),e.lineTo(.7*t.radius,0),e.lineTo(0,t.radius),e.lineTo(-(.7*t.radius),0),e.closePath();let r=e.createLinearGradient(-t.radius,-t.radius,t.radius,t.radius);r.addColorStop(0,"#065f46"),r.addColorStop(.5,l6),r.addColorStop(1,l8),e.fillStyle=r,e.fill(),e.shadowBlur=0,e.lineWidth=1.2,e.strokeStyle=l8,e.stroke(),e.beginPath(),e.moveTo(0,-(.7*t.radius)),e.lineTo(.3*t.radius,-(.2*t.radius)),e.strokeStyle="rgba(255,255,255,0.6)",e.lineWidth=1,e.stroke(),e.restore()}(r,e):"insight"===e.type?function(e,t){if(t.collected)return;e.save(),e.translate(t.x,t.y);let a=.5+.5*Math.sin(t.pulsePhase);e.shadowBlur=22,e.shadowColor=l9,e.beginPath(),e.arc(0,0,t.radius*(1.3+.3*a),0,2*Math.PI),e.strokeStyle=`rgba(232,121,249,${.2+.2*a})`,e.lineWidth=2,e.stroke();let r=e.createRadialGradient(-(.3*t.radius),-(.3*t.radius),0,0,0,t.radius);r.addColorStop(0,"#fae8ff"),r.addColorStop(.5,l9),r.addColorStop(1,"#86198f"),e.fillStyle=r,e.beginPath(),e.arc(0,0,t.radius,0,2*Math.PI),e.fill(),e.shadowBlur=0,e.rotate(t.swirlAngle),e.strokeStyle="rgba(253,244,255,0.7)",e.lineWidth=1.5,e.beginPath();for(let a=0;a<2*Math.PI;a+=.3){let r=a/(2*Math.PI)*t.radius*.8,s=Math.cos(2*a)*r,l=Math.sin(2*a)*r;0===a?e.moveTo(s,l):e.lineTo(s,l)}e.stroke(),e.restore()}(r,e):"beacon"===e.type&&function(e,t){if(t.collected)return;e.save(),e.translate(t.x,t.y);let a=.5+.5*Math.sin(t.pulsePhase);e.shadowBlur=25,e.shadowColor=l7;let r=e.createLinearGradient(0,-(4*t.radius),0,t.radius);r.addColorStop(0,"rgba(251,191,36,0)"),r.addColorStop(.5,`rgba(251,191,36,${.3+.2*a})`),r.addColorStop(1,`rgba(251,191,36,${.5+.3*a})`),e.fillStyle=r,e.beginPath(),e.moveTo(-(.5*t.radius),0),e.lineTo(-(.2*t.radius),-(4*t.radius)),e.lineTo(.2*t.radius,-(4*t.radius)),e.lineTo(.5*t.radius,0),e.closePath(),e.fill(),e.rotate(t.rotation),e.beginPath(),e.ellipse(0,0,t.radius*(1.2+.2*a),.4*t.radius,0,0,2*Math.PI),e.strokeStyle=`rgba(251,191,36,${.5+.3*a})`,e.lineWidth=2,e.stroke(),e.shadowBlur=0;let s=e.createRadialGradient(0,0,0,0,0,.6*t.radius);s.addColorStop(0,"#fef3c7"),s.addColorStop(.7,l7),s.addColorStop(1,"#92400e"),e.fillStyle=s,e.beginPath(),e.arc(0,0,.6*t.radius,0,2*Math.PI),e.fill(),e.restore()}(r,e);for(let e of j.particles)!function(e,t){let a=Math.max(0,t.life/t.maxLife),r=t.shrink?t.size*a:t.size;r<.3||(e.globalAlpha=a,e.fillStyle=t.color,e.beginPath(),e.arc(t.x,t.y,r,0,2*Math.PI),e.fill(),e.globalAlpha=1)}(r,e);for(let e of j.bullets)!function(e,t){e.save(),e.translate(t.x,t.y);let a=Math.atan2(t.vy,t.vx);if(e.rotate(a),e.shadowBlur=14,e.shadowColor=t.color,"ship"===t.owner){let a=e.createLinearGradient(-(3*t.radius),0,t.radius,0);a.addColorStop(0,"rgba(52,211,153,0)"),a.addColorStop(.5,"rgba(52,211,153,0.6)"),a.addColorStop(1,"#a7f3d0"),e.fillStyle=a,e.beginPath(),e.ellipse(0,0,1.8*t.radius,.8*t.radius,0,0,2*Math.PI),e.fill(),e.fillStyle="#ffffff",e.beginPath(),e.arc(.6*t.radius,0,.4*t.radius,0,2*Math.PI),e.fill()}else{let a=e.createRadialGradient(0,0,0,0,0,t.radius);t.homing?(a.addColorStop(0,"#fdf4ff"),a.addColorStop(.6,"#e879f9"),a.addColorStop(1,"#86198f")):(a.addColorStop(0,"#ffe4e6"),a.addColorStop(.6,"#fb7185"),a.addColorStop(1,"#9f1239")),e.fillStyle=a,e.beginPath(),e.arc(0,0,t.radius,0,2*Math.PI),e.fill(),e.shadowBlur=0,e.fillStyle=`${t.color}55`,e.beginPath(),e.ellipse(-(2*t.radius),0,2*t.radius,.5*t.radius,0,0,2*Math.PI),e.fill(),t.homing&&(e.rotate(Date.now()/100),e.strokeStyle="#fdf4ff",e.lineWidth=1,e.beginPath(),e.arc(0,0,1.3*t.radius,0,1.5*Math.PI),e.stroke())}e.restore()}(r,e);j.boss&&function(e,t){e.save(),e.translate(t.x,t.y);let a=1+.06*Math.sin(t.breathPhase),r=.5+.5*Math.sin(t.pulsePhase),s=1===t.attackPhase?"#fb7185":2===t.attackPhase?"#f43f5e":"#e879f9";e.shadowBlur=40,e.shadowColor="#e879f9";for(let r=0;r<3;r++){e.save(),e.rotate(t.rotation*(r%2==0?1:-1)*(1+.4*r)),e.beginPath();let l=t.radius*(1.15+.18*r)*a;for(let a=0;a<24;a++){let r=a/24*Math.PI*2,s=l+4*Math.sin(2*t.pulsePhase+.6*a),n=Math.cos(r)*s,o=Math.sin(r)*s;0===a?e.moveTo(n,o):e.lineTo(n,o)}e.closePath(),e.strokeStyle=`${s}${0===r?"cc":"66"}`,e.lineWidth=3-.6*r,e.stroke(),e.restore()}e.save(),e.rotate(t.tentaclePhase);for(let a=0;a<6;a++){e.save(),e.rotate(a/6*Math.PI*2),e.beginPath();let s=1.4*t.radius;e.moveTo(.6*t.radius,0),e.quadraticCurveTo(1.1*t.radius+10*Math.sin(2*t.tentaclePhase+a),8*Math.cos(t.pulsePhase+a),s,0),e.strokeStyle=`rgba(232,121,249,${.5+.3*r})`,e.lineWidth=2.5,e.stroke(),e.fillStyle="#fda4af",e.beginPath(),e.arc(s,0,3,0,2*Math.PI),e.fill(),e.restore()}e.restore(),e.shadowBlur=30,e.shadowColor=s;let l=e.createRadialGradient(0,0,0,0,0,.85*t.radius);l.addColorStop(0,"#ffffff"),l.addColorStop(.2,"#ffe4e6"),l.addColorStop(.6,s),l.addColorStop(1,"#9f1239"),e.fillStyle=l,e.beginPath(),e.arc(0,0,.85*t.radius*a,0,2*Math.PI),e.fill(),e.shadowBlur=0,e.save(),e.rotate(-(2*t.rotation)),e.beginPath();for(let a=0;a<6;a++){let r=a/6*Math.PI*2,s=.55*t.radius,l=Math.cos(r)*s,n=Math.sin(r)*s;0===a?e.moveTo(l,n):e.lineTo(l,n)}e.closePath(),e.strokeStyle=`rgba(254,205,211,${.6+.2*r})`,e.lineWidth=2,e.stroke(),e.restore(),e.save(),e.rotate(-(1.5*t.rotation));for(let a=0;a<3;a++){let r=a/3*Math.PI*2-Math.PI/2,s=.7*t.radius,l=Math.cos(r)*s,n=Math.sin(r)*s;e.fillStyle=a<t.attackPhase?"#fbbf24":"rgba(255,255,255,0.2)",e.beginPath(),e.arc(l,n,3,0,2*Math.PI),e.fill()}e.restore(),e.restore()}(r,j.boss),("playing"===j.phase||"won"===j.phase)&&function(e,t,a,r){if(e.save(),e.translate(t.x,t.y),r.length>0)for(let a of r){let r=nt[a.type],s=a.remaining/a.total,l=t.radius*(1.6+.2*Math.sin(Date.now()/200));e.beginPath(),e.arc(0,0,l,0,2*Math.PI),e.strokeStyle=`${r}${Math.round(200*s).toString(16).padStart(2,"0")}`,e.lineWidth=2,e.stroke(),e.beginPath(),e.arc(0,0,l+3,-Math.PI/2,-Math.PI/2+2*Math.PI*s),e.strokeStyle=r,e.lineWidth=1.5,e.stroke()}e.rotate(t.heading);let s=a&&Math.floor(Date.now()/80)%2==0;if(t.thrust>.1){let a=t.radius*(1.5+1.5*t.thrust),r=e.createLinearGradient(-(.4*t.radius),0,-a,0);r.addColorStop(0,`rgba(251,191,36,${.8*t.thrust})`),r.addColorStop(.5,`rgba(232,121,249,${.4*t.thrust})`),r.addColorStop(1,"rgba(232,121,249,0)"),e.fillStyle=r,e.beginPath(),e.moveTo(-(.4*t.radius),.4*t.radius),e.lineTo(-a,0),e.lineTo(-(.4*t.radius),-(.4*t.radius)),e.closePath(),e.fill()}e.shadowBlur=22,e.shadowColor=l4;let l=t.radius;e.beginPath(),e.moveTo(l,0),e.lineTo(-(.7*l),.75*l),e.lineTo(-(.35*l),0),e.lineTo(-(.7*l),-(.75*l)),e.closePath();let n=e.createLinearGradient(-l,0,l,0);n.addColorStop(0,s?"#fb7185":"#065f46"),n.addColorStop(.5,s?"#fda4af":l4),n.addColorStop(1,s?"#fecdd3":"#a7f3d0"),e.fillStyle=n,e.fill(),e.shadowBlur=0,e.lineWidth=1.5,e.strokeStyle=s?"#ffe4e6":"#d1fae5",e.stroke(),e.beginPath(),e.arc(.15*l,0,.22*l,0,2*Math.PI),e.fillStyle="rgba(255,255,255,0.85)",e.fill(),e.restore()}(r,j.ship,j.invulnTimer>0,j.activeBuffs)}if(r.restore(),j&&j.flashLowShield&&"playing"===j.phase){let t=.3+.3*Math.sin(e/150);r.strokeStyle=`rgba(251,113,133,${t})`,r.lineWidth=6,r.strokeRect(3,3,g-6,y-6)}if(j&&j.pickupFlash&&"playing"===j.phase){let e=j.pickupFlash.timer/400,t=j.pickupFlash.color,a=r.createRadialGradient(g/2,y/2,.3*Math.min(g,y),g/2,y/2,.7*Math.max(g,y));a.addColorStop(0,"rgba(0,0,0,0)"),a.addColorStop(1,`${t}${Math.round(100*e).toString(16).padStart(2,"0")}`),r.fillStyle=a,r.fillRect(0,0,g,y)}};return l.current=requestAnimationFrame(s),()=>cancelAnimationFrame(l.current)},[]);let W=(0,g.useCallback)(()=>{if("playing"!==f.current)return;let e=!h.current;h.current=e,T(e)},[]),K=(0,g.useCallback)(()=>{e()},[e]),q=(0,g.useCallback)(()=>{m.current&&"won"===m.current.phase&&(A(function(e=3,t=[]){let a=[...lW.filter(e=>!t.includes(e.id))].sort(()=>Math.random()-.5);return a.slice(0,Math.min(e,a.length))}(3,s.current.map(e=>e.id))),D(null),w("choosing"),f.current="choosing")},[]),U=(0,g.useCallback)(e=>{let t=E[e];if(t){D(e);var a=r.current;switch(t.id){case"speed":a.speedMult*=1.12;break;case"accel":a.accelMult*=1.15;break;case"friction":a.frictionBonus=Math.min(.2,a.frictionBonus+.05);break;case"shield_max":a.shieldMaxBonus+=25;break;case"shield_regen":a.shieldRegenMult*=1.5;break;case"energy_max":a.energyMaxBonus+=25;break;case"energy_regen":a.energyRegenMult*=1.3;break;case"firepower":a.firepowerMult*=1.25;break;case"fire_rate":a.fireRateMult*=.8;break;case"double_shot":a.doubleShot=!0;break;case"attract_radius":a.attractRadiusMult*=1.4;break;case"collect_radius":a.collectRadiusMult*=1.5;break;case"invuln_time":a.invulnBonusMs+=200;break;case"damage_reduce":a.damageReduceMult*=.8;break;case"boss_bonus":a.bossBonusMult*=1.5;break;case"normal_score":a.normalScoreMult*=1.3;break;case"start_shield":a.startShieldBonus+=20;break;case"start_energy":a.startEnergyBonus+=20}s.current=[...s.current,t],z(s.current),setTimeout(()=>{m.current&&H(m.current.level+1)},700)}},[E,H]),X=F.shieldMax>0?Math.max(0,Math.min(100,F.shield/F.shieldMax*100)):0,V=X>60?"#34d399":X>30?"#fbbf24":"#fb7185",Y=F.energyMax>0?Math.max(0,Math.min(100,F.energy/F.energyMax*100)):0,G=Math.max(0,F.duration-F.time),J=F.bossMaxHp>0?F.bossHp/F.bossMaxHp*100:0;return(0,p.jsxs)("div",{className:"fixed inset-0 z-50 bg-[#050410] overflow-hidden select-none",children:[(0,p.jsx)("canvas",{ref:t,className:"absolute inset-0 w-full h-full touch-none"}),"playing"===y&&(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)("div",{className:"absolute top-3 left-3 flex flex-col gap-2 min-w-[180px]",children:[(0,p.jsxs)("div",{className:"glass rounded-xl p-2.5 border-white/10",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2 mb-1.5",children:[(0,p.jsx)(lC,{className:"h-3.5 w-3.5",style:{color:V}}),(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground uppercase tracking-wider",children:"护盾"}),(0,p.jsx)("span",{className:"ml-auto font-mono text-xs font-bold",style:{color:V},children:Math.round(F.shield)})]}),(0,p.jsx)("div",{className:"h-2 rounded-full bg-black/50 overflow-hidden border border-white/5",children:(0,p.jsx)("div",{className:"h-full rounded-full transition-all duration-150",style:{width:`${X}%`,background:`linear-gradient(90deg, ${V}, ${V}dd)`,boxShadow:`0 0 8px ${V}aa`}})}),(0,p.jsxs)("div",{className:"flex items-center gap-2 mt-2 mb-1.5",children:[(0,p.jsx)(s3,{className:"h-3.5 w-3.5 text-fuchsia-300"}),(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground uppercase tracking-wider",children:"能量"}),(0,p.jsx)("span",{className:"ml-auto font-mono text-xs font-bold text-fuchsia-200",children:Math.round(F.energy)})]}),(0,p.jsx)("div",{className:"h-2 rounded-full bg-black/50 overflow-hidden border border-white/5",children:(0,p.jsx)("div",{className:"h-full rounded-full transition-all duration-150",style:{width:`${Y}%`,background:"linear-gradient(90deg, #e879f9, #c026d3)",boxShadow:"0 0 8px rgba(232,121,249,0.6)"}})})]}),F.buffs.length>0&&(0,p.jsx)("div",{className:"glass rounded-xl p-2 border-white/10 flex flex-col gap-1",children:F.buffs.map((e,t)=>{let a=nt[e.type],r=Math.max(0,e.remaining/e.total*100),s="shield"===e.type?"护盾":"energy"===e.type?"能量":"rapid"===e.type?"急速":"overdrive"===e.type?"过载":"磁吸";return(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)("div",{className:"h-2 w-2 rounded-full",style:{background:a,boxShadow:`0 0 6px ${a}`}}),(0,p.jsx)("span",{className:"text-[10px] text-white/80",style:{color:a},children:s}),(0,p.jsx)("div",{className:"flex-1 h-1 rounded-full bg-black/40 overflow-hidden",children:(0,p.jsx)("div",{className:"h-full rounded-full",style:{width:`${r}%`,background:a}})}),(0,p.jsxs)("span",{className:"font-mono text-[9px] text-muted-foreground w-6 text-right",children:[Math.ceil(e.remaining),"s"]})]},t)})}),F.appliedUpgrades.length>0&&(0,p.jsx)("div",{className:"glass rounded-xl p-1.5 border-white/10 flex flex-wrap gap-1 max-w-[200px]",children:F.appliedUpgrades.map((e,t)=>{let a;return(0,p.jsx)("div",{className:"h-5 w-5 rounded-md flex items-center justify-center border",style:{borderColor:`${e.color}80`,background:`${e.color}20`},title:e.title,children:(a=na[e.icon]??tY,(0,p.jsx)(a,{className:"h-3 w-3",style:{color:e.color}}))},t)})})]}),(0,p.jsxs)("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 flex flex-col items-center gap-1.5",children:[(0,p.jsxs)("div",{className:"glass rounded-xl px-4 py-2 border-white/10 flex items-center gap-4",children:[(0,p.jsxs)("div",{className:"text-center",children:[(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground uppercase tracking-wider",children:"关卡"}),(0,p.jsxs)("div",{className:"font-mono text-sm font-bold text-amber-200",children:["L",j,F.isBossLevel&&(0,p.jsx)(s2,{className:"inline h-3 w-3 ml-0.5 text-rose-300"})]})]}),(0,p.jsx)("div",{className:"w-px h-7 bg-white/10"}),(0,p.jsxs)("div",{className:"text-center",children:[(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground uppercase tracking-wider",children:"分数"}),(0,p.jsx)("div",{className:"font-mono text-sm font-bold text-emerald-200",children:I(F.score)})]}),(0,p.jsx)("div",{className:"w-px h-7 bg-white/10"}),(0,p.jsxs)("div",{className:"text-center min-w-[52px]",children:[(0,p.jsxs)("div",{className:"text-[9px] text-muted-foreground uppercase tracking-wider flex items-center justify-center gap-0.5",children:[(0,p.jsx)(ll,{className:"h-2.5 w-2.5"}),"用时"]}),(0,p.jsxs)("div",{className:"font-mono text-sm font-bold text-rose-200",children:[Math.floor(G/60),":",String(Math.floor(G%60)).padStart(2,"0")]})]})]}),F.isBossLevel&&F.bossMaxHp>0&&(0,p.jsxs)("div",{className:"glass rounded-lg px-3 py-1.5 border-rose-400/30 min-w-[260px] sm:min-w-[320px]",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-0.5",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(s2,{className:"h-3 w-3 text-rose-300"}),(0,p.jsx)("span",{className:"text-[10px] text-rose-200 font-bold tracking-wider",children:"BOSS"})]}),(0,p.jsx)("div",{className:"flex items-center gap-1",children:[1,2,3].map(e=>(0,p.jsx)("div",{className:`h-1.5 w-1.5 rounded-full ${e<=F.bossPhase?"bg-rose-400":"bg-white/15"}`},e))})]}),(0,p.jsx)("div",{className:"h-2.5 rounded-full bg-black/60 overflow-hidden border border-rose-400/20",children:(0,p.jsx)("div",{className:"h-full rounded-full transition-all duration-200",style:{width:`${J}%`,background:"linear-gradient(90deg, #fb7185, #e879f9)",boxShadow:"0 0 12px rgba(232,121,249,0.7)"}})})]})]}),(0,p.jsxs)("div",{className:"absolute top-3 right-3 flex items-start gap-2",children:[(0,p.jsxs)("div",{className:"glass rounded-xl p-2 border-white/10 flex flex-col gap-1.5",children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(ta,{className:"h-3 w-3 text-emerald-300"}),(0,p.jsxs)("span",{className:"font-mono text-xs font-bold text-emerald-200",children:[F.crystals,(0,p.jsxs)("span",{className:"text-muted-foreground/60",children:["/",F.totalCrystals]})]})]}),(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(lP,{className:"h-3 w-3 text-fuchsia-300"}),(0,p.jsxs)("span",{className:"font-mono text-xs font-bold text-fuchsia-200",children:[F.insights,(0,p.jsxs)("span",{className:"text-muted-foreground/60",children:["/",F.totalInsights]})]})]}),(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)(lh,{className:"h-3 w-3 text-amber-300"}),(0,p.jsxs)("span",{className:"font-mono text-xs font-bold text-amber-200",children:[F.beacons,(0,p.jsxs)("span",{className:"text-muted-foreground/60",children:["/",F.totalBeacons]})]})]})]}),(0,p.jsx)(tX,{size:"icon",variant:"ghost",onClick:W,className:"h-8 w-8 glass border-white/10 hover:bg-white/10 text-white/80","aria-label":"暂停",children:(0,p.jsx)(lS,{className:"h-4 w-4"})}),(0,p.jsx)(tX,{size:"icon",variant:"ghost",onClick:K,className:"h-8 w-8 glass border-rose-400/30 hover:bg-rose-500/20 text-rose-200","aria-label":"退出",children:(0,p.jsx)(tV.X,{className:"h-4 w-4"})})]}),!$&&(0,p.jsxs)("div",{className:"absolute bottom-4 left-1/2 -translate-x-1/2 glass rounded-full px-4 py-1.5 border-white/10 text-[11px] text-muted-foreground",children:[(0,p.jsx)("span",{className:"font-mono text-white/80",children:"WASD"})," / ",(0,p.jsx)("span",{className:"font-mono text-white/80",children:"方向键"})," 移动 · ",(0,p.jsx)("span",{className:"font-mono text-emerald-300",children:"空格"})," 射击 · ",(0,p.jsx)("span",{className:"font-mono text-white/80",children:"P"})," 暂停 · ",(0,p.jsx)("span",{className:"font-mono text-white/80",children:"Esc"})," 退出"]}),$&&(0,p.jsx)("div",{className:"absolute bottom-4 left-1/2 -translate-x-1/2 glass rounded-full px-3 py-1 border-white/10 text-[10px] text-muted-foreground pointer-events-none",children:"左下摇杆 · 右下射击"}),$&&_.active&&(0,p.jsx)("div",{className:"absolute pointer-events-none",style:{left:_.baseX,top:_.baseY,transform:"translate(-50%, -50%)"},children:(0,p.jsx)("div",{className:"relative h-28 w-28 rounded-full border-2 border-amber-400/40 bg-amber-500/5 backdrop-blur-sm",children:(0,p.jsx)("div",{className:"absolute h-12 w-12 rounded-full border-2 border-amber-300 bg-amber-400/30 backdrop-blur",style:{left:"50%",top:"50%",transform:`translate(calc(-50% + ${_.knobX}px), calc(-50% + ${_.knobY}px))`,boxShadow:"0 0 16px rgba(251,191,36,0.6)"}})})}),$&&(0,p.jsxs)("button",{"aria-label":"射击",className:"absolute bottom-20 right-6 h-20 w-20 rounded-full border-2 border-emerald-400/50 bg-emerald-500/15 backdrop-blur-md flex items-center justify-center pointer-events-none",children:[(0,p.jsx)(lT,{className:"h-9 w-9 text-emerald-300",style:{filter:"drop-shadow(0 0 8px rgba(52,211,153,0.8))"}}),(0,p.jsx)("div",{className:"absolute inset-0 rounded-full border-2 border-emerald-400/30 animate-ping",style:{animationDuration:"2s"}})]}),C&&(0,p.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-10",children:(0,p.jsxs)("div",{className:"glass rounded-2xl p-8 border-white/15 text-center max-w-xs",children:[(0,p.jsx)(lS,{className:"h-10 w-10 mx-auto mb-3 text-amber-300"}),(0,p.jsx)("h3",{className:"text-lg font-bold text-white mb-1",children:"已暂停"}),(0,p.jsx)("p",{className:"text-xs text-muted-foreground mb-5",children:"深空时间已凝固"}),(0,p.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,p.jsxs)(tX,{onClick:W,className:"bg-amber-500/20 border border-amber-400/50 text-amber-100 hover:bg-amber-500/30",children:[(0,p.jsx)(lM,{className:"h-4 w-4 mr-1.5"}),"继续"]}),(0,p.jsx)(tX,{variant:"ghost",onClick:K,className:"text-rose-200 hover:bg-rose-500/10",children:"退出巡航"})]})]})})]}),"ready"===y&&(0,p.jsx)("div",{className:"absolute inset-0 flex items-center justify-center p-4 bg-gradient-to-b from-black/40 via-transparent to-black/60",children:(0,p.jsxs)("div",{className:"glass rounded-2xl p-6 sm:p-8 border-amber-400/30 max-w-md w-full text-center relative overflow-hidden",children:[(0,p.jsx)("div",{className:"pointer-events-none absolute -top-20 -left-20 h-40 w-40 rounded-full bg-amber-500/20 blur-3xl"}),(0,p.jsx)("div",{className:"pointer-events-none absolute -bottom-20 -right-20 h-40 w-40 rounded-full bg-rose-500/20 blur-3xl"}),(0,p.jsxs)("div",{className:"relative",children:[(0,p.jsx)("div",{className:"text-[10px] tracking-[0.3em] text-amber-300/70 mb-1",children:"DEEP SPACE CRUISE · v0.8"}),(0,p.jsx)("h2",{className:"text-3xl sm:text-4xl font-bold text-gradient mb-1",children:"深空巡航"}),(0,p.jsx)("p",{className:"text-xs text-muted-foreground mb-5",children:"操控飞船穿越陨石带,抵达星门 / 击败 BOSS"}),(0,p.jsxs)("div",{className:"grid grid-cols-2 gap-2 mb-5 text-left",children:[(0,p.jsxs)("div",{className:"glass rounded-lg p-2.5 border-white/10",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"起始关卡"}),(0,p.jsxs)("div",{className:"font-mono text-lg font-bold text-amber-200",children:["L",j]})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-2.5 border-white/10",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"历史最高分"}),(0,p.jsx)("div",{className:"font-mono text-lg font-bold text-emerald-200",children:S?I(S.highScore):"—"})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-2.5 border-white/10",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"通关次数"}),(0,p.jsx)("div",{className:"font-mono text-lg font-bold text-fuchsia-200",children:S?S.totalWins:0})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-2.5 border-white/10",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground",children:"BOSS 击杀"}),(0,p.jsx)("div",{className:"font-mono text-lg font-bold text-rose-200",children:S?S.bossKills:0})]})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-3 border-white/10 mb-5 text-left text-[11px] space-y-1",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(ta,{className:"h-3 w-3 text-emerald-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"收集晶体碎片 → 晶体奖励"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(lP,{className:"h-3 w-3 text-fuchsia-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"收集洞见光球 → 洞见奖励"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(lh,{className:"h-3 w-3 text-amber-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"收集信标 → 接触进度"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(s7,{className:"h-3 w-3 text-rose-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"抵达星门通关 → +50% 奖励"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(s2,{className:"h-3 w-3 text-rose-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"每 5 关 BOSS 战:击败 ×3 奖励"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(lT,{className:"h-3 w-3 text-emerald-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"空格 / 右下角射击按钮 → 发射能量弹"})]}),(0,p.jsxs)("div",{className:"flex items-center gap-2",children:[(0,p.jsx)(tY,{className:"h-3 w-3 text-fuchsia-300 shrink-0"}),(0,p.jsx)("span",{className:"text-muted-foreground",children:"通关后 3 选 1 强化卡牌(每局重置)"})]})]}),(0,p.jsxs)("div",{className:"flex gap-2",children:[(0,p.jsxs)(tX,{onClick:()=>H(j),className:"flex-1 bg-amber-500/20 border border-amber-400/50 text-amber-100 hover:bg-amber-500/30 h-11",children:[(0,p.jsx)(lM,{className:"h-4 w-4 mr-1.5"}),"启动巡航"]}),(0,p.jsx)(tX,{variant:"ghost",onClick:K,className:"border border-white/10 text-white/70 hover:bg-white/10 h-11",children:"返回"})]}),(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/60 mt-3",children:$?"左下摇杆移动 · 右下射击":"WASD / 方向键移动 · 空格射击 · P 暂停 · Esc 退出"})]})]})}),("won"===y||"lost"===y)&&k&&(0,p.jsx)("div",{className:"absolute inset-0 flex items-center justify-center p-4 bg-black/60 backdrop-blur-sm",children:(0,p.jsxs)("div",{className:`glass rounded-2xl p-6 sm:p-8 max-w-md w-full relative overflow-hidden ${"won"===y?k.isBossLevel?"border-fuchsia-400/50":"border-emerald-400/40":"border-rose-400/40"}`,children:[(0,p.jsx)("div",{className:`pointer-events-none absolute -top-20 -left-20 h-40 w-40 rounded-full blur-3xl ${"won"===y?k.isBossLevel?"bg-fuchsia-500/25":"bg-emerald-500/20":"bg-rose-500/20"}`}),(0,p.jsxs)("div",{className:"relative",children:[(0,p.jsx)("div",{className:`text-[10px] tracking-[0.3em] mb-1 ${"won"===y?k.isBossLevel?"text-fuchsia-300/70":"text-emerald-300/70":"text-rose-300/70"}`,children:"won"===y?k.isBossLevel?"BOSS DEFEATED":"MISSION COMPLETE":"MISSION FAILED"}),(0,p.jsx)("h2",{className:`text-3xl font-bold mb-1 ${"won"===y?k.isBossLevel?"text-fuchsia-300":"text-emerald-300":"text-rose-300"}`,style:{textShadow:`0 0 20px ${"won"===y?k.isBossLevel?"rgba(232,121,249,0.5)":"rgba(52,211,153,0.5)":"rgba(251,113,133,0.5)"}`},children:"won"===y?k.isBossLevel?"BOSS 击破":"巡航成功":"巡航失败"}),(0,p.jsxs)("p",{className:"text-xs text-muted-foreground mb-5",children:["关卡 L",k.level," · 用时 ",Math.floor(k.durationSec/60),":",String(Math.floor(k.durationSec%60)).padStart(2,"0")]}),(0,p.jsxs)("div",{className:"grid grid-cols-3 gap-2 mb-4",children:[(0,p.jsxs)("div",{className:"glass rounded-lg p-2 border-emerald-400/20 text-center",children:[(0,p.jsx)(ta,{className:"h-4 w-4 mx-auto text-emerald-300 mb-0.5"}),(0,p.jsx)("div",{className:"font-mono text-lg font-bold text-emerald-200",children:k.collectedCrystals}),(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground",children:"晶体碎片"})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-2 border-fuchsia-400/20 text-center",children:[(0,p.jsx)(lP,{className:"h-4 w-4 mx-auto text-fuchsia-300 mb-0.5"}),(0,p.jsx)("div",{className:"font-mono text-lg font-bold text-fuchsia-200",children:k.collectedInsights}),(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground",children:"洞见光球"})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-2 border-amber-400/20 text-center",children:[(0,p.jsx)(lh,{className:"h-4 w-4 mx-auto text-amber-300 mb-0.5"}),(0,p.jsx)("div",{className:"font-mono text-lg font-bold text-amber-200",children:k.collectedBeacons}),(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground",children:"信标"})]})]}),(0,p.jsxs)("div",{className:"grid grid-cols-2 gap-2 mb-4",children:[(0,p.jsxs)("div",{className:"glass rounded-lg p-2 border-white/10 flex items-center gap-2",children:[(0,p.jsx)(lC,{className:"h-4 w-4 text-rose-300"}),(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground",children:"剩余护盾"}),(0,p.jsx)("div",{className:"font-mono text-sm font-bold text-rose-200",children:k.remainingShield})]})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-2 border-white/10 flex items-center gap-2",children:[(0,p.jsx)(s7,{className:"h-4 w-4 text-amber-300"}),(0,p.jsxs)("div",{children:[(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground",children:"得分"}),(0,p.jsx)("div",{className:"font-mono text-sm font-bold text-amber-200",children:I(k.score)})]})]})]}),(0,p.jsxs)("div",{className:"glass rounded-lg p-3 border-emerald-400/20 mb-5",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground uppercase tracking-wider mb-2",children:"won"===y?k.isBossLevel?"BOSS 击败奖励 (×3)":"通关奖励 (+50%)":"残骸回收 (×50%)"}),(0,p.jsxs)("div",{className:"space-y-1.5",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between",children:[(0,p.jsxs)("span",{className:"flex items-center gap-1.5 text-xs text-emerald-200",children:[(0,p.jsx)(ta,{className:"h-3 w-3"})," 晶体"]}),(0,p.jsxs)("span",{className:"font-mono text-sm font-bold text-emerald-200",children:["+",I(k.rewards.crystals)]})]}),(0,p.jsxs)("div",{className:"flex items-center justify-between",children:[(0,p.jsxs)("span",{className:"flex items-center gap-1.5 text-xs text-fuchsia-200",children:[(0,p.jsx)(lP,{className:"h-3 w-3"})," 洞见"]}),(0,p.jsxs)("span",{className:"font-mono text-sm font-bold text-fuchsia-200",children:["+",k.rewards.insights.toFixed(1)]})]}),(0,p.jsxs)("div",{className:"flex items-center justify-between",children:[(0,p.jsxs)("span",{className:"flex items-center gap-1.5 text-xs text-amber-200",children:[(0,p.jsx)(lh,{className:"h-3 w-3"})," 接触"]}),(0,p.jsxs)("span",{className:"font-mono text-sm font-bold text-amber-200",children:["+",k.rewards.contact.toFixed(1),"%"]})]})]}),(0,p.jsx)("div",{className:"text-[9px] text-muted-foreground/70 mt-2 pt-2 border-t border-white/5",children:"奖励已同步至主游戏"})]}),(0,p.jsxs)("div",{className:"flex gap-2",children:["won"===y&&(0,p.jsxs)(tX,{onClick:q,className:"flex-1 bg-fuchsia-500/20 border border-fuchsia-400/50 text-fuchsia-100 hover:bg-fuchsia-500/30 h-10",children:[(0,p.jsx)(tY,{className:"h-4 w-4 mr-1"}),"选择强化"]}),(0,p.jsxs)(tX,{onClick:()=>H(k.level),variant:"won"===y?"ghost":"default",className:`${"lost"===y?"flex-1 bg-rose-500/20 border border-rose-400/50 text-rose-100 hover:bg-rose-500/30":"border border-white/10 text-white/80 hover:bg-white/10"} h-10`,children:[(0,p.jsx)(tl,{className:"h-4 w-4 mr-1"}),"重试"]}),(0,p.jsx)(tX,{variant:"ghost",onClick:K,className:"border border-white/10 text-white/70 hover:bg-white/10 h-10",children:"返回"})]})]})]})}),"choosing"===y&&(0,p.jsx)("div",{className:"absolute inset-0 flex items-center justify-center p-4 bg-black/70 backdrop-blur-md",children:(0,p.jsxs)("div",{className:"w-full max-w-3xl",children:[(0,p.jsxs)("div",{className:"text-center mb-6",children:[(0,p.jsx)("div",{className:"text-[10px] tracking-[0.4em] text-fuchsia-300/70 mb-1",children:"REINFORCEMENT PROTOCOL"}),(0,p.jsx)("h2",{className:"text-2xl sm:text-3xl font-bold text-gradient mb-1",children:"选择强化"}),(0,p.jsx)("p",{className:"text-xs text-muted-foreground",children:"星门共鸣释放能量,3 选 1 永久强化(本局有效)"})]}),(0,p.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:E.map((e,t)=>{let a=na[e.icon]??tY,r=B===t,s=null!==B&&!r;return(0,p.jsxs)("button",{onClick:()=>null===B&&U(t),disabled:null!==B,className:`group relative glass rounded-2xl p-5 border-2 transition-all duration-500 text-left overflow-hidden ${r?"scale-105 border-fuchsia-400 shadow-[0_0_30px_rgba(232,121,249,0.5)]":s?"opacity-40 border-white/10":"border-white/15 hover:border-white/30 hover:scale-[1.02] cursor-pointer"}`,style:{minHeight:"220px"},children:[(0,p.jsx)("div",{className:"pointer-events-none absolute -top-10 -left-10 h-32 w-32 rounded-full blur-3xl opacity-40 transition-opacity group-hover:opacity-70",style:{background:e.color}}),(0,p.jsxs)("div",{className:"relative flex flex-col h-full",children:[(0,p.jsx)("div",{className:"h-12 w-12 rounded-xl flex items-center justify-center mb-3 border",style:{background:`${e.color}20`,borderColor:`${e.color}80`,boxShadow:`0 0 16px ${e.color}40`},children:(0,p.jsx)(a,{className:"h-6 w-6",style:{color:e.color}})}),(0,p.jsxs)("div",{className:"text-[10px] font-mono uppercase tracking-wider mb-1",style:{color:e.color},children:["强化 ",String(t+1).padStart(2,"0")]}),(0,p.jsx)("h3",{className:"text-lg font-bold text-white mb-1.5",children:e.title}),(0,p.jsx)("p",{className:"text-xs text-muted-foreground mb-3",children:e.desc}),(0,p.jsx)("div",{className:"mt-auto pt-2 border-t border-white/5",children:(0,p.jsxs)("div",{className:"flex items-center justify-between text-[10px]",children:[(0,p.jsx)("span",{className:"text-muted-foreground/70",children:"点击选择"}),(0,p.jsx)(s4,{className:"h-3 w-3",style:{color:e.color}})]})})]}),r&&(0,p.jsx)("div",{className:"absolute inset-0 flex items-center justify-center bg-fuchsia-500/10 backdrop-blur-[1px]",children:(0,p.jsxs)("div",{className:"text-center",children:[(0,p.jsx)(tY,{className:"h-10 w-10 mx-auto text-fuchsia-300 animate-pulse",style:{filter:"drop-shadow(0 0 12px rgba(232,121,249,0.8))"}}),(0,p.jsx)("div",{className:"mt-2 text-xs font-bold text-fuchsia-200 tracking-wider",children:"已激活"})]})})]},e.id)})}),L.length>0&&(0,p.jsxs)("div",{className:"mt-5 glass rounded-xl p-3 border-white/10",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground uppercase tracking-wider mb-2",children:"本局已激活强化"}),(0,p.jsx)("div",{className:"flex flex-wrap gap-2",children:L.map((e,t)=>{let a=na[e.icon]??tY;return(0,p.jsxs)("div",{className:"flex items-center gap-1.5 rounded-md px-2 py-1 border",style:{borderColor:`${e.color}50`,background:`${e.color}15`},children:[(0,p.jsx)(a,{className:"h-3 w-3",style:{color:e.color}}),(0,p.jsx)("span",{className:"text-[11px] text-white/85",children:e.title})]},t)})})]}),(0,p.jsx)("div",{className:"text-center mt-4",children:(0,p.jsx)(tX,{variant:"ghost",onClick:K,className:"border border-white/10 text-white/60 hover:bg-white/10 h-9",children:"退出巡航"})})]})})]})}let ns=(0,tt.default)("compass",[["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]),nl=(0,tt.default)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),nn=(0,tt.default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),no={Compass:ns,Brain:lP,Swords:sQ,Sparkles:tY},ni={exploration:{text:"text-emerald-300",border:"border-emerald-400/30",borderActive:"border-emerald-400/70",bg:"bg-emerald-500/10",ring:"ring-emerald-400/40",barFrom:"from-emerald-400",barTo:"to-emerald-500",glow:"rgba(52,211,153,0.45)"},wisdom:{text:"text-fuchsia-300",border:"border-fuchsia-400/30",borderActive:"border-fuchsia-400/70",bg:"bg-fuchsia-500/10",ring:"ring-fuchsia-400/40",barFrom:"from-fuchsia-400",barTo:"to-fuchsia-500",glow:"rgba(232,121,249,0.45)"},courage:{text:"text-amber-300",border:"border-amber-400/30",borderActive:"border-amber-400/70",bg:"bg-amber-500/10",ring:"ring-amber-400/40",barFrom:"from-amber-400",barTo:"to-amber-500",glow:"rgba(251,191,36,0.45)"},inspiration:{text:"text-rose-300",border:"border-rose-400/30",borderActive:"border-rose-400/70",bg:"bg-rose-500/10",ring:"ring-rose-400/40",barFrom:"from-rose-400",barTo:"to-rose-500",glow:"rgba(251,113,133,0.45)"}};function nc(){let e=te(e=>e.attributes),t=te(e=>e.attributeProgress),a=te(e=>e.pendingAttrPoints??0),r=te(e=>e.allocateAttribute),s=(0,g.useMemo)(()=>et(e),[e]),l=(0,g.useMemo)(()=>e.exploration+e.wisdom+e.courage+e.inspiration,[e]),n=(0,g.useMemo)(()=>(ee(e.exploration)+ee(e.wisdom)+ee(e.courage)+ee(e.inspiration))*100,[e]);return(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f flex flex-col gap-2.5 h-full overflow-y-auto echo-scroll pr-0.5",children:[(0,p.jsx)(tE.default,{id:"fb70db4abea5ec9f",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 echo-pending-pulse{0%,to{box-shadow:0 0 #e879f980}50%{box-shadow:0 0 14px 4px #e879f9a6}}.echo-pending-pulse{animation:1.6s ease-in-out infinite echo-pending-pulse}@keyframes echo-card-glow{0%,to{opacity:.5}50%{opacity:1}}"}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f flex items-center justify-between",children:[(0,p.jsx)("h3",{className:"jsx-fb70db4abea5ec9f text-sm font-semibold flex items-center gap-1.5",children:(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f bg-gradient-to-br from-emerald-300 via-fuchsia-300 to-rose-300 bg-clip-text text-transparent",children:"驾驶员属性"})}),(0,p.jsxs)("div",{className:`jsx-fb70db4abea5ec9f text-[10px] px-2 py-0.5 rounded-full border ${a>0?"border-fuchsia-400/60 bg-fuchsia-500/15 text-fuchsia-200 echo-pending-pulse font-bold":"border-white/15 bg-black/25 text-muted-foreground"}`,children:["待分配 ",a]})]}),(0,p.jsx)("div",{className:"jsx-fb70db4abea5ec9f grid grid-cols-2 lg:grid-cols-4 gap-2",children:Q.map(s=>{let l=Z[s],n=ni[s],o=no[l.icon]??tY,i=e?.[s]??0,c=t?.[s]??{exp:0,level:i},d=100*ee(i),u=ea(i),h=c.exp,f=u>0?Math.min(100,h/u*100):100,m=i>=100,x=a>0&&!m,g=i>50;return(0,p.jsxs)("div",{style:{boxShadow:`inset 0 0 18px ${n.glow}`},className:`jsx-fb70db4abea5ec9f relative rounded-xl border ${n.border} ${n.bg} p-2.5 flex flex-col gap-1.5 overflow-hidden transition-all duration-300`,children:[(0,p.jsx)("div",{style:{background:l.hex},className:"jsx-fb70db4abea5ec9f pointer-events-none absolute -top-8 -right-8 h-20 w-20 rounded-full blur-2xl opacity-50"}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f relative flex items-center gap-1.5",children:[(0,p.jsx)("div",{style:{boxShadow:`0 0 8px ${n.glow}`},className:`jsx-fb70db4abea5ec9f shrink-0 h-7 w-7 rounded-lg flex items-center justify-center ${n.bg} border ${n.border}`,children:(0,p.jsx)(o,{className:`jsx-fb70db4abea5ec9f h-3.5 w-3.5 ${n.text}`})}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f min-w-0 flex-1 leading-tight",children:[(0,p.jsx)("div",{className:`jsx-fb70db4abea5ec9f text-[11px] font-semibold ${n.text} truncate`,children:l.name}),(0,p.jsx)("div",{className:"jsx-fb70db4abea5ec9f text-[8px] text-muted-foreground/70 uppercase tracking-wider truncate",children:l.enName})]}),(0,p.jsxs)("div",{className:`jsx-fb70db4abea5ec9f shrink-0 text-[9px] px-1.5 py-0.5 rounded font-mono font-bold ${m?"bg-amber-400/20 text-amber-200 border border-amber-400/40":"bg-black/30 text-white/80 border border-white/10"}`,children:["Lv.",i]})]}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f relative flex items-end justify-between",children:[(0,p.jsxs)("span",{className:`jsx-fb70db4abea5ec9f text-lg font-mono font-bold ${n.text} leading-none`,children:[i,(0,p.jsxs)("span",{className:"jsx-fb70db4abea5ec9f text-[9px] text-muted-foreground/60 ml-0.5",children:["/",100]})]}),(0,p.jsxs)("span",{className:`jsx-fb70db4abea5ec9f text-[10px] ${n.text} font-mono`,children:["+",d.toFixed(1),"%"]})]}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f relative",children:[(0,p.jsx)("div",{className:"jsx-fb70db4abea5ec9f h-1.5 rounded-full bg-black/40 overflow-hidden border border-white/5",children:(0,p.jsx)("div",{style:{width:`${m?100:f}%`,boxShadow:`0 0 6px ${n.glow}`},className:`jsx-fb70db4abea5ec9f h-full bg-gradient-to-r ${n.barFrom} ${n.barTo} transition-all duration-500`})}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f flex items-center justify-between mt-0.5 text-[8px] text-muted-foreground/70 font-mono",children:[(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f",children:m?"已满级":`${h} / ${u} EXP`}),g&&!m&&(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f text-amber-300/70",children:"递减区"})]})]}),(0,p.jsx)("div",{className:"jsx-fb70db4abea5ec9f relative flex flex-col gap-0.5 mt-0.5",children:l.effects.map((e,t)=>(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f text-[8.5px] text-muted-foreground/70 leading-tight flex items-center gap-1",children:[(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f "+(n.text||""),children:"·"}),(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f truncate",children:e})]},t))}),(0,p.jsxs)("button",{type:"button",disabled:!x,onClick:()=>r(s,1),"aria-label":`分配 1 点到 ${l.name}`,style:x?{boxShadow:`0 0 8px ${n.glow}`}:void 0,className:`jsx-fb70db4abea5ec9f relative mt-auto rounded-md border px-1.5 py-1 flex items-center justify-center gap-0.5 text-[10px] font-bold transition-all ${x?`${n.borderActive} ${n.bg} ${n.text} hover:scale-105 cursor-pointer`:"border-white/5 bg-black/20 text-muted-foreground/30 cursor-not-allowed"}`,children:[(0,p.jsx)(nl,{className:"h-3 w-3"}),(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f",children:"分配"})]})]},s)})}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f mt-auto rounded-lg border border-white/10 bg-black/30 px-2.5 py-1.5 flex items-center justify-between gap-2",children:[(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f flex items-center gap-1.5 text-[10px]",children:[(0,p.jsx)(nn,{className:"h-3 w-3 text-fuchsia-300"}),(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f text-muted-foreground",children:"总等级"}),(0,p.jsxs)("span",{className:"jsx-fb70db4abea5ec9f font-mono font-bold text-fuchsia-200",children:[l,(0,p.jsxs)("span",{className:"jsx-fb70db4abea5ec9f text-muted-foreground/60 text-[9px]",children:["/",400]})]})]}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f flex items-center gap-2 text-[10px]",children:[(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f text-muted-foreground",children:"总加成"}),(0,p.jsxs)("span",{className:"jsx-fb70db4abea5ec9f font-mono font-bold text-emerald-200",children:["+",n.toFixed(1),"%"]})]})]}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f grid grid-cols-2 gap-1 text-[9px]",children:[(0,p.jsx)(nd,{label:"探险力",value:`\xd7${s.expeditionPowerMult.toFixed(2)}`,color:"text-emerald-300"}),(0,p.jsx)(nd,{label:"解码步数",value:`+${s.decodeStepsBonus}`,color:"text-fuchsia-300"}),(0,p.jsx)(nd,{label:"洞见倍率",value:`+${(100*s.insightMultAdd).toFixed(1)}%`,color:"text-fuchsia-300"}),(0,p.jsx)(nd,{label:"自动解码周期",value:`\xd7${s.autoDecodeIntervalMult.toFixed(2)}`,color:"text-fuchsia-300"}),(0,p.jsx)(nd,{label:"探险生命",value:`+${s.expeditionHpBonus}`,color:"text-amber-300"}),(0,p.jsx)(nd,{label:"BOSS 胜率",value:`+${(100*s.bossWinRateBonus).toFixed(1)}%`,color:"text-amber-300"}),(0,p.jsx)(nd,{label:"巡航护盾",value:`+${s.cruiseShieldBonus}`,color:"text-amber-300"}),(0,p.jsx)(nd,{label:"接触率",value:`\xd7${s.contactRateMult.toFixed(2)}`,color:"text-rose-300"}),(0,p.jsx)(nd,{label:"星潮触发",value:`+${(100*s.tideTriggerBonus).toFixed(1)}%`,color:"text-rose-300"}),(0,p.jsx)(nd,{label:"脉冲连击",value:`+${(100*s.pulseComboBonus).toFixed(1)}%`,color:"text-rose-300"}),(0,p.jsx)(nd,{label:"巡航速度",value:`\xd7${s.cruiseShipSpeedMult.toFixed(2)}`,color:"text-emerald-300"}),(0,p.jsx)(nd,{label:"产能加成",value:`\xd7${s.crystalsPerSecMult.toFixed(2)}`,color:"text-emerald-300"})]}),(0,p.jsxs)("div",{className:"jsx-fb70db4abea5ec9f text-[9px] text-muted-foreground/60 text-center leading-tight",children:["每次飞升获得 ",(0,p.jsx)("span",{className:"jsx-fb70db4abea5ec9f text-fuchsia-300 font-mono",children:"飞升次数 × 2 + 1"})," 点属性点;完成对应活动自动累积经验"]})]})}function nd({label:e,value:t,color:a}){return(0,p.jsxs)("div",{className:"flex items-center justify-between rounded bg-black/25 border border-white/5 px-1.5 py-0.5",children:[(0,p.jsx)("span",{className:"text-muted-foreground/80 truncate",children:e}),(0,p.jsx)("span",{className:`font-mono ${a}`,children:t})]})}let nu=(0,tq.cva)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function nh({className:e,variant:t,asChild:a=!1,...r}){return(0,p.jsx)(a?th:"span",{"data-slot":"badge",className:(0,tT.cn)(nu({variant:t}),e),...r})}function nf(){let{crystalsPerSec:e,idlePermanentBonus:t,idleStats:a,idleProjectSlots:r,tech:s,ascensions:l,offlineEff:n}=te(aa(e=>({crystalsPerSec:e.crystalsPerSec,idlePermanentBonus:e.idlePermanentBonus??0,idleStats:e.idleStats??{projectsCompleted:0,crystalsFromIdle:0},idleProjectSlots:e.idleProjectSlots??[null,null,null],tech:e.tech,ascensions:e.ascensions??0,offlineEff:e.offlineEff??.5}))),o=te(e=>e.startIdleProject),i=te(e=>e.cancelIdleProject),c=te(e=>e.claimIdleProject),d=te(e=>e.claimAllIdleProjects),[u,h]=(0,g.useState)(()=>Date.now());(0,g.useEffect)(()=>{let e=setInterval(()=>h(Date.now()),1e3);return()=>clearInterval(e)},[]);let f=(0,g.useMemo)(()=>(function(e){let t=e.tech??{},a=[];for(let e of e0){let r=t[e]??0;if(r>0){let t=C.find(t=>t.id===e);if(!t)continue;let s="crystalsPerSec"===t.effect.kind?t.effect.value*r:0;a.push({techId:e,name:t.name,icon:eQ[e]??"🛰️",level:r,outputPerSec:s,color:"emerald",status:"active"})}}if(0===a.length){let e=C.find(e=>"min_1"===e.id);a.push({techId:"min_1",name:e?.name??"谐振钻头",icon:eQ.min_1??"⛏️",level:0,outputPerSec:0,color:"emerald",status:"dormant"})}return a})({tech:s}),[s]),m=(0,g.useMemo)(()=>eJ({ascensions:l,crystalsPerSec:e}),[l,e]),x=(0,g.useMemo)(()=>{var t;return t={ascensions:l,crystalsPerSec:e},eV.filter(e=>!eG(e,t)).sort((e,t)=>e.order-t.order)},[l,e]),b=f.reduce((e,t)=>e+t.outputPerSec,0),v=ec(t),y=v<t,w=(0,g.useMemo)(()=>{let e=new Set;for(let t of r)t&&!t.completed&&e.add(t.projectId);return e},[r]),j=(0,g.useMemo)(()=>r.filter(e=>null!==e&&e.completed).length,[r]);return(0,p.jsxs)("div",{className:"max-h-[520px] overflow-y-auto pr-1 [scrollbar-width:thin] [scrollbar-color:rgba(232,121,249,0.4)_transparent] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-fuchsia-500/30 [&::-webkit-scrollbar-track]:bg-transparent space-y-3",children:[(0,p.jsxs)(t2,{className:"gap-0 p-3 bg-black/25 border-white/5 rounded-xl",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,p.jsxs)("h3",{className:"text-[11px] font-semibold text-emerald-300 tracking-wide flex items-center gap-1",children:[(0,p.jsx)("span",{className:"text-sm",children:"✦"})," 放置收益概览"]}),(0,p.jsx)(nh,{variant:"outline",className:"h-4 px-1.5 text-[10px] border-emerald-400/30 text-emerald-200/80",children:"IDLE OPS"})]}),(0,p.jsxs)("div",{className:"grid grid-cols-3 gap-1.5",children:[(0,p.jsx)(nm,{label:"放置产能",value:`+${I(e)}/s`,color:"emerald",icon:"⛏"}),(0,p.jsx)(nm,{label:"永久加成",value:`+${I(v)}/s`,color:"fuchsia",icon:"✦",sub:y?(0,p.jsxs)("span",{className:"text-[10px] text-amber-300/90 leading-tight mt-0.5 block",children:["有效 +",I(v),"/s(原始 +",I(t),"/s · 衰减中)"]}):null}),(0,p.jsx)(nm,{label:"完成工程",value:`${a.projectsCompleted}`,color:"amber",icon:"✓"})]}),(0,p.jsxs)("div",{className:"mt-2 px-1",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between text-[10px] text-muted-foreground mb-0.5",children:[(0,p.jsxs)("span",{children:["离线效率(上限 ",8,"h)"]}),(0,p.jsxs)("span",{className:"font-mono text-emerald-300",children:[Math.round(100*n),"%"]})]}),(0,p.jsx)(t$,{value:100*n,className:"h-1.5 bg-black/40 [&>div]:bg-gradient-to-r [&>div]:from-emerald-400 [&>div]:via-fuchsia-400 [&>div]:to-rose-400"})]}),a.crystalsFromIdle>0&&(0,p.jsxs)("div",{className:"mt-1.5 text-[10px] text-muted-foreground/70 px-1",children:["累计从放置工程获得 ",(0,p.jsx)("span",{className:"text-emerald-300 font-mono",children:I(a.crystalsFromIdle)})," 晶体"]})]}),(0,p.jsxs)(t2,{className:"gap-0 p-3 bg-black/25 border-white/5 rounded-xl",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,p.jsxs)("h3",{className:"text-[11px] font-semibold text-emerald-300 tracking-wide flex items-center gap-1",children:[(0,p.jsx)("span",{className:"text-sm",children:"🛰"})," 采矿无人机舰队"]}),(0,p.jsxs)("span",{className:"text-[10px] text-muted-foreground/70 font-mono",children:["总输出 +",I(b),"/s"]})]}),(0,p.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-1.5",children:f.map(e=>{let t="active"===e.status;return(0,p.jsxs)("div",{className:`relative rounded-lg border px-2 py-1.5 ${t?"border-emerald-400/40 bg-emerald-500/5":"border-white/10 bg-black/30 opacity-60"}`,children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)("span",{className:"text-base leading-none",children:e.icon}),(0,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsx)("div",{className:"text-[10px] text-foreground truncate",children:e.name}),(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/70",children:t?`Lv.${e.level}`:"休眠中"})]})]}),(0,p.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,p.jsxs)("span",{className:"text-[10px] font-mono text-emerald-300",children:["+",I(e.outputPerSec),"/s"]}),(0,p.jsxs)("span",{className:"relative flex h-2 w-2",children:[t&&(0,p.jsx)("span",{className:"absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-60 animate-ping"}),(0,p.jsx)("span",{className:`relative inline-flex h-2 w-2 rounded-full ${t?"bg-emerald-400":"bg-muted-foreground/40"}`})]})]})]},e.techId)})})]}),(0,p.jsxs)(t2,{className:"gap-0 p-3 bg-black/25 border-white/5 rounded-xl",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,p.jsxs)("h3",{className:"text-[11px] font-semibold text-fuchsia-300 tracking-wide flex items-center gap-1",children:[(0,p.jsx)("span",{className:"text-sm",children:"⚙"})," 放置工程槽位"]}),(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsxs)("span",{className:"text-[10px] text-muted-foreground/70 font-mono",children:[r.filter(e=>null!==e).length," / ",3]}),j>0&&(0,p.jsxs)(tX,{size:"sm",onClick:d,className:"h-5 px-2 text-[10px] gap-0.5 bg-emerald-500/15 border border-emerald-400/40 text-emerald-200 hover:bg-emerald-500/25 hover:text-emerald-100",title:`批量领取 ${j} 项已完成工程`,children:[(0,p.jsx)("span",{className:"text-[11px] leading-none",children:"✓"}),"领取全部"]})]})]}),(0,p.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-1.5",children:r.map((e,t)=>(0,p.jsx)(nx,{slotIndex:t,slot:e,now:u,onCancel:()=>i(t),onClaim:()=>c(t)},t))})]}),(0,p.jsxs)(t2,{className:"gap-0 p-3 bg-black/25 border-white/5 rounded-xl",children:[(0,p.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,p.jsxs)("h3",{className:"text-[11px] font-semibold text-amber-300 tracking-wide flex items-center gap-1",children:[(0,p.jsx)("span",{className:"text-sm",children:"🛰"})," 可派遣工程"]}),(0,p.jsxs)("span",{className:"text-[10px] text-muted-foreground/70 font-mono",children:[m.length," / ",eV.length," 已解锁"]})]}),(0,p.jsxs)("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-1.5",children:[m.map(e=>(0,p.jsx)(np,{project:e,slots:r,runningProjectIds:w,onDispatch:t=>o(t,e.id)},e.id)),0===m.length&&(0,p.jsx)("div",{className:"col-span-2 text-center py-3 text-[10px] text-muted-foreground/60",children:"暂无可派遣工程 · 提升产能或完成飞升解锁更多"})]}),x.length>0&&(0,p.jsxs)("div",{className:"mt-2 pt-2 border-t border-white/5",children:[(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/60 mb-1.5",children:"未解锁工程"}),(0,p.jsx)("div",{className:"space-y-1",children:x.map(e=>{let t=[void 0!==e.minAscensions?`飞升 ${e.minAscensions}`:null,void 0!==e.minCrystalsPerSec?`产能 ${e.minCrystalsPerSec}/s`:null].filter(Boolean).join(" 或 ");return(0,p.jsxs)("div",{className:"flex items-center gap-1.5 px-2 py-1 rounded-md bg-black/20 border border-white/5 opacity-60",children:[(0,p.jsx)("span",{className:"text-xs grayscale",children:e.icon}),(0,p.jsx)("span",{className:"text-[10px] text-muted-foreground truncate flex-1",children:e.name}),(0,p.jsxs)("span",{className:"text-[10px] text-amber-300/80 font-mono shrink-0",children:["🔒 ",t]})]},e.id)})})]})]})]})}function nm({label:e,value:t,color:a,icon:r,sub:s}){let l=e2[a];return(0,p.jsxs)("div",{className:`rounded-lg border ${l.border} ${l.bgSoft} px-2 py-1.5`,children:[(0,p.jsxs)("div",{className:"flex items-center gap-1 text-[10px] text-muted-foreground/80",children:[(0,p.jsx)("span",{children:r}),(0,p.jsx)("span",{children:e})]}),(0,p.jsx)("div",{className:`text-[13px] font-mono font-bold ${l.text} mt-0.5`,children:t}),s]})}function nx({slotIndex:e,slot:t,now:a,onCancel:r,onClaim:s}){if(!t)return(0,p.jsxs)("div",{className:"rounded-lg border border-dashed border-white/15 bg-black/20 px-2 py-3 flex flex-col items-center justify-center min-h-[110px]",children:[(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground/60",children:["槽位 ",e+1]}),(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/40 mt-1",children:"选择工程 ↓"})]});let l=eY[t.projectId];if(!l)return(0,p.jsx)("div",{className:"rounded-lg border border-rose-400/40 bg-rose-500/10 px-2 py-3 min-h-[110px]",children:(0,p.jsx)("div",{className:"text-[10px] text-rose-200",children:"数据缺失"})});let n=e2[l.color],o=Math.max(0,t.finishesAt-a),i=Math.min(100,Math.max(0,Math.max(0,(a-t.startedAt)/1e3)/l.durationSec*100));return t.completed?(0,p.jsxs)("div",{className:`relative rounded-lg border ${n.border} ${n.bg} px-2 py-2 min-h-[110px] flex flex-col ${n.glow}`,children:[(0,p.jsxs)("div",{className:"flex items-center gap-1",children:[(0,p.jsx)("span",{className:"text-base leading-none",children:l.icon}),(0,p.jsx)("span",{className:`text-[10px] font-semibold ${n.text} truncate flex-1`,children:l.name})]}),(0,p.jsx)("div",{className:`text-[11px] font-bold ${n.text} mt-1 flex items-center gap-1`,children:(0,p.jsx)("span",{children:"✓ 完成"})}),(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/80 mt-1 leading-tight",children:e1(l.reward)}),(0,p.jsx)(tX,{size:"sm",onClick:s,className:`h-6 mt-2 text-[10px] ${n.bg} ${n.text} border ${n.border} hover:opacity-80`,children:"领取奖励"})]}):(0,p.jsxs)("div",{className:`relative rounded-lg border ${n.border} ${n.bgSoft} px-2 py-2 min-h-[110px] flex flex-col`,children:[(0,p.jsxs)("div",{className:"flex items-center gap-1",children:[(0,p.jsx)("span",{className:"text-base leading-none",children:l.icon}),(0,p.jsx)("span",{className:`text-[10px] font-semibold ${n.text} truncate flex-1`,children:l.name})]}),(0,p.jsx)("div",{className:`text-[18px] font-mono font-bold ${n.text} mt-1 leading-none tabular-nums`,children:eZ(o/1e3)}),(0,p.jsx)("div",{className:"h-1.5 mt-1.5 bg-black/40 rounded-full overflow-hidden",children:(0,p.jsx)("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${i}%`,backgroundColor:e5[l.color],boxShadow:`0 0 8px ${e5[l.color]}80`}})}),(0,p.jsxs)("div",{className:"flex items-center justify-between mt-1",children:[(0,p.jsxs)("span",{className:"text-[10px] text-muted-foreground/70",children:["槽位 ",e+1," · ",Math.round(i),"%"]}),(0,p.jsx)(tX,{size:"sm",variant:"ghost",onClick:r,className:"h-5 px-1.5 text-[10px] text-muted-foreground/60 hover:text-rose-300 hover:bg-rose-500/10",children:"取消"})]})]})}function np({project:e,slots:t,runningProjectIds:a,onDispatch:r}){let s=e2[e.color],l=a.has(e.id);return(0,p.jsxs)("div",{className:`relative rounded-lg border ${s.border} ${s.bgSoft} px-2 py-2 flex flex-col`,children:[(0,p.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,p.jsx)("span",{className:"text-base leading-none",children:e.icon}),(0,p.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,p.jsx)("div",{className:`text-[11px] font-semibold ${s.text} truncate`,children:e.name}),(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground/70",children:["⏱ ",eZ(e.durationSec)]})]})]}),(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/80 mt-1 leading-tight line-clamp-2 min-h-[24px]",children:e.desc}),(0,p.jsxs)("div",{className:`text-[10px] font-mono ${s.text} mt-1`,children:["🎁 ",e1(e.reward)]}),(0,p.jsxs)("div",{className:"flex items-center gap-1 mt-1.5",children:[[0,1,2].map(e=>{let a=null===t[e],n=l||!a;return(0,p.jsx)(tX,{size:"sm",variant:"outline",disabled:n,onClick:()=>r(e),className:`h-5 w-7 p-0 text-[10px] font-mono ${n?"opacity-30 border-white/10 text-muted-foreground":`${s.border} ${s.text} ${s.bg} hover:opacity-80`}`,title:l?"该工程已在运行":a?`派遣到槽位 ${e+1}`:`槽位 ${e+1} 已占用`,children:e+1},e)}),l&&(0,p.jsx)("span",{className:"text-[10px] text-amber-300/80 ml-1",children:"运行中…"})]})]})}let ng=["top","right","bottom","left"],nb=Math.min,nv=Math.max,ny=Math.round,nw=Math.floor,nj=e=>({x:e,y:e}),nN={left:"right",right:"left",bottom:"top",top:"bottom"},nk={start:"end",end:"start"};function nM(e,t){return"function"==typeof e?e(t):e}function nS(e){return e.split("-")[0]}function nP(e){return e.split("-")[1]}function nC(e){return"x"===e?"y":"x"}function nT(e){return"y"===e?"height":"width"}let n$=new Set(["top","bottom"]);function n_(e){return n$.has(nS(e))?"y":"x"}function nR(e){return e.replace(/start|end/g,e=>nk[e])}let nE=["left","right"],nA=["right","left"],nI=["top","bottom"],nB=["bottom","top"];function nD(e){return e.replace(/left|right|bottom|top/g,e=>nN[e])}function nL(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function nz(e){let{x:t,y:a,width:r,height:s}=e;return{width:r,height:s,top:a,left:t,right:t+r,bottom:a+s,x:t,y:a}}function nF(e,t,a){let r,{reference:s,floating:l}=e,n=n_(t),o=nC(n_(t)),i=nT(o),c=nS(t),d="y"===n,u=s.x+s.width/2-l.width/2,h=s.y+s.height/2-l.height/2,f=s[i]/2-l[i]/2;switch(c){case"top":r={x:u,y:s.y-l.height};break;case"bottom":r={x:u,y:s.y+s.height};break;case"right":r={x:s.x+s.width,y:h};break;case"left":r={x:s.x-l.width,y:h};break;default:r={x:s.x,y:s.y}}switch(nP(t)){case"start":r[o]-=f*(a&&d?-1:1);break;case"end":r[o]+=f*(a&&d?-1:1)}return r}let nO=async(e,t,a)=>{let{placement:r="bottom",strategy:s="absolute",middleware:l=[],platform:n}=a,o=l.filter(Boolean),i=await (null==n.isRTL?void 0:n.isRTL(t)),c=await n.getElementRects({reference:e,floating:t,strategy:s}),{x:d,y:u}=nF(c,r,i),h=r,f={},m=0;for(let a=0;a<o.length;a++){let{name:l,fn:x}=o[a],{x:p,y:g,data:b,reset:v}=await x({x:d,y:u,initialPlacement:r,placement:h,strategy:s,middlewareData:f,rects:c,platform:n,elements:{reference:e,floating:t}});d=null!=p?p:d,u=null!=g?g:u,f={...f,[l]:{...f[l],...b}},v&&m<=50&&(m++,"object"==typeof v&&(v.placement&&(h=v.placement),v.rects&&(c=!0===v.rects?await n.getElementRects({reference:e,floating:t,strategy:s}):v.rects),{x:d,y:u}=nF(c,h,i)),a=-1)}return{x:d,y:u,placement:h,strategy:s,middlewareData:f}};async function nH(e,t){var a;void 0===t&&(t={});let{x:r,y:s,platform:l,rects:n,elements:o,strategy:i}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:f=0}=nM(t,e),m=nL(f),x=o[h?"floating"===u?"reference":"floating":u],p=nz(await l.getClippingRect({element:null==(a=await (null==l.isElement?void 0:l.isElement(x)))||a?x:x.contextElement||await (null==l.getDocumentElement?void 0:l.getDocumentElement(o.floating)),boundary:c,rootBoundary:d,strategy:i})),g="floating"===u?{x:r,y:s,width:n.floating.width,height:n.floating.height}:n.reference,b=await (null==l.getOffsetParent?void 0:l.getOffsetParent(o.floating)),v=await (null==l.isElement?void 0:l.isElement(b))&&await (null==l.getScale?void 0:l.getScale(b))||{x:1,y:1},y=nz(l.convertOffsetParentRelativeRectToViewportRelativeRect?await l.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:b,strategy:i}):g);return{top:(p.top-y.top+m.top)/v.y,bottom:(y.bottom-p.bottom+m.bottom)/v.y,left:(p.left-y.left+m.left)/v.x,right:(y.right-p.right+m.right)/v.x}}function nW(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function nK(e){return ng.some(t=>e[t]>=0)}let nq=new Set(["left","top"]);async function nU(e,t){let{placement:a,platform:r,elements:s}=e,l=await (null==r.isRTL?void 0:r.isRTL(s.floating)),n=nS(a),o=nP(a),i="y"===n_(a),c=nq.has(n)?-1:1,d=l&&i?-1:1,u=nM(t,e),{mainAxis:h,crossAxis:f,alignmentAxis:m}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return o&&"number"==typeof m&&(f="end"===o?-1*m:m),i?{x:f*d,y:h*c}:{x:h*c,y:f*d}}function nX(){return"u">typeof window}function nV(e){return nJ(e)?(e.nodeName||"").toLowerCase():"#document"}function nY(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function nG(e){var t;return null==(t=(nJ(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function nJ(e){return!!nX()&&(e instanceof Node||e instanceof nY(e).Node)}function nZ(e){return!!nX()&&(e instanceof Element||e instanceof nY(e).Element)}function nQ(e){return!!nX()&&(e instanceof HTMLElement||e instanceof nY(e).HTMLElement)}function n0(e){return!(!nX()||"u"<typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof nY(e).ShadowRoot)}let n1=new Set(["inline","contents"]);function n2(e){let{overflow:t,overflowX:a,overflowY:r,display:s}=or(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+a)&&!n1.has(s)}let n5=new Set(["table","td","th"]),n3=[":popover-open",":modal"];function n4(e){return n3.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let n6=["transform","translate","scale","rotate","perspective"],n8=["transform","translate","scale","rotate","perspective","filter"],n9=["paint","layout","strict","content"];function n7(e){let t=oe(),a=nZ(e)?or(e):e;return n6.some(e=>!!a[e]&&"none"!==a[e])||!!a.containerType&&"normal"!==a.containerType||!t&&!!a.backdropFilter&&"none"!==a.backdropFilter||!t&&!!a.filter&&"none"!==a.filter||n8.some(e=>(a.willChange||"").includes(e))||n9.some(e=>(a.contain||"").includes(e))}function oe(){return!("u"<typeof CSS)&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let ot=new Set(["html","body","#document"]);function oa(e){return ot.has(nV(e))}function or(e){return nY(e).getComputedStyle(e)}function os(e){return nZ(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ol(e){if("html"===nV(e))return e;let t=e.assignedSlot||e.parentNode||n0(e)&&e.host||nG(e);return n0(t)?t.host:t}function on(e,t,a){var r;void 0===t&&(t=[]),void 0===a&&(a=!0);let s=function e(t){let a=ol(t);return oa(a)?t.ownerDocument?t.ownerDocument.body:t.body:nQ(a)&&n2(a)?a:e(a)}(e),l=s===(null==(r=e.ownerDocument)?void 0:r.body),n=nY(s);if(l){let e=oo(n);return t.concat(n,n.visualViewport||[],n2(s)?s:[],e&&a?on(e):[])}return t.concat(s,on(s,[],a))}function oo(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function oi(e){let t=or(e),a=parseFloat(t.width)||0,r=parseFloat(t.height)||0,s=nQ(e),l=s?e.offsetWidth:a,n=s?e.offsetHeight:r,o=ny(a)!==l||ny(r)!==n;return o&&(a=l,r=n),{width:a,height:r,$:o}}function oc(e){return nZ(e)?e:e.contextElement}function od(e){let t=oc(e);if(!nQ(t))return nj(1);let a=t.getBoundingClientRect(),{width:r,height:s,$:l}=oi(t),n=(l?ny(a.width):a.width)/r,o=(l?ny(a.height):a.height)/s;return n&&Number.isFinite(n)||(n=1),o&&Number.isFinite(o)||(o=1),{x:n,y:o}}let ou=nj(0);function oh(e){let t=nY(e);return oe()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ou}function of(e,t,a,r){var s;void 0===t&&(t=!1),void 0===a&&(a=!1);let l=e.getBoundingClientRect(),n=oc(e),o=nj(1);t&&(r?nZ(r)&&(o=od(r)):o=od(e));let i=(void 0===(s=a)&&(s=!1),r&&(!s||r===nY(n))&&s)?oh(n):nj(0),c=(l.left+i.x)/o.x,d=(l.top+i.y)/o.y,u=l.width/o.x,h=l.height/o.y;if(n){let e=nY(n),t=r&&nZ(r)?nY(r):r,a=e,s=oo(a);for(;s&&r&&t!==a;){let e=od(s),t=s.getBoundingClientRect(),r=or(s),l=t.left+(s.clientLeft+parseFloat(r.paddingLeft))*e.x,n=t.top+(s.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,d*=e.y,u*=e.x,h*=e.y,c+=l,d+=n,s=oo(a=nY(s))}}return nz({width:u,height:h,x:c,y:d})}function om(e,t){let a=os(e).scrollLeft;return t?t.left+a:of(nG(e)).left+a}function ox(e,t){let a=e.getBoundingClientRect();return{x:a.left+t.scrollLeft-om(e,a),y:a.top+t.scrollTop}}let op=new Set(["absolute","fixed"]);function og(e,t,a){var r;let s;if("viewport"===t)s=function(e,t){let a=nY(e),r=nG(e),s=a.visualViewport,l=r.clientWidth,n=r.clientHeight,o=0,i=0;if(s){l=s.width,n=s.height;let e=oe();(!e||e&&"fixed"===t)&&(o=s.offsetLeft,i=s.offsetTop)}let c=om(r);if(c<=0){let e=r.ownerDocument,t=e.body,a=getComputedStyle(t),s="CSS1Compat"===e.compatMode&&parseFloat(a.marginLeft)+parseFloat(a.marginRight)||0,n=Math.abs(r.clientWidth-t.clientWidth-s);n<=25&&(l-=n)}else c<=25&&(l+=c);return{width:l,height:n,x:o,y:i}}(e,a);else if("document"===t){let t,a,l,n,o,i,c;r=nG(e),t=nG(r),a=os(r),l=r.ownerDocument.body,n=nv(t.scrollWidth,t.clientWidth,l.scrollWidth,l.clientWidth),o=nv(t.scrollHeight,t.clientHeight,l.scrollHeight,l.clientHeight),i=-a.scrollLeft+om(r),c=-a.scrollTop,"rtl"===or(l).direction&&(i+=nv(t.clientWidth,l.clientWidth)-n),s={width:n,height:o,x:i,y:c}}else if(nZ(t)){let e,r,l,n,o,i;r=(e=of(t,!0,"fixed"===a)).top+t.clientTop,l=e.left+t.clientLeft,n=nQ(t)?od(t):nj(1),o=t.clientWidth*n.x,i=t.clientHeight*n.y,s={width:o,height:i,x:l*n.x,y:r*n.y}}else{let a=oh(e);s={x:t.x-a.x,y:t.y-a.y,width:t.width,height:t.height}}return nz(s)}function ob(e){return"static"===or(e).position}function ov(e,t){if(!nQ(e)||"fixed"===or(e).position)return null;if(t)return t(e);let a=e.offsetParent;return nG(e)===a&&(a=a.ownerDocument.body),a}function oy(e,t){var a;let r=nY(e);if(n4(e))return r;if(!nQ(e)){let t=ol(e);for(;t&&!oa(t);){if(nZ(t)&&!ob(t))return t;t=ol(t)}return r}let s=ov(e,t);for(;s&&(a=s,n5.has(nV(a)))&&ob(s);)s=ov(s,t);return s&&oa(s)&&ob(s)&&!n7(s)?r:s||function(e){let t=ol(e);for(;nQ(t)&&!oa(t);){if(n7(t))return t;if(n4(t))break;t=ol(t)}return null}(e)||r}let ow=async function(e){let t=this.getOffsetParent||oy,a=this.getDimensions,r=await a(e.floating);return{reference:function(e,t,a){let r=nQ(t),s=nG(t),l="fixed"===a,n=of(e,!0,l,t),o={scrollLeft:0,scrollTop:0},i=nj(0);if(r||!r&&!l)if(("body"!==nV(t)||n2(s))&&(o=os(t)),r){let e=of(t,!0,l,t);i.x=e.x+t.clientLeft,i.y=e.y+t.clientTop}else s&&(i.x=om(s));l&&!r&&s&&(i.x=om(s));let c=!s||r||l?nj(0):ox(s,o);return{x:n.left+o.scrollLeft-i.x-c.x,y:n.top+o.scrollTop-i.y-c.y,width:n.width,height:n.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},oj={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:a,offsetParent:r,strategy:s}=e,l="fixed"===s,n=nG(r),o=!!t&&n4(t.floating);if(r===n||o&&l)return a;let i={scrollLeft:0,scrollTop:0},c=nj(1),d=nj(0),u=nQ(r);if((u||!u&&!l)&&(("body"!==nV(r)||n2(n))&&(i=os(r)),nQ(r))){let e=of(r);c=od(r),d.x=e.x+r.clientLeft,d.y=e.y+r.clientTop}let h=!n||u||l?nj(0):ox(n,i);return{width:a.width*c.x,height:a.height*c.y,x:a.x*c.x-i.scrollLeft*c.x+d.x+h.x,y:a.y*c.y-i.scrollTop*c.y+d.y+h.y}},getDocumentElement:nG,getClippingRect:function(e){let{element:t,boundary:a,rootBoundary:r,strategy:s}=e,l=[..."clippingAncestors"===a?n4(t)?[]:function(e,t){let a=t.get(e);if(a)return a;let r=on(e,[],!1).filter(e=>nZ(e)&&"body"!==nV(e)),s=null,l="fixed"===or(e).position,n=l?ol(e):e;for(;nZ(n)&&!oa(n);){let t=or(n),a=n7(n);a||"fixed"!==t.position||(s=null),(l?!a&&!s:!a&&"static"===t.position&&!!s&&op.has(s.position)||n2(n)&&!a&&function e(t,a){let r=ol(t);return!(r===a||!nZ(r)||oa(r))&&("fixed"===or(r).position||e(r,a))}(e,n))?r=r.filter(e=>e!==n):s=t,n=ol(n)}return t.set(e,r),r}(t,this._c):[].concat(a),r],n=l[0],o=l.reduce((e,a)=>{let r=og(t,a,s);return e.top=nv(r.top,e.top),e.right=nb(r.right,e.right),e.bottom=nb(r.bottom,e.bottom),e.left=nv(r.left,e.left),e},og(t,n,s));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:oy,getElementRects:ow,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:a}=oi(e);return{width:t,height:a}},getScale:od,isElement:nZ,isRTL:function(e){return"rtl"===or(e).direction}};function oN(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let ok=e=>({name:"arrow",options:e,async fn(t){let{x:a,y:r,placement:s,rects:l,platform:n,elements:o,middlewareData:i}=t,{element:c,padding:d=0}=nM(e,t)||{};if(null==c)return{};let u=nL(d),h={x:a,y:r},f=nC(n_(s)),m=nT(f),x=await n.getDimensions(c),p="y"===f,g=p?"clientHeight":"clientWidth",b=l.reference[m]+l.reference[f]-h[f]-l.floating[m],v=h[f]-l.reference[f],y=await (null==n.getOffsetParent?void 0:n.getOffsetParent(c)),w=y?y[g]:0;w&&await (null==n.isElement?void 0:n.isElement(y))||(w=o.floating[g]||l.floating[m]);let j=w/2-x[m]/2-1,N=nb(u[p?"top":"left"],j),k=nb(u[p?"bottom":"right"],j),M=w-x[m]-k,S=w/2-x[m]/2+(b/2-v/2),P=nv(N,nb(S,M)),C=!i.arrow&&null!=nP(s)&&S!==P&&l.reference[m]/2-(S<N?N:k)-x[m]/2<0,T=C?S<N?S-N:S-M:0;return{[f]:h[f]+T,data:{[f]:P,centerOffset:S-P-T,...C&&{alignmentOffset:T}},reset:C}}});var oM="u">typeof document?g.useLayoutEffect:function(){};function oS(e,t){let a,r,s;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((a=e.length)!==t.length)return!1;for(r=a;0!=r--;)if(!oS(e[r],t[r]))return!1;return!0}if((a=(s=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=a;0!=r--;)if(!({}).hasOwnProperty.call(t,s[r]))return!1;for(r=a;0!=r--;){let a=s[r];if(("_owner"!==a||!e.$$typeof)&&!oS(e[a],t[a]))return!1}return!0}return e!=e&&t!=t}function oP(e){return"u"<typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function oC(e,t){let a=oP(e);return Math.round(t*a)/a}function oT(e){let t=g.useRef(e);return oM(()=>{t.current=e}),t}var o$=g.forwardRef((e,t)=>{let{children:a,width:r=10,height:s=5,...l}=e;return(0,p.jsx)(ar.Primitive.svg,{...l,ref:t,width:r,height:s,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?a:(0,p.jsx)("polygon",{points:"0,0 30,0 15,10"})})});o$.displayName="Arrow";var o_="Popper",[oR,oE]=(0,al.createContextScope)(o_),[oA,oI]=oR(o_),oB=e=>{let{__scopePopper:t,children:a}=e,[r,s]=g.useState(null);return(0,p.jsx)(oA,{scope:t,anchor:r,onAnchorChange:s,children:a})};oB.displayName=o_;var oD="PopperAnchor",oL=g.forwardRef((e,t)=>{let{__scopePopper:a,virtualRef:r,...s}=e,l=oI(oD,a),n=g.useRef(null),o=(0,to.useComposedRefs)(t,n),i=g.useRef(null);return g.useEffect(()=>{let e=i.current;i.current=r?.current||n.current,e!==i.current&&l.onAnchorChange(i.current)}),r?null:(0,p.jsx)(ar.Primitive.div,{...s,ref:o})});oL.displayName=oD;var oz="PopperContent",[oF,oO]=oR(oz),oH=g.forwardRef((e,t)=>{var a,r,s,l,n,o,i,c,d,u,h,f,m,x,b,v,y,w,j,N,k;let{__scopePopper:M,side:S="bottom",sideOffset:P=0,align:C="center",alignOffset:T=0,arrowPadding:$=0,avoidCollisions:_=!0,collisionBoundary:R=[],collisionPadding:E=0,sticky:A="partial",hideWhenDetached:I=!1,updatePositionStrategy:B="optimized",onPlaced:D,...L}=e,z=oI(oz,M),[F,O]=g.useState(null),H=(0,to.useComposedRefs)(t,e=>O(e)),[W,K]=g.useState(null),q=s$(W),U=q?.width??0,X=q?.height??0,V="number"==typeof E?E:{top:0,right:0,bottom:0,left:0,...E},Y=Array.isArray(R)?R:[R],G=Y.length>0,J={padding:V,boundary:Y.filter(oU),altBoundary:G},{refs:Z,floatingStyles:Q,placement:ee,isPositioned:et,middlewareData:ea}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:a="absolute",middleware:r=[],platform:s,elements:{reference:l,floating:n}={},transform:o=!0,whileElementsMounted:i,open:c}=e,[d,u]=g.useState({x:0,y:0,strategy:a,placement:t,middlewareData:{},isPositioned:!1}),[h,f]=g.useState(r);oS(h,r)||f(r);let[m,x]=g.useState(null),[p,b]=g.useState(null),v=g.useCallback(e=>{e!==N.current&&(N.current=e,x(e))},[]),y=g.useCallback(e=>{e!==k.current&&(k.current=e,b(e))},[]),w=l||m,j=n||p,N=g.useRef(null),k=g.useRef(null),M=g.useRef(d),S=null!=i,P=oT(i),C=oT(s),T=oT(c),$=g.useCallback(()=>{var e,r;let s,l,n;if(!N.current||!k.current)return;let o={placement:t,strategy:a,middleware:h};C.current&&(o.platform=C.current),(e=N.current,r=k.current,s=new Map,n={...(l={platform:oj,...o}).platform,_c:s},nO(e,r,{...l,platform:n})).then(e=>{let t={...e,isPositioned:!1!==T.current};_.current&&!oS(M.current,t)&&(M.current=t,tn.flushSync(()=>{u(t)}))})},[h,t,a,C,T]);oM(()=>{!1===c&&M.current.isPositioned&&(M.current.isPositioned=!1,u(e=>({...e,isPositioned:!1})))},[c]);let _=g.useRef(!1);oM(()=>(_.current=!0,()=>{_.current=!1}),[]),oM(()=>{if(w&&(N.current=w),j&&(k.current=j),w&&j){if(P.current)return P.current(w,j,$);$()}},[w,j,$,P,S]);let R=g.useMemo(()=>({reference:N,floating:k,setReference:v,setFloating:y}),[v,y]),E=g.useMemo(()=>({reference:w,floating:j}),[w,j]),A=g.useMemo(()=>{let e={position:a,left:0,top:0};if(!E.floating)return e;let t=oC(E.floating,d.x),r=oC(E.floating,d.y);return o?{...e,transform:"translate("+t+"px, "+r+"px)",...oP(E.floating)>=1.5&&{willChange:"transform"}}:{position:a,left:t,top:r}},[a,o,E.floating,d.x,d.y]);return g.useMemo(()=>({...d,update:$,refs:R,elements:E,floatingStyles:A}),[d,$,R,E,A])}({strategy:"fixed",placement:S+("center"!==C?"-"+C:""),whileElementsMounted:(...e)=>(function(e,t,a,r){let s;void 0===r&&(r={});let{ancestorScroll:l=!0,ancestorResize:n=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:i="function"==typeof IntersectionObserver,animationFrame:c=!1}=r,d=oc(e),u=l||n?[...d?on(d):[],...on(t)]:[];u.forEach(e=>{l&&e.addEventListener("scroll",a,{passive:!0}),n&&e.addEventListener("resize",a)});let h=d&&i?function(e,t){let a,r=null,s=nG(e);function l(){var e;clearTimeout(a),null==(e=r)||e.disconnect(),r=null}return!function n(o,i){void 0===o&&(o=!1),void 0===i&&(i=1),l();let c=e.getBoundingClientRect(),{left:d,top:u,width:h,height:f}=c;if(o||t(),!h||!f)return;let m={rootMargin:-nw(u)+"px "+-nw(s.clientWidth-(d+h))+"px "+-nw(s.clientHeight-(u+f))+"px "+-nw(d)+"px",threshold:nv(0,nb(1,i))||1},x=!0;function p(t){let r=t[0].intersectionRatio;if(r!==i){if(!x)return n();r?n(!1,r):a=setTimeout(()=>{n(!1,1e-7)},1e3)}1!==r||oN(c,e.getBoundingClientRect())||n(),x=!1}try{r=new IntersectionObserver(p,{...m,root:s.ownerDocument})}catch(e){r=new IntersectionObserver(p,m)}r.observe(e)}(!0),l}(d,a):null,f=-1,m=null;o&&(m=new ResizeObserver(e=>{let[r]=e;r&&r.target===d&&m&&(m.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;null==(e=m)||e.observe(t)})),a()}),d&&!c&&m.observe(d),m.observe(t));let x=c?of(e):null;return c&&function t(){let r=of(e);x&&!oN(x,r)&&a(),x=r,s=requestAnimationFrame(t)}(),a(),()=>{var e;u.forEach(e=>{l&&e.removeEventListener("scroll",a),n&&e.removeEventListener("resize",a)}),null==h||h(),null==(e=m)||e.disconnect(),m=null,c&&cancelAnimationFrame(s)}})(...e,{animationFrame:"always"===B}),elements:{reference:z.anchor},middleware:[{...{name:"offset",options:s=a={mainAxis:P+X,alignmentAxis:T},async fn(e){var t,a;let{x:r,y:l,placement:n,middlewareData:o}=e,i=await nU(e,s);return n===(null==(t=o.offset)?void 0:t.placement)&&null!=(a=o.arrow)&&a.alignmentOffset?{}:{x:r+i.x,y:l+i.y,data:{...i,placement:n}}}},options:[a,r]},_&&{...{name:"shift",options:d=i={mainAxis:!0,crossAxis:!1,limiter:"partial"===A?{...(void 0===(o=l)&&(o={}),{options:o,fn(e){let{x:t,y:a,placement:r,rects:s,middlewareData:l}=e,{offset:n=0,mainAxis:i=!0,crossAxis:c=!0}=nM(o,e),d={x:t,y:a},u=n_(r),h=nC(u),f=d[h],m=d[u],x=nM(n,e),p="number"==typeof x?{mainAxis:x,crossAxis:0}:{mainAxis:0,crossAxis:0,...x};if(i){let e="y"===h?"height":"width",t=s.reference[h]-s.floating[e]+p.mainAxis,a=s.reference[h]+s.reference[e]-p.mainAxis;f<t?f=t:f>a&&(f=a)}if(c){var g,b;let e="y"===h?"width":"height",t=nq.has(nS(r)),a=s.reference[u]-s.floating[e]+(t&&(null==(g=l.offset)?void 0:g[u])||0)+(t?0:p.crossAxis),n=s.reference[u]+s.reference[e]+(t?0:(null==(b=l.offset)?void 0:b[u])||0)-(t?p.crossAxis:0);m<a?m=a:m>n&&(m=n)}return{[h]:f,[u]:m}}}),options:[l,n]}:void 0,...J},async fn(e){let{x:t,y:a,placement:r}=e,{mainAxis:s=!0,crossAxis:l=!1,limiter:n={fn:e=>{let{x:t,y:a}=e;return{x:t,y:a}}},...o}=nM(d,e),i={x:t,y:a},c=await nH(e,o),u=n_(nS(r)),h=nC(u),f=i[h],m=i[u];if(s){let e="y"===h?"top":"left",t="y"===h?"bottom":"right",a=f+c[e],r=f-c[t];f=nv(a,nb(f,r))}if(l){let e="y"===u?"top":"left",t="y"===u?"bottom":"right",a=m+c[e],r=m-c[t];m=nv(a,nb(m,r))}let x=n.fn({...e,[h]:f,[u]:m});return{...x,data:{x:x.x-t,y:x.y-a,enabled:{[h]:s,[u]:l}}}}},options:[i,c]},_&&{...{name:"flip",options:f=u={...J},async fn(e){var t,a,r,s,l,n,o,i;let c,d,u,{placement:h,middlewareData:m,rects:x,initialPlacement:p,platform:g,elements:b}=e,{mainAxis:v=!0,crossAxis:y=!0,fallbackPlacements:w,fallbackStrategy:j="bestFit",fallbackAxisSideDirection:N="none",flipAlignment:k=!0,...M}=nM(f,e);if(null!=(t=m.arrow)&&t.alignmentOffset)return{};let S=nS(h),P=n_(p),C=nS(p)===p,T=await (null==g.isRTL?void 0:g.isRTL(b.floating)),$=w||(C||!k?[nD(p)]:(c=nD(p),[nR(p),c,nR(c)])),_="none"!==N;!w&&_&&$.push(...(d=nP(p),u=function(e,t,a){switch(e){case"top":case"bottom":if(a)return t?nA:nE;return t?nE:nA;case"left":case"right":return t?nI:nB;default:return[]}}(nS(p),"start"===N,T),d&&(u=u.map(e=>e+"-"+d),k&&(u=u.concat(u.map(nR)))),u));let R=[p,...$],E=await nH(e,M),A=[],I=(null==(a=m.flip)?void 0:a.overflows)||[];if(v&&A.push(E[S]),y){let e,t,a,r,s=(n=h,o=x,void 0===(i=T)&&(i=!1),e=nP(n),a=nT(t=nC(n_(n))),r="x"===t?e===(i?"end":"start")?"right":"left":"start"===e?"bottom":"top",o.reference[a]>o.floating[a]&&(r=nD(r)),[r,nD(r)]);A.push(E[s[0]],E[s[1]])}if(I=[...I,{placement:h,overflows:A}],!A.every(e=>e<=0)){let e=((null==(r=m.flip)?void 0:r.index)||0)+1,t=R[e];if(t&&("alignment"!==y||P===n_(t)||I.every(e=>n_(e.placement)!==P||e.overflows[0]>0)))return{data:{index:e,overflows:I},reset:{placement:t}};let a=null==(s=I.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:s.placement;if(!a)switch(j){case"bestFit":{let e=null==(l=I.filter(e=>{if(_){let t=n_(e.placement);return t===P||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:l[0];e&&(a=e);break}case"initialPlacement":a=p}if(h!==a)return{reset:{placement:a}}}return{}}},options:[u,h]},{...{name:"size",options:b=m={...J,apply:({elements:e,rects:t,availableWidth:a,availableHeight:r})=>{let{width:s,height:l}=t.reference,n=e.floating.style;n.setProperty("--radix-popper-available-width",`${a}px`),n.setProperty("--radix-popper-available-height",`${r}px`),n.setProperty("--radix-popper-anchor-width",`${s}px`),n.setProperty("--radix-popper-anchor-height",`${l}px`)}},async fn(e){var t,a;let r,s,{placement:l,rects:n,platform:o,elements:i}=e,{apply:c=()=>{},...d}=nM(b,e),u=await nH(e,d),h=nS(l),f=nP(l),m="y"===n_(l),{width:x,height:p}=n.floating;"top"===h||"bottom"===h?(r=h,s=f===(await (null==o.isRTL?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(s=h,r="end"===f?"top":"bottom");let g=p-u.top-u.bottom,v=x-u.left-u.right,y=nb(p-u[r],g),w=nb(x-u[s],v),j=!e.middlewareData.shift,N=y,k=w;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(k=v),null!=(a=e.middlewareData.shift)&&a.enabled.y&&(N=g),j&&!f){let e=nv(u.left,0),t=nv(u.right,0),a=nv(u.top,0),r=nv(u.bottom,0);m?k=x-2*(0!==e||0!==t?e+t:nv(u.left,u.right)):N=p-2*(0!==a||0!==r?a+r:nv(u.top,u.bottom))}await c({...e,availableWidth:k,availableHeight:N});let M=await o.getDimensions(i.floating);return x!==M.width||p!==M.height?{reset:{rects:!0}}:{}}},options:[m,x]},W&&{...{name:"arrow",options:w=v={element:W,padding:$},fn(e){let{element:t,padding:a}="function"==typeof w?w(e):w;return t&&({}).hasOwnProperty.call(t,"current")?null!=t.current?ok({element:t.current,padding:a}).fn(e):{}:t?ok({element:t,padding:a}).fn(e):{}}},options:[v,y]},oX({arrowWidth:U,arrowHeight:X}),I&&{...{name:"hide",options:k=j={strategy:"referenceHidden",...J},async fn(e){let{rects:t}=e,{strategy:a="referenceHidden",...r}=nM(k,e);switch(a){case"referenceHidden":{let a=nW(await nH(e,{...r,elementContext:"reference"}),t.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:nK(a)}}}case"escaped":{let a=nW(await nH(e,{...r,altBoundary:!0}),t.floating);return{data:{escapedOffsets:a,escaped:nK(a)}}}default:return{}}}},options:[j,N]}]}),[er,es]=oV(ee),el=(0,an.useCallbackRef)(D);(0,ac.useLayoutEffect)(()=>{et&&el?.()},[et,el]);let en=ea.arrow?.x,eo=ea.arrow?.y,ei=ea.arrow?.centerOffset!==0,[ec,ed]=g.useState();return(0,ac.useLayoutEffect)(()=>{F&&ed(window.getComputedStyle(F).zIndex)},[F]),(0,p.jsx)("div",{ref:Z.setFloating,"data-radix-popper-content-wrapper":"",style:{...Q,transform:et?Q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:ec,"--radix-popper-transform-origin":[ea.transformOrigin?.x,ea.transformOrigin?.y].join(" "),...ea.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,p.jsx)(oF,{scope:M,placedSide:er,onArrowChange:K,arrowX:en,arrowY:eo,shouldHideArrow:ei,children:(0,p.jsx)(ar.Primitive.div,{"data-side":er,"data-align":es,...L,ref:H,style:{...L.style,animation:et?void 0:"none"}})})})});oH.displayName=oz;var oW="PopperArrow",oK={top:"bottom",right:"left",bottom:"top",left:"right"},oq=g.forwardRef(function(e,t){let{__scopePopper:a,...r}=e,s=oO(oW,a),l=oK[s.placedSide];return(0,p.jsx)("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:(0,p.jsx)(o$,{...r,ref:t,style:{...r.style,display:"block"}})})});function oU(e){return null!==e}oq.displayName=oW;var oX=e=>({name:"transformOrigin",options:e,fn(t){let{placement:a,rects:r,middlewareData:s}=t,l=s.arrow?.centerOffset!==0,n=l?0:e.arrowWidth,o=l?0:e.arrowHeight,[i,c]=oV(a),d={start:"0%",center:"50%",end:"100%"}[c],u=(s.arrow?.x??0)+n/2,h=(s.arrow?.y??0)+o/2,f="",m="";return"bottom"===i?(f=l?d:`${u}px`,m=`${-o}px`):"top"===i?(f=l?d:`${u}px`,m=`${r.floating.height+o}px`):"right"===i?(f=`${-o}px`,m=l?d:`${h}px`):"left"===i&&(f=`${r.floating.width+o}px`,m=l?d:`${h}px`),{data:{x:f,y:m}}}});function oV(e){let[t,a="center"]=e.split("-");return[t,a]}var oY=Symbol("radix.slottable"),oG=e.i(59411),[oJ,oZ]=(0,al.createContextScope)("Tooltip",[oE]),oQ=oE(),o0="TooltipProvider",o1="tooltip.open",[o2,o5]=oJ(o0),o3=e=>{let{__scopeTooltip:t,delayDuration:a=700,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:l}=e,n=g.useRef(!0),o=g.useRef(!1),i=g.useRef(0);return g.useEffect(()=>{let e=i.current;return()=>window.clearTimeout(e)},[]),(0,p.jsx)(o2,{scope:t,isOpenDelayedRef:n,delayDuration:a,onOpen:g.useCallback(()=>{window.clearTimeout(i.current),n.current=!1},[]),onClose:g.useCallback(()=>{window.clearTimeout(i.current),i.current=window.setTimeout(()=>n.current=!0,r)},[r]),isPointerInTransitRef:o,onPointerInTransitChange:g.useCallback(e=>{o.current=e},[]),disableHoverableContent:s,children:l})};o3.displayName=o0;var o4="Tooltip",[o6,o8]=oJ(o4),o9=e=>{let{__scopeTooltip:t,children:a,open:r,defaultOpen:s,onOpenChange:l,disableHoverableContent:n,delayDuration:o}=e,i=o5(o4,e.__scopeTooltip),c=oQ(t),[d,u]=g.useState(null),h=aJ(),f=g.useRef(0),m=n??i.disableHoverableContent,x=o??i.delayDuration,b=g.useRef(!1),[v,y]=(0,aZ.useControllableState)({prop:r,defaultProp:s??!1,onChange:e=>{e?(i.onOpen(),document.dispatchEvent(new CustomEvent(o1))):i.onClose(),l?.(e)},caller:o4}),w=g.useMemo(()=>v?b.current?"delayed-open":"instant-open":"closed",[v]),j=g.useCallback(()=>{window.clearTimeout(f.current),f.current=0,b.current=!1,y(!0)},[y]),N=g.useCallback(()=>{window.clearTimeout(f.current),f.current=0,y(!1)},[y]),k=g.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>{b.current=!0,y(!0),f.current=0},x)},[x,y]);return g.useEffect(()=>()=>{f.current&&(window.clearTimeout(f.current),f.current=0)},[]),(0,p.jsx)(oB,{...c,children:(0,p.jsx)(o6,{scope:t,contentId:h,open:v,stateAttribute:w,trigger:d,onTriggerChange:u,onTriggerEnter:g.useCallback(()=>{i.isOpenDelayedRef.current?k():j()},[i.isOpenDelayedRef,k,j]),onTriggerLeave:g.useCallback(()=>{m?N():(window.clearTimeout(f.current),f.current=0)},[N,m]),onOpen:j,onClose:N,disableHoverableContent:m,children:a})})};o9.displayName=o4;var o7="TooltipTrigger",ie=g.forwardRef((e,t)=>{let{__scopeTooltip:a,...r}=e,s=o8(o7,a),l=o5(o7,a),n=oQ(a),o=g.useRef(null),i=(0,to.useComposedRefs)(t,o,s.onTriggerChange),c=g.useRef(!1),d=g.useRef(!1),u=g.useCallback(()=>c.current=!1,[]);return g.useEffect(()=>()=>document.removeEventListener("pointerup",u),[u]),(0,p.jsx)(oL,{asChild:!0,...n,children:(0,p.jsx)(ar.Primitive.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:i,onPointerMove:(0,ad.composeEventHandlers)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(d.current||l.isPointerInTransitRef.current||(s.onTriggerEnter(),d.current=!0))}),onPointerLeave:(0,ad.composeEventHandlers)(e.onPointerLeave,()=>{s.onTriggerLeave(),d.current=!1}),onPointerDown:(0,ad.composeEventHandlers)(e.onPointerDown,()=>{s.open&&s.onClose(),c.current=!0,document.addEventListener("pointerup",u,{once:!0})}),onFocus:(0,ad.composeEventHandlers)(e.onFocus,()=>{c.current||s.onOpen()}),onBlur:(0,ad.composeEventHandlers)(e.onBlur,s.onClose),onClick:(0,ad.composeEventHandlers)(e.onClick,s.onClose)})})});ie.displayName=o7;var it="TooltipPortal",[ia,ir]=oJ(it,{forceMount:void 0}),is=e=>{let{__scopeTooltip:t,forceMount:a,children:r,container:s}=e,l=o8(it,t);return(0,p.jsx)(ia,{scope:t,forceMount:a,children:(0,p.jsx)(as.Presence,{present:a||l.open,children:(0,p.jsx)(a7.Portal,{asChild:!0,container:s,children:r})})})};is.displayName=it;var il="TooltipContent",io=g.forwardRef((e,t)=>{let a=ir(il,e.__scopeTooltip),{forceMount:r=a.forceMount,side:s="top",...l}=e,n=o8(il,e.__scopeTooltip);return(0,p.jsx)(as.Presence,{present:r||n.open,children:n.disableHoverableContent?(0,p.jsx)(ih,{side:s,...l,ref:t}):(0,p.jsx)(ii,{side:s,...l,ref:t})})}),ii=g.forwardRef((e,t)=>{let a=o8(il,e.__scopeTooltip),r=o5(il,e.__scopeTooltip),s=g.useRef(null),l=(0,to.useComposedRefs)(t,s),[n,o]=g.useState(null),{trigger:i,onClose:c}=a,d=s.current,{onPointerInTransitChange:u}=r,h=g.useCallback(()=>{o(null),u(!1)},[u]),f=g.useCallback((e,t)=>{let a,r=e.currentTarget,s={x:e.clientX,y:e.clientY},l=function(e,t){let a=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),s=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(a,r,s,l)){case l:return"left";case s:return"right";case a:return"top";case r:return"bottom";default:throw Error("unreachable")}}(s,r.getBoundingClientRect());o(((a=[...function(e,t,a=5){let r=[];switch(t){case"top":r.push({x:e.x-a,y:e.y+a},{x:e.x+a,y:e.y+a});break;case"bottom":r.push({x:e.x-a,y:e.y-a},{x:e.x+a,y:e.y-a});break;case"left":r.push({x:e.x+a,y:e.y-a},{x:e.x+a,y:e.y+a});break;case"right":r.push({x:e.x-a,y:e.y-a},{x:e.x-a,y:e.y+a})}return r}(s,l),...function(e){let{top:t,right:a,bottom:r,left:s}=e;return[{x:s,y:t},{x:a,y:t},{x:a,y:r},{x:s,y:r}]}(t.getBoundingClientRect())].slice()).sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:1*!!(e.y>t.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let a=0;a<e.length;a++){let r=e[a];for(;t.length>=2;){let e=t[t.length-1],a=t[t.length-2];if((e.x-a.x)*(r.y-a.y)>=(e.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();let a=[];for(let t=e.length-1;t>=0;t--){let r=e[t];for(;a.length>=2;){let e=a[a.length-1],t=a[a.length-2];if((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x))a.pop();else break}a.push(r)}return(a.pop(),1===t.length&&1===a.length&&t[0].x===a[0].x&&t[0].y===a[0].y)?t:t.concat(a)}(a))),u(!0)},[u]);return g.useEffect(()=>()=>h(),[h]),g.useEffect(()=>{if(i&&d){let e=e=>f(e,d),t=e=>f(e,i);return i.addEventListener("pointerleave",e),d.addEventListener("pointerleave",t),()=>{i.removeEventListener("pointerleave",e),d.removeEventListener("pointerleave",t)}}},[i,d,f,h]),g.useEffect(()=>{if(n){let e=e=>{let t=e.target,a={x:e.clientX,y:e.clientY},r=i?.contains(t)||d?.contains(t),s=!function(e,t){let{x:a,y:r}=e,s=!1;for(let e=0,l=t.length-1;e<t.length;l=e++){let n=t[e],o=t[l],i=n.x,c=n.y,d=o.x,u=o.y;c>r!=u>r&&a<(d-i)*(r-c)/(u-c)+i&&(s=!s)}return s}(a,n);r?h():s&&(h(),c())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[i,d,n,c,h]),(0,p.jsx)(ih,{...e,ref:l})}),[ic,id]=oJ(o4,{isInside:!1}),iu=((n=({children:e})=>(0,p.jsx)(p.Fragment,{children:e})).displayName="TooltipContent.Slottable",n.__radixId=oY,n),ih=g.forwardRef((e,t)=>{let{__scopeTooltip:a,children:r,"aria-label":s,onEscapeKeyDown:l,onPointerDownOutside:n,...o}=e,i=o8(il,a),c=oQ(a),{onClose:d}=i;return g.useEffect(()=>(document.addEventListener(o1,d),()=>document.removeEventListener(o1,d)),[d]),g.useEffect(()=>{if(i.trigger){let e=e=>{let t=e.target;t?.contains(i.trigger)&&d()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[i.trigger,d]),(0,p.jsx)(aQ.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:n,onFocusOutside:e=>e.preventDefault(),onDismiss:d,children:(0,p.jsxs)(oH,{"data-state":i.stateAttribute,...c,...o,ref:t,style:{...o.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,p.jsx)(iu,{children:r}),(0,p.jsx)(ic,{scope:a,isInside:!0,children:(0,p.jsx)(oG.Root,{id:i.contentId,role:"tooltip",children:s||r})})]})})});io.displayName=il;var im="TooltipArrow",ix=g.forwardRef((e,t)=>{let{__scopeTooltip:a,...r}=e,s=oQ(a);return id(im,a).isInside?null:(0,p.jsx)(oq,{...s,...r,ref:t})});function ip({delayDuration:e=0,...t}){return(0,p.jsx)(o3,{"data-slot":"tooltip-provider",delayDuration:e,...t})}function ig({...e}){return(0,p.jsx)(ip,{children:(0,p.jsx)(o9,{"data-slot":"tooltip",...e})})}function ib({...e}){return(0,p.jsx)(ie,{"data-slot":"tooltip-trigger",...e})}function iv({className:e,sideOffset:t=0,children:a,...r}){return(0,p.jsx)(is,{children:(0,p.jsxs)(io,{"data-slot":"tooltip-content",sideOffset:t,className:(0,tT.cn)("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",e),...r,children:[a,(0,p.jsx)(ix,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}function iy({onClick:e}){let{crystalsPerSec:t,idlePermanentBonus:a,idleProjectSlots:r}=te(aa(e=>({crystalsPerSec:e.crystalsPerSec,idlePermanentBonus:e.idlePermanentBonus??0,idleProjectSlots:e.idleProjectSlots??[null,null,null]}))),s=t+a,l=s>0,n=r.filter(e=>null!==e&&!e.completed).length,o=r.filter(e=>null!==e&&e.completed).length,i=(0,p.jsxs)("div",{className:"space-y-0.5 text-left",children:[(0,p.jsx)("div",{className:"font-semibold text-[11px]",children:"放置系统 · Idle Ops"}),(0,p.jsxs)("div",{className:"text-[10px] opacity-90",children:["基础产能:",(0,p.jsxs)("span",{className:"font-mono",children:["+",I(t),"/s"]})]}),(0,p.jsxs)("div",{className:"text-[10px] opacity-90",children:["永久加成:",(0,p.jsxs)("span",{className:"font-mono text-fuchsia-300",children:["+",I(a),"/s"]})]}),(0,p.jsxs)("div",{className:"text-[10px] opacity-90",children:["运行中工程:",(0,p.jsx)("span",{className:"font-mono",children:n})," / 3"]}),o>0&&(0,p.jsxs)("div",{className:"text-[10px] text-amber-300 font-semibold",children:["✦ ",o," 个工程待领取"]}),(0,p.jsx)("div",{className:"text-[9px] opacity-70 mt-1",children:"点击查看放置工程 →"})]});return(0,p.jsxs)(ig,{children:[(0,p.jsx)(ib,{asChild:!0,children:(0,p.jsxs)("button",{onClick:e,"aria-label":"放置系统状态","data-tut":"idle-status-badge",className:`group h-8 px-2.5 inline-flex items-center gap-1.5 rounded-md border text-[11px] font-mono transition-all ${l?"border-emerald-400/40 bg-emerald-500/10 text-emerald-200 hover:bg-emerald-500/20 hover:border-emerald-400/60":"border-white/15 bg-black/30 text-muted-foreground/80 hover:bg-black/50 hover:border-white/25"}`,children:[(0,p.jsxs)("span",{className:"relative flex h-2 w-2",children:[l&&(0,p.jsx)("span",{className:"absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-60 animate-ping"}),(0,p.jsx)("span",{className:`relative inline-flex h-2 w-2 rounded-full ${l?"bg-emerald-400":"bg-muted-foreground/40"}`})]}),(0,p.jsx)("span",{className:"leading-none",children:l?(0,p.jsxs)(p.Fragment,{children:["放置中 ",(0,p.jsxs)("span",{className:"text-emerald-300 font-bold",children:["+",I(s)]}),(0,p.jsx)("span",{className:"opacity-70",children:"/s"})]}):"休眠中"})]})}),(0,p.jsx)(iv,{side:"bottom",sideOffset:6,className:"max-w-[220px]",children:i})]})}function iw(){let e=te(aa(e=>e.idleProjectSlots??[null,null,null])),[t,a]=(0,g.useState)(()=>Date.now());(0,g.useEffect)(()=>{let e=setInterval(()=>a(Date.now()),1e3);return()=>clearInterval(e)},[]);let r=e.map((e,t)=>({slot:e,idx:t})).filter(e=>null!==e.slot);return 0===r.length?null:(0,p.jsx)("div",{className:"w-full max-w-[280px] mx-auto flex flex-col gap-1 px-2",children:r.map(({slot:e,idx:a})=>{if(!e)return null;let r=eY[e.projectId];if(!r)return null;let s=e2[r.color],l=e5[r.color],n=Math.max(0,(e.finishesAt-t)/1e3),o=Math.max(0,(t-e.startedAt)/1e3),i=e.completed?100:Math.min(100,Math.max(0,o/r.durationSec*100));return(0,p.jsxs)("div",{className:`flex items-center gap-1.5 px-2 py-1 rounded-md border ${s.border} ${s.bgSoft} text-[10px] ${e.completed?s.glow:""}`,children:[(0,p.jsx)("span",{className:"text-[11px] leading-none",children:r.icon}),(0,p.jsx)("span",{className:`${s.text} font-semibold truncate flex-shrink-0 max-w-[80px]`,children:r.name}),e.completed?(0,p.jsx)("span",{className:`${s.text} font-bold ml-auto`,children:"✓ 待领取"}):(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)("span",{className:`${s.text} font-mono tabular-nums ml-auto`,children:eZ(n)}),(0,p.jsx)("div",{className:"w-12 h-1.5 bg-black/40 rounded-full overflow-hidden flex-shrink-0",children:(0,p.jsx)("div",{className:"h-full rounded-full transition-all duration-300",style:{width:`${i}%`,backgroundColor:l,boxShadow:`0 0 6px ${l}80`}})})]})]},a)})})}ix.displayName=im;let ij=(0,tt.default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);function iN(){let e=te(aa(e=>({totalDecoded:e.totalDecoded,ascensions:e.ascensions,blueprintsLen:e.blueprints?.length??0,techCount:Object.values(e.tech??{}).filter(e=>e>0).length,fragmentsCount:Object.values(e.fragments??{}).filter(Boolean).length,achievementsCount:Object.values(e.achievements??{}).filter(Boolean).length,constellationLen:e.constellation?.length??0,contact:e.contact,crystalsPerSec:e.crystalsPerSec,crystalCap:e.crystalCap,insightMult:e.insightMult,totalExpeditions:e.totalExpeditions,bossKills:e.bossKills??0,starTidesCount:(e.starTidesEncountered??[]).length,chronicleLen:(e.chronicle??[]).length,energy:e.energy,energyMax:e.energyMax,exploration:e.attributes?.exploration??0,wisdom:e.attributes?.wisdom??0,courage:e.attributes?.courage??0,inspiration:e.attributes?.inspiration??0,pendingAttrPoints:e.pendingAttrPoints??0,idlePermanentBonus:e.idlePermanentBonus??0,idleProjectsCompleted:e.idleStats?.projectsCompleted??0,idleCrystalsFromIdle:e.idleStats?.crystalsFromIdle??0,idleHistoryLen:(e.idleProjectHistory??[]).length,idleProjectHistory:e.idleProjectHistory??[],idleProjectSlots:e.idleProjectSlots??[null,null,null]}))),[t,a]=(0,g.useState)(null);(0,g.useEffect)(()=>{try{let e=eT();a(e.length>0?e[0].score:null)}catch{a(null)}},[]);let[r,s]=(0,g.useState)(!1),l=(0,g.useMemo)(()=>e.idleProjectHistory.slice(-5).reverse(),[e.idleProjectHistory]),n=[{label:"累计解码晶体",value:`${e.totalDecoded} 颗`},{label:"飞升周目",value:`${e.ascensions}`},{label:"持有蓝图",value:`${e.blueprintsLen} / 6`},{label:"已学技术",value:`${e.techCount} / ${C.length}`},{label:"已获碎片",value:`${e.fragmentsCount} / ${$.length}`},{label:"已解锁成就",value:`${e.achievementsCount} / ${B.length}`},{label:"星图天赋",value:`${e.constellationLen} / ${H.length}`},{label:"接触进度",value:`${e.contact.toFixed(1)}%`},{label:"晶体产能",value:`${e.crystalsPerSec.toFixed(2)} /s`},{label:"仓库上限",value:`${I(e.crystalCap)}`},{label:"洞见倍率",value:`\xd7${e.insightMult.toFixed(2)}`},{label:"累计探险",value:`${e.totalExpeditions} 次`},{label:"BOSS 击破",value:`${e.bossKills} 次`},{label:"星潮亲历",value:`${e.starTidesCount} / 6`},{label:"编年史条目",value:`${e.chronicleLen} 纪元`},{label:"探险能量",value:`${Math.floor(e.energy)} / ${e.energyMax}`},{label:"信标最高分",value:null!==t?I(t):"—"},{label:"探索力",value:`${e.exploration} / 100`},{label:"智慧",value:`${e.wisdom} / 100`},{label:"勇气",value:`${e.courage} / 100`},{label:"灵感",value:`${e.inspiration} / 100`},{label:"待分配属性点",value:`${e.pendingAttrPoints}`},{label:"放置永久加成",value:`+${I(e.idlePermanentBonus)} /s`},{label:"完成放置工程",value:`${e.idleProjectsCompleted} 项`},{label:"放置产出晶体",value:I(e.idleCrystalsFromIdle)}];return(0,p.jsxs)("div",{className:"grid grid-cols-2 gap-1.5 text-xs",children:[n.map(e=>(0,p.jsxs)("div",{className:"flex items-center justify-between rounded-md bg-black/25 border border-white/5 px-2 py-1.5",children:[(0,p.jsx)("span",{className:"text-muted-foreground",children:e.label}),(0,p.jsx)("span",{className:"font-mono text-foreground",children:e.value})]},e.label)),(0,p.jsxs)("button",{type:"button",onClick:()=>s(e=>!e),"aria-expanded":r,"aria-controls":"idle-history-detail",className:"col-span-2 flex items-center justify-between rounded-md bg-black/25 border border-white/5 px-2 py-1.5 hover:bg-black/40 hover:border-fuchsia-400/20 transition text-left",children:[(0,p.jsxs)("span",{className:"text-muted-foreground flex items-center gap-1.5",children:[(0,p.jsx)("span",{children:"放置工程历史"}),e.idleHistoryLen>0&&(0,p.jsxs)("span",{className:"text-[10px] text-fuchsia-300/70 font-mono",children:["(最近 ",Math.min(5,e.idleHistoryLen)," 条可展开)"]})]}),(0,p.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,p.jsxs)("span",{className:"font-mono text-foreground",children:[e.idleHistoryLen," 条"]}),e.idleHistoryLen>0?r?(0,p.jsx)(nn,{className:"h-3 w-3 text-muted-foreground/70"}):(0,p.jsx)(ij,{className:"h-3 w-3 text-muted-foreground/70"}):null]})]}),r&&(0,p.jsx)("div",{id:"idle-history-detail",className:"col-span-2 rounded-md bg-black/30 border border-fuchsia-400/15 px-2 py-1.5",children:0===l.length?(0,p.jsx)("div",{className:"text-[10px] text-muted-foreground/50 text-center py-1.5",children:"暂无放置工程完成记录 · 前往「放置」标签派遣工程"}):(0,p.jsxs)("div",{className:"space-y-0.5",children:[l.map((e,t)=>{let a=eY[e.projectId];return(0,p.jsxs)("div",{className:`flex items-center gap-2 px-1.5 py-1 rounded text-[11px] ${0===t?"bg-fuchsia-500/5":""}`,children:[(0,p.jsx)("span",{className:"text-sm leading-none shrink-0",children:a?.icon??"•"}),(0,p.jsx)("span",{className:"text-foreground/90 truncate flex-1 min-w-0",children:a?.name??e.projectId}),(0,p.jsx)("span",{className:"text-muted-foreground/60 text-[10px] font-mono shrink-0",children:function(e){if(!e||!isFinite(e))return"—";let t=Date.now(),a=t-e;if(a<0)return"刚刚";let r=Math.floor(a/1e3);if(r<60)return"刚刚";let s=Math.floor(r/60);if(s<60)return`${s} 分钟前`;let l=Math.floor(s/60);if(l<24)return`${l} 小时前`;let n=Math.floor(l/24);if(n<7)return`${n} 天前`;let o=new Date(e),i=new Date(t),c=o.getFullYear()===i.getFullYear(),d=`${o.getMonth()+1}月${o.getDate()}日`;return c?d:`${o.getFullYear()}年${d}`}(e.finishedAt)})]},`${e.projectId}-${e.finishedAt}-${t}`)}),e.idleHistoryLen>5&&(0,p.jsxs)("div",{className:"text-[10px] text-muted-foreground/40 text-center pt-1",children:["仅展示最近 5 条 · 共 ",e.idleHistoryLen," 条历史"]})]})})]})}let ik={emerald:{titleText:"text-emerald-50",subtitleText:"text-emerald-300/80",bodyText:"text-emerald-50/90",cursor:"bg-emerald-300",cardBorder:"border-emerald-400/40",cardBg:"from-emerald-950/60 to-black/85",glow:"rgba(16,185,129,0.45)"},rose:{titleText:"text-rose-50",subtitleText:"text-rose-300/80",bodyText:"text-rose-50/90",cursor:"bg-rose-300",cardBorder:"border-rose-400/40",cardBg:"from-rose-950/60 to-black/85",glow:"rgba(244,63,94,0.45)"},amber:{titleText:"text-amber-50",subtitleText:"text-amber-300/80",bodyText:"text-amber-50/90",cursor:"bg-amber-300",cardBorder:"border-amber-400/40",cardBg:"from-amber-950/60 to-black/85",glow:"rgba(245,158,11,0.45)"},fuchsia:{titleText:"text-fuchsia-50",subtitleText:"text-fuchsia-300/80",bodyText:"text-fuchsia-50/90",cursor:"bg-fuchsia-300",cardBorder:"border-fuchsia-400/40",cardBg:"from-fuchsia-950/60 to-black/85",glow:"rgba(232,121,249,0.45)"}};function iM(){let e=te(e=>e.pendingMilestone),t=te(e=>e.dismissMilestone);return e?(0,p.jsx)(iS,{milestone:e,dismiss:t},e.id):null}function iS({milestone:e,dismiss:t}){let[a,r]=(0,g.useState)(0),s=(0,g.useRef)(!1),l=e.body.length,n=a>=l;(0,g.useEffect)(()=>{if(s.current||a>=l)return;let e=setTimeout(()=>{r(e=>Math.min(l,e+1))},30);return()=>clearTimeout(e)},[a,l]);let o=()=>{if(!n){s.current=!0,r(l);return}t()};(0,g.useEffect)(()=>{let e=e=>{if("Escape"===e.key){if(e.preventDefault(),!n){s.current=!0,r(l);return}t()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[n,l,t]);let i=ik[e.color],c=n?e.body:e.body.slice(0,a);return(0,p.jsxs)("div",{onClick:o,role:"dialog","aria-modal":"true","aria-labelledby":"narrative-milestone-title",className:"jsx-f0d448215df566e fixed inset-0 z-50 flex items-center justify-center p-3 sm:p-4 bg-black/80 backdrop-blur-sm animate-[narrative-fade-in_300ms_ease-out]",children:[(0,p.jsx)("div",{style:{boxShadow:`inset 0 0 120px ${i.glow}, inset 0 0 240px ${i.glow}`,animation:"narrative-breathe 3.5s ease-in-out infinite"},"aria-hidden":!0,className:"jsx-f0d448215df566e pointer-events-none fixed inset-0"}),(0,p.jsxs)("div",{style:{boxShadow:`0 0 60px ${i.glow}`},onClick:e=>{e.stopPropagation(),o()},className:`jsx-f0d448215df566e relative max-w-2xl w-full px-4 py-6 sm:px-8 sm:py-10 rounded-xl border ${i.cardBorder} bg-gradient-to-br ${i.cardBg} animate-[narrative-scale-in_300ms_cubic-bezier(0.16,1,0.3,1)] [scrollbar-width:thin]`,children:[(0,p.jsx)("div",{className:`jsx-f0d448215df566e text-[10px] sm:text-xs font-mono tracking-[0.3em] uppercase mb-2 ${i.subtitleText}`,children:e.subtitle}),(0,p.jsx)("h2",{id:"narrative-milestone-title",style:{textShadow:`0 0 24px ${i.glow}`},className:`jsx-f0d448215df566e text-3xl sm:text-4xl md:text-5xl font-serif font-bold mb-5 sm:mb-6 ${i.titleText}`,children:e.title}),(0,p.jsx)("div",{style:{background:`linear-gradient(90deg, transparent, ${i.glow}, transparent)`},"aria-hidden":!0,className:"jsx-f0d448215df566e h-px mb-5 sm:mb-6"}),(0,p.jsxs)("div",{className:`jsx-f0d448215df566e text-sm sm:text-base md:text-lg leading-relaxed whitespace-pre-line ${i.bodyText}`,children:[c,!n&&(0,p.jsx)("span",{style:{animation:"narrative-cursor 1s steps(2) infinite"},"aria-hidden":!0,className:`jsx-f0d448215df566e inline-block w-0.5 h-4 sm:h-5 ml-0.5 align-middle ${i.cursor}`})]}),(0,p.jsx)("div",{className:"jsx-f0d448215df566e mt-6 sm:mt-8 text-center",children:(0,p.jsx)("span",{className:"jsx-f0d448215df566e text-[10px] sm:text-xs text-white/40 animate-pulse",children:n?"点击任意处或按 Esc 继续":"点击跳过逐字显示"})})]}),(0,p.jsx)(tE.default,{id:"f0d448215df566e",children:"@keyframes narrative-fade-in{0%{opacity:0}to{opacity:1}}@keyframes narrative-scale-in{0%{opacity:.4;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes narrative-breathe{0%,to{opacity:.55}50%{opacity:1}}@keyframes narrative-cursor{0%,50%{opacity:1}51%,to{opacity:0}}"})]})}function iP(){let e=te(e=>e._tideEvents),t=te(e=>e.consumeTideEvents),{toast:a}=(0,e6.useToast)();return(0,g.useEffect)(()=>{if(0!==e.length)for(let e of t()){if(e.started){let t=L[e.started];tL("tideStart"),a({title:`${t.icon} 星潮降临:${t.name}`,description:t.desc})}if(e.ended){let t=L[e.ended];e.silenceCompensation&&e.silenceCompensation>0?(tL("techBuy"),a({title:`${t.icon} 寂静期消散`,description:`虚空回赠 ${e.silenceCompensation} 洞见。`})):(tL("tideEnd"),a({title:`${t.icon} ${t.name}结束`,description:"星潮退去,物理法则恢复。"}))}}},[e,t,a]),null}function iC(){let e=te(e=>e.activeTide),[,t]=(0,g.useState)(0);if((0,g.useEffect)(()=>{if(!e)return;let a=setInterval(()=>t(e=>e+1),500);return()=>clearInterval(a)},[e]),!e)return null;let a=L[e.type],r=Math.max(0,e.endsAt-Date.now()),s=Math.ceil(r/1e3),l=1-r/75e3;return(0,p.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,p.jsx)("div",{className:"absolute inset-0 opacity-20",style:{background:`linear-gradient(90deg, ${a.color}40 ${100*l}%, transparent ${100*l}%)`}}),(0,p.jsx)("span",{className:"relative text-xs leading-none",children:a.icon}),(0,p.jsx)("span",{className:"relative leading-none",children:a.name}),(0,p.jsxs)("span",{className:"relative font-mono leading-none opacity-80",children:[s,"s"]})]})}function iT(){let e=te(e=>e.activeTide);if(!e)return null;let t=L[e.type];return(0,p.jsxs)("div",{className:"jsx-10d58630b8785c8d fixed inset-0 pointer-events-none z-0 transition-opacity duration-1000",children:[(0,p.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,p.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,p.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,p.jsx)(tE.default,{id:"10d58630b8785c8d",children:"@keyframes tide-breathe{0%,to{opacity:.5}50%{opacity:.9}}"})]})}var i$=e.i(75830),i_="rovingFocusGroup.onEntryFocus",iR={bubbles:!1,cancelable:!0},iE="RovingFocusGroup",[iA,iI,iB]=(0,i$.createCollection)(iE),[iD,iL]=(0,al.createContextScope)(iE,[iB]),[iz,iF]=iD(iE),iO=g.forwardRef((e,t)=>(0,p.jsx)(iA.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,p.jsx)(iA.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,p.jsx)(iH,{...e,ref:t})})}));iO.displayName=iE;var iH=g.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:a,orientation:r,loop:s=!1,dir:l,currentTabStopId:n,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:i,onEntryFocus:c,preventScrollOnEntryFocus:d=!1,...u}=e,h=g.useRef(null),f=(0,to.useComposedRefs)(t,h),m=ai(l),[x,b]=(0,aZ.useControllableState)({prop:n,defaultProp:o??null,onChange:i,caller:iE}),[v,y]=g.useState(!1),w=(0,an.useCallbackRef)(c),j=iI(a),N=g.useRef(!1),[k,M]=g.useState(0);return g.useEffect(()=>{let e=h.current;if(e)return e.addEventListener(i_,w),()=>e.removeEventListener(i_,w)},[w]),(0,p.jsx)(iz,{scope:a,orientation:r,dir:m,loop:s,currentTabStopId:x,onItemFocus:g.useCallback(e=>b(e),[b]),onItemShiftTab:g.useCallback(()=>y(!0),[]),onFocusableItemAdd:g.useCallback(()=>M(e=>e+1),[]),onFocusableItemRemove:g.useCallback(()=>M(e=>e-1),[]),children:(0,p.jsx)(ar.Primitive.div,{tabIndex:v||0===k?-1:0,"data-orientation":r,...u,ref:f,style:{outline:"none",...e.style},onMouseDown:(0,ad.composeEventHandlers)(e.onMouseDown,()=>{N.current=!0}),onFocus:(0,ad.composeEventHandlers)(e.onFocus,e=>{let t=!N.current;if(e.target===e.currentTarget&&t&&!v){let t=new CustomEvent(i_,iR);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=j().filter(e=>e.focusable);iU([e.find(e=>e.active),e.find(e=>e.id===x),...e].filter(Boolean).map(e=>e.ref.current),d)}}N.current=!1}),onBlur:(0,ad.composeEventHandlers)(e.onBlur,()=>y(!1))})})}),iW="RovingFocusGroupItem",iK=g.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:a,focusable:r=!0,active:s=!1,tabStopId:l,children:n,...o}=e,i=aJ(),c=l||i,d=iF(iW,a),u=d.currentTabStopId===c,h=iI(a),{onFocusableItemAdd:f,onFocusableItemRemove:m,currentTabStopId:x}=d;return g.useEffect(()=>{if(r)return f(),()=>m()},[r,f,m]),(0,p.jsx)(iA.ItemSlot,{scope:a,id:c,focusable:r,active:s,children:(0,p.jsx)(ar.Primitive.span,{tabIndex:u?0:-1,"data-orientation":d.orientation,...o,ref:t,onMouseDown:(0,ad.composeEventHandlers)(e.onMouseDown,e=>{r?d.onItemFocus(c):e.preventDefault()}),onFocus:(0,ad.composeEventHandlers)(e.onFocus,()=>d.onItemFocus(c)),onKeyDown:(0,ad.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 r;let s=(r=e.key,"rtl"!==a?r:"ArrowLeft"===r?"ArrowRight":"ArrowRight"===r?"ArrowLeft":r);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(s))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(s)))return iq[s]}(e,d.orientation,d.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let s=h().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)s.reverse();else if("prev"===t||"next"===t){var a,r;"prev"===t&&s.reverse();let l=s.indexOf(e.currentTarget);s=d.loop?(a=s,r=l+1,a.map((e,t)=>a[(r+t)%a.length])):s.slice(l+1)}setTimeout(()=>iU(s))}}),children:"function"==typeof n?n({isCurrentTabStop:u,hasTabStop:null!=x}):n})})});iK.displayName=iW;var iq={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function iU(e,t=!1){let a=document.activeElement;for(let r of e)if(r===a||(r.focus({preventScroll:t}),document.activeElement!==a))return}var iX="Tabs",[iV,iY]=(0,al.createContextScope)(iX,[iL]),iG=iL(),[iJ,iZ]=iV(iX),iQ=g.forwardRef((e,t)=>{let{__scopeTabs:a,value:r,onValueChange:s,defaultValue:l,orientation:n="horizontal",dir:o,activationMode:i="automatic",...c}=e,d=ai(o),[u,h]=(0,aZ.useControllableState)({prop:r,onChange:s,defaultProp:l??"",caller:iX});return(0,p.jsx)(iJ,{scope:a,baseId:aJ(),value:u,onValueChange:h,orientation:n,dir:d,activationMode:i,children:(0,p.jsx)(ar.Primitive.div,{dir:d,"data-orientation":n,...c,ref:t})})});iQ.displayName=iX;var i0="TabsList",i1=g.forwardRef((e,t)=>{let{__scopeTabs:a,loop:r=!0,...s}=e,l=iZ(i0,a),n=iG(a);return(0,p.jsx)(iO,{asChild:!0,...n,orientation:l.orientation,dir:l.dir,loop:r,children:(0,p.jsx)(ar.Primitive.div,{role:"tablist","aria-orientation":l.orientation,...s,ref:t})})});i1.displayName=i0;var i2="TabsTrigger",i5=g.forwardRef((e,t)=>{let{__scopeTabs:a,value:r,disabled:s=!1,...l}=e,n=iZ(i2,a),o=iG(a),i=i6(n.baseId,r),c=i8(n.baseId,r),d=r===n.value;return(0,p.jsx)(iK,{asChild:!0,...o,focusable:!s,active:d,children:(0,p.jsx)(ar.Primitive.button,{type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:i,...l,ref:t,onMouseDown:(0,ad.composeEventHandlers)(e.onMouseDown,e=>{s||0!==e.button||!1!==e.ctrlKey?e.preventDefault():n.onValueChange(r)}),onKeyDown:(0,ad.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&n.onValueChange(r)}),onFocus:(0,ad.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==n.activationMode;d||s||!e||n.onValueChange(r)})})})});i5.displayName=i2;var i3="TabsContent",i4=g.forwardRef((e,t)=>{let{__scopeTabs:a,value:r,forceMount:s,children:l,...n}=e,o=iZ(i3,a),i=i6(o.baseId,r),c=i8(o.baseId,r),d=r===o.value,u=g.useRef(d);return g.useEffect(()=>{let e=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,p.jsx)(as.Presence,{present:s||d,children:({present:a})=>(0,p.jsx)(ar.Primitive.div,{"data-state":d?"active":"inactive","data-orientation":o.orientation,role:"tabpanel","aria-labelledby":i,hidden:!a,id:c,tabIndex:0,...n,ref:t,style:{...e.style,animationDuration:u.current?"0s":void 0},children:a&&l})})});function i6(e,t){return`${e}-trigger-${t}`}function i8(e,t){return`${e}-content-${t}`}function i9({className:e,...t}){return(0,p.jsx)(iQ,{"data-slot":"tabs",className:(0,tT.cn)("flex flex-col gap-2",e),...t})}function i7({className:e,...t}){return(0,p.jsx)(i1,{"data-slot":"tabs-list",className:(0,tT.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function ce({className:e,...t}){return(0,p.jsx)(i5,{"data-slot":"tabs-trigger",className:(0,tT.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 ct({className:e,...t}){return(0,p.jsx)(i4,{"data-slot":"tabs-content",className:(0,tT.cn)("flex-1 outline-none",e),...t})}i4.displayName=i3;let ca=(0,tt.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"}]]),cr=(0,tt.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"}]]),cs=(0,tt.default)("navigation",[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]]),cl=(0,tt.default)("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]);function cn(){let e,t,a,r,s,l,n,o;e=te(e=>e.tick),t=te(e=>e.autoDecodeTick),a=te(e=>e.tickTide),r=te(e=>e.tickIdleProjects),s=te(e=>e.checkAchievements),l=te(e=>e.init),n=(0,g.useRef)(!1),(0,g.useEffect)(()=>{let o=()=>{n.current||(l(),n.current=!0)},i=null,c=null;te.persist.hasHydrated()?o():(i=te.persist.onFinishHydration(o),c=setTimeout(o,500));let d=0,u=setInterval(()=>{let l=Date.now();e(l),t(),r(l),a(l),++d%4==0&&s()},250);return()=>{clearInterval(u),i&&i(),c&&clearTimeout(c)}},[e,t,a,r,s,l]),(0,g.useEffect)(()=>{let t=()=>{if("visible"===document.visibilityState){let t=Date.now();e(t),r(t),a(t),s()}};return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},[e,a,r,s]),o=te(e=>e.soundOn),(0,g.useEffect)(()=>{tD().setEnabled(o)},[o]);let[i,c]=(0,g.useState)(!1),[d,u]=(0,g.useState)(!1),[h,f]=(0,g.useState)(!1),[m,x]=(0,g.useState)(!1),[v,y]=(0,g.useState)(!1),[w,j]=(0,g.useState)(!1),N=te(e=>e.contact),k=te(e=>e.totalDecoded),M=te(e=>e.crystalsPerSec),S=te(e=>e.ascensions),P=te(e=>e.tech),C=te(e=>e.fragments),T=te(e=>e.achievements),_=te(e=>e.constellation??[]),R=te(e=>e.pendingPerkChoices),E=te(e=>e.crystals),A=te(e=>e.crystalCap),D=te(e=>e.activeTide),z=te(e=>e.energy),F=te(e=>!!e.activeExpedition&&!e.activeExpedition.finished),O=te(e=>e.chronicle?.length??0),H=te(e=>e.pendingAttrPoints??0),W=te(e=>e.idleProjectSlots??[null,null,null]),K=te(e=>e.createdAt),[q,U]=(0,g.useState)(!1);(0,g.useEffect)(()=>{let e=!1,t=()=>{try{let t=eM(),a=e_();e||U(null!==a.completedAt&&!a.claimed&&a.dateKey===t.dateKey)}catch{e||U(!1)}};t();let a=setInterval(t,2e3);return()=>{e=!0,clearInterval(a)}},[]),(0,g.useEffect)(()=>{j(!0)},[]);let[X,V]=(0,g.useState)("idle"),Y=(0,g.useRef)(!1),G=!!(R&&R.length>0);if((0,g.useEffect)(()=>{Y.current||(Y.current=!0,F?V("expedition"):G?V("constellation"):V("idle"))},[F,G]),!w)return(0,p.jsx)("div",{className:"min-h-screen flex items-center justify-center bg-[#050410] text-muted-foreground",children:(0,p.jsx)("div",{className:"animate-pulse",children:"唤醒回响中…"})});let J=Object.values(P).filter(e=>e>0).length,Z=Object.values(C).filter(Boolean).length,Q=Object.values(T).filter(Boolean).length,ee=N>=100,et=R&&R.length>0,ea=E>=.98*A,er=W.filter(e=>null!==e&&e.completed).length,es=W.filter(e=>null!==e&&!e.completed).length,el=(Date.now()-(K??Date.now()))/1e3,en=eJ({ascensions:S,crystalsPerSec:M}).length,eo="点击中央晶体发起脉冲,累积记忆晶体";if(0===k&&E>=5?eo="右侧「待解码晶体」点击一颗晶体,开始解码":k>0&&0===J?eo="用洞见解锁技术树,提升产能":k>0&&Z<$.length&&(eo=`继续解码,拼凑记忆图谱(${Z}/${$.length})`),z>=1&&k>=3&&(eo="「探险」标签可深入遗迹,获取丰厚奖励"),S>=1&&_.length>0&&(eo=`星图天赋已觉醒 ${_.length}/18,继续飞升获取更多`),ea&&(eo="⚠ 仓库已满,产能浪费中!请解码晶体或升级仓库"),et&&(eo="✦ 星图觉醒!点击顶部「星图」按钮选择一道天赋"),D){let e=L[D.type];eo=`${e.icon} 星潮「${e.name}」进行中 \xb7 ${e.desc}`}return ee&&(eo="✦ 接触进度已满,可发起飞升进入新周目"),er>0?eo=`✦ 放置工程已完成 ${er} 项,请前往「放置」标签领取奖励`:0===es&&en>0&&el>60&&(eo="「放置」标签可派遣工程项目,离线自动产出"),(0,p.jsxs)("div",{className:"relative min-h-screen flex flex-col bg-[#050410] text-foreground overflow-x-hidden",children:[(0,p.jsx)(b,{className:"fixed inset-0 w-full h-full -z-10"}),(0,p.jsx)(iT,{}),(0,p.jsxs)("header",{className:"sticky top-0 z-30 px-3 sm:px-5 pt-3 pb-2",children:[(0,p.jsxs)("div",{className:"flex items-center gap-3 mb-2.5",children:[(0,p.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,p.jsxs)("div",{className:"relative h-9 w-9",children:[(0,p.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,p.jsx)("div",{className:"absolute inset-1 rounded-full bg-[#050410] flex items-center justify-center",children:(0,p.jsx)(tY,{className:"h-4 w-4 text-fuchsia-300"})})]}),(0,p.jsxs)("div",{className:"leading-tight",children:[(0,p.jsx)("h1",{className:"text-base sm:text-lg font-bold text-gradient",children:"回响星核"}),(0,p.jsx)("p",{className:"text-[9px] sm:text-[10px] text-muted-foreground/70 -mt-0.5 tracking-wider",children:"ECHO NEXUS · v0.16"})]})]}),(0,p.jsxs)("div",{className:"ml-auto flex items-center gap-1.5",children:[(0,p.jsx)(iC,{}),(0,p.jsx)(iy,{onClick:()=>V("idle")}),(0,p.jsxs)(tX,{size:"sm",variant:"outline",onClick:()=>y(!0),className:"border-amber-400/50 text-amber-200 hover:bg-amber-500/10 h-8 px-2.5","aria-label":"深空巡航",title:"深空巡航 · 实时玩法",children:[(0,p.jsx)(cs,{className:"h-3.5 w-3.5 mr-1"}),"巡航"]}),(0,p.jsxs)(tX,{size:"icon",variant:"ghost",onClick:()=>x(!0),className:"h-8 w-8 relative group","aria-label":"编年史",title:"回响编年史",children:[(0,p.jsx)(t6,{className:"h-4 w-4 group-hover:text-fuchsia-300 transition-colors"}),O>0&&(0,p.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:O})]}),et&&(0,p.jsxs)(tX,{size:"sm",variant:"outline",onClick:()=>f(!0),className:"border-fuchsia-400/60 text-fuchsia-200 hover:bg-fuchsia-500/15 h-8 px-2.5 animate-pulse",children:[(0,p.jsx)(sP,{className:"h-3.5 w-3.5 mr-1"}),"觉醒"]}),ee&&(0,p.jsxs)(tX,{size:"sm",variant:"outline",onClick:()=>c(!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,p.jsx)(tl,{className:"h-3.5 w-3.5 mr-1"}),"飞升"]}),(0,p.jsx)(tX,{size:"icon",variant:"ghost",onClick:()=>u(!0),className:"h-8 w-8","aria-label":"设置",children:(0,p.jsx)(ca,{className:"h-4 w-4"})})]})]}),(0,p.jsx)(t_,{onPrestige:()=>c(!0)})]}),(0,p.jsx)("main",{className:"flex-1 px-3 sm:px-5 pb-3 min-h-0",children:(0,p.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-[1fr_minmax(360px,420px)] gap-3 h-full",children:[(0,p.jsxs)("section",{className:"glass rounded-2xl p-4 sm:p-6 flex flex-col items-center justify-center min-h-[340px] sm:min-h-[420px] relative overflow-hidden",children:[(0,p.jsx)("div",{className:"pointer-events-none absolute -top-20 -left-20 h-60 w-60 rounded-full bg-emerald-500/10 blur-3xl"}),(0,p.jsx)("div",{className:"pointer-events-none absolute -bottom-20 -right-20 h-60 w-60 rounded-full bg-fuchsia-500/10 blur-3xl"}),(0,p.jsx)("div",{"data-tut":"crystal-orb",className:"contents",children:(0,p.jsx)(tK,{})}),(0,p.jsx)(iw,{})]}),(0,p.jsxs)("section",{className:"flex flex-col gap-3 min-h-0",children:[(0,p.jsx)("div",{"data-tut":"decode-panel",className:"glass rounded-2xl p-4 flex-1 min-h-[300px] sm:min-h-[360px] max-h-[560px]",children:(0,p.jsx)(t0,{})}),(0,p.jsx)("div",{className:"glass rounded-2xl p-3 min-h-[280px] sm:min-h-[320px] max-h-[440px] flex flex-col",children:(0,p.jsxs)(i9,{value:X,onValueChange:V,className:"h-full flex flex-col",children:[(0,p.jsxs)(i7,{className:"grid grid-cols-9 h-9 bg-black/30 gap-0.5 p-1",children:[(0,p.jsxs)(ce,{value:"idle","data-tut":"tab-idle",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,p.jsx)(ll,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"放置"}),er>0&&(0,p.jsx)("span",{className:"absolute -top-0.5 -right-0.5 min-w-[14px] h-[14px] px-1 rounded-full bg-emerald-500 text-[9px] font-mono font-bold text-white flex items-center justify-center border border-emerald-300/50 animate-pulse",children:er})]}),(0,p.jsxs)(ce,{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,p.jsx)(t4,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"探险"}),z>=1&&!F&&(0,p.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"}),F&&(0,p.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,p.jsxs)(ce,{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,p.jsx)(ln,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"技术"})]}),(0,p.jsxs)(ce,{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,p.jsx)(sP,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"星图"}),et&&(0,p.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,p.jsxs)(ce,{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,p.jsx)(t6,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"图谱"})]}),(0,p.jsxs)(ce,{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,p.jsx)(s7,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"成就"}),Q<B.length&&(0,p.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,p.jsxs)(ce,{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,p.jsx)(lh,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"信标"}),q&&(0,p.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,p.jsxs)(ce,{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,p.jsx)(cr,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"统计"})]}),(0,p.jsxs)(ce,{value:"attributes",className:"text-[11px] gap-1 relative px-0.5 flex-col h-7 data-[state=active]:bg-gradient-to-br data-[state=active]:from-emerald-500/15 data-[state=active]:via-fuchsia-500/15 data-[state=active]:to-rose-500/15 data-[state=active]:shadow-[0_0_12px_rgba(232,121,249,0.3)] transition-all",children:[(0,p.jsx)(cl,{className:"h-3.5 w-3.5"}),(0,p.jsx)("span",{className:"leading-none",children:"角色"}),H>0&&(0,p.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,p.jsx)(ct,{value:"idle",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(nf,{})}),(0,p.jsx)(ct,{value:"expedition",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(s9,{})}),(0,p.jsx)(ct,{value:"tech",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(ae,{})}),(0,p.jsx)(ct,{value:"constellation",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(la,{})}),(0,p.jsx)(ct,{value:"codex",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(aV,{})}),(0,p.jsx)(ct,{value:"ach",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(le,{})}),(0,p.jsx)(ct,{value:"beacon",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(lv,{})}),(0,p.jsx)(ct,{value:"stats",className:"flex-1 mt-2 min-h-0",children:(0,p.jsx)(iN,{})}),(0,p.jsx)(ct,{value:"attributes",className:"flex-1 mt-2 min-h-0 data-[state=active]:flex data-[state=active]:flex-col",children:(0,p.jsx)(nc,{})})]})})]})]})}),(0,p.jsx)("footer",{className:"sticky bottom-0 z-20 mt-auto px-3 sm:px-5 pb-2 pt-1",children:(0,p.jsxs)("div",{className:`glass rounded-xl px-3 py-2 flex items-center gap-2 text-xs ${ea?"border-amber-400/40 animate-pulse":""} ${D?"border-white/20":""}`,style:D?{boxShadow:`inset 0 0 16px ${L[D.type].glow}`}:void 0,children:[(0,p.jsx)("span",{className:ea?"text-amber-400":D?"":"text-fuchsia-300",style:D?{color:L[D.type].color}:void 0,children:"▶"}),(0,p.jsx)("span",{className:`flex-1 truncate ${ea?"text-amber-200":"text-muted-foreground"}`,children:eo}),(0,p.jsx)("span",{className:"hidden sm:inline text-muted-foreground/60",children:"|"}),(0,p.jsxs)("span",{className:"hidden sm:inline text-muted-foreground/70",children:["产能 ",I(M),"/s"]}),(0,p.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,p.jsx)(sU,{className:"h-3.5 w-3.5"})})]})}),(0,p.jsx)(sC,{open:i,onOpenChange:c}),(0,p.jsx)(lo,{open:m,onOpenChange:x}),(0,p.jsx)(ls,{open:h,onOpenChange:f}),(0,p.jsx)(sZ,{open:d,onOpenChange:u}),(0,p.jsx)(lt,{}),(0,p.jsx)(iP,{}),(0,p.jsx)(lw,{}),(0,p.jsx)(lk,{}),v&&(0,p.jsx)(nr,{onClose:()=>y(!1)}),(0,p.jsx)(iM,{})]})}e.s(["default",()=>cn],52683)}]); |