/* 챌린지 진행률 */
.ch-progress-wrap { margin-top: 0.5rem; }
.ch-progress-bar { height: 8px; background: var(--border-light); border-radius: 4px; overflow: hidden; }
.ch-progress-bar.lg { height: 12px; }
.ch-progress-fill { height: 100%; background: var(--secondary); border-radius: 4px; transition: width .3s; }
.ch-progress-text { font-size: 0.8rem; color: var(--text-muted); margin-top: 0.25rem; }
.badge-done { font-size: 0.8rem; color: var(--secondary); font-weight: 700; }
.ch-complete-msg { color: var(--secondary); font-weight: 700; margin-top: 1rem; }
.ch-detail-card { padding: 1.5rem; }
.ch-detail-row { display: flex; justify-content: space-between; padding: 0.75rem 0; border-bottom: 1px solid var(--border-light); }
.ch-label { font-weight: 600; color: var(--text-muted); }
.ch-detail-progress { margin-top: 1.5rem; text-align: center; }
/* 리더보드 */
.lb-filter { display: flex; gap: 0.5rem; margin-bottom: 1.5rem; }
.lb-my-card {
    display: flex; align-items: center; gap: 1rem;
    padding: 1.25rem 1.5rem; margin-bottom: 1rem;
    background: linear-gradient(135deg, var(--primary), var(--accent)); color: #fff;
}
.lb-rank-num { font-size: 1.5rem; font-weight: 800; }
.lb-rank-label { font-size: 0.75rem; opacity: 0.8; display: block; }
.lb-my-info { flex: 1; }
.lb-my-name { font-weight: 700; display: block; }
.lb-my-level { font-size: 0.8rem; opacity: 0.8; }
.lb-my-card .pw-points { color: #fff; }
.lb-table-wrap { display: flex; flex-direction: column; gap: 0.5rem; }
.lb-row {
    display: flex; align-items: center; gap: 1rem; padding: 0.75rem 1rem;
    background: var(--bg-white); border: 1px solid var(--border-light); border-radius: 12px;
}
.lb-row.lb-me { border-color: var(--primary); background: var(--bg-soft); }
.lb-row.lb-top { font-weight: 600; }
.lb-rank { font-size: 1.1rem; min-width: 2rem; text-align: center; }
.lb-user { flex: 1; }
.lb-name { font-weight: 600; display: block; font-size: 0.95rem; }
.lb-dept { font-size: 0.8rem; color: var(--text-muted); }
.lb-pts { font-weight: 700; color: var(--primary); }
