/* ============ 销售工作台 · 深色主题（2026-09-12 视觉重构 v2 · 深空光晕） ============ */
:root{
  --bg:#070a0f;
  --bg-1:#121821;
  --bg-2:#1a222d;
  --bg-3:#232d3a;
  --line:#26313d;
  --line-2:#36455a;
  --txt:#e8eef6;
  --txt-2:#9fb0c3;
  --txt-3:#7c8b9e;
  --acc:#58a6ff;
  --acc-strong:#1f6feb;
  --acc-dim:#1e3a5f;
  --ok:#3fb950;
  --warn:#e3b341;
  --danger:#f85149;
  --purple:#a97bff;
  --teal:#2fd4c8;
  --radius:12px;
  --radius-s:8px;
  --shadow:0 30px 80px -20px rgba(0,0,0,.95);
  --shadow-card:0 1px 0 rgba(255,255,255,.045) inset,0 10px 26px -14px rgba(0,0,0,.85);
  --glow-acc:0 0 18px rgba(88,166,255,.55);
  --mono:'Consolas','Cascadia Mono','Courier New',monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Microsoft YaHei','PingFang SC',-apple-system,'Segoe UI',sans-serif;
  background:radial-gradient(1100px 480px at 60% -120px,#101826 0%,rgba(16,24,38,0) 62%),var(--bg);
  color:var(--txt);font-size:13.5px;line-height:1.55;
  overflow:hidden;
}
:focus-visible{outline:2px solid var(--acc);outline-offset:1px}

/* ============ 入口过渡页（loading + 口令 共用一个简洁页面） ============
   2026-09-05 简化：原「登录遮罩 + 启动终端遮罩 + 退出终端遮罩」三套重型视觉
   （Matrix 代码雨 / 漂移安全词 / SECURE SHELL 假终端 / 假加密日志）已全部移除，
   统一为下方单容器 .gate：品牌 → 状态文案 → 细进度条；云端校验失败才切出口令表单。 */
.gate{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1100px 640px at 50% 28%,#101826 0%,#05070b 62%);
  transition:opacity .3s ease}
.gate.gone{opacity:0;pointer-events:none}
.gate-inner{width:330px;max-width:92vw;text-align:center}
.gate-logo{width:58px;height:58px;margin:0 auto 20px;border-radius:15px;
  background:linear-gradient(135deg,var(--acc) 0%,#7d6cf6 100%);
  color:#fff;font-size:19px;font-weight:700;letter-spacing:1px;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 30px rgba(59,130,246,.25)}
.gate-title{font-size:18px;font-weight:600;color:var(--txt);letter-spacing:3px}
.gate-sub{margin-top:8px;font-size:12.5px;color:var(--txt-3);min-height:18px}
.gate-track{width:176px;height:3px;margin:24px auto 0;border-radius:3px;
  background:var(--bg-3);overflow:hidden}
.gate-track i{display:block;height:100%;width:0;border-radius:3px;
  background:var(--acc);transition:width .22s ease}
/* 口令表单（guard 校验失败时才显示） */
.gate-form{display:none;margin-top:26px;flex-direction:column;gap:11px}
.gate-form.on{display:flex}
.gate-form input{width:100%;box-sizing:border-box;padding:11px 13px;background:var(--bg-2);
  border:1px solid var(--line-2);border-radius:9px;color:var(--txt);font-size:14px;
  text-align:center;letter-spacing:3px;outline:none;transition:border-color .15s,box-shadow .15s}
.gate-form input:focus{border-color:var(--acc);box-shadow:0 0 0 2px rgba(59,130,246,.16)}
.gate-form input::placeholder{letter-spacing:0;color:var(--txt-3)}
.gate-form button{width:100%;padding:11px;border:0;border-radius:9px;background:var(--acc);
  color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}
.gate-form button:hover:not(:disabled){background:#2f7ce8}
.gate-form button:disabled{opacity:.6;cursor:default}
.gate-err{margin-top:2px;color:#ff8a80;font-size:12px;min-height:16px}
.nav-spacer{flex:1}
.nav-logout{margin-top:6px;color:#9aa0a8 !important}
.nav-logout:hover{color:#f2f2f2 !important;border-color:rgba(255,255,255,.25) !important}
.nav-logout.on{color:#f2f2f2 !important}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:13px}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:var(--bg)}
::-webkit-scrollbar-thumb{background:#30363d;border-radius:5px}
::-webkit-scrollbar-thumb:hover{background:#3f4750}

#app{display:flex;height:100vh}

/* ---------- 侧边栏 ---------- */
.sidebar{
  width:220px;flex-shrink:0;background:#0d1117;
  border-right:1px solid var(--line);display:flex;flex-direction:column;
  transition:width .18s ease;
}
.brand{display:flex;gap:10px;align-items:center;padding:15px 14px;border-bottom:1px solid var(--line)}
.brand-mark{
  width:34px;height:34px;border-radius:9px;flex-shrink:0;
  background:linear-gradient(135deg,#58a6ff,#1f6feb);
  display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:13px;color:#fff;letter-spacing:.5px;
  box-shadow:0 4px 14px rgba(31,111,235,.35);
}
.brand-text{display:flex;flex-direction:column;overflow:hidden}
.brand-text strong{font-size:14px;letter-spacing:.5px}
.brand-text span{font-size:11px;color:var(--txt-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.nav{flex:1;overflow-y:auto;padding:8px 8px 10px}
.nav-group{
  font-size:10.5px;color:var(--txt-3);letter-spacing:2px;
  padding:13px 10px 4px;user-select:none;
}
.nav-group:first-child{padding-top:8px}
.nav-item{
  width:100%;display:flex;align-items:center;gap:9px;
  padding:9px 10px;margin-bottom:2px;border:0;border-radius:var(--radius-s);
  background:transparent;color:var(--txt-2);font-size:13px;text-align:left;
  transition:.13s;position:relative;min-height:37px;
}
.nav-item:hover{background:var(--bg-2);color:var(--txt)}
.nav-item.active{background:rgba(88,166,255,.13);color:#fff;font-weight:600}
.nav-item.active::before{
  content:'';position:absolute;left:0;top:7px;bottom:7px;width:3px;
  border-radius:0 2px 2px 0;background:var(--acc);
}
.nav-item .ni{width:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-item .ni svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.9}
.nav-item .nt{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.nav-item em{
  margin-left:auto;font-style:normal;font-size:10.5px;min-width:17px;height:17px;
  border-radius:9px;background:var(--bg-3);color:var(--txt-2);
  display:none;align-items:center;justify-content:center;padding:0 5px;
}
.nav-item em.show{display:flex}
.nav-item em.hot{background:var(--danger);color:#fff;font-weight:700}
.nav-item em.warn{background:var(--warn);color:#20160a;font-weight:700}
.nav-sep{height:1px;background:var(--line);margin:10px 6px}
.sidebar-foot{padding:10px 12px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}
.foot-info{overflow:hidden;min-width:0}
.storage-line{font-size:11px;color:var(--txt-2);white-space:nowrap}
.storage-line.dim{color:var(--txt-3)}
.nav-collapse{
  display:flex;align-items:center;justify-content:center;
  width:30px;height:30px;flex-shrink:0;border:1px solid var(--line);border-radius:7px;
  background:transparent;color:var(--txt-2);transition:.13s;
}
.nav-collapse:hover{background:var(--bg-2);color:var(--txt);border-color:var(--line-2)}
.nav-collapse svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}

/* 侧栏折叠态 */
#app.sb-min .sidebar{width:64px}
#app.sb-min .brand{justify-content:center;padding:15px 6px}
#app.sb-min .brand-text,
#app.sb-min .nav-group,
#app.sb-min .nav-item .nt,
#app.sb-min .foot-info{display:none}
#app.sb-min .nav{padding:8px 6px 10px}
#app.sb-min .nav-item{justify-content:center;padding:10px 0;gap:0}
#app.sb-min .nav-item em{display:none}
#app.sb-min .nav-item.active::before{left:-6px}
#app.sb-min .nav-collapse{margin:0 auto}
#app.sb-min .nav-collapse svg{transform:rotate(180deg)}

/* ---------- 主区 ---------- */
.main{flex:1;display:flex;flex-direction:column;min-width:0}
.topbar{
  display:flex;justify-content:space-between;align-items:flex-end;gap:16px;
  padding:16px 26px 13px;border-bottom:1px solid var(--line);background:#0d1117;
}
.topbar h1{font-size:20px;font-weight:700;letter-spacing:.3px;display:flex;align-items:center}
.topbar h1::before{
  content:'';display:inline-block;width:4px;height:18px;border-radius:2px;
  background:var(--acc);margin-right:10px;box-shadow:0 0 10px rgba(88,166,255,.45);
}
.page-sub{font-size:11.5px;color:var(--txt-3);margin-top:3px}
.topbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.content{flex:1;overflow-y:auto;padding:20px 26px 64px;max-width:1560px;width:100%;margin:0 auto}

/* ---------- 按钮 ---------- */
.btn{
  padding:7px 13px;border:1px solid var(--line-2);border-radius:7px;
  background:var(--bg-2);color:var(--txt);font-size:12.5px;transition:.13s;
  display:inline-flex;align-items:center;gap:5px;white-space:nowrap;
}
.btn:hover{background:var(--bg-3);border-color:#4a5b70}
.btn.primary{background:var(--acc-strong);border-color:var(--acc-strong);color:#fff;font-weight:600}
.btn.primary:hover{background:#388bfd;border-color:#388bfd}
.btn.ok{background:#1e6b4b;border-color:#25805a;color:#fff}
.btn.ok:hover{background:#248059}
.btn.danger{background:#7a2b27;border-color:#93332e;color:#ffd9d6}
.btn.danger:hover{background:#93332e}
.btn.ghost{background:transparent}
.btn.sm{padding:5px 10px;font-size:11.5px;min-height:26px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.icon-btn{
  width:30px;height:30px;border:0;border-radius:var(--radius-s);
  background:transparent;color:var(--txt-2);font-size:14px;
  display:flex;align-items:center;justify-content:center;transition:.13s;
}
.icon-btn:hover{background:var(--bg-3);color:var(--txt)}

/* ---------- 卡片 / 网格 ---------- */
.grid{display:grid;gap:12px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.card{
  background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;box-shadow:var(--shadow-card);
}
.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px;gap:10px}
.card-head h3{font-size:13.5px;font-weight:650;letter-spacing:.3px}
.card-head .sub{font-size:11px;color:var(--txt-3)}

/* 统计块 */
.stat{
  background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;position:relative;overflow:hidden;box-shadow:var(--shadow-card);
}
.stat::after{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--acc)}
.stat.s-ok::after{background:var(--ok)}
.stat.s-warn::after{background:var(--warn)}
.stat.s-danger::after{background:var(--danger)}
.stat.s-purple::after{background:var(--purple)}
.stat .lab{font-size:11.5px;color:var(--txt-3);margin-bottom:5px}
.stat .val{font-size:24px;font-weight:700;letter-spacing:.5px;line-height:1.15;font-variant-numeric:tabular-nums}
.stat .val small{font-size:12px;font-weight:400;color:var(--txt-3);margin-left:3px}
.stat .foot{font-size:11px;color:var(--txt-2);margin-top:4px}

/* ---------- 表格 ---------- */
.tbl-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg-1);box-shadow:var(--shadow-card)}
.tbl-scroll{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
table.tbl th{
  background:var(--bg-2);padding:10px 12px;text-align:left;font-weight:600;
  color:var(--txt-2);font-size:11.5px;white-space:nowrap;letter-spacing:.4px;
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2;
}
table.tbl td{padding:9px 12px;border-bottom:1px solid #202a35;vertical-align:middle}
table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl tbody tr:hover{background:#1a2230}
table.tbl tbody tr.clickable{cursor:pointer}
table.tbl td.num,table.tbl th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
table.tbl td.mono{font-family:var(--mono);font-size:12px}
table.tbl td.act{text-align:right;white-space:nowrap}
.empty{padding:54px 20px;text-align:center;color:var(--txt-3);font-size:12.5px}
.empty .big{font-size:40px;opacity:.32;display:block;margin-bottom:10px}

/* ---------- 徽标 ---------- */
.tag{
  display:inline-flex;align-items:center;padding:1.5px 7px;border-radius:20px;
  font-size:10.5px;font-weight:600;letter-spacing:.2px;white-space:nowrap;
}
.t-gray{background:#262d36;color:#9aa7b5}
.t-blue{background:rgba(88,166,255,.15);color:#79b8ff}
.t-green{background:rgba(63,185,80,.15);color:#56d364}
.t-red{background:rgba(248,81,73,.16);color:#ff7b72}
.t-orange{background:rgba(210,153,34,.16);color:#e3b341}
.t-purple{background:rgba(163,113,247,.16);color:#d2a8ff}
.t-teal{background:rgba(47,212,200,.14);color:#56d4dd}
.chip{
  display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:20px;
  background:var(--bg-3);color:var(--txt-2);font-size:11px;border:1px solid var(--line-2);
}
.chip b{color:var(--txt);font-weight:600}

/* ---------- 表单 ---------- */
.form-row{display:flex;gap:12px;margin-bottom:11px}
.form-row>*{flex:1;min-width:0}
.fld{display:flex;flex-direction:column;gap:4px}
.fld label{font-size:11.5px;color:var(--txt-2);font-weight:500}
.fld label .req{color:var(--danger)}
.fld input,.fld select,.fld textarea{
  padding:7px 10px;background:var(--bg-2);border:1px solid var(--line-2);
  border-radius:var(--radius-s);color:var(--txt);outline:none;transition:.13s;width:100%;
}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--acc);background:#1d2530}
.fld textarea{resize:vertical;min-height:62px;line-height:1.5}
.fld .hint{font-size:10.5px;color:var(--txt-3)}
.fld input[readonly]{background:#141a21;color:var(--txt-3)}

/* 工具栏 */
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:13px}
.toolbar input[type=text],.toolbar input[type=search],.toolbar select{
  padding:6px 10px;background:var(--bg-2);border:1px solid var(--line-2);
  border-radius:var(--radius-s);color:var(--txt);outline:none;
}
.toolbar input:focus,.toolbar select:focus{border-color:var(--acc)}
.toolbar .search{min-width:220px}
.toolbar .spacer{flex:1}
.seg{display:flex;background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--radius-s);overflow:hidden}
.seg button{padding:6px 12px;border:0;background:transparent;color:var(--txt-2);font-size:12px;transition:.13s}
.seg button:hover{background:var(--bg-3);color:var(--txt)}
.seg button.on{background:var(--acc);color:#fff;font-weight:600}

/* ---------- 明细行编辑器 ---------- */
.items-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.items-tbl th{
  background:var(--bg-2);padding:7px 8px;font-size:11px;color:var(--txt-2);
  text-align:left;border:1px solid var(--line);font-weight:600;white-space:nowrap;
}
.items-tbl td{border:1px solid var(--line);padding:0}
.items-tbl input,.items-tbl select{
  width:100%;border:0;background:transparent;color:var(--txt);
  padding:6px 8px;outline:none;font-size:12.5px;
}
.items-tbl input:focus{background:#1d2833;box-shadow:inset 0 0 0 1px var(--acc)}
.items-tbl input.num{text-align:right;font-family:var(--mono)}
.items-tbl td.ro{padding:6px 8px;text-align:right;font-family:var(--mono);color:var(--txt-2);background:#171d24}
.items-tbl td.idx{text-align:center;color:var(--txt-3);font-size:11px;width:34px;background:#171d24}
.items-tbl td.del{width:32px;text-align:center;background:#171d24}
.items-tbl td.del button{
  border:0;background:transparent;color:var(--txt-3);font-size:13px;padding:4px 6px;border-radius:4px;
}
.items-tbl td.del button:hover{background:#5c211d;color:#ff938c}
.sum-box{
  display:flex;justify-content:flex-end;gap:26px;padding:11px 14px;margin-top:-1px;
  background:var(--bg-2);border:1px solid var(--line);border-radius:0 0 var(--radius-s) var(--radius-s);
}
.sum-box div{text-align:right}
.sum-box .lab{font-size:11px;color:var(--txt-3)}
.sum-box .val{font-family:var(--mono);font-size:15px;font-weight:700;margin-top:1px}
.sum-box .val.big{color:var(--acc);font-size:18px}

/* ---------- 弹窗 ---------- */
.modal-mask{
  position:fixed;inset:0;background:rgba(4,7,10,.72);z-index:900;
  display:none;align-items:flex-start;justify-content:center;padding:40px 20px;
  backdrop-filter:blur(3px);overflow-y:auto;
}
.modal-mask.on{display:flex}
.modal{
  background:var(--bg-1);border:1px solid var(--line-2);border-radius:12px;
  box-shadow:var(--shadow);width:100%;max-width:680px;margin:auto 0;
  display:flex;flex-direction:column;animation:pop .16s ease-out;
}
.modal.wide{max-width:1080px}
.modal.mid{max-width:860px}
@keyframes pop{from{opacity:0;transform:translateY(-10px) scale(.99)}to{opacity:1;transform:none}}
.modal-head{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:13px 16px;border-bottom:1px solid var(--line);
}
.modal-head h3{font-size:14.5px;font-weight:650}
.modal-body{padding:16px;overflow-y:auto;max-height:calc(100vh - 220px)}
.modal-foot{
  display:flex;justify-content:flex-end;gap:8px;padding:11px 16px;
  border-top:1px solid var(--line);
}
.modal-foot .left{margin-right:auto}

/* ---------- Toast ---------- */
#toastWrap{position:fixed;right:20px;bottom:20px;z-index:1200;display:flex;flex-direction:column;gap:8px}
.toast{
  padding:10px 15px;border-radius:8px;background:var(--bg-3);color:var(--txt);
  border:1px solid var(--line-2);box-shadow:var(--shadow);font-size:12.5px;
  animation:slideIn .2s ease-out;max-width:340px;border-left:3px solid var(--acc);
}
.toast.ok{border-left-color:var(--ok)}
.toast.err{border-left-color:var(--danger)}
.toast.warn{border-left-color:var(--warn)}
@keyframes slideIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}

/* ---------- 记忆树 ---------- */
.tree-layout{display:grid;grid-template-columns:220px 1fr;gap:14px;align-items:start}
.cust-list{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.cust-list .ch{padding:9px 12px;font-size:11.5px;color:var(--txt-3);border-bottom:1px solid var(--line);background:var(--bg-2)}
.cust-item{
  padding:9px 12px;border-bottom:1px solid #202932;cursor:pointer;transition:.12s;
  display:flex;justify-content:space-between;align-items:center;gap:8px;
}
.cust-item:hover{background:var(--bg-2)}
.cust-item.on{background:var(--acc-dim);color:#fff}
.cust-item .nm{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cust-item .cnt{font-size:10.5px;color:var(--txt-3);font-family:var(--mono);flex-shrink:0}
.cust-item.on .cnt{color:#bcd8f7}

.tree-canvas{
  background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);
  overflow:auto;min-height:520px;position:relative;
}
.tree-canvas svg{display:block}
.tnode{cursor:pointer}
.tnode rect{transition:.13s}
.tnode:hover rect{stroke:var(--acc);stroke-width:1.8}
.tnode text{pointer-events:none;font-family:'Microsoft YaHei',sans-serif}

/* 时间线 */
.timeline{position:relative;padding-left:26px}
.timeline::before{content:'';position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--line-2)}
.tl-item{position:relative;margin-bottom:14px}
.tl-item::before{
  content:'';position:absolute;left:-23px;top:5px;width:10px;height:10px;
  border-radius:50%;background:var(--acc);border:2px solid var(--bg);
}
.tl-item.k-event::before{background:var(--warn)}
.tl-item.k-decision::before{background:var(--purple)}
.tl-item.k-pitfall::before{background:var(--danger)}
.tl-item.k-project::before{background:var(--teal)}
.tl-item.k-contact::before{background:var(--ok)}
.tl-date{font-size:11px;color:var(--txt-3);font-family:var(--mono)}
.tl-card{
  background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius-s);
  padding:9px 12px;margin-top:3px;
}
.tl-card .tt{font-size:13px;font-weight:600;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.tl-card .dt{font-size:12px;color:var(--txt-2);margin-top:3px;white-space:pre-wrap}
.tl-card .tags{margin-top:6px;display:flex;gap:5px;flex-wrap:wrap}

/* 详情面板 */
.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:11px;margin-bottom:14px}
.dl{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-s);padding:9px 11px}
.dl .k{font-size:10.5px;color:var(--txt-3);margin-bottom:3px}
.dl .v{font-size:13px;font-weight:600;word-break:break-all}
.dl .v.mono{font-family:var(--mono);font-size:12.5px}
.sec-title{
  font-size:12px;font-weight:650;color:var(--txt-2);margin:16px 0 9px;
  padding-bottom:6px;border-bottom:1px solid var(--line);
  display:flex;justify-content:space-between;align-items:center;
}
.progress{height:7px;background:var(--bg-3);border-radius:4px;overflow:hidden;margin-top:5px}
.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),var(--acc-strong));border-radius:4px;transition:.3s}
.progress i.ok{background:linear-gradient(90deg,#2ea043,#3fb950)}
.progress i.warn{background:linear-gradient(90deg,#bb8009,#d29922)}

.raw-text{
  background:#0b0e12;border:1px solid var(--line);border-radius:var(--radius-s);
  padding:11px;font-family:var(--mono);font-size:11.5px;color:var(--txt-2);
  max-height:300px;overflow:auto;white-space:pre-wrap;line-height:1.6;
}
.drop-zone{
  border:2px dashed var(--line-2);border-radius:var(--radius);padding:30px 20px;
  text-align:center;color:var(--txt-3);transition:.15s;cursor:pointer;background:var(--bg-2);
}
.drop-zone:hover,.drop-zone.over{border-color:var(--acc);background:#182533;color:var(--txt-2)}
.drop-zone .ic{font-size:26px;display:block;margin-bottom:7px;opacity:.5}
.dim{color:var(--txt-3)}
.nowrap{white-space:nowrap}
.mono{font-family:var(--mono)}
.right{text-align:right}
.flexr{display:flex;gap:8px;align-items:center}
.mb0{margin-bottom:0}
.mt12{margin-top:12px}

/* ---------- 打印 ---------- */
#printArea{display:none}
@media print{
  body{overflow:visible;background:#fff;color:#000}
  #app,#modalMask,#toastWrap{display:none !important}
  #printArea{display:block !important}
  @page{size:A4;margin:14mm 12mm}
}
/* 打印文档样式（同时用于屏幕预览） */
.doc{
  background:#fff;color:#000;font-family:'Microsoft YaHei','SimSun',serif;
  font-size:10.5pt;line-height:1.5;padding:0;
}
.doc .d-logo{max-height:52px;max-width:230px;object-fit:contain}
.doc .d-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2.5px solid #1a3d6b;padding-bottom:9px;margin-bottom:13px}
.doc .d-co{font-size:15pt;font-weight:700;color:#1a3d6b}
.doc .d-co-sub{font-size:8.5pt;color:#555;margin-top:2px;line-height:1.45}
.doc h2.d-title{text-align:center;font-size:17pt;letter-spacing:5px;margin:6px 0 13px;font-weight:700}
.doc .d-meta{display:flex;flex-wrap:wrap;gap:4px 30px;font-size:9.5pt;margin-bottom:11px}
.doc .d-meta span{min-width:210px}
.doc .d-meta b{font-weight:600}
.doc table.d-tbl{width:100%;border-collapse:collapse;font-size:9.5pt;margin-bottom:11px}
.doc table.d-tbl th{border:1px solid #333;background:#e8eef5;padding:5px 6px;font-weight:700;text-align:center}
.doc table.d-tbl td{border:1px solid #333;padding:4px 6px}
.doc table.d-tbl td.c{text-align:center}
.doc table.d-tbl td.r{text-align:right}
.doc table.d-tbl tfoot td{font-weight:700;background:#f4f7fa}
.doc .d-note{font-size:9pt;margin-bottom:9px;white-space:pre-wrap;line-height:1.65}
.doc .d-note b{display:block;margin-bottom:3px;font-size:9.5pt}
.doc .d-sign{display:flex;justify-content:space-between;margin-top:26px;font-size:9.5pt}
.doc .d-sign div{width:44%}
.doc .d-sign .ln{border-bottom:1px solid #333;height:34px;margin-top:5px}
.doc .d-foot{margin-top:14px;padding-top:7px;border-top:1px solid #999;font-size:8pt;color:#666;text-align:center}
.doc-preview{background:#fff;border-radius:6px;padding:16mm 12mm;box-shadow:0 4px 18px rgba(0,0,0,.5)}

/* ============ 日报模块 ============ */
.daily-wrap{display:flex;gap:16px;align-items:flex-start}
.dl-side{width:210px;flex:0 0 210px;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);padding:10px;position:sticky;top:0}
.dl-side-h{font-size:11.5px;color:var(--txt-2);font-weight:600;margin-bottom:8px;letter-spacing:.5px}
.dl-list{display:flex;flex-direction:column;gap:6px;max-height:70vh;overflow-y:auto}
.dl-item{background:#161d26;border:1px solid var(--line);border-radius:8px;padding:8px 10px;cursor:pointer;transition:.12s}
.dl-item:hover{border-color:var(--acc);background:#1b2330}
.dl-item.on{border-color:var(--acc);background:#1d2733;box-shadow:0 0 0 1px var(--acc) inset}
.dl-date{font-size:13px;font-weight:600;color:var(--txt)}
.dl-sub{font-size:11px;color:var(--txt-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-edit{flex:1;min-width:0}

/* ============ 日报周历（竖向） ============ */
.dl-week{margin-bottom:16px}
.dl-week-h{font-size:11.5px;color:var(--txt-2);font-weight:600;margin-bottom:8px;letter-spacing:.3px}
.dl-week-col{display:flex;flex-direction:column;gap:7px}
.dl-day{display:block;width:100%;background:#161d26;border:1px solid var(--line);border-radius:9px;padding:9px 11px 9px 14px;cursor:pointer;transition:.12s;position:relative;overflow:hidden}
.dl-day::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--dayc,#3b82f6)}
.dl-day:hover{border-color:var(--dayc,#3b82f6);background:#1b2330;transform:translateX(2px)}
.dl-day.on{border-color:var(--dayc,#3b82f6);background:#1d2733;box-shadow:0 0 0 1px var(--dayc,#3b82f6) inset}
.dl-day.empty{opacity:.5;cursor:default}
.dl-day.empty::before{background:var(--line)}
.dl-day.empty:hover{transform:none;border-color:var(--line);background:#161d26}
.dl-day-head{display:flex;align-items:baseline;gap:8px}
.dl-day-w{font-size:12px;font-weight:700;color:var(--dayc,#3b82f6)}
.dl-day-d{font-size:11px;color:var(--txt-2)}
.dl-day-s{font-size:12px;color:var(--txt);margin-top:4px;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl-day.empty .dl-day-s{color:#4a5563}

/* ============ 日报正文（与 Word 版式一致：7 行 4 列表格） ============ */
.dl-doc{max-width:760px}
.dl-doc-title{text-align:center;font-size:18px;font-weight:700;letter-spacing:2px;margin-bottom:12px;color:var(--txt)}
.dl-table{border:1px solid var(--line)}
.dl-table th{
  background:#121922;color:var(--txt-2);font-weight:600;text-align:center;
  width:84px;white-space:nowrap;vertical-align:middle;padding:10px 8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)
}
.dl-table td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.dl-table tr:last-child td{border-bottom:0}
.dl-table .dl-big{display:block}
.dl-table .dl-big .fld{margin-bottom:12px}
.dl-table .dl-big .fld:last-child{margin-bottom:0}
.dl-table .dl-sign{text-align:right;color:var(--txt-2);font-size:12.5px;padding:9px 12px}
/* 表格内的字段去掉外边距，贴合单元格 */
.dl-table td .fld{margin:0}
.dl-table td .fld label{font-size:11px;color:var(--txt-3);margin-bottom:3px}
.dl-table td .fld textarea,.dl-table td .fld input{background:#0e141b;border-color:#223}

/* ===== 发货追踪：按合同分组大表 ===== */
.ship-grouped .grp-h{background:#10171f;border-top:2px solid var(--line);border-bottom:1px solid var(--line)}
.ship-grouped .grp-h:first-child{border-top:0}
.ship-grouped .grp-h td{padding:10px 14px}
.ship-grouped .grp-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 18px;margin-bottom:8px}
.ship-grouped .grp-title{font-size:14px;font-weight:700;color:var(--txt)}
.ship-grouped .grp-title .dim{font-weight:400;color:var(--txt-2);font-size:12.5px}
.ship-grouped .grp-metrics{font-size:12.5px;color:var(--txt-2)}
.ship-grouped .grp-metrics b{color:var(--txt);font-weight:700}
.ship-grouped .grp-h .bar{margin-top:2px}
.ship-grouped .grp-h.red{background:#241316;border-top-color:#5a2730}
.ship-grouped .grp-h.red .grp-title{color:#ff7b73}
.ship-grouped tr.red td{background:rgba(255,95,86,.06)}
.ship-grouped tr.red td .mono{color:#ff938c}
.ship-grouped .tag.t-red{background:rgba(255,95,86,.16);color:#ff7b73}

/* ===== 报价单：型号历史价联想浮层 ===== */
.price-hint{
  display:none;position:fixed;z-index:1200;
  background:var(--bg-1);border:1px solid var(--line-2);border-radius:10px;
  box-shadow:var(--shadow);min-width:360px;max-width:500px;overflow:hidden;
  font-size:12.5px;
}
.price-hint .ph-t{
  padding:7px 11px;background:var(--bg-2);color:var(--txt-2);
  font-size:11px;border-bottom:1px solid var(--line);
}
.price-hint .ph-i{
  padding:7px 11px;cursor:pointer;
  border-bottom:1px solid var(--line);font-family:var(--mono);
}
.price-hint .ph-i:last-child{border-bottom:0}
.price-hint .ph-i:hover{background:var(--bg-3)}
.price-hint .ph-i .dim{font-family:inherit;color:var(--txt-3);font-size:11px;font-weight:normal;margin-left:4px}
.price-hint .ph-i .ph-m{font-weight:600;color:var(--txt-1)}
.price-hint .ph-custrow{font-size:11px;color:var(--txt-3);margin-top:2px;font-family:inherit}
.price-hint .ph-custrow .ph-tag{color:#c98a00;border:1px solid currentColor;border-radius:3px;padding:0 4px;margin-left:6px}
.price-hint .ph-prices{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.price-hint .ph-price{
  display:inline-flex;flex-direction:column;align-items:flex-start;
  background:var(--bg-2);border:1px solid var(--line-2);border-radius:7px;
  padding:4px 9px;cursor:pointer;text-align:left;font-family:inherit;color:var(--txt-1);
}
.price-hint .ph-price:hover{background:var(--acc);border-color:var(--acc);color:#fff}
.price-hint .ph-price b{font-size:12.5px;font-family:var(--mono);font-weight:700}
.price-hint .ph-price .ph-psrc{font-size:10px;color:var(--txt-3);line-height:1.2;margin-top:1px}
.price-hint .ph-price:hover .ph-psrc{color:rgba(255,255,255,.88)}
.price-hint .ph-i.ph-exact{background:var(--bg-3)}
.price-hint .ph-i.ph-prefix::before{content:'前缀';font-size:9.5px;padding:1px 4px;margin-right:4px;border:1px solid var(--line-2);border-radius:3px;color:var(--txt-3);font-family:inherit;font-weight:normal;vertical-align:1px}
.price-hint .ph-i.ph-substr::before{content:'子串';font-size:9.5px;padding:1px 4px;margin-right:4px;border:1px solid var(--line-2);border-radius:3px;color:var(--txt-3);font-family:inherit;font-weight:normal;vertical-align:1px}

/* ===================== 客户记忆树 · 脑图 ===================== */
.map-wrap{display:flex;gap:10px;align-items:stretch;height:calc(100vh - 168px);min-height:560px}
.map-col{flex:1;display:flex;flex-direction:column;min-width:0}
.map-bar{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.map-bar .btn{padding:5px 11px;font-size:12px}
.map-bar .btn.on{background:var(--acc);border-color:var(--acc);color:#fff}
.map-bar .chk{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--txt-2);cursor:pointer;user-select:none;padding:4px 9px;border:1px solid var(--line);border-radius:6px;background:var(--bg-2)}
.map-bar .chk input{width:14px;height:14px;accent-color:var(--acc);cursor:pointer}

.map-bar .focus-tip{font-size:11.5px;color:var(--warn);background:rgba(255,184,77,.12);border:1px solid rgba(255,184,77,.38);padding:4px 9px;border-radius:6px;white-space:nowrap}

/* 全屏水印（仅客户记忆树页）：截图可溯源，不拦截鼠标事件 */
.wm-layer{position:fixed;inset:0;z-index:9998;pointer-events:none;background-repeat:repeat;opacity:.55}
/* 预览弹窗内的水印层：盖在 PDF iframe / 图片之上，确保截图也带水印 */
.wm-inner{position:absolute;inset:0;z-index:20;pointer-events:none;background-repeat:repeat;opacity:.5}

/* 销售漏斗汇总条 */
.funnel{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:12.5px;color:var(--txt-2);
  margin-bottom:12px;padding:9px 13px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px}
.funnel b{font-size:14.5px;color:var(--txt);font-weight:500}
.funnel i{color:var(--txt-3);font-style:normal;font-size:12px}

/* 需求看板 */
.board{display:flex;gap:10px;align-items:flex-start;overflow-x:auto;padding-bottom:8px}
.board-col{flex:1;min-width:158px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.board-col-h{padding:8px 11px;font-size:12.5px;font-weight:500;border-bottom:1px solid var(--line)}
.board-col-b{padding:8px;display:flex;flex-direction:column;gap:7px;min-height:86px}
.board-card{background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:8px;
  padding:9px;font-size:12.5px;cursor:pointer;transition:border-color .12s}
.board-card:hover{border-color:var(--acc)}
.board-card .bc-t{line-height:1.5;word-break:break-word}
.board-card .bc-d{font-size:10.5px;color:var(--txt-3);margin-top:4px}
.board-card .bc-acts{display:flex;gap:5px;margin-top:7px;justify-content:flex-end}
.board-card .bc-acts .btn{padding:2px 8px;font-size:11px}

.map-canvas{flex:1;border:1px solid var(--line);border-radius:10px;background:
  radial-gradient(circle at 1px 1px, rgba(255,255,255,.04) 1px, transparent 0) 0 0/22px 22px,
  var(--bg-2);overflow:hidden;min-height:0;position:relative}
.map-canvas .vis-network{outline:none}
.map-canvas .vis-tooltip{background:#0d141c!important;border:1px solid var(--line)!important;color:var(--txt-1)!important;border-radius:6px!important;font-size:11px!important;padding:4px 8px!important}
.map-canvas .vis-navigation{top:auto!important;bottom:8px!important;left:8px!important;right:auto!important}
.map-canvas .vis-button{background:#1b222a!important;border:1px solid var(--line)!important;color:var(--txt-1)!important;border-radius:5px!important;width:24px!important;height:24px!important;font-size:13px!important;line-height:22px!important}
.map-canvas .vis-button:hover{background:#222a33!important}
.map-side{width:248px;flex:0 0 248px;border:1px solid var(--line);border-radius:10px;background:var(--bg);padding:12px;overflow:auto}
.map-side h4{margin:0 0 9px;font-size:13px;color:var(--txt-1)}
.map-side .ms-row{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:12.5px}
.map-side .ms-row .k{color:var(--txt-3)}
.map-side .ms-row .v{color:var(--txt-1);text-align:right}
.map-side .ms-acts{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.map-side .ms-acts .btn{font-size:12px;padding:5px 10px}
.map-side .ms-tip{margin-top:12px;font-size:11px;color:var(--txt-3);line-height:1.6}
.map-side .chip{font-size:11px}
.map-legend{display:flex;flex-wrap:wrap;gap:10px;margin:9px 0 0;font-size:11px;color:var(--txt-3)}
.map-legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:4px;vertical-align:middle}
/** ===== 巑并图片前宝言（亓端增加工小） ==== */
.tnode{cursor:grab}
.tnode:active{cursor:grabbing}
g.tnode.drop-hover rect{stroke:#ffd166;stroke-width:2.6;stroke-dasharray:5 3}
.tree-ghost{
  position:fixed;left:0;top:0;pointer-events:none;z-index:13000;
  display:flex;align-items:center;gap:7px;max-width:300px;
  padding:6px 11px;background:#1f2a36;border:1px solid #3b4a5a;border-radius:7px;
  font-size:12px;color:#e6ed3f;box-shadow:0 6px 18px rgba(0,0,0,.38);opacity:.96;
  font-family:'Microsoft YaeHi',sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.tree-ghost .g-ic{font-size:13px;line-height:1;flex-shrink:0}
.tree-ghost .g-tx{overflow:hidden;text-overflow:ellipsis}
.tree-ghost.no-drop{border-color:#ff5f56;opacity:.55}
.tree-ghost.no-drop .g-ic{filter:grayscale(1);opacity:.5}

/* ============ 日报编辑器 7 行版式（与最新 docx 同构，2026-09） ============ */
.dl-datecn{font-size:11px;color:var(--txt-3);margin-top:2px}
/* 四段大格：今日学习/今日事项汇报/明日计划/心得体会 */
.dl-sec{
  border:1px solid var(--line);border-left:3px solid var(--sec,#3b82f6);
  border-radius:8px;background:#0f151c;padding:8px 12px;margin:2px 0 4px
}
.dl-sec-lb{
  display:inline-block;font-size:11.5px;font-weight:700;color:var(--sec,#3b82f6);
  letter-spacing:1px;margin-bottom:5px;padding:1px 8px 2px 0
}
.dl-sec .fld textarea{background:#0b1117;min-height:66px}
/* 导入明细弹窗的状态色 */
.t-ok{color:#22c55e}.t-warn{color:#f59e0b}.t-err{color:#ff5f56}.t-upd{color:#38bdf8}

/* ==================================================================
   2026-09-12 视觉重构 v2 ·「深空光晕」
   纯视觉覆盖层：不改结构、不改变量名、不碰业务逻辑/打印样式
   1 底色光晕 2 侧栏 3 顶栏 4 卡片 5 统计卡 6 预警条 7 表格
   8 按钮 9 徽标 10 进度条 11 弹窗 12 表单/空态/滚动条/入口页
   ================================================================== */

/* --- 1. 页面底色：深空 + 三色光晕 --- */
body{
  background:
    radial-gradient(900px 520px at 8% -12%, rgba(88,166,255,.16), rgba(88,166,255,0) 62%),
    radial-gradient(820px 500px at 94% -10%, rgba(163,113,247,.14), rgba(163,113,247,0) 64%),
    radial-gradient(1100px 640px at 50% 114%, rgba(47,212,200,.07), rgba(47,212,200,0) 62%),
    #070a0f;
}

/* --- 2. 侧栏：渐变玻璃 + 发光品牌标 + 活动光条 --- */
.sidebar{
  background:linear-gradient(180deg,#0e141d 0%,#0a0f16 55%,#080c12 100%);
  border-right:1px solid rgba(88,166,255,.10);
  box-shadow:1px 0 0 rgba(255,255,255,.02),10px 0 30px -14px rgba(0,0,0,.9);
}
.brand{
  border-bottom:1px solid rgba(240,246,252,.06);
  background:linear-gradient(180deg,rgba(88,166,255,.07),rgba(88,166,255,0));
}
.brand-mark{
  background:linear-gradient(135deg,#4d9fff 0%,#7c5cff 58%,#2fd4c8 130%);
  box-shadow:0 6px 22px rgba(77,159,255,.5),inset 0 1px 0 rgba(255,255,255,.4);
}
.brand-text strong{font-size:14.5px;letter-spacing:.6px}
.nav-group{color:#6b7c90;letter-spacing:2.4px;font-size:10px;font-weight:600}
.nav-item{border-radius:9px;transition:background .14s,color .14s,box-shadow .14s}
.nav-item:hover{background:rgba(88,166,255,.08);color:#eaf2ff}
.nav-item.active{
  background:linear-gradient(90deg,rgba(88,166,255,.24),rgba(88,166,255,.07) 68%,rgba(88,166,255,0));
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(88,166,255,.30),0 6px 18px -8px rgba(31,111,235,.75);
}
.nav-item.active::before{
  width:3px;background:linear-gradient(180deg,#8cc8ff,#2f81f7);
  box-shadow:0 0 12px rgba(88,166,255,.9);
}
.nav-item.active .ni svg{filter:drop-shadow(0 0 6px rgba(88,166,255,.7));opacity:1}
.nav-item em.hot{box-shadow:0 0 12px rgba(248,81,73,.7)}
.nav-item em.warn{box-shadow:0 0 12px rgba(227,179,65,.55)}
.sidebar-foot{background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(0,0,0,.18))}

/* --- 3. 顶栏：吸顶毛玻璃 + 渐变发丝线 --- */
.topbar{
  position:sticky;top:0;z-index:20;
  background:linear-gradient(180deg,rgba(13,17,23,.94),rgba(13,17,23,.82));
  backdrop-filter:blur(10px);
  border-bottom:0;
  box-shadow:0 14px 32px -22px rgba(0,0,0,.95);
}
.topbar::after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,rgba(88,166,255,.6),rgba(88,166,255,.06) 48%,rgba(163,113,247,.35));
}
.topbar h1{font-size:21px;font-weight:700}
.topbar h1::before{
  height:20px;background:linear-gradient(180deg,#8cc8ff,#2f81f7);
  box-shadow:0 0 14px rgba(88,166,255,.75);
}
.page-sub{color:#8397ab}

/* --- 4. 卡片：玻璃分层 + 悬浮上浮 --- */
.card,.stat,.tbl-wrap{
  background:linear-gradient(180deg,rgba(30,41,54,.72),rgba(17,23,32,.92));
  border:1px solid rgba(240,246,252,.075);
  border-radius:12px;
  box-shadow:0 1px 0 rgba(255,255,255,.045) inset,0 12px 30px -18px rgba(0,0,0,.9);
}
.card{transition:border-color .16s,box-shadow .16s,transform .16s;position:relative}
.card::before{
  content:'';position:absolute;top:0;left:14px;right:14px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.16),rgba(255,255,255,0));
}
.card-head h3::before{
  content:'';display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--acc);margin-right:8px;vertical-align:2px;
  box-shadow:0 0 9px rgba(88,166,255,.85);
}
.card:hover{
  border-color:rgba(88,166,255,.26);transform:translateY(-1px);
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 18px 38px -20px rgba(0,0,0,.95);
}
.card-head h3{font-size:14px;font-weight:650;letter-spacing:.3px}
.tbl-wrap{overflow:hidden}

/* --- 5. 统计卡：彩色发光数字 + 角标图标 --- */
.stat{padding:17px 18px;overflow:hidden;transition:border-color .16s,transform .16s}
.stat:hover{border-color:rgba(88,166,255,.26);transform:translateY(-1px)}
.stat::after{width:4px;border-radius:0 4px 4px 0}
.stat::before{position:absolute;right:15px;top:13px;content:'◆';font-size:11px;opacity:.4;pointer-events:none;line-height:1;color:var(--acc)}
.stat.s-danger::before{color:#f85149}
.stat.s-purple::before{color:#a97bff}
.stat.s-warn::before{color:#e3b341}
.stat.s-ok::before{color:#3fb950}
.stat .lab{font-size:11px;letter-spacing:.8px;color:#8ea3b8}
.stat .val{font-size:26px;font-weight:800;letter-spacing:-.3px;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat .val small{color:inherit;opacity:.6;font-weight:600;margin-left:4px}
.stat .foot{margin-top:6px;color:#8ea3b8}
.stat.s-danger .val{color:#ff8b82;text-shadow:0 0 28px rgba(248,81,73,.5)}
.stat.s-danger::after{background:linear-gradient(180deg,#ff9b93,#f85149);box-shadow:0 0 14px rgba(248,81,73,.75)}
.stat.s-purple .val{color:#c9a8ff;text-shadow:0 0 28px rgba(163,113,247,.5)}
.stat.s-purple::after{background:linear-gradient(180deg,#c3a3ff,#8b5cf6);box-shadow:0 0 14px rgba(163,113,247,.75)}
.stat.s-warn .val{color:#ffce6a;text-shadow:0 0 28px rgba(227,179,65,.45)}
.stat.s-warn::after{background:linear-gradient(180deg,#ffd479,#e3b341);box-shadow:0 0 14px rgba(227,179,65,.7)}
.stat.s-ok .val{color:#5fe08a;text-shadow:0 0 28px rgba(63,185,80,.5)}
.stat.s-ok::after{background:linear-gradient(180deg,#6ee79a,#2ea043);box-shadow:0 0 14px rgba(63,185,80,.7)}
.stat:not(.s-ok):not(.s-warn):not(.s-danger):not(.s-purple)::after{
  background:linear-gradient(180deg,#8cc8ff,#2f81f7);box-shadow:0 0 14px rgba(88,166,255,.7);
}

/* --- 6. 顶部预警条：红紫渐变 + 呼吸点 --- */
.alert-card{
  border-color:rgba(248,81,73,.35);
  background:linear-gradient(118deg,rgba(248,81,73,.18),rgba(248,81,73,.05) 52%,rgba(163,113,247,.12));
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset,0 18px 40px -22px rgba(248,81,73,.85);
  position:relative;overflow:hidden;
}
.alert-card::after{
  content:'';position:absolute;left:0;top:0;bottom:0;width:4px;
  background:linear-gradient(180deg,#ff9b93,#f85149);box-shadow:0 0 16px rgba(248,81,73,.9);
}
.alert-card .alert-t{color:#ff9b93;font-size:13.5px;letter-spacing:.4px}
.alert-card .alert-t::before{
  content:'';display:inline-block;width:7px;height:7px;border-radius:50%;
  background:#f85149;margin-right:8px;vertical-align:1px;
  box-shadow:0 0 10px rgba(248,81,73,.95);animation:alertPulse 1.8s ease-in-out infinite;
}
@keyframes alertPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.82)}}

/* --- 7. 表格：渐变表头 + 悬浮光带 --- */
table.tbl th{
  background:linear-gradient(180deg,#1e2733,#171e28);
  color:#93a6ba;font-size:11px;letter-spacing:.7px;
  border-bottom:1px solid rgba(88,166,255,.18);padding:10px 12px;
}
table.tbl td{padding:10px 12px;border-bottom:1px solid rgba(240,246,252,.05)}
table.tbl tbody tr{transition:background .12s}
table.tbl tbody tr:hover{background:linear-gradient(90deg,rgba(88,166,255,.11),rgba(88,166,255,.02) 70%)}
table.tbl tbody tr:hover td:first-child{box-shadow:inset 3px 0 0 rgba(88,166,255,.85)}
table.tbl td.num{color:#dbe7f5}

/* --- 8. 按钮：渐变 + 发光 --- */
.btn{
  border-radius:8px;
  background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.015));
  border-color:rgba(240,246,252,.13);
}
.btn:hover{
  background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.03));
  border-color:rgba(88,166,255,.5);color:#fff;
}
.btn.primary{
  background:linear-gradient(135deg,#3b8dff,#1f6feb);border-color:rgba(88,166,255,.75);
  box-shadow:0 8px 20px -8px rgba(31,111,235,.95),inset 0 1px 0 rgba(255,255,255,.3);
}
.btn.primary:hover{
  background:linear-gradient(135deg,#58a2ff,#2f81f7);
  box-shadow:0 10px 26px -8px rgba(47,129,247,1),inset 0 1px 0 rgba(255,255,255,.34);
}
.btn.ok{background:linear-gradient(135deg,#2ea043,#1a7f34);border-color:rgba(63,185,80,.6);color:#fff;box-shadow:0 8px 18px -10px rgba(46,160,67,1)}
.btn.ok:hover{background:linear-gradient(135deg,#3fb950,#238636)}
.btn.danger{background:linear-gradient(135deg,#e5534b,#b62324);border-color:rgba(248,81,73,.65);color:#fff;box-shadow:0 8px 18px -10px rgba(229,83,75,1)}
.btn.danger:hover{background:linear-gradient(135deg,#f06059,#c9302c)}
.btn.warn{background:linear-gradient(135deg,#9a6700,#7c4a03);border-color:rgba(227,179,65,.5);color:#ffe2ab;font-weight:600}
.btn.warn:hover{background:linear-gradient(135deg,#bb8009,#9a6700)}
.btn.sm{border-radius:7px}
.seg button.on{background:linear-gradient(135deg,#3b8dff,#1f6feb);box-shadow:0 6px 16px -8px rgba(31,111,235,.95)}

/* --- 9. 徽标：描边胶囊 --- */
.tag{border-radius:999px;padding:2.5px 9px;font-weight:600;letter-spacing:.3px}
.t-gray{box-shadow:inset 0 0 0 1px rgba(154,167,181,.28)}
.t-blue{box-shadow:inset 0 0 0 1px rgba(88,166,255,.42)}
.t-green{box-shadow:inset 0 0 0 1px rgba(63,185,80,.42)}
.t-red{box-shadow:inset 0 0 0 1px rgba(248,81,73,.45)}
.t-orange{box-shadow:inset 0 0 0 1px rgba(227,179,65,.42)}
.t-purple{box-shadow:inset 0 0 0 1px rgba(163,113,247,.42)}
.t-teal{box-shadow:inset 0 0 0 1px rgba(47,212,200,.4)}
.chip{background:rgba(88,166,255,.09);border-color:rgba(88,166,255,.22)}

/* --- 10. 进度条：渐变 + 发光 --- */
.progress{height:8px;border-radius:999px;background:rgba(255,255,255,.055);box-shadow:inset 0 1px 2px rgba(0,0,0,.55)}
.progress i{border-radius:999px;box-shadow:0 0 14px rgba(88,166,255,.6)}
.progress i.ok{box-shadow:0 0 14px rgba(63,185,80,.6)}
.progress i.warn{box-shadow:0 0 14px rgba(227,179,65,.55)}
.funnel{background:linear-gradient(118deg,rgba(88,166,255,.10),rgba(163,113,247,.07));border-color:rgba(88,166,255,.2)}

/* --- 11. 弹窗：玻璃面板 --- */
.modal-mask{background:rgba(3,6,11,.74);backdrop-filter:blur(5px)}
.modal{
  background:linear-gradient(180deg,rgba(27,35,46,.99),rgba(13,18,25,.99));
  border:1px solid rgba(88,166,255,.24);
  box-shadow:0 40px 90px -24px rgba(0,0,0,.95),0 0 0 1px rgba(0,0,0,.6);
}
.modal-head{background:linear-gradient(180deg,rgba(88,166,255,.08),rgba(88,166,255,0))}
.modal-foot{background:rgba(255,255,255,.015)}

/* --- 12. 表单 / 空态 / 滚动条 / 入口页 / 其它 --- */
.fld input,.fld select,.fld textarea,
.toolbar input[type=text],.toolbar input[type=search],.toolbar select{
  background:rgba(255,255,255,.035);border-color:rgba(240,246,252,.13);border-radius:8px;
}
.fld input:focus,.fld select:focus,.fld textarea:focus,
.toolbar input:focus,.toolbar select:focus{
  border-color:rgba(88,166,255,.65);background:rgba(88,166,255,.05);
  box-shadow:0 0 0 3px rgba(88,166,255,.15);
}
.drop-zone{background:rgba(255,255,255,.02)}
.drop-zone:hover,.drop-zone.over{border-color:rgba(88,166,255,.6);background:rgba(88,166,255,.06);box-shadow:0 0 0 1px rgba(88,166,255,.18)}
.empty{padding:58px 20px}
.empty .big{font-size:44px;opacity:.26}
.dl-side{background:linear-gradient(180deg,rgba(30,41,54,.7),rgba(17,23,32,.92));box-shadow:var(--shadow-card)}
.dl-day{background:linear-gradient(180deg,rgba(30,41,54,.6),rgba(17,23,32,.85))}
.dl-day:hover{background:linear-gradient(180deg,rgba(88,166,255,.12),rgba(17,23,32,.9))}
.dl-item{background:linear-gradient(180deg,rgba(30,41,54,.6),rgba(17,23,32,.85))}
.board-col{background:rgba(255,255,255,.025)}
.board-card{background:linear-gradient(180deg,rgba(30,41,54,.75),rgba(17,23,32,.9))}
.map-side,.tree-canvas,.cust-list{background:linear-gradient(180deg,rgba(30,41,54,.6),rgba(17,23,32,.9));box-shadow:var(--shadow-card)}
.tl-card{background:linear-gradient(180deg,rgba(30,41,54,.65),rgba(17,23,32,.9))}
.dl{background:rgba(255,255,255,.03)}
.raw-text{background:#05080c}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(124,145,170,.32);border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:rgba(140,165,195,.55)}
:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(88,166,255,.4);border-radius:6px}
/* 入口过渡页：光晕徽标 + 渐变主按钮 */
.gate-logo{
  background:linear-gradient(135deg,#4d9fff,#7c5cff 58%,#2fd4c8 130%);
  box-shadow:0 14px 44px rgba(77,159,255,.45),inset 0 1px 0 rgba(255,255,255,.4);
}
.gate-title{letter-spacing:4px;font-weight:700}
.gate-form button{background:linear-gradient(135deg,#3b8dff,#1f6feb);box-shadow:0 10px 26px -10px rgba(31,111,235,1),inset 0 1px 0 rgba(255,255,255,.3)}
.gate-form button:hover:not(:disabled){background:linear-gradient(135deg,#58a2ff,#2f81f7)}
.gate-form input{background:rgba(255,255,255,.04);border-color:rgba(240,246,252,.16)}
.gate-form input:focus{border-color:rgba(88,166,255,.7);box-shadow:0 0 0 3px rgba(88,166,255,.18)}
.gate-track i{box-shadow:0 0 12px rgba(88,166,255,.8)}

/* ---------- 凭证拖放区（预投/订单附件） ---------- */
.vf-drop{border:1.5px dashed rgba(240,246,252,.22);border-radius:10px;padding:14px 16px;cursor:pointer;
  transition:border-color .15s,background .15s;background:rgba(255,255,255,.015)}
.vf-drop:hover{border-color:rgba(88,166,255,.55);background:rgba(88,166,255,.05)}
.vf-drop.over{border-color:var(--acc);background:rgba(88,166,255,.14);
  box-shadow:inset 0 0 0 1px rgba(88,166,255,.35)}
.vf-drop .vf-h{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.vf-drop .vf-ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  background:rgba(88,166,255,.14);color:#a9d1ff;font-size:15px;flex:0 0 30px}
.vf-drop .vf-t{font-size:13px;font-weight:600;color:var(--txt)}
.vf-drop .vf-s{font-size:11.5px;color:var(--txt-3);margin-top:3px;line-height:1.5}
.vf-drop .vf-btn{border:1px solid var(--line);background:rgba(255,255,255,.05);color:var(--txt);
  border-radius:7px;padding:6px 12px;font-size:12px;cursor:pointer}
.vf-drop .vf-btn:hover{border-color:var(--acc);color:var(--acc)}
.vf-list{margin-top:9px}
.vf-list .hub-row{margin-bottom:5px}

/* ---------- 下拉选项可读性（深色主题下原生 option 默认是浅色看不清）---------- */
select option{background:#151b26;color:#e8eef7}
select option:checked{background:var(--acc);color:#04121f}

/* ===== 移动端响应式 P0（手机与电脑同一套代码）===== */
@media (max-width: 900px) {
  /* ---- 1. 侧边栏 → 底部导航栏 ---- */
  .sidebar{
    position:fixed;left:0;right:0;bottom:0;top:auto;width:auto !important;
    height:auto;max-height:none;border-right:none;border-top:1px solid var(--line);
    z-index:70;box-shadow:0 -6px 20px rgba(0,0,0,.35);
    padding-bottom:env(safe-area-inset-bottom,0px);
  }
  .sidebar .brand,
  .sidebar .nav-group,
  .sidebar-foot,
  #app.sb-min .nav-item .nt{display:none}
  .nav{
    display:flex;flex-direction:row;align-items:stretch;gap:0;
    padding:4px 2px;overflow-x:auto;overflow-y:hidden;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
  }
  .nav::-webkit-scrollbar{display:none}
  .nav-item{
    flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;padding:7px 13px;min-width:60px;border-radius:0;position:relative;
  }
  #app.sb-min .nav-item{justify-content:center;padding:7px 13px;min-width:60px}
  .nav-item .ni{width:auto;height:auto}
  .nav-item .ni svg{width:19px;height:19px;stroke-width:1.7}
  .nav-item .nt{display:block;font-size:10.5px;line-height:1.25;white-space:nowrap;max-width:66px;overflow:hidden;text-overflow:ellipsis}
  .nav-item.active{background:transparent;color:var(--acc)}
  .nav-item.active::before{display:none}
  .nav-item em{
    position:absolute;top:3px;right:8px;font-size:9px;min-width:15px;height:15px;
    padding:0 4px;border-radius:999px;
  }
  /* 内容区给底栏让位 */
  #app{padding-bottom:58px}
  #app.sb-min{padding-bottom:58px}

  /* ---- 2. 顶栏精简 ---- */
  .main{width:100%;min-width:0}
  .topbar{padding:10px 12px 8px;position:sticky;top:0;z-index:40;background:var(--bg-1,rgba(11,16,24,.94));backdrop-filter:blur(8px)}
  .topbar h1{font-size:17px}
  .page-sub{display:none}
  .topbar-right{gap:6px}
  .topbar-right .btn{padding:7px 12px;font-size:12px}

  /* ---- 3. 内容区 ---- */
  .content{padding:10px 10px 24px;overflow-x:hidden}
  .card{padding:12px 13px;border-radius:12px}
  .stats{grid-template-columns:repeat(2,1fr) !important;gap:8px}
  .stat{padding:11px 12px}
  .sec-title{font-size:13.5px;flex-wrap:wrap;gap:8px}

  /* ---- 4. 表格：横向滚动（完整显示，不删列）---- */
  .tbl-wrap{border-radius:10px;overflow:hidden}
  .tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .items-tbl{min-width:660px}
  .items-tbl th,.items-tbl td{font-size:12px}
  /* 冻结首列，横向滑动时型号/名称不跑掉 */
  .items-tbl th:first-child,.items-tbl td:first-child{
    position:sticky;left:0;z-index:2;background:var(--bg-1,#141a24);
    box-shadow:1px 0 0 var(--line);
  }
  .items-tbl th:first-child{z-index:3}
  /* 滚动提示条 */
  .tbl-wrap::after{
    content:'';position:absolute;right:0;top:0;bottom:0;width:22px;pointer-events:none;
    background:linear-gradient(90deg,rgba(11,16,24,0),rgba(11,16,24,.9));
  }
  .tbl-wrap{position:relative}

  /* ---- 5. 弹窗 → 底部全屏抽屉 ---- */
  .modal-mask{align-items:flex-end;padding:0}
  .modal{
    width:100% !important;max-width:100% !important;max-height:94vh;
    margin:0;border-radius:16px 16px 0 0;animation:mdSheet .22s ease-out;
  }
  .modal.wide,.modal.mid{max-width:100% !important}
  .modal-head{padding:13px 14px 10px;position:sticky;top:0;background:var(--bg-1,#141a24);z-index:5}
  .modal-body{padding:13px 13px 20px;max-height:calc(94vh - 118px);-webkit-overflow-scrolling:touch}
  .modal-foot{
    padding:10px 13px calc(10px + env(safe-area-inset-bottom,0px));
    position:sticky;bottom:0;background:var(--bg-1,#141a24);z-index:5;
    flex-wrap:wrap;gap:8px;
  }
  .modal-foot .btn{flex:1 1 auto;min-width:96px}
  @keyframes mdSheet{from{transform:translateY(18px);opacity:.6}to{transform:none;opacity:1}}

  /* ---- 6. 表单：单列堆叠 ---- */
  .fld{margin-bottom:11px}
  .fld label{font-size:12px}
  .fld input,.fld select,.fld textarea{
    font-size:16px !important;   /* 16px 以下 iOS 会自动放大页面 */
    padding:10px 11px;min-height:42px;
  }
  .fld textarea{min-height:76px}
  .fld-row{display:block !important}
  .fld-row .fld{margin-bottom:11px}
  .row{display:block !important}
  .row > *{margin-bottom:10px}

  /* ---- 7. 触摸友好 ---- */
  .btn{min-height:38px;padding:9px 14px;font-size:13px}
  .btn.sm{min-height:32px;padding:6px 11px;font-size:12px}
  button,select,a{touch-action:manipulation}
  .hub-row{padding:12px}
  .hub-mod{padding:12px}
  .items-tbl input,.items-tbl select{min-height:36px}
  .toast{max-width:86vw;font-size:13px}

  /* ---- 8. 工具栏换行 ---- */
  .toolbar{flex-wrap:wrap;gap:7px;padding:9px 10px}
  .toolbar input[type=text],.toolbar input[type=search],.toolbar select{flex:1 1 46%;min-width:130px}
}

/* 极窄屏（iPhone SE 等）再收一档 */
@media (max-width: 400px) {
  .nav-item{padding:7px 9px;min-width:54px}
  .nav-item .nt{font-size:10px;max-width:56px}
  .content{padding:8px 8px 20px}
  .stat .val{font-size:19px}
}

/* ===== 移动端响应式 P0（手机与电脑同一套代码）===== */
@media (max-width: 900px) {
  /* ---- 1. 侧边栏 → 底部导航栏 ---- */
  .sidebar{
    position:fixed;left:0;right:0;bottom:0;top:auto;width:auto !important;
    height:auto;max-height:none;border-right:none;border-top:1px solid var(--line);
    z-index:70;box-shadow:0 -6px 20px rgba(0,0,0,.35);
    padding-bottom:env(safe-area-inset-bottom,0px);
  }
  .sidebar .brand,
  .sidebar .nav-group,
  .sidebar-foot,
  #app.sb-min .nav-item .nt{display:none}
  .nav{
    display:flex;flex-direction:row;align-items:stretch;gap:0;
    padding:4px 2px;overflow-x:auto;overflow-y:hidden;
    scrollbar-width:none;-webkit-overflow-scrolling:touch;
  }
  .nav::-webkit-scrollbar{display:none}
  .nav-item{
    flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;
    gap:3px;padding:7px 13px;min-width:60px;border-radius:0;position:relative;
  }
  #app.sb-min .nav-item{justify-content:center;padding:7px 13px;min-width:60px}
  .nav-item .ni{width:auto;height:auto}
  .nav-item .ni svg{width:19px;height:19px;stroke-width:1.7}
  .nav-item .nt{display:block;font-size:10.5px;line-height:1.25;white-space:nowrap;max-width:66px;overflow:hidden;text-overflow:ellipsis}
  .nav-item.active{background:transparent;color:var(--acc)}
  .nav-item.active::before{display:none}
  .nav-item em{
    position:absolute;top:3px;right:8px;font-size:9px;min-width:15px;height:15px;
    padding:0 4px;border-radius:999px;
  }
  /* 内容区给底栏让位 */
  #app{padding-bottom:58px}
  #app.sb-min{padding-bottom:58px}

  /* ---- 2. 顶栏精简 ---- */
  .main{width:100%;min-width:0}
  .topbar{padding:10px 12px 8px;position:sticky;top:0;z-index:40;background:var(--bg-1,rgba(11,16,24,.94));backdrop-filter:blur(8px)}
  .topbar h1{font-size:17px}
  .page-sub{display:none}
  .topbar-right{gap:6px}
  .topbar-right .btn{padding:7px 12px;font-size:12px}

  /* ---- 3. 内容区 ---- */
  .content{padding:10px 10px 24px;overflow-x:hidden}
  .card{padding:12px 13px;border-radius:12px}
  .stats{grid-template-columns:repeat(2,1fr) !important;gap:8px}
  .stat{padding:11px 12px}
  .sec-title{font-size:13.5px;flex-wrap:wrap;gap:8px}

  /* ---- 4. 表格：横向滚动（完整显示，不删列）---- */
  .tbl-wrap{border-radius:10px;overflow:hidden}
  .tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .items-tbl{min-width:660px}
  .items-tbl th,.items-tbl td{font-size:12px}
  /* 冻结首列，横向滑动时型号/名称不跑掉 */
  .items-tbl th:first-child,.items-tbl td:first-child{
    position:sticky;left:0;z-index:2;background:var(--bg-1,#141a24);
    box-shadow:1px 0 0 var(--line);
  }
  .items-tbl th:first-child{z-index:3}
  /* 滚动提示条 */
  .tbl-wrap::after{
    content:'';position:absolute;right:0;top:0;bottom:0;width:22px;pointer-events:none;
    background:linear-gradient(90deg,rgba(11,16,24,0),rgba(11,16,24,.9));
  }
  .tbl-wrap{position:relative}

  /* ---- 5. 弹窗 → 底部全屏抽屉 ---- */
  .modal-mask{align-items:flex-end;padding:0}
  .modal{
    width:100% !important;max-width:100% !important;max-height:94vh;
    margin:0;border-radius:16px 16px 0 0;animation:mdSheet .22s ease-out;
  }
  .modal.wide,.modal.mid{max-width:100% !important}
  .modal-head{padding:13px 14px 10px;position:sticky;top:0;background:var(--bg-1,#141a24);z-index:5}
  .modal-body{padding:13px 13px 20px;max-height:calc(94vh - 118px);-webkit-overflow-scrolling:touch}
  .modal-foot{
    padding:10px 13px calc(10px + env(safe-area-inset-bottom,0px));
    position:sticky;bottom:0;background:var(--bg-1,#141a24);z-index:5;
    flex-wrap:wrap;gap:8px;
  }
  .modal-foot .btn{flex:1 1 auto;min-width:96px}
  @keyframes mdSheet{from{transform:translateY(18px);opacity:.6}to{transform:none;opacity:1}}

  /* ---- 6. 表单：单列堆叠 ---- */
  .fld{margin-bottom:11px}
  .fld label{font-size:12px}
  .fld input,.fld select,.fld textarea{
    font-size:16px !important;   /* 16px 以下 iOS 会自动放大页面 */
    padding:10px 11px;min-height:42px;
  }
  .fld textarea{min-height:76px}
  .fld-row{display:block !important}
  .fld-row .fld{margin-bottom:11px}
  .row{display:block !important}
  .row > *{margin-bottom:10px}

  /* ---- 7. 触摸友好 ---- */
  .btn{min-height:38px;padding:9px 14px;font-size:13px}
  .btn.sm{min-height:32px;padding:6px 11px;font-size:12px}
  button,select,a{touch-action:manipulation}
  .hub-row{padding:12px}
  .hub-mod{padding:12px}
  .items-tbl input,.items-tbl select{min-height:36px}
  .toast{max-width:86vw;font-size:13px}

  /* ---- 8. 工具栏换行 ---- */
  .toolbar{flex-wrap:wrap;gap:7px;padding:9px 10px}
  .toolbar input[type=text],.toolbar input[type=search],.toolbar select{flex:1 1 46%;min-width:130px}
}

/* 极窄屏（iPhone SE 等）再收一档 */
@media (max-width: 400px) {
  .nav-item{padding:7px 9px;min-width:54px}
  .nav-item .nt{font-size:10px;max-width:56px}
  .content{padding:8px 8px 20px}
  .stat .val{font-size:19px}
}

/* ===== 移动端 P1：底部导航体验 ===== */
@media (max-width: 900px) {
  /* 右侧渐隐，暗示还能往右滑 */
  .sidebar::after{
    content:'';position:absolute;right:0;top:0;bottom:0;width:26px;pointer-events:none;
    background:linear-gradient(90deg,rgba(11,16,24,0),rgba(11,16,24,.96));
  }
  .sidebar{position:fixed}
  .nav{position:relative;z-index:1}
  /* 弹窗打开时锁背景滚动（手机上背景跟着滚很晕） */
  body:has(.modal-mask.on){overflow:hidden}
  .modal-body{overscroll-behavior:contain}
  .content{overscroll-behavior-y:contain}
}

/* ===== 原生式层级导航（手机端）===== */
.wb-back{
  display:inline-flex;align-items:center;justify-content:center;
  width:30px;height:30px;margin-right:8px;padding:0;flex:0 0 30px;
  background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:9px;
  color:var(--txt);cursor:pointer;vertical-align:-7px;
}
.wb-back:active{background:rgba(88,166,255,.18)}
.wb-back svg{width:17px;height:17px}
@media (max-width: 900px) {
  /* 二级页面隐藏底部导航（原生态：Tab 栏只在一级） */
  #app.deep .sidebar{display:none}
  #app.deep{padding-bottom:0}
  /* 转场动画 */
  @keyframes wbPush{from{opacity:.25;transform:translateX(22px)}to{opacity:1;transform:none}}
  @keyframes wbPop{from{opacity:.25;transform:translateX(-22px)}to{opacity:1;transform:none}}
  .content.wb-push{animation:wbPush .19s cubic-bezier(.22,.61,.36,1)}
  .content.wb-pop{animation:wbPop .19s cubic-bezier(.22,.61,.36,1)}
  .topbar h1{font-size:16.5px}
}

/* ===== 录入增强：步骤条 / 模板状态灯 / 字段档案条 ===== */
.entry-steps{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:0 0 12px;padding:8px 12px;border-radius:10px;
  background:linear-gradient(90deg,rgba(56,132,255,.10),rgba(56,132,255,.03));
  border:1px solid var(--line);
}
.entry-steps .es{
  font-size:12px;font-weight:600;color:var(--txt-2);
  padding:3px 10px;border-radius:999px;background:var(--bg-3);
  border:1px solid var(--line);white-space:nowrap;
}
.entry-steps .es.s1{color:var(--brand);border-color:rgba(56,132,255,.35)}
.entry-steps .es.s2{color:#8b7cff;border-color:rgba(139,124,255,.35)}
.entry-steps .es.s3{color:var(--warn);border-color:rgba(240,180,41,.35)}
.entry-steps .es.s4{color:var(--ok);border-color:rgba(38,190,127,.35)}
.entry-steps i{color:var(--txt-3);font-style:normal;font-size:12px}

/* 模板状态灯 */
.tpl-lamps{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.tpl-lamp{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:600;
  padding:4px 10px;border-radius:999px;
  border:1px solid var(--line);background:var(--bg-3);color:var(--txt-2);
  cursor:help;user-select:none;
}
.tpl-lamp i{
  width:9px;height:9px;border-radius:50%;flex:0 0 auto;
  box-shadow:0 0 0 2px rgba(0,0,0,.14);
}
.tpl-lamp.ok i{background:#26be7f;box-shadow:0 0 7px rgba(38,190,127,.85)}
.tpl-lamp.no i{background:#e5484d;box-shadow:0 0 7px rgba(229,72,77,.8)}
.tpl-lamp.ok{border-color:rgba(38,190,127,.35);color:var(--ok)}
.tpl-lamp.no{border-color:rgba(229,72,77,.35);color:#ff8085}
.tpl-lamp.ok:hover{border-color:var(--ok);background:rgba(38,190,127,.10)}
.tpl-lamp.no:hover{border-color:#e5484d;background:rgba(229,72,77,.10)}

/* 字段档案条 */
.field-profile-bar{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  margin:0 0 8px;padding:7px 11px;border-radius:9px;
  background:var(--bg-3);border:1px dashed var(--line);font-size:11.5px;
}
.field-profile-bar .fpb-step{
  font-weight:700;color:#8b7cff;letter-spacing:.4px;flex:0 0 auto;
}
.field-profile-bar .fpb-cu{font-weight:600;color:var(--txt-1)}
.field-profile-bar .fpb-pf{
  padding:2px 8px;border-radius:999px;
  background:rgba(139,124,255,.14);color:#a99cff;border:1px solid rgba(139,124,255,.3);
}
.field-profile-bar .fpb-keys{color:var(--txt-2);line-height:1.5}
.field-profile-bar .fpb-note{color:var(--txt-3);font-style:italic}

/* 粘贴表格局部聚焦提示 */
#eqItems:focus-within,#ecItems:focus-within{
  outline:2px solid rgba(56,132,255,.35);outline-offset:2px;border-radius:6px;
}
.items-tbl td[data-c]{padding:2px 3px}
.items-tbl input[data-req="1"]{border-color:rgba(240,180,41,.4)}
