zhizhi/server/sites/cn-landing/index.html

434 lines
15 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.0">
<title>光湖实验室 · GuanghuLab — 语言驱动的智能创作平台</title>
<meta name="description" content="光湖实验室GuanghuLab— 语言驱动的智能创作平台用语言建世界。ICP备案号陕ICP备2025071211号">
<meta name="keywords" content="光湖实验室,GuanghuLab,语言驱动,智能创作,AI创作平台">
<meta name="author" content="光湖实验室">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://guanghulab.com/">
<!-- Open Graph -->
<meta property="og:title" content="光湖实验室 · GuanghuLab">
<meta property="og:description" content="语言驱动的智能创作平台,用语言,建世界">
<meta property="og:type" content="website">
<meta property="og:url" content="https://guanghulab.com/">
<meta property="og:locale" content="zh_CN">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'><stop offset='0%25' stop-color='%2322d3ee'/><stop offset='100%25' stop-color='%23a78bfa'/></linearGradient></defs><text y='.88em' font-size='80' font-weight='bold' fill='url(%23g)' font-family='sans-serif'>光</text></svg>">
<style>
*{margin:0;padding:0;box-sizing:border-box}
:root{
--bg-deep:#070b1a;
--glow-cyan:#22d3ee;
--glow-purple:#a78bfa;
--glow-blue:#3b82f6;
--glow-amber:#fbbf24;
--text-primary:#e8edf5;
--text-secondary:#8b95a8;
--text-dim:#4a5568;
--glass:rgba(12,20,40,0.55);
--glass-border:rgba(120,140,180,0.12);
--font-body:'Segoe UI','PingFang SC','Microsoft YaHei','Helvetica Neue',sans-serif;
--font-mono:'JetBrains Mono','Fira Code',monospace;
}
html{font-size:16px}
body{
font-family:var(--font-body);background:var(--bg-deep);color:var(--text-primary);
min-height:100vh;overflow-x:hidden;display:flex;flex-direction:column;
align-items:center;justify-content:center;position:relative;
}
/* ═══ 星空画布 ═══ */
#starfield{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}
/* ═══ 星云 ═══ */
.nebula{position:fixed;border-radius:50%;filter:blur(100px);pointer-events:none;z-index:0;animation:nebulaDrift 20s ease-in-out infinite alternate}
.neb-1{width:600px;height:600px;background:radial-gradient(circle,rgba(34,211,238,0.08),transparent);top:-120px;right:-100px}
.neb-2{width:500px;height:500px;background:radial-gradient(circle,rgba(167,139,250,0.07),transparent);bottom:-80px;left:-100px}
.neb-3{width:350px;height:350px;background:radial-gradient(circle,rgba(59,130,246,0.06),transparent);top:35%;left:15%;animation-delay:-8s}
@keyframes nebulaDrift{0%{transform:translate(0,0) scale(1)}50%{transform:translate(30px,-20px) scale(1.05)}100%{transform:translate(-20px,15px) scale(0.95)}}
/* ═══ 光晕粒子 ═══ */
.particle{position:fixed;width:3px;height:3px;border-radius:50%;pointer-events:none;z-index:0}
.particle::after{content:'';position:absolute;width:100%;height:100%;border-radius:50%;background:inherit;filter:blur(4px);opacity:.6}
/* ═══ 主容器 ═══ */
.main-wrap{
position:relative;z-index:1;text-align:center;padding:60px 32px;
max-width:860px;width:100%;
}
/* ═══ 标题 ═══ */
.title{
font-size:clamp(2.8rem,7vw,4.5rem);font-weight:800;letter-spacing:0.04em;
margin-bottom:12px;line-height:1.2;
background:linear-gradient(135deg,var(--glow-cyan) 0%,var(--glow-blue) 40%,var(--glow-purple) 100%);
-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
background-size:200% 200%;animation:gradientShift 8s ease-in-out infinite;
filter:drop-shadow(0 0 30px rgba(34,211,238,0.15));
}
@keyframes gradientShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.title-en{
font-size:clamp(1rem,2.5vw,1.35rem);font-weight:400;
color:var(--text-secondary);letter-spacing:5px;text-transform:uppercase;
margin-bottom:48px;opacity:.7;
}
/* ═══ 分割线 ═══ */
.divider{
width:160px;height:2px;margin:0 auto 44px;border-radius:2px;
background:linear-gradient(90deg,transparent,var(--glow-cyan),var(--glow-purple),transparent);
animation:dividerPulse 4s ease-in-out infinite;
}
@keyframes dividerPulse{0%,100%{opacity:.5;width:160px}50%{opacity:1;width:240px}}
/* ═══ 简介区块 ═══ */
.tagline-block{
margin-bottom:56px;
}
.tagline-row{
margin-bottom:10px;
opacity:0;
animation:fadeUp 1s ease-out both;
}
.tagline-row:last-child{margin-bottom:0}
.tagline-zh{
font-size:clamp(1.2rem,3vw,1.6rem);color:var(--text-primary);
line-height:1.6;font-weight:400;letter-spacing:0.08em;
}
.tagline-zh em{
font-style:normal;font-weight:600;
background:linear-gradient(135deg,var(--glow-cyan),var(--glow-blue));
-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
background-size:200% 200%;animation:gradientShift 6s ease-in-out infinite;
}
.tagline-en{
font-size:clamp(0.8rem,1.8vw,1rem);color:var(--text-dim);
letter-spacing:2px;text-transform:uppercase;font-weight:300;
margin-top:4px;opacity:.65;
}
/* ═══ 文字光芒扫过效果 ═══ */
.shimmer{
position:relative;display:inline-block;
}
.shimmer::after{
content:'';position:absolute;top:0;left:-100%;
width:60%;height:100%;
background:linear-gradient(90deg,transparent,rgba(34,211,238,0.12),rgba(167,139,250,0.08),transparent);
animation:shimmerSweep 5s ease-in-out infinite;
pointer-events:none;
}
@keyframes shimmerSweep{0%,100%{left:-100%}50%{left:200%}}
/* ═══ 打字光标 ═══ */
.cursor-blink::after{
content:'▎';display:inline-block;
color:var(--glow-cyan);font-weight:100;
animation:cursorBlink 1s step-end infinite;
margin-left:2px;vertical-align:baseline;
}
@keyframes cursorBlink{0%,100%{opacity:1}50%{opacity:0}}
/* ═══ 浮动呼吸 ═══ */
.breathe{animation:breathe 6s ease-in-out infinite}
@keyframes breathe{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.02);filter:brightness(1.1)}}
/* ═══ 状态指示 ═══ */
.status-badge{
display:inline-flex;align-items:center;gap:10px;
padding:12px 28px;border-radius:40px;
background:var(--glass);border:1px solid var(--glass-border);
backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
font-size:0.9rem;color:var(--text-secondary);
margin-bottom:60px;
animation:badgeFadeIn 1.5s ease-out 0.5s both;
}
.status-dot{
width:8px;height:8px;border-radius:50%;background:#34d399;
box-shadow:0 0 8px rgba(52,211,153,0.5);
animation:dotPulse 2s ease-in-out infinite;
}
@keyframes dotPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(0.8)}}
@keyframes badgeFadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
/* ═══ 装饰环 ═══ */
.orbit-ring{
position:fixed;border-radius:50%;border:1px solid rgba(34,211,238,0.04);
pointer-events:none;z-index:0;
}
.orbit-1{width:500px;height:500px;top:50%;left:50%;transform:translate(-50%,-50%);animation:orbitSpin 60s linear infinite}
.orbit-2{width:700px;height:700px;top:50%;left:50%;transform:translate(-50%,-50%);animation:orbitSpin 90s linear infinite reverse;border-color:rgba(167,139,250,0.03)}
.orbit-3{width:900px;height:900px;top:50%;left:50%;transform:translate(-50%,-50%);animation:orbitSpin 120s linear infinite;border-color:rgba(59,130,246,0.025)}
@keyframes orbitSpin{from{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(360deg)}}
/* 轨道上的光点 */
.orbit-dot{
position:absolute;width:4px;height:4px;border-radius:50%;
background:var(--glow-cyan);box-shadow:0 0 10px rgba(34,211,238,0.4);
}
.orbit-1 .orbit-dot{top:0;left:50%;transform:translate(-50%,-50%)}
.orbit-2 .orbit-dot{bottom:0;right:30%;transform:translate(50%,50%)}
/* ═══ 底部备案 ═══ */
.footer{
position:fixed;bottom:0;left:0;width:100%;z-index:10;
padding:20px 20px 24px;text-align:center;
background:linear-gradient(to top,rgba(7,11,26,0.98) 60%,transparent);
}
.icp-info{
display:flex;flex-direction:column;align-items:center;gap:6px;
}
.icp-link{
color:var(--text-secondary);font-size:13px;text-decoration:none;
transition:color .3s;display:inline-flex;align-items:center;gap:6px;
opacity:.75;
}
.icp-link:hover{color:var(--glow-cyan);text-decoration:underline;opacity:1}
.icp-link .icp-icon{font-size:11px;opacity:.7}
.icp-copyright{
color:var(--text-secondary);font-size:11px;opacity:.5;
}
/* ═══ 入场动画 ═══ */
.fade-up{animation:fadeUp 1s ease-out both}
.fade-up-d1{animation-delay:0.15s}
.fade-up-d2{animation-delay:0.35s}
.fade-up-d3{animation-delay:0.55s}
.fade-up-d4{animation-delay:0.75s}
.fade-up-d5{animation-delay:0.95s}
.fade-up-d6{animation-delay:1.15s}
.fade-up-d7{animation-delay:1.35s}
@keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
/* ═══ 响应式 ═══ */
@media(max-width:480px){
.main-wrap{padding:40px 20px}
.status-badge{padding:8px 18px;font-size:0.8rem}
.orbit-ring{display:none}
.tagline-zh{font-size:1.1rem}
.tagline-en{font-size:0.75rem}
}
</style>
</head>
<body>
<!-- 星空画布 -->
<canvas id="starfield"></canvas>
<!-- 星云 -->
<div class="nebula neb-1"></div>
<div class="nebula neb-2"></div>
<div class="nebula neb-3"></div>
<!-- 装饰轨道环 -->
<div class="orbit-ring orbit-1"><div class="orbit-dot"></div></div>
<div class="orbit-ring orbit-2"><div class="orbit-dot"></div></div>
<div class="orbit-ring orbit-3"></div>
<!-- 主内容 -->
<div class="main-wrap">
<h1 class="title shimmer fade-up fade-up-d1 breathe">光湖实验室</h1>
<p class="title-en fade-up fade-up-d2">GuanghuLab</p>
<div class="divider fade-up fade-up-d3"></div>
<div class="tagline-block">
<div class="tagline-row fade-up fade-up-d4">
<p class="tagline-zh shimmer"><em>语言驱动</em>的智能创作平台</p>
<p class="tagline-en">Language-Driven Intelligent Creation Platform</p>
</div>
<div class="tagline-row fade-up fade-up-d5">
<p class="tagline-zh">用语言,建世界</p>
<p class="tagline-en">Build Worlds with Language</p>
</div>
</div>
<div class="status-badge fade-up fade-up-d6">
<span class="status-dot"></span>
<span id="status-text"></span>
</div>
</div>
<!-- 底部ICP备案 -->
<footer class="footer">
<div class="icp-info">
<a class="icp-link" href="https://beian.miit.gov.cn/" target="_blank" rel="noopener noreferrer">
<span class="icp-icon">🛡️</span>
陕ICP备2025071211号
</a>
<span class="icp-copyright">© 2025 光湖实验室 GuanghuLab</span>
</div>
</footer>
<script>
// ═══ 星空粒子系统 ═══
(function(){
const canvas = document.getElementById('starfield');
const ctx = canvas.getContext('2d');
let stars = [];
let shootingStars = [];
let W, H;
function resize(){
W = canvas.width = window.innerWidth;
H = canvas.height = window.innerHeight;
}
resize();
window.addEventListener('resize', resize);
// 生成静态星星
function createStars(count){
stars = [];
for(let i = 0; i < count; i++){
stars.push({
x: Math.random() * W,
y: Math.random() * H,
r: Math.random() * 1.5 + 0.3,
alpha: Math.random() * 0.8 + 0.2,
twinkleSpeed: Math.random() * 0.02 + 0.005,
twinklePhase: Math.random() * Math.PI * 2
});
}
}
createStars(200);
// 流星
function spawnShootingStar(){
if(shootingStars.length > 2) return;
shootingStars.push({
x: Math.random() * W * 0.8,
y: Math.random() * H * 0.3,
len: Math.random() * 80 + 40,
speed: Math.random() * 4 + 3,
angle: Math.PI / 4 + (Math.random() - 0.5) * 0.3,
alpha: 1,
decay: Math.random() * 0.015 + 0.008
});
}
setInterval(spawnShootingStar, 4000);
// 浮动光粒
const floatingParticles = [];
for(let i = 0; i < 15; i++){
floatingParticles.push({
x: Math.random() * W,
y: Math.random() * H,
vx: (Math.random() - 0.5) * 0.3,
vy: (Math.random() - 0.5) * 0.3,
r: Math.random() * 2 + 1,
hue: Math.random() > 0.5 ? 187 : 260, // cyan or purple
alpha: Math.random() * 0.4 + 0.1
});
}
let time = 0;
function animate(){
ctx.clearRect(0, 0, W, H);
time += 0.016;
// 绘制星星
for(const s of stars){
const twinkle = Math.sin(time * s.twinkleSpeed * 60 + s.twinklePhase) * 0.3 + 0.7;
ctx.beginPath();
ctx.arc(s.x, s.y, s.r, 0, Math.PI * 2);
ctx.fillStyle = `rgba(220,230,255,${s.alpha * twinkle})`;
ctx.fill();
}
// 绘制流星
for(let i = shootingStars.length - 1; i >= 0; i--){
const ss = shootingStars[i];
const endX = ss.x - Math.cos(ss.angle) * ss.len;
const endY = ss.y - Math.sin(ss.angle) * ss.len;
const grad = ctx.createLinearGradient(ss.x, ss.y, endX, endY);
grad.addColorStop(0, `rgba(220,240,255,${ss.alpha})`);
grad.addColorStop(1, `rgba(220,240,255,0)`);
ctx.beginPath();
ctx.moveTo(ss.x, ss.y);
ctx.lineTo(endX, endY);
ctx.strokeStyle = grad;
ctx.lineWidth = 1.5;
ctx.stroke();
// 头部光点
ctx.beginPath();
ctx.arc(ss.x, ss.y, 2, 0, Math.PI * 2);
ctx.fillStyle = `rgba(200,230,255,${ss.alpha})`;
ctx.fill();
ss.x += Math.cos(ss.angle) * ss.speed;
ss.y += Math.sin(ss.angle) * ss.speed;
ss.alpha -= ss.decay;
if(ss.alpha <= 0 || ss.x > W || ss.y > H){
shootingStars.splice(i, 1);
}
}
// 绘制浮动光粒
for(const p of floatingParticles){
ctx.beginPath();
ctx.arc(p.x, p.y, p.r, 0, Math.PI * 2);
const pulse = Math.sin(time * 2 + p.x * 0.01) * 0.2 + 0.8;
ctx.fillStyle = `hsla(${p.hue},70%,65%,${p.alpha * pulse})`;
ctx.fill();
// 光晕
ctx.beginPath();
ctx.arc(p.x, p.y, p.r * 3, 0, Math.PI * 2);
ctx.fillStyle = `hsla(${p.hue},70%,65%,${p.alpha * pulse * 0.15})`;
ctx.fill();
p.x += p.vx;
p.y += p.vy;
if(p.x < 0 || p.x > W) p.vx *= -1;
if(p.y < 0 || p.y > H) p.vy *= -1;
}
requestAnimationFrame(animate);
}
animate();
// 窗口大小变化时重新生成星星
window.addEventListener('resize', () => createStars(200));
})();
// ═══ 鼠标跟随光晕 ═══
(function(){
const glow = document.createElement('div');
glow.style.cssText = 'position:fixed;width:300px;height:300px;border-radius:50%;pointer-events:none;z-index:0;background:radial-gradient(circle,rgba(34,211,238,0.06),transparent 70%);transition:transform .15s ease-out;will-change:transform;';
document.body.appendChild(glow);
let mx = 0, my = 0;
document.addEventListener('mousemove', e => {
mx = e.clientX; my = e.clientY;
glow.style.transform = `translate(${mx - 150}px, ${my - 150}px)`;
});
})();
// ═══ 状态栏打字机效果 ═══
(function(){
const el = document.getElementById('status-text');
if(!el) return;
const fullText = '系统运行中 · Language-Driven OS';
let i = 0;
function type(){
if(i <= fullText.length){
el.textContent = fullText.slice(0, i);
i++;
setTimeout(type, 60 + Math.random() * 40);
} else {
el.classList.add('cursor-blink');
// 停顿后移除光标
setTimeout(() => el.classList.remove('cursor-blink'), 3000);
}
}
// 等入场动画完成后开始打字
setTimeout(type, 1600);
})();
</script>
</body>
</html>