/* 推荐基金页面专用样式 */ /* 容器样式 */ .recommend-container { max-width: 880px; margin: 0 auto; padding: 20px; } /* 表单样式 */ .recommend-form { background: white; padding: 30px; border-radius: 12px; margin-bottom: 30px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); } .recommend-form h2 { margin-top: 0; margin-bottom: 25px; color: #374151; font-size: 1.4rem; } .form-group { margin-bottom: 25px; } .form-group label { display: block; margin-bottom: 10px; font-weight: 600; color: #4b5563; font-size: 1rem; } .form-group input { width: 100%; padding: 12px 16px; border: 2px solid #e5e7eb; border-radius: 10px; font-size: 1rem; transition: all 0.3s ease; background: #f9fafb; } .form-group input:focus { outline: none; border-color: #6366f1; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); background: white; } .submit-btn { background: linear-gradient(135deg, #6366f1, #8b5cf6); color: white; border: none; padding: 12px 24px; border-radius: 10px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; display: inline-flex; align-items: center; gap: 8px; } .submit-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.3); } /* 消息提示样式 */ .message { padding: 15px 20px; margin-bottom: 20px; border-radius: 10px; font-weight: 600; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .message.success { background: linear-gradient(135deg, #d1fae5, #06d6a0); color: #065f46; border: none; } .message.error { background: linear-gradient(135deg, #fee2e2, #ef4444); color: #991b1b; border: none; } /* 统计显示样式 */ .stats-display { display: flex; justify-content: space-between; margin-bottom: 25px; gap: 15px; flex-wrap: wrap; } .stat-item { text-align: center; flex: 1; min-width: 180px; padding: 20px 15px; background: white; border-radius: 12px; margin: 0; box-shadow: 0 4px 12px rgba(0,0,0,0.08); transition: all 0.3s ease; position: relative; overflow: hidden; } .stat-item:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0,0,0,0.12); } .stat-item::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: linear-gradient(180deg, #6366f1, #8b5cf6); } .stat-number { font-size: 2.2rem; font-weight: 700; color: #6366f1; margin-bottom: 8px; display: block; } .stat-label { font-size: 0.95rem; color: #6b7280; font-weight: 500; } /* 信息框样式 */ .info-box { background: linear-gradient(135deg, #dbeafe, #3b82f6); color: #1e40af; padding: 20px; border-radius: 12px; margin-bottom: 25px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); } .info-box strong { display: block; margin-bottom: 12px; font-size: 1.1rem; } .info-box ul { margin: 0; padding-left: 25px; } .info-box li { margin-bottom: 6px; font-weight: 500; } /* 警告框样式 */ .warning-box { background: linear-gradient(135deg, #fef3c7, #f59e0b); color: #92400e; padding: 20px; border-radius: 12px; margin-bottom: 25px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); } .warning-box strong { display: block; margin-bottom: 12px; font-size: 1.1rem; } /* 基金列表样式 */ .fund-list { background: white; padding: 30px; border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); margin-top: 30px; } .fund-list h3 { margin-top: 0; color: #374151; margin-bottom: 25px; font-size: 1.3rem; position: relative; padding-bottom: 12px; } .fund-list h3::after { content: ''; position: absolute; bottom: 0; left: 0; width: 60px; height: 4px; background: linear-gradient(90deg, #6366f1, #8b5cf6); border-radius: 2px; } /* 下拉框容器 */ .dropdown-container { margin-top: 0; } /* 下拉框项样式 */ .dropdown-item { margin-bottom: 16px; border: 2px solid #e5e7eb; border-radius: 12px; overflow: hidden; transition: all 0.3s ease; background: white; } .dropdown-item:hover { border-color: #d1d5db; box-shadow: 0 4px 12px rgba(0,0,0,0.05); } .dropdown-item.user-ip { border-color: #6366f1; background-color: #f8fafc; box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15); } /* 下拉框头部 */ .dropdown-header { display: flex; justify-content: space-between; align-items: center; padding: 18px 20px; background: linear-gradient(135deg, #f8fafc, #e2e8f0); cursor: pointer; transition: all 0.3s ease; position: relative; } .dropdown-header:hover { background: linear-gradient(135deg, #e2e8f0, #cbd5e1); } .dropdown-item.user-ip .dropdown-header { background: linear-gradient(135deg, #eff6ff, #dbeafe); } .dropdown-item.user-ip .dropdown-header:hover { background: linear-gradient(135deg, #dbeafe, #bfdbfe); } /* 下拉框信息 */ .dropdown-info { display: flex; flex-wrap: wrap; gap: 25px; align-items: center; } .dropdown-info > strong { color: #6366f1; font-size: 1.1rem; } .dropdown-time, .dropdown-count, .dropdown-total-change { font-size: 0.95rem; color: #4b5563; font-weight: 500; } .dropdown-time strong, .dropdown-count strong { color: #374151; } .dropdown-total-change { font-weight: 700; padding: 6px 12px; border-radius: 6px; background: #f3f4f6; transition: all 0.3s ease; } .dropdown-total-change.positive { background: #dcfce7; color: #166534; } .dropdown-total-change.negative { background: #fee2e2; color: #991b1b; } /* 下拉框箭头 */ .dropdown-arrow i { transition: transform 0.3s ease; font-size: 1.1rem; color: #6366f1; } .dropdown-item.open .dropdown-arrow i { transform: rotate(180deg); } /* 下拉框内容 */ .dropdown-content { max-height: 0; overflow: hidden; transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1); background-color: white; } .dropdown-item.open .dropdown-content { max-height: 800px; } /* 基金详情表格 */ .fund-details-table { width: 100%; border-collapse: collapse; font-size: 0.95rem; } .fund-details-table th, .fund-details-table td { padding: 15px 20px; text-align: left; border-bottom: 1px solid #f1f5f9; transition: all 0.3s ease; } .fund-details-table th { background: #f8fafc; font-weight: 600; color: #374151; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.5px; } .fund-details-table tr:hover { background: #f8fafc; transform: translateX(2px); } .fund-details-table tr:last-child td { border-bottom: none; } /* 基金涨幅样式 */ .fund-change { font-weight: 700; padding: 4px 8px; border-radius: 4px; transition: all 0.3s ease; } .fund-change.positive { background: #fee2e2; color: #dc2626; } .fund-change.negative { background: #dcfce7; color: #16a34a; } /* 错误状态样式 */ .fund-change.error { background: #f3f4f6; color: #6b7280; font-style: italic; box-shadow: 0 2px 5px rgba(107, 114, 128, 0.1); } .error-text { color: #6b7280; font-style: italic; font-size: 0.9em; display: flex; align-items: center; gap: 5px; } .error-text::before { content: '⚠️'; font-size: 1em; } .error-row { background: linear-gradient(90deg, #fffbeb, #fef3c7); border-left: 3px solid #f59e0b; transition: all 0.3s ease; } .error-row:hover { background: linear-gradient(90deg, #fef3c7, #fde68a); transform: translateX(2px); } .error-icon { color: #f59e0b; font-weight: bold; font-size: 1.2em; } /* 返回按钮样式 */ .back-btn { display: inline-block; margin-bottom: 25px; color: #000000ff; text-decoration: none; padding: 10px 20px; border: 2px solid #0004d3; border-radius: 10px; transition: all 0.3s ease; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .back-btn:hover { background: linear-gradient(135deg, #6366f1, #8b5cf6); color: white; transform: translateY(-2px); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.3); } /* 加载指示器样式 */ .loading-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 1000; backdrop-filter: blur(3px); } .loading-spinner { background: white; padding: 40px; border-radius: 15px; text-align: center; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3); animation: fadeIn 0.3s ease; } .loading-spinner i { font-size: 48px; color: #6366f1; margin-bottom: 20px; display: block; animation: spin 1s linear infinite; } .loading-spinner span { font-size: 18px; font-weight: 600; color: #495057; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes fadeIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } /* 改进错误显示效果 */ .error-container { background: linear-gradient(135deg, #fee2e2, #fecaca); border: 2px solid #ef4444; border-radius: 12px; padding: 20px; margin-bottom: 25px; box-shadow: 0 4px 15px rgba(239, 68, 68, 0.15); position: relative; } .error-container::before { content: '⚠️'; position: absolute; top: 15px; right: 20px; font-size: 24px; } .error-container h4 { color: #991b1b; margin-top: 0; margin-bottom: 10px; font-size: 1.2rem; display: flex; align-items: center; gap: 8px; } .error-container p { color: #7f1d1d; margin: 0; font-weight: 500; } /* 空状态样式 */ .empty-state { text-align: center; padding: 60px 20px; color: #6b7280; background: linear-gradient(135deg, #f9fafb, #f3f4f6); border-radius: 12px; border: 2px dashed #d1d5db; } .empty-state i { font-size: 72px; margin-bottom: 20px; opacity: 0.3; color: #6366f1; } .empty-state h3 { font-size: 24px; margin-bottom: 10px; color: #4b5563; } .empty-state p { font-size: 16px; max-width: 400px; margin: 0 auto; } /* 高亮动画样式 */ .highlight { animation: highlight 0.3s ease-in-out; } @keyframes highlight { 0% { background-color: transparent; } 50% { background-color: rgba(255, 255, 0, 0.3); } 100% { background-color: transparent; } } /* ===== UI优化追加样式(覆盖同名规则) ===== */ .stat-icon { width: 40px; height: 40px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; margin-bottom: 10px; box-shadow: 0 6px 18px rgba(99, 102, 241, 0.35); } .dropdown-total-change.neutral { background: #f3f4f6; color: #374151; } .fund-change.neutral { background: #f3f4f6; color: #374151; } .fund-change.highlight, .dropdown-total-change.highlight { box-shadow: 0 0 0 6px rgba(99,102,241,0.08) inset; } .back-btn { color: var(--dark); border: 2px solid var(--primary); } .ip-badge { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; background: linear-gradient(135deg, var(--info), var(--primary)); color: #fff; font-size: 0.85rem; font-weight: 600; } @media (max-width: 680px) { .fund-details-table thead { display: none; } .fund-details-table, .fund-details-table tbody, .fund-details-table tr, .fund-details-table td { display: block; width: 100%; } .fund-details-table tr { background: #fff; border: 1px solid var(--border); border-radius: 12px; margin-bottom: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.05); padding: 6px 0; } .fund-details-table td { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-bottom: none; } .fund-details-table td:nth-child(1)::before { content: '基金代码'; color: #6b7280; font-weight: 600; margin-right: 12px; } .fund-details-table td:nth-child(2)::before { content: '推荐时间'; color: #6b7280; font-weight: 600; margin-right: 12px; } .fund-details-table td:nth-child(3)::before { content: '基金名称'; color: #6b7280; font-weight: 600; margin-right: 12px; } .fund-details-table td:nth-child(4)::before { content: '当前涨幅'; color: #6b7280; font-weight: 600; margin-right: 12px; } } /* 排序工具条样式 */ .sort-toolbar { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; } .sort-btn { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 10px; border: 2px solid var(--border); background: #fff; color: var(--dark); font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .sort-btn .order-indicator { font-size: 0.9rem; color: var(--gray); } .sort-btn:hover { border-color: var(--primary); box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15); } .sort-btn.active { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; border-color: transparent; } .sort-btn.active .order-indicator { color: #fff; } /* 重置按钮样式 */ .sort-reset { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 10px; border: 2px solid var(--border); background: #fff; color: var(--dark); font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .sort-reset:hover { border-color: var(--primary); box-shadow: 0 4px 12px rgba(99, 102, 241, 0.15); }