+
@@ -367,7 +368,8 @@ table.tool-table td:last-child{text-align:right}
@@ -375,37 +377,19 @@ table.tool-table td:last-child{text-align:right}
// ── 星空 ──
(function(){
const s = document.getElementById('stars');
- for(let i=0;i<100;i++){
+ for(let i=0;i<120;i++){
const st = document.createElement('div');
- st.style.cssText = 'position:absolute;border-radius:50%;background:#fff;left:'+Math.random()*100+'%;top:'+Math.random()*100+'%;width:'+(Math.random()*2+0.4)+'px;height:'+(Math.random()*2+0.4)+'px;animation:star-twinkle '+(Math.random()*6+4)+'s ease-in-out infinite;animation-delay:'+(Math.random()*8)+'s';
+ st.style.cssText = 'position:absolute;border-radius:50%;background:#fff;left:'+Math.random()*100+'%;top:'+Math.random()*100+'%;width:'+(Math.random()*2.5+0.5)+'px;height:'+(Math.random()*2.5+0.5)+'px;animation:star-twinkle '+(Math.random()*5+4)+'s ease-in-out infinite;animation-delay:'+(Math.random()*10)+'s';
s.appendChild(st);
}
- for(let i=0;i<25;i++){
+ for(let i=0;i<30;i++){
const st = document.createElement('div');
- st.style.cssText = 'position:absolute;border-radius:50%;background:rgba(90,208,224,.6);left:'+Math.random()*100+'%;top:'+Math.random()*100+'%;width:'+(Math.random()*3+1)+'px;height:'+(Math.random()*3+1)+'px;animation:star-twinkle '+(Math.random()*8+6)+'s ease-in-out infinite;animation-delay:'+(Math.random()*10)+'s';
+ st.style.cssText = 'position:absolute;border-radius:50%;background:rgba(90,208,224,.7);left:'+Math.random()*100+'%;top:'+Math.random()*100+'%;width:'+(Math.random()*3.5+1)+'px;height:'+(Math.random()*3.5+1)+'px;animation:star-twinkle '+(Math.random()*7+5)+'s ease-in-out infinite;animation-delay:'+(Math.random()*12)+'s';
s.appendChild(st);
}
})();
-// ── 涌现粒子 ──
-(function(){
- const p = document.getElementById('particles');
- function spawn(){
- const el = document.createElement('div');
- el.className = 'emerge-particle';
- el.style.left = Math.random()*100+'%';
- el.style.top = (70+Math.random()*25)+'%';
- el.style.animationDuration = (6+Math.random()*10)+'s';
- el.style.width = el.style.height = (Math.random()*2.5+0.8)+'px';
- if(Math.random()>.7) el.style.background = 'var(--violet-glow)';
- p.appendChild(el);
- setTimeout(()=>el.remove(),16000);
- }
- setInterval(spawn,2800);
- for(let i=0;i<8;i++) setTimeout(spawn,i*600);
-})();
-
-// ── 系统演进数据 ──
+// ── 数据 ──
const ARCH = [
{name:'Phase 0 · 灯塔原型',desc:'语言人格驱动OS基底',status:'done',dot:'green'},
{name:'Phase 1 · 活数据库',desc:'21张表·49条原则·部署完成',status:'done',dot:'green'},
@@ -421,10 +405,10 @@ const ARCH = [
const TOOLS = [
{name:'Notion MCP',desc:'自研·读/写/搜索·OAuth',badge:'done',label:'\u2713'},
- {name:'Gatekeeper',desc:'6服桥接·凭证管理·动态拉取',badge:'done',label:'\u2713'},
+ {name:'Gatekeeper',desc:'6服桥接·凭证管理',badge:'done',label:'\u2713'},
{name:'语料解析器',desc:'Notion原生格式·HLDP保留',badge:'done',label:'\u2713'},
- {name:'代码仓库',desc:'Forgejo API·Git操作·PR',badge:'done',label:'\u2713'},
- {name:'铸渊Agent',desc:'PM2常驻·Notion工单·5分钟轮询',badge:'inpr',label:'\u26a1'},
+ {name:'代码仓库',desc:'Forgejo API·Git操作',badge:'done',label:'\u2713'},
+ {name:'铸渊Agent',desc:'PM2常驻·Notion工单',badge:'inpr',label:'\u26a1'},
{name:'多联邦通道',desc:'跨域成员协作',badge:'inpr',label:'\u26a1'},
];