/* =========================================================================
   core_theme.css — 「墨蓝 · 精密」主题层 V1
   -------------------------------------------------------------------------
   设计原则（针对原版「宝蓝鎏金」的四类问题逐条矫治）：
     1. 拆掉装饰：所有光晕、径向渐变、3D 内高光、位移式 hover 动效一律移除，
        只保留一层极淡的功能性投影——阴影用来表达层级，不用来表达"高级"。
     2. 收敛色彩：原版 6 种按钮色 + 3 组渐变同时在场，导致满屏都在喊。
        新体系只有一个主色，其余颜色只在"确有意义"时出现（成功/危险/警示）。
     3. 数字优先：财务软件的第一公民是金额。全站 tabular-nums、右对齐、
        统一字号与行高，让数字自己排成一条竖线。
     4. 层级靠尺度：字重从"到处 800"改为 600/500/400 三档，
        用字号、留白、分隔线建立秩序，而不是靠加粗和发光。

   本文件是纯视觉覆盖层，不含任何业务逻辑。
   移除 <link> 一行即可完全回到原样式，业务功能不受影响。
   ========================================================================= */

/* ─────────────────────────────────────────────────────────────
   1. 设计令牌
   ───────────────────────────────────────────────────────────── */
:root {
    /* 墨（文字与深色面） */
    --ink-950: #080F1A;
    --ink-900: #0D1726;
    --ink-850: #111E2F;
    --ink-800: #1E2B3B;
    --ink-700: #2C3B4E;

    /* 钢蓝（唯一主色） */
    --brand-700: #12507F;
    --brand-600: #1A6BA8;
    --brand-500: #2E86C8;
    --brand-200: #BBD9EE;
    --brand-100: #DDEBF7;
    --brand-50:  #F0F7FC;

    /* 中性 */
    --n-900: #0C1522;
    --n-800: #182233;
    --n-700: #2F3B4D;
    --n-600: #475467;
    --n-500: #667085;
    --n-400: #98A2B3;
    --n-300: #D0D5DD;
    --n-200: #E4E7EC;
    --n-100: #EFF1F4;
    --n-50:  #F7F8FA;
    --n-0:   #FFFFFF;

    /* 语义 */
    --ok-700: #086546;
    --ok-600: #0B7A57;
    --ok-50:  #E6F6F0;
    --warn-700: #A65A0A;
    --warn-50: #FDF3E7;
    --bad-700: #9E2A22;
    --bad-600: #C0362C;
    --bad-50:  #FDF0EF;

    /* 香槟金：仅用作一处极轻的点缀（品牌印章感），不参与功能色 */
    --champagne: #A8843C;

    /* ── 兼容层：把旧变量映射到新令牌，让 1336 行旧样式自动跟随换肤 ── */
    --primary: var(--brand-600);
    --primary-hover: var(--brand-700);
    --primary-light: var(--brand-50);
    --success: var(--ok-600);
    --success-hover: var(--ok-700);
    --success-light: var(--ok-50);
    --warning: var(--warn-700);
    --warning-hover: #7C3A08;
    --warning-light: var(--warn-50);
    --danger: var(--bad-600);
    --danger-hover: var(--bad-700);
    --danger-light: var(--bad-50);
    --info: var(--brand-500);
    --info-hover: var(--brand-600);
    --info-light: var(--brand-50);
    --gold: var(--champagne);
    --gold-deep: #8A6B2C;
    --gold-light: #FAF6EC;
    --dark: var(--n-900);
    --dark-hover: var(--n-800);
    --bg-body: #F3F5F8;
    --bg-surface: var(--n-0);
    --border: var(--n-200);
    --text-main: var(--n-700);
    --text-muted: var(--n-500);

    /* 阴影：只做三层，且都极淡 */
    --shadow-sm: 0 1px 2px rgba(16, 24, 40, .05);
    --shadow-md: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04);
    --shadow-lg: 0 12px 28px -8px rgba(16, 24, 40, .14), 0 4px 10px -4px rgba(16, 24, 40, .06);

    --radius: 8px;

    /* 新增令牌 */
    --radius-ctl: 7px;      /* 控件 */
    --radius-card: 9px;     /* 卡片 */
    --radius-dlg: 11px;     /* 弹窗 */
    --line: var(--n-200);
    --line-soft: var(--n-100);
}

/* ─────────────────────────────────────────────────────────────
   2. 基础排版
   ───────────────────────────────────────────────────────────── */
body {
    background: var(--bg-body);
    background-image: none;              /* 拆掉两团径向光晕 */
    color: var(--n-700);
    font-size: 13.5px;
    line-height: 1.55;
    font-weight: 400;                    /* 原版全站 500，显闷 */
    text-shadow: none;                   /* 原版 .25px 描边会让小字发糊 */
    -webkit-font-smoothing: antialiased;
    letter-spacing: 0.1px;
}

/* 字重回归层级：标题不再一律 800 */
h1, h2, h3, h4, h5, h6 { font-weight: 600 !important; letter-spacing: -0.1px; }
h1 { font-size: 21px; }
h2 { font-size: 18px; }
h3 { font-size: 15.5px; }

.bold, b, strong { font-weight: 600; }

/* 数字：等宽 + 竖线对齐。财务软件的专业感八成来自这里 */
.tbl td, .mono, .num,
[class*="amount"], [class*="amt"], [class*="money"] {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1, "lnum" 1;
}

/* 滚动条：从"渐变胶囊"改为细窄实色 */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: #D3D8E0;
    border-radius: 10px;
    border: 3px solid transparent;
    background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background: #B7BEC9; background-clip: content-box; }
::selection { background: rgba(46, 118, 168, .18); }

/* ─────────────────────────────────────────────────────────────
   3. 侧栏：深墨面 + 一道亮条，替代原来的三层光晕
   ───────────────────────────────────────────────────────────── */
.sidebar {
    background: var(--ink-900);
    background-image: none;
    box-shadow: none;
    border-right: 1px solid #0A121C;
    width: var(--sidebar-width);
}

.sidebar .logo {
    height: 56px !important;
    display: flex;
    align-items: center;
    padding: 0 18px !important;
    border-bottom: 1px solid rgba(255, 255, 255, .07) !important;
    text-shadow: none !important;
    letter-spacing: .5px !important;
    font-weight: 600 !important;
    font-size: 14.5px !important;
}
.sidebar .logo .logo-text { color: #E8EDF4 !important; }
.sidebar .logo .menu-icon { margin-right: 9px !important; }

/* 账套信息块 */
.sidebar .book-bar {
    padding: 14px 16px 15px !important;
    border-bottom: 1px solid rgba(255, 255, 255, .07) !important;
    background: rgba(255, 255, 255, .022);
}
.sidebar .book-bar #sbName {
    color: #E8EDF4 !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    margin-bottom: 9px !important;
    letter-spacing: .2px;
}
.sidebar .book-bar .flex-between { color: #7A8899 !important; font-size: 11.5px !important; }
.sidebar .book-bar #sbPeriod {
    color: #C6D2E0 !important;
    font-family: ui-monospace, "SF Mono", Consolas, monospace !important;
    font-size: 11.5px !important;
    letter-spacing: .3px;
}
.sidebar .book-bar #sbStd {
    color: #8B98A9 !important;
    background: rgba(255, 255, 255, .04) !important;
    border: 1px solid rgba(255, 255, 255, .08) !important;
    font-size: 10.5px !important;
    padding: 5px 8px !important;
    border-radius: 5px !important;
    margin-top: 8px;
}

/* 侧栏状态徽标：去掉发光胶囊，改成"点 + 字" */
.sidebar #sbStatus {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    color: #7A8899 !important;
    font-size: 11.5px;
    font-weight: 500 !important;
    padding: 0 !important;
}
.sidebar #sbStatus::before {
    content: "";
    display: inline-block;
    width: 5px; height: 5px;
    border-radius: 50%;
    background: #4E9E7F;
    margin-right: 5px;
    vertical-align: 1px;
}

/* 菜单容器 */
.menu-area { padding: 10px 10px 16px !important; }

/* 分组标题：小号、放宽字距、去箭头字符（改由 CSS 三角） */
.menu-group {
    padding: 11px 10px 7px !important;
    margin: 6px 0 0 0 !important;
    font-size: 10.5px !important;
    font-weight: 600 !important;
    letter-spacing: 1.1px !important;
    color: #5F6E80 !important;
    border-radius: 0 !important;
    background: transparent !important;
    gap: 0 !important;
    text-transform: none;
}
.menu-group:hover { color: #93A2B4 !important; }
.menu-group > span:first-child {
    font-size: 0 !important;      /* 隐藏原 ▶ ▼ 字符 */
    width: 9px !important;
    margin-right: 5px;
    position: relative;
}
.menu-group > span:first-child::after {
    content: "";
    position: absolute;
    left: 0; top: 50%;
    width: 0; height: 0;
    border-left: 3.5px solid #5F6E80;
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
    transform: translateY(-50%) rotate(0deg);
    transition: transform .18s ease;
}
.menu-group.is-open > span:first-child::after,
.menu-group:has(+ .menu-items-container:not(:empty)) > span:first-child::after { transform: translateY(-50%) rotate(90deg); }

/* 菜单项 */
.menu-item {
    padding: 8px 10px !important;
    margin-bottom: 1px !important;
    border-radius: 6px !important;
    color: #A5B2C2 !important;
    font-size: 12.5px !important;
    font-weight: 400 !important;
    gap: 9px !important;
    border: none !important;
    transition: background .14s ease, color .14s ease !important;
    line-height: 1.4;
}
.menu-item:hover {
    background: rgba(255, 255, 255, .05) !important;
    color: #E8EDF4 !important;
    transform: none !important;
    box-shadow: none !important;
}
.menu-item.active {
    background: rgba(46, 118, 168, .16) !important;
    color: #FFFFFF !important;
    font-weight: 500 !important;
    box-shadow: none !important;
    transform: none !important;
}
.menu-item.active::before {
    content: "" !important;
    position: absolute !important;
    left: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 2px !important;
    height: 16px !important;
    border-radius: 0 2px 2px 0 !important;
    background: #5FA8D8 !important;
    box-shadow: none !important;
}

/* 侧栏图标统一尺寸与描边 */
.menu-item .mi-ico {
    flex: 0 0 16px;
    width: 16px; height: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    opacity: .78;
}
.menu-item:hover .mi-ico { opacity: .95; }
.menu-item.active .mi-ico { opacity: 1; }
.menu-item .mi-ico svg {
    width: 15px; height: 15px;
    stroke: currentColor;
    stroke-width: 1.6;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* 退出按钮 */
#exitArea { padding: 12px 14px !important; border-top: 1px solid rgba(255, 255, 255, .07) !important; }
#exitArea .btn {
    background: transparent !important;
    border: 1px solid rgba(255, 255, 255, .1) !important;
    color: #8B98A9 !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    font-size: 12px !important;
    padding: 7px 10px !important;
    text-shadow: none !important;
    box-shadow: none !important;
    border-radius: 6px !important;
}
#exitArea .btn:hover {
    background: rgba(190, 58, 46, .12) !important;
    border-color: rgba(190, 58, 46, .35) !important;
    color: #E88B82 !important;
    transform: none !important;
}

/* ─────────────────────────────────────────────────────────────
   4. 顶栏：由"深蓝渐变横幅"改为白色工作条
      深色只留给侧栏，主内容区获得最大亮度——数据才是主角
   ───────────────────────────────────────────────────────────── */
.topbar {
    height: 54px !important;
    background: #FFFFFF !important;
    background-image: none !important;
    border-bottom: 1px solid var(--line) !important;
    box-shadow: none !important;
    padding: 0 20px !important;
}

#pageTitle {
    color: var(--n-900) !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
    text-shadow: none !important;
    margin-left: 14px !important;
}

/* 顶栏按钮：全部改为统一幽灵按钮（原版绿/蓝双渐变在这里最刺眼） */
.tb-btn {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--n-700) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    padding: 6px 11px !important;
    border-radius: var(--radius-ctl) !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .04) !important;
    text-shadow: none !important;
    gap: 6px !important;
    height: 32px;
}
.tb-btn:hover {
    background: var(--n-50) !important;
    border-color: var(--n-400) !important;
    color: var(--n-900) !important;
    transform: none !important;
    filter: none !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .06) !important;
}
.tb-btn:active { transform: none !important; }

/* 仅"切换/新建账套"保留主色描边，作为顶栏唯一的强调 */
#tbBookBtn {
    border-color: var(--brand-200) !important;
    color: var(--brand-700) !important;
    background: var(--brand-50) !important;
}
#tbBookBtn:hover { background: var(--brand-100) !important; border-color: var(--brand-500) !important; }

/* 顶栏同步状态：去胶囊 */
#topSyncBtn {
    background: transparent !important;
    border: 1px solid var(--n-200) !important;
    color: var(--n-500) !important;
    font-size: 11.5px !important;
    font-weight: 500 !important;
    padding: 5px 10px !important;
    border-radius: 999px !important;
    box-shadow: none !important;
}
#topSyncBtn:hover { border-color: var(--n-300) !important; color: var(--n-700) !important; }
#topSyncDivider { background: var(--line) !important; height: 18px !important; }

/* 顶栏内的 emoji 图标统一压暗；文字仍可读 */
.tb-btn .tb-ico { display: inline-flex; opacity: .85; }
.tb-btn .tb-ico svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 1.6; fill: none; stroke-linecap: round; stroke-linejoin: round; }

/* 顶部安全警告条：从"整条鲜红横幅"降级为细窄提示带 */
#syncWarningBanner {
    background: var(--warn-50) !important;
    color: var(--warn-700) !important;
    border-bottom: 1px solid #F0DCC6 !important;
    box-shadow: none !important;
    padding: 7px 20px !important;
    font-size: 12.5px !important;
    font-weight: 400 !important;
}
#syncWarningBanner > div > span:nth-child(2) {
    font-weight: 400 !important;
    letter-spacing: 0 !important;
    font-size: 12.5px !important;
}
#syncWarningBanner .btn {
    background: #FFFFFF !important;
    color: var(--warn-700) !important;
    border: 1px solid #E7CDAF !important;
    font-weight: 500 !important;
    font-size: 12px !important;
    padding: 4px 11px !important;
    border-radius: 6px !important;
    box-shadow: none !important;
}

/* ─────────────────────────────────────────────────────────────
   5. 页面容器与卡片
   ───────────────────────────────────────────────────────────── */
.page { padding: 18px 20px 24px !important; }

.card {
    background: #FFFFFF;
    border: 1px solid var(--line);
    border-radius: var(--radius-card);
    box-shadow: none;                    /* 边框已足够表达层级 */
    padding: 18px 20px;
    margin-bottom: 14px;
}
.scard {
    background: #FFFFFF;
    border: 1px solid var(--line);
    border-radius: var(--radius-card);
    box-shadow: none;
    padding: 16px 18px;
}
.scard:hover {
    box-shadow: 0 2px 8px -2px rgba(16, 24, 40, .1);
    border-color: var(--n-300);
    transform: none;                     /* 取消上浮，静态更稳 */
}

/* ─────────────────────────────────────────────────────────────
   6. 按钮：一套三级体系，取消所有渐变
   ───────────────────────────────────────────────────────────── */
.btn {
    border-radius: var(--radius-ctl) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    padding: 7px 13px !important;
    letter-spacing: 0 !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .04) !important;
    transition: background .14s ease, border-color .14s ease, color .14s ease !important;
    gap: 5px;
    line-height: 1.35;
    height: auto;
}
.btn:active:not(:disabled) { transform: none !important; }
.btn:focus-visible { box-shadow: 0 0 0 3px rgba(46, 118, 168, .22) !important; outline: none; }

/* 主操作 */
.btn-p {
    background: var(--brand-600) !important;
    background-image: none !important;
    border: 1px solid var(--brand-600) !important;
    color: #FFFFFF !important;
    text-shadow: none !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .06) !important;
}
.btn-p:hover:not(:disabled) {
    background: var(--brand-700) !important;
    border-color: var(--brand-700) !important;
    filter: none !important;
    transform: none !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .08) !important;
}

/* 次操作（原本是各色渐变，现在统一白底描边） */
.btn-s, .btn-i, .btn-w {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--n-700) !important;
    text-shadow: none !important;
}
.btn-s:hover:not(:disabled), .btn-i:hover:not(:disabled) {
    background: var(--n-50) !important;
    border-color: var(--n-400) !important;
    color: var(--n-900) !important;
    filter: none !important;
    transform: none !important;
}
.btn-w:hover:not(:disabled) {
    background: var(--warn-50) !important;
    border-color: #E7CDAF !important;
    color: var(--warn-700) !important;
    filter: none !important;
    transform: none !important;
}

/* 危险操作：常态克制，悬停才显红 */
.btn-d {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--bad-600) !important;
    text-shadow: none !important;
}
.btn-d:hover:not(:disabled) {
    background: var(--bad-50) !important;
    border-color: #EFC4BF !important;
    color: var(--bad-700) !important;
    filter: none !important;
    transform: none !important;
}

/* 中性 */
.btn-n {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--n-700) !important;
}
.btn-n:hover:not(:disabled) {
    background: var(--n-50) !important;
    border-color: var(--n-400) !important;
    color: var(--n-900) !important;
    transform: none !important;
    filter: none !important;
}

/* 文字按钮：表格行内操作用 */
.btn-text {
    background: transparent !important;
    border: 1px solid transparent !important;
    color: var(--brand-600) !important;
    font-weight: 500 !important;
    padding: 4px 7px !important;
    box-shadow: none !important;
    font-size: 12px !important;
}
.btn-text:hover { background: var(--brand-50) !important; color: var(--brand-700) !important; }
.btn-text.danger { color: var(--bad-600) !important; }
.btn-text.danger:hover { background: var(--bad-50) !important; color: var(--bad-700) !important; }

.btn:disabled, .btn[disabled] {
    opacity: 1 !important;
    background: var(--n-50) !important;
    border-color: var(--n-200) !important;
    color: var(--n-400) !important;
    filter: none !important;
    box-shadow: none !important;
    cursor: not-allowed;
}

/* ─────────────────────────────────────────────────────────────
   7. 表单控件
   ───────────────────────────────────────────────────────────── */
.inp, .sel {
    border: 1px solid var(--n-300) !important;
    border-radius: var(--radius-ctl) !important;
    background: #FFFFFF !important;
    font-size: 13px !important;
    color: var(--n-800) !important;
    padding: 7px 10px !important;
    box-shadow: none !important;
    transition: border-color .14s ease, box-shadow .14s ease !important;
    height: 34px;
}
.inp:hover, .sel:hover { border-color: var(--n-400) !important; }
.inp:focus, .sel:focus {
    border-color: var(--brand-500) !important;
    box-shadow: 0 0 0 3px rgba(46, 118, 168, .14) !important;
    background: #FFFFFF !important;
}
.inp:disabled, .sel:disabled {
    background: var(--n-50) !important;
    color: var(--n-500) !important;
    border-color: var(--n-200) !important;
}
textarea.inp { height: auto; padding: 8px 10px !important; }
.inp::placeholder { color: var(--n-400); }

/* 单选/复选：由系统蓝改为品牌钢蓝 */
input[type="checkbox"], input[type="radio"] { accent-color: var(--brand-600); }

/* 表单标签 */
label { color: var(--n-600); font-size: 12.5px; font-weight: 500; }

/* ─────────────────────────────────────────────────────────────
   8. 表格：去竖线、提行高、数字右对齐 —— 全站观感提升最明显的一处
   ───────────────────────────────────────────────────────────── */
.table-wrap {
    border: 1px solid var(--line) !important;
    border-radius: var(--radius-card) !important;
    box-shadow: none !important;
    background: #FFFFFF !important;
}

.tbl { border-collapse: separate; border-spacing: 0; }

.tbl th, .tbl td {
    border-right: none !important;                 /* 取消 1336 行里的全网格竖线 */
    border-bottom: 1px solid var(--line-soft) !important;
    padding: 9px 12px !important;
    color: var(--n-700);
    font-size: 12.5px;
    vertical-align: middle;
}

.tbl th {
    background: #F7F8FA !important;
    background-image: none !important;
    border-bottom: 1px solid var(--line) !important;
    border-top: none !important;
    color: var(--n-600) !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: .2px !important;
    text-transform: none !important;               /* 中文不需要大写化 */
    text-shadow: none !important;
    box-shadow: none !important;
    padding: 8px 12px !important;
    white-space: nowrap;
}

