fc / apiSystem /templates /index /_css.html
jun2024's picture
Upload 2241 files
b4f2238 verified
Raw History Blame Contribute Delete
121 kB
<style> :root { --primary: #6366f1; --primary-light: #818cf8; --primary-dark: #4f46e5; --accent: #06b6d4; --accent-light: #22d3ee; --bg-dark: #0a0a0f; --bg-card: rgba(255, 255, 255, 0.03); --bg-card-hover: rgba(255, 255, 255, 0.08); --text-primary: #f8fafc; --text-secondary: #94a3b8; --text-muted: #64748b; --border: rgba(255, 255, 255, 0.1); --gradient-1: linear-gradient(135deg, #6366f1 0%, #06b6d4 100%); --gradient-2: linear-gradient(135deg, #f472b6 0%, #6366f1 100%); --gradient-3: linear-gradient(135deg, #06b6d4 0%, #10b981 100%); --glow: 0 0 40px rgba(99, 102, 241, 0.3); } * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { /* 使用本地系统字体,避免加载远程字体 */ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif; background: var(--bg-dark); color: var(--text-primary); overflow-x: hidden; line-height: 1.6; } /* Canvas Background */ #bg-canvas { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; opacity: 0.6; } /* Noise Overlay */ .noise-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1000; opacity: 0.03; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); } /* Navigation */ .nav { position: fixed; top: 0; left: 0; right: 0; z-index: 100; padding: 1.5rem 3rem; display: flex; justify-content: space-between; align-items: center; backdrop-filter: blur(20px); background: rgba(10, 10, 15, 0.7); border-bottom: 1px solid var(--border); transition: all 0.3s ease; } .nav.scrolled { padding: 1rem 3rem; background: rgba(10, 10, 15, 0.95); } .logo { display: flex; align-items: center; gap: 0.75rem; font-size: 1.5rem; font-weight: 800; background: var(--gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .logo-icon { width: 40px; height: 40px; background: var(--gradient-1); border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; -webkit-text-fill-color: white; } .nav-links { display: flex; gap: 2.5rem; align-items: center; } .nav-link { color: var(--text-secondary); text-decoration: none; font-weight: 500; font-size: 0.95rem; transition: all 0.3s ease; position: relative; } .nav-link::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 0; height: 2px; background: var(--gradient-1); transition: width 0.3s ease; } .nav-link:hover { color: var(--text-primary); } .nav-link:hover::after { width: 100%; } .btn { padding: 0.75rem 1.75rem; border-radius: 12px; font-weight: 600; font-size: 0.95rem; cursor: pointer; transition: all 0.3s ease; text-decoration: none; display: inline-flex; align-items: center; gap: 0.5rem; border: none; } .btn-primary { background: var(--gradient-1); color: white; box-shadow: var(--glow); } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 0 60px rgba(99, 102, 241, 0.5); } .btn-secondary { background: var(--bg-card); color: var(--text-primary); border: 1px solid var(--border); } .btn-secondary:hover { background: var(--bg-card-hover); border-color: var(--primary); } /* Hero Section */ .hero { min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; padding: 8rem 2rem 4rem; position: relative; } .hero-badge { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 100px; font-size: 0.875rem; color: var(--text-secondary); margin-bottom: 2rem; animation: fadeInUp 0.8s ease; } .hero-badge-dot { width: 8px; height: 8px; background: #10b981; border-radius: 50%; animation: pulse 2s infinite; } .hero-title { font-size: clamp(3rem, 8vw, 6rem); font-weight: 900; line-height: 1.1; margin-bottom: 1.5rem; animation: fadeInUp 0.8s ease 0.1s both; } .hero-title .gradient-text { background: linear-gradient(90deg, #6366f1, #06b6d4, #f472b6, #6366f1); background-size: 300% 100%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: gradientFlow 6s ease infinite; } @keyframes gradientFlow { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .hero-title .kinetic-text { display: inline-block; position: relative; } .hero-subtitle { font-size: clamp(1.125rem, 2vw, 1.5rem); color: var(--text-secondary); max-width: 700px; margin-bottom: 3rem; animation: fadeInUp 0.8s ease 0.2s both; } .hero-buttons { display: flex; gap: 1rem; flex-wrap: wrap; justify-content: center; animation: fadeInUp 0.8s ease 0.3s both; } .hero-stats { display: flex; gap: 4rem; margin-top: 5rem; animation: fadeInUp 0.8s ease 0.4s both; } .stat { text-align: center; } .stat-value { font-size: 2.5rem; font-weight: 800; background: var(--gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .stat-label { font-size: 0.875rem; color: var(--text-muted); margin-top: 0.25rem; } /* Floating Elements */ .floating-element { position: absolute; border-radius: 20px; backdrop-filter: blur(10px); background: var(--bg-card); border: 1px solid var(--border); padding: 1rem 1.5rem; display: flex; align-items: center; gap: 0.75rem; animation: float 6s ease-in-out infinite; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); } .floating-element.left { left: 5%; top: 30%; animation-delay: 0s; } .floating-element.right { right: 5%; top: 40%; animation-delay: 2s; } .floating-element.bottom { left: 15%; bottom: 15%; animation-delay: 4s; } .floating-icon { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1.25rem; } .floating-icon svg { width: 20px; height: 20px; stroke-width: 1.5; } .floating-icon.purple { background: rgba(99, 102, 241, 0.15); color: #818cf8; } .floating-icon.cyan { background: rgba(6, 182, 212, 0.15); color: #22d3ee; } .floating-icon.pink { background: rgba(244, 114, 182, 0.15); color: #f472b6; } /* Features Section - Bento Grid */ .features { padding: 8rem 2rem; max-width: 1400px; margin: 0 auto; } .section-header { text-align: center; margin-bottom: 4rem; } .section-tag { display: inline-block; padding: 0.5rem 1rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 100px; font-size: 0.875rem; color: var(--accent); margin-bottom: 1rem; } .section-title { font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; margin-bottom: 1rem; } .section-desc { color: var(--text-secondary); max-width: 600px; margin: 0 auto; } .bento-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(3, auto); gap: 1.5rem; } .bento-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 24px; padding: 2rem; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .bento-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--primary), transparent); opacity: 0; transition: opacity 0.4s ease; } .bento-card:hover { background: var(--bg-card-hover); transform: translateY(-4px); border-color: rgba(99, 102, 241, 0.3); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3); } .bento-card:hover::before { opacity: 1; } .bento-card.large { grid-column: span 2; grid-row: span 2; } .bento-card.wide { grid-column: span 2; } .bento-card.tall { grid-row: span 2; } .bento-icon { width: 56px; height: 56px; border-radius: 16px; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; margin-bottom: 1.5rem; } .bento-icon svg { width: 28px; height: 28px; stroke-width: 1.5; } .bento-icon.style-1 { background: transparent; border: 1px solid rgba(99, 102, 241, 0.3); } .bento-icon.style-1 svg { stroke: #818cf8; color: #818cf8; } .bento-icon.style-2 { background: transparent; border: 1px solid rgba(244, 114, 182, 0.3); } .bento-icon.style-2 svg { stroke: #f472b6; color: #f472b6; } .bento-icon.style-3 { background: transparent; border: 1px solid rgba(6, 182, 212, 0.3); } .bento-icon.style-3 svg { stroke: #22d3ee; color: #22d3ee; } .bento-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 0.75rem; } .bento-desc { color: var(--text-secondary); font-size: 0.95rem; line-height: 1.7; } .bento-visual { margin-top: 1.5rem; border-radius: 12px; overflow: hidden; background: rgba(0, 0, 0, 0.3); aspect-ratio: 16/10; display: flex; align-items: center; justify-content: center; position: relative; } .bento-visual-content { display: flex; flex-direction: column; gap: 0.5rem; padding: 1rem; width: 100%; } .mock-row { display: flex; gap: 0.5rem; align-items: center; } .mock-avatar { width: 32px; height: 32px; border-radius: 8px; background: var(--gradient-1); } .mock-text { flex: 1; height: 12px; background: rgba(255, 255, 255, 0.1); border-radius: 4px; } .mock-text.short { width: 60%; } .mock-text.medium { width: 80%; } /* Case Management Visual */ .case-visual { margin-top: 1.5rem; border-radius: 16px; overflow: hidden; background: linear-gradient(145deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2)); border: 1px solid rgba(255, 255, 255, 0.05); } .case-visual-header { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; background: rgba(255, 255, 255, 0.03); border-bottom: 1px solid rgba(255, 255, 255, 0.05); } .case-visual-dot { width: 10px; height: 10px; border-radius: 50%; } .case-visual-dot.red { background: #ef4444; } .case-visual-dot.yellow { background: #eab308; } .case-visual-dot.green { background: #22c55e; } .case-list { padding: 1rem; display: flex; flex-direction: column; gap: 0.75rem; } .case-item { display: flex; align-items: center; gap: 1rem; padding: 0.875rem 1rem; background: rgba(255, 255, 255, 0.03); border-radius: 12px; border: 1px solid rgba(255, 255, 255, 0.05); transition: all 0.3s ease; } .case-item:hover { background: rgba(255, 255, 255, 0.06); border-color: rgba(99, 102, 241, 0.3); transform: translateX(4px); } .case-status { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .case-status.active { background: #22c55e; box-shadow: 0 0 8px rgba(34, 197, 94, 0.5); } .case-status.pending { background: #eab308; box-shadow: 0 0 8px rgba(234, 179, 8, 0.5); } .case-status.closed { background: #64748b; } .case-info { flex: 1; min-width: 0; } .case-name { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .case-meta { font-size: 0.75rem; color: var(--text-muted); margin-top: 0.125rem; } .case-tag { padding: 0.25rem 0.625rem; border-radius: 6px; font-size: 0.7rem; font-weight: 600; flex-shrink: 0; } .case-tag.civil { background: rgba(99, 102, 241, 0.2); color: #818cf8; } .case-tag.criminal { background: rgba(239, 68, 68, 0.2); color: #f87171; } .case-tag.admin { background: rgba(6, 182, 212, 0.2); color: #22d3ee; } .case-amount { font-size: 0.8rem; font-weight: 700; color: var(--accent); flex-shrink: 0; } /* Tech Stack Section */ .tech-stack { padding: 6rem 2rem; background: linear-gradient(180deg, transparent, rgba(99, 102, 241, 0.03), transparent); } .tech-categories { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; max-width: 1200px; margin: 0 auto 4rem; } .tech-category { background: var(--bg-card); border: 1px solid var(--border); border-radius: 20px; padding: 1.5rem; transition: all 0.3s ease; } .tech-category:hover { border-color: rgba(99, 102, 241, 0.3); box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); } .tech-category-header { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1.25rem; padding-bottom: 1rem; border-bottom: 1px solid var(--border); } .tech-category-icon { font-size: 1.5rem; } .tech-category-title { font-size: 1.1rem; font-weight: 700; color: var(--text-primary); } .tech-category-items { display: flex; flex-direction: column; gap: 0.75rem; } .tech-item-card { display: flex; align-items: center; gap: 1rem; padding: 0.875rem 1rem; background: rgba(255, 255, 255, 0.02); border-radius: 12px; transition: all 0.3s ease; cursor: default; } .tech-item-card:hover { background: rgba(255, 255, 255, 0.05); transform: translateX(4px); } .tech-item-icon { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .tech-item-info { display: flex; flex-direction: column; gap: 0.125rem; } .tech-item-name { font-weight: 600; font-size: 0.95rem; color: var(--text-primary); } .tech-item-desc { font-size: 0.8rem; color: var(--text-muted); } /* 架构亮点 */ .arch-highlights { display: flex; justify-content: center; gap: 3rem; flex-wrap: wrap; max-width: 1000px; margin: 0 auto; padding-top: 2rem; border-top: 1px solid var(--border); } .arch-highlight-item { text-align: center; padding: 1.5rem 2rem; } .arch-highlight-number { font-size: 2.5rem; font-weight: 800; background: var(--gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; line-height: 1.2; } .arch-highlight-label { font-size: 1rem; font-weight: 600; color: var(--text-primary); margin-top: 0.5rem; } .arch-highlight-desc { font-size: 0.85rem; color: var(--text-muted); margin-top: 0.25rem; } @media (max-width: 1024px) { .tech-categories { grid-template-columns: 1fr; } .arch-highlights { gap: 1.5rem; } .arch-highlight-item { padding: 1rem 1.5rem; } } @media (max-width: 768px) { .arch-highlights { flex-direction: column; align-items: center; } } .tech-grid { display: flex; justify-content: center; gap: 3rem; flex-wrap: wrap; max-width: 1000px; margin: 0 auto; } .tech-item { display: flex; flex-direction: column; align-items: center; gap: 0.75rem; padding: 1.5rem 2rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 16px; transition: all 0.3s ease; } .tech-item:hover { transform: translateY(-4px); border-color: var(--primary); box-shadow: var(--glow); } .tech-icon { font-size: 2rem; } .tech-name { font-weight: 600; font-size: 0.95rem; } /* CTA Section */ .cta { padding: 8rem 2rem; text-align: center; position: relative; } .cta-glow { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 600px; height: 600px; background: radial-gradient(circle, rgba(99, 102, 241, 0.15) 0%, transparent 70%); pointer-events: none; } .cta-content { position: relative; z-index: 1; } .cta-title { font-size: clamp(2rem, 5vw, 3.5rem); font-weight: 800; margin-bottom: 1.5rem; } .cta-desc { color: var(--text-secondary); font-size: 1.125rem; max-width: 600px; margin: 0 auto 2.5rem; } /* Footer */ .footer { padding: 2rem; border-top: 1px solid var(--border); background: rgba(0, 0, 0, 0.3); } .footer-content.footer-simple { max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; } .footer-links { display: flex; gap: 2rem; } .footer-link { color: var(--text-secondary); text-decoration: none; font-size: 0.95rem; transition: color 0.3s ease; } .footer-link:hover { color: var(--text-primary); } .footer-copy { color: var(--text-muted); font-size: 0.875rem; } /* CTA QR Codes */ .cta-qrcodes { display: flex; justify-content: center; gap: 4rem; margin-top: 3rem; } .cta-qrcode-item { display: flex; flex-direction: column; align-items: center; gap: 0.75rem; } .cta-qrcode-img { width: 180px; height: 180px; border-radius: 12px; object-fit: cover; background: white; padding: 10px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3); transition: transform 0.3s ease; } .cta-qrcode-item:hover .cta-qrcode-img { transform: scale(1.05); } .cta-qrcode-title { font-size: 1rem; font-weight: 600; color: var(--text-primary); } .cta-qrcode-desc { font-size: 0.85rem; color: var(--text-muted); } /* CTA Buttons */ .cta-buttons { display: flex; justify-content: center; gap: 2rem; margin-top: 3rem; } .btn-lg { padding: 1rem 3rem; font-size: 1.1rem; min-width: 200px; } /* Animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes float { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20px) rotate(2deg); } } @keyframes pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.2); } } @keyframes gradient-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Responsive */ @media (max-width: 1024px) { .bento-grid { grid-template-columns: repeat(2, 1fr); } .bento-card.large { grid-column: span 2; grid-row: span 1; } .floating-element { display: none; } .hero-stats { gap: 2rem; } } @media (max-width: 768px) { .nav { padding: 1rem 1.5rem; } .nav-links { display: none; } .hero { padding: 7rem 1.5rem 3rem; } .hero-stats { flex-direction: column; gap: 1.5rem; } .bento-grid { grid-template-columns: 1fr; } .bento-card.large, .bento-card.wide { grid-column: span 1; } .tech-grid { gap: 1rem; } .tech-item { padding: 1rem 1.5rem; } .cta-qrcodes { flex-direction: column; gap: 2rem; } .footer-content.footer-simple { flex-direction: column; text-align: center; } .footer-links { flex-wrap: wrap; justify-content: center; } } /* Scroll animations */ .reveal { opacity: 0; transform: translateY(40px); transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); } .reveal.active { opacity: 1; transform: translateY(0); } /* ========== 震撼视觉效果 ========== */ /* 打字机光标 */ .typewriter-cursor { display: inline-block; width: 3px; height: 1em; background: var(--primary); margin-left: 4px; animation: cursorBlink 1s step-end infinite; vertical-align: text-bottom; } @keyframes cursorBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } /* Hero 区域动态光斑 */ .hero { position: relative; } .hero-orb { position: absolute; border-radius: 50%; filter: blur(80px); pointer-events: none; opacity: 0.4; } .hero-orb-1 { width: 500px; height: 500px; background: rgba(99, 102, 241, 0.3); top: 10%; left: 10%; animation: orbFloat1 20s ease-in-out infinite; } .hero-orb-2 { width: 400px; height: 400px; background: rgba(6, 182, 212, 0.25); top: 30%; right: 15%; animation: orbFloat2 25s ease-in-out infinite; } .hero-orb-3 { width: 300px; height: 300px; background: rgba(244, 114, 182, 0.2); bottom: 20%; left: 20%; animation: orbFloat3 18s ease-in-out infinite; } @keyframes orbFloat1 { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(50px, 30px); } 50% { transform: translate(20px, -40px); } 75% { transform: translate(-30px, 20px); } } @keyframes orbFloat2 { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(-40px, 50px); } 50% { transform: translate(30px, 20px); } 75% { transform: translate(10px, -30px); } } @keyframes orbFloat3 { 0%, 100% { transform: translate(0, 0); } 33% { transform: translate(60px, -20px); } 66% { transform: translate(-20px, 40px); } } /* 数字计数器弹跳动画 */ .stat-number, .stat-suffix { background: var(--gradient-1); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .stat-suffix { display: inline-block; opacity: 0; transform: scale(0) translateY(10px); } .stat-suffix.bounce { animation: suffixBounce 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards; } @keyframes suffixBounce { 0% { opacity: 0; transform: scale(0) translateY(10px); } 60% { opacity: 1; transform: scale(1.3) translateY(-5px); } 100% { opacity: 1; transform: scale(1) translateY(0); } } /* 卡片入场动画优化 */ .bento-card { opacity: 0; transform: translateY(60px); } .bento-card.animate-in { animation: cardSlideUp 0.6s cubic-bezier(0.4, 0, 0.2, 1) forwards; } @keyframes cardSlideUp { from { opacity: 0; transform: translateY(60px); } to { opacity: 1; transform: translateY(0); } } /* 按钮悬停增强 */ .btn-primary { position: relative; overflow: hidden; } .btn-primary::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); transition: left 0.5s ease; } .btn-primary:hover::before { left: 100%; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: var(--bg-dark); } ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--primary); } /* ========== 法院短信自动处理流程动画 ========== */ .sms-flow-section { padding: 8rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(6, 182, 212, 0.03), transparent); } .sms-flow-container { max-width: 1200px; margin: 0 auto; position: relative; } /* 流程演示区域 - 使用 Grid 布局 */ .flow-demo { position: relative; margin-top: 3rem; border-radius: 24px; background: linear-gradient(145deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2)); border: 1px solid var(--border); padding: 1.5rem; overflow: hidden; display: grid; grid-template-columns: 200px auto 1fr; gap: 1.25rem; align-items: center; } /* 左侧:手机区域 */ .flow-left { display: flex; flex-direction: column; align-items: center; justify-content: center; } /* 中间:转发区域(卡片+箭头)- 垂直排列 */ .forward-section { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.75rem; } /* 右侧:处理流程 + 结果卡片 */ .flow-right { display: flex; flex-direction: column; gap: 1rem; } /* 处理流程区域 */ .flow-center { display: flex; flex-direction: column; gap: 0.5rem; } /* 结果卡片区域 */ .flow-right .result-cards, .flow-demo .result-cards { display: flex; gap: 0.75rem; flex-wrap: wrap; justify-content: flex-start; align-items: flex-start; padding-top: 1rem; border-top: 1px solid var(--border); } /* 流程标题 */ .flow-center-title { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; background: rgba(99, 102, 241, 0.1); border: 1px solid rgba(99, 102, 241, 0.3); border-radius: 12px; margin-bottom: 0.5rem; } .flow-center-title-icon { width: 32px; height: 32px; background: var(--gradient-1); border-radius: 8px; display: flex; align-items: center; justify-content: center; } .flow-center-title-icon svg { width: 18px; height: 18px; stroke: white; } .flow-center-title-text { font-size: 1rem; font-weight: 700; color: var(--text-primary); } .flow-center-title-sub { font-size: 0.75rem; color: var(--text-muted); margin-left: auto; } /* 处理节点网格 */ .process-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; } /* 中间处理节点 */ .process-node { display: flex; align-items: center; gap: 0.625rem; padding: 0.75rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; opacity: 0.4; transform: scale(0.95); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .process-node.active { opacity: 1; transform: scale(1); border-color: var(--primary); background: rgba(99, 102, 241, 0.08); } .process-node.completed { opacity: 1; transform: scale(1); border-color: #22c55e; background: rgba(34, 197, 94, 0.08); } .process-node.processing { opacity: 1; transform: scale(1); border-color: #fbbf24; background: rgba(251, 191, 36, 0.08); animation: processingPulse 1s ease-in-out infinite; } @keyframes processingPulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(251, 191, 36, 0.3); } 50% { box-shadow: 0 0 12px 2px rgba(251, 191, 36, 0.2); } } .process-node-icon { width: 28px; height: 28px; border-radius: 6px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .process-node-icon svg { width: 14px; height: 14px; stroke-width: 2; } .process-node-icon.receive { background: rgba(34, 197, 94, 0.15); } .process-node-icon.receive svg { stroke: #22c55e; } .process-node-icon.parse { background: rgba(6, 182, 212, 0.15); } .process-node-icon.parse svg { stroke: #22d3ee; } .process-node-icon.download { background: rgba(99, 102, 241, 0.15); } .process-node-icon.download svg { stroke: #818cf8; } .process-node-icon.match { background: rgba(244, 114, 182, 0.15); } .process-node-icon.match svg { stroke: #f472b6; } .process-node-icon.rename { background: rgba(251, 191, 36, 0.15); } .process-node-icon.rename svg { stroke: #fbbf24; } .process-node-icon.analyze { background: rgba(139, 92, 246, 0.15); } .process-node-icon.analyze svg { stroke: #a78bfa; } .process-node-icon.notify { background: rgba(16, 185, 129, 0.15); } .process-node-icon.notify svg { stroke: #34d399; } .process-node-content { flex: 1; min-width: 0; } .process-node-title { font-size: 0.8rem; font-weight: 600; color: var(--text-primary); } .process-node-status { width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; opacity: 0; transform: scale(0); transition: all 0.3s ease; } .process-node.completed .process-node-status { opacity: 1; transform: scale(1); background: #22c55e; } .process-node.processing .process-node-status { opacity: 1; transform: scale(1); background: #fbbf24; } .process-node-status svg { width: 10px; height: 10px; stroke: white; stroke-width: 3; } /* 连接箭头 */ .flow-arrow { display: flex; align-items: center; justify-content: center; color: var(--text-muted); opacity: 0; transition: all 0.3s ease; padding: 0.5rem; } .flow-arrow.active { opacity: 1; color: var(--primary); animation: arrowPulse 1.5s ease-in-out infinite; } @keyframes arrowPulse { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(5px); } } .flow-arrow svg { width: 28px; height: 28px; stroke-width: 2; } /* 转发说明卡片 */ .forward-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 1rem; text-align: center; opacity: 0; transform: scale(0.9); transition: all 0.4s ease; width: 130px; } .forward-card.active { opacity: 1; transform: scale(1); } .forward-card-icon { font-size: 1.75rem; margin-bottom: 0.5rem; } .forward-card-title { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); margin-bottom: 0.25rem; } .forward-card-desc { font-size: 0.65rem; color: var(--text-muted); line-height: 1.4; } /* 手机模拟器 */ .phone-mockup { width: 200px; height: 400px; background: linear-gradient(145deg, #1a1a2e, #16162a); border-radius: 32px; border: 4px solid #2a2a4a; padding: 12px; box-shadow: 0 25px 80px rgba(0, 0, 0, 0.6), 0 0 40px rgba(99, 102, 241, 0.1); z-index: 20; opacity: 0; transform: scale(0.9); flex-shrink: 0; } .phone-mockup.active { opacity: 1; transform: scale(1); transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .phone-notch { width: 70px; height: 20px; background: #0a0a0f; border-radius: 0 0 12px 12px; margin: 0 auto 8px; } .phone-screen { background: #0a0a0f; border-radius: 20px; height: calc(100% - 28px); padding: 12px; overflow: hidden; } .phone-status-bar { display: flex; justify-content: space-between; align-items: center; font-size: 0.7rem; color: var(--text-secondary); margin-bottom: 12px; } .sms-notification { background: rgba(34, 197, 94, 0.1); border: 1px solid rgba(34, 197, 94, 0.3); border-radius: 12px; padding: 12px; margin-bottom: 8px; opacity: 0; transform: translateY(-15px); } .sms-notification.show { opacity: 1; transform: translateY(0); transition: all 0.4s ease; } .sms-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; } .sms-icon { width: 28px; height: 28px; background: linear-gradient(135deg, #22c55e, #16a34a); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 0.85rem; } .sms-sender { font-size: 0.75rem; font-weight: 600; color: var(--text-primary); } .sms-time { font-size: 0.65rem; color: var(--text-muted); margin-left: auto; } .sms-content { font-size: 0.7rem; color: var(--text-secondary); line-height: 1.4; } .sms-link { color: var(--accent); text-decoration: underline; word-break: break-all; } /* 数据流动画 */ .data-packet { position: absolute; width: 12px; height: 12px; background: var(--gradient-1); border-radius: 50%; opacity: 0; z-index: 15; box-shadow: 0 0 20px rgba(99, 102, 241, 0.8); } .data-packet::after { content: ''; position: absolute; width: 100%; height: 100%; background: inherit; border-radius: 50%; animation: packetPulse 1s ease-in-out infinite; } @keyframes packetPulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.5); opacity: 0.5; } } /* 流程步骤指示器 */ .flow-steps { display: flex; justify-content: center; gap: 0.5rem; margin-top: 2rem; } .flow-step { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 100px; font-size: 0.8rem; color: var(--text-muted); transition: all 0.3s ease; } .flow-step.active { background: rgba(99, 102, 241, 0.1); border-color: var(--primary); color: var(--text-primary); } .flow-step.completed { background: rgba(34, 197, 94, 0.1); border-color: #22c55e; color: #22c55e; } .flow-step-num { width: 20px; height: 20px; border-radius: 50%; background: var(--border); display: flex; align-items: center; justify-content: center; font-size: 0.7rem; font-weight: 600; } .flow-step.active .flow-step-num { background: var(--primary); color: white; } .flow-step.completed .flow-step-num { background: #22c55e; color: white; } /* 控制按钮 */ .flow-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 1.5rem; } .flow-btn { padding: 0.75rem 1.5rem; border-radius: 12px; font-size: 0.9rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; border: none; display: flex; align-items: center; gap: 0.5rem; } .flow-btn-play { background: var(--gradient-1); color: white; } .flow-btn-play:hover { transform: translateY(-2px); box-shadow: var(--glow); } .flow-btn-play:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } .flow-btn-reset { background: var(--bg-card); color: var(--text-secondary); border: 1px solid var(--border); } .flow-btn-reset:hover { background: var(--bg-card-hover); color: var(--text-primary); } /* 结果展示卡片 - 基础样式 */ .result-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 1rem 1.25rem; min-width: 140px; opacity: 0; transform: translateY(15px) scale(0.95); text-align: center; transition: all 0.4s ease; } .result-card.show { opacity: 1; transform: translateY(0) scale(1); } .result-card.success { border-color: rgba(34, 197, 94, 0.5); background: rgba(34, 197, 94, 0.05); } .result-card.warning { border-color: rgba(251, 191, 36, 0.5); background: rgba(251, 191, 36, 0.05); } .result-card.alert { border-color: rgba(239, 68, 68, 0.5); background: rgba(239, 68, 68, 0.05); animation: alertPulse 1s ease-in-out infinite; } @keyframes alertPulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); } 50% { box-shadow: 0 0 20px 5px rgba(239, 68, 68, 0.2); } } .result-icon { font-size: 1.5rem; margin-bottom: 0.5rem; } .result-title { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); margin-bottom: 0.25rem; } .result-desc { font-size: 0.75rem; color: var(--text-muted); } /* 响应式 */ @media (max-width: 1024px) { .flow-demo { grid-template-columns: 1fr; grid-template-rows: auto auto auto; gap: 1.5rem; } .flow-left { justify-self: center; } .forward-section { flex-direction: row; justify-self: center; } .flow-right { width: 100%; } .phone-mockup { width: 180px; height: 360px; } .process-grid { grid-template-columns: repeat(2, 1fr); } .flow-steps { flex-wrap: wrap; } } @media (max-width: 768px) { .forward-section { flex-direction: column; } .phone-mockup { width: 160px; height: 320px; } .process-grid { grid-template-columns: 1fr; } .flow-step { padding: 0.4rem 0.75rem; font-size: 0.7rem; } .result-card { min-width: 110px; padding: 0.625rem; } .forward-card { width: 120px; } .flow-arrow svg { transform: rotate(90deg); } } /* ========== 收件箱智能处理中枢动画 ========== */ .inbox-flow-section { padding: 8rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(99, 102, 241, 0.04), transparent); } .inbox-flow-container { max-width: 1240px; margin: 0 auto; } .inbox-demo { margin-top: 3rem; position: relative; border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 28px; padding: 1.5rem; overflow: hidden; background: radial-gradient(circle at top right, rgba(99, 102, 241, 0.22), transparent 30%), radial-gradient(circle at bottom left, rgba(6, 182, 212, 0.14), transparent 32%), linear-gradient(145deg, rgba(5, 10, 28, 0.94), rgba(11, 17, 35, 0.86)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 24px 70px rgba(0, 0, 0, 0.28); } .inbox-demo::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px); background-size: 38px 38px; mask-image: radial-gradient(circle at center, #000 40%, transparent 100%); pointer-events: none; opacity: 0.45; } .inbox-demo-hud, .inbox-result-strip, .inbox-log-board, .inbox-flow-steps, .flow-controls { position: relative; z-index: 2; } .inbox-demo-hud { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; } .inbox-demo-mode-group { display: flex; flex-wrap: wrap; gap: 0.55rem; } .inbox-sync-chip, .inbox-sync-status, .inbox-router-state, .inbox-branch-badge { font-size: 0.68rem; border-radius: 999px; white-space: nowrap; } .inbox-sync-chip { color: var(--text-muted); border: 1px solid rgba(148, 163, 184, 0.18); background: rgba(15, 23, 42, 0.6); padding: 0.28rem 0.62rem; opacity: 0.58; transition: all 0.28s ease; } .inbox-sync-chip.active { opacity: 1; color: var(--text-primary); border-color: rgba(99, 102, 241, 0.42); background: rgba(99, 102, 241, 0.14); box-shadow: 0 0 22px rgba(99, 102, 241, 0.16); } .inbox-sync-status { color: var(--text-muted); border: 1px solid rgba(148, 163, 184, 0.18); padding: 0.3rem 0.7rem; background: rgba(15, 23, 42, 0.65); transition: all 0.28s ease; } .inbox-sync-status.active { color: #86efac; border-color: rgba(34, 197, 94, 0.36); background: rgba(34, 197, 94, 0.12); box-shadow: 0 0 22px rgba(34, 197, 94, 0.12); } .inbox-topology-board { position: relative; z-index: 1; min-height: 430px; padding: 1.25rem; border-radius: 24px; border: 1px solid rgba(148, 163, 184, 0.12); background: linear-gradient(180deg, rgba(15, 23, 42, 0.72), rgba(2, 6, 23, 0.72)); overflow: hidden; } .inbox-topology-board::before, .inbox-topology-board::after { content: ''; position: absolute; border-radius: 999px; pointer-events: none; filter: blur(70px); opacity: 0.24; } .inbox-topology-board::before { width: 260px; height: 260px; background: rgba(99, 102, 241, 0.8); top: -140px; left: 32%; } .inbox-topology-board::after { width: 220px; height: 220px; background: rgba(6, 182, 212, 0.7); bottom: -140px; right: 10%; } .inbox-network-canvas { position: relative; z-index: 2; min-height: 392px; display: grid; grid-template-columns: 228px 330px 360px; gap: 1rem; align-items: stretch; justify-content: space-between; } .inbox-column { position: relative; z-index: 2; } .inbox-column-left, .inbox-column-right { display: grid; gap: 0.85rem; grid-auto-rows: max-content; } .inbox-column-left { align-content: center; } .inbox-source-card, .inbox-router-shell, .inbox-route-node, .inbox-metric-card, .inbox-branch, .inbox-result-card, .inbox-log-board { backdrop-filter: blur(14px); } .inbox-source-card { display: flex; gap: 0.68rem; align-items: flex-start; padding: 0.8rem 0.85rem; border-radius: 18px; border: 1px solid rgba(148, 163, 184, 0.14); background: rgba(15, 23, 42, 0.56); opacity: 0.52; transform: scale(0.97); transition: all 0.3s ease; } .inbox-source-main { min-width: 0; } .inbox-source-card.active { opacity: 1; transform: scale(1); border-color: rgba(99, 102, 241, 0.44); box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.08), 0 0 26px rgba(99, 102, 241, 0.2); background: rgba(30, 41, 59, 0.78); } .inbox-source-icon { width: 38px; height: 38px; flex-shrink: 0; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 1.08rem; border: 1px solid rgba(255, 255, 255, 0.06); } .inbox-source-icon.court { background: linear-gradient(135deg, rgba(99, 102, 241, 0.3), rgba(99, 102, 241, 0.14)); } .inbox-source-icon.scanner { background: linear-gradient(135deg, rgba(6, 182, 212, 0.3), rgba(6, 182, 212, 0.14)); } .inbox-source-title { font-size: 0.88rem; font-weight: 700; color: var(--text-primary); } .inbox-source-desc, .inbox-source-meta, .inbox-router-sub, .inbox-result-card .title, .inbox-log-item { color: var(--text-muted); } .inbox-source-desc { margin-top: 0.14rem; font-size: 0.72rem; line-height: 1.45; } .inbox-source-meta { margin-top: 0.3rem; font-size: 0.66rem; letter-spacing: 0.02em; } .inbox-column-center { display: grid; justify-items: center; gap: 0.85rem; } .inbox-router-shell { width: 100%; max-width: 340px; display: flex; flex-direction: column; align-items: stretch; gap: 0.72rem; text-align: center; padding: 1.05rem 0.95rem 0.95rem; border-radius: 22px; border: 1px solid rgba(148, 163, 184, 0.14); background: rgba(15, 23, 42, 0.55); box-sizing: border-box; } .inbox-router-core { width: 90px; height: 90px; align-self: center; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 2.15rem; color: #fff; border: 2px solid rgba(99, 102, 241, 0.28); background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.22), transparent 30%), linear-gradient(145deg, rgba(59, 130, 246, 0.24), rgba(99, 102, 241, 0.12)); box-shadow: inset 0 0 28px rgba(255, 255, 255, 0.06); transition: all 0.3s ease; } .inbox-router-core.active { border-color: rgba(99, 102, 241, 0.7); box-shadow: 0 0 0 8px rgba(99, 102, 241, 0.08), 0 0 38px rgba(99, 102, 241, 0.28); transform: scale(1.05); } .inbox-router-title { align-self: center; font-size: 1rem; font-weight: 700; color: var(--text-primary); } .inbox-router-sub { align-self: center; font-size: 0.72rem; line-height: 1.58; max-width: 280px; } .inbox-router-state { align-self: center; padding: 0.28rem 0.68rem; border: 1px solid rgba(148, 163, 184, 0.18); color: var(--text-muted); background: rgba(15, 23, 42, 0.7); transition: all 0.25s ease; } .inbox-router-state.active { color: #f8fafc; border-color: rgba(99, 102, 241, 0.42); background: rgba(99, 102, 241, 0.14); } .inbox-route-matrix { width: 100%; display: grid; grid-template-columns: repeat(2, minmax(120px, 1fr)); gap: 0.65rem; margin-top: 0.1rem; } .inbox-route-node { border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 16px; padding: 0.72rem 0.8rem; background: linear-gradient(180deg, rgba(15, 23, 42, 0.7), rgba(15, 23, 42, 0.46)); text-align: left; color: var(--text-muted); opacity: 0.5; transition: all 0.25s ease; display: grid; gap: 0.18rem; } .inbox-route-code { display: inline-flex; align-items: center; justify-content: center; width: fit-content; min-width: 30px; padding: 0.12rem 0.4rem; border-radius: 999px; border: 1px solid rgba(148, 163, 184, 0.16); font-size: 0.62rem; letter-spacing: 0.08em; color: rgba(191, 219, 254, 0.9); background: rgba(30, 41, 59, 0.72); } .inbox-route-title { font-size: 0.78rem; font-weight: 700; color: var(--text-primary); letter-spacing: 0.01em; } .inbox-route-node.active { opacity: 1; color: var(--text-primary); border-color: rgba(99, 102, 241, 0.42); background: linear-gradient(180deg, rgba(99, 102, 241, 0.16), rgba(99, 102, 241, 0.08)); box-shadow: 0 0 20px rgba(99, 102, 241, 0.12); } .inbox-route-node.active .inbox-route-code { border-color: rgba(99, 102, 241, 0.3); background: rgba(99, 102, 241, 0.18); } .inbox-router-metrics { width: 100%; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.55rem; } .inbox-metric-card { border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 14px; padding: 0.72rem 0.68rem; background: rgba(15, 23, 42, 0.56); opacity: 0.6; transition: all 0.25s ease; box-sizing: border-box; } .inbox-metric-card.active { opacity: 1; border-color: rgba(6, 182, 212, 0.34); background: rgba(6, 182, 212, 0.1); box-shadow: 0 0 18px rgba(6, 182, 212, 0.12); } .inbox-metric-card.wide { grid-column: 1 / -1; } .inbox-metric-card .label { display: block; font-size: 0.62rem; color: var(--text-muted); letter-spacing: 0.04em; text-transform: uppercase; } .inbox-metric-card .value { display: block; margin-top: 0.24rem; font-size: 1.18rem; font-weight: 800; color: var(--text-primary); } .inbox-column-right { align-content: center; } .inbox-branch-split-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem; } .inbox-branch { border-radius: 18px; border: 1px solid rgba(148, 163, 184, 0.14); background: rgba(15, 23, 42, 0.56); padding: 0.88rem; opacity: 0.5; transform: translateY(4px); transition: all 0.3s ease; } .inbox-branch.active { opacity: 1; transform: translateY(0); box-shadow: 0 0 24px rgba(99, 102, 241, 0.12); } .inbox-branch.branch-court.active { border-color: rgba(99, 102, 241, 0.42); background: rgba(99, 102, 241, 0.1); } .inbox-branch.branch-material.active { border-color: rgba(6, 182, 212, 0.34); background: rgba(6, 182, 212, 0.08); box-shadow: 0 0 24px rgba(6, 182, 212, 0.12); } .inbox-branch-head { display: flex; align-items: center; justify-content: space-between; gap: 0.42rem; margin-bottom: 0.55rem; font-size: 0.78rem; font-weight: 700; color: var(--text-primary); } .inbox-branch-title { white-space: nowrap; font-size: 0.74rem; line-height: 1; } .inbox-branch-badge { color: var(--text-muted); border: 1px solid rgba(148, 163, 184, 0.16); background: rgba(15, 23, 42, 0.72); padding: 0.18rem 0.42rem; transition: all 0.25s ease; flex-shrink: 0; } .inbox-branch-badge.done { color: #86efac; border-color: rgba(34, 197, 94, 0.34); background: rgba(34, 197, 94, 0.12); } .inbox-branch-pane { border-radius: 14px; border: 1px solid rgba(148, 163, 184, 0.12); background: rgba(255, 255, 255, 0.02); padding: 0.72rem; transition: all 0.25s ease; box-sizing: border-box; } .inbox-branch-pane.active { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.03); } .inbox-branch-pane.branch-incoming.active { border-color: rgba(6, 182, 212, 0.32); background: rgba(6, 182, 212, 0.08); } .inbox-branch-pane.branch-outgoing.active { border-color: rgba(99, 102, 241, 0.32); background: rgba(99, 102, 241, 0.08); } .inbox-branch-pane-title { margin-bottom: 0.22rem; font-size: 0.72rem; font-weight: 700; color: var(--text-primary); } .inbox-branch-item { font-size: 0.7rem; color: var(--text-muted); padding: 0.42rem 0.54rem; border-radius: 12px; border: 1px solid transparent; background: rgba(255, 255, 255, 0.01); margin-top: 0.3rem; opacity: 0.46; transition: all 0.25s ease; } .inbox-branch-item.active { opacity: 1; color: var(--text-primary); border-color: rgba(255, 255, 255, 0.08); background: rgba(255, 255, 255, 0.06); } .inbox-flow-lane, .inbox-packet-stream { position: absolute; z-index: 1; pointer-events: none; } .inbox-flow-lane { height: 2px; opacity: 0.18; border-radius: 999px; background: linear-gradient(90deg, rgba(99, 102, 241, 0.05), rgba(99, 102, 241, 0.65), rgba(6, 182, 212, 0.08)); overflow: hidden; transform-origin: left center; transition: opacity 0.25s ease, box-shadow 0.25s ease; } .inbox-flow-lane::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.95), transparent); transform: translateX(-120%); opacity: 0; } .inbox-flow-lane.active { opacity: 1; box-shadow: 0 0 18px rgba(99, 102, 241, 0.32); } .inbox-flow-lane.active::after { opacity: 1; animation: inboxLaneSweep 1.8s linear infinite; } .lane-court-in { top: 39.5%; left: 20.5%; width: 23.5%; } .lane-material-in { top: 60.5%; left: 20.5%; width: 23.5%; background: linear-gradient(90deg, rgba(6, 182, 212, 0.08), rgba(6, 182, 212, 0.7), rgba(99, 102, 241, 0.05)); } .lane-court-out { top: 29%; left: 48.5%; width: 25%; } .lane-material-out { top: 62%; left: 48.5%; width: 25%; background: linear-gradient(90deg, rgba(6, 182, 212, 0.08), rgba(6, 182, 212, 0.7), rgba(99, 102, 241, 0.08)); } .inbox-packet-stream { width: 42px; height: 4px; border-radius: 999px; opacity: 0; filter: drop-shadow(0 0 8px currentColor); } .packet-court-in, .packet-court-out { color: #a5b4fc; background: linear-gradient(90deg, rgba(165, 180, 252, 0), rgba(165, 180, 252, 0.92), rgba(255, 255, 255, 0.95), rgba(165, 180, 252, 0)); } .packet-material-in, .packet-material-out { color: #67e8f9; background: linear-gradient(90deg, rgba(103, 232, 249, 0), rgba(103, 232, 249, 0.92), rgba(255, 255, 255, 0.95), rgba(103, 232, 249, 0)); } .packet-court-in { top: calc(39.5% - 4px); left: 20.5%; } .packet-material-in { top: calc(60.5% - 4px); left: 20.5%; } .packet-court-out { top: calc(29% - 4px); left: 48.5%; } .packet-material-out { top: calc(62% - 4px); left: 48.5%; } .inbox-packet-stream.active { opacity: 1; animation: inboxPacketDash 1.35s linear infinite; } @keyframes inboxLaneSweep { 0% { transform: translateX(-120%); } 100% { transform: translateX(120%); } } @keyframes inboxPacketDash { 0% { transform: translateX(0); } 100% { transform: translateX(172px); } } .inbox-log-board { margin-top: 1rem; display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 18px; background: rgba(15, 23, 42, 0.56); padding: 0.75rem; } .inbox-log-label { font-size: 0.68rem; color: rgba(191, 219, 254, 0.9); border: 1px solid rgba(99, 102, 241, 0.22); border-radius: 999px; padding: 0.22rem 0.55rem; background: rgba(99, 102, 241, 0.1); flex-shrink: 0; } .inbox-log-item { font-size: 0.7rem; border-radius: 999px; border: 1px solid transparent; padding: 0.36rem 0.68rem; opacity: 0.34; transform: translateY(4px); transition: all 0.25s ease; white-space: nowrap; } .inbox-log-item.show { opacity: 1; transform: translateY(0); color: var(--text-primary); border-color: rgba(99, 102, 241, 0.22); background: rgba(99, 102, 241, 0.08); } .inbox-result-strip { margin-top: 0.9rem; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.75rem; } .inbox-result-card { border: 1px solid rgba(148, 163, 184, 0.14); border-radius: 18px; background: rgba(15, 23, 42, 0.58); padding: 0.9rem; opacity: 0; transform: translateY(8px) scale(0.98); transition: all 0.32s ease; } .inbox-result-card.show { opacity: 1; transform: translateY(0) scale(1); border-color: rgba(99, 102, 241, 0.28); box-shadow: 0 0 20px rgba(99, 102, 241, 0.1); } .inbox-result-card .title { font-size: 0.72rem; } .inbox-result-card .value { margin-top: 0.22rem; font-size: 1.45rem; font-weight: 800; color: var(--text-primary); } .inbox-flow-steps { display: flex; justify-content: center; flex-wrap: wrap; gap: 0.55rem; margin-top: 1.35rem; } .inbox-flow-step { display: flex; align-items: center; gap: 0.45rem; padding: 0.46rem 0.92rem; border-radius: 999px; border: 1px solid rgba(148, 163, 184, 0.16); background: rgba(15, 23, 42, 0.62); color: var(--text-muted); font-size: 0.76rem; transition: all 0.25s ease; } .inbox-flow-step.active { border-color: rgba(99, 102, 241, 0.42); color: var(--text-primary); background: rgba(99, 102, 241, 0.12); } .inbox-flow-step.completed { border-color: rgba(34, 197, 94, 0.34); color: #86efac; background: rgba(34, 197, 94, 0.1); } .inbox-flow-step-num { width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(148, 163, 184, 0.22); color: var(--text-muted); font-size: 0.67rem; font-weight: 700; } .inbox-flow-step.active .inbox-flow-step-num { background: var(--primary); color: #fff; } .inbox-flow-step.completed .inbox-flow-step-num { background: #22c55e; color: #fff; } @media (max-width: 1180px) { .inbox-network-canvas { grid-template-columns: 210px 300px 320px; } .inbox-branch-split-grid { grid-template-columns: 1fr; } .inbox-result-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 1024px) { .inbox-topology-board { min-height: auto; } .inbox-network-canvas { min-height: auto; grid-template-columns: 1fr; } .inbox-flow-lane, .inbox-packet-stream { display: none; } .inbox-column-left, .inbox-column-right, .inbox-column-center { width: 100%; } .inbox-router-shell { max-width: none; } } @media (max-width: 768px) { .inbox-flow-section { padding: 6rem 1.2rem; } .inbox-demo { padding: 1.1rem; } .inbox-topology-board { padding: 1rem; } .inbox-route-matrix, .inbox-router-metrics, .inbox-result-strip { grid-template-columns: 1fr; } .inbox-flow-step { font-size: 0.68rem; } } /* ========== 聊天记录梳理流程动画 - 紧凑版 ========== */ .chat-record-section { padding: 5rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(244, 114, 182, 0.03), transparent); } .chat-record-container { max-width: 1100px; margin: 0 auto; } /* 紧凑横向布局 */ .chat-flow-compact { display: flex; align-items: stretch; gap: 0.5rem; margin-top: 2rem; } /* 列卡片 */ .chat-col { flex: 1; background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 1rem; opacity: 0.4; transform: scale(0.95); transition: all 0.4s ease; } .chat-col.active { opacity: 1; transform: scale(1); border-color: var(--primary); box-shadow: 0 0 20px rgba(99, 102, 241, 0.15); } .chat-col.completed { opacity: 1; transform: scale(1); border-color: #22c55e; } .chat-col-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border); } .chat-col-num { width: 22px; height: 22px; border-radius: 50%; background: var(--border); display: flex; align-items: center; justify-content: center; font-size: 0.7rem; font-weight: 700; color: var(--text-muted); transition: all 0.3s ease; } .chat-col.active .chat-col-num { background: var(--gradient-1); color: white; } .chat-col.completed .chat-col-num { background: #22c55e; color: white; } .chat-col-title { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); } .chat-ai-badge { margin-left: auto; padding: 0.15rem 0.4rem; background: rgba(34, 197, 94, 0.15); border: 1px solid rgba(34, 197, 94, 0.3); border-radius: 100px; font-size: 0.6rem; font-weight: 600; color: #22c55e; } /* 箭头 */ .chat-arrow { display: flex; align-items: center; justify-content: center; font-size: 1.25rem; color: var(--border); opacity: 0; transition: all 0.3s ease; flex-shrink: 0; width: 24px; } .chat-arrow.active { opacity: 1; color: var(--primary); } /* 上传区域 */ .chat-upload-box { border: 2px dashed var(--border); border-radius: 8px; padding: 1rem; text-align: center; transition: all 0.3s ease; } .chat-upload-box.uploading { border-color: var(--accent); background: rgba(6, 182, 212, 0.05); } .chat-upload-icon { font-size: 1.5rem; margin-bottom: 0.25rem; } .chat-upload-text { font-size: 0.75rem; color: var(--text-muted); } .chat-upload-progress { margin-top: 0.5rem; display: none; } .chat-upload-box.uploading .chat-upload-progress { display: block; } .chat-progress-bar { height: 4px; background: var(--border); border-radius: 2px; overflow: hidden; } .chat-progress-bar::after { content: ''; display: block; height: 100%; width: 0%; background: var(--gradient-1); border-radius: 2px; transition: width 0.1s linear; } /* 视频完成状态 */ .chat-video-done { display: none; align-items: center; gap: 0.5rem; padding: 0.5rem; background: rgba(34, 197, 94, 0.05); border: 1px solid rgba(34, 197, 94, 0.3); border-radius: 8px; } .chat-video-done.show { display: flex; } .chat-video-thumb { width: 32px; height: 24px; background: linear-gradient(135deg, #1a1a2e, #16162a); border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 0.6rem; color: white; } .chat-video-info { flex: 1; min-width: 0; } .chat-video-name { font-size: 0.7rem; font-weight: 600; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .chat-video-meta { font-size: 0.6rem; color: var(--text-muted); } .chat-video-check { width: 18px; height: 18px; border-radius: 50%; background: #22c55e; display: flex; align-items: center; justify-content: center; font-size: 0.6rem; color: white; } /* AI 任务 2x2 网格 */ .chat-ai-tasks { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.4rem; } .chat-ai-task { display: flex; align-items: center; gap: 0.3rem; padding: 0.4rem 0.5rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 6px; font-size: 0.65rem; color: var(--text-muted); opacity: 0.5; transition: all 0.3s ease; } .chat-ai-task span { font-size: 0.8rem; } .chat-ai-task.processing { opacity: 1; border-color: #fbbf24; background: rgba(251, 191, 36, 0.05); color: var(--text-primary); animation: chatTaskPulse 1s ease-in-out infinite; } .chat-ai-task.completed { opacity: 1; border-color: #22c55e; background: rgba(34, 197, 94, 0.05); color: #22c55e; } @keyframes chatTaskPulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(251, 191, 36, 0.3); } 50% { box-shadow: 0 0 8px 2px rgba(251, 191, 36, 0.15); } } /* 截帧 3x2 迷你网格 */ .chat-frames-mini { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.3rem; } .chat-frame-mini { aspect-ratio: 9/16; max-height: 50px; background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(6, 182, 212, 0.1)); border: 1px solid var(--border); border-radius: 4px; opacity: 0; transform: scale(0.8); transition: all 0.3s ease; position: relative; } .chat-frame-mini.show { opacity: 1; transform: scale(1); } .chat-frame-mini.dup { background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.3); } .chat-frame-mini.dup .dup-x { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 0.7rem; color: #ef4444; font-weight: bold; } .chat-frame-mini.removing { opacity: 0; transform: scale(0.5); } .chat-frames-stat { margin-top: 0.5rem; text-align: center; font-size: 0.65rem; color: var(--text-muted); } .chat-frames-stat span { font-weight: 700; color: var(--primary); } /* 导出文件 */ .chat-export-file { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem; background: rgba(239, 68, 68, 0.05); border: 1px solid rgba(239, 68, 68, 0.2); border-radius: 8px; opacity: 0; transform: translateY(10px); transition: all 0.4s ease; } .chat-export-file.show { opacity: 1; transform: translateY(0); } .chat-export-icon { font-size: 1.5rem; } .chat-export-info { flex: 1; } .chat-export-name { font-size: 0.75rem; font-weight: 600; color: var(--text-primary); } .chat-export-meta { font-size: 0.6rem; color: var(--text-muted); } /* 响应式 */ @media (max-width: 768px) { .chat-flow-compact { flex-direction: column; gap: 0.75rem; } .chat-arrow { transform: rotate(90deg); width: auto; height: 24px; } .chat-ai-tasks { grid-template-columns: repeat(2, 1fr); } .chat-frames-mini { grid-template-columns: repeat(3, 1fr); } } /* 控制按钮 */ .chat-flow-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 1.5rem; } /* ========== 案件全流程管理与智能文书生成动画 V2 ========== */ .case-flow-section { padding: 8rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(99, 102, 241, 0.03), transparent); } .case-flow-container { max-width: 1400px; margin: 0 auto; } /* 主布局 - 左右分栏 */ .case-flow-demo-v2 { display: grid; grid-template-columns: 320px 1fr; gap: 2rem; margin-top: 3rem; background: linear-gradient(145deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2)); border: 1px solid var(--border); border-radius: 24px; padding: 2rem; min-height: 600px; } /* 左侧面板 */ .case-left-panel { display: flex; flex-direction: column; gap: 1.25rem; } /* 上传区域 */ .case-upload-box { border: 2px dashed var(--border); border-radius: 16px; padding: 1.5rem; text-align: center; transition: all 0.4s ease; opacity: 0; transform: scale(0.9); } .case-upload-box.active { opacity: 1; transform: scale(1); border-color: var(--primary); background: rgba(99, 102, 241, 0.05); } .case-upload-box.done { border-color: #22c55e; background: rgba(34, 197, 94, 0.05); } .case-upload-icon { font-size: 2rem; margin-bottom: 0.5rem; } .case-upload-title { font-size: 0.95rem; font-weight: 600; color: var(--text-primary); } .case-upload-desc { font-size: 0.75rem; color: var(--text-muted); margin-top: 0.25rem; } /* AI 识别结果 - 紧凑版 */ .case-ai-compact { background: rgba(99, 102, 241, 0.05); border: 1px solid rgba(99, 102, 241, 0.2); border-radius: 12px; padding: 1rem; opacity: 0; transform: translateY(15px); transition: all 0.4s ease; } .case-ai-compact.active { opacity: 1; transform: translateY(0); } .case-ai-compact-header { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border); } .case-ai-compact-icon { font-size: 1rem; } .case-ai-compact-title { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); } .case-ai-compact-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; } .case-ai-compact-item { padding: 0.5rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 8px; opacity: 0.4; transition: all 0.3s ease; } .case-ai-compact-item.active { opacity: 1; border-color: var(--primary); } .case-ai-compact-item.done { opacity: 1; border-color: #22c55e; } .case-ai-compact-item .label { display: block; font-size: 0.65rem; color: var(--text-muted); } .case-ai-compact-item .value { display: block; font-size: 0.8rem; font-weight: 600; color: var(--text-primary); margin-top: 0.125rem; } /* 生成状态 */ .case-gen-status { display: flex; flex-direction: column; gap: 0.5rem; opacity: 0; transform: translateY(15px); transition: all 0.4s ease; } .case-gen-status.active { opacity: 1; transform: translateY(0); } .case-gen-status-item { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; transition: all 0.3s ease; } .case-gen-status-item.processing { border-color: #fbbf24; background: rgba(251, 191, 36, 0.05); } .case-gen-status-item.done { border-color: #22c55e; background: rgba(34, 197, 94, 0.05); } .case-gen-status-item .icon { font-size: 1rem; } .case-gen-status-item .text { flex: 1; font-size: 0.8rem; font-weight: 500; color: var(--text-primary); } .case-gen-status-item .status { font-size: 0.75rem; color: var(--text-muted); } .case-gen-status-item.processing .status { color: #fbbf24; } .case-gen-status-item.done .status { color: #22c55e; } /* 文件夹树形结构 */ .case-folder-tree { background: rgba(0, 0, 0, 0.3); border: 1px solid var(--border); border-radius: 16px; overflow: hidden; opacity: 0; transform: translateX(20px); transition: all 0.5s ease; } .case-folder-tree.active { opacity: 1; transform: translateX(0); } .folder-tree-header { display: flex; align-items: center; gap: 0.75rem; padding: 1rem 1.25rem; background: rgba(99, 102, 241, 0.1); border-bottom: 1px solid var(--border); } .folder-tree-icon { font-size: 1.25rem; } .folder-tree-title { flex: 1; font-size: 0.95rem; font-weight: 700; color: var(--text-primary); } .folder-tree-badge { padding: 0.25rem 0.75rem; background: rgba(251, 191, 36, 0.15); border: 1px solid rgba(251, 191, 36, 0.3); border-radius: 100px; font-size: 0.7rem; font-weight: 600; color: #fbbf24; } .folder-tree-badge.done { background: rgba(34, 197, 94, 0.15); border-color: rgba(34, 197, 94, 0.3); color: #22c55e; } .folder-tree-content { padding: 1rem; max-height: 500px; overflow-y: auto; } /* 文件夹节点 */ .folder-node { opacity: 0; transform: translateX(-10px); transition: all 0.3s ease; } .folder-node.show { opacity: 1; transform: translateX(0); } .folder-node.level-0 { margin-bottom: 0.5rem; } .folder-node.level-1 { margin-left: 1.25rem; margin-top: 0.25rem; padding-left: 0.75rem; border-left: 1px solid var(--border); } .folder-node.level-2 { margin-left: 1.25rem; margin-top: 0.2rem; padding-left: 0.75rem; border-left: 1px solid var(--border); } .file-node.level-2 { margin-left: 1.25rem; } .file-node.level-3 { margin-left: 1.5rem; } .folder-node-header { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem; border-radius: 8px; transition: all 0.2s ease; } .folder-node.show .folder-node-header { background: rgba(99, 102, 241, 0.05); } .folder-icon { font-size: 0.9rem; } .folder-name { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); } .folder-children { margin-top: 0.25rem; } /* 文件节点 */ .file-node { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.75rem; margin-left: 1.25rem; border-left: 1px solid var(--border); opacity: 0; transform: translateX(-10px); transition: all 0.3s ease; } .file-node.show { opacity: 1; transform: translateX(0); } .file-node.highlight { background: rgba(34, 197, 94, 0.1); border-radius: 6px; border-left-color: #22c55e; } .file-icon { font-size: 0.8rem; } .file-name { flex: 1; font-size: 0.75rem; color: var(--text-secondary); } .file-node.show .file-name { color: var(--text-primary); } .file-badge { padding: 0.125rem 0.375rem; border-radius: 4px; font-size: 0.6rem; font-weight: 700; opacity: 0; transform: scale(0); transition: all 0.3s ease; } .file-badge.new { background: rgba(34, 197, 94, 0.15); color: #22c55e; } .file-node.generated .file-badge { opacity: 1; transform: scale(1); } /* 控制按钮 */ .case-flow-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 2rem; } /* 响应式 */ @media (max-width: 1024px) { .case-flow-demo-v2 { grid-template-columns: 1fr; min-height: auto; } .case-folder-tree { max-height: 400px; } .folder-tree-content { max-height: 350px; } } @media (max-width: 768px) { .case-ai-compact-grid { grid-template-columns: 1fr; } } /* ========== 模拟庭审动画 ========== */ .mock-trial-section { padding: 8rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(251, 191, 36, 0.03), transparent); } .mock-trial-container { max-width: 1200px; margin: 0 auto; } .courtroom { margin-top: 3rem; background: linear-gradient(145deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2)); border: 1px solid var(--border); border-radius: 24px; padding: 2rem; position: relative; min-height: 520px; display: flex; flex-direction: column; } /* 法官区域 */ .court-judge { display: flex; justify-content: center; margin-bottom: 1.5rem; } .judge-bench { display: flex; align-items: center; gap: 1rem; padding: 1rem 2rem; background: rgba(251, 191, 36, 0.08); border: 1px solid rgba(251, 191, 36, 0.3); border-radius: 16px; opacity: 0; transform: translateY(-20px); } .judge-bench.active { opacity: 1; transform: translateY(0); transition: all 0.5s ease; } .judge-avatar { width: 48px; height: 48px; border-radius: 12px; background: linear-gradient(135deg, #fbbf24, #f59e0b); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; flex-shrink: 0; } .judge-info .judge-name { font-size: 0.95rem; font-weight: 700; color: #fbbf24; } .judge-info .judge-role { font-size: 0.75rem; color: var(--text-muted); } .ws-indicator { margin-left: auto; display: flex; align-items: center; gap: 0.5rem; padding: 0.35rem 0.75rem; background: rgba(34, 197, 94, 0.1); border: 1px solid rgba(34, 197, 94, 0.3); border-radius: 100px; font-size: 0.7rem; color: #22c55e; } .ws-dot { width: 6px; height: 6px; background: #22c55e; border-radius: 50%; animation: pulse 2s infinite; } /* 角色图例栏 */ .court-legend { display: flex; justify-content: center; gap: 2.5rem; margin-bottom: 1.5rem; opacity: 0; transform: translateY(10px); transition: all 0.4s ease; } .court-legend.active { opacity: 1; transform: translateY(0); } .legend-item { display: flex; align-items: center; gap: 0.5rem; } .legend-avatar { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; } .legend-avatar.plaintiff { background: linear-gradient(135deg, #6366f1, #818cf8); } .legend-avatar.defendant { background: linear-gradient(135deg, #ef4444, #f87171); } .legend-avatar.judge-av { background: linear-gradient(135deg, #fbbf24, #f59e0b); } .legend-text { font-size: 0.8rem; color: var(--text-secondary); font-weight: 600; } /* 聊天气泡区域 */ .court-chat { flex: 1; display: flex; flex-direction: column; gap: 1rem; max-height: 400px; overflow-y: auto; padding: 0.75rem; scrollbar-width: thin; scrollbar-color: var(--border) transparent; } /* 每条消息行 */ .chat-msg-row { display: flex; gap: 0.75rem; align-items: flex-start; opacity: 0; transform: translateY(15px); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .chat-msg-row.show { opacity: 1; transform: translateY(0); } /* 原告:左对齐 */ .chat-msg-row.plaintiff { justify-content: flex-start; } /* 被告:右对齐,头像在右 */ .chat-msg-row.defendant { flex-direction: row-reverse; } /* 法官:左对齐 */ .chat-msg-row.judge { justify-content: flex-start; } /* 消息头像 */ .msg-avatar { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1rem; flex-shrink: 0; margin-top: 0.15rem; } .chat-msg-row.judge .msg-avatar { background: linear-gradient(135deg, #fbbf24, #f59e0b); } .chat-msg-row.plaintiff .msg-avatar { background: linear-gradient(135deg, #6366f1, #818cf8); } .chat-msg-row.defendant .msg-avatar { background: linear-gradient(135deg, #ef4444, #f87171); } /* 气泡 */ .msg-bubble { max-width: 70%; padding: 0.75rem 1rem; border-radius: 14px; font-size: 0.85rem; line-height: 1.65; } .chat-msg-row.judge .msg-bubble { background: rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.25); color: #fde68a; border-radius: 4px 14px 14px 14px; } .chat-msg-row.plaintiff .msg-bubble { background: rgba(99, 102, 241, 0.1); border: 1px solid rgba(99, 102, 241, 0.25); color: #c7d2fe; border-radius: 4px 14px 14px 14px; } .chat-msg-row.defendant .msg-bubble { background: rgba(239, 68, 68, 0.08); border: 1px solid rgba(239, 68, 68, 0.25); color: #fecaca; border-radius: 14px 4px 14px 14px; } .msg-name { font-size: 0.7rem; font-weight: 700; margin-bottom: 0.2rem; opacity: 0.6; } /* 庭审控制 */ .court-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 2rem; } @media (max-width: 768px) { .court-chat { max-height: 320px; } .msg-bubble { max-width: 85%; } .court-legend { gap: 1.25rem; } } /* ========== 自动立案动画 ========== */ .auto-filing-section { padding: 8rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(99, 102, 241, 0.03), transparent); } .auto-filing-container { max-width: 1400px; margin: 0 auto; } /* 双通道并排 */ .filing-dual { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; margin-top: 2rem; } .filing-channel { background: linear-gradient(145deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2)); border: 1px solid var(--border); border-radius: 24px; padding: 1.5rem; position: relative; overflow: hidden; } .channel-badge { text-align: center; font-size: 0.95rem; font-weight: 600; color: var(--text-primary); margin-bottom: 1.25rem; padding: 0.5rem 1rem; background: rgba(99, 102, 241, 0.1); border: 1px solid rgba(99, 102, 241, 0.2); border-radius: 10px; } /* 浏览器模拟器 */ .browser-mockup { background: rgba(0, 0, 0, 0.3); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; } .browser-bar { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem; background: rgba(255, 255, 255, 0.03); border-bottom: 1px solid var(--border); } .browser-dots { display: flex; gap: 6px; } .browser-dots span { width: 10px; height: 10px; border-radius: 50%; } .browser-dots span:nth-child(1) { background: #ef4444; } .browser-dots span:nth-child(2) { background: #eab308; } .browser-dots span:nth-child(3) { background: #22c55e; } .browser-url { flex: 1; padding: 0.4rem 0.75rem; background: rgba(255, 255, 255, 0.05); border-radius: 6px; font-size: 0.75rem; color: var(--text-muted); font-family: monospace; } .browser-content { padding: 1.5rem; min-height: 240px; } /* 步骤流程条 */ .filing-steps { display: flex; align-items: center; justify-content: center; gap: 0; margin-bottom: 2rem; } .filing-step { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; position: relative; z-index: 1; } .filing-step-circle { width: 44px; height: 44px; border-radius: 50%; background: var(--bg-card); border: 2px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 1.1rem; transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .filing-step.active .filing-step-circle { border-color: var(--primary); background: rgba(99, 102, 241, 0.15); box-shadow: 0 0 20px rgba(99, 102, 241, 0.4); transform: scale(1.15); } .filing-step.completed .filing-step-circle { border-color: #22c55e; background: rgba(34, 197, 94, 0.15); } .filing-step-label { font-size: 0.7rem; color: var(--text-muted); font-weight: 500; white-space: nowrap; transition: color 0.3s ease; } .filing-step.active .filing-step-label { color: var(--primary-light); } .filing-step.completed .filing-step-label { color: #22c55e; } .filing-step-line { width: 30px; height: 2px; background: var(--border); position: relative; overflow: hidden; margin-bottom: 1.5rem; } .filing-step-line::after { content: ''; position: absolute; top: 0; left: 0; height: 100%; width: 0%; background: var(--gradient-1); transition: width 0.4s ease; } .filing-step-line.filled::after { width: 100%; } /* 步骤内容区 - 模拟表单 */ .filing-form-mock { display: flex; flex-direction: column; gap: 0.75rem; } .filing-form-row { display: flex; gap: 1rem; align-items: center; opacity: 0; transform: translateX(-10px); transition: all 0.3s ease; } .filing-form-row.show { opacity: 1; transform: translateX(0); } .filing-form-label { width: 100px; font-size: 0.8rem; color: var(--text-muted); text-align: right; flex-shrink: 0; } .filing-form-value { flex: 1; padding: 0.5rem 0.75rem; background: rgba(255, 255, 255, 0.05); border: 1px solid var(--border); border-radius: 8px; font-size: 0.8rem; color: var(--text-primary); position: relative; overflow: hidden; } .filing-form-value.typing::after { content: '|'; animation: cursorBlink 1s step-end infinite; color: var(--primary); } .filing-form-value.filled { border-color: rgba(34, 197, 94, 0.3); background: rgba(34, 197, 94, 0.05); } .filing-status-bar { display: flex; align-items: center; justify-content: center; gap: 0.75rem; margin-top: 1.5rem; padding: 0.75rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 10px; font-size: 0.8rem; color: var(--text-muted); opacity: 0; transition: all 0.3s ease; } .filing-status-bar.show { opacity: 1; } .filing-status-bar.success { border-color: rgba(34, 197, 94, 0.3); color: #22c55e; background: rgba(34, 197, 94, 0.05); } .filing-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 2rem; } @media (max-width: 900px) { .filing-dual { grid-template-columns: 1fr; } } @media (max-width: 768px) { .filing-steps { flex-wrap: wrap; gap: 0.5rem; } .filing-step-line { width: 30px; } .filing-tab { padding: 0.6rem 1.25rem; font-size: 0.85rem; } } /* ========== 证据智能分类动画 ========== */ .evidence-sorting-section { padding: 8rem 2rem; position: relative; overflow: hidden; background: linear-gradient(180deg, transparent, rgba(16, 185, 129, 0.03), transparent); } .evidence-sorting-container { max-width: 1200px; margin: 0 auto; } .evidence-demo { margin-top: 3rem; background: linear-gradient(145deg, rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.2)); border: 1px solid var(--border); border-radius: 24px; padding: 2rem; display: grid; grid-template-columns: 1fr auto 1fr; gap: 1.5rem; align-items: center; min-height: 400px; } /* 左侧:散乱文件 */ .evidence-source { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; align-content: center; min-height: 300px; } .evidence-file { width: 90px; padding: 0.75rem 0.5rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; text-align: center; opacity: 0; transform: rotate(var(--rotate, 0deg)) scale(0.8); transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); } .evidence-file.show { opacity: 1; transform: rotate(var(--rotate, 0deg)) scale(1); } .evidence-file.flying { opacity: 0; transform: translateX(200px) scale(0.3) !important; transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); } .evidence-file-icon { font-size: 1.75rem; margin-bottom: 0.25rem; } .evidence-file-name { font-size: 0.65rem; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* 中间:AI 处理器 */ .evidence-ai-core { display: flex; flex-direction: column; align-items: center; gap: 1rem; } .ai-brain { width: 100px; height: 100px; border-radius: 50%; background: var(--bg-card); border: 2px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 2.5rem; position: relative; transition: all 0.4s ease; } .ai-brain.active { border-color: var(--primary); box-shadow: 0 0 40px rgba(99, 102, 241, 0.4), 0 0 80px rgba(99, 102, 241, 0.15); animation: brainPulse 2s ease-in-out infinite; } @keyframes brainPulse { 0%, 100% { box-shadow: 0 0 40px rgba(99, 102, 241, 0.4), 0 0 80px rgba(99, 102, 241, 0.15); } 50% { box-shadow: 0 0 60px rgba(99, 102, 241, 0.6), 0 0 120px rgba(99, 102, 241, 0.25); } } .ai-brain-ring { position: absolute; width: 130px; height: 130px; border: 1px dashed var(--border); border-radius: 50%; opacity: 0; transition: opacity 0.3s ease; } .ai-brain.active .ai-brain-ring { opacity: 1; animation: ringRotate 8s linear infinite; } @keyframes ringRotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .ai-progress-text { font-size: 0.8rem; font-weight: 600; color: var(--text-muted); transition: color 0.3s ease; } .ai-progress-text.active { color: var(--primary-light); } /* 右侧:分类结果 */ .evidence-result { display: flex; flex-direction: column; gap: 0.75rem; } .evidence-category { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1rem; background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; opacity: 0; transform: translateX(20px); transition: all 0.4s ease; } .evidence-category.show { opacity: 1; transform: translateX(0); } .evidence-category.receiving { border-color: var(--primary); box-shadow: 0 0 15px rgba(99, 102, 241, 0.2); } .category-icon { width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; flex-shrink: 0; } .category-icon.contract { background: rgba(99, 102, 241, 0.15); } .category-icon.finance { background: rgba(34, 197, 94, 0.15); } .category-icon.identity { background: rgba(251, 191, 36, 0.15); } .category-icon.chat { background: rgba(244, 114, 182, 0.15); } .category-icon.photo { background: rgba(6, 182, 212, 0.15); } .category-info { flex: 1; } .category-name { font-size: 0.85rem; font-weight: 600; color: var(--text-primary); } .category-count { font-size: 0.7rem; color: var(--text-muted); } .category-badge { padding: 0.2rem 0.5rem; border-radius: 6px; font-size: 0.65rem; font-weight: 700; background: rgba(34, 197, 94, 0.15); color: #22c55e; opacity: 0; transform: scale(0); transition: all 0.3s ease; } .category-badge.show { opacity: 1; transform: scale(1); } .evidence-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 2rem; } /* 对比模式:原区域变为左右两栏 */ .evidence-demo.compare-mode { grid-template-columns: 1fr 1fr; align-items: stretch; } .evidence-demo.compare-mode .evidence-ai-core { display: none; } .evidence-demo.compare-mode .evidence-source, .evidence-demo.compare-mode .evidence-result { min-height: auto; background: rgba(0, 0, 0, 0.2); border: 1px solid var(--border); border-radius: 16px; padding: 1.25rem; } .evidence-demo.compare-mode .evidence-source { display: flex; flex-direction: column; flex-wrap: nowrap; align-content: unset; justify-content: unset; } .evidence-demo.compare-mode .evidence-result { display: flex; flex-direction: column; } .compare-label { font-size: 0.85rem; font-weight: 700; margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border); } .compare-before-label { color: var(--text-muted); } .compare-after-label { color: #22c55e; } /* 整理前:紧凑文件列表 */ .compare-file-list { display: flex; flex-direction: column; gap: 0.4rem; } .compare-file-item { display: flex; align-items: center; gap: 0.5rem; padding: 0.45rem 0.75rem; background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border); border-radius: 8px; font-size: 0.78rem; color: var(--text-muted); opacity: 0; transform: translateY(6px); transition: all 0.3s ease; } .compare-file-item.show { opacity: 0.6; transform: translateY(0); } .compare-file-item .file-idx { font-size: 0.65rem; color: var(--text-muted); opacity: 0.5; min-width: 1.2em; } /* 整理后:文件夹展开 */ .compare-folder { margin-bottom: 0.5rem; opacity: 0; transform: translateX(8px); transition: all 0.35s ease; } .compare-folder.show { opacity: 1; transform: translateX(0); } .compare-folder-header { display: flex; align-items: center; gap: 0.4rem; font-size: 0.8rem; font-weight: 600; color: var(--text-primary); padding: 0.4rem 0.6rem; background: rgba(34, 197, 94, 0.06); border-radius: 8px; margin-bottom: 0.35rem; } .compare-folder-files { display: flex; flex-wrap: wrap; gap: 0.3rem; padding-left: 1.25rem; margin-bottom: 0.25rem; } .compare-folder-file { font-size: 0.68rem; color: #22c55e; padding: 0.2rem 0.5rem; background: rgba(34, 197, 94, 0.06); border: 1px solid rgba(34, 197, 94, 0.15); border-radius: 6px; } /* 统计对比 */ .compare-stats { margin-top: auto; padding-top: 0.75rem; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: 0.4rem; } .compare-stat-row { display: flex; justify-content: space-between; align-items: center; font-size: 0.75rem; line-height: 1.4; } .compare-stat-row .stat-label { color: var(--text-muted); font-size: 0.72rem; background: none; -webkit-text-fill-color: unset; } .compare-stat-row .stat-value { color: var(--text-secondary); font-weight: 600; font-size: 0.72rem; background: none; -webkit-text-fill-color: unset; } .compare-stat-row .stat-bad { color: #ef4444; -webkit-text-fill-color: #ef4444; } .compare-stat-row .stat-good { color: #22c55e; -webkit-text-fill-color: #22c55e; } @media (max-width: 768px) { .evidence-demo { grid-template-columns: 1fr; grid-template-rows: auto auto auto; } .evidence-demo.compare-mode { grid-template-columns: 1fr; } .evidence-file.flying { transform: translateY(100px) scale(0.3) !important; } } </style>
<style>
:root {
--primary: #6366f1;
--primary-light: #818cf8;
--primary-dark: #4f46e5;
--accent: #06b6d4;
--accent-light: #22d3ee;
--bg-dark: #0a0a0f;
--bg-card: rgba(255, 255, 255, 0.03);
--bg-card-hover: rgba(255, 255, 255, 0.08);
--text-primary: #f8fafc;
--text-secondary: #94a3b8;
--text-muted: #64748b;
--border: rgba(255, 255, 255, 0.1);
--gradient-1: linear-gradient(135deg, #6366f1 0%, #06b6d4 100%);
--gradient-2: linear-gradient(135deg, #f472b6 0%, #6366f1 100%);
--gradient-3: linear-gradient(135deg, #06b6d4 0%, #10b981 100%);
--glow: 0 0 40px rgba(99, 102, 241, 0.3);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
/* 使用本地系统字体,避免加载远程字体 */
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
background: var(--bg-dark);
color: var(--text-primary);
overflow-x: hidden;
line-height: 1.6;
}
/* Canvas Background */
#bg-canvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0.6;
}
/* Noise Overlay */
.noise-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 1000;
opacity: 0.03;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
}
/* Navigation */
.nav {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 100;
padding: 1.5rem 3rem;
display: flex;
justify-content: space-between;
align-items: center;
backdrop-filter: blur(20px);
background: rgba(10, 10, 15, 0.7);
border-bottom: 1px solid var(--border);
transition: all 0.3s ease;
}
.nav.scrolled {
padding: 1rem 3rem;
background: rgba(10, 10, 15, 0.95);
}
.logo {
display: flex;
align-items: center;
gap: 0.75rem;
font-size: 1.5rem;
font-weight: 800;
background: var(--gradient-1);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.logo-icon {
width: 40px;
height: 40px;