feat(player): 统一移动端主题样式并优化多页面视觉一致性

将玩家端组件与核心页面全面切换为统一主题变量,优化卡片、按钮、弹窗、列表和盘口相关模块的视觉表现,并补充多语言文案以匹配新的交互与布局风格。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-16 15:55:28 +08:00
parent 4a93fcfce0
commit d2c0b575b7
51 changed files with 1539 additions and 1212 deletions

View File

@@ -96,18 +96,18 @@ function formatOdds(odds: string) {
.overlay {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.4);
background: rgba(0, 0, 0, 0.5);
z-index: 210;
display: flex;
align-items: flex-end;
}
.drawer {
background: #FFFFFF;
background: var(--bg-card);
width: 100%;
max-height: 80vh;
border-radius: 16px 16px 0 0;
border-top: 1px solid #E5E7EB;
border-top: 1px solid var(--border);
display: flex;
flex-direction: column;
overflow: hidden;
@@ -123,9 +123,9 @@ function formatOdds(odds: string) {
.drawer-foot {
flex-shrink: 0;
padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
background: #F5F7FA;
border-top: 1px solid #E5E7EB;
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);
background: var(--bg-elevated);
border-top: 1px solid var(--border);
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.2);
}
.drawer-header {
@@ -134,32 +134,32 @@ function formatOdds(odds: string) {
align-items: center;
padding: 14px 14px 12px;
flex-shrink: 0;
background: #FFFFFF;
border-bottom: 1px solid #E5E7EB;
background: var(--bg-card);
border-bottom: 1px solid var(--border);
z-index: 2;
}
.drawer-header h3 {
font-size: 16px;
font-weight: 800;
color: #1A1A2E;
color: var(--text);
}
.count {
color: #003D6B;
color: var(--primary);
}
.close-btn {
background: none;
color: #6B7280;
color: var(--text-muted);
font-size: 20px;
padding: 4px;
}
.slip-item {
padding: 10px 12px;
background: #F5F7FA;
border: 1px solid #E5E7EB;
background: var(--bg-elevated);
border: 1px solid var(--border);
border-radius: 8px;
margin-bottom: 8px;
}
@@ -167,17 +167,17 @@ function formatOdds(odds: string) {
.item-name {
font-size: 13px;
font-weight: 800;
color: #1A1A2E;
color: var(--text);
}
.item-sel {
font-size: 12px;
color: #6B7280;
color: var(--text-muted);
margin-top: 4px;
}
.odds {
color: #F8971F;
color: var(--warning);
font-weight: 800;
}
@@ -190,24 +190,24 @@ function formatOdds(odds: string) {
justify-content: space-between;
align-items: center;
font-size: 13px;
color: #6B7280;
color: var(--text-muted);
font-weight: 600;
margin-bottom: 8px;
}
.summary-row strong {
color: #003D6B;
color: var(--primary);
font-size: 15px;
font-weight: 800;
}
.return {
font-size: 13px;
color: #6B7280;
color: var(--text-muted);
}
.return strong {
color: #003D6B;
color: var(--primary);
font-size: 18px;
font-weight: 800;
}

View File

@@ -75,8 +75,8 @@ function formatOdds(odds: string) {
<style scoped>
.cs-panel {
padding: 6px 8px 0;
background: #EDF0F4;
border-top: 1px solid #D1D5DB;
background: var(--bg-card-elevated);
border-top: 1px solid var(--border);
}
.cs-panel--locked {
@@ -95,7 +95,7 @@ function formatOdds(odds: string) {
text-align: center;
font-size: 10px;
font-weight: 700;
color: #4B5563;
color: var(--text-secondary);
}
.cols-grid {
@@ -118,38 +118,38 @@ function formatOdds(odds: string) {
gap: 3px;
min-height: 42px;
padding: 6px 3px;
background: #FFFFFF;
border: 1px solid #CBD5E1;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 8px;
text-align: center;
transition: border-color 0.15s ease, background 0.15s ease;
}
.score-card.selected {
border-color: #003D6B;
border-color: var(--primary);
border-width: 2px;
background: rgba(0, 61, 107, 0.08);
background: rgba(244, 162, 97, 0.08);
}
.score-card--locked {
background: #E8EDF2;
border-color: #E5E7EB;
background: var(--bg-elevated);
border-color: var(--border);
}
.score-card--locked .score-line,
.score-card--locked .odds {
color: #6B7280;
color: var(--text-muted);
}
.score-line {
font-size: 11px;
font-weight: 800;
color: #1A1A2E;
color: var(--text);
}
.odds {
font-size: 10px;
font-weight: 700;
color: #E8870A;
color: var(--warning);
}
</style>

View File

@@ -57,8 +57,8 @@ function onPick(id: string) {
<style scoped>
.wrap {
padding: 6px 8px 8px;
background: #EDF0F4;
border-top: 1px solid #D1D5DB;
background: var(--bg-card-elevated);
border-top: 1px solid var(--border);
}
.wrap.locked {
@@ -80,32 +80,32 @@ function onPick(id: string) {
min-height: 44px;
padding: 6px 4px;
border-radius: 8px;
background: #FFFFFF;
border: 1px solid #CBD5E1;
background: var(--bg-card);
border: 1px solid var(--border);
text-align: center;
transition: border-color 0.15s ease, background 0.15s ease;
}
.odds-btn.selected {
border-color: #003D6B;
border-color: var(--primary);
border-width: 2px;
background: rgba(0, 61, 107, 0.08);
background: rgba(244, 162, 97, 0.08);
}
.odds-btn--locked {
background: #E8EDF2;
border-color: #E5E7EB;
background: var(--bg-elevated);
border-color: var(--border);
cursor: not-allowed;
}
.odds-btn--locked .label,
.odds-btn--locked .odds {
color: #6B7280;
color: var(--text-muted);
}
.label {
font-size: 10px;
color: #4B5563;
color: var(--text-secondary);
line-height: 1.15;
font-weight: 600;
}
@@ -113,6 +113,6 @@ function onPick(id: string) {
.odds {
font-size: 15px;
font-weight: 800;
color: #E8870A;
color: var(--warning);
}
</style>

View File

@@ -44,11 +44,11 @@ const { t } = useI18n();
}
.row:not(.disabled):active {
background: rgba(0, 61, 107, 0.07);
background: rgba(244, 162, 97, 0.07);
}
.row.expanded {
background: rgba(0, 61, 107, 0.07);
background: rgba(244, 162, 97, 0.07);
}
.row.expanded::before {
@@ -58,7 +58,7 @@ const { t } = useI18n();
left: 12px;
right: 12px;
height: 2.5px;
background: #003D6B;
background: var(--primary);
opacity: 1;
}
@@ -71,7 +71,7 @@ const { t } = useI18n();
min-width: 0;
font-size: 13px;
font-weight: 700;
color: #1A1A2E;
color: var(--text);
letter-spacing: 0.02em;
}
@@ -79,32 +79,32 @@ const { t } = useI18n();
flex-shrink: 0;
font-size: 9px;
font-weight: 700;
color: #F8971F;
color: var(--warning);
padding: 2px 6px;
border-radius: 3px;
background: rgba(248, 151, 31, 0.1);
border: 1px solid rgba(248, 151, 31, 0.3);
background: rgba(255, 179, 0, 0.1);
border: 1px solid rgba(255, 179, 0, 0.3);
}
.row.expanded .row-label {
color: #003D6B;
color: var(--primary);
}
.row-muted {
font-size: 10px;
color: #6B7280;
color: var(--text-muted);
font-weight: 600;
}
.row-chevron {
font-size: 11px;
color: #6B7280;
color: var(--text-muted);
transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s;
flex-shrink: 0;
}
.row-chevron.open {
transform: rotate(90deg);
color: #003D6B;
color: var(--primary);
}
</style>