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

367 lines
13 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— 语言驱动的智能创作平台探索人类与AI共生的数字世界。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="语言驱动的智能创作平台探索人类与AI共生的数字世界">
<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'><text y='.9em' font-size='90'>🌊</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:40px 24px;
max-width:680px;width:100%;
}
/* ═══ Logo 图标 ═══ */
.logo-icon{
font-size:72px;margin-bottom:24px;display:inline-block;
animation:logoFloat 6s ease-in-out infinite;
filter:drop-shadow(0 0 30px rgba(34,211,238,0.3));
}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
/* ═══ 标题 ═══ */
.title{
font-size:clamp(2rem,5vw,3.2rem);font-weight:800;letter-spacing:0.02em;
margin-bottom:8px;line-height:1.3;
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;
}
@keyframes gradientShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.title-en{
font-size:clamp(0.85rem,2vw,1.1rem);font-weight:400;
color:var(--text-secondary);letter-spacing:3px;text-transform:uppercase;
margin-bottom:40px;opacity:.7;
}
/* ═══ 分割线 ═══ */
.divider{
width:120px;height:2px;margin:0 auto 36px;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:120px}50%{opacity:1;width:180px}}
/* ═══ 简介 ═══ */
.tagline{
font-size:clamp(1rem,2.5vw,1.25rem);color:var(--text-secondary);
line-height:1.8;margin-bottom:48px;font-weight:300;letter-spacing:0.05em;
}
.tagline em{
font-style:normal;color:var(--glow-cyan);font-weight:500;
}
/* ═══ 状态指示 ═══ */
.status-badge{
display:inline-flex;align-items:center;gap:8px;
padding:10px 24px;border-radius:40px;
background:var(--glass);border:1px solid var(--glass-border);
backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
font-size:0.85rem;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-dim);font-size:13px;text-decoration:none;
transition:color .3s;display:inline-flex;align-items:center;gap:6px;
}
.icp-link:hover{color:var(--glow-cyan);text-decoration:underline}
.icp-link .icp-icon{font-size:11px;opacity:.6}
.icp-copyright{
color:var(--text-dim);font-size:11px;opacity:.5;
}
/* ═══ 入场动画 ═══ */
.fade-up{animation:fadeUp 1s ease-out both}
.fade-up-d1{animation-delay:0.1s}
.fade-up-d2{animation-delay:0.3s}
.fade-up-d3{animation-delay:0.5s}
.fade-up-d4{animation-delay:0.7s}
.fade-up-d5{animation-delay:0.9s}
@keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
/* ═══ 响应式 ═══ */
@media(max-width:480px){
.logo-icon{font-size:56px}
.status-badge{padding:8px 18px;font-size:0.8rem}
.orbit-ring{display:none}
}
</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">
<div class="logo-icon fade-up fade-up-d1">🌊</div>
<h1 class="title fade-up fade-up-d2">光湖实验室</h1>
<p class="title-en fade-up fade-up-d2">GuanghuLab</p>
<div class="divider fade-up fade-up-d3"></div>
<p class="tagline fade-up fade-up-d4">
<em>语言驱动</em>的智能创作平台<br>
探索人类与AI共生的数字世界
</p>
<div class="status-badge fade-up fade-up-d5">
<span class="status-dot"></span>
系统运行中 · Language-Driven OS
</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)`;
});
})();
</script>
</body>
</html>