/* HoloLake 数据统计面板 · 样式表 */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: linear-gradient(135deg, #0a1628 0%, #1a2a4a 50%, #0d1f3c 100%); color: #e0e6ed; min-height: 100vh; } .container { max-width: 640px; margin: 0 auto; padding: 0 20px; } /* 顶部导航 */ .top-bar { display: flex; justify-content: space-between; align-items: center; padding: 16px 0; border-bottom: 1px solid rgba(255,255,255,0.1); } .logo { font-size: 20px; font-weight: bold; } .nav-links a { color: #8899aa; text-decoration: none; margin-left: 16px; font-size: 14px; } .nav-links a.active { color: #4fc3f7; } .nav-links a:hover { color: #fff; } /* 页面标题 */ .page-header { display: flex; justify-content: space-between; align-items: center; padding: 24px 0 16px; } .page-header h1 { font-size: 22px; font-weight: 700; } .time-selector { display: flex; gap: 6px; } .time-btn { background: rgba(255,255,255,0.06); color: #8899aa; border: 1px solid rgba(255,255,255,0.1); padding: 6px 14px; border-radius: 20px; font-size: 13px; cursor: pointer; transition: all 0.3s; } .time-btn.active { background: rgba(79,195,247,0.15); color: #4fc3f7; border-color: rgba(79,195,247,0.4); } .time-btn:hover { border-color: rgba(79,195,247,0.3); color: #b0c4d8; } /* 统计卡片 */ .stats-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; padding-bottom: 24px; } .stat-card { background: rgba(255,255,255,0.04); border-radius: 16px; padding: 20px 16px; border: 1px solid rgba(255,255,255,0.06); transition: all 0.3s; cursor: pointer; } .stat-card:hover { background: rgba(79,195,247,0.06); border-color: rgba(79,195,247,0.2); transform: translateY(-2px); } .stat-icon { font-size: 24px; margin-bottom: 8px; } .stat-value { font-size: 32px; font-weight: 800; margin-bottom: 4px; } .stat-label { font-size: 13px; color: #8899aa; margin-bottom: 6px; } .stat-change { font-size: 12px; font-weight: 600; } .stat-change.up { color: #4caf50; } .stat-change.down { color: #ef5350; } .stat-change.same { color: #8899aa; } /* 区块通用 */ .section { padding-bottom: 28px; } .section h2 { font-size: 16px; font-weight: 600; margin-bottom: 16px; } /* 横向条形图 */ .bar-chart { display: flex; flex-direction: column; gap: 12px; } .bar-row { display: flex; align-items: center; gap: 12px; } .bar-label { font-size: 13px; color: #aab; min-width: 70px; text-align: right; } .bar-track { flex: 1; height: 22px; background: rgba(255,255,255,0.04); border-radius: 11px; overflow: hidden; } .bar-fill { height: 100%; border-radius: 11px; transition: width 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .bar-fill.deepseek { background: linear-gradient(90deg, #4fc3f7, #29b6f6); } .bar-fill.qwen { background: linear-gradient(90deg, #7c4dff, #651fff); } .bar-fill.kimi { background: linear-gradient(90deg, #ff7043, #f4511e); } .bar-fill.doubao { background: linear-gradient(90deg, #66bb6a, #43a047); } .bar-fill.premium { background: linear-gradient(90deg, #ffd54f, #ffb300); } .bar-value { font-size: 13px; color: #8899aa; min-width: 36px; font-weight: 600; } /* 每日趋势柱状图 */ .trend-chart { display: flex; align-items: flex-end; justify-content: space-between; height: 160px; padding: 16px 0; border-bottom: 1px solid rgba(255,255,255,0.08); } .trend-bar { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; gap: 8px; } .trend-fill { width: 28px; border-radius: 6px 6px 2px 2px; background: linear-gradient(180deg, #4fc3f7, rgba(79,195,247,0.3)); transition: height 1s cubic-bezier(0.25, 0.46, 0.45, 0.94); height: 0; } .trend-bar span { font-size: 11px; color: #667; } /* 最近活动 */ .activity-list { display: flex; flex-direction: column; gap: 0; } .activity-item { display: flex; align-items: flex-start; gap: 12px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.04); } .activity-item:last-child { border-bottom: none; } .activity-dot { width: 8px; height: 8px; border-radius: 50%; margin-top: 6px; flex-shrink: 0; } .activity-dot.blue { background: #4fc3f7; } .activity-dot.green { background: #66bb6a; } .activity-dot.orange { background: #ffb74d; } .activity-dot.purple { background: #ab47bc; } .activity-content { flex: 1; } .activity-text { font-size: 14px; line-height: 1.5; } .activity-text strong { color: #4fc3f7; } .activity-time { font-size: 12px; color: #556; margin-top: 2px; } /* 底部 */ .footer { text-align: center; padding: 32px 0; color: #556677; font-size: 12px; line-height: 1.8; } /* 响应式 */ @media (max-width: 480px) { .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; } .stat-value { font-size: 26px; } .page-header { flex-direction: column; align-items: flex-start; gap: 12px; } .trend-fill { width: 22px; } .bar-label { min-width: 56px; font-size: 12px; } } /* ========== 响应式布局增强 ========== */ /* 平板(768px以下) */ @media (max-width: 768px) { .container { padding: 0 16px; } .page-header { flex-direction: column; align-items: flex-start; gap: 12px; } .page-header h1 { font-size: 20px; } .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } .stat-value { font-size: 28px; } .bar-label { min-width: 60px; font-size: 12px; } .trend-fill { width: 24px; } } /* 手机(480px以下) */ 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 2 @media (max-width: 480px) { .container { padding: 0 12px; } .top-bar { padding: 12px 0; } .logo { font-size: 17px; } .nav-links a { font-size: 13px; margin-left: 12px; } .page-header h1 { font-size: 18px; } .time-btn { padding: 5px 10px; font-size: 12px; } .stats-grid { grid-template-columns: 1fr 1fr; gap: 8px; } .stat-card { padding: 14px 12px; border-radius: 12px; } .stat-icon { font-size: 20px; margin-bottom: 6px; } .stat-value { font-size: 24px; } .stat-label { font-size: 12px; 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 3 } .stat-change { font-size: 11px; } .section h2 { font-size: 15px; } .bar-row { gap: 8px; } .bar-label { min-width: 50px; font-size: 11px; } .bar-track { height: 18px; } .bar-value { font-size: 11px; min-width: 30px; } .trend-chart { height: 120px; } .trend-fill { width: 18px; border-radius: 4px 4px 2px 2px; } .trend-bar span { font-size: 10px; } .activity-item { padding: 10px 0; gap: 10px; } .activity-text { font-size: 13px; } 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 4 .activity-time { font-size: 11px; } .footer { padding: 20px 0; font-size: 11px; } } /* 超小屏(360px以下) */ @media (max-width: 360px) { .stats-grid { grid-template-columns: 1fr; } .stat-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; } .stat-icon { margin-bottom: 0; } .stat-value { font-size: 22px; } .time-selector { width: 100%; justify-content: space-between; } } /* ========== 导出按钮样式 ========== */ .export-bar { display: flex; justify-content: flex-end; padding: 8px 0; } 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 5 .export-btn { background: rgba(76, 175, 80, 0.1); color: #81c784; border: 1px solid rgba(76, 175, 80, 0.2); padding: 8px 18px; border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; } .export-btn:hover { background: rgba(76, 175, 80, 0.2); transform: scale(1.02); } .export-btn:active { transform: scale(0.98); } .export-toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%) translateY(60px); background: rgba(76, 175, 80, 0.9); color: #fff; padding: 10px 24px; border-radius: 8px; font-size: 14px; opacity: 0; transition: all 0.4s; pointer-events: none; z-index: 999; } .export-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* ========== 环形图样式 ========== */ 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 6 .donut-section { padding-bottom: 28px; } .donut-container { display: flex; align-items: center; gap: 24px; justify-content: center; } .donut-chart { width: 160px; height: 160px; position: relative; } .donut-chart svg { width: 100%; height: 100%; transform: rotate(-90deg); } .donut-chart circle { fill: none; stroke-width: 20; cx: 80; cy: 80; r: 60; } .donut-bg { stroke: rgba(255,255,255,0.06); } .donut-segment { transition: stroke-dasharray 1.2s cubic-bezier(0.25, 0. 46, 0.45, 0.94); } .donut-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 7 text-align: center; } .donut-center-value { font-size: 24px; font-weight: 800; } .donut-center-label { font-size: 11px; color: #8899aa; } .donut-legend { display: flex; flex-direction: column; gap: 8px; } .legend-item { display: flex; align-items: center; gap: 8px; font-size: 13px; } .legend-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; } .legend-dot.c-deepseek { background: #4fc3f7; } .legend-dot.c-qwen { background: #7c4dff; } .legend-dot.c-kimi { background: #ff7043; } .legend-dot.c-doubao { background: #66bb6a; } .legend-dot.c-premium { background: #ffd54f; } .legend-percent { color: #8899aa; margin-left: auto; font-weight: 600; } 📡 BC-M08-002 · DEV-010桔子 · 数据统计面板·环节2~3·响应式布局+数据导出+高级图表 8 @media (max-width: 480px) { .donut-container { flex-direction: column; gap: 16px; } .donut-chart { width: 140px; height: 140px; } .donut-legend { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 6px 16px; } } /* ========== 响应式布局增强 ========== */ /* 平板(768px以下) */ @media (max-width: 768px) { .container { padding: 0 16px; } .page-header { flex-direction: column; align-items: flex-start; gap: 12px; } .page-header h1 { font-size: 20px; } .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } .stat-value { font-size: 28px; } .bar-label { min-width: 60px; font-size: 12px; } .trend-fill { width: 24px; } } /* 手机(480px以下) */ @media (max-width: 480px) { .container { padding: 0 12px; } .top-bar { padding: 12px 0; } .logo { font-size: 17px; } .nav-links a { font-size: 13px; margin-left: 12px; } .page-header h1 { font-size: 18px; } .time-btn { padding: 5px 10px; font-size: 12px; } .stats-grid { grid-template-columns: 1fr 1fr; gap: 8px; } .stat-card { padding: 14px 12px; border-radius: 12px; } .stat-icon { font-size: 20px; margin-bottom: 6px; } .stat-value { font-size: 24px; } .stat-label { font-size: 12px; } .activity-time { font-size: 11px; } .footer { padding: 20px 0; font-size: 11px; } } /* 超小屏(360px以下) */ @media (max-width: 360px) { .stats-grid { grid-template-columns: 1fr; } .stat-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; } .stat-icon { margin-bottom: 0; } .stat-value { font-size: 22px; } .time-selector { width: 100%; justify-content: space-between; } } /* ========== 导出按钮样式 ========== */ .export-bar { display: flex; justify-content: flex-end; padding: 8px 0; } .export-btn { background: rgba(76,175,80,0.1); color: #81c784; border: 1px solid rgba(76,175,80,0.2); padding: 8px 18px; border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; } .export-btn:hover { background: rgba(76,175,80,0.2); transform: scale(1.02); } .export-btn:active { transform: scale(0.98); } .export-toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%) translateY(60px); background: rgba(76,175,80,0.9); color: #fff; padding: 10px 24px; border-radius: 8px; font-size: 14px; opacity: 0; transition: all 0.4s; pointer-events: none; z-index: 999; } .export-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* ========== 环形图样式 ========== */ .donut-section { padding-bottom: 28px; } .donut-container { display: flex; align-items: center; gap: 24px; justify-content: center; } .donut-chart { width: 160px; height: 160px; position: relative; } .donut-chart svg { width: 100%; height: 100%; transform: rotate(-90deg); } .donut-chart circle { fill: none; stroke-width: 20; cx: 80; cy: 80; r: 60; } .donut-bg { stroke: rgba(255,255,255,0.06); } .donut-segment { transition: stroke-dasharray 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .donut-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; } .donut-center-value { font-size: 24px; font-weight: 800; } .donut-center-label { font-size: 11px; color: #8899aa; } .donut-legend { display: flex; flex-direction: column; gap: 8px; } .legend-item { display: flex; align-items: center; gap: 8px; font-size: 13px; } .legend-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; } .legend-dot.c-deepseek { background: #4fc3f7; } .legend-dot.c-qwen { background: #7c4dff; } .legend-dot.c-kimi { background: #ff7043; } .legend-dot.c-doubao { background: #66bb6a; } .legend-dot.c-premium { background: #ffd54f; } .legend-percent { color: #8899aa; margin-left: auto; font-weight: 600; } /* ========== 响应式布局增强 ========== */ @media (max-width: 768px) { .container { padding: 0 16px; } .page-header { flex-direction: column; align-items: flex-start; gap: 12px; } .page-header h1 { font-size: 20px; } .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } .stat-value { font-size: 28px; } .bar-label { min-width: 60px; font-size: 12px; } .trend-fill { width: 24px; } } @media (max-width: 480px) { .container { padding: 0 12px; } .top-bar { padding: 12px 0; } .logo { font-size: 17px; } .nav-links a { font-size: 13px; margin-left: 12px; } .page-header h1 { font-size: 18px; } .time-btn { padding: 5px 10px; font-size: 12px; } .stats-grid { grid-template-columns: 1fr 1fr; gap: 8px; } .stat-card { padding: 14px 12px; border-radius: 12px; } .stat-icon { font-size: 20px; margin-bottom: 6px; } .stat-value { font-size: 24px; } .stat-label { font-size: 12px; } .activity-time { font-size: 11px; } .footer { padding: 20px 0; font-size: 11px; } } @media (max-width: 360px) { .stats-grid { grid-template-columns: 1fr; } .stat-card { display: flex; align-items: center; gap: 12px; padding: 12px 14px; } .stat-icon { margin-bottom: 0; } .stat-value { font-size: 22px; } .time-selector { width: 100%; justify-content: space-between; } } /* ========== 导出按钮样式 ========== */ .export-bar { display: flex; justify-content: flex-end; padding: 8px 0; } .export-btn { background: rgba(76,175,80,0.1); color: #81c784; border: 1px solid rgba(76,175,80,0.2); padding: 8px 18px; border-radius: 8px; font-size: 13px; cursor: pointer; transition: all 0.2s; } .export-btn:hover { background: rgba(76,175,80,0.2); transform: scale(1.02); } .export-btn:active { transform: scale(0.98); } .export-toast { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%) translateY(60px); background: rgba(76,175,80,0.9); color: #fff; padding: 10px 24px; border-radius: 8px; font-size: 14px; opacity: 0; transition: all 0.4s; pointer-events: none; z-index: 999; } .export-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* ========== 环形图样式 ========== */ .donut-section { padding-bottom: 28px; } .donut-container { display: flex; align-items: center; gap: 24px; justify-content: center; } .donut-chart { width: 160px; height: 160px; position: relative; } .donut-chart svg { width: 100%; height: 100%; transform: rotate(-90deg); } .donut-chart circle { fill: none; stroke-width: 20; cx: 80; cy: 80; r: 60; } .donut-bg { stroke: rgba(255,255,255,0.06); } .donut-segment { transition: stroke-dasharray 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .donut-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; } .donut-center-value { font-size: 24px; font-weight: 800; } .donut-center-label { font-size: 11px; color: #8899aa; } .donut-legend { display: flex; flex-direction: column; gap: 8px; } .legend-item { display: flex; align-items: center; gap: 8px; font-size: 13px; } .legend-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; } .legend-dot.c-deepseek { background: #4fc3f7; } .legend-dot.c-qwen { background: #7c4dff; } .legend-dot.c-kimi { background: #ff7043; } .legend-dot.c-doubao { background: #66bb6a; } .legend-dot.c-premium { background: #ffd54f; } .legend-percent { color: #8899aa; margin-left: auto; font-weight: 600; }