/* ============================ 郑州晟算科技有限公司 - 官网样式 v3 暗色科技风 · 高级交互动效 ============================ */ /* === CSS 变量 === */ :root { --bg-deep: #060a07; --bg-dark: #0a0f0b; --bg-card: #10180f; --bg-card-hover: #14201360; --border-subtle: rgba(200, 255, 0, 0.07); --border-glow: rgba(200, 255, 0, 0.3); --text-primary: #e8f2e9; --text-secondary: #8ba392; --text-muted: #556b5c; --blue: #00e676; --blue-glow: #4dffa6; --cyan: #c8ff00; --cyan-dark: #6b9e00; --purple: #ff9f1c; --purple-glow: #ffd166; --green: #00e676; --red: #ff3355; --orange: #ffb020; --font-sans: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif; --font-mono: "SF Mono", "Fira Code", "Consolas", "Courier New", monospace; --shadow-glow: 0 0 30px rgba(0, 230, 118, 0.15); --shadow-glow-strong: 0 0 60px rgba(200, 255, 0, 0.2); --radius-sm: 6px; --radius-md: 12px; --radius-lg: 20px; --radius-xl: 28px; --header-height: 76px; --max-width: 1200px; --transition: 0.35s cubic-bezier(0.22, 1, 0.36, 1); } /* === 基础重置 === */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; font-size: 16px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: var(--bg-deep); } body { font-family: var(--font-sans); color: var(--text-secondary); line-height: 1.7; background: var(--bg-deep); overflow-x: hidden; } a { text-decoration: none; color: inherit; transition: var(--transition); } ul, ol { list-style: none; } img { max-width: 100%; height: auto; display: block; } button { font-family: inherit; cursor: pointer; border: none; background: none; } input, textarea, select { font-family: inherit; font-size: inherit; } ::selection { background: rgba(200, 255, 0, 0.2); color: var(--text-primary); } /* ======================================== 自定义光标 ======================================== */ .cursor-dot { position: fixed; top: 0; left: 0; width: 8px; height: 8px; background: var(--cyan); border-radius: 50%; pointer-events: none; z-index: 99999; transform: translate(-50%, -50%); transition: transform 0.08s; mix-blend-mode: difference; opacity: 0; } .cursor-ring { position: fixed; top: 0; left: 0; width: 36px; height: 36px; border: 1.5px solid rgba(200, 255, 0, 0.4); border-radius: 50%; pointer-events: none; z-index: 99998; transform: translate(-50%, -50%); opacity: 0; transition: width 0.3s, height 0.3s, border-color 0.3s, background 0.3s; } .cursor-ring.hovering { width: 60px; height: 60px; border-color: rgba(200, 255, 0, 0.8); background: rgba(200, 255, 0, 0.05); } .cursor-ring.clicking { width: 20px; height: 20px; border-color: var(--cyan); } /* JS激活后才隐藏系统光标 */ body.custom-cursor-active, body.custom-cursor-active a, body.custom-cursor-active button, body.custom-cursor-active input, body.custom-cursor-active textarea, body.custom-cursor-active select, body.custom-cursor-active .btn, body.custom-cursor-active .menu-toggle, body.custom-cursor-active .form-input, body.custom-cursor-active .form-select, body.custom-cursor-active .form-textarea, body.custom-cursor-active .form-submit { cursor: none !important; } /* 触摸设备隐藏自定义光标 */ @media (pointer: coarse) { .cursor-dot, .cursor-ring { display: none !important; } body, a, button, input, textarea, select { cursor: auto !important; } } /* ======================================== 启动加载屏 ======================================== */ .loading-screen { position: fixed; inset: 0; background: var(--bg-deep); z-index: 100000; display: flex; align-items: center; justify-content: center; flex-direction: column; transition: opacity 0.6s ease, visibility 0.6s; } .loading-screen.hide { opacity: 0; visibility: hidden; pointer-events: none; } .loading-terminal { width: 420px; max-width: 90vw; background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); overflow: hidden; box-shadow: 0 20px 80px rgba(0, 0, 0, 0.6), 0 0 40px rgba(200, 255, 0, 0.1); } .terminal-header { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: var(--bg-dark); border-bottom: 1px solid var(--border-subtle); } .terminal-dot { width: 12px; height: 12px; border-radius: 50%; } .terminal-dot:nth-child(1) { background: var(--red); } .terminal-dot:nth-child(2) { background: var(--orange); } .terminal-dot:nth-child(3) { background: var(--green); } .terminal-title { font-size: 12px; color: var(--text-muted); font-family: var(--font-mono); margin-left: auto; letter-spacing: 1px; } .terminal-body { padding: 20px; font-family: var(--font-mono); font-size: 14px; line-height: 1.9; color: var(--text-secondary); } .terminal-line { display: flex; gap: 8px; opacity: 0; animation: fadeIn 0.3s forwards; } .terminal-prompt { color: var(--green); flex-shrink: 0; } .terminal-text { color: var(--text-muted); } .terminal-text.typing { color: var(--cyan); } .terminal-text.ok { color: var(--green); } .loading-logo { margin-bottom: 40px; font-size: 48px; font-weight: 900; color: var(--text-primary); letter-spacing: 4px; font-family: var(--font-mono); } .loading-logo span { color: var(--cyan); } /* ======================================== 滚动进度条 ======================================== */ .scroll-progress { position: fixed; top: 0; left: 0; height: 3px; background: linear-gradient(90deg, var(--blue), var(--cyan), var(--purple)); z-index: 10001; transition: width 0.1s linear; box-shadow: 0 0 10px rgba(200, 255, 0, 0.3); pointer-events: none; } /* ======================================== 粒子画布 ======================================== */ #particlesCanvas { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; } /* ======================================== 通用容器 ======================================== */ .container { max-width: var(--max-width); margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; } /* ======================================== 按钮 ======================================== */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 36px; font-size: 16px; font-weight: 600; border-radius: 50px; transition: var(--transition); white-space: nowrap; cursor: pointer; position: relative; overflow: hidden; border: none; } .btn::after { content: ""; position: absolute; inset: 0; opacity: 0; transition: opacity 0.35s; } .btn-primary { background: linear-gradient(135deg, var(--blue), var(--cyan-dark)); color: #fff; box-shadow: 0 0 30px rgba(200, 255, 0, 0.2); } .btn-primary:hover { box-shadow: 0 0 50px rgba(200, 255, 0, 0.4); transform: translateY(-3px); } .btn-outline { background: transparent; color: var(--text-primary); border: 1.5px solid rgba(255, 255, 255, 0.15); } .btn-outline:hover { border-color: var(--cyan); background: rgba(200, 255, 0, 0.06); box-shadow: 0 0 30px rgba(200, 255, 0, 0.15); transform: translateY(-3px); } .btn-lg { padding: 16px 48px; font-size: 18px; } /* 磁性按钮 */ .magnetic { will-change: transform; transition: transform 0.15s ease-out; } /* ======================================== 文字渐变 ======================================== */ .text-gradient { background: linear-gradient(135deg, var(--blue-glow) 0%, var(--cyan) 50%, var(--purple-glow) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; background-size: 200% 100%; animation: gradientFlow 4s ease-in-out infinite; } @keyframes gradientFlow { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } /* ======================================== 文字乱序解码效果 ======================================== */ .scramble-text { display: inline-block; font-family: var(--font-mono); } /* ======================================== 故障效果 (Glitch) ======================================== */ .glitch { position: relative; display: inline-block; } .glitch::before, .glitch::after { content: attr(data-text); position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; } .glitch::before { animation: glitch-1 4s infinite; color: var(--cyan); clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%); } .glitch::after { animation: glitch-2 4s infinite; color: var(--purple); clip-path: polygon(0 60%, 100% 60%, 100% 100%, 0 100%); } @keyframes glitch-1 { 0%, 90%, 100% { opacity: 0; } 92% { opacity: 0.8; transform: translate(-4px, -2px); } 94% { opacity: 0.6; transform: translate(4px, 2px); } 96% { opacity: 0.4; transform: translate(-2px, 1px); } 98% { opacity: 0.8; transform: translate(2px, -1px); } } @keyframes glitch-2 { 0%, 90%, 100% { opacity: 0; } 92% { opacity: 0.8; transform: translate(4px, 2px); } 94% { opacity: 0.6; transform: translate(-4px, -2px); } 96% { opacity: 0.4; transform: translate(2px, -1px); } 98% { opacity: 0.8; transform: translate(-2px, 1px); } } /* ======================================== 区块标题 ======================================== */ .section { padding: 120px 0; position: relative; z-index: 1; } .section-header { text-align: center; max-width: 680px; margin: 0 auto 80px; } .section-label { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: var(--cyan); margin-bottom: 24px; font-family: var(--font-mono); } .section-label::before { content: "//"; color: var(--text-muted); font-size: 11px; } .section-title { font-size: 42px; font-weight: 800; color: var(--text-primary); line-height: 1.25; margin-bottom: 20px; letter-spacing: -0.5px; } .section-subtitle { font-size: 17px; color: var(--text-muted); line-height: 1.8; } /* ======================================== 导航栏 ======================================== */ .header { position: fixed; top: 0; left: 0; right: 0; height: var(--header-height); background: rgba(7, 11, 20, 0.85); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); z-index: 1000; transition: var(--transition); border-bottom: 1px solid transparent; } .header.scrolled { border-bottom-color: var(--border-subtle); box-shadow: 0 4px 30px rgba(0, 0, 0, 0.4); } .header-inner { max-width: var(--max-width); height: 100%; margin: 0 auto; padding: 0 24px; display: flex; align-items: center; justify-content: space-between; } .logo { display: flex; align-items: center; gap: 12px; color: var(--text-primary); position: relative; } .logo-icon { width: 42px; height: 42px; background: linear-gradient(135deg, var(--blue), var(--cyan)); border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 22px; font-weight: 700; flex-shrink: 0; box-shadow: 0 0 20px rgba(200, 255, 0, 0.25); transition: var(--transition); position: relative; overflow: hidden; } .logo-icon::after { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 40%, rgba(255,255,255,0.2) 50%, transparent 60%); transform: translateX(-100%); transition: transform 0.6s; } .logo:hover .logo-icon::after { transform: translateX(100%); } .logo:hover .logo-icon { box-shadow: 0 0 35px rgba(200, 255, 0, 0.5); } .logo-text { font-size: 20px; font-weight: 800; line-height: 1.3; letter-spacing: -0.5px; } .logo-text small { display: block; font-size: 10px; font-weight: 500; color: var(--text-muted); letter-spacing: 1px; } .nav { display: flex; align-items: center; gap: 4px; } .nav-link { padding: 8px 18px; font-size: 15px; font-weight: 600; color: var(--text-muted); border-radius: 50px; transition: var(--transition); position: relative; } .nav-link::after { content: ""; position: absolute; bottom: 2px; left: 50%; width: 0; height: 2px; background: linear-gradient(90deg, var(--cyan), var(--blue)); border-radius: 2px; transition: width 0.3s, left 0.3s; } .nav-link:hover::after, .nav-link.active::after { width: 20px; left: calc(50% - 10px); } .nav-link:hover { color: var(--text-primary); } .nav-link.active { color: var(--cyan); } .nav-cta { margin-left: 16px; padding: 10px 26px; font-size: 14px; font-weight: 700; background: linear-gradient(135deg, var(--blue), var(--cyan-dark)); color: #fff; border-radius: 50px; box-shadow: 0 0 20px rgba(200, 255, 0, 0.2); position: relative; overflow: hidden; } .nav-cta::before { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, transparent 40%, rgba(255,255,255,0.15) 50%, transparent 60%); transform: translateX(-100%); transition: transform 0.6s; } .nav-cta:hover::before { transform: translateX(100%); } .nav-cta:hover { box-shadow: 0 0 35px rgba(200, 255, 0, 0.4); color: #fff; transform: translateY(-1px); } .menu-toggle { display: none; flex-direction: column; gap: 5px; padding: 8px; cursor: pointer; z-index: 1001; } .menu-toggle span { width: 24px; height: 2px; background: var(--text-primary); border-radius: 2px; transition: var(--transition); } .menu-toggle.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); } .menu-toggle.active span:nth-child(2) { opacity: 0; } .menu-toggle.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); } /* ======================================== Hero 区域 ======================================== */ .hero { position: relative; min-height: 100vh; display: flex; align-items: center; padding-top: var(--header-height); overflow: hidden; } .hero-orb { position: absolute; border-radius: 50%; filter: blur(100px); pointer-events: none; will-change: transform; } .hero-orb-1 { width: 600px; height: 600px; background: rgba(0, 230, 118, 0.12); top: -15%; right: -8%; animation: orbFloat 12s ease-in-out infinite; } .hero-orb-2 { width: 500px; height: 500px; background: rgba(255, 159, 28, 0.08); bottom: -20%; left: -10%; animation: orbFloat 15s ease-in-out infinite reverse; } .hero-orb-3 { width: 400px; height: 400px; background: rgba(200, 255, 0, 0.1); top: 40%; left: 30%; animation: orbFloat 10s ease-in-out infinite; } .hero-grid-overlay { position: absolute; inset: 0; 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: 60px 60px; mask-image: radial-gradient(ellipse 70% 60% at center, black 20%, transparent 65%); -webkit-mask-image: radial-gradient(ellipse 70% 60% at center, black 20%, transparent 65%); pointer-events: none; } .hero-content { position: relative; z-index: 3; text-align: center; max-width: 860px; margin: 0 auto; padding: 0 24px; } .hero-tag { display: inline-flex; align-items: center; gap: 8px; background: rgba(200, 255, 0, 0.08); border: 1px solid rgba(200, 255, 0, 0.15); color: var(--cyan); font-size: 14px; font-weight: 600; padding: 8px 22px; border-radius: 50px; margin-bottom: 36px; backdrop-filter: blur(10px); font-family: var(--font-mono); letter-spacing: 0.5px; } .hero-tag-dot { width: 7px; height: 7px; background: var(--cyan); border-radius: 50%; animation: dotPulse 1.5s ease-in-out infinite; } .hero-title { font-size: clamp(40px, 7vw, 68px); font-weight: 900; color: var(--text-primary); line-height: 1.12; margin-bottom: 28px; letter-spacing: -1.5px; } .hero-subtitle { font-size: 18px; color: var(--text-muted); line-height: 1.8; margin-bottom: 44px; max-width: 560px; margin-left: auto; margin-right: auto; } .hero-actions { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; margin-bottom: 80px; } /* Hero 底部滚动提示 */ .scroll-hint { position: absolute; bottom: 40px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 8px; color: var(--text-muted); font-size: 11px; font-family: var(--font-mono); letter-spacing: 2px; opacity: 0.6; animation: scrollPulse 2s ease-in-out infinite; } .scroll-hint-line { width: 1px; height: 32px; background: linear-gradient(to bottom, var(--text-muted), transparent); } /* ======================================== 页面通用 Hero ======================================== */ .page-hero { position: relative; padding: calc(var(--header-height) + 80px) 0 80px; text-align: center; overflow: hidden; } .page-hero-orb { position: absolute; border-radius: 50%; filter: blur(80px); pointer-events: none; } .page-hero-orb-1 { width: 500px; height: 500px; background: rgba(0, 230, 118, 0.1); top: -20%; right: -10%; } .page-hero-orb-2 { width: 400px; height: 400px; background: rgba(255, 159, 28, 0.07); bottom: -20%; left: -5%; } .page-hero-content { position: relative; z-index: 2; max-width: 680px; margin: 0 auto; padding: 0 24px; } .page-hero-content h1 { font-size: clamp(32px, 6vw, 52px); font-weight: 900; color: var(--text-primary); margin-bottom: 18px; letter-spacing: -1px; } .page-hero-content p { font-size: 18px; color: var(--text-muted); line-height: 1.8; } .breadcrumb { display: flex; gap: 8px; align-items: center; justify-content: center; margin-top: 32px; font-size: 14px; color: var(--text-muted); font-family: var(--font-mono); } .breadcrumb a:hover { color: var(--cyan); } .breadcrumb .current { color: var(--text-secondary); } /* ======================================== 卡片 - 3D 倾斜 + 鼠标追踪光效 ======================================== */ .card { background: var(--bg-card); border-radius: var(--radius-lg); padding: 40px; border: 1px solid var(--border-subtle); transition: border-color 0.4s, box-shadow 0.4s; position: relative; overflow: hidden; transform-style: preserve-3d; will-change: transform; } .card::before { content: ""; position: absolute; inset: 0; border-radius: var(--radius-lg); background: linear-gradient(135deg, rgba(0,230,118,0.05) 0%, rgba(200,255,0,0.03) 100%); opacity: 0; transition: opacity 0.5s; } .card:hover { border-color: var(--border-glow); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4), var(--shadow-glow); } .card:hover::before { opacity: 1; } /* 鼠标追踪光斑 */ .card-glow { position: absolute; width: 200px; height: 200px; background: radial-gradient(circle, rgba(200, 255, 0, 0.08) 0%, transparent 70%); border-radius: 50%; pointer-events: none; opacity: 0; transition: opacity 0.4s; z-index: 0; } .card:hover .card-glow { opacity: 1; } /* 卡片内容需要 z-index 高于光斑 */ .card > * { position: relative; z-index: 1; } /* ======================================== 产品预告卡片 ======================================== */ .teaser-card { background: var(--bg-card); border-radius: var(--radius-xl); border: 1px solid var(--border-subtle); padding: 52px 40px; text-align: center; transition: border-color 0.4s, box-shadow 0.4s; position: relative; overflow: hidden; height: 100%; display: flex; flex-direction: column; align-items: center; transform-style: preserve-3d; will-change: transform; } .teaser-card .glow-line { position: absolute; top: 0; left: 20%; right: 20%; height: 1px; background: linear-gradient(90deg, transparent, var(--cyan), transparent); opacity: 0; transition: opacity 0.5s; } .teaser-card:hover { border-color: var(--border-glow); box-shadow: 0 20px 60px rgba(0,0,0,0.4), 0 0 40px rgba(200,255,0,0.1); } .teaser-card:hover .glow-line { opacity: 1; } .teaser-icon { width: 72px; height: 72px; border-radius: 20px; display: flex; align-items: center; justify-content: center; margin-bottom: 28px; font-size: 30px; position: relative; transition: transform 0.3s; } .teaser-card:hover .teaser-icon { transform: scale(1.1); } .teaser-icon::after { content: ""; position: absolute; inset: -4px; border-radius: 24px; border: 1px solid transparent; transition: var(--transition); } .teaser-card:hover .teaser-icon::after { inset: -8px; border-color: rgba(200, 255, 0, 0.1); } .teaser-card h3 { font-size: 24px; font-weight: 800; color: var(--text-primary); margin-bottom: 12px; } .status-badge { display: inline-block; padding: 4px 14px; border-radius: 50px; font-size: 12px; font-weight: 700; letter-spacing: 1px; font-family: var(--font-mono); margin-bottom: 18px; } .status-dev { background: rgba(255, 176, 32, 0.12); color: var(--orange); border: 1px solid rgba(255, 176, 32, 0.2); } .status-coming { background: rgba(255, 159, 28, 0.12); color: var(--purple); border: 1px solid rgba(255, 159, 28, 0.2); } .status-vision { background: rgba(200, 255, 0, 0.12); color: var(--cyan); border: 1px solid rgba(200, 255, 0, 0.2); } .teaser-card p { font-size: 15px; color: var(--text-muted); line-height: 1.8; max-width: 300px; } /* ======================================== 网格 ======================================== */ .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 32px; } .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; } .grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; } /* ======================================== 信念卡片 ======================================== */ .belief-card { background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 44px; transition: border-color 0.4s, box-shadow 0.4s; position: relative; transform-style: preserve-3d; will-change: transform; } .belief-card:hover { border-color: var(--border-glow); box-shadow: var(--shadow-glow); } .belief-number { font-family: var(--font-mono); font-size: 13px; font-weight: 700; letter-spacing: 2px; margin-bottom: 20px; } .belief-card h3 { font-size: 24px; font-weight: 800; color: var(--text-primary); margin-bottom: 14px; } .belief-card p { font-size: 15px; color: var(--text-muted); line-height: 1.9; } /* ======================================== 特性卡片 ======================================== */ .feature-card { background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 36px 28px; text-align: center; transition: border-color 0.4s, box-shadow 0.4s; height: 100%; transform-style: preserve-3d; will-change: transform; } .feature-card:hover { border-color: var(--border-glow); box-shadow: 0 20px 60px rgba(0,0,0,0.4), var(--shadow-glow); } .feature-icon { width: 60px; height: 60px; margin: 0 auto 24px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 26px; background: rgba(0, 230, 118, 0.1); color: var(--blue-glow); transition: var(--transition); } .feature-card:hover .feature-icon { box-shadow: 0 0 30px rgba(0, 230, 118, 0.2); } .feature-card h3 { font-size: 20px; font-weight: 700; color: var(--text-primary); margin-bottom: 12px; } .feature-card p { font-size: 14px; color: var(--text-muted); line-height: 1.8; } /* ======================================== 关于页面 ======================================== */ .about-story { display: grid; grid-template-columns: 1fr 1fr; gap: 72px; align-items: center; } .about-story-text h2 { font-size: 36px; font-weight: 800; color: var(--text-primary); line-height: 1.25; margin-bottom: 24px; letter-spacing: -0.5px; } .about-story-text p { font-size: 16px; color: var(--text-muted); line-height: 2; margin-bottom: 18px; } .about-story-visual { position: relative; } .about-visual-block { background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); padding: 52px; position: relative; overflow: hidden; transform-style: preserve-3d; will-change: transform; } .about-visual-block::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--blue), var(--cyan), var(--purple)); animation: gradientShift 3s ease infinite; background-size: 200% 100%; } .about-visual-block .big-quote { font-size: 44px; font-weight: 900; color: var(--text-primary); line-height: 1.3; margin-bottom: 24px; } .about-visual-block .big-quote span { color: var(--cyan); } .about-visual-block .author { font-size: 14px; color: var(--text-muted); font-family: var(--font-mono); letter-spacing: 1px; } /* 哲学区 */ .philosophy-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; } .philosophy-item { text-align: center; padding: 36px 24px; background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); transition: border-color 0.4s, box-shadow 0.4s; transform-style: preserve-3d; will-change: transform; } .philosophy-item:hover { border-color: var(--border-glow); box-shadow: 0 10px 40px rgba(0,0,0,0.3), var(--shadow-glow); } .philosophy-emoji { font-size: 40px; margin-bottom: 20px; display: block; transition: transform 0.3s; } .philosophy-item:hover .philosophy-emoji { transform: scale(1.2) rotate(10deg); } .philosophy-item h3 { font-size: 19px; font-weight: 700; color: var(--text-primary); margin-bottom: 10px; } .philosophy-item p { font-size: 14px; color: var(--text-muted); line-height: 1.8; } /* 结构块 */ .structure-block { border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 44px; background: var(--bg-card); } .structure-block h3 { font-size: 22px; font-weight: 800; color: var(--text-primary); margin-bottom: 32px; display: flex; align-items: center; gap: 10px; } .structure-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; } .structure-item { padding: 28px; background: rgba(255,255,255,0.02); border-radius: var(--radius-md); text-align: center; border: 1px solid transparent; transition: var(--transition); } .structure-item:hover { border-color: var(--border-subtle); background: rgba(255,255,255,0.04); } .structure-item .num { font-size: 36px; font-weight: 900; color: var(--cyan); font-family: var(--font-mono); opacity: 0.5; margin-bottom: 12px; } .structure-item h4 { font-size: 17px; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; } .structure-item p { font-size: 14px; color: var(--text-muted); line-height: 1.8; } /* ======================================== 产品页面 - 预告展示 ======================================== */ .teaser-hero { display: flex; gap: 40px; align-items: stretch; } .teaser-main { flex: 1; background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); padding: 52px 44px; position: relative; overflow: hidden; transform-style: preserve-3d; will-change: transform; } .teaser-main::before { content: ""; position: absolute; width: 300px; height: 300px; background: radial-gradient(circle, rgba(0,230,118,0.08), transparent 70%); border-radius: 50%; top: -20%; right: -10%; } .teaser-main .emoji { font-size: 48px; margin-bottom: 28px; display: block; } .teaser-main h3 { font-size: 32px; font-weight: 800; color: var(--text-primary); margin-bottom: 16px; position: relative; } .teaser-main h3 .status { display: inline-block; padding: 2px 12px; font-size: 11px; font-weight: 700; letter-spacing: 2px; font-family: var(--font-mono); background: rgba(255,176,32,0.15); color: var(--orange); border-radius: 50px; margin-left: 12px; vertical-align: middle; } .teaser-main p { font-size: 16px; color: var(--text-muted); line-height: 1.9; margin-bottom: 20px; position: relative; max-width: 460px; } .teaser-main .tag-list { display: flex; flex-wrap: wrap; gap: 8px; position: relative; } .teaser-main .tag-list span { padding: 6px 16px; font-size: 13px; font-weight: 600; border-radius: 50px; background: rgba(200,255,0,0.06); color: var(--cyan); border: 1px solid rgba(200,255,0,0.12); transition: var(--transition); } .teaser-main .tag-list span:hover { background: rgba(200,255,0,0.12); transform: translateY(-2px); } .teaser-side { width: 340px; display: flex; flex-direction: column; gap: 20px; } .teaser-side-item { flex: 1; background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 32px 28px; transition: border-color 0.4s, box-shadow 0.4s; position: relative; overflow: hidden; transform-style: preserve-3d; will-change: transform; } .teaser-side-item:hover { border-color: var(--border-glow); } .indicator { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-bottom: 16px; } .indicator-purple { background: var(--purple); box-shadow: 0 0 12px var(--purple); } .indicator-cyan { background: var(--cyan); box-shadow: 0 0 12px var(--cyan); animation: dotPulse 2s ease-in-out infinite; } .teaser-side-item h4 { font-size: 19px; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; } .teaser-side-item p { font-size: 14px; color: var(--text-muted); line-height: 1.7; } .teaser-side-item .eta { font-family: var(--font-mono); font-size: 11px; letter-spacing: 1px; color: var(--text-muted); margin-top: 12px; } /* 产品愿景区 */ .vision-strip { position: relative; padding: 80px 0; overflow: hidden; } .vision-strip::before { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,230,118,0.03) 0%, rgba(255,159,28,0.03) 100%); } .vision-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; text-align: center; } .vision-item .vision-icon { font-size: 36px; margin-bottom: 18px; display: block; transition: transform 0.3s; } .vision-item:hover .vision-icon { transform: scale(1.3); } .vision-item h4 { font-size: 18px; font-weight: 700; color: var(--text-primary); margin-bottom: 8px; } .vision-item p { font-size: 14px; color: var(--text-muted); line-height: 1.8; } /* ======================================== 联系页面 ======================================== */ .contact-layout { display: grid; grid-template-columns: 1fr 1.2fr; gap: 48px; align-items: start; } .contact-card-dark { background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); padding: 48px; position: relative; overflow: hidden; } .contact-card-dark::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--blue), var(--cyan), var(--purple)); animation: gradientShift 3s ease infinite; background-size: 200% 100%; } .contact-card-dark h3 { font-size: 28px; font-weight: 800; color: var(--text-primary); margin-bottom: 10px; } .contact-card-dark > p { font-size: 15px; color: var(--text-muted); margin-bottom: 40px; line-height: 1.8; } .contact-info-row { display: flex; align-items: flex-start; gap: 16px; margin-bottom: 28px; padding-bottom: 24px; border-bottom: 1px solid var(--border-subtle); } .contact-info-row:last-of-type { border-bottom: none; } .contact-info-icon { flex-shrink: 0; width: 46px; height: 46px; background: rgba(200, 255, 0, 0.08); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: var(--cyan); } .contact-info-text .ci-label { font-size: 12px; color: var(--text-muted); letter-spacing: 1px; font-family: var(--font-mono); margin-bottom: 4px; } .contact-info-text .ci-value { font-size: 16px; font-weight: 600; color: var(--text-primary); line-height: 1.6; } .contact-form-dark { background: var(--bg-card); border: 1px solid var(--border-subtle); border-radius: var(--radius-xl); padding: 48px; } .contact-form-dark h3 { font-size: 28px; font-weight: 800; color: var(--text-primary); margin-bottom: 8px; } .contact-form-dark > p { font-size: 15px; color: var(--text-muted); margin-bottom: 36px; } .form-group { margin-bottom: 22px; } .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; } .form-label { display: block; font-size: 13px; font-weight: 600; color: var(--text-secondary); margin-bottom: 8px; letter-spacing: 0.5px; } .form-label .required { color: var(--red); } .form-input, .form-select, .form-textarea { width: 100%; padding: 14px 18px; font-size: 15px; color: var(--text-primary); background: var(--bg-dark); border: 1.5px solid var(--border-subtle); border-radius: var(--radius-md); transition: var(--transition); outline: none; } .form-input:focus, .form-select:focus, .form-textarea:focus { border-color: var(--cyan); box-shadow: 0 0 0 4px rgba(200, 255, 0, 0.06); background: rgba(200, 255, 0, 0.03); } .form-textarea { min-height: 140px; resize: vertical; } .form-select option { background: var(--bg-dark); color: var(--text-primary); } .form-submit { width: 100%; padding: 16px; font-size: 16px; font-weight: 700; background: linear-gradient(135deg, var(--blue), var(--cyan-dark)); color: #fff; border-radius: var(--radius-md); transition: var(--transition); box-shadow: 0 0 30px rgba(200, 255, 0, 0.15); cursor: pointer; } .form-submit:hover { box-shadow: 0 0 50px rgba(200, 255, 0, 0.3); transform: translateY(-2px); } .form-success { display: none; padding: 16px 20px; background: rgba(0, 230, 118, 0.1); border: 1px solid rgba(0, 230, 118, 0.2); border-radius: var(--radius-md); color: var(--green); font-size: 14px; font-weight: 600; margin-bottom: 24px; } .form-success.show { display: block; animation: fadeIn 0.5s ease; } /* ======================================== CTA 区域 ======================================== */ .cta-section { position: relative; padding: 100px 0; text-align: center; overflow: hidden; } .cta-section::before { content: ""; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(0,230,118,0.04) 0%, rgba(255,159,28,0.04) 100%); } .cta-orb { position: absolute; border-radius: 50%; filter: blur(120px); pointer-events: none; will-change: transform; } .cta-orb-1 { width: 500px; height: 500px; background: rgba(0, 230, 118, 0.08); top: -40%; right: -10%; } .cta-orb-2 { width: 400px; height: 400px; background: rgba(255, 159, 28, 0.06); bottom: -30%; left: -10%; } .cta-content { position: relative; z-index: 2; max-width: 600px; margin: 0 auto; padding: 0 24px; } .cta-content h2 { font-size: 38px; font-weight: 800; color: var(--text-primary); margin-bottom: 16px; letter-spacing: -0.5px; } .cta-content p { font-size: 17px; color: var(--text-muted); margin-bottom: 40px; line-height: 1.8; } /* ======================================== 页脚 ======================================== */ .footer { position: relative; background: var(--bg-dark); border-top: 1px solid var(--border-subtle); padding: 72px 0 0; z-index: 1; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1.5fr; gap: 48px; margin-bottom: 56px; } .footer-brand .logo { color: var(--text-primary); margin-bottom: 20px; } .footer-brand p { font-size: 14px; color: var(--text-muted); line-height: 1.8; max-width: 300px; } .footer-col h4 { font-size: 14px; font-weight: 700; color: var(--text-primary); margin-bottom: 20px; letter-spacing: 1px; font-family: var(--font-mono); } .footer-col ul li { margin-bottom: 12px; } .footer-col ul li a { font-size: 14px; color: var(--text-muted); position: relative; display: inline-block; } .footer-col ul li a::after { content: ""; position: absolute; bottom: -2px; left: 0; width: 0; height: 1px; background: var(--cyan); transition: width 0.3s; } .footer-col ul li a:hover::after { width: 100%; } .footer-col ul li a:hover { color: var(--cyan); } .footer-contact li { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; color: var(--text-muted); margin-bottom: 14px; } .footer-contact .contact-icon { flex-shrink: 0; margin-top: 2px; color: var(--cyan); } .footer-bottom { border-top: 1px solid var(--border-subtle); padding: 24px 0; display: flex; justify-content: space-between; align-items: center; font-size: 13px; color: var(--text-muted); } .footer-bottom a { color: var(--text-muted); } .footer-bottom a:hover { color: var(--cyan); } /* ======================================== 地图区 ======================================== */ .map-section { padding-top: 0 !important; } .map-wrapper { height: 400px; background: var(--bg-card); border-radius: var(--radius-lg); border: 1px solid var(--border-subtle); overflow: hidden; position: relative; } /* ======================================== 动画 ======================================== */ @keyframes orbFloat { 0%, 100% { transform: translate(0, 0) scale(1); } 33% { transform: translate(30px, -30px) scale(1.05); } 66% { transform: translate(-20px, 20px) scale(0.95); } } @keyframes dotPulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.4; transform: scale(1.8); } } @keyframes scrollPulse { 0%, 100% { opacity: 0.4; transform: translateX(-50%) translateY(0); } 50% { opacity: 0.8; transform: translateX(-50%) translateY(6px); } } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } } .fade-in-up { opacity: 0; animation: fadeInUp 0.8s ease forwards; } .delay-1 { animation-delay: 0.15s; } .delay-2 { animation-delay: 0.3s; } .delay-3 { animation-delay: 0.45s; } .delay-4 { animation-delay: 0.6s; } /* 滚动显现 */ .reveal { opacity: 0; transform: translateY(40px); transition: opacity 0.7s ease, transform 0.7s ease; } .reveal.visible { opacity: 1; transform: translateY(0); } /* 打字机效果 */ .typewriter-text { display: inline-block; } .typewriter-cursor { display: inline-block; animation: blink 1s step-end infinite; color: var(--cyan); font-weight: 300; } @keyframes blink { 50% { opacity: 0; } } /* ======================================== 响应式 ======================================== */ @media (max-width: 1024px) { .about-story { grid-template-columns: 1fr; gap: 48px; } .teaser-hero { flex-direction: column; } .teaser-side { width: 100%; flex-direction: row; } .teaser-side-item { flex: 1; } } @media (max-width: 968px) { .grid-4 { grid-template-columns: repeat(2, 1fr); } .philosophy-grid { grid-template-columns: repeat(2, 1fr); } .structure-grid { grid-template-columns: repeat(2, 1fr); } .vision-list { grid-template-columns: repeat(2, 1fr); } .footer-grid { grid-template-columns: repeat(2, 1fr); } .contact-layout { grid-template-columns: 1fr; } } @media (max-width: 768px) { .nav { position: fixed; top: var(--header-height); left: 0; right: 0; background: rgba(7, 11, 20, 0.98); backdrop-filter: blur(20px); flex-direction: column; align-items: stretch; padding: 24px; gap: 6px; transform: translateY(-120%); opacity: 0; pointer-events: none; transition: var(--transition); border-bottom: 1px solid var(--border-subtle); } .nav.active { transform: translateY(0); opacity: 1; pointer-events: auto; } .nav-link { padding: 14px 18px; border-radius: var(--radius-md); } .nav-cta { margin-left: 0; margin-top: 8px; text-align: center; } .menu-toggle { display: flex; } .hero-title { font-size: clamp(32px, 8vw, 44px); } .section-title { font-size: 28px; } .section { padding: 80px 0; } .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; } .philosophy-grid { grid-template-columns: 1fr; } .structure-grid { grid-template-columns: 1fr; } .vision-list { grid-template-columns: 1fr; } .teaser-side { flex-direction: column; } .footer-grid { grid-template-columns: 1fr; } .footer-bottom { flex-direction: column; gap: 8px; text-align: center; } .page-hero-content h1 { font-size: 32px; } .about-visual-block { padding: 36px; } .about-visual-block .big-quote { font-size: 32px; } .cta-content h2 { font-size: 28px; } .contact-card-dark, .contact-form-dark { padding: 32px; } .form-row { grid-template-columns: 1fr; } .teaser-main { padding: 36px 28px; } .teaser-main h3 { font-size: 26px; } } @media (max-width: 480px) { .hero-actions { flex-direction: column; align-items: center; } .btn { width: 100%; max-width: 280px; } .container { padding: 0 16px; } } /* ======================================== V4 叙事组件 - "软件正在失控" ======================================== */ /* --- CRT 扫描线覆盖层 --- */ .scanlines { position: fixed; inset: 0; pointer-events: none; z-index: 9990; background: repeating-linear-gradient( 0deg, transparent, transparent 3px, rgba(0, 0, 0, 0.08) 3px, rgba(0, 0, 0, 0.08) 4px ); opacity: 0.4; } /* --- 终端日志装饰 --- */ .terminal-deco { font-family: var(--font-mono); font-size: 12px; line-height: 2; color: var(--text-muted); letter-spacing: 0.5px; } .terminal-deco .log-error { color: var(--red); } .terminal-deco .log-warn { color: var(--orange); } .terminal-deco .log-ok { color: var(--green); } .terminal-deco .log-info { color: var(--cyan); } .terminal-deco .log-time { color: var(--text-muted); opacity: 0.5; } /* --- 系统警报框 --- */ .system-alert { display: inline-flex; align-items: center; gap: 10px; padding: 10px 24px; background: rgba(255, 51, 85, 0.08); border: 1px solid rgba(255, 51, 85, 0.25); border-radius: var(--radius-sm); color: var(--red); font-family: var(--font-mono); font-size: 13px; font-weight: 700; letter-spacing: 2px; animation: alertBlink 2.5s ease-in-out infinite; } .system-alert .alert-icon { width: 8px; height: 8px; background: var(--red); border-radius: 50%; box-shadow: 0 0 10px var(--red); animation: dotPulse 1s ease-in-out infinite; } @keyframes alertBlink { 0%, 100% { box-shadow: 0 0 0 rgba(255, 51, 85, 0); } 50% { box-shadow: 0 0 25px rgba(255, 51, 85, 0.2); } } /* --- 编译/调试进度条 --- */ .build-progress { position: relative; margin: 24px 0; } .build-progress-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; font-family: var(--font-mono); font-size: 12px; letter-spacing: 1px; } .build-progress-header .bp-label { color: var(--text-muted); } .build-progress-header .bp-value { color: var(--cyan); font-weight: 700; } .build-progress-track { height: 8px; background: rgba(255, 255, 255, 0.04); border-radius: 4px; overflow: hidden; position: relative; border: 1px solid var(--border-subtle); } .build-progress-fill { height: 100%; background: linear-gradient(90deg, var(--blue), var(--cyan)); border-radius: 4px; position: relative; transition: width 1.5s cubic-bezier(0.22, 1, 0.36, 1); box-shadow: 0 0 15px rgba(200, 255, 0, 0.4); } .build-progress-fill::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent); animation: progressShine 1.8s linear infinite; } @keyframes progressShine { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } .build-progress-log { margin-top: 10px; font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); opacity: 0.7; } /* --- 章节编号 --- */ .chapter-marker { display: flex; align-items: center; gap: 20px; margin-bottom: 40px; } .chapter-marker .chapter-num { font-family: var(--font-mono); font-size: 72px; font-weight: 900; color: transparent; -webkit-text-stroke: 1.5px rgba(200, 255, 0, 0.3); line-height: 1; } .chapter-marker .chapter-line { flex: 1; height: 1px; background: linear-gradient(90deg, rgba(200, 255, 0, 0.3), transparent); } .chapter-marker .chapter-tag { font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); letter-spacing: 2px; white-space: nowrap; } /* --- 失控证据卡片 --- */ .chaos-card { background: var(--bg-card); border: 1px solid rgba(255, 51, 85, 0.15); border-radius: var(--radius-lg); padding: 36px 32px; text-align: center; transition: var(--transition); position: relative; overflow: hidden; height: 100%; } .chaos-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, transparent, var(--red), transparent); opacity: 0.5; } .chaos-card:hover { border-color: rgba(255, 51, 85, 0.35); box-shadow: 0 0 40px rgba(255, 51, 85, 0.08); transform: translateY(-4px); } .chaos-card .chaos-num { font-family: var(--font-mono); font-size: 52px; font-weight: 900; color: var(--red); line-height: 1; margin-bottom: 14px; text-shadow: 0 0 30px rgba(255, 51, 85, 0.3); } .chaos-card .chaos-unit { font-size: 20px; color: var(--red); opacity: 0.7; } .chaos-card h3 { font-size: 17px; font-weight: 700; color: var(--text-primary); margin-bottom: 10px; } .chaos-card p { font-size: 14px; color: var(--text-muted); line-height: 1.8; } /* --- 宣言文本 --- */ .manifesto { font-size: clamp(24px, 4vw, 36px); font-weight: 800; color: var(--text-primary); line-height: 1.6; text-align: center; max-width: 800px; margin: 0 auto; } .manifesto .strike { color: var(--text-muted); text-decoration: line-through; text-decoration-color: var(--red); text-decoration-thickness: 3px; } .manifesto .highlight { color: var(--cyan); text-shadow: 0 0 30px rgba(200, 255, 0, 0.4); } /* --- 状态点 --- */ .sys-status { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-mono); font-size: 12px; letter-spacing: 1.5px; font-weight: 700; } .sys-status::before { content: ""; width: 8px; height: 8px; border-radius: 50%; } .sys-status.debug::before { background: var(--orange); box-shadow: 0 0 10px var(--orange); animation: dotPulse 1.2s infinite; } .sys-status.debug { color: var(--orange); } .sys-status.compile::before { background: var(--purple); box-shadow: 0 0 10px var(--purple); animation: dotPulse 1.5s infinite; } .sys-status.compile { color: var(--purple); } .sys-status.queue::before { background: var(--cyan); box-shadow: 0 0 10px var(--cyan); } .sys-status.queue { color: var(--cyan); } .sys-status.online::before { background: var(--green); box-shadow: 0 0 10px var(--green); animation: dotPulse 2s infinite; } .sys-status.online { color: var(--green); } /* --- 坐标/数据装饰 --- */ .geo-deco { font-family: var(--font-mono); font-size: 11px; color: var(--text-muted); letter-spacing: 1.5px; opacity: 0.5; user-select: none; } /* --- 竖排文字 --- */ .vertical-text { writing-mode: vertical-rl; font-family: var(--font-mono); letter-spacing: 8px; font-size: 14px; color: var(--text-muted); opacity: 0.4; user-select: none; position: absolute; } /* --- 大括号装饰 --- */ .bracket-deco { position: relative; padding: 0 40px; } .bracket-deco::before, .bracket-deco::after { font-family: var(--font-mono); font-size: 80px; font-weight: 300; color: rgba(200, 255, 0, 0.2); position: absolute; top: 50%; transform: translateY(-50%); line-height: 1; } .bracket-deco::before { content: "{"; left: 0; } .bracket-deco::after { content: "}"; right: 0; } /* --- 响应式补充 --- */ @media (max-width: 768px) { .chapter-marker .chapter-num { font-size: 48px; } .bracket-deco { padding: 0 20px; } .bracket-deco::before, .bracket-deco::after { font-size: 48px; } .vertical-text { display: none; } .chaos-card .chaos-num { font-size: 40px; } } /* ======================================== V5 KPR风格滚动场景系统 ======================================== */ /* --- 滚动场景容器 --- */ .scroll-scene { position: relative; } .scene-sticky { position: sticky; top: 0; height: 100vh; display: flex; align-items: center; justify-content: center; overflow: hidden; } /* --- 场景文本行(滚动驱动逐行揭示) --- */ .scene-line { position: absolute; max-width: 860px; padding: 0 32px; text-align: center; opacity: 0; transform: translateY(70px) scale(0.96); transition: opacity 0.7s cubic-bezier(0.22,1,0.36,1), transform 0.7s cubic-bezier(0.22,1,0.36,1); pointer-events: none; } .scene-line.active { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; } .scene-line.exit { opacity: 0; transform: translateY(-70px) scale(0.96); } .scene-line .line-big { font-size: clamp(30px, 5.5vw, 52px); font-weight: 900; color: var(--text-primary); line-height: 1.35; letter-spacing: -0.5px; } .scene-line .line-big .accent { color: var(--cyan); text-shadow: 0 0 40px rgba(200,255,0,0.4); } .scene-line .line-big .danger { color: var(--red); text-shadow: 0 0 40px rgba(255,51,85,0.4); } .scene-line .line-sub { margin-top: 24px; font-family: var(--font-mono); font-size: 14px; color: var(--text-muted); letter-spacing: 2px; } /* --- 场景进度装饰(四角) --- */ .scene-corner { position: absolute; font-family: var(--font-mono); font-size: 12px; color: var(--text-muted); letter-spacing: 1.5px; z-index: 5; user-select: none; } .scene-corner.tl { top: 100px; left: 40px; } .scene-corner.tr { top: 100px; right: 40px; text-align: right; } .scene-corner.bl { bottom: 40px; left: 40px; } .scene-corner.br { bottom: 40px; right: 40px; text-align: right; } .scene-corner .big-pct { font-size: 48px; font-weight: 900; color: rgba(200, 255, 0, 0.5); line-height: 1; display: block; margin-top: 4px; } /* --- 场景边框角标 --- */ .scene-frame { position: absolute; inset: 90px 30px 30px; pointer-events: none; z-index: 4; } .scene-frame::before, .scene-frame::after { content: ""; position: absolute; width: 24px; height: 24px; border: 1.5px solid rgba(200, 255, 0, 0.25); } .scene-frame::before { top: 0; left: 0; border-right: none; border-bottom: none; } .scene-frame::after { bottom: 0; right: 0; border-left: none; border-top: none; } .scene-frame .frame-corner-b, .scene-frame .frame-corner-c { position: absolute; width: 24px; height: 24px; border: 1.5px solid rgba(200, 255, 0, 0.25); } .scene-frame .frame-corner-b { top: 0; right: 0; border-left: none; border-bottom: none; } .scene-frame .frame-corner-c { bottom: 0; left: 0; border-right: none; border-top: none; } /* --- 加密内容块 --- */ .encrypted-block { font-family: var(--font-mono); background: rgba(255, 255, 255, 0.02); border: 1px dashed rgba(200, 255, 0, 0.2); border-radius: var(--radius-md); padding: 20px 24px; position: relative; overflow: hidden; } .encrypted-block::after { content: "ENCRYPTED"; position: absolute; top: 10px; right: 12px; font-size: 10px; color: var(--orange); letter-spacing: 2px; font-weight: 700; opacity: 0.8; } .encrypted-line { font-size: 13px; color: var(--cyan); opacity: 0.7; letter-spacing: 1px; word-break: break-all; line-height: 2; } /* --- 涂抹红action条 --- */ .redacted { background: rgba(85, 96, 120, 0.35); color: transparent !important; user-select: none; border-radius: 3px; padding: 0 6px; position: relative; } .redacted::selection { background: rgba(85, 96, 120, 0.35); } /* --- 保密印章 --- */ .classified-stamp { display: inline-block; padding: 6px 18px; border: 2px solid var(--red); color: var(--red); font-family: var(--font-mono); font-size: 13px; font-weight: 900; letter-spacing: 4px; transform: rotate(-3deg); opacity: 0.85; text-shadow: 0 0 20px rgba(255, 51, 85, 0.3); box-shadow: 0 0 20px rgba(255, 51, 85, 0.1), inset 0 0 20px rgba(255, 51, 85, 0.05); } /* --- 文件列表装饰 --- */ .file-list { font-family: var(--font-mono); font-size: 12px; line-height: 2.2; color: var(--text-muted); } .file-list .file-item { display: flex; gap: 12px; align-items: baseline; } .file-list .file-icon { color: var(--cyan); opacity: 0.6; } .file-list .file-name { color: var(--text-secondary); } .file-list .file-size { margin-left: auto; opacity: 0.5; } .file-list .file-locked { color: var(--orange); } /* --- 滚动驱动大字背景 --- */ .bg-giant-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: clamp(120px, 25vw, 320px); font-weight: 900; color: transparent; -webkit-text-stroke: 1px rgba(255, 255, 255, 0.04); white-space: nowrap; pointer-events: none; user-select: none; z-index: 0; letter-spacing: 10px; } /* --- 数据传输线动画 --- */ .data-stream { position: absolute; width: 1px; background: linear-gradient(to bottom, transparent, var(--cyan), transparent); opacity: 0.3; animation: streamFall 3s linear infinite; pointer-events: none; } @keyframes streamFall { 0% { transform: translateY(-100%); opacity: 0; } 20% { opacity: 0.4; } 80% { opacity: 0.4; } 100% { transform: translateY(100vh); opacity: 0; } } /* --- 滚动场景响应式 --- */ @media (max-width: 768px) { .scene-corner.tl, .scene-corner.tr { top: 86px; } .scene-corner.tl { left: 20px; } .scene-corner.tr { right: 20px; } .scene-corner.bl { left: 20px; bottom: 24px; } .scene-corner.br { right: 20px; bottom: 24px; } .scene-corner .big-pct { font-size: 32px; } .scene-frame { inset: 76px 16px 16px; } .bg-giant-text { letter-spacing: 4px; } .classified-stamp { letter-spacing: 2px; font-size: 11px; } }