/* ===== 毛玻璃 UI · 玻璃拟态设计系统 ===== */
:root{
  --font-sans:"PingFang SC","Microsoft YaHei",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue",Arial,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
  --color-text-primary:#1e293b;
  --color-text-secondary:#64748b;
  --color-text-tertiary:#94a3b8;
  --color-text-info:#3b82f6;
  --color-brand:#3b82f6;
  --color-brand-hover:#2563eb;
  --color-success:#10b981;
  --color-warn:#f59e0b;
  --color-danger:#ef4444;
  --color-cyan:#0ea5e9;
  --color-purple:#8b5cf6;
  --color-background-secondary:rgba(247,250,255,.92);
  --color-background-tertiary:#e8eef5;
  --color-border:rgba(99,160,255,.3);
  /* 间距 token（4px 栅格） */
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-6:24px;
  /* 字号 token */
  --fs-xs:11px;
  --fs-sm:12px;
  --fs-base:13px;
  --fs-md:14px;
  --fs-lg:16px;
  --fs-xl:18px;
  --fs-2xl:22px;
  --fs-3xl:24px;
  /* 圆角 token */
  --radius-sm:6px;
  --radius-md:8px;
  --radius-lg:12px;
  --glass-bg:rgba(255,255,255,.55);
  --glass-bg-strong:rgba(255,255,255,.72);
  --glass-bg-subtle:rgba(255,255,255,.38);
  --glass-border:rgba(255,255,255,.65);
  --glass-border-inner:rgba(255,255,255,.85);
  --glass-blur:blur(20px) saturate(180%);
  --glass-blur-strong:blur(28px) saturate(200%);
  --glass-shadow:0 2px 8px rgba(0,0,0,.06),0 8px 32px rgba(0,0,0,.05),inset 0 1px 0 rgba(255,255,255,.9);
  --glass-shadow-hover:0 4px 16px rgba(0,0,0,.09),0 12px 40px rgba(0,0,0,.07),inset 0 1px 0 rgba(255,255,255,.95);
  --glass-input-bg:rgba(255,255,255,.5);
  --glass-input-border:rgba(255,255,255,.6);
  --glass-input-focus:rgba(99,160,255,.55);
  --glass-btn-bg:rgba(255,255,255,.45);
  --glass-btn-border:rgba(255,255,255,.55);
  --glass-btn-hover:rgba(255,255,255,.65);
  --glass-accent:linear-gradient(135deg,#3b82f6,#6366f1);
  --glass-accent-hover:linear-gradient(135deg,#2563eb,#4f46e5);
  --glass-dock-bg:rgba(255,255,255,.82);
  --glass-panel-bg:rgba(245,248,253,.92);
  --glass-overlay:rgba(15,23,42,.42);
  --surface-solid:#ffffff;
  --bg-module-gradient:linear-gradient(180deg,#e7f1fe 0%,#ebf2ff 40%,#f0f5fd 100%);
}
@media (prefers-color-scheme:dark){
  :root:not(.light){
    --color-text-primary:#e2e8f0;
    --color-text-secondary:#94a3b8;
    --color-text-tertiary:#64748b;
    --color-text-info:#60a5fa;
    --color-background-secondary:rgba(15,23,42,.92);
    --color-background-tertiary:#0f172a;
    --color-border:rgba(255,255,255,.18);
    --glass-bg:rgba(30,41,59,.55);
    --glass-bg-strong:rgba(30,41,59,.72);
    --glass-bg-subtle:rgba(30,41,59,.38);
    --glass-border:rgba(255,255,255,.12);
    --glass-border-inner:rgba(255,255,255,.08);
    --glass-shadow:0 2px 8px rgba(0,0,0,.3),0 8px 32px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.06);
    --glass-shadow-hover:0 4px 16px rgba(0,0,0,.4),0 12px 40px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.08);
    --glass-input-bg:rgba(30,41,59,.5);
    --glass-input-border:rgba(255,255,255,.1);
    --glass-input-focus:rgba(96,165,250,.5);
    --glass-btn-bg:rgba(51,65,85,.5);
    --glass-btn-border:rgba(255,255,255,.1);
    --glass-btn-hover:rgba(51,65,85,.7);
    --glass-accent:linear-gradient(135deg,#3b82f6,#6366f1);
    --glass-accent-hover:linear-gradient(135deg,#60a5fa,#818cf8);
    --glass-dock-bg:rgba(15,23,42,.82);
    --glass-panel-bg:rgba(15,23,42,.92);
    --glass-overlay:rgba(0,0,0,.6);
    --surface-solid:#1e293b;
    --bg-module-gradient:linear-gradient(180deg,#0f172a 0%,#1e293b 40%,#0f172a 100%);
  }
}
:root.dark{
  --color-text-primary:#e2e8f0;
  --color-text-secondary:#94a3b8;
  --color-text-tertiary:#64748b;
  --color-text-info:#60a5fa;
  --color-brand:#60a5fa;
  --color-brand-hover:#3b82f6;
  --color-success:#34d399;
  --color-warn:#fbbf24;
  --color-danger:#f87171;
  --color-cyan:#38bdf8;
  --color-purple:#a78bfa;
  --color-background-secondary:rgba(15,23,42,.92);
  --color-background-tertiary:#0f172a;
  --color-border:rgba(255,255,255,.18);
  --glass-bg:rgba(30,41,59,.55);
  --glass-bg-strong:rgba(30,41,59,.72);
  --glass-bg-subtle:rgba(30,41,59,.38);
  --glass-border:rgba(255,255,255,.12);
  --glass-border-inner:rgba(255,255,255,.08);
  --glass-shadow:0 2px 8px rgba(0,0,0,.3),0 8px 32px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.06);
  --glass-shadow-hover:0 4px 16px rgba(0,0,0,.4),0 12px 40px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.08);
  --glass-input-bg:rgba(30,41,59,.5);
  --glass-input-border:rgba(255,255,255,.1);
  --glass-input-focus:rgba(96,165,250,.5);
  --glass-btn-bg:rgba(51,65,85,.5);
  --glass-btn-border:rgba(255,255,255,.1);
  --glass-btn-hover:rgba(51,65,85,.7);
  --glass-accent:linear-gradient(135deg,#3b82f6,#6366f1);
  --glass-accent-hover:linear-gradient(135deg,#60a5fa,#818cf8);
  --glass-dock-bg:rgba(15,23,42,.82);
  --glass-panel-bg:rgba(15,23,42,.92);
  --glass-overlay:rgba(0,0,0,.6);
  --surface-solid:#1e293b;
  --bg-module-gradient:linear-gradient(180deg,#0f172a 0%,#1e293b 40%,#0f172a 100%);
}
/* ===== UI 优化层：深色模式修复 + 组件统一 + 看板增强 ===== */
/* 修复深色模式下硬编码颜色不可读问题 */
:root.dark .glass-card-title,
:root:not(.light) .glass-card-title{color:var(--color-text-primary)!important}
:root.dark .kanban-card .kc-amount,
:root:not(.light) .kanban-card .kc-amount{color:var(--color-text-info)!important}
:root.dark .cl-name,
:root:not(.light) .cl-name{color:var(--color-text-primary)!important}
:root.dark .cl-contact,
:root:not(.light) .cl-contact{color:var(--color-text-secondary)!important}
:root.dark .db-chart-card,
:root:not(.light) .db-chart-card{background:var(--glass-bg)!important;border-color:var(--glass-border)!important}
:root.dark .ws-stat,
:root:not(.light) .ws-stat{background:var(--glass-bg)!important}
:root.dark .gl-badge,
:root:not(.light) .gl-badge{color:var(--color-text-secondary)!important;background:rgba(148,163,184,.15)!important}
:root.dark .gl-btn.b-secondary,
:root:not(.light) .gl-btn.b-secondary{background:rgba(51,65,85,.5)!important;color:var(--color-text-primary)!important;border-color:var(--glass-border)!important}
:root.dark .gl-btn.b-ghost,
:root:not(.light) .gl-btn.b-ghost{color:var(--color-text-secondary)!important}
:root.dark .gl-btn.b-ghost:hover,
:root:not(.light) .gl-btn.b-ghost:hover{background:rgba(51,65,85,.4)!important}
/* 筛选 select 深色模式修复 */
:root.dark #tab-dashboard select,
:root:not(.light) #tab-dashboard select{background:var(--surface-solid)!important;color:var(--color-text-primary)!important;border-color:var(--glass-border)!important}
:root.dark #tab-dashboard select option,
:root:not(.light) #tab-dashboard select option{background:var(--surface-solid)!important;color:var(--color-text-primary)!important}
/* 统一数字字体 */
.sc-value,.ws-stat-value,.mod-stat .ms-value,.kc-amount,.cl-s-val{font-family:var(--font-mono)!important;font-variant-numeric:tabular-nums!important}
/* 经营看板：筛选栏优化为可换行布局 */
#tab-dashboard .glass-card > div[style*="grid-template-columns:auto repeat"]{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))!important;gap:var(--space-2)!important}
#tab-dashboard .glass-card > div[style*="grid-template-columns:auto repeat"] > span:first-child{grid-column:1/-1;font-size:var(--fs-sm)!important;font-weight:600!important;padding-bottom:var(--space-1)}
#tab-dashboard .glass-card > div[style*="grid-template-columns:auto repeat"] > button{grid-column:1/-1;justify-self:start;padding:var(--space-2) var(--space-4)!important;font-size:var(--fs-sm)!important}
#tab-dashboard select{padding:var(--space-1) var(--space-2)!important;font-size:var(--fs-sm)!important;border-radius:var(--radius-sm)!important;background:var(--surface-solid)!important;color:var(--color-text-primary)!important;border:1px solid var(--color-border)!important;min-height:28px}
/* KPI 指标卡（4个独立容器，6列布局中的第2-5列）：增大字号、统一节奏 */
#db-metric-revenue,#db-metric-cost,#db-metric-profit,#db-metric-status{display:flex;flex-direction:column}
#db-metric-revenue > div[style*="border-left"],#db-metric-cost > div[style*="border-left"],#db-metric-profit > div[style*="border-left"],#db-metric-status > div[style*="border-left"]{font-size:var(--fs-sm)!important;font-weight:600;margin-bottom:var(--space-2)!important;padding-left:var(--space-2)!important}
#db-metric-revenue > div[style*="flex-direction:column"],#db-metric-cost > div[style*="flex-direction:column"],#db-metric-profit > div[style*="flex-direction:column"],#db-metric-status > div[style*="flex-direction:column"]{gap:var(--space-2)!important;flex:1}
#db-metric-revenue > div > div,#db-metric-cost > div > div,#db-metric-profit > div > div,#db-metric-status > div > div{padding:var(--space-2) var(--space-3)!important;border-radius:var(--radius-md)!important;transition:transform .15s,box-shadow .15s}
#db-metric-revenue > div > div:hover,#db-metric-cost > div > div:hover,#db-metric-profit > div > div:hover,#db-metric-status > div > div:hover{transform:translateY(-1px);box-shadow:var(--glass-shadow)}
#db-metric-revenue > div > div > div:first-child,#db-metric-cost > div > div > div:first-child,#db-metric-profit > div > div > div:first-child,#db-metric-status > div > div > div:first-child{font-size:var(--fs-xs)!important;color:var(--color-text-tertiary)!important;margin-bottom:2px!important}
#db-metric-revenue > div > div > div:last-child,#db-metric-cost > div > div > div:last-child,#db-metric-profit > div > div > div:last-child,#db-metric-status > div > div > div:last-child{font-size:var(--fs-lg)!important;font-weight:700;font-family:var(--font-mono)!important;font-variant-numeric:tabular-nums;line-height:1.3}
/* 看板6列布局 + 图表区响应式断点 */
@media (max-width:1400px){
  #tab-dashboard > div[style*="grid-template-columns:repeat(6,minmax(0,1fr))"]{grid-template-columns:repeat(3,1fr)!important}
}
@media (max-width:1100px){
  #tab-dashboard > div[style*="grid-template-columns:repeat(6,minmax(0,1fr))"]{grid-template-columns:repeat(2,1fr)!important}
  #tab-dashboard > div[style*="grid-template-columns:repeat(4,1fr)"]{grid-template-columns:repeat(2,1fr)!important}
  #tab-dashboard > div[style*="grid-template-columns:repeat(4,1fr)"] > .glass-card[style*="grid-column:span 2"]{grid-column:span 2!important}
}
@media (max-width:768px){
  #tab-dashboard > div[style*="grid-template-columns:repeat(6,minmax(0,1fr))"]{grid-template-columns:1fr!important}
  #tab-dashboard > div[style*="grid-template-columns:repeat(4,1fr)"]{grid-template-columns:1fr!important}
  #tab-dashboard > div[style*="grid-template-columns:repeat(4,1fr)"] > .glass-card[style*="grid-column:span 2"]{grid-column:span 1!important}
}
/* 统一模块背景 */
#tab-orders,#tab-scheduling,#tab-clients,#tab-dashboard{background:var(--bg-module-gradient)!important}
/* 玻璃卡标题统一使用 token */
.glass-card-title{color:var(--color-text-primary)!important}
/* 主按钮使用渐变 */
.gl-btn.b-primary{background:var(--glass-accent)!important;color:#fff!important;border:none!important;font-weight:500}
.gl-btn.b-primary:hover{background:var(--glass-accent-hover)!important;box-shadow:0 2px 8px rgba(59,130,246,.3)}
/* 统一 badge 配色，收敛为 5 类 */
.gl-badge.b-ok{background:rgba(16,185,129,.12)!important;color:var(--color-success)!important}
.gl-badge.b-brand{background:rgba(59,130,246,.12)!important;color:var(--color-brand)!important}
.gl-badge.b-yellow,.gl-badge.b-warn{background:rgba(245,158,11,.12)!important;color:var(--color-warn)!important}
.gl-badge.b-bad{background:rgba(239,68,68,.12)!important;color:var(--color-danger)!important}
.gl-badge.b-cyan{background:rgba(14,165,233,.12)!important;color:var(--color-cyan)!important}
/* 顶部导航栏 tab 优化：字号统一、active 指示器使用品牌色 */
.topbar .tab{font-size:var(--fs-base)!important;padding:10px var(--space-4)!important;transition:color .15s,border-color .15s}
.topbar .tab.active{border-bottom-color:var(--color-brand)!important;color:var(--color-brand)!important;font-weight:600}
.topbar .tab:hover:not(.active){color:var(--color-text-secondary)!important}
/* 表格优化：专业数据表样式 */
.mod-table table,.order-table{font-size:var(--fs-sm)!important;border-collapse:collapse!important;width:100%!important}
.mod-table th,.order-table th{background:var(--glass-bg-strong)!important;color:var(--color-text-secondary)!important;font-weight:500!important;padding:var(--space-2) var(--space-3)!important;text-align:left!important;border-bottom:1px solid var(--color-border)!important;white-space:nowrap!important;font-size:var(--fs-xs)!important;text-transform:uppercase;letter-spacing:.3px}
.mod-table td,.order-table td{padding:var(--space-2) var(--space-3)!important;border-bottom:1px solid rgba(99,160,255,.12)!important;color:var(--color-text-primary)!important;white-space:nowrap!important}
.mod-table tbody tr:hover,.order-table tbody tr:hover{background:rgba(59,130,246,.04)!important}
.mod-table tbody tr:last-child td,.order-table tbody tr:last-child td{border-bottom:none!important}
/* 客户头像统一尺寸 */
.cl-avatar{width:40px!important;height:40px!important;border-radius:var(--radius-md)!important;font-size:var(--fs-lg)!important;display:flex!important;align-items:center!important;justify-content:center!important;font-weight:600!important;flex-shrink:0!important}
/* 搜索框响应式 */
.gl-search input{width:100%!important;max-width:220px;min-width:120px}
@media (max-width:768px){.gl-search input{max-width:none}}
/* 滚动条美化 */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(148,163,184,.3);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:rgba(148,163,184,.5)}
/* 卡片 hover 增强 */
.glass-card:hover{transform:translateY(-1px);box-shadow:var(--glass-shadow-hover)}
/* 大屏优化：1920px 居中内容 */
@media (min-width:1920px){
  #tab-dashboard,#tab-orders,#tab-clients,#tab-scheduling{max-width:1920px;margin:0 auto}
  #tab-dashboard .glass-card > div[style*="grid-template-columns:auto repeat"]{max-width:1600px}
}
/* 1366px 适配：筛选栏紧凑 */
@media (max-width:1440px){
  #tab-dashboard .glass-card > div[style*="grid-template-columns:auto repeat"]{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))!important}
}
/* ===== 全局背景：动态渐变 mesh ===== */
body{
  background:var(--color-background-tertiary);
  color:var(--color-text-primary);
  font-family:var(--font-sans);
}
body:before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(ellipse 70% 50% at 10% 15%,rgba(59,130,246,.12) 0,transparent 60%),
    radial-gradient(ellipse 60% 55% at 90% 85%,rgba(99,102,241,.1) 0,transparent 60%),
    radial-gradient(ellipse 50% 70% at 55% 5%,rgba(14,165,233,.08) 0,transparent 60%),
    radial-gradient(ellipse 45% 50% at 85% 30%,rgba(168,85,247,.06) 0,transparent 60%);
  animation:glassMeshShift 20s ease-in-out infinite alternate;
}
@keyframes glassMeshShift{
  0%{transform:translate(0,0) scale(1)}
  50%{transform:translate(-2%,1%) scale(1.03)}
  100%{transform:translate(1%,-1%) scale(1)}
}
@media (prefers-color-scheme:dark){:root:not(.light) body:before{
  background:
    radial-gradient(ellipse 70% 50% at 10% 15%,rgba(59,130,246,.08) 0,transparent 60%),
    radial-gradient(ellipse 60% 55% at 90% 85%,rgba(99,102,241,.07) 0,transparent 60%),
    radial-gradient(ellipse 50% 70% at 55% 5%,rgba(14,165,233,.05) 0,transparent 60%),
    radial-gradient(ellipse 45% 50% at 85% 30%,rgba(168,85,247,.04) 0,transparent 60%);
}}
:root.dark body:before{
  background:
    radial-gradient(ellipse 70% 50% at 10% 15%,rgba(59,130,246,.08) 0,transparent 60%),
    radial-gradient(ellipse 60% 55% at 90% 85%,rgba(99,102,241,.07) 0,transparent 60%),
    radial-gradient(ellipse 50% 70% at 55% 5%,rgba(14,165,233,.05) 0,transparent 60%),
    radial-gradient(ellipse 45% 50% at 85% 30%,rgba(168,85,247,.04) 0,transparent 60%);
}
/* ===== 毛玻璃组件 ===== */
.topbar{
  background:var(--glass-bg);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-border);
  box-shadow:0 1px 0 rgba(0,0,0,.06),0 4px 16px rgba(0,0,0,.04);
}
.card{
  background:var(--glass-bg);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  border-radius:14px;
  box-shadow:var(--glass-shadow);
  transition:box-shadow .25s,transform .25s;
}
.card:hover{
  box-shadow:var(--glass-shadow-hover);
  transform:translateY(-1px);
}
.field{
  background:var(--glass-input-bg);
  backdrop-filter:blur(8px) saturate(140%);
  -webkit-backdrop-filter:blur(8px) saturate(140%);
  border:1px solid var(--glass-input-border);
  border-radius:8px;
  transition:border-color .2s,box-shadow .2s;
}
.field:focus-within{
  border-color:var(--glass-input-focus);
  box-shadow:0 0 0 3px rgba(59,130,246,.12);
}
input[type=number],input[type=text],select,.sp-trigger{
  background:transparent;
  border:1px solid var(--color-border);
  border-radius:6px;
  transition:background .2s,border-color .2s,box-shadow .2s;
}
input[type=number]:focus,input[type=text]:focus,select:focus,.sp-trigger:focus{
  outline:none;
  background:rgba(255,255,255,.3);
  border-color:var(--glass-input-focus);
  box-shadow:0 0 0 3px rgba(59,130,246,.1);
}
@media (prefers-color-scheme:dark){:root:not(.light) input[type=number]:focus,:root:not(.light) input[type=text]:focus,:root:not(.light) select:focus,:root:not(.light) .sp-trigger:focus{
  background:rgba(30,41,59,.4);
}}
:root.dark input[type=number]:focus,:root.dark input[type=text]:focus,:root.dark select:focus,:root.dark .sp-trigger:focus{
  background:rgba(30,41,59,.4);
}
select{
  -webkit-appearance:none;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%2364748b' d='M0 0l5 6 5-6z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 8px center;
  background-size:10px;
}
.btn{
  background:var(--glass-btn-bg);
  backdrop-filter:blur(10px) saturate(150%);
  -webkit-backdrop-filter:blur(10px) saturate(150%);
  border:1px solid var(--glass-btn-border);
  border-radius:8px;
  transition:background .2s,box-shadow .2s,transform .15s;
}
.btn:hover{
  background:var(--glass-btn-hover);
  box-shadow:0 2px 12px rgba(0,0,0,.1);
}
.btn:active{transform:scale(.97)}
.btn.primary{
  background:var(--glass-accent);
  border-color:transparent;
  color:#fff;
  box-shadow:0 2px 12px rgba(59,130,246,.3);
}
.btn.primary:hover{
  background:var(--glass-accent-hover);
  box-shadow:0 4px 20px rgba(59,130,246,.4);
}
.metric{
  background:var(--glass-bg-subtle);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid var(--glass-input-border);
  border-radius:8px;
}
.bktable{
  background:var(--glass-bg-subtle);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
.bktable td{
  border-bottom:.5px solid var(--glass-input-border);
}
.bk-num{font-weight:700;color:var(--color-text-info);margin-right:2px;min-width:1.4em;display:inline-block;text-align:right}
.cost-summary-row td{
  background:linear-gradient(135deg,rgba(59,130,246,.1),rgba(99,102,241,.08));
  border-top:1px solid rgba(59,130,246,.2)!important;
}
/* ===== 费用明细文字颜色统一 ===== */
.bktable td,
.bktable td:first-child,
.bktable td:last-child,
.bk-val-cell,
.bk-val-cell span,
.metric .ml,
.metric .mv,
.cost-summary-row td,
.cost-summary-row td:last-child{
  color:#1e293b!important;
}
:root.dark .bktable td,
:root.dark .bktable td:first-child,
:root.dark .bktable td:last-child,
:root.dark .bk-val-cell,
:root.dark .bk-val-cell span,
:root.dark .metric .ml,
:root.dark .metric .mv,
:root.dark .cost-summary-row td,
:root.dark .cost-summary-row td:last-child{
  color:#f1f5f9!important;
}
.layout-candidate-list{
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur-strong);
  -webkit-backdrop-filter:var(--glass-blur-strong);
  border:1px solid var(--glass-border);
  box-shadow:0 -4px 20px rgba(0,0,0,.12),0 -1px 4px rgba(0,0,0,.08);
}
.sp-menu{
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur-strong);
  -webkit-backdrop-filter:var(--glass-blur-strong);
  border:1px solid var(--glass-border);
  box-shadow:0 8px 32px rgba(0,0,0,.15);
}
.hist-item{
  background:var(--glass-bg-subtle);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid var(--glass-input-border);
  border-radius:10px;
  transition:background .2s,box-shadow .2s;
}
.hist-item:hover{
  background:var(--glass-bg);
  box-shadow:var(--glass-shadow);
}
.hist-item .hist-bot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hist-del-btn{
  background:rgba(220,38,38,.1);color:#dc2626;border:1px solid rgba(220,38,38,.25);
  border-radius:6px;padding:3px 10px;font-size:11px;cursor:pointer;flex-shrink:0;
  transition:background .15s,border-color .15s;
}
.hist-del-btn:hover{background:rgba(220,38,38,.18);border-color:rgba(220,38,38,.4)}
.btn.btn-danger{
  background:rgba(220,38,38,.1);color:#dc2626;border:1px solid rgba(220,38,38,.25);
}
.btn.btn-danger:hover{background:rgba(220,38,38,.2);border-color:rgba(220,38,38,.45)}
.pill{
  background:var(--glass-btn-bg);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}
/* ===== 移动端毛玻璃 ===== */
.mobile-quickbar{
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--glass-shadow);
}
.mobile-quick-btn{
  background:var(--glass-btn-bg);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid var(--glass-btn-border);
  transition:background .2s;
}
.mobile-quick-btn:hover{background:var(--glass-btn-hover)}
.mobile-result-dock{
  background:var(--glass-dock-bg);
  backdrop-filter:var(--glass-blur-strong);
  -webkit-backdrop-filter:var(--glass-blur-strong);
  border:1px solid var(--glass-border);
  box-shadow:0 12px 36px rgba(15,23,42,.2);
}
.mobile-panel-backdrop{
  background:var(--glass-overlay);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
body.mobile-panel-open .split-right{
  background:var(--glass-panel-bg);
  backdrop-filter:var(--glass-blur-strong);
  -webkit-backdrop-filter:var(--glass-blur-strong);
  border:1px solid var(--glass-border);
  box-shadow:0 22px 70px rgba(15,23,42,.3);
}
.mobile-panel-head{
  background:var(--glass-panel-bg);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-input-border);
}
/* ===== 报价单毛玻璃 ===== */
.qt-page{
  background:var(--glass-bg-strong);
  backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--glass-shadow);
}
.qt-header{
  background:var(--glass-bg-subtle);
}
.factory-summary-item{
  background:var(--glass-bg-subtle);
  border:1px solid var(--glass-input-border);
}
.factory-table th{
  background:var(--glass-bg-subtle);
}
/* ===== 设置面板毛玻璃 ===== */
.settings-panel .field{
  background:var(--glass-input-bg);
}
.plate-tabs .pt{
  background:var(--glass-btn-bg);
  border:1px solid var(--glass-btn-border);
}
.plate-tabs .pt.active{
  background:var(--glass-accent);
  color:#fff;
}
/* ===== 滚动条毛玻璃风格 ===== */
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(99,160,255,.25);border-radius:6px}
::-webkit-scrollbar-thumb:hover{background:rgba(99,160,255,.4)}
@media (prefers-color-scheme:dark){:root:not(.light) ::-webkit-scrollbar-thumb{background:rgba(96,165,250,.2)}
:root:not(.light) ::-webkit-scrollbar-thumb:hover{background:rgba(96,165,250,.35)}}
:root.dark ::-webkit-scrollbar-thumb{background:rgba(96,165,250,.2)}
:root.dark ::-webkit-scrollbar-thumb:hover{background:rgba(96,165,250,.35)}
/* ===== 主题切换按钮 ===== */
.theme-toggle{
  margin-left:auto;
  padding:0 10px;
  background:var(--glass-btn-bg);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid var(--glass-btn-border);
  border-radius:7px;
  cursor:pointer;
  display:flex;align-items:center;gap:5px;
  font-size:11px;font-weight:600;
  color:var(--color-text-secondary);
  transition:all .25s;
  margin-top:5px;margin-bottom:5px;
  align-self:center;
  height:28px;
  position:relative;
  overflow:hidden;
}
.theme-toggle:hover{
  background:var(--glass-btn-hover);
  color:var(--color-text-primary);
  box-shadow:0 2px 8px rgba(0,0,0,.1);
}
.theme-toggle:active{transform:scale(.95)}
.theme-toggle .ti{
  font-size:14px;
  line-height:1;
  transition:transform .4s cubic-bezier(.34,1.56,.64,1);
}
.theme-toggle:hover .ti{transform:rotate(180deg)}
.theme-toggle .sun-icon{display:none}
.theme-toggle .moon-icon{display:block}
:root.dark .theme-toggle .sun-icon{display:block}
:root.dark .theme-toggle .moon-icon{display:none}
/* ===== 主题切换过渡动画 ===== */
*,*::before,*::after{
  transition:background-color .35s ease,color .35s ease,border-color .35s ease,box-shadow .35s ease;
}
/* ===== 工作台专用样式（匹配工作台.png配色） ===== */
#tab-workspace{
  background:linear-gradient(180deg,#e7f1fe 0%,#ebf2ff 40%,#f0f5fd 100%);
  padding:12px 16px;
  min-height:calc(100vh - 56px);
}
#tab-workspace .ws-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;padding:14px 18px;
  background:linear-gradient(135deg,rgba(168,185,249,.12),rgba(59,130,246,.06));
  border:1px solid rgba(168,185,249,.25);border-radius:12px;
}
#tab-workspace .ws-header .ws-title{font-size:18px;font-weight:700;color:#1e293b;display:flex;align-items:center;gap:8px}
#tab-workspace .ws-header .ws-title .ws-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;box-shadow:0 0 8px rgba(59,130,246,.4)}
#tab-workspace .ws-header .ws-sub{font-size:12px;color:#64748b;margin-left:6px}
#tab-workspace .ws-header .ws-date{font-size:12px;color:#64748b;font-variant-numeric:tabular-nums}
#tab-workspace .ws-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
#tab-workspace .ws-stat{
  background:linear-gradient(180deg,#ffffff 0%,#f5f8ff 100%);
  border:1px solid #d4e1fd;border-radius:10px;padding:14px 16px;
  position:relative;overflow:hidden;
}
#tab-workspace .ws-stat::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,#3b82f6,#60a5fa);
}
#tab-workspace .ws-stat.ws-green::before{background:linear-gradient(180deg,#22c55e,#4ade80)}
#tab-workspace .ws-stat.ws-cyan::before{background:linear-gradient(180deg,#0ea5e9,#38bdf8)}
#tab-workspace .ws-stat.ws-purple::before{background:linear-gradient(180deg,#6366f1,#818cf8)}
#tab-workspace .ws-stat .ws-stat-label{font-size:12px;color:#64748b;margin-bottom:6px;display:flex;align-items:center;gap:5px}
#tab-workspace .ws-stat .ws-stat-value{font-size:24px;font-weight:700;color:#1e293b;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
#tab-workspace .ws-stat .ws-stat-trend{font-size:11px;margin-top:4px;display:flex;align-items:center;gap:3px}
#tab-workspace .ws-stat .ws-stat-trend.up{color:#16a34a}
#tab-workspace .ws-stat .ws-stat-trend.down{color:#dc2626}
#tab-workspace .ws-stat .ws-stat-icon{
  position:absolute;right:10px;top:10px;width:32px;height:32px;
  border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:16px;
}
#tab-workspace .ws-stat .ws-stat-icon.blue{background:rgba(59,130,246,.1);color:#3b82f6}
#tab-workspace .ws-stat .ws-stat-icon.green{background:rgba(34,197,94,.1);color:#16a34a}
#tab-workspace .ws-stat .ws-stat-icon.cyan{background:rgba(14,165,233,.1);color:#0ea5e9}
#tab-workspace .ws-stat .ws-stat-icon.purple{background:rgba(99,102,241,.1);color:#6366f1}
#tab-workspace .ws-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
#tab-workspace .ws-card{
  background:#ffffff;border:1px solid #d4e1fd;border-radius:10px;
  padding:14px 16px;
}
#tab-workspace .ws-card .ws-card-title{
  font-size:14px;font-weight:600;color:#1e293b;margin-bottom:10px;
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:8px;border-bottom:1px solid #eef2ff;
}
#tab-workspace .ws-card .ws-card-title .ws-card-action{
  font-size:11px;color:#3b82f6;cursor:pointer;font-weight:400;
}
#tab-workspace .ws-recent-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:8px 0;border-bottom:1px solid #eef2ff;font-size:13px;
}
#tab-workspace .ws-recent-item:last-child{border-bottom:0}
#tab-workspace .ws-recent-item .ws-recent-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
#tab-workspace .ws-recent-item .ws-recent-tag{
  display:inline-block;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:500;flex-shrink:0;
}
#tab-workspace .ws-recent-item .ws-recent-tag.box{background:rgba(59,130,246,.1);color:#2563eb}
#tab-workspace .ws-recent-item .ws-recent-tag.card{background:rgba(99,102,241,.1);color:#4f46e5}
#tab-workspace .ws-recent-item .ws-recent-tag.label{background:rgba(14,165,233,.1);color:#0284c7}
#tab-workspace .ws-recent-item .ws-recent-client{color:#64748b;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#tab-workspace .ws-recent-item .ws-recent-amount{color:#1e293b;font-weight:600;font-variant-numeric:tabular-nums;flex-shrink:0}
#tab-workspace .ws-recent-item .ws-recent-date{font-size:10px;color:#94a3b8;flex-shrink:0;margin-left:8px}
#tab-workspace .ws-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#tab-workspace .ws-quick-btn{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:14px 8px;border-radius:8px;cursor:pointer;
  background:#f5f8ff;border:1px solid #e0e7ff;
  transition:all .2s ease;font-size:12px;color:#475569;
}
#tab-workspace .ws-quick-btn:hover{
  background:#eef4ff;border-color:#3b82f6;color:#2563eb;
  transform:translateY(-1px);box-shadow:0 4px 12px rgba(59,130,246,.12);
}
#tab-workspace .ws-quick-btn .ws-quick-icon{
  width:36px;height:36px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;font-size:18px;
}
#tab-workspace .ws-quick-btn .ws-quick-icon.q-blue{background:rgba(59,130,246,.12);color:#3b82f6}
#tab-workspace .ws-quick-btn .ws-quick-icon.q-green{background:rgba(34,197,94,.12);color:#16a34a}
#tab-workspace .ws-quick-btn .ws-quick-icon.q-cyan{background:rgba(14,165,233,.12);color:#0ea5e9}
#tab-workspace .ws-quick-btn .ws-quick-icon.q-purple{background:rgba(99,102,241,.12);color:#6366f1}
#tab-workspace .ws-quick-btn .ws-quick-icon.q-orange{background:rgba(249,115,22,.12);color:#ea580c}
#tab-workspace .ws-quick-btn .ws-quick-icon.q-teal{background:rgba(20,184,166,.12);color:#0d9488}
#tab-workspace .ws-todo-item{
  display:flex;align-items:center;gap:8px;padding:8px 0;
  border-bottom:1px solid #eef2ff;font-size:13px;
}
#tab-workspace .ws-todo-item:last-child{border-bottom:0}
#tab-workspace .ws-todo-dot{
  width:8px;height:8px;border-radius:50%;flex-shrink:0;
}
#tab-workspace .ws-todo-dot.urgent{background:#ef4444;box-shadow:0 0 6px rgba(239,68,68,.4)}
#tab-workspace .ws-todo-dot.normal{background:#f59e0b;box-shadow:0 0 6px rgba(245,158,11,.4)}
#tab-workspace .ws-todo-dot.done{background:#22c55e}
#tab-workspace .ws-todo-dot.pending{background:#94a3b8}
#tab-workspace .ws-todo-text{flex:1;color:#475569;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#tab-workspace .ws-todo-meta{font-size:11px;color:#94a3b8;flex-shrink:0}
#tab-workspace .ws-empty{
  text-align:center;padding:24px 12px;color:#94a3b8;font-size:13px;
}
#tab-workspace .ws-action-bar{
  display:flex;gap:8px;margin-bottom:14px;
}
#tab-workspace .ws-action-bar .btn{
  border-radius:8px;font-size:13px;padding:8px 16px;
}
#tab-workspace .ws-action-bar .btn.primary{
  background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:0;
  box-shadow:0 2px 8px rgba(59,130,246,.3);
}
#tab-workspace .ws-action-bar .btn.primary:hover{box-shadow:0 4px 14px rgba(59,130,246,.4)}
#tab-workspace .ws-action-bar .btn:not(.primary){
  background:#fff;border:1px solid #d4e1fd;color:#475569;
}
#tab-workspace .ws-action-bar .btn:not(.primary):hover{border-color:#3b82f6;color:#2563eb}
:root.dark #tab-workspace{
  background:linear-gradient(180deg,#1e293b 0%,#1e2a4a 40%,#1a2138 100%);
}
:root.dark #tab-workspace .ws-header{
  background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(59,130,246,.08));
  border-color:rgba(99,102,241,.25);
}
:root.dark #tab-workspace .ws-header .ws-title{color:#f1f5f9}
:root.dark #tab-workspace .ws-header .ws-sub,:root.dark #tab-workspace .ws-header .ws-date{color:#94a3b8}
:root.dark #tab-workspace .ws-stat{
  background:linear-gradient(180deg,#1e293b 0%,#1a2440 100%);
  border-color:#334155;
}
:root.dark #tab-workspace .ws-stat .ws-stat-label{color:#94a3b8}
:root.dark #tab-workspace .ws-stat .ws-stat-value{color:#f1f5f9}
:root.dark #tab-workspace .ws-card{
  background:#1e293b;border-color:#334155;
}
:root.dark #tab-workspace .ws-card .ws-card-title{color:#f1f5f9;border-bottom-color:#334155}
:root.dark #tab-workspace .ws-recent-item{border-bottom-color:#334155}
:root.dark #tab-workspace .ws-recent-item .ws-recent-client{color:#94a3b8}
:root.dark #tab-workspace .ws-recent-item .ws-recent-amount{color:#f1f5f9}
:root.dark #tab-workspace .ws-quick-btn{background:#1e293b;border-color:#334155;color:#cbd5e1}
:root.dark #tab-workspace .ws-quick-btn:hover{background:#1e3a5f;border-color:#3b82f6}
:root.dark #tab-workspace .ws-todo-item{border-bottom-color:#334155}
:root.dark #tab-workspace .ws-todo-text{color:#cbd5e1}
@media(max-width:768px){
  #tab-workspace .ws-grid{grid-template-columns:repeat(2,1fr)}
  #tab-workspace .ws-row{grid-template-columns:1fr}
  #tab-workspace .ws-quick-grid{grid-template-columns:repeat(2,1fr)}
}
/* ===== 通用模块样式（匹配图片浅蓝紫色系） ===== */
#tab-orders,#tab-scheduling,#tab-clients,#tab-dashboard{
  background:linear-gradient(180deg,#e7f1fe 0%,#ebf2ff 40%,#f0f5fd 100%);
  padding:12px 16px;min-height:calc(100vh - 56px);
}
/* ══ 玻璃态设计系统（移植自 React 项目）══ */
.dot-grid{background-image:radial-gradient(circle,rgba(99,102,241,.08) 1px,transparent 1px);background-size:20px 20px}
.glass-card{
  background:rgba(255,255,255,.4);
  backdrop-filter:blur(16px) saturate(1.5);
  -webkit-backdrop-filter:blur(16px) saturate(1.5);
  border:1px solid rgba(255,255,255,.5);
  border-radius:12px;
  box-shadow:0 1px 3px rgba(0,0,0,.04),0 4px 12px rgba(0,0,0,.03);
  transition:border-color .2s,box-shadow .2s;
}
.glass-card:hover{border-color:rgba(255,255,255,.8);box-shadow:0 2px 8px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.04)}
.glass-card-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px}
.glass-card-title{font-size:14px;font-weight:600;color:#1e293b;display:flex;align-items:center;gap:6px}
.glass-card-body{padding:0 16px 14px}
.glass-card-body.flush{padding:0}
.glass-divider{border-top:1px solid rgba(255,255,255,.4)}
/* StatCard */
.sc-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
/* 经营看板紧凑模式：让所有模块在一屏内显示 */
#tab-dashboard{padding:12px 16px!important}
#tab-dashboard .sc-row{gap:8px;margin-bottom:8px}
#tab-dashboard .sc-card{padding:8px 12px}
#tab-dashboard .sc-card .sc-value{font-size:18px}
#tab-dashboard .sc-card .sc-label{font-size:10px}
#tab-dashboard .glass-card-header{padding:8px 12px 4px}
#tab-dashboard .glass-card-title{font-size:13px}
#tab-dashboard .glass-card-body{padding:0 12px 8px}
#tab-dashboard .db-grid{gap:8px;margin-bottom:8px}
.sc-row.sc-5{grid-template-columns:repeat(5,1fr)}
.sc-row.sc-2{grid-template-columns:repeat(2,1fr)}
@media(max-width:900px){.sc-row,.sc-row.sc-5{grid-template-columns:repeat(2,1fr)}}
.sc-card{
  background:rgba(255,255,255,.4);
  backdrop-filter:blur(12px) saturate(1.4);
  -webkit-backdrop-filter:blur(12px) saturate(1.4);
  border:1px solid rgba(255,255,255,.5);
  border-radius:12px;
  padding:14px 16px;
  display:flex;align-items:center;justify-content:space-between;
  transition:transform .15s,box-shadow .15s,background .15s;
  cursor:pointer;
}
.sc-card:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(0,0,0,.06);background:rgba(255,255,255,.7)}
.sc-card .sc-info{flex:1;min-width:0}
.sc-card .sc-label{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.04em}
.sc-card .sc-value{font-size:22px;font-weight:700;color:#1e293b;font-variant-numeric:tabular-nums;line-height:1.2;margin-top:4px;font-family:'JetBrains Mono',monospace}
.sc-card .sc-value .sc-unit{font-size:12px;color:#94a3b8;font-weight:400;margin-left:3px}
.sc-card .sc-trend{font-size:11px;margin-top:4px;display:flex;align-items:center;gap:2px}
.sc-card .sc-trend.up{color:#06a77d}
.sc-card .sc-trend.down{color:#dc2626}
.sc-card .sc-trend.flat{color:#64748b}
.sc-card .sc-bar{width:4px;height:40px;border-radius:2px;flex-shrink:0;margin-left:12px}
.stat-card-scope .sc-card.stat-action{position:relative;padding-right:76px}
.stat-card-scope .sc-card.stat-action::after{
  content:attr(data-action-label);position:absolute;right:18px;bottom:10px;
  color:#64748b;font-size:10px;font-weight:600;letter-spacing:0;opacity:.72;
  transition:color .15s,opacity .15s,transform .15s
}
.stat-card-scope .sc-card.stat-action:hover::after{color:#2563eb;opacity:1;transform:translateX(2px)}
.stat-card-scope .sc-card.stat-action:active{transform:translateY(0) scale(.99)}
.stat-card-scope .sc-card.stat-action:focus-visible{outline:3px solid rgba(59,130,246,.28);outline-offset:2px}
.stat-card-scope .sc-card.stat-action.is-active{
  background:rgba(239,246,255,.92);border-color:rgba(59,130,246,.72);
  box-shadow:0 0 0 2px rgba(59,130,246,.12),0 5px 18px rgba(37,99,235,.10)
}
.stat-card-scope .sc-card.stat-action.is-active::after{content:"当前筛选 ✓";color:#2563eb;opacity:1}
.stat-feedback{
  display:flex;align-items:center;gap:8px;margin:-2px 0 12px;padding:7px 11px;
  border:1px solid rgba(59,130,246,.18);border-radius:8px;background:rgba(255,255,255,.52);
  color:#475569;font-size:12px;line-height:1.4
}
.stat-feedback[hidden]{display:none}
.stat-feedback strong{color:#1d4ed8}
.stat-feedback button{margin-left:auto;border:0;background:transparent;color:#2563eb;font-size:11px;cursor:pointer;padding:2px 4px}
:root.dark .stat-card-scope .sc-card.stat-action.is-active{background:rgba(30,64,175,.20);border-color:rgba(96,165,250,.72)}
:root.dark .stat-feedback{background:rgba(30,41,59,.62);border-color:rgba(96,165,250,.22);color:#cbd5e1}
:root.dark .stat-feedback strong{color:#93c5fd}
.sc-bar.b-brand{background:#3b82f6}
.sc-bar.b-cyan{background:#00aeef}
.sc-bar.b-ok{background:#06a77d}
.sc-bar.b-yellow{background:#eab908}
.sc-bar.b-bad{background:#dc2626}
.sc-bar.b-magenta{background:#ec008c}
.sc-bar.b-purple{background:#8b5cf6}
/* Badge */
.gl-badge{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 8px;border-radius:6px;font-size:11px;font-weight:500;line-height:1.4;
}
.gl-badge.b-neutral{background:rgba(100,116,139,.12);color:#475569}
.gl-badge.b-cyan{background:rgba(0,174,239,.12);color:#0090c8}
.gl-badge.b-magenta{background:rgba(236,0,140,.12);color:#c4167a}
.gl-badge.b-yellow{background:rgba(234,185,8,.14);color:#a8870a}
.gl-badge.b-ok{background:rgba(6,167,125,.12);color:#058566}
.gl-badge.b-bad{background:rgba(220,38,38,.12);color:#b91c1c}
.gl-badge.b-brand{background:rgba(59,130,246,.12);color:#2563eb}
.gl-badge.b-warn{background:rgba(245,158,11,.14);color:#b45309}
/* Buttons */
.gl-btn{
  display:inline-flex;align-items:center;gap:4px;
  padding:6px 12px;border-radius:8px;font-size:12px;font-weight:500;
  cursor:pointer;border:1px solid transparent;transition:all .15s;white-space:nowrap;
}
.gl-btn.b-primary{background:#3b82f6;color:#fff;border-color:#3b82f6}
.gl-btn.b-primary:hover{background:#2563eb}
.gl-btn.b-secondary{background:rgba(255,255,255,.5);color:#475569;border-color:rgba(255,255,255,.6)}
.gl-btn.b-secondary:hover{background:rgba(255,255,255,.7);color:#1e293b}
.gl-btn.b-ghost{background:transparent;color:#64748b}
.gl-btn.b-ghost:hover{background:rgba(255,255,255,.4);color:#1e293b}
.gl-btn:disabled{opacity:.45;cursor:not-allowed}
/* Kanban */
.kanban-col{flex-shrink:0;width:260px}
.kanban-col-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.kanban-list{display:flex;flex-direction:column;gap:8px}
.kanban-card{
  background:rgba(255,255,255,.4);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.5);border-radius:10px;padding:12px;
  cursor:pointer;transition:border-color .15s,transform .1s;
}
.kanban-card:hover{border-color:rgba(255,255,255,.8);transform:translateY(-1px)}
.kanban-card .kc-code{font-size:10px;color:#94a3b8;font-family:'JetBrains Mono',monospace}
.kanban-card .kc-name{font-size:13px;font-weight:500;color:#1e293b;margin:4px 0 2px}
.kanban-card .kc-sub{font-size:11px;color:#64748b;margin-bottom:6px}
.kanban-card .kc-foot{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#64748b}
.kanban-card .kc-amount{font-size:14px;font-weight:700;color:#3b82f6;font-family:'JetBrains Mono',monospace}
.kanban-progress{height:3px;border-radius:2px;background:rgba(255,255,255,.4);overflow:hidden;margin-top:6px}
.kanban-progress .kp-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#60a5fa);border-radius:2px}
.kanban-empty{border:1px dashed rgba(255,255,255,.6);border-radius:8px;padding:20px;text-align:center;font-size:11px;color:#94a3b8}
/* Drawer */
.gl-drawer{
  width:360px;flex-shrink:0;overflow-y:auto;
  border-left:1px solid rgba(255,255,255,.4);
  background:rgba(241,245,249,.6);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
}
.gl-drawer-head{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.4);background:rgba(241,245,249,.8);backdrop-filter:blur(8px);z-index:1}
/* Customer card */
.cl-card{
  background:rgba(255,255,255,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,.5);border-radius:8px;padding:10px;
  transition:border-color .2s;
}
.cl-card:hover{border-color:rgba(255,255,255,.8)}
.cl-avatar{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;background:rgba(59,130,246,.12);color:#3b82f6}
.cl-card-head{display:flex;align-items:flex-start;margin-bottom:7px}
.cl-card .cl-avatar{width:32px!important;height:32px!important;border-radius:8px!important;font-size:16px!important}
.cl-card-info{display:flex;align-items:center;gap:7px;min-width:0}
.cl-card-meta{display:flex;flex-direction:column;gap:3px;margin-bottom:7px}
.cl-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:7px 0}
.cl-stats .cl-stat{background:rgba(255,255,255,.5);border-radius:6px;padding:4px 3px;text-align:center}
.cl-stats .cl-stat .cl-s-label{font-size:10px;color:#94a3b8}
.cl-stats .cl-stat .cl-s-val{font-size:12px;font-weight:600;color:#1e293b;font-family:'JetBrains Mono',monospace}
.cl-card-actions{display:flex;gap:5px}
.cl-card-actions .gl-btn{min-height:28px;padding-top:3px;padding-bottom:3px;font-size:11px}
.cl-avatar.cute-rose{background:#ffe4e8;color:#c2415d}
.cl-avatar.cute-mint{background:#dff7ec;color:#08795d}
.cl-avatar.cute-sun{background:#fff1c7;color:#9a5b00}
.cl-avatar.cute-sky{background:#dff1ff;color:#1769aa}
.cl-avatar.cute-lilac{background:#eee7ff;color:#6846a5}
.cl-avatar.cute-coral{background:#ffe5da;color:#b84b2d}
.cl-avatar.cute-leaf{background:#e8f4d8;color:#4d7622}
.cl-avatar.cute-ice{background:#dff7f6;color:#147a78}
/* Progress bar */
.gl-progress{height:6px;border-radius:3px;background:rgba(255,255,255,.5);overflow:hidden}
.gl-progress .gp-fill{height:100%;border-radius:3px;transition:width .4s}
/* Filter tabs */
.gl-filters{display:flex;align-items:center;gap:4px}
.gl-filter-btn{padding:5px 10px;border-radius:6px;font-size:12px;color:#64748b;cursor:pointer;border:none;background:transparent;transition:all .15s}
.gl-filter-btn:hover{color:#1e293b}
.gl-filter-btn.active{background:rgba(59,130,246,.12);color:#3b82f6;font-weight:500}
/* Search input */
.gl-search{position:relative}
.gl-search input{
  width:220px;padding:6px 10px 6px 30px;border-radius:6px;
  border:1px solid rgba(255,255,255,.6);background:rgba(255,255,255,.5);
  font-size:13px;color:#1e293b;outline:none;transition:border-color .15s;
}
.gl-search input:focus{border-color:#3b82f6}
.gl-search input::placeholder{color:#94a3b8}
.gl-search .gl-search-icon{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-size:12px;color:#94a3b8}
.ord-filter-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.ord-client-filter{display:flex;align-items:center;gap:6px;padding:3px 5px 3px 9px;border:1px solid rgba(255,255,255,.65);border-radius:7px;background:rgba(255,255,255,.5);color:#64748b;font-size:11px;white-space:nowrap}
.ord-client-filter select{width:150px;min-height:28px;padding:3px 24px 3px 7px;border:0;border-left:1px solid rgba(148,163,184,.22);background:transparent;color:#334155;font-size:12px;outline:none;cursor:pointer}
:root.dark .ord-client-filter{background:rgba(30,41,59,.6);border-color:rgba(99,102,241,.2);color:#94a3b8}
:root.dark .ord-client-filter select{color:#e2e8f0;border-left-color:rgba(99,102,241,.2)}
@media (max-width:768px){.ord-filter-toolbar{align-items:stretch}.ord-filter-toolbar .gl-search{flex:1 1 100%}.ord-filter-toolbar .gl-search input{width:100%!important}.ord-client-filter{flex:1 1 180px;justify-content:space-between}.ord-client-filter select{width:min(190px,65vw)}#ord-filters{flex:1 1 100%;overflow-x:auto;padding-bottom:2px}}
/* Timeline */
.gl-timeline-step{display:flex;align-items:center;gap:10px}
.gl-timeline-dot{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;flex-shrink:0}
.gl-timeline-dot.done{background:rgba(6,167,125,.2);color:#058566}
.gl-timeline-dot.todo{background:rgba(255,255,255,.5);color:#94a3b8}
/* Dark mode for glass */
:root.dark .glass-card{background:rgba(30,41,59,.6);border-color:rgba(99,102,241,.2)}
:root.dark .glass-card:hover{border-color:rgba(99,102,241,.35)}
:root.dark .sc-card{background:rgba(30,41,59,.6);border-color:rgba(99,102,241,.2)}
:root.dark .sc-card .sc-label{color:#94a3b8}
:root.dark .sc-card .sc-value{color:#f1f5f9}
:root.dark .kanban-card{background:rgba(30,41,59,.6);border-color:rgba(99,102,241,.2)}
:root.dark .kanban-card .kc-name{color:#f1f5f9}
:root.dark .kanban-card .kc-sub{color:#94a3b8}
:root.dark .kanban-card .kc-code{color:#64748b}
:root.dark .gl-drawer{background:rgba(15,23,42,.7);border-color:rgba(99,102,241,.2)}
:root.dark .gl-drawer-head{background:rgba(15,23,42,.85);border-color:rgba(99,102,241,.2)}
:root.dark .cl-card{background:rgba(30,41,59,.6);border-color:rgba(99,102,241,.2)}
:root.dark .cl-stats .cl-stat{background:rgba(30,41,59,.6)}
:root.dark .cl-stats .cl-stat .cl-s-val{color:#f1f5f9}
:root.dark .gl-search input{background:rgba(30,41,59,.6);border-color:rgba(99,102,241,.2);color:#f1f5f9}
:root.dark .gl-search input::placeholder{color:#64748b}
:root.dark .gl-progress{background:rgba(30,41,59,.6)}
:root.dark .kanban-empty{border-color:rgba(99,102,241,.2);color:#64748b}

/* ══ 客户选择弹窗（转为订单）══ */
.cp-modal-overlay{
  position:fixed;inset:0;z-index:9999;
  background:rgba(15,23,42,.45);backdrop-filter:blur(6px);
  display:none;padding:20px;
}
.cp-modal-overlay.show{display:block}
.cp-modal{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:100%;max-width:420px;
  background:rgba(255,255,255,.85);backdrop-filter:blur(20px) saturate(160%);
  -webkit-backdrop-filter:blur(20px) saturate(160%);
  border:1px solid rgba(255,255,255,.7);border-radius:14px;
  box-shadow:0 8px 32px rgba(0,0,0,.15),0 2px 8px rgba(0,0,0,.08);
  overflow:hidden;animation:cp-pop .2s ease-out;
}
@keyframes cp-pop{from{transform:scale(.95) translate(-50%,-50%) translateY(8px);opacity:0}to{transform:scale(1) translate(-50%,-50%);opacity:1}}
.cp-modal.dragging{animation:none;transition:none}
.cp-modal-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid rgba(226,232,240,.7);
  background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(99,102,241,.04));
  cursor:move;user-select:none;-webkit-user-select:none;
}
.cp-modal-title{font-size:14px;font-weight:600;color:#1e293b;display:flex;align-items:center;gap:6px}
.cp-modal-title .cp-dot{width:6px;height:6px;border-radius:50%;background:#3b82f6;box-shadow:0 0 6px rgba(59,130,246,.5)}
.cp-close{
  width:24px;height:24px;border:none;background:transparent;
  color:#94a3b8;font-size:14px;cursor:pointer;border-radius:6px;
  display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;
}
.cp-close:hover{background:rgba(148,163,184,.15);color:#1e293b}
.cp-modal-body{padding:16px 18px;display:flex;flex-direction:column;gap:14px}
.cp-field{display:flex;flex-direction:column;gap:5px}
.cp-field label{font-size:12px;font-weight:500;color:#475569}
.cp-field select,.cp-field input{
  width:100%;padding:8px 10px;font-size:13px;color:#1e293b;
  background:rgba(255,255,255,.6);border:1px solid rgba(203,213,225,.6);
  border-radius:8px;outline:none;transition:border-color .15s,background .15s;
}
.cp-field select:focus,.cp-field input:focus{border-color:#3b82f6;background:rgba(255,255,255,.85)}
.cp-field select option{background:#fff;color:#1e293b}
.cp-new-box{
  padding:12px;border:1px dashed rgba(59,130,246,.3);
  background:rgba(59,130,246,.04);border-radius:8px;
  display:flex;flex-direction:column;gap:10px;animation:cp-pop .15s ease-out;
}
.cp-summary{
  padding:10px 12px;background:rgba(241,245,249,.6);
  border:1px solid rgba(226,232,240,.6);border-radius:8px;
  display:flex;flex-direction:column;gap:6px;
}
.cp-sum-row{display:flex;align-items:center;justify-content:space-between;font-size:12px}
.cp-sum-row span:first-child{color:#94a3b8}
.cp-sum-row span:last-child{color:#1e293b;font-family:'JetBrains Mono',monospace;font-weight:500}
.cp-modal-foot{
  display:flex;gap:8px;padding:12px 18px;border-top:1px solid rgba(226,232,240,.7);
  background:rgba(248,250,252,.5);justify-content:flex-end;
}
.cp-btn{
  padding:7px 16px;font-size:13px;font-weight:500;border-radius:8px;cursor:pointer;
  border:1px solid transparent;transition:background .15s,border-color .15s;
}
.cp-btn.cp-cancel{background:rgba(148,163,184,.12);color:#64748b;border-color:rgba(148,163,184,.25)}
.cp-btn.cp-cancel:hover{background:rgba(148,163,184,.2)}
.cp-btn.cp-confirm{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border-color:transparent}
.cp-btn.cp-confirm:hover{box-shadow:0 2px 8px rgba(59,130,246,.4)}
:root.dark .cp-modal{background:rgba(30,41,59,.9);border-color:rgba(99,102,241,.2)}
:root.dark .cp-modal-head{border-color:rgba(99,102,241,.15);background:linear-gradient(135deg,rgba(59,130,246,.12),rgba(99,102,241,.06))}
:root.dark .cp-modal-title{color:#f1f5f9}
:root.dark .cp-close{color:#64748b}
:root.dark .cp-close:hover{background:rgba(99,102,241,.15);color:#f1f5f9}
:root.dark .cp-field label{color:#cbd5e1}
:root.dark .cp-field select,:root.dark .cp-field input{background:rgba(15,23,42,.6);border-color:rgba(99,102,241,.2);color:#f1f5f9}
:root.dark .cp-field select option{background:#1e293b;color:#f1f5f9}
:root.dark .cp-new-box{background:rgba(59,130,246,.06);border-color:rgba(59,130,246,.25)}
:root.dark .cp-summary{background:rgba(15,23,42,.5);border-color:rgba(99,102,241,.15)}
:root.dark .cp-sum-row span:last-child{color:#f1f5f9}
:root.dark .cp-modal-foot{border-color:rgba(99,102,241,.15);background:rgba(15,23,42,.4)}

.mod-header{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:14px;padding:14px 18px;
  background:linear-gradient(135deg,rgba(168,185,249,.12),rgba(59,130,246,.06));
  border:1px solid rgba(168,185,249,.25);border-radius:12px;
}
.mod-header .mod-title{font-size:18px;font-weight:700;color:#1e293b;display:flex;align-items:center;gap:8px}
.mod-header .mod-title .mod-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;box-shadow:0 0 8px rgba(59,130,246,.4)}
.mod-header .mod-sub{font-size:12px;color:#64748b;margin-left:6px}
.mod-action-bar{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.mod-action-bar .btn{border-radius:8px;font-size:13px;padding:8px 16px}
.mod-action-bar .btn.primary{
  background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;border:0;
  box-shadow:0 2px 8px rgba(59,130,246,.3);
}
.mod-action-bar .btn.primary:hover{box-shadow:0 4px 14px rgba(59,130,246,.4)}
.mod-action-bar .btn:not(.primary){background:#fff;border:1px solid #d4e1fd;color:#475569}
.mod-action-bar .btn:not(.primary):hover{border-color:#3b82f6;color:#2563eb}
.mod-card{
  background:#fff;border:1px solid #d4e1fd;border-radius:10px;
  padding:14px 16px;margin-bottom:14px;
}
.mod-card .mod-card-title{
  font-size:14px;font-weight:600;color:#1e293b;margin-bottom:10px;
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:8px;border-bottom:1px solid #eef2ff;
}
.mod-card .mod-card-title .mod-card-action{font-size:11px;color:#3b82f6;cursor:pointer;font-weight:400}
.mod-table{width:100%;border-collapse:collapse;font-size:13px}
.mod-table thead th{
  text-align:left;padding:10px 12px;font-size:12px;font-weight:600;
  color:#64748b;background:#f5f8ff;border-bottom:2px solid #e0e7ff;
}
.mod-table thead th:first-child{border-top-left-radius:8px}
.mod-table thead th:last-child{border-top-right-radius:8px}
.mod-table tbody td{padding:10px 12px;border-bottom:1px solid #eef2ff;color:#1e293b}
.mod-table tbody tr:hover{background:#f5f8ff}
.mod-table tbody tr:last-child td{border-bottom:0}
.mod-empty{text-align:center;padding:32px 16px;color:#94a3b8;font-size:13px}
.mod-status{
  display:inline-block;padding:3px 10px;border-radius:12px;
  font-size:11px;font-weight:500;
}
.mod-status.s-pending{background:rgba(245,158,11,.12);color:#d97706}
.mod-status.s-progress{background:rgba(59,130,246,.12);color:#2563eb}
.mod-status.s-check{background:rgba(168,85,247,.12);color:#7c3aed}
.mod-status.s-ship{background:rgba(14,165,233,.12);color:#0284c7}
.mod-status.s-done{background:rgba(34,197,94,.12);color:#16a34a}
.mod-tag{
  display:inline-block;padding:2px 8px;border-radius:4px;
  font-size:11px;font-weight:500;
}
.mod-tag.t-box{background:rgba(59,130,246,.1);color:#2563eb}
.mod-tag.t-card{background:rgba(99,102,241,.1);color:#4f46e5}
.mod-tag.t-label{background:rgba(14,165,233,.1);color:#0284c7}
.mod-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.mod-stat{
  background:linear-gradient(180deg,#fff 0%,#f5f8ff 100%);
  border:1px solid #d4e1fd;border-radius:10px;padding:14px 16px;
  position:relative;overflow:hidden;
}
.mod-stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#3b82f6,#60a5fa)}
.mod-stat.ms-green::before{background:linear-gradient(180deg,#22c55e,#4ade80)}
.mod-stat.ms-cyan::before{background:linear-gradient(180deg,#0ea5e9,#38bdf8)}
.mod-stat.ms-purple::before{background:linear-gradient(180deg,#6366f1,#818cf8)}
.mod-stat.ms-orange::before{background:linear-gradient(180deg,#f59e0b,#fbbf24)}
.mod-stat .ms-label{font-size:12px;color:#64748b;margin-bottom:6px}
.mod-stat .ms-value{font-size:24px;font-weight:700;color:#1e293b;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.mod-stat .ms-icon{position:absolute;right:10px;top:10px;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px}
.mod-stat .ms-icon.blue{background:rgba(59,130,246,.1);color:#3b82f6}
.mod-stat .ms-icon.green{background:rgba(34,197,94,.1);color:#16a34a}
.mod-stat .ms-icon.cyan{background:rgba(14,165,233,.1);color:#0ea5e9}
.mod-stat .ms-icon.purple{background:rgba(99,102,241,.1);color:#6366f1}
.mod-stat .ms-icon.orange{background:rgba(245,158,11,.1);color:#d97706}
/* 生产排程专用 */
.sch-item{padding:12px 0;border-bottom:1px solid #eef2ff}
.sch-item:last-child{border-bottom:0}
.sch-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px}
.sch-item-head .sch-id{font-weight:600;color:#1e293b}
.sch-item-head .sch-meta{color:#64748b;font-size:12px;margin-left:8px}
.sch-stages{display:flex;gap:4px}
.sch-stage{
  flex:1;text-align:center;padding:6px 4px;border-radius:6px;
  font-size:11px;position:relative;
}
.sch-stage.done{background:rgba(34,197,94,.15);color:#16a34a}
.sch-stage.current{background:rgba(59,130,246,.18);color:#2563eb;font-weight:600;box-shadow:0 0 0 1px rgba(59,130,246,.3)}
.sch-stage.pending{background:#f1f5f9;color:#94a3b8}
.sch-stage.warn{background:rgba(245,158,11,.18);color:#d97706}
/* 经营看板专用 */
#tab-dashboard{background:linear-gradient(180deg,#e7f1fe 0%,#ebf2ff 40%,#f0f5fd 100%);padding:12px 16px;min-height:calc(100vh - 56px)}
#tab-dashboard .mod-stat-grid{grid-template-columns:repeat(5,1fr);gap:10px}
#tab-dashboard .mod-stat{padding:12px 14px}
#tab-dashboard .ms-value{font-size:20px;line-height:1.2;margin-top:4px}
.db-compare{display:flex;align-items:center;gap:4px;margin-top:6px;font-size:11px;font-weight:500}
.db-compare .dc-arrow{font-size:10px;line-height:1}
.db-compare.up{color:#16a34a}
.db-compare.down{color:#dc2626}
.db-compare.flat{color:#64748b}
.db-compare .dc-label{color:#94a3b8;font-weight:400}
.db-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.db-chart-card{background:#fff;border:1px solid #d4e1fd;border-radius:10px;padding:12px 14px;box-shadow:0 1px 3px rgba(59,130,246,.06)}
.db-chart-title{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:600;color:#1e293b;margin-bottom:10px}
.db-chart-title .db-legend{display:flex;gap:10px;font-size:11px;font-weight:400;color:#64748b}
.db-chart-title .db-legend span{display:inline-flex;align-items:center;gap:4px}
.db-chart-title .db-legend i{width:10px;height:10px;border-radius:2px;display:inline-block}
.db-chart-container{width:100%;position:relative}
.db-chart-container svg{display:block;width:100%;height:auto;max-width:100%}
.db-pie-wrap{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.db-pie-legend{display:flex;flex-direction:column;gap:6px;font-size:12px;flex:1;min-width:120px}
.db-pie-legend-item{display:flex;align-items:center;justify-content:space-between;gap:8px}
.db-pie-legend-item .pl-name{display:flex;align-items:center;gap:6px;color:#475569}
.db-pie-legend-item .pl-name i{width:10px;height:10px;border-radius:2px;display:inline-block}
.db-pie-legend-item .pl-val{color:#1e293b;font-weight:600;font-variant-numeric:tabular-nums}
.db-status-metric{
  width:100%;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:8px;
  box-sizing:border-box;padding:5px 7px;text-align:left;font:inherit;color:inherit;cursor:pointer;
  background:rgba(255,255,255,.7);backdrop-filter:blur(8px);
  border:1px solid rgba(0,0,0,.05);border-radius:6px;
  transition:transform .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease;
}
.db-status-metric:hover{transform:translateY(-1px);background:rgba(255,255,255,.92);border-color:rgba(37,99,235,.26);box-shadow:0 4px 12px rgba(37,99,235,.1)}
.db-status-metric:focus-visible{outline:2px solid #2563eb;outline-offset:2px}
.db-status-metric.active{background:rgba(239,246,255,.96);border-color:rgba(37,99,235,.5);box-shadow:0 0 0 1px rgba(37,99,235,.12)}
.db-status-metric-copy{min-width:0;display:flex;flex-direction:column}
.db-status-metric-label{font-size:9px;color:#64748b;margin-bottom:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.db-status-metric-value{font-size:13px;font-weight:700;font-family:monospace;line-height:1.2}
.db-status-metric-hint{flex-shrink:0;font-size:9px;font-weight:700;color:#2563eb;opacity:.72}
.db-status-detail{margin-bottom:8px;padding:12px 14px;scroll-margin-top:68px}
.db-status-detail[hidden]{display:none!important}
.db-status-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:8px}
.db-status-detail-title{padding-left:8px;border-left:3px solid #2563eb;font-size:14px;font-weight:800;color:#1e293b}
.db-status-detail-description{margin-top:3px;font-size:11px;color:#64748b}
.db-status-detail-close{width:28px;height:28px;flex-shrink:0;border:1px solid #dbeafe;border-radius:7px;background:rgba(255,255,255,.76);color:#64748b;font-size:18px;line-height:1;cursor:pointer}
.db-status-detail-close:hover{border-color:#93c5fd;color:#1d4ed8;background:#fff}
.db-status-detail-close:focus-visible,.db-detail-action:focus-visible{outline:2px solid #2563eb;outline-offset:2px}
.db-status-detail-summary{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;margin-bottom:8px;padding:7px 9px;border-radius:7px;background:rgba(248,250,252,.76);font-size:11px;color:#475569}
.db-status-detail-summary strong{color:#1e293b;font-family:monospace}
.db-status-detail-summary .negative{color:#dc2626;font-weight:700}
.db-status-detail-table-wrap{max-height:310px;overflow:auto;border:1px solid #e2e8f0;border-radius:8px;background:rgba(255,255,255,.58)}
.db-status-detail-table{width:100%;min-width:900px;border-collapse:collapse;font-size:11px}
.db-status-detail-table th{position:sticky;top:0;z-index:1;padding:7px 9px;text-align:left;white-space:nowrap;background:#f8fafc;color:#64748b;font-weight:700;border-bottom:1px solid #dbeafe}
.db-status-detail-table td{padding:8px 9px;color:#475569;border-bottom:1px solid #eef2f7;vertical-align:middle}
.db-status-detail-table tbody tr:last-child td{border-bottom:0}
.db-status-detail-table tbody tr:hover{background:rgba(239,246,255,.66)}
.db-status-detail-table td strong,.db-detail-primary{color:#1e293b}
.db-detail-secondary{margin-top:2px;color:#94a3b8;font-size:10px}
.db-detail-number{text-align:right;white-space:nowrap;font-family:monospace;font-variant-numeric:tabular-nums}
.db-detail-number.positive{color:#059669}
.db-detail-number.negative{color:#dc2626}
.db-detail-status,.db-detail-source{display:inline-block;padding:2px 6px;border-radius:999px;background:rgba(59,130,246,.08);color:#1d4ed8;white-space:nowrap;font-size:10px;font-weight:700}
.db-detail-status.overdue{background:rgba(220,38,38,.08);color:#dc2626}
.db-detail-source{background:rgba(100,116,139,.08);color:#64748b}
.db-detail-action{padding:4px 8px;border:1px solid rgba(37,99,235,.22);border-radius:6px;background:rgba(37,99,235,.07);color:#1d4ed8;font-size:10px;font-weight:700;white-space:nowrap;cursor:pointer}
.db-detail-action:hover{background:rgba(37,99,235,.14);border-color:rgba(37,99,235,.42)}
.db-detail-empty{padding:28px!important;text-align:center;color:#94a3b8!important}
.db-unpaid-filters{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.db-unpaid-filters label{display:flex;flex:1 1 230px;min-width:0;flex-direction:column;gap:4px;font-size:11px;color:#64748b}
.db-unpaid-filters input,.db-unpaid-filters select{box-sizing:border-box;width:100%;min-width:0;height:34px;padding:6px 9px;border:1px solid #cbd5e1;border-radius:7px;background:rgba(255,255,255,.85);color:#1e293b;font:inherit;font-size:12px}
.db-unpaid-filters input:focus-visible,.db-unpaid-filters select:focus-visible{outline:2px solid #2563eb;outline-offset:1px}
.db-unpaid-filters>.db-detail-action{min-height:34px}
:root.dark .db-unpaid-filters label{color:#94a3b8}
:root.dark .db-unpaid-filters input,:root.dark .db-unpaid-filters select{background:#1e293b;color:#f1f5f9;border-color:#475569}
@media(max-width:900px){
  #tab-dashboard .mod-stat-grid{grid-template-columns:repeat(2,1fr)}
  .db-chart-grid{grid-template-columns:1fr}
  .db-status-detail{padding:10px}
  .db-status-detail-table-wrap{max-height:360px}
}
/* 未收账款独立弹窗：位于完整订单详情层之下。 */
#db-status-detail.db-unpaid-modal{position:fixed;inset:0;z-index:100190;display:flex;align-items:center;justify-content:center;margin:0;padding:24px;box-sizing:border-box;border:0;border-radius:0;background:rgba(27,49,77,.52);backdrop-filter:none;box-shadow:none;scroll-margin:0}
#db-status-detail.db-unpaid-modal::before,#db-status-detail.db-unpaid-modal::after{display:none}
.db-unpaid-dialog{display:flex;flex-direction:column;width:min(1440px,100%);max-height:calc(100dvh - 48px);min-height:0;overflow:hidden;padding:24px;box-sizing:border-box;background:#fff;border:1px solid #dbe7f6;border-radius:14px;box-shadow:0 24px 70px rgba(15,23,42,.22);color:#19345c;font-size:14px}
.db-unpaid-modal .db-status-detail-head{flex-shrink:0;margin-bottom:24px;gap:12px}
.db-unpaid-modal .db-status-detail-title{margin:0;padding:0;border:0;font-size:25px;line-height:1.35;color:#142e51}
.db-unpaid-modal .db-status-detail-description{font-size:14px;margin-top:7px;color:#526c90}
.db-unpaid-head-actions{display:flex;align-items:center;gap:20px;flex-shrink:0}
.db-unpaid-return{border:0;background:transparent;color:#1670ef;cursor:pointer;font:inherit;padding:8px 0}
.db-unpaid-modal .db-status-detail-close{width:36px;height:36px;border:0;background:transparent;font-size:29px;color:#19345c}
.db-unpaid-content{min-height:0;overflow:auto;overscroll-behavior:contain}
.db-unpaid-modal .db-unpaid-filters{gap:18px;margin-bottom:22px;align-items:center}
.db-unpaid-modal .db-unpaid-filters label{flex:0 1 390px;flex-direction:row;align-items:center;gap:12px;font-size:14px;white-space:nowrap;color:#294873}
.db-unpaid-modal .db-unpaid-filters input,.db-unpaid-modal .db-unpaid-filters select{height:40px;font-size:14px;background:#fff;border-color:#c8d9f2}
.db-unpaid-modal .db-detail-action{min-height:38px;padding:7px 12px;font-size:14px;border-color:#cfddf1;background:#f7faff}
.db-unpaid-modal .db-status-detail-summary{display:grid;grid-template-columns:1.1fr 1fr 1.15fr 1fr;gap:0;padding:20px 24px;margin:0 0 12px;background:#f2f8ff;border-radius:10px;font-size:14px;color:#294873}
.db-unpaid-modal .db-status-detail-summary>div{display:flex;flex-direction:column;gap:8px;min-width:0;padding:0 24px;border-right:1px solid #cfdef1}
.db-unpaid-modal .db-status-detail-summary>div:first-child{padding-left:0}
.db-unpaid-modal .db-status-detail-summary>div:last-child{border-right:0;padding-right:0}
.db-unpaid-modal .db-status-detail-summary strong{font:700 25px/1.3 var(--font-sans);color:#18345c;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.db-unpaid-modal .db-status-detail-summary .db-unpaid-count{color:#1670ef;font-size:30px}
.db-unpaid-modal .db-status-detail-summary .db-unpaid-amount{color:#dc5200;font-size:30px}
.db-unpaid-modal .db-status-detail-summary .db-unpaid-overdue{color:#dc2626;font-size:27px}
.db-unpaid-sort{text-align:right;color:#627b9b;font-size:12px;padding:0 0 9px}
.db-unpaid-sort span{font-size:11px}
.db-unpaid-modal .db-status-detail-table-wrap{max-height:360px;border:0;border-radius:5px;background:#fff;overscroll-behavior:contain}
.db-unpaid-modal .db-status-detail-table{font-size:14px;min-width:1050px}
.db-unpaid-modal .db-status-detail-table th{padding:12px 14px;background:#eaf3ff;color:#294873;font-size:13px;border:0}
.db-unpaid-modal .db-status-detail-table th:nth-child(n+3):nth-child(-n+5){text-align:right}
.db-unpaid-modal .db-status-detail-table td{padding:14px;color:#294873;border-bottom:1px solid #e5edf8}
.db-unpaid-modal .db-status-detail-table td:nth-child(2){min-width:200px;max-width:320px;overflow-wrap:anywhere}
.db-unpaid-modal .db-detail-secondary{font-size:12px;line-height:1.4;color:#627b9b}
.db-unpaid-modal .db-unpaid-row-client{font-size:11px}
.db-unpaid-modal .db-detail-number{font-family:var(--font-sans);font-weight:600}
.db-unpaid-modal .db-status-detail-table td.db-unpaid-amount{color:#df5600;font-weight:700}
.db-unpaid-modal .db-detail-status,.db-unpaid-modal .db-detail-source{padding:5px 9px;border-radius:5px;font-size:12px}
.db-unpaid-modal td .db-detail-action{padding:5px 0;border:0;background:transparent;color:#1670ef}
.db-unpaid-list-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px;border-bottom:1px solid #dce7f6;font-size:14px}
.db-unpaid-list-footer strong{margin-left:14px;color:#df5600;font-size:23px;font-variant-numeric:tabular-nums}
.db-unpaid-dialog-footer{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:16px;padding-top:20px;color:#6a82a1;font-size:12px}
.db-unpaid-close{min-width:100px;min-height:42px;padding:8px 24px;border:1px solid #c8d9f2;border-radius:7px;background:#fff;color:#19345c;font:inherit;font-size:15px;cursor:pointer}
.db-unpaid-dialog button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}
/* Isolate readable controls from the app-wide glass button/input overrides. */
#db-status-detail.db-unpaid-modal :is(button,input,select){box-shadow:none!important;text-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-radius:6px!important;transform:none!important;font-size:14px!important}
#db-status-detail.db-unpaid-modal :is(input,select,.db-unpaid-close){background:#fff!important;border:1px solid #c8d9f2!important;color:#19345c!important}
#db-status-detail.db-unpaid-modal .db-unpaid-filters>.db-detail-action{background:#f7faff!important;border:1px solid #c8d9f2!important;color:#19345c!important}
#db-status-detail.db-unpaid-modal :is(.db-unpaid-return,td .db-detail-action){background:transparent!important;border:0!important;color:#1670ef!important}
#db-status-detail.db-unpaid-modal .db-status-detail-close{background:transparent!important;border:0!important;color:#19345c!important;font-size:29px!important}
:root.dark .db-unpaid-dialog{background:#172337;border-color:#3d5473;color:#e2e8f0}
:root.dark .db-unpaid-modal .db-status-detail-title,:root.dark .db-unpaid-modal .db-status-detail-close,:root.dark .db-unpaid-modal .db-status-detail-summary strong,:root.dark .db-unpaid-modal .db-status-detail-table td,:root.dark .db-unpaid-modal .db-detail-primary,:root.dark .db-unpaid-modal td strong{color:#e2e8f0}
:root.dark .db-unpaid-modal .db-status-detail-summary,:root.dark .db-unpaid-modal .db-status-detail-table th{background:#243750;color:#cbd5e1}
:root.dark .db-unpaid-modal .db-status-detail-table-wrap,:root.dark .db-unpaid-modal input,:root.dark .db-unpaid-modal select,:root.dark .db-unpaid-close{background:#172337;color:#e2e8f0}
:root.dark .db-unpaid-modal .db-unpaid-amount,:root.dark .db-unpaid-modal .db-status-detail-summary .db-unpaid-amount{color:#fb923c}
:root.dark .db-unpaid-modal .db-status-detail-description,:root.dark .db-unpaid-modal .db-detail-secondary,:root.dark .db-unpaid-modal .db-unpaid-filters label{color:#a6b8d1}
:root.dark #db-status-detail.db-unpaid-modal :is(input,select,.db-unpaid-close,.db-unpaid-filters>.db-detail-action){background:#243750!important;border-color:#4a6283!important;color:#e2e8f0!important}
:root.dark #db-status-detail.db-unpaid-modal .db-status-detail-close{color:#e2e8f0!important}
:root.dark .db-unpaid-modal .db-status-detail-table tbody tr:hover{background:#243750}
@media(max-width:700px){
 #db-status-detail.db-unpaid-modal{padding:0;align-items:stretch}
 .db-unpaid-dialog{width:100%;height:100dvh;max-height:100dvh;padding:16px 12px calc(12px + env(safe-area-inset-bottom));border:0;border-radius:0}
 .db-unpaid-modal .db-status-detail-title{font-size:21px}
 .db-unpaid-modal .db-status-detail-description{font-size:12px}
 .db-unpaid-modal .db-status-detail-head{margin-bottom:16px}
 .db-unpaid-return{display:none}
 .db-unpaid-modal .db-unpaid-filters{gap:10px;margin-bottom:16px}
 .db-unpaid-modal .db-unpaid-filters label{flex:1 1 100%;font-size:13px;gap:8px}
 .db-unpaid-modal .db-status-detail-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 10px;padding:16px 12px}
 .db-unpaid-modal .db-status-detail-summary>div{padding:0;border:0;font-size:12px;gap:5px}
 .db-unpaid-modal .db-status-detail-summary strong,.db-unpaid-modal .db-status-detail-summary .db-unpaid-count,.db-unpaid-modal .db-status-detail-summary .db-unpaid-amount,.db-unpaid-modal .db-status-detail-summary .db-unpaid-overdue{font-size:20px}
 .db-unpaid-modal .db-status-detail-table-wrap{max-height:none;overflow:visible}
 .db-unpaid-modal .db-status-detail-table,.db-unpaid-modal tbody{display:block;min-width:0;width:100%}
 .db-unpaid-modal thead{display:none}
 .db-unpaid-modal tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:16px 0;border-bottom:1px solid #dce7f6}
 .db-unpaid-modal .db-status-detail-table td{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0;border:0;min-width:0!important;max-width:none!important;text-align:left;font-size:14px;white-space:normal;overflow-wrap:anywhere}
 .db-unpaid-modal td::before{content:attr(data-label);font-size:11px;color:#7185a1;font-weight:400}
 .db-unpaid-modal td:nth-child(2){grid-column:1/-1;grid-row:1}
 .db-unpaid-modal td:nth-child(8){justify-content:flex-end}
 .db-unpaid-modal td:nth-child(8)::before,.db-unpaid-modal td.db-detail-empty::before{display:none}
 .db-unpaid-modal td.db-detail-empty{grid-column:1/-1;align-items:center}
 .db-unpaid-list-footer{padding:14px 0;flex-wrap:wrap;font-size:12px}
 .db-unpaid-list-footer strong{font-size:20px;margin-left:6px}
 .db-unpaid-dialog-footer{padding-top:12px;font-size:11px}
 .db-unpaid-close{min-width:72px;padding:8px 16px}
}
/* 经营看板：经营结果 → 收款/风险 → 分析 → 状态。 */
#tab-dashboard.db-redesign{padding:20px 24px!important;color:#19345c}
.db-redesign .db-panel{min-width:0;padding:20px;border:1px solid #e6eef9;border-radius:12px;background:rgba(255,255,255,.87);box-shadow:0 2px 9px rgba(45,72,112,.025)}
.db-page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}
.db-page-head h1{margin:0;font-size:28px;line-height:1.3;color:#142b4a}
.db-page-head p{margin:5px 0 0;color:#7085a1;font-size:13px}
.db-page-actions{display:flex;gap:10px;flex-shrink:0}
.db-redesign h2{margin:0;font-size:17px;line-height:1.4;color:#172d4c;font-weight:700}
#tab-dashboard.db-redesign :is(button,select,input){box-shadow:none!important;backdrop-filter:none!important;text-shadow:none!important;border-radius:6px!important;font-size:13px!important;transform:none!important}
#tab-dashboard.db-redesign :is(.db-page-actions button,.db-section-head>button,.db-filter-bar select,.db-filter-bar input){min-height:36px;padding:6px 12px!important;border:1px solid #cddcf1!important;background:#fff!important;color:#224366!important}
.db-filter-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.db-redesign .db-filter-bar{padding:12px 14px}
.db-filter-bar select{min-width:120px;max-width:240px;flex:0 1 auto}
.db-filter-bar #db-f-mode{min-width:210px}
.db-filter-bar #db-f-custom-range{gap:6px;align-items:center}
.db-filter-bar #db-f-custom-range input{min-width:0;width:140px}
.db-filter-note{font-size:11px;color:#7085a1;flex:1 1 230px;text-align:right}
.db-overview{margin-bottom:14px}
.db-core-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
#db-metric-profit{display:contents}
.db-core-metric{min-width:0;padding:3px 24px 12px;border-right:1px solid #dce6f4;color:#19345c}
#db-metric-revenue .db-core-metric{padding-left:6px}
.db-core-metric[data-db-metric="margin"]{border-right:0}
.db-core-metric>span{display:block;font-size:16px;margin-bottom:10px}
.db-core-metric strong{font-size:clamp(24px,2.7vw,38px);line-height:1.2;font-weight:750;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.db-blue{color:#126afb}.db-positive{color:#079766}.db-negative{color:#dc2626!important}
.db-core-metric>span{color:#1c365b}
.db-metric-meta{display:flex;justify-content:center;gap:32px;flex-wrap:wrap;padding-top:16px;margin-top:14px;border-top:1px solid #dfE8f5;font-size:12px;color:#7085a1}
.db-metric-meta strong{margin-left:8px;color:#19345c;font-size:16px;font-variant-numeric:tabular-nums}
.db-attention-grid{display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,2.25fr);gap:16px;margin-bottom:16px}
.db-receivable-panel{display:flex;flex-direction:column;align-items:flex-start}
.db-scope-badge{display:inline-block;margin-left:8px;padding:3px 8px;border-radius:6px;background:#edf4fc;color:#6480a0;font-size:11px;font-weight:400;vertical-align:middle}
.db-receivable-amount{font-size:clamp(28px,3vw,38px);font-weight:750;color:#c75a00;line-height:1.4;margin-top:16px;overflow-wrap:anywhere;max-width:100%;font-variant-numeric:tabular-nums}
.db-overdue-line{font-size:13px;margin:8px 0 18px;color:#294467}.db-overdue-line strong{color:#dc2626;margin-left:8px}
.db-scope-note{font-size:11px;color:#7185a1;margin:5px 0 12px;line-height:1.5}
#tab-dashboard.db-redesign .db-unpaid-entry{margin-top:auto;width:100%;padding:12px;border:0!important;background:#176cf8!important;color:white!important;font-size:15px!important;cursor:pointer}
.db-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px;flex-wrap:wrap}
.db-section-head .db-scope-note{margin:0}
.db-risk-badge{display:inline-block;padding:3px 8px;margin-left:8px;border-radius:6px;background:#fff0f0;color:#dc2626;font-size:11px;font-weight:500}
.db-abnormal-scroll{max-height:215px;overflow:auto;overscroll-behavior:contain}
.db-abnormal-table{width:100%;border-collapse:collapse;font-size:12px;text-align:left}
.db-abnormal-table th{position:sticky;top:0;background:#edf4fc;white-space:nowrap;color:#486282;font-size:11px;padding:9px;z-index:1}
.db-abnormal-table td{padding:9px;border-bottom:1px solid #e5edf8;vertical-align:middle;color:#253f64}
.db-abnormal-table td:nth-child(1){max-width:180px;overflow-wrap:anywhere}
.db-abnormal-table td:nth-child(2){max-width:230px}
.db-abnormal-table td:nth-child(3),.db-abnormal-table td:nth-child(4){white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}
.db-abnormal-table th:nth-child(3),.db-abnormal-table th:nth-child(4){text-align:right}
.db-abnormal-table small{display:block;color:#7286a2;font-size:10px;margin-top:4px;line-height:1.35}
.db-abnormal-table tr[role="button"]{cursor:pointer}
.db-abnormal-table tr[role="button"]:hover{background:#f5f9ff}
.db-abnormal-table tr[role="button"]:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}
.db-risk-tag{display:inline-block;padding:3px 7px;background:#fff5dc;color:#b67a09;border-radius:5px;white-space:nowrap;font-size:11px}
.db-risk-tag.is-loss{background:#fff0f0;color:#dc2626}
.db-row-link{color:#1670ef;white-space:nowrap}
.db-abnormal-more{padding-top:8px;color:#7185a1;font-size:11px}
.db-analysis-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px;margin-bottom:16px}
.db-trend-legend{display:flex;gap:12px;font-size:11px;color:#7185a1}
.db-trend-legend span::before{content:'';display:inline-block;width:7px;height:7px;background:#3b82f6;border-radius:50%;margin-right:5px}
.db-trend-legend span:nth-child(2)::before{background:#00aeef}.db-trend-legend span:nth-child(3)::before{background:#06a77d}
#db-trend-chart svg{display:block;width:100%;max-height:240px}
#db-cost-structure{margin-top:16px}
.db-cost-total{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #dce7f4;margin-top:12px;padding-top:12px;font-size:13px}
.db-business-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.db-client-ranking{display:flex;flex-direction:column;gap:12px;margin-top:18px}
.db-client-ranking>div{display:grid;grid-template-columns:minmax(80px,1fr) minmax(40px,2fr) auto;align-items:center;gap:12px;font-size:12px}
.db-client-ranking>div>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.db-client-ranking strong{font-weight:600;font-variant-numeric:tabular-nums}
.db-client-track{height:9px;background:#e5edf8;border-radius:3px;overflow:hidden}
.db-client-track i{display:block;height:100%;background:#3686fc;border-radius:3px}
.db-mix-bar{display:flex;height:22px;border-radius:6px;overflow:hidden;margin:22px 0 18px}.db-mix-bar span{height:100%}
.db-mix-legend{display:flex;gap:20px;justify-content:space-between;flex-wrap:wrap}.db-mix-legend>div{display:flex;flex-direction:column;gap:8px;font-size:13px}.db-mix-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px}.db-mix-legend strong{font-size:15px}.db-mix-legend small{font-size:12px;color:#7185a1;font-weight:400;margin-left:8px}
.db-status-panel{margin-bottom:16px}
#db-metric-status{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}
#tab-dashboard.db-redesign #db-metric-status .db-status-metric{padding:6px 20px;border:0!important;border-right:1px solid #dce7f4!important;border-radius:0!important;background:transparent!important;color:#19345c!important;min-width:0}
#tab-dashboard.db-redesign #db-metric-status .db-status-metric:last-child{border:0!important}
#tab-dashboard.db-redesign .db-status-metric-value{font-size:27px;color:#1670ef!important;line-height:1.4;font-weight:700}
.db-redesign .db-status-metric-label{font-size:13px;color:#19345c}.db-redesign .db-status-metric-hint{font-size:12px;color:#1670ef}
.db-more-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}
.db-more-grid details{min-width:0}.db-more-grid summary{padding:10px 12px;border:1px solid #d6e2f3;border-radius:6px;font-size:13px;cursor:pointer;list-style-position:inside}
.db-more-grid details[open]>div{padding-top:14px}
.db-chart-empty{padding:24px;text-align:center;font-size:13px;color:#7185a1}
.db-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%);white-space:nowrap!important;border:0!important}
/* Tight receivables toolbar; the flexible order list owns the remaining height. */
#db-status-detail.db-unpaid-modal{padding:16px}
.db-unpaid-dialog{width:min(1560px,100%);height:calc(100dvh - 32px);max-height:calc(100dvh - 32px);padding:12px 16px}
.db-unpaid-modal .db-status-detail-head{margin-bottom:8px;align-items:center}
.db-unpaid-modal .db-status-detail-title{font-size:19px}
.db-unpaid-modal .db-status-detail-description{font-size:11px;margin-top:2px}
.db-unpaid-head-actions{gap:12px}.db-unpaid-return{font-size:12px}
.db-unpaid-content{display:flex;flex:1;min-height:0;flex-direction:column;overflow:hidden}
.db-unpaid-modal .db-unpaid-filters{flex-shrink:0;gap:10px;margin-bottom:8px}
.db-unpaid-modal .db-unpaid-filters label{flex:0 1 320px;font-size:12px;gap:8px}
.db-unpaid-modal .db-unpaid-filters input,.db-unpaid-modal .db-unpaid-filters select{height:32px;padding:4px 8px}
.db-unpaid-modal .db-unpaid-filters>.db-detail-action{min-height:32px;padding:4px 10px}
.db-unpaid-modal .db-status-detail-summary{flex-shrink:0;display:flex;align-items:center;flex-wrap:wrap;gap:10px 24px;padding:8px 12px;margin:0 0 6px;font-size:11px}
.db-unpaid-modal .db-status-detail-summary>div{flex-direction:row;align-items:center;gap:8px;padding:0;border:0;font-size:11px}
.db-unpaid-modal .db-status-detail-summary strong,.db-unpaid-modal .db-status-detail-summary .db-unpaid-count,.db-unpaid-modal .db-status-detail-summary .db-unpaid-amount,.db-unpaid-modal .db-status-detail-summary .db-unpaid-overdue{font-size:16px;line-height:1.3}
.db-unpaid-sort{flex-shrink:0;padding:0 0 5px;font-size:11px}
.db-unpaid-modal .db-status-detail-table-wrap{flex:1;min-height:0;max-height:none;overflow:auto}
.db-unpaid-modal .db-status-detail-table th{padding:8px 10px;font-size:12px}
.db-unpaid-modal .db-status-detail-table td{padding:7px 10px;font-size:13px}
.db-unpaid-modal .db-detail-secondary{font-size:11px;margin-top:1px}
.db-unpaid-modal td .db-detail-action{min-height:32px}
.db-unpaid-list-footer{flex-shrink:0;padding:7px 10px;font-size:12px}
.db-unpaid-list-footer strong{font-size:17px}
.db-unpaid-dialog-footer{padding-top:7px;font-size:11px}
.db-unpaid-close{min-height:32px;min-width:76px;padding:5px 16px}
@media(max-width:1000px){
 .db-attention-grid{grid-template-columns:minmax(210px,1fr) minmax(0,2fr)}
 .db-core-metric{padding-left:14px;padding-right:14px}.db-core-metric strong{font-size:26px}
 .db-filter-note{text-align:left;flex-basis:100%}
 .db-abnormal-table{min-width:560px}
}
@media(max-width:700px){
 #tab-dashboard.db-redesign{padding:14px 12px!important}
 .db-page-head{align-items:flex-start;flex-direction:column;margin-bottom:12px;gap:12px}.db-page-head h1{font-size:24px}.db-page-head p{font-size:12px}.db-page-actions{width:100%}.db-page-actions button{flex:1}
 .db-redesign .db-panel{padding:14px}.db-redesign h2{font-size:16px}
 .db-filter-bar{gap:8px}.db-filter-bar select{flex:1 1 42%;min-width:0;max-width:none;width:100%}.db-filter-bar #db-f-mode{flex-basis:100%;min-width:0}.db-filter-bar #db-f-custom-range{flex-basis:100%;width:100%}.db-filter-bar #db-f-custom-range input{width:50%;flex:1}
 .db-core-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 0}.db-core-metric{padding:0 10px}.db-core-metric>span{font-size:13px;margin-bottom:6px}.db-core-metric strong{font-size:clamp(18px,5.3vw,26px)}
 #db-metric-cost .db-core-metric{border:0}.db-core-metric[data-db-metric="profit"]{padding-left:6px}
 .db-metric-meta{justify-content:flex-start;gap:7px 16px;padding-top:10px;margin-top:14px;font-size:11px}.db-metric-meta strong{font-size:12px;margin-left:4px}
 .db-attention-grid,.db-analysis-grid,.db-business-grid{grid-template-columns:1fr;gap:12px;margin-bottom:12px}
 .db-receivable-amount{margin-top:10px;font-size:32px}.db-overdue-line{margin:3px 0 9px}
 .db-abnormal-scroll{max-height:300px}.db-abnormal-table{display:block;min-width:0;width:100%}.db-abnormal-table thead{display:none}.db-abnormal-table tbody{display:block}
 .db-abnormal-table tr[role="button"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px 0;border-bottom:1px solid #e5edf8}
 .db-abnormal-table td{display:block;min-width:0;max-width:none!important;padding:0;border:0;overflow-wrap:anywhere}
 .db-abnormal-table td:first-child,.db-abnormal-table td:nth-child(2){grid-column:1/-1}.db-abnormal-table td:first-child small{display:inline;margin-left:8px}
 .db-abnormal-table td:nth-child(3),.db-abnormal-table td:nth-child(4){text-align:left;white-space:normal}.db-abnormal-table td:nth-child(3)::before,.db-abnormal-table td:nth-child(4)::before{display:block;color:#7185a1;font-size:10px;margin-bottom:3px}
 .db-abnormal-table td:nth-child(3)::before{content:'订单金额'}.db-abnormal-table td:nth-child(4)::before{content:'利润 / 毛利率'}
 .db-abnormal-table td:last-child{grid-column:1/-1;text-align:right}
 .db-trend-legend{gap:8px;font-size:10px}.db-client-ranking>div{gap:8px;grid-template-columns:minmax(60px,1fr) minmax(24px,1fr) auto;font-size:11px}
 .db-mix-legend{gap:10px}.db-mix-legend>div{font-size:12px}.db-mix-legend strong{font-size:13px}.db-mix-legend small{margin-left:4px}
 #tab-dashboard.db-redesign #db-metric-status .db-status-metric{padding:0 8px;display:flex;flex-direction:column;align-items:flex-start;gap:6px}.db-redesign .db-status-metric-label{font-size:11px}#tab-dashboard.db-redesign .db-status-metric-value{font-size:23px}.db-redesign .db-status-metric-hint{font-size:11px}
 .db-more-grid{grid-template-columns:1fr;gap:8px}
 #db-status-detail.db-unpaid-modal{padding:0}
 .db-unpaid-dialog{height:100dvh;max-height:100dvh;padding:8px 10px calc(8px + env(safe-area-inset-bottom))}
 .db-unpaid-modal .db-status-detail-title{font-size:18px}.db-unpaid-modal .db-status-detail-description{font-size:10px}.db-unpaid-modal .db-status-detail-head{margin-bottom:6px}
 .db-unpaid-modal .db-unpaid-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:6px;align-items:end;margin-bottom:6px}
 .db-unpaid-modal .db-unpaid-filters label{font-size:10px;flex-direction:column;align-items:stretch;gap:3px}
 #db-status-detail.db-unpaid-modal .db-unpaid-filters :is(input,select,button){font-size:12px!important}
 .db-unpaid-modal .db-status-detail-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px;padding:6px 8px}
 .db-unpaid-modal .db-status-detail-summary>div{display:flex;flex-wrap:wrap;font-size:10px;gap:3px 6px}
 .db-unpaid-modal .db-status-detail-summary strong,.db-unpaid-modal .db-status-detail-summary .db-unpaid-count,.db-unpaid-modal .db-status-detail-summary .db-unpaid-amount,.db-unpaid-modal .db-status-detail-summary .db-unpaid-overdue{font-size:14px}
 .db-unpaid-sort{font-size:10px}.db-unpaid-sort span{font-size:9px}
 .db-unpaid-modal .db-status-detail-table-wrap{overflow:auto}
 .db-unpaid-modal tbody tr{grid-template-columns:repeat(3,minmax(0,1fr));padding:9px 0;gap:6px}
 .db-unpaid-modal .db-status-detail-table td{padding:0;font-size:12px;gap:2px}
 .db-unpaid-modal td::before{font-size:10px}
 .db-unpaid-modal td:nth-child(2){grid-column:1/3;grid-row:1}.db-unpaid-modal td:nth-child(8){grid-column:3;grid-row:1;align-items:flex-end;justify-content:center}
 .db-unpaid-modal td:nth-child(1){grid-column:1;grid-row:2}.db-unpaid-modal td:nth-child(7){grid-column:2;grid-row:2}.db-unpaid-modal td:nth-child(6){grid-column:3;grid-row:2}
 .db-unpaid-modal td:nth-child(3){grid-column:1;grid-row:3}.db-unpaid-modal td:nth-child(4){grid-column:2;grid-row:3}.db-unpaid-modal td:nth-child(5){grid-column:3;grid-row:3}
 .db-unpaid-modal .db-detail-status,.db-unpaid-modal .db-detail-source{font-size:10px;padding:2px 4px;white-space:normal}
 #db-status-detail.db-unpaid-modal td .db-detail-action{font-size:12px!important;min-height:32px}
 .db-unpaid-modal .db-detail-secondary{font-size:10px}.db-unpaid-modal .db-unpaid-row-client{font-size:10px}
 .db-unpaid-list-footer{padding:6px 0;font-size:11px}.db-unpaid-list-footer strong{font-size:16px}
 .db-unpaid-dialog-footer{font-size:10px;padding-top:6px;gap:8px}.db-unpaid-close{min-height:32px;min-width:62px;padding:4px 12px}
}
/* 客户管理专用 */
.cl-avatar{
  width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:600;color:#fff;flex-shrink:0;
}
.cl-avatar.ca-blue{background:linear-gradient(135deg,#3b82f6,#2563eb)}
.cl-avatar.ca-purple{background:linear-gradient(135deg,#6366f1,#4f46e5)}
.cl-avatar.ca-cyan{background:linear-gradient(135deg,#0ea5e9,#0284c7)}
.cl-avatar.ca-green{background:linear-gradient(135deg,#22c55e,#16a34a)}
.cl-avatar.ca-orange{background:linear-gradient(135deg,#f59e0b,#d97706)}
.cl-info{display:flex;align-items:center;gap:10px}
.cl-name{font-weight:500;color:#1e293b}
.cl-contact{font-size:11px;color:#94a3b8;margin-top:2px}
/* 深色模式适配 */
:root.dark #tab-orders,:root.dark #tab-scheduling,:root.dark #tab-clients,:root.dark #tab-dashboard{
  background:linear-gradient(180deg,#1e293b 0%,#1e2a4a 40%,#1a2138 100%);
}
:root.dark .mod-header{background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(59,130,246,.08));border-color:rgba(99,102,241,.25)}
:root.dark .mod-header .mod-title{color:#f1f5f9}
:root.dark .mod-header .mod-sub{color:#94a3b8}
:root.dark .mod-action-bar .btn:not(.primary){background:#1e293b;border-color:#334155;color:#cbd5e1}
:root.dark .mod-card{background:#1e293b;border-color:#334155}
:root.dark .mod-card .mod-card-title{color:#f1f5f9;border-bottom-color:#334155}
:root.dark .mod-table thead th{background:#1e2a4a;color:#94a3b8;border-bottom-color:#334155}
:root.dark .mod-table tbody td{color:#e2e8f0;border-bottom-color:#334155}
:root.dark .mod-table tbody tr:hover{background:#1e2a4a}
:root.dark .mod-stat{background:linear-gradient(180deg,#1e293b 0%,#1a2440 100%);border-color:#334155}
:root.dark .mod-stat .ms-label{color:#94a3b8}
:root.dark .mod-stat .ms-value{color:#f1f5f9}
:root.dark .sch-item{border-bottom-color:#334155}
:root.dark .sch-item-head .sch-id{color:#f1f5f9}
:root.dark .sch-item-head .sch-meta{color:#94a3b8}
:root.dark .sch-stage.pending{background:#1e293b;color:#64748b}
:root.dark .db-bar-track{background:#1e293b}
:root.dark .db-bar-label{color:#cbd5e1}
:root.dark .db-bar-value{color:#f1f5f9}
:root.dark .db-rank-item{border-bottom-color:#334155}
:root.dark .db-rank-name{color:#f1f5f9}
:root.dark .db-rank-amount{color:#f1f5f9}
:root.dark .db-rank-num.r4,:root.dark .db-rank-num.r5{background:#334155;color:#94a3b8}
:root.dark .db-status-metric{background:rgba(30,41,59,.72);border-color:#334155}
:root.dark .db-status-metric:hover,:root.dark .db-status-metric.active{background:#1e2a4a;border-color:#3b82f6}
:root.dark .db-status-metric-label,:root.dark .db-status-detail-description{color:#94a3b8}
:root.dark .db-status-detail-title,:root.dark .db-status-detail-summary strong,:root.dark .db-status-detail-table td strong,:root.dark .db-detail-primary{color:#f1f5f9}
:root.dark .db-status-detail-close,:root.dark .db-status-detail-summary,:root.dark .db-status-detail-table-wrap{background:#1e293b;border-color:#334155}
:root.dark .db-status-detail-table th{background:#1e2a4a;color:#94a3b8;border-bottom-color:#334155}
:root.dark .db-status-detail-table td{color:#cbd5e1;border-bottom-color:#334155}
:root.dark .db-status-detail-table tbody tr:hover{background:#1e2a4a}
:root.dark .cl-name{color:#f1f5f9}
:root.dark .cl-contact{color:#64748b}
@media(max-width:768px){
  .mod-stat-grid{grid-template-columns:repeat(2,1fr)}
  .mod-table{font-size:12px}
  .mod-table thead th,.mod-table tbody td{padding:6px 8px}
  .sch-stages{flex-wrap:wrap;gap:3px}
  .sch-stage{min-width:60px}
}
