231 lines
4.9 KiB
CSS
231 lines
4.9 KiB
CSS
@import "tailwindcss";
|
|
|
|
/* CSS 变量定义 */
|
|
:root {
|
|
/* 背景色 */
|
|
--sa-bg-primary: #0a0a0f;
|
|
--sa-bg-secondary: #12121a;
|
|
--sa-bg-tertiary: #1a1a25;
|
|
|
|
/* 强调色 */
|
|
--sa-accent-cyan: #00d4ff;
|
|
--sa-accent-sky: #0ea5e9;
|
|
--sa-accent-blue: #3b82f6;
|
|
|
|
/* 文字色 */
|
|
--sa-text-primary: #f0f0f5;
|
|
--sa-text-secondary: #a0a0b0;
|
|
--sa-text-muted: #606070;
|
|
|
|
/* 边框色 */
|
|
--sa-border-primary: rgba(255, 255, 255, 0.1);
|
|
--sa-border-glow: rgba(0, 212, 255, 0.3);
|
|
|
|
/* 玻璃效果 */
|
|
--sa-glass-bg: rgba(255, 255, 255, 0.03);
|
|
--sa-glass-border: rgba(255, 255, 255, 0.08);
|
|
}
|
|
|
|
/* 基础样式 */
|
|
html, body, #root {
|
|
margin: 0;
|
|
padding: 0;
|
|
min-height: 100vh;
|
|
background: var(--sa-bg-primary);
|
|
color: var(--sa-text-primary);
|
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
}
|
|
|
|
/* 网格背景图案 */
|
|
.grid-pattern {
|
|
background-image:
|
|
linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px),
|
|
linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px);
|
|
background-size: 50px 50px;
|
|
}
|
|
|
|
/* 动态光晕 */
|
|
.glow-orb {
|
|
position: absolute;
|
|
border-radius: 50%;
|
|
filter: blur(100px);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.glow-orb-1 {
|
|
width: 384px;
|
|
height: 384px;
|
|
background: var(--sa-accent-cyan);
|
|
opacity: 0.15;
|
|
top: -100px;
|
|
left: -100px;
|
|
filter: blur(120px);
|
|
animation: float-1 8s ease-in-out infinite;
|
|
}
|
|
|
|
.glow-orb-2 {
|
|
width: 320px;
|
|
height: 320px;
|
|
background: var(--sa-accent-sky);
|
|
opacity: 0.15;
|
|
bottom: -80px;
|
|
right: -80px;
|
|
filter: blur(100px);
|
|
animation: float-2 10s ease-in-out infinite;
|
|
}
|
|
|
|
.glow-orb-3 {
|
|
width: 600px;
|
|
height: 600px;
|
|
background: var(--sa-accent-blue);
|
|
opacity: 0.08;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
filter: blur(150px);
|
|
animation: pulse 6s ease-in-out infinite;
|
|
}
|
|
|
|
/* 光晕动画 */
|
|
@keyframes float-1 {
|
|
0%, 100% { transform: translate(0, 0); }
|
|
50% { transform: translate(30px, 20px); }
|
|
}
|
|
|
|
@keyframes float-2 {
|
|
0%, 100% { transform: translate(0, 0); }
|
|
50% { transform: translate(-20px, -30px); }
|
|
}
|
|
|
|
@keyframes pulse {
|
|
0%, 100% { opacity: 0.08; transform: translate(-50%, -50%) scale(1); }
|
|
50% { opacity: 0.12; transform: translate(-50%, -50%) scale(1.1); }
|
|
}
|
|
|
|
/* 数据流动效果 */
|
|
.data-stream {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.data-stream::before,
|
|
.data-stream::after {
|
|
content: '';
|
|
position: absolute;
|
|
width: 2px;
|
|
height: 100px;
|
|
background: linear-gradient(180deg, transparent, var(--sa-accent-cyan), transparent);
|
|
opacity: 0.3;
|
|
animation: stream 4s linear infinite;
|
|
}
|
|
|
|
.data-stream::before {
|
|
left: 20%;
|
|
animation-delay: 0s;
|
|
}
|
|
|
|
.data-stream::after {
|
|
left: 80%;
|
|
animation-delay: 2s;
|
|
}
|
|
|
|
@keyframes stream {
|
|
0% { top: -100px; opacity: 0; }
|
|
10% { opacity: 0.3; }
|
|
90% { opacity: 0.3; }
|
|
100% { top: 100%; opacity: 0; }
|
|
}
|
|
|
|
/* 玻璃拟态卡片 */
|
|
.glass-card {
|
|
background: var(--sa-glass-bg);
|
|
backdrop-filter: blur(20px);
|
|
-webkit-backdrop-filter: blur(20px);
|
|
border: 1px solid var(--sa-glass-border);
|
|
border-radius: 16px;
|
|
box-shadow:
|
|
0 4px 30px rgba(0, 0, 0, 0.3),
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
|
}
|
|
|
|
.glass-card:hover {
|
|
border-color: var(--sa-border-glow);
|
|
box-shadow:
|
|
0 4px 30px rgba(0, 0, 0, 0.3),
|
|
0 0 30px rgba(0, 212, 255, 0.1),
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
|
}
|
|
|
|
/* Logo 图片亮化效果 - 将深色logo转为亮色 */
|
|
.logo-invert {
|
|
filter: brightness(0) invert(1);
|
|
opacity: 0.9;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.logo-invert:hover {
|
|
opacity: 1;
|
|
filter: brightness(0) invert(1) drop-shadow(0 0 20px rgba(0, 212, 255, 0.6));
|
|
}
|
|
|
|
/* 发光按钮 */
|
|
.glow-button {
|
|
background: linear-gradient(135deg, var(--sa-accent-cyan), var(--sa-accent-blue));
|
|
color: white;
|
|
border: none;
|
|
padding: 12px 32px;
|
|
border-radius: 8px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
transition: all 0.3s ease;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.glow-button::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: -100%;
|
|
width: 100%;
|
|
height: 100%;
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
|
|
transition: left 0.5s ease;
|
|
}
|
|
|
|
.glow-button:hover::before {
|
|
left: 100%;
|
|
}
|
|
|
|
.glow-button:hover {
|
|
box-shadow: 0 0 30px rgba(0, 212, 255, 0.5);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
/* 文字渐变 */
|
|
.text-gradient {
|
|
background: linear-gradient(135deg, var(--sa-accent-cyan), var(--sa-accent-sky), var(--sa-accent-blue));
|
|
-webkit-background-clip: text;
|
|
background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
}
|
|
|
|
/* 扫描线效果 */
|
|
.scanline {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 2px;
|
|
background: linear-gradient(90deg, transparent, var(--sa-accent-cyan), transparent);
|
|
opacity: 0.5;
|
|
animation: scan 3s linear infinite;
|
|
}
|
|
|
|
@keyframes scan {
|
|
0% { top: 0; opacity: 0; }
|
|
50% { opacity: 0.5; }
|
|
100% { top: 100%; opacity: 0; }
|
|
}
|