|
|
@@ -0,0 +1,530 @@
|
|
|
+/**
|
|
|
+ * 全局通用样式系统
|
|
|
+ * Global Common Styles
|
|
|
+ *
|
|
|
+ * 包含:CSS 变量、工具类、通用组件样式、动画
|
|
|
+ */
|
|
|
+
|
|
|
+/* ===== CSS 变量定义 ===== */
|
|
|
+:root {
|
|
|
+ /* 主色调 */
|
|
|
+ --primary-color: #1e73be;
|
|
|
+ --primary-dark: #155a8a;
|
|
|
+ --primary-light: #3b82f6;
|
|
|
+
|
|
|
+ /* 渐变色 */
|
|
|
+ --primary-gradient: linear-gradient(135deg, #1e73be 0%, #3b82f6 100%);
|
|
|
+ --tech-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
|
+ --orange-gradient: linear-gradient(135deg, rgba(255, 140, 50, 0.08), rgba(255, 160, 80, 0.12), rgba(255, 140, 50, 0.08));
|
|
|
+ --header-gradient: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
|
|
|
+ --footer-gradient: linear-gradient(135deg, #0f172a 0%, #1e3c72 50%, #2a5298 100%);
|
|
|
+
|
|
|
+ /* 中性色 */
|
|
|
+ --text-primary: #1a1a1a;
|
|
|
+ --text-secondary: #4a4a4a;
|
|
|
+ --text-tertiary: #666666;
|
|
|
+ --text-muted: #999999;
|
|
|
+ --border-color: #e0e0e0;
|
|
|
+ --bg-light: #fafbfc;
|
|
|
+ --bg-lighter: #f0f2f5;
|
|
|
+
|
|
|
+ /* 阴影 */
|
|
|
+ --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
|
+ --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.12);
|
|
|
+ --shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.15);
|
|
|
+ --glow-blue: 0 0 20px rgba(30, 115, 190, 0.3);
|
|
|
+ --glow-orange: 0 0 20px rgba(255, 140, 50, 0.3);
|
|
|
+
|
|
|
+ /* 圆角 */
|
|
|
+ --radius-sm: 8px;
|
|
|
+ --radius-md: 12px;
|
|
|
+ --radius-lg: 16px;
|
|
|
+ --radius-xl: 24px;
|
|
|
+
|
|
|
+ /* 过渡动画 */
|
|
|
+ --transition-fast: all 0.2s ease;
|
|
|
+ --transition-base: all 0.3s ease;
|
|
|
+ --transition-slow: all 0.4s ease;
|
|
|
+ --transition-bounce: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
|
|
+
|
|
|
+ /* 字体 */
|
|
|
+ --font-family-base: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
|
+ --font-weight-light: 300;
|
|
|
+ --font-weight-regular: 400;
|
|
|
+ --font-weight-medium: 500;
|
|
|
+ --font-weight-semibold: 600;
|
|
|
+ --font-weight-bold: 700;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 基础排版 ===== */
|
|
|
+body {
|
|
|
+ font-family: var(--font-family-base);
|
|
|
+ color: var(--text-primary);
|
|
|
+ line-height: 1.6;
|
|
|
+ -webkit-font-smoothing: antialiased;
|
|
|
+ -moz-osx-font-smoothing: grayscale;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 工具类 - 文本 ===== */
|
|
|
+.text-primary { color: var(--text-primary); }
|
|
|
+.text-secondary { color: var(--text-secondary); }
|
|
|
+.text-muted { color: var(--text-muted); }
|
|
|
+.text-gradient {
|
|
|
+ background: var(--primary-gradient);
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ background-clip: text;
|
|
|
+}
|
|
|
+
|
|
|
+.text-center { text-align: center; }
|
|
|
+.text-left { text-align: left; }
|
|
|
+.text-right { text-align: right; }
|
|
|
+
|
|
|
+/* ===== 工具类 - 背景 ===== */
|
|
|
+.bg-light { background: var(--bg-light); }
|
|
|
+.bg-lighter { background: var(--bg-lighter); }
|
|
|
+.bg-gradient-primary { background: var(--primary-gradient); }
|
|
|
+.bg-gradient-tech { background: var(--tech-gradient); }
|
|
|
+
|
|
|
+/* ===== 工具类 - 阴影 ===== */
|
|
|
+.shadow-sm { box-shadow: var(--shadow-sm); }
|
|
|
+.shadow-md { box-shadow: var(--shadow-md); }
|
|
|
+.shadow-lg { box-shadow: var(--shadow-lg); }
|
|
|
+.shadow-glow { box-shadow: var(--glow-blue); }
|
|
|
+
|
|
|
+/* ===== 工具类 - 圆角 ===== */
|
|
|
+.radius-sm { border-radius: var(--radius-sm); }
|
|
|
+.radius-md { border-radius: var(--radius-md); }
|
|
|
+.radius-lg { border-radius: var(--radius-lg); }
|
|
|
+.radius-xl { border-radius: var(--radius-xl); }
|
|
|
+
|
|
|
+/* ===== 工具类 - 间距 ===== */
|
|
|
+.mt-1 { margin-top: 10px; }
|
|
|
+.mt-2 { margin-top: 20px; }
|
|
|
+.mt-3 { margin-top: 30px; }
|
|
|
+.mt-4 { margin-top: 40px; }
|
|
|
+.mb-1 { margin-bottom: 10px; }
|
|
|
+.mb-2 { margin-bottom: 20px; }
|
|
|
+.mb-3 { margin-bottom: 30px; }
|
|
|
+.mb-4 { margin-bottom: 40px; }
|
|
|
+.p-1 { padding: 10px; }
|
|
|
+.p-2 { padding: 20px; }
|
|
|
+.p-3 { padding: 30px; }
|
|
|
+.p-4 { padding: 40px; }
|
|
|
+
|
|
|
+/* ===== 工具类 - 布局 ===== */
|
|
|
+.d-flex { display: flex; }
|
|
|
+.flex-center {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+.flex-between {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+.flex-wrap { flex-wrap: wrap; }
|
|
|
+.gap-1 { gap: 10px; }
|
|
|
+.gap-2 { gap: 20px; }
|
|
|
+.gap-3 { gap: 30px; }
|
|
|
+
|
|
|
+/* ===== 通用组件 - 卡片 ===== */
|
|
|
+.glass-card {
|
|
|
+ background: rgba(255, 255, 255, 0.8);
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.5);
|
|
|
+ border-radius: var(--radius-lg);
|
|
|
+ backdrop-filter: blur(10px);
|
|
|
+ box-shadow: var(--shadow-md);
|
|
|
+ transition: var(--transition-bounce);
|
|
|
+}
|
|
|
+
|
|
|
+.glass-card:hover {
|
|
|
+ transform: translateY(-5px);
|
|
|
+ box-shadow: var(--shadow-lg), var(--glow-blue);
|
|
|
+ border-color: rgba(30, 115, 190, 0.3);
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 按钮 ===== */
|
|
|
+.btn-primary {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 8px;
|
|
|
+ padding: 14px 32px;
|
|
|
+ background: #fff;
|
|
|
+ color: var(--primary-color);
|
|
|
+ border: none;
|
|
|
+ border-radius: var(--radius-md);
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+ cursor: pointer;
|
|
|
+ transition: var(--transition-base);
|
|
|
+ box-shadow: var(--shadow-sm);
|
|
|
+}
|
|
|
+
|
|
|
+.btn-primary:hover {
|
|
|
+ transform: translateY(-3px);
|
|
|
+ box-shadow: var(--shadow-md);
|
|
|
+}
|
|
|
+
|
|
|
+.btn-secondary {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 8px;
|
|
|
+ padding: 14px 32px;
|
|
|
+ background: transparent;
|
|
|
+ color: #fff;
|
|
|
+ border: 2px solid rgba(255, 255, 255, 0.5);
|
|
|
+ border-radius: var(--radius-md);
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+ cursor: pointer;
|
|
|
+ transition: var(--transition-base);
|
|
|
+}
|
|
|
+
|
|
|
+.btn-secondary:hover {
|
|
|
+ background: rgba(255, 255, 255, 0.1);
|
|
|
+ border-color: #fff;
|
|
|
+ transform: translateY(-3px);
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 章节标题 ===== */
|
|
|
+.section-header {
|
|
|
+ text-align: center;
|
|
|
+ margin-bottom: 60px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-tag {
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 8px;
|
|
|
+ padding: 8px 16px;
|
|
|
+ background: rgba(30, 115, 190, 0.1);
|
|
|
+ border-radius: 20px;
|
|
|
+ margin-bottom: 16px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-tag .tag-dot {
|
|
|
+ width: 8px;
|
|
|
+ height: 8px;
|
|
|
+ background: var(--primary-color);
|
|
|
+ border-radius: 50%;
|
|
|
+ animation: blink 2s ease-in-out infinite;
|
|
|
+}
|
|
|
+
|
|
|
+.section-tag span {
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+ color: var(--primary-color);
|
|
|
+ letter-spacing: 1px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-title {
|
|
|
+ font-size: 36px;
|
|
|
+ font-weight: var(--font-weight-bold);
|
|
|
+ color: var(--text-primary);
|
|
|
+ margin: 16px 0 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.section-subtitle {
|
|
|
+ font-size: 16px;
|
|
|
+ color: var(--text-muted);
|
|
|
+ font-weight: var(--font-weight-regular);
|
|
|
+ letter-spacing: 1px;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 信息卡片 ===== */
|
|
|
+.info-card {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ gap: 10px;
|
|
|
+ padding: 12px 20px;
|
|
|
+ background: rgba(255, 255, 255, 0.05);
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+ border-radius: var(--radius-md);
|
|
|
+ backdrop-filter: blur(10px);
|
|
|
+ transition: var(--transition-base);
|
|
|
+}
|
|
|
+
|
|
|
+.info-card:hover {
|
|
|
+ background: rgba(255, 255, 255, 0.1);
|
|
|
+ border-color: rgba(30, 115, 190, 0.5);
|
|
|
+ transform: translateY(-3px);
|
|
|
+ box-shadow: var(--shadow-md);
|
|
|
+}
|
|
|
+
|
|
|
+.info-card i {
|
|
|
+ font-size: 16px;
|
|
|
+ color: #60a5fa;
|
|
|
+}
|
|
|
+
|
|
|
+.info-card span {
|
|
|
+ white-space: nowrap;
|
|
|
+ font-size: 14px;
|
|
|
+ color: rgba(255, 255, 255, 0.8);
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 场景卡片 ===== */
|
|
|
+.scenario-card {
|
|
|
+ background: #fff;
|
|
|
+ border: 1px solid var(--border-color);
|
|
|
+ border-radius: var(--radius-md);
|
|
|
+ padding: 25px;
|
|
|
+ transition: var(--transition-base);
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.scenario-card:hover {
|
|
|
+ box-shadow: var(--shadow-md);
|
|
|
+ transform: translateY(-5px);
|
|
|
+}
|
|
|
+
|
|
|
+.scenario-icon {
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
+ margin: 0 auto 15px;
|
|
|
+ background: #f5f5f5;
|
|
|
+ border-radius: 50%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+
|
|
|
+.scenario-icon i {
|
|
|
+ font-size: 24px;
|
|
|
+ color: var(--primary-color);
|
|
|
+}
|
|
|
+
|
|
|
+.scenario-card h4 {
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+ color: var(--text-primary);
|
|
|
+ margin-bottom: 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.scenario-card p {
|
|
|
+ font-size: 13px;
|
|
|
+ line-height: 1.6;
|
|
|
+ color: var(--text-tertiary);
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 特性列表 ===== */
|
|
|
+.feature-list {
|
|
|
+ list-style: none;
|
|
|
+ padding: 0;
|
|
|
+ margin: 20px 0;
|
|
|
+}
|
|
|
+
|
|
|
+.feature-list li {
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-start;
|
|
|
+ gap: 10px;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 2.2;
|
|
|
+ color: var(--text-tertiary);
|
|
|
+}
|
|
|
+
|
|
|
+.feature-list li i {
|
|
|
+ color: var(--primary-color);
|
|
|
+ font-size: 16px;
|
|
|
+ flex-shrink: 0;
|
|
|
+ margin-top: 2px;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 流程步骤 ===== */
|
|
|
+.process-step {
|
|
|
+ padding: 20px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.process-step .step-number {
|
|
|
+ width: 50px;
|
|
|
+ height: 50px;
|
|
|
+ margin: 0 auto 15px;
|
|
|
+ background: var(--primary-gradient);
|
|
|
+ color: #fff;
|
|
|
+ border-radius: 50%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: var(--font-weight-bold);
|
|
|
+}
|
|
|
+
|
|
|
+.process-step h5 {
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+ color: var(--text-primary);
|
|
|
+ margin: 15px 0 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.process-step p {
|
|
|
+ font-size: 13px;
|
|
|
+ color: var(--text-tertiary);
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 交付物卡片 ===== */
|
|
|
+.deliverable-card {
|
|
|
+ background: #fff;
|
|
|
+ border: 1px solid var(--border-color);
|
|
|
+ border-radius: var(--radius-md);
|
|
|
+ padding: 25px;
|
|
|
+ text-align: center;
|
|
|
+ transition: var(--transition-base);
|
|
|
+}
|
|
|
+
|
|
|
+.deliverable-card:hover {
|
|
|
+ box-shadow: var(--shadow-md);
|
|
|
+ transform: translateY(-3px);
|
|
|
+}
|
|
|
+
|
|
|
+.deliverable-icon {
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
+ margin: 0 auto 15px;
|
|
|
+ background: #f5f5f5;
|
|
|
+ border-radius: 50%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+
|
|
|
+.deliverable-icon i {
|
|
|
+ font-size: 24px;
|
|
|
+ color: var(--primary-color);
|
|
|
+}
|
|
|
+
|
|
|
+.deliverable-card h5 {
|
|
|
+ font-size: 15px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+ color: var(--text-primary);
|
|
|
+ margin: 15px 0 5px;
|
|
|
+}
|
|
|
+
|
|
|
+.deliverable-card p {
|
|
|
+ font-size: 12px;
|
|
|
+ color: var(--text-muted);
|
|
|
+ margin: 0;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 通用组件 - 信息框 ===== */
|
|
|
+.info-box {
|
|
|
+ background: #f8f9fa;
|
|
|
+ border-left: 4px solid var(--primary-color);
|
|
|
+ padding: 20px;
|
|
|
+ margin: 20px 0;
|
|
|
+}
|
|
|
+
|
|
|
+.info-box h4 {
|
|
|
+ color: var(--primary-color);
|
|
|
+ margin-bottom: 10px;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+}
|
|
|
+
|
|
|
+.info-box p {
|
|
|
+ margin: 0;
|
|
|
+ font-size: 14px;
|
|
|
+ line-height: 1.6;
|
|
|
+ color: var(--text-tertiary);
|
|
|
+}
|
|
|
+
|
|
|
+.info-box strong {
|
|
|
+ color: var(--primary-color);
|
|
|
+ font-weight: var(--font-weight-semibold);
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 动画效果 ===== */
|
|
|
+
|
|
|
+/* 闪烁动画 */
|
|
|
+@keyframes blink {
|
|
|
+ 0%, 100% { opacity: 1; }
|
|
|
+ 50% { opacity: 0.4; }
|
|
|
+}
|
|
|
+
|
|
|
+/* 浮动动画 */
|
|
|
+@keyframes float {
|
|
|
+ 0%, 100% { transform: translate(0, 0); }
|
|
|
+ 50% { transform: translate(30px, 40px); }
|
|
|
+}
|
|
|
+
|
|
|
+/* 旋转光晕动画 */
|
|
|
+@keyframes rotate-glow {
|
|
|
+ 0% { transform: translate(-50%, -50%) scale(0.6) rotate(0deg); }
|
|
|
+ 100% { transform: translate(-50%, -50%) scale(0.6) rotate(360deg); }
|
|
|
+}
|
|
|
+
|
|
|
+/* 流光动画 */
|
|
|
+@keyframes shimmer {
|
|
|
+ 0% { left: -100%; }
|
|
|
+ 100% { left: 100%; }
|
|
|
+}
|
|
|
+
|
|
|
+/* 渐变背景动画 */
|
|
|
+@keyframes gradient-shift {
|
|
|
+ 0% { background-position: 0% 50%; }
|
|
|
+ 50% { background-position: 100% 50%; }
|
|
|
+ 100% { background-position: 0% 50%; }
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 动画工具类 ===== */
|
|
|
+.animate-float {
|
|
|
+ animation: float 6s ease-in-out infinite;
|
|
|
+}
|
|
|
+
|
|
|
+.animate-blink {
|
|
|
+ animation: blink 2s ease-in-out infinite;
|
|
|
+}
|
|
|
+
|
|
|
+.animate-rotate {
|
|
|
+ animation: rotate-glow 3s linear infinite;
|
|
|
+}
|
|
|
+
|
|
|
+.animate-shimmer {
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.animate-shimmer::before {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 0;
|
|
|
+ left: -100%;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
|
|
|
+ animation: shimmer 3s infinite;
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 响应式断点工具类 ===== */
|
|
|
+@media screen and (max-width: 1199px) {
|
|
|
+ :root {
|
|
|
+ --desktop-padding-x: 20px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+@media screen and (max-width: 991px) {
|
|
|
+ .hidden-tablet {
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+@media screen and (max-width: 767px) {
|
|
|
+ :root {
|
|
|
+ --desktop-padding-x: 15px;
|
|
|
+ --tablet-padding-x: 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .hidden-mobile {
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* ===== 打印样式 ===== */
|
|
|
+@media print {
|
|
|
+ .no-print {
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+}
|