.tbl tbody tr { transition: background .1s ease; }
.tbl tbody tr:hover { background: #FAFBFD !important; }
.tbl tbody tr:nth-child(even) { background: #FCFCFD; }
.tbl tbody tr:nth-child(even):hover { background: #F7F9FC !important; }
.tbl tbody tr:last-child td { border-bottom: none !important; }
.tbl tbody tr.highlight { background: #FFFBF0 !important; font-weight: 500; }

/* 金额列：右对齐是财务表的铁律 */
.tbl td[align="right"], .tbl th[align="right"],
.tbl .td-r, .tbl .th-r { text-align: right !important; }

/* 表内可点文本 */
.tbl a { color: var(--brand-600); text-decoration: none; }
.tbl a:hover { text-decoration: underline; text-underline-offset: 2px; }

/* 表格内的空状态 */
.tbl .empty-row td, .tbl td[colspan] { color: var(--n-400); }

/* ─────────────────────────────────────────────────────────────
   9. 徽标：从"糖果胶囊"改为"低饱和标签"
   ───────────────────────────────────────────────────────────── */
.badge {
    border-radius: 5px !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    padding: 2px 7px !important;
    letter-spacing: 0 !important;
    box-shadow: none !important;
    border-width: 1px !important;
    line-height: 1.5;
}
.badge.blue   { background: var(--brand-50) !important; color: var(--brand-700) !important; border-color: var(--brand-200) !important; }
.badge.green  { background: var(--ok-50) !important; color: var(--ok-700) !important; border-color: #C4E3D7 !important; }
.badge.orange { background: var(--warn-50) !important; color: var(--warn-700) !important; border-color: #EED9BF !important; }
.badge.purple { background: #F4F0FA !important; color: #5B3E8E !important; border-color: #DFD5EE !important; }
.badge.gray   { background: var(--n-50) !important; color: var(--n-600) !important; border-color: var(--n-200) !important; }
.badge.red    { background: var(--bad-50) !important; color: var(--bad-700) !important; border-color: #EFC4BF !important; }
.badge.cyan   { background: #EEF7FA !important; color: #15606E !important; border-color: #C9E4EB !important; }

/* ─────────────────────────────────────────────────────────────
   10. 弹窗与遮罩
   ───────────────────────────────────────────────────────────── */
.dlg {
    border-radius: var(--radius-dlg) !important;
    box-shadow: 0 24px 48px -12px rgba(16, 24, 40, .28), 0 0 0 1px rgba(16, 24, 40, .04) !important;
    border: none !important;
}
.dlg-head {
    border-bottom: 1px solid var(--line) !important;
    padding: 15px 20px !important;
}
.dlg-title { font-size: 14.5px !important; font-weight: 600 !important; color: var(--n-900) !important; }
.dlg-body, .dlg > div:nth-child(2) { padding: 18px 20px !important; }
.dlg-foot {
    border-top: 1px solid var(--line) !important;
    padding: 13px 20px !important;
    background: #FCFCFD;
}
.dlg-close {
    color: var(--n-400) !important;
    font-size: 20px !important;
    line-height: 1;
    width: 26px; height: 26px;
    border-radius: 5px;
    display: inline-flex; align-items: center; justify-content: center;
}
.dlg-close:hover { background: var(--n-100) !important; color: var(--n-700) !important; }

.overlay { background: rgba(16, 24, 40, .42) !important; backdrop-filter: blur(2px) !important; }

/* ─────────────────────────────────────────────────────────────
   11. 提示条：旧版 alert 是彩色渐变块，改为左侧色条
   ───────────────────────────────────────────────────────────── */
.alert {
    border-radius: var(--radius-ctl) !important;
    border: 1px solid var(--line) !important;
    border-left: 3px solid var(--brand-500) !important;
    background: var(--brand-50) !important;
    color: var(--brand-700) !important;
    font-size: 12.5px !important;
    padding: 9px 13px !important;
    box-shadow: none !important;
    font-weight: 400 !important;
}
.alert-warn, .alert-warning {
    background: var(--warn-50) !important;
    border-color: #F0DCC6 !important;
    border-left-color: #C97C1F !important;
    color: var(--warn-700) !important;
}
.alert-danger, .alert-error {
    background: var(--bad-50) !important;
    border-color: #EFC4BF !important;
    border-left-color: var(--bad-600) !important;
    color: var(--bad-700) !important;
}
.alert-success {
    background: var(--ok-50) !important;
    border-color: #C4E3D7 !important;
    border-left-color: var(--ok-600) !important;
    color: var(--ok-700) !important;
}

/* ─────────────────────────────────────────────────────────────
   12. 杂项收敛
   ───────────────────────────────────────────────────────────── */
/* 页面内的小标题：原版到处 800 加粗 */
.bold, .fw-bold { font-weight: 600 !important; }

/* 分页条 */
.pager, .pagination { gap: 4px !important; }
.pager button, .pagination button {
    min-width: 28px; height: 28px;
    border-radius: 5px !important;
    border: 1px solid var(--n-300) !important;
    background: #FFFFFF !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    color: var(--n-700) !important;
    box-shadow: none !important;
}
.pager button:hover, .pagination button:hover { background: var(--n-50) !important; }
.pager button.active, .pagination button.active {
    background: var(--brand-600) !important;
    border-color: var(--brand-600) !important;
    color: #FFF !important;
}

/* 分隔线 */
hr { border: none; border-top: 1px solid var(--line); }

/* 让所有内联写死的 1px 立体阴影"失声"（保留结构性阴影） */
[style*="box-shadow:0 8px 16px"], [style*="box-shadow: 0 8px 16px"] { box-shadow: 0 1px 2px rgba(16,24,40,.06) !important; }

/* 侧边栏拖拽条 */
.resizer { background: transparent !important; }
.resizer:hover { background: rgba(46, 118, 168, .35) !important; }

/* Logo 图标（原为 📊 emoji），由 theme.js 注入 SVG 后套用 */
.logo-ico { display: inline-flex; width: 18px; height: 18px; margin-right: 9px; opacity: .9; }
.logo-ico svg { width: 18px; height: 18px; stroke: #7FB4D8; stroke-width: 1.6; fill: none; stroke-linecap: round; stroke-linejoin: round; }

/* 空状态：统一成细线图标 + 两行灰字 */
.empty-state {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 56px 20px; gap: 10px; color: var(--n-500); text-align: center;
}
.empty-state .es-ico { opacity: .3; }
.empty-state .es-ico svg { width: 34px; height: 34px; stroke: currentColor; stroke-width: 1.2; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.empty-state .es-title { font-size: 13px; font-weight: 500; color: var(--n-600); }
.empty-state .es-sub { font-size: 12px; color: var(--n-400); }

/* ─────────────────────────────────────────────────────────────
   13. 页面级组件统一
   -------------------------------------------------------------------------
   各业务模块（期末结账、数据备份等）自带独立的 <style> 与 .b3d/.b3dg 体系，
   这些 style 注入在 body 内、晚于本文件，因此本节一律使用 !important
   才能取得最终优先级。目标只有一个：让它们和全站按钮说同一种语言。
   ───────────────────────────────────────────────────────────── */

/* 13.1 三级按钮 · 结账页（.b3d，全宽执行钮） */
.b3d {
    background: var(--n-50) !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--n-700) !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    border-radius: var(--radius-ctl) !important;
    padding: 9px 14px !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .04) !important;
    text-shadow: none !important;
    width: 100%;
    transition: background .14s ease, border-color .14s ease !important;
}
.b3d:hover:not(:disabled) {
    transform: none !important;
    filter: none !important;
    background: var(--n-100) !important;
    border-color: var(--n-400) !important;
}
.b3d:active:not(:disabled) { transform: none !important; }

/* 主执行（调汇）→ 实心主色 */
.b3d-blue {
    background: var(--brand-600) !important;
    border-color: var(--brand-600) !important;
    color: #FFFFFF !important;
}
.b3d-blue:hover:not(:disabled) { background: var(--brand-700) !important; border-color: var(--brand-700) !important; }

/* 损益结转 → 实心成功色（语义保留，饱和度降下来） */
.b3d-green {
    background: var(--ok-600) !important;
    border-color: var(--ok-600) !important;
    color: #FFFFFF !important;
}
.b3d-green:hover:not(:disabled) { background: var(--ok-700) !important; border-color: var(--ok-700) !important; }

/* 可选步骤 / 高危步骤 / 灰色 */
.b3d-amber {
    background: #FFFFFF !important;
    border-color: #E7CDAF !important;
    color: var(--warn-700) !important;
}
.b3d-amber:hover:not(:disabled) { background: var(--warn-50) !important; }
.b3d-red {
    background: #FFFFFF !important;
    border-color: #EFC4BF !important;
    color: var(--bad-700) !important;
}
.b3d-red:hover:not(:disabled) { background: var(--bad-50) !important; }
.b3d-gray {
    background: #FFFFFF !important;
    border-color: var(--n-300) !important;
    color: var(--n-600) !important;
}

/* 13.2 结账页的步骤卡片 */
.step-card {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--radius-card) !important;
    box-shadow: none !important;
    padding: 18px 20px !important;
    transition: border-color .14s ease !important;
}
.step-card:hover {
    transform: none !important;
    box-shadow: none !important;
    border-color: var(--n-300) !important;
}
/* 第 4 步原本有 5px 红色左边框，改为常规卡片 + 细左侧色标 */
.step-card[style*="border-left"] { border-left: 3px solid var(--bad-600) !important; }

/* 卡片顶部的彩色装饰条：降为 2px 单色 */
.step-top { height: 2px !important; opacity: .9; }

/* 步骤序号方块：渐变 → 浅底深字 */
.step-badge {
    background: var(--n-100) !important;
    background-image: none !important;
    color: var(--n-700) !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    width: 30px !important;
    height: 30px !important;
    border-radius: 7px !important;
    box-shadow: none !important;
}

/* 步骤标签 */
.step-chip {
    background: var(--n-50) !important;
    color: var(--n-500) !important;
    border: 1px solid var(--n-200) !important;
    font-size: 10.5px !important;
    font-weight: 500 !important;
    letter-spacing: .3px !important;
    border-radius: 5px !important;
    padding: 2px 7px !important;
}

/* 流程条 */
.flow-strip {
    background: var(--n-50) !important;
    background-image: none !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--radius-ctl) !important;
    padding: 9px 12px !important;
    font-size: 12px !important;
    font-weight: 400 !important;
    color: var(--n-600) !important;
    gap: 7px !important;
    margin-bottom: 14px !important;
}
.flow-node {
    background: #FFFFFF !important;
    border: 1px solid var(--line) !important;
    border-radius: 999px !important;
    padding: 3px 10px !important;
    box-shadow: none !important;
    font-size: 11.5px !important;
    font-weight: 500 !important;
    color: var(--n-600) !important;
    gap: 5px !important;
}
.flow-num {
    background: var(--n-200) !important;
    background-image: none !important;
    color: var(--n-700) !important;
    font-size: 10px !important;
    font-weight: 600 !important;
    width: 16px !important;
    height: 16px !important;
}

/* 13.3 数据备份页（.b3dg 九色体系） */
.b3dg {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--n-700) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    border-radius: var(--radius-ctl) !important;
    padding: 8px 14px !important;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .04) !important;
    text-shadow: none !important;
    gap: 6px !important;
    transition: background .14s ease, border-color .14s ease !important;
}
.b3dg:hover:not(:disabled) {
    transform: none !important;
    filter: none !important;
    background: var(--n-50) !important;
    border-color: var(--n-400) !important;
}
/* 全宽 = 该区块主操作 */
.b3dg.wide {
    background: var(--brand-600) !important;
    border-color: var(--brand-600) !important;
    color: #FFFFFF !important;
    font-weight: 500 !important;
}
.b3dg.wide:hover:not(:disabled) {
    background: var(--brand-700) !important;
    border-color: var(--brand-700) !important;
}
.b3dg.c-red { color: var(--bad-600) !important; }
.b3dg.c-red:hover:not(:disabled) { background: var(--bad-50) !important; border-color: #EFC4BF !important; }
.b3dg.c-amber { color: var(--warn-700) !important; }
.b3dg.c-amber:hover:not(:disabled) { background: var(--warn-50) !important; border-color: #E7CDAF !important; }

/* 备份页区块 */
.bsec {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--line) !important;
    border-radius: var(--radius-card) !important;
    box-shadow: none !important;
    padding: 18px 20px 20px !important;
    margin-bottom: 14px !important;
}
.bsec .btop { display: none !important; }          /* 去掉彩色顶条 */
.bhead { margin-bottom: 12px !important; gap: 10px !important; }
.bhead .bt { font-size: 14.5px !important; font-weight: 600 !important; color: var(--n-900) !important; letter-spacing: 0 !important; }
.bhead .bs { font-size: 11.5px !important; color: var(--n-500) !important; margin-top: 3px !important; }
.secnum {
    background: var(--n-100) !important;
    background-image: none !important;
    color: var(--n-700) !important;
    width: 26px !important;
    height: 26px !important;
    border-radius: 6px !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    box-shadow: none !important;
    flex: 0 0 26px;
}
.bsub {
    background: var(--n-50) !important;
    background-image: none !important;
    border: 1px solid var(--line-soft) !important;
    border-radius: var(--radius-ctl) !important;
    padding: 14px 16px !important;
}

/* 13.4 统一清理：模块内联写死的渐变卡片底 */
.card[style*="linear-gradient"],
.scard[style*="linear-gradient"],
.step-card[style*="linear-gradient"],
.bsec[style*="linear-gradient"] {
    background-color: #FFFFFF !important;
    background-image: none !important;
}
/* 内联写死的彩色边框一律归一 */
.step-card[style*="border-color"],
.bsec[style*="border-color"] { border-color: var(--line) !important; }

/* 13.5 表格行内操作：常态降噪，悬停才显色 —— 750 行科目表的关键 */
.tbl tbody tr .btn-text { color: var(--n-500) !important; }
.tbl tbody tr:hover .btn-text { color: var(--brand-600) !important; }
.tbl tbody tr .btn-text.danger { color: var(--n-500) !important; }
.tbl tbody tr:hover .btn-text.danger { color: var(--bad-600) !important; }

/* 13.6 凭证表合计行：深蓝重块 → 双层细线 + 淡底 */
.vc-tbl tr.vc-total td {
    background: #F7F8FA !important;
    background-image: none !important;
    border-top: 2px solid var(--n-800) !important;
    border-bottom: 1px solid var(--line) !important;
    color: var(--n-900) !important;
    font-weight: 600 !important;
    font-size: 13.5px !important;
}
.vc-tbl tr.vc-total td.vc-total-label { letter-spacing: 2px !important; color: var(--n-600) !important; }

/* 13.7 凭证表头：渐变 → 纯色 */
.vc-tbl thead th {
    background: #F7F8FA !important;
    background-image: none !important;
    color: var(--n-600) !important;
    font-weight: 600 !important;
    font-size: 11.5px !important;
    letter-spacing: 1px !important;
    text-indent: 1px !important;
    border-bottom: 1px solid var(--line) !important;
    box-shadow: none !important;
}
.vc-table-wrap { border-color: var(--line) !important; box-shadow: none !important; border-radius: var(--radius-card) !important; }
.vc-tbl th, .vc-tbl td { border-color: var(--line-soft) !important; }
.vc-tbl td.vc-acc { font-weight: 500 !important; color: var(--n-800) !important; }
.vc-tbl td.vc-sum { color: var(--n-700) !important; }
.vc-tbl td.vc-acc .vc-acc-code {
    font-weight: 500 !important;
    color: var(--brand-700) !important;
    background: var(--brand-50) !important;
    border-color: var(--brand-100) !important;
    border-radius: 3px !important;
}
/* 借方蓝 / 贷方绿：降饱和以匹配新色板 */
.vc-amt-in { font-weight: 500 !important; }
.vc-amt-in.deb { color: var(--brand-700) !important; }
.vc-amt-in.cre { color: var(--ok-700) !important; }

/* 13.8 页面级 emoji 标题：统一为"字重 + 字距"而非彩色图标 */
#pageEl h2, #pageEl h3 { color: var(--n-900); }

/* ─────────────────────────────────────────────────────────────
   14. 末梢细节
   ───────────────────────────────────────────────────────────── */

/* 表格行内操作：给相邻的文字按钮留出呼吸 */
.tbl td .btn-text + .btn-text { margin-left: 1px; }
.tbl td .btn-text { padding: 3px 6px !important; }

/* 顶栏备份状态：⚫ / 🟢 字符改为 CSS 圆点（font-size:0 隐去原字符） */
#tsIcon {
    font-size: 0 !important;
    display: inline-block;
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--n-400);
    margin-right: 7px;
    vertical-align: 1px;
    line-height: 0;
}
#topSyncBtn.is-ok #tsIcon { background: var(--ok-600); }
#topSyncBtn.is-warn #tsIcon { background: #C97C1F; }
#topSyncBtn.is-off #tsIcon { background: var(--n-400); }

/* 分页：数字键与当前页 */
.pager-btn, .pg-btn {
    min-width: 26px !important;
    height: 26px !important;
    padding: 0 7px !important;
    border-radius: 5px !important;
    border: 1px solid var(--n-300) !important;
    background: #FFFFFF !important;
    color: var(--n-700) !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    box-shadow: none !important;
}
.pager-btn:hover, .pg-btn:hover { background: var(--n-50) !important; border-color: var(--n-400) !important; }
.pager-btn.active, .pg-btn.active {
    background: var(--brand-600) !important;
    border-color: var(--brand-600) !important;
    color: #FFFFFF !important;
}

/* 表格里的"合计/小计"行（非凭证表） */
.tbl tr.total-row td, .tbl tr.sum-row td {
    background: #F7F8FA !important;
    font-weight: 600 !important;
    color: var(--n-900) !important;
    border-top: 1.5px solid var(--n-300) !important;
}

/* 所有 SVG 图标基线对齐 */
.tb-ico svg, .mi-ico svg { vertical-align: middle; display: block; }
.tb-ico { line-height: 0; }

/* 打印时不受主题影响 */
@media print {
    .sidebar, .topbar, #syncWarningBanner, #floatingAd { display: none !important; }
}


/* =========================================================================
   15. 文字质感：让中文在 Windows 上"清而不糊"
   -------------------------------------------------------------------------
   上一版给全站加了 -webkit-font-smoothing:antialiased，这在 Windows 上会
   关掉次像素抗锯齿——结果是深色底上的浅色字发虚、12px 的中文发灰。
   正确做法是分背景处理：浅底用系统默认（subpixel，笔画实），
   深底才用 antialiased（去掉彩色边缘，显得干净）。
   ========================================================================= */
body {
    -webkit-font-smoothing: subpixel-antialiased;
    text-rendering: optimizeLegibility;
    letter-spacing: 0.12px;
}
.sidebar, .topbar, .dlg-head, #syncWarningBanner {
    -webkit-font-smoothing: antialiased;
}
/* 数字永远不要额外字距，否则千分位对不齐 */
.tbl td, .mono, .vc-amt-in, .pg-num, .pg-info b, #sbPeriod { letter-spacing: 0 !important; }

/* 正文基础字号上调半档，中文 13px 是清晰度临界点 */
#pageEl, .dlg-body { font-size: 13.5px; }

/* 次级文字统一灰阶，不再用彩色小字 */
.text-xs, .text-sm { letter-spacing: 0.1px; }

/* =========================================================================
   16. 分页条：页码 + 首末页 + 跳转
   ========================================================================= */
.pg-row > td {
    padding: 0 !important;
    border-bottom: none !important;
    background: #FCFCFD !important;
}
.pg-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 9px 14px;
    background: #FCFCFD;
    border-top: 1px solid var(--line);
    position: sticky;
    bottom: 0;
    z-index: 11;
    font-size: 12px;
}
.pg-info { color: var(--n-500); white-space: nowrap; }
.pg-info b {
    color: var(--n-800);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    font-size: 12.5px;
}
.pg-ctrl { display: flex; align-items: center; gap: 2px; }

.pg-num, .pg-nav {
    min-width: 28px;
    height: 28px;
    padding: 0 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid transparent;
    border-radius: 6px;
    background: transparent;
    color: var(--n-600);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
    transition: background .13s ease, color .13s ease, border-color .13s ease;
    line-height: 1;
}
.pg-num:hover, .pg-nav:hover:not(:disabled) {
    background: var(--brand-50);
    color: var(--brand-700);
    border-color: var(--brand-100);
}
.pg-num.active {
    background: var(--brand-600);
    border-color: var(--brand-600);
    color: #FFFFFF;
    font-weight: 600;
    box-shadow: 0 1px 3px rgba(26, 107, 168, .28);
}
.pg-nav { color: var(--n-500); font-size: 13px; }
.pg-nav:disabled { opacity: .28; cursor: not-allowed; background: transparent; }
.pg-gap { padding: 0 3px; color: var(--n-400); font-size: 12px; user-select: none; }

.pg-jump {
    display: flex;
    align-items: center;
    gap: 5px;
    color: var(--n-500);
    white-space: nowrap;
}
.pg-inp {
    width: 46px;
    height: 26px;
    text-align: center;
    border: 1px solid var(--n-300);
    border-radius: 5px;
    font-family: inherit;
    font-size: 12px;
    color: var(--n-800);
    background: #FFFFFF;
    padding: 0 4px;
    font-variant-numeric: tabular-nums;
    transition: border-color .13s ease, box-shadow .13s ease;
}
.pg-inp:hover { border-color: var(--n-400); }
.pg-inp:focus {
    outline: none;
    border-color: var(--brand-500);
    box-shadow: 0 0 0 2px rgba(26, 107, 168, .14);
}
.pg-inp::-webkit-outer-spin-button,
.pg-inp::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pg-inp { -moz-appearance: textfield; appearance: textfield; }

/* =========================================================================
   17. 弹窗体系：一套语言贯穿 alert / confirm / 业务弹窗 / 凭证查看
   -------------------------------------------------------------------------
   原版每个弹窗各写一套内联样式，圆角 14/18px 混用、按钮位置各异、
   顶部还有一条高饱和渐变彩条。这里统一为：12px 圆角、单层投影、
   头部 15px 标题、底部按钮右对齐、遮罩统一。
   ========================================================================= */
.overlay {
    background: rgba(11, 20, 33, .45) !important;
    backdrop-filter: blur(3px) !important;
    -webkit-backdrop-filter: blur(3px) !important;
}

/* 通用弹窗 */
.dlg {
    border-radius: 12px !important;
    background: #FFFFFF !important;
    box-shadow:
        0 0 0 1px rgba(12, 21, 34, .05),
        0 24px 56px -16px rgba(12, 21, 34, .34) !important;
    border: none !important;
    overflow: hidden;
}
.dlg-head {
    height: 54px !important;
    padding: 0 20px !important;
    border-bottom: 1px solid var(--line) !important;
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #FFFFFF !important;
}
.dlg-title {
    font-size: 14.5px !important;
    font-weight: 600 !important;
    color: var(--n-900) !important;
    letter-spacing: .1px;
    display: flex;
    align-items: center;
    gap: 7px;
}
.dlg-foot {
    padding: 12px 20px !important;
    border-top: 1px solid var(--line) !important;
    background: #FBFCFD !important;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}
.dlg-body { padding: 18px 20px !important; }

/* 系统提示框（alert / confirm）：去掉顶部彩条，改为左侧 3px 语义色标 */
.sys-dlg {
    border-radius: 12px !important;
    overflow: hidden !important;
    border: none !important;
    background: #FFFFFF !important;
    box-shadow:
        0 0 0 1px rgba(12, 21, 34, .05),
        0 24px 56px -16px rgba(12, 21, 34, .34) !important;
}
.sys-dlg-strip { height: 3px !important; opacity: .55 !important; }
.sys-dlg-body { padding: 22px 24px 18px !important; }
.sys-dlg-head {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    margin-bottom: 12px !important;
}
.sys-dlg-icon {
    width: 30px !important;
    height: 30px !important;
    border-radius: 7px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 15px !important;
    flex: 0 0 30px;
}
.sys-dlg-title {
    font-size: 14.5px !important;
    font-weight: 600 !important;
    color: var(--n-900) !important;
    letter-spacing: .1px !important;
}
.sys-dlg-msg {
    font-size: 13px !important;
    line-height: 1.75 !important;
    color: var(--n-600) !important;
    white-space: pre-wrap;
    padding-left: 40px;
    font-weight: 400 !important;
}
.sys-dlg-btns {
    display: flex !important;
    justify-content: flex-end !important;
    gap: 8px !important;
    margin-top: 22px !important;
    padding-top: 14px;
    border-top: 1px solid var(--line-soft);
}
.sys-dlg-btns .btn {
    min-width: 78px;
    height: 32px !important;
    padding: 0 16px !important;
    border-radius: var(--radius-ctl) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    background-image: none !important;
    box-shadow: none !important;
    text-shadow: none !important;
}

/* 凭证查看弹窗（.vdlg） */
.vdlg { border-radius: 12px !important; }
.vdlg-head {
    background: #FFFFFF !important;
    border-bottom: 1px solid var(--line) !important;
}
.vdlg-foot {
    background: #FBFCFD !important;
    border-top: 1px solid var(--line) !important;
}

/* 备份引导弹窗：把内联写死的 18px 圆角与 64px emoji 压回体系 */
#forceSyncOverlay .dlg { border-radius: 12px !important; }
#forceSyncOverlay .dlg > div:first-child {
    background: var(--n-50) !important;
    background-image: none !important;
    border-bottom: 1px solid var(--line);
}
#forceSyncOverlay .dlg > div:first-child > div:first-child {
    font-size: 0 !important;      /* 隐去 64px 的 emoji */
    height: 0 !important;
    margin: 0 !important;
}
#forceSyncOverlay .dlg > div:first-child > div:nth-child(2) {
    color: var(--n-900) !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
}
#forceSyncOverlay .dlg > div:nth-child(2) { padding: 22px 26px 24px !important; }

/* 弹窗内按钮统一高度 */
.dlg-foot .btn, .dlg-body .btn { height: 32px !important; }
.btn.w-full { height: auto !important; }

/* =========================================================================
   18. 字体栈：把"UI 版雅黑"提到最前
   -------------------------------------------------------------------------
   Windows 自带两套雅黑：Microsoft YaHei 是印刷导向的，字距松；
   Microsoft YaHei UI 是为界面小字号调过的，同字号下笔画更紧凑清晰——
   这正是"文字细腻"的来源。西文与数字交给 Segoe UI（字形更精致），
   中文自动回落到雅黑 UI。缺字体时逐级降级，无副作用。
   ========================================================================= */
body,
button, input, select, textarea,
.btn, .tbl, .inp, .sel, .dlg, .menu-item, .pg-bar,
.tb-btn, .b3d, .b3dg, .step-card, .bsec {
    font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei",
                 "PingFang SC", -apple-system, BlinkMacSystemFont,
                 "Helvetica Neue", Arial, sans-serif !important;
}

/* 表格内数字使用等宽数字特性，保证列对齐 */
.tbl td, .vc-tbl td, .pg-info b, #sbPeriod, .mono {
    font-feature-settings: "tnum" 1, "lnum" 1;
    font-variant-numeric: tabular-nums;
}

/* 侧栏菜单在深底上需要略高字重，否则发虚 */
.sidebar .menu-item { font-weight: 400 !important; }
.sidebar .menu-item.active { font-weight: 500 !important; }
.sidebar .menu-group { font-weight: 600 !important; }

