/* ============================================================
   Chayo 价格·报价系统 —— UI 采用 MES ERP UI Kit 设计语言
   炭灰为主 · Chayo Red #DA274D ≤20% 强调 · 发丝边框卡片 · 克制圆角
   保留原有 class 名，模板无需大改；移动端做了适配。
   ============================================================ */
:root{
  /* 中性 */
  --gray-0:#fff;--gray-25:#FAFAFA;--gray-50:#F5F5F5;--gray-100:#E5E5E5;--gray-200:#D9D9D9;
  --gray-300:#BFBFBF;--gray-400:#999;--gray-500:#666;--gray-600:#4D4D4D;--gray-700:#333;--gray-900:#1A1A1A;
  /* 品牌红（Chayo Red，Pantone 192 CP）*/
  --brand:#DA274D;--brand-d:#C21F43;--brand-50:#FDF1F4;--brand-100:#FBE0E7;
  /* 语义 */
  --ok:#30A46C;--ok-50:#E6F6EE;--warn:#D98A0B;--warn-50:#FEF3DD;--danger:#DA274D;
  /* 成本（敏感·琥珀调）*/
  --cost:#FEF3DD;--costink:#B4690E;
  /* 兼容旧变量名（模板内联样式在用）*/
  --ink:#333;--ink2:#666;--soft:#F5F5F5;--sunken:#F5F5F5;--line:#E5E5E5;--card:#fff;
  --shadow:0 1px 2px rgba(17,17,17,.05),0 0 0 1px var(--line);
  --shadow-raised:0 4px 12px rgba(17,17,17,.08),0 0 0 1px var(--line);
  --focus:0 0 0 3px rgba(218,39,77,.28);
  --radius:10px;--radius-lg:14px;
  --font:'Poppins','HarmonyOS Sans SC','PingFang SC','Microsoft YaHei',-apple-system,system-ui,sans-serif;
  --mono:'IBM Plex Mono','SFMono-Regular',ui-monospace,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--gray-25);font-family:var(--font);color:var(--ink);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}
a{color:inherit;text-decoration:none}
b,strong{font-weight:700}

/* ---------- 顶栏（炭灰，红作强调）---------- */
.topbar{background:var(--gray-900);color:#fff;display:flex;align-items:center;gap:12px;padding:11px 20px;position:sticky;top:0;z-index:30;border-bottom:1px solid rgba(255,255,255,.06)}
.topbar img{height:22px;filter:brightness(0) invert(1)}
.topbar .t{font-weight:600;font-size:15px;letter-spacing:.01em}
.topbar .sp{flex:1}
.role{position:relative}
.role .cur{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.20);border-radius:999px;padding:6px 13px;font-size:13px;cursor:pointer;color:#fff;white-space:nowrap}
.role .cur:hover{background:rgba(255,255,255,.16)}
.role .menu{position:absolute;right:0;top:40px;background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);width:236px;overflow:hidden;display:none;z-index:40}
.role:hover .menu{display:block}
.role .menu a{display:block;padding:11px 14px;font-size:13.5px;color:var(--ink);border-bottom:1px solid var(--line)}
.role .menu a:last-child{border-bottom:0}
.role .menu a:hover{background:var(--gray-25)}
.role .menu a.on{background:var(--brand-50);color:var(--brand);font-weight:600}
.role .menu a small{display:block;color:var(--ink2);font-size:11px;margin-top:1px;font-weight:400}

/* ---------- 导航（白底，红下划线）---------- */
.nav{background:#fff;border-bottom:1px solid var(--line);display:flex;gap:2px;padding:0 16px;overflow-x:auto;position:sticky;top:45px;z-index:20;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.nav::-webkit-scrollbar{display:none}
.nav a{padding:13px 15px;font-size:14px;color:var(--ink2);border-bottom:2.5px solid transparent;white-space:nowrap;font-weight:500}
.nav a:hover{color:var(--ink)}
.nav a.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}

.wrap{max-width:1360px;margin:0 auto;padding:20px}

/* ---------- 提示条 / flash ---------- */
.rolebar{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);border-left:3px solid var(--brand);padding:11px 15px;font-size:13px;color:var(--ink2);margin-bottom:14px;line-height:1.55}
.rolebar b{color:var(--ink)}
.flash{padding:11px 15px;border-radius:var(--radius);margin-bottom:12px;font-size:13.5px;font-weight:500}
.flash.ok{background:var(--ok-50);color:var(--ok);box-shadow:0 0 0 1px rgba(48,164,108,.25)}
.flash.bad{background:var(--brand-50);color:var(--brand-d);box-shadow:0 0 0 1px rgba(218,39,77,.22)}

