*{margin:0;padding:0;box-sizing:border-box}

/* 公共：卡片/长文本约束（防英文长文件名撑破容器） */
.text-break{
  overflow-wrap:anywhere;
  word-break:break-word;
  min-width:0;
}
.text-ellipsis{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  min-width:0;
}
.text-clamp-2{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  overflow:hidden;
  overflow-wrap:anywhere;
  word-break:break-word;
  min-width:0;
}
.card-text-body{min-width:0;flex:1;overflow:hidden}

:root{
  /* ══════════════════════════════════════════════
     中飞 · 苹果感设计系统（门面区用足留白；业务区统一高密度）
     铁律：白/浅灰为大底；深蓝仅点缀（按钮/链接/选中/关键数字/图标）
     ══════════════════════════════════════════════ */

  /* 主色 · 深蓝点缀（非铺底） */
  --primary:#1A56A8;
  --primary-2:#0F3D7A;
  --primary-bright:#2B6DE8;
  --primary-soft:#EEF3FB;

  /* 中性灰阶 · 层次：浅灰底 < 侧栏灰 < 白卡片 */
  --bg:#F5F6F8;
  --bg-subtle:#F8F9FB;
  --card:#FFFFFF;
  --ink:#1D1D1F;
  --ink2:#6E6E73;
  --ink3:#86868B;
  --border:#E5E7EB;
  --border-strong:#D1D5DB;

  /* 语义色 · 仅状态标签 */
  --success:#1A7F5A;--success-lt:#E8F6EF;
  --warning:#C47B0A;--warning-lt:#FFF6E5;
  --danger:#D70015;--danger-lt:#FCE8EA;
  --info:#2B6DE8;--info-lt:#EEF3FB;

  /* 兼容旧变量名 */
  --navy:var(--primary);--navy2:var(--primary-2);
  --blue:var(--primary-bright);--blue-d:var(--primary);--blue-lt:var(--primary-soft);
  --sky:var(--primary-bright);--sky-lt:var(--primary-soft);
  --red:var(--danger);--red-lt:var(--danger-lt);
  --green:var(--success);--green-lt:var(--success-lt);
  --amber:var(--warning);--amber-lt:var(--warning-lt);
  --teal:var(--success);--teal-lt:var(--success-lt);
  --purple:#5B6CFF;--purple-lt:#EEF0FF;
  --gold:#A1802E;--gold-lt:#F7F1E0;
  /* 侧栏 · 高级深空灰（近黑带蓝调，与浅内容区对比） */
  --sb1:#1E2430;--sb2:#202632;
  --sb-text:#A8B0BD;
  --sb-text-active:#FFFFFF;
  --sb-hover:rgba(255,255,255,.06);
  --sb-active:rgba(43,109,232,.22);
  --sb-border:rgba(255,255,255,.08);
  --sb-muted:#7A8494;
  --sb-accent:var(--primary-bright);

  /* 字体体系 · 苹方/SF 优先调用本机，Inter/思源作免费回退（不打包苹方/SF） */
  --font-sans:"PingFang SC","SF Pro Text",Inter,"Helvetica Neue","Microsoft YaHei","Source Han Sans SC",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;
  --font-mono:"SF Mono",ui-monospace,SFMono-Regular,"JetBrains Mono",Menlo,Consolas,monospace;

  /* 圆角 · 精致 */
  --radius-sm:10px;--radius-md:14px;--radius-lg:16px;--radius-xl:22px;

  /* 阴影 · 极柔和（白卡片浮在浅灰底上） */
  --shadow-sm:0 1px 2px rgba(15,23,42,.04),0 1px 3px rgba(15,23,42,.03);
  --shadow-md:0 4px 16px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);
  --shadow-lg:0 12px 40px rgba(15,23,42,.08),0 2px 8px rgba(15,23,42,.04);

  /* 间距 · 门面区默认宽松 */
  --space-1:8px;--space-2:12px;--space-3:16px;--space-4:20px;--space-5:28px;--space-6:40px;

  /* 字体层级 · 标题中等字重、正文常规 */
  --font-display:34px;--font-page:26px;--font-section:15px;--font-body:14px;--font-caption:12px;
  --fw-light:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;
  --lh-tight:1.2;--lh-body:1.55;

  --icon-sm:16px;--icon-md:20px;--icon-nav:18px;
  --icon-circle:40px;

  /* 动效 */
  --ease-out:cubic-bezier(.22,1,.36,1);
  --dur-fast:.18s;--dur-med:.32s;

  /* 仪表盘间距：透气但不空旷（财务概览样板） */
  --dash-gap:16px;
  --dash-gap-lg:18px;
  --dash-section:20px;
  --dash-card-pad:18px 20px;
  --dash-card-pad-sm:14px 16px;
  --table-head:#EEF1F5;
  --row-hover:#F8FAFC;
  --row-active:var(--primary-soft);
  --biz-row-h:40px;
  --biz-cell-py:5px;
  --biz-cell-px:10px;
  --biz-thumb:40px;
  --biz-th-fs:11px;
  --biz-td-fs:12.5px;

  /* 全站自适应 · 电脑端为主 */
  --sb-width:220px;
  --sb-rail:64px;
  --content-max:1680px;
  --main-pad-x:clamp(16px, 2.2vw, 36px);
  --main-pad-y:clamp(20px, 2vw, 36px);
  --kpi-card-min:168px;
  --card-grid-min:220px;
}
.biz-page,
.prod-body{
  --space-1:4px;
  --space-2:8px;
  --space-3:10px;
  --space-4:12px;
  --space-5:16px;
  --radius-sm:8px;
  --radius-md:10px;
  --radius-lg:12px;
  --font-body:12.5px;
  --font-caption:11px;
  --biz-row-h:40px;
  --biz-cell-py:5px;
  --biz-cell-px:10px;
  --biz-thumb:40px;
  --biz-th-fs:11px;
  --biz-td-fs:12.5px;
}