/* 页面标题与卡片标题：收紧字距，显精致 */
#pageTitle, .dlg-title, .sys-dlg-title, .bhead .bt {
    letter-spacing: -0.1px !important;
}

/* =========================================================================
   19. 表格行内操作：由 theme.js 打类，这里接管全部视觉
   -------------------------------------------------------------------------
   业务代码在这些按钮上写了内联 color（蓝/红），且每行重复 750 次。
   只靠 CSS 的 !important 追不平内层内联，因此由 JS 摘除内联色后打类，
   这里只负责"常态低调、悬停才亮"的规则。
   ========================================================================= */
.tbl tbody tr .ra-act,
.tbl tbody tr .ra-del {
    background: transparent !important;
    background-image: none !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    padding: 3px 7px !important;
    border-radius: 5px !important;
    transition: background .12s ease, color .12s ease !important;
}
.tbl tbody tr .ra-act { color: var(--n-500) !important; }
.tbl tbody tr .ra-del { color: var(--n-500) !important; }

.tbl tbody tr:hover .ra-act {
    color: var(--brand-700) !important;
    background: var(--brand-50) !important;
    border-color: var(--brand-100) !important;
}
.tbl tbody tr:hover .ra-del {
    color: var(--bad-700) !important;
    background: var(--bad-50) !important;
    border-color: #F2D2CE !important;
}

/* =========================================================================
   20. 弹窗底部按钮：主次分级
   -------------------------------------------------------------------------
   原版这些按钮的背景是内联渐变、文字是内联 #fff。上面把 background-image
   统一清成 none 之后，background-color 变成 transparent，白字就看不见了。
   这里由 JS 打上 dlg-primary / dlg-secondary / is-danger 三个类，
   背景与文字成对设置，确保任何情况下都不会出现"白底白字"。
   ========================================================================= */
.sys-dlg-btns .dlg-primary,
.dlg-foot .dlg-primary {
    background-color: var(--brand-600) !important;
    background-image: none !important;
    border: 1px solid var(--brand-600) !important;
    color: #FFFFFF !important;
    font-weight: 500 !important;
    box-shadow: 0 1px 2px rgba(26, 107, 168, .22) !important;
}
.sys-dlg-btns .dlg-primary:hover:not(:disabled),
.dlg-foot .dlg-primary:hover:not(:disabled) {
    background-color: var(--brand-700) !important;
    border-color: var(--brand-700) !important;
}
.sys-dlg-btns .dlg-primary.is-danger,
.dlg-foot .dlg-primary.is-danger {
    background-color: var(--bad-600) !important;
    border-color: var(--bad-600) !important;
}
.sys-dlg-btns .dlg-primary.is-danger:hover:not(:disabled),
.dlg-foot .dlg-primary.is-danger:hover:not(:disabled) {
    background-color: var(--bad-700) !important;
    border-color: var(--bad-700) !important;
}

.sys-dlg-btns .dlg-secondary,
.dlg-foot .dlg-secondary {
    background-color: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--n-300) !important;
    color: var(--n-700) !important;
}
.sys-dlg-btns .dlg-secondary:hover:not(:disabled),
.dlg-foot .dlg-secondary:hover:not(:disabled) {
    background-color: var(--n-50) !important;
    border-color: var(--n-400) !important;
    color: var(--n-900) !important;
}

/* 分页条里的按钮不受行内操作规则影响，这里再抬一次特异性兜底 */
.tbl tbody tr.pg-row .pg-num,
.tbl tbody tr.pg-row .pg-nav {
    background-color: transparent !important;
    border-color: transparent !important;
    color: var(--n-600) !important;
    padding: 0 7px !important;
}
.tbl tbody tr.pg-row .pg-num:hover { background-color: var(--brand-50) !important; color: var(--brand-700) !important; }
.tbl tbody tr.pg-row .pg-num.active {
    background-color: var(--brand-600) !important;
    border-color: var(--brand-600) !important;
    color: #FFFFFF !important;
    box-shadow: 0 1px 3px rgba(26, 107, 168, .3) !important;
}
.tbl tbody tr.pg-row .pg-nav:disabled { opacity: .28 !important; background-color: transparent !important; }

/* =========================================================================
   21. 鲜明度校准
   -------------------------------------------------------------------------
   上一版为了"去 AI 味"把颜色压得偏灰，代价是整体发闷。
   这一节只做一件事：在保持"单主色"的前提下，把对比和冷调提上来。
   手段不是加更多颜色，而是——
     · 底板更冷、更沉，白卡才浮得起来；
     · 表头、隔行、悬停带极淡蓝调，让表格"有颜色"但不花；
     · 品牌蓝只出现在三处：主操作、当前页、侧栏选中项。
   ========================================================================= */
:root {
    --bg-body: #F2F4F8;
    --brand-600: #1868A8;
    --brand-700: #12507F;
    --brand-500: #2E86C8;
    --line: #E2E8F0;
    --line-soft: #EDF1F6;
}

/* 表头：淡蓝调，取代灰白 */
.tbl th {
    background: #F4F8FC !important;
    color: #44546A !important;
    border-bottom: 1px solid #DCE6F0 !important;
}
.vc-tbl thead th {
    background: #F4F8FC !important;
    color: #44546A !important;
    border-bottom: 1px solid #DCE6F0 !important;
}

/* 隔行与悬停：极淡蓝，比灰色"透气" */
.tbl tbody tr:nth-child(even) { background: #FAFCFE !important; }
.tbl tbody tr:hover { background: #F1F7FD !important; }
.tbl tbody tr:nth-child(even):hover { background: #EDF5FC !important; }

/* 表格外框：带一点蓝调，与底板分层 */
.table-wrap { border-color: #DFE7F0 !important; }
.card, .scard, .step-card, .bsec { border-color: #E4EAF2 !important; }

/* 侧栏选中项：蓝调更明确 */
.menu-item.active {
    background: rgba(46, 134, 200, .22) !important;
    color: #FFFFFF !important;
}
.menu-item.active::before { background: #5FB0E8 !important; width: 2.5px !important; }
.menu-item:hover { background: rgba(255, 255, 255, .06) !important; }

/* 主按钮：更纯的蓝，hover 更深一档 */
.btn-p, .b3dg.wide, .b3d-blue {
    background-color: #1868A8 !important;
    border-color: #1868A8 !important;
}
.btn-p:hover:not(:disabled), .b3dg.wide:hover:not(:disabled), .b3d-blue:hover:not(:disabled) {
    background-color: #12507F !important;
    border-color: #12507F !important;
}

/* 金额借贷：鲜明但不过饱和 */
.vc-amt-in.deb { color: #1565A8 !important; }
.vc-amt-in.cre { color: #0A6E4E !important; }

/* 侧栏账期数字：提亮，像仪表读数 */
#sbPeriod { color: #9FD0EE !important; font-weight: 500 !important; }

/* 顶栏备份状态点：颜色到位 */
#topSyncBtn { color: #667085 !important; }
#topSyncBtn.is-ok { color: #0B7A57 !important; border-color: #C9E8DC !important; }
#topSyncBtn.is-warn { color: #A65A0A !important; border-color: #EEDBC4 !important; }

/* =========================================================================
   22. 填制凭证 · 合计行
   -------------------------------------------------------------------------
   原来这一行是内联写死的深蓝渐变（#123a80 → #1c50ad），在整张白表里
   像一块压舱铁，把视线全部吸走。改为淡蓝底 + 顶部分隔线：
   金额本身用借贷两色说话，行背景只做"这是一行汇总"的暗示。
   ========================================================================= */
.vch-total-row { background: #F4F8FC !important; }
.vch-total-row > td {
    border-bottom: none !important;
    border-top: 1.5px solid #CFDCEA !important;
    padding: 9px 12px !important;
    background: transparent !important;
}
.vch-total-label {
    font-size: 12.5px !important;
    font-weight: 500 !important;
    color: var(--n-600) !important;
    letter-spacing: 4px !important;
    padding-right: 16px !important;
}
.vch-total-amt {
    font-family: 'JetBrains Mono', Consolas, monospace !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0 !important;
}
/* 借方金额 / 贷方金额 */
.vch-total-row > td:nth-child(2) {
    color: #1565A8 !important;
    border-left: 1px solid #E2EAF3 !important;
}
.vch-total-row > td:nth-child(3) {
    color: #0A6E4E !important;
    border-left: 1px solid #E2EAF3 !important;
}

/* 制单人落款：去掉渐变底板，改为一行轻描淡写的署名 */
#pageEl .no-print[style*="margin-top:auto"] {
    background: transparent !important;
    background-image: none !important;
    border: none !important;
    border-top: 1px solid var(--line) !important;
    border-radius: 0 !important;
    padding: 12px 4px 2px !important;
}

/* =========================================================================
   23. 右下角反馈卡
   -------------------------------------------------------------------------
   原来它固定压在整个侧栏底部，把"安全退出"盖死；深蓝渐变外壳也跟整体
   格格不入。这里只做位移与换肤，功能与拖拽逻辑原样保留：
     · 从左下移到右下（那里是空白区，不压任何关键操作）
     · 深蓝渐变壳 → 白卡 + 细边框，与全站同一套语言
   ========================================================================= */
#floatingAd {
    left: auto !important;
    right: 18px !important;
    bottom: 18px !important;
    width: 216px !important;
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid var(--line) !important;
    border-radius: 10px !important;
    box-shadow: 0 10px 28px -12px rgba(12, 21, 34, .28), 0 2px 6px -2px rgba(12, 21, 34, .08) !important;
    overflow: hidden;
}
#floatingAd #adHeader {
    background: transparent !important;
    border-bottom: 1px solid var(--line-soft) !important;
    padding: 7px 10px !important;
    cursor: grab;
}
#floatingAd #adHeader > span {
    color: var(--n-500) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: .3px !important;
    text-shadow: none !important;
}
#floatingAd #adHeader > button {
    background: transparent !important;
    border: none !important;
    color: var(--n-400) !important;
    width: 18px !important;
    height: 18px !important;
    font-size: 13px !important;
}
#floatingAd #adHeader > button:hover { background: var(--n-100) !important; color: var(--n-700) !important; }
#floatingAd > a {
    padding: 10px 12px 12px !important;
    display: block;
}
#floatingAd > a > div:first-child {
    color: var(--brand-700) !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    margin-bottom: 3px !important;
    text-shadow: none !important;
}
#floatingAd > a > div:last-child {
    color: var(--n-500) !important;
    font-size: 11.5px !important;
    line-height: 1.5 !important;
    text-shadow: none !important;
}
#floatingAd > a:hover { background: var(--n-50) !important; }

/* =========================================================================
   24. 凭证标题
   -------------------------------------------------------------------------
   原来 24px / 800 字重 / 9px 字距 / 黑体 + 双线底，用力很猛——像在纸上
   盖了个匾。凭证确实需要"正式感"，但正式来自比例与留白，不来自加粗。
   改为 20px / 600 / 4px 字距，一条细线收底。
   ========================================================================= */
#pageEl h2[style*="letter-spacing:9px"] {
    font-size: 20px !important;
    font-weight: 600 !important;
    letter-spacing: 4px !important;
    font-family: "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", sans-serif !important;
    border-bottom: 1px solid #C9D8E8 !important;
    padding-bottom: 6px !important;
    text-shadow: none !important;
}

/* =========================================================================
   25. 凭证分录行：增删按钮与录入框的可辨识度
   -------------------------------------------------------------------------
   两个问题：
   1. ➕ / ➖ 是"增行 / 删行"的功能符号，却被 emoji 清扫逻辑当成装饰删掉了，
      按钮只剩一个空方块，看不出是干什么的。
   2. .v-inp:focus 用琥珀色底 + 黄环，在整片冷调里像块警示牌，语义也错位。
   做法：按钮用红/蓝两色直接区分"删"与"增"，聚焦环改回品牌蓝。
   ========================================================================= */

/* —— 增删行按钮 —— */
#pageEl button[title="删除此行"],
#pageEl button[title="在此行下方插入新行"] {
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    padding: 0 !important;
    margin: 0 !important;
    border-radius: 5px !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
    transition: background .12s ease, color .12s ease, border-color .12s ease !important;
}
#pageEl button[title="删除此行"] .tb-ico,
#pageEl button[title="在此行下方插入新行"] .tb-ico { margin: 0 !important; display: flex !important; }
#pageEl button[title="删除此行"] svg,
#pageEl button[title="在此行下方插入新行"] svg { width: 12px !important; height: 12px !important; stroke-width: 2 !important; }

/* 删：浅红底 + 红字 */
#pageEl button[title="删除此行"] {
    background: #FDF0EF !important;
    border-color: #F6D9D5 !important;
    color: #C0362C !important;
}
#pageEl button[title="删除此行"]:hover:not(:disabled) {
    background: #C0362C !important;
    border-color: #C0362C !important;
    color: #FFFFFF !important;
}
#pageEl button[title="删除此行"]:disabled {
    background: #F7F8FA !important;
    border-color: #EDF1F6 !important;
    color: #CBD3DE !important;
}

/* 增：浅蓝底 + 蓝字 */
#pageEl button[title="在此行下方插入新行"] {
    background: #EAF3FA !important;
    border-color: #CFE3F2 !important;
    color: #12507F !important;
}
#pageEl button[title="在此行下方插入新行"]:hover:not(:disabled) {
    background: #1868A8 !important;
    border-color: #1868A8 !important;
    color: #FFFFFF !important;
}

/* 智能科目按钮（科目框右侧的 ➕）同样处理 */
#pageEl button[title="智能添加下级 / 修改选中科目"] {
    background: #EAF3FA !important;
    border-color: #CFE3F2 !important;
    color: #12507F !important;
    width: 26px !important;
    height: 26px !important;
    padding: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 5px !important;
}
#pageEl button[title="智能添加下级 / 修改选中科目"]:hover:not(:disabled) {
    background: #1868A8 !important;
    border-color: #1868A8 !important;
    color: #FFFFFF !important;
}
#pageEl button[title="智能添加下级 / 修改选中科目"] .tb-ico { margin: 0 !important; }
#pageEl button[title="智能添加下级 / 修改选中科目"] svg { width: 12px !important; height: 12px !important; }

/* —— 录入框：聚焦改蓝环，占位符加深 —— */
.v-inp:focus {
    background: #FFFFFF !important;
    box-shadow: inset 0 0 0 2px #1868A8 !important;
    border-radius: 3px !important;
}
.v-inp::placeholder,
.v-inp::-webkit-input-placeholder {
    color: #97A2B4 !important;
    opacity: 1;
}
/* 可录入区域的文字：比原 #000 更"有层次" */
.v-input-cell .v-inp { color: #0C1522 !important; }

/* —— 分录行：分隔线与表头加强对比（行线 #D3DEED，64 节需求：行次更分明） —— */
#pageEl tr[style*="border-bottom:1px solid #f1f5f9"] > td {
    border-bottom-color: #D3DEED !important;
}
#pageEl thead th {
    background: #F4F8FC !important;
    color: #44546A !important;
    border-bottom: 1px solid #DCE6F0 !important;
}

/* 金额录入：数字更实 */
#pageEl input[id^="vd"], #pageEl input[id^="vc"] {
    font-variant-numeric: tabular-nums;
    letter-spacing: 0 !important;
}

/* =========================================================================
   26. 分录行 · 二轮加强
   -------------------------------------------------------------------------
   第一版把增删按钮做成了 22px 浅底方块，实际渲染下来太轻：
   12px 图标在 22px 方块里像两个符号，浅红浅蓝在白行里也立不住。
   这一版：底板加深一档、图标放大到 14px 并加粗描边、按钮之间留 3px，
   做到"不抢眼但一眼能认出"。
   ========================================================================= */
#pageEl button[title="删除此行"],
#pageEl button[title="在此行下方插入新行"] {
    width: 24px !important;
    height: 24px !important;
    min-width: 24px !important;
    border-radius: 6px !important;
}
#pageEl button[title="删除此行"] svg,
#pageEl button[title="在此行下方插入新行"] svg {
    width: 14px !important;
    height: 14px !important;
    stroke-width: 2.4 !important;
}

/* 删：底色加深，红字更实 */
#pageEl button[title="删除此行"] {
    background: #FBE0DD !important;
    border-color: #F2C4BF !important;
    color: #B02B22 !important;
}
/* 增：底色加深，蓝字更实 */
#pageEl button[title="在此行下方插入新行"] {
    background: #D8EAF8 !important;
    border-color: #B6D6EE !important;
    color: #0F4570 !important;
}

/* 两个按钮之间留出空气 */
#pageEl td[style*="background:#f6f9ff"] > div { gap: 3px !important; }

/* 智能科目按钮同步加强 */
#pageEl button[title="智能添加下级 / 修改选中科目"] {
    background: #D8EAF8 !important;
    border-color: #B6D6EE !important;
    color: #0F4570 !important;
}
#pageEl button[title="智能添加下级 / 修改选中科目"] svg { width: 13px !important; height: 13px !important; stroke-width: 2.2 !important; }

/* 录入框：hover 时给一点底色，暗示"这里能点"；聚焦仍用蓝环 */
.v-input-cell .v-inp:hover:not(:focus):not(:disabled) {
    background: #F7FAFD !important;
}
.v-inp::placeholder,
.v-inp::-webkit-input-placeholder {
    color: #8E9AAC !important;
    opacity: 1 !important;
}

/* 表格里的占位横杠：由 cbd5e1 提到可读的灰 */
#pageEl td .tc.text-xs { color: #94A3B8; }

/* 分录表头：字距收紧，重量提一档 */
#pageEl thead th {
    font-size: 12px !important;
    font-weight: 600 !important;
    letter-spacing: 0.2px !important;
}

/* =========================================================================
   27. 分录行 · 三轮微调
   -------------------------------------------------------------------------
   a) 图标线段的实际长度只占 viewBox 的 60%，14px 的 svg 画出来只有 8px 的线，
      所以放大到 16px 才真正"看得见"。
   b) Chrome 里 placeholder 的颜色由 -webkit-text-fill-color 控制，
      只写 color 会被覆盖——这也是"摘要"两个字看起来像已填内容的原因。
   ========================================================================= */
#pageEl button[title="删除此行"] svg,
#pageEl button[title="在此行下方插入新行"] svg {
    width: 16px !important;
    height: 16px !important;
    stroke-width: 2.6 !important;
}
#pageEl button[title="智能添加下级 / 修改选中科目"] svg {
    width: 15px !important;
    height: 15px !important;
    stroke-width: 2.4 !important;
}

/* 再深半档，保证 1080p 下也立得住 */
#pageEl button[title="删除此行"] {
    background: #F9D6D1 !important;
    border-color: #EDB5AE !important;
    color: #A0261E !important;
}
#pageEl button[title="在此行下方插入新行"] {
    background: #CFE4F6 !important;
    border-color: #A8CCE8 !important;
    color: #0C3E66 !important;
}
#pageEl button[title="智能添加下级 / 修改选中科目"] {
    background: #CFE4F6 !important;
    border-color: #A8CCE8 !important;
    color: #0C3E66 !important;
}

/* placeholder 真正的控制项 */
.v-inp::placeholder {
    color: #9AA5B5 !important;
    -webkit-text-fill-color: #9AA5B5 !important;
    opacity: 1 !important;
}
.inp::placeholder {
    color: #9AA5B5 !important;
    -webkit-text-fill-color: #9AA5B5 !important;
    opacity: 1 !important;
}

/* =========================================================================
   28. 双主题系统
   -------------------------------------------------------------------------
   两套色板都按同一套结构定义：1 个主色（8 档）+ 8 档中性（带主色色相）
   + 4 个语义色。切换只换变量与极少数结构性规则，组件本身不动。

   主题 A「素白立体」——中性灰带 210° 冷调，主色 H=205 的海蓝。
     立体感来自三层阴影 + 1px 顶部内高光，不用渐变。
   主题 B「彩色」——中性灰带 245° 紫调，主色 H=245 的靛蓝，
     辅色 H=190 的青（分裂互补骨架），琥珀只在警示处出现。

   用法：<html data-theme="studio"> / <html data-theme="vivid">
   ========================================================================= */

:root,
:root[data-theme="studio"] {
    /* 主色阶 · H=205 */
    --s-brand-50:  #F0F7FC;
    --s-brand-100: #DDEBF7;
    --s-brand-200: #BBD9EE;
    --s-brand:     #1868A8;
    --s-brand-deep:#12507F;
    --s-brand-ink: #0D3D62;

    /* 中性阶 · 带冷蓝调 */
    --s-page:      #F2F4F8;
    --s-page-2:    #E8EDF4;
    --s-card:      #FFFFFF;
    --s-card-2:    #FBFCFE;
    --s-line:      #E2E8F0;
    --s-line-soft: #EDF1F6;
    --s-th:        #F4F8FC;
    --s-th-text:   #44546A;
    --s-row-alt:   #FAFCFE;
    --s-row-hover: #F1F7FD;
    --s-text:      #0C1522;
    --s-text-2:    #475467;
    --s-text-3:    #6E7E93;

    /* 侧栏 */
    --s-side-1:    #0D1726;
    --s-side-2:    #17293D;
    --s-side-text: #A5B2C2;
    --s-side-line: rgba(255, 255, 255, .07);
    --s-side-hover:rgba(255, 255, 255, .06);
    --s-side-on:   rgba(46, 134, 200, .22);
    --s-side-bar:  #5FB0E8;

    /* 立体三件套 */
    --s-elev-1: 0 1px 2px rgba(12, 21, 34, .05);
    --s-elev-2: 0 1px 2px rgba(12, 21, 34, .05), 0 6px 18px -12px rgba(12, 21, 34, .18);
    --s-elev-3: 0 2px 4px rgba(12, 21, 34, .05), 0 14px 34px -14px rgba(12, 21, 34, .26);
    --s-inset:  inset 0 1px 0 #FFFFFF;

    /* 辅助色（主题 A 几乎不用，保留槽位） */
    --s-accent: #B25E0A;
    --s-secondary: #0E7490;
}

:root[data-theme="vivid"] {
    /* 主色阶 · H=245 靛蓝 */
    --s-brand-50:  #EEF0FE;
    --s-brand-100: #DFE2FD;
    --s-brand-200: #C3C8FB;
    --s-brand:     #4F46E5;
    --s-brand-deep:#3730A3;
    --s-brand-ink: #2A2570;

    /* 中性阶 · 带紫调 */
    --s-page:      #F4F2FB;
    --s-page-2:    #E9E5F6;
    --s-card:      #FFFFFF;
    --s-card-2:    #FCFBFF;
    --s-line:      #E4E1F2;
    --s-line-soft: #EFECF9;
    --s-th:        #F3F1FB;
    --s-th-text:   #4B4570;
    --s-row-alt:   #FAF9FE;
    --s-row-hover: #F3F0FE;
    --s-text:      #191631;
    --s-text-2:    #5A5578;
    --s-text-3:    #A5A0C4;

    /* 侧栏：深靛，而不是近黑 */
    --s-side-1:    #1B1849;
    --s-side-2:    #2C2870;
    --s-side-text: #C0BBDE;
    --s-side-line: rgba(255, 255, 255, .09);
    --s-side-hover:rgba(255, 255, 255, .08);
    --s-side-on:   rgba(99, 102, 241, .30);
    --s-side-bar:  #A5B4FC;

    /* 彩色主题的立体感更轻，颜色本身就是主角 */
    --s-elev-1: 0 1px 2px rgba(37, 30, 90, .06);
    --s-elev-2: 0 1px 2px rgba(37, 30, 90, .06), 0 6px 18px -12px rgba(37, 30, 90, .22);
    --s-elev-3: 0 2px 4px rgba(37, 30, 90, .07), 0 14px 34px -14px rgba(37, 30, 90, .30);
    --s-inset:  inset 0 1px 0 #FFFFFF;

    /* 分裂互补的另两脚：青（辅）与琥珀（强调） */
    --s-secondary: #0891B2;
    --s-accent:    #D97706;
}

