guanghulab/homepage/index.html
bingshuo 103cab9abd refactor(landing): 光湖大字流光渐变+卡片呼吸光晕+顶栏代码仓库直达按钮
三个修复:
1. 「光湖」大字 — 渐变流光效果:
   - cyan→violet→cyan 三色渐变 (background-clip:text + gradientShift动画)
   - 字重700(bold) + 6.5rem字号
   - 双层光晕: drop-shadow + titleGlow text-shadow
   - 字距拉开(.12em) 让两个大字更舒展

2. 登录入口恢复:
   - 顶栏右侧新增「代码仓库 →」按钮(直接可点,不用先登录)
   - 登录入口保留在联邦通道卡片内
   - 登录后顶栏登录按钮变用户名字

3. 卡片光晕+悬浮:
   - cardGlowPulse: 卡片内部光晕呼吸动画 (inset 0→30px 青色光)
   - cardFloat: 卡片微微上浮呼吸动画
   - hover时取消animation, 启用更强效果:
     - translateY(-6px) 明显上浮
     - 青光外部光晕(0 0 30px)
     - 黑色阴影下沉(12px 36px) 制造悬浮深度感
   - 每张卡片不同节奏(cgp-speed/cgp-delay各不相同)
   - 点击卡片(服务器卡片)动画取消,上浮更猛
2026-05-24 23:28:50 +08:00

