/* style.css - 基础样式 */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, monospace; background: #0a0c14; color: #e0e0e0; line-height: 1.6; } /* 总览页容器 */ #overview-container { max-width: 1400px; margin: 0 auto; padding: 20px; } /* 头部 */ .dashboard-header { text-align: center; margin-bottom: 30px; padding: 20px; background: linear-gradient(135deg, #1a1f2e, #0f1219); border-radius: 20px; border: 1px solid #2a3040; } .dashboard-header h1 { color: #4a9eff; font-size: 2em; margin-bottom: 10px; text-shadow: 0 0 20px rgba(74, 158, 255, 0.3); } /* 控制区 */ .controls-section { display: flex; gap: 20px; margin-bottom: 30px; flex-wrap: wrap; } .search-box { flex: 1; min-width: 250px; padding: 12px 20px; background: #1a1f2e; border: 2px solid #2a3040; border-radius: 30px; color: #fff; font-size: 16px; transition: all 0.3s; } .search-box:focus { outline: none; border-color: #4a9eff; box-shadow: 0 0 20px rgba(74, 158, 255, 0.2); } .filter-buttons { display: flex; gap: 10px; } .filter-btn { padding: 10px 24px; background: #1a1f2e; border: 2px solid #2a3040; border-radius: 30px; color: #a0a0a0; font-weight: bold; cursor: pointer; transition: all 0.3s; } .filter-btn.active { background: #4a9eff; border-color: #4a9eff; color: #fff; } .filter-btn:hover { transform: translateY(-2px); box-shadow: 0 5px 15px rgba(74, 158, 255, 0.2); } /* 开发者网格 */ .developers-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; margin-bottom: 40px; } /* 统计区 */ .stats-section { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } .radar-container, .ranking-container { background: #1a1f2e; border-radius: 20px; padding: 20px; border: 1px solid #2a3040; } .radar-container h2, .ranking-container h2 { color: #4a9eff; margin-bottom: 20px; font-size: 1.2em; } #team-radar { width: 100%; height: auto; max-height: 300px; } /* 响应式 */ @media (max-width: 768px) { .stats-section { grid-template-columns: 1fr; } .controls-section { flex-direction: column; } .filter-buttons { justify-content: center; } } /* 动画 */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .fade-in { animation: fadeIn 0.5s ease forwards; } /* ===== 交互增强样式 ===== */ /* 搜索框增强 */ .search-box { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .search-box:focus { transform: scale(1.02); background: #1e2436; } /* 筛选按钮动画 */ .filter-btn { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } .filter-btn::after { content: ''; position: absolute; top: 50%; left: 50%; width: 0; height: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.3); transform: translate(-50%, -50%); transition: width 0.3s, height 0.3s; } .filter-btn:active::after { width: 100px; height: 100px; } /* 卡片网格动画 */ .developers-grid { transition: opacity 0.3s ease; min-height: 400px; } /* 卡片展开/收起动画 */ .dev-card { animation: cardPopIn 0.3s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: center; } @keyframes cardPopIn { 0% { opacity: 0; transform: scale(0.8) translateY(20px); } 100% { opacity: 1; transform: scale(1) translateY(0); } } /* 键盘焦点样式 */ .dev-card:focus-visible { outline: 3px solid #ffd700; outline-offset: 2px; transform: scale(1.02); box-shadow: 0 0 30px rgba(255, 215, 0, 0.3); } /* 数字滚动动画 */ .stat-value { display: inline-block; transition: all 0.3s ease; font-feature-settings: "tnum"; } /* 无结果提示 */ .no-results { grid-column: 1 / -1; text-align: center; padding: 60px; background: rgba(255, 255, 255, 0.05); border-radius: 20px; color: #888; font-size: 18px; border: 2px dashed #2a3040; animation: fadeIn 0.5s ease; } /* 高亮筛选匹配项 */ .ranking-item.match-highlight { background: rgba(74, 158, 255, 0.2); border-left: 4px solid #4a9eff; transform: translateX(5px); } /* 淡入淡出动画增强 */ .fade-in { animation: fadeIn 0.3s ease forwards; } .fade-out { animation: fadeOut 0.3s ease forwards; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-10px); } } /* 响应式优化 */ @media (max-width: 768px) { .dev-card:focus-visible { transform: scale(1.01); } .filter-btn:active::after { width: 60px; height: 60px; } }