/* 让旧的 --brand-* 令牌跟随主题，避免两套变量并行 */
:root[data-theme="studio"], :root[data-theme="vivid"] {
    --brand-600: var(--s-brand);
    --brand-700: var(--s-brand-deep);
    --brand-500: var(--s-brand);
    --brand-50:  var(--s-brand-50);
    --brand-100: var(--s-brand-100);
    --brand-200: var(--s-brand-200);
    --bg-body:   var(--s-page);
    --border:    var(--s-line);
    --text-main: var(--s-text-2);
}

/* =========================================================================
   29. 组件层 · 全部改由主题变量驱动
   -------------------------------------------------------------------------
   这一节覆盖前面所有硬编码色值。因为前面用了 !important，这里必须同步
   加 !important 才能取得最终优先级。规则：只动颜色、阴影、边框，
   不改任何尺寸与布局。
   ========================================================================= */

/* —— 页面底：顶部受光，向下略微收暗，制造"有光源"的空间感 —— */
body {
    background-color: var(--s-page) !important;
    background-image: linear-gradient(180deg, rgba(255, 255, 255, .70) 0%, rgba(255, 255, 255, 0) 260px) !important;
    color: var(--s-text-2) !important;
}
:root[data-theme="vivid"] body {
    background-image:
        radial-gradient(900px 420px at 82% -8%, rgba(99, 102, 241, .10), transparent 62%),
        radial-gradient(760px 380px at 4% 104%, rgba(8, 145, 178, .08), transparent 60%),
        linear-gradient(180deg, rgba(255, 255, 255, .62) 0%, rgba(255, 255, 255, 0) 260px) !important;
}

/* —— 侧栏：深面 + 顶部一道柔光，不做彩色光晕 —— */
.sidebar {
    background: linear-gradient(180deg, var(--s-side-2) 0%, var(--s-side-1) 58%) !important;
    border-right: 1px solid rgba(0, 0, 0, .22) !important;
    box-shadow: inset -1px 0 0 rgba(255, 255, 255, .04) !important;
}
.sidebar .logo { border-bottom: 1px solid var(--s-side-line) !important; }
.sidebar .book-bar { border-bottom: 1px solid var(--s-side-line) !important; background: rgba(255, 255, 255, .025) !important; }
.sidebar .logo .logo-text { color: #F2F6FA !important; }
.sidebar .logo-ico svg { stroke: var(--s-side-bar) !important; }
.sidebar #sbName { color: #F2F6FA !important; }
.sidebar .book-bar .flex-between { color: #7A8A9E !important; }
.sidebar #sbPeriod { color: var(--s-side-bar) !important; }
.sidebar #sbStd {
    color: #93A3B6 !important;
    background: rgba(255, 255, 255, .05) !important;
    border-color: var(--s-side-line) !important;
}
.sidebar #sbStatus { color: #7A8A9E !important; }

.menu-group { color: #5F7286 !important; }
.menu-group:hover { color: #93A6BB !important; }
.menu-item { color: var(--s-side-text) !important; }
.menu-item:hover { background: var(--s-side-hover) !important; color: #FFFFFF !important; }
.menu-item.active {
    background: var(--s-side-on) !important;
    color: #FFFFFF !important;
}
.menu-item.active::before { background: var(--s-side-bar) !important; }
#exitArea { border-top: 1px solid var(--s-side-line) !important; }
#exitArea .btn { border-color: rgba(255, 255, 255, .12) !important; color: #7A8A9E !important; }

/* —— 顶栏：白面 + 一条投影，像一块薄板浮在页面上 —— */
.topbar {
    background: var(--s-card) !important;
    border-bottom: 1px solid var(--s-line) !important;
    box-shadow: 0 1px 3px rgba(12, 21, 34, .04), 0 6px 16px -14px rgba(12, 21, 34, .5) !important;
}
#pageTitle { color: var(--s-text) !important; }
.tb-btn {
    background: var(--s-card) !important;
    border-color: var(--s-line) !important;
    color: var(--s-text-2) !important;
    box-shadow: var(--s-elev-1) !important;
}
.tb-btn:hover {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
}
#tbBookBtn {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
}
#tbBookBtn:hover { background: var(--s-brand-100) !important; border-color: var(--s-brand) !important; }
#topSyncBtn { border-color: var(--s-line) !important; color: var(--s-text-2) !important; }
#syncWarningBanner {
    background: #FDF4E8 !important;
    border-bottom-color: #F0DFC9 !important;
    color: #8A4A08 !important;
}
:root[data-theme="vivid"] #syncWarningBanner {
    background: #FEF6E7 !important;
    color: #8A4A08 !important;
}

/* —— 卡片：立体感来自"边框 + 内高光 + 两层投影" —— */
.card, .scard, .step-card, .bsec {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: var(--s-elev-2), var(--s-inset) !important;
}
.scard:hover, .step-card:hover {
    box-shadow: var(--s-elev-3), var(--s-inset) !important;
    border-color: var(--s-brand-200) !important;
}

/* —— 表格 —— */
.table-wrap { border-color: var(--s-line) !important; box-shadow: var(--s-elev-1) !important; }
.tbl th, .vc-tbl thead th, #pageEl thead th {
    background: var(--s-th) !important;
    color: var(--s-th-text) !important;
    border-bottom-color: var(--s-line) !important;
}
.tbl td { color: var(--s-text-2) !important; border-bottom-color: var(--s-line-soft) !important; }
.tbl tbody tr:nth-child(even) { background: var(--s-row-alt) !important; }
.tbl tbody tr:hover, .tbl tbody tr:nth-child(even):hover { background: var(--s-row-hover) !important; }

/* —— 按钮 —— */
.btn-p, .b3dg.wide, .b3d-blue {
    background-color: var(--s-brand) !important;
    border-color: var(--s-brand) !important;
    color: #FFFFFF !important;
    box-shadow: 0 1px 2px rgba(12, 21, 34, .12), inset 0 1px 0 rgba(255, 255, 255, .16) !important;
}
.btn-p:hover:not(:disabled), .b3dg.wide:hover:not(:disabled), .b3d-blue:hover:not(:disabled) {
    background-color: var(--s-brand-deep) !important;
    border-color: var(--s-brand-deep) !important;
}
.btn-s, .btn-i, .btn-w, .btn-n, .btn-d, .btn-text {
    border-color: var(--s-line) !important;
    color: var(--s-text-2) !important;
}
.btn-n, .btn-s, .btn-i {
    background: var(--s-card) !important;
    box-shadow: var(--s-elev-1) !important;
}
.btn-n:hover:not(:disabled), .btn-s:hover:not(:disabled), .btn-i:hover:not(:disabled) {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
}
.btn-d { color: #B02B22 !important; }
.btn-d:hover:not(:disabled) { background: #FDF0EF !important; border-color: #EFC4BF !important; }
.btn:focus-visible { box-shadow: 0 0 0 3px color-mix(in srgb, var(--s-brand) 22%, transparent) !important; }

/* —— 表单 —— */
.inp, .sel {
    border-color: var(--s-line) !important;
    background: var(--s-card) !important;
    color: var(--s-text) !important;
}
.inp:hover, .sel:hover { border-color: var(--s-text-3) !important; }
.inp:focus, .sel:focus {
    border-color: var(--s-brand) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--s-brand) 16%, transparent) !important;
}
label { color: var(--s-text-2) !important; }

/* —— 分页 —— */
.pg-bar { background: var(--s-card-2) !important; border-top-color: var(--s-line) !important; }
.pg-info { color: var(--s-text-3) !important; }
.pg-info b { color: var(--s-text) !important; }
.tbl tbody tr.pg-row .pg-num,
.tbl tbody tr.pg-row .pg-nav { color: var(--s-text-2) !important; }
.tbl tbody tr.pg-row .pg-num:hover { background-color: var(--s-brand-50) !important; color: var(--s-brand-deep) !important; }
.tbl tbody tr.pg-row .pg-num.active {
    background-color: var(--s-brand) !important;
    border-color: var(--s-brand) !important;
}
.pg-inp { border-color: var(--s-line) !important; color: var(--s-text) !important; }
.pg-inp:focus { border-color: var(--s-brand) !important; }

/* —— 弹窗 —— */
.dlg, .sys-dlg {
    background: var(--s-card) !important;
    box-shadow: 0 0 0 1px var(--s-line), 0 28px 64px -20px rgba(12, 21, 34, .38) !important;
}
.dlg-head { border-bottom-color: var(--s-line) !important; }
.dlg-title, .sys-dlg-title { color: var(--s-text) !important; }
.dlg-foot { background: var(--s-card-2) !important; border-top-color: var(--s-line) !important; }
.sys-dlg-msg { color: var(--s-text-2) !important; }
.sys-dlg-btns { border-top-color: var(--s-line-soft) !important; }
.sys-dlg-btns .dlg-primary, .dlg-foot .dlg-primary {
    background-color: var(--s-brand) !important;
    border-color: var(--s-brand) !important;
}
.sys-dlg-btns .dlg-secondary, .dlg-foot .dlg-secondary {
    background-color: var(--s-card) !important;
    border-color: var(--s-line) !important;
    color: var(--s-text-2) !important;
}

/* —— 徽标 —— */
.badge.blue { background: var(--s-brand-50) !important; color: var(--s-brand-deep) !important; border-color: var(--s-brand-200) !important; }
.badge.gray { background: var(--s-page) !important; color: var(--s-text-2) !important; border-color: var(--s-line) !important; }

/* —— 凭证录入 —— */
.v-inp:focus { box-shadow: inset 0 0 0 2px var(--s-brand) !important; }
.v-input-cell .v-inp:hover:not(:focus):not(:disabled) { background: var(--s-brand-50) !important; }
#pageEl button[title="在此行下方插入新行"],
#pageEl button[title="智能添加下级 / 修改选中科目"] {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
}
#pageEl button[title="在此行下方插入新行"]:hover:not(:disabled),
#pageEl button[title="智能添加下级 / 修改选中科目"]:hover:not(:disabled) {
    background: var(--s-brand) !important;
    border-color: var(--s-brand) !important;
    color: #FFFFFF !important;
}
.vch-total-row { background: var(--s-th) !important; }
.vch-total-row > td { border-top-color: var(--s-line) !important; }
.vch-total-row > td:nth-child(2) { color: var(--s-brand-deep) !important; border-left-color: var(--s-line-soft) !important; }
.vch-total-row > td:nth-child(3) { color: #0A6E4E !important; border-left-color: var(--s-line-soft) !important; }

/* —— 结账 / 备份页 —— */
.flow-strip { background: var(--s-th) !important; border-color: var(--s-line) !important; color: var(--s-text-2) !important; }
.flow-node { background: var(--s-card) !important; border-color: var(--s-line) !important; color: var(--s-text-2) !important; }
.flow-num { background: var(--s-line) !important; color: var(--s-text-2) !important; }
.step-badge { background: var(--s-brand-50) !important; color: var(--s-brand-deep) !important; }
.step-chip { background: var(--s-page) !important; color: var(--s-text-2) !important; border-color: var(--s-line) !important; }
.b3dg { border-color: var(--s-line) !important; color: var(--s-text-2) !important; background: var(--s-card) !important; }
.b3dg:hover:not(:disabled) { background: var(--s-brand-50) !important; border-color: var(--s-brand-200) !important; }
.secnum { background: var(--s-page) !important; color: var(--s-text-2) !important; }
.bsub { background: var(--s-page) !important; border-color: var(--s-line-soft) !important; }
.bhead .bt { color: var(--s-text) !important; }
.bhead .bs { color: var(--s-text-3) !important; }

/* —— 右下角反馈卡 —— */
#floatingAd { background: var(--s-card) !important; border-color: var(--s-line) !important; }
#floatingAd > a > div:first-child { color: var(--s-brand-deep) !important; }
#floatingAd > a > div:last-child { color: var(--s-text-3) !important; }

/* —— 滚动条跟随主题 —— */
::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--s-text-3) 55%, transparent) !important; }
::-webkit-scrollbar-thumb:hover { background: var(--s-text-3) !important; }

/* =========================================================================
   30. 封面（bootPage）与工作台
   -------------------------------------------------------------------------
   这两个界面原本各有自己的一套深蓝语言，与改造后的内页风格割裂。
   这一节让它们也走主题变量，成为同一套视觉的入口。
   ========================================================================= */

/* —— 封面壳体 —— */
.boot-luxe {
    background:
        radial-gradient(900px 520px at 50% -10%, rgba(255, 255, 255, .10), transparent 62%),
        linear-gradient(165deg, #0A1524 0%, #0D1726 46%, #0A1220 100%) !important;
}
:root[data-theme="vivid"] .boot-luxe {
    background:
        radial-gradient(820px 480px at 22% -6%, rgba(99, 102, 241, .34), transparent 60%),
        radial-gradient(680px 420px at 92% 106%, rgba(8, 145, 178, .22), transparent 62%),
        linear-gradient(165deg, #150F3A 0%, #1B1849 48%, #120E33 100%) !important;
}
.boot-shell {
    background: var(--s-card) !important;
    border-radius: 16px !important;
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, .07),
        0 40px 90px -28px rgba(2, 8, 20, .72),
        inset 0 1px 0 #FFFFFF !important;
}
.boot-logo {
    background: linear-gradient(150deg, var(--s-brand) 0%, var(--s-brand-deep) 100%) !important;
    border-radius: 12px !important;
    font-size: 0 !important;
    box-shadow: 0 8px 20px -8px color-mix(in srgb, var(--s-brand) 70%, transparent), inset 0 1px 0 rgba(255, 255, 255, .26) !important;
    position: relative;
}
.boot-logo::after {
    content: "";
    position: absolute;
    inset: 0;
    background-repeat: no-repeat;
    background-position: center;
    background-size: 24px 24px;
    /* 账本图标，与侧栏 logo 同一套线条语言 */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.6 3.4h10.2L19.4 8v12.6a1.4 1.4 0 0 1-1.4 1.4H4.6a1.4 1.4 0 0 1-1.4-1.4V4.8a1.4 1.4 0 0 1 1.4-1.4z'/%3E%3Cpath d='M14.4 3.4V8h4.6'/%3E%3Cpath d='M7.6 12.6h6.4M7.6 16.4h4.2'/%3E%3C/svg%3E");
}
.boot-title { color: var(--s-text) !important; font-weight: 600 !important; letter-spacing: -0.2px !important; }
.boot-subtitle { color: var(--s-text-3) !important; letter-spacing: 1.6px !important; }
.boot-quote { color: var(--s-text-3) !important; }
.boot-panel { border-radius: 10px; }
.boot-panel-title { font-size: 15px !important; font-weight: 600 !important; letter-spacing: -0.1px !important; }
.boot-grid { gap: 0 !important; }
.boot-foot { color: var(--s-text-3) !important; }
.boot-close { color: var(--s-text-3) !important; }
.boot-close:hover { background: var(--s-page) !important; color: var(--s-text) !important; }

/* —— 工作台快捷区 —— */
#ws-quick-action-section {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: var(--s-elev-2), var(--s-inset) !important;
}
.ws-qa-title { color: var(--s-text) !important; }
.ws-qa-title::before { background: linear-gradient(180deg, var(--s-brand), var(--s-brand-deep)) !important; }
.ws-qa-line { background: linear-gradient(90deg, var(--s-brand-100), transparent) !important; }
.ws-quick-card {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: var(--s-elev-1) !important;
}
.ws-quick-card:hover {
    border-color: var(--s-brand-200) !important;
    box-shadow: var(--s-elev-3) !important;
}

/* =========================================================================
   31. 右上角主题切换器
   ========================================================================= */
.theme-switch {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 2px;
    margin-left: 10px;
    background: var(--s-page);
    border: 1px solid var(--s-line);
    border-radius: 7px;
    flex-shrink: 0;
}
.theme-switch button {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: none;
    background: transparent;
    color: var(--s-text-2);
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 500;
    letter-spacing: 0.1px;
    padding: 4px 9px;
    border-radius: 5px;
    cursor: pointer;
    white-space: nowrap;
    transition: background .14s ease, color .14s ease, box-shadow .14s ease;
}
.theme-switch button:hover { color: var(--s-text); }
.theme-switch button.on {
    background: var(--s-card);
    color: var(--s-brand-deep);
    box-shadow: 0 1px 2px rgba(12, 21, 34, .12), inset 0 0 0 1px var(--s-line-soft);
}
.theme-switch .sw-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex: 0 0 8px;
    box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .08);
}
.theme-switch [data-theme-set="studio"] .sw-dot { background: linear-gradient(135deg, #FFFFFF 40%, #1868A8 100%); }
.theme-switch [data-theme-set="vivid"] .sw-dot { background: linear-gradient(135deg, #1F6BC4 45%, #0891B2 100%); }

/* =========================================================================
   33. 封面头部：从"宝蓝渐变横幅"改为主题深色条
   -------------------------------------------------------------------------
   原 .boot-head 是一条 135° 的三段蓝渐变，右上角还有一团 340px 的模糊光晕，
   底部压一条彩色高光线——这三样加起来是封面里最"旧"的地方。
   改为与侧栏同一族的深色面，只留一条 1px 分隔线。
   ========================================================================= */
.boot-head {
    background: linear-gradient(135deg, var(--s-side-2) 0%, var(--s-side-1) 100%) !important;
    padding: 24px 32px !important;
}
.boot-head::before { display: none !important; }              /* 去掉模糊光晕 */
.boot-head::after {
    height: 1px !important;
    background: rgba(255, 255, 255, .12) !important;
}
:root[data-theme="vivid"] .boot-head {
    background: linear-gradient(135deg, #3B339C 0%, #241F5E 100%) !important;
}
:root[data-theme="vivid"] .boot-head::after {
    background: linear-gradient(90deg, rgba(176,168,255,.5), rgba(139,132,248,.1)) !important;
}

.boot-title {
    color: #F4F8FC !important;
    font-size: 18px !important;
    font-weight: 600 !important;
    letter-spacing: 1px !important;
}
.boot-subtitle {
    color: var(--s-side-text) !important;
    font-size: 10px !important;
    letter-spacing: 2.6px !important;
    font-weight: 500 !important;
    opacity: .8;
}
.boot-quote {
    color: var(--s-side-text) !important;
    font-size: 11.5px !important;
    letter-spacing: 1.2px !important;
    opacity: .75;
    line-height: 1.9 !important;
}
.boot-foot {
    background: var(--s-card-2) !important;
    border-top: 1px solid var(--s-line) !important;
    color: var(--s-text-3) !important;
    letter-spacing: 2px !important;
    font-size: 11.5px !important;
}
.boot-logo {
    width: 42px !important;
    height: 42px !important;
    border-radius: 10px !important;
}
.boot-logo::after { background-size: 21px 21px; }

/* 封面左右两栏之间那条分隔线 */
.boot-panel + .boot-panel { border-left: 1px solid var(--s-line) !important; }

/* 封面里的小标题 */
.boot-panel-title {
    color: var(--s-text) !important;
    font-size: 14.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
}

/* 已有账套的卡片 */
.bitem {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    border-radius: 8px !important;
    transition: border-color .14s ease, box-shadow .14s ease !important;
}
.bitem:hover {
    border-color: var(--s-brand-200) !important;
    box-shadow: var(--s-elev-2) !important;
}

/* =========================================================================
   34. 工作台：欢迎横幅与卡片
   -------------------------------------------------------------------------
   .ws-hero 与 .boot-head 是同一个模子：三段蓝渐变 + 340px 模糊光晕
   + 底部彩色高光线。同样收掉，改为主题深色面。
   快捷卡片顶部的彩色条：素白主题统一为品牌色（降透明度），
   彩色主题保留彩色——那是它该有的样子。
   ========================================================================= */
.ws-hero {
    background: linear-gradient(120deg, var(--s-side-2) 0%, var(--s-side-1) 100%) !important;
    box-shadow: var(--s-elev-3) !important;
}
.ws-hero::before { display: none !important; }
.ws-hero::after {
    height: 1px !important;
    background: rgba(255, 255, 255, .14) !important;
}
:root[data-theme="vivid"] .ws-hero {
    background: linear-gradient(120deg, #3B339C 0%, #241F5E 100%) !important;
}
:root[data-theme="vivid"] .ws-hero::after {
    background: linear-gradient(90deg, rgba(176, 168, 255, .55), rgba(139, 132, 248, .08)) !important;
}
.ws-hero-title { font-weight: 600 !important; letter-spacing: -0.2px !important; }

/* 素白主题：快捷卡片的彩色顶条收敛为品牌色 */
:root[data-theme="studio"] .ws-quick-card .ws-qa-accent {
    background: var(--s-brand) !important;
    background-image: none !important;
    opacity: .30;
}
:root[data-theme="studio"] .ws-quick-card:hover .ws-qa-accent { opacity: .55; }
:root[data-theme="studio"] .ws-quick-card {
    background: var(--s-card) !important;
    box-shadow: var(--s-elev-1), var(--s-inset) !important;
}
:root[data-theme="studio"] .ws-quick-card:hover {
    box-shadow: var(--s-elev-3), var(--s-inset) !important;
    border-color: var(--s-brand-200) !important;
}
:root[data-theme="studio"] .ws-quick-card .ws-qa-icon-wrap {
    background: var(--s-brand-50) !important;
    background-image: none !important;
    color: var(--s-brand-deep) !important;
}
:root[data-theme="studio"] .ws-quick-card .ws-qa-icon-wrap svg,
:root[data-theme="studio"] .ws-quick-card .ws-qa-icon-wrap i {
    color: var(--s-brand-deep) !important;
}

/* 彩色主题：顶条与图标保留彩色，只把卡片本体纳入体系 */
:root[data-theme="vivid"] .ws-quick-card {
    background: var(--s-card) !important;
    border-color: var(--s-line) !important;
    box-shadow: var(--s-elev-1), var(--s-inset) !important;
}
:root[data-theme="vivid"] .ws-quick-card:hover {
    border-color: var(--s-brand-200) !important;
    box-shadow: var(--s-elev-3), var(--s-inset) !important;
}


/* =========================================================================
   35. 工作台 · 夜间层
   -------------------------------------------------------------------------
   .dash-night 是整个工作台的容器（margin:-24px 撑满页面），本身带四层渐变；
   .ws-welcome-xl 是那块深蓝横幅，同样叠了三个径向光晕 + 一段线性渐变。
   这两个是工作台上最后两块"旧皮肤"。
   ========================================================================= */
.dash-night {
    background: transparent !important;
}
:root[data-theme="vivid"] .dash-night {
    background:
        radial-gradient(900px 420px at 88% -10%, rgba(99, 102, 241, .07), transparent 62%),
        transparent !important;
}

.ws-welcome-xl {
    background: linear-gradient(150deg, var(--s-side-2) 0%, var(--s-side-1) 100%) !important;
    border: 1px solid rgba(255, 255, 255, .07) !important;
    box-shadow: var(--s-elev-3), inset 0 1px 0 rgba(255, 255, 255, .08) !important;
    border-radius: 12px !important;
}
.ws-welcome-xl::before { display: none !important; }
:root[data-theme="vivid"] .ws-welcome-xl {
    background: linear-gradient(150deg, #3B339C 0%, #241F5E 100%) !important;
    border-color: rgba(176, 168, 255, .18) !important;
}

.wsxl-title {
    font-weight: 600 !important;
    letter-spacing: -0.5px !important;
    color: #FFFFFF !important;
}
.wsxl-sub {
    color: rgba(255, 255, 255, .72) !important;
    font-size: 13px !important;
    letter-spacing: 0.1px !important;
}
.wsxl-sub b {
    color: #FFFFFF !important;
    text-shadow: none !important;
    font-weight: 600 !important;
}
.wsxl-period {
    color: rgba(255, 255, 255, .82) !important;
    background: rgba(255, 255, 255, .10) !important;
    border: 1px solid rgba(255, 255, 255, .14) !important;
    border-radius: 999px !important;
    box-shadow: none !important;
    font-variant-numeric: tabular-nums;
}
.wsxl-status { color: rgba(255, 255, 255, .62) !important; }
.landing-tag {
    background: rgba(255, 255, 255, .10) !important;
    border: 1px solid rgba(255, 255, 255, .14) !important;
    color: rgba(255, 255, 255, .86) !important;
    border-radius: 5px !important;
    box-shadow: none !important;
}
.landing-stars { display: none !important; }   /* 星点装饰去掉，静态更稳 */

/* =========================================================================
   36. 浮层全面纳入主题
   -------------------------------------------------------------------------
   弹窗只是浮层的一种。这一节把剩下所有"离开文档流"的界面都收进来：
   科目下拉、快捷键菜单、报表配置菜单、仿原生右键菜单、凭证查看弹窗、
   备份引导、快捷键气泡、以及 toast。
   这些对象的特点是样式多写在内联或动态注入的 <style> 里，必须 !important。
   ========================================================================= */

/* —— 科目 / 辅助核算下拉 —— */
.accdrop {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: 0 16px 40px -16px rgba(12, 21, 34, .34), 0 0 0 1px rgba(12, 21, 34, .02) !important;
    border-radius: 8px !important;
}
.accdrop > div {
    color: var(--s-text-2) !important;
    transition: background .1s ease, color .1s ease;
}
.accdrop > div:hover {
    background: var(--s-brand-50) !important;
    color: var(--s-brand-deep) !important;
}
.accdrop .text-xs, .accdrop .color-m { color: var(--s-text-3) !important; }

/* —— 凭证页「快捷键」下拉 —— */
#vMoreMenu {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: 0 16px 40px -16px rgba(12, 21, 34, .34) !important;
    border-radius: 9px !important;
    padding: 5px !important;
}
#vMoreMenu .v-menu-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 8px 11px;
    border: none;
    background: transparent;
    color: var(--s-text-2) !important;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 500;
    border-radius: 6px;
    cursor: pointer;
    transition: background .12s ease, color .12s ease;
}
#vMoreMenu .v-menu-item:hover {
    background: var(--s-brand-50) !important;
    color: var(--s-brand-deep) !important;
}
#vMoreMenu .v-menu-item:disabled { color: var(--s-text-3) !important; cursor: not-allowed; }

/* —— 报表页「配置」下拉 —— */
#rptCfgMenu {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: 0 16px 40px -16px rgba(12, 21, 34, .34) !important;
    border-radius: 9px !important;
    padding: 5px !important;
}
#rptCfgMenu .rptcfg-item {
    display: block;
    width: 100%;
    text-align: left;
    padding: 8px 11px;
    border: none;
    background: transparent;
    border-radius: 6px;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--s-text-2) !important;
    cursor: pointer;
}
#rptCfgMenu .rptcfg-item:hover {
    background: var(--s-brand-50) !important;
    color: var(--s-brand-deep) !important;
}
#rptCfgMenu .rptcfg-item.danger { color: #B02B22 !important; }
#rptCfgMenu .rptcfg-item.danger:hover { background: #FDF0EF !important; color: #8F1F18 !important; }

