:root{
    --bg:#f5f7fb; --card:#fff; --primary:#4f46e5; --primary-dark:#4338ca;
    --income:__TMP_RED2__; --expense:#10b981; --text:#1f2937; --muted:#6b7280;
    --border:#e5e7eb; --radius:12px;
    --shadow:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
    --shadow-lg:0 10px 30px rgba(0,0,0,.12);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
    background:var(--bg); color:var(--text); line-height:1.6; font-size:14px;
}
a{color:inherit;text-decoration:none}
.muted{color:var(--muted)}

.sidebar{
    position:fixed;left:0;top:0;bottom:0;width:220px;background:#fff;
    border-right:1px solid var(--border);padding:20px 12px;z-index:50;
    transition:transform .25s ease;
}
.brand{
    display:flex;align-items:center;gap:10px;padding:8px 12px 22px;
    font-size:17px;font-weight:700;color:var(--primary);
}
.brand i{font-size:22px}
.nav-item{
    display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;
    color:#4b5563;font-weight:500;margin-bottom:4px;transition:.15s;
}
.nav-item i{width:18px;text-align:center;font-size:15px}
.nav-item:hover{background:#f3f4f6;color:var(--text)}
.nav-item.active{background:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(79,70,229,.3)}

.main{margin-left:220px;min-height:100vh}
.topbar{
    display:flex;justify-content:space-between;align-items:center;
    padding:18px 28px;background:#fff;border-bottom:1px solid var(--border);
    position:sticky;top:0;z-index:40;
}
.topbar h1{font-size:19px;font-weight:700}
.content{padding:24px 28px 60px}

.sidebar-toggle{
    display:none;position:fixed;left:14px;top:16px;z-index:60;
    width:40px;height:40px;border-radius:10px;border:1px solid var(--border);
    background:#fff;cursor:pointer;font-size:16px;color:var(--text);
}

.card{
    background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);
    padding:20px;margin-bottom:20px;
}
.card-title{
    font-size:15px;font-weight:600;margin-bottom:16px;
    display:flex;align-items:center;gap:8px;
}
.card-title i{color:var(--primary)}

