/* Personal appearance only. Source records, permissions and flows share the same app. */
:root,
:root[data-personal-theme="glacier"] {
  /* 冰川：浅冰蓝侧栏、钢蓝按钮，日常默认 */
  --fusion-accent: #3d6a8c;
  --fusion-accent-ink: #2b5472;
  --fusion-soft: #e4edf4;
  --fusion-accent-soft: var(--fusion-soft);
  --fusion-indicator: var(--fusion-accent);
  --fusion-badge-soft: var(--fusion-soft);
  --fusion-badge-ink: var(--fusion-accent-ink);
  --fusion-hero: linear-gradient(125deg, #24476a 0%, #3d6a8c 100%);
  --fusion-ink: #1c2733;
  --fusion-muted: #5f6e7e;
  --fusion-canvas: #f6f8fa;
  --fusion-sidebar: #e6eef4;
  --fusion-sidebar-ink: #4f6a82;
  --fusion-sidebar-active: #d3e1ec;
  --fusion-sidebar-active-ink: #1f4562;
  --fusion-sidebar-line: #d5e0e9;
  --fusion-selected: #eef3f7;
  --fusion-line: #e3e8ee;
  --fusion-table: #edf1f5;
  --fusion-body: #55677a;
  --fusion-stale: #6b7a8a;
  --fusion-focus: #5a86a8;
  --navy: var(--fusion-ink);
  --navy-dark: #1f4562;
  --blue: var(--fusion-accent);
  --blue-soft: var(--fusion-soft);
  --ink: var(--fusion-ink);
  --muted: var(--fusion-muted);
  --background: var(--fusion-canvas);
}
:root[data-personal-theme="burgundy"] {
  /* 酒红：深酒红侧栏、暖白底，汇报展示 */
  --fusion-accent: #7b2d3c;
  --fusion-accent-ink: #6a2433;
  --fusion-soft: #f3e7ea;
  --fusion-ink: #2a2124;
  --fusion-muted: #73666a;
  --fusion-canvas: #faf8f7;
  --fusion-sidebar: #3a1f27;
  --fusion-sidebar-ink: #d2bac0;
  --fusion-sidebar-active: #58313c;
  --fusion-sidebar-active-ink: #ffffff;
  --fusion-sidebar-line: #4e2c36;
  --fusion-selected: #f8f1f2;
  --fusion-line: #ece4e5;
  --fusion-table: #f3eeee;
  --fusion-body: #6e6265;
  --fusion-stale: #7d7073;
  --fusion-focus: #9a4757;
  --fusion-hero: linear-gradient(125deg, #3a1f27 0%, #6a2433 100%);
  --navy-dark: #3a1f27;
}
:root[data-personal-theme="graphite"] {
  /* 石墨：黑白灰加一线香槟金，专注数据 */
  --fusion-accent: #2a2d31;
  --fusion-accent-ink: #2a2d31;
  --fusion-soft: #ecebe8;
  --fusion-indicator: #9c7d4e;
  --fusion-badge-soft: #f1ebe0;
  --fusion-badge-ink: #5f4a28;
  --fusion-ink: #18191b;
  --fusion-muted: #65686d;
  --fusion-canvas: #f5f5f4;
  --fusion-sidebar: #1e2023;
  --fusion-sidebar-ink: #a9aeb4;
  --fusion-sidebar-active: #35383d;
  --fusion-sidebar-active-ink: #ffffff;
  --fusion-sidebar-line: #2e3135;
  --fusion-selected: #f0efec;
  --fusion-line: #e4e4e2;
  --fusion-table: #ededeb;
  --fusion-body: #5e6166;
  --fusion-stale: #6e7176;
  --fusion-focus: #9c7d4e;
  --fusion-hero: linear-gradient(125deg, #1e2023 0%, #3a3d42 100%);
  --navy-dark: #1e2023;
}
:root[data-personal-theme] body { color: var(--fusion-ink); background: var(--fusion-canvas); }
:root[data-personal-theme] .app-shell .sidebar { background: var(--fusion-sidebar); color: var(--fusion-sidebar-ink); border-color: var(--fusion-sidebar-line); }
:root[data-personal-theme] .app-shell .sidebar .brand strong { color: var(--fusion-sidebar-active-ink); }
:root[data-personal-theme] .app-shell .sidebar :is(.brand div>span,.sidebar-label,.source-date,.weekly-session span) { color: var(--fusion-sidebar-ink); }
:root[data-personal-theme] .app-shell .sidebar .brand-mark { background: var(--fusion-sidebar-active); color: var(--fusion-sidebar-active-ink); box-shadow: none; }
:root[data-personal-theme] .app-shell .sidebar :is(.weekly-session,.primary-navigation>.more-navigation) { border-color: var(--fusion-sidebar-line); }
:root[data-personal-theme] .app-shell .sidebar .weekly-session button { color: var(--fusion-sidebar-ink); border-color: var(--fusion-sidebar-line); background: transparent; }
:root[data-personal-theme] .app-shell .sidebar .weekly-session button:hover { background: var(--fusion-sidebar-active); color: var(--fusion-sidebar-active-ink); }
:root[data-personal-theme] .button.primary { color: #fff; background: var(--fusion-accent); border-color: var(--fusion-accent); box-shadow: none; }
:root[data-personal-theme] .button.primary:hover:not(:disabled) { color: #fff; background: var(--fusion-accent); border-color: var(--fusion-accent); filter: brightness(.94); }
:root[data-personal-theme] :is(.text-link,.row-link) { color: var(--fusion-accent); }
:root[data-personal-theme] :is(input,select,textarea):focus { border-color: var(--fusion-focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--fusion-accent) 12%, transparent); }
:root[data-personal-theme] :is(button,a,input,select,textarea,summary):focus-visible { outline-color: var(--fusion-focus); }
.personal-theme-picker { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 14px; font-size: 12px; line-height: 1.5; color: var(--fusion-sidebar-ink); }
.personal-theme-label { font-weight: 600; }
.personal-theme-swatches { display: flex; align-items: center; gap: 8px; }
.personal-theme-swatch { width: 22px; height: 22px; padding: 0; border: 2px solid var(--fusion-sidebar); border-radius: 50%; background: var(--swatch); box-shadow: 0 0 0 1px var(--fusion-sidebar-line); cursor: pointer; }
.personal-theme-swatch[aria-checked="true"] { box-shadow: 0 0 0 2px var(--fusion-sidebar-active-ink); }
.personal-theme-swatch:hover { filter: brightness(1.08); }

.app-shell .sidebar .primary-navigation { position: relative; isolation: isolate; }
.primary-navigation > .nav-highlight { position: absolute; top: 0; left: 0; z-index: 0; display: block; pointer-events: none; border-radius: 9px; background: var(--fusion-sidebar-active); will-change: transform, width; }
.primary-navigation > .nav-highlight[hidden] { display: none; }
:root[data-personal-theme] .app-shell .sidebar .primary-navigation .nav-item { position: relative; z-index: 1; color: var(--fusion-sidebar-ink); background: transparent; }
:root[data-personal-theme] .app-shell .sidebar .primary-navigation .nav-item.active { background: transparent; color: var(--fusion-sidebar-active-ink); }
:root[data-personal-theme] .app-shell .sidebar .primary-navigation .nav-item.active:before { display: none; }
:root[data-personal-theme] .app-shell .sidebar .primary-navigation .nav-item:hover { background: color-mix(in srgb, var(--fusion-sidebar-active) 60%, transparent); color: var(--fusion-sidebar-active-ink); }
:root[data-personal-theme] .app-shell .sidebar .more-nav-menu { border-color: var(--fusion-sidebar-line); }
:root[data-personal-theme] .app-shell .sidebar .more-nav-item { color: var(--fusion-sidebar-ink); }
:root[data-personal-theme] .app-shell .sidebar .more-nav-item:is(:hover,.active) { background: var(--fusion-sidebar-active); color: var(--fusion-sidebar-active-ink); }
@media (max-width: 900px) {
  :root[data-personal-theme] .app-shell .sidebar .more-nav-menu { background: var(--fusion-sidebar); }
}
@media (max-width: 600px) {
  /* Phone: the dots sit in the empty right side of the brand row instead of taking a row. */
  .app-shell .sidebar .sidebar-bottom:has(.personal-theme-picker) { display: block; position: absolute; top: 18px; right: 16px; padding: 0; border: 0; }
  .app-shell .sidebar .sidebar-bottom > :not(.personal-theme-picker) { display: none; }
  .personal-theme-picker { margin: 0; }
  .personal-theme-label { display: none; }
  .personal-theme-swatch { width: 26px; height: 26px; }
  .primary-navigation > .nav-highlight { border-radius: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .primary-navigation > .nav-highlight { will-change: auto; }
}


:root[data-personal-theme] #main-content[data-page-route]{--ledger-teal:var(--fusion-accent);--ledger-ink:var(--fusion-ink);--ledger-muted:var(--fusion-muted);--ledger-canvas:var(--fusion-canvas);--ledger-line:var(--fusion-line);background:var(--fusion-canvas);}
:root[data-personal-theme] .app-shell .main-workspace{background:var(--fusion-canvas);}

:root[data-personal-theme] #main-content[data-page-route] .button.primary:hover:not(:disabled){background:var(--fusion-accent);border-color:var(--fusion-accent);filter:brightness(.94);}

/* Acknowledged ordinary saves return without an extra modal action.
   The notice sits at the lower left of the main column so it never covers the weekly panel on the right. */
.form-return-notice {
 position:fixed;inset-inline-start:232px;bottom:24px;z-index:130;
 max-width:calc(100vw - 256px);padding:12px 18px;border:1px solid var(--line,#d9e2eb);
 border-radius:10px;background:var(--surface,#fff);color:var(--primary);
 font-size:14px;font-weight:600;box-shadow:0 6px 22px rgba(24,42,68,.1);
}
@media(max-width:900px){.form-return-notice{inset-inline-start:204px;max-width:calc(100vw - 228px);}}
@media(max-width:600px){.form-return-notice{inset-inline:16px;bottom:16px;max-width:none;text-align:center;}}

/* ===== 状态色：项目阶段跟主题走；钱、待核与风险的红绿黄三套主题一致 ===== */
:root[data-personal-theme] .badge.blue { background: var(--fusion-badge-soft); color: var(--fusion-badge-ink); }
:root[data-personal-theme] .badge.stage-deal { background: var(--fusion-accent); color: #fff; }
:root[data-personal-theme] .badge.neutral { background: #eeeeec; color: #5c5c59; }
:root[data-personal-theme] .badge.green { background: #e3f1ea; color: #1f6b47; }
:root[data-personal-theme] .badge.amber { background: #f7eedc; color: #85570b; }
:root[data-personal-theme] .badge.danger { background: #fbe5e3; color: #b3261e; }
:root[data-personal-theme] #main-content[data-page-route] { --ledger-amber: #85570b; --ledger-violet: var(--fusion-accent-ink); }

/* 旧青绿色残留统一跟随主题 */
:root[data-personal-theme] #main-content[data-page-route] .row-next-step > span { color: var(--fusion-accent-ink); background: var(--fusion-soft); }
:root[data-personal-theme] #main-content[data-page-route] .section-tab:hover:not(.active) { background: var(--fusion-soft); color: var(--fusion-ink); }
:root[data-personal-theme] #main-content[data-page-route] .drilldown-filter { background: var(--fusion-soft); border-top-color: var(--fusion-line); }
:root[data-personal-theme] #main-content[data-page-route] :is(.business-project-table, .business-order-table) .owner-name { color: var(--fusion-accent-ink); background: var(--fusion-selected); border-color: var(--fusion-line); }
:root[data-personal-theme] #main-content[data-page-route] :is(.business-action, .business-order-table .row-end) .button { color: var(--fusion-accent); }
:root[data-personal-theme] :is(.project-progress-section, .project-progress-feed) :is(.progress-label, .row-copy-details summary, .progress-evidence > summary) { color: var(--fusion-accent-ink); }
:root[data-personal-theme] .collection-stage-filter { border-color: var(--fusion-line); color: var(--fusion-body); }
:root[data-personal-theme] .collection-stage-filter.active { background: var(--fusion-soft); border-color: color-mix(in srgb, var(--fusion-accent) 45%, transparent); color: var(--fusion-accent-ink); }

/* 收款页金额卡：主卡跟主题，其余文字回到主题墨色 */
:root[data-personal-theme] .collection-workspace .collection-financial-total { background: var(--fusion-hero); border-color: transparent; }
:root[data-personal-theme] .collection-workspace .collection-balance-bucket { color: var(--fusion-ink); border-color: var(--fusion-line); }
:root[data-personal-theme] .collection-workspace :is(.collection-confirmed-balance > span, .collection-reference-balance > span, .collection-stat-heading > span:first-child, .collection-stat-value .collection-stat-unit, .collection-stat .collection-stat-hint) { color: var(--fusion-muted); }
:root[data-personal-theme] .collection-workspace .collection-basis-pill { border-color: var(--fusion-line); background: var(--fusion-canvas); color: var(--fusion-muted); }
:root[data-personal-theme] .collection-workspace .collection-financial-total .collection-basis-pill { border-color: #ffffff30; background: #ffffff12; color: #f1f1f1; }
:root[data-personal-theme] .collection-workspace .collection-money-icon { color: var(--fusion-accent); background: var(--fusion-soft); }
:root[data-personal-theme] .collection-workspace .collection-reference-balance { background: var(--fusion-table); border-color: var(--fusion-line); }
:root[data-personal-theme] .collection-workspace .collection-reference-balance strong { color: var(--fusion-accent-ink); }
:root[data-personal-theme] .collection-workspace .collection-stat { border-color: var(--fusion-line); }
:root[data-personal-theme] .collection-workspace .collection-stat:not(.review):not(.overdue):not(.complete) .collection-stat-icon { color: var(--fusion-accent); background: var(--fusion-soft); }
:root[data-personal-theme] .collection-workspace .collection-stat-value strong { color: var(--fusion-ink); }

:root[data-personal-theme] .row-milestones :is(.row-milestone, .milestone-label) { color: var(--fusion-muted); border-color: currentColor; }
:root[data-personal-theme] .row-milestones .row-milestone time { color: var(--fusion-body); }

/* 订单收款进度：文字跟主题，到账绿色固定 */
:root[data-personal-theme] .op-terms { color: var(--fusion-ink); }
:root[data-personal-theme] .op-status { color: var(--fusion-ink); }
:root[data-personal-theme] .op-status.done { color: #1f6b47; }
:root[data-personal-theme] .op-status.unknown { color: #85570b; }
:root[data-personal-theme] :is(.op-sub, .op-next) { color: var(--fusion-muted); }
:root[data-personal-theme] .op-seg.done { background: #2e8b5e; border-color: #2e8b5e; }
:root[data-personal-theme] .op-seg.partial { background: linear-gradient(90deg, #2e8b5e 50%, var(--fusion-table) 50%); border-color: var(--fusion-line); }
:root[data-personal-theme] .op-seg.open { border-color: color-mix(in srgb, var(--fusion-muted) 45%, #fff); }
:root[data-personal-theme] a.op-seg:hover { outline-color: var(--fusion-accent); }
:root[data-personal-theme] .op-steps li { border-top-color: var(--fusion-line); color: var(--fusion-muted); }
:root[data-personal-theme] .op-steps li.past { border-color: color-mix(in srgb, var(--fusion-accent) 40%, #fff); color: var(--fusion-body); }
:root[data-personal-theme] .op-steps li.now { border-color: var(--fusion-accent); color: var(--fusion-ink); }
.op-seg { position: relative; }
.op-seg > em { position: relative; z-index: 1; }
.op-fill-sweep { position: absolute; inset: 0; z-index: 0; border-radius: inherit; transform-origin: left center; pointer-events: none; }

/* ===== 动效：沿用侧栏高亮的曲线，推广到页签与筛选 ===== */
:is(.section-tabs, .collection-stage-filters).has-slide-indicator { position: relative; isolation: isolate; }
.slide-indicator { position: absolute; top: 0; left: 0; z-index: 0; display: block; pointer-events: none; will-change: transform, width; }
.slide-indicator[hidden] { display: none; }
.has-slide-indicator > :is(.section-tab, .collection-stage-filter) { position: relative; z-index: 1; }
[data-indicator="line"] > .slide-indicator { top: auto; bottom: 0; height: 2px; border-radius: 2px 2px 0 0; background: var(--fusion-indicator, var(--blue)); }
.has-slide-indicator[data-indicator="line"] > .section-tab.active { border-bottom-color: transparent; }
[data-indicator="pill"] > .slide-indicator { border-radius: 8px; background: var(--ledger-teal, var(--fusion-accent)); }
:root[data-personal-theme] #main-content[data-page-route] .has-slide-indicator[data-indicator="pill"] > .section-tab.active { background: transparent; }
.collection-stage-filters[data-indicator="pill"] > .slide-indicator { border-radius: 9px; background: var(--fusion-soft); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--fusion-accent) 45%, transparent); }
:root[data-personal-theme] .collection-stage-filters.has-slide-indicator > .collection-stage-filter.active { background: transparent; border-color: transparent; }

/* 切换主题时颜色淡入，不硬切 */
:root.theme-fading, :root.theme-fading * { transition: background-color .24s ease, color .24s ease, border-color .24s ease, fill .24s ease, box-shadow .24s ease !important; }
@media (prefers-reduced-motion: reduce) {
  .slide-indicator { will-change: auto; }
  :root.theme-fading, :root.theme-fading * { transition: none !important; }
}

/* ===== 操作反馈 ===== */
/* 读取资料时刷新图标转动，读完停下 */
@keyframes ka-refresh-spin { to { transform: rotate(360deg); } }
.app-shell[aria-busy="true"] :is([data-focus="button:刷新"], [data-focus="button:刷新资料"]) svg { animation: ka-refresh-spin .9s linear infinite; }
/* 收款进度分段的即时提示（替代浏览器自带的慢提示） */
.motion-tip { position: fixed; z-index: 140; max-width: 280px; padding: 6px 9px; border-radius: 7px; background: var(--fusion-ink, #1c2733); color: #fff; font-size: 12px; line-height: 1.6; pointer-events: none; box-shadow: 0 6px 18px rgba(20, 24, 32, .18); opacity: 0; transform: translateY(3px); transition: opacity .12s ease, transform .12s ease; }
.motion-tip.show { opacity: 1; transform: none; }
.op-seg[data-tip] { cursor: default; }
a.op-seg[data-tip] { cursor: pointer; }
@media (prefers-reduced-motion: reduce) {
  .app-shell[aria-busy="true"] :is([data-focus="button:刷新"], [data-focus="button:刷新资料"]) svg { animation: none; }
  .motion-tip { transition: none; }
}

/* 统一配色（2026-10-26）：墨蓝做骨架，青绿做主色，金色做点缀；图表用一组克制的彩色区分类别。
   红色只表示逾期，已收用青绿、应收用琥珀。只改颜色，不改布局。 */
:root,
:root[data-personal-theme="glacier"] {
  --fusion-accent: #1f6267;
  --fusion-accent-ink: #174b50;
  --fusion-soft: #e3efed;
  --fusion-accent-soft: var(--fusion-soft);
  --fusion-indicator: #d4a03f;
  --fusion-badge-soft: #f5ebd5;
  --fusion-badge-ink: #765719;
  --fusion-hero: linear-gradient(118deg, #142638 0%, #1c3a50 46%, #1f6267 100%);
  --fusion-ink: #18232e;
  --fusion-muted: #67717b;
  --fusion-canvas: #f6f4ef;
  --fusion-sidebar: #15263a;
  --fusion-sidebar-ink: #b4c0cc;
  --fusion-sidebar-active: #233b52;
  --fusion-sidebar-active-ink: #ffffff;
  --fusion-sidebar-line: #22374b;
  --fusion-selected: #f0ede6;
  --fusion-line: #e6e1d7;
  --fusion-table: #f1ede5;
  --fusion-body: #4e5965;
  --fusion-stale: #77808a;
  --fusion-focus: #c9973f;
  --navy-dark: #15263a;
  /* 图表类别色：按排名依次取用 */
  --pal-1: #1f6267;
  --pal-2: #d4a03f;
  --pal-3: #c26a4a;
  --pal-4: #3f6f9c;
  --pal-5: #7c69a6;
  --pal-6: #5f9a70;
  --pal-7: #ae5878;
  --pal-8: #8c7b5b;
  --pf-other: #cbc5b9;
  /* 收款语义色 */
  --pal-paid: #2c8c7c;
  --pal-due: #e2b158;
  --pal-late: #c0453a;
}

/* 侧栏：深墨蓝，当前项左侧一道金线 */
:root[data-personal-theme] .app-shell .sidebar .primary-navigation .nav-item.active { background: transparent; box-shadow: none; }
.primary-navigation > .nav-highlight { box-shadow: inset 3px 0 var(--fusion-indicator); }
:root[data-personal-theme] .app-shell .sidebar .brand-mark { background: var(--fusion-indicator); color: #15263a; }

/* 大卡：底部一道金色细线 */
.pf-hero, .cb-board .cb-hero { box-shadow: inset 0 -3px 0 color-mix(in srgb, var(--fusion-indicator) 85%, transparent), 0 18px 40px -24px #142638aa; }
.pf-cross-arrow { color: var(--fusion-indicator); }
.pf-cross-label { color: var(--fusion-accent-ink); }

/* 图表：每个类别一种颜色 */
.pf-bar-fill { background: linear-gradient(90deg, color-mix(in srgb, var(--c, var(--pal-1)) 72%, #fff), var(--c, var(--pal-1))); box-shadow: 0 1px 4px -1px color-mix(in srgb, var(--c, var(--pal-1)) 55%, transparent); }
.pf-bar-track { background: color-mix(in srgb, var(--c, var(--pal-1)) 10%, #fff); }
.pf-col-fill { background: linear-gradient(180deg, var(--c, var(--pal-1)), color-mix(in srgb, var(--c, var(--pal-1)) 62%, #fff)); box-shadow: 0 4px 10px -6px var(--c, var(--pal-1)); }
.pf-bar.on, .pf-legend-item.on { background: color-mix(in srgb, var(--c, var(--pal-1)) 10%, #fff); border-color: color-mix(in srgb, var(--c, var(--pal-1)) 40%, transparent); }
.pf-chip { background: var(--fusion-badge-soft); color: var(--fusion-badge-ink); }

/* 收款：已收青绿、应收琥珀、逾期红 */
.cb-board { --cb-red: var(--pal-late); --cb-red-soft: #f9e6e3; --cb-green: var(--pal-paid); --cb-green-soft: #e0f1ed; --cb-amber: #b5832b; --cb-amber-soft: #f8eed8; }
.cb-board .cb-split-paid { background: linear-gradient(90deg, color-mix(in srgb, var(--pal-paid) 70%, #fff), var(--pal-paid)); }
.cb-board .cb-split-due { background: color-mix(in srgb, var(--pal-due) 62%, #fff); }
.cb-board .cb-track { background: repeating-linear-gradient(90deg, #efebe3 0 calc(25% - 1px), #fff calc(25% - 1px) 25%); }
.cb-board .cb-fill { background: linear-gradient(90deg, color-mix(in srgb, var(--pal-paid) 65%, #fff), var(--pal-paid)); }
.cb-board .cb-row.unpaid .cb-fill { background: var(--pal-due); }
.cb-board .cb-avatar { background: linear-gradient(140deg, #f5ebd5, #ead7ad); color: #6b4f17; box-shadow: none; }
.cb-seg.paid, .cb-dot.paid { background: #7fd3bf; }
.cb-seg.due, .cb-dot.due { background: #f0c672; }

/* 页面底纹：暖白底，右上角一抹青绿 */
.main-workspace:has(.pf-page) { background: radial-gradient(1100px 480px at 88% -140px, color-mix(in srgb, var(--fusion-accent) 10%, transparent), transparent 70%), radial-gradient(#18232e0b 1px, transparent 1.2px) 0 0/22px 22px, var(--fusion-canvas); }
@media (max-width: 900px) {
  .primary-navigation > .nav-highlight { box-shadow: inset 0 -3px var(--fusion-indicator); }
}

/* 用 Excel 更新：上传、核对变化、确认 */
.ledger-update { display: grid; gap: 16px; max-width: 1080px; padding-bottom: 88px; }
.ledger-update-start { display: grid; gap: 12px; justify-items: start; padding: 28px; }
.ledger-update-start h3, .ledger-update-summary h3 { margin: 0; font-size: 20px; }
.ledger-update-start p, .ledger-update-summary p { margin: 0; color: #5b6673; }
.ledger-update-pick { position: relative; overflow: hidden; cursor: pointer; }
.ledger-update-file { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.ledger-update-summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 20px 24px; }
.ledger-update-summary > div:first-child { display: grid; gap: 6px; }
.ledger-update-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.ledger-update-group { padding: 0; overflow: hidden; }
.ledger-update-group-head { display: flex; align-items: center; gap: 12px; padding: 14px 20px; }
.ledger-update-group-head input, .ledger-update-line input { width: 18px; height: 18px; accent-color: var(--fusion-accent, #1f6f6b); flex: none; }
.ledger-update-fold { flex: 1; display: flex; align-items: center; gap: 12px; background: none; border: 0; padding: 4px 0; font: inherit; color: inherit; cursor: pointer; text-align: left; }
.ledger-update-fold strong { font-size: 16px; }
.ledger-update-fold span { color: #6b7684; font-size: 13px; margin-right: auto; }
.ledger-update-fold svg { width: 16px; height: 16px; transition: transform .15s; }
.ledger-update-fold[aria-expanded="true"] svg { transform: rotate(90deg); }
.ledger-update-rows { border-top: 1px solid #ece7dd; }
.ledger-update-project { display: grid; grid-template-columns: 240px 1fr; gap: 8px 16px; padding: 12px 20px; border-bottom: 1px solid #f1ede5; }
.ledger-update-project:last-child { border-bottom: 0; }
.ledger-update-title { font-weight: 600; padding-top: 3px; overflow-wrap: anywhere; }
.ledger-update-lines { display: grid; gap: 6px; }
.ledger-update-line { display: grid; grid-template-columns: 18px 210px 1fr; gap: 4px 10px; align-items: start; cursor: pointer; }
.ledger-update-line.notice { cursor: default; }
.ledger-update-dot { width: 6px; height: 6px; margin: 8px 6px; border-radius: 50%; background: #b9b2a3; }
.ledger-update-label { color: #5b6673; }
.ledger-update-change { display: flex; gap: 10px; flex-wrap: wrap; overflow-wrap: anywhere; white-space: pre-line; }
.ledger-update-change s { color: #9aa2ad; }
.ledger-update-change b { font-weight: 600; color: #15263a; }
.ledger-update-note { grid-column: 2 / -1; color: #8a6a1f; font-size: 12.5px; }
.ledger-update-group.notice .ledger-update-change b { font-weight: 500; color: #5b6673; }
.ledger-update-bar { position: fixed; left: calc(var(--sidebar-width, 208px) + 24px); right: 24px; bottom: 16px; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 20px; border-radius: 14px; background: #15263a; color: #fff; box-shadow: 0 18px 40px -18px #142638cc; }
.ledger-update-wait { color: var(--fusion-accent-ink, #1f6f6b); }
@media (max-width: 900px) {
  .ledger-update-project { grid-template-columns: 1fr; }
  .ledger-update-line { grid-template-columns: 18px 1fr; }
  .ledger-update-change, .ledger-update-note { grid-column: 2; }
  .ledger-update-bar { left: 12px; right: 12px; bottom: 12px; }
}

/* ===== 2026-11 前端优化：项目清单与总览、收款同一个样子 ===== */
#main-content[data-page-route] .business-project-table.flat-project-table table { table-layout: fixed; min-width: 0; border-collapse: separate; border-spacing: 0; }
#main-content[data-page-route] .business-project-table.flat-project-table th { background: var(--fusion-table, #f3efe7); color: var(--fusion-muted, #5f6e7e); font-size: 12px; font-weight: 600; padding: 9px 12px; border: 0; white-space: nowrap; }
#main-content[data-page-route] .business-project-table.flat-project-table th:first-child { border-radius: 8px 0 0 8px; }
#main-content[data-page-route] .business-project-table.flat-project-table th:last-child { border-radius: 0 8px 8px 0; }
#main-content[data-page-route] .business-project-table.flat-project-table td { padding: 13px 12px; border-bottom: 1px solid var(--fusion-line, #e3e8ee); color: var(--fusion-body, #55677a); font-size: 13px; vertical-align: middle; background: transparent; }
#main-content[data-page-route] .business-project-table.flat-project-table .row-link { color: var(--fusion-ink, #1c2733); font-weight: 600; font-size: 14px; }
#main-content[data-page-route] .business-project-table.flat-project-table .compact-client { display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 4px 10px; }
#main-content[data-page-route] .business-project-table.flat-project-table .flat-progress time { font-size: 12px; color: var(--fusion-muted, #8a8f96); }
#main-content[data-page-route] .business-project-table.flat-project-table .flat-progress { gap: 1px; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-client { width: 17%; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-state { width: 10%; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-region { width: 10%; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-owner { width: 10%; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-requirement { width: 17%; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-followup { width: 25%; }
#main-content[data-page-route] .business-project-table.flat-project-table .business-age { width: 11%; text-align: right; }
#main-content[data-page-route] .business-project-table.flat-project-table tbody tr:hover td { background: var(--fusion-selected, #f8f6f1); }
.flat-state { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; line-height: 18px; white-space: nowrap; }
.flat-state-talk { background: #f6edd8; color: #8a6514; }
.flat-state-deal { background: #dcefeb; color: #1f6f6b; }
.flat-state-lost { background: #ece9e4; color: #7a746c; }
.flat-age { font-variant-numeric: tabular-nums; color: var(--fusion-body, #55677a); white-space: nowrap; }
.flat-age.stale { color: #9a6a1c; font-weight: 600; }
@media (max-width: 900px) {
  #main-content[data-page-route] .business-project-table.flat-project-table { overflow: visible; }
  #main-content[data-page-route] .desktop-business-table:has(.flat-project-table) .desktop-table-scroll-note { display: none; }
  #main-content[data-page-route] .business-project-table.flat-project-table table,
  #main-content[data-page-route] .business-project-table.flat-project-table tbody { display: block; min-width: 0; width: 100%; }
  #main-content[data-page-route] .business-project-table.flat-project-table thead { display: none; }
  #main-content[data-page-route] .business-project-table.flat-project-table tr { display: grid; grid-template-columns: auto 1fr auto; gap: 4px 12px; padding: 12px 14px; border-bottom: 1px solid var(--fusion-line, #e3e8ee); }
  #main-content[data-page-route] .business-project-table.flat-project-table td { display: block; padding: 0; border: 0; text-align: left; }
  #main-content[data-page-route] .business-project-table.flat-project-table td::before { display: none; }
  #main-content[data-page-route] .business-project-table.flat-project-table :is(.business-client, .business-state, .business-region, .business-owner, .business-requirement, .business-followup, .business-age) { width: auto; min-width: 0; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-client { grid-column: 1 / 3; grid-row: 1; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-state { grid-column: 3; grid-row: 1; justify-self: end; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-region { grid-column: 1; grid-row: 2; font-size: 12px; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-owner { grid-column: 2; grid-row: 2; font-size: 12px; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-requirement { display: none; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-followup { grid-column: 1 / 3; grid-row: 3; }
  #main-content[data-page-route] .business-project-table.flat-project-table .business-age { grid-column: 3; grid-row: 3; align-self: end; text-align: right; }
  #main-content[data-page-route] .business-project-table.flat-project-table .flat-clip { max-width: 100%; }
}
.flat-money { display: flex; flex-direction: column; gap: 4px; }
.flat-money strong { color: var(--fusion-ink, #1c2733); font-weight: 650; font-variant-numeric: tabular-nums; }
.flat-share { display: flex; align-items: center; gap: 8px; }
.flat-share-bar { width: 90px; height: 5px; border-radius: 3px; background: #ece7dd; overflow: hidden; }
.flat-share-bar > span { display: block; height: 100%; background: #2f8f86; border-radius: 3px; }
.flat-project-table .order-no { font-size: 12px; color: var(--fusion-muted, #8a8f96); font-variant-numeric: tabular-nums; }
#main-content[data-page-route] .flat-order-table .business-followup { width: 25%; }
/* 2026-11 收款页：红色只留在大卡“逾期”和明细的逾期标签 */
.cb-board .cb-row.late > summary { box-shadow: none; }
/* 2026-11 手机：三个主入口放到屏幕底部，顶部只留品牌名 */
@media (max-width: 600px) {
  .app-shell .sidebar { padding-bottom: 0; }
  .app-shell .sidebar .brand { padding: 12px 16px 10px; }
  :root .app-shell .sidebar nav.primary-navigation { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; margin: 0; padding: 6px 6px calc(6px + env(safe-area-inset-bottom)); overflow: visible; background: var(--fusion-sidebar, #16273d); border-top: 1px solid var(--fusion-sidebar-line, #2a3d55); box-shadow: 0 -6px 18px #0000001f; }
  .app-shell .sidebar nav.primary-navigation > .nav-highlight { display: none; }
  :root .app-shell .sidebar nav.primary-navigation :is(.nav-item, .more-navigation > summary) { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 52px; padding: 6px 2px; margin: 0; border-radius: 10px; font-size: 11.5px; line-height: 1.2; white-space: nowrap; background: transparent; }
  :root .app-shell .sidebar nav.primary-navigation :is(.nav-item, .more-navigation > summary) svg { width: 20px; height: 20px; }
  :root .app-shell .sidebar nav.primary-navigation .more-navigation > summary svg:last-child { display: none; }
  :root .app-shell .sidebar nav.primary-navigation :is(.nav-item.active, .more-navigation.active > summary) { color: #fff; background: var(--fusion-sidebar-active, #24405f); }
  :root .app-shell .sidebar nav.primary-navigation .nav-item.active::before { display: none; }
  .app-shell .sidebar nav.primary-navigation .more-navigation { position: relative; margin: 0; padding: 0; border: 0; }
  .app-shell .sidebar nav.primary-navigation .more-nav-menu { position: absolute; right: 4px; bottom: calc(100% + 10px); width: 190px; padding: 6px; border-radius: 12px; background: var(--fusion-sidebar, #16273d); box-shadow: 0 10px 28px #0000004d; display: grid; gap: 2px; }
  .app-shell .main-workspace, .app-shell #main-content { padding-bottom: calc(84px + env(safe-area-inset-bottom)); }
  /* 大卡片压矮一点，打开就能看到下面的图 */
  .pf-hero { padding: 20px 20px 18px; gap: 14px; }
  .pf-hero .pf-hero-number { font-size: 52px; }
  .pf-hero .pf-hero-stats { gap: 8px; }
  .pf-hero .pf-hero-stats > div { padding: 8px 10px; }
  .pf-hero .pf-hero-stats strong { font-size: 22px; }
  .pf-years { margin-bottom: 8px; }
}
@media (max-width: 600px) {
  .app-shell .sidebar .sidebar-bottom:not(:has(.personal-theme-picker)) { display: none; }
  .pf-cross-row { min-width: 0; max-width: 100%; overflow: hidden; }
  .pf-cross-row > * { max-width: 100%; min-width: 0; flex-wrap: nowrap; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 12px; }
  .cb-hero .pf-hero-currencies { display: flex; flex-wrap: nowrap; gap: 6px; overflow-x: auto; scrollbar-width: none; }
  .cb-hero .pf-hero-currencies li { flex: none; font-size: 12px; padding: 3px 9px; }
  .cb-hero .pf-hero-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .cb-hero .pf-hero-stats > div { display: flex; flex-direction: column; align-items: flex-start; padding: 8px 9px; min-width: 0; }
  .cb-hero .pf-hero-stats dd { display: flex; flex-direction: column; align-items: flex-start; gap: 0; margin: 0; }
  .cb-hero .pf-hero-stats strong { font-size: 19px; }
  .cb-hero .pf-hero-stats dd span { font-size: 10.5px; white-space: nowrap; }
}