/* —— 仿原生右键菜单（core_boot.js 注入，白底灰边） —— */
#mimic-context-menu {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    border-radius: 8px !important;
    box-shadow: 0 12px 36px -12px rgba(12, 21, 34, .32) !important;
    padding: 5px 0 !important;
    color: var(--s-text) !important;
    font-family: "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif !important;
    font-size: 13px !important;
}
#mimic-context-menu .mimic-item {
    padding: 7px 14px !important;
    color: var(--s-text-2) !important;
}
#mimic-context-menu .mimic-item:hover {
    background: var(--s-brand-50) !important;
    color: var(--s-brand-deep) !important;
}
#mimic-context-menu .mimic-shortcut { color: var(--s-text-3) !important; font-size: 11.5px !important; }
#mimic-context-menu .mimic-divider { background: var(--s-line-soft) !important; margin: 4px 0 !important; }

/* —— 凭证查看弹窗 —— */
.vdlg { background: var(--s-card) !important; }
.vdlg-head { background: var(--s-card) !important; border-bottom: 1px solid var(--s-line) !important; }
.vdlg-foot { background: var(--s-card-2) !important; border-top: 1px solid var(--s-line) !important; }
.vc-sign { border-top-color: var(--s-line) !important; }
.vc-sign-k { color: var(--s-text-3) !important; }
.vc-sign-v { color: var(--s-text) !important; border-bottom-color: var(--s-line) !important; }
.vc-seal.ok { color: #0B7A57 !important; }
.vc-seal.wait { color: #A65A0A !important; }
.vc-seal.void { color: #B02B22 !important; }
.vc-tag {
    background: var(--s-page) !important;
    border-color: var(--s-line) !important;
    color: var(--s-text-2) !important;
}

/* —— 备份引导弹窗 —— */
#forceSyncOverlay .dlg > div:first-child {
    background: var(--s-page) !important;
    border-bottom: 1px solid var(--s-line) !important;
}
#forceSyncOverlay .dlg > div:nth-child(2) p { color: var(--s-text-2) !important; }

/* —— 快捷键帮助气泡 —— */
#vKbdHelpPop {
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    box-shadow: 0 14px 36px -14px rgba(12, 21, 34, .3) !important;
    color: var(--s-text-2) !important;
    border-radius: 8px !important;
}
#vKbdHelpPop code {
    background: var(--s-page) !important;
    border-color: var(--s-line) !important;
    color: var(--s-text) !important;
}

/* —— Toast：白卡 + 语义色圆点，取代原来的彩色渐变胶囊 —— */
.app-toast .at-box {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 16px 9px 12px;
    background: var(--s-card);
    border: 1px solid var(--s-line);
    border-radius: 9px;
    box-shadow: 0 12px 32px -12px rgba(12, 21, 34, .30), inset 0 1px 0 #FFFFFF;
    font-size: 13px;
    font-weight: 500;
    color: var(--s-text);
    letter-spacing: 0.1px;
    white-space: nowrap;
}
.app-toast .at-ico {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    flex: 0 0 16px;
    position: relative;
    display: inline-block;
}
.app-toast .at-ico::after {
    content: "";
    position: absolute;
    inset: 0;
    background-repeat: no-repeat;
    background-position: center;
    background-size: 10px 10px;
}
.app-toast-success .at-ico { background: #0B7A57; }
.app-toast-success .at-ico::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.8 12.6l4.6 4.6L19.4 7'/%3E%3C/svg%3E");
}
.app-toast-error .at-ico { background: #B02B22; }
.app-toast-error .at-ico::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M6.4 6.4l11.2 11.2M17.6 6.4L6.4 17.6'/%3E%3C/svg%3E");
}
.app-toast-warn .at-ico { background: #A65A0A; }
.app-toast-warn .at-ico::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M12 5.2v8.4'/%3E%3Ccircle cx='12' cy='18' r='1.4' fill='%23fff' stroke='none'/%3E%3C/svg%3E");
}
.app-toast-info .at-ico { background: var(--s-brand); }
.app-toast-info .at-ico::after {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M12 10.6v8'/%3E%3Ccircle cx='12' cy='5.6' r='1.4' fill='%23fff' stroke='none'/%3E%3C/svg%3E");
}

/* —— 原生控件跟随主题 —— */
input[type="checkbox"], input[type="radio"] { accent-color: var(--s-brand) !important; }
input[type="date"]::-webkit-calendar-picker-indicator { opacity: .55; cursor: pointer; }
input[type="date"]::-webkit-calendar-picker-indicator:hover { opacity: .9; }

/* —— 弹窗内的表单与表格：确保不落在主题外 —— */
.dlg .inp, .dlg .sel, .sys-dlg .inp, .sys-dlg .sel {
    background: var(--s-card) !important;
    border-color: var(--s-line) !important;
    color: var(--s-text) !important;
}
.dlg .tbl th, .dlg .tbl td { border-color: var(--s-line-soft) !important; }
.dlg .tbl th { background: var(--s-th) !important; color: var(--s-th-text) !important; }
.dlg .alert {
    background: var(--s-brand-50) !important;
    border-color: var(--s-line) !important;
    border-left-color: var(--s-brand) !important;
    color: var(--s-brand-deep) !important;
}

/* Toast 落在顶栏下方，避免被挡住一半 */
.app-toast { top: 68px !important; }

/* =========================================================================
   37. 弹窗尺寸 · 多行列表修复
   -------------------------------------------------------------------------
   「复制已有凭证」这类弹窗里的凭证列表是 <select size="10">，
   却被通用规则 .sel{height:34px} 压成了一行高——这才是"显示太小"的真因，
   不是弹窗本身小。这里给多行 select 单独放开高度。
   ========================================================================= */
.sel[size], .sel[multiple],
select[size], select[multiple] {
    height: auto !important;
    min-height: 240px;
    padding: 6px !important;
    line-height: 1.9;
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    border-radius: 8px !important;
    font-size: 12.5px !important;
    color: var(--s-text) !important;
    outline: none;
}
select[size]:focus, select[multiple]:focus {
    border-color: var(--s-brand) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--s-brand) 14%, transparent) !important;
}
select[size] option, select[multiple] option {
    padding: 7px 10px;
    border-radius: 5px;
    color: var(--s-text) !important;
    background: var(--s-card) !important;
}
select[size] option:checked, select[multiple] option:checked {
    background: var(--s-brand) !important;
    color: #FFFFFF !important;
}

/* 自有弹窗：给足画幅 */
.dlg.vown-dlg {
    width: min(1080px, 94vw) !important;
    max-width: 94vw !important;
}
.dlg.vown-dlg.dlg-xl {
    width: min(1080px, 94vw) !important;
}
.vown-dlg-body {
    padding: 18px 22px !important;
    min-height: 260px;
}
/* 内容区滚动条不压内容 */
.vown-dlg-body::-webkit-scrollbar { width: 9px; }

/* =========================================================================
   38. 立体按钮
   -------------------------------------------------------------------------
   立体感的三条来源，缺一不可：
     ① 顶部 1px 内高光（受光面）
     ② 底部 1px 内暗边 + 一条实色底边（侧壁厚度）
     ③ 贴地投影（离地高度）
   按下时整体下沉 1~2px、投影收掉——这是"实体按键"的物理直觉。
   ========================================================================= */
.btn {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .95),
        inset 0 -1px 0 rgba(12, 21, 34, .05),
        0 1px 2px rgba(12, 21, 34, .07) !important;
}
.btn:active:not(:disabled) {
    transform: translateY(1px) !important;
    box-shadow:
        inset 0 2px 4px rgba(12, 21, 34, .12),
        inset 0 1px 0 rgba(255, 255, 255, .3) !important;
}

/* 主按钮：实心面 + 2px 侧壁 */
.btn-p, .b3dg.wide, .b3d-blue {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .26),
        inset 0 -1px 0 rgba(0, 0, 0, .16),
        0 1px 2px rgba(12, 21, 34, .16),
        0 2px 0 var(--s-brand-deep) !important;
}
.btn-p:hover:not(:disabled), .b3dg.wide:hover:not(:disabled), .b3d-blue:hover:not(:disabled) {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .30),
        inset 0 -1px 0 rgba(0, 0, 0, .18),
        0 2px 4px rgba(12, 21, 34, .18),
        0 2px 0 var(--s-brand-deep) !important;
}
.btn-p:active:not(:disabled), .b3dg.wide:active:not(:disabled), .b3d-blue:active:not(:disabled) {
    transform: translateY(2px) !important;
    box-shadow:
        inset 0 2px 5px rgba(0, 0, 0, .28),
        0 0 0 var(--s-brand-deep) !important;
}

/* 次按钮：白面 + 1px 侧壁 */
.btn-n, .btn-s, .btn-i, .tb-btn, .b3dg {
    box-shadow:
        inset 0 1px 0 #FFFFFF,
        inset 0 -1px 0 rgba(12, 21, 34, .04),
        0 1px 2px rgba(12, 21, 34, .06),
        0 1px 0 var(--s-line) !important;
}
.btn-n:hover:not(:disabled), .btn-s:hover:not(:disabled), .btn-i:hover:not(:disabled) {
    box-shadow:
        inset 0 1px 0 #FFFFFF,
        inset 0 -1px 0 rgba(12, 21, 34, .05),
        0 2px 5px rgba(12, 21, 34, .10),
        0 1px 0 var(--s-line) !important;
}
.btn-n:active:not(:disabled), .btn-s:active:not(:disabled), .btn-i:active:not(:disabled), .tb-btn:active {
    transform: translateY(1px) !important;
    box-shadow: inset 0 2px 4px rgba(12, 21, 34, .10) !important;
}

/* 危险按钮 */
.btn-d {
    box-shadow:
        inset 0 1px 0 #FFFFFF,
        inset 0 -1px 0 rgba(176, 43, 34, .05),
        0 1px 2px rgba(12, 21, 34, .06),
        0 1px 0 #EFC4BF !important;
}
.btn-d:active:not(:disabled) {
    transform: translateY(1px) !important;
    box-shadow: inset 0 2px 4px rgba(176, 43, 34, .16) !important;
}

/* 弹窗里的主操作按钮同样有侧壁 */
.sys-dlg-btns .dlg-primary, .dlg-foot .dlg-primary {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .26),
        inset 0 -1px 0 rgba(0, 0, 0, .16),
        0 1px 2px rgba(12, 21, 34, .16),
        0 2px 0 var(--s-brand-deep) !important;
}
.sys-dlg-btns .dlg-primary.is-danger, .dlg-foot .dlg-primary.is-danger {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .24),
        inset 0 -1px 0 rgba(0, 0, 0, .18),
        0 1px 2px rgba(12, 21, 34, .16),
        0 2px 0 #8F1F18 !important;
}

/* 分页页码：轻微立体，但不抢 */
.pg-num.active {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .24),
        0 1px 2px rgba(12, 21, 34, .16),
        0 2px 0 var(--s-brand-deep) !important;
}

/* 增删行按钮：小方块也有厚度 */
#pageEl button[title="删除此行"],
#pageEl button[title="在此行下方插入新行"] {
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .8),
        inset 0 -1px 0 rgba(12, 21, 34, .05),
        0 1px 2px rgba(12, 21, 34, .07) !important;
}
#pageEl button[title="删除此行"]:active:not(:disabled),
#pageEl button[title="在此行下方插入新行"]:active:not(:disabled) {
    transform: translateY(1px) !important;
    box-shadow: inset 0 2px 4px rgba(12, 21, 34, .14) !important;
}

/* =========================================================================
   40. 文字精修
   ========================================================================= */
body {
    letter-spacing: 0.14px;
    -webkit-font-smoothing: subpixel-antialiased;
    text-rendering: optimizeLegibility;
}
/* 标题收紧，正文放松 —— 中文排版的基本节奏 */
h1, h2, h3, .dlg-title, #pageTitle { letter-spacing: -0.12px !important; }
/* 小字统一提到 12px 以上，低于这个数中文必糊 */
.text-xs { font-size: 12px !important; }
/* 表格正文略微加深，白底上更"实" */
.tbl td { color: #2E3A4D !important; }
:root[data-theme="vivid"] .tbl td { color: #2A2450 !important; }
/* 金额数字：字重与字距单独校准 */
.tbl td .num, .vc-amt-in, .vch-total-amt {
    font-variant-numeric: tabular-nums;
    letter-spacing: 0 !important;
    font-weight: 500;
}

/* =========================================================================
   41. 工作台图标
   -------------------------------------------------------------------------
   快捷卡片的图标原先是 emoji，被 emoji 清扫一并抹掉，只剩空色块。
   现在换成 22px 线性图标（1.7 描边，与侧栏菜单同一套），
   颜色统一品牌色、底色统一淡品牌色——顶条保留原色相做区分。
   一个区域里"图标同色 + 色带异色"，才既有秩序又不呆板。
   ========================================================================= */
.ws-qa-icon-wrap {
    width: 44px !important;
    height: 44px !important;
    border-radius: 11px !important;
    background: var(--s-brand-50) !important;
    background-image: none !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin-bottom: 11px !important;
    border: 1px solid var(--s-brand-100) !important;
    transition: background .18s ease, border-color .18s ease, transform .18s ease !important;
}
.ws-qa-icon,
.ws-qa-icon.qa-svg {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--s-brand-deep);
    line-height: 0;
}
.ws-qa-icon svg {
    width: 22px !important;
    height: 22px !important;
    stroke: currentColor !important;
    stroke-width: 1.7 !important;
    fill: none !important;
    stroke-linecap: round;
    stroke-linejoin: round;
}
/* 悬停时图标块轻微加深，卡片被"点亮" */
.ws-quick-card:hover .ws-qa-icon-wrap {
    background: var(--s-brand-100) !important;
    border-color: var(--s-brand-200) !important;
    transform: translateY(-1px);
}
:root[data-theme="vivid"] .ws-quick-card:hover .ws-qa-icon-wrap {
    background: var(--s-brand-100) !important;
}

/* 底部指标卡图标 */
.stat-svg {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--s-brand-deep);
    line-height: 0;
}
:root[data-theme="vivid"] .stat-svg { color: var(--s-brand); }
.stat-svg svg {
    width: 18px !important;
    height: 18px !important;
    stroke: currentColor !important;
    stroke-width: 1.7 !important;
    fill: none !important;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* 卡片文字层级：标签 13px/600，说明 11.5px/400 */
.ws-qa-label {
    font-size: 12.5px !important;
    font-weight: 600 !important;
    color: var(--s-text) !important;
    letter-spacing: 0 !important;
}
.ws-qa-desc {
    font-size: 11px !important;
    color: var(--s-text-3) !important;
    margin-top: 2px !important;
    font-weight: 400 !important;
}

/* =========================================================================
   42. 指标卡图标
   ========================================================================= */
.ws-stat-icon {
    font-size: 0 !important;            /* 隐去可能残留的 emoji 字形 */
    background-image: none !important;
    background-color: var(--s-brand-50) !important;
    border: 1px solid var(--s-brand-100) !important;
    width: 46px !important;
    height: 46px !important;
    border-radius: 12px !important;
    box-shadow: inset 0 1px 0 #FFFFFF, 0 2px 6px -3px rgba(12, 21, 34, .14) !important;
}
.ws-stat-icon svg {
    width: 24px !important;
    height: 24px !important;
    stroke: currentColor !important;
    stroke-width: 1.7 !important;
    fill: none !important;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.ws-stat:hover .ws-stat-icon { transform: translateY(-2px); }
.ws-stat-deco { display: none !important; }

/* 指标卡文字层级 */
.ws-stat-label { font-size: 13px !important; font-weight: 600 !important; color: var(--s-text) !important; }
.ws-stat-en { font-size: 9.5px !important; letter-spacing: 1.4px !important; color: var(--s-text-3) !important; }

/* =========================================================================
   43. 凭证标题与全局文字精细度
   -------------------------------------------------------------------------
   标题上那条淡蓝背景是误伤：一条想统一"指标卡顶边"的规则用了
   [class*="card"] > div[style*="height:3"]，而凭证标题栏的内联是
   min-height:34px —— 子串正好命中，整条标题栏被染成品牌蓝。已删除该规则。
   这里把标题定成纯黑、去掉底边，让四个字自己立住。
   ========================================================================= */
#pageEl h2[style*="letter-spacing:9px"] {
    font-size: 21px !important;
    font-weight: 600 !important;
    letter-spacing: 5px !important;
    color: #000000 !important;
    border-bottom: none !important;
    padding-bottom: 0 !important;
    text-shadow: none !important;
    font-family: "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", sans-serif !important;
    -webkit-font-smoothing: antialiased;
}
/* 标题右侧的"帮助"按钮不要抢视线 */
#pageEl .flex-shrink-0 > div[style*="position:absolute"][style*="right:0"] > .btn {
    color: var(--s-text-3) !important;
    border-color: var(--s-line) !important;
    font-size: 11.5px !important;
}

/* —— 全局文字：几何精度 + 提一档字号 —— */
body {
    text-rendering: geometricPrecision;   /* 小字号下按几何位置排布，不再被取整糊掉 */
    -webkit-font-smoothing: subpixel-antialiased;
}
/* 表格正文 12.5 → 13，行高同步微调 */
.tbl td, .vc-tbl td { font-size: 13px !important; }
.tbl th, .vc-tbl thead th { font-size: 12.5px !important; }

