Files
echo-nexus/_next/static/chunks/efcc875da619c164.js
T

10 lines
434 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
(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)}]);