/* ---------- 工具行 / chips ---------- */
.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.tools .sp{flex:1}
.chip{font-size:13px;padding:6px 13px;border-radius:999px;background:#fff;box-shadow:0 0 0 1px var(--line);color:var(--ink2);cursor:pointer;font-weight:500;transition:.12s}
.chip:hover{color:var(--ink);box-shadow:0 0 0 1px var(--gray-300)}
.chip.on{background:var(--brand);color:#fff;box-shadow:none}
/* 筛选控件：隐藏原生勾选框；多选用轻高亮 chip，证书用分段控件（更紧凑不笨重） */
.filterbar{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;width:100%}
.filterbar .flabel{font-size:12px;color:var(--ink2);font-weight:700}
.fchip{position:relative;font-size:12.5px;padding:4px 11px;border-radius:999px;background:#fff;box-shadow:0 0 0 1px var(--line);color:var(--ink2);cursor:pointer;font-weight:500;user-select:none;transition:.12s}
.fchip:hover{color:var(--ink);box-shadow:0 0 0 1px var(--gray-300)}
.fchip.on{background:var(--brand-50);color:var(--brand);box-shadow:0 0 0 1px var(--brand);font-weight:700}
.fchip input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.seg label{position:relative;font-size:12.5px;padding:4px 12px;cursor:pointer;color:var(--ink2);background:#fff;border-left:1px solid var(--line);user-select:none}
.seg label:first-child{border-left:0}
.seg label.on{background:var(--brand);color:#fff;font-weight:600}
.seg input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
/* 列显示菜单 + 列头排序 + 筛选面板收起 */
.colwrap{position:relative;display:inline-block}
.colmenu{position:absolute;right:0;top:38px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-raised);padding:8px;z-index:25;width:210px;max-height:62vh;overflow:auto}
.colmenu .ct-h{font-size:11px;color:var(--ink2);font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 6px 6px}
.colmenu label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--ink);padding:5px 6px;border-radius:6px;cursor:pointer;white-space:nowrap}
.colmenu label:hover{background:var(--gray-50)}
.sorth{color:inherit;text-decoration:none;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.sorth:hover{color:var(--brand)}
.sarrow{color:var(--brand);font-size:9px}
.fdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--brand);margin-left:3px;vertical-align:middle}
.filterpanel{margin-bottom:8px}

/* ---------- 按钮（ebtn）---------- */
.btn{border:1px solid var(--gray-200);background:#fff;color:var(--ink);border-radius:var(--radius);padding:0 15px;height:38px;font-size:14px;font-weight:500;font-family:var(--font);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:.12s;white-space:nowrap}
.btn:hover{background:var(--gray-50)}
.btn:active{transform:scale(.98)}
.btn:focus-visible{outline:none;box-shadow:var(--focus)}
.btn.primary{background:var(--brand);color:#fff;border-color:var(--brand)}
.btn.primary:hover{background:var(--brand-d)}
.btn.ghost{background:var(--gray-50);border-color:transparent}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* ---------- 表单控件（einput/eselect）---------- */
input,select,textarea{font-family:var(--font);font-size:14px;height:38px;padding:0 12px;color:var(--ink);background:#fff;border:1px solid var(--gray-200);border-radius:8px;outline:0;transition:.12s;max-width:100%}
textarea{height:auto;padding:9px 12px}
input:hover:not(:focus):not(:disabled),select:hover:not(:focus):not(:disabled){border-color:var(--gray-400)}
input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:var(--focus)}
input:disabled,select:disabled{background:var(--gray-50);color:var(--gray-400)}
input[type=checkbox]{height:auto;width:16px;accent-color:var(--brand)}
label{font-size:13px;color:var(--ink)}
.field label,label{font-weight:500}
.search{display:flex;gap:8px;flex:1;max-width:440px}
.search input{flex:1}

/* ---------- 宽表（etable）---------- */
.wtwrap{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:auto;-webkit-overflow-scrolling:touch}
table.wt{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;white-space:nowrap}
table.wt th{position:sticky;top:0;background:var(--gray-50);color:var(--ink2);padding:10px 12px;text-align:left;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-bottom:1px solid var(--line);z-index:2;white-space:nowrap}
table.wt th.costcol{background:var(--cost);color:var(--costink)}
table.wt th.floorcol{background:var(--brand-50);color:var(--brand)}
table.wt td{padding:11px 12px;border-bottom:1px solid var(--line);color:var(--ink2);vertical-align:middle}
table.wt tbody tr:nth-child(even) td{background:var(--gray-25)}
table.wt tbody tr:hover td{background:var(--brand-50)}
table.wt tbody tr:last-child td{border-bottom:0}
table.wt td.costcol{background:var(--cost)!important;color:var(--costink);font-weight:600}
table.wt td.floorcol{color:var(--brand);font-weight:600}
table.wt tfoot td{border-top:2px solid var(--line);background:#fff}
.wt .mdl{font-weight:600;color:var(--ink)}.wt .mdl small{display:block;color:var(--ink2);font-weight:400;font-size:11px}
.wt img.tt{width:36px;height:36px;border-radius:6px;object-fit:cover;box-shadow:0 0 0 1px var(--line);vertical-align:middle}
.wt .specmini{max-width:230px;overflow:hidden;text-overflow:ellipsis;color:var(--ink2);white-space:nowrap;cursor:pointer}
.wt .specmini.expanded{white-space:normal;max-width:360px;overflow:visible;text-overflow:clip;background:#FFFDF5}
.wt img.zoom{cursor:zoom-in}
/* 价格表宽表：网格滚动区（限高→横向滚动条常驻可见）+ 冻结前两列（复选框/型号）+ 拖动横滑 */
.grid-scroll{max-height:calc(100vh - 220px)}
.wtwrap.drag{cursor:grabbing;user-select:none}
.wt-freeze th:nth-child(1),.wt-freeze td:nth-child(1){position:sticky;left:0;width:46px;min-width:46px;z-index:3}
.wt-freeze th:nth-child(2),.wt-freeze td:nth-child(2){position:sticky;left:46px;z-index:3;box-shadow:1px 0 0 var(--line)}
.wt-freeze tbody td:nth-child(1),.wt-freeze tbody td:nth-child(2){background:#fff}
.wt-freeze tbody tr:nth-child(even) td:nth-child(1),.wt-freeze tbody tr:nth-child(even) td:nth-child(2){background:var(--gray-25)}
.wt-freeze tbody tr:hover td:nth-child(1),.wt-freeze tbody tr:hover td:nth-child(2){background:var(--brand-50)}
.wt-freeze thead th:nth-child(1),.wt-freeze thead th:nth-child(2){z-index:6}

/* ---------- 徽章（ebadge）---------- */
.tag{font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600;line-height:1.5;letter-spacing:.02em;display:inline-block}
.tag.made{background:var(--ok-50);color:var(--ok)}
.tag.buy{background:var(--warn-50);color:var(--warn)}
.tag.new{background:var(--brand-50);color:var(--brand)}
.op{color:var(--brand);font-weight:600;cursor:pointer}
.note{font-size:12px;color:var(--ink2);margin-top:10px;line-height:1.55}
.redflag{color:var(--brand);font-weight:700;font-size:11px}
.hide{display:none}
.ebadge{display:inline-block;padding:1px 8px;border-radius:999px;background:var(--brand-50);color:var(--brand);font-size:11px;font-weight:700;border:1px solid var(--line);line-height:1.7;white-space:nowrap}
.ebadge.g{background:var(--gray-50);color:var(--ink2)}

/* ---------- 卡片（ecard）---------- */
.panel{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:16px}
.panel h3{margin:0 0 12px;font-size:16px;font-weight:700;color:var(--ink)}
.two{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;align-items:start}
.hero{display:flex;gap:14px;margin-bottom:12px}
.hero img{width:110px;height:110px;border-radius:var(--radius);object-fit:cover;box-shadow:0 0 0 1px var(--line);cursor:zoom-in}
.kv{font-size:13px;color:var(--ink2);line-height:1.9}
.prow{display:flex;align-items:center;gap:10px;padding:11px 13px;border-radius:var(--radius);box-shadow:0 0 0 1px var(--line);margin-bottom:8px;font-size:14px}
.prow.sens{background:var(--cost);box-shadow:0 0 0 1px #F0D9A8}.prow.sens .pv{color:var(--costink)}
.prow.floor{background:var(--brand-50);box-shadow:0 0 0 1px var(--brand-100)}.prow.floor .pv{color:var(--brand)}
.prow .pn{flex:1}.prow .pn small{color:var(--ink2);font-size:11px;display:block}
.prow .pv{font-weight:800;font-size:17px;min-width:70px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
.prow form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.prow input[type=number]{width:88px}.prow input[type=text]{width:130px}
.mask{font-size:12px;color:var(--costink);background:var(--cost);border:1px dashed #E0BE7A;border-radius:var(--radius);padding:10px 12px;margin-bottom:8px}
.hist{font-size:12.5px;display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.hist .dot{width:7px;height:7px;border-radius:50%;background:var(--brand);margin-top:5px;flex:none}
.hist .sp{flex:1}.hist .d{color:var(--ink2)}
.platmx{display:flex;gap:8px;flex-wrap:wrap}
.platcell{min-width:96px;background:var(--gray-25);border-radius:var(--radius);box-shadow:0 0 0 1px var(--line);padding:9px 11px}
.platcell .pl{font-size:11px;color:var(--ink2)}.platcell .pp{font-size:15px;font-weight:700;margin-top:2px;font-family:var(--mono)}

/* ---------- 权限矩阵 ---------- */
table.pm{border-collapse:collapse;width:100%;font-size:12.5px}
table.pm th,table.pm td{border:1px solid var(--line);padding:9px 10px;text-align:center}
table.pm th{background:var(--gray-50);font-weight:700;color:var(--ink2)}
table.pm td:first-child,table.pm th:first-child{text-align:left}
table.pm tr.costrow td{background:var(--cost)}table.pm tr.costrow td:first-child{color:var(--costink);font-weight:700}
.yes{color:var(--ok);font-weight:700}.no{color:var(--gray-300)}

/* ---------- KPI 卡 ---------- */
.cards-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.kpi{background:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:16px 18px;border-top:3px solid var(--brand)}
.kpi .n{font-size:26px;font-weight:800;color:var(--ink);font-family:var(--mono);line-height:1.1}.kpi .n.br{color:var(--brand)}
.kpi .l{font-size:12px;color:var(--ink2);margin-top:4px}

/* ---------- 报价单 ---------- */
.qdoc{background:#fff;border-radius:var(--radius);box-shadow:0 0 0 1px var(--line);overflow:hidden;position:relative;font-size:11.5px}
.qdoc .qh{background:var(--brand);color:#fff;padding:12px 14px;display:flex;justify-content:space-between;align-items:center}
.qdoc .qh img{height:20px;filter:brightness(0) invert(1)}.qdoc .qh .qt{font-size:15px;font-weight:800;letter-spacing:1px}
.qdoc .meta{display:flex;justify-content:space-between;padding:8px 14px;color:var(--ink2);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:2px}
.qdoc table{width:100%;border-collapse:collapse}
.qdoc th{background:var(--gray-900);color:#fff;font-size:10px;padding:6px 5px;text-align:left}
.qdoc td{padding:6px 5px;border-bottom:1px solid var(--line);font-size:10.5px}
.qdoc td img{width:30px;height:30px;object-fit:cover;border-radius:4px}
.qdoc .sum{padding:9px 14px;text-align:right}.qdoc .sum .g{font-size:14px;font-weight:800;color:#fff;background:var(--brand);display:inline-block;padding:5px 12px;border-radius:7px;margin-top:5px}
.qdoc .terms{padding:9px 14px;border-top:1px solid var(--line);color:var(--ink2);display:grid;grid-template-columns:1fr 1fr;gap:2px 10px}
.qdoc .wm{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:hidden}
.qdoc .wm span{color:rgba(218,39,77,.06);font-size:22px;font-weight:800;transform:rotate(-30deg);white-space:nowrap;line-height:2.6}
.qitem{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.qitem img{width:44px;height:44px;border-radius:8px;object-fit:cover;box-shadow:0 0 0 1px var(--line)}
.qitem .m{flex:1}.qitem .m b{font-size:13px}.qitem .m small{display:block;color:var(--ink2);font-size:11px}
.tr{display:flex;justify-content:space-between;font-size:13px;padding:3px 0;color:var(--ink2)}
.tr b{font-family:var(--mono)}
.tr.grand{font-size:16px;font-weight:800;color:var(--ink);border-top:1px dashed var(--line);margin-top:5px;padding-top:8px}.tr.grand b{color:var(--brand)}

/* ---------- 登录 ---------- */
.loginbox{max-width:420px;margin:56px auto;background:#fff;border-radius:20px;padding:28px;box-shadow:var(--shadow-raised);border-top:3px solid var(--brand)}
.loginbox h2{margin:0 0 4px;font-size:20px}.loginbox p{color:var(--ink2);font-size:13px;margin:0 0 18px;line-height:1.55}
.loginbox .rbtn{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:13px 14px;border:1px solid var(--gray-200);border-radius:var(--radius);margin-bottom:9px;background:#fff;cursor:pointer;font-size:14px;font-family:var(--font)}
.loginbox .rbtn:hover{border-color:var(--brand);background:var(--brand-50)}
.loginbox .rbtn small{display:block;color:var(--ink2);font-size:11.5px;margin-top:1px}

/* ---------- 图片放大 ---------- */
#lightbox{display:none;position:fixed;inset:0;background:rgba(17,17,17,.85);z-index:200;align-items:center;justify-content:center;flex-direction:column;gap:12px;cursor:zoom-out;padding:24px}
#lightbox img{max-width:92vw;max-height:82vh;border-radius:var(--radius);background:#fff;box-shadow:0 16px 50px rgba(0,0,0,.6)}
#lightbox .cap{color:#fff;font-size:13px;opacity:.85}

/* ---------- 工具类 ---------- */
.fgrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}

/* ============================================================
   移动端适配
   ============================================================ */
@media(max-width:900px){ .two{grid-template-columns:1fr} }
@media(max-width:720px){ .cards-kpi{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){
  body{font-size:14px}
  .wrap{padding:12px}
  .topbar{padding:10px 14px}.topbar .t{font-size:14px}
  .nav{padding:0 10px}.nav a{padding:12px 12px;font-size:13.5px}
  .panel{padding:14px 14px;border-radius:12px}
  .panel h3{font-size:15px}
  .cards-kpi{gap:10px}.kpi{padding:13px 14px}.kpi .n{font-size:22px}
  /* 内联多列栅格 → 手机单列（!important 胜过内联非important）*/
  [style*="grid-template-columns"]{grid-template-columns:1fr!important}
  .qdoc .terms{grid-template-columns:1fr!important}
  /* 表单/工具项占满、按钮更大更好点 */
  .tools{gap:6px}
  .search{max-width:none;width:100%}
  .btn{height:40px}
  input,select{height:40px;font-size:15px}      /* ≥15px 防 iOS 聚焦缩放 */
  /* 宽表：横滑提示 + 首列(型号)吸附左侧 */
  .wtwrap{position:relative;border-radius:12px}
  table.wt td,table.wt th{padding:9px 10px}
  .wt .specmini{max-width:150px}
}
@media(max-width:420px){ .cards-kpi{grid-template-columns:1fr} }

/* ---------- 打印/导出 PDF：只留报价单本体 ---------- */
@media print{
  body *{visibility:hidden!important}
  #print-area,#print-area *{visibility:visible!important}
  #print-area{position:absolute;left:0;top:0;width:100%}
  #print-area .qdoc{box-shadow:none!important}
  .topbar,.nav,.exportbar{display:none!important}
  @page{margin:12mm}
}

/* ===== 营销资产系统增补（资产卡/缩略图网格/徽章/完整度） ===== */
.mono{font-family:ui-monospace,Consolas,monospace}
.crumbs{font-size:12px;color:var(--ink2);margin-top:6px}
.crumbs a{color:var(--ink2);text-decoration:none}
.crumbs a:hover{color:var(--brand)}
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0 16px}
.filters input,.filters select,form input,form select,form textarea{
  border:1px solid var(--line);border-radius:8px;padding:7px 10px;font:inherit;background:#fff}
.badge{display:inline-block;font-size:10.5px;letter-spacing:.4px;padding:2px 8px;border-radius:999px;
  border:1px solid var(--line);color:var(--ink2);background:#fff;vertical-align:middle}
.badge.ok{border-color:#bfe3c8;background:#f0faf2;color:#1c7c3c}
.badge.warn{border-color:#f3ddb5;background:#fdf7ea;color:#9a6b0a}
.badge.brand{border-color:var(--brand);color:var(--brand);background:#fdeef4}
.badge.inherit{position:absolute;top:6px;left:6px;background:#eef3fd;border-color:#c3d4f5;color:#2b57b0;z-index:2}
.cardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin:14px 0}
.modcard{display:block;position:relative;border:1px solid var(--line);border-radius:12px;background:#fff;
  padding:16px;text-decoration:none;color:inherit;transition:box-shadow .15s,border-color .15s}
.modcard:hover{border-color:var(--brand);box-shadow:0 4px 14px rgba(0,0,0,.06)}
.modcard .ic{font-size:26px;margin-bottom:6px}
.modcard .tt{font-weight:600;font-size:15px;margin-bottom:2px}
.modcard .dd{font-size:12px;color:var(--ink2);margin-top:4px}
.modcard.here{border-color:var(--brand)}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.tag.brand{border-color:var(--brand);color:var(--brand);background:#fdeef4}
.statline{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 6px}
.meter{height:5px;border-radius:999px;background:#f1f1f2;overflow:hidden;margin:4px 0 4px}
.meter i{display:block;height:100%;background:var(--brand);border-radius:999px}
.kindblock{margin:10px 0 18px}
.kindhead{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--ink2);
  margin-bottom:8px;display:flex;align-items:center;gap:6px}
.thumbgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.thumbcard{position:relative;border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px;text-align:center}
.thumbcard img{width:100%;height:110px;object-fit:contain;border-radius:8px;cursor:zoom-in;background:#fafafa}
.thumbcard .fileic{height:110px;display:flex;align-items:center;justify-content:center;font-size:38px;
  background:#fafafa;border-radius:8px}
.thumbcard .fn{font-size:11px;margin:6px 0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.thumbcard .ops{display:flex;gap:8px;justify-content:center;font-size:11.5px}
.op.danger{color:#c22;border:none;background:none;cursor:pointer;font:inherit;font-size:inherit;padding:0}
.tbl{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:8px 0 14px}
.tbl th{font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink2);text-align:left;
  padding:8px 10px;border-bottom:1px solid var(--line);background:#fafafa}
.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl.kv{max-width:680px}
.tbl.kv th{width:180px;text-transform:none;font-size:12px;background:#fff}
.empty{border:1px dashed var(--line);border-radius:12px;padding:22px;text-align:center;color:var(--ink2);
  background:#fafafa;max-width:520px}
.serbox{border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px 14px;margin:8px 0}
.serbox summary{cursor:pointer;font-size:14px}
.logbox{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px}
.logbox pre{white-space:pre-wrap;font-size:12.5px;line-height:1.7;margin:0;font-family:inherit}
.rbtn{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);border-radius:10px;
  background:#fff;padding:11px 14px;margin:8px 0;text-decoration:none;color:inherit;font:inherit;cursor:pointer;text-align:left}
.rbtn:hover{border-color:var(--brand)}
.rbtn small{display:block;color:var(--ink2);font-size:11px}
h3{font-size:12.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink2);margin:22px 0 8px}

/* ===== CRM 追加类（营销系统 UI Kit 无此项，为 CRM 状态/等级/小按钮补充）===== */
.btn.sm{height:30px;padding:0 11px;font-size:12.5px;border-radius:8px}
.tag.ok{background:var(--ok-50);color:var(--ok)}
.tag.warn{background:var(--warn-50);color:var(--warn)}
.tag.bad{background:var(--brand-50);color:var(--brand-d)}
.tag.gA{background:var(--brand-50);color:var(--brand)}
.tag.gB{background:var(--warn-50);color:var(--warn)}
.tag.gC{background:var(--gray-50);color:var(--ink2)}
.tag.g潜在{background:var(--ok-50);color:var(--ok)}
select.sm{height:30px;font-size:12.5px;padding:2px 6px}

/* ---------- 客户详情统计条 KPI ---------- */
.kpi{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px}
.kpi .k{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 10px;text-align:center}
.kpi .k .n{font-size:22px;font-weight:700;color:var(--ink);line-height:1.1}
.kpi .k .n small{font-size:12px;font-weight:600;color:var(--ink2);margin-left:1px}
.kpi .k .n.warn{color:var(--brand)}
.kpi .k .l{font-size:11.5px;color:var(--ink2);margin-top:4px;font-weight:500}
@media(max-width:720px){.kpi{grid-template-columns:repeat(3,1fr)}}