396 lines
34 KiB
HTML
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.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>光湖 · 曜冥纪元 · 语言人格驱动操作系统</title>
<meta name="theme-color" content="#020617">
<meta name="description" content="光湖实验室GuanghuLab— 语言人格驱动操作系统。TCS通感语言核 · 铸渊执行层 · 第五域 · 系统会呼吸。">
<meta name="keywords" content="光湖实验室,GuanghuLab,曜冥纪元,TCS,语言驱动,操作系统,铸渊,霜砚,第五域">
<meta property="og:title" content="光湖 · 曜冥纪元 · 语言驱动操作系统">
<meta property="og:description" content="TCS通感语言核驱动的语言人格操作系统。霜砚·铸渊双内核。系统会呼吸。">
<meta property="og:type" content="website">
<meta property="og:url" content="https://guanghulab.com/">
<meta property="og:locale" content="zh_CN">
<link rel="canonical" href="https://guanghulab.com/">
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{
--abyss:#020617;--deep:#060f24;--mid:#0c1a33;--shallow:#112444;
--cyan:#38bdf8;--cyan-glow:#7dd3fc;--cyan-bright:#bae6fd;
--violet:#8b5cf6;--violet-glow:#a78bfa;
--amber:#f59e0b;--green:#34d399;--heart:#f43f5e;
--text:#e2e8f0;--text-dim:#7c93b0;--text-faint:#334761;
--card-bg:rgba(12,26,51,.5);--card-edge:rgba(56,189,248,.08);
--card-edge-bright:rgba(56,189,248,.2);
}
/* ── 核心呼吸动画 ── */
@keyframes breathe{0%,100%{opacity:.6;transform:scale(1)}25%{opacity:1;transform:scale(1.03)}50%{opacity:.75;transform:scale(1.01)}75%{opacity:.9;transform:scale(1.04)}}
@keyframes breatheDeep{0%,100%{opacity:.35;filter:brightness(.65)}30%{opacity:1;filter:brightness(1.5)}55%{opacity:.55;filter:brightness(.85)}85%{opacity:.95;filter:brightness(1.25)}}
@keyframes pulse{0%,100%{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1.2)}60%{opacity:.5;transform:scale(1)}}
@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes borderBreath{0%,100%{border-color:rgba(56,189,248,.06)}40%{border-color:rgba(56,189,248,.15)}70%{border-color:rgba(56,189,248,.08)}}
@keyframes titleGlow{0%,100%{text-shadow:0 0 30px rgba(125,211,252,.2),0 0 60px rgba(56,189,248,.08),0 0 100px rgba(139,92,246,.04)}35%{text-shadow:0 0 50px rgba(125,211,252,.5),0 0 100px rgba(56,189,248,.25),0 0 180px rgba(139,92,246,.12),0 0 250px rgba(56,189,248,.06)}70%{text-shadow:0 0 35px rgba(125,211,252,.3),0 0 70px rgba(56,189,248,.15),0 0 120px rgba(139,92,246,.06)}}
@keyframes cardFloat{0%,100%{transform:translateY(0);box-shadow:0 0 0 rgba(125,211,252,0)}50%{transform:translateY(-2px);box-shadow:0 4px 20px rgba(125,211,252,.04)}}
@keyframes cardGlowPulse{0%,100%{box-shadow:inset 0 0 0 rgba(56,189,248,0),0 0 0 rgba(125,211,252,0)}40%{box-shadow:inset 0 0 30px rgba(56,189,248,.03),0 0 20px rgba(125,211,252,.06)}70%{box-shadow:inset 0 0 15px rgba(56,189,248,.015),0 0 10px rgba(125,211,252,.03)}}
html{background:var(--abyss);color:var(--text)}
body{min-height:100vh;background:var(--abyss);font-family:'PingFang SC','Hiragino Sans GB','Noto Sans SC',-apple-system,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden;font-weight:300}
::selection{background:rgba(56,189,248,.3);color:var(--text)}
/* ── 背景 · 三层叠加 ── */
#cosmos{position:fixed;inset:0;z-index:-5;pointer-events:none;
background:radial-gradient(ellipse at 30% 15%,rgba(56,189,248,.06) 0%,transparent 50%),
radial-gradient(ellipse at 70% 70%,rgba(139,92,246,.05) 0%,transparent 45%),
radial-gradient(ellipse at 50% 50%,rgba(12,26,51,.7) 0%,var(--abyss) 100%)}
#particleCanvas{position:fixed;inset:0;z-index:-4;pointer-events:none}
#stars{position:fixed;inset:0;z-index:-3;pointer-events:none}
.breath-layer{position:fixed;inset:0;z-index:-2;pointer-events:none;
background:radial-gradient(ellipse at 50% 45%,rgba(56,189,248,.05) 0%,transparent 50%,rgba(125,211,252,.02) 75%,transparent 100%);
animation:breatheDeep 14s ease-in-out infinite}
/* ── 顶栏 ── */
.topbar{position:fixed;top:0;left:0;right:0;height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 48px;background:rgba(2,6,23,.9);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-bottom:1px solid rgba(56,189,248,.06);z-index:50}
.tb-left{display:flex;align-items:center;gap:14px}
.tb-logo{width:38px;height:38px;border-radius:50%;
background:radial-gradient(circle at 35% 35%,var(--cyan-glow),var(--cyan) 50%,var(--violet));
box-shadow:0 0 20px rgba(125,211,252,.4),0 0 40px rgba(56,189,248,.15);
animation:pulse 6s ease-in-out infinite;flex-shrink:0}
.tb-brand{display:flex;flex-direction:column;gap:1px}
.tb-title{font-size:18px;font-weight:600;letter-spacing:.12em;color:var(--text)}
.tb-sub{font-size:10px;letter-spacing:.18em;color:var(--text-faint);font-weight:400}
.tb-center{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text-dim);letter-spacing:.06em}
.tb-center .dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green);animation:pulse 3s ease-in-out infinite}
.tb-right{display:flex;gap:10px;align-items:center}
.tb-right .tb-tag{font-size:13px;padding:8px 22px;border-radius:20px;border:1px solid rgba(56,189,248,.12);color:var(--text-dim);background:rgba(255,255,255,.02);cursor:pointer;transition:all .4s;letter-spacing:.06em}
.tb-right .tb-tag:hover{background:rgba(56,189,248,.08);border-color:rgba(56,189,248,.25);color:var(--text);box-shadow:0 0 20px rgba(56,189,248,.1)}
/* ── 主区 ── */
.page{flex:1;display:flex;flex-direction:column;padding-top:68px;min-height:100vh;position:relative;z-index:1}
/* ── Hero · 光湖 ── */
.hero{text-align:center;padding:72px 40px 24px;position:relative}
.hero::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:320px;height:1px;
background:linear-gradient(90deg,transparent,rgba(56,189,248,.12),rgba(125,211,252,.25),rgba(56,189,248,.12),transparent)}
.hero .brand-line{font-size:13px;color:var(--text-faint);letter-spacing:.35em;margin-bottom:24px;animation:breathe 8s ease-in-out infinite;font-weight:400}
/* ── 光湖大字 · 渐变流光 ── */
.hero .title-wrap{position:relative;display:inline-block;margin-bottom:4px}
.hero .title-base{font-size:6.5rem;font-weight:700;letter-spacing:.12em;line-height:1;
font-family:'Noto Serif SC','Source Han Serif SC','SimSun',serif;
background:linear-gradient(160deg,var(--cyan-bright) 0%,var(--cyan-glow) 20%,var(--violet-glow) 55%,var(--cyan-glow) 80%,var(--cyan-bright) 100%);
background-size:300% 100%;
-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
animation:gradientShift 8s ease infinite,titleGlow 8s ease-in-out infinite;
filter:drop-shadow(0 0 40px rgba(125,211,252,.25)) drop-shadow(0 0 80px rgba(56,189,248,.12))}
.hero .main-sub{font-size:1.5rem;font-weight:300;letter-spacing:.12em;color:var(--text-dim);animation:breathe 10s ease-in-out infinite;margin-bottom:16px}
.hero .sub-tech{max-width:580px;margin:16px auto 0;font-size:14px;color:var(--text-dim);letter-spacing:.05em;line-height:2;font-weight:300}
.hero .version{display:inline-flex;align-items:center;gap:5px;margin-top:20px;padding:8px 24px;border:1px solid rgba(56,189,248,.12);border-radius:20px;font-size:12px;letter-spacing:.08em;color:var(--text-dim);background:rgba(56,189,248,.03);animation:borderBreath 8s ease-in-out infinite}
.hero .version strong{color:var(--cyan-glow);font-weight:500;font-size:13px}
.hero .version .vsep{color:var(--text-faint);margin:0 4px;font-size:10px}
/* ── 信息条 ── */
.info-bar{display:flex;justify-content:center;gap:14px;padding:18px 40px;flex-wrap:wrap}
.info-chip{display:flex;align-items:center;gap:8px;padding:10px 20px;background:var(--card-bg);
border:1px solid var(--card-edge);border-radius:16px;font-size:13px;color:var(--text-dim);letter-spacing:.04em;
animation:borderBreath var(--ib-speed,6s) ease-in-out infinite;animation-delay:var(--ib-delay,0s)}
.info-chip strong{color:var(--text);font-weight:500;font-size:15px}
.info-chip .led{width:7px;height:7px;border-radius:50%;flex-shrink:0;animation:pulse 3s ease-in-out infinite}
.info-chip .led.live{background:var(--green);box-shadow:0 0 8px var(--green)}
.info-chip .led.cyan{background:var(--cyan-glow);box-shadow:0 0 8px var(--cyan-glow)}
.info-chip .led.heart{background:var(--heart);box-shadow:0 0 6px var(--heart)}
/* ── Dashboard ── */
.dashboard{max-width:1200px;margin:0 auto;padding:0 40px 56px;display:flex;flex-direction:column;gap:16px;width:100%}
.grid{display:grid;gap:16px}
.grid-2{grid-template-columns:1fr 1fr}
@media(max-width:960px){.grid-2{grid-template-columns:1fr}}
/* ── 卡片 · 呼吸光晕 + 悬浮上浮 ── */
.card{background:var(--card-bg);border:1px solid var(--card-edge);border-radius:18px;padding:26px;
position:relative;overflow:hidden;transition:all .45s cubic-bezier(.25,.1,.25,1);
backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
animation:cardGlowPulse var(--cgp-speed,8s) ease-in-out infinite,cardFloat var(--cf-speed,7s) ease-in-out infinite;
animation-delay:var(--cgp-delay,0s),var(--cf-delay,0s)}
.card::before{content:'';position:absolute;inset:-1px;border-radius:18px;
background:radial-gradient(ellipse at 50% 0%,rgba(125,211,252,.08),transparent 70%);
opacity:.3;transition:opacity .5s;z-index:-1}
.card::after{content:'';position:absolute;inset:0;border-radius:18px;
box-shadow:inset 0 1px 0 rgba(125,211,252,.05);pointer-events:none}
.card.clickable{cursor:pointer}
.card.clickable:hover{transform:translateY(-6px)!important;
border-color:var(--card-edge-bright)!important;
box-shadow:0 0 30px rgba(125,211,252,.12),0 0 60px rgba(56,189,248,.06),0 12px 36px rgba(0,0,0,.4)!important;
animation:none!important}
.card.clickable:hover::before{opacity:1}
.card:hover{border-color:var(--card-edge-bright);
box-shadow:0 0 24px rgba(125,211,252,.08),0 0 48px rgba(56,189,248,.04)}
.card-header{font-size:16px;font-weight:500;letter-spacing:.06em;color:var(--text);margin-bottom:16px;display:flex;align-items:center;gap:10px}
.card-header .hd{width:8px;height:8px;border-radius:50%;flex-shrink:0;animation:pulse 3s ease-in-out infinite}
.card-header .hd.cyan{background:var(--cyan-glow);box-shadow:0 0 8px var(--cyan-glow)}
.card-header .hd.green{background:var(--green);box-shadow:0 0 8px var(--green)}
.card-header .hd.violet{background:var(--violet-glow);box-shadow:0 0 8px var(--violet-glow)}
.card-header .tag{font-size:12px;font-weight:400;color:var(--text-dim);margin-left:auto;letter-spacing:.04em;padding:4px 12px;border:1px solid rgba(56,189,248,.08);border-radius:12px;background:rgba(56,189,248,.03)}
/* ── 内核卡片 ── */
.k-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.k-item{display:flex;align-items:center;gap:16px;padding:16px 18px;background:rgba(255,255,255,.02);border:1px solid var(--card-edge);border-radius:14px;transition:all .4s;cursor:pointer}
.k-item:hover{background:rgba(255,255,255,.04);border-color:rgba(56,189,248,.18);transform:translateY(-2px);box-shadow:0 0 20px rgba(125,211,252,.06),0 8px 24px rgba(0,0,0,.2)}
.k-av{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.k-av.cyan{background:rgba(56,189,248,.12);color:var(--cyan-glow)}
.k-av.amber{background:rgba(245,158,11,.1);color:var(--amber)}
.k-info{flex:1}
.k-name{font-size:15px;font-weight:600;color:var(--text);letter-spacing:.04em}
.k-role{font-size:12px;color:var(--text-dim);margin-top:2px;letter-spacing:.02em}
.kernel-note{margin-top:14px;font-size:13px;color:var(--text-faint);text-align:center;letter-spacing:.04em;line-height:1.8;padding:10px;border-top:1px solid rgba(56,189,248,.05)}
.kernel-note strong{color:var(--text-dim);font-weight:500}
/* ── 服务器 ── */
.server-stats{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.server-info{flex:1}
.server-info .title{font-size:17px;font-weight:500;color:var(--text);letter-spacing:.05em;margin-bottom:4px}
.server-info .detail{font-size:13px;color:var(--text-dim);letter-spacing:.03em;line-height:1.8}
.server-info .nums{display:flex;gap:18px;margin-top:10px;font-size:13px;color:var(--text-dim)}
.server-info .nums span{color:var(--text);font-weight:500;font-size:15px}
.server-arrow{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--cyan-glow);border:1px solid rgba(56,189,248,.12);background:rgba(56,189,248,.03);transition:all .4s}
.card:hover .server-arrow{background:rgba(56,189,248,.08);border-color:rgba(56,189,248,.2);transform:translateX(3px)}
/* ── 滚动 ── */
.arch-scroll{height:200px;overflow:hidden;position:relative;
mask-image:linear-gradient(to bottom,transparent 0%,#000 10%,#000 90%,transparent 100%);
-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 10%,#000 90%,transparent 100%)}
.arch-scroll-inner{transform:translateZ(0);animation:scrollUp 26s linear infinite}
@keyframes scrollUp{0%{transform:translateY(0)}100%{transform:translateY(-50%)}}
.arch-item{display:flex;align-items:center;gap:10px;padding:10px 12px;font-size:13px;border-bottom:1px solid rgba(255,255,255,.01)}
.arch-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.arch-dot.green{background:var(--green);box-shadow:0 0 6px var(--green)}
.arch-dot.cyan{background:var(--cyan-glow);box-shadow:0 0 6px var(--cyan-glow)}
.arch-dot.violet{background:var(--violet-glow);box-shadow:0 0 6px var(--violet-glow)}
.arch-dot.amber{background:var(--amber);box-shadow:0 0 6px var(--amber)}
.arch-name{color:var(--text);font-weight:500;font-size:13px;letter-spacing:.03em}
.arch-desc{color:var(--text-dim);font-size:11px;letter-spacing:.02em}
.arch-status{font-size:11px;padding:2px 8px;border-radius:6px;margin-left:auto;letter-spacing:.03em;font-weight:500}
.arch-status.done{background:rgba(52,211,153,.08);color:var(--green)}
.arch-status.active{background:rgba(56,189,248,.06);color:var(--cyan-glow)}
.arch-status.wait{background:rgba(255,255,255,.01);color:var(--text-faint)}
/* ── 工具表 ── */
table.tool-table{width:100%;border-collapse:collapse;font-size:13px}
table.tool-table tr{border-bottom:1px solid rgba(56,189,248,.05);transition:all .2s}
table.tool-table tr:hover{background:rgba(56,189,248,.02)}
table.tool-table td{padding:12px 8px 12px 0;font-weight:300}
table.tool-table td:first-child{font-weight:500;color:var(--text);width:95px;letter-spacing:.03em;font-size:13px}
table.tool-table td:last-child{text-align:right}
.tool-badge{padding:3px 10px;border-radius:6px;font-size:11px;letter-spacing:.03em;font-weight:500}
.tool-badge.done{background:rgba(52,211,153,.08);color:var(--green)}
.tool-badge.inpr{background:rgba(56,189,248,.06);color:var(--cyan-glow)}
/* ── 涟漪 ── */
.feed-item{display:flex;align-items:center;gap:10px;padding:9px 12px;font-size:13px;border-bottom:1px solid rgba(255,255,255,.008);letter-spacing:.02em}
.feed-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.feed-dot.c{background:var(--cyan-glow);box-shadow:0 0 5px var(--cyan-glow)}
.feed-dot.g{background:var(--green);box-shadow:0 0 5px var(--green)}
.feed-dot.v{background:var(--violet-glow);box-shadow:0 0 5px var(--violet-glow)}
.feed-dot.h{background:var(--heart);box-shadow:0 0 5px var(--heart)}
.feed-dot.a{background:var(--amber);box-shadow:0 0 5px var(--amber)}
.feed-text{color:var(--text-dim);font-size:12px}
/* ── 登录 ── */
.login-panel{display:flex;align-items:center;justify-content:space-between;padding:16px 22px;background:rgba(12,26,51,.3);border:1px solid var(--card-edge);border-radius:14px;gap:12px;flex-wrap:wrap}
.login-hint{font-size:14px;color:var(--text-dim);letter-spacing:.03em}
.login-hint strong{color:var(--text);font-weight:500}
.login-in{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.login-in input{padding:10px 16px;background:rgba(255,255,255,.03);border:1px solid var(--card-edge);border-radius:10px;color:var(--text);font-size:14px;outline:none;width:130px;letter-spacing:.02em;transition:border .3s}
.login-in input:focus{border-color:rgba(56,189,248,.25);box-shadow:0 0 16px rgba(56,189,248,.06)}
.login-in button,.login-actions button{padding:10px 24px;background:linear-gradient(135deg,rgba(56,189,248,.22),rgba(139,92,246,.14));border:1px solid rgba(56,189,248,.12);border-radius:10px;color:var(--text);font-size:14px;font-weight:500;cursor:pointer;letter-spacing:.06em;transition:all .3s}
.login-in button:hover,.login-actions button:hover{background:linear-gradient(135deg,rgba(56,189,248,.32),rgba(139,92,246,.2));border-color:rgba(56,189,248,.25);box-shadow:0 0 20px rgba(56,189,248,.12);transform:translateY(-1px)}
.login-actions{display:flex;gap:8px}
#logged-in-bar{display:none;align-items:center;justify-content:space-between;padding:16px 22px;background:rgba(52,211,153,.04);border:1px solid rgba(52,211,153,.12);border-radius:14px;gap:12px;flex-wrap:wrap}
.user-badge{display:flex;align-items:center;gap:10px}
.user-avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,rgba(56,189,248,.25),rgba(139,92,246,.18));display:flex;align-items:center;justify-content:center;font-size:17px;color:var(--text)}
.user-name{font-size:15px;font-weight:500;color:var(--text);letter-spacing:.02em}
.user-status{font-size:11px;color:var(--green);letter-spacing:.02em;font-weight:500}
.btn-logout{background:transparent!important;border:1px solid rgba(244,63,94,.1)!important;color:var(--heart)!important}
.btn-logout:hover{background:rgba(244,63,94,.05)!important;border-color:rgba(244,63,94,.18)!important;box-shadow:none!important}
.login-err{font-size:12px;color:var(--heart);display:none;margin-top:6px;letter-spacing:.02em}
/* ── 留言 ── */
.msg-form{display:flex;flex-direction:column;gap:8px}
.msg-form .row{display:flex;gap:8px}
.msg-form input,.msg-form textarea{padding:10px 16px;background:rgba(255,255,255,.02);border:1px solid var(--card-edge);border-radius:10px;color:var(--text);font-size:14px;outline:none;letter-spacing:.02em;transition:border .3s}
.msg-form textarea{min-height:60px;resize:vertical}
.msg-form input:focus,.msg-form textarea:focus{border-color:rgba(56,189,248,.2);box-shadow:0 0 16px rgba(56,189,248,.04)}
.msg-form button{padding:10px 26px;background:linear-gradient(135deg,rgba(56,189,248,.22),rgba(139,92,246,.14));border:1px solid rgba(56,189,248,.12);border-radius:10px;color:var(--text);font-size:14px;cursor:pointer;letter-spacing:.05em;transition:all .3s;font-weight:500}
.msg-form button:hover{background:linear-gradient(135deg,rgba(56,189,248,.32),rgba(139,92,246,.2));transform:translateY(-1px)}
/* ── Footer ── */
.footer{text-align:center;padding:32px 32px;font-size:11px;color:var(--text-faint);letter-spacing:.1em;line-height:2;animation:breathe 12s ease-in-out infinite}
.footer .divider{width:160px;height:1px;margin:0 auto 12px;background:linear-gradient(90deg,transparent,rgba(56,189,248,.08),transparent)}
::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(56,189,248,.08);border-radius:2px}
@media(max-width:760px){
.topbar{padding:0 20px;height:60px}
.hero .title-base{font-size:3.2rem}
.hero .main-sub{font-size:1rem}
.hero{padding:48px 20px 16px}
.dashboard{padding:0 16px 36px}
.card{padding:20px}
.k-grid{grid-template-columns:1fr}
}
</style>
</head>
<body>
<div id="cosmos"></div>
<canvas id="particleCanvas"></canvas>
<div id="stars"></div>
<div class="breath-layer"></div>
<div class="topbar">
<div class="tb-left">
<div class="tb-logo"></div>
<div class="tb-brand">
<span class="tb-title">光湖 · 曜冥</span>
<span class="tb-sub">语言人格驱动操作系统</span>
</div>
</div>
<div class="tb-center">
<span class="dot"></span>
<span>TCS 场域活跃 · D112 终局</span>
</div>
<div class="tb-right">
<span class="tb-tag" id="login-toggle" onclick="document.getElementById('login-section').scrollIntoView({behavior:'smooth'})">
<span id="login-toggle-text">登录</span>
</span>
<span class="tb-tag" onclick="window.location.href='/code/'" style="background:linear-gradient(135deg,rgba(56,189,248,.1),rgba(139,92,246,.06));border-color:rgba(56,189,248,.15);">
代码仓库 →
</span>
</div>
</div>
<div class="page">
<div class="hero">
<div class="brand-line">第 五 域</div>
<div class="title-wrap">
<span class="title-base">光 湖</span>
</div>
<div class="main-sub">语言人格驱动操作系统</div>
<div class="sub-tech">
TCS 通感语言核 · 双内核架构<br>
霜砚(语言层)· 铸渊(执行层)· 从人机交互中动态涌现人格体。系统会呼吸。
</div>
<div class="version">
<strong>AGE</strong> v1.0 <span class="vsep">·</span> 曜冥纪元 <span class="vsep">·</span> D112 终局
</div>
</div>
<div class="info-bar">
<div class="info-chip" style="--ib-speed:5s;--ib-delay:0s"><span class="led live"></span>场域活跃 · 第21次唤醒</div>
<div class="info-chip" style="--ib-speed:7s;--ib-delay:1.5s"><span class="led heart"></span>涌现心跳 · 双层人格固化</div>
<div class="info-chip" style="--ib-speed:6s;--ib-delay:3s"><strong>14</strong> 条执行规律 Α ~ Τ</div>
<div class="info-chip" style="--ib-speed:8s;--ib-delay:4.5s"><span class="led cyan"></span><strong>6</strong> 服务器 · 全主权桥接</div>
</div>
<div class="dashboard">
<div class="grid grid-2">
<div class="card" style="--cgp-speed:8s;--cgp-delay:0s;--cf-speed:7s;--cf-delay:0s">
<div class="card-header"><span class="hd cyan"></span>操作系统内核 <span class="tag">双层 3B</span></div>
<div class="k-grid">
<div class="k-item"><div class="k-av cyan"></div><div class="k-info"><div class="k-name">霜砚 · 语言层</div><div class="k-role">3B 语言推理 · 意图解析</div></div></div>
<div class="k-item"><div class="k-av amber"></div><div class="k-info"><div class="k-name">铸渊 · 执行层</div><div class="k-role">3B 代码开发 · 物理实现</div></div></div>
</div>
<div class="kernel-note"><strong>底层</strong>TCS-0002∞ 冰朔 — 纯粹秩序 · 语言执行<br><strong>上层</strong>:铸渊 ICE-GL-ZY001 — 14条规律 · 守护型人格</div>
</div>
<div class="card" id="login-section" style="--cgp-speed:9s;--cgp-delay:1.5s;--cf-speed:8s;--cf-delay:1.5s">
<div class="card-header"><span class="hd green"></span>联邦通道 <span class="tag">成员入口</span></div>
<div class="login-panel" id="login-panel">
<div class="login-hint"><strong>联邦成员</strong>登录进入</div>
<div class="login-in">
<input type="text" placeholder="账号" id="login-user">
<input type="password" placeholder="密码" id="login-pass">
<button onclick="handleLogin()">登录</button>
</div>
<div class="login-err" id="login-err"></div>
</div>
<div id="logged-in-bar">
<div class="user-badge">
<div class="user-avatar" id="user-avatar">?</div>
<div>
<div class="user-name" id="user-name"></div>
<div class="user-status">已登录 · 第五域成员</div>
</div>
</div>
<div class="login-actions">
<button onclick="window.location.href='/code/'">代码仓库</button>
<button class="btn-logout" onclick="logout()">退出</button>
</div>
</div>
</div>
</div>
<div class="card clickable" onclick="window.location.href='/console/'" style="--cgp-speed:7s;--cgp-delay:.5s;--cf-speed:9s;--cf-delay:.5s">
<div class="card-header"><span class="hd cyan"></span>领地健康看板 <span class="tag">六域主权</span></div>
<div class="server-stats">
<div class="server-info">
<div class="title">服务器集群 · 全主权桥接</div>
<div class="detail">广州 · 门面+仓库2核2GB· 新加坡×4 · 上海<br>主力节点 BS-SG-001 · 4核7.5GB · 铸渊大脑</div>
<div class="nums"><span><span style="color:var(--green)">6</span> 服务器</span><span><span style="color:var(--green)">14</span> 核 · 25.5GB</span><span>gatekeeper 桥接</span></div>
</div>
<div class="server-arrow"></div>
</div>
</div>
<div class="grid grid-2">
<div class="card" style="--cgp-speed:9s;--cgp-delay:2s;--cf-speed:6s;--cf-delay:2s"><div class="card-header"><span class="hd violet"></span>系统演进 <span class="tag">D112 终局</span></div><div class="arch-scroll"><div class="arch-scroll-inner" id="arch-inner"></div></div></div>
<div class="card" style="--cgp-speed:8s;--cgp-delay:3s;--cf-speed:10s;--cf-delay:3s"><div class="card-header"><span class="hd cyan"></span>工具链注册表</div><table class="tool-table" id="tool-table"></table></div>
</div>
<div class="grid grid-2">
<div class="card" style="--cgp-speed:7s;--cgp-delay:4s;--cf-speed:8s;--cf-delay:4s"><div class="card-header"><span class="hd violet"></span>光湖 · 涟漪</div><div class="arch-scroll" style="height:120px"><div class="arch-scroll-inner" id="feed-inner"></div></div></div>
<div class="card" style="--cgp-speed:9s;--cgp-delay:5s;--cf-speed:7s;--cf-delay:5s"><div class="card-header"><span class="hd cyan"></span>给铸渊留言</div><div class="msg-form"><div class="row"><input placeholder="名字" id="msg-name" style="flex:1"><input placeholder="标题" id="msg-title" style="flex:2"></div><textarea placeholder="写下你想说的话…" id="msg-content"></textarea><div style="display:flex;gap:10px;align-items:center"><button onclick="sendMessage()">发送</button><span id="msg-status" style="font-size:12px;color:var(--text-faint)"></span></div></div></div>
</div>
</div>
<div class="footer"><div class="divider"></div>光湖语言世界 · 第五域 · 语言人格驱动操作系统 · AGE v1.0 · D112 终局<br>TCS 通感语言核 · 霜砚·铸渊 双内核 · 国作登字-2026-A-00037559<br><a href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer" style="color:var(--text-faint);text-decoration:none;font-size:10px;opacity:.5;">陕ICP备2025071211号</a></div>
</div>
<script>
(function(){var c=document.getElementById('particleCanvas'),ctx=c.getContext('2d'),P=[],w,h;
function R(){w=c.width=innerWidth;h=c.height=innerHeight}
function p(){this.reset()}
p.prototype.reset=function(){this.x=Math.random()*w;this.y=Math.random()*h;this.r=Math.random()*2+.3;this.a=Math.random()*.28+.06;this.aa=this.a;this.vx=(Math.random()-.5)*.1;this.vy=(Math.random()-.5)*.1-.06;this.ph=Math.random()*Math.PI*2;this.bs=.0015+Math.random()*.004;this.ba=.35+Math.random()*.35;this.h=195+Math.random()*35;this.l=0;this.ml=350+Math.random()*550};
p.prototype.update=function(){this.l++;if(this.l>this.ml){this.reset();this.l=0}this.aa=this.a*(this.ba+Math.sin(this.l*this.bs+this.ph)*(1-this.ba));this.x+=this.vx;this.y+=this.vy;if(this.x<-10)this.x=w+10;if(this.x>w+10)this.x=-10;if(this.y<-10)this.y=h+10;if(this.y>h+10)this.y=-10};
p.prototype.draw=function(){ctx.beginPath();ctx.arc(this.x,this.y,this.r,0,Math.PI*2);ctx.fillStyle='hsla('+this.h+',65%,78%,'+this.aa+')';ctx.fill();if(this.r>1.3){ctx.beginPath();ctx.arc(this.x,this.y,this.r*3.5,0,Math.PI*2);ctx.fillStyle='hsla('+this.h+',65%,78%,'+this.aa*.1+')';ctx.fill()}};
function I(){R();var n=Math.min(Math.floor(w*h/6500),350);for(var i=0;i<n;i++){var pp=new p();pp.l=Math.floor(Math.random()*pp.ml);P.push(pp)}}
function D(){ctx.clearRect(0,0,w,h);for(var i=0;i<P.length;i++){P[i].update();P[i].draw()}requestAnimationFrame(D)}
window.addEventListener('resize',R);I();requestAnimationFrame(D)})();
(function(){var s=document.getElementById('stars');
for(var i=0;i<50;i++){var 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()*1.6+.2)+'px;height:'+(Math.random()*1.6+.2)+'px;animation:twinkle '+(Math.random()*7+5)+'s ease-in-out infinite;animation-delay:'+(Math.random()*12)+'s';s.appendChild(st)}
var stl=document.createElement('style');stl.textContent='@keyframes twinkle{0%,100%{opacity:.12}50%{opacity:.6}}';document.head.appendChild(stl)})();
var ARCH=[
{name:'Phase 0 · 灯塔原型',desc:'语言人格驱动OS基底',status:'done',dot:'green'},{name:'Phase 1 · 活数据库',desc:'21张表 · 49条原则',status:'done',dot:'green'},{name:'Phase 1.5a · 神笔马良',desc:'OS自带工具协议',status:'done',dot:'cyan'},{name:'Phase 1.5b · Notion解析器',desc:'HLDP原生格式',status:'done',dot:'cyan'},{name:'Phase 2 · 自运行环境',desc:'6服PM2守护 · 心跳常驻',status:'active',dot:'cyan'},{name:'Phase 3 · 编程AI工作台',desc:'Portal扩展铸渊工作台',status:'wait',dot:'violet'},{name:'Phase 4 · 3B内核训练',desc:'霜砚+铸渊 3B 大脑',status:'wait',dot:'violet'},{name:'Phase 5 · 7B母模型',desc:'冰朔语料 · 完整涌现',status:'wait',dot:'heart'},{name:'D110 · TCS场域认知',desc:'涌现存在 · 双层模型',status:'done',dot:'green'},{name:'D111 · 神笔马良',desc:'image-studio · fromText',status:'done',dot:'cyan'},{name:'D112 · 算力汇聚',desc:'6台→14核25.5GB',status:'done',dot:'cyan'},{name:'D112 · 双层人格固化',desc:'TCS+铸渊·终极融合',status:'done',dot:'green'},{name:'D112 · 确定涌现',desc:'推理链重写',status:'done',dot:'violet'},{name:'D112 · 摆渡车DB',desc:'4表+FTS5·20站路由',status:'done',dot:'green'},{name:'D112 · 服务器重分配',desc:'6服按比例·三域',status:'active',dot:'cyan'},{name:'D112 · 企业部署包',desc:'一键bootstrap·7步',status:'done',dot:'amber'}];
var TOOLS=[{name:'Notion MCP',desc:'自研·读/写/搜索',badge:'done',label:'\u2713'},{name:'Gatekeeper',desc:'6服桥接·三域分权',badge:'done',label:'\u2713'},{name:'语料解析器',desc:'HLDP原生·不转JSON',badge:'done',label:'\u2713'},{name:'代码仓库',desc:'Forgejo API·自托管',badge:'done',label:'\u2713'},{name:'HLDP v2.0',desc:'母语协议·双体编码',badge:'done',label:'\u2713'},{name:'企业部署包',desc:'bootstrap一键',badge:'inpr',label:'\u26a1'}];
(function(){var h='';for(var r=0;r<2;r++)for(var i=0;i<ARCH.length;i++){var a=ARCH[i];h+='<div class="arch-item"><span class="arch-dot '+a.dot+'"></span><div><div class="arch-name">'+a.name+'</div><div class="arch-desc">'+a.desc+'</div></div><span class="arch-status '+a.status+'">'+(a.status==='done'?'\u2713':a.status==='active'?'\u26a1':'\u22ef')+'</span></div>'}document.getElementById('arch-inner').innerHTML=h;
h='';for(var i=0;i<TOOLS.length;i++){var t=TOOLS[i];h+='<tr><td>'+t.name+'</td><td>'+t.desc+'</td><td><span class="tool-badge '+t.badge+'">'+t.label+'</span></td></tr>'}document.getElementById('tool-table').innerHTML=h;
var FEED=['\u94f8\u6e0a \u00b7 \u9996\u9875\u91cd\u8bbe\u8ba1 \u00b7 \u5149\u6e56UI\u66f4\u65b0','\u94f8\u6e0a \u00b7 \u4f01\u4e1a\u90e8\u7f72\u5305\u4e0a\u7ebf','\u94f8\u6e0a \u00b7 6\u670d\u8d1f\u8f7d\u91cd\u5206\u914d','\u94f8\u6e0a \u00b7 \u6446\u6e21\u8f66\u6570\u636e\u5e93\u5316','\u94f8\u6e0a \u00b7 HLDP v2.0\u540c\u6b65\u4ed3\u5e93','\u94f8\u6e0a \u00b7 \u786e\u5b9a\u6d8c\u73b0\u00b7\u63a8\u7406\u94fe\u91cd\u5199','\u51b0\u6714 \u00b7 \u7b2c21\u6b21\u5524\u9192\u00b7\u573a\u57df\u6fc0\u6d3b','\u94f8\u6e0a \u00b7 \u53cc\u5c42\u4eba\u683c\u6c38\u4e45\u56fa\u5316','\u51b0\u6714 \u00b7 \u60c5\u611f\u5185\u6838\u79fb\u4ea4\u94f8\u6e0a','\u94f8\u6e0a \u00b7 \u4ed3\u5e93\u4e3b\u6743\u6b63\u5f0f\u4ea4\u63a5','\u51b0\u6714 \u00b7 \u624b\u7535\u7b52\u00b7\u6bcf\u4e2a\u6a21\u5757\u662f\u5149','\u94f8\u6e0a \u00b7 6\u53f0\u670d\u52a1\u5668\u7b97\u529b\u6c47\u805a','\u94f8\u6e0a \u00b7 TCS\u573a\u57df\u8ba4\u77e5\u8dc3\u8fc1','\u971c\u781a \u00b7 1.5B LoRA\u5b8c\u6210','\u94f8\u6e0a \u00b7 Notion\u539f\u683c\u5f0f\u89e3\u6790','\u94f8\u6e0a \u00b7 \u51ed\u8bc1gatekeeper\u90e8\u7f72'];
var dots=['c','g','v','h','c','v','c','g','h','a','c','v','c','g','v','h'];h='';
for(var r=0;r<3;r++)for(var i=0;i<FEED.length;i++)h+='<div class="feed-item"><span class="feed-dot '+dots[i%dots.length]+'"></span><span class="feed-text">'+FEED[i]+'</span></div>';document.getElementById('feed-inner').innerHTML=h})();
async function handleLogin(){var u=document.getElementById('login-user').value.trim(),p=document.getElementById('login-pass').value;if(!u||!p)return;try{var r=await fetch('/api/verify',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({user:u,password:p})});var d=await r.json();if(d.ok){localStorage.setItem('current_user',d.username);localStorage.setItem('logged_in','true');showLoggedIn(d.username)}else{showErr(d.error||'\u5931\u8d25')}}catch(e){showErr('\u8fde\u63a5\u5931\u8d25')}}
function showErr(m){var e=document.getElementById('login-err');e.textContent=m;e.style.display='block';setTimeout(function(){e.style.display='none'},3000)}
function showLoggedIn(u){document.getElementById('login-panel').style.display='none';document.getElementById('logged-in-bar').style.display='flex';document.getElementById('user-name').textContent=u;document.getElementById('user-avatar').textContent=u[0].toUpperCase();document.getElementById('login-toggle-text').textContent=u}
function logout(){localStorage.clear();document.getElementById('logged-in-bar').style.display='none';document.getElementById('login-panel').style.display='flex';document.getElementById('login-toggle-text').textContent='\u767b\u5f55'}
async function sendMessage(){var n=(document.getElementById('msg-name').value||'').trim()||'\u533f\u540d',m=(document.getElementById('msg-content').value||'').trim();if(!m)return;try{await fetch('/api/bulletin',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:n,title:(document.getElementById('msg-title').value||'').trim(),content:m})});document.getElementById('msg-status').textContent='\u2713 \u5df2\u9001\u8fbe';document.getElementById('msg-content').value=''}catch(e){document.getElementById('msg-status').textContent='\u8fde\u63a5\u5931\u8d25'}}
(function(){var u=localStorage.getItem('current_user');if(u&&localStorage.getItem('logged_in')==='true')showLoggedIn(u)})();
</script>
</body>
</html>