/** * 用户资料详情页 U21 * 全部使用 Design Token,禁止硬编码颜色/间距/圆角 */ .profile-page { min-height: 100vh; background: var(--color-bg-page); padding-bottom: calc(160rpx + env(safe-area-inset-bottom)); } /* ============ 加载/空状态 ============ */ .profile-loading, .profile-empty { padding-top: 200rpx; display: flex; justify-content: center; } /* ============ 顶部信息 ============ */ .profile-header { display: flex; align-items: center; gap: var(--spacing-4); padding: var(--spacing-5) var(--spacing-page-x); background: var(--color-bg-card); } .profile-header__info { flex: 1; min-width: 0; } .profile-header__name-row { display: flex; align-items: baseline; gap: var(--spacing-2); margin-bottom: var(--spacing-1); } .profile-header__name { font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); color: var(--color-text-primary); } .profile-header__age { font-size: var(--font-size-md); color: var(--color-text-tertiary); } .profile-header__meta { font-size: var(--font-size-sm); color: var(--color-text-tertiary); line-height: var(--line-height-normal); } .profile-header__badges { display: flex; flex-wrap: wrap; gap: var(--spacing-1); margin-top: var(--spacing-2); } /* ============ 内容区块 ============ */ .profile-body { padding-top: var(--spacing-2); } .profile-section { background: var(--color-bg-card); margin: var(--spacing-2) var(--spacing-page-x); border-radius: var(--radius-lg); padding: var(--spacing-card-inner); } .profile-info-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-3); } .profile-info-item { display: flex; flex-direction: column; gap: var(--spacing-1); min-width: 0; } .profile-info-item--full { grid-column: span 2; } .profile-info-item__label { font-size: var(--font-size-xs); color: var(--color-text-placeholder); } .profile-info-item__value { font-size: var(--font-size-md); color: var(--color-text-secondary); word-break: break-all; } .profile-intro-text { font-size: var(--font-size-md); color: var(--color-text-secondary); line-height: var(--line-height-relaxed); } /* ============ 底部操作栏 ============ */ .profile-actions { position: fixed; bottom: 0; left: 0; right: 0; display: flex; gap: var(--spacing-2); align-items: center; padding: var(--spacing-2) var(--spacing-page-x); padding-bottom: calc(var(--spacing-2) + env(safe-area-inset-bottom)); background: var(--color-bg-card); border-top: var(--border-width) solid var(--color-divider); z-index: var(--z-sticky); } .profile-actions__btn { flex: 1; } .profile-actions__btn--block, .profile-actions__btn--report { flex: 0 0 auto; min-width: 140rpx; } .profile-actions__btn--report { color: var(--color-warning); }