.stat-grid{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:16px;margin-bottom:20px;
}
.stat-card{
    background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);
    padding:18px 20px;display:flex;align-items:center;gap:14px;
}
.stat-icon{
    width:48px;height:48px;border-radius:14px;display:flex;align-items:center;
    justify-content:center;color:#fff;font-size:19px;flex-shrink:0;
}
.stat-icon.income{background:linear-gradient(135deg,#34d399,#10b981)}
.stat-icon.expense{background:linear-gradient(135deg,#f87171,#ef4444)}
.stat-icon.net{background:linear-gradient(135deg,#818cf8,#4f46e5)}
.stat-icon.assets{background:linear-gradient(135deg,#fbbf24,#f59e0b)}
.stat-info .label{font-size:12.5px;color:var(--muted)}
.stat-info .value{font-size:20px;font-weight:700;margin-top:2px}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media(max-width:900px){.grid-2{grid-template-columns:1fr}}

table{width:100%;border-collapse:collapse}
th,td{padding:11px 10px;text-align:left;border-bottom:1px solid var(--border);font-size:13.5px}
th{font-weight:600;color:var(--muted);font-size:12.5px;text-transform:uppercase;letter-spacing:.3px}
tbody tr:hover{background:#fafbfc}
td.amount{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.amount.income{color:var(--income)}
.amount.expense{color:var(--expense)}

.tag{
    display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:20px;
    font-size:12px;font-weight:500;
}
.icon-badge{
    width:30px;height:30px;border-radius:9px;display:inline-flex;
    align-items:center;justify-content:center;color:#fff;font-size:13px;
    flex-shrink:0;
}
.cell-with-icon{display:flex;align-items:center;gap:10px}

.btn{
    display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:9px;
    border:none;cursor:pointer;font-size:13.5px;font-weight:600;font-family:inherit;
    transition:.15s;white-space:nowrap;
}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-dark)}
.btn-ghost{background:#f3f4f6;color:var(--text)}
.btn-ghost:hover{background:#e5e7eb}
.btn-danger{background:#fee2e2;color:#dc2626}
.btn-danger:hover{background:#fecaca}
.btn-sm{padding:6px 11px;font-size:12.5px}
.icon-btn{
    width:32px;height:32px;padding:0;border-radius:8px;border:none;
    display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
    background:#f3f4f6;color:#4b5563;transition:.15s;font-size:13px;
}
.icon-btn:hover{background:#e5e7eb}
.icon-btn.danger:hover{background:#fee2e2;color:#dc2626}

input,select,textarea{
    width:100%;padding:10px 13px;border:1px solid var(--border);border-radius:9px;
    font-size:14px;font-family:inherit;background:#fff;color:var(--text);
    transition:.15s;
}
input:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.form-row{margin-bottom:15px}
.form-row label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:#374151}

.filter-bar{
    display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;
    background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);
    padding:16px 20px;margin-bottom:20px;
}
.filter-bar .form-row{margin-bottom:0;min-width:150px;flex:1}
.filter-bar .btn{height:40px}

.modal{
    display:none;position:fixed;inset:0;background:rgba(17,24,39,.5);
    z-index:100;align-items:center;justify-content:center;padding:20px;
    backdrop-filter:blur(2px);
}
.modal.active{display:flex}
.modal-dialog{
    background:#fff;border-radius:16px;width:100%;max-width:460px;
    box-shadow:var(--shadow-lg);animation:modalIn .18s ease;
    max-height:90vh;overflow-y:auto;
}
@keyframes modalIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.modal-header{
    display:flex;justify-content:space-between;align-items:center;
    padding:18px 22px;border-bottom:1px solid var(--border);
}
.modal-header h3{font-size:16px}
.modal-close{
    background:none;border:none;font-size:18px;cursor:pointer;color:var(--muted);
    width:32px;height:32px;border-radius:8px;
}
.modal-close:hover{background:#f3f4f6}
.modal-body{padding:22px}
.modal-footer{
    display:flex;justify-content:flex-end;gap:10px;margin-top:22px;
    padding-top:18px;border-top:1px solid var(--border);
}

.type-switch{display:flex;gap:10px;margin-bottom:18px}
.type-btn{
    flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
    padding:11px;border-radius:10px;border:1.5px solid var(--border);
    cursor:pointer;font-weight:600;font-size:13.5px;color:var(--muted);
    transition:.15s;
}
.type-btn input{display:none}
.type-btn.active{color:#fff}
.type-btn.expense.active{background:var(--expense);border-color:var(--expense)}
.type-btn.income.active{background:var(--income);border-color:var(--income)}

.icon-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:8px;
    max-height:220px;overflow-y:auto;padding:6px;border:1px solid var(--border);
    border-radius:10px;
}
.icon-option{
    aspect-ratio:1;border-radius:9px;border:1.5px solid transparent;
    display:flex;align-items:center;justify-content:center;cursor:pointer;
    background:#f9fafb;color:#4b5563;font-size:16px;transition:.12s;
}
.icon-option:hover{background:#eef2ff;color:var(--primary)}
.icon-option.selected{
    background:var(--primary);color:#fff;border-color:var(--primary);
    box-shadow:0 3px 8px rgba(79,70,229,.3);
}

.list-grid{
    display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;
}
.list-item{
    display:flex;align-items:center;gap:12px;padding:13px 15px;
    border:1px solid var(--border);border-radius:11px;background:#fff;
    transition:.15s;
}
.list-item:hover{border-color:#c7d2fe;box-shadow:0 3px 10px rgba(79,70,229,.08)}
.list-item .meta{flex:1;min-width:0}
.list-item .meta .name{font-weight:600;font-size:14px}
.list-item .meta .sub{font-size:12px;color:var(--muted)}
.list-item .actions{display:flex;gap:6px}

.toast-wrap{position:fixed;top:20px;right:20px;z-index:200;display:flex;flex-direction:column;gap:10px}
.toast{
    background:#1f2937;color:#fff;padding:12px 18px;border-radius:10px;
    font-size:13.5px;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:9px;
    animation:slideIn .2s ease;
}
.toast.success{background:#059669}
.toast.error{background:#dc2626}
@keyframes slideIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}

.alert{padding:13px 16px;border-radius:10px;margin-bottom:16px;display:flex;gap:9px;align-items:center}
.alert-success{background:#d1fae5;color:#065f46}
.alert-error{background:#fee2e2;color:#991b1b}

.empty{text-align:center;padding:40px 20px;color:var(--muted)}
.empty i{font-size:36px;opacity:.3;display:block;margin-bottom:10px}

.install-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#eef2ff,#f5f7fb)}
.install-card{background:#fff;border-radius:18px;padding:38px 34px;max-width:460px;width:calc(100% - 40px);box-shadow:var(--shadow-lg)}
.install-card h1{font-size:21px;margin-bottom:8px;display:flex;align-items:center;gap:10px;color:var(--primary)}
.install-card p{margin-bottom:18px}

@media(max-width:820px){
    .sidebar{transform:translateX(-100%)}
    .sidebar.open{transform:none}
    .main{margin-left:0}
    .sidebar-toggle{display:flex;align-items:center;justify-content:center}
    .topbar{padding-left:64px}
    .content{padding:18px 16px 60px}
    .stat-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:520px){
    .stat-grid{grid-template-columns:1fr}
    .filter-bar .form-row{min-width:100%}
}
/* ==== fix3 user menu & quick nav ==== */
.user-box{
    position:absolute;bottom:20px;left:12px;right:12px;
    display:flex;align-items:center;gap:11px;
    padding:12px;border-radius:11px;background:#f9fafb;
    border:1px solid var(--border);
}
.user-avatar{
    width:38px;height:38px;border-radius:50%;
    display:flex;align-items:center;justify-content:center;
    background:linear-gradient(135deg,#818cf8,#4f46e5);
    color:#fff;font-size:18px;flex-shrink:0;
}
.user-info{flex:1;min-width:0}
.user-name{
    font-weight:600;font-size:13.5px;white-space:nowrap;
    overflow:hidden;text-overflow:ellipsis;margin-bottom:2px;
}
.user-logout{
    font-size:12px;color:var(--muted);
    display:inline-flex;align-items:center;gap:5px;
    transition:.15s;
}
.user-logout:hover{color:var(--expense)}

.sidebar nav{margin-bottom:80px}

.quick-nav{
    display:flex;flex-direction:column;gap:14px;
    padding:18px 22px;margin-bottom:20px;
}
.quick-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.quick-label{
    font-size:12.5px;font-weight:600;color:var(--muted);
    min-width:40px;text-align:right;
}
.quick-btns{display:flex;flex-wrap:wrap;gap:6px}
.quick-btn{
    padding:6px 14px;border-radius:8px;border:1px solid var(--border);
    background:#fff;cursor:pointer;font-family:inherit;font-size:13px;
    color:#4b5563;transition:.15s;
}
.quick-btn:hover{background:#eef2ff;border-color:#c7d2fe;color:var(--primary)}
.quick-btn.active{
    background:var(--primary);border-color:var(--primary);
    color:#fff;font-weight:600;
    box-shadow:0 3px 8px rgba(79,70,229,.28);
}
.quick-btn.future{opacity:.3;cursor:not-allowed}
.quick-btn:disabled{pointer-events:none}

@media(max-width:820px){
    .user-box{position:static;margin-top:20px}
    .sidebar nav{margin-bottom:0}
}
/* ==== fix_theme_v7 ==== */
/* ---- 明快简洁配色 ---- */
:root{
    --bg:#f7f9fc;
    --card:#ffffff;
    --primary:#3b82f6;
    --primary-dark:#2563eb;
    --income:__TMP_RED__;
    --expense:#22c55e;
    --text:#0f172a;
    --muted:#64748b;
    --border:#e8ecf1;
    --radius:12px;
    --shadow:0 1px 3px rgba(15,23,42,.04), 0 1px 2px rgba(15,23,42,.03);
    --shadow-lg:0 8px 24px rgba(15,23,42,.08);
}

/* ---- 账户图标：白底 + 细边框 + 略大尺寸，彩色 LOGO 更清晰 ---- */
.acc-logo{
    width:44px !important;
    height:44px !important;
    border-radius:11px !important;
    background:#fff !important;
    border:1px solid var(--border);
    box-shadow:0 1px 2px rgba(15,23,42,.04);
    font-size:22px !important;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
}

/* ---- 图标选择器里的选项，尺寸略大更清楚 ---- */
.icon-option > i{
    font-size:22px;
    line-height:1;
}

/* ---- 侧边栏：更轻的观感 ---- */
.sidebar{
    background:#fff;
    border-right:1px solid var(--border);
}
.nav-item{
    color:#475569;
}
.nav-item:hover{
    background:#f1f5f9;
    color:var(--text);
}
.nav-item.active{
    background:linear-gradient(135deg,#3b82f6,#2563eb);
    color:#fff;
    box-shadow:0 4px 12px rgba(59,130,246,.28);
}

/* ---- 顶栏：更白更轻 ---- */
.topbar{
    background:#fff;
    border-bottom:1px solid var(--border);
    box-shadow:0 1px 2px rgba(15,23,42,.02);
}
.topbar h1{
    color:var(--text);
    font-weight:700;
}

/* ---- 卡片：无边框阴影更柔和 ---- */
.card,
.stat-card{
    background:#fff;
    box-shadow:var(--shadow);
    border:1px solid var(--border);
}

/* ---- 按钮：文字不再被裁 ---- */
.btn{
    padding:10px 18px;
    line-height:1.4;
    min-height:40px;
    font-weight:600;
}
.btn-primary{
    background:linear-gradient(135deg,#3b82f6,#2563eb);
    color:#fff;
    box-shadow:0 2px 6px rgba(59,130,246,.24);
}
.btn-primary:hover{
    background:linear-gradient(135deg,#2563eb,#1d4ed8);
    box-shadow:0 4px 12px rgba(59,130,246,.3);
}
.btn-ghost{
    background:#f1f5f9;
    color:#334155;
}
.btn-ghost:hover{
    background:#e2e8f0;
}

/* ---- 统计卡片图标：更鲜亮 ---- */
.stat-icon.income{background:linear-gradient(135deg,#4ade80,#22c55e)}
.stat-icon.expense{background:linear-gradient(135deg,#fb7185,#f43f5e)}
.stat-icon.net{background:linear-gradient(135deg,#60a5fa,#3b82f6)}
.stat-icon.assets{background:linear-gradient(135deg,#fbbf24,#f59e0b)}

/* ---- 输入框：更轻的描边 ---- */
input:focus,select:focus,textarea:focus{
    border-color:var(--primary);
    box-shadow:0 0 0 3px rgba(59,130,246,.12);
}

/* ---- 表格 hover 更轻 ---- */
tbody tr:hover{background:#f8fafc}

/* ---- 状态色 ---- */
.amount.income{color:var(--income)}
.amount.expense{color:var(--expense)}

/* ---- 快捷按钮（统计页）---- */
.quick-btn{
    background:#fff;
    border:1px solid var(--border);
    color:#475569;
}
.quick-btn:hover{
    background:#eff6ff;
    border-color:#bfdbfe;
    color:var(--primary);
}
.quick-btn.active{
    background:linear-gradient(135deg,#3b82f6,#2563eb);
    border-color:var(--primary);
    color:#fff;
    box-shadow:0 3px 8px rgba(59,130,246,.28);
}

/* ---- 弹窗按钮 ---- */
.modal-close:hover{background:#f1f5f9}

/* ---- 用户区 ---- */
.user-avatar{
    background:linear-gradient(135deg,#60a5fa,#3b82f6);
}
.user-logout:hover{color:var(--expense)}
/* ==== fix_theme_v8 ==== */
/* ---- 按钮：图标颜色 + 文字完全跟随按钮主题 ---- */
.btn{
    display:inline-flex !important;
    align-items:center;
    justify-content:center;
    gap:8px;
    line-height:1.2;
    padding:10px 18px;
    min-height:42px;
    box-sizing:border-box;
    white-space:nowrap;
}

/* 按钮内所有图标（含 Font Awesome 和 Iconfont）跟随文字颜色 */
.btn > i,
.btn > [class^="icon-"],
.btn > [class*=" icon-"],
.btn > span > i,
.btn > span > [class^="icon-"],
.btn > span > [class*=" icon-"]{
    color:inherit !important;
    font-size:0.95em;
    line-height:1;
    flex-shrink:0;
}

/* 小按钮：等比例缩小，但不裁切 */
.btn-sm{
    padding:7px 14px;
    min-height:34px;
    font-size:13px;
    gap:6px;
}
.btn-sm > i,
.btn-sm > [class^="icon-"]{
    font-size:0.95em;
}

/* 主按钮：图标白色，与文字一致 */
.btn-primary,
.btn-primary > i{
    color:#fff;
}

/* 次按钮：图标深灰 */
.btn-ghost,
.btn-ghost > i{
    color:#334155;
}

/* 危险按钮：图标红色 */
.btn-danger,
.btn-danger > i{
    color:#dc2626;
}

/* 图标的垂直居中对齐 */
.btn > i::before,
.btn > [class^="icon-"]::before{
    vertical-align:middle;
}

/* 单独修正顶部“记一笔”按钮（+ 号变大一点） */
#btnQuickAdd{
    padding:10px 20px;
}
#btnQuickAdd > i{
    font-size:14px;
}
/* ==== fix_theme_v10 ==== */
/* ---- 账户图标徽章：保证是白底框，图标按品牌上色 ---- */
.acc-logo{
    width:46px !important;
    height:46px !important;
    border-radius:12px !important;
    background:#fff !important;
    border:1px solid var(--border);
    box-shadow:0 1px 2px rgba(15,23,42,.05);
    display:inline-flex !important;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
}

/* 默认给图标一个可见颜色，避免继承导致白色不可见 */
.acc-logo > i{
    font-size:22px;
    line-height:1;
    color:#334155;
}

/* ---- 品牌图标按官方色上色（列表 + 选择器） ---- */

/* 支付宝 - 蓝 */
.acc-logo > i.fa-alipay,
.icon-option > i.fa-alipay{
    color:#1677ff !important;
    font-size:24px !important;
}

/* 微信 - 绿 */
.acc-logo > i.fa-weixin,
.icon-option > i.fa-weixin{
    color:#07c160 !important;
    font-size:24px !important;
}

/* PayPal - 深蓝 */
.acc-logo > i.fa-paypal,
.icon-option > i.fa-paypal{
    color:#003087 !important;
    font-size:22px !important;
}

/* 现金钱包 - 橙金 */
.acc-logo > i.fa-wallet,
.icon-option > i.fa-wallet{
    color:#f59e0b !important;
    font-size:22px !important;
}

/* 纸币 - 绿 */
.acc-logo > i.fa-money-bill-wave,
.icon-option > i.fa-money-bill-wave{
    color:#22c55e !important;
    font-size:22px !important;
}

/* 存钱罐 - 粉红 */
.acc-logo > i.fa-piggy-bank,
.icon-option > i.fa-piggy-bank{
    color:#ec4899 !important;
    font-size:22px !important;
}

/* 硬币 - 金 */
.acc-logo > i.fa-coins,
.icon-option > i.fa-coins{
    color:#eab308 !important;
    font-size:22px !important;
}

/* 信用卡 - 紫蓝 */
.acc-logo > i.fa-credit-card,
.icon-option > i.fa-credit-card{
    color:#6366f1 !important;
    font-size:22px !important;
}

/* 支票 - 灰蓝 */
.acc-logo > i.fa-money-check-dollar,
.icon-option > i.fa-money-check-dollar{
    color:#475569 !important;
    font-size:22px !important;
}

/* ---- 选择器里的图标容器 ---- */
.icon-option{
    background:#f8fafc;
    border:1px solid var(--border);
}
.icon-option:hover{
    background:#eff6ff;
    border-color:#bfdbfe;
}
.icon-option.selected{
    background:#dbeafe;
    border-color:#3b82f6;
    box-shadow:0 0 0 2px rgba(59,130,246,.15);
}

/* 图标尺寸兜底 */
.icon-option > i{
    font-size:22px;
    line-height:1;
    color:#334155;
}

/* Iconfont 银行图标保持原色 */
.acc-logo > i[class^="icon-"],
.acc-logo > i[class*=" icon-"],
.icon-option > i[class^="icon-"],
.icon-option > i[class*=" icon-"]{
    font-size:24px !important;
    color:inherit;
}

/* ==== fix_account_stats ==== */
.acc-card{cursor:pointer;transition:.18s}
.acc-card:hover{border-color:#93c5fd;box-shadow:0 4px 14px rgba(59,130,246,.12);transform:translateY(-1px)}
.dot-sep{color:var(--border);margin:0 4px}
.acc-card .actions .icon-btn{width:30px;height:30px;font-size:12px}


/* ==== fix_v11 ==== */
.avatar-pick:hover{border-color:#3b82f6 !important}
.avatar-pick.selected{border-color:#3b82f6 !important;box-shadow:0 0 0 3px rgba(59,130,246,.15)}
.tag{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600}


/* ==== fix_v12 ==== */
.acc-card,.cat-card{cursor:pointer;transition:.18s}
.acc-card:hover,.cat-card:hover{border-color:#93c5fd;box-shadow:0 4px 14px rgba(59,130,246,.12);transform:translateY(-1px)}
.dot-sep{color:var(--border);margin:0 4px}
.acc-card .actions .icon-btn,.cat-card .actions .icon-btn{width:30px;height:30px;font-size:12px}

/* ==== fix_v21 图表布局 ==== */

/* 图表容器统一高度限制 */
.chart-box {
    position: relative;
    height: 240px;
    width: 100%;
}
.chart-box.sm { height: 200px; }
.chart-box canvas {
    display: block;
    width: 100% !important;
    height: 100% !important;
}

/* 直接限制所有卡片内的 canvas 最大高度 */
.card canvas {
    max-height: 240px !important;
    width: 100% !important;
}

/* 让带图表的卡片不要太大 */
.card .card-title + canvas,
.card .card-title + .chart-box {
    margin-top: 6px;
}

/* 双列布局窄一点更好看 */
@media(min-width:1100px){
    .grid-2{
        grid-template-columns: 1fr 1fr !important;
        gap: 16px;
    }
}

/* 统计页顶部快捷条更紧凑 */
.quick-nav{padding:14px 18px !important;gap:10px !important}
.quick-row{gap:10px !important}
.quick-label{font-size:12px !important;min-width:34px !important}
.quick-btn{padding:5px 11px !important;font-size:12.5px !important}

/* 卡片内边距略收紧 */
.card{padding:18px !important}
.card-title{font-size:14.5px !important;margin-bottom:12px !important}

/* 图表在小屏自动缩小 */
@media(max-width:768px){
    .card canvas{max-height:200px !important;}
    .chart-box{height:200px}
}

/* 统计页面下三条明细卡片的图表也更紧凑 */
.stats-grid-charts{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(320px,1fr));
    gap:16px;
}
.stats-grid-charts .card{margin-bottom:0}
/* ==== fix_v32 统一 24px ==== */

/* ---- 全局变量 ---- */
:root{
    --row-gap: 24px;
    --col-gap: 20px;
    --inner-gap: 12px;
}

/* ---- 1. 内容区所有直接子块 margin 清零 ---- */
.content > *{
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* ---- 2. 相邻一级块统一 24px（通用规则） ---- */
.content > * + *{
    margin-top: 24px !important;
    margin-bottom: 0 !important;
}

/* ---- 3. 逐类精确命中（权重 0,2,0 或 0,3,0，压过所有单类选择器） ---- */
.content > .card + .card,
.content > .card + .stat-grid,
.content > .card + .grid-2,
.content > .card + .stats-grid-charts,
.content > .card + .quick-nav,
.content > .card + .filter-bar,
.content > .stat-grid + .card,
.content > .stat-grid + .stat-grid,
.content > .stat-grid + .grid-2,
.content > .stat-grid + .stats-grid-charts,
.content > .stat-grid + .quick-nav,
.content > .stat-grid + .filter-bar,
.content > .grid-2 + .card,
.content > .grid-2 + .stat-grid,
.content > .grid-2 + .grid-2,
.content > .grid-2 + .stats-grid-charts,
.content > .grid-2 + .quick-nav,
.content > .grid-2 + .filter-bar,
.content > .quick-nav + .card,
.content > .quick-nav + .stat-grid,
.content > .quick-nav + .grid-2,
.content > .quick-nav + .stats-grid-charts,
.content > .quick-nav + .filter-bar,
.content > .filter-bar + .card,
.content > .filter-bar + .stat-grid,
.content > .filter-bar + .grid-2,
.content > .filter-bar + .stats-grid-charts,
.content > .filter-bar + .quick-nav{
    margin-top: 24px !important;
    margin-bottom: 0 !important;
}

/* ---- 4. 网格内部 row-gap / column-gap ---- */
.stat-grid,
.grid-2,
.stats-grid-charts{
    display: grid !important;
    row-gap: 24px !important;
    column-gap: 20px !important;
    margin: 0 !important;
}
.stat-grid{
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)) !important;
}
.grid-2{
    grid-template-columns: 1fr 1fr !important;
}

/* 网格内的直接子元素 margin 清零 */
.stat-grid > *,
.grid-2 > *,
.stats-grid-charts > *{
    margin: 0 !important;
}

/* ---- 5. 卡片本身 margin 归零，只保留 padding ---- */
.card{
    margin: 0 !important;
    padding: 20px !important;
}
.stat-card{
    margin: 0 !important;
    padding: 18px 20px !important;
}

/* ---- 6. 快捷条、筛选条 ---- */
.quick-nav,
.filter-bar{
    margin: 0 !important;
    padding: 16px 20px !important;
}
.quick-row{
    gap: 14px !important;
}
.quick-row + .quick-row{
    margin-top: 10px !important;
}

/* ---- 7. 卡片标题与表单 ---- */
.card-title{
    margin-top: 0 !important;
    margin-bottom: 12px !important;
}
.card .form-row{
    margin-top: 0 !important;
    margin-bottom: 12px !important;
}
.card .form-row:last-child{
    margin-bottom: 0 !important;
}

/* ---- 8. 列表网格 ---- */
.list-grid{
    display: grid !important;
    row-gap: 24px !important;
    column-gap: 20px !important;
    margin: 0 !important;
}
.list-item{
    margin: 0 !important;
}

/* ---- 9. 清掉一切残留内联 margin ---- */
.content [style*="margin-bottom"]{
    margin-bottom: 0 !important;
}
.content [style*="margin-top"]{
    margin-top: 0 !important;
}

/* ---- 10. 模态框、toast 内不受影响 ---- */
.modal .card,
.modal .stat-grid,
.modal .grid-2,
.modal .stats-grid-charts,
.toast-wrap .card{
    margin: 0 !important;
}

/* ---- 11. 小屏 ---- */
@media(max-width:768px){
    :root{
        --row-gap: 16px;
        --col-gap: 12px;
    }
    .content > * + *{
        margin-top: 16px !important;
    }
    .content > .card + .card,
    .content > .card + .grid-2,
    .content > .card + .stats-grid-charts,
    .content > .stat-grid + .card,
    .content > .stat-grid + .grid-2,
    .content > .stat-grid + .stats-grid-charts,
    .content > .grid-2 + .card,
    .content > .grid-2 + .grid-2,
    .content > .grid-2 + .stats-grid-charts,
    .content > .grid-2 + .stat-grid,
    .content > .filter-bar + .grid-2,
    .content > .filter-bar + .stats-grid-charts,
    .content > .quick-nav + .grid-2,
    .content > .quick-nav + .stats-grid-charts{
        margin-top: 16px !important;
    }
    .grid-2{
        grid-template-columns: 1fr !important;
    }
}
/* ==== fix_v33 按钮文字对齐 ==== */

/* 所有按钮：flex 居中 + 基线重置 */
.btn,
button.btn,
a.btn,
input[type="submit"].btn{
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    line-height: 1 !important;
    vertical-align: middle !important;
    padding: 10px 18px !important;
    min-height: 40px !important;
    box-sizing: border-box !important;
}

/* 按钮内所有文本容器也重置行高 */
.btn > span,
.btn > i,
.btn > svg{
    line-height: 1 !important;
    display: inline-flex !important;
    align-items: center !important;
    vertical-align: middle !important;
}

/* Font Awesome 图标：修正默认的 -0.125em 下沉 */
.btn > i.fa-solid,
.btn > i.fa-regular,
.btn > i.fa-brands,
.btn > i.fas,
.btn > i.far,
.btn > i.fab{
    vertical-align: middle !important;
    font-size: 0.95em !important;
    position: relative !important;
    top: 0 !important;
    transform: none !important;
}

/* 图标字体（Iconfont）也重置 */
.btn > i[class^="icon-"],
.btn > i[class*=" icon-"]{
    vertical-align: middle !important;
    font-size: 1em !important;
    line-height: 1 !important;
    display: inline-flex !important;
    align-items: center !important;
    position: relative !important;
    top: 0 !important;
}

/* 小按钮 */
.btn-sm{
    padding: 7px 14px !important;
    min-height: 34px !important;
    gap: 6px !important;
    font-size: 13px !important;
}

/* 只含图标的按钮 */
.btn.icon-only{
    padding: 10px !important;
    min-width: 40px !important;
}

/* 顶部"记一笔"按钮 */
#btnQuickAdd{
    padding: 10px 20px !important;
    min-height: 42px !important;
}
#btnQuickAdd > i{
    font-size: 14px !important;
}

/* 表单里的提交按钮 */
.form-row .btn,
.form-row button[type="submit"]{
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* 筛选条按钮高度锁定 */
.filter-bar .btn{
    height: 40px !important;
    padding: 0 18px !important;
}
.filter-bar .btn.btn-sm{
    height: 34px !important;
    padding: 0 14px !important;
}

/* 移动端也居中 */
@media(max-width:768px){
    .btn{
        justify-content: center !important;
    }
}

/* ==== fix_v41 管理后台入口 + 头像 ==== */
.user-avatar-img{
    width:38px;height:38px;border-radius:50%;
    object-fit:cover;flex-shrink:0;
    background:#f1f5f9;
    border:2px solid #fff;
    box-shadow:0 1px 3px rgba(15,23,42,.1);
}
.nav-item.admin-entry{
    color:#7c3aed;
    font-weight:600;
}
.nav-item.admin-entry:hover{
    background:#f5f3ff;
    color:#6d28d9;
}
.nav-item.admin-entry.active{
    background:linear-gradient(135deg,#8b5cf6,#7c3aed);
    color:#fff;
    box-shadow:0 4px 12px rgba(139,92,246,.28);
}
