:root {
    --brand: #2563eb;
    --brand-dark: #1d4ed8;
    --bg: #f4f6fb;
}

body {
    background-color: var(--bg);
    /* 给手机端底部导航留出空间 */
    padding-bottom: 4.5rem;
}

@media (min-width: 768px) {
    body { padding-bottom: 0; }
}

.navbar-brand { font-weight: 700; letter-spacing: .5px; }

a { text-decoration: none; }

/* 统计卡片 */
.stat-card { border: none; border-radius: 1rem; transition: transform .15s ease; }
.stat-card:hover { transform: translateY(-3px); }
.stat-card .stat-num { font-size: 1.9rem; font-weight: 700; line-height: 1; }
.stat-icon {
    width: 3rem; height: 3rem; border-radius: .9rem;
    display: flex; align-items: center; justify-content: center; font-size: 1.4rem;
}

.card { border: none; border-radius: 1rem; box-shadow: 0 1px 3px rgba(16,24,40,.06); }
.card-header { background: transparent; border-bottom: 1px solid rgba(0,0,0,.05); font-weight: 600; }

/* 头像首字母 */
.avatar {
    width: 2.4rem; height: 2.4rem; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--brand); color: #fff; font-weight: 600; flex: 0 0 auto;
}
.avatar-lg { width: 4.5rem; height: 4.5rem; font-size: 1.6rem; }

.badge-soft { background: rgba(37,99,235,.1); color: var(--brand); }

.table > :not(caption) > * > * { padding: .75rem .75rem; }

/* 手机端底部 Tab 导航 */
.mobile-nav {
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 1030;
    background: #fff; border-top: 1px solid rgba(0,0,0,.08);
    display: flex; box-shadow: 0 -2px 10px rgba(16,24,40,.06);
}
.mobile-nav a {
    flex: 1; text-align: center; padding: .45rem 0 .35rem;
    color: #6b7280; font-size: .7rem;
}
.mobile-nav a.active { color: var(--brand); }
.mobile-nav a i { display: block; font-size: 1.3rem; margin-bottom: .1rem; }
@media (min-width: 768px) { .mobile-nav { display: none; } }

/* 看板列 */
.kanban-col { min-width: 16rem; }

.list-link:hover { background: #f8fafc; }

.priority-bar { width: .25rem; border-radius: 1rem; align-self: stretch; }
