@import '../../../styles/variables.scss'; @import '../../../styles/mixins.scss'; // PageShell 已接管:min-height, background, padding /* ===== 余额卡片 ===== */ .balance-card { background: $card; margin: var(--tk-section-gap) var(--tk-page-padding) var(--tk-gap-md); border-radius: $r-lg; padding: var(--tk-gap-xl); box-shadow: $shadow-sm; } .balance-label { font-size: var(--tk-font-h2); color: $tx2; display: block; margin-bottom: var(--tk-gap-xs); } .balance-value { @include serif-number; font-size: var(--tk-font-hero); font-weight: bold; color: var(--tk-pri); display: block; margin-bottom: var(--tk-card-padding-lg); letter-spacing: -1px; } .balance-stats { display: flex; align-items: center; background: $bg; border-radius: $r; padding: var(--tk-section-gap) 0; } .stat-item { flex: 1; display: flex; flex-direction: column; align-items: center; } .stat-value { @include serif-number; font-size: var(--tk-font-num); font-weight: bold; margin-bottom: var(--tk-gap-2xs); &.stat-earn { color: $acc; } &.stat-spend { color: $wrn; } &.stat-expired { color: $tx3; } } .stat-label { font-size: var(--tk-font-body); color: $tx3; } .stat-divider { width: 1px; height: 48px; background: $bd; } /* ===== 类型筛选标签 ===== */ .type-tabs { display: flex; gap: 0; padding: 0 var(--tk-page-padding); margin-bottom: var(--tk-gap-md); } .type-tab { @include flex-center; flex: 1; padding: var(--tk-gap-md) 0; position: relative; &.active::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 40px; height: 4px; background: var(--tk-pri); border-radius: $r-xs; } } .type-tab-text { font-size: var(--tk-font-body-lg); color: $tx3; .type-tab.active & { color: var(--tk-pri); font-weight: bold; } } /* ===== 交易列表 ===== */ .transaction-list { padding: 0 var(--tk-page-padding); } .transaction-item { display: flex; align-items: center; background: $card; border-radius: $r; padding: var(--tk-card-padding); margin-bottom: var(--tk-gap-sm); box-shadow: $shadow-sm; } .tx-badge { width: 64px; height: 64px; border-radius: $r; @include flex-center; margin-right: var(--tk-section-gap); flex-shrink: 0; &.tx-badge-earn { background: $acc-l; } &.tx-badge-spend { background: $wrn-l; } &.tx-badge-expired { background: $bd-l; } } .tx-badge-text { font-family: 'Georgia', 'Times New Roman', serif; font-size: var(--tk-font-body-lg); font-weight: bold; .tx-badge-earn & { color: $acc; } .tx-badge-spend & { color: $wrn; } .tx-badge-expired & { color: $tx3; } } .tx-info { flex: 1; min-width: 0; } .tx-desc { font-size: var(--tk-font-body-lg); color: $tx; display: block; margin-bottom: var(--tk-gap-2xs); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tx-date { font-size: var(--tk-font-body); color: $tx3; display: block; } .tx-amount-col { display: flex; flex-direction: column; align-items: flex-end; margin-left: var(--tk-gap-md); flex-shrink: 0; } .tx-amount { @include serif-number; font-size: var(--tk-font-num); font-weight: bold; margin-bottom: var(--tk-gap-2xs); &.tx-amount-positive { color: $acc; } &.tx-amount-negative { color: $tx2; } } .tx-remaining { @include serif-number; font-size: var(--tk-font-body); color: $tx3; }