/* 可复用业务表格标准（浅灰表头 + 高密度行 + 整表铺满） */
.biz-table.tbl-wrap,
.tbl-wrap.biz-table{
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  background:var(--card);
  box-shadow:var(--shadow-sm);
  width:100%;
  max-width:100%;
  overflow:auto;
}
.biz-table table{
  width:100%;
  min-width:100%;
  border-collapse:separate;
  border-spacing:0;
  font-size:var(--biz-td-fs);
  table-layout:auto;
}
.biz-table th{
  position:sticky;top:0;z-index:20;
  height:var(--biz-row-h);
  padding:var(--biz-cell-py) var(--biz-cell-px);
  background:var(--table-head)!important;
  color:var(--ink2)!important;
  font-size:var(--biz-th-fs)!important;
  font-weight:600!important;
  letter-spacing:.02em;
  text-align:left;
  white-space:nowrap;
  border-bottom:1px solid var(--border)!important;
  box-shadow:none!important;
}
.biz-table td{
  height:var(--biz-row-h);
  padding:var(--biz-cell-py) var(--biz-cell-px);
  border-bottom:1px solid var(--border);
  vertical-align:middle;
  color:var(--ink);
  background:var(--card);
}
.biz-table tbody tr{cursor:pointer;transition:background var(--dur-fast)}
.biz-table tbody tr:hover td{background:var(--row-hover)!important}
.biz-table tbody tr.sel td,
.biz-table tbody tr.is-selected td{background:var(--row-active)!important}
/* 业务页内表格：短列贴内容 + 弹性列吃剩余宽度，避免右侧大空 / 中间空洞 */
.biz-page{min-width:0}
.biz-page .topbar .tb-actions,
.biz-page .toolbar,
.biz-page .prod-sorts,
.biz-page .inq-filters,
.biz-page .wh-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.biz-table th.col-fit,
.biz-table td.col-fit{
  width:1%;
  white-space:nowrap;
  max-width:200px;
  overflow:hidden;
  text-overflow:ellipsis;
}
.biz-table th.col-fluid,
.biz-table td.col-fluid{
  width:100%;
  min-width:8rem;
  max-width:none;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.biz-table td.num,.biz-table th.num,
.biz-table td.amt,.biz-table th.amt,
.biz-table .col-num,.biz-table th.col-num{
  text-align:right;
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
  font-family:var(--font-sans);
  width:1%;
  white-space:nowrap;
}
.biz-table th.col-center,
.biz-table td.col-center{text-align:center}

/* ── 列表数据表 .data-table：固定列宽，空表也不挤到右侧 ── */
.biz-table.data-table,
.tbl-wrap.data-table{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.biz-table.data-table table,
table.data-table{
  width:100%;
  min-width:1100px;
  table-layout:fixed;
  border-collapse:separate;
  border-spacing:0;
}
.biz-table.data-table th,
.biz-table.data-table td,
table.data-table th,
table.data-table td{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  padding:var(--biz-cell-py, 8px) 8px;
}
.biz-table.data-table th.col-center,
.biz-table.data-table td.col-center{text-align:center}
.biz-table.data-table th.col-num,
.biz-table.data-table td.col-num{
  text-align:right;
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
}
.biz-table.data-table td.cell-stack,
table.data-table td.cell-stack{
  white-space:normal;
  line-height:1.35;
  vertical-align:middle;
}
.biz-table.data-table .cell-main{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.biz-table.data-table .cell-sub{
  display:block;
  margin-top:2px;
  font-size:11px;
  color:var(--ink3);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.biz-table.data-table tr.empty-row td,
table.data-table tr.empty-row td{
  height:180px;
  text-align:center;
  vertical-align:middle;
  white-space:normal;
  overflow:visible;
  color:var(--ink3);
  font-size:13px;
  background:var(--card)!important;
  cursor:default;
}
.biz-table.data-table tbody tr.empty-row:hover td{background:var(--card)!important}
/* 首列横向滚动时吸附 */
.biz-table.data-table th:first-child,
.biz-table.data-table td:first-child{
  position:sticky;
  left:0;
  z-index:2;
  background:var(--card);
  box-shadow:1px 0 0 var(--border);
}
.biz-table.data-table th:first-child{
  z-index:22;
  background:var(--table-head)!important;
}
.biz-table.data-table tbody tr:hover td:first-child{background:var(--row-hover)!important}
.biz-table.data-table tbody tr.sel td:first-child,
.biz-table.data-table tbody tr.is-selected td:first-child{background:var(--row-active)!important}
/* 空表时面板高度随内容，不撑满视口 */
.ord-page .panel .tbl-wrap.data-table,
.pinq-page .panel .tbl-wrap.data-table{
  min-height:0;
}

.biz-table th.col-ops,
.biz-table td.col-ops,
.biz-table td.row-ops,
.biz-table .row-ops{
  width:1%;
  max-width:none;
  overflow:visible;
  white-space:nowrap;
  text-align:right;
}
.biz-table .row-ops a,
.biz-table td.col-ops a{
  display:inline-block;
  margin-left:10px;
}
.biz-table .row-ops a:first-child,
.biz-table td.col-ops a:first-child{margin-left:0}
/* 业务页未显式标 biz-table 的 tbl-wrap 也套同样板（兜底） */
.biz-page .tbl-wrap:not(.biz-table) th{
  background:var(--table-head)!important;color:var(--ink2)!important;
  font-size:var(--biz-th-fs)!important;font-weight:600!important;
  border-bottom:1px solid var(--border)!important;
}
.biz-page .tbl-wrap:not(.biz-table) td{
  padding:var(--biz-cell-py) var(--biz-cell-px);
  border-bottom:1px solid var(--border);
}
.biz-page .tbl-wrap:not(.biz-table) tbody tr:hover td{background:var(--row-hover)!important}
body{
  font-family:var(--font-sans);
  background:var(--bg);color:var(--ink);font-size:var(--font-body);line-height:var(--lh-body);
  font-weight:var(--fw-light);
  font-feature-settings:"tnum" 1;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
@keyframes zf-fade-up{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes zf-fade-in{
  from{opacity:0} to{opacity:1}
}
.zf-fade-up{animation:zf-fade-up var(--dur-med) var(--ease-out) both}
.zf-fade-in{animation:zf-fade-in var(--dur-med) var(--ease-out) both}
@media (prefers-reduced-motion:reduce){
  .zf-fade-up,.zf-fade-in{animation:none}
}

/* 登录 · 门面 */
.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 20px;
  background:
    radial-gradient(1200px 600px at 10% -10%,rgba(26,86,168,.08),transparent 55%),
    radial-gradient(900px 500px at 100% 0%,rgba(26,86,168,.05),transparent 50%),
    linear-gradient(180deg,var(--bg-subtle) 0%,var(--bg) 100%);
}
.login-brand{text-align:center;margin-bottom:32px}
.login-mark{
  display:inline-flex;align-items:center;justify-content:center;
  width:52px;height:52px;border-radius:14px;margin-bottom:14px;
  background:linear-gradient(145deg,var(--primary),var(--primary-2));
  color:#fff;font-size:15px;font-weight:700;letter-spacing:.04em;
  box-shadow:0 8px 20px rgba(26,86,168,.25);
}
.login-logo{font-size:var(--font-display);font-weight:var(--fw-semibold);color:var(--ink);letter-spacing:-.03em;line-height:var(--lh-tight)}
.login-tagline{font-size:14px;color:var(--ink2);margin-top:8px;font-weight:var(--fw-medium);letter-spacing:.01em}
.login-card{
  background:var(--card);border-radius:var(--radius-xl);padding:48px 44px 40px;width:100%;max-width:400px;
  box-shadow:var(--shadow-lg);border:1px solid var(--border);
  animation:zf-fade-up .5s var(--ease-out) both;
}
.login-card input{
  width:100%;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);
  margin-bottom:12px;font-size:15px;outline:none;background:var(--bg-subtle);color:var(--ink);
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast),background var(--dur-fast);
  font-family:inherit;
}
.login-card input:focus{
  border-color:var(--primary);background:var(--card);
  box-shadow:0 0 0 4px var(--primary-soft);
}
.login-card button{
  width:100%;padding:14px;margin-top:8px;background:var(--primary);color:#fff;border:none;
  border-radius:var(--radius-sm);font-size:15px;font-weight:var(--fw-semibold);cursor:pointer;
  letter-spacing:.2em;font-family:inherit;
  transition:background var(--dur-fast),transform var(--dur-fast),box-shadow var(--dur-fast);
  box-shadow:0 4px 14px rgba(26,86,168,.22);
}
.login-card button:hover{background:var(--primary-2);box-shadow:0 6px 18px rgba(26,86,168,.28)}
.login-card button:active{transform:scale(.985)}
.login-err{color:var(--danger);font-size:12px;text-align:center;margin-top:12px;min-height:16px}

/* 布局 */
.app-wrap{
  display:grid;
  grid-template-columns:var(--sb-width) minmax(0,1fr);
  min-height:100vh;
  width:100%;
}
.sidebar{
  background:var(--sb1);color:var(--sb-text);display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;border-right:1px solid var(--sb-border);
  width:var(--sb-width);min-width:0;z-index:40;
}
.side-logo{padding:24px 20px;font-size:18px;font-weight:var(--fw-semibold);color:#fff;border-bottom:1px solid var(--sb-border);letter-spacing:-.02em}
.side-logo span{color:var(--sb-muted);font-size:12px;font-weight:var(--fw-medium);margin-left:6px}
#side-nav{flex:1;padding:14px 10px;overflow-y:auto}
#side-nav a{
  display:flex;align-items:center;gap:10px;padding:10px 14px;margin-bottom:2px;
  color:var(--sb-text);text-decoration:none;font-size:13.5px;font-weight:var(--fw-medium);
  border-radius:10px;border-left:3px solid transparent;transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast);
}
#side-nav a:hover{color:#E8ECF2;background:var(--sb-hover)}
#side-nav a.active{color:var(--sb-text-active);background:var(--sb-active);font-weight:var(--fw-semibold);border-left-color:var(--sb-accent)}
#side-nav a .nav-ic{color:inherit;opacity:.85}
#side-nav a.active .nav-ic{opacity:1;color:#fff}
#side-nav a .nav-txt{flex:1;min-width:0}
#side-nav a .nav-badge{
  flex:none;min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:#E11D48;color:#fff;font-size:11px;font-weight:700;line-height:18px;
  text-align:center;box-sizing:border-box;
}
#side-nav a .nav-badge[hidden]{display:none!important}
.side-user{padding:16px 18px;border-top:1px solid var(--sb-border);font-size:13px;color:#E8ECF2}
.su-role{color:var(--sb-muted);font-size:11px;margin:2px 0 8px}
.side-user a{color:var(--sb-text);font-size:12px;text-decoration:none}
.side-user a:hover{color:#fff}
.main{
  min-width:0;
  overflow-x:hidden;
  overflow-y:auto;
  box-sizing:border-box;
  background:var(--bg);
  display:flex;
  flex-direction:column;
  align-items:stretch;
}
.main > #content{
  width:100%;
  max-width:var(--content-max);
  margin-inline:auto;
  padding:var(--main-pad-y) var(--main-pad-x) calc(var(--main-pad-y) + 8px);
  box-sizing:border-box;
  min-width:0;
}
.nav-toggle,.nav-backdrop{display:none}

/* 站内通知铃铛（全局右上角，不占内容流、不挡按钮） */
.main-tools{
  position:fixed;top:12px;right:16px;z-index:120;
  display:flex;justify-content:flex-end;align-items:center;
  padding:0;margin:0;pointer-events:none;
}
.main-tools > *{pointer-events:auto}
.notif-wrap{position:relative}
.notif-bell{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:10px;border:1px solid var(--border);
  background:#fff;color:var(--ink2);cursor:pointer;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
}
.notif-bell:hover{background:#F8FAFC;color:var(--ink)}
.notif-bell.has-unread{color:var(--navy)}
.notif-badge{
  position:absolute;top:2px;right:2px;min-width:16px;height:16px;padding:0 4px;
  border-radius:999px;background:#E11D48;color:#fff;font-size:10px;font-weight:700;
  line-height:16px;text-align:center;box-sizing:border-box;
}
.notif-panel{
  position:absolute;right:0;top:calc(100% + 8px);width:min(360px,calc(100vw - 32px));
  max-height:min(420px,70vh);background:#fff;border:1px solid var(--border);
  border-radius:12px;box-shadow:0 12px 40px rgba(15,23,42,.12);
  flex-direction:column;overflow:hidden;display:none;
}
.notif-panel.is-open{display:flex}
.notif-panel[hidden]{display:none!important}
.notif-panel-hd{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 14px;border-bottom:1px solid var(--border);
  font-size:13px;font-weight:600;color:var(--ink);
}
.notif-readall{
  border:none;background:none;color:var(--primary);font-size:12px;cursor:pointer;padding:0;
}
.notif-readall:hover{text-decoration:underline}
.notif-list{overflow-y:auto;flex:1}
.notif-item{
  display:block;width:100%;text-align:left;border:none;border-bottom:1px solid #F1F5F9;
  background:#fff;padding:12px 14px;cursor:pointer;font:inherit;color:inherit;
}
.notif-item:hover{background:#F8FAFC}
.notif-item.unread{background:#F0F7FF}
.notif-item.unread:hover{background:#E8F1FC}
.notif-item.is-done{opacity:.62}
.notif-item.is-done .notif-item-title{font-weight:500;color:var(--ink2)}
.notif-item-title{font-size:13px;font-weight:600;color:var(--ink);line-height:1.35}
.notif-item.unread .notif-item-title{font-weight:700}
.notif-item-body{font-size:12px;color:var(--ink3);margin-top:3px;line-height:1.4}
.notif-item-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px}
.notif-item-time{font-size:11px;color:var(--ink3)}
.notif-item-go{font-size:12px;color:var(--navy);font-weight:600}
.notif-item-state{font-size:11px;color:var(--ink3)}
.notif-empty{padding:28px 16px;text-align:center;color:var(--ink3);font-size:13px}

/* 页头 */
.page-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.page-title{font-size:22px;font-weight:var(--fw-semibold);letter-spacing:-.02em;font-family:var(--font-sans)}
.page-sub{font-size:12.5px;color:var(--ink3);margin-top:4px;font-weight:var(--fw-medium);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(720px,70vw)}
.toolbar{display:flex;gap:10px;align-items:center}
.toolbar input{padding:8px 12px;border:1px solid var(--border);border-radius:7px;width:220px;outline:none;background:#fff}
.btn{padding:8px 16px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;font-weight:600;font-family:inherit;transition:background var(--dur-fast),transform var(--dur-fast)}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-2)}

/* KPI卡（旧） */
.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}
.kpi-card{background:var(--card);border-radius:var(--radius-md);padding:18px 20px;border:1px solid var(--border);border-top:none;box-shadow:var(--shadow-sm)}
.kpi-card.warn{box-shadow:inset 3px 0 0 var(--danger)}
.kpi-card.gold{box-shadow:inset 3px 0 0 var(--gold)}
.kpi-card.green{box-shadow:inset 3px 0 0 var(--success)}
.kpi-l{font-size:12px;color:var(--ink2)}
.kpi-v{font-size:26px;font-weight:600;margin-top:6px;letter-spacing:-.02em}
.kpi-s{font-size:11px;color:var(--ink3);margin-top:4px}
.kpi-v.red{color:var(--red)}

/* 面板 */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.panel{background:var(--card);border-radius:var(--radius-md);border:1px solid var(--border);padding:var(--space-4);box-shadow:var(--shadow-sm)}
.panel-t{font-size:14px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.panel-t::before{content:'';width:3px;height:14px;background:var(--primary);border-radius:2px;opacity:.85}

/* 条形图 */
.bar-row{display:grid;grid-template-columns:90px 1fr 110px;align-items:center;gap:10px;margin-bottom:10px;font-size:12px}
.bar-track{background:var(--bg);border-radius:5px;height:18px;overflow:hidden}
.bar-fill{height:100%;background:var(--primary);border-radius:5px;min-width:2px}
.bar-fill.gold{background:var(--gold)}
.bar-val{color:var(--ink2);text-align:right}

/* 漏斗 */
.fun-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:12px}
.fun-lbl{width:56px;color:var(--ink2)}
.fun-bar{height:22px;background:var(--primary);border-radius:4px;color:#fff;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;font-weight:600;min-width:30px}

/* 预警 */
.alert-item{display:flex;justify-content:space-between;padding:9px 12px;border-radius:7px;margin-bottom:7px;font-size:12.5px}
.alert-red{background:var(--red-lt);color:var(--red)}
.alert-yellow{background:var(--gold-lt);color:#7F5B00}
.alert-gray{background:var(--bg);color:var(--ink2)}

/* 表格 · 默认浅灰表头；业务列表页统一套 .biz-table 高密度样式 */
.tbl-wrap{background:var(--card);border-radius:var(--radius-md);border:1px solid var(--border);overflow:auto;box-shadow:var(--shadow-sm)}
table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}
th{background:var(--table-head);color:var(--ink2);padding:11px 14px;text-align:left;font-weight:600;position:sticky;top:0;z-index:10;border-bottom:1px solid var(--border)}
td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--ink)}
tr:hover td{background:var(--row-hover)}
.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11.5px;font-weight:600}
.tag-green{background:var(--green-lt);color:var(--green)}
.tag-gold{background:var(--gold-lt);color:#7F5B00}
.tag-red{background:var(--red-lt);color:var(--red)}
.tag-gray{background:var(--bg);color:var(--ink2)}
.tag-blue{background:var(--blue-lt);color:var(--navy)}

/* 弹窗 */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:100}
.modal{position:relative;background:#fff;border-radius:12px;padding:26px 28px;width:520px;max-height:82vh;overflow-y:auto}
.modal h3{margin-bottom:18px;font-size:16px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-item{display:flex;flex-direction:column;gap:5px}
.form-item.full{grid-column:1/-1}
.form-item label{font-size:12px;color:var(--ink2)}
.form-item input,.form-item select{padding:9px 11px;border:1px solid var(--border);border-radius:7px;font-size:13px;outline:none;height:38px;box-sizing:border-box;line-height:1.2}
.form-item input:focus,.form-item select:focus{border-color:var(--navy)}
.form-item label .req{color:var(--red,#dc2626);font-weight:700;margin-left:2px}
.form-item textarea{padding:9px 11px;border:1px solid var(--border);border-radius:7px;font-size:13px;outline:none;font-family:inherit;resize:vertical;min-height:72px;box-sizing:border-box;width:100%}
.form-item textarea:focus{border-color:var(--navy)}
.cf-input-ico{position:relative}
.cf-input-ico input{padding-left:36px!important;width:100%}
.cf-input-ico::before{
  content:'';position:absolute;left:10px;top:50%;transform:translateY(-50%);
  width:16px;height:16px;border-radius:4px;font-size:10px;font-weight:800;
  display:flex;align-items:center;justify-content:center;color:#fff;pointer-events:none;
}
.cf-ico-wa::before{content:'W';background:#25d366}
.cf-ico-wx::before{content:'微';background:#07c160;font-size:9px}
.form-item.cf-hint label{color:#047857;font-weight:600}
.form-item.cf-hint .cf-input-ico input,
.form-item.cf-hint input{
  border-color:#34d399;background:#ecfdf5;box-shadow:0 0 0 2px rgba(52,211,153,.2);
}
.crm-contact-icos{display:inline-flex;gap:4px;margin-top:3px;flex-wrap:wrap}
.crm-region-layout{display:grid;grid-template-columns:210px minmax(0,1fr);gap:14px;align-items:start}
.crm-region-panel{position:sticky;top:12px;max-height:calc(100vh - 120px);overflow:auto}
.crm-region-tree{padding:8px}
.crm-region-tree .tree-l2{padding-left:30px}
.crm-region-main{min-width:0}
.crm-import-modal{width:min(1120px,94vw);max-width:1120px;max-height:90vh}
.crm-import-summary{display:flex;gap:10px;flex-wrap:wrap}
.crm-import-summary span{padding:6px 10px;border-radius:7px;background:var(--bg);font-size:12px}
.crm-import-summary .ok{background:var(--green-lt);color:var(--green)}
.crm-import-summary .warn{background:var(--gold-lt);color:#7f5b00}
.crm-import-summary .bad{background:var(--red-lt);color:var(--red)}
.crm-import-table{max-height:56vh}
.crm-import-table td{vertical-align:top;white-space:normal;min-width:70px}
.crm-import-row.warn td{background:#fffbeb}
.crm-import-row.bad td{background:#fef2f2}
.crm-import-row.ok .crm-import-status{color:var(--green)}
.crm-import-action{min-width:110px;padding:6px;border:1px solid var(--border);border-radius:6px;background:#fff}
@media(max-width:1000px){
  .crm-region-layout{grid-template-columns:1fr}
  .crm-region-panel{position:static;max-height:none}
  .crm-region-tree{display:flex;gap:4px;overflow:auto}
  .crm-region-tree .tree-node{flex:0 0 auto}
}
.crm-ico{
  border:0;width:20px;height:20px;border-radius:5px;font-size:10px;font-weight:800;
  color:#fff;cursor:pointer;line-height:1;padding:0;display:inline-flex;align-items:center;justify-content:center;
}
.crm-ico-wa{background:#25d366}
.crm-ico-wx{background:#07c160}
.crm-ico-mail{background:#64748b;font-size:11px}
.crm-ico.copied{outline:2px solid var(--primary)}
.crm-copy-btn{margin-left:8px;font-size:12px;color:var(--blue);border:0;background:transparent;cursor:pointer;padding:0}
.btn-text{border:0;background:transparent;padding:0;cursor:pointer;font:inherit;color:var(--blue)}
.modal-crm{width:560px}
.modal-ft{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.modal.modal-lg{
  display:flex;flex-direction:column;
  max-height:min(92vh,920px);width:min(860px,96vw);padding:0;overflow:hidden;
}
.modal.modal-lg>h3{padding:22px 26px 0;margin:0 0 8px;flex:none}
.modal.modal-lg .modal-scroll{flex:1 1 auto;overflow:auto;padding:0 26px 12px;min-height:0}
.modal.modal-lg .modal-ft{
  position:sticky;bottom:0;margin:0;flex:none;
  padding:14px 26px;border-top:1px solid var(--border);background:#fff;
  z-index:2;box-shadow:0 -4px 12px rgba(0,0,0,.04);
}
/* 询价系统 · 采购回价弹窗：加宽 + 内滚 + 备注通栏加高 */
.modal.pinq-reply-modal{
  width:min(900px,90vw);
  max-width:900px;
  max-height:90vh;
}
.pinq-reply-modal .pinq-reply-info{
  display:grid;grid-template-columns:1fr 1fr;gap:0 24px;
}
.pinq-reply-modal .pinq-reply-fields{
  grid-template-columns:repeat(4,1fr);gap:8px;
}
.pinq-reply-modal .pinq-reply-remark-wrap{
  margin-top:10px;
}
.pinq-reply-modal .pinq-reply-remark{
  min-height:160px;
  width:100%;
  resize:vertical;
  line-height:1.5;
}
.pinq-quotes-table .pinq-q-remark{max-width:160px;vertical-align:top}
.pinq-q-remark-text{
  display:inline-block;max-width:140px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  vertical-align:bottom;
}
.pinq-q-remark-text.is-long{cursor:pointer;color:var(--navy)}
.pinq-q-remark-text.is-long:hover{text-decoration:underline}
.pinq-q-remark-text.is-expanded{
  white-space:pre-wrap;overflow:visible;max-width:280px;text-overflow:clip;
}
@media(max-width:1280px){
  .modal.pinq-reply-modal{width:min(900px,92vw)}
  .pinq-reply-modal .pinq-reply-fields{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:720px){
  .pinq-reply-modal .pinq-reply-info,
  .pinq-reply-modal .pinq-reply-fields{grid-template-columns:1fr}
}
.form-sec{border:1px solid var(--border);border-radius:10px;margin-bottom:12px;overflow:hidden}
.form-sec-hd{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:10px 14px;background:var(--bg);cursor:pointer;user-select:none;font-weight:600;font-size:13px;
}
.form-sec-bd{padding:12px 14px}
.form-sec.is-collapsed .form-sec-bd{display:none}
.form-sec-hd .chev{color:var(--ink3);font-size:12px}
.cat-combo{position:relative}
.cat-combo input{width:100%}
.cat-combo-menu{
  position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;
  background:#fff;border:1px solid var(--border);border-radius:8px;
  max-height:220px;overflow:auto;box-shadow:var(--shadow-md,0 8px 24px rgba(0,0,0,.12));
}
.cat-combo-item{padding:8px 12px;cursor:pointer;font-size:13px}
.cat-combo-item:hover,.cat-combo-item.active{background:var(--primary-soft);color:var(--primary)}
.cat-combo-create{color:var(--primary);font-weight:600}
.btn-badge{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 5px;margin-left:6px;
  border-radius:9px;background:var(--primary);color:#fff;font-size:11px;font-weight:700;line-height:1;
}
.btn-badge.is-zero{background:var(--bg);color:var(--ink3)}
.pd-more{position:relative}
.pd-more-menu{
  position:absolute;right:0;bottom:calc(100% + 6px);min-width:180px;z-index:5;
  background:#fff;border:1px solid var(--border);border-radius:8px;padding:6px;
  box-shadow:var(--shadow-md,0 8px 24px rgba(0,0,0,.12));
}
.pd-more-menu button{display:block;width:100%;text-align:left;padding:8px 10px;border:0;background:transparent;cursor:pointer;font-size:12.5px;border-radius:6px}
.pd-more-menu button:hover{background:var(--bg)}
.pd-more-menu .danger{color:var(--red);font-weight:600}
.img-cov{font-size:12.5px;color:var(--ink2);cursor:pointer}
.img-cov:hover{color:var(--primary)}
.sku-rc-empty{text-align:center;padding:36px 16px;color:var(--ink2)}
.sku-rc-empty b{display:block;font-size:15px;color:var(--ink);margin-bottom:6px}
.btn-ghost{background:var(--bg);color:var(--ink2)}

.empty{padding:40px;text-align:center;color:var(--ink3);font-size:13px}

/* ── 可复用空状态（小图标 + 浅文案）── */
.empty-state{
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:10px;text-align:center;box-sizing:border-box;
  padding:32px 16px;min-height:120px;
}
.empty-state-ic{
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;max-width:25%;
  color:#A8B3C7;flex-shrink:0;line-height:0;
}
.empty-state-ic i,
.empty-state-ic svg{
  width:32px!important;height:32px!important;max-width:36px;max-height:36px;
  stroke-width:1.6;
}
.empty-state-txt{
  margin:0;font-size:13px;line-height:1.45;font-weight:400;
  color:var(--ink3);letter-spacing:.01em;
}
.empty-state--col{
  flex:1;align-self:stretch;min-height:160px;margin:2px 0;
  padding:36px 14px 52px;justify-content:center;
  border:1px dashed #E8ECF3;border-radius:var(--radius-md);
  background:rgba(30,78,156,.025);
}
.empty-state--panel{
  height:100%;min-height:220px;padding:48px 20px;
}
.empty-state--block{
  min-height:100px;padding:28px 16px;
  border:1px dashed #E8ECF3;border-radius:var(--radius-md);
  background:rgba(30,78,156,.02);
}
.row-ops{white-space:nowrap}
.row-ops a{margin-right:12px;font-weight:600;font-size:12.5px}
.row-ops a:last-child{margin-right:0}

/* ── 产品库 ── */
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.stat-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 18px}
.stat-l{font-size:12px;color:var(--ink2)}
.stat-v{font-size:24px;font-weight:700;margin-top:4px}
.stat-s{font-size:11px;color:var(--ink3);margin-top:3px}
.prod-filters{display:flex;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.prod-filters input{flex:1;min-width:220px;padding:9px 12px;border:1px solid var(--border);border-radius:7px;outline:none;background:#fff;font-size:13px}
.prod-filters select{padding:9px 12px;border:1px solid var(--border);border-radius:7px;outline:none;background:#fff;font-size:13px;cursor:pointer}
.prod-filters input:focus,.prod-filters select:focus{border-color:var(--navy)}
.prod-sorts{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap;align-items:center}
.sort-btn{padding:6px 14px;border:1px solid var(--border);background:#fff;border-radius:20px;font-size:12.5px;cursor:pointer;color:var(--ink2)}
.sort-btn:hover{border-color:var(--navy);color:var(--navy)}
.sort-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}

.prod-body{display:grid;grid-template-columns:180px minmax(0,1fr) minmax(280px,320px);gap:12px;align-items:start}
.prod-body>*{min-width:0}
.prod-mid{display:flex;flex-direction:column;min-width:0;min-height:0;max-height:calc(100vh - 130px)}
.prod-table{max-width:100%;overflow:auto;flex:1;min-height:0}
.prod-pager{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  padding:10px 12px;border:1px solid var(--border);border-top:0;border-radius:0 0 var(--radius-md) var(--radius-md);
  background:var(--bg-subtle);flex:none;
}
.prod-pager-btns{display:flex;align-items:center;gap:8px}
.prod-pager-num{font-size:13px;font-weight:600;color:var(--ink2);min-width:52px;text-align:center}
.prod-mid .prod-table{border-radius:var(--radius-md) var(--radius-md) 0 0;box-shadow:none;border-bottom:0}
.prod-mid .prod-table.tbl-wrap{box-shadow:var(--shadow-sm)}
.prod-mid:has(.prod-pager) .prod-table{border-bottom-left-radius:0;border-bottom-right-radius:0}
.prod-tree{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:8px;position:sticky;top:12px;max-height:calc(100vh - 130px);overflow-y:auto;box-shadow:var(--shadow-sm)}
.tree-node{display:flex;align-items:center;gap:4px;padding:7px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--ink);margin-bottom:2px;min-width:0}
.tree-node:hover{background:var(--bg)}
.tree-node.active{background:var(--primary-soft);color:var(--primary);font-weight:600}
.tree-all{font-weight:700;border-bottom:1px solid var(--border);border-radius:0;margin-bottom:6px;padding-bottom:10px}
.tree-cat{font-weight:600}
.tree-l1{font-weight:700;color:var(--ink)}
.tree-l1-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree-l2{padding-left:18px;font-weight:600}
.tree-sub{padding-left:34px;font-size:12.5px;color:var(--ink2)}
.tree-dot{font-size:8px;margin-right:4px;flex:none}
.tree-chev{
  display:inline-flex;width:12px;flex:none;margin-right:2px;
  font-size:10px;color:var(--ink3);line-height:1;
}
.tree-l1.is-open .tree-chev,.tree-cat.is-open .tree-chev{color:var(--primary)}
.tree-cnt{margin-left:auto;background:var(--bg);color:var(--ink3);border-radius:20px;padding:1px 8px;font-size:11px;font-weight:600;flex:none}
.tree-node.active .tree-cnt{background:var(--primary);color:#fff}

/* 产品分类管理弹窗 */
.pcm-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.pcm-tree{border:1px solid var(--border);border-radius:10px;padding:6px;max-height:42vh;overflow:auto;background:#fff}
.pcm-row{
  display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;min-width:0;
}
.pcm-row:hover{background:var(--bg)}
.pcm-row.active{background:var(--primary-soft);color:var(--primary)}
.pcm-child{padding-left:22px}
.pcm-drag{cursor:grab;color:#94a3b8;flex:none;user-select:none;font-size:11px}
.pcm-twist{border:0;background:transparent;width:16px;padding:0;cursor:pointer;color:#64748b;flex:none}
.pcm-sp{width:16px;flex:none}
.pcm-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.pcm-cnt{flex:none;min-width:22px;padding:1px 7px;border-radius:10px;background:#f1f5f9;color:#64748b;font-size:11px;text-align:center}
.pcm-ops{display:flex;gap:8px;flex:none;opacity:0}
.pcm-row:hover .pcm-ops,.pcm-row.active .pcm-ops{opacity:1}
.pcm-ops .btn-text{border:0;background:transparent;padding:0;cursor:pointer;font-size:12px;color:var(--primary)}
.pcm-ops .btn-text.danger{color:var(--red)}
.pcm-dragging{opacity:.5}
.pcm-drag-over{outline:2px dashed var(--primary);background:var(--primary-soft)}
.pcm-merge{margin-top:14px;padding:12px;border:1px dashed var(--border);border-radius:8px}

.prod-table{max-height:calc(100vh - 130px);overflow:auto;-webkit-overflow-scrolling:touch}
/* 产品库列多：仍贴内容横向滚动，避免 width:100% 把短列撑出中间空洞 */
.prod-table table,
.prod-table.biz-table table{
  font-size:var(--biz-td-fs);
  width:max-content!important;
  min-width:0!important;
  max-width:none;
  border-collapse:separate;
  border-spacing:0;
  table-layout:auto;
}
.prod-table th,.prod-table td{
  width:1%; /* shrink-to-fit：列宽跟内容走，间距一致 */
  box-sizing:border-box;
}
.prod-table th.col-fit,
.prod-table td.col-fit,
.prod-table th.col-fluid,
.prod-table td.col-fluid{
  width:1%;
  max-width:none;
}
.prod-table th{
  height:var(--biz-row-h);
  padding:var(--biz-cell-py) 12px;
  font-size:var(--biz-th-fs)!important;
  position:sticky;top:0;z-index:20;
  background:var(--table-head)!important;
  color:var(--ink2)!important;
  font-weight:600!important;
  letter-spacing:.02em;
  white-space:nowrap;
  border-bottom:1px solid var(--border)!important;
  box-shadow:none!important;
}
.prod-table td{
  height:var(--biz-row-h);
  padding:var(--biz-cell-py) 12px;
  white-space:nowrap;
  vertical-align:middle;
  border-bottom:1px solid var(--border);
  background:var(--card);
}
.prod-table .muted{color:var(--ink2)}
.prod-table .name-cn,
.prod-table th.col-name{
  width:128px;max-width:128px;min-width:96px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-weight:var(--fw-semibold);
}
.prod-table .sku-code,
.prod-table th.col-sku{
  width:108px;max-width:120px;min-width:72px;
  font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;
  font-weight:var(--fw-semibold);
  color:var(--primary);
  letter-spacing:.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.prod-table .col-en,
.prod-table th.col-en{
  max-width:140px;min-width:80px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.prod-table td.col-mat{
  max-width:88px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.prod-table .col-num,
.prod-table th.col-num{
  font-variant-numeric:tabular-nums;
  font-family:var(--font-sans);
  font-feature-settings:"tnum" 1;
  font-size:12.5px;
  text-align:right;
}
.prod-table th.col-mat,.prod-table td.col-mat{max-width:88px}
.prod-table th.col-fac,.prod-table td.col-fac{max-width:100px;overflow:hidden;text-overflow:ellipsis}
.prow{cursor:pointer;transition:background var(--dur-fast)}
.prow:hover td{background:var(--row-hover)!important}
.prow.sel td{background:var(--row-active)!important}

/* 缩略图统一为 40px 高密度规格 */
.thumb-cell{width:calc(var(--biz-thumb) + 16px);max-width:calc(var(--biz-thumb) + 16px);padding:4px 8px!important;overflow:hidden;vertical-align:middle}
.thumb{position:relative;display:inline-flex;width:var(--biz-thumb);height:var(--biz-thumb);border:1px solid var(--border);border-radius:8px;background:var(--bg);align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;cursor:zoom-in;outline:none}
.thumb:focus-visible{box-shadow:0 0 0 2px var(--primary-soft),0 0 0 4px var(--primary)}
.thumb>img,.thumb .thumb-img{width:100%;height:100%;object-fit:cover;border-radius:7px;display:block}
.thumb-emoji{font-size:18px;line-height:1}.thumb-emoji.big{font-size:64px}
.thumb-badge{position:absolute;right:2px;bottom:2px;background:rgba(0,0,0,.55);color:#fff;font-size:9px;line-height:1;padding:2px 4px;border-radius:4px}
.thumb-preview-pop{position:fixed;z-index:1000;width:280px;height:280px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.22);padding:8px;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .12s ease;box-sizing:border-box}
.thumb-preview-pop.visible{opacity:1}
.thumb-preview-pop img{max-width:100%;max-height:100%;object-fit:contain;display:block}

/* 大图预览（点击放大 + 下载） */
.img-lightbox{position:fixed;inset:0;z-index:2000;background:rgba(15,23,42,.72);display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
.img-lightbox-inner{background:#fff;border-radius:12px;max-width:min(920px,96vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.img-lightbox-hd{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border)}
.img-lightbox-bd{padding:16px;overflow:auto;display:flex;align-items:center;justify-content:center;background:#f1f5f9;min-height:280px}
.img-lightbox-bd img{max-width:100%;max-height:70vh;object-fit:contain;display:block}
.img-lightbox-thumbs{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--border);overflow-x:auto}
.img-lightbox-thumbs button{width:56px;height:56px;padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;background:#fff;cursor:pointer}
.img-lightbox-thumbs button.active{border-color:var(--navy)}
.img-lightbox-thumbs img{width:100%;height:100%;object-fit:cover;display:block}

/* 产品多图上传 */
.img-multi-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.img-multi-item{position:relative;width:72px;height:72px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg)}
.img-multi-item img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.img-multi-item .img-x{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:12px;cursor:pointer;line-height:1}
.img-multi-add{width:72px;height:72px;border:1px dashed var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;color:var(--ink3);background:#fff}
.pd-gallery{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.pd-gallery .thumb{width:64px;height:64px}

/* 详情面板 */
.prod-detail{
  background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;
  position:sticky;top:12px;align-self:start;
  width:100%;max-width:100%;
  height:calc(100vh - 130px);max-height:calc(100vh - 130px);overflow-y:auto;overflow-x:hidden;
  box-sizing:border-box;box-shadow:var(--shadow-sm);z-index:1;
}
.pd-empty{/* legacy → 使用 emptyState() */}
.pd-thumb{width:100%;height:120px;background:var(--bg);border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.pd-thumb>img{max-width:100%;max-height:100%;object-fit:contain}
.pd-name-cn{font-size:16px;font-weight:700}
.pd-name-en{font-size:12px;color:var(--ink3);margin-bottom:12px}
.pd-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.pd-cell{background:var(--bg);border-radius:8px;padding:7px 10px}
.pd-k{font-size:10.5px;color:var(--ink3)}
.pd-v{font-size:13px;font-weight:600;margin-top:2px}
.pd-price{background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:12px}
.pd-price-row{display:flex;justify-content:space-between;align-items:center;color:var(--ink2);font-size:12px;padding:3px 0}
.pd-price-row b{color:var(--ink);font-size:13px}
.pd-price-row.hl{border-top:1px solid var(--border);margin-top:5px;padding-top:8px}
.pd-price-row.hl b{color:var(--primary)}
.pd-note{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-size:12px;color:var(--ink2);line-height:1.6}
.modal-lg{width:720px}
.modal-lg .form-grid{grid-template-columns:1fr 1fr 1fr}

/* 图片上传控件 */
.img-uploader{display:flex;gap:16px;padding:14px;background:var(--bg);border-radius:10px;margin-bottom:16px}
.img-preview{flex:0 0 110px;width:110px;height:110px;background:#fff;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.img-preview>img{width:100%;height:100%;object-fit:contain}
.img-ph{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:38px;color:var(--ink3)}
.img-ph small{font-size:11px}
.img-up-ctrl{flex:1;display:flex;flex-direction:column;gap:8px;justify-content:center}
.img-btn-row{display:flex;gap:8px}
.img-btn-row .btn{padding:7px 14px;font-size:12.5px}
.img-up-ctrl #img-url{padding:8px 11px;border:1px solid var(--border);border-radius:7px;font-size:12.5px;outline:none}
.img-up-ctrl #img-url:focus{border-color:var(--navy)}
.img-hint{font-size:11.5px;color:var(--ink2);line-height:1.6}
.img-hint b{color:var(--navy)}
.img-warn{font-size:12px;color:#7F5B00;background:var(--gold-lt);border-radius:6px;padding:7px 10px;line-height:1.5}
.form-item textarea{padding:9px 11px;border:1px solid var(--border);border-radius:7px;font-size:13px;outline:none;font-family:inherit;resize:vertical}
.form-item textarea:focus{border-color:var(--navy)}

@media(max-width:900px){.app-wrap{grid-template-columns:64px 1fr}.side-logo span,.side-user,#side-nav a .nav-txt{display:none}.kpi-row,.grid-2,.stats-row{grid-template-columns:1fr}.prod-body{grid-template-columns:1fr}}

/* ══════════ 设计系统 v2（新皮肤 · 全站公共组件）══════════ */

/* 侧边栏 · 高级深色（覆盖早期浅色规则） */
.app-wrap{grid-template-columns:var(--sb-width) minmax(0,1fr)}
.sidebar{
  background:linear-gradient(180deg,var(--sb1) 0%,var(--sb2) 100%);
  color:var(--sb-text);
  border-right:1px solid var(--sb-border);
  box-shadow:inset -1px 0 0 rgba(0,0,0,.25);
  width:auto; /* 由 grid track 决定 */
}
.side-logo{
  display:flex;align-items:center;gap:10px;padding:18px 16px;
  border-bottom:1px solid var(--sb-border);font-size:0;background:transparent;
}
.side-logo::before{
  content:'中飞';display:inline-flex;align-items:center;justify-content:center;
  width:36px;height:36px;
  background:linear-gradient(145deg,var(--primary-bright),var(--primary));
  color:#fff;border-radius:10px;font-size:12px;font-weight:700;letter-spacing:-.02em;
  flex:0 0 auto;box-shadow:0 4px 14px rgba(43,109,232,.35);
  font-family:var(--font-sans);
}
.side-logo>span{display:none}
.side-logo::after{
  content:'中飞 国际贸易\A管理系统';white-space:pre;
  font-size:13.5px;font-weight:var(--fw-semibold);color:#F3F5F8;line-height:1.35;
  letter-spacing:-.02em;font-family:var(--font-sans);
}
#side-nav{padding:10px 8px}
#side-nav a{
  padding:9px 12px;margin:0 0 2px;font-size:13px;
  color:var(--sb-text);border-left:3px solid transparent;border-radius:10px;gap:10px;
  background:transparent;box-shadow:none;
}
#side-nav a:hover{color:#E8ECF2;background:var(--sb-hover)}
#side-nav a.active{
  color:var(--sb-text-active);background:var(--sb-active);
  border-left-color:var(--sb-accent);font-weight:var(--fw-semibold);
  box-shadow:none;
}
#side-nav a .nav-ic{width:var(--icon-nav);height:var(--icon-nav);opacity:.8;color:var(--sb-muted)}
#side-nav a:hover .nav-ic{opacity:.95;color:#C5CCD8}
#side-nav a.active .nav-ic{opacity:1;color:#fff}
.side-user{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:14px 16px;border-top:1px solid var(--sb-border);background:rgba(0,0,0,.18);
  color:#E8ECF2;
}
.side-user::before{
  content:attr(data-initial);
  display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:50%;
  background:rgba(43,109,232,.28);color:#D6E4FF;
  font-weight:var(--fw-semibold);font-size:13px;flex:0 0 auto;
  font-family:var(--font-sans);
}
.side-user #su-name{font-weight:var(--fw-semibold);color:#F3F5F8;font-size:13px}
.side-user #su-role{width:100%;order:3;color:var(--sb-muted)}
.side-user a{width:100%;order:4;color:var(--sb-text)}
.side-user a:hover{color:#fff}

/* 顶栏公共组件 · 门面大字 */
.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-5);gap:20px}
.tb-title{font-size:var(--font-page);font-weight:var(--fw-semibold);letter-spacing:-.03em;color:var(--ink);line-height:var(--lh-tight)}
.tb-sub{font-size:var(--font-caption);color:var(--ink3);margin-top:4px;font-weight:var(--fw-medium);line-height:1.35}
.topbar > div > .tb-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:min(720px,70vw)}
.tb-actions{display:flex;gap:10px;flex-wrap:wrap}
.btn-blue{background:var(--primary);color:#fff}.btn-blue:hover{background:var(--primary-2)}
.btn-outline{background:#fff;border:1px solid var(--border);color:var(--ink2)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}

/* 时间筛选条 */
.time-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:var(--space-4)}
.tf-chip{padding:7px 14px;border:1px solid var(--border);border-radius:999px;background:var(--card);cursor:pointer;font-size:12.5px;color:var(--ink2);font-weight:var(--fw-medium);transition:border-color var(--dur-fast),color var(--dur-fast),background var(--dur-fast)}
.tf-chip:hover{border-color:var(--primary);color:var(--primary)}
.tf-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.tf-range{margin-left:auto;font-size:12.5px;color:var(--ink2);background:var(--card);border:1px solid var(--border);border-radius:999px;padding:7px 14px}

/* KPI 卡 · 响应式：随屏宽增减列数，不被撑变形 */
.kpi-grid{display:grid;gap:var(--dash-gap,16px);margin-bottom:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--kpi-card-min)),1fr))}
.kpi-grid.c6,.kpi-grid.c4,.kpi-grid.c5,.kpi-grid.c7,.kpi-grid.c8{
  grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--kpi-card-min)),1fr));
}
.kpi-grid.c4{--kpi-card-min:200px}
.kpi-grid.c5{--kpi-card-min:176px}
.kpi-grid.c6{--kpi-card-min:160px}
.kpi-grid.c7,.kpi-grid.c8{--kpi-card-min:148px}
.kc{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;position:relative;box-shadow:var(--shadow-sm);transition:transform var(--dur-fast),box-shadow var(--dur-fast);min-width:0;overflow:hidden}
.kc:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.kc-l{font-size:12.5px;color:var(--ink2);font-weight:var(--fw-medium)}
.kc-v{font-size:28px;font-weight:var(--fw-semibold);margin-top:10px;letter-spacing:-.03em;color:var(--ink);line-height:1.1}
.kc-d{font-size:11.5px;margin-top:8px;color:var(--ink3)}
.kc-d .up{color:var(--green);font-weight:600}.kc-d .down{color:var(--red);font-weight:600}
.kc-ic{
  position:absolute;top:12px;right:12px;
  width:var(--icon-circle);height:var(--icon-circle);border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  overflow:hidden;flex:none;line-height:1;color:var(--primary);
}
.kc-ic .luc, .kc-ic svg{width:var(--icon-md);height:var(--icon-md);stroke-width:2}
.ic-red,.ic-danger{background:var(--danger-lt);color:var(--danger)}
.ic-blue,.ic-info,.ic-primary{background:var(--primary-soft);color:var(--primary)}
.ic-green,.ic-success{background:var(--success-lt);color:var(--success)}
.ic-purple{background:var(--purple-lt);color:var(--purple)}
.ic-amber,.ic-warning{background:var(--warning-lt);color:var(--warning)}
.ic-gold{background:var(--gold-lt);color:#9A7200}

/* Lucide 行内图标 */
.luc,i[data-lucide]{display:inline-flex;align-items:center;justify-content:center;width:var(--icon-md);height:var(--icon-md);flex:none;color:inherit;vertical-align:middle}
.luc svg,i[data-lucide] svg{width:100%;height:100%;stroke:currentColor;stroke-width:2;fill:none}
.ico{
  display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;flex:none;margin-right:6px;color:inherit;vertical-align:-0.15em;
}
.ico .luc,.ico svg, .ico i[data-lucide], .ico i[data-lucide] svg{width:16px;height:16px}
.warnbar-hd .ico{width:18px;height:18px;margin-right:8px;color:var(--danger)}
.warnbar-hd .ico .luc,.warnbar-hd .ico svg{width:18px;height:18px}
.ph-t .ico{color:var(--primary)}
.nav-ic{width:var(--icon-nav);height:var(--icon-nav);flex:none;opacity:.92}
.nav-ic svg{width:100%;height:100%}

/* 预警中心横条 */
.warnbar{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:4px 0;margin-bottom:var(--space-5);display:grid;grid-template-columns:150px repeat(5,1fr);box-shadow:var(--shadow-sm)}
.warnbar-hd{display:flex;align-items:center;gap:4px;padding:18px;font-weight:var(--fw-semibold);color:var(--danger);font-size:13px;line-height:1.3}
.warn-cell{padding:16px 18px;border-left:1px solid var(--border)}
.warn-cell .wc-t{font-size:12.5px;color:var(--ink2);display:flex;align-items:center;gap:2px;line-height:1.3}
.warn-cell .wc-v{font-size:22px;font-weight:var(--fw-semibold);margin:6px 0 2px;letter-spacing:-.02em;color:var(--ink)}
.warn-cell .wc-s{font-size:11px;color:var(--ink3)}
.warn-cell .wc-s.red{color:var(--danger)}

/* 内容区两/三栏 */
.grid-58{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;margin-bottom:16px}
.panel-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.panel-hd .ph-t{font-size:var(--font-section);font-weight:var(--fw-semibold);display:flex;align-items:center;gap:8px;color:var(--ink)}
.panel-hd .ph-more{font-size:12px;color:var(--primary);cursor:pointer;font-weight:var(--fw-medium)}

/* 拍剪四宫格 */
.quad{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.quad-cell{text-align:center;padding:16px 8px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-subtle)}
.quad-ic{
  width:var(--icon-circle);height:var(--icon-circle);border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;
  overflow:hidden;margin:0 auto 8px;flex:none;color:var(--primary);
}
.quad-ic .luc,.quad-ic svg{width:var(--icon-md);height:var(--icon-md)}
.quad-v{font-size:22px;font-weight:800}
.quad-l{font-size:12px;color:var(--ink2);margin-top:2px}
.quad-s{font-size:10.5px;color:var(--ink3);margin-top:3px}

/* 环形图（纯CSS conic）*/
.ring{width:120px;height:120px;border-radius:50%;position:relative;flex:0 0 auto}
.ring::after{content:'';position:absolute;inset:22px;background:var(--card);border-radius:50%}
.ring-legend{font-size:12px;display:flex;flex-direction:column;gap:6px}
.ring-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px}

/* 迷你进度条 */
.mini-bar{height:6px;background:var(--bg);border-radius:4px;overflow:hidden;min-width:60px}
.mini-bar>i{display:block;height:100%;background:var(--blue);border-radius:4px}

/* 资金账户卡 */
.acct-card{border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:flex-start}
.acct-name{font-size:13px;font-weight:600}
.acct-sub{font-size:11px;color:var(--ink3);margin-top:6px}
.acct-bal{font-size:20px;font-weight:800;text-align:right}

/* 状态标签补充色 */
.tag-purple{background:var(--purple-lt);color:#5646C4}
.tag-amber{background:var(--amber-lt);color:#9A6412}

/* 报价表单：两列栅格 + 输入框不溢出 */
.q-form2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.form-item input,.form-item select,.form-item textarea{width:100%;box-sizing:border-box;min-width:0}

/* 报价页 · 新建表单 + 产品查找等高，右侧列表拉长填空白 */
.quotes-page .q-build-grid{
  display:grid;
  grid-template-columns:340px 1fr;
  gap:14px;
  align-items:stretch;
  margin-bottom:14px;
}
.quotes-page .q-finder-panel{
  display:flex;
  flex-direction:column;
  min-height:0;
  min-width:0;
}
.quotes-page .q-finder-panel > .panel-hd,
.quotes-page .q-finder-panel > #qf-search{flex-shrink:0}
.quotes-page .q-finder-body{
  display:grid;
  grid-template-columns:140px minmax(0,1fr);
  gap:12px;
  align-items:stretch;
  flex:1 1 auto;
  min-height:0;
}
.quotes-page .q-finder-body #qf-tree{
  position:static;
  max-height:none;
  height:100%;
  overflow:auto;
  align-self:stretch;
}
.quotes-page .q-finder-list{
  display:flex;
  flex-direction:column;
  min-width:0;
  min-height:0;
  height:auto;
}
.quotes-page .q-finder-tbl{
  height:min(520px,60vh);
  max-height:60vh;
  min-height:320px;
  flex:0 0 auto;
  overflow-x:auto;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
}
.quotes-page .q-finder-tbl th{
  position:sticky;
  top:0;
  z-index:3;
  background:#fff;
  box-shadow:0 1px 0 var(--border);
}
.quotes-page .qf-more{
  display:flex;
  justify-content:stretch;
  flex-shrink:0;
  padding:0;
}
.quotes-page .qf-more .qf-pager{
  width:100%;
  margin:0;
  border-radius:0 0 8px 8px;
}
.quotes-page .qf-more:empty{display:none;padding:0}
@media (max-width:1100px){
  .quotes-page .q-build-grid{grid-template-columns:1fr}
  .quotes-page .q-finder-tbl{height:min(480px,58vh);min-height:240px}
}

/* 报价页 · 客户名称 combobox */
.cust-combo-wrap{position:relative}
.cust-drop{position:absolute;left:0;right:0;top:100%;z-index:50;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:240px;overflow-y:auto;margin-top:4px}
.cust-drop-item{padding:9px 12px;font-size:13px;cursor:pointer;border-bottom:1px solid var(--border)}
.cust-drop-item:last-child{border-bottom:none}
.cust-drop-item:hover,.cust-drop-item.active{background:var(--blue-lt)}
.cust-drop-item .cust-sub{font-size:11px;color:var(--ink3);margin-top:2px}
.cust-drop-custom{padding:9px 12px;font-size:13px;cursor:pointer;color:var(--blue);border-top:1px solid var(--border);background:var(--bg)}
.cust-drop-custom:hover{background:var(--blue-lt)}
.cust-drop-empty{padding:12px;font-size:12px;color:var(--ink3);text-align:center}

/* 询盘跟进页 */
.inq-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px;align-items:center}
.inq-filters select{padding:7px 10px;border:1px solid var(--border);border-radius:7px;font-size:13px;background:#fff}
.inq-ch-grid{display:flex;flex-direction:column;gap:14px;margin-bottom:14px}
.inq-ch-panel{min-width:0;width:100%}
.inq-ch-stats{font-size:12px;color:var(--ink2);margin-bottom:10px}
.inq-ch-stats b{color:var(--ink)}
.inq-tbl{max-height:280px;overflow-x:auto}
.inq-overdue td{background:rgba(220,53,69,.04)}
.inq-ed{cursor:pointer;color:var(--blue)}
.inq-ed:hover{text-decoration:underline}
.inq-alerts{list-style:none;padding:0;margin:0;font-size:13px;line-height:2.2;color:var(--ink2)}
.inq-alerts b{color:var(--ink);font-size:15px}
.kc-click:hover{border-color:var(--blue);box-shadow:0 0 0 1px rgba(37,99,235,.12)}
.kc-active{border-color:var(--blue)!important;box-shadow:0 0 0 2px rgba(37,99,235,.18)}

/* 投放数据页 */
.ad-plat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:0 14px 14px}
.ad-plat-card{border:1px solid var(--border);border-radius:10px;padding:14px;background:#fff;min-width:0;overflow:hidden}
.ad-plat-card h4{margin:0 0 10px;font-size:14px;font-weight:700;overflow-wrap:anywhere;word-break:break-word}
.ad-plat-row{display:flex;justify-content:space-between;font-size:12.5px;padding:4px 0;color:var(--ink2)}
.ad-plat-row b{color:var(--ink);font-weight:600}
.ad-tabs{display:flex;gap:8px;margin:0 14px 12px;flex-wrap:wrap}
.ad-tab{padding:6px 14px;border:1px solid var(--border);border-radius:7px;cursor:pointer;font-size:12.5px;background:#fff;color:var(--ink2)}
.ad-tab:hover{border-color:var(--blue);color:var(--blue)}
.ad-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.ad-grp-hd{font-size:13px;font-weight:600;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-bottom:none;border-radius:8px 8px 0 0;margin:0 14px}
.ad-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;margin-bottom:14px}
.ad-boss-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.ad-boss-card{border:1px solid var(--border);border-radius:10px;padding:16px;text-align:center;background:#fff}
.ad-boss-card .lbl{font-size:12px;color:var(--ink2)}
.ad-boss-card .val{font-size:17px;font-weight:800;margin:8px 0 2px;color:var(--ink)}
.ad-alert-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}
.ad-alert-dot.red{background:var(--red)}.ad-alert-dot.amber{background:var(--amber)}.ad-alert-dot.green{background:var(--green)}
.ad-alerts{list-style:none;padding:0 14px 14px;margin:0;font-size:12.5px;line-height:2;color:var(--ink2)}

/* 询盘跟进 · 右侧抽屉 */
.inq-drawer-mask{position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:200;opacity:0;transition:opacity .2s}
.inq-drawer-mask.open{opacity:1}
.inq-drawer{position:fixed;top:0;right:0;width:min(720px,92vw);height:100vh;background:#fff;box-shadow:-8px 0 32px rgba(0,0,0,.12);display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s}
.inq-drawer-mask.open .inq-drawer{transform:translateX(0)}
.inq-drawer-hd{display:flex;justify-content:space-between;align-items:flex-start;padding:18px 20px;border-bottom:1px solid var(--border)}
.inq-drawer-hd h3{margin:0;font-size:17px}
.inq-drawer-sub{font-size:12px;color:var(--ink3);margin-top:4px}
.inq-drawer-x{background:none;border:none;font-size:18px;cursor:pointer;color:var(--ink3);padding:4px 8px}
.inq-drawer-stats{padding:12px 20px;background:var(--bg);border-bottom:1px solid var(--border);font-size:12px;line-height:1.8;color:var(--ink2)}
.inq-drawer-stats .lbl{display:inline-block;min-width:42px;font-weight:600;color:var(--ink)}
.inq-drawer-body{flex:1;overflow:auto;padding:16px 20px}
.inq-drawer-form .inq-drawer-body{padding:16px 20px 24px}
.inq-drawer-ft{display:flex;gap:10px;justify-content:flex-end;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}
.inq-stat-link{cursor:pointer;color:var(--blue)}
.inq-stat-link:hover{text-decoration:underline}
.inq-stat-link b{color:var(--ink)}
.inq-sb-link{cursor:pointer}
.inq-sb-link:hover{color:var(--blue);text-decoration:underline}
.inq-log{list-style:none;padding:0;margin:8px 0 0;font-size:12px;line-height:1.7}
.inq-log-ts{color:var(--ink3);margin-right:6px}

.inq-form2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.inq-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;margin:2px 4px 2px 0;background:var(--blue-lt);color:var(--blue);border-radius:6px;font-size:12px}
.inq-chip-x{color:var(--ink3);text-decoration:none;font-weight:700;margin-left:2px}
.inq-prod-chips{margin-top:6px;flex-wrap:wrap;display:flex}
.inq-prod-cell{max-width:160px}
.inq-prod-add{display:flex;gap:8px;margin-bottom:6px}
.inq-prod-add input{flex:1;padding:7px 10px;border:1px solid var(--border);border-radius:7px}
.inq-cust-link{cursor:pointer;color:var(--blue)}
.inq-cust-link:hover{text-decoration:underline}
.inq-dup-warn{background:var(--amber-lt);border:1px solid #e8c96a;border-radius:8px;padding:10px 12px;font-size:13px;margin-bottom:10px}
.inq-archive-toggle{display:flex;align-items:center;gap:8px;margin-top:12px;padding:10px 12px;background:var(--bg);border-radius:8px;font-size:13px;cursor:pointer}
.inq-archive-toggle input{width:16px;height:16px}
.inq-sec{margin-bottom:16px}
.inq-sec-t{font-size:13px;font-weight:700;margin-bottom:8px;color:var(--ink)}
.inq-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12.5px}
.inq-meta span{color:var(--ink3);display:block;font-size:11px}
.inq-readonly{font-size:12.5px;margin-bottom:12px;padding:10px;background:var(--bg);border-radius:8px}
.inq-timeline{list-style:none;padding:0;margin:0}
.inq-timeline li{padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}
.inq-tl-hd{font-size:12px;margin-bottom:4px;color:var(--ink2)}
.inq-spec-in{border:none;background:transparent;width:80px;font-size:11px;padding:2px 4px}
.inq-drawer-detail .inq-drawer-body{padding-bottom:24px}

/* 客户 CRM */
.crm-page{display:flex;flex-direction:column;gap:16px}
.crm-page .topbar,.crm-page .inq-filters,.crm-page .kpi-grid{margin-bottom:0}
.crm-kpi{margin-bottom:0}
.crm-mid-grid{display:grid;grid-template-columns:1fr;gap:16px;align-items:stretch}
.crm-page .crm-map-stack{grid-template-columns:minmax(0,1fr)!important}
.crm-bottom-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:16px;align-items:start}
.crm-map-panel,.crm-pot-panel{display:flex;flex-direction:column;min-height:100%}
.crm-map-panel{min-height:560px}
.crm-echart{
  width:100%;height:clamp(500px,48vw,640px);min-height:500px;
  padding:0 14px 14px;box-sizing:border-box;position:relative;
}
.crm-map-loading,.crm-map-error{display:flex;align-items:center;justify-content:center;height:100%;min-height:380px;font-size:13px;text-align:center;padding:24px;box-sizing:border-box}
.crm-map-error{color:var(--red);flex-direction:column;gap:8px}
.crm-map-loading{color:var(--ink3)}
.crm-map-reset{border:none;background:none;padding:0;font-size:12px;color:var(--blue);cursor:pointer;text-decoration:underline}
.crm-map-reset:hover{color:#1d4ed8}
.crm-pot-tbl{flex:1;overflow:auto;max-height:none}
.crm-side-stack{display:flex;flex-direction:column;gap:16px}
.crm-bar-row{display:flex;align-items:center;gap:8px;padding:5px 0;cursor:pointer;border-radius:6px}
.crm-bar-row:hover{background:var(--bg)}
.crm-bar{flex:1;height:8px;background:var(--bg);border-radius:4px;overflow:hidden;border:1px solid var(--border)}
.crm-bar div{height:100%;background:var(--blue);border-radius:3px}
.crm-sec-t{font-size:12px;font-weight:700;color:var(--ink2);margin-bottom:6px}
.crm-drill-link,.crm-list-link{cursor:pointer;color:var(--blue)}
.crm-drill-link:hover,.crm-list-link:hover{text-decoration:underline}
.crm-pot-row,.crm-alert-row{cursor:pointer}
.crm-pot-row:hover td,.crm-alert-row:hover{opacity:.85}
.crm-tag-link{cursor:pointer}
.crm-dr-row{cursor:pointer}
.crm-dr-row:hover td{background:var(--bg)}
.crm-dr-link{color:var(--blue)}
@media (max-width:1100px){
  .crm-mid-grid,.crm-bottom-grid{grid-template-columns:1fr}
  .crm-map-panel{min-height:440px}
  .crm-echart{height:clamp(400px,56vw,520px);min-height:400px}
  .crm-pot-tbl{max-height:none}
}
@media (max-width:700px){
  .crm-map-panel{min-height:350px}
  .crm-echart{height:350px;min-height:350px;padding:0 4px 8px}
}

/* 社媒运营 */
.soc-page{display:flex;flex-direction:column;gap:14px;max-width:100%;overflow-x:hidden;padding-top:2px}
.soc-page .topbar,.soc-page .inq-filters,.soc-page .kpi-grid,.soc-page .time-filter{margin-bottom:0}
.soc-page .soc-filters{margin-bottom:0}
.soc-page .soc-time-filter{
  position:relative;z-index:1;
  margin:0;padding:10px 12px;
  background:var(--card);border:1px solid var(--border);border-radius:10px;
  flex-wrap:wrap;row-gap:8px;
}
.soc-page .soc-time-filter .tf-range{margin-left:auto;white-space:nowrap}
.soc-page .soc-kpi{
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:12px;
}
.soc-page .soc-kpi .kc{padding:14px 16px;min-width:0}
.soc-page .soc-kpi .kc-v{font-size:22px}
.soc-page .kc-soc-output{padding-right:14px}
.soc-page .kc-soc-output .kc-ic{display:none}
.soc-page .kc-soc-output .kc-soc-lines{margin-top:6px;font-size:12.5px;line-height:1.55;color:var(--ink2)}
.soc-page .kc-soc-output .kc-soc-lines b{color:var(--ink);font-weight:700;font-size:14px}
.soc-page .kc-soc-output .kc-d{margin-top:4px;font-size:11px}
.soc-page .soc-plat-grid{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:12px;
  padding:0;
  margin:0;
}
.soc-page .soc-plat-card{padding:12px 14px;border-radius:10px}
.soc-page .soc-plat-card h4{margin:0 0 8px;font-size:13px}
.soc-page .soc-card-hint{color:var(--ink3);font-weight:400;font-size:12px}
.soc-page .soc-plat-card .ad-plat-row{font-size:12px;padding:3px 0}
.soc-page .soc-stack{display:flex;flex-direction:column;gap:14px}
.soc-page .soc-stack .soc-panel{min-height:auto;width:100%;margin:0}
.soc-page .soc-stack .soc-panel .panel-hd{flex-shrink:0;margin-bottom:10px}
.soc-page .soc-stack .tbl-wrap{overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch}
.soc-page .soc-vid-tbl,.soc-page .soc-conv-tbl{max-height:360px;overflow:auto}
.soc-page .soc-conv-table{min-width:560px;width:100%}
.soc-page .soc-tbl{min-width:0}
.soc-page .soc-conv-row{cursor:pointer}
.soc-page .soc-conv-row:hover td{background:var(--bg)}
.soc-drill-link{cursor:pointer;color:var(--blue)}
.soc-drill-link:hover{text-decoration:underline}
.soc-drill-drawer{width:min(760px,94vw)}
.soc-plat-card{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.soc-plat-card:hover{border-color:var(--blue)}
.soc-sec-t{font-size:12px;font-weight:700;color:var(--ink2);margin:8px 0 6px}
.soc-maint-list{list-style:none;padding:0;margin:0 0 10px;font-size:13px;line-height:1.9;color:var(--ink2)}
@media (max-width:1280px){
  .soc-page .soc-kpi{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:1100px){
  .soc-page .soc-plat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:640px){
  .soc-page .soc-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}
  .soc-page .soc-plat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .soc-page .soc-time-filter .tf-range{margin-left:0;width:100%}
}

#su-profile{color:var(--gold);font-size:12px;text-decoration:none;display:block;margin-top:4px}
.rbac-tabs{display:flex;gap:8px;margin-bottom:14px}
.rbac-tab{padding:8px 16px;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:13px;background:#fff}
.rbac-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.rbac-role-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.rbac-mod-tags{display:flex;flex-wrap:wrap;gap:6px;padding:12px 14px}
.rbac-mod-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;max-height:220px;overflow:auto}
.rbac-mod-chk{font-size:12.5px;display:flex;align-items:center;gap:6px;cursor:pointer}
.rbac-sec{margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}

/* 财务 · 贸易进销存 */
.fa-group{display:flex;flex-direction:column;gap:10px}
.fa-group-hd{display:flex;justify-content:space-between;align-items:baseline;padding:0 2px}
.fa-group-hd b{font-size:14px;color:#0f172a}
.fa-group-hd span{font-size:12px;color:#64748b}
.fa-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.fa-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:14px;box-shadow:0 4px 14px rgba(15,23,42,.04);display:flex;flex-direction:column;gap:12px}
.fa-card-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.fa-name{font-size:15px;font-weight:700;color:#0f172a}
.fa-type{display:inline-block;margin-top:4px;font-size:11px;font-weight:600;color:#1d4ed8;background:#eff6ff;padding:2px 8px;border-radius:999px}
.fa-bal{font-size:18px;font-weight:800;color:#0f172a;white-space:nowrap}
.fa-card-ops{display:flex;gap:6px;flex-wrap:wrap}
.fa-card-ops .btn{padding:4px 10px;font-size:12px}
.fa-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tag-amber{background:#fffbeb;color:#b45309}
.fin-page{
  display:flex;
  flex-direction:column;
  gap:var(--dash-section, 28px);
}
.fin-page .topbar{margin-bottom:0}
.fin-page .fin-tabs{margin:0}
.fin-page .fin-range-bar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0;padding:4px 0 2px;
}
.fin-page .kpi-grid,
.fin-page .fin-kpi{
  margin:0;
  gap:var(--dash-gap, 20px);
  /* 宽屏 3 列两行；再宽可到 4；窄屏 2 */
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.fin-page .fin-kpi .kc{
  padding:var(--dash-card-pad, 22px 24px);
  padding-right:56px;
  min-height:0;
}
.fin-page .fin-kpi .kc-l{margin-bottom:2px;line-height:1.35}
.fin-page .fin-kpi .kc-v{margin-top:8px;font-size:24px;line-height:1.15}
.fin-page .fin-kpi .kc-d{margin-top:8px;line-height:1.4}
.fin-kpi .kc.fin-drill{cursor:pointer}
.fin-kpi .kc.fin-drill:hover{box-shadow:var(--shadow-md)}
.fin-alerts{display:flex;flex-direction:column;gap:10px;margin:0}
.fin-psi{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--dash-gap, 20px);
  margin:0;
}
.fin-psi-card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  padding:var(--dash-card-pad, 22px 24px);
  cursor:pointer;
  box-shadow:var(--shadow-sm);
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast);
}
.fin-psi-card:hover{border-color:var(--primary);box-shadow:var(--shadow-md)}
.fin-psi-t{font-size:12.5px;font-weight:600;color:var(--ink2);margin-bottom:8px;letter-spacing:.02em}
.fin-psi-v{font-size:22px;font-weight:700;color:var(--primary);line-height:1.15;letter-spacing:-.02em}
.fin-psi-d{font-size:12px;color:var(--ink2);margin-top:8px;line-height:1.4}
.fin-page > .panel{
  margin:0;
  padding:16px 18px 18px;
}
.fin-page > .panel > .panel-hd{margin-bottom:12px}
.fin-mid-grid,
.fin-bottom-grid{
  display:grid;
  gap:var(--dash-gap-lg, 18px);
  margin:0;
  /* 内容少时不互相撑高，避免大块空白 */
  align-items:start;
}
.fin-mid-grid{grid-template-columns:1fr 1fr}
.fin-bottom-grid{grid-template-columns:1fr 1.2fr}
.fin-mid-grid > .panel,
.fin-bottom-grid > .panel,
.fin-page .fin-boss{
  margin:0;
  padding:16px 18px 18px;
  height:auto;
  align-self:start;
}
.fin-mid-grid > .panel .tbl-wrap,
.fin-bottom-grid > .panel .tbl-wrap{
  /* 表格贴内容，不把卡片撑成等高空壳 */
  overflow:auto;
}
.fin-cust-tbl{max-height:360px;overflow:auto}
.fin-sup-row,.fin-cust-row{cursor:pointer}
.fin-sup-row:hover td,.fin-cust-row:hover td{background:var(--row-hover)}
.fin-boss-row{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
  gap:14px;
  padding:4px 0 8px;
}
.fin-boss-item{
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:var(--radius-sm);
  padding:14px 12px;
  text-align:center;
}
.fin-boss-item span{display:block;font-size:11.5px;color:var(--ink2);margin-bottom:8px;line-height:1.3}
.fin-boss-item b{font-size:16px;color:var(--primary);line-height:1.2}
.fin-drawer .inq-drawer-body{padding:14px 18px}
.fin-range-btn{padding:6px 14px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:12.5px;cursor:pointer}
.fin-range-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
/* 报销三色块：略矮、留白匀、不顶满 */
.fin-exp-stats{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--dash-gap, 16px);
  padding:2px 0 4px;
}
.fin-exp-stat{
  background:var(--bg);
  border:1px solid var(--border);
  border-radius:var(--radius-md);
  padding:12px 14px;
  text-align:center;
  cursor:pointer;
  min-height:0;
  transition:border-color var(--dur-fast),background var(--dur-fast);
}
.fin-exp-stat:hover{border-color:var(--border-strong);background:var(--bg-subtle)}
.fin-exp-stat b{
  display:block;
  font-size:17px;
  font-weight:700;
  color:var(--primary);
  line-height:1.25;
  margin-bottom:6px;
}
.fin-exp-stat span{font-size:12px;color:var(--ink2);line-height:1.35}
.fin-exp-cats{padding:6px 0 2px;display:flex;flex-wrap:wrap;gap:8px}
@media (min-width:1280px){
  .fin-page .fin-kpi{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:1100px){
  .fin-page .fin-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fin-mid-grid,.fin-bottom-grid,.fin-psi{grid-template-columns:1fr}
  .fin-exp-stats{grid-template-columns:1fr}
  .fin-boss-row{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  .fin-page .fin-kpi{grid-template-columns:1fr}
}
.exp-page .exp-tabs{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.exp-tab{padding:8px 14px;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:13px;background:#fff}
.exp-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.exp-v-cell{display:flex;gap:4px;flex-wrap:wrap}
.exp-v-thumb img{width:36px;height:36px;object-fit:cover;border-radius:4px;border:1px solid var(--border)}
.exp-v-thumb{font-size:20px;text-decoration:none}
.q-list-tabs{display:flex;gap:8px;padding:10px 12px 0}
.q-list-tab{padding:6px 12px;font-size:12.5px;border:1px solid var(--border);border-radius:6px;cursor:pointer;background:#fff}
.q-list-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.q-list-pager{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;
  padding:10px 12px 12px;border-top:1px solid var(--border);background:var(--bg-subtle);
}
.q-list-pager .muted{margin-right:auto;font-size:12px}

/* 订单管理 */
.ord-page{display:flex;flex-direction:column;gap:14px}
.ord-page .topbar,.ord-page .inq-filters,.ord-page .kpi-grid,.ord-page .time-filter{margin-bottom:0}
.ord-kpi .kc{cursor:pointer;transition:box-shadow .15s}
.ord-kpi .kc:hover{box-shadow:0 4px 14px rgba(15,23,42,.08)}
.ord-stage-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:2px}
.ord-stage-tab{padding:6px 14px;border:1px solid var(--border);border-radius:20px;font-size:12.5px;cursor:pointer;background:#fff;color:var(--ink2)}
.ord-stage-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.ord-row{cursor:pointer}
.ord-row:hover td{background:var(--bg)}
.ord-link{color:var(--blue)}
.ord-detail-drawer{width:min(780px,94vw)}
.ord-detail-body{padding-bottom:28px}
.ord-timeline{display:flex;flex-direction:column;gap:0;padding:8px 0 4px}
.ord-tl-item{display:grid;grid-template-columns:88px 20px 1fr;gap:8px;align-items:start;padding:6px 0;font-size:12.5px}
.ord-tl-date{color:var(--ink3);font-size:11.5px;padding-top:2px}
.ord-tl-track{display:flex;justify-content:center;position:relative}
.ord-tl-dot{width:10px;height:10px;border-radius:50%;background:var(--blue);margin-top:4px;position:relative;z-index:1}
.ord-tl-item:not(:last-child) .ord-tl-track::after{content:'';position:absolute;top:14px;bottom:-10px;width:2px;background:var(--border);left:50%;transform:translateX(-50%)}
.ord-tl-body b{display:block;color:var(--ink)}
.ord-tl-body .muted{font-size:11.5px;margin-left:4px}
.ord-sec{margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}
.ord-sec-hd{font-size:14px;font-weight:700;color:var(--navy);margin-bottom:10px}
.ord-info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 16px;font-size:13px}
.ord-info-grid .lbl{display:block;font-size:11px;color:var(--ink3);margin-bottom:2px}
.ord-prod-form{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.ord-pay-sum{font-size:13px;margin-bottom:4px}
.ord-logs{font-size:12px;line-height:1.7;color:var(--ink2)}
.ord-log-line{padding:3px 0;border-bottom:1px dashed var(--border)}
@media (max-width:900px){
  .kpi-grid.c5{grid-template-columns:repeat(2,1fr)}
  .kpi-grid.c7,.kpi-grid.c8{grid-template-columns:repeat(2,1fr)}
  .ord-info-grid,.ord-prod-form{grid-template-columns:1fr 1fr}
}
@media (max-width:1100px){
  .kpi-grid.c7{grid-template-columns:repeat(3,1fr)}
}

.smp-prod-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.smp-all-drawer{width:min(820px,94vw)}
.smp-filter-tabs{display:flex;gap:6px;flex-wrap:wrap}
.smp-kpi-drill{cursor:pointer}
.smp-kpi-drill:hover{box-shadow:var(--shadow-md);border-color:var(--teal)}

/* 询盘跟进 · 套用设计规范（模块 1） */
.inq-page{display:flex;flex-direction:column;gap:var(--space-3);max-width:100%}
.inq-page .topbar,.inq-page .inq-filters,.inq-page .kpi-grid,.inq-page .time-filter,.inq-page .inq-ch-grid,.inq-page .grid-58{margin-bottom:0}
.inq-page .inq-kpi .kc{transition:box-shadow .15s,border-color .15s}
.inq-page .inq-kpi .kc:hover{box-shadow:var(--shadow-md)}
.inq-page .inq-tbl tbody tr:nth-child(even) td{background:rgba(244,246,249,.55)}
.inq-page .inq-tbl tbody tr.inq-overdue td{background:var(--red-lt)}
.inq-page .inq-alerts{list-style:none;padding:0 var(--space-2) var(--space-3);font-size:var(--font-body);line-height:1.9;color:var(--ink2)}
.inq-page .inq-alerts li{padding:var(--space-1) 0;border-bottom:1px dashed var(--border)}
.inq-page .inq-alerts li:last-child{border-bottom:none}

/* 行动中心 · 工作台门面 (ac-* / ws-*) */
.ac-page{display:flex;flex-direction:column;gap:var(--space-5);min-height:calc(100vh - 80px);animation:zf-fade-up var(--dur-med) var(--ease-out) both}
.ac-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:4px}
.ac-title{font-size:var(--font-page);font-weight:var(--fw-semibold);color:var(--ink);letter-spacing:-.03em;line-height:var(--lh-tight)}
.ac-sub{font-size:var(--font-caption);color:var(--ink3);margin-top:6px;font-weight:var(--fw-medium)}
.ac-header-actions{display:flex;align-items:center;gap:14px}
.ac-toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink2);cursor:pointer;user-select:none}
.ac-toggle input{accent-color:var(--primary)}
.ac-total{font-size:12px;color:var(--ink2);background:var(--card);border:1px solid var(--border);padding:7px 14px;border-radius:999px;font-weight:var(--fw-medium);box-shadow:var(--shadow-sm)}
.ac-loading{padding:64px;text-align:center;color:var(--ink3);font-size:14px}
.ac-kpi-row{display:flex;flex-wrap:wrap;gap:12px}
.ac-kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px;min-width:128px;text-align:left;cursor:pointer;box-shadow:var(--shadow-sm);transition:transform var(--dur-fast),box-shadow var(--dur-fast),border-color var(--dur-fast)}
.ac-kpi:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}
.ac-kpi-urgent{border-color:rgba(196,123,10,.35);background:linear-gradient(180deg,#fff,var(--warning-lt))}
.ac-kpi-val{display:block;font-size:32px;font-weight:var(--fw-semibold);color:var(--primary);line-height:1.05;letter-spacing:-.03em}
.ac-kpi-lbl{display:block;font-size:12px;color:var(--ink3);margin-top:6px;font-weight:var(--fw-medium)}
.ac-board-wrap{overflow-x:auto;padding-bottom:8px;margin:0 -4px}
.ac-board{display:flex;gap:16px;min-height:420px;align-items:flex-start}
.ac-col{flex:0 0 288px;background:var(--bg-subtle);border-radius:var(--radius-lg);border:1px solid var(--border);display:flex;flex-direction:column;max-height:72vh}
.ac-col-hd{display:flex;align-items:center;gap:8px;padding:14px 16px;border-bottom:1px solid var(--border);background:var(--card);border-radius:var(--radius-lg) var(--radius-lg) 0 0;position:sticky;top:0;z-index:1}
.ac-col-ic{width:18px;height:18px;color:var(--primary);flex-shrink:0}
.ac-col-ic svg{width:100%;height:100%}
.ac-col-title{font-weight:var(--fw-semibold);font-size:13px;flex:1;color:var(--ink)}
.ac-col-count{font-size:11px;font-weight:var(--fw-semibold);background:var(--primary-soft);color:var(--primary);padding:3px 9px;border-radius:999px}
.ac-col-body{padding:12px;display:flex;flex-direction:column;gap:10px;overflow-y:auto;flex:1}
.ac-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;box-shadow:var(--shadow-sm);transition:transform var(--dur-fast),box-shadow var(--dur-fast),opacity .28s;min-width:0;overflow:hidden}
.ac-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.ac-card-urgent{border-left:3px solid var(--warning)}
.ac-card-overdue{border-left:3px solid var(--danger);background:linear-gradient(180deg,#fff,var(--danger-lt))}
.ac-card-done{opacity:0;transform:scale(.96);pointer-events:none}
.ac-card-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;min-width:0}
.ac-card-title{font-weight:var(--fw-semibold);font-size:14px;color:var(--ink);line-height:1.35;min-width:0;overflow-wrap:anywhere;word-break:break-word;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}
.ac-card-sub{font-size:12px;color:var(--ink2);margin-top:4px;min-width:0;overflow-wrap:anywhere;word-break:break-word}
.ac-card-meta{font-size:11px;color:var(--warning);margin-top:6px;font-weight:600}
.ac-card-next{font-size:12px;color:var(--primary);margin-top:8px;padding:7px 10px;background:var(--primary-soft);border-radius:var(--radius-sm);overflow-wrap:anywhere;word-break:break-word}
.ac-card-src{font-size:11px;color:var(--ink3);margin-top:6px}
.ac-badge{font-size:10px;background:var(--bg);border:1px solid var(--border);padding:2px 6px;border-radius:4px;color:var(--ink2);white-space:nowrap}
.ac-card-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.ac-tag{font-size:10px;padding:2px 7px;border-radius:999px;font-weight:600}
.ac-tag-info{background:var(--primary-soft);color:var(--primary)}
.ac-tag-warn{background:var(--warning-lt);color:var(--warning)}
.ac-tag-danger{background:var(--danger-lt);color:var(--danger)}
.ac-tag-success{background:var(--success-lt);color:var(--success)}
.ac-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.ac-btn{font-size:12px;padding:6px 12px;border-radius:var(--radius-sm);border:none;cursor:pointer;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;font-family:inherit}
.ac-btn-primary{background:var(--primary);color:#fff}
.ac-btn-primary:hover{background:var(--primary-2)}
.ac-btn-ghost{background:transparent;border:1px solid var(--border);color:var(--ink2)}
.ac-btn-ghost:hover{border-color:var(--primary);color:var(--primary)}
.ac-report{margin-top:auto;padding:16px 20px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:13px;color:var(--ink2);box-shadow:var(--shadow-sm)}
.ac-ads-extra{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 18px;margin-bottom:4px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:13px;color:var(--ink2);box-shadow:var(--shadow-sm)}
.ac-ads-title{font-weight:var(--fw-semibold);color:var(--ink);margin-right:4px}
.ac-ads-extra b{color:var(--primary);font-weight:var(--fw-semibold)}
.ac-report-title{font-weight:var(--fw-semibold);color:var(--ink);margin-right:12px}
.ac-report b{color:var(--primary);font-weight:var(--fw-semibold)}
.ac-toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:#fff;padding:12px 20px;border-radius:999px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:9999;box-shadow:var(--shadow-lg)}
.ac-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.ac-modal{max-width:440px}
.ac-modal-ft{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
@media(max-width:900px){.ac-col{flex:0 0 85vw}}

.ws-page{gap:var(--space-5)}
.ws-ai-brief{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:22px 24px;box-shadow:var(--shadow-md);position:relative;overflow:hidden}
.ws-ai-brief::before{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:var(--primary);border-radius:3px 0 0 3px}
.ws-ai-brief-emp{background:var(--card)}
.ws-ai-brief-hd{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.ws-ai-brief-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-weight:var(--fw-semibold);color:var(--ink)}
.ws-ai-chip{animation:zf-ai-float 5.2s ease-in-out infinite,zf-ai-breathe 3.6s ease-in-out infinite}
.ws-ai-time{font-size:12px;color:var(--ink3)}
.ws-ai-brief-bd{font-size:15px;line-height:1.7;color:var(--ink);white-space:pre-wrap;min-height:52px;font-weight:var(--fw-light)}
.ws-overview,.ws-panel,.ws-board-sec{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;box-shadow:var(--shadow-sm)}
.ws-sec-hd{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px}
.ws-kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px}
.ws-kpi{background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 14px;text-align:left;cursor:pointer;transition:transform var(--dur-fast),border-color var(--dur-fast),box-shadow var(--dur-fast)}
.ws-kpi:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:var(--shadow-md)}
.ws-kpi-urgent{background:var(--warning-lt);border-color:rgba(196,123,10,.35)}
.ws-kpi-v{display:block;font-size:28px;font-weight:var(--fw-semibold);color:var(--primary);line-height:1.05;letter-spacing:-.03em}
.ws-kpi-l{display:block;font-size:12px;color:var(--ink3);margin-top:6px}
.ws-ov-warn{font-size:12px;font-weight:600;color:var(--warning);background:var(--warning-lt);padding:4px 10px;border-radius:999px}
.ws-two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ws-card-list{display:flex;flex-direction:column;gap:10px;max-height:360px;overflow:auto}
.ws-card-list .ac-card{box-shadow:none}
.ws-pulse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.ws-pulse{border:1px solid var(--border);border-radius:var(--radius-md);padding:14px;background:var(--bg-subtle)}
.ws-pulse.on{background:var(--primary-soft);border-color:rgba(26,86,168,.2)}
.ws-pulse-name{font-weight:var(--fw-semibold);font-size:13px;color:var(--ink)}
.ws-pulse-name span{margin-left:6px;font-weight:500;font-size:11px;color:var(--ink3)}
.ws-pulse-sum{font-size:12px;color:var(--ink2);margin-top:4px}
@media(max-width:900px){.ws-two{grid-template-columns:1fr}}

/* 资料库 */
.lib-layout{display:grid;grid-template-columns:240px 1fr;gap:14px;align-items:start}
@media (max-width:900px){.lib-layout{grid-template-columns:1fr}}


/* === blue design system components === */
.btn{border-radius:var(--radius-sm);height:36px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:600}
.btn-primary,.btn-blue{background:var(--primary);color:#fff;border:none}
.btn-primary:hover,.btn-blue:hover{background:var(--primary-2)}
.btn-outline{background:#fff;border:1px solid var(--border);color:var(--ink2)}
.btn-outline:hover{border-color:var(--primary-bright);color:var(--primary)}
.btn-danger{background:var(--danger);color:#fff}
.panel{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.kc{border-radius:var(--radius-lg);padding-right:56px}
.tf-chip.active{background:var(--primary);border-color:var(--primary)}
.tf-chip:hover{border-color:var(--primary-bright);color:var(--primary)}
table th{background:var(--table-head);color:var(--ink2);font-weight:600;border-bottom:1px solid var(--border)}
table tbody tr:hover{background:var(--bg-subtle)}
.tag{border-radius:999px;font-size:11px;padding:2px 8px;font-weight:600}
.warnbar{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}
.side-logo::before{background:linear-gradient(145deg,var(--primary-bright),var(--primary));box-shadow:0 4px 14px rgba(43,109,232,.35);color:#fff}


/* ── 录入型表格：不受普通列表 col-fit/fluid 挤压 ── */
.biz-table.edit-table,
.tbl-wrap.edit-table{
  overflow:auto;
}
.biz-table.edit-table table,
.edit-table table,
table.qi-tbl,
table.sal-tbl{
  width:100%;
  min-width:980px;
  table-layout:auto;
}
.biz-table.edit-table th,
.biz-table.edit-table td,
.edit-table th,
.edit-table td,
table.qi-tbl th,
table.qi-tbl td,
table.sal-tbl th,
table.sal-tbl td{
  width:auto!important;
  max-width:none!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:nowrap;
  vertical-align:middle;
}
.biz-table.edit-table th,
.edit-table th,
table.qi-tbl th,
table.sal-tbl th{
  height:auto;
  min-height:var(--biz-row-h);
  line-height:1.3;
  padding:8px 10px;
  white-space:nowrap;
}
.biz-table.edit-table th br,
table.qi-tbl th br{display:block}
.biz-table.edit-table th span,
table.qi-tbl th span{display:block;white-space:nowrap;margin-top:2px}
.biz-table.edit-table td,
.edit-table td,
table.qi-tbl td,
table.sal-tbl td{
  height:auto;
  min-height:var(--biz-row-h);
  padding:8px 10px;
}
.biz-table.edit-table input,
.biz-table.edit-table select,
.edit-table input,
.edit-table select,
table.qi-tbl input,
table.qi-tbl select,
table.sal-tbl input{
  max-width:none;
  box-sizing:border-box;
}
/* 报价清单列宽：够用、不挤叠 */
table.qi-tbl th:nth-child(1),table.qi-tbl td:nth-child(1){min-width:88px}
table.qi-tbl th:nth-child(2),table.qi-tbl td:nth-child(2){min-width:120px}
table.qi-tbl th:nth-child(3),table.qi-tbl td:nth-child(3){min-width:56px}
table.qi-tbl th:nth-child(4),table.qi-tbl td:nth-child(4){min-width:132px}
table.qi-tbl th:nth-child(5),table.qi-tbl td:nth-child(5){min-width:80px}
table.qi-tbl th:nth-child(6),table.qi-tbl td:nth-child(6){min-width:64px}
table.qi-tbl th:nth-child(7),table.qi-tbl td:nth-child(7){min-width:100px}
table.qi-tbl th:nth-child(8),table.qi-tbl td:nth-child(8){min-width:88px}
table.qi-tbl th:nth-child(9),table.qi-tbl td:nth-child(9){min-width:72px}
table.qi-tbl th:nth-child(10),table.qi-tbl td:nth-child(10){width:1%;text-align:right}
table.qi-tbl .qi-size{width:112px!important;min-width:112px}
table.qi-tbl .qi-ctn{width:76px!important}
table.qi-tbl .qi-price{width:88px!important}
table.qi-tbl .qi-unit{min-width:58px}
/* 工资录入表 */
table.sal-tbl{min-width:1100px}
table.sal-tbl th:last-child,
table.sal-tbl td.row-ops{width:1%;text-align:right;white-space:nowrap}


/* ── 货代物流 ── */
.ship-page{display:flex;flex-direction:column;gap:14px}
.ship-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.ship-kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s}
.ship-kpi:hover,.ship-kpi.active{border-color:var(--navy);box-shadow:var(--shadow-sm)}
.ship-kpi-v{font-size:24px;font-weight:700;color:var(--navy);line-height:1.1}
.ship-kpi-l{font-size:12px;color:var(--ink3);margin-top:4px}
.ship-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.ship-filters input,.ship-filters select{padding:8px 10px;border:1px solid var(--border);border-radius:7px;font-size:13px;background:#fff}
.ship-filters input[type=search]{min-width:200px;flex:1}
.ship-eta-warn{color:var(--red);font-weight:600}
.ship-eta-soon{color:#9a5b00;font-weight:600}
.ship-drawer .ship-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ship-drawer .form-item.full{grid-column:1/-1}
.ship-docs{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:4px}
.ship-docs label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink2);cursor:pointer}
.ship-fob-hint{font-size:12px;color:var(--ink3);margin:0 0 8px}
.ship-ord-block{margin-top:8px}
.ship-ord-row{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;margin-bottom:8px;background:var(--bg);align-items:center}
.ship-ord-meta{font-size:12px;color:var(--ink2)}
.ord-sec-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
@media(max-width:900px){.ship-kpis{grid-template-columns:1fr 1fr}.ship-drawer .ship-grid{grid-template-columns:1fr}}

.ship-timeline{margin-top:8px;display:flex;flex-direction:column;gap:0}
.ship-tl-item{display:grid;grid-template-columns:120px 16px 1fr;gap:8px;align-items:start;padding:6px 0}
.ship-tl-at{font-size:12px;color:var(--ink3);padding-top:2px}
.ship-tl-dot{width:10px;height:10px;border-radius:50%;background:var(--navy);margin:4px auto;box-shadow:0 0 0 3px var(--primary-soft)}
.ship-tl-body{font-size:13px;padding-bottom:8px;border-bottom:1px dashed var(--border)}
.ship-tl-item:last-child .ship-tl-body{border-bottom:none}

.fin-tabs{display:flex;gap:6px;margin:0 0 12px;flex-wrap:wrap}
.fin-tab{padding:8px 16px;border:1px solid var(--border);background:#fff;border-radius:8px;font-size:13px;cursor:pointer;color:var(--ink2);font-weight:600}
.fin-tab:hover{border-color:var(--navy);color:var(--navy)}
.fin-tab.active{background:var(--navy);color:#fff;border-color:var(--navy)}
.ce-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2);margin-left:12px;cursor:pointer}

.sal-tbl input.sal-in{padding:4px 6px;border:1px solid var(--border);border-radius:4px;font-size:12px}
.sal-warn td{background:#fff5f5}

/* ── 工作健康度 / AI 管理参谋 ── */
.wh-page{display:flex;flex-direction:column;gap:var(--space-5);animation:zf-fade-up var(--dur-med) var(--ease-out) both}

/* 可复用：中飞 AI 品牌头（不含第三方厂商标识） */
.zf-ai-brand{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;padding:8px 2px 12px}
.zf-ai-brand-main{display:flex;align-items:center;gap:14px;min-width:0}
.zf-ai-brand-text{min-width:0}
.zf-ai-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.zf-ai-title{margin:0;font-size:var(--font-page);font-weight:var(--fw-semibold);color:var(--ink);letter-spacing:-.03em;line-height:var(--lh-tight)}
.zf-ai-sub{margin:8px 0 0;font-size:var(--font-caption);color:var(--ink3);line-height:1.45;font-weight:var(--fw-medium)}
.zf-ai-powered{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:12px;font-weight:700;color:var(--primary);background:var(--primary-soft);background-size:200% 100%;border:1px solid rgba(26,86,168,.15);box-shadow:var(--shadow-sm);animation:zf-ai-float 5.2s ease-in-out infinite, zf-ai-breathe 3.6s ease-in-out infinite, zf-ai-sheen 6s linear infinite;will-change:transform,box-shadow,background-position}
.zf-ai-powered .luc,.zf-ai-powered i[data-lucide]{width:14px;height:14px}
.zf-ai-powered-en{font-size:10px;font-weight:600;color:var(--primary-bright);letter-spacing:.3px;opacity:.85}
.zf-ai-powered-glow{position:absolute;inset:-40% -20%;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-120%);animation:zf-ai-sweep 5.5s ease-in-out infinite;pointer-events:none}
.zf-ai-brand-aside{display:flex;flex-direction:column;align-items:flex-end;gap:10px}
.zf-ai-footer{margin-top:8px;padding:8px 2px 4px;font-size:11px;color:#94a3b8;text-align:center;letter-spacing:.2px}

@keyframes zf-ai-float{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-4px)}
}
@keyframes zf-ai-breathe{
  0%,100%{box-shadow:0 0 0 0 rgba(59,130,246,.18)}
  50%{box-shadow:0 0 0 6px rgba(59,130,246,.08)}
}
@keyframes zf-ai-sheen{
  0%{background-position:0% 50%}
  100%{background-position:200% 50%}
}
@keyframes zf-ai-sweep{
  0%,55%{transform:translateX(-120%)}
  75%,100%{transform:translateX(120%)}
}
@media (prefers-reduced-motion:reduce){
  .zf-ai-powered,.zf-ai-powered-glow{animation:none}
}

.wh-date-chip{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;background:#fff;border:1px solid var(--border);border-radius:999px;font-size:12px;color:var(--ink2)}
.wh-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;background:var(--card);border:1px solid var(--border);border-radius:999px;font-size:12.5px;color:var(--ink2);box-shadow:var(--shadow-sm)}
.wh-chip .luc,.wh-chip i[data-lucide]{width:14px;height:14px;color:var(--primary);flex-shrink:0}
.wh-chip-muted{color:var(--ink3);border-color:var(--border);box-shadow:none;background:var(--bg-subtle)}
.wh-chip-date{cursor:pointer;user-select:none}
.wh-chip-date input[type=date]{border:0;background:transparent;color:var(--ink);font-size:12.5px;font-weight:600;padding:0;margin:0;min-width:8.6em;cursor:pointer;outline:none;font-family:inherit;color-scheme:light}
.wh-chip-date input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55;margin-left:2px}
.wh-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.wh-field{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);min-height:38px}
.wh-field>span{font-size:11px;color:var(--ink3);white-space:nowrap;letter-spacing:.02em}
.wh-field select,.wh-field input[type=date],.wh-field input[type=month],.wh-field input[type=number]{
  border:0;background:transparent;outline:none;font-size:13px;font-weight:600;color:var(--ink);font-family:inherit;min-width:7.5em;cursor:pointer;color-scheme:light;
}
.wh-field select{
  padding-right:18px;-webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2563eb' stroke-width='2.4'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 0 center;
}
.wh-field-model select{min-width:9.5em}
.wh-field input[type=date]::-webkit-calendar-picker-indicator,
.wh-field input[type=month]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55}
.wh-banner{display:flex;align-items:flex-start;gap:8px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;font-size:13px;color:var(--ink2);line-height:1.55;box-shadow:var(--shadow-sm)}
.wh-banner-warn{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
.wh-team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.wh-team-grid-5{grid-template-columns:repeat(3,1fr)}
.wh-team-grid-5 .wh-span2{grid-column:span 2}
.wh-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden;min-height:160px;transition:transform var(--dur-fast),box-shadow var(--dur-fast)}
.wh-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.wh-card-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:16px 18px 8px;font-size:var(--font-section);font-weight:var(--fw-semibold);color:var(--ink)}
.wh-card-bd{padding:4px 18px 18px;font-size:14px;line-height:1.7;color:var(--ink2);white-space:pre-wrap}
.wh-card-focus{border-top:3px solid #f97316}
.wh-card-weak{border-top:3px solid #3b82f6}
.wh-card-advice{border-top:3px solid #10b981}
.wh-mini{margin-left:auto;font-size:11px;font-weight:600;color:var(--primary);background:var(--primary-soft);padding:2px 8px;border-radius:999px}
.wh-section-hd{display:flex;justify-content:space-between;align-items:center;margin-top:4px}
.wh-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.wh-person{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:10px;transition:transform var(--dur-fast),box-shadow var(--dur-fast)}
.wh-person:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.wh-person-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.wh-person-name{font-size:16px;font-weight:var(--fw-semibold);color:var(--ink);letter-spacing:-.02em}
.wh-person-role{font-size:12px;color:#64748b;margin-top:2px}
.wh-pill{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px}
.wh-pill-warn{background:#fff7ed;color:#c2410c}
.wh-pill-ok{background:#ecfdf5;color:#047857}
.wh-pill-low{background:#f1f5f9;color:#475569}
.wh-tags{display:flex;flex-wrap:wrap;gap:6px}
.wh-tag{font-size:11px;padding:3px 8px;border-radius:6px;background:#f8fafc;color:#475569;border:1px solid #e2e8f0}
.wh-tone-warn{background:#fff1f2;color:#be123c;border-color:#fecdd3}
.wh-tone-ok{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.wh-tone-near{background:#fffbeb;color:#b45309;border-color:#fde68a}
.wh-ai-line{font-size:13px;line-height:1.6;color:#334155;background:#f8fafc;border-radius:10px;padding:10px 12px;white-space:pre-wrap}
.wh-ai-mini{display:inline-block;font-size:10px;font-weight:700;color:#fff;background:#2563eb;border-radius:4px;padding:1px 5px;margin-right:6px;vertical-align:1px}
.wh-person-ft{display:flex;justify-content:flex-end}
.wh-empty{grid-column:1/-1;padding:36px;text-align:center;color:var(--ink3);background:var(--card);border:1px dashed var(--border);border-radius:var(--radius-lg)}
.wh-detail-panel{margin-top:8px;background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:16px;box-shadow:0 8px 24px rgba(15,23,42,.04)}
.wh-detail-hd{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}
.wh-chart{height:280px;width:100%;margin-bottom:16px}
.wh-hist{margin-top:8px}
.wh-hist-list{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow:auto}
.wh-hist-item{display:grid;grid-template-columns:96px 1fr;gap:10px;padding:8px 10px;background:#f8fafc;border-radius:8px;font-size:12.5px;line-height:1.5}
.wh-hist-d{color:#64748b;font-variant-numeric:tabular-nums}
.wh-hist-t{color:#334155}
.wh-section-hd{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 10px}
.wh-period-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.wh-period-list{display:flex;flex-direction:column;gap:10px;margin-bottom:8px}
.wh-period-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;box-shadow:var(--shadow-sm)}
.wh-period-hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:12.5px;color:#64748b;margin-bottom:6px}
.wh-period-hd b{color:#0f172a;font-size:13.5px}
.wh-period-bd{font-size:13.5px;line-height:1.65;color:#1e293b;white-space:pre-wrap}
.wh-model{font-size:11.5px;color:#64748b;background:#f1f5f9;padding:2px 8px;border-radius:999px}
.wh-regen{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.wh-model-line{font-size:11px;color:#94a3b8;margin-top:4px}
.wh-detail-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}
.wh-sub-t{font-size:14px;font-weight:700;margin-bottom:6px;color:#0f172a}
.wh-target-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin:10px 0 12px}
.wh-target-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#64748b}
.wh-target-form input,.wh-target-form select{padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;min-width:120px;background:#fff}
.wh-target-form .wh-note{flex:1;min-width:160px}
.wh-ttable{width:100%;font-size:13px;border-collapse:collapse}
.wh-ttable th,.wh-ttable td{border-bottom:1px solid #f1f5f9;padding:8px 6px;text-align:left}
.wh-metric-checks{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow:auto;padding:4px}
.wh-mchk{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:#334155;padding:8px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc}
.wh-mchk small{display:block;color:#94a3b8;font-size:11px;margin-top:2px}
@media(max-width:900px){.wh-team-grid,.wh-team-grid-5,.wh-detail-grid{grid-template-columns:1fr}.wh-team-grid-5 .wh-span2{grid-column:auto}.wh-list{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.wh-card,.wh-person{transition:none}.wh-card:hover,.wh-person:hover{transform:none}}

/* ── 资料库改版 ── */
.lib-page{display:flex;flex-direction:column;gap:14px}
.lib-page .topbar{margin-bottom:16px}
.lib-page .topbar > div > .tb-sub{
  white-space:normal;
  overflow:visible;
  text-overflow:unset;
  max-width:min(720px, 80vw);
}
.lib-layout{display:grid;grid-template-columns:minmax(260px,300px) minmax(0,1fr);gap:14px;align-items:start}
.lib-side{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 6px 18px rgba(15,23,42,.04);overflow:hidden;min-width:0}
.lib-side-hd{padding:14px 16px;border-bottom:1px solid #f1f5f9;font-weight:700;color:#0f172a;display:flex;align-items:center;gap:8px;min-width:0}
.lib-cat{
  display:flex;
  align-items:center;
  gap:6px;
  padding:9px 10px;
  cursor:pointer;
  border-left:3px solid transparent;
  color:#475569;
  font-size:13px;
  position:relative;
  min-width:0;
  box-sizing:border-box;
}
.lib-cat:hover{background:#f8fafc}
.lib-cat.active{background:#eff6ff;border-left-color:#2563eb;color:#1d4ed8;font-weight:600}
.lib-cat-name{
  flex:1 1 auto;
  min-width:48px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  line-height:1.35;
}
.lib-cat-count,
.lib-cat .tree-cnt{
  flex:none;
  min-width:22px;
  margin-left:0;
  padding:1px 6px;
  border-radius:10px;
  background:#f1f5f9;
  color:#64748b;
  font-size:11px;
  text-align:center;
  line-height:1.4;
}
.lib-cat.active .lib-cat-count,
.lib-cat.active .tree-cnt{background:#dbeafe;color:#1d4ed8}
/* 操作钮绝对定位：隐藏时不占宽，避免 Windows 窄侧栏把分类名挤没 */
.lib-cat-ops{
  display:none;
  position:absolute;
  right:6px;
  top:50%;
  transform:translateY(-50%);
  align-items:center;
  gap:8px;
  padding:3px 8px 3px 14px;
  border-radius:8px;
  background:linear-gradient(90deg,rgba(239,246,255,0),#eff6ff 18%);
  font-size:12px;
  z-index:2;
  white-space:nowrap;
}
.lib-cat:not(.active) .lib-cat-ops{
  background:linear-gradient(90deg,rgba(248,250,252,0),#f8fafc 18%);
}
.lib-cat:hover .lib-cat-ops,
.lib-cat.active .lib-cat-ops{
  display:flex;
}
/* 悬停/选中时给操作钮留位，避免挡住数字徽章 */
.lib-side .lib-cat:hover,
.lib-side .lib-cat.active{
  padding-right:108px;
}
.lib-cat-ops .btn-text,
.lib-cat-ops button.btn-text{
  border:0;
  background:transparent;
  padding:0;
  cursor:pointer;
  font:inherit;
  font-size:12px;
  color:var(--blue,#2563eb);
  line-height:1.2;
}
.lib-cat-ops .btn-text.danger,
.lib-cat-ops button.btn-text.danger{color:var(--red,#dc2626)}
.lib-main{background:#fff;border:1px solid #e2e8f0;border-radius:14px;box-shadow:0 6px 18px rgba(15,23,42,.04);min-width:0;overflow:hidden}
.lib-main-hd{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid #f1f5f9;flex-wrap:wrap}
.lib-main-hd .ph-t{display:flex;align-items:center;gap:8px;min-width:0}
.lib-main-count{
  flex:none;
  min-width:22px;
  padding:1px 8px;
  border-radius:999px;
  background:#f1f5f9;
  color:#64748b;
  font-size:12px;
  font-weight:600;
  line-height:1.4;
}
.lib-search{padding:8px 12px;border:1px solid #e2e8f0;border-radius:10px;font-size:13px;min-width:220px;background:#f8fafc}
.lib-grid{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(260px,1fr));
  gap:12px;
  padding:14px;
  align-items:stretch;
}
.lib-file{
  border:1px solid #e2e8f0;
  border-radius:12px;
  padding:14px;
  background:#fff;
  display:flex;
  flex-direction:column;
  gap:8px;
  min-width:0;
  min-height:168px;
  height:100%;
  overflow:hidden;
  box-sizing:border-box;
  transition:box-shadow .15s,border-color .15s;
}
.lib-file:hover{border-color:#bfdbfe;box-shadow:0 8px 20px rgba(37,99,235,.08)}
.lib-file-top{display:flex;gap:10px;align-items:flex-start;min-width:0}
.lib-file-ico{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:#eff6ff;color:#2563eb;flex:none}
.lib-file-body{min-width:0;flex:1;overflow:hidden}
.lib-file-title{
  font-size:14px;
  font-weight:700;
  color:#0f172a;
  line-height:1.35;
  min-height:calc(1.35em * 2);
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  overflow:hidden;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.lib-file-meta{
  font-size:12px;
  color:#64748b;
  line-height:1.5;
  overflow-wrap:anywhere;
  word-break:break-word;
  min-width:0;
}
.lib-file-name{
  font-size:12px;
  color:#64748b;
  line-height:1.45;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  min-width:0;
}
.lib-file-ops{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}
.lib-file-ops a{font-size:12px;color:#2563eb;text-decoration:none}
.lib-empty{padding:36px 20px;text-align:center;color:#64748b}
.lib-empty .lib-empty-ico{width:48px;height:48px;margin:0 auto 10px;border-radius:12px;background:#eff6ff;color:#2563eb;display:flex;align-items:center;justify-content:center}
.lib-hint{
  font-size:12px;
  color:#64748b;
  padding:10px 12px;
  line-height:1.5;
  border-top:1px solid #e2e8f0;
  background:#f8fafc;
}
.lib-breadcrumb{font-size:13px;color:#64748b;margin:-4px 0 10px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.lib-breadcrumb a{color:#2563eb;text-decoration:none}
.lib-breadcrumb a:hover{text-decoration:underline}
.lib-cat-search{margin-left:auto;width:110px;max-width:40%;padding:4px 8px;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;background:#fff;min-width:0}
.lib-tree{max-height:70vh;overflow:auto;padding:6px 0 10px;scrollbar-gutter:stable}
.lib-tree-node{padding-left:0;min-width:0}
.lib-tree-children{
  margin-left:12px;
  padding-left:0;
  border-left:1px dashed #cbd5e1;
}
.lib-tree-children .lib-cat{padding-left:10px}
.lib-twist,.lib-twist-sp{width:16px;border:0;background:transparent;color:#64748b;cursor:pointer;flex:none;padding:0;font-size:12px;line-height:1}
.lib-twist-sp{visibility:hidden}
.lib-drag{cursor:grab;color:#94a3b8;flex:none;user-select:none;font-size:11px;width:12px;text-align:center}
.lib-cat.lib-dragging{opacity:.5}
.lib-cat.lib-drag-over{outline:2px dashed #2563eb;background:#eff6ff}
.lib-child-blocks{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;padding:14px}
.lib-child-card{
  border:1px solid #e2e8f0;
  border-radius:12px;
  padding:12px 14px;
  background:#f8fafc;
  display:flex;
  flex-direction:column;
  gap:10px;
  align-items:stretch;
  cursor:pointer;
  min-width:0;
  overflow:hidden;
  box-sizing:border-box;
}
.lib-child-card:hover{border-color:#bfdbfe;background:#eff6ff}
.lib-child-main{min-width:0;overflow:hidden}
.lib-child-main b{
  display:block;
  font-size:14px;
  color:#0f172a;
  line-height:1.35;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.lib-child-meta{
  margin-top:4px;
  font-size:12px;
  color:#64748b;
  line-height:1.4;
}
.lib-child-ops{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto}
.lib-child-ops .btn{flex:none}
.lib-compare{display:grid;grid-template-columns:1fr 8px 1fr;gap:0;min-height:420px}
.lib-compare-stack{grid-template-columns:1fr}
.lib-compare-gap{background:linear-gradient(#e2e8f0,#cbd5e1);width:8px}
.lib-pane{min-width:0;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;background:#fff}
.lib-pane-hd{padding:10px 12px;border-bottom:1px solid #f1f5f9;background:#f8fafc}
.lib-pane-cat{width:100%;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px}
.lib-compare-tip{padding:8px 14px;font-size:12px}
.lib-upload-progress{margin-top:8px;font-size:12px;color:#64748b}
.lib-upload-bar{height:6px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-bottom:6px}
.lib-upload-bar i{display:block;height:100%;width:0;background:#2563eb;transition:width .2s}
#lib-compare.active{background:#eff6ff;border-color:#2563eb;color:#1d4ed8}
@media (max-width:900px){.lib-layout{grid-template-columns:1fr}}

/* AI 开发信 */
.ao-mask .ao-drawer{max-width:720px;width:min(720px,96vw)}
.ao-body{display:flex;flex-direction:column;gap:14px}
.ao-static{padding:10px 12px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;font-size:13px}
.ao-multi{width:100%;min-height:120px;border:1px solid var(--border);border-radius:8px;padding:6px}
.ao-langs{display:flex;gap:14px;flex-wrap:wrap;font-size:13px}
.ao-langs label{display:flex;align-items:center;gap:6px;cursor:pointer}
.ao-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:4px}
.ao-tabs{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.ao-tab{border:1px solid #dbeafe;background:#eff6ff;color:#1d4ed8;border-radius:999px;padding:5px 12px;font-size:12.5px;cursor:pointer}
.ao-tab.on{background:#2563eb;border-color:#2563eb;color:#fff}
#ao-body[dir=rtl],#ao-subject[dir=rtl]{text-align:right;font-family:Tahoma,"Segoe UI",Arial,sans-serif}

/* 报价列表筛选可折叠 */
.q-filter-wrap{padding:0 12px 8px}
.q-filter-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;gap:10px;padding:8px 10px;margin:6px 0 0;border:1px dashed #dbeafe;border-radius:8px;background:#f8fbff;color:#1e40af;font-size:12.5px;cursor:pointer}
.q-filter-toggle:hover{background:#eff6ff}
.q-filter-toggle .ico{width:14px;height:14px;display:inline-flex}
.q-filter-toggle em{display:inline-flex;min-width:16px;height:16px;margin-left:6px;padding:0 5px;border-radius:999px;background:#2563eb;color:#fff;font-size:10px;font-style:normal;align-items:center;justify-content:center;vertical-align:middle}
.q-filter-chev{color:#64748b;font-size:12px}
.q-filter-bar{display:none;flex-wrap:wrap;gap:8px;margin:8px 0 4px;align-items:end}
.q-filter-bar.open{display:flex}

/* ══════════════════════════════════════════════
   全站自适应 · 电脑端为主（断点在文件末尾，覆盖早期写死列数）
   1280 小笔电 · 1440 常规 · 1920 大屏 · 2560+ 超宽
   ══════════════════════════════════════════════ */
html{font-size:15px}
body{overflow-x:hidden}

@media (min-width:1440px){
  :root{--kpi-card-min:172px;--main-pad-x:clamp(20px,2vw,40px)}
}
@media (min-width:1920px){
  :root{
    --content-max:1720px;
    --kpi-card-min:180px;
    --main-pad-x:clamp(24px,2vw,44px);
  }
  html{font-size:15.5px}
}
@media (min-width:2560px){
  :root{
    --content-max:1760px;
    --kpi-card-min:188px;
  }
}
@media (max-width:1366px){
  :root{
    --kpi-card-min:148px;
    --main-pad-x:clamp(14px,1.6vw,24px);
    --main-pad-y:clamp(16px,1.6vw,28px);
  }
  html{font-size:14.5px}
}

/* 通用栅格：随宽增减，避免超宽无限拉扁 */
.kpi-row,
.stats-row,
.quad,
.ad-plat-grid,
.ad-boss-grid,
.ship-kpis{
  grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--kpi-card-min)),1fr))!important;
}
.grid-2,
.ws-two,
.ad-layout,
.grid-58,
.crm-mid-grid,
.crm-bottom-grid,
.fin-mid-grid,
.fin-bottom-grid{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr))!important;
}
.warnbar{
  grid-template-columns:minmax(120px,150px) repeat(auto-fit,minmax(110px,1fr))!important;
}
.fa-cards,
.rbac-role-grid,
.lib-grid,
.wh-list,
.ws-kpi-grid,
.ws-pulse-grid{
  grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--card-grid-min)),1fr))!important;
}

/* 表格：占满内容区；过宽时仅表内横滑 */
.tbl-wrap,
.biz-table.tbl-wrap,
.tbl-wrap.biz-table{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.biz-table table{min-width:0}
.biz-table.data-table table,
table.data-table{min-width:1100px}

/* 门面页双栏在中等宽度堆叠 */
@media (max-width:1440px){
  .prod-body{grid-template-columns:150px minmax(0,1fr) minmax(260px,300px)!important}
}
@media (max-width:1280px){
  .prod-body{grid-template-columns:160px minmax(0,1fr)!important}
  .prod-body .pd-panel{max-width:100%}
  .wh-team-grid,.wh-team-grid-5{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .soc-page .soc-kpi{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}

/* 平板 / 小笔电：图标轨侧栏 */
@media (max-width:1100px){
  .app-wrap{grid-template-columns:var(--sb-rail) minmax(0,1fr)!important}
  .sidebar{width:var(--sb-rail)!important}
  .side-logo{justify-content:center;padding:14px 8px}
  .side-logo::after,
  .side-logo>span,
  .side-user #su-name,
  .side-user #su-role,
  .side-user a,
  #side-nav a .nav-txt{display:none!important}
  .side-user{justify-content:center;padding:12px 8px}
  .side-user::before{margin:0 auto}
  #side-nav{padding:8px 6px}
  #side-nav a{justify-content:center;padding:10px 8px;border-left-width:0}
  .crm-mid-grid,.crm-bottom-grid,
  .fin-mid-grid,.fin-bottom-grid,.fin-psi,
  .ad-layout,.grid-58,.ws-two,
  .quotes-page .q-build-grid,
  .lib-layout,.wh-detail-grid{grid-template-columns:1fr!important}
  .fin-page .fin-kpi{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ord-info-grid,.ord-prod-form{grid-template-columns:1fr 1fr!important}
  .wh-team-grid,.wh-team-grid-5{grid-template-columns:1fr!important}
}

/* 手机：抽屉侧栏 + 单列（基础可用） */
@media (max-width:768px){
  .app-wrap{grid-template-columns:minmax(0,1fr)!important}
  .sidebar{
    position:fixed!important;
    inset:0 auto 0 0;
    width:min(78vw,280px)!important;
    max-width:280px;
    transform:translateX(-105%);
    transition:transform var(--dur-med) var(--ease-out);
    box-shadow:var(--shadow-lg);
    z-index:120;
  }
  body.nav-open .sidebar{transform:translateX(0)}
  .side-logo{justify-content:flex-start;padding:16px}
  .side-logo::after,
  .side-user #su-name,
  .side-user #su-role,
  .side-user a,
  #side-nav a .nav-txt{display:revert!important}
  .side-logo::after{display:block!important}
  .side-user{display:flex;justify-content:flex-start;padding:14px 16px}
  #side-nav a{justify-content:flex-start;padding:10px 12px;border-left-width:3px}
  .nav-toggle{
    display:inline-flex!important;
    align-items:center;justify-content:center;
    position:sticky;top:10px;left:10px;z-index:90;
    width:40px;height:40px;margin:0 0 8px;
    border:1px solid var(--border);border-radius:10px;
    background:var(--card);color:var(--ink);cursor:pointer;
    box-shadow:var(--shadow-sm);
  }
  .nav-backdrop{
    display:none;
    position:fixed;inset:0;z-index:110;
    background:rgba(15,23,42,.45);
  }
  body.nav-open .nav-backdrop{display:block}
  .main > #content{padding-top:8px}
  .kpi-row,.stats-row,.quad,.ad-plat-grid,.ad-boss-grid,.ship-kpis,
  .kpi-grid,.kpi-grid.c4,.kpi-grid.c5,.kpi-grid.c6,.kpi-grid.c7,.kpi-grid.c8,
  .fin-page .fin-kpi,.fin-exp-stats,.soc-page .soc-kpi,.soc-page .soc-plat-grid{
    grid-template-columns:1fr!important;
  }
  .topbar{flex-direction:column;align-items:stretch}
  .tb-actions{width:100%}
  .prod-body{grid-template-columns:1fr!important}
  .form-grid,.inq-form2,.q-form2,.pd-grid{grid-template-columns:1fr!important}
  .modal{width:min(520px,94vw);padding:20px}
  .ord-info-grid,.ord-prod-form{grid-template-columns:1fr!important}
}

@media (max-width:640px){
  .fin-page .fin-kpi,
  .soc-page .soc-kpi,
  .soc-page .soc-plat-grid{grid-template-columns:1fr!important}
  .ship-kpis{grid-template-columns:1fr 1fr!important}
}

/* ── 业务页布局收紧（货代 / 报销 / 询价 / 资料库 / 单证）── */
.ship-page,.exp-page,.pinq-page,.lib-page,.od-page{
  display:flex;flex-direction:column;gap:12px;
}
.ship-page .topbar,.exp-page .topbar,.pinq-page .topbar,.lib-page .topbar,.od-page .topbar,
.ship-page .kpi-grid,.pinq-page .kpi-grid,.od-page .kpi-row,
.ship-page .inq-filters,.pinq-page .inq-filters,.exp-page .exp-tabs{margin-bottom:0}

.ship-page .ship-kpis{gap:10px}
.ship-page .ship-kpi{padding:10px 14px}
.ship-page .ship-kpi-v{font-size:20px}
.ship-page .ship-kpi-l{margin-top:2px}

.pinq-page .kpi-grid{gap:10px;margin-bottom:0}
.pinq-page .kc{padding:12px 14px}
.pinq-page .kc-v{font-size:22px;margin-top:6px}
.pinq-page .kc-d{margin-top:4px}
.pinq-page .panel{margin-bottom:0!important}

.od-page .kpi-row{gap:10px;margin-bottom:0}
.od-page .kpi-card{padding:12px 14px}
.od-page .kpi-v{font-size:22px;margin-top:4px}
.od-page .biz-table td{vertical-align:top}
.od-page .biz-table td.muted{line-height:1.35;font-size:12px}

.exp-page .exp-tabs{margin-bottom:0;gap:6px}
.exp-page .exp-tab{padding:6px 12px;font-size:12.5px}
.exp-page .panel{padding:12px}

.lib-page{gap:12px}
.lib-page .lib-layout{gap:12px;align-items:stretch}
.lib-page .lib-side,.lib-page .lib-main{border-radius:10px;box-shadow:var(--shadow-sm)}
.lib-page .lib-side-hd,.lib-page .lib-main-hd{padding:10px 14px}
.lib-page .lib-cat{padding:10px 12px}
.lib-page .lib-empty{padding:28px 16px;min-height:160px}
.lib-page .lib-empty .lib-empty-ico{width:40px;height:40px;margin-bottom:8px}
.lib-page .lib-grid{padding:12px;gap:10px}
.lib-page .lib-hint{font-size:12px;padding:10px 12px}

/* 空表占位：别用过大 padding 撑出大片空白 */
.ship-page .biz-table td.empty,
.exp-page .biz-table td.empty,
.pinq-page .biz-table td.empty,
.od-page .biz-table td.empty,
.ord-page .biz-table td.empty,
.lib-page .biz-table td.empty{
  padding:28px 16px;min-height:0;
}
.ord-page .biz-table tr.empty-row td,
.pinq-page .biz-table tr.empty-row td{
  height:180px;padding:16px;min-height:0;
}
/* 企业百问百答 */
.kb-page-hd{align-items:center}.kb-tabs{display:flex;gap:6px;margin:14px 0 0;border-bottom:1px solid var(--border)}
.kb-tabs button{border:0;background:transparent;padding:12px 18px;color:var(--ink3);font-weight:600;cursor:pointer;border-bottom:2px solid transparent}
.kb-tabs button.active{color:var(--navy);border-bottom-color:var(--blue)}.kb-tabs span{font-size:11px;background:var(--bg);padding:2px 6px;border-radius:10px}
.kb-body{padding-top:18px}.kb-ask-card,.kb-answer-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:24px;box-shadow:var(--shadow)}
.kb-ask-title{font-size:20px;font-weight:700;margin-bottom:14px}.kb-search-row{display:flex;gap:10px}.kb-search-row input{flex:1;font-size:16px;padding:13px 15px}
.kb-hot{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.kb-hot button{border:1px solid var(--border);background:var(--bg);border-radius:18px;padding:7px 11px;color:var(--ink2);cursor:pointer}
.kb-answer-card{margin-top:14px}.kb-answer-head,.kb-answer-ft{display:flex;align-items:center;justify-content:space-between;gap:10px}.kb-answer-head{justify-content:flex-start;color:var(--ink3);font-size:13px}
.kb-source{font-weight:700;border-radius:12px;padding:4px 9px}.kb-source.is-local{background:#e6f7ef;color:#18794e}.kb-source.is-ai{background:#f2ecff;color:#6941c6}
.kb-answer{font-size:16px;line-height:1.8;padding:20px 0;white-space:normal}.kb-catalog-tools{display:flex;gap:10px;margin-bottom:12px}.kb-catalog-tools input{flex:1}
.kb-entry-list,.kb-review-list{display:grid;gap:10px}.kb-entry,.kb-review-item{display:flex;justify-content:space-between;gap:14px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:17px}
.kb-entry-main{min-width:0}.kb-entry h3{display:inline;font-size:16px;margin-left:8px}.kb-entry p,.kb-review-item p{line-height:1.65;margin:10px 0;color:var(--ink2)}
.kb-review-item{display:block}.kb-review-item b{margin-left:8px}.kb-edit-modal .form-item{margin-bottom:12px}
.kb-edit-modal .modal-lg-hd{padding:22px 26px 0}.kb-edit-modal .modal-lg-hd h3{margin:0 0 12px}
.kb-edit-modal .modal-lg-body{flex:1 1 auto;overflow:auto;padding:0 26px 16px;min-height:0}
.kb-upload-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.kb-upload-row input{height:auto;padding:8px;background:var(--bg)}
.kb-edit-images,.kb-media-images{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.kb-edit-image{position:relative;width:96px;height:76px;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--bg)}
.kb-edit-image img{width:100%;height:100%;object-fit:cover}
.kb-edit-image button{position:absolute;right:4px;top:4px;width:22px;height:22px;border:0;border-radius:50%;background:rgba(15,23,42,.72);color:#fff;cursor:pointer}
.kb-video-hint{font-size:12px;margin-top:4px}
.kb-media-badges{display:inline-flex;gap:5px;margin-left:8px;vertical-align:middle}
.kb-media-badges span{font-size:11px;color:var(--ink2);background:var(--bg);border-radius:12px;padding:2px 7px}
.kb-entry-actions{display:flex;gap:6px;align-items:flex-start;flex:none}
.kb-detail-modal{width:min(860px,94vw);max-height:90vh}
.kb-media-image{width:150px;height:110px;padding:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--bg);cursor:zoom-in}
.kb-media-image img{width:100%;height:100%;display:block;object-fit:cover}
.kb-video{width:100%;aspect-ratio:16/9;margin-top:14px;border-radius:12px;overflow:hidden;background:#0f172a}
.kb-video iframe{width:100%;height:100%;border:0;display:block}
.kb-video-link{display:inline-flex;margin-top:14px;color:var(--blue);font-weight:600}
.kb-image-lightbox{position:fixed;inset:0;z-index:500;background:rgba(2,6,23,.88);display:flex;align-items:center;justify-content:center;padding:32px;cursor:zoom-out}
.kb-image-lightbox img{max-width:min(1200px,94vw);max-height:90vh;object-fit:contain;border-radius:8px}
.kb-image-lightbox button{position:fixed;right:24px;top:18px;border:0;background:transparent;color:#fff;font-size:34px;cursor:pointer}
@media(max-width:700px){.kb-search-row,.kb-catalog-tools{flex-direction:column}.kb-entry{display:block}.kb-entry>.btn{margin-top:10px}.kb-answer-ft{align-items:flex-start;flex-direction:column}}

/* CRM 多次跟进时间线 */
.crm-follow-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:4px}
.crm-follow-head .crm-sec-t{margin:0}.crm-follow-list{border-left:2px solid var(--border);margin:12px 0 22px 8px;padding-left:18px}
.crm-follow-item{position:relative;padding:0 0 18px}.crm-follow-item:before{content:"";position:absolute;left:-24px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 0 0 1px var(--blue)}
.crm-follow-date{display:flex;align-items:center;gap:8px;font-size:13px}.crm-follow-date>span:not(.tag){color:var(--ink3)}
.crm-follow-summary{line-height:1.65;margin:7px 0;color:var(--ink)}.crm-follow-next{background:var(--bg);border-radius:7px;padding:7px 9px;color:var(--ink2);font-size:13px}
.crm-follow-meta{display:flex;justify-content:space-between;gap:8px;margin-top:7px;color:var(--ink3);font-size:12px}.crm-follow-meta span{display:flex;gap:10px}
.crm-follow-modal{position:relative}.modal-x{position:absolute;right:16px;top:14px;border:0;background:transparent;color:var(--ink3);font-size:20px;cursor:pointer}
.crm-collision-hint{min-height:20px;margin:-4px 0 8px;color:#b45309;font-size:12px;font-weight:600}