/* 文字色整体加深半档：白底上更"实" */
:root {
    --s-text: #080F1A;
    --s-text-2: #3B4759;
    --s-text-3: #6E7E93;   /* 原 #8C97A8 对白底只有 2.95:1，辅助文字发虚；加深到 4.1:1 */
}
.tbl td { color: #26313F !important; }
:root[data-theme="vivid"] .tbl td { color: #241E48 !important; }
.tbl th { color: #3A4759 !important; }
:root[data-theme="vivid"] .tbl th { color: #3B3369 !important; }

/* 输入框里的文字：不再用纯黑，避免与浅色底形成硬边 */
.v-inp { color: #12202E !important; font-size: 13.5px !important; }
:root[data-theme="vivid"] .v-inp { color: #1B1640 !important; }

/* 页内小标题与说明文字 */
#pageEl .color-m, #pageEl .text-xs.color-m { color: var(--s-text-3) !important; }
#pageEl b, #pageEl strong { font-weight: 600 !important; }

/* =========================================================================
   44. 欢迎页（封面）图标
   -------------------------------------------------------------------------
   封面的配色是深蓝底 + 香槟金标题，内页是白底 + 品牌蓝。
   所以这里的图标不能用品牌蓝——用香槟金，与"做账如流水"那行字同源。
   金色只在这一屏出现，是封面的专属语汇。
   ========================================================================= */
.lf-icon {
    font-size: 0 !important;                 /* 隐去残留的 emoji 字形 */
    background: rgba(227, 201, 143, .10) !important;
    border: 1px solid rgba(227, 201, 143, .24) !important;
    box-shadow:
        0 0 18px rgba(227, 201, 143, .10),
        inset 0 1px 0 rgba(255, 255, 255, .10) !important;
    transition: background .22s ease, border-color .22s ease, box-shadow .22s ease !important;
}
.lf-icon svg {
    width: 20px !important;
    height: 20px !important;
    stroke: #E3C98F !important;
    stroke-width: 1.7 !important;
    fill: none !important;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.lf-card:hover .lf-icon {
    background: rgba(227, 201, 143, .17) !important;
    border-color: rgba(227, 201, 143, .44) !important;
    box-shadow:
        0 0 24px rgba(227, 201, 143, .22),
        inset 0 1px 0 rgba(255, 255, 255, .16) !important;
}

/* 最近使用的账套芯片 */
.recent-book-icon {
    font-size: 0 !important;
    color: #E3C98F !important;
    background: rgba(227, 201, 143, .10) !important;
    border: 1px solid rgba(227, 201, 143, .22) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08) !important;
}
.recent-book-icon svg {
    width: 18px !important;
    height: 18px !important;
    stroke: currentColor !important;
    stroke-width: 1.7 !important;
    fill: none !important;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.recent-book-chip:hover .recent-book-icon {
    background: rgba(227, 201, 143, .17) !important;
    border-color: rgba(227, 201, 143, .40) !important;
}

/* 封面图标：深蓝底上金色要更亮、描边要稍粗，否则发土 */
.lf-icon svg {
    stroke: #F0DAA8 !important;
    stroke-width: 1.85 !important;
}
.lf-icon {
    background: rgba(240, 218, 168, .12) !important;
    border-color: rgba(240, 218, 168, .30) !important;
    box-shadow:
        0 0 20px rgba(240, 218, 168, .14),
        inset 0 1px 0 rgba(255, 255, 255, .12) !important;
}
.recent-book-icon svg { stroke: #F0DAA8 !important; stroke-width: 1.85 !important; }
.recent-book-icon {
    border-color: rgba(240, 218, 168, .30) !important;
    background: rgba(240, 218, 168, .12) !important;
}
.lf-card:hover .lf-icon {
    background: rgba(240, 218, 168, .20) !important;
    border-color: rgba(240, 218, 168, .50) !important;
    box-shadow: 0 0 26px rgba(240, 218, 168, .26), inset 0 1px 0 rgba(255, 255, 255, .18) !important;
}

/* =========================================================================
   48. 素白主题 · 侧栏与工作台横幅换色
   -------------------------------------------------------------------------
   原来是 #0D1726 的近黑，压得住但没气质——"黑"是默认值，不是设计。
   改成深钢蓝（Steel Navy）：
     · 与品牌蓝 #1868A8 同族，只是深了五档，色相不断
     · 顶部加一层极淡的蓝光，模拟"墙面上方有光"
     · 文字对比度 5.1:1，仍过 4.5 正文阈值
   浅色顶栏 + 深钢蓝侧栏 + 浅灰页面，这个三段关系比"白 + 黑"耐看得多。
   ========================================================================= */
:root,
:root[data-theme="studio"] {
    --s-side-1:     #102339;   /* 侧栏底：深海钢蓝 */
    --s-side-2:     #1B3A58;   /* 侧栏顶：受光面 */
    --s-side-text:  #A9BCD2;
    --s-side-line:  rgba(150, 200, 245, .13);
    --s-side-hover: rgba(120, 180, 240, .10);
    --s-side-on:    rgba(90, 160, 220, .24);
    --s-side-bar:   #6FB3E8;
}

/* 侧栏：顶部一道蓝光，向下沉 */
:root[data-theme="studio"] .sidebar,
:root:not([data-theme="vivid"]) .sidebar {
    background:
        radial-gradient(560px 320px at 10% -8%, rgba(110, 179, 232, .20), transparent 62%),
        linear-gradient(168deg, #1B3A58 0%, #152D46 44%, #102339 100%) !important;
    border-right: 1px solid rgba(6, 18, 30, .55) !important;
    box-shadow: inset -1px 0 0 rgba(150, 200, 245, .06) !important;
}

/* 侧栏内文字：跟着壳体提亮，不再发灰 */
:root[data-theme="studio"] .menu-item,
:root:not([data-theme="vivid"]) .menu-item { color: #A9BCD2 !important; }
:root[data-theme="studio"] .menu-item:hover,
:root:not([data-theme="vivid"]) .menu-item:hover {
    background: rgba(120, 180, 240, .12) !important;
    color: #FFFFFF !important;
}
:root[data-theme="studio"] .menu-item.active,
:root:not([data-theme="vivid"]) .menu-item.active {
    background: rgba(90, 160, 220, .26) !important;
    color: #FFFFFF !important;
    box-shadow: inset 0 0 0 1px rgba(150, 200, 245, .14) !important;
}
:root[data-theme="studio"] .menu-item.active::before,
:root:not([data-theme="vivid"]) .menu-item.active::before {
    background: #7CC0F0 !important;
    box-shadow: 0 0 8px rgba(124, 192, 240, .55) !important;
}
:root[data-theme="studio"] .menu-group,
:root:not([data-theme="vivid"]) .menu-group { color: #7691AD !important; }
:root[data-theme="studio"] .menu-group:hover,
:root:not([data-theme="vivid"]) .menu-group:hover { color: #A9C4DE !important; }
:root[data-theme="studio"] .sidebar .logo .logo-text { color: #F4FAFF !important; }
:root[data-theme="studio"] .logo-ico svg { stroke: #7CC0F0 !important; }
:root[data-theme="studio"] .sidebar .book-bar .flex-between { color: #8AA4BE !important; }
:root[data-theme="studio"] #sbName { color: #F4FAFF !important; }
:root[data-theme="studio"] #sbPeriod { color: #7CC0F0 !important; }
:root[data-theme="studio"] #sbStd {
    color: #A2B7CD !important;
    background: rgba(255, 255, 255, .07) !important;
    border-color: rgba(150, 200, 245, .18) !important;
}
:root[data-theme="studio"] #sbStatus { color: #8AA4BE !important; }
:root[data-theme="studio"] #exitArea { border-top: 1px solid rgba(150, 200, 245, .12) !important; }
:root[data-theme="studio"] #exitArea .btn {
    border-color: rgba(255, 255, 255, .14) !important;
    color: #A2B7CD !important;
}

/* 工作台欢迎横幅：同族，但再亮半档，因为它是"主角" */
.ws-welcome-xl {
    background:
        radial-gradient(600px 320px at 88% -24%, rgba(110, 179, 232, .24), transparent 62%),
        linear-gradient(150deg, #1E4162 0%, #16324F 52%, #10263C 100%) !important;
    border: 1px solid rgba(150, 200, 245, .14) !important;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .07) inset,
        0 18px 44px -18px rgba(8, 24, 40, .65) !important;
}
.wsxl-title { color: #FFFFFF !important; }
.wsxl-sub { color: #B2C9DE !important; }
.wsxl-sub b { color: #FFFFFF !important; }
.wsxl-period {
    background: rgba(255, 255, 255, .10) !important;
    border-color: rgba(150, 200, 245, .24) !important;
    color: #DCECFA !important;
}

/* 封面头部同步成同一族，让"封面 → 工作台"不断色 */
.boot-head {
    background: linear-gradient(135deg, #1E4162 0%, #12283F 100%) !important;
}

/* 素白主题：四张指标卡的彩色顶边（黄/蓝/红/绿）在浅色界面里太跳，
   收敛为品牌蓝。顶边靠 --stat-grad 变量驱动，覆盖变量即可一并生效；
   图标颜色是 JS 从同一变量取的，这里同步压平。 */
:root[data-theme="studio"] .ws-stat,
:root:not([data-theme="vivid"]) .ws-stat {
    --stat-grad: linear-gradient(90deg, #2E86C8 0%, #1868A8 100%) !important;
}
:root[data-theme="studio"] .ws-stat-icon,
:root:not([data-theme="vivid"]) .ws-stat-icon {
    color: var(--s-brand-deep) !important;
    background-color: var(--s-brand-50) !important;
    border-color: var(--s-brand-100) !important;
}
/* 指标卡边框也统一，不再跟着 --stat-grad 走彩色 */
:root[data-theme="studio"] .ws-stat,
:root:not([data-theme="vivid"]) .ws-stat {
    border: 1px solid var(--s-line) !important;
    background: var(--s-card) !important;
    box-shadow:
        0 1px 2px rgba(12, 21, 34, .05),
        0 10px 26px -18px rgba(12, 21, 34, .28),
        inset 0 1px 0 #FFFFFF !important;
}
:root[data-theme="studio"] .ws-stat:hover,
:root:not([data-theme="vivid"]) .ws-stat:hover {
    border-color: var(--s-brand-200) !important;
    box-shadow:
        0 2px 6px rgba(12, 21, 34, .07),
        0 18px 40px -18px rgba(12, 21, 34, .34),
        inset 0 1px 0 #FFFFFF !important;
}

/* =========================================================================
   49. 彩色主题 · 深蓝骨架 + 白内容 + 彩色点缀
   -------------------------------------------------------------------------
   上一版把整个背景做成了深色，方向错了。
   "彩色"指的是骨架——顶栏、侧栏、工作台横幅——用封面的那套深蓝渐变，
   内容区仍然是白的。这样读数据不受影响，而整机与封面连成一片。

   骨架：封面的深蓝渐变（#1B57A8 → #123F77）
   内容：白卡 + 深字
   点缀：金色主按钮、彩色图标、彩色卡片顶边
   ========================================================================= */
:root[data-theme="vivid"] {
    /* —— 内容区：白为主 —— */
    --s-page:      #F3F6FB;
    --s-page-2:    #E9EFF7;
    --s-card:      #FFFFFF;
    --s-card-2:    #FBFCFE;
    --s-line:      #E0E8F2;
    --s-line-soft: #EDF2F9;
    --s-th:        #F2F7FC;
    --s-th-text:   #44546A;
    --s-row-alt:   #F9FBFE;
    --s-row-hover: #EEF5FD;

    /* —— 文字：白底深字，对比拉到 14:1 以上 —— */
    --s-text:      #08131F;
    --s-text-2:    #37455A;
    --s-text-3:    #6E7BA0;

    /* —— 主色：封面的蓝 —— */
    --s-brand:      #1F6BC4;
    --s-brand-deep: #17539B;
    --s-brand-ink:  #123F77;
    --s-brand-50:   #EBF3FC;
    --s-brand-100:  #D8E8FA;
    --s-brand-200:  #B4D2F0;

    /* —— 骨架：与封面同一套深蓝 —— */
    --s-side-1:     #123F77;
    --s-side-2:     #1B57A8;
    --s-side-text:  #C0D8F2;
    --s-side-line:  rgba(170, 212, 255, .18);
    --s-side-hover: rgba(255, 255, 255, .10);
    --s-side-on:    rgba(255, 255, 255, .17);
    --s-side-bar:   #8CCBFF;

    /* —— 金：主操作 —— */
    --s-gold:      #D4B47F;
    --s-gold-lite: #EEDAAC;
    --s-gold-deep: #B89355;
    --s-gold-ink:  #221806;

    /* 浅色下阴影回到"淡而有层次" */
    --s-elev-1: 0 1px 2px rgba(12, 32, 58, .05);
    --s-elev-2: 0 1px 2px rgba(12, 32, 58, .05), 0 8px 22px -14px rgba(12, 32, 58, .24);
    --s-elev-3: 0 2px 5px rgba(12, 32, 58, .06), 0 18px 40px -16px rgba(12, 32, 58, .30);
    --s-inset:  inset 0 1px 0 #FFFFFF;
}

/* —— 页面底：浅色，顶部一道极淡蓝光 —— */
:root[data-theme="vivid"] body {
    background-color: var(--s-page) !important;
    background-image:
        linear-gradient(180deg, rgba(214, 232, 250, .55) 0%, rgba(255, 255, 255, 0) 280px) !important;
    color: var(--s-text-2) !important;
}

/* —— 顶栏：封面同款深蓝，与封面无缝相接 —— */
:root[data-theme="vivid"] .topbar {
    background: linear-gradient(100deg, #123F77 0%, #1B57A8 52%, #164C93 100%) !important;
    border-bottom: none !important;
    box-shadow: 0 2px 0 rgba(255, 255, 255, .06) inset, 0 6px 22px -12px rgba(8, 28, 56, .65) !important;
}
:root[data-theme="vivid"] #pageTitle { color: #FFFFFF !important; text-shadow: 0 1px 2px rgba(6, 24, 48, .35) !important; }
:root[data-theme="vivid"] .tb-btn {
    background: rgba(255, 255, 255, .12) !important;
    border-color: rgba(190, 222, 255, .30) !important;
    color: #F0F7FF !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16) !important;
}
:root[data-theme="vivid"] .tb-btn:hover {
    background: rgba(255, 255, 255, .20) !important;
    border-color: rgba(212, 180, 127, .55) !important;
    color: #FFFFFF !important;
}
:root[data-theme="vivid"] #tbBookBtn {
    background: rgba(212, 180, 127, .22) !important;
    border-color: rgba(212, 180, 127, .45) !important;
    color: #F6E7C8 !important;
}
:root[data-theme="vivid"] #topSyncBtn {
    background: rgba(255, 255, 255, .10) !important;
    border-color: rgba(190, 222, 255, .24) !important;
    color: #CFE4FA !important;
}
:root[data-theme="vivid"] #topSyncDivider { background: rgba(190, 222, 255, .28) !important; }

/* 主题切换器在深蓝顶栏上 */
:root[data-theme="vivid"] .theme-switch {
    background: rgba(0, 0, 0, .18);
    border-color: rgba(190, 222, 255, .24);
}
:root[data-theme="vivid"] .theme-switch button { color: #CFE4FA; }
:root[data-theme="vivid"] .theme-switch button:hover { color: #FFFFFF; }
:root[data-theme="vivid"] .theme-switch button.on {
    background: rgba(255, 255, 255, .18);
    color: #FFFFFF;
    box-shadow: inset 0 0 0 1px rgba(190, 222, 255, .30);
}

/* —— 侧栏：与封面同一套深蓝渐变 —— */
:root[data-theme="vivid"] .sidebar {
    background:
        radial-gradient(560px 320px at 10% -8%, rgba(120, 190, 255, .24), transparent 62%),
        linear-gradient(168deg, #1B57A8 0%, #164A8E 46%, #123F77 100%) !important;
    border-right: 1px solid rgba(8, 30, 58, .5) !important;
    box-shadow: inset -1px 0 0 rgba(170, 212, 255, .08) !important;
}
:root[data-theme="vivid"] .menu-item { color: #C0D8F2 !important; }
:root[data-theme="vivid"] .menu-item:hover {
    background: rgba(255, 255, 255, .10) !important;
    color: #FFFFFF !important;
}
:root[data-theme="vivid"] .menu-item.active {
    background: rgba(255, 255, 255, .17) !important;
    color: #FFFFFF !important;
    font-weight: 500 !important;
    box-shadow: inset 0 0 0 1px rgba(190, 222, 255, .18) !important;
}
:root[data-theme="vivid"] .menu-item.active::before {
    background: #8CCBFF !important;
    width: 2.5px !important;
    box-shadow: 0 0 8px rgba(140, 203, 255, .7) !important;
}
:root[data-theme="vivid"] .menu-group { color: #8AAFD4 !important; }
:root[data-theme="vivid"] .menu-group:hover { color: #C0D8F2 !important; }
:root[data-theme="vivid"] .sidebar .logo .logo-text { color: #FFFFFF !important; }
:root[data-theme="vivid"] .logo-ico svg { stroke: #8CCBFF !important; }
:root[data-theme="vivid"] .sidebar .book-bar .flex-between { color: #9BBEDF !important; }
:root[data-theme="vivid"] #sbName { color: #FFFFFF !important; }
:root[data-theme="vivid"] #sbPeriod { color: #8CCBFF !important; }
:root[data-theme="vivid"] #sbStd {
    color: #B4CCE4 !important;
    background: rgba(255, 255, 255, .10) !important;
    border-color: rgba(170, 212, 255, .22) !important;
}
:root[data-theme="vivid"] #sbStatus { color: #9BBEDF !important; }
:root[data-theme="vivid"] #exitArea { border-top: 1px solid rgba(170, 212, 255, .16) !important; }
:root[data-theme="vivid"] #exitArea .btn {
    border-color: rgba(255, 255, 255, .16) !important;
    color: #B4CCE4 !important;
}

/* —— 主按钮：金色，与封面那颗"立即新建账套"同款 —— */
:root[data-theme="vivid"] .btn-p,
:root[data-theme="vivid"] .b3dg.wide,
:root[data-theme="vivid"] .b3d-blue {
    background: linear-gradient(180deg, #DEC28C 0%, #C9A96A 100%) !important;
    border: 1px solid #B89355 !important;
    color: var(--s-gold-ink) !important;
    text-shadow: none !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .42),
        inset 0 -1px 0 rgba(0, 0, 0, .12),
        0 1px 2px rgba(12, 32, 58, .16),
        0 2px 0 #9E8552 !important;
}
:root[data-theme="vivid"] .btn-p:hover:not(:disabled),
:root[data-theme="vivid"] .b3dg.wide:hover:not(:disabled),
:root[data-theme="vivid"] .b3d-blue:hover:not(:disabled) {
    background: linear-gradient(180deg, #E8D3A7 0%, #D4B47F 100%) !important;
    border-color: #C9A96A !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .46),
        inset 0 -1px 0 rgba(0, 0, 0, .14),
        0 2px 4px rgba(12, 32, 58, .18),
        0 2px 0 #9E8552 !important;
}
/* 金色主按钮的焦点环跟按钮同族，不再落到主题蓝上 */
:root[data-theme="vivid"] .btn-p:focus-visible,
:root[data-theme="vivid"] .b3dg.wide:focus-visible,
:root[data-theme="vivid"] .b3d-blue:focus-visible {
    box-shadow: 0 0 0 3px rgba(184, 147, 85, .32) !important;
}

/* —— 弹窗主按钮与页面主按钮同语言：彩色主题下同为金色 ——
   （此前只有页面上的 .btn-p 是金色，弹窗里仍是蓝色主按钮，两处不一致） */
:root[data-theme="vivid"] .sys-dlg-btns .dlg-primary,
:root[data-theme="vivid"] .dlg-foot .dlg-primary {
    background: linear-gradient(180deg, #DEC28C 0%, #C9A96A 100%) !important;
    border: 1px solid #B89355 !important;
    color: var(--s-gold-ink) !important;
    text-shadow: none !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .42),
        inset 0 -1px 0 rgba(0, 0, 0, .12),
        0 1px 2px rgba(12, 32, 58, .16),
        0 2px 0 #9E8552 !important;
}
:root[data-theme="vivid"] .sys-dlg-btns .dlg-primary:hover:not(:disabled),
:root[data-theme="vivid"] .dlg-foot .dlg-primary:hover:not(:disabled) {
    background: linear-gradient(180deg, #E8D3A7 0%, #D4B47F 100%) !important;
    border-color: #C9A96A !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .46),
        inset 0 -1px 0 rgba(0, 0, 0, .14),
        0 2px 4px rgba(12, 32, 58, .18),
        0 2px 0 #9E8552 !important;
}
/* 危险确认保持红色语义，不跟金色走 */
:root[data-theme="vivid"] .sys-dlg-btns .dlg-primary.is-danger,
:root[data-theme="vivid"] .dlg-foot .dlg-primary.is-danger {
    background: var(--bad-600) !important;
    border-color: var(--bad-600) !important;
    color: #FFFFFF !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .24),
        inset 0 -1px 0 rgba(0, 0, 0, .18),
        0 1px 2px rgba(12, 21, 34, .16),
        0 2px 0 #8F1F18 !important;
}
:root[data-theme="vivid"] .sys-dlg-btns .dlg-primary.is-danger:hover:not(:disabled),
:root[data-theme="vivid"] .dlg-foot .dlg-primary.is-danger:hover:not(:disabled) {
    background: var(--bad-700) !important;
    border-color: var(--bad-700) !important;
}

/* —— 工作台横幅：渐变与封面完全同款（封面去掉顶部白纱后的同一条叠层） —— */
:root[data-theme="vivid"] .ws-welcome-xl {
    background:
        radial-gradient(900px 480px at 78% -10%, rgba(125, 211, 252, .30), transparent 60%),
        radial-gradient(700px 420px at 8% 108%, rgba(59, 130, 246, .32), transparent 62%),
        radial-gradient(560px 340px at 50% 52%, rgba(96, 165, 250, .22), transparent 72%),
        linear-gradient(160deg, #10336f 0%, #1c56c4 48%, #0e2f78 100%) !important;
    border: 1px solid rgba(170, 212, 255, .20) !important;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .10) inset,
        0 18px 44px -20px rgba(10, 34, 66, .55) !important;
}
:root[data-theme="vivid"] .wsxl-title { color: #FFFFFF !important; }
:root[data-theme="vivid"] .wsxl-sub { color: #B8D4F0 !important; }
:root[data-theme="vivid"] .wsxl-sub b { color: #FFFFFF !important; }
:root[data-theme="vivid"] .wsxl-period {
    background: rgba(255, 255, 255, .14) !important;
    border-color: rgba(190, 222, 255, .28) !important;
    color: #E4F1FF !important;
}
:root[data-theme="vivid"] .landing-tag {
    background: rgba(255, 255, 255, .12) !important;
    border-color: rgba(190, 222, 255, .22) !important;
    color: #DCEBFA !important;
}

/* —— 封面：保持原有蓝色，不再有紫色变体 —— */
:root[data-theme="vivid"] .boot-luxe {
    background:
        radial-gradient(900px 520px at 50% -10%, rgba(255, 255, 255, .10), transparent 62%),
        linear-gradient(165deg, #0A1524 0%, #0D1726 46%, #0A1220 100%) !important;
}
:root[data-theme="vivid"] .boot-head {
    background: linear-gradient(135deg, #1B57A8 0%, #123F77 100%) !important;
}
:root[data-theme="vivid"] .boot-head::after {
    background: rgba(170, 212, 255, .18) !important;
}

/* —— 彩色点缀：快捷卡片的图标恢复每卡配色 —— */
:root[data-theme="vivid"] .ws-qa-icon-wrap {
    background: var(--qa-tint, var(--s-brand-50)) !important;
    background-image: none !important;
    border-color: var(--qa-line, var(--s-brand-100)) !important;
}
:root[data-theme="vivid"] .ws-qa-icon { color: var(--qa-ink, var(--s-brand-deep)) !important; }
:root[data-theme="vivid"] .ws-quick-card:hover .ws-qa-icon-wrap {
    filter: saturate(1.15) brightness(1.02);
}
/* 指标卡顶边保留各自的色相 */
:root[data-theme="vivid"] .ws-stat-icon { color: var(--stat-ink, var(--s-brand-deep)) !important; }

/* 素白主题的立体层级（原「主题强度校准」里的 studio 部分，重新落位） */
:root[data-theme="studio"] {
    --s-elev-1: 0 1px 2px rgba(12, 21, 34, .06);
    --s-elev-2: 0 1px 2px rgba(12, 21, 34, .06), 0 8px 22px -14px rgba(12, 21, 34, .28);
    --s-elev-3: 0 2px 5px rgba(12, 21, 34, .07), 0 18px 40px -16px rgba(12, 21, 34, .34);
}
:root[data-theme="studio"] .card,
:root[data-theme="studio"] .scard,
:root[data-theme="studio"] .step-card,
:root[data-theme="studio"] .bsec {
    box-shadow:
        0 1px 2px rgba(12, 21, 34, .06),
        0 10px 26px -16px rgba(12, 21, 34, .30),
        inset 0 1px 0 #FFFFFF !important;
}
:root[data-theme="studio"] .topbar {
    box-shadow:
        0 1px 0 rgba(12, 21, 34, .04),
        0 4px 14px -10px rgba(12, 21, 34, .45) !important;
}
:root[data-theme="studio"] .table-wrap {
    box-shadow: 0 1px 2px rgba(12, 21, 34, .05), 0 6px 18px -14px rgba(12, 21, 34, .22) !important;
}
/* 彩色主题的卡片阴影（深蓝骨架 + 白内容，阴影带蓝调） */
:root[data-theme="vivid"] .card,
:root[data-theme="vivid"] .scard,
:root[data-theme="vivid"] .step-card,
:root[data-theme="vivid"] .bsec {
    box-shadow:
        0 1px 2px rgba(12, 32, 58, .06),
        0 10px 26px -16px rgba(12, 32, 58, .28),
        inset 0 1px 0 #FFFFFF !important;
}
:root[data-theme="vivid"] .topbar { box-shadow: 0 2px 0 rgba(255,255,255,.07) inset, 0 8px 22px -14px rgba(8, 28, 56, .55) !important; }

/* =========================================================================
   50. 封面态：顶栏与侧栏并入封面
   -------------------------------------------------------------------------
   需求：不管选素白还是彩色，只要停在封面（.landing-full），
   顶栏与侧栏就是封面那片深蓝，与封面连成一整块；
   进入工作台后，素白回到白顶栏，彩色保持封面蓝。
   实现：由 theme.js 在 <html> 上打 .on-landing，样式只在这段时间生效。
   ========================================================================= */
:root.on-landing .topbar {
    background: linear-gradient(100deg, #123F77 0%, #1B57A8 52%, #164C93 100%) !important;
    border-bottom: none !important;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .08) inset,
        0 2px 18px -8px rgba(6, 22, 44, .55) !important;
}
:root.on-landing #pageTitle {
    color: #FFFFFF !important;
    text-shadow: 0 1px 2px rgba(6, 24, 48, .35) !important;
}
:root.on-landing .tb-btn {
    background: rgba(255, 255, 255, .13) !important;
    border-color: rgba(190, 222, 255, .30) !important;
    color: #F0F7FF !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16) !important;
}
:root.on-landing .tb-btn:hover {
    background: rgba(255, 255, 255, .21) !important;
    border-color: rgba(212, 180, 127, .55) !important;
    color: #FFFFFF !important;
}
:root.on-landing #tbBookBtn {
    background: rgba(212, 180, 127, .24) !important;
    border-color: rgba(212, 180, 127, .48) !important;
    color: #F8EACA !important;
}
:root.on-landing #topSyncBtn {
    background: rgba(255, 255, 255, .10) !important;
    border-color: rgba(190, 222, 255, .24) !important;
    color: #CFE4FA !important;
}
:root.on-landing #topSyncDivider { background: rgba(190, 222, 255, .28) !important; }

/* 主题切换器在封面蓝上 */
:root.on-landing .theme-switch {
    background: rgba(0, 0, 0, .20);
    border-color: rgba(190, 222, 255, .26);
}
:root.on-landing .theme-switch button { color: #CFE4FA; }
:root.on-landing .theme-switch button:hover { color: #FFFFFF; }
:root.on-landing .theme-switch button.on {
    background: rgba(255, 255, 255, .18);
    color: #FFFFFF;
    box-shadow: inset 0 0 0 1px rgba(190, 222, 255, .32);
}

/* 侧栏也并入封面，避免顶栏蓝、侧栏蓝灰的接缝 */
:root.on-landing .sidebar {
    background:
        radial-gradient(560px 320px at 10% -8%, rgba(120, 190, 255, .22), transparent 62%),
        linear-gradient(168deg, #1B57A8 0%, #164A8E 46%, #123F77 100%) !important;
    border-right: 1px solid rgba(8, 30, 58, .45) !important;
    box-shadow: inset -1px 0 0 rgba(170, 212, 255, .07) !important;
}
:root.on-landing .sidebar .menu-item { color: #C0D8F2 !important; }
:root.on-landing .sidebar .menu-item:hover { background: rgba(255, 255, 255, .10) !important; color: #FFFFFF !important; }
:root.on-landing .sidebar .menu-item.active {
    background: rgba(255, 255, 255, .17) !important;
    color: #FFFFFF !important;
    box-shadow: inset 0 0 0 1px rgba(190, 222, 255, .18) !important;
}
:root.on-landing .sidebar .menu-item.active::before { background: #8CCBFF !important; box-shadow: 0 0 8px rgba(140, 203, 255, .7) !important; }
:root.on-landing .sidebar .menu-group { color: #8AAFD4 !important; }
:root.on-landing .sidebar .menu-group:hover { color: #C0D8F2 !important; }
:root.on-landing .sidebar .logo .logo-text { color: #FFFFFF !important; }
:root.on-landing .sidebar .logo { border-bottom-color: rgba(170, 212, 255, .16) !important; }
:root.on-landing .logo-ico svg { stroke: #8CCBFF !important; }
:root.on-landing .sidebar .book-bar { border-bottom-color: rgba(170, 212, 255, .16) !important; background: rgba(255, 255, 255, .05) !important; }
:root.on-landing .sidebar .book-bar .flex-between { color: #9BBEDF !important; }
:root.on-landing #sbName { color: #FFFFFF !important; }
:root.on-landing #sbPeriod { color: #8CCBFF !important; }
:root.on-landing #sbStd {
    color: #B4CCE4 !important;
    background: rgba(255, 255, 255, .10) !important;
    border-color: rgba(170, 212, 255, .22) !important;
}
:root.on-landing #sbStatus { color: #9BBEDF !important; }
:root.on-landing #exitArea { border-top-color: rgba(170, 212, 255, .16) !important; }
:root.on-landing #exitArea .btn {
    border-color: rgba(255, 255, 255, .16) !important;
    color: #B4CCE4 !important;
}

/* 封面页本身：把内容区的底色也接到同一片蓝，彻底没有白边 */
:root.on-landing .page,
:root.on-landing #pageEl {
    background: transparent !important;
}

/* =========================================================================
   51. 封面态接缝修正
   -------------------------------------------------------------------------
   封面 .landing-full 的第一层渐变是 rgba(28,80,173,.98)（= #1C50AD），
   这是原作者为配合"宝蓝顶栏"专门做的过渡色。我把顶栏改成 #123F77 之后，
   两段蓝对不上，就出现了一条横线。

   修法：封面态的顶栏直接取封面顶部色 #1C50AD，并去掉边框与投影——
   接缝本质上是"两条渐变的起点不同"，让它同色同向即可消失。
   右上角那道径向光也一并复刻，避免横向出现明暗断层。
   ========================================================================= */
:root.on-landing .topbar {
    background: #1C50AD !important;
    background-image:
        /* 复刻封面的右上角天光，位置按视口百分比对齐 */
        radial-gradient(980px 520px at 78% -18%, rgba(125, 211, 252, .26), transparent 62%),
        /* 极轻的纵向变化，避免纯色发平 */
        linear-gradient(180deg, rgba(255, 255, 255, .035) 0%, rgba(0, 0, 0, .045) 100%) !important;
    border-bottom: none !important;
    box-shadow: none !important;
}
/* 顶栏下沿不要任何分隔线 */
:root.on-landing .topbar::after { display: none !important; }

/* 顶栏内的文字与控件：在这层蓝上重新配一次，保证清晰 */
:root.on-landing #pageTitle {
    color: #FFFFFF !important;
    text-shadow: 0 1px 2px rgba(4, 20, 44, .45) !important;
}
:root.on-landing .tb-btn {
    background: rgba(255, 255, 255, .14) !important;
    border-color: rgba(190, 222, 255, .34) !important;
    color: #FFFFFF !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18) !important;
}
:root.on-landing .tb-btn:hover {
    background: rgba(255, 255, 255, .24) !important;
    border-color: rgba(212, 180, 127, .6) !important;
}
:root.on-landing #tbBookBtn {
    background: rgba(212, 180, 127, .26) !important;
    border-color: rgba(212, 180, 127, .52) !important;
    color: #FBEFD4 !important;
}
:root.on-landing #topSyncBtn {
    background: rgba(255, 255, 255, .12) !important;
    border-color: rgba(190, 222, 255, .28) !important;
    color: #E1F0FF !important;
}

/* 侧栏同样对齐到 #1C50AD，左侧不留色差 */
:root.on-landing .sidebar {
    background:
        radial-gradient(560px 320px at 8% -6%, rgba(125, 211, 252, .22), transparent 62%),
        linear-gradient(180deg, #1C50AD 0%, #17479B 46%, #123C84 100%) !important;
    border-right: 1px solid rgba(8, 30, 58, .35) !important;
    box-shadow: none !important;
}

/* 顶栏改成纯色：任何纵向变化都会在接缝处形成一条暗边 */
:root.on-landing .topbar {
    background: #1C50AD !important;
    background-image: none !important;
    border: none !important;
    box-shadow: none !important;
}
/* 封面顶部那道光：不能在顶栏里复刻——这正是接缝的来源。
   封面的 radial 天光压在自己第一层 rgba(28,80,173,.98) 顶端亮蓝之下，
   露到封面表面的强度≈0（要到封面内部 8%~38% 段才逐渐显形）；
   而顶栏若直接铺 0.30 的光，下边缘会比封面第一行亮出一大截，
   右半幅尤其明显。顶栏保持纯色 #1C50AD，与封面第一行（≈#1C50AD）
   两侧同色，光只在封面内部自然浮现，接缝彻底消失。 */
:root.on-landing .topbar {
    background-image: none !important;
}

/* =========================================================================
   52. 封面态的反馈卡：白卡 → 封面的同一套渐变蓝
   -------------------------------------------------------------------------
   它在封面右下角，周围全是深蓝，一张白卡像贴上去的补丁。
   改成与封面同源的渐变，并把它"嵌"进去：半透明描边 + 同色阴影。
   内页保持白卡——那里底色是浅的，白卡才对。
   ========================================================================= */
:root.on-landing #floatingAd {
    background: linear-gradient(158deg, #1F5CBF 0%, #1C50AD 52%, #17479B 100%) !important;
    border: 1px solid rgba(170, 212, 255, .30) !important;
    box-shadow:
        0 1px 0 rgba(255, 255, 255, .12) inset,
        0 14px 36px -14px rgba(4, 16, 36, .68) !important;
    backdrop-filter: blur(6px);
}
:root.on-landing #floatingAd #adHeader {
    background: rgba(255, 255, 255, .07) !important;
    border-bottom: 1px solid rgba(170, 212, 255, .18) !important;
}
:root.on-landing #floatingAd #adHeader > span {
    color: #D8EAFC !important;
    font-weight: 500 !important;
}
:root.on-landing #floatingAd #adHeader > button {
    color: #AFCCEA !important;
    background: transparent !important;
}
:root.on-landing #floatingAd #adHeader > button:hover {
    background: rgba(255, 255, 255, .14) !important;
    color: #FFFFFF !important;
}
:root.on-landing #floatingAd > a { background: transparent !important; }
:root.on-landing #floatingAd > a > div:first-child {
    color: #FFFFFF !important;
    font-weight: 500 !important;
    text-shadow: 0 1px 2px rgba(4, 18, 40, .35) !important;
}
:root.on-landing #floatingAd > a > div:last-child {
    color: #B9D2EC !important;
}
:root.on-landing #floatingAd > a:hover {
    background: rgba(255, 255, 255, .07) !important;
}

/* =========================================================================
   53. 素白主题 · 侧栏与工作台横幅改为浅素色
   -------------------------------------------------------------------------
   原来这两块是深钢蓝（#1B3A58 / #1E4162），压得住，但和"素白"这个名字不符，
   整个界面也因此偏沉。改成浅蓝灰的素色：

     侧栏    #EDF2F9 → #E1E9F4   文字 #3C4C61（7.5:1）
     横幅    #EFF5FD → #DEEAF8   文字 #16304F（12:1）

   浅底上必须改用深字，否则一定糊。选中项走"白底 + 蓝字 + 左蓝条"，
   靠底色反白来表达选中，而不是靠加亮。
   ========================================================================= */
:root[data-theme="studio"] .sidebar,
:root:not([data-theme="vivid"]) .sidebar {
    background:
        radial-gradient(560px 320px at 8% -8%, rgba(255, 255, 255, .85), transparent 62%),
        linear-gradient(180deg, #EDF2F9 0%, #E6EDF6 48%, #E1E9F4 100%) !important;
    border-right: 1px solid rgba(12, 32, 58, .10) !important;
    box-shadow: inset -1px 0 0 #FFFFFF !important;
}
:root[data-theme="studio"] .sidebar .logo,
:root:not([data-theme="vivid"]) .sidebar .logo {
    border-bottom: 1px solid rgba(12, 32, 58, .08) !important;
}
:root[data-theme="studio"] .sidebar .logo .logo-text,
:root:not([data-theme="vivid"]) .sidebar .logo .logo-text { color: #16283D !important; }
:root[data-theme="studio"] .logo-ico svg,
:root:not([data-theme="vivid"]) .logo-ico svg { stroke: #1F6BC4 !important; }

:root[data-theme="studio"] .sidebar .book-bar,
:root:not([data-theme="vivid"]) .sidebar .book-bar {
    background: rgba(255, 255, 255, .62) !important;
    border-bottom: 1px solid rgba(12, 32, 58, .08) !important;
}
:root[data-theme="studio"] #sbName,
:root:not([data-theme="vivid"]) #sbName { color: #16283D !important; }
:root[data-theme="studio"] .sidebar .book-bar .flex-between,
:root:not([data-theme="vivid"]) .sidebar .book-bar .flex-between { color: #6B7E93 !important; }
:root[data-theme="studio"] #sbPeriod,
:root:not([data-theme="vivid"]) #sbPeriod { color: #1F6BC4 !important; font-weight: 600 !important; }
:root[data-theme="studio"] #sbStd,
:root:not([data-theme="vivid"]) #sbStd {
    color: #4E6076 !important;
    background: #FFFFFF !important;
    border: 1px solid rgba(12, 32, 58, .10) !important;
}
:root[data-theme="studio"] #sbStatus,
:root:not([data-theme="vivid"]) #sbStatus { color: #6B7E93 !important; }

:root[data-theme="studio"] .menu-group,
:root:not([data-theme="vivid"]) .menu-group { color: #8091A5 !important; }
:root[data-theme="studio"] .menu-group:hover,
:root:not([data-theme="vivid"]) .menu-group:hover { color: #4E6076 !important; }

:root[data-theme="studio"] .menu-item,
:root:not([data-theme="vivid"]) .menu-item { color: #3C4C61 !important; }
:root[data-theme="studio"] .menu-item:hover,
:root:not([data-theme="vivid"]) .menu-item:hover {
    background: rgba(31, 107, 196, .09) !important;
    color: #16283D !important;
}
:root[data-theme="studio"] .menu-item.active,
:root:not([data-theme="vivid"]) .menu-item.active {
    background: #FFFFFF !important;
    color: #123F77 !important;
    font-weight: 600 !important;
    box-shadow:
        0 1px 2px rgba(12, 32, 58, .08),
        inset 0 0 0 1px rgba(31, 107, 196, .10) !important;
}
:root[data-theme="studio"] .menu-item.active::before,
:root:not([data-theme="vivid"]) .menu-item.active::before {
    background: #1F6BC4 !important;
    box-shadow: none !important;
    width: 3px !important;
}
:root[data-theme="studio"] #exitArea,
:root:not([data-theme="vivid"]) #exitArea { border-top: 1px solid rgba(12, 32, 58, .08) !important; }
:root[data-theme="studio"] #exitArea .btn,
:root:not([data-theme="vivid"]) #exitArea .btn {
    background: #FFFFFF !important;
    border-color: rgba(12, 32, 58, .12) !important;
    color: #6B7E93 !important;
}
:root[data-theme="studio"] #exitArea .btn:hover,
:root:not([data-theme="vivid"]) #exitArea .btn:hover {
    background: #FDF0EF !important;
    border-color: #EFC4BF !important;
    color: #A0261E !important;
}

/* —— 工作台欢迎横幅：同一套浅素色 —— */
:root[data-theme="studio"] .ws-welcome-xl,
:root:not([data-theme="vivid"]) .ws-welcome-xl {
    background:
        radial-gradient(620px 340px at 88% -30%, rgba(31, 107, 196, .12), transparent 62%),
        linear-gradient(150deg, #EFF5FD 0%, #E6EFFA 54%, #DEEAF8 100%) !important;
    border: 1px solid rgba(31, 107, 196, .14) !important;
    box-shadow:
        0 1px 0 #FFFFFF inset,
        0 12px 30px -20px rgba(12, 32, 58, .28) !important;
}
:root[data-theme="studio"] .wsxl-title,
:root:not([data-theme="vivid"]) .wsxl-title { color: #16304F !important; }
:root[data-theme="studio"] .wsxl-sub,
:root:not([data-theme="vivid"]) .wsxl-sub { color: #4A6280 !important; }
:root[data-theme="studio"] .wsxl-sub b,
:root:not([data-theme="vivid"]) .wsxl-sub b { color: #1F6BC4 !important; font-weight: 600 !important; }
:root[data-theme="studio"] .wsxl-period,
:root:not([data-theme="vivid"]) .wsxl-period {
    background: #FFFFFF !important;
    border: 1px solid rgba(31, 107, 196, .18) !important;
    color: #1F6BC4 !important;
    font-weight: 600 !important;
}
:root[data-theme="studio"] .wsxl-status,
:root:not([data-theme="vivid"]) .wsxl-status { color: #6B7E93 !important; }
:root[data-theme="studio"] .landing-tag,
:root:not([data-theme="vivid"]) .landing-tag {
    background: #FFFFFF !important;
    border: 1px solid rgba(31, 107, 196, .16) !important;
    color: #4A6280 !important;
}

/* 横幅标题是渐变文字（background-clip:text，白→浅蓝），浅底上必然消失。
   不要取消渐变——把渐变本身反相成深色，反而更有质感。 */
:root[data-theme="studio"] .wsxl-title,
:root:not([data-theme="vivid"]) .wsxl-title {
    background: linear-gradient(180deg, #0E2740 0%, #1B4C7E 58%, #1F6BC4 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    filter: none !important;
    letter-spacing: 6px !important;
    text-indent: 6px !important;
    font-weight: 700 !important;
}
/* 副标题里的账套名：去掉深底上的发光，浅底会脏 */
:root[data-theme="studio"] .wsxl-sub b,
:root:not([data-theme="vivid"]) .wsxl-sub b {
    text-shadow: none !important;
    color: #1F6BC4 !important;
}
/* 账期胶囊：白底蓝字已经够清楚，去掉浅色描边冗余 */
:root[data-theme="studio"] .wsxl-period,
:root:not([data-theme="vivid"]) .wsxl-period {
    box-shadow: 0 1px 2px rgba(12, 32, 58, .06) !important;
}
/* 横幅里的"本期开放中" */
:root[data-theme="studio"] .wsxl-status,
:root:not([data-theme="vivid"]) .wsxl-status { color: #5A6E85 !important; }

/* 安全警告条：在浅色界面里必须是"浅底深字"的静默提示。
   这里不再依赖变量，直接写死浅色并抬特异性，确保任何情况下都不会回落到内联的红。 */
:root[data-theme="studio"] #syncWarningBanner,
:root:not([data-theme="vivid"]) #syncWarningBanner {
    background: #FDF3E7 !important;
    background-image: none !important;
    border-bottom: 1px solid #F0DFC9 !important;
    color: #8A4A08 !important;
    box-shadow: none !important;
}
:root[data-theme="studio"] #syncWarningBanner span,
:root:not([data-theme="vivid"]) #syncWarningBanner span {
    color: #8A4A08 !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    font-size: 12.5px !important;
}
:root[data-theme="studio"] #syncWarningBanner .btn,
:root:not([data-theme="vivid"]) #syncWarningBanner .btn {
    background: #FFFFFF !important;
    border: 1px solid #E7CDAF !important;
    color: #8A4A08 !important;
    font-weight: 500 !important;
    box-shadow: 0 1px 2px rgba(12, 32, 58, .05) !important;
}

/* =========================================================================
   54. 工作台指标卡 · 重做
   -------------------------------------------------------------------------
   原卡片是"图标一行、标签一行、英文一行、数字一行"的竖排堆叠，
   显得又扁又散。改成两栏内部网格：
     左：34px 图标（跨两行）
     右：标签 + 英文小字
     下：数值（跨两栏，等宽数字）＋ 可选徽标行
   整行保持四等分满宽，与上下模块的左右边缘对齐。
   ========================================================================= */
#pageEl .grid-4:has(> .ws-stat) {
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 14px !important;
}

.ws-stat {
    display: grid !important;
    grid-template-columns: 34px minmax(0, 1fr) !important;
    grid-template-rows: auto auto 1fr auto !important;
    column-gap: 10px !important;
    row-gap: 1px !important;
    align-content: start !important;
    padding: 15px 17px 16px !important;
    border-radius: 10px !important;
}
.ws-stat-icon {
    grid-column: 1 !important;
    grid-row: 1 / 3 !important;
    width: 34px !important;
    height: 34px !important;
    border-radius: 9px !important;
    align-self: start !important;
    margin: 0 !important;
}
.ws-stat-icon svg { width: 18px !important; height: 18px !important; stroke-width: 1.7 !important; }

.ws-stat-label {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: end !important;
    font-size: 12.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
    line-height: 1.35 !important;
}
.ws-stat-en {
    grid-column: 2 !important;
    grid-row: 2 !important;
    align-self: start !important;
    font-size: 9px !important;
    letter-spacing: 1.1px !important;
    line-height: 1.4 !important;
    opacity: .75;
}
/* 数值/主内容：跨两栏，落在下方。
   注意排除利润卡末尾的徽标容器（内含 .badge），它单独占第 4 行。 */
.ws-stat > div:last-child:not(.ws-stat-num):not(:has(.badge)) {
    grid-column: 1 / -1 !important;
    grid-row: 3 !important;
    margin-top: 12px !important;
    font-size: 21px !important;
    font-weight: 600 !important;
    letter-spacing: -0.4px !important;
    line-height: 1.25 !important;
    color: var(--s-text) !important;   /* 数字用最深的正文色，白卡上最"立" */
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}
/* 文案型主内容（如"选择自动备份文件夹"）不该用数字的大字号 */
.ws-stat:first-child > div:last-child {
    font-size: 14px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    line-height: 1.5 !important;
}
/* 利润卡末尾的"待审 / 全部已审核"徽标行：独立成行，不再与数值打架 */
.ws-stat > div:last-child:has(.badge) {
    grid-column: 1 / -1 !important;
    grid-row: 4 !important;
    margin-top: 8px !important;
    display: flex !important;
    align-items: center !important;
}

/* 悬停：轻微抬起，不放大 */
.ws-stat:hover { transform: translateY(-2px); transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease; }

/* 指标卡：让数值真正落在网格第三行。
   .ws-stat-num 自带 position:relative 与 30px/800 的字重，且卡片有 overflow:hidden，
   改网格后会被裁掉——这里解除定位、撑开最小高度，并把字号收回 21px。 */
.ws-stat {
    min-height: 136px !important;
    overflow: hidden !important;
}
.ws-stat .ws-stat-num {
    grid-column: 1 / -1 !important;
    grid-row: 3 !important;
    position: static !important;
    display: block !important;
    font-size: 21px !important;
    font-weight: 600 !important;
    letter-spacing: -0.4px !important;
    line-height: 1.3 !important;
    margin-top: 12px !important;
    color: var(--s-text) !important;
    text-shadow: none !important;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}
/* 利润卡里的百分比小字也收一下 */
.ws-stat .ws-stat-num span { font-size: 13px !important; font-weight: 500 !important; opacity: .85; }
/* 徽标/评分之类的小尾巴 */
.ws-stat .badge, .ws-stat [class*="tag"] { font-size: 10.5px !important; padding: 1px 6px !important; }

/* =========================================================================
   55. 按钮一致性收口（两主题通用）
   -------------------------------------------------------------------------
   Puppeteer 实测发现的三处不一致，在 cascade 末尾统一收口：
     ① .btn-text 文字按钮被通用层误伤——品牌色文字被盖成灰、透明边框
        被换成 --s-line、还被加了立体阴影，两套主题里都成了"灰盒子"。
        回归设计本相：品牌色文字、无框无影，悬停以品牌浅底胶囊提示。
     ② 彩色主题的主题级选择器（0,3,0+）压过了通用禁用规则，禁用主按钮
        仍是金色/蓝色；素白下弹窗主按钮禁用也保持蓝色。全部收口为灰。
     ③ 素白 --s-text-3 已在 28 节令牌块内加深（#98A2B3 → #6E7E93），
        此前 43 节的 :root 块因特异性更低从未生效。
   ========================================================================= */
.btn-text,
.btn-text.danger {
    border-color: transparent !important;
    box-shadow: none !important;
}
.btn-text { color: var(--s-brand) !important; }
.btn-text:hover:not(:disabled) { color: var(--s-brand-deep) !important; }
.btn-text.danger { color: var(--bad-600) !important; }
.btn-text.danger:hover:not(:disabled) { color: var(--bad-700) !important; }

/* —— 禁用态统一为灰，任何主题、任何层级的主按钮都不例外 —— */
.sys-dlg-btns .dlg-primary:disabled, .dlg-foot .dlg-primary:disabled,
.sys-dlg-btns .dlg-primary.is-danger:disabled, .dlg-foot .dlg-primary.is-danger:disabled,
.sys-dlg-btns .dlg-secondary:disabled, .dlg-foot .dlg-secondary:disabled {
    background: var(--n-50) !important;
    border-color: var(--n-200) !important;
    color: var(--n-400) !important;
    box-shadow: none !important;
}
:root[data-theme="vivid"] .btn:disabled, :root[data-theme="vivid"] .btn[disabled],
:root[data-theme="vivid"] .b3dg.wide:disabled, :root[data-theme="vivid"] .b3d-blue:disabled,
:root[data-theme="vivid"] .sys-dlg-btns .dlg-primary:disabled,
:root[data-theme="vivid"] .dlg-foot .dlg-primary:disabled,
:root[data-theme="vivid"] .sys-dlg-btns .dlg-primary.is-danger:disabled,
:root[data-theme="vivid"] .dlg-foot .dlg-primary.is-danger:disabled {
    background: var(--n-50) !important;
    border-color: var(--n-200) !important;
    color: var(--n-400) !important;
    box-shadow: none !important;
}

/* =========================================================================
   56. 顶栏 tbtn 工具按钮 · 并入 tb-btn 家族（两主题一致）
   -------------------------------------------------------------------------
   报表/账簿页右上角的 .tbtn（切换报表 / 导出 Excel / 配置 / 打印 / 导出明细…）
   原是独立的"白瓷精工钮"体系：常态白瓷渐变 + 蓝字悬停，主操作宝蓝实心。
   与同一排的 .tb-btn（返回工作台 / 切换/新建账套）字号、圆角、描边、配色
   全都不一致；彩色主题深蓝顶栏上更是"蓝底压蓝底"。
   这里整体并入 tb-btn 家族，素白与彩色各自与旁边的 tb-btn 完全同款：
     · 常态/悬停/按下 = tb-btn 同款尺寸、描边、立体侧壁
     · tbtn-p（切换报表）= #tbBookBtn 同一档强调（素白蓝底蓝字 / 彩色金玻璃）
   ========================================================================= */
.topbar .tbtn {
    padding: 6px 11px !important;
    font-size: 12.5px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    gap: 6px !important;
    height: 32px !important;
    border-radius: var(--radius-ctl) !important;
    background: var(--s-card) !important;
    background-image: none !important;
    border: 1px solid var(--s-line) !important;
    color: var(--s-text-2) !important;
    text-shadow: none !important;
    box-shadow:
        inset 0 1px 0 #FFFFFF,
        inset 0 -1px 0 rgba(12, 21, 34, .04),
        0 1px 2px rgba(12, 21, 34, .06),
        0 1px 0 var(--s-line) !important;
    transition: background .14s ease, border-color .14s ease, color .14s ease !important;
}
.topbar .tbtn:hover:not(:disabled) {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
    transform: none !important;
    box-shadow:
        inset 0 1px 0 #FFFFFF,
        inset 0 -1px 0 rgba(12, 21, 34, .05),
        0 2px 5px rgba(12, 21, 34, .10),
        0 1px 0 var(--s-line) !important;
}
.topbar .tbtn:active:not(:disabled) {
    transform: translateY(1px) !important;
    box-shadow: inset 0 2px 4px rgba(12, 21, 34, .10) !important;
}
.topbar .tbtn:disabled {
    opacity: 1 !important;
    background: var(--n-50) !important;
    border-color: var(--n-200) !important;
    color: var(--n-400) !important;
    box-shadow: none !important;
}

/* 主操作（切换报表）：与"切换/新建账套"同一档强调 */
.topbar .tbtn.tbtn-p {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
    text-shadow: none !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .8),
        inset 0 -1px 0 rgba(12, 21, 34, .04),
        0 1px 2px rgba(12, 21, 34, .06),
        0 1px 0 var(--s-brand-200) !important;
}
.topbar .tbtn.tbtn-p:hover:not(:disabled) {
    background: var(--s-brand-100) !important;
    border-color: var(--s-brand) !important;
    color: var(--s-brand-deep) !important;
    transform: none !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .8),
        inset 0 -1px 0 rgba(12, 21, 34, .05),
        0 2px 5px rgba(12, 21, 34, .10),
        0 1px 0 var(--s-brand-200) !important;
}
.topbar .tbtn.tbtn-p:active:not(:disabled) {
    transform: translateY(1px) !important;
    box-shadow: inset 0 2px 4px rgba(12, 21, 34, .12) !important;
}

/* 危险变体（如有）：常态克制、悬停显红，与 .btn-d 同语言 */
.topbar .tbtn.tbtn-danger { color: var(--bad-600) !important; }
.topbar .tbtn.tbtn-danger:hover:not(:disabled) {
    background: var(--bad-50) !important;
    border-color: #EFC4BF !important;
    color: var(--bad-700) !important;
    transform: none !important;
}

/* —— 彩色主题：顶栏是封面深蓝，整组换玻璃语言（与 tb-btn 同源） —— */
:root[data-theme="vivid"] .topbar .tbtn {
    background: rgba(255, 255, 255, .12) !important;
    border-color: rgba(190, 222, 255, .30) !important;
    color: #F0F7FF !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16) !important;
}
:root[data-theme="vivid"] .topbar .tbtn:hover:not(:disabled) {
    background: rgba(255, 255, 255, .20) !important;
    border-color: rgba(212, 180, 127, .55) !important;
    color: #FFFFFF !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .20) !important;
}
:root[data-theme="vivid"] .topbar .tbtn.tbtn-p {
    background: rgba(212, 180, 127, .22) !important;
    border-color: rgba(212, 180, 127, .45) !important;
    color: #F6E7C8 !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .18) !important;
}
:root[data-theme="vivid"] .topbar .tbtn.tbtn-p:hover:not(:disabled) {
    background: rgba(212, 180, 127, .32) !important;
    border-color: rgba(212, 180, 127, .60) !important;
    color: #FBF0D9 !important;
}
:root[data-theme="vivid"] .topbar .tbtn:disabled {
    background: rgba(255, 255, 255, .06) !important;
    border-color: rgba(190, 222, 255, .16) !important;
    color: rgba(207, 228, 250, .45) !important;
    box-shadow: none !important;
}

/* —— 封面态：顶栏并入封面深蓝，tbtn 跟 tb-btn 一样换玻璃 —— */
:root.on-landing .topbar .tbtn {
    background: rgba(255, 255, 255, .13) !important;
    border-color: rgba(190, 222, 255, .30) !important;
    color: #F0F7FF !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16) !important;
}
:root.on-landing .topbar .tbtn:hover:not(:disabled) {
    background: rgba(255, 255, 255, .21) !important;
    border-color: rgba(212, 180, 127, .55) !important;
    color: #FFFFFF !important;
}
:root.on-landing .topbar .tbtn.tbtn-p {
    background: rgba(212, 180, 127, .24) !important;
    border-color: rgba(212, 180, 127, .48) !important;
    color: #F8EACA !important;
}

/* 图标透明度与 tb-btn 对齐 */
.topbar .tbtn .tb-ico { display: inline-flex; opacity: .85; }

/* =========================================================================
   57. 工资总览 · 快捷操作按钮拉通整行
   -------------------------------------------------------------------------
   六颗按钮原来按自然宽度靠左挤成一团，右侧留一大段空白。
   这里让它们等比拉伸、铺满整行到卡片右缘：
     · 以行尾「导入旧版数据(.fdb)」的 title（全站唯一）作锚点定位该行；
     · 按钮 flex 放大 + 标签不折行，宽窗口均分余白、铺满到右边缘；
     · 窄窗口自动换行（flex-wrap 保持基础层的 wrap），不会挤出卡片。
   ========================================================================= */
.flex-row:has(> button[title*="从旧版独立"]) {
    width: 100% !important;
}
.flex-row:has(> button[title*="从旧版独立"]) > .btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex: 1 1 auto !important;
    min-width: max-content !important;
    white-space: nowrap !important;
}

/* =========================================================================
   58. 辅助明细表 · 正文去粗，回归细腻常规字重
   -------------------------------------------------------------------------
   这张表的正文叠了四层加粗：科目列内联 font-weight:600、.mono 金额 600、
   dr/cr 金额 700、.bold 类 700，外加 highlight 行整行 600——
   满屏黑压压，小字号下笔画糊成一团。
   这里把 #tblAuxDet 的全部正文单元压平为常规字重 400：
     · ID 级 !important 同时压过内联 600 与各类 600/700 规则；
     · 层级感交给表里既有的底色分区（期初灰/本期蓝/本年黄/期末绿/合计靛）、
       借贷语义色与凭证号虚线，不再依赖字重；
     · 表头 th 保持原有字重（表头加粗是可读性惯例，不属于本需求）。
   ========================================================================= */
#tblAuxDet td,
#tblAuxDet td span,
#tblAuxDet td div,
#tblAuxDet td a {
    font-weight: 400 !important;
}

/* =========================================================================
   59. 工作台横幅 · 摘除点阵纹理
   -------------------------------------------------------------------------
   .ws-welcome-xl::before 原是旧版"冰蓝云阶"语言的装饰：24px 一颗的
   1px 亮蓝圆点铺满横幅。素白浅底上它几乎不可见，但彩色主题的深蓝
   渐变横幅把它整个托了出来——就是用户看到的"渐变蓝上的小亮点点"。
   主题化之后横幅的质感由纯渐变 + 顶部一道天光表达，点阵没有存在
   价值，两套主题一并摘除（该伪元素只承载点阵，直接整体移除）。
   侧栏本体没有点阵，其深蓝渐变本就是干净的。
   ========================================================================= */
.ws-welcome-xl::before { content: none !important; }

/* =========================================================================
   60. 科目余额表 · 一级科目加粗，下级与辅助行常规
   -------------------------------------------------------------------------
   原表所有行的科目名称都写死 600，金额列再叠 .mono 600 / dr·cr 700 /
   .bold 700，一级与明细视觉上没有区分。
   渲染层（module_ledger.js）现按"编码 4 位且非辅助行 = 一级科目"给行打
   bl-root / bl-sub 展示类，这里接管字重：
     · 一级行：科目名/编码/金额 600，自然凸出；
     · 下级与辅助行、合计行：全部 400 常规，笔画细腻完整；
     · 行间层级仍由缩进与 └─ 前缀表达，语义色（借蓝/贷绿/期末青）不变；
     · 表头 th 保持原有字重。
   ========================================================================= */
#tblBal td,
#tblBal td span,
#tblBal td div,
#tblBal td a {
    font-weight: 400 !important;
}
#tblBal tr.bl-root td,
#tblBal tr.bl-root td span,
#tblBal tr.bl-root td div,
#tblBal tr.bl-root td a {
    font-weight: 600 !important;
}

/* =========================================================================
   61. 素白主题 · 侧栏与工作台文字提鲜提清晰
   -------------------------------------------------------------------------
   浅底上让文字"更亮更鲜艳"的正确做法不是把灰调浅（提亮必然发糊），
   而是两件事：
     ① 色相往品牌蓝靠——灰蓝变蓝灰，色彩感上来；
     ② 明度略降半档——对比度同时抬高，笔画更实更清晰。
   全部改动算过对比度：正文类 ≥4.5:1，横幅大标题（大字阈值 3:1）≥3.5:1。
   只动侧栏与工作台（横幅/快捷卡/指标卡）的选择器，其余界面不受影响。
   ========================================================================= */
:root[data-theme="studio"] .menu-item,
:root:not([data-theme="vivid"]) .menu-item { color: #2F4763 !important; }          /* 7.5 → 8.2:1，蓝度+ */
:root[data-theme="studio"] .menu-item:hover,
:root:not([data-theme="vivid"]) .menu-item:hover { color: #122A4A !important; }
:root[data-theme="studio"] .menu-item.active,
:root:not([data-theme="vivid"]) .menu-item.active { color: #1F6BC4 !important; }   /* 选中项直接上品牌蓝，5.3:1 */
:root[data-theme="studio"] .menu-group,
:root:not([data-theme="vivid"]) .menu-group { color: #4E6C90 !important; }         /* 2.8 → 4.7:1，分组小标不再发灰 */
:root[data-theme="studio"] .menu-group:hover,
:root:not([data-theme="vivid"]) .menu-group:hover { color: #3D5A7E !important; }
:root[data-theme="studio"] .sidebar .logo .logo-text,
:root:not([data-theme="vivid"]) .sidebar .logo .logo-text { color: #122A4A !important; }
:root[data-theme="studio"] #sbName,
:root:not([data-theme="vivid"]) #sbName { color: #122A4A !important; }
:root[data-theme="studio"] .sidebar .book-bar .flex-between,
:root:not([data-theme="vivid"]) .sidebar .book-bar .flex-between { color: #546E8F !important; }  /* 3.7 → 4.7:1 */
:root[data-theme="studio"] #sbStatus,
:root:not([data-theme="vivid"]) #sbStatus { color: #546E8F !important; }
:root[data-theme="studio"] #sbStd,
:root:not([data-theme="vivid"]) #sbStd { color: #3D5878 !important; }

/* —— 工作台横幅：标题渐变更亮一档，辅助文字更深更蓝 —— */
:root[data-theme="studio"] .wsxl-title,
:root:not([data-theme="vivid"]) .wsxl-title {
    background: linear-gradient(180deg, #0C2A4C 0%, #1C5A9F 58%, #2E7FE0 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
}
:root[data-theme="studio"] .wsxl-sub,
:root:not([data-theme="vivid"]) .wsxl-sub { color: #35547B !important; }
:root[data-theme="studio"] .wsxl-sub b,
:root:not([data-theme="vivid"]) .wsxl-sub b { color: #1E6ECF !important; }
:root[data-theme="studio"] .wsxl-period,
:root:not([data-theme="vivid"]) .wsxl-period { color: #1E6ECF !important; }
:root[data-theme="studio"] .wsxl-status,
:root:not([data-theme="vivid"]) .wsxl-status { color: #40587E !important; }
:root[data-theme="studio"] .landing-tag,
:root:not([data-theme="vivid"]) .landing-tag { color: #35547B !important; }

/* —— 快捷卡说明 / 指标卡英文小字：蓝灰提鲜，白底 4.1 → 4.75:1 —— */
:root[data-theme="studio"] .ws-qa-desc,
:root:not([data-theme="vivid"]) .ws-qa-desc { color: #5F7495 !important; }
:root[data-theme="studio"] .ws-stat-en,
:root:not([data-theme="vivid"]) .ws-stat-en { color: #5F7495 !important; }

/* =========================================================================
   62. 凭证分录行 · 删行按钮与插行按钮同款蓝调
   -------------------------------------------------------------------------
   减号（删除此行）原本是红调底（#F9D6D1/#A0261E），加号（插行）是
   品牌蓝调——同一格里一红一蓝，视觉上互相打架。按需求把减号的底色、
   描边、文字与悬停全部并入加号同款蓝调（var(--s-brand-50) 系），
   两颗按钮靠图标本身（− / +）区分，色彩语言统一、跟随主题。
   ========================================================================= */
#pageEl button[title="删除此行"] {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    color: var(--s-brand-deep) !important;
}
#pageEl button[title="删除此行"]:hover:not(:disabled) {
    background: var(--s-brand) !important;
    border-color: var(--s-brand) !important;
    color: #FFFFFF !important;
}

/* =========================================================================
   63. 彩色主题 · 侧栏融入顶栏 + 侧栏/横幅补封面同款点阵
   -------------------------------------------------------------------------
   ① 融色：侧栏顶部原是亮蓝 #1B57A8 加顶部光晕，而顶栏左端是 #123F77，
      两块在页首撞出一条明暗差。侧栏顶部对齐到顶栏左端同色 #123F77，
      光晕减半防抢，向下自然沉暗；菜单文字对比不受影响（≥7:1）。
      用 :not(.on-landing) 排除封面态——封面侧栏的融合另有规则，不得回退。
   ② 点阵：给侧栏与"欢迎回来"横幅加回封面同款的渐变亮色小圆点
      （1px 圆点 · 26px 网格 · rgba(170,215,255,.11)，与 .landing-full::before
      同参数）。侧栏点阵上密下疏（顶部融合区最亮），横幅沿用封面同款
      中心椭圆遮罩。横幅点阵此前在 59 节整体摘除，这里按彩色主题恢复。
   ========================================================================= */
:root[data-theme="vivid"]:not(.on-landing) .sidebar {
    background: linear-gradient(172deg, #123F77 0%, #113D73 52%, #0F3868 100%) !important;
}
/* 融合的关键一层：.logo 自带 rgba(255,255,255,.09)→0 的 60px 白色渐变
   （旧深蓝侧栏时代的"顶部受光"），它把侧栏顶部整体托亮约 +18，
   正是与顶栏相接处明暗差的真凶。彩色态摘掉白纱，顶部与顶栏同色。 */
:root[data-theme="vivid"]:not(.on-landing) .sidebar .logo {
    background: none !important;
}
:root[data-theme="vivid"]:not(.on-landing) .sidebar::before {
    content: "" !important;
    display: block !important;
    position: absolute; inset: 0; pointer-events: none;
    /* 点阵透明度按"与封面同等可感知"校准：侧栏底 #123F77 比封面端更亮一档，
       0.11 会被底色吃掉，提到 0.15 才有封面上的可见度 */
    background-image: radial-gradient(rgba(185, 220, 255, .15) 1px, transparent 1.4px) !important;
    background-size: 26px 26px !important;
    -webkit-mask-image: radial-gradient(ellipse 120% 70% at 50% 0%, #000 22%, transparent 78%) !important;
    mask-image: radial-gradient(ellipse 120% 70% at 50% 0%, #000 22%, transparent 78%) !important;
}
:root[data-theme="vivid"] .ws-welcome-xl::before {
    content: "" !important;
    /* 35 节有一条无条件的 .ws-welcome-xl::before{display:none!important}，
       只恢复 content 不恢复 display 时伪元素仍不渲染——必须一并覆盖 */
    display: block !important;
    position: absolute; inset: 0; pointer-events: none;
    /* 横幅底色 #1F63BE 比封面亮，0.11 完全看不出——提到 0.17，
       遮罩从封面同款放宽（95%/80%），让右侧箭头所指区域也有点阵 */
    background-image: radial-gradient(rgba(185, 225, 255, .17) 1px, transparent 1.5px) !important;
    background-size: 26px 26px !important;
    -webkit-mask-image: radial-gradient(ellipse 95% 80% at 50% 45%, #000 30%, transparent 85%) !important;
    mask-image: radial-gradient(ellipse 95% 80% at 50% 45%, #000 30%, transparent 85%) !important;
}

/* =========================================================================
   64. 填制凭证 · 借贷分界线 / 行次分隔 / 工具栏小字号
   -------------------------------------------------------------------------
   ① 借方金额与贷方金额之间的竖线原来只有 #e2e8f0，在浅色行里几乎
      看不见。借方列右缘（含表头与合计行）统一提到 #B3C9E5——仍是
      浅色，但肉眼能明确分清两列。
      定位用 td:nth-last-child(2)（每行倒数第 2 格 = 借方金额），
      不用 :has()——旧版 Chromium 内核不支持 :has 时整条规则会失效。
   ② 分录行次分隔线 #f1f5f9 过淡，提到 #D3DEED；全表竖向格线也统一
      提到 #D6E0EE，行与列的"格子界限"都能看清。
      （均为 !important 覆盖业务模板里的内联边框色，只动颜色不动布局。）
   ③ 字号下拉（#vWord）与附件张数（#vAttach）是 58px/42px 的窄盒，
      基础 14px 字号导致"记"/多位数字被裁。降到 12.5px 完整显示；
      附件数字框顺带隐藏原生上下箭头（纯显示层，输入功能不变）。
   ========================================================================= */
/* 行次分隔线：26 节的 #pageEl tr[style*=f1f5f9]>td 规则直接提到 #D3DEED（见上）。
   借贷分界竖线：8 节全局去竖线（border-right:none），
   必须整条重建边框（只改颜色等于给不存在的边框上色）。
   借方金额列 = 每行倒数第 2 格，含表头与合计行，贯通显示。 */
#vTableWrap tbody td:nth-last-child(2),
#vTableWrap thead th:nth-last-child(2),
#vTableWrap tfoot td:nth-last-child(2) { border-right: 1px solid #B3C9E5 !important; }

#vWord { font-size: 12.5px !important; }
#vAttach { font-size: 12.5px !important; }
#vAttach::-webkit-outer-spin-button,
#vAttach::-webkit-inner-spin-button { -webkit-appearance: none !important; margin: 0 !important; }

/* =========================================================================
   65. 切换财务报表弹窗 · 报表选项卡并入软件按钮体系
   -------------------------------------------------------------------------
   弹窗里的报表选项卡（.scard）标题色硬编码 #334155、圆角 6px、悬停
   只有阴影变化——与软件的次按钮（主题灰蓝、悬停品牌浅底、7px 圆角）
   不一致。底部"取消/确认保存"已是标准按钮，无需动。
   这里给选项卡对齐次按钮语言（两主题通用，颜色全部走主题变量）：
     常态 = 卡片底 + 主题描边 + 主题次级文字；悬停 = 品牌浅底 + 品牌描边
     + 品牌深字（与 .btn-n:hover 完全同款）；按下轻微下沉。
   ========================================================================= */
#dlgBody .grid-2 .scard {
    border-radius: var(--radius-ctl) !important;
    transition: background .14s ease, border-color .14s ease, box-shadow .14s ease !important;
}
#dlgBody .grid-2 .scard > div:last-child {
    color: var(--s-text-2) !important;
    transition: color .14s ease !important;
}
#dlgBody .grid-2 .scard > div:first-child { color: var(--s-text-3) !important; }
#dlgBody .grid-2 .scard:hover:not(:active) {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    box-shadow: var(--s-elev-1) !important;
}
#dlgBody .grid-2 .scard:hover > div:last-child { color: var(--s-brand-deep) !important; }
#dlgBody .grid-2 .scard:active { transform: translateY(1px); }

/* =========================================================================
   66. 报表入口 · 与「导入/下载模板」按钮同族的重设计
   -------------------------------------------------------------------------
   工作台「业财标准化报表导航」弹出面板与「切换财务报表」弹窗里的
   报表选项，原来是 📄 emoji + 竖排/硬编码色，与全站按钮语言脱节。
   重设计为图3（导入/下载模板按钮）的同一语言：
     · 图标：主题库同参数的 1.7 线条文档/图表图标，装进品牌浅底圆角芯片；
     · 卡片：白底 + 主题描边 + radius-ctl，横排"图标芯片 + 文字"；
     · 悬停 = 次按钮同款（品牌浅底 + 品牌描边 + 品牌深字），芯片转白。
   JS 模板（index.html / core_boot.js）已同步改为输出芯片 + SVG。
   ========================================================================= */
.rpt-ico-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    border-radius: 8px;
    background: var(--s-brand-50);
    border: 1px solid var(--s-brand-100);
    color: var(--s-brand-deep);
}
.rpt-ico-chip-sm { width: 26px; height: 26px; flex-basis: 26px; border-radius: 7px; }

/* —— 导航弹出面板：竖排改横排胶囊，次按钮同款 —— */
.ws-more-popup-item {
    flex-direction: row !important;
    justify-content: flex-start;
    gap: 10px !important;
    padding: 10px 12px !important;
    border-radius: var(--radius-ctl) !important;
    background: var(--s-card) !important;
    border: 1px solid var(--s-line) !important;
    transition: background .14s ease, border-color .14s ease !important;
}
.ws-more-popup-item .ws-mpi-icon { font-size: inherit; filter: none; }
.ws-more-popup-item .ws-mpi-label {
    color: var(--s-text-2) !important;
    text-align: left !important;
    font-size: 12.5px !important;
    transition: color .14s ease !important;
}
.ws-more-popup-item:hover {
    background: var(--s-brand-50) !important;
    border-color: var(--s-brand-200) !important;
    transform: none !important;
}
.ws-more-popup-item:hover .ws-mpi-label,
.ws-more-popup-item:hover .rpt-ico-chip { color: var(--s-brand-deep) !important; }
.ws-more-popup-item:hover .rpt-ico-chip { background: #FFFFFF !important; border-color: var(--s-brand-200) !important; }
.ws-more-popup-title { color: var(--s-text) !important; }
.ws-more-popup-title .rpt-ico-chip { background: var(--s-brand-50); }

/* —— 切换财务报表弹窗：选项卡芯片同款处理 —— */
#dlgBody .rpt-card:hover .rpt-ico-chip,
#dlgBody .grid-2 .scard:hover .rpt-ico-chip { background: #FFFFFF !important; border-color: var(--s-brand-200) !important; }
