:root{
  --primary:#1E9FFF;
  --primary-dark:#0B7FDB;
  --primary-light:#E7F4FF;
  --text:#1F2A37;
  --text-2:#5A6B7B;
  --text-3:#8C9AA8;
  --line:#E6EBF1;
  --bg:#F5F7FA;
  --ok:#22B573;
  --warn:#F5A623;
  --err:#E5484D;
  --drawer:160px;
  --appbar:56px;
}
*{box-sizing:border-box;-webkit-font-smoothing:antialiased;}
html,body,#app{height:100%;}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px;
}
a{color:var(--primary);text-decoration:none;}
button{font-family:inherit;}
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-thumb{background:#CDD7E1;border-radius:4px;}
::-webkit-scrollbar-track{background:transparent;}

/* ================= 登录页 ================= */
.login-page{
  position:fixed;inset:0;display:flex;overflow:hidden;background:#05192A;color:#fff;
  animation:fadeIn .5s ease both;
}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* ---- 背景网格与光晕 ---- */
.login-page .bg{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
.login-page .bg::before{
  content:"";position:absolute;inset:-60px;
  background-image:linear-gradient(rgba(122,191,255,.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(122,191,255,.06) 1px,transparent 1px);
  background-size:54px 54px;
  mask-image:radial-gradient(60% 55% at 32% 48%,#000 0%,transparent 80%);
  -webkit-mask-image:radial-gradient(60% 55% at 32% 48%,#000 0%,transparent 80%);
  animation:gridDrift 22s linear infinite;
}
@keyframes gridDrift{from{background-position:0 0,0 0}to{background-position:54px 54px,54px 54px}}
.login-page .bg .glow{position:absolute;border-radius:50%;filter:blur(70px);opacity:.5;}
.login-page .bg .g1{width:620px;height:620px;left:-160px;top:-140px;background:#0E6BA8;animation:breathe 9s ease-in-out infinite;}
.login-page .bg .g2{width:520px;height:520px;left:32%;bottom:-220px;background:#0B7FDB;opacity:.35;animation:breathe 11s ease-in-out infinite reverse;}
.login-page .bg .g3{width:360px;height:360px;right:6%;top:8%;background:#12B39B;opacity:.16;animation:breathe 13s ease-in-out infinite;}
@keyframes breathe{0%,100%{transform:scale(1);opacity:.42}50%{transform:scale(1.12);opacity:.62}}
/* 斜向扫光 */
.login-page .bg .sweep{
  position:absolute;top:-30%;left:-40%;width:38%;height:160%;
  background:linear-gradient(90deg,transparent,rgba(120,200,255,.10),transparent);
  transform:rotate(14deg);animation:sweep 9s ease-in-out infinite;
}
@keyframes sweep{0%{left:-45%;opacity:0}18%{opacity:1}55%{opacity:.5}100%{left:115%;opacity:0}}

/* ---- 左侧品牌区 ---- */
.lp-visual{
  position:relative;flex:1 1 auto;min-width:0;display:flex;flex-direction:column;
  justify-content:space-between;padding:28px 56px 20px 60px;z-index:2;
}
.lp-top{display:flex;align-items:center;gap:12px;}
.lp-logo{
  width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto;
  background:linear-gradient(145deg,#2EA8FF,#0B63A8);
  box-shadow:0 10px 24px -12px rgba(46,168,255,.9);
  position:relative;
}
.lp-logo::after{
  content:"";position:absolute;inset:-5px;border-radius:16px;
  border:1px solid rgba(90,190,255,.35);animation:halo 3.4s ease-out infinite;
}
@keyframes halo{0%{transform:scale(.9);opacity:.9}70%{transform:scale(1.18);opacity:0}100%{opacity:0}}
.lp-logo svg{width:24px;height:24px;}
.lp-logo-chip{
  position:relative;display:inline-flex;align-items:center;flex:0 0 auto;padding:2px 0;
}
.lp-logo-chip img{display:block;height:44px;width:auto;filter:drop-shadow(0 6px 18px rgba(0,0,0,.45));}
.lp-logo-ring{
  position:absolute;inset:-5px;border-radius:19px;border:1px solid rgba(120,200,255,.4);
  animation:halo 3.6s ease-out infinite;pointer-events:none;
}
.lp-brand b{display:block;font-size:19px;letter-spacing:5px;font-weight:700;line-height:1.2;}
.lp-brand span{display:block;font-size:10.5px;letter-spacing:2.6px;color:rgba(180,214,240,.62);margin-top:3px;}
.lp-badge{
  margin-left:auto;display:inline-flex;align-items:center;gap:7px;font-size:13px;
  color:#BFE2FF;background:rgba(30,159,255,.10);border:1px solid rgba(90,180,255,.28);
  padding:7px 13px;border-radius:999px;white-space:nowrap;
}
.lp-badge i{width:6px;height:6px;border-radius:50%;background:#2FD3A5;box-shadow:0 0 0 0 rgba(47,211,165,.7);animation:dotPulse 2s infinite;}
@keyframes dotPulse{0%{box-shadow:0 0 0 0 rgba(47,211,165,.55)}70%{box-shadow:0 0 0 9px rgba(47,211,165,0)}100%{box-shadow:0 0 0 0 rgba(47,211,165,0)}}

.lp-copy-main{position:relative;padding:6px 0 0;}
/* 甲缩醛分子结构（装饰） */
.lp-molecule{
  position:absolute;right:0;top:10px;width:200px;height:auto;pointer-events:none;
  opacity:.9;animation:molFloat 7s ease-in-out infinite;
  filter:drop-shadow(0 8px 20px rgba(0,20,40,.5));
}
@keyframes molFloat{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-9px) rotate(1.2deg)}}

/* ---- 手机端紧凑场景（桌面隐藏） ---- */
.lp-mhero{display:none;}

/* ---- 化工生产装置（中部右侧动态） ---- */
.lp-plant{
  position:absolute;right:28px;top:16.5%;width:min(430px,40%);
  pointer-events:none;z-index:1;animation:floatY 9s ease-in-out infinite;
}
.lp-plant svg{
  display:block;width:100%;height:auto;overflow:visible;
  filter:drop-shadow(0 14px 30px rgba(0,18,38,.5));
}
.lp-plant .scene-chip{position:absolute;animation:floatY 6s ease-in-out infinite;}
.plant-chip.p1{left:42%;top:44%;}
.plant-chip.p2{left:-1%;top:6%;animation-delay:.9s;}
.plant-chip.p3{right:2%;top:30%;animation-delay:1.6s;}
.pl-spin{transform-box:fill-box;transform-origin:center;animation:spin 2.6s linear infinite;}
.pl-flame{transform-box:fill-box;transform-origin:50% 100%;animation:flameFlick 1.1s ease-in-out infinite;}
@keyframes flameFlick{
  0%,100%{transform:scale(1,1);opacity:.95}
  30%{transform:scale(1.14,.86)}
  55%{transform:scale(.9,1.16);opacity:.82}
  80%{transform:scale(1.07,.93)}
}
.pl-glow{transform-box:fill-box;transform-origin:center;animation:glowPulse 2.2s ease-in-out infinite;}
@keyframes glowPulse{0%,100%{opacity:.12;transform:scale(1)}50%{opacity:.26;transform:scale(1.25)}}
.pl-steam{transform-box:fill-box;animation:steamUp 3.4s ease-out infinite;}
@keyframes steamUp{0%{transform:translateY(0) scale(.8);opacity:0}22%{opacity:.5}100%{transform:translateY(-30px) scale(1.5);opacity:0}}
.mol-bond{stroke-dasharray:6 5;animation:dashFlow 1.4s linear infinite;}
.mol-atom circle{animation:atomPulse 3.2s ease-in-out infinite;}
.mol-atom circle:nth-of-type(2){animation-delay:.5s;}
.mol-atom circle:nth-of-type(3){animation-delay:1s;}
.mol-atom circle:nth-of-type(4){animation-delay:1.5s;}
@keyframes atomPulse{0%,100%{stroke-opacity:1}50%{stroke-opacity:.35}}

/* ---- 工艺流程带 ---- */
.lp-flow{display:flex;align-items:center;max-width:640px;margin-top:14px;gap:0;}
.fl-node{
  display:flex;align-items:center;gap:6px;padding:8px 11px;border-radius:8px;
  background:rgba(9,42,68,.72);border:1px solid rgba(90,175,240,.3);
  font-size:12.5px;color:#D6EBFF;white-space:nowrap;backdrop-filter:blur(6px);
  animation:lcIn .8s cubic-bezier(.22,.9,.28,1) both;
}
.fl-node:nth-child(1){animation-delay:.1s}.fl-node:nth-child(3){animation-delay:.2s}
.fl-node:nth-child(5){animation-delay:.3s}.fl-node:nth-child(7){animation-delay:.4s}
.fl-node:nth-child(9){animation-delay:.5s}
.fl-node i{font-style:normal;font-size:14px;line-height:1;}
.fl-node em{font-style:normal;font-size:10.5px;color:#7FC4F5;letter-spacing:.5px;}
.fl-node.final{
  background:linear-gradient(120deg,#FFDA80,#FFC53D);color:#12283C;font-weight:700;
  border-color:rgba(255,197,61,.9);animation:lcIn .8s both .5s, hotPulse 2.6s ease-out infinite;
}
.fl-node.final em{color:#7A3E00;}
.fl-link{
  flex:1 1 0;min-width:18px;height:2px;position:relative;
  background:linear-gradient(90deg,rgba(111,199,255,.15),rgba(111,199,255,.65),rgba(111,199,255,.15));
}
.lp-kicker{
  display:inline-flex;align-items:center;gap:8px;font-size:13px;letter-spacing:1.6px;
  color:#7FC4F5;margin-bottom:16px;
}
.lp-kicker::before{content:"";width:26px;height:2px;background:linear-gradient(90deg,#2EA8FF,transparent);}
.lp-copy-main h1{
  margin:0;font-size:40px;line-height:1.18;letter-spacing:2px;font-weight:700;
  background:linear-gradient(100deg,#FFFFFF 20%,#A9D8FF 92%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.lp-copy-main h1 em{font-style:normal;color:#FFC53D;-webkit-text-fill-color:#FFC53D;position:relative;}
.lp-copy-main p{margin:10px 0 0;font-size:14px;line-height:1.9;color:rgba(178,205,226,.8);max-width:520px;}

/* ---- 化工场景插画 ---- */
.lp-scene{position:relative;margin:2px 0 0;max-width:640px;}
.lp-scene svg{display:block;width:100%;height:auto;overflow:visible;}
.pipe-flow{stroke-dasharray:14 16;animation:dashFlow 1.6s linear infinite;}
@keyframes dashFlow{to{stroke-dashoffset:-30}}
.wave{animation:waveMove 5s linear infinite;}
.wave-r{animation:waveMoveR 7.5s linear infinite;}
@keyframes waveMove{from{transform:translateX(0)}to{transform:translateX(-80px)}}
@keyframes waveMoveR{from{transform:translateX(-80px)}to{transform:translateX(0)}}
.valve{transform-origin:center;animation:valveSpin 6s ease-in-out infinite;}
@keyframes valveSpin{0%,60%,100%{transform:rotate(0)}75%{transform:rotate(120deg)}}
.led{animation:ledBlink 2.4s ease-in-out infinite;filter:drop-shadow(0 0 3px rgba(47,211,165,.9)) drop-shadow(0 0 7px rgba(47,211,165,.4));}
.led.d1{animation-delay:.2s}.led.d2{animation-delay:.9s}.led.d3{animation-delay:1.5s}
@keyframes ledBlink{0%,100%{opacity:1}50%{opacity:.3}}
.truck-wheel{animation:wheelSpin 3.2s linear infinite;transform-box:fill-box;transform-origin:center;}
@keyframes wheelSpin{to{transform:rotate(360deg)}}
.truck{animation:truckBob 4.5s ease-in-out infinite;}
@keyframes truckBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}

/* 场景上的浮动信息卡 */
.scene-chip{
  position:absolute;display:flex;align-items:center;gap:8px;font-size:12.5px;
  padding:7px 11px;border-radius:8px;color:#D6EBFF;white-space:nowrap;
  background:rgba(9,42,68,.82);border:1px solid rgba(90,175,240,.3);
  backdrop-filter:blur(6px);animation:floatY 5.5s ease-in-out infinite;
}
.scene-chip b{font-weight:600;color:#fff;}
.scene-chip .k{color:#7FC4F5;font-size:11.5px;letter-spacing:.5px;}
.scene-chip i{width:6px;height:6px;border-radius:50%;background:#2FD3A5;flex:0 0 auto;}
.scene-chip.warn i{background:#FFC53D;}
.scene-chip.c1{right:2%;top:2%;animation-delay:.3s;}
.scene-chip.c2{right:10%;bottom:16%;animation-delay:1.4s;}
.scene-chip.c3{left:0;bottom:6%;animation-delay:.8s;}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}

/* ---- 产品跑马灯 ---- */
.lp-mq{max-width:640px;margin-top:15px;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);}
.lp-mq-track{display:flex;width:max-content;animation:mqMove 30s linear infinite;}
.lp-mq:hover .lp-mq-track{animation-play-state:paused;}
.mq-half{display:flex;align-items:center;gap:9px;padding-right:9px;}
.mq-half span{
  display:inline-flex;align-items:center;gap:6px;white-space:nowrap;
  font-size:12.5px;letter-spacing:.7px;color:#A9CBE6;padding:5px 12px;border-radius:999px;
  border:1px solid rgba(120,180,230,.22);background:rgba(28,116,186,.14);
}
.mq-half span.hot{
  color:#12283C;font-weight:700;border-color:rgba(255,197,61,.85);
  background:linear-gradient(120deg,#FFDA80,#FFC53D);
  animation:hotPulse 2.6s ease-out infinite;
}
.mq-half span.hot i{
  font-style:normal;font-size:10px;font-weight:700;letter-spacing:.5px;color:#7A3E00;
  background:rgba(255,255,255,.55);border-radius:4px;padding:1px 4px;
}
@keyframes mqMove{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes hotPulse{0%{box-shadow:0 0 0 0 rgba(255,197,61,.5)}70%{box-shadow:0 0 0 11px rgba(255,197,61,0)}100%{box-shadow:0 0 0 0 rgba(255,197,61,0)}}

/* ---- 实时指标卡 ---- */
.lp-live{display:flex;gap:10px;max-width:640px;margin-top:14px;}
.lc{
  flex:1 1 0;min-width:0;padding:10px 13px 12px;border-radius:10px;
  background:linear-gradient(160deg,rgba(28,92,138,.40),rgba(8,38,62,.55));
  border:1px solid rgba(90,175,240,.22);backdrop-filter:blur(6px);
  animation:lcIn .8s cubic-bezier(.22,.9,.28,1) both;
}
.lc:nth-child(2){animation-delay:.09s;}
.lc:nth-child(3){animation-delay:.18s;}
@keyframes lcIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.lc-k{font-size:11.5px;letter-spacing:.6px;color:#8FB9D8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lc-v{display:flex;align-items:baseline;gap:1px;margin:5px 0 9px;font-size:20px;font-weight:700;
  color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.5px;}
.lc-v i{font-style:normal;font-size:11.5px;color:#7FC4F5;font-weight:500;margin-right:5px;}
.lc-v em{font-style:normal;color:rgba(140,180,210,.45);margin:0 4px;}
.lc-track{height:3px;border-radius:2px;background:rgba(120,180,230,.16);overflow:hidden;}
.lc-fill{
  height:100%;width:0;border-radius:2px;
  background:linear-gradient(90deg,#2EA8FF,#8FDCFF);
  box-shadow:0 0 10px rgba(46,168,255,.75);
  animation:fillIn 1.5s cubic-bezier(.2,.8,.2,1) .35s forwards, barGlow 2.8s ease-in-out infinite;
}
.lc-fill.teal{background:linear-gradient(90deg,#12B39B,#5CEBC9);box-shadow:0 0 10px rgba(47,211,165,.7);}
.lc-fill.gold{background:linear-gradient(90deg,#FFC53D,#FFE9B0);box-shadow:0 0 10px rgba(255,197,61,.65);}
@keyframes fillIn{from{width:0}to{width:var(--v,60%)}}
@keyframes barGlow{0%,100%{opacity:1}50%{opacity:.62}}

/* ---- 数据条 ---- */
.lp-stats{display:flex;gap:0;border-top:1px solid rgba(120,180,230,.16);padding-top:13px;max-width:640px;}
.lp-stats > div{flex:1;position:relative;padding-left:16px;}
.lp-stats > div + div::before{content:"";position:absolute;left:0;top:6px;bottom:4px;width:1px;background:rgba(120,180,230,.16);}
.lp-stats b{display:flex;align-items:baseline;gap:4px;font-size:24px;font-weight:700;letter-spacing:.5px;color:#fff;font-variant-numeric:tabular-nums;}
.lp-stats b i{font-style:normal;font-size:13px;color:#7FC4F5;font-weight:500;transform:translateY(-1px);}
.lp-stats span{display:block;font-size:12.5px;color:rgba(150,190,220,.72);margin-top:4px;letter-spacing:.6px;}

/* ---- 右侧登录区：深空玻璃面板（与左侧 hero 同一片深蓝，扁平工业风） ---- */
.lp-form{
  position:relative;flex:0 0 452px;z-index:3;display:flex;
  padding:0 52px;overflow-y:auto;
  background:
    radial-gradient(130% 60% at 50% -8%,rgba(30,120,190,.32),transparent 70%),
    radial-gradient(90% 50% at 108% 108%,rgba(18,179,155,.12),transparent 70%),
    linear-gradient(200deg,#0B2A44 0%,#082236 58%,#061A2B 100%);
  box-shadow:-24px 0 60px -40px rgba(0,10,25,.9);
}
/* 左缘：发光细线（青→金），替换原来的三色彩条 */
.lp-form::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:1px;
  background:linear-gradient(180deg,rgba(111,199,255,.75),rgba(111,199,255,.16) 45%,rgba(255,197,61,.3));
}
/* 蓝图网格纹理（径向淡出，只在中部可见） */
.lpf-grid{
  position:absolute;inset:0;pointer-events:none;
  background-image:
    linear-gradient(rgba(111,199,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(111,199,255,.05) 1px,transparent 1px);
  background-size:34px 34px;
  -webkit-mask-image:radial-gradient(85% 72% at 50% 42%,#000 28%,transparent 100%);
          mask-image:radial-gradient(85% 72% at 50% 42%,#000 28%,transparent 100%);
}
/* 分子结构水印：压在右下角，化工身份符号 */
.lpf-mol{position:absolute;right:-34px;bottom:6px;width:300px;opacity:.13;pointer-events:none;}
.lp-card{width:100%;max-width:352px;margin:auto;padding:26px 0 8px;position:relative;animation:cardIn .7s cubic-bezier(.22,.9,.28,1) both;}
@keyframes cardIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
/* 运行状态徽章：绿点呼吸 + 玻璃胶囊 */
.lp-status{
  display:inline-flex;align-items:center;gap:7px;font-size:12px;letter-spacing:.6px;color:#8FD6B4;
  padding:5px 12px;border-radius:999px;border:1px solid rgba(47,211,165,.32);background:rgba(47,211,165,.08);
}
.lp-status i{width:6px;height:6px;border-radius:50%;background:#2FD3A5;box-shadow:0 0 8px rgba(47,211,165,.9);animation:lpPulse 2.2s ease-in-out infinite;}
.lp-status .dot{color:#4E7B96;}
@keyframes lpPulse{0%,100%{opacity:1}50%{opacity:.35}}
.lp-eyebrow{font-size:12.5px;letter-spacing:2.4px;color:#7FA8C8;text-transform:uppercase;}
.lp-card h2{margin:10px 0 6px;font-size:26px;letter-spacing:1.5px;color:#fff;font-weight:700;}
.lp-card .sub{font-size:13.5px;color:#8FB2CC;margin:0 0 20px;letter-spacing:.3px;}

.lp-field{position:relative;margin-bottom:16px;}
.lp-field label{display:block;font-size:13px;color:#9CC0D9;margin-bottom:7px;letter-spacing:.4px;}
.lp-field .box{
  position:relative;display:flex;align-items:center;height:46px;border-radius:8px;
  background:rgba(14,52,84,.55);border:1px solid rgba(110,180,240,.22);backdrop-filter:blur(6px);
  transition:border-color .18s,background .18s,box-shadow .18s;
}
.lp-field .box:focus-within{background:rgba(18,62,98,.72);border-color:#3FB0FF;box-shadow:0 0 0 4px rgba(46,168,255,.14);}
.lp-field .icon{position:absolute;left:14px;color:#7FA8C8;display:flex;}
.lp-field input{
  flex:1;height:100%;border:0;background:transparent;outline:none;font-size:15px;color:#fff;
  padding:0 14px 0 42px;font-family:inherit;
}
.lp-field input::placeholder{color:#6C8FAB;}
.lp-eye{
  border:0;background:none;padding:0 12px;height:100%;cursor:pointer;color:#7FA8C8;display:flex;align-items:center;
}
.lp-eye:hover{color:#5FC3FF;}
.lp-row{display:flex;align-items:center;justify-content:space-between;margin:2px 0 18px;font-size:13.5px;color:#8FB2CC;}
.lp-row label{display:flex;align-items:center;gap:7px;cursor:pointer;user-select:none;}
.lp-row input[type=checkbox]{width:14px;height:14px;accent-color:#3FB0FF;cursor:pointer;}
.lp-row a{color:#5FC3FF;}

.lp-btn{
  position:relative;width:100%;height:48px;border:0;border-radius:8px;cursor:pointer;overflow:hidden;
  background:linear-gradient(96deg,#1E9FFF,#0B84E8);color:#fff;font-size:16px;letter-spacing:6px;text-indent:6px;
  font-weight:600;transition:transform .12s,box-shadow .2s,filter .2s;
  box-shadow:0 12px 24px -14px rgba(30,159,255,.95);
}
.lp-btn:hover{filter:brightness(1.06);box-shadow:0 16px 28px -14px rgba(30,159,255,1);}
.lp-btn:active{transform:translateY(1px) scale(.998);}
.lp-btn[disabled]{opacity:.82;cursor:default;}
.lp-btn::after{
  content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.42),transparent);
  transform:skewX(-18deg);animation:btnShine 3.6s ease-in-out infinite;
}
@keyframes btnShine{0%{left:-60%}45%{left:120%}100%{left:120%}}
.lp-btn .spin{
  display:none;width:15px;height:15px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;
  border-radius:50%;animation:spin .7s linear infinite;vertical-align:-2px;margin-right:6px;
}
.lp-btn.loading .spin{display:inline-block;}
@keyframes spin{to{transform:rotate(360deg)}}

.lp-safe{
  margin-top:20px;padding:11px 13px;border-radius:8px;
  background:rgba(255,197,61,.10);border-left:3px solid rgba(255,197,61,.85);
  font-size:12.5px;line-height:1.7;color:#E9D29C;
}
.lp-safe b{color:#FFD54F;}
/* 三枚能力徽章：扁平玻璃小卡，压住面板中段 */
.lp-badges{display:flex;gap:8px;margin-top:14px;}
.lp-badges span{
  flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:11.5px;color:#9CC0D9;letter-spacing:.4px;padding:8px 4px;border-radius:8px;
  border:1px solid rgba(110,180,240,.16);background:rgba(14,52,84,.35);
}
.lp-badges svg{width:13px;height:13px;color:#5FC3FF;flex:none;}
/* 化学式压底：化工身份的小签名 */
.lp-formula{margin-top:14px;text-align:center;font-family:'SF Mono',ui-monospace,monospace;font-size:11px;letter-spacing:2px;color:#5E86A6;}
.lp-foot{margin-top:10px;text-align:center;font-size:12px;color:#6E90AB;letter-spacing:.3px;}
.lp-icp{margin-top:6px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px;font-size:11.5px;}
.lp-icp a{display:inline-flex;align-items:center;gap:4px;color:#6E90AB;text-decoration:none;}
.lp-icp a:hover{text-decoration:underline;}
.lp-icp img{width:13px;height:13px;flex:none;display:block;opacity:.9;}
.lp-icp .lp-icp-sep{color:#C2D0DC;}

/* ICP / 公安联网备案：仅挂在「网站首页（登录页）」底部中央并向备案系统链接；
   登录进入系统内页后不展示（法规只要求主页底部，内页无强制，界面更干净） */
#icpbar{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px;padding:0 8px calc(2px + env(safe-area-inset-bottom));font-size:11px;line-height:15px;color:#9AA6B2;z-index:60;pointer-events:none;}
#icpbar a{display:inline-flex;align-items:center;gap:4px;color:#9AA6B2;text-decoration:none;pointer-events:auto;}
#icpbar a:hover{color:#5E7A8F;text-decoration:underline;}
#icpbar .icp-sep{color:#C7D0D9;pointer-events:none;}
#icpbar img{width:14px;height:14px;flex:none;display:block;opacity:.85;}
#icpbar a:hover img{opacity:1;}
/* 已登录：进入系统内页，隐藏备案条 */
body.authed #icpbar{display:none;}
/* 登录页是深蓝渐变背景，这里换成白色半透明，保证备案号清晰可读 */
body:not(.authed) #icpbar{color:rgba(255,255,255,.66);text-shadow:0 1px 2px rgba(8,26,46,.35);}
body:not(.authed) #icpbar a{color:rgba(255,255,255,.66);}
body:not(.authed) #icpbar a:hover{color:#fff;}
body:not(.authed) #icpbar .icp-sep{color:rgba(255,255,255,.32);}
body:not(.authed) #icpbar img{opacity:1;}

/* ---- 矮屏 ---- */
@media (max-height:760px){
  .lp-visual{padding:26px 48px 22px 54px;}
  .lp-copy-main h1{font-size:34px;}
  .lp-copy-main p{margin-top:10px;font-size:13.5px;line-height:1.7;}
  .lp-mq{margin-top:11px;}
  .lp-live{margin-top:10px;}
  .lc{padding:8px 11px 10px;}
  .lc-v{font-size:17px;margin:3px 0 7px;}
  .lp-scene{max-width:560px;}
  .lp-plant{width:min(370px,36%);top:18%;}
  .lp-stats b{font-size:20px;}
  .lp-card{padding:16px 0 6px;}
  .lp-card h2{font-size:22px;margin:8px 0 4px;}
  .lp-card .sub{margin-bottom:16px;}
  .lp-field{margin-bottom:12px;}
  .lp-field .box{height:42px;}
  .lp-row{margin:2px 0 16px;}
  .lp-btn{height:44px;}
  .lp-safe{margin-top:16px;padding:9px 12px;}
  .lp-badges{margin-top:11px;}
  .lp-badges span{padding:6px 4px;}
  .lp-formula{margin-top:11px;}
  .lp-foot{margin-top:8px;}
}
@media (max-height:640px){
  .lp-safe{display:none;}
  .lp-badges,.lp-formula{display:none;}
}
@media (max-height:700px){
  .lp-visual{padding:24px 48px 18px 54px;}
  .lp-logo-chip img{height:38px;}
  .lp-kicker{margin-bottom:8px;}
  .lp-copy-main h1{font-size:28px;}
  .lp-copy-main p{margin-top:7px;font-size:13px;line-height:1.6;}
  .lp-mq{margin-top:8px;}
  .lp-live{margin-top:8px;}
  .lp-flow{margin-top:9px;}
  .fl-node{padding:5px 8px;font-size:11.5px;gap:5px;}
  .fl-node i{font-size:12px;}
  .lp-molecule{width:140px;top:0;opacity:.65;}
  .lc{padding:7px 11px 8px;}
  .lc-v{font-size:16px;margin:2px 0 5px;}
  .lp-scene{max-width:430px;}
  .lp-plant{display:none;}
  .lp-stats{display:none;}
}

/* ---- 窄屏 ---- */
@media (max-width:1180px){
  .lp-visual{padding:32px 36px;}
  .lp-copy-main h1{font-size:36px;}
  .lp-form{flex-basis:404px;padding:0 36px;}
}
@media (max-width:900px){
  .login-page{display:block;overflow-y:auto;overflow-x:hidden;background:#05192A;-webkit-overflow-scrolling:touch;}
  .login-page .bg .glow{filter:blur(52px);}
  .login-page .bg .g1{width:420px;height:420px;left:-160px;top:-160px;}
  .login-page .bg .g2{width:360px;height:360px;left:20%;bottom:-180px;}

  /* 顶部品牌 hero */
  .lp-visual{
    display:flex;flex-direction:column;justify-content:flex-start;min-height:0;
    padding:16px 18px 0;
  }
  .lp-top{gap:9px;}
  .lp-logo-chip img{height:31px;}
  .lp-badge{font-size:11px;padding:5px 9px;gap:5px;margin-left:auto;}
  .lp-badge i{width:5px;height:5px;}
  .lp-copy-main{padding:15px 0 0;}
  .lp-molecule{width:108px;right:-4px;top:2px;opacity:.5;}
  .lp-kicker{font-size:11.5px;letter-spacing:1.2px;margin-bottom:8px;max-width:66%;line-height:1.6;}
  .lp-copy-main h1{font-size:26px;line-height:1.28;letter-spacing:.5px;max-width:72%;}
  .lp-copy-main h1 em{font-size:26px;}
  .lp-copy-main p{display:none;}
  .lp-mq{margin-top:13px;max-width:100%;}
  .mq-half span{font-size:11.5px;padding:4px 9px;}
  .lp-live,.lp-flow,.lp-stats,.lp-plant,.lp-scene{display:none;}
  .lp-mhero{display:block;margin:13px -4px 0;}
  .lp-mhero svg{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 10px 22px rgba(0,16,32,.45));}

  /* 登录面板：深色玻璃，与上方场景融为一体（桌面新增的装饰层在手机端全部收起） */
  .lpf-grid,.lpf-mol,.lp-status,.lp-badges,.lp-formula{display:none;}
  .lp-form{
    position:relative;display:block;flex:none;width:100%;margin:4px 0 0;overflow:visible;
    background:
      radial-gradient(120% 70% at 50% 0%,rgba(30,120,190,.26),transparent 72%),
      linear-gradient(180deg,rgba(8,36,60,.35),rgba(5,25,42,.97) 150px);
    padding:18px 20px calc(26px + env(safe-area-inset-bottom));
    box-shadow:none;
  }
  .lp-form::before{
    content:"";display:block;position:absolute;left:18px;right:18px;top:0;height:1px;
    background:linear-gradient(90deg,transparent,rgba(120,205,255,.5),transparent);
  }
  .lp-card{max-width:430px;margin:0 auto;padding:0;animation:none;}
  .lp-eyebrow{text-align:center;font-size:11px;letter-spacing:2.4px;color:#77A5C7;}
  .lp-card h2{margin:7px 0 4px;font-size:21px;text-align:center;letter-spacing:1.5px;color:#fff;}
  .lp-card .sub{margin:0 0 16px;font-size:12.5px;text-align:center;color:#8FB2CC;}
  .lp-field{margin-bottom:13px;}
  .lp-field label{font-size:12.5px;margin-bottom:6px;color:#9CC0D9;}
  .lp-field .box{
    height:46px;border-radius:10px;background:rgba(14,52,84,.55);
    border:1px solid rgba(110,180,240,.22);backdrop-filter:blur(6px);
  }
  .lp-field .box:focus-within{background:rgba(18,62,98,.72);border-color:#3FB0FF;box-shadow:0 0 0 4px rgba(46,168,255,.14);}
  .lp-field input{font-size:17px;padding-left:41px;color:#fff;}
  .lp-field input::placeholder{color:#6C8FAB;}
  .lp-field .icon,.lp-eye{color:#7FA8C8;}
  .lp-eye:hover{color:#5FC3FF;}
  .lp-row{margin:0 0 16px;font-size:13.5px;color:#8FB2CC;}
  .lp-row a{color:#5FC3FF;}
  .lp-row input[type=checkbox]{accent-color:#3FB0FF;}
  .lp-btn{height:48px;border-radius:10px;letter-spacing:4px;text-indent:4px;}
  .lp-safe{
    margin-top:16px;font-size:11.5px;line-height:1.65;padding:9px 11px;border-radius:8px;
    background:rgba(255,197,61,.10);border-left:3px solid rgba(255,197,61,.85);color:#E9D29C;
  }
  .lp-safe b{color:#FFD54F;}
  .lp-foot{margin-top:14px;font-size:11px;line-height:1.6;color:#6E90AB;}
}
@media (max-width:380px){
  .lp-copy-main h1,.lp-copy-main h1 em{font-size:23px;}
  .lp-molecule{display:none;}
  .lp-form{padding-left:16px;padding-right:16px;}
}

/* ================= 主框架 ================= */
.layout{display:flex;height:100%;}
.drawer{
  width:var(--drawer);flex:0 0 var(--drawer);
  background:linear-gradient(180deg,#1E88E5 0%,#1976D2 46%,#1565C0 100%);
  display:flex;flex-direction:column;height:100%;position:relative;
  box-shadow:4px 0 18px -10px rgba(13,71,131,.45);
}
.drawer::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(220px 160px at 18% 2%,rgba(255,255,255,.14),transparent 70%),
    radial-gradient(260px 200px at 100% 100%,rgba(255,255,255,.08),transparent 70%);
}
.drawer > *{position:relative;}
.drawer-head{
  height:var(--appbar);display:flex;align-items:center;gap:8px;padding:0 10px;
  border-bottom:1px solid rgba(255,255,255,.18);flex:0 0 auto;
}
.drawer-head .mark{
  height:auto;padding:2px 0;border-radius:0;display:grid;place-items:center;
  background:transparent;flex:0 0 auto;
}
.drawer-head .mark img{display:block;height:23px;width:auto;}
.drawer-head b{font-size:15.5px;letter-spacing:1px;color:#fff;}
.drawer-head span{font-size:11px;color:rgba(255,255,255,.62);letter-spacing:.5px;}
.nav{overflow-y:auto;padding:10px 0 24px;flex:1;position:relative;}
.nav::-webkit-scrollbar{width:8px;}
.nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:4px;}
.nav::-webkit-scrollbar-track{background:transparent;}
.nav-group{margin:0 5px 2px;}
.nav-group-head{
  display:flex;align-items:center;gap:7px;padding:8px 6px;cursor:pointer;
  color:rgba(255,255,255,.94);font-size:14.5px;user-select:none;
  border-radius:8px;position:relative;transition:background .16s;
}
.nav-group-head .ng-icon{
  width:29px;height:29px;flex:0 0 29px;display:grid;place-items:center;
  color:rgba(255,255,255,.78);
  transition:transform .16s,color .16s;
}
.ng-icon .mi-g{width:21px;height:21px;display:block;}
.nav-group-head:hover .ng-icon{transform:translateY(-1px) scale(1.06);color:#fff;}
.nav-group-head .ng-label{flex:1;letter-spacing:.3px;white-space:nowrap;}
.nav-group-head .ng-count{
  font-size:11px;color:rgba(255,255,255,.6);background:rgba(255,255,255,.13);
  padding:2px 7px;border-radius:9px;letter-spacing:0;
}
.nav-group-head:hover{background:rgba(255,255,255,.10);}
.nav-group-head.active{
  background:linear-gradient(90deg,rgba(6,44,86,.55),rgba(6,44,86,.16));color:#fff;
}
.nav-group-head.active .ng-icon{background:none;color:#FFD54F;}
.nav-group-head.active::before{
  content:"";position:absolute;left:-5px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;
  background:#FFD54F;box-shadow:0 0 8px rgba(255,213,79,.75);
}
.nav-group-head .chev{font-size:10px;color:rgba(255,255,255,.42);transition:transform .18s;}
.nav-group-head.open .chev{transform:rotate(90deg);}
.nav-group-head.open{background:rgba(255,255,255,.10);}
/* 触屏（平板 / 手机）：一级菜单点一下直接进主页面，「▸」放大成独立的子菜单开关 */
@media (pointer: coarse){
  .nav-group-head{padding:10px 6px;}
  .nav-group-head:active{background:rgba(255,255,255,.16);}
  .nav-group-head .chev{
    font-size:13px;color:rgba(255,255,255,.62);
    padding:9px 8px;margin:-9px -6px -9px 0;border-radius:7px;
  }
  .nav-group-head .chev:active{background:rgba(255,255,255,.2);}
}
/* 触屏（平板 / 手机）：子菜单列表加大点按区域 + 按下反馈，浮层不超出屏幕 */
@media (hover: none),(pointer: coarse){
  .nav-group-head .chev{background:rgba(255,255,255,.14);}
  .nav-flyout .nav-item{padding:13px 12px;font-size:15px;}
  .nav-flyout .nav-item:active{background:#E8F3FF;color:#1E88E5;}
  .nav-flyout .nav-item:active .fi-ic{color:#1E88E5;}
  .nav-flyout .fi-add{padding:7px 14px;font-size:13px;}
  .nav-flyout{box-shadow:0 18px 44px -12px rgba(20,60,110,.45);}
}
/* 弹出子菜单（白底卡片式，悬停自动展开） */
.nav-flyout{
  position:absolute;left:calc(var(--drawer) - 5px);width:252px;z-index:80;
  background:#fff;border:1px solid #E3EAF2;border-radius:0 8px 8px 8px;
  box-shadow:0 16px 36px -10px rgba(20,60,110,.30);padding:6px;
  animation:flyIn .15s ease-out;
  max-height:calc(100vh - 20px);overflow-y:auto;overscroll-behavior:contain;
}
.nav-flyout.wide{width:504px;}
@keyframes flyIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
.fly-list{display:flex;flex-direction:column;}
.fly-list.cols-2{display:grid;grid-template-columns:1fr 1fr;column-gap:6px;}
.nav-flyout .nav-item{
  display:flex;align-items:center;gap:10px;padding:10px 12px;font-size:14px;
  color:#2B3A4B;cursor:pointer;border-radius:6px;transition:background .13s,color .13s;
}
.nav-flyout .nav-item:hover{background:#F2F8FF;color:#1E88E5;}
.nav-flyout .nav-item.active{background:#E8F3FF;color:#1E88E5;font-weight:600;}
.nav-flyout .fi-ic{width:20px;flex:0 0 20px;display:grid;place-items:center;color:#7D8D9E;transition:color .13s;}
.nav-flyout .fi-ic .mi-i{width:17px;height:17px;display:block;}
.nav-flyout .nav-item:hover .fi-ic,
.nav-flyout .nav-item.active .fi-ic{color:#1E88E5;}
.nav-flyout .fi-lb{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fi-add{
  flex:0 0 auto;background:#00C777;color:#fff;font-size:12px;line-height:1;
  padding:5px 12px;border-radius:4px;cursor:pointer;box-shadow:0 2px 6px -2px rgba(0,150,90,.8);
}
.fi-add:hover{background:#00B578;}

/* 工作区页签 */
.ws-tabs{
  display:flex;align-items:flex-end;gap:6px;padding:8px 16px 0;background:#fff;
  border-bottom:1px solid var(--line);overflow-x:auto;flex:0 0 auto;scrollbar-width:none;
}
.ws-tabs::-webkit-scrollbar{display:none;}
.ws-home{
  width:34px;height:32px;border:1px solid #E1E8EF;background:#F5F8FB;border-radius:5px;cursor:pointer;
  color:var(--text-2);font-size:16px;flex:0 0 34px;
}
.ws-home:hover{color:#1E9FFF;border-color:#1E9FFF;}
.ws-tab{
  display:flex;align-items:center;gap:7px;height:32px;padding:0 12px;cursor:pointer;flex:0 0 auto;
  background:#F2F5F8;border:1px solid #E1E8EF;border-bottom:none;border-radius:6px 6px 0 0;
  font-size:13.5px;color:var(--text-2);position:relative;top:1px;
}
.ws-tab:hover{color:var(--text);}
.ws-tab.active{
  background:#fff;color:var(--primary-dark);font-weight:600;border-color:#D5DEE7;
  border-bottom:2px solid #fff;
}
.ws-tab .wt-x{font-size:11px;color:#A8B6C4;padding:2px;border-radius:3px;}
.ws-tab .wt-x:hover{background:#E5484D;color:#fff;}
.drawer-mask{
  display:none;position:fixed;inset:0;background:rgba(10,25,40,.5);z-index:88;
}

.main{flex:1;display:flex;flex-direction:column;min-width:0;height:100%;}
.appbar{
  height:var(--appbar);background:#fff;border-bottom:1px solid var(--line);
  display:flex;align-items:center;padding:0 20px;gap:14px;flex:0 0 auto;
}
.appbar .crumb{font-size:14px;color:var(--text-3);}
.appbar .crumb b{color:var(--text);font-weight:600;font-size:15px;}
.appbar .spacer{flex:1;}
.appbar .icon-btn{
  width:34px;height:34px;border-radius:50%;display:grid;place-items:center;cursor:pointer;color:var(--text-2);
}
.appbar .icon-btn:hover{background:#F2F6FA;}
/* 首页图标：置于左上角标题前 */
.appbar .icon-btn.home-btn{width:30px;height:30px;margin-right:-4px;color:var(--text-2);}
.appbar .icon-btn.home-btn svg{
  width:19px;height:19px;display:block;fill:none;stroke:currentColor;
  stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;
}
.appbar .icon-btn.home-btn:hover{color:#1E9FFF;}
.appbar .icon-btn.burger{display:none;}
/* 右上角刷新：点击时转一圈，表示数据正在静默刷新（页面本体不重载） */
.appbar .icon-btn.spin{animation:btnSpin .75s cubic-bezier(.45,.05,.55,.95);}
@keyframes btnSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.user-chip{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:20px;}
.user-chip:hover{background:#F2F6FA;}
.avatar{
  width:30px;height:30px;border-radius:50%;background:linear-gradient(145deg,#3FB6FF,#0B7FDB);
  color:#fff;display:grid;place-items:center;font-size:13.5px;font-weight:600;
}
.user-chip .uname{font-size:14px;color:var(--text);}
.user-chip .urole{font-size:12px;color:var(--text-3);}
.menu-pop{
  position:absolute;right:16px;top:52px;background:#fff;border:1px solid var(--line);border-radius:8px;
  box-shadow:0 16px 32px -12px rgba(15,40,66,.3);min-width:150px;padding:6px;z-index:60;
}
.menu-pop button{
  display:block;width:100%;text-align:left;padding:9px 12px;border:none;background:none;
  font-size:14px;color:var(--text-2);cursor:pointer;border-radius:5px;
}
.menu-pop button:hover{background:#F5F9FD;color:var(--primary-dark);}

/* ================= 专注模式（全屏）：右上角按钮 → 隐藏侧栏与顶栏，移到上/左边缘自动唤出 ================= */
.appbar .icon-btn.fm-btn{margin-left:2px;color:#7B8B9C;}
.appbar .icon-btn.fm-btn:hover{background:#EAF3FE;color:#1E7FD9;}
.appbar .icon-btn.fm-btn svg{
  width:19px;height:19px;display:block;fill:none;stroke:currentColor;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;
}
.appbar .icon-btn.fm-btn .fm-ic-exit{display:none;}
body.focus-mode .appbar .icon-btn.fm-btn .fm-ic-expand{display:none;}
body.focus-mode .appbar .icon-btn.fm-btn .fm-ic-exit{display:block;}

/* 侧栏：从左侧滑出，浮在内容之上（不挤压正文） */
body.focus-mode .drawer{
  position:fixed;left:0;top:0;bottom:0;z-index:96;
  transform:translateX(-100%);
  border-radius:0 12px 12px 0;
  transition:transform .24s cubic-bezier(.32,.9,.36,1);
  box-shadow:22px 0 52px -26px rgba(8,44,82,.62);
}
body.focus-mode.fm-left .drawer{transform:none;}
/* 顶栏：从上方滑落 */
body.focus-mode .appbar{
  position:fixed;top:0;left:0;right:0;z-index:94;
  transform:translateY(-100%);
  transition:transform .2s ease;
  box-shadow:0 12px 26px -20px rgba(8,44,82,.6);
}
body.focus-mode.fm-top .appbar{transform:none;}
/* 正文占满整屏，顶部留出呼吸空间 */
body.focus-mode .content{padding-top:26px;}
/* 唤醒热区：顶部/左侧 7px 隐形条（层级低于顶栏与侧栏，被盖住时不抢点击） */
.fm-hot{display:none;position:fixed;z-index:93;user-select:none;}
body.focus-mode .fm-hot{display:block;}
.fm-hot-top{top:0;left:0;right:0;height:7px;}
.fm-hot-left{top:0;left:0;bottom:0;width:7px;z-index:90;}
/* 唤出时的轻微高光提示 */
body.focus-mode.fm-top .appbar{border-bottom-color:#DCE7F3;}
@media (hover:none),(pointer:coarse){
  .appbar .icon-btn.fm-btn{display:none;}
}

.content{flex:1;overflow-y:auto;padding:20px 22px 40px;}
/* 顶部路由进度条：切页加载提示（不清空旧页面，零闪动） */
#routeBar{position:fixed;top:0;left:0;height:3px;width:0;opacity:0;background:#0B7FDB;z-index:999;border-radius:0 2px 2px 0;pointer-events:none;box-shadow:0 0 6px rgba(11,127,219,.55);}
.page-head{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.page-head h1{margin:0;font-size:19px;font-weight:600;}
.page-head .sub{font-size:13.5px;color:var(--text-3);}
.page-head .spacer{flex:1;}

/* 卡片 / 统计 */
.card{background:#fff;border:1px solid var(--line);border-radius:8px;}
.card-pad{padding:16px 18px;}
.grid{display:grid;gap:14px;}
.kpi{background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px 18px;position:relative;overflow:hidden;}
.kpi .t{font-size:13.5px;color:var(--text-3);}
.kpi .v{font-size:26px;font-weight:700;margin-top:8px;letter-spacing:.5px;}
.kpi .v small{font-size:13px;font-weight:400;color:var(--text-3);margin-left:4px;}
.kpi .i{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--primary-light);color:var(--primary-dark);font-size:17px;}
.kpi.warn .i{background:#FFF6E5;color:#B7791F;}
.kpi.err .i{background:#FDECEC;color:#C53030;}
.kpi.ok .i{background:#E9FBF2;color:#12805C;}

/* 按钮（迷你云风） */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:5px;height:34px;padding:0 16px;
  border-radius:4px;border:1px solid transparent;font-size:14px;cursor:pointer;background:#fff;
  color:var(--text-2);transition:filter .15s,box-shadow .15s;white-space:nowrap;user-select:none;
}
.btn:active{filter:brightness(.94);}
.btn-sm{height:28px;padding:0 11px;font-size:13.5px;}
.btn-primary{background:#1E9FFF;color:#fff;}
.btn-primary:hover{background:#0F8EF0;}
.btn-add{background:#00B578;color:#fff;}
.btn-add:hover{background:#00A06C;}
.btn-danger{background:#FF7A45;color:#fff;}
.btn-danger:hover{background:#F06A35;}
.btn-ghost{background:#fff;border-color:#D5DEE7;color:var(--text-2);}
.btn-ghost:hover{border-color:#1E9FFF;color:#1E9FFF;}
.btn-text{
  border:none;background:none;padding:4px 7px;height:auto;font-size:14px;border-radius:4px;
}
.btn-text:hover{background:#F2F8FE;}
.btn-text[data-act="edit"]{color:#00A06C;}
.btn-text[data-act="del"]{color:#E5484D;}
.btn-text[data-act="audit"]{color:#1E9FFF;}
.btn-text[data-act="unaudit"]{color:#F5A623;}
.btn-text[data-act="print"]{color:#1E9FFF;}

/* 表格 */
.table-wrap{background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
.toolbar{
  display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);flex-wrap:wrap;
  background:#FBFDFE;
}
.toolbar .search{
  display:flex;align-items:center;gap:7px;border:1px solid #D5DEE7;border-radius:4px;padding:0 12px;height:34px;
  background:#fff;min-width:260px;
}
.toolbar .search:focus-within{border-color:#1E9FFF;box-shadow:0 0 0 3px rgba(30,159,255,.12);}
.toolbar .search .s-ic{color:#9AA8B6;font-size:14px;}
.toolbar .search input{border:none;outline:none;font-size:14px;width:100%;font-family:inherit;}
.toolbar select,.toolbar .nsel-inp{
  height:34px;border:1px solid #D5DEE7;border-radius:4px;padding:0 8px;font-size:14px;font-family:inherit;
  color:var(--text-2);background:#fff;outline:none;
}
.toolbar .spacer{flex:1;}
.table-scroll{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:14.5px;}
thead th{
  background:#FAFCFE;color:var(--text-2);font-weight:600;text-align:left;padding:9px 14px;
  border-bottom:1px solid var(--line);white-space:nowrap;font-size:14px;
}
tbody td{padding:10px 14px;border-bottom:1px solid #F1F5F9;white-space:nowrap;color:var(--text);}
tbody tr:hover{background:#FBFDFF;}
tbody td.num{font-variant-numeric:tabular-nums;}
/* 通用列表：数字列（数量/单价/金额）与表头统一右对齐，读数成列更整齐 */
.table-wrap th.num{text-align:right;}
.table-wrap tbody td.num{text-align:right;}
/* 资源页表格（职员管理等设置模块）：加竖线形成整体网格 */
.page-res thead th,.page-res tbody td{border-right:1px solid #EDF2F8;}
.page-res thead th:last-child,.page-res tbody td:last-child{border-right:none;}
td .row-actions{display:flex;gap:2px;}
/* 实时价格看板：日期框 + 本日价格输入 */
.page-head input#pbDate{
  height:32px;border:1.5px solid #D6E3F0;border-radius:7px;padding:0 10px;font-size:14px;
  font-family:inherit;color:var(--text);background:#fff;outline:none;
}
.page-head input#pbDate:focus{border-color:#1E88E5;box-shadow:0 0 0 2px rgba(30,136,229,.12);}
.pb-table .pb-input{
  width:112px;height:30px;border:1.5px solid #D6E3F0;border-radius:6px;text-align:right;
  padding:0 9px;font-size:14px;font-family:inherit;color:var(--text);background:#fff;outline:none;
  font-variant-numeric:tabular-nums;
}
.pb-table .pb-input:focus{border-color:#1E88E5;box-shadow:0 0 0 2px rgba(30,136,229,.12);}
.pb-table .pb-input::placeholder{color:#C3D0DC;}
/* 新增行：直接在表格里填，不弹窗 */
tbody tr.new-row{background:#F5FAFF;}
tbody tr.new-row:hover{background:#F5FAFF;}
tbody tr.new-row td{padding:6px 10px;}
tbody tr.new-row input,tbody tr.new-row select{
  width:100%;min-width:88px;height:28px;border:1.5px solid #8FC4EE;border-radius:5px;
  font-size:13.5px;padding:0 6px;background:#fff;color:var(--text);outline:none;
}
tbody tr.new-row input:focus,tbody tr.new-row select:focus{border-color:var(--primary,#1E88E5);box-shadow:0 0 0 2px rgba(30,136,229,.12);}
.pager{
  display:flex;align-items:center;gap:9px;padding:10px 14px;color:var(--text-3);font-size:13.5px;
}
.pager .spacer{flex:1;}
.pager b{color:var(--text);font-weight:600;}
.pg-btn{
  width:26px;height:26px;border:1px solid #D5DEE7;background:#fff;border-radius:4px;cursor:pointer;
  color:var(--text-2);font-size:14px;display:grid;place-items:center;
}
.pg-btn:hover{border-color:#1E9FFF;color:#1E9FFF;}
.pg-cur{
  min-width:26px;height:26px;padding:0 7px;display:grid;place-items:center;border-radius:4px;
  background:#1E9FFF;color:#fff;font-size:13.5px;font-variant-numeric:tabular-nums;
}
.pg-sep{width:1px;height:16px;background:var(--line);margin:0 3px;}
.pager select,.pager .nsel-inp{
  height:26px;border:1px solid #D5DEE7;border-radius:4px;font-size:13.5px;color:var(--text-2);
  background:#fff;outline:none;padding:0 4px;
}
.empty{padding:48px 0;text-align:center;color:var(--text-3);font-size:14px;}
/* 新增按钮在表格左下角（职员管理等页） */
.table-foot{padding:12px 14px 0;display:flex;align-items:center;gap:8px;}
.table-foot .btn-add{height:30px;padding:0 14px;font-size:13.5px;}
/* 职员管理：密码列 & 权限列 */
.emp-pwd{letter-spacing:1.5px;color:#9AAFC4;font-size:12.5px;cursor:pointer;}
.emp-pwd:hover{color:#1E7FD9;}
.emp-perm{padding:2px 4px;}

/* 标签 */
.tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:11px;font-size:12.5px;line-height:1;}
.tag-gray{background:#F1F5F9;color:#5A6B7B;}
.tag-blue{background:#E7F4FF;color:#0B7FDB;}
.tag-green{background:#E9FBF2;color:#12805C;}
.tag-orange{background:#FFF6E5;color:#B7791F;}
.tag-red{background:#FDECEC;color:#C53030;}
.tag-purple{background:#F1EDFF;color:#5B45C7;}

/* 快捷导航 */
.section-title{font-size:16px;font-weight:600;margin:6px 0 12px;}
.qn-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.qn-card{
  background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px;display:flex;gap:12px;
  align-items:center;cursor:pointer;transition:box-shadow .16s,transform .16s,border-color .16s;
}
.qn-card:hover{box-shadow:0 12px 24px -14px rgba(15,40,66,.35);transform:translateY(-1px);border-color:#CFE6F8;}
.qn-card .ic{
  width:40px;height:40px;border-radius:10px;background:var(--primary-light);color:var(--primary-dark);
  display:grid;place-items:center;font-size:18px;flex:0 0 40px;
}
.qn-card .lb{font-size:15px;font-weight:600;}
.qn-card .ds{font-size:13px;color:var(--text-3);margin-top:3px;}
.qn-card.disabled{background:#FAFBFC;cursor:default;}
.qn-card.disabled .ic{background:#F2F5F8;color:#B8C4D0;}
.qn-card.disabled .lb{color:var(--text-2);}

/* 待办 */
.todo{display:flex;gap:10px;padding:11px 0;border-bottom:1px dashed #EEF3F8;}
.todo:last-child{border-bottom:none;}
.todo .dot{width:8px;height:8px;border-radius:50%;margin-top:6px;flex:0 0 8px;}
.todo .dot.warning{background:var(--warn);}
.todo .dot.info{background:var(--primary);}
.todo.todo-link{
  display:flex;text-decoration:none;color:inherit;border-radius:7px;margin:0 -6px;padding:0 6px;
  transition:background .15s;
}
.todo.todo-link:hover{background:#F2F8FF;}
.todo .tt{font-size:14px;}
.todo .dd{font-size:13px;color:var(--text-3);margin-top:3px;}

/* 弹窗 */
.modal-mask{
  position:fixed;inset:0;background:rgba(12,28,45,.45);display:flex;align-items:flex-start;justify-content:center;
  padding:60px 20px 40px;z-index:100;overflow-y:auto;
}
.modal{
  background:#fff;border-radius:8px;width:760px;max-width:100%;box-shadow:0 30px 60px -20px rgba(0,20,40,.5);
  animation:pop .16s ease-out;
}
@keyframes pop{from{transform:translateY(-8px);opacity:.6;}to{transform:none;opacity:1;}}
.modal-head{
  display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line);
}
.modal-head h3{margin:0;font-size:17px;font-weight:600;}
.modal-head .x{margin-left:auto;cursor:pointer;color:var(--text-3);font-size:18px;line-height:1;}
.modal-body{padding:18px 20px;max-height:64vh;overflow-y:auto;}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--line);}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;}
.form-grid .full{grid-column:1/-1;}
/* 迷你云式：label 灰底盒 + 输入区连体 */
.field{
  display:flex;align-items:stretch;border:1px solid #D5DEE7;border-radius:4px;overflow:hidden;background:#fff;
}
.field:focus-within{border-color:#1E9FFF;box-shadow:0 0 0 3px rgba(30,159,255,.12);}
.field label{
  width:104px;flex:0 0 104px;display:flex;align-items:center;padding:0 10px;font-size:13.5px;
  color:var(--text-2);background:#FAFCFE;border-right:1px solid #E6EBF1;line-height:1.35;
}
.field label i{color:#E5484D;font-style:normal;margin-left:2px;}
.field input,.field select,.field textarea{
  border:none;outline:none;flex:1;min-width:0;padding:9px 11px;font-size:14px;font-family:inherit;color:var(--text);
  background:#fff;
}
.field textarea{resize:vertical;min-height:64px;line-height:1.6;}
.field input[readonly]{background:#F7FAFD;color:#8C9AA8;}
/* 全局：数字输入框不显示原生上下箭头 */
input[type=number]{-moz-appearance:textfield;appearance:textfield;}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0;}

/* Toast */
.toast{
  position:fixed;left:50%;top:22px;transform:translate(-50%,-16px);background:rgba(22,42,60,.94);color:#fff;
  padding:10px 20px;border-radius:6px;font-size:14px;opacity:0;pointer-events:none;transition:.24s;z-index:200;
}
.toast.show{opacity:1;transform:translate(-50%,0);}
.toast.ok{background:rgba(18,128,92,.96);}
.toast.bad{background:rgba(197,48,48,.96);}
/* 堆叠提示容器：多条 toast 纵向排列（卓创抓取按供应商逐家提示） */
#toastWrap{position:fixed;left:50%;top:22px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:200;pointer-events:none;}
#toastWrap .toast{position:static;left:auto;top:auto;transform:translateY(-10px);}
#toastWrap .toast.show{transform:translateY(0);}

/* 加载 */
.loading{padding:40px;text-align:center;color:var(--text-3);font-size:14px;}
.spinner{
  width:22px;height:22px;border:2px solid #DCEAF7;border-top-color:var(--primary);border-radius:50%;
  animation:spin .7s linear infinite;margin:0 auto 10px;
}
@keyframes spin{to{transform:rotate(360deg);}}

/* 响应式 */
@media (max-width:1180px){ .qn-grid{grid-template-columns:repeat(3,minmax(0,1fr));} }
@media (max-width:860px){
  .appbar .icon-btn.burger{display:grid;}
  .drawer{
    position:fixed;left:0;top:0;bottom:0;width:240px;z-index:90;
    transform:translateX(-105%);transition:transform .22s ease;
  }
  body.drawer-open .drawer{transform:none;}
  body.drawer-open .drawer-mask{display:block;}
  .user-chip .uinfo{display:none;}
  .ws-tabs{padding:6px 10px 0;}
  .content{padding:14px 12px 30px;}
  .grid[style*="repeat(4"]{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .grid[style*="repeat(3"]{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .grid[style*="1.4fr"]{grid-template-columns:1fr !important;}
  .kpi .v{font-size:21px;}
  .page-head h1{font-size:17px;}
  .modal{width:96%;}
  .modal-body{max-height:72vh;padding:14px;}
  .form-grid{grid-template-columns:1fr;}
  .toolbar .search{min-width:0;flex:1 1 170px;}
  .nav-flyout{left:234px;width:calc(100vw - 242px);}
  .nav-flyout.wide{width:min(504px,calc(100vw - 242px));}
  /* 表格横向滑动时首列固定 */
  .table-scroll{-webkit-overflow-scrolling:touch;}
  .table-scroll thead th:first-child,.table-scroll tbody td:first-child{
    position:sticky;left:0;background:#fff;z-index:1;box-shadow:1px 0 0 var(--line);
  }
  .table-scroll tbody tr:hover td:first-child{background:#FBFDFF;}
  /* 弹窗近全屏 */
  .modal-mask{padding:0;}
  .modal{width:100%;max-width:100%;min-height:100%;border-radius:0;}
  .modal-body{max-height:none;padding:14px 14px 20px;}
  .modal-foot{
    position:sticky;bottom:0;background:#fff;z-index:2;
    padding:12px 14px calc(12px + env(safe-area-inset-bottom));
    box-shadow:0 -8px 18px -12px rgba(0,20,40,.3);
  }
  /* 防 iOS 聚焦自动放大 */
  .field input,.field select,.field textarea{font-size:17px;}
  /* 抽屉菜单打开时锁定背景滚动 */
  body.drawer-open{overflow:hidden;}
}
@media (max-width:560px){
  .qn-grid{grid-template-columns:1fr;}
  .content{padding:12px 10px 30px;}
}

/* ---- 销售中心 ---- */
.sc-card{transition:box-shadow .18s,transform .18s;}
.sc-card:hover{box-shadow:0 8px 22px -12px rgba(16,64,120,.35);transform:translateY(-2px);}
.sc-card .sc-ic{
  width:40px;height:40px;flex:0 0 40px;display:grid;place-items:center;font-size:20px;
  background:linear-gradient(140deg,#EAF4FF,#D7E9FB);border-radius:10px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}
.sc-pill{
  display:inline-block;padding:1px 8px;border-radius:9px;font-size:12.5px;line-height:18px;
  background:#EAF4FF;color:#1E88E5;
}
.sc-pill.bucket{background:#EAF9F1;color:#0E9F6E;}
.sc-pill.whole{background:#FFF4E5;color:#C97A12;}

/* ---- 历史价格 · 走势解读条（原价格分析页并入） ---- */
.pa2-wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:8px;}
.pa2-card{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;background:#F6FAFE;border:1px solid #E3EDF6;border-radius:10px;padding:9px 12px;font-size:12.5px;color:#5B6B7C;}
.pa2-card>b{color:#17395A;font-size:13.5px;}
.pa2-card span b{color:#22303F;}
.pa2-card i{font-style:normal;color:#93A7BC;font-size:11.5px;margin-left:2px;}

/* ---- 历史价格：厂家页签+表格+分页「有天有地」自适应块 ----
   高度由前端按「屏幕底 − 块顶」算好写在行内；这里负责内部分配：
   表格弹性占满剩余高度、内部滚动，页签在上、分页器钉在块底 */
.ph-lower{display:flex;flex-direction:column;min-height:240px;}
.ph-lower .table-scroll{flex:1 1 auto;min-height:110px;}
.ph-lower .table-scroll > table > thead > tr > th{position:sticky;top:0;z-index:6;}   /* 表体内部滚动时表头钉住 */
.ph-lower #phPager{margin-top:0;flex:none;}
@media (max-width:860px){
  .ph-lower{height:auto !important;min-height:0;}
  .ph-lower .table-scroll{max-height:58vh;}
}

/* ---- 销售中心：12306 式页签（灰白双色块，中间一条居中斜线分界，切换时白块斜边整体扫向另一侧） ---- */
.sc-panel{
  background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  box-shadow:0 1px 3px rgba(16,64,120,.05);
}
.sc-strip{
  position:relative;display:grid;grid-template-columns:1fr 1fr;
  height:52px;background:#E8EFF6;
}
.sc-flip{
  position:absolute;inset:0;pointer-events:none;z-index:1;
  filter:drop-shadow(5px 4px 5px rgba(23,78,140,.16));
  transition:filter .38s cubic-bezier(.3,.9,.3,1);
}
/* b = 纸页厚度，i = 白色页块；斜边从顶部中心偏 24px 处落到底部中心，约 60° 斜线 */
.sc-flip b,.sc-flip i{
  position:absolute;inset:0;display:block;
  clip-path:polygon(0 0,calc(50% + 24px) 0,50% 100%,0 100%);
  transition:clip-path .38s cubic-bezier(.3,.9,.3,1),transform .38s cubic-bezier(.3,.9,.3,1);
}
.sc-flip b{background:#C7D9EB;transform:translateX(4px);}
.sc-flip i{background:linear-gradient(180deg,#FFFFFF 0%,#FAFCFF 100%);}
/* data-active = 激活页签的序号（"0"=偏左，"1"=偏右），供行情 / 销售中心等顶部切换条通用 */
.sc-strip[data-active="1"] .sc-flip{filter:drop-shadow(-5px 4px 5px rgba(23,78,140,.16));}
.sc-strip[data-active="1"] .sc-flip b,
.sc-strip[data-active="1"] .sc-flip i{
  clip-path:polygon(calc(50% - 24px) 0,100% 0,100% 100%,50% 100%);
}
.sc-strip[data-active="1"] .sc-flip b{transform:translateX(-4px);}
.sc-tab{
  position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:7px;
  padding:0 8px;border:0;background:transparent;cursor:pointer;
  font-size:16px;font-weight:600;color:#45525F;transition:color .26s;white-space:nowrap;
}
.sc-tab:hover{color:#1668E3;}
.sc-tab:hover .si{color:#1668E3;opacity:.9;}
.sc-tab.active{color:#1668E3;}
.sc-tab:active{transform:scale(.99);}
.sc-tab .si{
  display:inline-flex;align-items:center;justify-content:center;
  width:20px;height:20px;color:#93A4B5;opacity:.95;
  transition:color .26s,transform .26s,opacity .26s;
}
.sc-tab .si svg{width:100%;height:100%;display:block;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
/* 槽车图标：按参考图为 30:19 宽幅，突破方形容器 */
.sc-tab .si svg.rk{width:30px;height:19px;flex:none;}
.sc-tab.active .si{color:#1668E3;transform:scale(1.06);}
.sc-cnt{
  min-width:18px;height:18px;padding:0 5px;border-radius:9px;
  background:#D9E3EE;color:#6E7E8E;font-size:12px;line-height:18px;font-weight:700;text-align:center;
  transition:background .26s,color .26s;
}
.sc-tab.active .sc-cnt{background:#E1EFFF;color:#1668E3;}
.sc-tab .tx{position:relative;letter-spacing:.5px;}
.sc-tab .tx::after{
  content:"";position:absolute;left:50%;bottom:-8px;width:24px;height:3.5px;border-radius:2px;
  background:#1668E3;opacity:0;transform:translateX(-50%) scaleX(.4);
  transition:opacity .26s,transform .26s;
}
.sc-tab.active .tx::after{opacity:1;transform:translateX(-50%) scaleX(1);}

/* ---- 库存中心：三个紧凑小按钮（原地替换大页签条，位置不变） ---- */
.inv-seg{
  position:relative;display:inline-grid;grid-auto-flow:column;
  height:28px;padding:3px;background:#EDF2F7;border-radius:9px;box-sizing:border-box;
  animation:invSegIn .32s ease both;
}
@keyframes invSegIn{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
/* 选中滑块：宽度随格数均分，靠 data-active 平滑滑到对应位置 */
.inv-seg-ink{
  position:absolute;z-index:1;top:3px;bottom:3px;left:3px;
  width:calc((100% - 6px) / var(--seg-cnt,3));
  border-radius:7px;background:#fff;box-shadow:0 1px 2px rgba(16,64,120,.16);
  transition:transform .34s cubic-bezier(.34,.9,.28,1);pointer-events:none;
}
.inv-seg[data-active="0"] .inv-seg-ink{transform:translateX(0);}
.inv-seg[data-active="1"] .inv-seg-ink{transform:translateX(100%);}
.inv-seg[data-active="2"] .inv-seg-ink{transform:translateX(200%);}
.inv-seg[data-active="3"] .inv-seg-ink{transform:translateX(300%);}
.inv-seg[data-active="4"] .inv-seg-ink{transform:translateX(400%);}
.inv-seg .sc-tab{
  position:relative;z-index:2;display:flex;align-items:center;justify-content:center;gap:0;
  min-width:64px;padding:0 14px;border:0;border-radius:7px;background:transparent;cursor:pointer;
  font-size:13px;font-weight:600;color:#6B7B8C;letter-spacing:.5px;white-space:nowrap;
  transition:color .24s ease,background .24s ease,transform .12s ease;
}
.inv-seg .sc-tab:hover{color:var(--primary-dark);}
.inv-seg .sc-tab:not(.active):hover{background:rgba(30,159,255,.08);}
.inv-seg .sc-tab:active{transform:scale(.94);}
.inv-seg .sc-tab .tx{position:relative;transition:transform .24s cubic-bezier(.34,.9,.28,1);}
.inv-seg .sc-tab.active{color:var(--primary-dark);background:transparent;}
.inv-seg .sc-tab.active .tx{transform:translateY(-.5px);}
/* 切换时下方内容淡入（由 segSlide 负责，这里给按钮一个轻微的按下回弹） */
.inv-seg .sc-tab.active{animation:invTabPop .3s cubic-bezier(.34,1.4,.4,1) both;}
@keyframes invTabPop{0%{transform:scale(1)}45%{transform:scale(.92)}100%{transform:scale(1)}}
.sc-panel-body{padding:14px 16px 16px;}

/* ---- 运输页签条（分析/流水/固定运价）----
   与销售中心 12306 纸页翻面同一套（sc-strip + sc-flip，斜边扫过去）；
   高度维持小号 28px，宽度拉满到与所在模块同宽，三格均分 */
.sc-strip.sc-strip-sm{
  display:grid;width:100%;
  height:28px;padding:3px;background:#EDF2F7;border-radius:9px;
}
.sc-strip-sm .sc-flip{inset:3px;}
.sc-strip-sm .sc-flip b,.sc-strip-sm .sc-flip i{border-radius:7px;}
.sc-strip-sm .sc-tab{
  padding:0 14px;gap:0;font-size:13px;letter-spacing:.5px;color:#6B7B8C;
}
.sc-strip-sm .sc-tab .si{width:0;height:0;opacity:0;}
.sc-strip-sm .sc-tab:hover{color:var(--primary-dark);}
.sc-strip-sm .sc-tab:not(.active):hover{background:rgba(30,159,255,.08);}
.sc-strip-sm .sc-tab:active{transform:scale(.94);}
.sc-strip-sm .sc-tab.active{color:var(--primary-dark);}
.sc-strip-sm .sc-tab .tx::after{bottom:-4px;width:16px;height:2.5px;}

/* ---- 运输 · 页签条与指标卡并排一条（照客户中心 .crm-topbar 的做法）----
   左边：分析 / 流水 / 固定运价；右边：车次 / 总吨位 / 运费合计 / 平均吨运费 / 合作槽车。
   页签条固定宽度、竖向与指标卡居中对齐，指标卡 flex 均分占满剩余宽度 */
.tr-topbar{display:flex;align-items:stretch;gap:12px;margin-bottom:12px;flex-wrap:wrap;}
.tr-tabs2{
  height:44px;align-self:center;flex:none;
  width:min(340px,100%);border-radius:8px;overflow:hidden;
}
.tr-tabs2 .sc-tab{font-size:13.5px;padding:0 14px;}
.tr-tabs2 .sc-tab .tx::after{bottom:-7px;width:18px;height:3px;}
/* 选择器带上 .crm-topbar 提高权重，压过客户中心那几条通栏规则（那条是给 5 列家数用的） */
.crm-topbar.tr-topbar .tr-stats{flex:1;display:flex;gap:10px;margin-bottom:0;min-width:520px;}
.crm-topbar.tr-topbar .crm-stat{cursor:default;flex:1;min-width:0;padding:8px 12px 7px;}
.crm-topbar.tr-topbar .crm-stat .v{font-size:22px;}
.crm-topbar.tr-topbar .crm-stat:hover{border-color:var(--line);box-shadow:none;}
.tr-actions{align-self:center;flex:none;}
/* 切页签时指标数字原地换，加一点淡入，衔接下面内容的滑动 */
.tr-stats.tr-kpi-in .crm-stat{animation:trKpiIn .28s ease both;}
@keyframes trKpiIn{from{opacity:.35;transform:translateY(-3px)}to{opacity:1;transform:none}}
@media (max-width:900px){
  .tr-topbar .tr-stats{min-width:100%;}
  .tr-tabs2{width:100%;}
}

/* ---- 销售中心 · 页签条右侧「销售退货」直达按钮 ----
   销售退货不再单占菜单，从销售中心页签条右侧一键进入；
   .sc-top 让页签条与按钮并排，页签条自身宽度不变，翻面动画几何不受影响 */
.sc-top{display:flex;align-items:stretch;}
.sc-top .sc-strip{flex:1;min-width:0;}
/* 页签条支持任意格数：列数与斜边由 JS（layoutStrip）按 data-active 动态计算，
   这里只保留两格的默认几何，供未经 JS 的兜底渲染 */
.sc-return{
  flex:none;display:flex;align-items:center;justify-content:center;gap:7px;
  padding:0 18px;border:0;border-left:1px solid #D8E2EC;cursor:pointer;
  background:#F2F6FA;font-size:15px;font-weight:600;color:#5A6B7C;letter-spacing:.5px;white-space:nowrap;
  transition:background .22s,color .22s;
}
.sc-return .si{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;color:#93A4B5;transition:color .22s;}
.sc-return .si svg{width:100%;height:100%;display:block;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.sc-return:hover{background:#fff;color:#1668E3;}
.sc-return:hover .si{color:#1668E3;}
.sc-return:active{transform:scale(.985);}

/* ---- 销售中心 · 桶装库存看板（10-26 改版：槽车销售同款「信息条」） ----
   两条浅底圆角长条（#F7FAFD / 边 #E3EDF6 / 圆角 9px / 12.5px 小字），与槽车四页签那条
   「本周 15 车 · 已送 7」完全同一套观感：产品名灰、数值加粗深蓝、说明小号浅灰；
   分仓 / 尾量 / 约等细节进 title 悬浮，内容超宽时单行内横向滑动，不再堆白底小签卡 */
.bs-board{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;}
.bs-line{display:flex;align-items:center;gap:2px;min-width:0;white-space:nowrap;
  background:#F7FAFD;border:1px solid #E3EDF6;border-radius:9px;padding:6px 12px;
  font-size:12.5px;line-height:1.5;color:#6B7C8F;overflow-x:auto;scrollbar-width:none;}
.bs-line::-webkit-scrollbar{height:0;display:none;}
.bs-lead{color:#12365F;font-weight:600;flex:0 0 auto;margin-right:2px;}
.bs-lead.sl{color:#0E7A55;}
.bs-sub{font-style:normal;font-size:11.5px;color:#9AAFC4;flex:0 0 auto;margin-right:2px;}
.bs-seg{flex:0 0 auto;}
.bs-seg b{color:#12365F;font-weight:600;}
.bs-seg.tot{color:#12365F;font-weight:600;}
.bs-seg.tot b{color:#12365F;}
.bs-ap{font-style:normal;font-size:11px;color:#9AAFC4;margin-right:2px;}
.bs-div{flex:0 0 auto;width:1px;height:13px;background:#D8E4F0;margin:0 9px;}
.bs-none{color:#B6C4D2;}
.bs-msg{font-size:13px;color:#93A7BC;background:#F7FAFD;border:1px solid #E3EDF6;border-radius:9px;padding:6px 12px;}
/* 10-28 实时库存条升级（.lg）：挪进桶装销货单卡片、页签行下，字号加大更醒目
   产品名加深（#3D5266）· 桶数亮蓝 / 吨数翠绿 · 行首竖条点题，其余观感与信息条同族 */
.bs-line.lg{padding:9px 14px;font-size:13.5px;line-height:1.6;border-radius:10px;
  background:#F4F9FE;border-color:#D7E7F7;color:#51677D;}
.bs-line.lg .bs-lead{font-size:15px;color:#0F4C81;display:inline-flex;align-items:center;gap:7px;letter-spacing:.5px;}
.bs-line.lg .bs-lead::before{content:'';flex:0 0 auto;width:4px;height:15px;border-radius:2px;
  background:linear-gradient(180deg,#3B9DF8,#1668E3);}
.bs-line.lg .bs-sub{font-size:12px;}
.bs-line.lg .bs-seg{font-size:13.5px;color:#3D5266;}
.bs-line.lg .bs-seg b{font-size:14px;}
.bs-line.lg .bs-seg b.n-b{color:#1668E3;}
.bs-line.lg .bs-seg b.n-t{color:#0E9F6E;}
.bs-line.lg .bs-ap{font-size:11.5px;}
.bs-line.lg .bs-div{height:15px;margin:0 10px;}
/* 10-29 精简大字版（.xl）：按用户要求只留「库存 | 包装库存」两个大数、一根竖线、行尾一个截至时间。
   数字 23px 加粗撑满格子：桶数亮蓝 / 吨数翠绿 / 包装数暖橙；明细全收悬浮 */
.bs-line.xl{padding:12px 16px;font-size:15px;line-height:1.4;border-radius:11px;
  background:#F4F9FE;border-color:#D7E7F7;color:#51677D;}
.bs-line.xl .bs-lead{font-size:16.5px;color:#0F4C81;letter-spacing:.5px;
  display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;}
.bs-line.xl .bs-lead::before{content:'';flex:0 0 auto;width:4px;height:17px;border-radius:2px;
  background:linear-gradient(180deg,#3B9DF8,#1668E3);}
.bs-line.xl .bs-item{flex:0 0 auto;display:inline-flex;align-items:baseline;font-size:15.5px;color:#51677D;letter-spacing:.3px;}
.bs-line.xl .bs-item b{font-size:23px;font-weight:700;line-height:1;letter-spacing:.2px;margin:0 2px;}
.bs-line.xl .bs-item b.n-b{color:#1668E3;}
.bs-line.xl .bs-item b.n-t{color:#0E9F6E;}
.bs-line.xl .bs-item b.n-p{color:#B26205;}
.bs-line.xl .bs-item u{text-decoration:none;font-size:13.5px;color:#8296AA;margin-right:6px;}
.bs-line.xl .bs-item .dot{font-style:normal;color:#B7C7D8;margin:0 4px;font-weight:700;}
.bs-line.xl .bs-div{height:16px;margin:0 8px;}
.bs-line.xl .bs-div.v{height:30px;margin:0 18px;background:#C6DAEE;}
.bs-line.xl .bs-time{font-style:normal;margin-left:auto;padding-left:14px;font-size:12.5px;color:#9AAFC4;flex:0 0 auto;}
.bs-line.xl .bs-none{font-size:15px;}
/* 10-29 二改：库存条挪进页签行（bk-sub），行内排布——
   去卡片底色、贴着页签按钮后面；横向排不下时条内自身横向滚动，页签行高度不变 */
.tk-card > .tk-subbar.bk-sub{height:auto;min-height:42px;flex-wrap:wrap;overflow:visible;row-gap:2px;padding-top:3px;padding-bottom:7px;}
.tk-card > .tk-subbar.bk-sub #bkStockHost{flex:1 1 560px;min-width:0;display:flex;align-items:center;}
/* 放不下时整体换到页签下一行，独占一行完整展示 */
.tk-card > .tk-subbar.bk-sub #bkStockHost .bs-time{margin-left:12px;}
.bs-line.xl.in{flex:1 1 auto;min-width:0;padding:2px 0;background:transparent;border:none;border-radius:0;
  white-space:normal;overflow-x:visible;flex-wrap:wrap;row-gap:2px;}
.bs-line.xl.in .bs-lead{font-size:15px;gap:7px;}
.bs-line.xl.in .bs-lead::before{height:15px;}
.bs-line.xl.in .bs-seg{display:inline-flex;align-items:baseline;font-size:14.5px;color:#3D5266;}
.bs-line.xl.in .bs-seg b{font-size:18px;font-weight:700;line-height:1;}
.bs-line.xl.in .bs-seg b.n-b{color:#1668E3;}
.bs-line.xl.in .bs-seg b.n-t{color:#0E9F6E;}
.bs-line.xl.in .bs-seg u{text-decoration:none;font-size:12px;color:#8296AA;margin:0 4px 0 2px;}
.bs-line.xl.in .bs-seg .paren{font-style:normal;color:#8296AA;font-size:13.5px;margin-left:2px;}
.bs-line.xl.in .bs-seg .paren b{font-size:14.5px;color:#41586F;margin:0 1px;}
.bs-line.xl.in .bs-ap{font-style:normal;color:#B26205;font-size:12px;margin:0 2px;}
.bs-line.xl.in .sep{font-style:normal;color:#C3D2E0;margin:0 4px;font-weight:700;}
.bs-line.xl.in .bs-div.v{height:24px;margin:0 8px;background:#C6DAEE;}
.bs-line.xl.in .bs-item b{font-size:20px;}
.bs-line.xl.in .bs-time{margin-left:auto;padding-left:12px;}
@media (max-width:860px){
  .bs-line.xl.in .bs-seg b{font-size:16.5px;}
  .bs-line.xl.in .bs-item b{font-size:18px;}
  .bs-line.xl.in .bs-seg{font-size:13.5px;}
}
@media (max-width:860px){
  .bs-line.xl{padding:10px 12px;}
  .bs-line.xl .bs-item b{font-size:20px;}
  .bs-line.xl .bs-div.v{margin:0 12px;}
}
@media (max-width:860px){
  .bs-line.lg{padding:7px 10px;}
  .bs-line.lg .bs-lead{font-size:14px;}
}
@media (max-width:860px){
  .bs-line{padding:5px 10px;}
  .bs-sub{display:none;}
  .bs-div{margin:0 7px;}
}
.sc-panel .table-wrap{border:none;box-shadow:none;border-radius:0;}
.sc-panel .toolbar{padding-left:0;padding-right:0;}
#scBody{transition:opacity .14s ease,transform .18s ease;}
#scBody.sc-out-l,#trBody.sc-out-l,#invBody.sc-out-l{opacity:0;transform:translateX(-14px);}
#scBody.sc-out-r,#trBody.sc-out-r,#invBody.sc-out-r{opacity:0;transform:translateX(14px);}
@keyframes scInR{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
@keyframes scInL{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:none}}
#scBody.sc-in-r,#trBody.sc-in-r,#invBody.sc-in-r{animation:scInR .34s cubic-bezier(.22,.9,.28,1) both;}
#scBody.sc-in-l,#trBody.sc-in-l,#invBody.sc-in-l{animation:scInL .34s cubic-bezier(.22,.9,.28,1) both;}
#trBody{transition:opacity .14s ease,transform .18s ease;}
#invBody{transition:opacity .14s ease,transform .18s ease;}

@media (max-width:860px){
  .sc-strip{height:46px;}
  .sc-flip b,.sc-flip i{clip-path:polygon(0 0,calc(50% + 20px) 0,50% 100%,0 100%);}
  .sc-strip[data-active="bucket"] .sc-flip b,
  .sc-strip[data-active="bucket"] .sc-flip i{clip-path:polygon(calc(50% - 20px) 0,100% 0,100% 100%,50% 100%);}
  .sc-tab{font-size:14.5px;gap:5px;}
  .sc-tab .si{width:18px;height:18px;}
  .sc-tab .si svg.rk{width:27px;height:17px;}
  .sc-cnt{font-size:11.5px;height:17px;line-height:17px;min-width:17px;}
  .sc-return{padding:0 11px;font-size:13.5px;}
  .sc-return .si{width:16px;height:16px;}
  .sc-panel-body{padding:12px 10px 12px;}
}

/* ---- 槽车销货单：周排序 / 订单确认 标签 ---- */
.ok-tag,.no-tag,.week-tag{display:inline-block;padding:2px 9px;border-radius:9px;font-size:12.5px;line-height:18px;white-space:nowrap;}
.ok-tag{background:#E8F7EE;color:#0E9F6E;}
.no-tag{background:#EEF2F6;color:#8794A3;}
.week-last{background:#EDF1F6;color:#7C8CA0;}
.week-now{background:#1E6FE0;color:#fff;font-weight:600;}
.week-next{background:#fff;color:#1D6FD6;border:1px solid #C7DCF5;}
.week-next2{background:#fff;color:#14549F;border:1px solid #9FC2EE;}

/* ---- 槽车销货单：计划分组 + 周次 + 拖拽 ---- */
.tk-tip{
  font-size:13.5px;color:var(--text-3);background:#F6F9FC;border:1px solid #E7EEF6;
  border-radius:8px;padding:9px 13px;margin-bottom:14px;line-height:1.7;
}
.tk-tip b{color:#1E7FD9;font-weight:600;}
.tk-group{
  background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 1px 3px rgba(16,64,120,.05);margin-bottom:16px;overflow:hidden;
}
.tk-ghead{
  display:flex;align-items:center;gap:10px;padding:12px 15px;
  background:linear-gradient(180deg,#FAFCFF,#F2F7FC);border-bottom:1px solid #E7EEF6;
}
.tk-badge{
  font-size:12.5px;line-height:19px;padding:1px 9px;border-radius:9px;font-weight:600;letter-spacing:.3px;
}
.tk-badge.fixed{background:#E8F4FF;color:#1E7FD9;border:1px solid #CFE5FA;}
.tk-badge.temp{background:#FFF4E5;color:#C97A12;border:1px solid #F8E2BE;}
.tk-gname{font-size:16px;color:#123A5E;letter-spacing:.5px;}
.tk-gmeta{font-size:13.5px;color:var(--text-3);}
.tk-week{margin-top:2px;}
.tk-whead{
  display:flex;align-items:center;gap:8px;padding:8px 15px 8px 17px;
  font-size:14px;font-weight:600;background:#FBFDFF;border-top:1px solid #EEF3F8;
}
.tk-whead .wk-dot{width:6px;height:6px;border-radius:50%;background:currentColor;}
.tk-whead .wk-n{font-size:12.5px;font-weight:500;opacity:.72;}
.tk-whead .wk-total{margin-left:auto;font-size:12.5px;font-weight:500;opacity:.72;}
.tk-whead.wk-last{color:#7C8CA0;background:#F7F9FC;}
.tk-whead.wk-now{color:#1462C9;background:#EAF3FE;}
.tk-whead.wk-next{color:#1D6FD6;background:#E3EEFB;}
.tk-whead.wk-next2{color:#14549F;background:#DAE8F9;}
.tk-whead.wk-none{color:#8794A3;background:#FAFBFD;}

.tk-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14.5px;white-space:nowrap;}
/* 表头：与整体蓝灰体系一致——蓝灰字、浅蓝渐变底、分隔线清晰但不抢戏 */
.tk-table th{
  font-size:13.5px;font-weight:600;color:#5C7288;text-align:left;letter-spacing:.3px;
  padding:9px 8px;background:#F5F9FD;border-bottom:1px solid #DCE7F2;
}
.tk-table th.num{text-align:right;}
.tk-table th.tk-seq{color:#8B9BAB;font-weight:500;}
.tk-table td{padding:2px 8px;border-bottom:1px solid #F1F5F9;color:#22384D;vertical-align:middle;}
.tk-table th.tk-ctr,.tk-table td.tk-ctr{text-align:center;}
.tk-table th.tk-seq,.tk-table td.tk-seq{width:auto;}
.tk-edit .tk-seq .tk-in{max-width:58px;}
/* 每个字段一格：单元格四边分隔线（Excel 网格感） */
.tk-table.tk-edit th,.tk-table.tk-edit td{border-right:1px solid #E7EEF6;}
.tk-table.tk-edit th:last-child,.tk-table.tk-edit td:last-child{border-right:none;}
.tk-table.tk-edit th{
  border-bottom:1px solid #D6E3F0;
  background:linear-gradient(180deg,#F7FAFE 0%,#EDF4FB 100%);
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.8);
}
.tk-table.tk-edit td{border-bottom:1px solid #EDF2F8;}
.tk-table td.num{text-align:right;font-variant-numeric:tabular-nums;}
.tk-table tbody tr:hover{background:#FAFCFF;}
.tk-table tbody tr.tk-dragging{background:#EEF7FF;box-shadow:inset 0 0 0 1px #B9DCFA;}
.tk-table tr:last-child td{border-bottom:none;}
/* ---- 分组：许昌 / 乌海 / 其他，组标题条 + 组间空行 ---- */
.tk-table tbody.tk-grp-body > tr.tk-grp:hover,
.tk-table tbody.tk-grp-body > tr.tk-gap:hover{background:transparent;}
.tk-table tbody tr.tk-gap td{
  height:12px;padding:0 !important;border:0 !important;background:#fff;
}
.tk-table tbody tr.tk-grp td{
  padding:9px 10px 5px !important;border:0 !important;border-bottom:1px solid #E6EEF7 !important;
  background:#F8FBFE;
}
.tk-grp-nm{
  position:relative;padding-left:10px;font-size:14.5px;font-weight:700;color:#1668E3;
  letter-spacing:.2px;
}
.tk-grp-nm::before{
  content:"";position:absolute;left:0;top:50%;width:3px;height:12px;margin-top:-6px;
  border-radius:2px;background:currentColor;
}
.tk-grp-ct{margin-left:7px;font-size:13px;font-weight:400;color:#93A4B5;}
/* 每组表格左下角「＋ 新增一行」 */
.tk-table tbody tr.tk-grp-foot td,
.tk-table tbody tr.tk-grp-foot:hover td{
  padding:8px 12px 10px !important;border:0 !important;background:#fff;text-align:left;
}
.tk-add-row{
  display:inline-flex;align-items:center;gap:5px;
  height:28px;padding:0 14px;border:1px dashed #C6D8EA;border-radius:8px;
  background:#FCFDFF;color:#5A6D80;font-size:13.5px;font-weight:500;cursor:pointer;
  transition:all .16s;
}
.tk-add-row:hover{background:#1668E3;border-color:#1668E3;border-style:solid;color:#fff;box-shadow:0 2px 8px rgba(22,104,227,.22);}
.tk-add-row:active{transform:translateY(1px);}

/* ---- 客户名称搜索框：输入即推荐（浮层挂在 body 上，不受表格滚动裁剪） ---- */
.tk-cus-td .tk-combo{padding-right:18px;}
.tk-cus-td{position:relative;}
.tk-cus-td .tk-combo::placeholder{color:#A9B6C4;}
.tk-picker{
  position:fixed;z-index:9999;max-height:262px;overflow:auto;
  background:#fff;border:1px solid #E1EAF3;border-radius:10px;padding:4px;
  box-shadow:0 12px 30px rgba(17,44,72,.16),0 2px 6px rgba(17,44,72,.07);
  font-size:13.5px;animation:pkIn .14s ease-out both;
}
@keyframes pkIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
.tk-pk-hd{
  display:flex;justify-content:space-between;gap:10px;align-items:center;
  padding:6px 8px 6px;margin-bottom:3px;border-bottom:1px solid #F1F5F9;
  font-size:12px;color:#7C8CA0;font-weight:600;
}
.tk-pk-hd span{font-weight:400;color:#A9B6C4;font-size:11.5px;}
.tk-pk-item{
  display:flex;align-items:center;gap:6px;padding:7px 9px;border-radius:7px;
  cursor:pointer;color:#22384D;
}
.tk-pk-item.on{background:#EAF3FE;box-shadow:inset 0 0 0 1px #CFE3FB;}
.tk-pk-nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tk-pk-item.on .tk-pk-nm{color:#0F5BC0;font-weight:600;}
.tk-pk-g{font-size:11.5px;color:#7C8CA0;background:#F2F5F9;border-radius:4px;padding:0 5px;height:16px;line-height:16px;}
.tk-pk-tag{font-size:11px;color:#1668E3;background:#E7F1FE;border-radius:4px;padding:0 5px;height:16px;line-height:16px;}
.tk-pk-empty{padding:16px 10px;color:#8C9AA8;text-align:center;line-height:1.9;}
.tk-pk-empty span{display:block;font-size:12px;color:#A9B6C4;}
.tk-grp-body[data-g="乌海"] .tk-grp-nm{color:#0E9F6E;}
.tk-grp-body[data-g="其他"] .tk-grp-nm{color:#6B7A8A;}
.tk-table tbody tr.tk-grp-empty td{
  padding:12px 12px !important;color:#A9B6C4;font-size:13px;border-bottom:1px solid #EDF2F8 !important;
}
.tk-table tbody tr.tk-grp-empty:hover td{background:transparent;}
/* ---- 历史订单：按窗口高度「每组限高 + 组内独立滚动」（11-09 用户要求） ----
   目的：4 个分组各留同样多的行，装不下的在组内用滚轮翻，避免一个分组把其他分组顶出屏幕。
   做法：外层不再整表滚动（改由 tbody 自己滚）；列宽由 JS 测量后写成百分比再切固定布局，
   否则 4 个组各算各的列宽会左右错位。 */
.table-scroll.freeze-head.hist-gscroll-wrap{overflow:visible; max-height:none !important;}
/* 主表必须先钉死宽度：全局有一条 `.table-scroll > table{width:max-content !important}`，
   tbody 改成 block 后 max-content 会绕成死循环、宽度膨胀到百万像素，这里必须显式压回 100% */
.table-scroll.hist-gscroll-wrap>table.hist-gscroll-ready{table-layout:fixed; width:100% !important;}
.tk-table.hist-gscroll-ready>thead{display:table; width:100%; table-layout:fixed;}
.tk-table.hist-gscroll-ready>tbody.tk-grp-body{
  display:block; width:100%; overflow-y:auto; overscroll-behavior:contain; margin-bottom:12px;
}
.tk-table.hist-gscroll-ready>tbody.tk-grp-body>tr{display:table; width:100%; table-layout:fixed;}
/* 组头吸顶：组内怎么滚，都看得见自己翻到哪一组 */
.tk-table.hist-gscroll-ready>tbody.tk-grp-body>tr.tk-grp{position:sticky; top:0; z-index:3;}
/* 组间空隙改由 tbody 下外边距实现，滚动区里不再留空行 */
.tk-table.hist-gscroll-ready>tbody.tk-grp-body>tr.tk-gap{display:none;}
/* ---- 周次行底色：同色阶"时间轴"（上周白 → 本周 → 下周 → 下下周逐级加深，整体走浅色调），本周加左侧蓝色标记条 ---- */
.tk-table tbody tr.wkrow-last,
.tk-table tbody tr.wkrow-none{background:#FFFFFF;}
.tk-table tbody tr.wkrow-now{background:#EEF5FE;}
.tk-table tbody tr.wkrow-next{background:#E2EFFC;}
.tk-table tbody tr.wkrow-next2{background:#D5E6FA;}
.tk-table tbody tr.wkrow-last:hover{background:#F8FBFF;}
.tk-table tbody tr.wkrow-now:hover{background:#E7F1FE;}
.tk-table tbody tr.wkrow-next:hover{background:#DAEAFB;}
.tk-table tbody tr.wkrow-next2:hover{background:#CBE0F8;}
.tk-table tbody tr.wkrow-now td:first-child{box-shadow:inset 3px 0 0 #1E9FFF;}
.tk-table tbody tr.tk-dragging td:first-child,
.tk-table tbody tr.tk-dragging:hover td:first-child{box-shadow:inset 3px 0 0 #1E9FFF;}
.tk-table tbody tr.tk-dragging,
.tk-table tbody tr.tk-dragging:hover{
  background:#E4F1FF;box-shadow:inset 0 0 0 1.5px #7BC0F7;
}
.tk-drag-col{width:26px;padding:0 0 0 6px !important;}
.drag-h{
  display:block;width:16px;text-align:center;line-height:1;color:#B7C4D2;font-size:16px;
  cursor:grab;opacity:0;transition:opacity .15s,color .15s;user-select:none;
}
tr:hover .drag-h{opacity:1;}
.drag-h:hover{color:#1E7FD9;}
.drag-h:active{cursor:grabbing;}
/* 收货款等「只读次序」的页签：行首不提供拖动，留一个极淡的中点占位，列宽与销售页对齐 */
.drag-h-off{
  display:block;width:16px;text-align:center;line-height:1;color:#DCE3EA;font-size:12px;
  cursor:default;user-select:none;
}
.tk-seq{color:#8794A3;font-size:13px;}
/* 次序：居中的序号输入框，改数字即重排 */
.tk-table.tk-edit .tk-seq .tk-seq-in{
  max-width:52px;text-align:center;font-variant-numeric:tabular-nums;
  color:#4B5B6B;font-weight:600;
}
.tk-profit{font-weight:600;color:#0E9F6E;}
.tk-remark{max-width:240px;overflow:hidden;text-overflow:ellipsis;color:var(--text-2);}
.tk-plane{
  display:inline-block;background:#FFF4E5;color:#C97A12;font-size:12px;line-height:17px;
  padding:0 6px;border-radius:5px;margin-right:6px;
}
/* 操作列：分装 / 审核 / 删除 三个按钮排在一行，等距居中，风格统一 */
.tk-ops{white-space:nowrap;vertical-align:middle;}
.tk-table.tk-edit td.tk-ops{padding:2px 6px;}
.tk-ops-w{display:flex;align-items:center;justify-content:center;gap:4px;}
.tk-act{
  display:inline-flex;align-items:center;justify-content:center;
  height:22px;padding:0 8px;border-radius:6px;border:1px solid transparent;
  background:transparent;color:#2C5878;font-size:12.5px;line-height:1;
  font-family:inherit;font-weight:500;cursor:pointer;white-space:nowrap;
  transition:background .12s,border-color .12s,color .12s;
}
.tk-act:hover{background:#F0F6FC;border-color:#D8E5F2;color:#1E7FD9;}
.tk-act:active{transform:translateY(.5px);}
/* 分装：入库车的主操作，绿色底一眼能认出来 */
.tk-split{color:#1B7F4B;background:#E9F8F0;border-color:#BEE7D2;font-weight:600;}
.tk-split:hover{background:#D9F2E5;border-color:#A3DBBC;color:#157347;}
/* 未审核时先灰掉，点了会提示先审核 */
.tk-split.is-off{color:#8FA3B4;background:#F4F7FA;border-color:#E2EAF2;font-weight:500;}
.tk-split.is-off:hover{background:#EDF2F7;border-color:#DCE5EE;color:#7C90A1;}
.tk-del{color:var(--err) !important;}
.tk-ops-w .tk-del:hover{background:#FDECEC !important;border-color:#F6C9C9 !important;color:#C53030 !important;}

@media (max-width:860px){
  .tk-ghead{flex-wrap:wrap;gap:6px;padding:10px 12px;}
  .tk-gmeta{width:100%;font-size:13px;}
  .tk-table th,.tk-table td{padding:4px 6px;}
  .tk-remark{max-width:120px;}
  .drag-h{opacity:.5;}
}

/* ---- 槽车销货单：Excel 式行内编辑 ---- */
.tk-card{
  background:#fff;border:1px solid var(--line);border-radius:12px;
  box-shadow:0 1px 3px rgba(16,64,120,.05);overflow:hidden;
}
.tk-card .toolbar{padding:7px 14px;border-bottom:1px solid #EDF2F7;display:flex;align-items:center;gap:10px;}
.tk-hint{font-size:13px;color:var(--text-3);}
.tk-hint b{color:#1E7FD9;}

/* ================= 槽车销售四个页签：头部三段高度写死（10-26 用户要求） =================
   ① .toolbar 标题条 38px  ② .tk-subbar 页签条 42px  ③ .tk-stats 统计条 50px
   提示文字一律单行省略（悬停看全文），谁都不能把头部撑高——
   于是「销售 / 收货款 / 付运费 / 分装记录」四页的表格顶边完全对齐，切页不再忽高忽低 */
.tk-card > .toolbar{height:38px;padding:0 14px;flex-wrap:nowrap;overflow:hidden;gap:10px;}
.tk-card > .toolbar > b{flex:0 0 auto;white-space:nowrap;}
.tk-card > .toolbar > .tk-hint{flex:1 1 auto;min-width:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  font-size:12.5px;line-height:1.4;}
.tk-card > .toolbar > .tk-tabs,
.tk-card > .toolbar > select,
.tk-card > .toolbar > .tk-lfgroup,
.tk-card > .toolbar > .tap-tip{flex:0 0 auto;}
.tk-card > .tk-subbar{height:42px;padding:0 14px;flex-wrap:nowrap;overflow:hidden;}.tk-card > .tk-stats{height:50px;padding:5px 14px 7px;overflow:hidden;align-items:stretch;}
/* 页签行右侧：搜索框 + 做合同 / 用印（原来这两个按钮在标题条最右边） */
.tk-subbar-rt{margin-left:auto;display:flex;align-items:center;gap:8px;flex:0 0 auto;min-width:0;}
.tk-subbar-rt .search{flex:0 1 auto;min-width:150px;}
/* 销售退货页：页签行右侧「搜索框 + 查询 / 重置」，与搜索框同高（29px），贴在页签行最右 */
.tk-subbar-rt .search{margin-left:0;width:220px;}
.tk-subbar-rt .btn{height:29px;padding:0 12px;font-size:13px;flex:0 0 auto;}
.tk-acts{display:inline-flex;align-items:center;gap:6px;}
.tk-acts .btn{height:27px;padding:0 10px;font-size:12.5px;}
.tk-acts .btn svg{width:14px;height:14px;}
/* 销售页签的信息条：原来页签行右侧的 KPI 文字，挪进统计条保持同一高度 */
.tk-infobar{display:flex;align-items:center;}
.tk-infobar .in{flex:1 1 auto;min-width:0;background:#F7FAFD;border:1px solid #E3EDF6;border-radius:9px;
  padding:6px 12px;font-size:12.5px;line-height:1.5;color:#6B7C8F;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tk-edit .tk-in{
  width:100%;min-width:64px;border:1px solid transparent;background:transparent;
  height:21px;box-sizing:border-box;padding:0 6px;border-radius:4px;
  font-size:14px;color:#22384D;font-family:inherit;line-height:19px;
}
/* 数字列右对齐、序号/周次/签收居中，保证表头与数据上下对齐 */
.tk-edit td.num .tk-in{text-align:right;font-variant-numeric:tabular-nums;}
.tk-edit td.tk-ctr .tk-in{text-align:center;}
/* 列宽（百分比，随屏宽自适应，永远整表铺满一屏不出横向滚动条）
   运价、车号拆成两列：运价紧跟采购单价，车号在备注之后、装载吨位之前 */
.tk-table.tk-edit{table-layout:fixed;min-width:900px;}
.tk-table.tk-edit col.c-drag{width:2.0%;}
.tk-table.tk-edit col.c-seq{width:3.0%;}
/* 计划名称最容易出现四字商品名（二氯甲烷 / 二氯乙烷 / 精制丙烷），
   列宽按「四个汉字必须完整（≈52px 文字 + 内边距）」定标：
   宽屏百分比 ≥6.4%，≤1450px 固定列宽模式下 104px，任何设备都不裁字 */
.tk-table.tk-edit col.c-plan{width:6.0%;}
.tk-table.tk-edit col.c-sup{width:6.0%;}
.tk-table.tk-edit col.c-cus{width:6.6%;}
.tk-table.tk-edit col.c-num{width:5.0%;}
.tk-table.tk-edit col.c-freight{width:5.2%;}
.tk-table.tk-edit col.c-sale{width:5.7%;}
.tk-table.tk-edit col.c-margin{width:4.5%;}
.tk-table.tk-edit col.c-qty{width:4.5%;}
.tk-table.tk-edit col.c-week{width:4.8%;}
.tk-table.tk-edit col.c-ck{width:3.9%;}
.tk-table.tk-edit col.c-note{width:auto;}
.tk-table.tk-edit col.c-plate{width:6.8%;}
.tk-table.tk-edit col.c-sign{width:5.0%;}
.tk-table.tk-edit col.c-loss{width:4.0%;}
.tk-table.tk-edit col.c-st{width:5.8%;}
.tk-table.tk-edit col.c-docs{width:4.3%;}
/* 操作列要同时放得下「分装 / 审核(反审核) / 删除」三个按钮，宽屏给到 8.8% */
.tk-table.tk-edit col.c-ops{width:8.8%;}
/* 居中表头（确认/签收/状态等）收窄内边距，避免四字标题撑宽列 */
.tk-table th.tk-ctr{padding-left:5px;padding-right:5px;}
/* 固定列宽后：输入框一律填满单元格，不再撑宽列 */
.tk-edit td .tk-in,.tk-edit td select.tk-in{min-width:0;}
.tk-edit td.tk-note .tk-in{color:#33495C;}
/* 备注列：单元格留白略宽，便于写文字 */
.tk-edit td.tk-note{padding-left:9px;padding-right:9px;}
/* 订单损耗：只显示数值（单位公斤由后台与表头说明承担），弱化为只读观感 */
.tk-edit td.tk-loss{color:#5A6B7B;font-variant-numeric:tabular-nums;cursor:default;}
/* 数字单元格去掉原生上下步进箭头（序号/单价/吨位等） */
.tk-edit input[type=number]{-moz-appearance:textfield;appearance:textfield;}
.tk-edit input[type=number]::-webkit-outer-spin-button,
.tk-edit input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0;width:0;height:0;}
.tk-edit .tk-in:hover{background:#F7FAFD;}
.tk-edit .tk-in:focus{outline:none;border-color:transparent;background:#EDF5FF;box-shadow:none;}
.tk-edit select.tk-in{
  cursor:pointer;min-width:0;width:100%;height:21px;padding:0 4px;
  -webkit-appearance:none;-moz-appearance:none;appearance:none;
  background-image:none !important;text-overflow:ellipsis;
}
.tk-edit select.tk-in::-ms-expand{display:none;}
/* 周排序：只保留文字颜色，不加背景色块（行底色由周次渐变承担） */
.tk-edit .tk-in.wk-last{background:transparent !important;color:#7C8CA0;}
.tk-edit .tk-in.wk-now{background:transparent !important;color:#1257C4;font-weight:600;}
.tk-edit .tk-in.wk-next{background:transparent !important;color:#1D6FD6;}
.tk-edit .tk-in.wk-next2{background:transparent !important;color:#14549F;}
.tk-edit .tk-in.wk-none{background:transparent !important;color:#8794A3;}
.tk-edit select.tk-in:focus{box-shadow:inset 0 0 0 1px rgba(30,136,229,.42);border-radius:9px;}
.tk-edit .tk-ck{text-align:center;}
.tk-edit .tk-sign{text-align:center;}
.tk-edit .tk-sign .tk-in{min-width:0;max-width:none;text-align:center;}
.tk-edit .tk-ckb{width:13px;height:13px;accent-color:#0E9F6E;cursor:pointer;}
.tk-edit .tk-ckb-ok{accent-color:#1E7FD9;}
/* 状态列：呼吸灯 + 文字（颜色区分阶段，文字说明当前进度） */
.tk-st{
  display:inline-flex;align-items:center;gap:5px;justify-content:center;
  height:19px;padding:0 8px 0 6px;border-radius:20px;
  font-size:13px;font-weight:600;letter-spacing:.2px;line-height:1;
  white-space:nowrap;cursor:default;--st-halo:rgba(0,0,0,.12);
}
/* 性能修复(10-28)：状态灯原来是无限循环动画（box-shadow + scale），box-shadow 无法 GPU 合成，
   一屏 30 行 × 60fps = 每秒 60 次整页样式重算与重绘，主线程闲时占用约 40%，平板/手机上点什么都要排队。
   实测关掉后主线程占用归零。状态本来已由颜色 + 文字区分，故取消无限动画，改为静态柔光底色（观感更稳）。 */
.tk-st .tk-dot{
  position:relative;
  width:7px;height:7px;border-radius:50%;background:currentColor;flex:none;
}
.tk-st .tk-dot::after{
  content:"";position:absolute;inset:-3px;border-radius:50%;background:var(--st-halo);
  pointer-events:none;
}
/* 全部呼吸灯同步呼吸（无相位差），整列呼吸节奏整齐划一 */
.tk-st em{font-style:normal;}
.tk-st.sale{color:#D93843;background:#FDEEEF;--st-halo:rgba(217,56,67,.24);}
.tk-st.wait{color:#C97A12;background:#FFF6E8;--st-halo:rgba(201,122,18,.24);}
.tk-st.shipped{color:#1E7FD9;background:#EAF3FE;--st-halo:rgba(30,127,217,.22);}
.tk-st.done{color:#0E9F6E;background:#EAF8F1;--st-halo:rgba(14,159,110,.22);}
.tk-st.draft{color:#8794A3;background:#F2F5F8;--st-halo:rgba(135,148,163,.2);}
.tk-edit td.tk-stage{text-align:center;padding-left:4px;padding-right:4px;}
@media (prefers-reduced-motion:reduce){
  .tk-st .tk-dot::after{animation:none;opacity:1;}
}
.tk-empty td{padding:26px 0;text-align:center;color:var(--text-3);font-size:13.5px;}
.tk-foot{
  display:flex;align-items:center;gap:10px;
  padding:6px 14px;border-top:1px solid #EDF2F7;background:#FCFDFE;
}
.tk-foot .btn-add{padding:4px 12px;font-size:13.5px;}
.tk-gsep td{
  background:linear-gradient(180deg,#FAFCFF,#F2F7FC);padding:9px 13px;
  border-top:1px solid #E7EEF6;white-space:nowrap;
}
.tk-gsep .tk-gname{margin:0 8px;}
@media (max-width:860px){
  .tk-edit .tk-in{min-width:56px;padding:0 5px;font-size:13px;}
  .tk-edit select.tk-in{min-width:66px;}
  .tk-hint{display:none;}
}

/* 运价 / 车号：拆为两列，各自独立输入框 */
/* 车号列：居中、加粗一档，像车牌一样醒目 */
.tk-edit td.tk-plate-td{padding:0 5px;text-align:center;}
.tk-edit .tk-plate{
  min-width:0;max-width:none;width:100%;text-align:center;
  font-weight:500;font-size:13.5px;
}
.tk-edit .tk-tax{
  flex:none;white-space:nowrap;padding:0 4px;height:12px;line-height:12px;
  border:1px solid transparent;box-sizing:border-box;border-radius:6px;
  font-size:8.5px;font-family:inherit;letter-spacing:.2px;
  cursor:pointer;transition:background .15s,color .15s,border-color .15s,box-shadow .15s;
}
/* 三态：未操作＝空心虚线灰（默认按含税，一眼看出「还没人动过」）；
   已确认含＝实心绿；已确认不含＝实心橙。空心 vs 实心，扫一眼就能区分操作过与没操作。 */
.tk-edit .tk-tax.def{
  background:#FFF;color:#93A2B2;border:1px dashed #C8D5E2;
  font-weight:500;
}
.tk-edit .tk-tax.def:hover{background:#F4F8FC;color:#5F7285;border-color:#A9BDD1;}
.tk-edit .tk-tax.in{
  background:#12A06A;color:#fff;border:1px solid #12A06A;font-weight:600;
  box-shadow:0 1px 2px rgba(18,160,106,.25);
}
.tk-edit .tk-tax.in:hover{background:#0E8A5B;border-color:#0E8A5B;}
.tk-edit .tk-tax.out{
  background:#E8761A;color:#fff;border:1px solid #E8761A;font-weight:600;
  box-shadow:0 1px 2px rgba(232,118,26,.25);
}
.tk-edit .tk-tax.out:hover{background:#D26612;border-color:#D26612;}
/* 价格格通用（含/不含 角标绝对定位于右上）：运价、销售单价 */
.tk-table.tk-edit td.tk-price-cell{position:relative;padding:0 6px;min-width:0;}
/* 运价 / 销售单价：右上角「含/不含」角标 */
/* 数字在格内居中（视觉偏左），右侧给角标让位，避免「含/不含」压住数字 */
.tk-edit td.tk-price-cell .tk-sale-price{
  width:100%;text-align:center;font-size:14px;font-weight:600;color:#2C4A66;
  padding:0 22px 0 2px;
}
.tk-edit td.tk-price-cell .tk-tax{
  position:absolute;top:0;right:2px;padding:0 3px;height:11px;line-height:9px;
  font-size:7.5px;border-radius:5px;letter-spacing:0;
}

/* ================= 运输 · 固定运价（车型 × 出发 → 到达） =================
   列：行首拖拽 | 车型 / 出发 / 到达 / 吨运价 / 趟运价 / 载重(吨) / 载重(桶) / 备注 | 操作
   表格观感整体对齐「进销 · 桶装销售」（bk-table）：同款字号、同款输入框、
   行首拖拽列右侧同样那道由深到浅的「斜坡」阴影，把操作区与数据区分开。
   吨运价 / 趟运价 / 载重全部手工填写，系统不做任何换算。
   列宽跟随「全站表格列宽公约」：按内容自动定宽、不铺满一屏 */
.tk-table.tk-edit.fr-table{font-size:15.5px;}
.fr-table .tk-in{font-size:15px;height:25px;line-height:23px;padding:0 7px;}
.fr-table select.tk-in{height:25px;}
/* 车型下拉：宽度够放下「槽车 / 高栏 / 箱货 / 福特」，与桶装销售里的下拉同一观感 */
.fr-table select.fr-type{width:100%;min-width:76px;}
/* 行首拖拽列：窄手柄列 + 右缘坡面阴影（与桶装 / 槽车销货单同款） */
.fr-table .tk-drag-col{width:22px;padding:0 0 0 6px !important;}
.fr-table th.tk-drag-col,
.fr-table td.tk-drag-col{position:relative;border-right:none !important;}
.fr-table th.tk-drag-col::after,
.fr-table td.tk-drag-col::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:8px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));
}
/* 数字列（吨运价 / 趟运价 / 载重）：等宽数字，读数成列 */
.fr-table td.fr-num input.tk-in{font-variant-numeric:tabular-nums;}
.fr-table tbody tr.fr-empty:hover{background:transparent;}
.fr-table tbody tr.fr-empty td{text-align:center;color:#93A5B6;padding:26px 0;background:#fff;font-size:14px;}

/* 10-29 运输两页 1:1 复刻「进销 · 桶装销售」观感：
   固定运价 / 流水表挂 bk-look + bk-zebra（表头渐变 / 格内竖线 / 斑马纹 / 悬停 / 拖动高亮同款）；
   流水表没有拖拽列，首列（序号）右缘补同款坡面，左边观感与桶装销货单一致 */
.tk-table.bk-look.pt-table th:first-child,
.tk-table.bk-look.pt-table td:first-child{position:relative;}
.tk-table.bk-look.pt-table th:first-child::after,
.tk-table.bk-look.pt-table td:first-child::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:8px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));
}
/* 数字列（含固定磅费）等宽数字，读数成列 */
.fr-table td.fr-num input.tk-in{font-variant-numeric:tabular-nums;}

/* ================= 运输 · 合作槽车（流水页签） =================
   12 列：序号 / 车号 / 承运时间 / 出发地 / 目的地 / 运价 / 运损 / 承运介质 / 车主姓名 / 随车电话 / 车辆资质 / 简介
   前 8 列全部来自「进销 · 槽车销售」已归档的订单（只读，不结算）；
   后 4 列是这台车自己的资料（车主姓名 / 随车电话 / 车辆资质 / 简介），点格子直接改、改完自动保存，
   同一个车号的所有车次共用一份资料，改一次全表同步。
   列宽同样交给文末「全站表格列宽公约」：按内容定宽、不铺满一屏 */
.pt-table .tk-in{
  width:100%;min-width:82px;box-sizing:border-box;padding:0 7px;height:25px;
  border:1px solid transparent;background:transparent;border-radius:4px;
  font-size:14.5px;color:#22384D;font-family:inherit;line-height:23px;
}
.pt-table .tk-in:hover{background:#F7FAFD;}
.pt-table .tk-in:focus{outline:none;background:#EDF5FF;border-color:#BBDDFB;}
.pt-table .tk-in:disabled{background:transparent;color:#BAC6D2;cursor:default;}
.pt-table td.tk-note .tk-in{min-width:160px;text-align:left;}
/* 运价右上角「含 / 不含」角标：与进销 · 槽车销售同一套三态（未确认虚线灰 / 含实心绿 / 不含实心橙） */
.pt-table .tk-tax{
  display:inline-block;white-space:nowrap;padding:0 4px;margin-left:3px;
  height:12px;line-height:12px;border:1px solid transparent;border-radius:6px;
  font-size:8.5px;font-family:inherit;letter-spacing:.2px;vertical-align:1px;
}
.pt-table .tk-tax.def{background:#FFF;color:#93A2B2;border:1px dashed #C8D5E2;font-weight:500;}
.pt-table .tk-tax.in{background:#12A06A;color:#fff;border:1px solid #12A06A;font-weight:600;
  box-shadow:0 1px 2px rgba(18,160,106,.25);}
.pt-table .tk-tax.out{background:#E8761A;color:#fff;border:1px solid #E8761A;font-weight:600;
  box-shadow:0 1px 2px rgba(232,118,26,.25);}
.pt-table td.num{font-variant-numeric:tabular-nums;}
/* 车辆资质列：只传文件（图片 / PDF / 压缩包），拖到这一格就传，点开是这台车的资质面板 */
.pt-table td.pt-docs{padding:1px 3px;text-align:center;white-space:nowrap;}
.pt-table td.pt-docs.hot{background:#E4F1FE;box-shadow:inset 0 0 0 2px #1E7FD9;border-radius:5px;}
.pt-table td.pt-docs.hot .tk-doc-btn{border-color:#1E7FD9;color:#1E7FD9;background:#fff;}
.pt-table td.pt-docs.hot .tk-th{opacity:.55;}
.pt-table td.pt-docs .tk-doc-btn{width:auto;min-width:58px;height:23px;padding:0 8px;}
.pt-doc-none{color:#C3CFDB;font-size:12px;}
.pt-warn{
  display:inline-flex;align-items:center;gap:3px;padding:1px 8px;height:20px;line-height:18px;
  border:1px solid #F2D7A8;border-radius:10px;background:#FFF8E9;color:#B7791F;
  font-size:12px;font-weight:600;white-space:nowrap;cursor:default;
}

/* ================= 槽车票据列（发票 / 合同 / 签单） ================= */
.tk-table.tk-edit td.tk-docs{padding:1px 3px;text-align:center;}
.tk-doc-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:3px;
  width:100%;height:20px;box-sizing:border-box;padding:0 4px;
  border:1px dashed #D3E0EC;border-radius:5px;background:#FBFDFF;
  color:#9BAAB8;font-family:inherit;font-size:11px;line-height:1;cursor:pointer;
  transition:background .15s,border-color .15s,color .15s;
}
.tk-doc-btn svg{width:15px;height:15px;flex:none;}
.tk-doc-btn b{font-size:11.5px;font-weight:600;letter-spacing:.2px;}
.tk-doc-btn:hover{border-color:#9CC4E8;color:#1E7FD9;background:#F2F8FF;}
.tk-doc-btn.has{border-style:solid;border-color:#CFE3F7;background:#EDF6FF;color:#1E7FD9;}
.tk-doc-btn.has:hover{background:#E1EFFD;}
.tk-doc-none{color:#C3CFDB;font-size:12px;}

/* 票据小缩略图带：最多 3 张竖版小图，多出的折成 +N */
.tk-doc-strip{
  display:inline-flex;align-items:center;justify-content:center;gap:2.5px;
  padding:1px 0;cursor:pointer;vertical-align:middle;
}
.tk-th{
  position:relative;flex:none;display:block;width:19px;height:25px;
  border:1px solid #DCE7F3;border-radius:3.5px;overflow:hidden;background:#fff;
  box-shadow:0 1px 2px rgba(16,64,120,.07);
  transition:transform .16s cubic-bezier(.34,1.4,.64,1),box-shadow .16s,border-color .16s;
}
.tk-th img{width:100%;height:100%;object-fit:cover;display:block;}
.tk-th:hover,.tk-th:focus-visible{
  transform:translateY(-2px) scale(1.08);border-color:#57A6E8;
  box-shadow:0 4px 10px rgba(24,110,200,.24);outline:none;z-index:2;
}
.tk-th.pdf{background:linear-gradient(180deg,#FFF7F7,#FDECEE);border-color:#F3D3D6;}
.tk-th.pdf:hover{border-color:#E79AA0;}
/* 压缩包（zip / rar / 7z）：中性冷色，跟 PDF 的红区分开 */
.tk-th.zip{background:linear-gradient(180deg,#F6F9FC,#EAF1F8);border-color:#D6E2EE;}
.tk-th.zip:hover{border-color:#8FB6DB;}
.tk-th.zip .tk-th-tag{color:#4A6E90;}
.tk-th-tag{
  display:flex;align-items:center;justify-content:center;width:100%;height:100%;
  font-style:normal;font-size:6px;font-weight:700;letter-spacing:.1px;color:#D8454F;
}
.tk-th-more{
  flex:none;display:inline-flex;align-items:center;justify-content:center;
  height:19px;min-width:19px;padding:0 3px;box-sizing:border-box;
  border-radius:10px;background:#EAF3FE;color:#1E7FD9;
  font-size:10.5px;font-weight:600;letter-spacing:0;transition:background .15s;
}
.tk-doc-strip:hover .tk-th-more{background:#D8EAFD;}
@media (max-width:1240px){
  .tk-th{width:17px;height:23px;border-radius:3px;}
  .tk-th-tag{font-size:5.5px;}
  .tk-th-more{height:17px;min-width:17px;font-size:10px;}
}

/* 悬浮放大预览（单例浮层，跟随缩略图） */
.tk-th-tip{
  position:fixed;left:0;top:0;z-index:1500;pointer-events:none;
  padding:6px 6px 5px;border-radius:11px;background:#fff;
  border:1px solid #E3ECF6;box-shadow:0 16px 38px rgba(12,40,70,.20),0 2px 6px rgba(12,40,70,.08);
  opacity:0;transform:scale(.93);transition:opacity .13s ease,transform .13s cubic-bezier(.3,1.2,.5,1);
}
.tk-th-tip.on{opacity:1;transform:scale(1);}
.tk-th-tip-body{
  width:226px;height:280px;border-radius:7px;overflow:hidden;background:#F4F8FC;
  display:flex;align-items:center;justify-content:center;
}
.tk-th-tip-body img{max-width:100%;max-height:100%;display:block;object-fit:contain;}
.tk-th-tip-body.pdf{height:126px;background:linear-gradient(180deg,#FFF8F8,#FDEDEF);}
.tk-th-tip-body.pdf i{font-style:normal;font-size:22px;font-weight:700;letter-spacing:2px;color:#D8454F;opacity:.85;}
.tk-th-tip-cap{
  display:flex;align-items:center;gap:8px;padding:6px 2px 0;max-width:226px;
  font-size:12px;color:#93A3B3;
}
.tk-th-tip-cap b{
  flex:1;min-width:0;font-weight:600;font-size:12.5px;color:#22384D;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.tk-th-tip-cap span{flex:none;font-variant-numeric:tabular-nums;}

/* 拖动文件经过某一行时高亮票据格 */
.tk-table.tk-edit td.tk-docs.hot{
  background:#E4F1FE;box-shadow:inset 0 0 0 2px #1E7FD9;border-radius:5px;
}
.tk-table.tk-edit td.tk-docs.hot .tk-doc-btn{border-color:#1E7FD9;color:#1E7FD9;background:#fff;}
.tk-table.tk-edit td.tk-docs.hot .tk-th{opacity:.55;}

/* 客户管理 · 资质证照列：和槽车「票据」同款——空态虚线拖入、有文件排小缩略图 */
table td.td-cusdocs{text-align:center;}
table td.td-cusdocs .tk-doc-btn{width:auto;min-width:56px;padding:0 8px;}
table td.td-cusdocs.hot{
  background:#E4F1FE;box-shadow:inset 0 0 0 2px #1E7FD9;border-radius:5px;
}
table td.td-cusdocs.hot .tk-doc-btn{border-color:#1E7FD9;color:#1E7FD9;background:#fff;}
table td.td-cusdocs.hot .tk-th{opacity:.55;}

/* 票据面板 */
.doc-mask{
  position:fixed;inset:0;z-index:1200;background:rgba(15,32,52,.42);
  backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:16px;
}
.doc-panel{
  width:min(700px,94vw);max-height:84vh;background:#fff;border-radius:16px;
  box-shadow:0 18px 48px rgba(12,40,70,.24);display:flex;flex-direction:column;overflow:hidden;
}
.doc-head{
  display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid #EDF2F7;flex:none;
}
.doc-tt{display:flex;align-items:baseline;gap:8px;min-width:0;}
.doc-tt b{font-size:16px;color:#162C42;letter-spacing:.3px;}
.doc-tt span{font-size:13px;color:#8A98A7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.doc-x{
  margin-left:auto;flex:none;width:28px;height:28px;border-radius:8px;border:0;background:transparent;
  color:#8A98A7;cursor:pointer;display:grid;place-items:center;
}
.doc-x:hover{background:#F2F5F8;color:#3A4C5E;}
.doc-x svg{width:16px;height:16px;}
.doc-drop{
  margin:14px 16px 4px;padding:13px 14px;border:1.5px dashed #C9DCEE;border-radius:12px;
  background:#F8FBFF;display:flex;align-items:center;gap:12px;transition:background .15s,border-color .15s;
}
.doc-drop.hot{border-color:#1E7FD9;background:#EAF3FE;}
.doc-drop-ic{width:26px;height:26px;color:#7CA6CC;flex:none;}
.doc-drop-ic svg{width:26px;height:26px;}
.doc-drop-tx{min-width:0;flex:1;}
.doc-drop-tx b{display:block;font-size:14px;color:#22384D;font-weight:600;}
.doc-drop-tx span{display:block;font-size:12.5px;color:#90A4B8;margin-top:2px;}
.doc-pick{flex:none;white-space:nowrap;margin:0;}
.doc-list{flex:1;overflow:auto;padding:6px 16px 2px;min-height:120px;}
.doc-loading,.doc-empty{
  display:flex;align-items:center;justify-content:center;gap:8px;
  padding:30px 0;color:#90A4B8;font-size:13.5px;
}
.doc-item{
  display:flex;align-items:center;gap:10px;padding:8px 2px;border-bottom:1px solid #F1F5F9;
}
.doc-item:last-child{border-bottom:0;}
.doc-thumb{
  width:40px;height:40px;flex:none;border-radius:8px;overflow:hidden;
  display:grid;place-items:center;background:#F2F6FA;color:#6E8BA6;
  font-size:11px;font-weight:600;letter-spacing:.4px;text-decoration:none;
}
.doc-thumb img{width:40px;height:40px;object-fit:cover;display:block;}
.doc-thumb.pdf{background:#FDF0F1;color:#D93843;}
.doc-meta{flex:1;min-width:0;}
.doc-nm{
  display:block;font-size:13.5px;color:#22384D;text-decoration:none;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.doc-nm:hover{color:#1E7FD9;}
.doc-sub{font-size:12px;color:#9BAAB8;margin-top:2px;}
.doc-a{
  flex:none;font-size:13px;color:#1E7FD9;text-decoration:none;padding:2px 7px;border-radius:6px;
  background:transparent;border:0;cursor:pointer;font-family:inherit;
}
.doc-a:hover{background:#EDF6FF;}
.doc-a.doc-rm{color:#D93843;}
.doc-a.doc-rm:hover{background:#FDEEEF;}
.doc-tip{padding:8px 16px 14px;font-size:12px;color:#A6B4C2;flex:none;}

@media (max-width:860px){
  .doc-drop{flex-wrap:wrap;}
  .doc-pick{margin-left:38px;}
}
/* 窄屏（≤1300px）表头字号与内边距微收，避免「订单损耗」等四字标题被裁切 */
@media (max-width:1300px){
  .tk-table.tk-edit thead th{font-size:12.5px;padding-left:4px;padding-right:4px;}
}
@media (max-width:1300px){
  .tk-table.tk-edit thead th.tk-ctr{padding-left:2px;padding-right:2px;}
}

/* ================= 中屏及以下（≤1700px）：不再强求「一屏铺满」，按最小可读宽度完整呈现 =================
   ≥1701px（宽屏台式）仍旧百分比列宽铺满一屏；
   ≤1700px（笔记本、平板、手机）19 列挤在一屏里每列只剩 50~65px，
   「二氯甲烷」这类四字计划名称只能露出两个字，因此改为固定列宽 + 表格最小总宽，
   每列都给足「四个汉字 / 完整数字」的宽度，字段完整不裁切，超出部分横向滑动查看。 */
@media (max-width:1700px){
  .tk-table.tk-edit{
    table-layout:fixed;
    min-width:1681px;      /* 列固定宽之和，横向滚动而不挤压 */
    width:100%;
  }
  .tk-table.tk-edit col.c-drag{width:26px;}
  .tk-table.tk-edit col.c-seq{width:48px;}
  .tk-table.tk-edit col.c-plan{width:104px;}
  .tk-table.tk-edit col.c-sup{width:112px;}
  .tk-table.tk-edit col.c-cus{width:122px;}
  .tk-table.tk-edit col.c-num{width:84px;}
  .tk-table.tk-edit col.c-freight{width:84px;}
  .tk-table.tk-edit col.c-sale{width:86px;}
  .tk-table.tk-edit col.c-week{width:74px;}
  .tk-table.tk-edit col.c-ck{width:58px;}
  .tk-table.tk-edit col.c-note{width:160px;}
  .tk-table.tk-edit col.c-plate{width:100px;}
  .tk-table.tk-edit col.c-sign{width:84px;}
  .tk-table.tk-edit col.c-loss{width:60px;}
  .tk-table.tk-edit col.c-st{width:86px;}
  .tk-table.tk-edit col.c-docs{width:56px;}
  .tk-table.tk-edit col.c-ops{width:162px;}

  /* 列宽不再紧张，表头恢复到舒服的字号与内边距（覆盖 ≤1300 的收窄规则） */
  .tk-table.tk-edit thead th,
  .tk-table.tk-edit thead th.tk-ctr{font-size:13px;padding-left:7px;padding-right:7px;}
}

/* ================= 平板 / 手机：触摸操作与横向滑动体验 =================
   ≤1240px 再额外给足点击面积、滚动条常显。 */
@media (max-width:1240px){
  /* 触摸操作：单元格与输入框给足点击面积 */
  .tk-table.tk-edit td{padding-top:3px;padding-bottom:3px;}
  .tk-edit .tk-in{height:26px;line-height:24px;font-size:14px;}
  .tk-edit select.tk-in{height:26px;}
  .tk-edit .tk-plate{height:20px;line-height:18px;font-size:13px;}
  .tk-edit .tk-ckb{width:16px;height:16px;}
  .tk-edit .tk-st{height:22px;padding:0 8px 0 6px;font-size:12.5px;}
  .tk-edit .tk-doc-btn{height:24px;font-size:12px;}
  .tk-edit .tk-act{height:26px;padding:0 8px;font-size:13px;}

  /* 横向滑动时滚动条常显、加粗，提示右侧还有内容 */
  .table-scroll{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;}
  .table-scroll::-webkit-scrollbar{height:10px;}
  .table-scroll::-webkit-scrollbar-thumb{background:#C9D6E3;border-radius:6px;}
  .table-scroll::-webkit-scrollbar-thumb:hover{background:#AFC2D4;}
  .table-scroll::-webkit-scrollbar-track{background:#F4F8FB;}
}
/* 手机竖屏：进一步给操作与票据列留足宽度，其余列不变 */
@media (max-width:640px){
  .tk-table.tk-edit{min-width:1690px;}
  .tk-table.tk-edit col.c-ops{width:170px;}
}

/* ================= 文档库（标准文档 / 协议及合同 / 检测报告及其他文件） ================= */
.doc-card{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 1px 3px rgba(16,64,120,.05);overflow:hidden;}
.doc-bar{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #EDF2F7;background:#FBFDFE;flex-wrap:wrap;}
.doc-crumbs{display:flex;align-items:center;gap:1px;font-size:13.5px;color:var(--text-3);min-width:0;flex-wrap:wrap;}
.doc-crumbs a{color:#2C4A66;padding:3px 7px;border-radius:5px;cursor:pointer;white-space:nowrap;}
.doc-crumbs a:hover{background:#EAF3FE;color:#1E7FD9;}
.doc-crumbs .sep{color:#B9C6D3;font-size:12px;padding:0 1px;}
.doc-kw-tip{font-size:13.5px;color:#1E7FD9;}
.doc-search{width:220px;flex:none;}
.doc-search input{width:100%;}
/* 视图切换 */
.doc-seg{display:inline-flex;border:1px solid #D9E3EE;border-radius:6px;overflow:hidden;background:#fff;flex:none;}
.doc-seg button{border:0;background:#fff;width:34px;height:30px;font-size:15px;color:#7A8B9C;cursor:pointer;line-height:1;}
.doc-seg button.on{background:#EAF3FE;color:#1E7FD9;}
/* 拖放区 */
.dk-drop{position:relative;padding:14px;min-height:340px;transition:background .15s;}
.dk-drop.hot{background:#F4FAFF;}
.dk-drop.hot::after{
  content:"松开即可上传";position:absolute;inset:8px;display:grid;place-items:center;z-index:6;
  background:rgba(30,159,255,.07);border:2px dashed #6FB6F2;border-radius:10px;
  color:#1E7FD9;font-size:16px;font-weight:600;pointer-events:none;
}
.dk-hint{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:26px 10px 14px;color:#9AAAB9;}
.dk-hint.off{display:none;}
.dk-hint b{font-size:15px;color:#2C4A66;font-weight:600;}
.dk-hint span{font-size:13px;}
.doc-none{padding:56px 12px;text-align:center;color:#93A3B3;font-size:14px;}
/* 缩略图网格 */
.dk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:8px;}
.dk-item{
  position:relative;border:1px solid transparent;border-radius:10px;padding:9px 8px 8px;
  cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;user-select:none;
}
.dk-item:hover{background:#F6FAFF;border-color:#DCE9F7;box-shadow:0 8px 18px -14px rgba(16,64,120,.6);}
.dk-item.drop-hot{background:#EAF5FF;border-color:#6FB6F2;}
.dt{height:84px;border-radius:8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;margin-bottom:8px;overflow:hidden;background:#F4F8FC;}
.dt-img{padding:0;background:#EEF3F8;}
.dt-img img{width:100%;height:100%;object-fit:cover;display:block;}
/* PDF 封面：整页渲染后只露顶部（标题+正文开头），比居中裁更能认出是哪份文件 */
.dt-pdfcover{background:#fff;}
.dt-pdfcover img{object-position:top center;}
.dt-folder{background:transparent;position:relative;}
.dt-folder svg{width:54px;height:54px;fill:#FFC94D;filter:drop-shadow(0 4px 6px rgba(255,180,40,.32));}
/* 客户名自动生成的文件夹：淡蓝夹身 + 角标，和手工文件夹一眼区分 */
.dt-folder.dt-cus svg{fill:#7FB6E8;filter:drop-shadow(0 4px 6px rgba(52,130,206,.28));}
.dt-ct{
  position:absolute;right:16px;bottom:4px;font-style:normal;font-size:10px;line-height:1;
  color:#fff;background:#4C93D8;border-radius:4px;padding:2px 4px;letter-spacing:.5px;
  box-shadow:0 1px 3px rgba(40,110,180,.35);
}
.dk-item.is-cus .di-name{color:#1D4E78;}
.dt-badge{background:linear-gradient(180deg,#FCFDFF,#F1F6FB);border:1px solid #E8F0F8;}
.dt-badge b{font-size:25px;line-height:1;letter-spacing:.5px;font-weight:700;}
.dt-badge span{font-size:10.5px;color:#98A8B8;letter-spacing:.5px;}
.dt-pdf b{color:#E04B4B;} .dt-word b{color:#2B6CB0;} .dt-excel b{color:#12855B;}
.dt-ppt b{color:#D97706;} .dt-txt b{color:#5A6B7B;} .dt-zip b{color:#8A6D3B;} .dt-other b{color:#7A8B9C;}
.di-name{font-size:13.5px;color:#22384D;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;min-height:34px;}
.di-meta{font-size:12px;color:#93A3B3;margin-top:2px;}
.di-acts{
  position:absolute;top:5px;right:5px;display:flex;gap:1px;padding:2px;border-radius:6px;
  background:rgba(255,255,255,.94);box-shadow:0 2px 8px rgba(16,64,120,.14);
  opacity:0;transition:opacity .15s;z-index:3;
}
.dk-item:hover .di-acts{opacity:1;}
.di-acts button{border:0;background:none;width:20px;height:20px;padding:0;font-size:13px;line-height:1;color:#7A8B9C;cursor:pointer;border-radius:4px;}
.di-acts button:hover{background:#EAF3FE;color:#1E7FD9;}
@media (pointer:coarse){ .di-acts{opacity:1;} }
/* 列表视图 */
.doc-table{width:100%;border-collapse:collapse;font-size:14px;}
.doc-table thead th{background:#FAFCFE;color:#5E7285;font-weight:600;text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);font-size:13.5px;white-space:nowrap;}
.doc-table td{padding:9px 12px;border-bottom:1px solid #F1F5F9;color:#22384D;white-space:nowrap;}
.doc-table tbody tr{cursor:pointer;}
.doc-table tbody tr:hover{background:#F8FBFF;}
.doc-table td.dt-name{max-width:520px;overflow:hidden;text-overflow:ellipsis;}
.doc-table .num{text-align:right;font-variant-numeric:tabular-nums;}
.dt-mini{display:inline-block;min-width:32px;margin-right:6px;font-size:11px;color:#7A8B9C;text-align:center;}
.dt-mini.dt-folder{background:transparent;height:auto;}
.doc-row-acts{white-space:nowrap;}

/* 地址地图选点 */
.map-pick{
  background:#fff;border-radius:12px;width:100%;max-width:760px;margin:auto;
  max-height:calc(100vh - 44px);display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 24px 60px -20px rgba(6,30,60,.5);
}
.mp-head{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid #EDF2F7;font-size:15px;font-weight:600;}
.mp-head .spacer{flex:1;}
.mp-x{border:none;background:transparent;font-size:16px;color:#8B9BAB;cursor:pointer;line-height:1;}
.mp-x:hover{color:#E14B4B;}
.mp-bar{display:flex;gap:8px;padding:10px 14px;}
.mp-bar input{
  flex:1;height:34px;border:1px solid #D5DEE7;border-radius:5px;padding:0 10px;font-size:14px;
  font-family:inherit;outline:none;color:var(--text);
}
.mp-bar input:focus{border-color:#1E9FFF;box-shadow:0 0 0 3px rgba(30,159,255,.12);}
.mp-map{height:340px;background:#EDF2F7;position:relative;}
.mp-nomap{
  height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:20px;text-align:center;color:#6B7C8D;font-size:14px;
}
.mp-nomap small{color:#9AA8B6;font-size:13px;line-height:1.7;}
.mp-list{max-height:176px;overflow:auto;border-top:1px solid #EDF2F7;}
.mp-item{padding:8px 14px;border-bottom:1px solid #F1F5F9;cursor:pointer;display:flex;flex-direction:column;gap:2px;}
.mp-item:hover,.mp-item.on{background:#EAF4FE;}
.mp-item b{font-size:14px;color:#22384D;font-weight:600;}
.mp-item span{font-size:13px;color:#8B9BAB;}
.mp-empty{padding:14px;text-align:center;color:#8B9BAB;font-size:13.5px;}
.mp-foot{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid #EDF2F7;background:#FBFDFE;}
.mp-foot .spacer{flex:1;}
.mp-tip{font-size:13px;color:#8B9BAB;}
@media (max-width:640px){
  .mp-map{height:260px;}
  .mp-list{max-height:140px;}
}

/* 在线文档编辑器 */
.doc-edit-mask{position:fixed;inset:0;background:rgba(12,30,50,.45);z-index:120;display:flex;padding:22px;}
.doc-edit{
  background:#fff;border-radius:12px;width:100%;max-width:940px;margin:auto;
  height:calc(100vh - 44px);display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 30px 70px -22px rgba(6,30,60,.55);
}
.de-head{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid #EDF2F7;flex-wrap:wrap;}
.de-ic{font-size:11px;font-weight:700;color:#2B6CB0;background:#EAF2FB;border-radius:4px;padding:3px 6px;letter-spacing:.6px;}
.de-name{
  flex:1 1 200px;min-width:120px;border:1px solid transparent;background:#F7FAFD;border-radius:6px;
  height:30px;padding:0 9px;font-size:15px;font-weight:600;color:#22384D;outline:none;font-family:inherit;
}
.de-name:focus{background:#fff;border-color:#8FC4EE;}
.de-dirty{font-size:12px;color:#9AAAB9;background:#F2F6FA;border-radius:10px;padding:2px 8px;white-space:nowrap;}
.de-dirty.on{color:#C4761A;background:#FFF3E2;}
.de-tools{display:flex;align-items:center;gap:3px;padding:6px 12px;border-bottom:1px solid #EDF2F7;background:#FBFDFE;flex-wrap:wrap;}
.de-tools button{height:26px;min-width:28px;padding:0 8px;border:1px solid transparent;background:#fff;border-radius:5px;font-size:13.5px;color:#42586C;cursor:pointer;font-family:inherit;line-height:1;}
.de-tools button:hover{background:#EAF3FE;color:#1E7FD9;}
.de-tools select,.de-tools .nsel-inp{height:26px;border:1px solid #DCE6F0;border-radius:5px;font-size:13.5px;color:#42586C;background:#fff;padding:0 4px;font-family:inherit;}
.de-sep{width:1px;height:16px;background:#E2EAF3;margin:0 4px;flex:none;}
.de-body{flex:1;overflow:auto;padding:28px 36px;font-size:16px;line-height:1.85;color:#22384D;outline:none;}
.de-body h1{font-size:23px;margin:.5em 0 .4em;} .de-body h2{font-size:19px;margin:.5em 0 .35em;} .de-body h3{font-size:17px;}
.de-body p{margin:.35em 0;} .de-body ul,.de-body ol{padding-left:24px;margin:.35em 0;}
.de-body img{max-width:100%;}
.de-body table{border-collapse:collapse;} .de-body td,.de-body th{border:1px solid #D8E2EC;padding:5px 9px;}
.de-foot{display:flex;align-items:center;gap:10px;padding:7px 14px;border-top:1px solid #EDF2F7;background:#FBFDFE;font-size:12.5px;color:#93A3B3;}
/* 图片 / PDF 预览 */
.doc-pv-mask{position:fixed;inset:0;background:rgba(10,26,44,.74);z-index:130;display:flex;padding:20px;}
.doc-pv{background:#fff;border-radius:12px;width:100%;max-width:1080px;height:calc(100vh - 40px);margin:auto;display:flex;flex-direction:column;overflow:hidden;}
.dp-head{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #EDF2F7;font-size:14px;color:#22384D;}
.dp-size{font-size:12.5px;color:#93A3B3;}
.dp-img{flex:1;display:grid;place-items:center;background:#0F1D2B;overflow:auto;}
.dp-img img{max-width:100%;max-height:100%;display:block;}
.dp-pdf{flex:1;border:0;width:100%;background:#fff;}
/* Word 高保真预览（docx-preview）：仿桌面 Word 的灰色画布 + 白纸阴影分页 */
.dp-docx{flex:1;overflow:auto;background:#6B7075;}
.dp-docx-loading{display:grid;place-items:center;min-height:300px;color:#E8EEF4;font-size:14px;text-align:center;line-height:2.2;padding:30px;}
.dp-docx .docx-wrapper{background:transparent;padding:26px 0;}
.dp-docx .docx-wrapper > section.docx{box-shadow:0 6px 24px rgba(0,0,0,.42);margin:0 auto 22px;}
@media (max-width:860px){
  .doc-edit-mask,.doc-pv-mask{padding:0;}
  .doc-edit,.doc-pv{border-radius:0;height:100vh;max-width:none;}
  .de-body{padding:18px 16px;font-size:16px;}
  .de-tools{overflow-x:auto;flex-wrap:nowrap;}
  .dk-grid{grid-template-columns:repeat(auto-fill,minmax(108px,1fr));}
  .doc-search{width:100%;}
  .doc-bar{padding:8px 10px;}
  .dk-drop{padding:10px;}
  /* Word 预览头部：小屏按钮换行，文件名占整行 */
  .dp-head{flex-wrap:wrap;}
  .dp-head b{flex-basis:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .dp-head .spacer{display:none;}
  .dp-head .btn{padding:5px 10px;}
}

/* ---- 文档中心：三个主页签（复用销售中心的纸页切换，纸页停在当前那一格） ---- */
.dk-strip{grid-template-columns:1fr 1fr 1fr;}
/* 默认：纸页在第一格（标准文档） */
.dk-strip .sc-flip b,.dk-strip .sc-flip i{
  clip-path:polygon(0 0,calc(33.34% + 24px) 0,33.34% 100%,0 100%);
}
/* 第二格：往来资料 */
.dk-strip[data-active="contact"] .sc-flip{filter:drop-shadow(0 4px 5px rgba(23,78,140,.12));}
.dk-strip[data-active="contact"] .sc-flip b,
.dk-strip[data-active="contact"] .sc-flip i{
  clip-path:polygon(33.34% 0,66.66% 0,66.66% 100%,33.34% 100%);
}
.dk-strip[data-active="contact"] .sc-flip b{transform:translateX(0);}
/* 第三格：票据 */
.dk-strip[data-active="bill"] .sc-flip{filter:drop-shadow(-5px 4px 5px rgba(23,78,140,.16));}
.dk-strip[data-active="bill"] .sc-flip b,
.dk-strip[data-active="bill"] .sc-flip i{
  clip-path:polygon(calc(66.66% - 24px) 0,100% 0,100% 100%,66.66% 100%);
}
.dk-strip[data-active="bill"] .sc-flip b{transform:translateX(-4px);}
.dk-strip .sc-tab{font-size:15px;}
.dk-strip .sc-cnt{min-width:20px;}
#docPanel{transition:opacity .14s ease,transform .18s ease;}
#docPanel.sc-out-l{opacity:0;transform:translateX(-14px);}
#docPanel.sc-out-r{opacity:0;transform:translateX(14px);}
#docPanel.sc-in-r{animation:scInR .34s cubic-bezier(.22,.9,.28,1) both;}
#docPanel.sc-in-l{animation:scInL .34s cubic-bezier(.22,.9,.28,1) both;}
/* 主页签下面的两个小按钮：内部文件 / 检测报告 · 供应商 / 客户 */
.dk-subbar{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #EDF2F7;background:#FCFDFE;flex-wrap:wrap;}
.dk-sub{display:inline-flex;gap:2px;padding:2px;border:1px solid #DFE8F1;border-radius:7px;background:#F2F6FA;flex:none;}
.dk-sub button{
  border:0;background:transparent;border-radius:5px;cursor:pointer;
  padding:4px 15px;font-size:13.5px;font-weight:600;color:#5D6E7F;line-height:1.5;transition:background .18s,color .18s,box-shadow .18s;
}
.dk-sub button:hover{color:#1668E3;}
.dk-sub button.on{background:#fff;color:#1668E3;box-shadow:0 1px 3px rgba(16,64,120,.14);}
.dk-subhint{font-size:12.5px;color:#8C9AA8;min-width:0;}
/* 内容区左右滑入（小按钮切换用，与主纸页同一套观感） */
#docDrop.sc-out-l{opacity:0;transform:translateX(-14px);}
#docDrop.sc-out-r{opacity:0;transform:translateX(14px);}
#docDrop{transition:opacity .14s ease,transform .18s ease;}
#docDrop.sc-in-r{animation:scInR .34s cubic-bezier(.22,.9,.28,1) both;}
#docDrop.sc-in-l{animation:scInL .34s cubic-bezier(.22,.9,.28,1) both;}
/* 往来资料：单位文件夹（蓝）/ 四类资料文件夹（青绿） */
.dt-folder.dt-partner svg{fill:#7FB6E8;filter:drop-shadow(0 4px 6px rgba(52,130,206,.28));}
.dt-folder.dt-cat svg{fill:#4CBF9A;filter:drop-shadow(0 4px 6px rgba(28,160,124,.24));}
.dk-item.is-partner .di-name,.dk-item.is-cat .di-name,.dk-item.is-grp .di-name{font-weight:600;color:#1E3446;}
/* 往来资料 / 单据票据：一笔单一个「26.10.1-单位名」文件夹（橙黄，跟单位文件夹区分开） */
.dt-folder.dt-grp svg{fill:#F2A33C;filter:drop-shadow(0 4px 6px rgba(228,150,40,.28));}
.dk-item.is-grp .di-meta{color:#8A97A6;}
.dk-item.is-bgrp{cursor:pointer;}
.dk-item.is-bgrp:hover{border-color:#F2C88A;box-shadow:0 6px 14px rgba(228,150,40,.14);}
.dk-item.is-pitem .di-name{font-size:13px;line-height:1.35;max-height:36px;overflow:hidden;}
.dt-sub{display:block;font-style:normal;font-size:12px;color:#93A3B3;margin-top:2px;}
@media (max-width:860px){
  .dk-strip .sc-tab{font-size:13.5px;gap:4px;}
  .dk-strip .sc-tab .si{width:17px;height:17px;}
  .dk-strip .sc-tab .tx::after{bottom:-6px;width:18px;height:3px;}
  .dk-strip .sc-flip b,.dk-strip .sc-flip i{clip-path:polygon(0 0,calc(33.34% + 20px) 0,33.34% 100%,0 100%);}
  .dk-strip[data-active="contact"] .sc-flip b,
  .dk-strip[data-active="contact"] .sc-flip i{clip-path:polygon(33.34% 0,66.66% 0,66.66% 100%,33.34% 100%);}
  .dk-strip[data-active="bill"] .sc-flip b,
  .dk-strip[data-active="bill"] .sc-flip i{clip-path:polygon(calc(66.66% - 20px) 0,100% 0,100% 100%,66.66% 100%);}
  .dk-subhint{display:none;}
}

/* ---- 手机 / 窄屏：文档中心排版整理 ---- */
@media (max-width:860px){
  .page-head{flex-wrap:wrap;row-gap:10px;}
  .page-head h1{white-space:nowrap;}
  .page-head .sub{order:9;width:100%;font-size:12.5px;}
  .page-head .doc-seg button{width:30px;}
  .page-head .btn{height:30px;padding:0 9px;font-size:13.5px;}
  .dk-drop{cursor:pointer;min-height:300px;padding:10px;}
  .dk-hint{padding:18px 10px 8px;}
  .dk-hint b{font-size:14.5px;}
  .doc-none{padding:36px 12px;}
  .dk-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));}
  .doc-table td,.doc-table thead th{padding:8px 9px;}
}
@media (max-width:640px){
  /* 列表视图：手机上隐藏「上传人」列、允许名称换行，尽量不横向滚动 */
  .doc-table th:nth-child(4),.doc-table td:nth-child(4){display:none;}
  .doc-table td{white-space:normal;}
  .doc-table td.dt-name{max-width:44vw;}
  .doc-table .btn{height:24px;padding:0 6px;font-size:12.5px;}
}

/* ---- 自定义日历选择器 ---- */
.cal-pop{
  position:fixed;z-index:300;width:242px;background:#fff;border:1px solid #D9E3EE;border-radius:10px;
  box-shadow:0 14px 34px -10px rgba(16,64,120,.35);padding:8px;user-select:none;
}
.cal-head{display:flex;align-items:center;gap:2px;margin-bottom:5px;}
.cal-head button{
  flex:none;width:24px;height:26px;border:0;background:#F4F8FC;border-radius:6px;cursor:pointer;
  font-size:14px;color:#42586C;line-height:1;
}
.cal-head button:hover{background:#EAF3FE;color:#1E7FD9;}
.cal-head select{
  flex:1;min-width:0;height:26px;border:1px solid #E2EAF3;border-radius:6px;font-size:13.5px;
  color:#22384D;background:#fff;padding:0 2px;font-family:inherit;cursor:pointer;
}
.cal-wk{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:2px;}
.cal-wk span{font-size:11.5px;color:#93A3B3;text-align:center;padding:2px 0;}
.cal-wk span:first-child{color:#E08A8A;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;}
.cal-grid i{height:26px;}
.cal-grid b{
  height:26px;display:flex;align-items:center;justify-content:center;font-weight:400;
  font-size:13.5px;color:#22384D;border-radius:6px;cursor:pointer;font-variant-numeric:tabular-nums;
}
.cal-grid b:hover{background:#EAF3FE;color:#1E7FD9;}
.cal-grid b.t{box-shadow:inset 0 0 0 1px #8FC4EE;color:#1E7FD9;font-weight:600;}
.cal-grid b.on{background:#1E7FD9;color:#fff;font-weight:600;}
.cal-grid b.on:hover{background:#1E7FD9;color:#fff;}
.cal-foot{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid #F1F5F9;}
.cal-foot em{font-size:11.5px;color:#B0BDC9;font-style:normal;}
.cal-foot button{
  border:1px solid #E2EAF3;background:#fff;border-radius:6px;height:24px;padding:0 10px;
  font-size:13px;color:#42586C;cursor:pointer;font-family:inherit;
}
.cal-foot button:hover{background:#EAF3FE;color:#1E7FD9;border-color:#8FC4EE;}

/* 实时价格：按商品分组、供应商逐行的报价表 */
.pb-table th{white-space:nowrap;}
.pb-table td{padding:7px 10px;}
.pb-table tbody tr.pb-group td{
  background:#F4F7FB;font-weight:600;border-top:1px solid #E3EAF3;padding:7px 10px;
}
.pb-gname{font-size:14px;color:#1F2A37;}
.pb-gmeta{margin-left:8px;font-size:12.5px;color:var(--text-3);font-weight:400;}
.pb-gact{margin-left:14px;font-size:13px;color:#1E88E5;cursor:pointer;font-weight:400;}
.pb-gact:hover{text-decoration:underline;}
.pb-sup{white-space:nowrap;color:#243447;}
.pb-table td.pb-cell{cursor:text;}
.pb-table td.pb-ro{cursor:default;background:#FCFDFE;}
/* 编辑中：单元格本身完全不变形、不变色，编辑框贴合铺满单元格 */
.pb-table td.pb-cell.pb-editing{background:transparent;}
.pb-cell-inp.txt{text-align:left;}
.pb-dash{color:#C7D3DF;}
/* 卓创今日还没出价（格子里写「采集中」）：给一个小胶囊标签，和空值「—」区分开 */
.pb-collecting{display:inline-block;padding:1px 7px;border-radius:9px;background:#FFF3E0;color:#B2660A;font-size:12px;line-height:18px;white-space:nowrap;}
/* 有结转价时：价格下面挂一行小字，标注今天还没更新 */
.pb-collecting.sub{display:block;padding:0;background:transparent;font-size:10px;line-height:11px;color:#C0842B;}
/* 行内删除「×」：整套观感走下面的通用类 .row-del（平时不显示，鼠标移到该行才出现） */
.pb-table tbody tr.pb-new td{background:#FFFCF2;padding:6px 8px;}
.pb-sel{border:1.5px solid #8FC4EE;border-radius:5px;padding:4px 6px;font:inherit;font-size:14px;width:100%;background:#fff;}
.pb-hint{color:var(--text-3) !important;font-size:13px;}
/* 新增报价弹窗 */
.pb-modal{position:fixed;inset:0;background:rgba(16,24,40,.32);display:flex;align-items:center;justify-content:center;z-index:120;}
.pb-modal-box{background:#fff;border-radius:14px;padding:18px 20px 16px;width:380px;max-width:92vw;box-shadow:0 18px 50px rgba(16,24,40,.2);}
.pb-modal-t{display:flex;justify-content:space-between;align-items:center;font-size:16px;font-weight:600;margin-bottom:14px;}
.pb-x{cursor:pointer;color:#98A6B5;font-size:19px;line-height:1;}
.pb-x:hover{color:#E5484D;}
.pb-field{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;}
.pb-field label{font-size:13.5px;color:var(--text-3);}
.pb-field select,.pb-field .nsel-inp{height:34px;border:1.5px solid #D6E3F0;border-radius:7px;padding:0 8px;font:inherit;font-size:14px;background:#fff;}
.pb-modal-f{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;}

/* 实时价格：表格竖线分隔 + 商品名称列 */
.pb-table th,.pb-table td{border-right:1px solid #EDF2F8;}
.pb-table th:last-child,.pb-table td:last-child{border-right:none;}
.pb-table thead th{background:#F7FAFD;}
.pb-prod{white-space:nowrap;color:#1F2A37;font-weight:500;}

/* 行内编辑：点格子后单元格大小、位置、底色都不变，编辑框正好铺满格子 */
td.cell-editing,td.pb-editing{position:relative;}
.cell-inp,.pb-cell-inp{
  position:absolute;top:0;left:0;right:0;bottom:0;
  box-sizing:border-box;display:block;width:100%;height:100%;min-width:0;
  margin:0;padding:inherit;border:0;border-radius:0;box-shadow:none;outline:none;
  background:transparent;color:inherit;font:inherit;font-size:inherit;line-height:inherit;
  letter-spacing:inherit;text-align:inherit;white-space:nowrap;overflow:hidden;
}
.cell-inp:focus,.pb-cell-inp:focus{outline:none;box-shadow:none;background:transparent;border:0;}
/* 今日报价不再加黑：它靠「左侧第一列数据 + 数字等宽对齐」自然成列，不靠加粗抢视线。
   （若日后要突出，用 td[data-f=today_price] 定位，别用 nth-child——前面插列会错位） */
.cell-inp-sel{
  -webkit-appearance:menulist;appearance:auto;cursor:pointer;
}

/* ============ 实时价格：列宽交给全站公约（按内容自适应），行首拖拽+次序与进销订单同款 ============ */
/* 整体字号加大一号 + 表头加粗加深：一眼看清列名与价格，数字用等宽数字纵向严格对齐 */
.pb-table{font-size:15.5px;}
.pb-table th,.pb-table td{overflow:hidden;text-overflow:ellipsis;}
.pb-table th{font-weight:700;color:#3D5065;font-size:14.5px;padding-top:11px;padding-bottom:11px;}
.pb-table tbody td{padding-top:10px;padding-bottom:10px;font-variant-numeric:tabular-nums;}
/* 只有商品名称加粗加黑（它是分组的主标题）；供应商、今日报价、槽车/桶装售价等
   一律常规字重常规颜色——全表加黑会糊成一片，主次就没了 */
.pb-table td.pb-prod,.pb-table th.txt:first-child{font-weight:700;color:#16222F;}
.pb-table td.pb-sup{font-weight:400;color:#243447;}
/* 报价时间 */
.pb-time{color:#7D8B99;font-size:13.5px;}
.pb-time-today{background:#EAF7F1;color:#2E8B6E;font-weight:600;}
.pb-time-today::after{content:"";}
/* 底部「＋ 新增一行」 */
.pb-foot{padding:8px 10px !important;background:#FCFDFE;border-top:1px solid #EDF2F8;text-align:left;}
.pb-addrow{display:inline-block;font-size:13.5px;color:#1E88E5;cursor:pointer;padding:3px 8px;border-radius:5px;}
.pb-addrow:hover{background:#EFF6FF;}
/* 新增行 */
.pb-table tbody tr.pb-new td{background:#F8FBFF;padding:4px 6px;border-top:1px solid #E3EAF3;}
.pb-table tbody tr.pb-new:hover td{background:#F8FBFF;}
.pb-dsel,.pb-din{
  width:100%;height:32px;box-sizing:border-box;margin:0;
  border:1px solid transparent;border-radius:5px;background:#fff;
  font-family:inherit;font-size:15px;color:var(--text);outline:none;
  font-variant-numeric:tabular-nums;
}
.pb-dsel{border-color:#DCE7F2;padding:0 4px;}
.pb-din{border-color:#DCE7F2;padding:0 7px;text-align:right;font-variant-numeric:tabular-nums;}
td.txt .pb-din{text-align:left;}
.pb-dsel:focus,.pb-din:focus{border-color:#1E88E5;box-shadow:0 0 0 2px rgba(30,136,229,.12);}
.pb-draft-act{white-space:nowrap;text-align:center;}
.pb-draft-act span{cursor:pointer;color:#8FA2B4;font-size:16px;line-height:1;padding:0 4px;display:inline-block;}
.pb-draft-act [data-draft-ok]:hover{color:#0F8A7E;}
.pb-draft-act [data-draft-cancel]:hover{color:#E5484D;}
.pb-empty{text-align:center;color:var(--text-3);padding:36px 10px !important;}
/* ============ 实时价格：行首拖拽列（与槽车/桶装销货单同款） ============
   拖拽列右侧的坡面阴影走通用类 .edge-ramp-r；次序列已取消（排序靠 ⠿ 拖动即可） */
/* 坡面加宽到一个字（16px）：拖拽列同步放到 30px，⠿ 手柄不压在坡面上 */
.pb-table{--ramp-w:16px;}
.pb-table > thead > tr > th.tk-drag-col,
.pb-table > tbody > tr > td.tk-drag-col{width:30px !important;}
.pb-table .tk-drag-col{padding:0 0 0 6px !important;}
.pb-table th.tk-drag-col,.pb-table td.tk-drag-col{border-right:none !important;}
.pb-table tbody tr.tk-dragging,.pb-table tbody tr.tk-dragging:hover{
  background:#E4F1FF;box-shadow:inset 0 0 0 1.5px #7BC0F7;
}
/* ============ 实时价格：分组视觉（沿用系统 MUI 蓝的冷色体系） ============ */
.pb-table{
  --pb-line:#EDF2F8;
  --pb-head:#FAFCFE;
  --pb-hover:#FBFDFF;
  --pb-cap-bg:#F5FAFF;
  --pb-cap-bg2:#EDF5FF;
  --pb-cap-hd:#E2EFFD;
  --pb-cap-fg:#0B7FDB;
}
.pb-table tbody tr.pb-gap{background:transparent;}
.pb-table tbody tr.pb-gap td{
  padding:0 !important;height:10px;line-height:10px;font-size:0;
  border:none !important;border-right:none !important;background:transparent !important;
}
/* 普通行白底，靠左侧 3px 色条 + 首行浅底识别商品 */
.pb-table tbody tr.pb-grow td{background:#fff;}
.pb-table tbody tr.pb-grow td.pb-prod{border-left:3px solid var(--gs,#D6E4F2);padding-left:9px;}
.pb-table tbody tr.pb-grow:hover td{background:var(--pb-hover);}
/* 每组首行：极浅色调底 + 商品名着色，像小标题 */
.pb-table tbody tr.pb-grow.pb-gfirst td{background:var(--gb,#F7FAFD);border-top:1px solid var(--pb-line);}
.pb-table tbody tr.pb-grow.pb-gfirst:hover td{background:var(--gb,#F7FAFD);}
.pb-table tbody tr.pb-grow.pb-gfirst td.pb-prod{border-left-color:var(--gc,#8FB3D9);}
/* 组内后续行重复的商品名：比组首浅一档，但整体提黑一档，整列看着更实 */
.pb-table tbody tr.pb-grow td.pb-prod .pb-pname{color:#66737F;font-weight:600;}
/* 组首商品名：加粗加黑到近黑；分组色只留在左侧色条和圆点上，不抢文字 */
.pb-table tbody tr.pb-grow.pb-gfirst td.pb-prod .pb-pname{color:#16222F;font-weight:700;}
.pb-table tbody tr.pb-grow td.pb-time-today{background:#EAF8F2;color:#1FA36B;}
/* 槽车限价 / 桶装限价：系统主色浅蓝贯穿整列，表头用深一档蓝字强调 */
.pb-table thead th.pb-cap{background:var(--pb-cap-hd);color:var(--pb-cap-fg);}
.pb-table tbody tr td.pb-cap{background:var(--pb-cap-bg);}
.pb-table tbody tr.pb-grow td.pb-cap{background:var(--pb-cap-bg);}
.pb-table tbody tr.pb-grow.pb-gfirst td.pb-cap{background:var(--pb-cap-bg2);}
.pb-table tbody tr.pb-grow:hover td.pb-cap{background:var(--pb-cap-bg2);}
.pb-table tbody tr.pb-grow.pb-gfirst:hover td.pb-cap{background:var(--pb-cap-bg2);}
/* 槽车售价 / 桶装售价：浅蓝底已经是它们的标识，文字保持常规字重 */
.pb-table tbody tr td.pb-cap{font-weight:400;color:#243447;}
/* 上周价格：自动引用来的值用虚线下划 + 柔和蓝（手工改过就恢复普通黑字） */
.pb-table td.pb-lw-auto{color:#4A7A9B;text-decoration:underline dotted #A9C7DC;text-underline-offset:3px;}
.pb-table thead th.pb-lw-hd{color:#3E6B8A;}
/* 涨跌胶囊（10-27）：红▲涨 / 绿▼跌 / 灰 0 持平，浅底圆角小徽标不抢行高 */
.pb-chg{display:inline-flex;align-items:center;gap:2px;min-width:52px;justify-content:center;
  padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;line-height:1.5;letter-spacing:.2px;}
.pb-chg.up{background:#FDEEEE;color:#CE3B3B;border:1px solid #F5D2D2;}
.pb-chg.down{background:#E9F7F1;color:#12805C;border:1px solid #CBE9DC;}
.pb-chg.flat{background:#F2F5F8;color:#8C9AA8;border:1px solid #E4EAF0;}
.pb-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:1px;opacity:.6;}
.pb-table tbody tr.pb-grow.pb-gfirst .pb-dot{opacity:1;}
/* 分隔线更轻，避免表格看起来像格子墙 */
.pb-table th,.pb-table td{border-right:1px solid #F2F5F9;}
.pb-table thead th{background:var(--pb-head);color:#46586B;font-weight:700;border-bottom:1px solid #E6EBF1;}

/* ================= 权限管理弹窗：模块 + 单页两级勾选 ================= */
.modal-perm .modal-body{padding-top:14px;}
.perm-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.perm-role{font-size:14px;color:#3D5568;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.perm-role b{color:#1668E3;font-weight:600;}
.perm-role-tip{font-size:12.5px;color:#93A5B6;}
.perm-top .btn{margin-left:auto;flex:none;}
.perm-hint{font-size:13px;color:#6E8194;line-height:1.7;background:#F7FAFD;border:1px solid #EDF3F9;border-radius:8px;padding:9px 11px;margin-bottom:12px;}
.perm-hint b{color:#3D5568;}
.perm-tbl tbody tr{cursor:default;}
.perm-tbl tbody tr:hover{background:transparent;}
.perm-tbl tbody td{vertical-align:middle;white-space:normal;padding:7px 12px;}
.perm-tbl tbody tr+tr td{border-top:1px solid #F4F7FA;}
.perm-mod b{font-size:13.5px;color:#22384D;}
.perm-items{line-height:1.9;}
.perm-chip{display:inline-flex;align-items:center;height:25px;padding:0 10px;margin:2px 6px 2px 0;
  border-radius:6px;border:1px solid #E4EBF2;background:#fff;color:#8090A0;font-size:13px;line-height:1;
  cursor:pointer;font-family:inherit;transition:background .15s,color .15s,border-color .15s;}
.perm-chip:hover{border-color:#BFDCF7;background:#F7FBFF;color:#1668E3;}
.perm-chip.on{background:#EAF4FF;border-color:#BBDDFB;color:#1668E3;font-weight:600;}
.perm-sum{margin-top:10px;font-size:13px;color:#8B9CAD;text-align:right;}

/* ================= 桶装销售清单（拖拽/次序 · 客户/产品/数量/单价/送货车辆/运输状况/签收数量/计划状态/备注） ================= */
/* 字号比槽车表格大一档（15.5px / 输入 15px），12 列全部按内容定宽（见 app.js colgroup），
   表宽 auto → 不必铺满整屏，右侧留白；操作列 124px 保证「审核 / 删除」完整可见 */
.tk-table.bk-table{width:max-content;min-width:0;max-width:none;font-size:15.5px;}
.tk-table.bk-table th{padding:8px 9px;font-size:14px;}
.tk-table.bk-table td{padding:3px 8px;}
.tk-table.bk-table .tk-in{font-size:15px;height:25px;line-height:23px;padding:0 7px;}
.bk-table .tk-in{width:100%;}
.bk-table .bk-cus .tk-in,.bk-table .bk-prod .tk-in{min-width:0;}
.bk-table .bk-note .tk-in{min-width:0;}
.bk-table td.num .tk-in{text-align:right;}
.bk-table .tk-drag-col{padding:0 0 0 6px !important;}
.bk-table .tk-seq .tk-seq-in{max-width:46px;margin:0 auto;padding:0 2px;}
/* 拖拽列与次序列之间的「斜坡」分隔：右缘一道由深到浅的坡面阴影，区分操作区与数据区（参考图效果） */
.bk-table th.tk-drag-col,.bk-table td.tk-drag-col{position:relative;border-right:none !important;}
.bk-table th.tk-drag-col::after,.bk-table td.tk-drag-col::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:8px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));
}
.bk-table .bk-ops{padding:3px 8px !important;}
.bk-st{display:inline-block;width:7px;height:7px;border-radius:50%;background:#D6E0EA;margin-right:6px;vertical-align:1px;transition:background .2s;}
.bk-st.on{background:#2E8B6E;box-shadow:0 0 0 3px rgba(46,139,110,.13);}
.bk-table tbody tr.bk-empty td{text-align:center;color:#93A5B6;padding:34px 0;background:#fff;font-size:14px;}

/* ================= 桶装观感（bk-look）：槽车销售 / 收货款 / 付运费 / 分装记录 1:1 对齐「桶装销货单」（10-26 用户要求）
   同一套：字号 15.5 / 表头 14、格内竖线（Excel 网格）、行首 ⠿ 拖拽列 + 右缘坡面阴影、
   奇偶斑马纹（.bk-zebra）、拖动中高亮；销售页保留「周次」底色，所以销售表不挂 .bk-zebra */
.tk-table.bk-look{font-size:15.5px;width:max-content;min-width:0;max-width:none;}
.tk-table.bk-look th{
  padding:8px 9px;font-size:14px;border-right:1px solid #C9D9EA;border-bottom:1px solid #D6E3F0;
  background:linear-gradient(180deg,#F7FAFE 0%,#EDF4FB 100%);box-shadow:inset 0 -1px 0 rgba(255,255,255,.8);
}
.tk-table.bk-look td{padding:3px 8px;border-bottom:1px solid #DCE7F2;border-right:1px solid #D8E4F0;}
.tk-table.bk-look th:last-child,.tk-table.bk-look td:last-child{border-right:none;}
.tk-table.bk-look .tk-in{font-size:15px;height:25px;line-height:23px;}
/* 行首拖拽列：窄手柄列 + 右缘「斜坡」阴影（与桶装销货单同款，区分操作区与数据区） */
.tk-table.bk-look .tk-drag-col{width:26px;padding:0 0 0 6px !important;}
.tk-table.bk-look th.tk-drag-col,.tk-table.bk-look td.tk-drag-col{position:relative;border-right:none !important;}
.tk-table.bk-look th.tk-drag-col::after,.tk-table.bk-look td.tk-drag-col::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:8px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));
}
/* 次序：可编辑的编号格（桶装同款），只读表用 .bk-seq 居中灰字 */
.tk-table.bk-look .tk-seq .tk-seq-in{max-width:52px;margin:0 auto;padding:0 2px;text-align:center;font-weight:600;color:#4B5B6B;}
.tk-table.bk-look td.bk-seq{text-align:center;color:#8794A3;font-size:13.5px;font-variant-numeric:tabular-nums;}
/* 斑马纹：与桶装销货单同一组颜色 */
.tk-table.bk-look.bk-zebra tbody tr:nth-child(odd):not(.tk-grp):not(.tk-gap){background:#F7FAFD;}
.tk-table.bk-look.bk-zebra tbody tr:nth-child(even):not(.tk-grp):not(.tk-gap){background:#EBF4FB;}
.tk-table.bk-look.bk-zebra tbody tr:not(.tk-grp):not(.tk-gap):hover{background:#E1EFFA;}
.tk-table.bk-look tbody tr.tk-dragging,
.tk-table.bk-look tbody tr.tk-dragging:hover{background:#EEF7FF !important;box-shadow:inset 0 0 0 1px #B9DCFA;}
.tk-table.bk-look tbody tr.bk-empty:hover{background:transparent !important;}
.tk-table.bk-look tbody tr.bk-empty td{text-align:center;color:#93A5B6;padding:34px 0;background:#fff;font-size:14px;}
/* 车辆付款的「车号小计」行：跨列合并，斑马纹不参与 */
.tk-table.bk-look tbody tr.veh-grp td{background:#EEF5FC;border-bottom:1px solid #D8E4F0;}


/* 签收数量：自动值虚淡（虚线底 + 灰字 + 「自动」角标）→ 一眼能看出是系统算的，可以直接改；
   手填值实心深色 + 「手填」角标 → 改没改过一目了然（同槽车「含/不含」角标思路） */
.bk-signed{position:relative;display:block;}
.bk-signed .tk-in{padding-right:26px;text-align:right;font-variant-numeric:tabular-nums;}
/* 这一列再宽一个字：数字与「自动/手填」角标之间留出余量，4~5 位数不会被角标压住
   （全局 field-sizing:content + min-width:2.2em 优先级更高，这里只对桶装签收格加 !important） */
.bk-table .bk-signed .tk-in{min-width:100px !important;padding-right:30px;}
.bk-sg-flag{
  position:absolute;right:2px;top:2px;height:15px;line-height:15px;padding:0 3px;border-radius:4px;
  font-size:9.5px;font-style:normal;letter-spacing:.2px;pointer-events:none;user-select:none;
  color:#9AAABB;background:#F1F5F9;transition:color .15s,background .15s;
}
.bk-signed.auto .tk-in{
  color:#8CA0B3;background:#FBFDFE;
  border-bottom:1px dashed #AFC3D6;border-radius:4px 4px 0 0;
}
.bk-signed.auto .tk-in:hover{color:#3D5266;background:#F2F8FE;border-bottom-color:#7FA8DC;}
.bk-signed.auto .tk-in:focus{color:#1F3B57;background:#F7FBFF;border-bottom:1px solid #1E7FD9;}
/* 已审核锁定行：真禁用态与「默认可改」拉开差距（无底色、无虚线、更灰） */
.bk-signed .tk-in:disabled{color:#B9C6D2;background:transparent;border-bottom:1px solid transparent;box-shadow:none;}
.bk-signed.auto .bk-sg-flag{color:#5E7A99;background:#EAF2FB;}
.bk-table .bk-signed.man .tk-in{
  color:#1F3B57;font-weight:600;
  background:#FFF9F0;box-shadow:inset 0 0 0 1px #F2D6A4;
}
.bk-signed.man .bk-sg-flag{color:#B26A00;background:#FFEFD6;}
/* 回桶 0 虚态：虚线底 + 灰字（0 意味着「没拉回桶」，视觉上与实数区分） */
.bk-table .bk-ret.bk-vir{color:#9AA8B5;border-bottom:1px dashed #C6D2DC;background:transparent;}
.bk-table .bk-ret.bk-vir:hover{color:#5F7285;border-bottom-color:#8FA9C2;}
.bk-table .bk-ret.bk-vir:focus{color:#22384D;background:#F7FBFF;border-bottom-color:#1E7FD9;}
/* 已审核锁定行：输入框禁用后压淡，一眼区分可编辑/已锁定 */
.bk-table tr[data-lk="1"] .tk-in{color:#8C9AA8;background:#FAFBFC;cursor:not-allowed;}
.bk-table tr[data-lk="1"] select.tk-in{appearance:none;}
.bk-table .bk-plan-td{text-align:center;padding-left:2px;padding-right:2px;}
.bk-table .bk-plan-td .tk-st{font-size:13.5px;padding:0 6px 0 5px;gap:4px;}
.bk-plan-none{color:#C7D2DD;font-size:13.5px;}
/* 支撑量（桶装销货单）：纯参考列，不参与金额/库存计算
   正常深蓝 · 刚好发完橙 · 卖超红 · 已审核行写「已出库」灰字 · 未选产品 — */
.bk-table .bk-sup{text-align:right;white-space:nowrap;padding-right:12px !important;font-variant-numeric:tabular-nums;}
.bk-table .bk-sup b{font-size:15px;font-weight:600;color:#14518F;}
.bk-table .bk-sup i{font-style:normal;font-size:11.5px;color:#93A5B6;margin-left:2px;}
.bk-table .bk-sup.zero b{color:#C97A12;}
.bk-table .bk-sup.pos b{color:#12805C;}
.bk-table .bk-sup.neg b{color:#E5484D;}
.bk-table .bk-sup.done span{color:#9AA8B6;font-size:12.5px;letter-spacing:.5px;padding:1px 5px;border-radius:4px;background:#F1F4F8;}
/* 待审核但库存早已扣过（老单）：橙色，和「已出库」的灰分开，提示这单状态和库存不同步 */
.bk-table .bk-sup.done.out span{color:#B2660A;background:#FFF3E0;}
.bk-table .bk-sup.na span{color:#B6C4D2;font-size:13.5px;}
.bk-table th.bk-sup-th{text-align:right;cursor:help;}

/* ================= 实时协同 ================= */
.rt-live{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:12px;
  background:#EDF8F2;color:#2E8B6E;font-size:12.5px;font-weight:600;cursor:default;user-select:none;
  transition:background .2s,color .2s;}
/* 性能修复(10-28)：原来这颗在线小圆点用 box-shadow 无限呼吸，每帧重绘，闲时独占主线程约 39% CPU
   （实测关掉后归零）。它只是"协同在线"的装饰指示，改为静态柔光环，不再拖慢整页。 */
.rt-live .rt-dot{width:6px;height:6px;border-radius:50%;background:#2FBF84;
  box-shadow:0 0 0 3px rgba(47,191,132,.16);}
.rt-live.solo{background:#F3F6FA;color:#8A9AAB;}
.rt-live.solo .rt-dot{background:#C3CFDB;box-shadow:none;animation:none;}
.rt-live.off{background:#FDF1F1;color:#C0504D;}
.rt-live.off .rt-dot{background:#E06C6C;box-shadow:none;animation:none;}
@keyframes rtPulse{0%,100%{box-shadow:0 0 0 3px rgba(47,191,132,.16);}50%{box-shadow:0 0 0 5px rgba(47,191,132,.05);}}
.tk-edit .tk-in.rt-flash{background:#EAF4FF !important;box-shadow:inset 0 0 0 1px rgba(30,136,229,.32);}

/* ===== 同事正在编辑：格子框定 + 姓名角标（Google 表格式协同） =====
   每个人的颜色固定（服务端按账号分配），一个人在任何电脑上看都是同一个颜色 */
td.rt-editing{
  position:relative;z-index:5;
  background-color:rgba(66,133,244,.08);
  background-color:color-mix(in srgb, var(--rtc,#4285F4) 8%, #fff);
  box-shadow:inset 0 0 0 2px var(--rtc,#4285F4), 0 0 0 1px rgba(255,255,255,.8);
  border-radius:4px;
}
td.rt-editing :is(input,select,textarea){background-color:transparent;}
/* 姓名标签：骑在格子上边框正中，白字圆角色签，比格子本身醒目（Google 表格式） */
td.rt-editing::after{
  content:attr(data-rt-name);
  position:absolute;left:50%;top:-9px;transform:translateX(-50%);z-index:9;
  height:18px;line-height:18px;padding:0 8px;
  border-radius:4px;
  background:var(--rtc,#4285F4);color:#fff;
  font-size:11.5px;font-weight:600;letter-spacing:.2px;
  white-space:nowrap;pointer-events:none;
  box-shadow:0 2px 6px rgba(12,42,70,.26),0 0 0 1px rgba(255,255,255,.7);
  animation:rtTagIn .16s ease-out both;
}
/* 贴着表格顶部（上方会被滚动容器裁掉）时，改排在格子右上角内侧 */
td.rt-editing.rt-tag-in::after{
  left:auto;right:3px;top:2px;transform:none;
  height:15px;line-height:15px;padding:0 5px;font-size:10.5px;border-radius:4px;
}
@keyframes rtTagIn{
  from{opacity:0;transform:translateX(-50%) translateY(-4px) scale(.94);}
  to{opacity:1;transform:translateX(-50%);}
}
td.rt-editing .tk-in{box-shadow:none;}

/* 顶栏「何慧 编辑中」药丸 */
.rt-editing-pill{display:none;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:12px;
  background:#EFF5FF;color:#1668E3;font-size:12px;font-weight:600;cursor:default;user-select:none;
  border:1px solid #D9E8FE;animation:rtEdIn .18s ease-out;}
.rt-editing-pill.on{display:inline-flex;}
.rt-editing-pill i.rt-ed-dot{width:6px;height:6px;border-radius:50%;flex:none;
  box-shadow:0 0 0 3px rgba(66,133,244,.12);animation:rtPulse2 2s ease-in-out infinite;}
.rt-editing-pill em{font-style:normal;font-weight:600;color:#0F5BC0;margin-left:2px;}
.rt-editing-pill span{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
@keyframes rtEdIn{from{opacity:0;transform:translateY(-3px);}to{opacity:1;transform:none;}}
@keyframes rtPulse2{0%,100%{opacity:1;}50%{opacity:.45;}}
@media (max-width:900px){ .rt-editing-pill{display:none !important;} }
@media (prefers-reduced-motion:reduce){
  td.rt-editing::after,.rt-editing-pill{animation:none;}
  .rt-editing-pill i.rt-ed-dot{animation:none;}
}
@media (max-width:640px){ .rt-live{display:none;} }
@media (prefers-reduced-motion:reduce){ .rt-live .rt-dot{animation:none;} }

/* ============ 全局「可输入下拉」：所有 select 升级成组合框 ============ */
.nsel-inp{cursor:pointer;text-overflow:ellipsis;}
.nsel-inp:focus{outline:none;}
.nsel-inp::placeholder{color:#A9B6C4;}
/* 输入框右侧的展开小箭头（表格里不加，保持干净；弹窗 / 工具栏加） */
.field .nsel-inp,.toolbar .nsel-inp,.pager .nsel-inp,.pb-field .nsel-inp{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.7 5 6.7 8 3.7' fill='none' stroke='%2390A4B8' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center;padding-right:24px;
}
/* 候选浮层：和客户搜索选择器同一套视觉 */
.nsp{
  position:fixed;z-index:10000;overflow:auto;
  background:#fff;border:1px solid #E1EAF3;border-radius:10px;padding:4px;
  box-shadow:0 12px 30px rgba(17,44,72,.16),0 2px 6px rgba(17,44,72,.07);
  font-size:13.5px;animation:pkIn .12s ease-out both;
}
.nsp-hd{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:5px 8px 6px;margin-bottom:3px;border-bottom:1px solid #F1F5F9;
  font-size:12px;color:#7C8CA0;font-weight:600;
}
.nsp-hd span{font-weight:400;color:#A9B6C4;font-size:11.5px;}
.nsp-it{display:flex;align-items:center;gap:6px;padding:7px 9px;border-radius:7px;cursor:pointer;color:#22384D;}
.nsp-it.on{background:#EAF3FE;box-shadow:inset 0 0 0 1px #CFE3FB;}
.nsp-it.on .nsp-nm{color:#0F5BC0;font-weight:600;}
.nsp-nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.nsp-nm b{font-weight:700;color:#0B6BD8;background:#DCEBFB;border-radius:3px;padding:0 1px;}
.nsp-tk{flex:none;font-style:normal;font-size:12px;color:#1E88E5;}
.nsp-empty{padding:16px 10px;color:#8C9AA8;text-align:center;line-height:1.9;}
.nsp-empty span{display:block;font-size:12px;color:#A9B6C4;}

/* ================= 备注列：定宽省略 + 鼠标悬停浮层看全文 ================= */
/* 通用列表的备注列：内容封顶 320px，超出以省略号收束，行高不变、表格不被撑宽 */
td.td-tip{max-width:352px;}
.tip-tx{
  display:block;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  transition:color .14s;
}
td.td-tip:hover .tip-tx{color:#1668E3;}
td.td-tip .cell-inp{width:100%;}

/* 浮层卡片：白底 + 细边 + 双层投影，左上角小三角指向单元格 */
.hov-pop{
  position:fixed;z-index:10060;box-sizing:border-box;
  background:#fff;border:1px solid #E2EBF4;border-radius:11px;
  padding:9px 11px 7px;
  font-family:inherit;font-size:14px;line-height:1.68;color:#22384D;
  box-shadow:0 16px 38px rgba(17,44,72,.17),0 3px 8px rgba(17,44,72,.06);
  animation:hovIn .16s cubic-bezier(.2,.75,.3,1) both;
  pointer-events:auto;user-select:text;
}
.hov-pop.up{transform-origin:bottom left;}
.hov-pop.out{animation:hovOut .13s ease-in both;}
@keyframes hovIn{from{opacity:0;transform:translateY(-5px) scale(.985);}to{opacity:1;transform:none;}}
@keyframes hovOut{from{opacity:1;transform:none;}to{opacity:0;transform:translateY(-3px);}}
.hov-body{
  max-height:236px;overflow:auto;overscroll-behavior:contain;
  white-space:pre-wrap;word-break:break-word;
}
.hov-body::-webkit-scrollbar{width:6px;}
.hov-body::-webkit-scrollbar-thumb{background:#D8E2EC;border-radius:6px;}
.hov-body::-webkit-scrollbar-thumb:hover{background:#BECEDD;}
.hov-meta{
  display:flex;justify-content:space-between;gap:12px;
  margin-top:6px;padding-top:6px;border-top:1px dashed #EDF3FA;
  font-size:12px;color:#93A5B6;white-space:nowrap;
}
.hov-meta span:last-child{color:#B3C2D0;}
.hov-ar{
  position:absolute;top:-5px;width:9px;height:9px;background:#fff;
  border-left:1px solid #E2EBF4;border-top:1px solid #E2EBF4;transform:rotate(45deg);
}
.hov-pop.up .hov-ar{
  top:auto;bottom:-5px;border-left:none;border-top:none;
  border-right:1px solid #E2EBF4;border-bottom:1px solid #E2EBF4;
}

/* ================= 页面：数据备份 ================= */
.db-safe{
  display:flex;align-items:stretch;gap:18px;flex-wrap:wrap;justify-content:space-between;
  background:linear-gradient(135deg,#F3FAFF 0%,#FFFFFF 62%);
  border:1px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:14px;
  box-shadow:0 2px 10px rgba(30,159,255,.06);
}
.db-safe-main{min-width:260px;flex:1;}
.db-safe-t{font-size:14px;color:var(--text-2);letter-spacing:.3px;}
.db-safe-path{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14.5px;color:var(--text);
  background:#0F2233;color:#D7ECFF;border-radius:8px;padding:8px 12px;margin:6px 0 8px;
  word-break:break-all;
}
.db-safe-meta{font-size:14px;color:var(--text-2);margin-bottom:10px;}
.db-safe-counts{display:flex;flex-wrap:wrap;gap:8px;}
.db-safe-counts span{
  font-size:14px;color:var(--text-2);background:#fff;border:1px solid var(--line);
  border-radius:20px;padding:3px 12px;
}
.db-safe-counts b{color:var(--text);font-weight:600;}
.db-safe-act{display:flex;flex-direction:column;gap:10px;justify-content:center;min-width:170px;}
.db-safe-act .btn{width:100%;}
.db-safe-tips{
  background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 18px;margin-bottom:14px;
  font-size:14px;color:var(--text-2);line-height:1.9;
}
.db-safe-tips b{color:var(--text);display:block;margin-bottom:2px;}
.db-log-line{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:var(--text-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.db-table-wrap{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.db-table{width:100%;border-collapse:collapse;font-size:14.5px;}
.db-table th{
  text-align:left;font-weight:600;color:var(--text-2);font-size:14px;background:#FAFCFE;
  padding:11px 14px;border-bottom:1px solid var(--line);white-space:nowrap;
}
.db-table td{padding:10px 14px;border-bottom:1px solid #F0F4F8;white-space:nowrap;}
.db-table tbody tr:hover{background:#F8FBFF;}
.db-table th.num,.db-table td.num{text-align:right;}
.db-cnt{color:var(--text-2);font-size:14px;white-space:normal;}
.db-empty{text-align:center;color:var(--text-3);padding:26px 0;}

/* ===== 槽车销售：入库车（工厂→塔山库）与分装 ===== */
.tk-edit tr.tk-row-in > td{background:#F5FBF7;}
.tk-edit tr.tk-row-in:hover > td{background:#EDF8F2;}
/* 占位单：整行变灰降透明，示意已流转下一环节 */
.tk-edit tr.tk-row-held > td{opacity:.45;background:#F7F8FA;}
.tk-edit tr.tk-row-held:hover > td{opacity:.85;background:#F7F8FA;}
/* 逾期单提醒（10-25 用户定：只整行变色，签收格不加任何特殊效果） */
.tk-edit tr.tk-late-row > td{background:#FFF8EA;}
.tk-edit tr.tk-late-row:hover > td{background:#FFF1D6;}
.tk-cus-td{position:relative;}
.tk-in-badge{
  position:absolute;top:1px;right:3px;height:11px;line-height:11px;padding:0 4px;
  font-size:8.5px;border-radius:3px;background:#E4F7EC;color:#1B7F4B;
  border:1px solid #B6E5CA;pointer-events:none;
}
.tk-combo-wh{background:#F3FBF6;color:#1B7F4B;font-weight:600;}
.tk-price-off{position:relative;background:#FAFAFB;}
.tk-price-off input{color:#B6C2CE;background:transparent;}
.tk-price-lock{
  position:absolute;top:1px;right:3px;font-size:8.5px;color:#9AA8B6;
  background:#fff;border:1px dashed #D6E0EA;border-radius:3px;padding:0 3px;pointer-events:none;
}
.tk-split-btn{color:#1B7F4B;font-weight:600;}
.tk-pk-item.is-wh{background:#F4FBF7;}
.tk-pk-item.is-wh.on{background:#E4F7EC;}
.tk-pk-wh{color:#1B7F4B;border-color:#B6E5CA;background:#E4F7EC;}

/* 分装登记弹层 */
.sp-mask{position:fixed;inset:0;background:rgba(20,32,45,.45);display:flex;align-items:center;justify-content:center;z-index:9998;padding:16px;}
.sp-card{background:#fff;border-radius:14px;box-shadow:0 18px 48px rgba(12,30,50,.22);width:min(640px,100%);max-height:92vh;display:flex;flex-direction:column;overflow:hidden;}
.sp-hd{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);}
.sp-hd b{font-size:15.5px;}
.sp-sub2{font-size:13px;color:var(--text-3);flex:1;}
.sp-x{border:none;background:transparent;font-size:15px;color:var(--text-3);cursor:pointer;padding:2px 4px;}
.sp-body{padding:14px 18px;overflow:auto;}
.sp-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;font-size:13.5px;color:var(--text-2);}
.sp-line input{width:110px;height:32px;border:1px solid var(--line);border-radius:8px;padding:0 8px;font-size:14px;}
.sp-line .sp-loss-lb{margin-left:12px;}
.sp-grid{display:grid;grid-template-columns:60px 1fr 1.2fr 1.4fr 90px;gap:6px 8px;align-items:center;font-size:13.5px;}
.sp-th{font-size:12.5px;color:var(--text-3);}
.sp-th-r{text-align:right;}
.sp-nm{font-weight:600;color:var(--text-2);}
.sp-grid input{width:100%;height:32px;border:1px solid var(--line);border-radius:8px;padding:0 8px;font-size:14px;text-align:right;}
.sp-sum{text-align:right;color:var(--text-2);}
.sp-foot{display:flex;flex-wrap:wrap;gap:14px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line);font-size:13.5px;color:var(--text-2);}
.sp-foot b{color:var(--text);font-weight:600;}
.sp-tip{font-size:12.5px;color:var(--text-3);flex-basis:100%;line-height:1.7;}
/* v1315e：进仓差 / 尾量半桶行 / 超投提示 */
.sp-indelta{font-size:12.5px;color:#B8860B;white-space:nowrap;}
.sp-indelta.bad{color:#D33;font-weight:600;}
.sp-nm-tail{color:#7C4DBE;}
.sp-nm-tail::before{content:'半桶';display:inline-block;font-size:10.5px;font-weight:600;color:#7C4DBE;background:#F3EDFC;border:1px solid #E0D2F5;border-radius:5px;padding:0 4px;margin-right:5px;vertical-align:1px;}
.sp-tailb{text-align:right;color:var(--text-2);}
.sp-hintline{margin-top:10px;font-size:13px;color:#B8860B;background:#FFF8EA;border:1px solid #F2E3C4;border-radius:8px;padding:7px 10px;line-height:1.6;}
.sp-loss.ro{background:#F6F8FA;color:var(--text-2);}
.sp-actions{display:flex;justify-content:flex-end;gap:10px;padding:12px 18px;border-top:1px solid var(--line);background:#FBFDFF;}

/* ===== 平板 / 触摸屏：手指划过是滚动，轻点一格才编辑 =====
   表格里全是输入框，触摸设备上默认会被输入框吃掉手势；这里让输入框不接管触摸，
   手势交给滚动容器，只有 JS 判定的「轻点」才把那一格解锁。 */
html.touch-ui{-webkit-tap-highlight-color:transparent;}
html.touch-ui .table-scroll,
html.touch-ui .tk-scroll,
html.touch-ui .table-wrap{
  touch-action:pan-x pan-y;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
}
html.touch-ui table input,
html.touch-ui table select,
html.touch-ui table textarea{
  pointer-events:none;
}
/* 正在编辑的那一格：给个蓝框，知道现在键盘落在谁身上 */
html.touch-ui table input[style*="pointer-events: auto"]:focus,
html.touch-ui table textarea[style*="pointer-events: auto"]:focus,
html.touch-ui table select[style*="pointer-events: auto"]:focus{
  outline:2px solid #1E88E5;
  outline-offset:-2px;
  border-radius:2px;
}
/* 单元格本身作为轻点热区，稍微放大一点更跟手（不动列宽，只加内边距感知） */
html.touch-ui .tk-table td{position:relative;}
/* 平板提示：只在触摸设备显示 */
.tap-tip{display:none;}
html.touch-ui .tap-tip{
  display:inline-flex;align-items:center;margin-left:10px;padding:2px 8px;
  font-size:11.5px;color:#1B7F4B;background:#E9F8F0;border:1px solid #BEE7D2;border-radius:20px;
  white-space:nowrap;
}

/* 分装弹层：上次尾量半桶那一行 */
.sp-tail-line{
  background:#F6F3FF;border:1px solid #E3DBFA;border-radius:9px;padding:7px 10px;margin-bottom:12px;
}
.sp-tail-have{color:#5B45C7;font-weight:600;}
.sp-tail-have b{font-size:14.5px;}
.sp-tail-line .btn-sm{padding:0 8px;height:26px;}

/* ================= 斑马纹：仅销售中心·桶装销售（bk-table），其他表格保持原样 ================= */
/* 桶装销货单：淡蓝 / 更淡蓝 交替（第 1 行浅、第 2 行稍深，类化工报价单） */
.bk-table tbody tr:nth-child(odd):not(.tk-grp):not(.tk-gap){background:#F7FAFD;}
.bk-table tbody tr:nth-child(even):not(.tk-grp):not(.tk-gap){background:#EBF4FB;}
.bk-table tbody tr:not(.tk-grp):not(.tk-gap):hover{background:#E1EFFA;}
/* 编辑格保持透明，斑马色透出来；输入聚焦仍是浅蓝高亮，层次清晰 */
.bk-table.tk-edit .tk-in{background:transparent;}
.bk-table.tk-edit .tk-in:hover{background:rgba(255,255,255,.65);}
/* 拖拽/分组等特殊行不受斑马影响 */
.bk-table tbody tr.tk-dragging{background:#EEF7FF !important;}

/* 桶装销售列表页：仅此页斑马纹（data-page 由 pageResource 写入） */
#content[data-page="bucket-orders"] .table-wrap tbody tr:nth-child(even){background:#F0F7FC;}
#content[data-page="bucket-orders"] .table-wrap tbody tr:hover{background:#E7F2FB;}

/* ================= 槽车销货单：网格线加深一档，与淡蓝行底色拉开层次（不影响桶装 bk-table） ================= */
.tk-table.tk-edit:not(.bk-table) td{border-bottom:1px solid #DCE7F2;border-right:1px solid #D8E4F0;}
.tk-table.tk-edit:not(.bk-table) th{border-right:1px solid #C9D9EA;}
.tk-table.tk-edit:not(.bk-table) tbody tr.wkrow-now td,
.tk-table.tk-edit:not(.bk-table) tbody tr.wkrow-next td,
.tk-table.tk-edit:not(.bk-table) tbody tr.wkrow-next2 td{border-bottom-color:#C3D6EA;}
.tk-table.tk-edit:not(.bk-table) tbody tr:hover td{border-bottom-color:#B9CFE6;}

/* 槽车销货单：单元格文字整体加大一号（含输入框、下拉框） */
.tk-table.tk-edit:not(.bk-table){font-size:15.5px;}
.tk-table.tk-edit:not(.bk-table) .tk-in{font-size:15px;height:25px;line-height:23px;}
.tk-table.tk-edit:not(.bk-table) select.tk-in{height:25px;}

/* ================= 槽车销货单：列宽改按「桶装销售」的思路 =================
   19 列各自按内容定宽（px），表宽 auto —— 不再强行铺满一屏，数据少时表格自然收窄；
   单元格内边距 / 表头字号 / 输入框观感与桶装保持一致；行首拖拽列与次序之间
   同样保留那道「斜坡」分隔，把操作区和数据区区分开。
   列宽统一交给文末「全站表格列宽公约」处理，这里只保留观感微调。 */
.tk-table.tk-edit.tk-tank{width:max-content;min-width:0;max-width:none;table-layout:auto;}
.tk-table.tk-tank thead th{font-size:14px;padding:8px 9px;}
.tk-table.tk-tank tbody td{padding:3px 8px;}
.tk-table.tk-tank thead th.tk-ctr{font-size:14px;padding-left:7px;padding-right:7px;}
/* 拖拽列 + 次序：与桶装同款——窄手柄列、居中窄输入框、两者之间一道由深到浅的坡面分隔 */
.tk-table.tk-tank .tk-drag-col{width:22px;padding:0 0 0 6px !important;}
.tk-table.tk-tank .tk-seq .tk-seq-in{max-width:46px;margin:0 auto;padding:0 2px;}
.tk-table.tk-tank th.tk-drag-col,
.tk-table.tk-tank td.tk-drag-col{position:relative;border-right:none !important;}
.tk-table.tk-tank th.tk-drag-col::after,
.tk-table.tk-tank td.tk-drag-col::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:8px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));
}
/* 组标题条 / 空组提示不受列宽影响，保持整条铺满表格 */
.tk-table.tk-tank tbody tr.tk-grp-foot td{padding:8px 12px 10px !important;}

/* ================= 文档管理 → 票据管理（单据票据 / 票据库） ================= */
.doc-lib-stat{font-size:12.5px;color:var(--text-3);white-space:nowrap;}
.bill-bar{gap:8px 10px;}
.bill-range{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-3);white-space:nowrap;}
.bill-range em{font-style:normal;}
.bill-range input[type=date]{height:30px;padding:0 8px;border:1px solid #D9E3EE;border-radius:6px;background:#fff;
  font:inherit;font-size:13px;color:#22384D;}
.bill-range input[type=date]:focus{outline:none;border-color:var(--brand,#0B7FDB);box-shadow:0 0 0 3px rgba(11,127,219,.10);}
.bill-table td{vertical-align:middle;}
.bill-table .bt-file{max-width:280px;overflow:hidden;text-overflow:ellipsis;}
.bill-table .bt-cus,.bill-table .bt-plan{max-width:180px;overflow:hidden;text-overflow:ellipsis;}
.bill-table tbody tr:hover{background:#F7FAFD;}
.bill-th{display:inline-flex;align-items:center;justify-content:center;width:46px;height:32px;
  border:1px solid #E2EAF3;border-radius:5px;background:#F7FAFD;overflow:hidden;
  font-size:10.5px;letter-spacing:.3px;color:#7A8DA1;text-decoration:none;flex:none;}
.bill-th img{width:100%;height:100%;object-fit:cover;display:block;}
.bill-th.pdf{color:#C2410C;background:#FFF6EF;border-color:#F6DCCB;font-weight:600;}
.bill-bar .doc-search{width:300px;}
/* 单据票据：点开「26.10.1-单位名」后这一单的票据卡片 */
.bill-files{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;padding:12px 14px;}
.bf-card{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #E2EAF3;
  border-radius:10px;background:#fff;box-shadow:0 1px 2px rgba(16,42,67,.04);}
.bf-card:hover{border-color:#BFD9F2;box-shadow:0 6px 14px rgba(11,127,219,.10);}
.bf-th{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex:none;
  border:1px solid #E2EAF3;border-radius:8px;background:#F7FAFD;overflow:hidden;
  font-size:10.5px;font-weight:600;color:#7A8DA1;text-decoration:none;}
.bf-th img{width:100%;height:100%;object-fit:cover;display:block;}
.bf-th.pdf{color:#C2410C;background:#FFF6EF;border-color:#F6DCCB;}
.bf-main{flex:1;min-width:0;}
.bf-main b{display:block;font-size:13.5px;font-weight:600;color:#1E3446;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bf-main span{display:block;margin-top:2px;font-size:12px;color:#93A3B3;}
.bf-tag{display:inline-block;min-width:17px;height:17px;line-height:17px;margin-right:5px;padding:0 3px;
  border-radius:4px;background:#EEF6FD;color:#2F7FC4;font-size:11px;font-style:normal;text-align:center;}
.bf-acts{display:flex;align-items:center;gap:0;flex:none;}
@media (max-width:760px){
  .bill-files{grid-template-columns:1fr;padding:10px;}
  .bf-acts .btn{padding:4px 6px;}
}
/* 其他票据：命名建议提示 */
.dk-tip{font-size:12.5px;color:#8A97A6;padding:6px 14px 0;}

/* ================= 全站表格列宽公约（2026-10-20，10-21 实时价格 pb-table 也并入公约） =================
   用户定的规则：
   1) 每列宽 = 这一列最长内容所占的字数 + 约 2 个字的余量 —— 具体做法是表格
      改为按内容自动定宽（table-layout:auto、宽度随内容），单元格左右各留 12px；
      不再用百分比硬撑铺满一屏，数据少时表格自然收窄，屏幕窄时整体横向滑动、不压扁列。
   2) 表头与单元格内容一律居中；数字用等宽数字（tabular-nums），读数仍然成列。
   3) 备注 / 说明列固定 12 个字宽（12em），左对齐、超长自动换行，不挤占别的列。 */
table{
  width:auto !important;min-width:0 !important;max-width:none !important;table-layout:auto !important;
}
/* 在横向滚动容器里的表格一律取「内容自然宽度」（max-content）：
   屏幕不够宽时整表横向滑动、列宽绝不被压扁；宽度够时与 auto 表现相同（同样不铺满） */
.table-scroll > table{
  width:max-content !important;
}
/* 左右各 12px ≈ 半个多字的余量，表头与数据一致，列与列之间不再出现大片空当 */
table > thead > tr > th,
table > tbody > tr > td,
table > tfoot > tr > td{
  padding-left:12px !important;padding-right:12px !important;
}
table > thead > tr > th,
table > tbody > tr > td{text-align:center !important;}
/* 分组标题条 / 组间空行 / 「＋ 新增一行」是整条跨列内容，保持左对齐原样 */
table > tbody > tr.tk-grp > td,
table > tbody > tr.tk-gap > td,
table > tbody > tr.tk-grp-foot > td,
table > tfoot > tr > td.pb-foot{text-align:left !important;}
/* 拖拽手柄列固定窄宽，不参与「内容 + 余量」计算 */
table > thead > tr > th.tk-drag-col,
table > tbody > tr > td.tk-drag-col{width:22px !important;}
/* 单元格里的输入框 / 下拉跟着居中，数字列也居中（去掉原先的右对齐）
   :where() 里的排除条件不计权重，方便下面按列单独改回左对齐 */
table > tbody > tr > td input:where(:not([type=checkbox]):not([type=radio]):not([type=file])),
table > tbody > tr > td select{text-align:center !important;}
/* 备注列：由脚本按表头文字自动打上 .col-note —— 固定放下 12 个汉字、左对齐、可换行。
   宽度要把单元格左右 12px 内边距和输入框自身内边距都算进去，否则「12 个字」会被挤掉两个字 */
table > thead > tr > th.col-note,
table > tbody > tr > td.col-note,
table > tfoot > tr > td.col-note{
  width:calc(12em + 34px) !important;max-width:calc(12em + 34px) !important;
  min-width:calc(12em + 34px) !important;text-align:left !important;white-space:normal;
}
/* 备注格里是输入框：撑满整格、文字贴左边，写满 12 个字不再把整列顶宽 */
table > tbody > tr > td.col-note input,
table > tbody > tr > td.col-note select{
  width:100% !important;box-sizing:border-box;text-align:left !important;padding-left:4px;padding-right:4px;
}

/* ================= 表格坡面阴影（通用效果 · 全系统可引用 · 2026-10-21） =================
   效果：在某一格的左缘或右缘贴一道 8px 宽、由深到浅的竖向「坡面」阴影，
   用来把「操作区」和「数据区」在视觉上分开，或给表格左右两端收边。
   用法：给目标 th / td 加一个类即可（类内自带 position:relative，pointer-events 已关）：
   宽度默认 8px（≈半个字）；想更明显，给所在表格设 --ramp-w:16px（≈一个字，实时价格就这么用的）。
   用法：.edge-ramp-r → 坡面贴该格【右】缘，向右缘渐隐（例：行首拖拽列到数据列的分隔）。
         .edge-ramp-l → 坡面贴该格【左】缘，向左缘渐隐（镜像）。
                    例：表格最后的操作列加它 → 数据区结束、右侧收边。
   已应用的页面：实时价格 pb-table 行首拖拽列用 .edge-ramp-r，并把 --ramp-w 设成 16px（≈一个字，更明显）；
   （.edge-ramp-l 实时价格试过右端收边，用户觉得多余已撤下，类保留供其他页面取用）
   槽车/桶装销货单的拖拽列是等价的旧写法（各表自己的 ::after），观感一致，后续统一时换成本类。 */
.edge-ramp-r,.edge-ramp-l{position:relative;}
/* 坡面宽度可用 --ramp-w 调（默认 8px ≈ 半个字；想更明显就给该表设 16px ≈ 一个字） */
.edge-ramp-r::after,.edge-ramp-l::after{
  content:"";position:absolute;top:0;bottom:0;width:var(--ramp-w,8px);pointer-events:none;
}
.edge-ramp-r::after{right:0;
  background:linear-gradient(90deg,rgba(23,52,80,.18),rgba(23,52,80,.07) 45%,rgba(23,52,80,0));}
.edge-ramp-l::after{left:0;
  background:linear-gradient(270deg,rgba(23,52,80,.18),rgba(23,52,80,.07) 45%,rgba(23,52,80,0));}

/* ================= 行内删除「×」通用类（全系统可引用 · 2026-10-21） =================
   效果：平时完全隐形（但占位不变，列宽不会跟着抖），鼠标移到这一行才淡入出现，
         鼠标移到 × 上转红；键盘 Tab 走到这一行同样显形；触屏没有悬停则常显。
   用法：给删除按钮元素加 .row-del（建议外面单独留一列），例如
         <td class="ops"><span class="row-del" data-del="123">×</span></td>
   说明：隐形时用 opacity + pointer-events:none，不会误点；
         已应用页面：行情实时价格（每行的删除列）。 */
.row-del{
  display:inline-block;opacity:0;pointer-events:none;
  color:#CBD7E2;cursor:pointer;font-size:17px;line-height:1;padding:0 3px;
  transition:opacity .15s ease,color .15s ease;
}
tr:hover .row-del,tr:focus-within .row-del{opacity:1;pointer-events:auto;color:#98A6B5;}
/* 鼠标落到 × 本身再转红：选择器要带上 tr:hover 才压得住上面那条（否则权重不够，红色不生效） */
tr:hover .row-del:hover,tr:hover .row-del:focus-visible{color:#E5484D;}
/* 触屏设备没有 hover，直接常显，保证还能点得到 */
@media (hover:none){.row-del{opacity:1;pointer-events:auto;}}
/* 槽车销售 · 客户名称：表头照旧居中，格里的文字贴左边（名字长短不一也落在同一条左线上），
   输入框撑满整格，点哪儿都能接着打字 */
table.tk-tank:not(.pb-table) > tbody > tr > td.tk-cus-td{text-align:left !important;}
table:not(.pb-table) > tbody > tr > td.tk-cus-td input.tk-combo{
  width:100% !important;text-align:left !important;padding-left:0;padding-right:0;
}
/* 客户名称格右边的「✕ 清空」：有客户时鼠标移进来（或正在这一格打字）才浮出来，
   平时不占视线；点一下＝这一行回到「还没定客户」，立刻落库 */
.tk-cus-w{position:relative;display:block;min-width:0;}
.tk-cus-w.has > .tk-combo{padding-right:16px !important;}
.tk-clr{
  position:absolute;right:0;top:50%;transform:translateY(-50%);
  display:none;align-items:center;justify-content:center;
  width:15px;height:15px;padding:0;border:0;border-radius:50%;
  background:#E3EAF3;color:#7A8DA1;font-size:9px;line-height:1;cursor:pointer;font-family:inherit;
}
.tk-cus-w.has:hover .tk-clr,.tk-cus-w.has:focus-within .tk-clr{display:flex;}
.tk-clr:hover{background:#FDE3DE;color:#C2410C;}

/* ================= 电子用印（合同专用章） ================= */
.tk-stamp-btn{margin-left:auto;display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;
  font-size:12.5px;color:#B03A2E;border-color:#EBC8C2;background:#FFF8F6;}
.tk-stamp-btn:hover{background:#FDF0ED;border-color:#DFA79F;}
.tk-stamp-btn svg{width:15px;height:15px;flex:none;}
.st-mask{position:fixed;inset:0;z-index:1300;background:rgba(15,32,52,.46);display:flex;align-items:center;justify-content:center;padding:16px;}
.st-panel{width:min(1060px,97vw);max-height:93vh;background:#fff;border-radius:16px;box-shadow:0 20px 52px rgba(12,40,70,.28);
  display:flex;flex-direction:column;overflow:hidden;}
.st-head{display:flex;align-items:flex-start;gap:10px;padding:13px 16px;border-bottom:1px solid #EDF2F7;flex:none;}
.st-tt b{font-size:15px;color:#16283C;}
.st-tt span{display:block;margin-top:3px;font-size:11.5px;color:#8A98A7;}
.st-body{display:flex;min-height:0;flex:1;}
.st-left{flex:1;min-width:0;padding:14px;background:#F7FAFD;display:flex;flex-direction:column;gap:10px;overflow:auto;}
.st-stage{position:relative;width:100%;max-width:100%;min-height:360px;margin:0 auto;border-radius:10px;
  display:flex;align-items:center;justify-content:center;background:#EEF3F8;border:1px dashed #D5E0EB;overflow:hidden;}
.st-stage:not(.is-empty){border-style:solid;border-color:#E4EBF3;display:block;}
.st-stage.hot{border-color:#B03A2E;background:#FDF2EF;}
.st-stage canvas{display:block;max-width:100%;border-radius:4px;background:#fff;box-shadow:0 3px 12px rgba(16,40,70,.10);}
.st-empty{text-align:center;color:#7A8DA1;font-size:13px;padding:24px;}
.st-empty b{display:block;font-size:15px;color:#33475B;margin-bottom:6px;}
.st-empty span{display:block;margin-bottom:14px;font-size:12.5px;}
.st-seal{position:absolute;left:70%;top:78%;width:22%;height:auto;cursor:grab;user-select:none;
  transform:translate(-50%,-50%) rotate(-8deg);touch-action:none;pointer-events:auto;}
.st-seal.grabbing{cursor:grabbing;}
.st-pager{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#5B7086;min-height:28px;}
.st-pager .st-tip{margin-left:auto;color:#93A3B3;font-size:11.5px;}
.st-right{width:326px;flex:none;border-left:1px solid #EDF2F7;padding:14px;display:flex;flex-direction:column;gap:12px;overflow:auto;}
.st-fld{display:flex;flex-direction:column;gap:6px;}
.st-fld>label{font-size:12px;color:#7A8DA1;display:flex;align-items:center;gap:6px;}
.st-fld>label em{font-style:normal;color:#3A5670;margin-left:auto;font-variant-numeric:tabular-nums;}
.st-in{height:34px;padding:0 10px;border:1px solid #D9E3EE;border-radius:7px;font:inherit;font-size:13.5px;color:#22384D;background:#fff;width:100%;}
.st-in:focus{outline:none;border-color:#0B7FDB;box-shadow:0 0 0 3px rgba(11,127,219,.10);}
.st-seg{display:flex;gap:6px;}
.st-seg button{flex:1;height:32px;border:1px solid #D9E3EE;background:#fff;border-radius:7px;font:inherit;font-size:12.5px;
  color:#5B7086;cursor:pointer;transition:background .15s,border-color .15s;}
.st-seg button.on{background:#FFF3F0;border-color:#E3A79E;color:#B03A2E;font-weight:500;}
.st-range{display:flex;align-items:center;gap:8px;}
.st-range input[type=range]{flex:1;accent-color:#B03A2E;height:18px;}
.st-acts{display:flex;flex-direction:column;gap:8px;margin-top:2px;}
.st-acts .btn{height:38px;}
/* 未选关联订单就点「存入订单」：下拉框闪动提醒 */
@keyframes stShake{0%,100%{transform:translateX(0);}20%,60%{transform:translateX(-5px);}40%,80%{transform:translateX(5px);}}
.st-shake{animation:stShake .45s ease;border-color:#D64545 !important;box-shadow:0 0 0 2px rgba(214,69,69,.18);}
.st-note{font-size:11.5px;color:#93A3B3;line-height:1.65;}
.st-path{margin-top:-2px;font-size:11.5px;color:#B03A2E;background:#FFF8F6;border:1px solid #F3DCD7;
  border-radius:6px;padding:6px 8px;line-height:1.5;word-break:break-all;}
@media (max-width:860px){
  .st-body{flex-direction:column;overflow:auto;}
  .st-right{width:auto;border-left:0;border-top:1px solid #EDF2F7;flex:none;}
  .st-stage{min-height:260px;}
  .st-left{overflow:visible;}
  .tk-stamp-btn span{display:none;}
}

/* 用印弹窗：hidden 属性优先于 flex 布局 */
.st-fld[hidden],.st-pager[hidden]{display:none;}
/* 表格里的输入框 / 下拉按「内容实际宽度」参与列宽计算（field-sizing:content）：
   避免输入框默认固有宽度把列撑到 ~200px；旧浏览器不支持时列宽由表头文字兜底 */
.table-scroll > table input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=button]):not([type=submit]),
.table-scroll > table select{
  field-sizing:content;
  min-width:2.2em;
}

/* ================= 做合同（购销合同模板生成器） ================= */
.tk-act.ct-btn{color:#0B7FDB;}
.tk-act.ct-btn:hover{background:#EAF3FC;}
.ct-mask{position:fixed;inset:0;z-index:1300;background:rgba(15,32,52,.46);display:flex;align-items:center;justify-content:center;padding:16px;}
.ct-panel{width:min(1180px,97vw);max-height:94vh;background:#fff;border-radius:16px;box-shadow:0 20px 52px rgba(12,40,70,.28);display:flex;flex-direction:column;overflow:hidden;}
.ct-head{display:flex;align-items:flex-start;gap:10px;padding:13px 16px;border-bottom:1px solid #EDF2F7;flex:none;}
.ct-tt b{font-size:15px;color:#16283C;}
.ct-tt span{display:block;margin-top:3px;font-size:11.5px;color:#8A98A7;}
.ct-body{display:flex;min-height:0;flex:1;}
.ct-left{flex:1;min-width:0;overflow:auto;background:#565B62;padding:18px;display:flex;justify-content:center;align-items:flex-start;}
.ct-page{width:794px;min-height:1123px;background:#fff;box-shadow:0 4px 18px rgba(0,0,0,.38);position:relative;
  padding:58px 68px 48px;font-family:SimSun,'Songti SC',STSong,serif;color:#000;box-sizing:border-box;flex:none;}
.ct-page h1{font-size:30px;font-weight:600;text-align:center;margin:0 0 30px;letter-spacing:3px;font-family:SimHei,'Heiti SC','PingFang SC',sans-serif;}
.ct-no{text-align:right;font-size:13px;color:#000;margin-bottom:14px;}
.ct-meta{display:flex;justify-content:space-between;align-items:baseline;font-size:15px;margin:0 0 16px;}
.ct-meta .ct-meta-l{flex:1;min-width:0;}
.ct-meta .ct-meta-r{flex:none;padding-left:18px;}
.ct-meta .ct-blank{display:inline-block;min-width:120px;border-bottom:1px solid #999;height:14px;vertical-align:baseline;}
.ct-p{font-size:14.5px;line-height:1.95;margin:0 0 6px;}
.ct-p b{font-weight:600;}
.ct-goods{width:100%;border-collapse:collapse;margin:4px 0 10px;}
.ct-goods th,.ct-goods td{border:1px solid #000;font-size:13.5px;padding:7px 5px;text-align:center;line-height:1.5;}
.ct-goods th{font-weight:600;}
.ct-goods td.ct-sum-cell{text-align:left;padding-left:10px;}
.ct-sign{width:100%;border-collapse:collapse;margin-top:22px;}
.ct-sign td{border:1px solid #000;width:50%;vertical-align:top;padding:9px 12px;font-size:13.5px;line-height:1.95;}
.ct-seal{position:absolute;pointer-events:none;opacity:.93;transform:rotate(-8deg);z-index:5;}
.ct-right{width:330px;flex:none;border-left:1px solid #EDF2F7;padding:14px;display:flex;flex-direction:column;gap:11px;overflow:auto;}
.ct-fld{display:flex;flex-direction:column;gap:5px;}
.ct-fld>label{font-size:12px;color:#7A8DA1;display:flex;align-items:center;gap:6px;}
.ct-fld>label em{font-style:normal;color:#3A5670;margin-left:auto;font-variant-numeric:tabular-nums;}
.ct-row2{display:flex;gap:8px;}
.ct-row2>*{flex:1;min-width:0;}
.ct-total{background:#FFF8F6;border:1px solid #F3DCD7;border-radius:8px;padding:8px 10px;font-size:12.5px;color:#7A3A30;line-height:1.7;word-break:break-all;}
.ct-total b{font-size:13px;}
.ct-acts{display:flex;flex-direction:column;gap:8px;margin-top:2px;}
.ct-acts .btn{height:38px;}
.ct-note{font-size:11.5px;color:#93A3B3;line-height:1.65;}
@media (max-width:900px){
  .ct-body{flex-direction:column;overflow:auto;}
  .ct-right{width:auto;border-left:0;border-top:1px solid #EDF2F7;flex:none;}
  .ct-left{overflow:visible;padding:10px;}
  .ct-page{transform-origin:top left;}
}
/* 合同落款（供方/需方信息）固定左对齐：必须带 !important，否则被上面全局的
   「table>tbody>tr>td 居中 !important」规则压掉（这正是落款曾被居中的原因） */
.ct-sign td,table.ct-sign>tbody>tr>td,table.ct-sign>tr>td{text-align:left !important;}

/* ================= 槽车/桶装销货单：表头冻结 =================
   表格区域内部滚动（高度由 fitFreezeHead() 按视口剩余空间动态设定），
   行数再多往下滚，次序/计划名称/客户名称…表头始终钉在卡片顶部 */
.table-scroll.freeze-head{overflow:auto;overscroll-behavior:contain;}
.table-scroll.freeze-head > .tk-table > thead > tr > th,
.tk-card .tk-table thead th{position:sticky;top:0;z-index:6;}

/* ================= 人事考勤（手机优先） =================
   手机打开打卡页就是「一张卡 + 两个大按钮」；PC 上同一套，居中限宽，不铺满屏幕 */
.att-gate{display:flex;flex-direction:column;gap:8px;padding:34px 22px;text-align:center;align-items:center;line-height:1.8;}
.att-gate b{font-size:16px;color:#22384D;}
.att-gate span{font-size:13px;color:#7C8FA3;}
.att-wrap{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:14px;}
.att-hero{background:linear-gradient(160deg,#F7FBFF 0%,#EDF5FE 100%);border:1px solid #DDEAF8;border-radius:16px;padding:18px 18px 16px;box-shadow:0 12px 28px -24px rgba(20,70,130,.7);}
.att-hero-top{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:#5C7288;}
.att-name{font-weight:600;color:#2B4864;}
.att-clock{font-size:44px;font-weight:700;letter-spacing:1px;color:#16334E;text-align:center;margin:6px 0 2px;font-variant-numeric:tabular-nums;}
.att-shift{text-align:center;font-size:12.5px;color:#7C8FA3;margin-bottom:10px;}
.att-geo{display:flex;align-items:center;gap:6px;justify-content:center;font-size:12.5px;color:#5C7288;background:#fff;border:1px solid #E4EEF9;border-radius:999px;padding:6px 12px;margin:0 auto 14px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.att-geo b{color:#1E6FBF;}
.att-dot{width:8px;height:8px;border-radius:50%;background:#9DB0C2;flex:none;}
.att-dot.ok{background:#22A06B;box-shadow:0 0 0 3px rgba(34,160,107,.14);}
.att-dot.bad{background:#E0603C;box-shadow:0 0 0 3px rgba(224,96,60,.14);}
.att-btns{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.att-btn{border:0;border-radius:14px;padding:16px 10px;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;
  color:#fff;font-size:13px;box-shadow:0 10px 22px -14px rgba(20,70,130,.7);transition:transform .12s,filter .12s;}
.att-btn b{font-size:17px;letter-spacing:.5px;}
.att-btn span{font-size:12px;opacity:.9;}
.att-btn.in{background:linear-gradient(160deg,#3D9BF0,#1E74CE);}
.att-btn.out{background:linear-gradient(160deg,#2FB37D,#19915F);}
.att-btn:active{transform:translateY(1px);}
.att-btn:disabled{filter:grayscale(.5);opacity:.62;cursor:default;box-shadow:none;}
.att-tip{font-size:12px;color:#8497A9;text-align:center;margin-top:10px;line-height:1.6;}
.att-warn{margin-top:8px;text-align:center;font-size:12.5px;color:#7A5A1E;}
.att-stats{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;}
.att-stat{background:#fff;border:1px solid #E7EFF8;border-radius:12px;padding:10px 4px;text-align:center;}
.att-stat b{display:block;font-size:19px;color:#16334E;font-variant-numeric:tabular-nums;}
.att-stat b.bad{color:#D9534F;}
.att-stat span{font-size:11.5px;color:#8497A9;}
.att-sec{background:#fff;border:1px solid #E7EFF8;border-radius:14px;overflow:hidden;}
.att-sec-h{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;font-size:13px;font-weight:600;color:#33506C;border-bottom:1px solid #F0F5FA;}
.att-more{font-weight:400;font-size:12.5px;color:#1E7FD9;text-decoration:none;}
.att-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid #F4F8FC;}
.att-row:last-child{border-bottom:0;}
.att-row-d{display:flex;flex-direction:column;min-width:52px;font-size:12px;color:#8497A9;}
.att-row-d b{font-size:14px;color:#22384D;}
.att-row-t{flex:1;display:flex;gap:14px;font-size:12.5px;color:#5C7288;font-variant-numeric:tabular-nums;}
.att-empty{padding:22px;text-align:center;font-size:13px;color:#94A6B7;}
.att-pill{display:inline-block;font-style:normal;font-size:11.5px;padding:2px 7px;border-radius:999px;background:#EEF6FF;color:#1E7FD9;}
.att-pill.ok{background:#EAF8F1;color:#1B8A5F;}
.att-pill.late{background:#FFF4E5;color:#B86A00;}
.att-pill.early{background:#F0EEFF;color:#5B4BC4;}
.att-pill.miss{background:#FDEBEA;color:#C0392B;}
.att-month{height:34px;border:1px solid #DDE7F2;border-radius:8px;padding:0 8px;font-size:13px;color:#22384D;background:#fff;}
.att-card{padding:0;overflow:hidden;}
.att-table td,.att-table th{white-space:nowrap;}
.att-table .att-in{width:88px;height:30px;border:1px solid #E1EAF4;border-radius:7px;padding:0 6px;font-size:13px;text-align:right;font-variant-numeric:tabular-nums;}
.att-table .att-in.wide{width:100%;min-width:120px;text-align:left;}
.att-net{color:#12563C;}
.att-sub{font-size:11px;color:#94A6B7;font-weight:400;}
.att-sum td{background:#F7FBFF;font-weight:600;}
.att-td-reason{max-width:220px;white-space:normal;color:#5C7288;}
.att-pcell{font-size:12px;color:#8497A9;}
.att-patch{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid #F1F6FB;}
.att-patch-main{flex:1;display:flex;flex-direction:column;gap:2px;font-size:13px;color:#33506C;min-width:0;}
.att-patch-main b{font-size:14px;color:#1B3550;}
.att-patch-main span{font-size:12.5px;color:#5C7288;}
.att-patch-main em{font-style:normal;font-size:12.5px;color:#7E6A4E;background:#FDF8F0;border-radius:6px;padding:3px 8px;display:inline-block;margin-top:2px;}
.att-patch-main i{font-style:normal;font-size:11.5px;color:#9AABBB;}
.att-patch-act{display:flex;gap:8px;flex:none;}
/* 补卡 / 明细弹窗 */
.att-modal{background:#fff;border-radius:14px;width:min(460px,calc(100vw - 28px));max-height:88vh;display:flex;flex-direction:column;box-shadow:0 30px 60px -30px rgba(10,40,80,.6);}
.att-modal.wide{width:min(720px,calc(100vw - 24px));}
.att-modal-h{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid #EFF5FA;font-size:15px;color:#16334E;}
.att-modal-b{padding:14px 16px;overflow:auto;display:flex;flex-direction:column;gap:10px;}
.att-modal-b label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:#5C7288;}
.att-modal-b input,.att-modal-b select,.att-modal-b textarea{border:1px solid #DDE7F2;border-radius:8px;padding:8px 10px;font-size:14px;color:#22384D;font-family:inherit;}
.att-modal-tip{font-size:12px;color:#8497A9;line-height:1.7;}
.att-modal-f{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid #EFF5FA;}
/* 设置表单 */
.att-form{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;}
.att-form label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:#5C7288;}
.att-form input,.att-form select{border:1px solid #DDE7F2;border-radius:8px;padding:8px 10px;font-size:13.5px;color:#22384D;font-family:inherit;}
.att-span2{grid-column:1 / -1;}
.att-loc{display:flex;gap:8px;}
.att-loc input{flex:1;min-width:0;}
.att-wd{display:flex;gap:6px;flex-wrap:wrap;}
.att-wd-i{display:flex;align-items:center;gap:4px;border:1px solid #E1EAF4;border-radius:8px;padding:5px 9px;cursor:pointer;font-size:13px;color:#33506C;}
.att-wd-i input{margin:0;}
.att-form-act{display:flex;gap:10px;margin-top:16px;}
@media (max-width:640px){
  .att-clock{font-size:38px;}
  .att-stats{grid-template-columns:repeat(3,1fr);}
  .att-form{grid-template-columns:1fr;}
  .att-modal-b{padding:12px;}
  .att-patch{flex-direction:column;align-items:stretch;}
  .att-patch-act{justify-content:flex-end;}
  .att-btns{gap:10px;}
  .att-btn{padding:14px 8px;}
  .att-btn b{font-size:16px;}
}
/* ================= CRM 客户资产化 ================= */
.crm-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:14px;}
.crm-kpi{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 14px;cursor:pointer;transition:.16s;}
.crm-kpi:hover{box-shadow:0 6px 18px -10px rgba(10,40,70,.35);transform:translateY(-1px);}
.crm-kpi .t{font-size:12.5px;color:var(--text-3);}
.crm-kpi .v{font-size:26px;font-weight:700;line-height:1.25;color:var(--text);}
.crm-kpi .v small{font-size:12px;font-weight:400;color:var(--text-3);margin-left:3px;}
.crm-kpi .d{font-size:12px;color:var(--text-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.crm-kpi.warn{border-left:3px solid #E8A33D;}
.crm-kpi.warn .v{color:#B7791F;}
.crm-kpi.accent{border-left:3px solid #1E9FFF;}
.crm-kpi.accent .v{color:#0B63B8;}
.crm-kpi.ok{border-left:3px solid #16A06A;}
.crm-kpi.ok .v{color:#12805C;}

.crm-two{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px;}
.crm-panel{padding:14px 16px;}
.crm-panel-h{display:flex;align-items:baseline;gap:8px;margin-bottom:10px;}
.crm-panel-h b{font-size:15px;}
.crm-panel-h span{font-size:12.5px;color:var(--text-3);}
.crm-panel-h .crm-more{margin-left:auto;font-size:12.5px;color:var(--primary);cursor:pointer;}
.crm-empty{padding:18px 8px;color:var(--text-3);font-size:13px;text-align:center;}

.crm-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;}
.crm-cards-wide{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));}
.crm-card{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#FCFDFF;cursor:pointer;transition:.14s;}
.crm-card:hover{border-color:#B9D5EE;background:#F7FBFF;}
.crm-card-top{display:flex;align-items:center;gap:6px;justify-content:space-between;}
.crm-card-top b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.crm-card-mid{display:flex;justify-content:space-between;font-size:12px;color:var(--text-3);margin-top:5px;}
.crm-card-bot{display:flex;justify-content:space-between;align-items:center;margin-top:7px;font-size:12.5px;}
.crm-card-acts{display:flex;gap:4px;margin-top:6px;border-top:1px dashed var(--line);padding-top:5px;}

.crm-st{font-size:11.5px;padding:1px 7px;border-radius:9px;background:#EEF3F8;color:#55707f;white-space:nowrap;}
.crm-st-lead{background:#EEF1F5;color:#5B6B7B;}
.crm-st-intent{background:#E8F1FC;color:#1F6FB2;}
.crm-st-quote{background:#FFF2E2;color:#B7791F;}
.crm-st-deal{background:#E6F6EF;color:#12805C;}
.crm-st-repeat{background:#F1EBFB;color:#6B46C1;}
.crm-st-lost{background:#FDECEC;color:#C53030;}

.crm-due{font-size:12px;padding:1px 7px;border-radius:9px;background:#EEF3F8;color:#55707f;}
.crm-due-over{background:#FDECEC;color:#C53030;font-weight:600;}
.crm-due-today{background:#FFF2E2;color:#B7791F;font-weight:600;}
.crm-due-soon{background:#E8F1FC;color:#1F6FB2;}
.crm-due-ok{background:#EEF3F8;color:#5B6B7B;}
.crm-due-none{background:#F4F6F8;color:#93A3B0;}

.crm-funnel{display:flex;flex-direction:column;gap:8px;}
.crm-funnel-row{display:grid;grid-template-columns:64px 1fr 40px;align-items:center;gap:8px;cursor:pointer;}
.crm-funnel-l{font-size:13px;color:var(--text-2);}
.crm-funnel-bar{height:16px;background:#F1F5F9;border-radius:8px;overflow:hidden;}
.crm-funnel-bar i{display:block;height:100%;border-radius:8px;background:#1E9FFF;}
.crm-funnel-bar i.crm-st-lead{background:#95A5B5;}
.crm-funnel-bar i.crm-st-intent{background:#4C9FE0;}
.crm-funnel-bar i.crm-st-quote{background:#E8A33D;}
.crm-funnel-bar i.crm-st-deal{background:#16A06A;}
.crm-funnel-bar i.crm-st-repeat{background:#7C5CD6;}
.crm-funnel-bar i.crm-st-lost{background:#E5484D;}
.crm-funnel-n{font-size:13px;text-align:right;color:var(--text-2);}
/* 客户分析：结构行更宽的数值列、键值行 */
.crm-funnel-row.wide{grid-template-columns:80px 1fr 96px;}
.crm-kv{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px dashed #EEF2F6;font-size:13px;color:var(--text-3);}
.crm-kv:last-child{border-bottom:none;}
.crm-kv b{font-size:16px;font-weight:600;color:var(--text);}
.crm-kv b.hot{color:#C53030;}
.crm-kv b.good{color:#127C56;}

.crm-owners{display:flex;flex-direction:column;gap:6px;}
.crm-owner{display:grid;grid-template-columns:1fr 70px 110px;font-size:13px;padding:6px 8px;border-radius:6px;background:#FAFCFE;}
.crm-owner .n{color:var(--text-2);}
.crm-owner .due{text-align:right;color:var(--text-3);font-size:12.5px;}
.crm-owner .due.bad{color:#C53030;font-weight:600;}

.crm-week{padding:14px 16px;margin-bottom:12px;}
.crm-week-top{display:flex;align-items:baseline;justify-content:space-between;}
.crm-week-top b{font-size:15px;margin-right:8px;}
.crm-week-top span{font-size:12.5px;color:var(--text-3);}
.crm-week-goal{font-size:13px;color:var(--text-2);}
.crm-week-bar{height:10px;background:#F1F5F9;border-radius:6px;overflow:hidden;margin:9px 0;}
.crm-week-bar i{display:block;height:100%;background:linear-gradient(90deg,#1E9FFF,#16A06A);border-radius:6px;}
.crm-week-foot{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--text-3);}
.crm-week-foot b{color:var(--text);}
.crm-week-foot b.bad{color:#C53030;}

/* 客户中心顶部指标条：数字在上（大）、文字在下 */
/* ===== 顶栏：页签（槽车同款胶囊组）与指标卡并列一行 =====
   窄屏放不下时指标卡整体换到下一行，仍然是一套整齐的卡片 */
.crm-topbar{display:flex;align-items:stretch;gap:14px;margin-bottom:12px;flex-wrap:wrap;}
/* 页签：与进销「槽车销售 / 桶装销售」完全同一套 sc-strip 公共效果，
   这里只调字号与宽度（高度拉伸与右边指标卡同高）；翻面动画 layoutStrip 全套照搬 */
.crm-tabs2{
  height:44px;align-self:center;flex:none;
  width:min(540px,100%);border-radius:8px;overflow:hidden;
}
.crm-tabs2 .sc-tab{font-size:13.5px;padding:0 16px;}
.crm-tabs2 .sc-tab .tx::after{bottom:-7px;width:20px;height:3px;}
.crm-tabs2 .sc-cnt{min-width:17px;height:17px;line-height:17px;font-size:11px;border-radius:9px;}
/* 库存中心页签：与客户中心完全同款的 sc-strip 纸页切换（44px 高）
   11-08 加了「分装记录」第六格：条宽改由内容撑开（列 minmax(64px,auto)），
   等宽 1fr 会把「桶装归档 / 槽车归档 / 分装记录」挤到一起 */
.inv-tabs{height:44px;width:auto;max-width:100%;border-radius:8px;overflow:hidden;flex:none;}
.inv-tabs .sc-tab{font-size:13.5px;padding:0 16px;}
.inv-tabs .sc-tab .tx::after{bottom:-7px;width:20px;height:3px;}
/* 行情页签（实时价格 / 历史价格）：照库存中心 .inv-tabs 收小，
   44px 高、限宽靠左落在面板左上角，纯文字不带图标，翻面动画原样保留 */
.sc-strip.price-tabs{height:44px;width:min(340px,100%);border-radius:8px;overflow:hidden;flex:none;}
.price-tabs .sc-tab{font-size:13.5px;padding:0 16px;gap:0;}
.price-tabs .sc-tab .si{width:0;height:0;opacity:0;}
.price-tabs .sc-tab .tx::after{bottom:-7px;width:20px;height:3px;}
.crm-topbar .crm-stats{flex:1;display:flex;gap:10px;margin-bottom:0;min-width:620px;}
.crm-topbar .crm-stat{flex:1;min-width:0;padding:9px 12px 8px;}
.crm-topbar .crm-stat .v{font-size:23px;}
@media (max-width:1100px){
  .crm-topbar .crm-stats{min-width:100%;}
}
.crm-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:12px;}
.crm-stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 16px 10px;cursor:pointer;}
.crm-stat:hover{border-color:#B9D5EE;box-shadow:0 4px 12px -8px rgba(10,40,70,.4);}
.crm-stat .v{font-size:27px;font-weight:700;line-height:1.15;color:var(--text);}
.crm-stat .v small{font-size:13px;font-weight:500;color:var(--text-3);margin-left:3px;}
.crm-stat .t{font-size:13px;color:var(--text-3);margin-top:3px;}
.crm-stat.bad .v{color:#C53030;}
@media (max-width:1180px){ .crm-stats{grid-template-columns:repeat(3,minmax(0,1fr));} }
@media (max-width:860px){ .crm-stats{grid-template-columns:repeat(2,minmax(0,1fr));} }
.crm-tabs{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;align-items:center;}.crm-tab{border:1px solid var(--line);background:#fff;border-radius:16px;padding:6px 15px;font-size:13.5px;cursor:pointer;color:var(--text-2);}
.crm-tab.on{background:var(--primary);border-color:var(--primary);color:#fff;}
.crm-tabs-act{margin-left:auto;display:flex;gap:8px;align-items:center;}
/* 客户中心页头收窄：去掉副标题后整体上提 */
.page-head.crm-head{margin-bottom:10px;}
@media (max-width:860px){
  .crm-tabs-act{margin-left:0;width:100%;}
}
.crm-board{display:grid;grid-template-columns:repeat(5,minmax(180px,1fr));gap:10px;align-items:start;overflow-x:auto;padding-bottom:6px;}
.crm-col{background:#F7FAFD;border:1px solid var(--line);border-radius:8px;min-height:120px;}
.crm-col-h{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;font-size:13px;border-radius:7px 7px 0 0;background:#EEF3F8;}
.crm-col-h b{font-size:13.5px;}
.crm-col-h span{font-size:11.5px;color:var(--text-3);}
.crm-col-b{padding:8px;display:flex;flex-direction:column;gap:7px;max-height:calc(100vh - 300px);overflow-y:auto;}
.crm-mini{background:#fff;border:1px solid var(--line);border-radius:7px;padding:8px 9px;cursor:pointer;}
.crm-mini:hover{border-color:#B9D5EE;box-shadow:0 4px 12px -8px rgba(10,40,70,.4);}
.crm-mini .t{display:flex;justify-content:space-between;gap:6px;font-size:13px;}
.crm-mini .t span{font-size:11px;color:var(--text-3);}
.crm-mini .m{font-size:11.5px;color:var(--text-3);margin-top:3px;}
.crm-mini .b{display:flex;justify-content:space-between;align-items:center;margin-top:5px;font-size:12px;}
.crm-mini .acts{display:flex;gap:2px;margin-top:4px;}

.crm-assign-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:10px;font-size:13.5px;}
.crm-assign-bar select{padding:6px 10px;border:1px solid #D5DEE7;border-radius:4px;font-size:13.5px;}
/* 新增客户按钮：放在分配栏里「确认分配」旁边 */
.crm-add-inline{border-style:dashed;}
/* 顶部插行新增：整行浅黄高亮，格子里的输入框无边框融入表格 */
.crm-new-row{background:#FFFDF4 !important;box-shadow:inset 3px 0 0 #E8B93E;}
.crm-new-row td{white-space:nowrap;}
.crm-new-row .nr-inp{width:100%;min-width:70px;border:1px solid transparent;background:transparent;border-radius:4px;padding:4px 6px;font-size:13.5px;color:var(--text);font-family:inherit;}
.crm-new-row .nr-inp:focus{outline:none;border-color:#B9D5EE;background:#fff;}
.crm-new-row .nr-inp::placeholder{color:#B8C2CC;}
.crm-new-row select.nr-inp{cursor:pointer;}
.crm-new-row .nr-ta{resize:none;line-height:1.5;white-space:normal;min-width:180px;}
.crm-new-row .nr-ops{white-space:nowrap;}
.crm-new-row .nr-ops .btn{margin-right:6px;}
/* 冻结表头：贴住顶部时加投影，跟下面的行分清层次 */
.crm-cl-scroll.crm-freeze thead th{box-shadow:inset 0 -1px 0 var(--line),0 2px 6px -4px rgba(18,54,95,.25);}
.crm-tip-inline{font-size:12.5px;color:var(--text-3);}

.crm-modal .modal-body{padding:16px 20px;}
.crm-tip{font-size:12.5px;color:var(--text-3);line-height:1.75;margin-top:10px;background:#FAFCFE;border-radius:6px;padding:8px 10px;}
.crm-sub{font-size:11.5px;color:var(--text-3);margin-top:2px;}
.crm-txt{max-width:420px;white-space:normal;line-height:1.5;}
.crm-link{color:var(--primary);cursor:pointer;}
.crm-link:hover{text-decoration:underline;}
.crm-sel{padding:6px 10px;border:1px solid #D5DEE7;border-radius:4px;font-size:13.5px;margin-right:auto;}

.crm-qtable{width:100%;border-collapse:collapse;font-size:13px;}
.crm-qtable th,.crm-qtable td{border-bottom:1px solid var(--line);padding:7px 8px;text-align:left;}
.crm-qtable th{background:#FAFCFE;font-weight:600;color:var(--text-2);font-size:12.5px;}
.crm-qtable input,.crm-qtable select{width:100%;border:1px solid #DDE5ED;border-radius:4px;padding:6px 7px;font-size:13px;font-family:inherit;}
.crm-quote-grid{margin-top:12px;}
.crm-quote-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;}
.crm-quote-total{font-size:14px;}
.crm-quote-total b{color:#C2410C;font-size:17px;}
.crm-quote-head{display:flex;justify-content:space-between;gap:14px;margin-bottom:10px;}
.crm-quote-head b{font-size:15px;}
.crm-quote-head span{font-size:12.5px;color:var(--text-3);margin-left:6px;}
.crm-quote-meta{display:flex;flex-direction:column;gap:2px;font-size:12.5px;color:var(--text-3);text-align:right;}
.crm-q-draft{font-size:11.5px;padding:1px 7px;border-radius:9px;background:#EEF1F5;color:#5B6B7B;}
.crm-q-sent{font-size:11.5px;padding:1px 7px;border-radius:9px;background:#E8F1FC;color:#1F6FB2;}
.crm-q-accepted{font-size:11.5px;padding:1px 7px;border-radius:9px;background:#E6F6EF;color:#12805C;}
.crm-q-expired{font-size:11.5px;padding:1px 7px;border-radius:9px;background:#FDECEC;color:#C53030;}

.crm-settings{max-width:720px;padding:18px 20px;}

/* 客户 360 面板 */
.crm-360{width:1040px;max-width:100%;}
.crm-360-head{display:flex;align-items:flex-start;padding:16px 20px 10px;}
.crm-360-name{font-size:18px;font-weight:700;display:flex;align-items:center;gap:8px;}
.crm-360-grade{font-size:12px;font-weight:400;color:var(--text-3);background:#F1F5F9;border-radius:9px;padding:1px 8px;}
.crm-360-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--text-3);margin-top:6px;}
.crm-360-head .x{margin-left:auto;cursor:pointer;color:var(--text-3);font-size:18px;line-height:1;}
.crm-360-stat{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);margin:0 0 2px;}
.crm-360-stat>div{background:#FAFCFE;padding:9px 12px;}
.crm-360-stat span{display:block;font-size:11.5px;color:var(--text-3);}
.crm-360-stat b{font-size:15px;}
.crm-360-body{display:grid;grid-template-columns:300px 1fr;gap:0;max-height:66vh;overflow:hidden;}
.crm-360-left{border-right:1px solid var(--line);padding:12px 14px;overflow-y:auto;}
.crm-360-right{padding:12px 16px;overflow-y:auto;}
.crm-360-acts{display:flex;gap:8px;margin-bottom:10px;}
.crm-sec{margin-bottom:16px;}
.crm-sec-h{font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px;padding-left:8px;border-left:3px solid var(--primary);}
.crm-sec-h span{font-weight:400;color:var(--text-3);font-size:12px;margin-left:4px;}
.crm-kv{display:flex;gap:8px;font-size:12.5px;padding:3px 0;border-bottom:1px dashed #EEF2F6;}
.crm-kv span{color:var(--text-3);min-width:76px;}
.crm-kv b{font-weight:500;color:var(--text);}
.crm-hint{font-size:11.5px;color:var(--text-3);margin-top:6px;}
.crm-stage-btns{display:flex;flex-wrap:wrap;gap:6px;}
.crm-stage-btn{border:1px solid var(--line);background:#fff;border-radius:14px;padding:4px 12px;font-size:12.5px;cursor:pointer;color:var(--text-2);}
.crm-stage-btn.on{background:var(--primary);border-color:var(--primary);color:#fff;}
.crm-360-links{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;}
.crm-timeline{display:flex;flex-direction:column;gap:10px;padding-left:4px;}
.crm-tl{display:flex;gap:9px;}
.crm-tl-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);margin-top:6px;flex:0 0 8px;}
.crm-tl-b{flex:1;border-bottom:1px dashed #EEF2F6;padding-bottom:7px;}
.crm-tl-h{display:flex;gap:8px;align-items:baseline;font-size:12.5px;color:var(--text-3);}
.crm-tl-h b{color:var(--text);font-size:13px;}
.crm-tl-h i{font-style:normal;color:#1F6FB2;margin-left:auto;}
.crm-tl-c{font-size:13px;margin-top:3px;line-height:1.6;white-space:pre-wrap;}
.crm-logs{display:flex;flex-direction:column;gap:4px;}
.crm-log{display:grid;grid-template-columns:130px 90px 1fr;gap:6px;font-size:12px;color:var(--text-3);padding:3px 0;border-bottom:1px dashed #EEF2F6;}
.crm-log b{color:var(--text-2);}

@media (max-width:1180px){
  .crm-kpis{grid-template-columns:repeat(3,minmax(0,1fr));}
  .crm-board{grid-template-columns:repeat(5,200px);}
}
@media (max-width:860px){
  .crm-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
  .crm-two{grid-template-columns:1fr;}
  .crm-cards{grid-template-columns:1fr 1fr;}
  .crm-board{grid-template-columns:repeat(5,190px);}
  .crm-360-body{grid-template-columns:1fr;max-height:none;}
  .crm-360-left{border-right:none;border-bottom:1px solid var(--line);}
  .crm-360-stat{grid-template-columns:repeat(3,1fr);}
  .crm-owner{grid-template-columns:1fr 60px;}
  .crm-owner .due{grid-column:2;text-align:right;}
}

/* ===== 进销面板：在办 / 已归档 切换 + 顶部小条（只加这一条，不改表格列宽与间距） ===== */
.tk-subbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:4px 2px 9px;}
.tk-tabs{display:inline-flex;background:#EEF4FA;border-radius:7px;padding:2px;gap:2px;}
.tk-tab{border:0;background:transparent;color:#5B6B7C;font-size:13px;padding:4px 14px;border-radius:6px;cursor:pointer;font-family:inherit;line-height:1.5;}
.tk-tab:hover{color:#1D5C9E;}
.tk-tab.on{background:#fff;color:#12365f;font-weight:600;box-shadow:0 1px 3px rgba(18,54,95,.13);}
.tk-kpi{font-size:12.5px;color:#6B7C8F;}
.tk-kpi b{color:#12365f;font-weight:600;}
.tk-kpi em{color:#C0392B;font-style:normal;font-weight:600;}
/* 收货款页签：搜索框放在页签同一条、贴右（10-26 用户要求从工具栏挪下来） */
.tk-subbar .search{display:flex;align-items:center;gap:6px;border:1px solid #D5DEE7;border-radius:4px;
  padding:0 10px;height:29px;background:#fff;margin-left:auto;flex:0 0 auto;width:232px;max-width:100%;}
.tk-subbar .search:focus-within{border-color:#1E9FFF;box-shadow:0 0 0 3px rgba(30,159,255,.12);}
.tk-subbar .search .s-ic{color:#9AA8B6;font-size:13px;}
.tk-subbar .search input{border:none;outline:none;font-size:13px;width:100%;font-family:inherit;background:transparent;color:inherit;}
.tk-act.tk-ok{color:#1F7A4C;border-color:#BCE3CD;background:#F3FBF7;}
.tk-act.tk-ok:hover{background:#E7F8EF;border-color:#9ED8B6;color:#177040;}
.tk-act.tk-check{color:#1D5C9E;border-color:#C9DCEE;background:#F3F9FE;}
.tk-act.tk-check:hover{background:#E8F3FD;border-color:#A9CFEA;color:#17528C;}

/* ---------- 行情：历史价格分析 · 商品对比 chips ---------- */
.pa-chip{border:1.5px solid #D8E2EC;background:#fff;color:#5B6B7C;border-radius:16px;padding:4px 14px;font-size:13px;cursor:pointer;font-family:inherit;transition:border-color .15s,color .15s;line-height:1.5;}
.pa-chip:hover{border-color:#9FB8D2;color:#22384D;}
.pa-chip.on{font-weight:600;background:#F6FAFF;}

/* ---------- 销货退货单 ---------- */
.rt-src{display:inline-block;padding:1px 7px;border-radius:5px;background:#F2F7FC;border:1px solid #E1EBF5;color:#1D5E9E;font-size:12.5px;}
#rtBody tr:hover .rt-src{background:#E9F3FC;}
.tk-table td .tk-ops-w{display:flex;flex-wrap:wrap;gap:4px;}

/* ---------- CRM 客户重构：来源 / 类型 / 回款徽标 ---------- */
.crm-src{display:inline-block;padding:1px 8px;border-radius:9px;font-size:12px;line-height:18px;white-space:nowrap;}
.crm-src.self{background:#EAF3DE;color:#3B6D11;border:1px solid #C0DD97;}
.crm-src.assign{background:#EEEDFE;color:#534AB7;border:1px solid #CECBF6;}
.crm-src.tank{background:#E6F1FB;color:#185FA5;border:1px solid #B5D4F4;}
.crm-src.bucket{background:#E1F5EE;color:#0F6E56;border:1px solid #9FE1CB;}
.crm-src.ok{background:#E8F7EE;color:#0E9F6E;border:1px solid #BFE8D2;}
.crm-src.wait{background:#FAEEDA;color:#854F0B;border:1px solid #FAC775;}

/* ---------- 客户中心：页签内容区局部刷新（切页签不再整屏闪） ---------- */
.crm-body{position:relative;transition:opacity .12s ease;}
/* 页签切换的滑入滑出：与进销 #scBody 同款（此前 #crmBody 没有这套规则，
   加动画类毫无效果，内容瞬间生硬替换，观感就是「上下卡顿」） */
#crmBody{transition:opacity .14s ease,transform .18s ease;}
#crmBody.sc-out-l{opacity:0;transform:translateX(-14px);}
#crmBody.sc-out-r{opacity:0;transform:translateX(14px);}
#crmBody.sc-in-r{animation:scInR .34s cubic-bezier(.22,.9,.28,1) both;}
#crmBody.sc-in-l{animation:scInL .34s cubic-bezier(.22,.9,.28,1) both;}
.crm-body.is-loading{opacity:.55;pointer-events:none;}
.crm-body.is-loading::before{content:'';position:absolute;left:0;right:0;top:-8px;height:2px;border-radius:2px;z-index:3;
  background:linear-gradient(90deg,transparent,var(--primary),transparent);
  background-size:38% 100%;background-repeat:no-repeat;animation:crmSlide .9s linear infinite;}
@keyframes crmSlide{0%{background-position:-38% 0}100%{background-position:138% 0}}
@media (prefers-reduced-motion:reduce){.crm-body.is-loading::before{animation:none;background:var(--primary);}}

/* ---- 库存中心·分析页：图例小圆点 ---- */
.lg-dot{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:-1px;margin-right:4px;}

/* ---------- 客户中心重组：我的客户/公海切换、报价小圆点、工作台公海卡 ---------- */
.crm-seg{display:inline-flex;background:#F2F5F8;border:1px solid var(--line);border-radius:9px;padding:2px;gap:2px;margin-right:12px;}
.crm-seg-b{border:0;background:transparent;padding:5px 13px;border-radius:7px;font-size:13px;color:var(--text-2);cursor:pointer;white-space:nowrap;}
.crm-seg-b b{font-weight:500;margin-left:2px;}
.crm-seg-b.on{background:#fff;color:var(--primary-dark);box-shadow:0 1px 2px rgba(16,64,120,.12);}
.crm-cus-meta{display:flex;align-items:center;gap:5px;margin-top:3px;flex-wrap:wrap;}
.crm-qdot{border:1px solid transparent;background:transparent;font-size:11.5px;line-height:17px;padding:0 5px;border-radius:9px;cursor:pointer;color:var(--text-2);white-space:nowrap;}
.crm-qdot::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px;vertical-align:1px;}
.crm-qdot.live{color:#185FA5;}
.crm-qdot.live::before{background:#378ADD;}
.crm-qdot.old{color:var(--text-3);}
.crm-qdot.old::before{background:#B4B2A9;}
.crm-qdot.none{color:var(--text-3);}
.crm-qdot.none::before{background:transparent;border:1px solid #B4B2A9;}
.crm-qdot:hover{background:#EEF3F8;}
.crm-st-btn{border:0;background:transparent;padding:0;cursor:pointer;line-height:1;}
.crm-st-btn:hover{opacity:.8;}
.crm-pool-card{display:flex;align-items:center;gap:14px;padding:13px 16px;margin-bottom:12px;}
.crm-pool-ic{width:42px;height:42px;border-radius:10px;background:#FAEEDA;color:#854F0B;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:500;flex:none;}
.crm-pool-txt{flex:1;min-width:0;}
.crm-pool-txt b{display:block;font-size:14px;font-weight:500;color:var(--text);}
.crm-pool-txt span{font-size:12.5px;color:var(--text-2);}
.crm-pool-act{display:flex;gap:8px;flex:none;flex-wrap:wrap;}
.crm-panel-f{padding:9px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--text-2);}
.crm-pool-tip{padding:10px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--text-2);background:#FBFCFD;}
.crm-pool-bad{color:#A32D2D;font-weight:500;}
.crm-qs-sum{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px;}
.crm-qs-sum>div{background:#F6F8FA;border-radius:8px;padding:9px 12px;}
.crm-qs-sum span{display:block;font-size:11.5px;color:var(--text-2);}
.crm-qs-sum b{font-size:14px;font-weight:500;}
.crm-stage-pick{display:flex;flex-wrap:wrap;gap:8px;}
@media (max-width:860px){
  .crm-seg{margin-right:0;width:100%;}
  .crm-pool-card{flex-wrap:wrap;}
  .crm-pool-act{width:100%;justify-content:flex-end;}
  .crm-qs-sum{grid-template-columns:repeat(2,1fr);}
}

/* 客户页页头：切换 + 提示 + 筛选，一行放不下自动换行（不再挤成 0 宽） */
.crm-cus-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px 10px;border-bottom:1px solid var(--line);}
.crm-cus-hint{font-size:12.5px;color:var(--text-3);}
.crm-cus-h .spacer{flex:1;}
.crm-cus-h .toolbar{padding:0;border:0;background:transparent;margin:0;gap:8px;flex-wrap:wrap;}
.crm-cus-h .toolbar .search{min-width:200px;height:32px;}

/* ===== 客户列表（套用进销「槽车销货单」那套公共表格 · 2026-10-23） =====
   表格本身直接吃 .tk-table.tk-edit：浅蓝渐变表头、行 hover、每格四边细线（Excel 网格感）；
   这里只补 CRM 自己的列宽、左对齐列，以及「胶囊 / 状态 / 小菜单 / 行内编辑」几个控件。 */
.crm-cl-scroll{margin:0 -16px;}          /* 表格顶到卡片两边，和销货单一样是通铺 */
.crm-cl-table th,.crm-cl-table td{vertical-align:middle;}
/* 行高比销货单松一点：客户名称格里是「名字 + 编号」两行 */
.crm-cl-table tbody>tr>td{padding-top:7px !important;padding-bottom:7px !important;}
/* ===== 字号整体加大一号（11-07 用户要求）：除「客户画像」外都放大，
   行距与内边距同步收紧补偿，列宽、行高保持原样（行高靠 8→7px 内边距抵掉） ===== */
.crm-cl-table{font-size:15.5px;}
.crm-cl-table th{font-size:14.5px;padding:8px 8px;}
.crm-cl-table .crm-sub{font-size:12.5px;}
.crm-cl-table .crm-flast{font-size:13.5px;line-height:1.35;}
.crm-cl-table .crm-fway{font-size:12px;}
.crm-cl-table .crm-fbtn{font-size:13.5px;line-height:20px;padding:0 9px;}
.crm-cl-table .crm-pill{font-size:13.5px;}
.crm-cl-table .crm-pill .crm-cv{font-size:11px;}
.crm-cl-table .crm-stt{font-size:13.5px;}
.crm-cl-table .crm-rank{font-size:13px;}
.crm-cl-table .inv-ok,.crm-cl-table .inv-none{font-size:13.5px;}
.crm-cl-table .crm-call{font-size:13px;}
.crm-cl-table th.crm-c-ck,.crm-cl-table td.crm-c-ck{width:34px;}
.crm-cl-table th.crm-c-seq,.crm-cl-table td.crm-c-seq{width:56px;}
.crm-cl-table th.crm-c-name,.crm-cl-table td.crm-c-name{width:138px;max-width:138px;}
.crm-cl-table th.crm-c-demand,.crm-cl-table td.crm-c-demand{width:86px;}
.crm-cl-table th.crm-c-contact,.crm-cl-table td.crm-c-contact{width:88px;}
.crm-cl-table th.crm-c-phone,.crm-cl-table td.crm-c-phone{width:134px;}
.crm-cl-table th.crm-c-loc,.crm-cl-table td.crm-c-loc{width:76px;max-width:76px;}
.crm-cl-table th.crm-c-inv,.crm-cl-table td.crm-c-inv{width:96px;text-align:center;}
/* 位置 / 开票资料弹窗 */
.crm-pop-mask{position:fixed;inset:0;background:rgba(15,30,50,.42);z-index:210;display:flex;align-items:center;justify-content:center;padding:20px;}
.crm-pop{background:#fff;border-radius:12px;width:min(480px,94vw);max-height:88vh;overflow:auto;box-shadow:0 18px 60px rgba(0,0,0,.28);}
.crm-pop-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #eef2f7;font-size:15px;}
.crm-pop-body{padding:14px 18px 4px;}
.crm-pop-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.crm-pop-row>span{width:76px;flex:none;font-size:13px;color:#5a6b7d;}
.crm-pop-row input,.crm-pop-row select{flex:1;height:34px;border:1px solid #d6dee8;border-radius:7px;padding:0 10px;font-size:13.5px;}
.crm-pop-row input[readonly]{background:#f5f7fa;color:#8aa2bb;}
.crm-pop-acts{display:flex;align-items:center;gap:10px;padding:10px 18px 16px;}
.inv-ok{color:#0a8f4c;font-size:12.5px;}
.inv-none{color:#8aa2bb;font-size:12.5px;}
.crm-cl-table th.crm-c-profile,.crm-cl-table td.crm-c-profile{width:448px;max-width:448px;}
.crm-cl-table th.crm-c-owner,.crm-cl-table td.crm-c-owner{width:80px;}
.crm-cl-table th.crm-c-rank,.crm-cl-table td.crm-c-rank{width:78px;}
.crm-cl-table th.crm-c-src,.crm-cl-table td.crm-c-src{width:112px;}
.crm-cl-table th.crm-c-stt,.crm-cl-table td.crm-c-stt{width:118px;}
/* 跟进格：加大到 280px，第一行按钮+日期+方式，下面直接展示最近一次跟进内容（两行折叠） */
.crm-cl-table th.crm-c-follow,.crm-cl-table td.crm-c-follow{width:280px;text-align:left !important;vertical-align:top;}
.crm-cl-table td.crm-c-follow{padding-top:8px;padding-bottom:8px;}
.crm-fl-top{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.crm-fway{display:inline-block;border-radius:9px;padding:0 7px;font-size:11px;line-height:17px;background:#EAF3FB;color:#3D7DB0;}
.crm-flast{margin-top:4px;font-size:12.5px;line-height:1.5;color:var(--text-2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  word-break:break-all;white-space:normal;}
.crm-flast.crm-none{color:var(--text-3);opacity:.75;}
.crm-cl-table th.crm-c-time,.crm-cl-table td.crm-c-time{width:92px;}
/* 客户名称、客户画像靠左：长短不一也落在同一条左线上（其余列照公约居中） */
.crm-cl-table th.crm-c-name,.crm-cl-table td.crm-c-name,
.crm-cl-table th.crm-c-profile,.crm-cl-table td.crm-c-profile{text-align:left !important;}
/* 客户画像：两行版面 —— 文字贴左上、自动换行，最多两行（超出折叠成省略号） */
.crm-cl-table th.crm-c-profile,.crm-cl-table td.crm-c-profile{vertical-align:top;}
.crm-clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  white-space:normal;word-break:break-word;text-align:left;color:var(--text-2);line-height:1.55;
  font-size:13px;margin-top:1px;}
.crm-seq{color:var(--text-3);font-variant-numeric:tabular-nums;}
.crm-cl-nm{white-space:nowrap;}
/* 名称 / 位置列按字数占位（11-05）：名称 7 字、位置 4 字封顶，超出省略号收束，
   鼠标悬停由 hovBoot 浮出全文卡片（td 加 td-hov、文字包 tip-tx，只在真被裁掉时才弹） */
.crm-cl-table td.crm-c-name .crm-link{display:block;max-width:100%;}
.crm-cl-table td.crm-c-name .crm-link .tip-tx{max-width:100%;}
/* 客户名称加大两号（11-07 用户要求）：编号 / 未报价那行已去掉，名称单行显示，
   字号 16.5 → 18（行距 1.5 → 1.42 抵掉多出的高度），列宽仍 138 不撑开 */
.crm-cl-table td.crm-c-name .crm-link{font-size:18px;line-height:1.42;font-weight:500;}
/* 位置格：📍 图标 + 地址一行排开，地址部分自动收缩出省略号 */
.crm-loc-wrap{display:flex;align-items:center;gap:2px;min-width:0;}
.crm-loc-wrap .crm-clamp{flex:1;min-width:0;}
.crm-clamp{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;vertical-align:middle;color:var(--text-2);}
.crm-empty{color:#B7C3D0;}
.crm-rank{display:inline-block;border-radius:10px;padding:1px 7px;font-size:12px;background:#F1EFE8;color:#5F5E5A;}
.crm-rank.top{background:#EAF3DE;color:#3B6D11;}
/* 可编辑的格子：鼠标移上去淡蓝一层 + 一圈细边，暗示「这里能点」 */
.crm-cl-table td.crm-cell{cursor:text;}
.crm-cl-table td.crm-cell:hover{background:#F7FBFF;box-shadow:inset 0 0 0 1px #D9E8F7;}
/* 编辑态：格子描一圈蓝边，输入框铺满整格；画像框改成随内容长高 */
.crm-cl-table td.cell-editing{box-shadow:inset 0 0 0 2px #7FB4E8 !important;background:#FCFDFF;}
.crm-cl-table td.crm-cell-ta{vertical-align:top;}
.crm-cl-table td.crm-cell-ta .cell-inp{position:static;height:auto;min-height:56px;
  white-space:pre-wrap;resize:vertical;line-height:1.55;}
.crm-call{display:inline-block;margin-left:4px;color:#A9BACA;font-size:12px;text-decoration:none;}
.crm-call:hover{color:var(--primary);}
/* 「胶囊」：需求类型 / 客户类型共用一套尺寸，和客户状态标签同高（22px），一行看起来是整套 */
.crm-pill{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border:1px solid transparent;
  border-radius:11px;font:inherit;font-size:12.5px;line-height:20px;white-space:nowrap;
  background:#F2F5F9;color:#5F6E7E;}
button.crm-pill{cursor:pointer;transition:border-color .14s,background .14s;}
.crm-pill .crm-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex:none;}
.crm-pill .crm-cv{font-style:normal;font-size:10px;margin-left:1px;opacity:0;transition:opacity .14s;}
.crm-pill:hover .crm-cv{opacity:.7;}
/* 客户类型：自拓=绿 / 分配=紫 / 特殊分配=粉 */
.crm-pill.src.self{background:#EDF6E7;color:#3E6B18;border-color:#CFE3BC;}
.crm-pill.src.assign{background:#EFEEFD;color:#4C43A8;border-color:#D5D2F6;}
.crm-pill.src.special{background:#FCECF2;color:#9B3457;border-color:#F2CBD9;}
button.crm-pill.src:hover{border-color:currentColor;}
/* 需求类型：槽车=蓝 / 桶装=青；没填是虚线空壳
   （11-07 重做 UI：渐变底 + 细描边 + 内外微投影 + 白圈实心点，高度仍 22px，不撑行不撑列宽） */
.crm-pill.demand{font-weight:600;letter-spacing:.2px;gap:5px;
  box-shadow:0 1px 2px rgba(20,60,110,.07),inset 0 1px 0 rgba(255,255,255,.7);}
.crm-pill.demand .crm-dot{width:6px;height:6px;box-shadow:0 0 0 2px rgba(255,255,255,.85);}
.crm-pill.demand .crm-cv{opacity:.4;}
.crm-pill.demand.tank{background:linear-gradient(180deg,#F1F7FE 0%,#DBEAF9 100%);color:#14518F;border-color:#BFD9F0;}
.crm-pill.demand.bucket{background:linear-gradient(180deg,#EEFBF7 0%,#D6F1E8 100%);color:#0B604B;border-color:#A7DCCB;}
.crm-pill.demand.none{background:#FCFDFE;color:#93A3B3;border:1px dashed #C9D6E3;font-weight:500;box-shadow:none;}
.crm-pill.demand.none .crm-dot{display:none;}
button.crm-pill.demand:hover{border-color:currentColor;box-shadow:0 2px 7px rgba(20,60,110,.16);}
button.crm-pill.demand:hover .crm-cv{opacity:.85;}
/* 客户状态：有成交=实心绿点，业务线索=空心灰点 */
.crm-stt{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 9px;border-radius:11px;font-size:12.5px;}
.crm-stt .crm-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex:none;}
.crm-stt.on{background:#E9F7EF;color:#1B7A50;}
.crm-stt.lead{background:#F3F5F7;color:#6B7A8A;}
.crm-stt.lead .crm-dot{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor;}
.crm-fbtn{border:1px solid var(--line);background:#fff;border-radius:12px;padding:1px 9px;font-size:12.5px;color:var(--text-2);cursor:pointer;}
.crm-fbtn:hover{border-color:#B9D5EE;color:var(--primary);}
/* 人员快捷筛选胶囊（李清源 / 周姗 / 何慧 / 全量信息）：和「全部业务员」下拉一个口径 */
.crm-owner-chips{display:inline-flex;gap:6px;flex-wrap:wrap;margin-right:4px;}
.crm-ochip{border:1px solid var(--line);background:#fff;border-radius:14px;padding:3px 12px;
  font:inherit;font-size:12.5px;color:var(--text-2);cursor:pointer;transition:all .14s;}
.crm-ochip:hover{border-color:#B9D5EE;color:var(--primary);}
.crm-ochip.on{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:500;}
/* 分类按钮（10-30：自拓 / 分配 / 槽车 / 桶装 / 业务线索 / 异常），排在业务员胶囊右边，竖线隔开 */
.crm-fchips{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;}
.crm-fchips.sep{margin-left:4px;padding-left:12px;border-left:1px solid var(--line);}
.crm-fchip{border:1px solid var(--line);background:#fff;border-radius:14px;padding:3px 12px;
  font:inherit;font-size:12.5px;color:var(--text-2);cursor:pointer;transition:all .14s;white-space:nowrap;}
.crm-fchip:hover{border-color:#B9D5EE;color:var(--primary);}
.crm-fchip.on{background:#EAF3FA;border-color:#9CC8E6;color:var(--primary);font-weight:600;}
.crm-fchip.bad.on{background:#FBEDED;border-color:#E3ABAB;color:#A32020;}
.crm-cl-tool{flex-wrap:wrap;row-gap:8px;}
/* 盘点 / 期初建账（10-30）：左商品清单 + 右四规格表，口径同分装登记 */
.pk-take{display:grid;grid-template-columns:228px 1fr;gap:12px;align-items:start;}
.pk-plist{border:1px solid var(--line);border-radius:10px;max-height:56vh;overflow:auto;background:#fff;}
.pk-pitem{display:flex;align-items:center;gap:6px;width:100%;padding:7px 10px;border:0;border-bottom:1px solid #F1F5F9;
  background:#fff;font:inherit;font-size:13px;color:var(--text-2);cursor:pointer;text-align:left;transition:background .12s;}
.pk-pitem:hover{background:#F5FAFF;}
.pk-pitem.on{background:#EAF3FA;color:var(--primary);font-weight:600;box-shadow:inset 3px 0 0 var(--primary);}
.pk-pn{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pk-pv{font-size:11.5px;color:#8C9AA8;white-space:nowrap;text-align:right;line-height:1.35;}
.pk-pv em{display:block;font-style:normal;font-size:11px;color:#A9B6C4;}
.pk-dot{width:6px;height:6px;border-radius:50%;background:#E0A100;flex:none;}
.pk-ok{color:#12805C;font-size:12px;flex:none;}
.pk-fhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;font-size:14px;}
.pk-sub{font-size:12.5px;color:#7A8896;}
.pk-sub input{width:100px;height:28px;text-align:right;border:1px solid var(--line);border-radius:6px;padding:0 6px;font:inherit;}
.pk-warn{font-size:12px;color:#B7791F;background:#FFF8E8;border:1px solid #F3E0B5;border-radius:8px;padding:2px 8px;}
.pk-tt input{width:86px;height:28px;text-align:right;border:1px solid var(--line);border-radius:6px;padding:0 6px;font:inherit;}
.pk-tt input.pk-w{width:96px;}
.pk-tailb{color:#5B45C7;font-weight:600;}
.pk-foot{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:13px;flex-wrap:wrap;}
.pk-foot .spacer{flex:1;}
.pk-df{color:#8C9AA8;}
.pk-df.pos{color:#12805C;font-weight:600;}
.pk-df.neg{color:#C53030;font-weight:600;}
.crm-src-sel{height:28px;font-size:12.5px;padding:0 6px;border-radius:6px;}
.crm-src.special{background:#FBEAF0;color:#993556;}
.crm-add-row{display:flex;align-items:center;gap:10px;padding:12px 0 2px;}
.crm-add-btn{border:1px dashed var(--line);background:#fff;border-radius:8px;padding:6px 14px;font-size:13px;color:var(--text-2);cursor:pointer;}
.crm-add-btn:hover{border-color:var(--primary);color:var(--primary);}
/* 点胶囊弹出的小菜单（挂 body、fixed 定位：不受表格滚动裁剪） */
.crm-menu{position:fixed;z-index:9999;min-width:132px;padding:4px;background:#fff;
  border:1px solid #E1EAF3;border-radius:10px;
  box-shadow:0 12px 30px -12px rgba(17,44,72,.28),0 2px 6px rgba(17,44,72,.08);
  animation:crmMenuIn .13s ease-out both;}
@keyframes crmMenuIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}}
.crm-menu-it{display:flex;align-items:center;gap:7px;width:100%;padding:7px 9px;border:0;border-radius:7px;
  background:transparent;font:inherit;font-size:13px;color:#22384D;text-align:left;cursor:pointer;}
.crm-menu-it .crm-dot{width:6px;height:6px;border-radius:50%;flex:none;background:currentColor;color:#C3CFDB;}
.crm-menu-it:hover{background:#F3F8FE;}
.crm-menu-it.on{background:#EAF3FE;color:#0F5BC0;font-weight:600;}
.crm-menu-it.on .crm-dot{color:#1668E3;}
.crm-menu-it em{margin-left:auto;font-style:normal;font-size:12px;color:#1668E3;}

/* ===== 跟进抽屉 ===== */
.crm-fd-mask{align-items:stretch;justify-content:flex-end;padding:0;overflow:hidden;}
.crm-fd{width:440px;max-width:100%;height:100%;background:#fff;display:flex;flex-direction:column;box-shadow:-12px 0 30px -20px rgba(10,40,70,.45);}
.crm-fd-head{display:flex;align-items:flex-start;padding:14px 16px;border-bottom:1px solid var(--line);}
.crm-fd-name{font-size:15px;font-weight:600;}
.crm-fd-sub{font-size:12px;color:var(--text-3);margin-top:3px;}
.crm-fd-x{margin-left:auto;cursor:pointer;color:var(--text-3);font-size:14px;}
.crm-fd-form{padding:12px 16px;border-bottom:1px solid var(--line);}
.crm-fd-row{display:flex;gap:8px;margin-bottom:8px;}
.crm-fd-row input,.crm-fd-row select{height:30px;font-size:12.5px;flex:1;min-width:0;}
.crm-fd-form textarea{width:100%;height:64px;font-size:13px;resize:vertical;}
.crm-fd-acts{display:flex;align-items:center;gap:8px;margin-top:8px;}
.crm-fd-hint{font-size:11.5px;color:var(--text-3);margin-right:auto;}
.crm-fd-list{flex:1;overflow:auto;padding:4px 16px 16px;}
.crm-fd-item{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed #EEF2F6;}
.crm-fd-d{width:40px;flex:none;font-size:11.5px;color:var(--text-3);padding-top:2px;}
.crm-fd-body{flex:1;min-width:0;}
.crm-fd-txt{font-size:13px;line-height:1.55;word-break:break-word;}
.crm-fd-txt b{font-weight:600;color:var(--text-2);}
.crm-fd-meta{font-size:11.5px;color:var(--text-3);margin-top:3px;}
.crm-fd-op{margin-left:8px;color:var(--primary);cursor:pointer;}
.crm-fd-op.del{color:#C53030;}
@media (max-width:640px){
  .crm-fd{width:100%;}
}

/* ============================================================
   财务中心（/finance/home 单页五页签）：总览 / 应收 / 应付 / 资金 / 单据
   页签条复用 sc-strip 纸页翻面，只调尺寸；配色沿用全站冷色蓝灰
   ============================================================ */
.sc-strip.fin-strip{
  height:42px;width:min(560px,100%);padding:3px;background:#EDF2F7;border-radius:10px;
}
.fin-strip .sc-flip{inset:3px;}
.fin-strip .sc-flip b,.fin-strip .sc-flip i{border-radius:8px;}
.fin-strip .sc-tab{font-size:13.5px;color:#45525F;}
.fin-strip .sc-tab.active{color:var(--primary-dark);}
.fin-strip .sc-tab .tx::after{bottom:-5px;width:18px;height:2.5px;}
/* KPI 下的小注行 */
.kpi .s{margin-top:6px;font-size:12px;color:var(--text-3);}
/* 账户卡片一排（总览 / 资金共用） */
.fin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;}
.fin-acc{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;cursor:pointer;
  transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease;}
.fin-acc:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(23,78,140,.10);border-color:#BFD4E8;}
.fin-acc:active{transform:scale(.97);}
.fin-acc.on{border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,104,227,.12);}
.fin-acc-add{cursor:default;background:#F8FBFF;}
.fin-acc-add:hover{transform:none;box-shadow:none;border-color:var(--line);}
.fin-acc .fa-hd{display:flex;align-items:center;gap:6px;font-size:13px;color:#22384D;}
.fin-acc .fa-v{font-size:21px;font-weight:700;color:#12365F;margin-top:6px;letter-spacing:.3px;}
.fin-acc .fa-v em{font-style:normal;font-size:12px;font-weight:400;color:var(--text-3);margin-left:3px;}
.fin-acc .fa-s{margin-top:4px;font-size:12px;color:var(--text-3);}
/* 总览双栏：账龄 + 趋势 */
.fin-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
@media (max-width:980px){.fin-two{grid-template-columns:1fr;}}
/* 账龄堆叠条 */
.fin-aging{display:flex;height:16px;border-radius:8px;overflow:hidden;background:#E3EDF6;}
.fin-aging span{display:block;height:100%;min-width:2px;transition:width .4s ease;}
.fin-aging-lg{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12.5px;color:var(--text-3);}
.fin-aging-lg i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:baseline;}
.fin-aging-lg b{color:#22384D;font-weight:600;}
/* 展开的历史行 */
tr.fin-sub > td{padding:12px 16px !important;}
tr.fin-sub .tk-table th{font-size:12px;}
/* 转账弹层 */
.fin-mask{position:fixed;inset:0;background:rgba(15,35,60,.42);z-index:90;display:flex;align-items:center;justify-content:center;animation:fadeIn .16s ease;}
.fin-dlg{background:#fff;border-radius:14px;padding:20px 22px;width:400px;max-width:92vw;box-shadow:0 18px 48px rgba(12,40,80,.28);animation:scInR .28s cubic-bezier(.22,.9,.28,1);}
.fin-dlg .field{margin-bottom:10px;}
.fin-dlg .field label{display:block;font-size:12.5px;color:var(--text-3);margin-bottom:4px;}
.fin-dlg .field select,.fin-dlg .field input{width:100%;padding:7px 10px;border:1px solid #D9E4EE;border-radius:8px;font-size:13.5px;box-sizing:border-box;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* 应付页「结算方式」小胶囊：点一下在 预付提货 / 提货后付 之间切 */
.fin-pm{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border:1px solid #DDE7F0;border-radius:999px;
  background:#F7F9FB;color:#6B7B8C;font-size:12px;cursor:pointer;transition:all .15s ease;white-space:nowrap;}
.fin-pm:hover{border-color:#BFD4E8;color:#22384D;}
.fin-pm:active{transform:scale(.94);}
.fin-pm::before{content:'';width:5px;height:5px;border-radius:50%;background:#B6C2CE;}
.fin-pm.on{background:#EAF4FF;border-color:#BBD8F5;color:#0B63C4;font-weight:600;}
.fin-pm.on::before{background:#1668E3;}

/* 应付页「结算方式」小胶囊：点一下在 预付提货 / 提货后付 之间切 */
.fin-pm{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border:1px solid #DDE7F0;border-radius:999px;
  background:#F7F9FB;color:#6B7B8C;font-size:12px;cursor:pointer;transition:all .15s ease;white-space:nowrap;}
.fin-pm:hover{border-color:#BFD4E8;color:#22384D;}
.fin-pm:active{transform:scale(.94);}
.fin-pm::before{content:'';width:5px;height:5px;border-radius:50%;background:#B6C2CE;}
.fin-pm.on{background:#EAF4FF;border-color:#BBD8F5;color:#0B63C4;font-weight:600;}
.fin-pm.on::before{background:#1668E3;}

/* ---------- 客户分布地图 ---------- */
.cusmap-wrap{display:flex;gap:14px;align-items:stretch;flex-wrap:wrap;}
.cusmap-map{flex:2 1 560px;min-width:420px;padding:14px 16px;}
.cusmap-side{flex:1 1 260px;min-width:260px;display:flex;flex-direction:column;gap:12px;}
.cm-head{display:flex;align-items:baseline;gap:14px;margin-bottom:8px;flex-wrap:wrap;}
.cm-head>b{font-size:15px;}
.cm-kpi{font-size:12.5px;color:#5B6B7C;}
.cm-legend{margin-left:auto;font-size:11.5px;color:#8C9AA8;display:inline-flex;align-items:center;gap:4px;}
.cm-legend i{display:inline-block;width:22px;height:10px;border-radius:2px;border:1px solid #E3E8EE;}
.cm-prov{cursor:pointer;transition:fill .15s;}
.cm-prov:hover{filter:brightness(.92);}
.cm-prov.sel{stroke:#14518F;stroke-width:1.6;}
.cm-rank-it{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:7px;font-size:13px;cursor:pointer;}
.cm-rank-it:hover{background:#F3F6FA;}
.cm-rank-it.on{background:#E8F1FB;}
.cm-rank-it .ix{width:20px;color:#8C9AA8;font-size:12px;text-align:right;}
.cm-rank-it .nm{flex:1;}
.cm-rank-it b{color:#14518F;}
.cm-cus{padding:7px 8px;border-bottom:1px solid #F0F2F5;font-size:12.5px;cursor:pointer;display:flex;flex-direction:column;gap:2px;}
.cm-cus:hover{background:#F6FAFE;}
.cm-cus b{font-size:13px;color:#22303F;}
.cm-cus span{color:#8C9AA8;font-size:12px;}

/* ================= 窄屏表格自适应压缩 =================
   约定：大屏（>1500px）保持最优显示不变；屏幕越窄整体越紧凑：
   先缩字号和内边距，再把备注/名称/客户/供应商等长文本列限宽省略，
   鼠标悬停看全文（多数单元格自带 title），尽量让整表一屏左右放下。
   槽车表本就是固定布局按百分比铺满，不在此列，仅同步缩字号。 */
@media (max-width:1500px){
  table{font-size:13.5px;}
  thead th{padding:8px 10px;font-size:13px;}
  tbody td{padding:8px 10px;}
  .tk-table{font-size:13.5px;}
  .tk-edit .tk-in{font-size:13px;}
}
@media (max-width:1280px){
  table{font-size:12.5px;}
  thead th{padding:7px 7px;font-size:12px;}
  tbody td{padding:6px 7px;}
  .tk-table{font-size:12.5px;}
  .tk-edit .tk-in{font-size:12.5px;min-width:46px;}
  .tk-edit .tk-seq .tk-in{max-width:44px;}
  /* 长文本列限宽省略号：超出部分悬停可看（有 title 的看 title，无 title 的进详情看全文） */
  .table-wrap tbody td{max-width:150px;overflow:hidden;text-overflow:ellipsis;}
  /* 放操作按钮的列不压缩，按钮不能被裁 */
  .table-wrap tbody td:has(> .row-actions),
  .table-wrap tbody td:has(> .tk-ops-w),
  .table-wrap tbody td:has(> input[type="checkbox"]){max-width:none;overflow:visible;}
}

/* ================= 槽车列宽体系启用（10-26 按用户指示二次调整） =================
   19 列两种形态：
   · 宽屏（>1700px）：百分比列宽，整表正好铺满一屏（最优显示）
   · 窄屏（≤1700px）：信息完整优先——每列给足「完整汉字 / 完整数字 / 控件不重叠」
     的最小可读宽度（正文 15.5px、徽章 13px、表头 14px 实测校准），
     挤不下就横向滚动，不再为凑一屏硬压缩
     （10-26 反馈：1134px 方案把状态、票据等列压得内容挤在一起、字体过小）
   注：!important 仅用于豁免 10-20「全站表格列宽公约」的 table{width:auto!important} */
.tk-table.tk-edit.tk-tank{width:100% !important;min-width:900px !important;max-width:none !important;table-layout:fixed !important;}
@media (max-width:1700px){
  .tk-table.tk-edit.tk-tank{min-width:1700px !important;}
  .tk-table.tk-edit.tk-tank col.c-drag{width:26px !important;}
  .tk-table.tk-edit.tk-tank col.c-seq{width:48px !important;}
  .tk-table.tk-edit.tk-tank col.c-plan{width:110px !important;}
  .tk-table.tk-edit.tk-tank col.c-sup{width:112px !important;}
  .tk-table.tk-edit.tk-tank col.c-cus{width:130px !important;}
  .tk-table.tk-edit.tk-tank col.c-num{width:84px !important;}
  .tk-table.tk-edit.tk-tank col.c-freight{width:84px !important;}
  .tk-table.tk-edit.tk-tank col.c-sale{width:86px !important;}
  .tk-table.tk-edit.tk-tank col.c-margin{width:76px !important;}
  .tk-table.tk-edit.tk-tank col.c-week{width:74px !important;}
  .tk-table.tk-edit.tk-tank col.c-ck{width:58px !important;}
  .tk-table.tk-edit.tk-tank col.c-note{width:150px !important;}
  .tk-table.tk-edit.tk-tank col.c-plate{width:120px !important;}
  .tk-table.tk-edit.tk-tank col.c-qty{width:72px !important;}
  .tk-table.tk-edit.tk-tank col.c-sign{width:84px !important;}
  .tk-table.tk-edit.tk-tank col.c-loss{width:78px !important;}
  .tk-table.tk-edit.tk-tank col.c-st{width:116px !important;}
  .tk-table.tk-edit.tk-tank col.c-docs{width:56px !important;}
  .tk-table.tk-edit.tk-tank col.c-ops{width:150px !important;}
}

/* ================= 收款 / 付款 / 分装记录 界面美化（10-25，以桶装销售为范本延伸） =================
   统计卡片组 + 收付款进度条 + 状态胶囊 + 表格配色与入场动画；
   只作用于槽车中心三个只读页签（.tk-table.tk-tank 不含 .tk-edit 编辑网格），销售 / 桶装表格不受影响 */
@keyframes tkFadeUp{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

/* 统计条：四个页签统一成「销售」那条信息条（10-26 用户要求，原统计卡片组已停用）
   .tk-infobar > .in 就是那条浅底圆角长条，一条一行 KPI；窄屏内容超宽可左右滑动看全 */
.tk-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;padding:12px 14px 4px;}
/* 信息条用 flex（.tk-stats 的 grid 在文件后面，这里权重更高，压住它） */
.tk-stats.tk-infobar{display:flex;align-items:center;}
.tk-infobar .in{scrollbar-width:none;}
.tk-infobar .in::-webkit-scrollbar{height:0;display:none;}
@media (max-width:1100px){
  .tk-infobar .in{overflow-x:auto;text-overflow:clip;}
}

/* 紧凑版统计卡（.tk-stats.compact / .tk-stat）已于 10-26 停用：
   收货款 / 付运费 / 分装记录都改成和「销售」一样的信息条 .tk-infobar，样式见上方 */
@media (max-width:720px){
  .tk-card > .tk-stats{padding:6px 10px;height:auto;}
  .tk-card > .tk-subbar{height:auto;min-height:42px;flex-wrap:wrap;padding-bottom:6px;}
  .tk-card > .toolbar{height:auto;min-height:36px;flex-wrap:wrap;padding:6px 10px;}
  .tk-card > .toolbar > .tk-hint{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
}

/* 收付款进度条 */
.tk-prog{display:flex;align-items:center;gap:7px;min-width:120px;}
.tk-prog .bar{flex:1;height:8px;border-radius:5px;background:#EDF2F7;overflow:hidden;}
.tk-prog .fill{height:100%;border-radius:5px;width:0;background:linear-gradient(90deg,#34C08B,#0E9F6E);
  transition:width .8s cubic-bezier(.22,.9,.36,1);}
.tk-prog .fill.blue{background:linear-gradient(90deg,#4DA8F5,#1E7FD9);}
.tk-prog .pct{font-size:12px;color:#5A6B7B;font-variant-numeric:tabular-nums;min-width:36px;text-align:right;}
.tk-prog-td{min-width:132px;}

/* 收款状态胶囊（替代纯文字，底色为状态色 10% 透明度） */
.recv-st{display:inline-flex;align-items:center;height:22px;padding:0 10px;border-radius:11px;
  font-size:12.5px;font-weight:600;line-height:1;white-space:nowrap;}

/* 只读页签表格配色：表头渐变 + 斑马纹 + 行悬浮高亮（不含 .tk-edit 编辑网格） */
.tk-table.tk-tank:not(.tk-edit) thead th{
  background:linear-gradient(180deg,#F8FBFE,#EFF5FA);color:#3D5568;letter-spacing:.5px;
  border-bottom:1px solid #DFE9F2;}
.tk-table.tk-tank:not(.tk-edit) tbody td{border-color:#EEF3F8;transition:background .15s ease;}
.tk-table.tk-tank:not(.tk-edit) tbody tr:nth-child(even) td{background:#FAFCFE;}
.tk-table.tk-tank:not(.tk-edit) tbody tr:hover td{background:#F2F8FF;}
.tk-table.tk-tank:not(.tk-edit) tbody tr{transition:box-shadow .15s ease;}
.tk-table.tk-tank:not(.tk-edit) tbody tr:hover td:first-child{box-shadow:inset 3px 0 0 #1E7FD9;}

/* 车辆付款：车号分组小计行（10-25） */
.tk-table.tk-tank:not(.tk-edit) tr.veh-grp td{background:linear-gradient(90deg,#F2F8FF,#FAFDFF) !important;border-top:1px solid #D9E7F4 !important;border-bottom:1px solid #E3EDF6 !important;}

/* ================= 驾驶舱（重构版）：深色工业场景 + 实时数据 ================= */
:root{
  --ck-bg:#0B1B2B; --ck-panel:#10263C; --ck-line:#1F4260; --ck-text:#DCE8F4;
  --ck-mut:#7C93A9; --ck-blue:#6FC7FF; --ck-ok:#41D98D; --ck-warn:#FFC53D; --ck-err:#FF7A7A;
}
.ck-root{margin:0 -22px -24px;background:var(--ck-bg);color:var(--ck-text);padding:24px 22px 28px;min-height:calc(100vh - 120px);}
.ck-root.is-m{margin:-14px -12px -30px;padding:0 0 24px;}
@keyframes ckPulse{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes ckDash{to{stroke-dashoffset:-48}}
@keyframes ckDashY{to{stroke-dashoffset:-38}}
@keyframes ckSteam{0%{opacity:0;transform:translateY(0)}18%{opacity:.85}100%{opacity:0;transform:translateY(-26px)}}
@keyframes ckFlame{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.72)}}
@keyframes ckTruck{0%,100%{transform:translateX(0)}50%{transform:translateX(26px)}}
@keyframes ckIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.ck-plant{display:block;width:100%;height:100%;}
.ck-scene .ck-flow{stroke-dasharray:16 8;animation:ckDash 1.1s linear infinite;}
.ck-scene .ck-flowy{stroke-dasharray:12 7;animation:ckDashY 1s linear infinite;}
.ck-scene .ck-valve{transform-box:fill-box;transform-origin:center;animation:spin 5s linear infinite;}
.ck-scene .ck-steam{opacity:0;animation:ckSteam 2.9s ease-out infinite;}
.ck-scene .ck-flame{transform-box:fill-box;transform-origin:bottom center;animation:ckFlame 1.6s ease-in-out infinite;}
.ck-scene .ck-truck{animation:ckTruck 9s ease-in-out infinite;}
.ck-scene .ck-gantry{opacity:.9;}
.ck-scene .ck-led{animation:ckPulse 1.6s ease-in-out infinite;}
.ck-scene .ck-led.is-ok{fill:var(--ck-ok);}
.ck-scene .ck-led.is-err{fill:var(--ck-err);}
.ck-head{display:flex;align-items:center;gap:14px;margin-bottom:14px;}
.ck-title{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:500;color:#fff;}
.ck-live{width:9px;height:9px;border-radius:50%;background:var(--ck-ok);animation:ckPulse 2s ease-in-out infinite;}
.ck-date{font-size:12.5px;color:var(--ck-mut);font-weight:400;}
.ck-badge{font-size:11.5px;padding:3px 10px;border-radius:20px;font-weight:400;}
.ck-badge.ok{background:rgba(65,217,141,.14);color:var(--ck-ok);}
.ck-badge.warn{background:rgba(255,122,122,.14);color:var(--ck-err);animation:ckPulse 2.4s ease-in-out infinite;}
.ck-refresh{margin-left:auto;background:var(--ck-panel);border:0.5px solid var(--ck-line);color:var(--ck-mut);border-radius:8px;padding:6px 14px;font-size:12.5px;cursor:pointer;}
.ck-refresh:hover{color:var(--ck-text);border-color:var(--ck-blue);}
.ck-main{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:stretch;}
.ck-left{display:flex;flex-direction:column;gap:14px;min-width:0;}
.ck-scene{position:relative;background:var(--ck-panel);border:0.5px solid var(--ck-line);border-radius:14px;overflow:hidden;height:auto;aspect-ratio:1000/440;min-height:330px;animation:ckIn .5s ease both;}
.ck-chip{position:absolute;background:rgba(13,44,68,.88);border:0.5px solid var(--ck-line);border-radius:10px;padding:10px 14px;min-width:150px;animation:ckIn .6s ease both;}
.ck-chip.is-err{border-color:rgba(255,122,122,.55);}
.ck-chip.is-ok{border-color:rgba(65,217,141,.45);}
.ck-chip .ck-k{display:block;font-size:11.5px;color:var(--ck-mut);}
.ck-chip .ck-v{display:block;font-size:20px;font-weight:500;color:#fff;margin:3px 0 2px;font-variant-numeric:tabular-nums;}
.ck-chip .ck-s{display:block;font-size:11px;color:var(--ck-mut);font-style:normal;}
.ck-chip .ck-s a{color:var(--ck-blue);text-decoration:none;}
.ck-chip .ck-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ck-ok);animation:ckPulse 1.6s ease-in-out infinite;margin-right:6px;}
.ck-chip.is-err .ck-dot{background:var(--ck-err);}
.ck-chip b{font-size:13px;color:var(--ck-text);font-weight:500;}
.ck-chip.is-err b{color:var(--ck-err);}
.ck-chip.is-ok b{color:var(--ck-ok);}
.ck-side{display:flex;flex-direction:column;gap:14px;min-width:0;}
.ck-card{background:var(--ck-panel);border:0.5px solid var(--ck-line);border-radius:14px;padding:14px 16px;animation:ckIn .55s ease both;overflow:hidden;}
.ck-card-grow{flex:1;min-height:0;display:flex;flex-direction:column;}
.ck-card-t{font-size:13.5px;color:var(--ck-text);display:flex;align-items:center;gap:8px;margin-bottom:12px;}
.ck-card-t a{margin-left:auto;font-size:12px;color:var(--ck-blue);text-decoration:none;}
.ck-card-n{font-size:11.5px;color:var(--ck-mut);}
.ck-flowrow{display:grid;grid-template-columns:52px repeat(4,1fr);gap:6px;align-items:center;margin-bottom:10px;}
.ck-flowrow:last-child{margin-bottom:0;}
.ck-flowname{font-size:12.5px;color:var(--ck-text);text-decoration:none;display:flex;flex-direction:column;gap:2px;}
.ck-flowname span{font-size:10.5px;color:var(--ck-mut);}
.ck-flowcell{display:flex;flex-direction:column;align-items:center;gap:2px;background:#0D2C44;border:0.5px solid var(--ck-line);border-radius:8px;padding:7px 2px;text-decoration:none;transition:border-color .15s;}
.ck-flowcell:hover{border-color:var(--ck-blue);}
.ck-flowcell b{font-size:16px;font-weight:500;font-variant-numeric:tabular-nums;}
.ck-flowcell span{font-size:10px;color:var(--ck-mut);}
.ck-flowcell.c-plan b{color:#B5D4F4;}
.ck-flowcell.c-wait b{color:var(--ck-warn);}
.ck-flowcell.c-transit b{color:var(--ck-blue);}
.ck-flowcell.c-done b{color:var(--ck-ok);}
.ck-todos{overflow-y:auto;overflow-x:hidden;flex:1;min-height:0;}
.ck-todos .todo{background:transparent;border-bottom:0.5px solid rgba(31,66,96,.6);}
.ck-todos .todo .tt{color:var(--ck-text);}
.ck-todos .todo .dd{color:var(--ck-mut);}
.ck-todos .todo .dot{flex-shrink:0;}
.ck-todos .dot.warning{background:var(--ck-err);}
.ck-todos .dot.info{background:var(--ck-blue);}
.ck-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.ck-tile{position:relative;background:var(--ck-panel);border:0.5px solid var(--ck-line);border-radius:12px;padding:12px 14px;text-decoration:none;color:inherit;display:block;overflow:hidden;animation:ckIn .6s ease both;transition:border-color .15s,transform .15s;}
.ck-tile:hover{border-color:var(--ck-blue);transform:translateY(-2px);}
.ck-tile span{font-size:11.5px;color:var(--ck-mut);display:block;}
.ck-tile b{display:block;font-size:21px;font-weight:500;color:#fff;margin:5px 0 3px;font-variant-numeric:tabular-nums;}
.ck-tile b.ok{color:var(--ck-ok);}
.ck-tile b.warn{color:var(--ck-warn);}
.ck-tile b.blue{color:var(--ck-blue);}
.ck-tile i{font-style:normal;font-size:11px;color:var(--ck-mut);display:block;}
.ck-spark{position:absolute;right:8px;bottom:8px;width:96px;height:30px;opacity:.85;}
/* ---- 手机端 ---- */
.ck-hero{position:relative;background:var(--ck-bg);overflow:hidden;}
.ck-hero>svg{display:block;width:100%;height:auto;}
.ck-hero-in{position:relative;padding:16px 16px 14px;}
.ck-hero-t{font-size:14px;color:#fff;display:flex;align-items:center;gap:8px;}
.ck-hero-t span{font-size:11px;color:var(--ck-mut);font-weight:400;margin-left:auto;}
.ck-hero-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;}
.ck-hero-3 a{background:rgba(13,44,68,.85);border:0.5px solid var(--ck-line);border-radius:10px;padding:12px 6px;text-align:center;text-decoration:none;color:inherit;}
.ck-hero-3 b{display:block;font-size:22px;font-weight:500;color:#fff;font-variant-numeric:tabular-nums;}
.ck-hero-3 span{font-size:10.5px;color:var(--ck-mut);}
.ck-mflow{padding:0 12px;margin-top:12px;}
.ck-mflow .ck-flowrow{grid-template-columns:40px repeat(4,1fr);margin-bottom:8px;}
.ck-mgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px 12px 0;}
.ck-mcard{background:var(--ck-panel);border:0.5px solid var(--ck-line);border-radius:12px;margin:12px 12px 0;padding:6px 14px;overflow:hidden;}
.ck-mcard .todo{background:transparent;border-bottom:0.5px solid rgba(31,66,96,.6);}
.ck-mcard .todo .tt{color:var(--ck-text);}
.ck-mcard .todo .dd{color:var(--ck-mut);}
.ck-mcard .dot.warning{background:var(--ck-err);}
.ck-mcard .dot.info{background:var(--ck-blue);}
.ck-mt{display:flex;align-items:center;font-size:13px;color:var(--ck-text);padding:10px 0 4px;}
.ck-mt a{margin-left:auto;font-size:12px;color:var(--ck-blue);text-decoration:none;}
.ck-debtrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:0.5px solid rgba(31,66,96,.6);font-size:13px;}
.ck-debtrow:last-child{border-bottom:0;}
.ck-ix{width:20px;height:20px;border-radius:6px;background:#0D2C44;color:var(--ck-blue);font-size:11px;display:grid;place-items:center;flex-shrink:0;}
.ck-nm{flex:1;color:var(--ck-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ck-debtrow b{font-weight:500;color:#fff;font-variant-numeric:tabular-nums;}
/* ---- v1321a 场景增强 2：槽罐车队 · 罐内晃动 · 车轮滚动 · 手机动态首屏 ---- */
@keyframes ckDriveRun{from{transform:translateX(-220px)}to{transform:translateX(1060px)}}
.ck-scene .ck-drive{animation:ckDriveRun 26s linear infinite;}
.ck-scene .ck-drive.b{animation-duration:34s;animation-delay:-16s;}
@keyframes ckSloshRun{0%,100%{transform:translateX(-5px)}50%{transform:translateX(5px)}}
.ck-scene .ck-slosh,.ck-hero .ck-slosh{animation:ckSloshRun 2.3s ease-in-out infinite;}
@keyframes ckWheelRun{to{transform:rotate(360deg)}}
.ck-scene .ck-wheel{transform-box:fill-box;transform-origin:center;animation:ckWheelRun .85s linear infinite;}
@keyframes ckPuffRun{0%{opacity:.6;transform:translate(0,0) scale(.5)}100%{opacity:0;transform:translate(-12px,-18px) scale(1.7)}}
.ck-scene .ck-puff{transform-box:fill-box;transform-origin:center;animation:ckPuffRun 1.7s ease-out infinite;}
@keyframes ckDriveM{from{transform:translateX(-110px)}to{transform:translateX(430px)}}
.ck-hero .ck-mdrive{animation:ckDriveM 11s linear infinite;}
.ck-hero{min-height:0;}
.ck-hero .ck-hero-t{position:absolute;top:12px;left:16px;right:16px;z-index:2;}
.ck-hero .ck-hero-in{padding:10px 14px 14px;}
.ck-hero-4{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;}
.ck-hero-4 a{background:rgba(13,44,68,.85);border:0.5px solid var(--ck-line);border-radius:10px;padding:9px 12px;text-decoration:none;color:inherit;animation:ckIn .6s ease both;}
.ck-hero-4 a:nth-child(2){animation-delay:.08s;}
.ck-hero-4 a:nth-child(3){animation-delay:.16s;}
.ck-hero-4 a:nth-child(4){animation-delay:.24s;}
.ck-hero-4 b{display:block;font-size:19px;font-weight:500;color:#fff;font-variant-numeric:tabular-nums;}
.ck-hero-4 span{font-size:10.5px;color:var(--ck-mut);}
@media (prefers-reduced-motion:reduce){
  .ck-scene .ck-drive,.ck-scene .ck-slosh,.ck-scene .ck-wheel,.ck-scene .ck-puff,
  .ck-hero .ck-mdrive,.ck-hero .ck-slosh{animation:none;}
}
/* ---- v1320a 场景增强：波浪液位 · 叉车 · 车号播报 · 车间灯 ---- */
@keyframes ckWaveMove{to{transform:translateX(42px)}}
.ck-scene .ck-wave{animation:ckWaveMove 3.4s linear infinite;}
@keyframes ckWinGlow{0%,100%{opacity:.9}50%{opacity:.3}}
.ck-scene .ck-win{animation:ckWinGlow 3.8s ease-in-out infinite;}
@keyframes ckForkRun{0%{transform:translateX(0)}12%{transform:translateX(0)}48%{transform:translateX(-240px)}64%{transform:translateX(-240px)}100%{transform:translateX(0)}}
.ck-scene .ck-fork{animation:ckForkRun 12s ease-in-out infinite;}
@keyframes ckFloatY{0%,100%{transform:translateY(0)}50%{transform:translateY(66px)}}
.ck-scene .ck-float{animation:ckFloatY 3.8s ease-in-out infinite;}
.ck-ticker{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:12px;background:rgba(11,27,43,.88);border-top:0.5px solid var(--ck-line);padding:0 14px;height:42px;backdrop-filter:blur(4px);z-index:2;}
.ck-ticker-cap{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ck-text);white-space:nowrap;flex-shrink:0;}
.ck-ticker-cap b{color:var(--ck-warn);font-weight:600;font-variant-numeric:tabular-nums;}
.ck-ticker-vp{overflow:hidden;flex:1;min-width:0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 95%,transparent);mask-image:linear-gradient(90deg,transparent,#000 4%,#000 95%,transparent);}
.ck-ticker-track{display:inline-flex;white-space:nowrap;will-change:transform;animation:ckMarquee 38s linear infinite;}
.ck-ticker-track:hover{animation-play-state:paused;}
@keyframes ckMarquee{to{transform:translateX(-50%)}}
.tk-item{display:inline-flex;align-items:center;gap:8px;margin-right:30px;font-size:12px;color:var(--ck-mut);}
.tk-plate{color:var(--ck-warn);font-weight:600;letter-spacing:.5px;font-size:12.5px;}
.tk-desc{color:#CFE3F5;max-width:220px;overflow:hidden;text-overflow:ellipsis;}
.tk-ton{color:var(--ck-blue);font-variant-numeric:tabular-nums;}
.tk-st{font-style:normal;font-size:10.5px;padding:2px 9px;border-radius:10px;background:rgba(111,199,255,.13);color:var(--ck-blue);flex-shrink:0;}
.tk-st.s-draft{background:rgba(181,212,244,.12);color:#B5D4F4;}
.tk-st.s-approved{background:rgba(255,197,61,.13);color:var(--ck-warn);}
.tk-st.s-signed,.tk-st.s-completed{background:rgba(65,217,141,.13);color:var(--ck-ok);}
.ck-truckrow{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:0.5px solid rgba(31,66,96,.6);font-size:13px;}
.ck-truckrow:last-child{border-bottom:0;}
.ck-truckrow .ck-nm{flex:1;min-width:0;}
.ck-prodcard .ck-prod3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:2px 0 10px;}
.ck-prod3 b{display:block;font-size:19px;color:#fff;font-weight:500;font-variant-numeric:tabular-nums;}
.ck-prod3 b.ok{color:var(--ck-ok);}
.ck-prod3 b.blue{color:var(--ck-blue);}
.ck-prod3 b .u{font-style:normal;font-size:11px;color:var(--ck-mut);margin-left:2px;}
.ck-prod3 span{font-size:10.5px;color:var(--ck-mut);display:block;margin-top:2px;}
@media (prefers-reduced-motion:reduce){
  .ck-scene .ck-flow,.ck-scene .ck-flowy,.ck-scene .ck-valve,.ck-scene .ck-steam,
  .ck-scene .ck-flame,.ck-scene .ck-truck,.ck-scene .ck-led,.ck-live,.ck-badge.warn,.ck-chip .ck-dot,
  .ck-scene .ck-wave,.ck-scene .ck-win,.ck-scene .ck-fork,.ck-scene .ck-float,.ck-ticker-track{animation:none;}
}
@media (max-width:860px){
  .ck-root{padding:0 0 24px;min-height:auto;}
  .ck-main{grid-template-columns:1fr;}
  .ck-scene{display:none;}
  .ck-kpis{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 12px;margin-top:12px;}
  .ck-spark{display:none;}
}

/* ================= 悬浮备忘录 v3 · Apple 备忘录 1:1 复刻 =================
   层级：展开态 900/901（高于导航 96，低于提示 999 与全屏遮罩 1000+）
   面板为 macOS 窗口质感：顶栏拖动 + 红绿灯；三栏 = 文件夹 / 列表（按月分组）/ 编辑区
   重要：面板 CSS 有 display:flex，必须显式处理 [hidden]，否则 hidden 无效 */
.mn-root{position:relative;z-index:900;}
/* 豆包式悬浮球：白圈头像，可拖动，贴边自动藏一半 */
.mn-fab{position:fixed;right:22px;bottom:22px;width:56px;height:56px;border-radius:50%;
  border:none;cursor:grab;padding:0;background:#fff;
  box-shadow:0 6px 20px rgba(0,0,0,.18),0 1px 3px rgba(0,0,0,.1);
  display:flex;align-items:center;justify-content:center;
  z-index:903;transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease,opacity .25s ease,left .25s ease,top .25s ease;
  touch-action:none;-webkit-tap-highlight-color:transparent;}
.mn-fab:active{cursor:grabbing;}
.mn-fab-ic{width:34px;height:34px;pointer-events:none;user-select:none;filter:drop-shadow(0 1px 1px rgba(0,0,0,.12));}
.mn-fab:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 12px 28px rgba(0,0,0,.24);}
.mn-fab.on{box-shadow:0 10px 26px rgba(0,0,0,.28);}
.mn-fab.dragging{transition:none;cursor:grabbing;z-index:904;}
.mn-fab.dragging .mn-fab-ic{transform:scale(.94);}
/* 被同事 @ 时摇一摇 */
.mn-fab.shake{animation:mnShake .85s cubic-bezier(.36,.07,.19,.97) 2;}
@keyframes mnShake{
  0%,100%{transform:rotate(0) scale(1);}
  12%{transform:rotate(-15deg) scale(1.07);}
  26%{transform:rotate(13deg) scale(1.07);}
  40%{transform:rotate(-11deg) scale(1.05);}
  54%{transform:rotate(9deg) scale(1.04);}
  68%{transform:rotate(-6deg) scale(1.02);}
  82%{transform:rotate(3deg) scale(1.01);}
}
/* @提醒气泡 */
.mn-nudge{position:fixed;z-index:905;max-width:200px;width:max-content;padding:8px 11px;border-radius:10px;
  background:rgba(32,30,28,.94);color:#fff;font-size:12.5px;line-height:1.45;box-shadow:0 8px 22px rgba(0,0,0,.28);
  opacity:0;transform:translateY(6px) scale(.96);pointer-events:none;transition:opacity .22s ease,transform .22s ease;
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;}
.mn-nudge.on{opacity:1;transform:none;pointer-events:auto;cursor:pointer;}
.mn-nudge::after{content:'';position:absolute;left:50%;bottom:-5px;width:10px;height:10px;margin-left:-5px;
  background:rgba(32,30,28,.94);transform:rotate(45deg);border-radius:2px;}
.mn-fab.dock-l,.mn-fab.dock-r{opacity:.55;box-shadow:0 4px 14px rgba(0,0,0,.22);}
.mn-fab.dock-l{transform:translateX(0);}
.mn-fab.dock-r{transform:translateX(0);}
.mn-fab.dock-l:hover,.mn-fab.dock-r:hover{opacity:1;transform:none;}
.mn-fab.dock-l:hover{transform:translateX(46%) !important;}
.mn-fab.dock-r:hover{transform:translateX(-46%) !important;}
.mn-fab.kick{animation:mnKick .42s cubic-bezier(.34,1.56,.64,1);}
@keyframes mnKick{0%{transform:scale(1)}35%{transform:scale(1.18) rotate(-8deg)}70%{transform:scale(.95) rotate(2deg)}100%{transform:scale(1)}}
.mn-dot{position:absolute;top:2px;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  background:#FF3B30;color:#fff;font-size:10.5px;font-style:normal;line-height:17px;text-align:center;
  box-shadow:0 1px 4px rgba(255,59,48,.5);}
.mn-panel{position:fixed;right:26px;bottom:84px;width:940px;height:620px;max-width:calc(100vw - 32px);max-height:calc(100vh - 100px);
  display:flex;flex-direction:column;background:#fff;border-radius:12px;overflow:hidden;
  border:1px solid rgba(0,0,0,.12);box-shadow:0 30px 80px -20px rgba(0,0,0,.42),0 6px 24px rgba(0,0,0,.14);
  z-index:901;font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;}
.mn-panel[hidden]{display:none !important;}
.mn-panel.is-in{animation:mnIn .32s cubic-bezier(.22,1,.36,1);}
@keyframes mnIn{from{transform:translate(30%,46%) scale(.16);opacity:0;filter:blur(2px);}
  to{transform:none;opacity:1;filter:none;}}
.mn-panel.is-out{animation:mnOut .24s cubic-bezier(.4,0,.7,.2) forwards;pointer-events:none;}
@keyframes mnOut{from{transform:none;opacity:1;}to{transform:translate(30%,46%) scale(.16);opacity:0;filter:blur(2px);}}
.mn-panel.dragging{transition:none;}
.mn-panel button{font-family:inherit;}

/* ---- 置顶：钉在系统最上层（层级由脚本拉到最高，这里只管外观与禁用收起） ---- */
.mn-panel.is-pinned{max-height:calc(100vh - 16px) !important;
  box-shadow:0 30px 90px -20px rgba(0,0,0,.46),0 0 0 1px rgba(0,0,0,.1),0 0 0 3px rgba(255,216,77,.42);}
.mn-panel.is-pinned .mn-topbar{cursor:move;}
.mn-panel.is-pinned .lt.red{background:#E6E5E1;cursor:not-allowed;opacity:.55;}
.mn-panel.is-pinned .lt.red:hover{box-shadow:none;}

/* ---- 顶栏（红绿灯 + 工具） ---- */
.mn-topbar{display:flex;align-items:center;gap:6px;padding:8px 12px 7px;background:#F6F5F2;
  border-bottom:1px solid rgba(0,0,0,.08);cursor:default;user-select:none;flex:0 0 auto;}
.mn-lights{display:flex;gap:7px;margin-right:8px;}
.lt{width:12px;height:12px;border-radius:50%;display:inline-block;background:#D9D8D4;}
.lt.red{background:#FF5F57;cursor:pointer;}
.lt.red:hover{box-shadow:0 0 0 3.5px rgba(255,95,87,.28);}
.lt.yel{background:#FEBC2E;}
.lt.grn{background:#28C840;}
.mn-tb{border:none;background:transparent;cursor:pointer;color:#6E6A60;width:30px;height:28px;border-radius:7px;
  display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1;padding:0;}
.mn-tb:hover{background:rgba(0,0,0,.07);color:#3B382F;}
.mn-tb.on{color:#C08A00;}
.mn-tb.danger:hover{background:rgba(255,59,48,.12);color:#D70015;}
.mn-tb-gap{flex:1;}
.mn-colors{display:inline-flex;gap:4px;align-items:center;margin:0 4px;}
.mn-sw{width:15px;height:15px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1.5px rgba(0,0,0,.16);
  cursor:pointer;padding:0;background:#E8E6E1;}
.mn-sw.mc-yellow{background:#FFD84D;}.mn-sw.mc-blue{background:#6FB7FF;}.mn-sw.mc-green{background:#79D68A;}
.mn-sw.mc-pink{background:#FFA8C8;}.mn-sw.mc-purple{background:#C3A6FF;}
.mn-sw.on{box-shadow:0 0 0 2px #C08A00;}

/* ---- 三栏 ---- */
.mn-cols{display:flex;flex:1 1 auto;min-height:0;}
.mn-side{flex:0 0 178px;background:#F6F5F2;border-right:1px solid rgba(0,0,0,.07);
  padding:10px 8px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;}
.mn-side-hd{font-size:16px;font-weight:700;color:#3B382F;padding:2px 8px 10px;}
.mn-folder{display:flex;align-items:center;gap:8px;border:none;background:transparent;cursor:pointer;
  padding:6px 8px;border-radius:7px;font-size:13.5px;color:#3B382F;text-align:left;width:100%;}
.mn-folder:hover{background:rgba(0,0,0,.05);}
.mn-folder.on{background:#E9E5DC;}
.mf-ic{width:18px;height:18px;border-radius:4px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-style:normal;}
.mf-ic.pub{background:linear-gradient(160deg,#FFD84D,#F5B800);}
.mf-ic.mine{background:linear-gradient(160deg,#9FCBFF,#3E8EF7);}
.mf-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mf-n{font-size:12px;color:#8D8A80;font-variant-numeric:tabular-nums;}
.mf-n.warn{background:#FF3B30;color:#fff;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  font-size:10.5px;line-height:17px;text-align:center;}

/* ---- 列表栏（按月分组） ---- */
.mn-listcol{flex:0 0 272px;border-right:1px solid rgba(0,0,0,.07);display:flex;flex-direction:column;min-width:0;}
.mn-searchwrap{padding:8px 10px;flex:0 0 auto;}
.mn-search{width:100%;box-sizing:border-box;border:none;background:#ECEAE5;border-radius:8px;
  padding:6px 10px;font-size:13px;color:#3B382F;outline:none;}
.mn-search:focus{box-shadow:0 0 0 2.5px rgba(192,138,0,.35);}
.mn-rows{flex:1 1 auto;overflow-y:auto;padding:0 0 12px;}
.mn-grouphd{font-size:12.5px;font-weight:700;color:#8D8A80;padding:12px 14px 5px;position:relative;}
.mn-grouphd::before{content:'';position:absolute;left:0;right:0;top:4px;height:1px;background:rgba(0,0,0,.06);}
.mn-row{padding:7px 14px 8px;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.05);position:relative;}
.mn-row:hover{background:rgba(0,0,0,.03);}
.mn-row.on{background:#FFE9A6;}
.mn-row .mr-tt{font-size:13.5px;font-weight:600;color:#26241F;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  display:flex;align-items:center;gap:4px;}
.mn-row .mr-tt span,.mn-row .mr-tt{min-width:0;}
.mr-pin{font-style:normal;font-size:11px;flex:0 0 auto;}
/* 行内小图钉：hover 才浮现，点它把这篇置顶到列表最前 */
.mn-row .mr-tt,.mn-row .mr-ex{padding-right:24px;}
.mr-pinbtn{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:24px;height:24px;
  border:none;background:transparent;cursor:pointer;border-radius:6px;font-size:12px;line-height:1;padding:0;
  opacity:0;filter:grayscale(1);transition:opacity .14s,background .14s;}
.mn-row:hover .mr-pinbtn{opacity:.5;}
.mr-pinbtn:hover{opacity:1 !important;background:rgba(0,0,0,.08);filter:none;}
.mr-pinbtn.on{opacity:1;filter:none;}
.mn-row .mr-ex{font-size:12px;color:#8D8A80;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mn-row .mr-d{color:#8D8A80;}
.mn-row.mc-yellow{box-shadow:inset 3px 0 0 #FFD84D;}
.mn-row.mc-blue{box-shadow:inset 3px 0 0 #6FB7FF;}
.mn-row.mc-green{box-shadow:inset 3px 0 0 #79D68A;}
.mn-row.mc-pink{box-shadow:inset 3px 0 0 #FFA8C8;}
.mn-row.mc-purple{box-shadow:inset 3px 0 0 #C3A6FF;}
.mn-row.unread .mr-tt::after{content:'●';color:#FF9F0A;font-size:9px;margin-left:5px;}
.mn-emptyrow{padding:26px 14px;text-align:center;color:#A9A69C;font-size:12.5px;}

/* ---- 编辑区 ---- */
.mn-ed{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;background:#fff;}
.mn-ed-date{text-align:center;color:#A9A69C;font-size:12.5px;padding:10px 14px 0;flex:0 0 auto;}
.mn-ed-scroll{flex:1 1 auto;overflow-y:auto;padding:6px 34px 30px;min-height:0;}
.mn-title{display:block;width:100%;box-sizing:border-box;border:none;outline:none;background:transparent;
  font-size:22px;font-weight:700;color:#26241F;padding:6px 0 4px;font-family:inherit;}
.mn-title::placeholder{color:#C9C6BC;}
.mn-body{font-size:14.5px;line-height:1.65;color:#33312B;outline:none;min-height:200px;word-break:break-word;}
.mn-body .ln{min-height:1.65em;}
.mn-body .lnimg{max-width:min(520px,100%);max-height:420px;border-radius:8px;display:block;margin:6px 0;cursor:zoom-in;}
/* 待办圆圈（Apple 式：空心圆 → 黄底对勾） */
.mn-body .todo{display:flex;align-items:flex-start;gap:9px;padding:2px 0;}
.mn-body .tck{flex:0 0 auto;width:19px;height:19px;margin-top:3px;border-radius:50%;
  border:1.6px solid #C9C6BC;background:#fff;cursor:pointer;position:relative;transition:all .15s ease;}
.mn-body .tck:hover{border-color:#FFB800;box-shadow:0 0 0 3px rgba(255,184,0,.18);}
.mn-body .todo.done .tck{background:#FFC400;border-color:#FFC400;}
.mn-body .todo.done .tck::after{content:'';position:absolute;left:5.5px;top:2.2px;width:4.5px;height:8.5px;
  border:solid #fff;border-width:0 2px 2px 0;transform:rotate(42deg);}
.mn-body .todo.done .ttxt{color:#A9A69C;}
.mn-body .ttxt{flex:1 1 auto;min-width:0;}
.mn-body.ro{opacity:.85;}
.mn-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  color:#C9C6BC;gap:6px;font-size:14px;pointer-events:none;}
.mn-empty[hidden]{display:none !important;}
.mn-empty-ic{font-size:44px;}
.mn-empty-sub{font-size:12px;color:#DAD7CE;}
.mn-ed{position:relative;}
.mn-ed-ft{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:6px 14px;border-top:1px solid rgba(0,0,0,.06);min-height:30px;}
.mn-back{display:none;border:none;background:none;color:#C08A00;cursor:pointer;font-size:13px;padding:2px 4px;}
.mn-stat{font-size:11.5px;color:#A9A69C;}

/* ---- 表情包面板（本地 Unicode + 颜文字，不联网） ---- */
.mn-emoji-pop{position:absolute;z-index:60;top:42px;right:10px;width:378px;max-width:calc(100vw - 24px);
  max-height:min(372px,calc(100vh - 150px));display:flex;flex-direction:column;background:#fff;
  border:1px solid rgba(0,0,0,.09);border-radius:12px;overflow:hidden;
  box-shadow:0 18px 44px -12px rgba(0,0,0,.34),0 3px 10px rgba(0,0,0,.08);
  animation:mnEmoIn .16s cubic-bezier(.22,1,.36,1);}
.mn-emoji-pop[hidden]{display:none !important;}
@keyframes mnEmoIn{from{opacity:0;transform:translateY(-7px) scale(.97);}to{opacity:1;transform:none;}}
.mn-emoji-hd{padding:8px 9px 0;border-bottom:1px solid rgba(0,0,0,.06);flex:0 0 auto;background:#FBFAF8;}
.mn-emoji-q{width:100%;box-sizing:border-box;border:none;background:#EFEDE7;border-radius:8px;padding:6px 10px;
  font-size:12.5px;outline:none;font-family:inherit;color:#33312B;}
.mn-emoji-q:focus{box-shadow:0 0 0 2px rgba(192,138,0,.28);}
.mn-emoji-tabs{display:flex;gap:1px;overflow-x:auto;padding:5px 0 4px;scrollbar-width:none;}
.mn-emoji-tabs::-webkit-scrollbar{display:none;}
.mn-etab{border:none;background:transparent;cursor:pointer;font-size:15px;line-height:1;padding:5px 7px;border-radius:7px;
  flex:0 0 auto;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;}
.mn-etab:hover{background:rgba(0,0,0,.06);}
.mn-etab.on{background:#FFE9A6;}
.mn-emoji-grid{flex:1 1 auto;overflow-y:auto;display:grid;grid-template-columns:repeat(9,1fr);gap:1px;padding:7px 8px 10px;}
.mn-ei{border:none;background:transparent;cursor:pointer;font-size:20px;line-height:1;height:33px;border-radius:7px;
  display:flex;align-items:center;justify-content:center;color:#26241F;
  font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',-apple-system,sans-serif;}
.mn-ei:hover{background:rgba(0,0,0,.07);}
.mn-ei:active{transform:scale(.9);}
.mn-ei.k{font-size:12px;letter-spacing:-.4px;}
.mn-emoji-none{grid-column:1/-1;text-align:center;color:#A9A69C;font-size:12.5px;padding:22px 10px;line-height:1.6;}


/* ---- 提醒同事弹层 ---- */
.mr-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:950;display:flex;align-items:center;justify-content:center;}
.mr-box{width:360px;max-width:calc(100vw - 40px);max-height:min(560px,calc(100vh - 60px));display:flex;flex-direction:column;
  background:#fff;border-radius:12px;box-shadow:0 24px 60px -12px rgba(0,0,0,.4);overflow:hidden;
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif;}
.mr-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 8px;font-size:14.5px;}
.mr-x{border:none;background:none;cursor:pointer;color:#8D8A80;font-size:13px;padding:2px 6px;border-radius:6px;}
.mr-x:hover{background:rgba(0,0,0,.06);}
.mr-search{margin:0 14px 8px;border:none;background:#ECEAE5;border-radius:8px;padding:7px 10px;font-size:13px;outline:none;}
.mr-list{flex:1 1 auto;overflow-y:auto;padding:0 8px;min-height:120px;}
.mr-item{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;font-size:13.5px;cursor:pointer;}
.mr-item:hover{background:rgba(0,0,0,.04);}
.mr-note{margin:8px 14px 0;border:1px solid rgba(0,0,0,.12);border-radius:8px;padding:7px 9px;font-size:13px;
  resize:none;height:54px;outline:none;font-family:inherit;}
.mr-ft{padding:10px 14px 12px;display:flex;justify-content:flex-end;}
.mr-send{border:none;background:#C08A00;color:#fff;font-size:13.5px;padding:7px 16px;border-radius:8px;cursor:pointer;}
.mr-send:hover{background:#A97A00;}

/* ---- 手机 ---- */
@media (max-width:720px){
  .mn-fab{bottom:18px;right:16px;}
  .mn-panel{left:0 !important;top:0 !important;right:0 !important;bottom:0 !important;width:auto !important;height:auto !important;
    max-width:none;max-height:none;border-radius:0;border:none;}
  .mn-cols{position:relative;}
  .mn-side{position:absolute;left:0;right:0;top:0;z-index:5;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;
    padding:8px;border-bottom:1px solid rgba(0,0,0,.07);}
  .mn-side-hd{display:none;}
  .mn-folder{width:auto;flex:0 0 auto;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:16px;padding:5px 12px;}
  .mn-folder.on{background:#FFE9A6;border-color:#F0CE72;}
  .mn-listcol{position:absolute;inset:44px 0 0;flex-basis:auto;border-right:none;}
  .mn-ed{position:absolute;inset:44px 0 0;z-index:6;background:#fff;}
  .mn-panel:not(.mn-medit) .mn-ed{display:none;}
  .mn-panel.mn-medit .mn-listcol{display:none;}
  .mn-back{display:inline-block;}
  .mn-ed-scroll{padding:4px 16px 20px;}
  .mn-colors{display:none;}
  .mn-emoji-pop{left:8px;right:8px;width:auto;top:46px;max-height:min(44vh,330px);}
  .mn-emoji-grid{grid-template-columns:repeat(8,1fr);}
  .mn-ei{height:38px;font-size:22px;}
}

/* ================= 槽车三张只读表：斑马纹修正（10-26 用户反馈「颜色几乎一样」） =================
   原因：上面 `.tk-table.tk-tank:not(.tk-edit) tbody tr:nth-child(even) td{background:#FAFCFE}`
   把 td 自身刷成近白色，盖住了 .bk-zebra 打在 tr 上的 #EBF4FB，奇偶两行看不出差别。
   这里按「桶装销货单」同一套三档色（#F7FAFD / #EBF4FB / 悬停 #E1EFFA）直接落到 td 上，
   选择器权重高于上面那条，且排除分组行 / 间隔行 / 空态行，不与车号小计行冲突。 */
.tk-table.tk-tank.bk-look.bk-zebra:not(.tk-edit) tbody tr:nth-child(odd):not(.tk-grp):not(.tk-gap):not(.veh-grp):not(.bk-empty) td{background:#F7FAFD;}
.tk-table.tk-tank.bk-look.bk-zebra:not(.tk-edit) tbody tr:nth-child(even):not(.tk-grp):not(.tk-gap):not(.veh-grp):not(.bk-empty) td{background:#EBF4FB;}
.tk-table.tk-tank.bk-look.bk-zebra:not(.tk-edit) tbody tr:not(.tk-grp):not(.tk-gap):not(.veh-grp):not(.bk-empty):hover td{background:#E1EFFA;}
.tk-table.tk-tank.bk-look.bk-zebra:not(.tk-edit) tbody tr.tk-dragging td,
.tk-table.tk-tank.bk-look.bk-zebra:not(.tk-edit) tbody tr.tk-dragging:hover td{background:#EEF7FF !important;}

/* ================= 付运费：吨运价「含 / 不含」只读角标（10-26） =================
   和「销售」里那颗可点的角标同色同规格（含=绿 · 不含=橙 · 未确认=灰虚线），
   这里是只读展示：含 → 对公账户结算，不含 → 个人账户结算，数据随单流转过来。 */
.tk-table.tk-tank td.tk-price-ro{position:relative;padding-right:30px;}
.tk-tax-ro{position:absolute;top:1px;right:3px;display:inline-flex;align-items:center;
  height:12px;padding:0 3px;border-radius:5px;font-size:8.5px;line-height:1;
  letter-spacing:.2px;font-weight:600;}
.tk-tax-ro.def{background:#FFF;color:#93A2B2;border:1px dashed #C8D5E2;font-weight:500;}
.tk-tax-ro.in{background:#12A06A;color:#fff;border:1px solid #12A06A;}
.tk-tax-ro.out{background:#E8761A;color:#fff;border:1px solid #E8761A;}

/* ================= 客户列表：1:1 套用「桶装销货单」表格观感（10-27 用户要求） =================
   只改样式、不动任何数据。与桶装销货单同一套：
   · 表头：浅蓝渐变 + 格内竖线
   · 单元格：四边细线（Excel 网格感）
   · 相邻两行深浅交替的斑马纹（#F7FAFD / #EBF4FB），悬停亮一档 #E1EFFA
   · 最左侧一道由深到浅的「坡面」阴影（与桶装行首拖拽列同款），区分操作区与数据区 */
.tk-table.crm-cl-table{font-size:15px;}
.tk-table.crm-cl-table th{
  font-size:14px;padding:9px;color:#5C7288;letter-spacing:.3px;
  background:linear-gradient(180deg,#F7FAFE 0%,#EDF4FB 100%);
  border-right:1px solid #C9D9EA;border-bottom:1px solid #D6E3F0;
  box-shadow:inset 0 -1px 0 rgba(255,255,255,.8);
}
.tk-table.crm-cl-table th:last-child{border-right:none;}
.tk-table.crm-cl-table td{border-right:1px solid #D8E4F0;border-bottom:1px solid #DCE7F2;}
.tk-table.crm-cl-table td:last-child{border-right:none;}
.tk-table.crm-cl-table tr:last-child td{border-bottom:none;}
/* 斑马纹：直接落到 td 上（防止行内控件自己的背景把行底盖掉），悬停整行提亮 */
.tk-table.crm-cl-table tbody tr:nth-child(odd) td{background:#F7FAFD;}
.tk-table.crm-cl-table tbody tr:nth-child(even) td{background:#EBF4FB;}
.tk-table.crm-cl-table tbody tr:hover td{background:#E1EFFA;}
/* 行内可编辑格：悬停/编辑态盖过斑马纹 */
.tk-table.crm-cl-table td.crm-cell:hover{background:#EAF5FF !important;box-shadow:inset 0 0 0 1px #C9E0F6;}
.tk-table.crm-cl-table td.cell-editing{background:#FCFDFF !important;}
/* 最左列（勾选列，没勾选列时就是序号列）右缘的「斜坡」阴影：由深到浅一道坡面 */
.tk-table.crm-cl-table th:first-child,.tk-table.crm-cl-table td:first-child{position:relative;border-right:none;}
.tk-table.crm-cl-table th:first-child::after,.tk-table.crm-cl-table td:first-child::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:9px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));
}
/* 勾选框列与次序列内容居中，不被坡面挡住 */
.tk-table.crm-cl-table td.crm-c-ck .tk-ck,.tk-table.crm-cl-table td.crm-c-seq{position:relative;z-index:1;}

/* ================= 「天」与「地」（10-27 用户提议） =================
   顶部切页时那道蓝色加载线（#routeBar）是动态的「天」；底部原来什么都没有——
   这里补一条常驻的「地平线」：同一套蓝色、由左向右渐淡、微微向上泛光，
   贴住窗口底边，不挡任何点击；登录页有自己的全屏背景，不铺。 */
body::after{
  content:"";position:fixed;left:0;right:0;bottom:0;height:4px;z-index:60;pointer-events:none;
  background:linear-gradient(90deg,rgba(11,127,219,.55) 0%,rgba(30,159,255,.30) 42%,rgba(30,159,255,.10) 78%,rgba(30,159,255,.04) 100%);
  box-shadow:0 -2px 10px rgba(11,127,219,.14);
}
body:has(.login-page)::after{display:none;}
/* 打印时不要把地平线打出来 */
@media print{body::after{display:none;}}

/* 客户位置弹窗：地图选点区块 + 定位小标（10-27） */
.crm-loc-map{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;}
.crm-loc-info{flex:1;font-size:12.5px;color:#3D4F63;line-height:1.6;min-width:0;word-break:break-all;}
.crm-loc-info small{color:#8C9AA8;}
.crm-loc-pin{font-style:normal;margin-right:3px;}

/* ================= 底部「＋ 新增」工具条：按钮加大加醒目（10-28 用户方案 C） =================
   原来按钮又小又素，屏幕矮的时候还会被表格顶出屏幕（fitFreeHead 已修正预留高度）。
   这里只做观感：整体更立体、悬停微亮上浮，提示文字归位到右侧同一条线上。 */
.tk-foot{
  padding:7px 14px;gap:10px;min-height:46px;
  background:linear-gradient(180deg,#FBFDFF,#F2F7FC);
  border-top:1px solid #E3EDF6;
}
.tk-foot .btn-add{
  height:32px;padding:0 18px;font-size:14px;font-weight:700;letter-spacing:.4px;
  border:none;border-radius:8px;color:#fff;
  background:linear-gradient(180deg,#25BE7C 0%,#0E9F6E 100%);
  box-shadow:0 2px 7px rgba(14,159,110,.26),inset 0 1px 0 rgba(255,255,255,.22);
  transition:transform .12s ease,box-shadow .18s ease,filter .18s ease;
}
.tk-foot .btn-add:hover{
  filter:brightness(1.06);
  box-shadow:0 5px 15px rgba(14,159,110,.34),inset 0 1px 0 rgba(255,255,255,.26);
  transform:translateY(-1px);
}
.tk-foot .btn-add:active{transform:translateY(0);box-shadow:0 1px 4px rgba(14,159,110,.3);}
.tk-foot .tk-hint{font-size:12.5px;color:#8C9AA8;line-height:1.5;}

/* 付运费（小车）：空运费旁的「参考」小标（来自固定运价，只提示不落库） */
.bk-ref{
  font-style:normal;font-size:10.5px;color:#0E9F6E;background:#E7F8F1;
  border:1px solid #BFEADB;border-radius:4px;padding:0 4px;margin-left:3px;
  vertical-align:middle;cursor:help;
}

/* ================= 桶装子订单行（10-28 车次单） =================
   同一辆车的另一种产品 / 包装：缩进 + 左侧蓝线 + 「子」标签，不占次序；
   客户 / 车辆这些跟着主行走的格子显示「同上」，灰字不抢眼。 */
.bk-subrow > td{background:#F3F9FE !important;border-top:none;}
.bk-subrow > td:first-child{border-left:3px solid #9CC8EA;}
.bk-subrow .bk-seq{padding-left:6px;}
.bk-subtag{display:inline-block;font-size:11px;font-weight:700;color:#1E7FD9;background:#E4F1FC;
  border:1px solid #BBDDF8;border-radius:5px;padding:1px 6px;line-height:1.3;}
/* 库存已扣标记（11-09）：这张单有出库流水，审核＝只锁单、反审核＝只解锁，库存都不再动。
   给「待审核但库存早扣过」的老单一个显式标记，避免点了没反应、以为系统坏了 */
.bk-outtag{display:inline-block;font-style:normal;font-size:10.5px;font-weight:600;color:#B2660A;
  background:#FFF3E0;border:1px solid #F5D5A8;border-radius:4px;padding:0 5px;margin:0 5px 0 0;
  line-height:1.5;white-space:nowrap;vertical-align:1px;cursor:help;}
.bk-same{font-size:12px;color:#A6B4C2;font-style:normal;}
.bk-subauto{font-size:12.5px;color:#8C9AA8;}
.bk-subsum{font-style:normal;font-size:10.5px;color:#0E9F6E;background:#E7F8F1;border:1px solid #BFEADB;
  border-radius:4px;padding:0 4px;margin-left:5px;cursor:help;}
.bk-addsub{color:#1E7FD9 !important;font-weight:600;}
.bk-pkg{min-width:64px;}

/* ================= 客户往来桶账（10-28 车次单③） =================
   客户 × 桶型：借出 / 已还 / 挂账 三个口径。格子里大数是挂账，
   小字是「借 X · 还 Y」；卡片顶部一条口径合计，切页一眼看清总数。 */
.ba-sum{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  padding:8px 14px 10px;border-top:1px solid #EEF3F8;
  font-size:12.5px;
}
.ba-row{cursor:pointer;}
.ba-row:hover > td{background:#F4FAFF;}
.ba-detail > td{border-top:none;}

/* ================= 桶装销货单 10-28 精简改版 =================
   · 运输状况列取消，送货车辆联动（自提 → 回桶自动 0）
   · 新增「收运费」「扣减」两列：只进本单利润，与车主运费结算、桶押金互不相干
   · 回桶按行登记：主行 / 子单各回各的，格内数量 + 回桶桶型（不选跟本行包装） */
.bk-ret-wrap{display:flex;align-items:center;gap:4px;justify-content:flex-end;}
.bk-ret-wrap .bk-ret{width:58px;min-width:52px;text-align:right;}
.bk-rtype{width:72px;min-width:68px;font-size:12px;padding:0 2px;color:#5B6B7C;}

/* ---------- 桶装 · 付运费（小车）车型分组（10-28）：高栏 / 箱货 / 福特 ----------
   组头色带（蓝/绿/琥珀点 + 单数·桶数·吨位 + 组小计）、组内小计行、表尾全部合计行，
   配色取自系统 crm-src / tag 既有色板，与槽车、桶装列表同一观感 */
.bk-table .bk-g-head td{padding:0;background:#F5F9FD;border-bottom:1px solid #DCE7F2;}
.bk-gband{display:flex;align-items:center;gap:10px;padding:6px 12px;font-size:13px;}
.bk-gband i{width:8px;height:8px;border-radius:3px;flex:0 0 auto;}
.bk-gband b{color:#12365f;font-weight:600;}
.bk-gband .g-meta{color:#6B7C8F;font-size:12.5px;}
.bk-gband .g-sum{margin-left:auto;color:#12365f;font-weight:600;font-variant-numeric:tabular-nums;}
.bk-gband .g-sum small{color:#8C9AA8;font-weight:400;margin-right:6px;}
.bk-table .bk-g-foot td{background:#FBFDFE;color:#5A6B7B;font-size:12.5px;padding:4px 8px;border-bottom:1px solid #E6EBF1;}
.bk-table .bk-g-foot td b{color:#12365f;}
.bk-table .bk-g-total td{background:#F2F8FE;border-top:1.5px solid #B5D4F4;font-weight:600;color:#12365f;padding:8px;}

/* ================= 付运费：右上角「核」角标（10-29） =================
   与槽车销售 含/不含 同位同规格同动效：虚线灰=还没填 · 实心蓝=按固定运价参考价填入 ·
   实心绿=手动填（与参考价不同）；点「核」即按参考价一键落库。
   格内参考值（参考 600 / 参考 60）用虚线下划线弱化，核一点就变真数 */
.tk-table.tk-tank td.bk-corecell{position:relative;padding-right:12px;}
.tk-table.tk-tank td.bk-corecell .tk-in{position:relative;z-index:1;}
.tk-table.tk-tank td.bk-corecell .bk-core{
  position:absolute;top:1px;right:2px;z-index:2;display:inline-flex;align-items:center;justify-content:center;
  height:12px;padding:0 4px;border-radius:5px;font-size:8.5px;line-height:1;
  font-family:inherit;letter-spacing:.2px;cursor:pointer;
  transition:background .15s,color .15s,border-color .15s,box-shadow .15s;
}
.bk-core.def{background:#FFF;color:#93A2B2;border:1px dashed #C8D5E2;font-weight:500;}
.bk-core.def:hover{background:#F4F8FC;color:#5F7285;border-color:#A9BDD1;}
.bk-core.in{background:#1E6FC0;color:#fff;border:1px solid #1E6FC0;font-weight:600;box-shadow:0 1px 2px rgba(30,111,192,.25);}
.bk-core.in:hover{background:#175EA5;border-color:#175EA5;}
.bk-core.ok{background:#12A06A;color:#fff;border:1px solid #12A06A;font-weight:600;box-shadow:0 1px 2px rgba(18,160,106,.25);}
.bk-core.ok:hover{background:#0E8A5B;border-color:#0E8A5B;}
.bk-core:disabled{opacity:.4;cursor:not-allowed;}
.tk-table.tk-tank td.bk-corecell input::placeholder{
  color:#A9BCCD;text-decoration:underline dashed #C9D8E6;text-underline-offset:2px;text-decoration-thickness:1px;}
/* 选单「＋」（11-05）：付运费行尾勾选按钮——虚线圈＋号，勾选后变实心蓝✓；与本批结算/送审配套 */
.bk-selbtn{width:26px;height:26px;padding:0;border-radius:50%;border:1px dashed #B7C7D8;background:#FFF;color:#8B9AAA;
  font-size:15px;line-height:24px;cursor:pointer;transition:all .15s;vertical-align:middle;}
.bk-selbtn:hover{border-color:#1E6FC0;color:#1E6FC0;background:#F4F8FC;}
.bk-selbtn.on{background:#1E6FC0;border:1px solid #1E6FC0;color:#fff;font-weight:600;box-shadow:0 1px 2px rgba(30,111,192,.25);}
/* 组头布局（10-29 三版）：组头只放「车型 · 单数/桶/吨 · 磅费小计 · 小计」做展示；
   「分享单据 / 审核」统一挪到每组表格右下角（组尾最后一格），贴合单据右下角落款位置 */
.bk-gband{flex-wrap:wrap;row-gap:6px;}
.bk-gband .g-sum{margin-left:6px;padding-left:10px;border-left:1px solid #D5E2EF;font-size:14px;}
.bk-gband .g-pound{color:#6B7C8F;font-size:12px;font-variant-numeric:tabular-nums;padding-left:10px;border-left:1px solid #E1EAF3;}
.bk-table .bk-g-foot td.g-ops-td{white-space:nowrap;text-align:right;padding:3px 8px 5px;position:sticky;right:0;background:#FBFDFE;}
.bk-g-foot .g-ops{display:inline-flex;gap:6px;align-items:center;}

/* 10-29 库存中心（包材 / 桶装归档 / 槽车归档）只读表没有拖拽列，
   首列（桶型 / 客户 / 单号）右缘补同款「左缓坡」阴影，左侧观感与桶装销货单一致 */
.tk-table.bk-look.bk-first th:first-child,
.tk-table.bk-look.bk-first td:first-child{position:relative;}
.tk-table.bk-look.bk-first th:first-child::after,
.tk-table.bk-look.bk-first td:first-child::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:9px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.18),rgba(23,52,80,.07) 48%,rgba(23,52,80,0));
}
.tk-table.bk-look.bk-first th:first-child{padding-left:12px;}
.tk-table.bk-look.bk-first td:first-child{padding-left:12px;}
.btn.btn-xs{height:22px;padding:0 10px;font-size:12px;border-radius:6px;line-height:1;flex:none;}
.bk-paiday{font-size:11.5px;color:#8C9AA8;margin-left:5px;}

/* ================= 10-29 运输·固定运价：车型筛选按钮组 =================
   位置：卡片工具条「固定运价」标题右边；分段式按钮（全部/槽车/高栏/箱货/福特），
   只筛显示不改数据；选中蓝底白字，一眼看清当前看的是哪种车 */
.fr-filter{display:inline-flex;flex:0 0 auto;gap:0;background:#EEF3F9;border:1px solid #D9E5F1;
  border-radius:8px;padding:2px;vertical-align:middle;}
.fr-fbtn{border:none;background:transparent;color:#5B6B7C;font-size:12.5px;line-height:1;
  padding:5px 12px;border-radius:6px;cursor:pointer;transition:background .15s,color .15s;font-family:inherit;}
.fr-fbtn:hover{color:#1F3B57;background:rgba(30,127,217,.09);}
.fr-fbtn.on{background:#1668E3;color:#fff;font-weight:600;box-shadow:0 1px 3px rgba(22,104,227,.28);}
@media (max-width:860px){
  .fr-fbtn{padding:5px 9px;font-size:12px;}
}

/* ---------- 客户判重（10-29，11-05 起电话 + 名称都算）：重复整行标红、电话为空整行标黄 ----------
   「重复校验」列已去掉（11-05），只保留整行上色；配色沿用系统 tag 红 / 黄那一套 */
.crm-cl-table tbody>tr.crm-dup-row>td{background:#FDECEA !important;box-shadow:inset 0 0 0 1px #F7C9C4;}
.crm-cl-table tbody>tr.crm-dup-row:hover>td{background:#FBDFDC !important;}
.crm-cl-table tbody>tr.crm-nophone-row>td{background:#FFF7E6 !important;box-shadow:inset 0 0 0 1px #F3DFB2;}
.crm-cl-table tbody>tr.crm-nophone-row:hover>td{background:#FEF1D6 !important;}

/* ---------- 客户列表 · 行尾删除小叉（10-29）：默认隐形，鼠标移到整行才淡入 ----------
   只在行 hover / 按钮聚焦时出现，不抢客户名称与电话的视觉；点一下弹确认框再删 */
.crm-cl-table th.crm-c-del,.crm-cl-table td.crm-c-del{width:40px;min-width:40px;text-align:center;}
.crm-cl-table th.crm-c-del{color:#B7C3CF;font-weight:500;font-size:12px;}
.crm-rowdel{width:22px;height:22px;line-height:20px;padding:0;border:none;border-radius:50%;
  background:transparent;color:#C0392B;font-size:13px;cursor:pointer;
  opacity:0;transform:scale(.86);transition:opacity .14s ease,transform .14s ease,background .14s ease;
  pointer-events:none;}
.crm-cl-table tbody tr:hover .crm-rowdel{opacity:.55;transform:none;pointer-events:auto;}
.crm-cl-table tbody tr:hover .crm-rowdel:hover{opacity:1;background:#FDECEA;box-shadow:inset 0 0 0 1px #F2BDB7;}
.crm-rowdel:focus-visible{opacity:1;transform:none;pointer-events:auto;background:#FDECEA;outline:2px solid #F2BDB7;outline-offset:1px;}

/* ---------- 库存中心 · 桶装（10-29 二次布局：三组同屏）----------
   桶装库存 / 分装记录 / 批次核算 上下三组、组间 12px 间隔，不再页签切换；
   观感 1:1 对齐桶装销货单：15.5px 正文、14px 表头、行首斜坡、斑马纹、表头冻结、表尾合计 */
.inv-stack{display:flex;flex-direction:column;gap:12px;}
.inv-pack > .toolbar .search{height:30px;min-width:0;padding:0 10px;gap:6px;}
.inv-pack > .toolbar .search .s-ic{font-size:13px;}
.inv-pack > .toolbar .search input{font-size:13.5px;}
.inv-pack > .tk-stats.tk-infobar{height:50px;padding:5px 14px 7px;overflow:hidden;align-items:stretch;}
.inv-pack .tk-kpi{font-size:13px;}
.inv-pack .tk-kpi b{font-size:13.5px;}
.inv-pack .tk-table.bk-look{font-size:15.5px;}
.inv-pack .pk-name b{color:#12365F;font-size:15.5px;letter-spacing:.2px;}
.inv-pack .pk-spec{display:flex;flex-wrap:wrap;gap:5px;padding:2px 0;}
.inv-pack .pk-spec .tag{height:26px;font-size:14px;padding:0 11px;}
.inv-pack .pk-spec .tag b{font-weight:600;margin:0 1px;font-size:14.5px;}
.inv-pack .bk-seq{font-size:13.5px;}
.inv-pack .bk-g-total td{font-size:14.5px;padding:9px 8px;}
.inv-pack .pk-plate{margin-left:6px;font-size:12.5px;color:#8C9AA8;}
.inv-pack .pk-stage{margin-left:4px;font-style:normal;font-size:11.5px;color:#A2B0BE;}
.inv-pack .tk-table.bk-look tbody tr.bk-empty td{padding:48px 0;font-size:14.5px;}

/* ================= 财务四模块表格观感（10-29）：1:1 对齐「进销 · 桶装销售 · 桶装销货单」 =================
   应收 / 应付 / 资金 / 单据 四块沿用同一套：15.5px 正文、14px 表头、Excel 网格竖线、
   行首拖拽列 + 右缘「斜坡」坡面阴影、奇偶斑马纹、hover 高亮、卡内表头自动吸顶（折页感）、
   展开历史行淡入动效。纯观感改造，不动任何数据与口径。 */
.tk-table.fin-look{font-size:15.5px;width:max-content;min-width:100%;max-width:none;}
.tk-table.fin-look th{padding:8px 9px;font-size:14px;border-right:1px solid #C9D9EA;border-bottom:1px solid #D6E3F0;
  background:linear-gradient(180deg,#F7FAFE 0%,#EDF4FB 100%);box-shadow:inset 0 -1px 0 rgba(255,255,255,.8);}
.tk-table.fin-look td{padding:5px 9px;border-bottom:1px solid #DCE7F2;border-right:1px solid #D8E4F0;
  transition:background .12s ease;}
.tk-table.fin-look th:last-child,.tk-table.fin-look td:last-child{border-right:none;}
.tk-table.fin-look td.num,.tk-table.fin-look th.num{font-variant-numeric:tabular-nums;}
/* 行首拖拽列 + 右缘「斜坡」：区分操作区与数据区（桶装销货单同款） */
.tk-table.fin-look .tk-drag-col{width:26px;padding:0 0 0 6px !important;}
.tk-table.fin-look th.tk-drag-col,.tk-table.fin-look td.tk-drag-col{position:relative;border-right:none !important;}
.tk-table.fin-look th.tk-drag-col::after,.tk-table.fin-look td.tk-drag-col::after{
  content:"";position:absolute;top:0;right:0;bottom:0;width:8px;pointer-events:none;
  background:linear-gradient(90deg,rgba(23,52,80,.16),rgba(23,52,80,.06) 45%,rgba(23,52,80,0));}
/* 斑马纹 + hover：与桶装同一组颜色 */
.tk-table.fin-look.fin-zebra tbody tr:not(.fin-sub):nth-child(odd){background:#F7FAFD;}
.tk-table.fin-look.fin-zebra tbody tr:not(.fin-sub):nth-child(even){background:#EBF4FB;}
.tk-table.fin-look tbody tr:not(.fin-sub):hover{background:#E1EFFA;}
.tk-table.fin-look tbody tr.fin-empty td{text-align:center;color:#93A5B6;padding:26px 0;background:#fff;font-size:14px;}
/* 展开的收款 / 付款历史行：淡入 + 内嵌浅蓝底（像翻开一页） */
tbody tr.fin-sub{animation:finSubIn .18s ease both;}
tbody tr.fin-sub > td{background:#F3F9FF !important;padding:10px 12px 12px !important;
  box-shadow:inset 0 2px 4px -2px rgba(23,52,80,.14);}
@keyframes finSubIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
/* 财务卡：tk-card 同款圆角阴影；卡内 tk-table 表头自动吸顶 */
.fin-card{background:#fff;border:1px solid #DCE7F2;border-radius:12px;
  box-shadow:0 1px 3px rgba(16,64,120,.05);overflow:hidden;}
.fin-card > .toolbar{padding:8px 14px;border-bottom:1px solid #EDF2F7;display:flex;align-items:center;gap:10px;
  background:linear-gradient(180deg,#fff 0%,#FBFDFE 100%);}
.fin-card > .toolbar > b{font-size:15px;color:#12365F;}
.fin-card .tk-table.fin-look thead th{position:sticky;top:0;z-index:6;}
/* 统计条：进销同款浅蓝底 + 深蓝数字 */
.fin-bar{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap;padding:7px 14px;font-size:13px;color:#5B6B7C;
  background:linear-gradient(180deg,#F7FAFE 0%,#F1F7FD 100%);border-bottom:1px solid #E3EDF6;}
.fin-bar b{color:#12365F;font-weight:600;font-variant-numeric:tabular-nums;}
.fin-bar em{font-style:normal;color:#B7791F;}
.fin-bar .fin-sep{width:1px;height:13px;background:#D5E3F1;margin:3px 6px 0;}
/* 待财务审核的行：琥珀底压过斑马纹，一眼看出「这笔等着处理」 */
.tk-table.fin-look tbody tr.fin-wait{background:#FFFBF3 !important;box-shadow:inset 3px 0 0 #E8A33D;}
.tk-table.fin-look tbody tr.fin-wait:hover{background:#FDF3E2 !important;}
/* 资源页（单据 / 账户管理）挂进财务后：补齐同一套观感（JS 会补 fin-look 与行首列） */
.fin-mount .table-wrap{border-radius:10px;border-color:#DCE7F2;box-shadow:0 1px 3px rgba(16,64,120,.05);}
.fin-mount .table-scroll > table > thead > tr > th{position:sticky;top:0;z-index:6;}

/* ================= 全系统表格 · 行尾删除统一为「客户列表同款圆形小叉」（10-29）=================
   把客户列表最后一列那颗小叉的观感，推广到系统里所有表格的行内删除：
     · 默认隐形（不抢行内容的视觉），鼠标移到整行才淡入 .55；
     · 指到小叉本身完全不透明 + 浅红底描边，点一下走原来的确认框再删；
     · 原来红字方角的「删除 / 删 / ð」按钮全部换成这一颗，全系统一个样。
   纯 CSS 覆盖：data-act / data-id / data-bill-del 等属性与事件委托一行不动，删除逻辑照旧。 */
table tbody tr :is(.tk-del,.q-del,.sp-del,.sp-del2,[data-act="del"],[data-rt="del"]){
  display:inline-flex !important;align-items:center;justify-content:center;flex:none;
  width:22px !important;height:22px !important;min-width:0 !important;
  padding:0 !important;margin:0 !important;border:none !important;border-radius:50% !important;
  background:transparent !important;box-shadow:none !important;
  color:#C0392B !important;font-size:0 !important;font-weight:400 !important;line-height:1 !important;
  cursor:pointer;opacity:0;transform:scale(.86);pointer-events:none;
  transition:opacity .14s ease,transform .14s ease,background .14s ease,box-shadow .14s ease;
}
/* 原来的「删除 / 删 / ð」文字隐藏，统一只显示一个叉 */
table tbody tr :is(.tk-del,.q-del,.sp-del,.sp-del2,[data-act="del"],[data-rt="del"])::before{
  content:"✕";font-size:13px;line-height:1;
}
/* 鼠标移到整行：小叉淡入（.55 是客户列表那一档，不抢行内容） */
table tbody tr:hover :is(.tk-del,.q-del,.sp-del,.sp-del2,[data-act="del"],[data-rt="del"]){
  opacity:.55;transform:none;pointer-events:auto;
}
/* 指到小叉本身：完全不透明 + 浅红底描边 */
table tbody tr:hover :is(.tk-del,.q-del,.sp-del,.sp-del2,[data-act="del"],[data-rt="del"]):hover{
  opacity:1;background:#FDECEA !important;box-shadow:inset 0 0 0 1px #F2BDB7 !important;
}
/* 键盘 Tab 过去也要看得见 */
table tbody tr :is(.tk-del,.q-del,.sp-del,.sp-del2,[data-act="del"],[data-rt="del"]):focus-visible{
  opacity:1;transform:none;pointer-events:auto;outline:none;
  background:#FDECEA !important;box-shadow:inset 0 0 0 1px #F2BDB7 !important;
}
/* 固定运价：操作列收窄到刚好放下一颗小叉（原来「删除」两字撑得偏宽） */
.fr-table th.tk-ctr,.fr-table td.tk-ops{width:44px;min-width:44px;}

/* ---------- 实时协同顶栏增强（10-29）：在线胶囊带「人在线」文字 + 单人态可辨识 ---------- */
.rt-live .rt-t { font-weight: 600; letter-spacing: .2px; }
.rt-live.solo { background: #EEF3F9; color: #64748B; box-shadow: inset 0 0 0 1px #DFE8F1; }
.rt-live.solo .rt-dot { background: #93A6BA; }
.rt-editing-pill { box-shadow: 0 1px 4px rgba(22, 104, 227, .10); }

/* ================= 报表（六张表一页切换 · 桶装销货单观感） =================
   顶部纸页切换条与「进销」同款；表格走 .tk-table.bk-look + .bk-zebra，
   行首斜坡列 .tk-drag-col + 序号 .bk-seq 与桶装销货单一致；
   这里只补三样：页签字号收一档（六格排得下）、总览小签、底部合计行配色 */
.sc-strip.rep-strip{height:48px;}
.sc-strip.rep-strip .sc-tab{font-size:14px;padding:0 4px;gap:4px;letter-spacing:0;}
@media (max-width:1200px){.sc-strip.rep-strip .sc-tab{font-size:13px;}}
@media (max-width:900px){.sc-strip.rep-strip{height:44px;}.sc-strip.rep-strip .sc-tab{font-size:12px;padding:0 2px;}}
@media (max-width:560px){.sc-strip.rep-strip{height:40px;}.sc-strip.rep-strip .sc-tab{font-size:10.5px;letter-spacing:-.2px;padding:0 1px;}}
.rep-chip{display:inline-flex;align-items:baseline;gap:6px;background:#F6FAFE;border:1px solid #E3EDF6;border-radius:8px;padding:5px 11px;font-size:12.5px;color:#5B6B7C;}
.rep-chip b{font-size:14.5px;font-variant-numeric:tabular-nums;}
.tk-table.bk-look tfoot td{background:#EAF3FB !important;font-weight:600;border-top:1px solid #C9D9EA;border-bottom:none;color:#22384D;}
.tk-table.bk-look tfoot td.bk-seq{background:#EAF3FB !important;}

/* ================= 文档中心体验（v1396a）：丝滑三件套 =================
   ① 弹窗淡入 + 内容上浮；② PDF 预览骨架；③ 缩略图懒加载淡入；④ 段落级改字编辑器 */
@keyframes dmaskIn{from{opacity:0}to{opacity:1}}
@keyframes dpanelIn{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.doc-pv-mask,.doc-edit-mask{animation:dmaskIn .16s ease-out}
.doc-pv,.doc-edit{animation:dpanelIn .22s ease-out}
/* PDF 预览骨架（灰画布上的呼吸灰条） */
.dp-skel{flex:1;display:grid;place-items:center;background:#6B7075;min-height:300px}
.skel-line{height:13px;border-radius:6px;margin:11px 0;background:linear-gradient(90deg,#83888D 25%,#9DA2A7 50%,#83888D 75%);background-size:200% 100%;animation:skelMove 1.15s linear infinite}
@keyframes skelMove{from{background-position:200% 0}to{background-position:-200% 0}}
/* 缩略图：加载完成淡入，避免原图一格格跳出来 */
.dt-img img.dt-thumb{opacity:0;transition:opacity .28s ease;background:#F2F6FA}
.dt-img img.dt-thumb.dt-ok{opacity:1}
/* 段落级改字编辑器 */
.pe-box{max-width:880px}
.pe-hint{font-size:12px;color:#8C9AA8;background:#F6FAFE;border:1px solid #E3EDF6;border-radius:8px;padding:3px 10px}
.pe-bar{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #EDF2F7;background:#FBFDFE}
.pe-bar input{flex:0 1 260px;border:1px solid #DDE6EF;border-radius:8px;padding:6px 12px;font-size:13px;outline:none}
.pe-bar input:focus{border-color:#7FB0DC}
.pe-bar span{font-size:12.5px;color:#8C9AA8}
.pe-list{flex:1;overflow:auto;padding:14px 22px;background:#FCFDFF}
.pe-p{display:block;width:100%;border:1px solid transparent;border-radius:8px;padding:7px 10px;margin:2px 0;font-size:14.5px;line-height:1.75;color:#22384D;background:transparent;resize:none;outline:none;font-family:inherit;overflow:hidden}
.pe-p:hover{border-color:#E3EDF6;background:#fff}
.pe-p:focus{border-color:#7FB0DC;background:#fff;box-shadow:0 0 0 3px rgba(64,128,192,.09)}
.pe-p.pe-mod{border-color:#F2D9A0;background:#FFFBF2}
.pe-p.pe-hit{border-color:#7FB0DC;background:#F2F8FE}
.pe-empty{font-size:12.5px;color:#C3CED9;padding:3px 10px;user-select:none}

/* ---------- 客户往来桶账：行内新增往来记录（10-30）---------- */
tr.ba-new-row > td { background: #F4FAFF !important; padding: 8px 12px !important; border-top: 1px solid #C6DDF5 !important; }
/* 新增行固定在表尾、贴着左下角按钮：左边一道蓝条，一眼看出「正在这一笔上填」 */
tr.ba-new-row > td:first-child { box-shadow: inset 3px 0 0 #1668E3; }
.ba-nr > .ba-nr-btns { display: flex; gap: 8px; align-items: center; margin-left: auto; }
.ba-nr { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 10px; }
.ba-nr > label { display: flex; flex-direction: column; gap: 3px; font-size: 11.5px; color: #7A8CA0; font-weight: 600; }
.ba-nr input, .ba-nr select { height: 28px; padding: 2px 8px; border: 1px solid #D6E4F0; border-radius: 6px; font-size: 13px; background: #fff; color: #22384D; }
.ba-nr input:focus, .ba-nr select:focus { border-color: #4A90D9; outline: none; box-shadow: 0 0 0 2px rgba(74, 144, 217, .15); }
.ba-nr select[data-bn="cus"] { max-width: 190px; }
.ba-nr input[data-bn="qty"] { width: 86px; }
.ba-nr input[data-bn="price"] { width: 100px; }
.ba-nr input[data-bn="remark"] { width: 200px; }

/* ================= 槽车销货单：按屏幕宽度三档自适应（2026-10-30 用户口径） =================
   用户规则：
   ① 屏幕宽 → 观感优先，不强行铺满：表格宽＝内容自然宽，右侧留白，列不被抻开；
   ② 屏幕窄 → 能缩的就缩（字号 / 内边距 / 编辑框最小宽 / 备注列宽一起收），
      缩到极限还放不下就横向滑动看右边——不再为凑一屏把列压烂
      （10-26 已否掉 1134px 那版，这次只在窄屏收，且字号不低于 13.5px）。
   实现：一组 CSS 变量控制整表密度，媒体查询只改变量，不逐列写死宽度；
        列宽交给 table-layout:auto 按内容自算（colgroup 里的固定 px 一并解除）。
   作用域：仅 .tk-table.tk-edit.tk-tank（槽车销货单编辑网格），其他表格零影响。
   回退：删掉本段即回到 1404a 的固定列宽表现。 */
.tk-table.tk-edit.tk-tank{
  --tt-font:15.5px;   /* 正文字号 */
  --tt-pad:7px;       /* 单元格左右内边距 */
  --tt-in:48px;       /* 编辑框最小宽 */
  --tt-note:11em;     /* 备注列宽（按字数） */
  table-layout:auto !important;
  width:max-content !important;
  min-width:0 !important;
  max-width:none !important;
  font-size:var(--tt-font) !important;
}
/* 解除 colgroup 里写死的列宽（原 10-26 固定列宽体系），列宽改由内容决定 */
.tk-table.tk-edit.tk-tank.bk-look col{width:auto !important;}
.tk-table.tk-edit.tk-tank thead th,
.tk-table.tk-edit.tk-tank tbody td{
  padding-left:var(--tt-pad) !important;
  padding-right:var(--tt-pad) !important;
}
/* 表头允许折两行：4 个字的表头不再硬撑出一整列宽 */
.tk-table.tk-edit.tk-tank thead th{white-space:normal !important;line-height:1.22;}
/* 编辑框宽度跟格子走，最小宽收窄；文字仍完整可读 */
.tk-table.tk-edit.tk-tank .tk-in{
  min-width:var(--tt-in) !important;
  font-size:calc(var(--tt-font) - 0.5px) !important;
  padding-left:4px !important;
  padding-right:4px !important;
}
.tk-table.tk-edit.tk-tank select.tk-in{min-width:calc(var(--tt-in) + 8px) !important;}
/* 备注列按字数给宽，左对齐可换行，不挤别的列 */
.tk-table.tk-edit.tk-tank th.col-note,
.tk-table.tk-edit.tk-tank td.col-note{
  width:calc(var(--tt-note) + var(--tt-pad) * 2 + 8px) !important;
  max-width:calc(var(--tt-note) + var(--tt-pad) * 2 + 8px) !important;
  min-width:calc(var(--tt-note) + var(--tt-pad) * 2 + 8px) !important;
}
/* 三列不允许被压到裁字：状态胶囊 / 票据图标 / 操作按钮（按钮被裁就点不到了） */
.tk-table.tk-edit.tk-tank td.tk-stage{min-width:108px !important;}
.tk-table.tk-edit.tk-tank td.tk-docs{min-width:56px !important;}
.tk-table.tk-edit.tk-tank td.tk-ops{min-width:148px !important;}
.tk-table.tk-edit.tk-tank td.tk-ops .tk-act{padding:0 5px !important;margin-left:2px !important;}

/* —— 超宽屏（≥2200）：给足呼吸感，但仍远小于屏宽，右侧留白 —— */
@media (min-width:2200px){
  .tk-table.tk-edit.tk-tank{--tt-pad:15px;--tt-font:16px;--tt-in:66px;--tt-note:14em;}
}
/* —— 宽屏（1900~2199）：观感优先，不铺满 —— */
@media (min-width:1900px) and (max-width:2199px){
  .tk-table.tk-edit.tk-tank{--tt-pad:7px;--tt-font:15.5px;--tt-in:48px;--tt-note:11em;}
}
/* —— 常规办公屏（1280~1899）：紧凑一档 —— */
@media (max-width:1899px){
  .tk-table.tk-edit.tk-tank{--tt-pad:4px;--tt-font:14px;--tt-in:32px;--tt-note:8em;}
}
/* —— 窄屏（≤1279）：再收一档，仍放不下就横向滑动 —— */
@media (max-width:1279px){
  .tk-table.tk-edit.tk-tank{--tt-pad:3px;--tt-font:13.5px;--tt-in:28px;--tt-note:6em;}
}

/* ================= 槽车销货单：按「字数」精确列宽（10-30 第二轮，接上一段的变量体系） =================
   用户口径（10-30 上午）：
   ① 屏宽有富余 → 以「展示效果」优先：每列在自身内容上左右各留约半个字，表格不铺满，
      装得下就停；表头照旧一行写全，不折行、不缩写。
   ② 屏宽紧张 → 以「多塞信息」优先：除备注外，左右余量归零，列宽 = 该列最多字数，
      一个字都不白占；实在装不下就整表右滑（不压扁内容，操作列钉在右边始终可点）。
   ③ 备注例外：任何档位都给固定宽度，不参与压缩。

   为什么不用 table-layout:auto：auto 的列宽随「最长那一行」浮动，客户名长一个字整列就变宽，
   表达不了「客户名称就 6 个字」。这里改 fixed，每列写死 em，em 直接读作「几个汉字」。

   依据（10-30 查生产库真实最长值）：
   计划名称 4 字 / 供应商 5 字 / 客户名称 6 字 / 车号 7 字符 / 周排序 3 字 / 次序 2 位 / 备注 最长 15 字。

   两个必须踩准的点（实测踩过）：
   a) 必须把上一段的 table-layout:auto 扳回 fixed，否则写死的列宽只是「建议值」，
      内容一长就被撑开（实测「状态」设 4.4em=59px 却被撑到 101px）。
   b) 单元格里的 input/select 必须 width:100% + min-width:0，否则它自带的 48px 最小宽
      会把列重新顶开（实测「次序」设 3.2em=50px 被顶到 61px）。
   另：每列实际渲染会比 em 换算值多约 5.5px（padding + 竖线边框），18 列累计约 100px，
      下面的列宽表已按实测反推，不是纯理论值。

   作用域仍只有 .tk-table.tk-edit.tk-tank，其他表格零影响。
   回退：删掉本段即回到上一段的 table-layout:auto 表现。 */

.tk-table.tk-edit.tk-tank{ --tt-gap:0em; table-layout:fixed !important; }

/* 表头：恢复一行写全（列宽已按表头字数留够），字号比正文小半号，避免把列宽顶破 */
.tk-table.tk-edit.tk-tank thead th{
  white-space:nowrap !important;
  font-size:calc(var(--tt-font) - 0.5px) !important;
  line-height:1.34;
}
/* 编辑框跟着格子走：这一条是「精确列宽」能不能成立的前提 */
.tk-table.tk-edit.tk-tank .tk-in,
.tk-table.tk-edit.tk-tank select.tk-in{
  min-width:0 !important;
  width:100% !important;
  box-sizing:border-box !important;
}
/* 数字框去掉右侧上下箭头，省下约 16px，窄列才放得下整个数字 */
.tk-table.tk-edit.tk-tank input[type=number]{-moz-appearance:textfield !important;}
.tk-table.tk-edit.tk-tank input[type=number]::-webkit-outer-spin-button,
.tk-table.tk-edit.tk-tank input[type=number]::-webkit-inner-spin-button{
  -webkit-appearance:none !important;margin:0 !important;
}

/* —— 精确列宽：em ＝ 汉字个数（备注单独用变量） ——
   次序2 / 计划名称4 / 供应商5 / 客户名称6 / 采购单价4 / 运价 / 销售单价4 / 毛利4 / 周排序3
   备注(变量) / 车号 / 装载4 / 签收4 / 损耗4 / 应收5.4 / 状态 / 票据 / 操作 */
.tk-table.tk-edit.tk-tank.bk-look col.c-drag   {width:22px !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-seq    {width:calc(1.9em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-plan   {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-sup    {width:calc(5.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-cus    {width:calc(6.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-num    {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-freight{width:calc(3.6em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-sale   {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-margin {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-week   {width:calc(3.8em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-ck     {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-note   {width:var(--tt-note) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-plate  {width:calc(4.1em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-qty    {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-sign   {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-loss   {width:calc(4.0em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-recv   {width:calc(5.4em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-st     {width:calc(3.8em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-docs   {width:calc(2.7em  + var(--tt-gap)) !important;}
.tk-table.tk-edit.tk-tank.bk-look col.c-ops    {width:calc(9.0em  + var(--tt-gap)) !important;}

/* fixed 布局下列高由 col 决定，解除上一段给状态/操作列的 px 最小宽 */
.tk-table.tk-edit.tk-tank td.tk-stage{min-width:0 !important;}
.tk-table.tk-edit.tk-tank td.tk-ops{min-width:0 !important;}
.tk-table.tk-edit.tk-tank td.tk-ops .tk-act{padding:0 3px !important;margin-left:1px !important;}
.tk-table.tk-edit.tk-tank td.tk-ops .tk-ops-w{gap:2px !important;}

/* 备注列：左对齐、可换行，超长折行不挤别的列 */
.tk-table.tk-edit.tk-tank th.col-note,
.tk-table.tk-edit.tk-tank td.col-note{
  width:var(--tt-note) !important;
  max-width:var(--tt-note) !important;
  min-width:var(--tt-note) !important;
}

/* 操作列钉在右边：窄屏必须右滑时，按钮始终点得到（滑到哪都能操作） */
.tk-table.tk-edit.tk-tank tbody td.tk-ops{
  position:sticky !important;
  right:0 !important;
  z-index:3;
  background:#fff;
  box-shadow:-6px 0 8px -6px rgba(23,52,80,.18);
}
.tk-table.tk-edit.tk-tank thead th:last-child{
  position:sticky !important;
  right:0 !important;
  z-index:7;
  background:#FAFCFE;
  box-shadow:-6px 0 8px -6px rgba(23,52,80,.18);
}
.tk-table.tk-edit.tk-tank tbody tr:hover td.tk-ops{background:#F3F9FF;}
.tk-table.tk-edit.tk-tank tbody tr.tk-late-row td.tk-ops{background:#FFFDF3;}

/* —— 档 1｜超宽屏 ≥1900：展示优先，每列左右各留约半个字（总宽 ≈1633，1920 屏留白 ~47） —— */
@media (min-width:1900px){
  .tk-table.tk-edit.tk-tank{--tt-font:15.5px;--tt-pad:4px;--tt-note:10em;--tt-gap:.7em;}
}
/* —— 档 2｜大屏 1680~1899：留一点点余量（总宽 ≈1417） —— */
@media (min-width:1680px) and (max-width:1899px){
  .tk-table.tk-edit.tk-tank{--tt-font:14.5px;--tt-pad:3px;--tt-note:9em;--tt-gap:.3em;}
}
/* —— 档 3｜1600~1679：余量减半（总宽 ≈1346） —— */
@media (min-width:1600px) and (max-width:1679px){
  .tk-table.tk-edit.tk-tank{--tt-font:14px;--tt-pad:2px;--tt-note:8em;--tt-gap:.25em;}
}
/* —— 档 4｜1440~1599：常规办公屏，左右内边距归零（总宽 ≈1185，1440 屏放得下） —— */
@media (min-width:1440px) and (max-width:1599px){
  .tk-table.tk-edit.tk-tank{--tt-font:13.5px;--tt-pad:0px;--tt-note:4.8em;--tt-gap:0em;}
}
/* —— 档 5｜≤1439：字号 13 保底，备注再收一点，余下的靠右滑（操作列钉在右边） —— */
@media (max-width:1439px){
  .tk-table.tk-edit.tk-tank{--tt-font:13px;--tt-pad:0px;--tt-note:4em;--tt-gap:0em;}
}
/* 内边距归零后编辑框自己留 2px，文字不贴边框 */
@media (max-width:1599px){
  .tk-table.tk-edit.tk-tank .tk-in,
  .tk-table.tk-edit.tk-tank select.tk-in{padding-left:2px !important;padding-right:2px !important;}
}

/* ================= 槽车销货单：操作列带上底色（10-30 用户反馈「操作这一栏没有颜色」） =================
   操作列 sticky 右钉时原本写死 background:#fff，把周次行底色盖断了，看起来白板一条。
   这里让操作列跟随周次行色系、各深半档：既跟整体风格连续，又能看出这是一条独立的操作带。
   悬停 / 迟签行各配对应色；表头同步加深一档，列的边界更清楚。 */
.tk-table.tk-edit.tk-tank thead th:last-child{background:#EFF5FC;}
.tk-table.tk-edit.tk-tank tbody tr.wkrow-none td.tk-ops,
.tk-table.tk-edit.tk-tank tbody tr.wkrow-last td.tk-ops{background:#F4F9FE;}
.tk-table.tk-edit.tk-tank tbody tr.wkrow-now td.tk-ops{background:#E7F1FD;}
.tk-table.tk-edit.tk-tank tbody tr.wkrow-next td.tk-ops{background:#DAE9FA;}
.tk-table.tk-edit.tk-tank tbody tr.wkrow-next2 td.tk-ops{background:#CCE1F8;}
.tk-table.tk-edit.tk-tank tbody tr.tk-late-row td.tk-ops{background:#FBF7E1;}
.tk-table.tk-edit.tk-tank tbody tr:hover td.tk-ops{background:#DDEBFB;}
.tk-table.tk-edit.tk-tank tbody tr.tk-late-row:hover td.tk-ops{background:#F6F0D8;}

/* ================= 客户往来桶账：押金「改」角标（10-30） =================
   与进销/统销销售「含/不含」角标同一套规格（小药丸、11px 高、圆角 5px）：
   实心浅绿 + 淡阴影，轻量不压数字；钉在押金格右上角，数字照常居右。 */
.ba-dep-badge{
  position:absolute;top:1px;right:2px;z-index:2;
  appearance:none;border:1px solid #12A06A;cursor:pointer;
  background:#12A06A;color:#fff;
  font-size:8px;line-height:9px;height:12px;padding:0 4px;
  border-radius:6px;letter-spacing:.2px;font-family:inherit;font-weight:600;
  box-shadow:0 1px 2px rgba(18,160,106,.25);
  transition:background .15s,border-color .15s;
}
.ba-dep-badge:hover{background:#0E8A5B;border-color:#0E8A5B;}
/* ================= 页面：主页（浅彩玻璃 v1433） =================
   桌面：浅彩渐变背景 + 白玻璃卡 + 内容居左；手机：独立移动版主页。
   背景为静态多层渐变，无图片、无滤镜动画，开销极低。 */
body.hp-home .content{
  background:
    radial-gradient(46rem 30rem at 8% -4%, rgba(93,140,255,.17), transparent 64%),
    radial-gradient(36rem 24rem at 97% 0%, rgba(255,153,61,.15), transparent 62%),
    radial-gradient(28rem 18rem at 72% 4%, rgba(255,205,80,.10), transparent 60%),
    radial-gradient(32rem 22rem at 55% 108%, rgba(255,167,98,.10), transparent 60%),
    linear-gradient(180deg,#F5F8FD 0%,#F3F1FA 100%);
}
.hp{animation:hpIn .28s ease both;}
@keyframes hpIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.hp{animation:none;}}

/* ---- 桌面版：内容靠左、占满可用宽度 ---- */
.hp-desk{max-width:1460px;margin:0;padding:2px 0 44px;}
.hp-mob{display:none;}

/* 问候区：蓝→橘大色块面板（参考 Payhx 概览面板） */
.hp-hero{
  position:relative;overflow:hidden;border-radius:20px;padding:32px 34px 30px;margin-bottom:16px;
  display:flex;align-items:stretch;justify-content:space-between;gap:24px;color:#fff;
  background:
    radial-gradient(30rem 20rem at 92% 128%, rgba(255,138,42,.92), transparent 62%),
    radial-gradient(22rem 15rem at 74% -36%, rgba(255,205,80,.62), transparent 62%),
    radial-gradient(42rem 28rem at 4% -24%, rgba(125,185,255,.60), transparent 64%),
    linear-gradient(112deg,#3B72EC 0%,#4F86F2 42%,#6E8FF4 66%,#DE8F4B 100%);
  box-shadow:0 16px 44px -8px rgba(62,110,220,.35);
}
/* 流动光带装饰：静态渐变椭圆，不占资源 */
.hp-hero::before{
  content:'';position:absolute;left:34%;top:-70%;width:34rem;height:32rem;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,255,255,.16),transparent 70%);
  transform:rotate(-18deg);
}
.hp-hero::after{
  content:'';position:absolute;right:-6rem;bottom:-58%;width:26rem;height:22rem;pointer-events:none;
  background:radial-gradient(closest-side,rgba(255,236,180,.30),transparent 70%);
  transform:rotate(14deg);
}
.hp-hero-l{position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-start;}
.hp-hero-eyebrow{margin:0;font-size:12px;letter-spacing:1.5px;color:rgba(255,255,255,.85);}
.hp-hero-l h1{margin:8px 0 0;font-size:30px;font-weight:700;letter-spacing:-.4px;}
.hp-hero-line{margin:10px 0 0;font-size:13px;color:rgba(255,255,255,.9);}
.hp-hero-line b{color:#fff;font-weight:600;font-variant-numeric:tabular-nums;}
.hp-hero-stat{
  margin-top:18px;border-radius:14px;padding:13px 18px 12px;
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.38);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
}
.hp-hero-stat span{display:block;font-size:11px;letter-spacing:.5px;color:rgba(255,255,255,.85);}
.hp-hero-stat b{display:block;margin-top:4px;font-size:26px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums;}
.hp-hero-stat em{display:block;margin-top:4px;font-style:normal;font-size:11px;color:rgba(255,255,255,.85);}
.hp-hero-date{
  position:relative;z-index:1;align-self:center;text-align:center;
  background:rgba(255,255,255,.94);color:#2A3850;border-radius:16px;padding:18px 26px 14px;
  box-shadow:0 10px 30px rgba(30,60,140,.25);flex:none;
}
.hp-hero-date b{display:block;font-size:34px;font-weight:700;letter-spacing:-1px;font-variant-numeric:tabular-nums;}
.hp-hero-date span{display:block;margin-top:3px;font-size:12px;color:#67748A;}
.hp-hero-date i{display:block;margin-top:9px;font-style:normal;font-size:11px;color:#fff;background:linear-gradient(120deg,#4C7EF3,#6C5CE7);border-radius:12px;padding:4px 12px;}
.hp-refresh{position:absolute;z-index:2;top:16px;right:16px;font-size:12px;color:#fff;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.4);border-radius:20px;padding:7px 16px;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
.hp-refresh:hover{background:rgba(255,255,255,.3);}
.hp-refresh:disabled{opacity:.55;cursor:default;}

/* 主体两栏 */
.hp-body{display:grid;grid-template-columns:minmax(0,1fr) 322px;gap:18px;align-items:start;}
.hp-main{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;min-width:0;}
.hp-side{display:flex;flex-direction:column;gap:18px;min-width:0;}

/* 玻璃卡片基底 */
.hp-card{
  background:rgba(255,255,255,.74);
  -webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);
  border:1px solid rgba(255,255,255,.92);border-radius:16px;padding:18px 20px 16px;min-width:0;
  box-shadow:0 6px 24px rgba(62,84,140,.07);
}
.hp-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;}
.hp-head h3{margin:0;font-size:14px;font-weight:600;color:#243447;letter-spacing:.2px;}
.hp-head a{font-size:12px;color:#8A97A6;}
.hp-head a:hover{color:#3E6FD8;}
.hp-sub{font-size:11.5px;color:#9AA6B4;}
.hp-empty{font-size:12.5px;color:#9AA6B4;padding:14px 0 16px;text-align:center;}
.hp-note{margin-top:10px;font-size:11.5px;color:#D9734A;}
.is-warn{color:#D9734A !important;}

/* 指标卡：淡彩晕染（蓝 / 紫 / 橘 / 黄）+ 玻璃底 */
.hp-kpis{grid-column:span 12;display:grid;grid-template-columns:repeat(4,1fr);gap:18px;}
.hp-kpi{
  background:rgba(255,255,255,.74);
  -webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);
  border:1px solid rgba(255,255,255,.92);border-radius:16px;padding:16px 18px 15px;
  box-shadow:0 6px 24px rgba(62,84,140,.07);
}
.hp-kpi:nth-child(1){background:linear-gradient(150deg,rgba(228,239,254,.96),rgba(255,255,255,.88) 62%);}
.hp-kpi:nth-child(2){background:linear-gradient(150deg,rgba(238,232,254,.96),rgba(255,255,255,.88) 62%);}
.hp-kpi:nth-child(3){background:linear-gradient(150deg,rgba(255,236,219,.96),rgba(255,255,255,.88) 62%);}
.hp-kpi:nth-child(4){background:linear-gradient(150deg,rgba(255,245,214,.96),rgba(255,255,255,.88) 62%);}
.hp-kpi-top{display:flex;align-items:center;gap:8px;}
.hp-kpi-ico{flex:none;width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center;}
.hp-kpi-ico svg{width:15px;height:15px;}
.hp-kpi-t{font-size:12px;color:#8391A1;letter-spacing:.2px;}
.hp-kpi-v{margin-top:10px;font-size:24px;font-weight:700;color:#1D2A3A;letter-spacing:-.4px;font-variant-numeric:tabular-nums;}
.hp-kpi-s{margin-top:7px;font-size:11.5px;color:#95A1AF;}
.hp-kpi-s em{font-style:normal;}
/* 蓝色横幅：今日销售玻璃卡 + 今日库存纯文字并排；库存文字块底边与玻璃卡下边缘对齐 */
.hp-hero-duo{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px 18px;margin-top:18px;}
.hp-hero-duo .hp-hero-stat{margin-top:0;flex:none;}
.hp-hero-inv{display:flex;flex-direction:column;gap:6px;min-width:0;padding-bottom:13px;}
.hp-inv-cap{font-size:11px;letter-spacing:.5px;color:rgba(255,255,255,.85);}
.hp-inv-list{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 13px;}
.hp-inv-item{display:inline-flex;align-items:baseline;gap:6px;white-space:nowrap;}
.hp-inv-item .nm{font-size:13px;font-weight:600;color:rgba(255,255,255,.92);letter-spacing:.3px;}
.hp-inv-item b{font-size:17px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:-.2px;}
.hp-inv-item .un{font-size:11.5px;color:rgba(255,255,255,.65);}
.hp-inv-sep{align-self:center;width:1px;height:14px;background:rgba(255,255,255,.38);flex:none;}
.hp-m-invrow{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 12px;margin-top:10px;}
.hp-m-invrow .hp-inv-cap{margin-right:2px;}
.hp-m-invrow .hp-inv-item .nm{font-size:12px;}
.hp-m-invrow .hp-inv-item b{font-size:14.5px;}
.hp-m-invrow .hp-inv-sep{height:11px;}
.hp-kpi-ico.blue{background:#EDF3FE;color:#4C7EF3;}
.hp-kpi-ico.green{background:#EAF7F0;color:#3E9E6B;}
.hp-kpi-ico.violet{background:#F1EDFE;color:#7A5AF8;}
.hp-kpi-ico.amber{background:#FEF4E6;color:#C98A28;}
.hp-kpi-ico.cyan{background:#E8F6F9;color:#1B96A8;}
.hp-kpi-ico.rose{background:#FDEDF0;color:#D2546C;}
.hp-kpi-ico.slate{background:#F0F3F7;color:#5E7085;}

/* 常用功能宫格：图标放大一档 */
.hp-quick{grid-column:span 12;}
.hp-quick-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;}
.hp-qi{display:flex;align-items:center;gap:13px;background:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.95);border-radius:14px;padding:14px 15px;cursor:pointer;text-align:left;font-family:inherit;transition:border-color .15s,background .15s,transform .12s,box-shadow .15s;box-shadow:0 2px 10px rgba(62,84,140,.05);}
.hp-qi:hover{border-color:#CFE0FA;background:#fff;transform:translateY(-1px);box-shadow:0 8px 20px rgba(62,84,140,.10);}
.hp-qi-ico{flex:none;width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;}
.hp-qi-ico svg{width:23px;height:23px;}
.hp-qi-txt{display:flex;flex-direction:column;gap:3px;min-width:0;}
.hp-qi-txt b{font-size:14px;font-weight:500;color:#2B3A4C;}
.hp-qi-txt em{font-style:normal;font-size:11px;color:#9AA6B4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* 外部系统：站点图标 + 名称 + 说明，点击弹层内打开 */
.hp-ext{grid-column:span 12;}
.hp-ext-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;}
.hp-x{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.66);border:1px solid rgba(255,255,255,.95);border-radius:14px;padding:12px 14px;cursor:pointer;text-align:left;font-family:inherit;box-shadow:0 2px 10px rgba(62,84,140,.05);transition:border-color .15s,background .15s,transform .12s,box-shadow .15s;}
.hp-x:hover{border-color:#CFE0FA;background:#fff;transform:translateY(-1px);box-shadow:0 8px 20px rgba(62,84,140,.12);}
.hp-x-ico{position:relative;flex:none;width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.hp-x-ico i{font-style:normal;font-size:18px;font-weight:700;color:#fff;letter-spacing:0;}
.hp-x-ico img{position:absolute;inset:7px;width:calc(100% - 14px);height:calc(100% - 14px);object-fit:contain;background:#fff;border-radius:9px;padding:2px;}
.hp-x-ico.cloud{background:linear-gradient(135deg,#3E7BF0,#2B57C4);}
.hp-x-ico.green{background:linear-gradient(135deg,#42B883,#2B9468);}
.hp-x-ico.violet{background:linear-gradient(135deg,#7A5AF8,#5738DB);}
.hp-x-ico.orange{background:linear-gradient(135deg,#F29A3E,#D9761F);}
.hp-x-ico.amber{background:linear-gradient(135deg,#F5C045,#DE9E1E);}
.hp-x-txt{display:flex;flex-direction:column;gap:3px;min-width:0;}
.hp-x-txt b{font-size:13.5px;font-weight:500;color:#2B3A4C;}
.hp-x-txt em{font-style:normal;font-size:11px;color:#93A0AE;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* 内嵌外部站点弹层 */
.hp-fmask{position:fixed;inset:0;z-index:3000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(16,26,46,.46);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;transition:opacity .18s;}
.hp-fmask.show{opacity:1;}
.hp-fwin{width:min(1380px,100%);height:min(88vh,960px);display:flex;flex-direction:column;overflow:hidden;background:#fff;border-radius:16px;box-shadow:0 30px 80px rgba(10,22,46,.42);}
.hp-fbar{flex:none;display:flex;align-items:center;gap:10px;padding:10px 12px 10px 16px;border-bottom:1px solid #EDF0F5;background:#FAFBFD;}
.hp-fdot{flex:none;width:8px;height:8px;border-radius:50%;background:#42B883;}
.hp-fbar b{font-size:13.5px;color:#243447;}
.hp-furl{flex:1;min-width:0;font-size:11.5px;color:#9AA6B4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-fbtn{font-size:12px;color:#4E5F73;background:#fff;border:1px solid #E3E9F2;border-radius:8px;padding:6px 12px;cursor:pointer;font-family:inherit;}
.hp-fbtn:hover{color:#3E6FD8;border-color:#CFDDF8;background:#F7FAFF;}
.hp-fclose{color:#8A97A6;}
.hp-fwin iframe{flex:1;width:100%;border:none;background:#fff;}
.hp-ftip{flex:none;padding:7px 14px;font-size:11px;color:#9AA6B4;background:#FAFBFD;border-top:1px solid #EDF0F5;}
@media(max-width:900px){
  .hp-ext-grid{grid-template-columns:repeat(2,1fr);}
  .hp-fmask{padding:10px;}
  .hp-fwin{height:92vh;}
}

/* 趋势 / 库存 / 流转 */
.hp-trend{grid-column:span 8;}
.hp-inv{grid-column:span 4;}
.hp-flow{grid-column:span 12;}
.hp-bars{display:flex;align-items:flex-end;gap:3px;height:118px;padding-top:4px;}
.hp-bar{flex:1;min-width:2px;background:linear-gradient(180deg,#F6B24B,#FBE3C2);border-radius:3px 3px 0 0;transition:filter .2s;}
.hp-bar:hover{filter:brightness(.94);}
.hp-bar.is-last{background:linear-gradient(180deg,#4C7EF3,#8AB0F7);}
.hp-axis{display:flex;justify-content:space-between;margin-top:8px;font-size:10.5px;color:#A8B3C0;font-variant-numeric:tabular-nums;}
.hp-inv-row{margin-bottom:11px;}
.hp-inv-top{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:#54657A;margin-bottom:6px;}
.hp-inv-top b{font-weight:600;color:#2C3C4F;font-variant-numeric:tabular-nums;}
.hp-inv-top b.is-low{color:#D9734A;}
.hp-track{height:6px;border-radius:4px;background:#EEF2F8;overflow:hidden;}
.hp-track i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#7EA6F6,#4C7EF3);}
.hp-inv-row:nth-of-type(2) .hp-track i{background:linear-gradient(90deg,#7CC9A4,#3E9E6B);}
.hp-inv-row:nth-of-type(3) .hp-track i{background:linear-gradient(90deg,#B4A8F4,#7A5AF8);}
.hp-inv-row:nth-of-type(4) .hp-track i{background:linear-gradient(90deg,#F0CE8E,#C98A28);}
.hp-flow-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.hp-flow-cell{background:rgba(248,250,253,.85);border:1px solid rgba(255,255,255,.9);border-radius:12px;padding:13px 6px;text-align:center;}
.hp-desk .hp-flow-cell:nth-child(1){background:linear-gradient(150deg,rgba(228,239,254,.9),rgba(255,255,255,.85) 65%);}
.hp-desk .hp-flow-cell:nth-child(2){background:linear-gradient(150deg,rgba(238,232,254,.9),rgba(255,255,255,.85) 65%);}
.hp-desk .hp-flow-cell:nth-child(3){background:linear-gradient(150deg,rgba(255,236,219,.9),rgba(255,255,255,.85) 65%);}
.hp-desk .hp-flow-cell:nth-child(4){background:linear-gradient(150deg,rgba(255,245,214,.9),rgba(255,255,255,.85) 65%);}
.hp-flow-n{font-size:21px;font-weight:600;color:#2A3B4E;font-variant-numeric:tabular-nums;}
.hp-flow-l{margin-top:4px;font-size:11.5px;color:#8C99A8;}

/* ---- 主页订单进度（11-03）：C类＝槽车在办 / T类＝桶装，SVG 圆环照参考图 ---- */
.hp-op-grid{grid-column:span 12;display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.hp-op{cursor:pointer;transition:transform .18s ease,box-shadow .18s ease;}
.hp-op:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(16,64,120,.10);}
.hp-op-body{display:flex;align-items:center;gap:20px;margin-top:2px;}
.hp-op-ring{position:relative;width:132px;height:132px;flex:none;}
.hp-op-ring svg{width:100%;height:100%;display:block;}
.hp-op-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;}
.hp-op-c b{font-size:27px;font-weight:700;color:#1D2A3A;line-height:1.05;font-variant-numeric:tabular-nums;}
.hp-op-c span{font-size:11.5px;color:#8C99A8;margin-top:2px;}
.hp-op-list{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0;}
.hp-op-item{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#5B6B7C;}
.hp-op-dot{width:9px;height:9px;border-radius:50%;flex:none;}
.hp-op-nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hp-op-item b{font-size:15px;color:#22303F;font-variant-numeric:tabular-nums;}
.hp-op-item em{font-style:normal;width:52px;text-align:right;color:#98A4B2;font-size:11.5px;font-variant-numeric:tabular-nums;}
@media(max-width:1100px){.hp-op-grid{grid-template-columns:1fr;}}
/* 应收账款 KPI：照「今日应收」参考图升级为橙色大数字 */
.hp-kpi.is-hero{background:linear-gradient(150deg,#FFF6E8,rgba(255,255,255,.88) 70%);border-color:#F2DDBA;}
.hp-kpi.is-hero .hp-kpi-v{font-size:31px;color:#E8890C;}
.hp-kpi.is-hero .hp-kpi-ico.amber{background:#FBE8CC;color:#D97A10;}
/* 手机版迷你圆环 */
.hp-m-op{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.hp-m-op-cell{background:rgba(248,250,253,.85);border:1px solid rgba(255,255,255,.9);border-radius:12px;padding:10px 8px;text-align:center;cursor:pointer;}
.hp-m-op-t{display:block;font-size:11px;font-weight:600;color:#3C4C60;margin-bottom:6px;}
.hp-m-op-ring{position:relative;width:86px;height:86px;margin:2px auto 6px;}
.hp-m-op-ring svg{width:100%;height:100%;display:block;}
.hp-m-op-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;}
.hp-m-op-c b{font-size:19px;font-weight:700;color:#1D2A3A;line-height:1;font-variant-numeric:tabular-nums;}
.hp-m-op-c span{font-size:9.5px;color:#8C99A8;}
.hp-m-op-items{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:#5B6B7C;}
.hp-m-op-items span{display:flex;align-items:center;gap:5px;justify-content:center;}
.hp-m-op-items i{width:7px;height:7px;border-radius:50%;flex:none;}
.hp-m-op-items b{color:#22303F;font-variant-numeric:tabular-nums;}

/* 右侧栏：日历 */
.hp-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.hp-cal-head b{font-size:13.5px;font-weight:600;color:#243447;}
.hp-cal-head button{width:26px;height:26px;border:1px solid #EAEEF4;background:#fff;border-radius:8px;color:#7C8998;font-size:15px;line-height:1;cursor:pointer;}
.hp-cal-head button:hover{color:#3E6FD8;border-color:#CFDDF8;}
.hp-cal-week{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:10.5px;color:#A0ACBA;margin-bottom:4px;}
.hp-cal-week .is-wknd{color:#C2CBD7;}
.hp-cal-days{display:grid;grid-template-columns:repeat(7,1fr);row-gap:3px;}
.hp-cal-days span{display:flex;align-items:center;justify-content:center;height:28px;font-size:12px;color:#4E5F73;border-radius:8px;font-variant-numeric:tabular-nums;}
.hp-cal-days span.is-out{color:#CBD3DC;}
.hp-cal-days button.hp-cd{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:44px;padding:3px 0 4px;background:none;border:none;border-radius:11px;cursor:pointer;font-family:inherit;-webkit-tap-highlight-color:transparent;}
.hp-cal-days button.hp-cd:hover{background:#F4F6FA;}
.hp-cal-days button.hp-cd b{font-size:13.5px;font-weight:600;color:#2A3646;line-height:1.25;font-variant-numeric:tabular-nums;}
.hp-cal-days button.hp-cd.is-wknd b{color:#AEB9C6;}
.hp-cal-days button.hp-cd i{font-style:normal;font-size:9.5px;line-height:1.2;color:#98A4B2;white-space:nowrap;}
.hp-cal-days button.hp-cd i.is-fest{color:#E5484D;}
.hp-cal-days button.hp-cd i.is-term{color:#E5484D;}
.hp-cal-days button.hp-cd i.is-fest2{color:#3E6FD8;}
.hp-cal-days button.hp-cd.is-today b u{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 3px;border-radius:50%;background:#E5484D;color:#fff;}
.hp-cal-days button.hp-cd.is-sel{background:#E5484D;box-shadow:0 4px 12px rgba(229,72,77,.35);}
.hp-cal-days button.hp-cd.is-sel b,.hp-cal-days button.hp-cd.is-sel i{color:#fff;}
.hp-cal-days button.hp-cd.is-sel:hover{background:#E5484D;}
.hp-cal-foot{margin-top:10px;padding-top:10px;border-top:1px solid #F3F5F8;font-size:11.5px;color:#8C99A8;min-height:2.4em;}

/* 右侧栏：今日待办 / 应收 */
.hp-side-todo{display:flex;align-items:flex-start;gap:9px;width:100%;text-align:left;background:none;border:none;border-top:1px solid #F3F5F8;padding:10px 2px;cursor:pointer;font-family:inherit;border-radius:8px;}
.hp-side-todo:first-of-type{border-top:none;padding-top:2px;}
.hp-side-todo:hover{background:rgba(237,243,254,.8);}
.hp-dot{flex:none;width:6px;height:6px;border-radius:50%;background:#8FB4F0;margin-top:6px;}
.hp-dot.is-warn{background:#E9A05B;}
.hp-st-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
.hp-st-main b{font-size:12.5px;font-weight:500;color:#2B3A4C;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-st-main em{font-style:normal;font-size:11px;color:#93A0AE;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-debt-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #F3F5F8;font-size:12.5px;}
.hp-debt-row:first-of-type{border-top:none;padding-top:2px;}
.hp-debt-name{color:#4E5F73;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-debt-amt{color:#2C3C4F;font-weight:600;font-variant-numeric:tabular-nums;}

/* ================= 手机版主页（一屏版 v1436） =================
   结构：渐变概览头（今日销售 + 三个小指标）→ 8 宫格 → 待办 / 流转双栏 → 库存
   整屏定高（100dvh 减顶栏），不产生滚动；矮屏再压缩一档。 */
.hp-mob{display:none;}
.hp-m-hero{
  position:relative;overflow:hidden;border-radius:18px;padding:14px 16px 12px;flex:none;color:#fff;
  background:linear-gradient(128deg,#3E6FE8 0%,#5B6CEE 48%,#7A5AF8 100%);
  box-shadow:0 10px 24px rgba(76,110,238,.30);
}
.hp-m-hero::after{content:'';position:absolute;right:-40px;top:-56px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.12);pointer-events:none;}
.hp-m-hero-top{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.hp-m-date{margin:0;font-size:10.5px;color:rgba(255,255,255,.80);letter-spacing:.4px;}
.hp-m-hero h1{margin:4px 0 0;font-size:19px;font-weight:700;letter-spacing:-.2px;}
.hp-m-refresh{flex:none;width:30px;height:30px;border-radius:50%;border:1px solid rgba(255,255,255,.40);background:rgba(255,255,255,.16);color:#fff;font-size:14px;cursor:pointer;}
.hp-m-refresh:disabled{opacity:.55;}
.hp-m-hero-main{position:relative;z-index:1;margin-top:9px;}
.hp-m-hero-main span{display:block;font-size:10px;color:rgba(255,255,255,.82);}
.hp-m-hero-main b{display:block;margin-top:2px;font-size:27px;font-weight:700;letter-spacing:-.6px;font-variant-numeric:tabular-nums;}
.hp-m-hero-main em{display:block;margin-top:1px;font-style:normal;font-size:10px;color:rgba(255,255,255,.80);}
.hp-m-mini{position:relative;z-index:1;display:flex;gap:7px;margin-top:10px;}
.hp-m-mini > div{flex:1;min-width:0;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);border-radius:10px;padding:6px 8px;}
.hp-m-mini span{display:block;font-size:9px;color:rgba(255,255,255,.80);white-space:nowrap;}
.hp-m-mini b{display:block;margin-top:2px;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;}
.hp-m-chips{position:relative;z-index:1;margin:9px 0 0;font-size:10px;color:rgba(255,255,255,.88);}
.hp-m-chips b{font-weight:600;font-variant-numeric:tabular-nums;}

.hp-m-panel{background:#fff;border:1px solid #EDF0F5;border-radius:14px;padding:10px 12px;flex:none;min-width:0;box-shadow:0 3px 14px rgba(62,84,140,.05);}
.hp-m-ph{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;}
.hp-m-ph b{font-size:12px;font-weight:600;color:#243447;}
.hp-m-ph a{font-size:10.5px;color:#8A97A6;}
.hp-m-ph span{font-size:9.5px;color:#9AA6B4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.hp-m-quick-panel{padding:6px;}
.hp-m-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;}
.hp-m-qi{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-family:inherit;font-size:10px;color:#3C4C60;padding:5px 2px;border-radius:10px;}
.hp-m-qi:active{background:#F4F8FE;}
.hp-m-qi-ico{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;}
.hp-m-qi-ico svg{width:18px;height:18px;}
.hp-m-qi-ico.blue{background:#EDF3FE;color:#4C7EF3;}
.hp-m-qi-ico.green{background:#EAF7F0;color:#3E9E6B;}
.hp-m-qi-ico.violet{background:#F1EDFE;color:#7A5AF8;}
.hp-m-qi-ico.amber{background:#FEF4E6;color:#C98A28;}
.hp-m-qi-ico.cyan{background:#E8F6F9;color:#1B96A8;}
.hp-m-qi-ico.rose{background:#FDEDF0;color:#D2546C;}
.hp-m-qi-ico.slate{background:#F0F3F7;color:#5E7085;}

.hp-m-row{display:flex;gap:8px;flex:1;min-height:0;}
.hp-m-row .hp-m-panel{overflow:hidden;}
.hp-m-todo{flex:1.18;}
.hp-m-flow{flex:1;}
.hp-m-todo .hp-side-todo{padding:6px 0;border-top:1px solid #F4F6FA;gap:7px;}
.hp-m-todo .hp-side-todo:first-of-type{border-top:none;padding-top:0;}
.hp-m-todo .hp-st-main b{font-size:11.5px;}
.hp-m-todo .hp-st-main em{font-size:10px;}
.hp-m-todo .hp-dot{margin-top:5px;}
.hp-m-flow-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.hp-m-fi{background:#F7FAFD;border-radius:9px;padding:7px 4px;text-align:center;}
.hp-m-fi b{display:block;font-size:15px;font-weight:600;color:#2A3B4E;font-variant-numeric:tabular-nums;}
.hp-m-fi span{display:block;margin-top:1px;font-size:9px;color:#8C99A8;}

.hp-m-inv{padding-bottom:9px;}
.hp-m-inv-row{display:flex;align-items:center;gap:8px;font-size:10.5px;color:#54657A;margin-top:5px;}
.hp-m-inv-row span{width:68px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-m-inv-row .hp-track{flex:1;height:5px;}
.hp-m-inv-row b{width:44px;flex:none;text-align:right;font-size:10.5px;color:#2C3C4F;font-variant-numeric:tabular-nums;}

/* 矮屏 / 小屏兜底：保持一屏不溢出 */
@media(max-width:760px) and (max-height:720px){
  .hp-m-hero{padding:11px 14px 10px;}
  .hp-m-hero h1{font-size:17px;}
  .hp-m-hero-main{margin-top:6px;}
  .hp-m-hero-main b{font-size:23px;}
  .hp-m-chips{display:none;}
  .hp-m-mini{margin-top:8px;}
  .hp-m-qi-ico{width:34px;height:34px;border-radius:11px;}
  .hp-m-qi-ico svg{width:16px;height:16px;}
  .hp-m-qi{font-size:9.5px;padding:4px 2px;}
  .hp-m-panel{padding:9px 11px;}
}

/* ---- 断点 ---- */
@media(max-width:1100px){
  .hp-body{grid-template-columns:1fr;}
  .hp-kpis{grid-template-columns:repeat(2,1fr);}
  .hp-trend,.hp-inv{grid-column:span 12;}
  .hp-quick-grid{grid-template-columns:repeat(3,1fr);}
  .hp-hero{padding:26px 24px;}
  .hp-hero-l h1{font-size:25px;}
  .hp-hero-date{display:none;}
}
@media(max-width:760px){
  .hp-desk{display:none;}
  .hp-mob{
    display:flex;flex-direction:column;gap:8px;
    height:calc(100vh - var(--appbar) - 20px);
    height:calc(100dvh - var(--appbar) - 20px);
    overflow:hidden;
  }
  body.hp-home .content{padding:10px 12px;overflow:hidden;}
}
@media(max-width:1100px) and (min-width:761px){
  .hp-desk{display:block;}
}

/* ============================================================
   主页一屏化排版（11-04，v1466）
   目标：整页一屏看完，不上下滚动；宽度显示效果优先——
   1600px 上限居中，不强行铺满；内容一项不减。
   布局：Hero 压扁 → 主列 [KPI → 行情+库存(弹性) → 订单进度 → 常用+外链]
         右栏 [日历 → 待办(内部滚动) → 应收Top5]
   三档：≥1200 高放宽 / 默认按 1080 / ≤880 高压缩；≤1100 宽回退滚动。
   ============================================================ */
@media (min-width:1101px){
  body.hp-home .content{display:flex;flex-direction:column;overflow:hidden;}
  .hp-desk{
    flex:1;min-height:0;display:flex;flex-direction:column;
    max-width:1600px;margin:0 auto;padding:0 0 8px;
  }

  /* ---- Hero 压扁：高度约砍半，今日销售/库存仍醒目 ---- */
  .hp-hero{flex:none;margin-bottom:12px;padding:18px 26px 16px;gap:20px;border-radius:18px;}
  .hp-hero-l h1{margin:5px 0 0;font-size:24px;}
  .hp-hero-line{margin:7px 0 0;font-size:12.5px;}
  .hp-hero-duo{margin-top:12px;gap:8px 16px;}
  .hp-hero-stat{margin-top:0;padding:10px 16px 9px;border-radius:12px;}
  .hp-hero-stat b{font-size:24px;}
  .hp-hero-stat em{margin-top:3px;}
  .hp-hero-inv{padding-bottom:2px;gap:4px;}
  .hp-hero-date{padding:12px 22px 10px;border-radius:14px;}
  .hp-hero-date b{font-size:30px;}
  .hp-hero-date i{margin-top:7px;}
  .hp-refresh{top:12px;right:14px;}

  /* ---- 主体两栏：行距统一 12，右栏待办吃弹性、内部滚动 ---- */
  .hp-body{flex:1;min-height:0;grid-template-columns:minmax(0,1fr) 308px;gap:12px;align-items:stretch;}
  .hp-side{gap:12px;min-height:0;}
  .hp-side-todos{flex:1;min-height:110px;overflow-y:auto;scrollbar-width:thin;}

  /* ---- 主列 grid areas 重排：行情+库存吃弹性高度 ---- */
  .hp-main{
    grid-template-rows:auto minmax(0,1fr) auto auto;
    grid-template-areas:
      "k k k k k k k k k k k k"
      "t t t t t t t t i i i i"
      "o o o o o o o o o o o o"
      "q q q q q e e e e e e e";
    gap:12px;min-height:0;
  }
  .hp-kpis{grid-area:k;gap:12px;}
  .hp-trend{grid-area:t;display:flex;flex-direction:column;min-height:0;}
  .hp-inv{grid-area:i;min-height:0;}
  .hp-op-grid{grid-area:o;}
  .hp-quick{grid-area:q;}
  .hp-ext{grid-area:e;display:flex;flex-direction:column;}
  .hp-ext-grid{flex:1;align-content:center;}

  /* ---- 卡片内边距与标题统一收紧 ---- */
  .hp-card{padding:12px 14px;border-radius:14px;}
  .hp-head{margin-bottom:10px;}

  /* ---- KPI：数字加大（该大的大） ---- */
  .hp-kpi{padding:12px 14px;}
  .hp-kpi-v{font-size:27px;margin-top:6px;}
  .hp-kpi-s{margin-top:5px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:33px;}

  /* ---- 近30天销售：柱区吃弹性高度，轴贴底 ---- */
  .hp-bars{flex:1;min-height:100px;max-height:380px;margin-top:auto;}
  .hp-axis{margin-top:8px;}

  /* ---- 库存分布：行均分弹性撑满卡片 ---- */
  .hp-inv{display:flex;flex-direction:column;}
  .hp-inv-row{flex:1;display:flex;flex-direction:column;justify-content:center;margin:0;min-height:0;}
  .hp-note{flex:none;margin-top:8px;}

  /* ---- 订单进度：圆环略收 ---- */
  .hp-op-grid{gap:12px;}
  .hp-op-ring{width:112px;height:112px;}
  .hp-op-c b{font-size:24px;}
  .hp-op-body{gap:16px;}

  /* ---- 底部导航条：常用(5×2) + 外部系统(横5) 并排一行 ---- */
  .hp-quick-grid{grid-template-columns:repeat(5,1fr);gap:8px;}
  .hp-qi{padding:8px 11px;gap:9px;border-radius:12px;}
  .hp-qi-ico{width:38px;height:38px;border-radius:11px;}
  .hp-qi-ico svg{width:19px;height:19px;}
  .hp-qi-txt b{font-size:13px;}
  .hp-ext-grid{grid-template-columns:repeat(5,1fr);gap:8px;}
  .hp-x{padding:8px 12px;gap:10px;}
  .hp-x-ico{width:38px;height:38px;border-radius:11px;}

  /* ---- 日历紧凑 ---- */
  .hp-cal-head{margin-bottom:8px;}
  .hp-cal-week{margin-bottom:3px;}
  .hp-cal-days{row-gap:2px;}
  .hp-cal-days span{height:26px;font-size:11.5px;}
  .hp-cal-days button.hp-cd{min-height:36px;}
  .hp-cal-foot{margin-top:8px;padding-top:8px;min-height:0;}

  /* 主列兜底：极端矮屏时主列内部滚动，页面本体仍不滚 */
  .hp-main{overflow-y:auto;scrollbar-width:thin;}
}

/* ---- 矮屏压缩档（笔记本 1366×768 / 1440×900 等） ---- */
@media (min-width:1101px) and (max-height:940px){
  .hp-hero{padding:13px 22px 11px;}
  .hp-hero-l h1{font-size:20px;}
  .hp-hero-line{margin:5px 0 0;font-size:12px;}
  .hp-hero-stat{padding:8px 13px 7px;}
  .hp-hero-stat b{font-size:20px;}
  .hp-hero-stat em,.hp-hero-line{font-size:11px;}
  .hp-hero-date{padding:9px 16px 8px;}
  .hp-hero-date b{font-size:24px;}
  .hp-kpi{padding:9px 12px;}
  .hp-kpi-v{font-size:22px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:27px;}
  .hp-op-ring{width:92px;height:92px;}
  .hp-op-c b{font-size:20px;}
  .hp-op-body{gap:12px;}
  .hp-qi{padding:6px 9px;gap:7px;}
  .hp-qi-ico{width:32px;height:32px;border-radius:9px;}
  .hp-qi-ico svg{width:16px;height:16px;}
  .hp-x{padding:6px 10px;}
  .hp-x-ico{width:32px;height:32px;border-radius:9px;}
  .hp-cal-days span{height:22px;}
  .hp-cal-days button.hp-cd{min-height:30px;}
  .hp-cal-days button.hp-cd b{font-size:12px;}
  .hp-bars{max-height:300px;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:10px;}
  .hp-hero{margin-bottom:10px;}
}

/* ---- 大屏放宽档（2560×1440 主力屏）：该大的大 ---- */
@media (min-width:1101px) and (min-height:1200px){
  .hp-hero{padding:24px 32px 20px;}
  .hp-hero-l h1{font-size:28px;}
  .hp-hero-stat{padding:13px 18px 11px;}
  .hp-hero-stat b{font-size:29px;}
  .hp-hero-date{padding:16px 26px 13px;}
  .hp-hero-date b{font-size:38px;}
  .hp-card{padding:16px 18px;}
  .hp-kpi{padding:16px 18px;}
  .hp-kpi-v{font-size:32px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:39px;}
  .hp-op-ring{width:134px;height:134px;}
  .hp-op-c b{font-size:28px;}
  .hp-qi{padding:12px 14px;gap:11px;}
  .hp-qi-ico{width:44px;height:44px;border-radius:13px;}
  .hp-qi-ico svg{width:21px;height:21px;}
  .hp-x{padding:12px 14px;}
  .hp-x-ico{width:42px;height:42px;border-radius:12px;}
  .hp-qi-txt b,.hp-x-txt b{font-size:14px;}
  .hp-cal-days span{height:30px;}
  .hp-cal-days button.hp-cd{min-height:42px;}
  .hp-bars{max-height:470px;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:16px;}
  .hp-hero{margin-bottom:16px;}
  .hp-head{margin-bottom:12px;}
}

/* ---- 矮屏补充压缩（900px 高的笔记本）：Hero 再压、日历/待办/应收更紧凑 ---- */
@media (min-width:1101px) and (max-height:940px) and (min-height:821px){
  .hp-hero{padding:11px 20px 10px;gap:16px;}
  .hp-hero-l h1{font-size:19px;margin:4px 0 0;}
  .hp-hero-line{margin:4px 0 0;}
  .hp-hero-duo{margin-top:8px;}
  .hp-hero-stat{padding:7px 12px 6px;}
  .hp-hero-stat b{font-size:19px;}
  .hp-hero-stat em{margin-top:2px;}
  .hp-hero-date{padding:8px 14px 7px;}
  .hp-hero-date b{font-size:22px;}
  .hp-hero-date i{margin-top:5px;padding:3px 10px;}
  .hp-kpi{padding:8px 11px;}
  .hp-kpi-v{font-size:21px;margin-top:4px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:25px;}
  .hp-kpi-s{margin-top:3px;}
  .hp-op-ring{width:84px;height:84px;}
  .hp-op-c b{font-size:18px;}
  .hp-op-body{gap:10px;}
  .hp-op-item{font-size:11.5px;}
  .hp-qi{padding:5px 8px;gap:6px;}
  .hp-qi-ico{width:30px;height:30px;border-radius:8px;}
  .hp-qi-ico svg{width:15px;height:15px;}
  .hp-x{padding:5px 8px;gap:8px;}
  .hp-x-ico{width:30px;height:30px;border-radius:8px;}
  .hp-x-txt b,.hp-qi-txt b{font-size:12.5px;}
  .hp-side-todo{padding:7px 2px;}
  .hp-st-main b{font-size:12px;}
  .hp-debt-row{padding:6px 0;font-size:12px;}
  .hp-cal-days span{height:20px;font-size:11px;}
  .hp-cal-days button.hp-cd{min-height:28px;}
  .hp-cal-days button.hp-cd b{font-size:11.5px;}
  .hp-cal-foot{margin-top:6px;padding-top:6px;font-size:11px;}
  .hp-side-todos{min-height:96px;}
  .hp-bars{max-height:250px;min-height:90px;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:9px;}
  .hp-hero{margin-bottom:9px;}
  .hp-card{padding:10px 12px;}
  .hp-head{margin-bottom:8px;}
}

/* ---- 矮屏右栏兜底：待办卡可压缩（不足时内部滚动），保证右栏恰好装满一屏 ---- */
@media (min-width:1101px) and (max-height:940px){
  .hp-side-todos{flex:1 1 0;min-height:56px;}
  .hp-side{overflow:hidden;}
}

/* ---- 一屏化补丁：底部网格轨道改 minmax(0,1fr)，防止功能块最小宽度撑破轨道、
        向右溢出叠到相邻卡片上（1920 实测复现） ---- */
@media (min-width:1101px){
  .hp-quick-grid{grid-template-columns:repeat(5,minmax(0,1fr));}
  .hp-ext-grid{grid-template-columns:repeat(5,minmax(0,1fr));}
  .hp-kpis{grid-template-columns:repeat(4,minmax(0,1fr));}
  .hp-qi,.hp-x{min-width:0;}
  .hp-op-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}

/* ---- 一屏化补丁2：常用功能块改竖排（图标上/名称下），窄轨道不再竖字；
        说明文字转悬停 title，信息不减 ---- */
@media (min-width:1101px){
  .hp-qi{flex-direction:column;justify-content:center;text-align:center;gap:5px;padding:8px 4px 7px;}
  .hp-qi-ico{width:34px;height:34px;border-radius:10px;}
  .hp-qi-ico svg{width:17px;height:17px;}
  .hp-qi-txt{align-items:center;gap:0;}
  .hp-qi-txt b{font-size:12.5px;white-space:nowrap;}
  .hp-qi-txt em{display:none;}
}

/* ---- 一屏化补丁3：外部系统块名称不折行（超长省略） ---- */
@media (min-width:1101px){
  .hp-x-txt b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;}
  .hp-x-txt{gap:2px;}
}

/* ============================================================
   一屏化修正（11-04，v1467）：修复矮视口下弹性卡内容溢出卡片底边、
   视觉压到下一行造成的「重影/重叠」。
   根因：1fr 行被压缩到小于卡片内容最小高度时，卡片 overflow 可见 → 出血。
   ============================================================ */
@media (min-width:1101px){
  /* 弹性卡裁剪出血：内容再挤也不许越过卡片边界 */
  .hp-trend,.hp-inv{overflow:hidden;}
  /* 弹性行保底 150px：不够挤时宁可主列内部滚动，也不许图表压成一条缝 */
  .hp-main{grid-template-rows:auto minmax(150px,1fr) auto auto;}
  .hp-bars{min-height:60px;}
}

/* ---- 超矮屏档（768 及以下高的笔记本：1366×768 / 1280×768 等） ---- */
@media (min-width:1101px) and (max-height:820px){
  .hp-hero{padding:9px 16px 8px;gap:12px;border-radius:14px;}
  .hp-hero-l h1{font-size:17px;margin:3px 0 0;}
  .hp-hero-line{margin:3px 0 0;font-size:11px;}
  .hp-hero-duo{margin-top:6px;gap:6px 12px;}
  .hp-hero-stat{padding:6px 10px 5px;border-radius:10px;}
  .hp-hero-stat b{font-size:17px;}
  .hp-hero-stat em{margin-top:1px;font-size:10.5px;}
  .hp-hero-inv{gap:3px;}
  .hp-hero-date{padding:7px 12px 6px;border-radius:11px;}
  .hp-hero-date b{font-size:19px;}
  .hp-hero-date i{margin-top:4px;padding:2px 8px;font-size:10.5px;}
  .hp-refresh{top:8px;right:10px;padding:4px 9px;font-size:11px;}
  .hp-kpi{padding:7px 10px;border-radius:11px;}
  .hp-kpi-v{font-size:19px;margin-top:3px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:23px;}
  .hp-kpi-s{margin-top:2px;font-size:10.5px;}
  .hp-card{padding:9px 11px;border-radius:12px;}
  .hp-head{margin-bottom:7px;}
  .hp-op-ring{width:74px;height:74px;}
  .hp-op-c b{font-size:16px;}
  .hp-op-body{gap:8px;}
  .hp-op-item{font-size:11px;}
  .hp-qi{padding:4px 6px 5px;gap:4px;}
  .hp-qi-ico{width:26px;height:26px;border-radius:7px;}
  .hp-qi-ico svg{width:13px;height:13px;}
  .hp-qi-txt b{font-size:11.5px;}
  .hp-x{padding:5px 7px;gap:7px;}
  .hp-x-ico{width:26px;height:26px;border-radius:7px;}
  .hp-x-txt b{font-size:11.5px;}
  .hp-x-txt em{font-size:10px;}
  .hp-side-todo{padding:6px 2px;}
  .hp-debt-row{padding:5px 0;font-size:11.5px;}
  .hp-cal-head{margin-bottom:6px;}
  .hp-cal-week{margin-bottom:2px;font-size:10.5px;}
  .hp-cal-days span{height:18px;font-size:10.5px;}
  .hp-cal-days button.hp-cd{min-height:26px;}
  .hp-cal-days button.hp-cd b{font-size:11px;}
  .hp-cal-foot{margin-top:5px;padding-top:5px;font-size:10.5px;}
  .hp-side-todos{min-height:40px;}
  .hp-bars{min-height:50px;max-height:200px;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:8px;}
  .hp-hero{margin-bottom:8px;}
  .hp-desk{padding-bottom:6px;}
}

/* ---- 821-940 高度档二次收紧（v1467）：900 高的屏也要完整一屏 ---- */
@media (min-width:1101px) and (max-height:940px) and (min-height:821px){
  .hp-hero{padding:8px 16px 7px;gap:12px;}
  .hp-hero-l h1{font-size:17px;margin:3px 0 0;}
  .hp-hero-line{margin:3px 0 0;}
  .hp-hero-duo{margin-top:6px;}
  .hp-hero-stat{padding:6px 11px 5px;}
  .hp-hero-stat b{font-size:17px;}
  .hp-hero-stat em{margin-top:2px;}
  .hp-hero-date{padding:7px 12px 6px;}
  .hp-hero-date b{font-size:19px;}
  .hp-hero-date i{margin-top:4px;}
  .hp-kpi{padding:6px 10px;}
  .hp-kpi-v{font-size:19px;margin-top:3px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:23px;}
  .hp-kpi-s{margin-top:2px;}
  .hp-op-ring{width:72px;height:72px;}
  .hp-op-c b{font-size:16px;}
  .hp-op-body{gap:9px;}
  .hp-qi{padding:4px 7px 5px;gap:4px;}
  .hp-qi-ico{width:27px;height:27px;}
  .hp-qi-ico svg{width:14px;height:14px;}
  .hp-x{padding:4px 7px;}
  .hp-x-ico{width:27px;height:27px;}
  .hp-side-todo{padding:6px 2px;}
  .hp-debt-row{padding:5px 0;font-size:11.5px;}
  .hp-cal-days span{height:19px;}
  .hp-cal-days button.hp-cd{min-height:27px;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:8px;}
  .hp-hero{margin-bottom:8px;}
  .hp-card{padding:9px 12px;}
  .hp-head{margin-bottom:7px;}
  .hp-bars{min-height:50px;}
  .hp-main{grid-template-rows:auto minmax(130px,1fr) auto auto;}
}

/* ---- ≤820 高度档深度压缩（v1467 二次）：1366×768 等经典笔记本完整一屏 ---- */
@media (min-width:1101px) and (max-height:820px){
  .hp-hero{padding:7px 14px 6px;gap:10px;}
  .hp-hero-l h1{font-size:15.5px;margin:2px 0 0;}
  .hp-hero-line{margin:2px 0 0;font-size:10.5px;}
  .hp-hero-duo{margin-top:5px;gap:4px 10px;}
  .hp-hero-stat{padding:5px 9px 4px;}
  .hp-hero-stat b{font-size:15px;}
  .hp-hero-stat em{font-size:10px;margin-top:1px;}
  .hp-hero-date{padding:6px 10px 5px;}
  .hp-hero-date b{font-size:17px;}
  .hp-hero-date i{margin-top:3px;padding:2px 7px;font-size:10px;}
  .hp-kpi{padding:5px 9px;}
  .hp-kpi-v{font-size:17px;margin-top:2px;}
  .hp-kpi.is-hero .hp-kpi-v{font-size:21px;}
  .hp-kpi-s{margin-top:1px;font-size:10px;}
  .hp-card{padding:8px 10px;}
  .hp-head{margin-bottom:6px;}
  .hp-op-ring{width:62px;height:62px;}
  .hp-op-c b{font-size:14px;}
  .hp-op-body{gap:7px;}
  .hp-op-item{font-size:10.5px;}
  .hp-qi{padding:3px 5px 4px;gap:3px;}
  .hp-qi-ico{width:23px;height:23px;border-radius:6px;}
  .hp-qi-ico svg{width:12px;height:12px;}
  .hp-qi-txt b{font-size:11px;}
  .hp-x{padding:4px 6px;gap:6px;}
  .hp-x-ico{width:23px;height:23px;border-radius:6px;}
  .hp-x-txt b{font-size:11px;}
  .hp-bars{min-height:40px;max-height:170px;}
  .hp-main{grid-template-rows:auto minmax(115px,1fr) auto auto;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:7px;}
  .hp-hero{margin-bottom:7px;}
  .hp-desk{padding-bottom:4px;}
}

/* ---- ≤820 档最终微调：收掉最后的 22px ---- */
@media (min-width:1101px) and (max-height:820px){
  .hp-hero-l h1{font-size:15px;}
  .hp-hero-duo{margin-top:4px;}
  .hp-op-body{gap:6px;}
  .hp-op-item{line-height:1.35;}
  .hp-qi{padding:2px 4px 3px;}
  .hp-qi-ico{width:22px;height:22px;}
  .hp-qi-ico svg{width:11px;height:11px;}
  .hp-bars{min-height:32px;}
  .hp-main{grid-template-rows:auto minmax(105px,1fr) auto auto;}
}

/* ---- ≤820 档收尾：抹掉最后 14px ---- */
@media (min-width:1101px) and (max-height:820px){
  .hp-bars{min-height:28px;}
  .hp-main{grid-template-rows:auto minmax(100px,1fr) auto auto;}
  .hp-main,.hp-body,.hp-side,.hp-kpis,.hp-op-grid{gap:6px;}
  .hp-hero{margin-bottom:6px;}
  .hp-desk{padding-bottom:2px;}
  .hp-op-body{gap:5px;}
}

/* ============================================================
   主页模块换位（v1469）：常用功能+外部系统 上移到 KPI 下方（点击更顺手），
   近30天销售+库存分布 移到底部作为弹性行吃剩余高度。
   ============================================================ */
@media (min-width:1101px){
  .hp-main{
    grid-template-rows:auto auto auto minmax(150px,1fr);
    grid-template-areas:
      "k k k k k k k k k k k k"
      "q q q q q e e e e e e e"
      "o o o o o o o o o o o o"
      "t t t t t t t t i i i i";
  }
  /* 底部弹性行：图表贴卡片底，库存行均分撑满 */
  .hp-bars{margin-top:auto;}
}
@media (min-width:1101px) and (max-height:940px) and (min-height:821px){
  .hp-main{grid-template-rows:auto auto auto minmax(130px,1fr);}
}
@media (min-width:1101px) and (max-height:820px){
  .hp-main{grid-template-rows:auto auto auto minmax(100px,1fr);}
}

/* ---- 主页靠左（v1470）：不再 1600 居中，内容贴左侧排布 ---- */
@media (min-width:1101px){
  .hp-desk{margin:0;max-width:none;}
}

/* ---- 主页居左但保留 1600 上限（v1471）：贴左排布、右侧自然留白，不拉伸防变形 ---- */
@media (min-width:1101px){
  .hp-desk{margin:0;max-width:1600px;}
}

/* ---- 实时价格看板日期切换条（v1482e）：看/填任何一天的报价，行常驻只流转数据 ---- */
.pb-daybar{display:flex;gap:8px;align-items:center;margin:2px 0 12px;}
.pb-daybar input[type="date"]{height:32px;border:1px solid #D9E2EA;border-radius:8px;padding:0 10px;font:inherit;font-size:13.5px;background:#fff;color:#2B3E52;}
.pb-daybar input[type="date"]:focus{outline:none;border-color:#1E9FFF;box-shadow:0 0 0 2px rgba(30,159,255,.14);}
.pb-daybar .btn{height:32px;padding:0 12px;font-size:13.5px;}

/* ---- 今日新流转行高亮（收货款 / 付运费 / 分装记录，11-05 用户要求：今天刚流转进来的单据整行亮绿提醒） ----
   绿色取系统成功色系（tag-green #E9FBF2/#12805C）加深一档，既协调又足够醒目；行首加绿色竖条强提示 */
.tk-table tbody tr.tk-flow-new > td{background:#DCF3E6 !important;}
.tk-table tbody tr.tk-flow-new:hover > td{background:#CBEDDA !important;}
.tk-table tbody tr.tk-flow-new > td:first-child{box-shadow:inset 3px 0 0 #17A56B;}
.tk-flow-badge{display:inline-block;margin-left:5px;padding:1px 6px;border-radius:9px;font-size:10.5px;font-weight:600;
  background:#DFF6E9;color:#12805C;border:1px solid #A9E2C2;vertical-align:middle;white-space:nowrap;line-height:15px;}
/* 收货款页「今日流转」置顶分组头：组名带绿点强调 */
.tk-grp.tk-grp-new .tk-grp-nm{color:#12805C;}
.tk-grp.tk-grp-new .tk-grp-nm::before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;
  background:#17A56B;margin-right:6px;vertical-align:2px;}

/* 付运费 · 超损扣款只读态（11-05）：一提交结算就锁定，灰底不可点，悬停看原因 */
.veh-deduct-ro{display:inline-block;min-width:88px;text-align:right;padding:2px 7px;border:1px solid #E3EAF2;
  border-radius:6px;background:#F5F8FB;color:#5A6B7C;font-variant-numeric:tabular-nums;font-size:13px;
  cursor:help;user-select:none;}

/* ---- 付运费 · 单号列左对齐 + 徽标紧凑化（11-05 用户要求）：徽标不再撑高行，整行对得齐 ----
   全局列宽层有 table>tbody>tr>td 的 text-align:center !important，这里必须同带 !important 才压得住 */
.tk-table th.tk-code,.tk-table td.tk-code{text-align:left !important;}
/* 单号列定宽（11-05 用户要求）：有「今日流转」角标的表和没有的，列宽一模一样，角标不再撑宽整张表 */
.tk-table th.tk-code{width:132px;min-width:132px;}
.tk-table td.tk-code{white-space:nowrap;}
.tk-table td.tk-code .tag{height:18px;padding:0 7px;font-size:11px;vertical-align:middle;}
/* ---- 付运费 · 超损扣款「手动」角标（11-05 用户要求）：钉在单元格右上角，不再挤压金额/输入框，整行保持对齐 ----
   该列所有行统一预留角标位（padding-top），有无「手动」行高一致；特异性要盖过 .tk-table.tk-tank tbody td 的 padding */
.tk-table.tk-tank tbody td.tk-deduct-cell{position:relative;padding-top:15px;}
/* 输入框与锁定态金额框（.veh-deduct-ro 22px）同高，可编辑行与锁定行行高一致 */
.tk-table.tk-tank tbody td.tk-deduct-cell input.veh-deduct{height:22px;line-height:20px;}
.tk-manual-flag{position:absolute;top:0;right:4px;display:inline-block;padding:0 5px;border-radius:8px;
  font-size:10.5px;line-height:13px;font-weight:600;background:#FFF6E5;color:#B7791F;border:1px solid #EBCF9E;white-space:nowrap;}

/* ===== 槽车销货单 · 签收数量格（11-07 用户要求）=====
   只保留一层效果：填了数 → 暖黄色框 + 深色加粗字；没填 → 普通输入框（去掉虚线，去掉角标）。
   未填时仅留极淡灰字占位（装载吨位）作参考，不写入 signed_ok，库存 / 应收 / 运费 / 审核闸门口径不变。 */
.tk-table.tk-edit.tk-tank td.tk-sign{padding:3px 5px !important;}
.tk-table.tk-edit.tk-tank .tk-signed{position:relative;display:block;}
.tk-table.tk-edit.tk-tank .tk-signed .tk-in{
  padding:2px 4px !important;text-align:center;
  font-variant-numeric:tabular-nums;transition:color .15s,background .15s,box-shadow .15s;
}
.tk-table.tk-edit.tk-tank .tk-signed .tk-in::placeholder{color:#BFCBD7;opacity:1;font-weight:400;}
.tk-table.tk-edit.tk-tank .tk-signed.auto .tk-in{
  color:#1F3B57;background:transparent;border-bottom:0;box-shadow:none;
}
.tk-table.tk-edit.tk-tank .tk-signed.auto .tk-in:hover{background:#F2F8FE;}
.tk-table.tk-edit.tk-tank .tk-signed.auto .tk-in:focus{background:#F7FBFF;}
.tk-table.tk-edit.tk-tank .tk-signed.man .tk-in{
  color:#1F3B57;font-weight:600;
  background:#FFF9F0;box-shadow:inset 0 0 0 1px #F2D6A4;
}
/* 已锁定（已审核）行：与桶装一致，压淡到禁用态 */
.tk-table.tk-edit.tk-tank .tk-signed .tk-in:disabled{color:#B9C6D2;background:transparent;border-bottom:1px solid transparent;box-shadow:none;}

/* ===== 库存 · 桶装归档：单号列「子单」角标（11-07 用户要求）=====
   原来「└ 子单」跟单号写在同一行，会把这一行的单号整体往左顶，和别的行对不齐。
   改成绝对定位钉在格子右上角：不占行内宽度，单号位置与其它行完全一致。
   同时给归档表首列一个宽度下限，保证角标不会压到单号上。 */
.tk-table.bk-look.bk-first th:first-child,
.tk-table.bk-look.bk-first td:first-child{min-width:206px;}
/* 11-08 分装记录：这张表首列是「次序」不是单号/桶型，不需要 206px 那么宽，
   改成四个字的占位（4em 字宽 + 左右各 12px padding；.tk-table 的单元格 padding 是 !important 的 12px），
   比上面那条选择器更具体，只作用于带 .tk-seq4 的序号列 */
.tk-table.bk-look.bk-first th.tk-seq4:first-child,
.tk-table.bk-look.bk-first td.bk-seq:first-child{min-width:calc(4em + 24px);width:calc(4em + 24px);}
.tk-sub-cell{position:relative;}
.tk-sub-tag{
  position:absolute;top:1px;right:2px;
  font-style:normal;font-size:9.5px;line-height:1;letter-spacing:0;font-weight:600;
  padding:1px 3px;border-radius:4px;white-space:nowrap;
  color:#B26A00;background:#FFEFD6;border:1px solid #F0D3A0;
}

/* ===== 财务总览（11-07 合并原「资金」页签）：账户卡第二副行 + 账龄/趋势摘要条 =====
   原来「总览」和「资金」各画一遍 7 张账户卡；合并后只画一份，卡片多一行「支行 · 卡号后四位」。
   账龄 / 近 8 周收付默认收成一条摘要（.fin-fold），点「展开」才显示原两栏面板。 */
.fin-cards{grid-template-columns:repeat(auto-fit,minmax(176px,1fr));}
.fin-acc .fa-hd b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fin-acc .fa-hd .tag{flex:none;}
.fin-acc .fa-s2{margin-top:2px;font-size:11.5px;line-height:1.5;color:#9AAABB;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fin-acc-all{background:#F8FBFF;}
.fin-fold{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:8px 14px;
  background:#fff;border:1px solid var(--line);border-radius:10px;font-size:13px;color:#5B6B7C;}
.fin-fold .ff-k{white-space:nowrap;}
.fin-fold .ff-k b{color:#12365F;font-weight:600;font-variant-numeric:tabular-nums;}

/* ===== 损耗分析（桶装 / 槽车）：KPI 色条 + 图表卡（11-07 优化） =====
   KPI 卡左侧一条渐变竖条区分环节：蓝＝分装/装载，橙＝损耗偏高，青＝签收/升水。
   图表卡统一 252px 高，标题右边放口径说明，避免图表堆砌却看不懂。 */
.loss-kpi{position:relative;padding-left:17px;overflow:hidden;}
.loss-kpi::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:2px;
  background:linear-gradient(180deg,#8FCBF5,#0B7FDB);}
.loss-kpi.warm::before{background:linear-gradient(180deg,#FFC38A,#D9531E);}
.loss-kpi.cool::before{background:linear-gradient(180deg,#7FE0D0,#0F9B7E);}
.loss-kpi.violet::before{background:linear-gradient(180deg,#C4B4F7,#7C5CE0);}
.loss-chart{height:252px;padding:2px 6px 0;}
.loss-chart .loss-empty{height:100%;display:flex;align-items:center;justify-content:center;
  color:#8C9AA8;font-size:12.5px;text-align:center;padding:0 18px;line-height:1.7;}
.loss-tag{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;color:#8C9AA8;}
.loss-tag i{width:7px;height:7px;border-radius:2px;display:inline-block;font-style:normal;}

/* ===== 财务总览视觉重设计（11-08 用户要求：彩色 + 磨砂 + 多图表）=====
   作用域全部收在 #finBody .fin-ov 内，不影响其它页面的 .kpi / .card / 表格。
   只改观感：浅色磨砂玻璃卡（半透明白 + backdrop blur + 高光描边 + 柔光投影）、
   四色 KPI、彩色占比条、ECharts 图表容器。金额与口径零改动。 */
#finBody .fin-ov{position:relative;isolation:isolate;}
#finBody .fin-ov::before{
  content:'';position:absolute;left:-8px;right:-8px;top:-16px;height:440px;z-index:-1;border-radius:26px;pointer-events:none;
  background:
    radial-gradient(560px 240px at 6% -6%, rgba(24,95,165,.16), transparent 68%),
    radial-gradient(520px 220px at 46% -14%, rgba(83,74,183,.13), transparent 70%),
    radial-gradient(460px 210px at 88% -4%, rgba(15,110,86,.12), transparent 68%),
    linear-gradient(180deg,#F6FBFF 0%, rgba(246,251,255,0) 80%);
}
#finBody .fov-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px;}
#finBody .fov-kpi{
  position:relative;overflow:hidden;border-radius:16px;padding:13px 16px 12px;min-height:106px;
  background:linear-gradient(148deg, rgba(255,255,255,.95) 0%, rgba(255,255,255,.68) 58%, rgba(255,255,255,.52) 100%);
  backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);
  border:1px solid rgba(255,255,255,.92);
  box-shadow:0 0 0 .5px rgba(140,175,210,.28), 0 12px 26px -18px rgba(17,58,102,.55), inset 0 1px 0 rgba(255,255,255,.95);
  transition:transform .18s ease, box-shadow .18s ease;
}
#finBody .fov-kpi:hover{transform:translateY(-2px);
  box-shadow:0 0 0 .5px rgba(140,175,210,.35), 0 18px 34px -20px rgba(17,58,102,.6), inset 0 1px 0 #fff;}
#finBody .fov-kpi .fk-glow{position:absolute;right:-28px;top:-46px;width:140px;height:140px;border-radius:50%;filter:blur(8px);opacity:.55;}
#finBody .fov-kpi .fk-t{position:relative;font-size:12.5px;color:#5B6B7C;letter-spacing:.2px;}
#finBody .fov-kpi .fk-v{position:relative;margin-top:6px;font-size:25px;font-weight:700;color:#12365F;
  letter-spacing:.2px;font-variant-numeric:tabular-nums;line-height:1.15;}
#finBody .fov-kpi .fk-v small{font-size:12px;font-weight:400;color:#8C9AA8;margin-left:3px;}
#finBody .fov-kpi .fk-s{position:relative;margin-top:5px;font-size:11.5px;color:#8C9AA8;padding-right:92px;line-height:1.45;}
#finBody .fov-kpi .fk-art{position:absolute;right:14px;bottom:11px;display:flex;align-items:flex-end;gap:3px;}
#finBody .fov-kpi.k-recv{border-top:2px solid #185FA5;}
#finBody .fov-kpi.k-recv .fk-glow{background:radial-gradient(circle, rgba(24,95,165,.28), transparent 70%);}
#finBody .fov-kpi.k-recv .fk-v{color:#0C447C;}
#finBody .fov-kpi.k-pay{border-top:2px solid #BA7517;}
#finBody .fov-kpi.k-pay .fk-glow{background:radial-gradient(circle, rgba(186,117,23,.26), transparent 70%);}
#finBody .fov-kpi.k-pay .fk-v{color:#7A4A0B;}
#finBody .fov-kpi.k-fund{border-top:2px solid #0F6E56;}
#finBody .fov-kpi.k-fund .fk-glow{background:radial-gradient(circle, rgba(15,110,86,.24), transparent 70%);}
#finBody .fov-kpi.k-fund .fk-v{color:#085041;}
#finBody .fov-kpi.k-net{border-top:2px solid #534AB7;}
#finBody .fov-kpi.k-net .fk-glow{background:radial-gradient(circle, rgba(83,74,183,.26), transparent 70%);}
#finBody .fov-kpi.k-net .fk-v{color:#3C3489;}
#finBody .fov-kpi.k-net.neg{border-top-color:#C53030;}
#finBody .fov-kpi.k-net.neg .fk-v{color:#A32D2D;}
#finBody .fk-pbar{width:88px;height:8px;border-radius:5px;background:rgba(186,117,23,.16);overflow:hidden;}
#finBody .fk-pbar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#F5C173,#BA7517);}
#finBody .fov-kpi.k-pay .fk-art{flex-direction:column;align-items:flex-end;gap:4px;}
#finBody .fk-pcap{font-size:10.5px;color:#A2763C;font-variant-numeric:tabular-nums;}
#finBody .fk-bars{display:flex;align-items:flex-end;gap:3px;height:28px;}
#finBody .fk-bars i{display:block;width:7px;border-radius:3px;opacity:.92;}

#finBody .fov-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;margin-bottom:12px;}
#finBody .fov-card{position:relative;border-radius:16px;padding:12px 14px 10px;
  background:linear-gradient(158deg, rgba(255,255,255,.96) 0%, rgba(250,253,255,.78) 100%);
  backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);
  border:1px solid rgba(255,255,255,.92);
  box-shadow:0 0 0 .5px rgba(140,175,210,.25), 0 14px 30px -22px rgba(17,58,102,.5), inset 0 1px 0 rgba(255,255,255,.95);}
#finBody .fov-c5{grid-column:span 5;}
#finBody .fov-c7{grid-column:span 7;}
#finBody .fc-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:4px;}
#finBody .fc-hd b{font-size:13.5px;color:#12365F;letter-spacing:.2px;}
#finBody .fc-hd > span{font-size:11.5px;color:#8C9AA8;}
#finBody .fc-lg{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:#8C9AA8;margin-left:auto;}
#finBody .fc-lg i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-left:9px;}
#finBody .fc-lg i:first-child{margin-left:0;}
#finBody .fc-kpi{margin-left:auto;font-size:11.5px;color:#8C9AA8;font-variant-numeric:tabular-nums;}
#finBody .fc-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:4px;align-items:center;}
#finBody .fov-ch{width:100%;}
#finBody .fov-lg{list-style:none;margin:0;padding:0 2px 0 0;display:flex;flex-direction:column;gap:4px;}
#finBody .fov-lg li{display:flex;align-items:center;gap:7px;font-size:11.5px;color:#5B6B7C;
  padding:3px 7px;border-radius:8px;transition:background .15s;}
#finBody .fov-lg li[data-acc]{cursor:pointer;}
#finBody .fov-lg li[data-acc]:hover{background:rgba(24,95,165,.06);}
#finBody .fov-lg li.on{background:rgba(24,95,165,.10);box-shadow:inset 0 0 0 1px rgba(24,95,165,.18);}
#finBody .fov-lg li i{width:8px;height:8px;border-radius:2px;flex:none;}
#finBody .fov-lg .lg-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#finBody .fov-lg b{font-weight:600;color:#12365F;font-variant-numeric:tabular-nums;}
#finBody .fov-lg em{font-style:normal;width:32px;text-align:right;color:#9AAABB;font-variant-numeric:tabular-nums;}

#finBody .fov-accs{margin-bottom:12px;}
#finBody .fov-accs-hd{display:flex;align-items:center;gap:10px;padding:0 4px 8px;}
#finBody .fov-accs-hd b{font-size:13.5px;color:#12365F;}
#finBody .fov-accs-hd span{font-size:11.5px;color:#8C9AA8;}
#finBody .fov-acc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:10px;}
#finBody .fov-acc{position:relative;overflow:hidden;border-radius:14px;padding:12px 14px 11px;cursor:pointer;
  background:linear-gradient(155deg, rgba(255,255,255,.95), rgba(250,253,255,.70));
  border:1px solid rgba(255,255,255,.9);
  box-shadow:0 0 0 .5px rgba(140,175,210,.25), 0 10px 24px -20px rgba(17,58,102,.5);
  transition:transform .16s ease, box-shadow .16s ease;}
#finBody .fov-acc:hover{transform:translateY(-2px);
  box-shadow:0 0 0 .5px rgba(24,95,165,.3), 0 16px 30px -20px rgba(17,58,102,.55);}
#finBody .fov-acc.on{background:linear-gradient(155deg,#fff,rgba(232,243,255,.82));
  box-shadow:0 0 0 1.5px #185FA5, 0 16px 30px -20px rgba(17,58,102,.55);}
#finBody .fov-acc .fa-hd{display:flex;align-items:center;gap:6px;font-size:13px;color:#22384D;}
#finBody .fov-acc .fa-hd b{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#finBody .fov-acc .fa-hd .tag{flex:none;}
#finBody .fov-acc .fa-v{margin-top:5px;font-size:20px;font-weight:700;color:#12365F;font-variant-numeric:tabular-nums;line-height:1.2;}
#finBody .fov-acc .fa-v em{font-style:normal;font-size:11px;color:#9AAABB;margin-left:3px;font-weight:400;}
#finBody .fov-acc .fa-s{margin-top:3px;font-size:11.5px;color:#8C9AA8;font-variant-numeric:tabular-nums;}
#finBody .fov-acc .fa-s2{margin-top:2px;font-size:11px;color:#A9B7C5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#finBody .fov-acc .fa-eq{margin-top:8px;height:4px;border-radius:3px;background:#EEF4FA;overflow:hidden;}
#finBody .fov-acc .fa-eq i{display:block;height:100%;border-radius:3px;}

@media (max-width:1400px){#finBody .fov-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:1180px){#finBody .fov-c5,#finBody .fov-c7{grid-column:span 12;}}
@media (max-width:720px){#finBody .fc-split{grid-template-columns:1fr;}}

/* ================= 主页磨砂升级 v1485a（11-08）=================
   观感对齐财务总览：磨砂玻璃卡（0.5px 描边 + inset 高光 + 深投影）+
   KPI 顶部彩条 / 右上光晕 / 右下迷你图表；30 天销售与欠款 Top5 升级 ECharts。
   本段全部追加式覆盖，不改上面原有 hp 段；手机版 hp-mob 不受影响。 */
.hp .hp-card{
  background:linear-gradient(158deg, rgba(255,255,255,.96) 0%, rgba(250,253,255,.80) 100%);
  -webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);
  border:1px solid rgba(255,255,255,.92);
  box-shadow:0 0 0 .5px rgba(140,175,210,.25), 0 14px 30px -22px rgba(17,58,102,.5), inset 0 1px 0 rgba(255,255,255,.95);
}
.hp .hp-kpi{
  position:relative;overflow:hidden;border-radius:16px;padding:14px 18px 13px;min-height:112px;
  background:linear-gradient(148deg, rgba(255,255,255,.95) 0%, rgba(255,255,255,.70) 58%, rgba(255,255,255,.55) 100%);
  -webkit-backdrop-filter:blur(18px) saturate(1.35);backdrop-filter:blur(18px) saturate(1.35);
  border:1px solid rgba(255,255,255,.92);
  box-shadow:0 0 0 .5px rgba(140,175,210,.28), 0 12px 26px -18px rgba(17,58,102,.55), inset 0 1px 0 rgba(255,255,255,.95);
  transition:transform .18s ease, box-shadow .18s ease;
}
.hp .hp-kpi:hover{transform:translateY(-2px);
  box-shadow:0 0 0 .5px rgba(140,175,210,.35), 0 18px 34px -20px rgba(17,58,102,.6), inset 0 1px 0 #fff;}
.hp .hp-kpi .hp-kpi-glow{position:absolute;right:-28px;top:-46px;width:140px;height:140px;border-radius:50%;filter:blur(8px);opacity:.5;pointer-events:none;}
/* 顶部彩条 + 光晕色：蓝(今日销售) / 紫(本月销售) / 橙(应收·hero) / 绿(今日回款) */
.hp .hp-kpi:nth-child(1){border-top:2px solid #185FA5;}
.hp .hp-kpi:nth-child(1) .hp-kpi-glow{background:radial-gradient(circle, rgba(24,95,165,.28), transparent 70%);}
.hp .hp-kpi:nth-child(1) .hp-kpi-v{color:#0C447C;}
.hp .hp-kpi:nth-child(2){border-top:2px solid #534AB7;}
.hp .hp-kpi:nth-child(2) .hp-kpi-glow{background:radial-gradient(circle, rgba(83,74,183,.26), transparent 70%);}
.hp .hp-kpi:nth-child(2) .hp-kpi-v{color:#3C3489;}
.hp .hp-kpi:nth-child(3){border-top:2px solid #BA7517;}
.hp .hp-kpi:nth-child(3) .hp-kpi-glow{background:radial-gradient(circle, rgba(186,117,23,.26), transparent 70%);}
.hp .hp-kpi:nth-child(3) .hp-kpi-v{color:#7A4A0B;}
.hp .hp-kpi:nth-child(4){border-top:2px solid #0F6E56;}
.hp .hp-kpi:nth-child(4) .hp-kpi-glow{background:radial-gradient(circle, rgba(15,110,86,.24), transparent 70%);}
.hp .hp-kpi:nth-child(4) .hp-kpi-v{color:#085041;}
/* hero 应收：橙色大数字（沿用原 hero 语义，但融入磨砂体系） */
.hp .hp-kpi.is-hero{border-top-color:#D97A10;box-shadow:0 0 0 .5px rgba(210,150,80,.35), 0 14px 30px -20px rgba(150,90,20,.5), inset 0 1px 0 #fff;}
.hp .hp-kpi.is-hero .hp-kpi-glow{background:radial-gradient(circle, rgba(217,122,16,.30), transparent 70%);}
.hp .hp-kpi.is-hero .hp-kpi-v{font-size:29px;color:#B26A00;}
/* KPI 右下角迷你图表 */
.hp .hp-kpi .hp-kpi-s{padding-right:96px;}
.hp .hp-kpi-art{position:absolute;right:14px;bottom:12px;display:flex;align-items:flex-end;pointer-events:none;}
.hp-art-bars{display:flex;align-items:flex-end;gap:2.5px;height:30px;}
.hp-art-bars i{display:block;width:6px;border-radius:2.5px;background:linear-gradient(180deg,#CBDCF8,#EAF1FC);opacity:.92;}
.hp-art-rows{display:flex;flex-direction:column;justify-content:flex-end;gap:4px;width:86px;}
.hp-art-row{display:block;height:6px;border-radius:4px;background:#F1F5FA;overflow:hidden;}
.hp-art-row i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#F5C173,#D97A10);}
.hp-art-ring{position:relative;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;}
.hp-art-ring b{width:29px;height:29px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#12805C;font-variant-numeric:tabular-nums;}
/* ECharts 容器与欠款徽标 */
.hp-ch{width:100%;}
.hp-desk .hp-debt .hp-head{justify-content:flex-start;gap:8px;}
.hp-desk .hp-debt .hp-head a{margin-left:auto;}
.hp-debt-ov{font-size:11px;color:#8C9AA8;white-space:nowrap;}
.hp-debt-ov.is-bad{color:#C53030;background:#FDECEA;border-radius:10px;padding:1px 8px;}

/* ================= 主页第二次升华 v1486a（11-08）=================
   ① 去掉 C类/T类 双圆环 → 「订单流转」四阶段横向流水线（含完成率环）
   ② 常用功能 + 外部系统 → 底部「工作台」紧凑 chip 工具箱
   ③ 今日待办从右栏移到主区横向卡片条（左右栏高度更平衡）
   ④ 库存分布加产品色点 + 液位百分比；趋势图加峰值标注
   仍旧全部追加覆盖，不动上面的 hp 段。 */
.hp-desk .hp-flowv,
.hp-desk .hp-todos,
.hp-desk .hp-tools{grid-column:span 12;}
.hp-desk .hp-flowv{padding:16px 20px 15px;}
.hp-desk .hp-flowv .hp-head,
.hp-desk .hp-todos .hp-head{justify-content:flex-start;gap:9px;}
.hp-head-link{margin-left:auto;font-size:12px;color:#8A97A6;white-space:nowrap;}
.hp-head-link:hover{color:#3E6FD8;}
.hp-desk .hp-flowv .hp-sub b,
.hp-desk .hp-todos .hp-sub b{color:#12365F;font-weight:600;font-variant-numeric:tabular-nums;}

/* ---- 四阶段流水线 ---- */
.hp-flowv-body{display:flex;align-items:stretch;margin-top:2px;}
.hp-fst{
  position:relative;flex:1;min-width:0;border-radius:14px;padding:11px 14px 10px 16px;
  background:linear-gradient(158deg, rgba(255,255,255,.94) 0%, rgba(247,251,255,.70) 100%);
  border:1px solid rgba(255,255,255,.96);
  box-shadow:0 0 0 .5px rgba(140,175,210,.22), 0 10px 20px -16px rgba(17,58,102,.55), inset 0 1px 0 #fff;
  transition:transform .16s ease, box-shadow .16s ease;
}
.hp-fst::before{content:'';position:absolute;left:8px;top:12px;bottom:12px;width:3px;border-radius:3px;
  background:linear-gradient(180deg, var(--fc2), var(--fc));opacity:.9;}
.hp-fst:hover{transform:translateY(-2px);
  box-shadow:0 0 0 .5px rgba(140,175,210,.34), 0 16px 28px -18px rgba(17,58,102,.6), inset 0 1px 0 #fff;}
.hp-fst-hd{display:flex;align-items:baseline;gap:7px;}
.hp-fst-no{font-size:10px;letter-spacing:.6px;color:#B9C6D4;font-variant-numeric:tabular-nums;}
.hp-fst-nm{font-size:12.5px;color:#5B6B7C;letter-spacing:.2px;}
.hp-fst-v{margin-top:3px;font-size:27px;font-weight:700;color:#12365F;letter-spacing:-.6px;
  font-variant-numeric:tabular-nums;line-height:1.1;}
.hp-fst-tr{margin-top:8px;height:4px;border-radius:3px;background:#F0F5FA;overflow:hidden;}
.hp-fst-tr i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg, var(--fc2), var(--fc));}
.hp-fst-s{display:flex;gap:10px;margin-top:7px;font-size:10.5px;color:#9BA8B6;}
.hp-fst-s em{font-style:normal;font-variant-numeric:tabular-nums;}
/* 阶段间箭头 */
.hp-far{flex:none;width:26px;display:flex;align-items:center;justify-content:center;}
.hp-far::before{content:'';width:7px;height:7px;border-top:1.5px solid #C9D7E5;border-right:1.5px solid #C9D7E5;transform:rotate(45deg);}
/* 完成率环 */
.hp-fring{position:relative;flex:none;width:106px;display:flex;align-items:center;justify-content:center;margin-left:8px;}
.hp-fring svg{width:84px;height:84px;display:block;}
.hp-fring-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;}
.hp-fring-c b{font-size:17px;font-weight:700;color:#0F6E56;font-variant-numeric:tabular-nums;line-height:1;}
.hp-fring-c span{font-size:9.5px;color:#93A0AE;margin-top:3px;}

/* ---- 今日待办横条 ---- */
.hp-desk .hp-todos{padding:15px 20px 16px;}
.hp-todo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;}
.hp-todo{display:flex;align-items:flex-start;gap:9px;padding:11px 12px 10px;border-radius:12px;text-align:left;
  background:linear-gradient(158deg, rgba(255,255,255,.9), rgba(248,251,255,.66));
  border:1px solid rgba(255,255,255,.95);cursor:pointer;font-family:inherit;min-width:0;
  box-shadow:0 1px 5px rgba(62,84,140,.05);transition:background .15s,border-color .15s,transform .12s,box-shadow .15s;}
.hp-todo:hover{background:#fff;border-color:#CFE0FA;transform:translateY(-1px);box-shadow:0 8px 18px -10px rgba(62,84,140,.35);}
.hp-todo-dot{flex:none;width:7px;height:7px;border-radius:50%;background:#8FB4F0;margin-top:5px;box-shadow:0 0 0 3px rgba(143,180,240,.16);}
.hp-todo-dot.is-warn{background:#E9A05B;box-shadow:0 0 0 3px rgba(233,160,91,.18);}
.hp-todo-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
.hp-todo-main b{font-size:12.5px;font-weight:600;color:#2B3A4C;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-todo-main em{font-style:normal;font-size:11px;color:#95A2B1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-todo-go{flex:none;font-size:14px;color:#C2CEDC;line-height:1;margin-top:2px;}
.hp-todo:hover .hp-todo-go{color:#3E6FD8;}

/* ---- 工作台（工具箱） ---- */
.hp-desk .hp-tools{padding:15px 20px 16px;}
.hp-tools-body{display:flex;flex-direction:column;gap:11px;margin-top:2px;}
.hp-tools-sec{display:flex;align-items:flex-start;gap:14px;min-width:0;}
.hp-tools-sec.is-ext{padding-top:11px;border-top:1px dashed #E7EEF6;}
.hp-tools-cap{flex:none;width:56px;padding-top:11px;font-size:11px;color:#9BA8B6;letter-spacing:.5px;}
.hp-chip-grid{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:8px;min-width:0;}
.hp-chip,.hp-xchip{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:11px;text-align:left;
  background:rgba(255,255,255,.74);border:1px solid rgba(255,255,255,.96);cursor:pointer;font-family:inherit;min-width:0;
  box-shadow:0 1px 4px rgba(62,84,140,.05);transition:background .15s,border-color .15s,transform .12s,box-shadow .15s;}
.hp-chip:hover,.hp-xchip:hover{background:#fff;border-color:#CFE0FA;transform:translateY(-1px);box-shadow:0 7px 16px -9px rgba(62,84,140,.35);}
.hp-chip-ico,.hp-xchip-ico{position:relative;flex:none;width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;overflow:hidden;}
.hp-chip-ico svg{width:15px;height:15px;}
.hp-chip b,.hp-xchip b{min-width:0;font-size:12.5px;font-weight:500;color:#2B3A4C;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-xchip-ico i{font-style:normal;font-size:12px;font-weight:700;color:#fff;}
.hp-xchip-ico img{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);object-fit:contain;background:#fff;border-radius:6px;padding:1px;}
.hp-chip-ico.blue{background:#EDF3FE;color:#4C7EF3;}
.hp-chip-ico.green{background:#EAF7F0;color:#3E9E6B;}
.hp-chip-ico.violet{background:#F1EDFE;color:#7A5AF8;}
.hp-chip-ico.amber{background:#FEF4E6;color:#C98A28;}
.hp-chip-ico.cyan{background:#E8F6F9;color:#1B96A8;}
.hp-chip-ico.rose{background:#FDEDF0;color:#D2546C;}
.hp-chip-ico.slate{background:#F0F3F7;color:#5E7085;}
.hp-xchip-ico.cloud{background:linear-gradient(135deg,#3E7BF0,#2B57C4);}
.hp-xchip-ico.green{background:linear-gradient(135deg,#42B883,#2B9468);}
.hp-xchip-ico.violet{background:linear-gradient(135deg,#7A5AF8,#5738DB);}
.hp-xchip-ico.orange{background:linear-gradient(135deg,#F29A3E,#D9761F);}
.hp-xchip-ico.amber{background:linear-gradient(135deg,#F5C045,#DE9E1E);}

/* ---- 库存分布：产品色点 + 液位百分比 ---- */
.hp-inv-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12.5px;color:#54657A;margin-bottom:6px;}
.hp-inv-nm{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hp-inv-dot{flex:none;width:7px;height:7px;border-radius:2px;}
.hp-inv-dot.c1{background:linear-gradient(135deg,#7EA6F6,#4C7EF3);}
.hp-inv-dot.c2{background:linear-gradient(135deg,#7CC9A4,#3E9E6B);}
.hp-inv-dot.c3{background:linear-gradient(135deg,#B4A8F4,#7A5AF8);}
.hp-inv-dot.c4{background:linear-gradient(135deg,#F0CE8E,#C98A28);}
.hp-inv-r{display:flex;align-items:baseline;gap:6px;flex:none;}
.hp-inv-r b{font-weight:600;color:#2C3C4F;font-variant-numeric:tabular-nums;}
.hp-inv-r b.is-low{color:#D9734A;}
.hp-inv-r em{font-style:normal;font-size:10.5px;color:#A8B4C1;font-variant-numeric:tabular-nums;}
.hp-inv-row.is-low .hp-inv-r em{color:#D9734A;}
.hp-inv-row.is-low .hp-track i{background:linear-gradient(90deg,#F3B27C,#E07A4C) !important;}

/* ---- 响应式 ---- */
@media(max-width:1180px){
  .hp-flowv-body{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .hp-far,.hp-fring{display:none;}
  .hp-tools-sec{flex-direction:column;gap:8px;}
  .hp-tools-cap{padding-top:0;}
}
@media(max-width:760px){
  .hp-flowv-body{grid-template-columns:1fr;}
  .hp-tools-cap{width:auto;}
}

/* ================= 主页第三次精修 v1487a（11-08）=================
   ① 去掉「订单流转」「今日待办」两块 → 主区只剩 KPI / 销售趋势 / 工作台，信息层级更干净
   ② 销售趋势升为全宽主图（302px 高）+ y 轴刻度 + 日均基准线 + 峰值标签 + 与日均对比提示
   ③ 库存分布移入右侧栏，与日历、欠款 Top5 组成侧栏信息流（细长进度条天生适合窄栏）
   仍旧全部追加覆盖，不动上面的 hp 段。 */
.hp-desk .hp-trend{grid-column:span 12;position:relative;overflow:hidden;padding:17px 22px 12px;}
.hp-desk .hp-trend::after{
  content:'';position:absolute;right:-70px;top:-110px;width:260px;height:260px;border-radius:50%;
  background:radial-gradient(circle, rgba(76,126,243,.10), transparent 68%);pointer-events:none;
}
.hp-desk .hp-trend .hp-head{justify-content:flex-start;gap:10px;}
.hp-desk .hp-trend .hp-head-link{margin-left:auto;font-size:12px;color:#8A97A6;white-space:nowrap;}
.hp-desk .hp-trend .hp-head-link:hover{color:#3E6FD8;}
.hp-desk .hp-trend .hp-sub b{color:#12365F;font-weight:600;font-variant-numeric:tabular-nums;}
.hp-desk .hp-trend #hpChTrend{position:relative;z-index:1;}

/* ---- 右栏：日历 / 欠款 Top5 / 库存分布 三卡节奏 ---- */
.hp-desk .hp-side{gap:16px;}
.hp-desk .hp-side .hp-card{padding:15px 16px 16px;}
.hp-desk .hp-side .hp-cal{padding:14px 14px 12px;}
.hp-desk .hp-side .hp-debt .hp-ch{margin-top:2px;}

/* 库存分布（窄栏版）：行距收紧、数值略小，四行刚好铺满卡宽 */
.hp-desk .hp-inv .hp-inv-row{margin-top:13px;}
.hp-desk .hp-inv .hp-inv-row:first-of-type{margin-top:3px;}
.hp-desk .hp-side .hp-inv-top{font-size:12px;margin-bottom:5px;}
.hp-desk .hp-side .hp-inv-r b{font-size:12.5px;}
.hp-desk .hp-side .hp-inv .hp-track{height:6px;}
.hp-desk .hp-side .hp-inv .hp-note{margin-top:11px;}

/* ---- 工作台（主区底部）：chip 更舒展，图标略大 ---- */
.hp-desk .hp-tools{padding:16px 22px 18px;}
.hp-desk .hp-tools .hp-chip-grid{grid-template-columns:repeat(auto-fit,minmax(134px,1fr));gap:9px;}
.hp-desk .hp-chip,.hp-desk .hp-xchip{padding:9px 11px;}
.hp-desk .hp-chip-ico,.hp-desk .hp-xchip-ico{width:30px;height:30px;border-radius:10px;}
.hp-desk .hp-tools .hp-tools-sec{gap:16px;}

/* ---- 响应式：单列时侧栏两列排布，库存占满一行 ---- */
@media(max-width:1180px){
  .hp-desk .hp-side{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start;}
  .hp-desk .hp-side .hp-inv{grid-column:span 2;}
}
@media(max-width:760px){
  .hp-desk .hp-side{grid-template-columns:1fr;}
  .hp-desk .hp-side .hp-inv{grid-column:span 1;}
  .hp-desk .hp-trend{padding:14px 14px 8px;}
}

/* v1487a 补丁：旧版 min-width:1101px 档给 .hp-main 定了 grid-template-areas 死网格
   （k/t/i/o/q/e 六区，对应已删除的旧模块），新结构对不上号会被自动错位放置。
   这里整体解除，恢复自然文档流：KPI → 销售趋势 → 工作台。 */
@media (min-width:1101px){
  .hp-desk .hp-main{grid-template-rows:none;grid-template-areas:none;}
  .hp-desk .hp-kpis,.hp-desk .hp-trend,.hp-desk .hp-inv,
  .hp-desk .hp-op-grid,.hp-desk .hp-quick,.hp-desk .hp-ext{grid-area:auto;}
  .hp-desk .hp-kpis,.hp-desk .hp-trend{grid-column:span 12;}
  .hp-desk .hp-side-todos{flex:none;min-height:0;overflow:visible;}
}
/* v1487a 补丁2：矮屏下右栏内容超高会被 content overflow:hidden 裁掉，允许右栏内滚动 */
@media (min-width:1101px){
  .hp-desk .hp-side{overflow-y:auto;scrollbar-width:thin;}
  .hp-desk .hp-side::-webkit-scrollbar{width:6px;}
  .hp-desk .hp-side::-webkit-scrollbar-thumb{background:#D9E3EF;border-radius:4px;}
}

/* ================= 全系统 hover 反馈强化 v1488a（11-08）=================
   目标：鼠标扫到哪里，哪里就有"整块"的明确反馈。
   ① 侧边栏一级菜单：深色底上给亮蓝渐变块 + 左缘亮条 + 内描边 + 图标提亮
   ② 二级弹出菜单：整行淡蓝渐变 + 左缘指示条 + 文字加深
   ③ 表格行：整行统一蓝色叠层（background-image 叠加，不破坏原有底色语义）
      + 首列 3px 左缘蓝条，扫描时有"扫过一行"的整块感
   ④ 顶部工作区页签：从"只变文字色"升级为整块浅蓝底
   全部追加覆盖，不改原段落。 */
:root{
  --hv-line-hi:rgba(30,159,255,.46);
  --hv-row-a:rgba(30,136,229,.19);
  --hv-row-b:rgba(30,136,229,.07);
  --hv-row-c:rgba(30,136,229,.045);
}

/* ---------- ① 侧边栏一级菜单 ---------- */
.nav-group-head{transition:background .16s ease, box-shadow .16s ease, color .16s ease;}
.nav-group-head:hover:not(.active){
  background:linear-gradient(100deg, rgba(30,159,255,.46) 0%, rgba(30,159,255,.22) 52%, rgba(30,159,255,.07) 100%);
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(140,205,255,.34), 0 8px 18px -12px rgba(0,0,0,.6);
}
.nav-group-head:hover:not(.active)::before{
  content:"";position:absolute;left:-5px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;
  background:#5CC0FF;box-shadow:0 0 10px rgba(92,192,255,.9);
}
.nav-group-head:hover .ng-icon{color:#fff;transform:translateY(-1px) scale(1.08);}
.nav-group-head:hover .ng-count{background:rgba(255,255,255,.24);color:#fff;}
.nav-group-head:hover .chev{color:rgba(255,255,255,.8);}
/* 已展开但非当前页：hover 稍弱一档，避免和展开态打架 */
.nav-group-head.open:not(.active):hover{
  background:linear-gradient(100deg, rgba(30,159,255,.34) 0%, rgba(30,159,255,.14) 60%, rgba(30,159,255,.05) 100%);
}
/* 当前页（active）hover：加深自身深蓝块，保持黄色左条身份 */
.nav-group-head.active:hover{
  background:linear-gradient(90deg, rgba(6,44,86,.78), rgba(6,44,86,.30));
  box-shadow:inset 0 0 0 1px rgba(255,213,79,.22);
}

/* ---------- ② 二级弹出菜单 ---------- */
.nav-flyout .nav-item{transition:background .13s ease, color .13s ease, box-shadow .13s ease;}
.nav-flyout .nav-item:hover{
  background:linear-gradient(90deg, #D6E8FD 0%, #EAF4FF 56%, #F7FBFF 100%);
  color:#0F5FBF;
  box-shadow:inset 3px 0 0 #1E88E5;
}
.nav-flyout .nav-item:hover .fi-ic{color:#1268D8;}
.nav-flyout .nav-item.active:hover{background:linear-gradient(90deg, #CFE4FB 0%, #E6F1FE 100%);}
.menu-pop button:hover{background:#E6F1FE;color:var(--primary-dark);box-shadow:inset 3px 0 0 #1E88E5;}

/* ---------- ③ 表格行：整行蓝色叠层 ---------- */
table tbody tr > td{transition:background-color .12s ease;}
table tbody tr:hover > td{
  background-image:linear-gradient(90deg,
    var(--hv-row-a) 0%, var(--hv-row-b) 56%, var(--hv-row-c) 100%) !important;
}
table tbody tr:hover > td:first-child{
  box-shadow:inset 3px 0 0 rgba(30,136,229,.72);
}
/* 表头不参与整行叠层，保持原样 */
table thead tr:hover > td,
table thead tr:hover > th{background-image:none !important;box-shadow:none;}
/* 语义行排除：分组行 / 占位行 / 合计行 / 新增高亮行 / 权限矩阵（hover 无意义） */
table tbody tr:is(.tk-grp,.tk-gap,.tk-grp-foot,.tk-grp-empty,.fr-empty,.bk-empty,.crm-new-row):hover > td,
table.perm-tbl tbody tr:hover > td{
  background-image:none !important;
  box-shadow:none;
}
/* 新增行（浅黄）hover：加深到金黄，保留"未保存"语义 */
table tbody tr.crm-new-row:hover > td{
  background-image:linear-gradient(90deg, rgba(232,185,62,.26), rgba(232,185,62,.10)) !important;
}
/* 行情/周次等自带底色的行，hover 时左条不变色，只叠蓝 */
table tbody tr.wkrow-now:hover > td,
table tbody tr.wkrow-next:hover > td,
table tbody tr.wkrow-next2:hover > td{
  background-image:linear-gradient(90deg, rgba(30,136,229,.22), rgba(30,136,229,.09)) !important;
}

/* ---------- ④ 顶部工作区页签 ---------- */
.ws-tab{transition:background .15s ease, color .15s ease, border-color .15s ease;}
.ws-tab:hover{background:#E2EFFD;color:#1257C4;border-color:#C3DBF6;}
.ws-tab.active:hover{background:#fff;color:var(--primary-dark);border-color:#D5DEE7;}
/* 触屏：用 :active 给出同款反馈（无 hover 设备） */
@media (hover:none){
  .nav-group-head:active:not(.active){
    background:linear-gradient(100deg, rgba(30,159,255,.46), rgba(30,159,255,.14));
  }
  .nav-flyout .nav-item:active{
    background:linear-gradient(90deg, #D6E8FD 0%, #EAF4FF 100%);
    box-shadow:inset 3px 0 0 #1E88E5;
  }
}

/* ================= 全系统 UI 升级 v1489a（11-08，用户拍板：全局框架+组件层 / 克制精致）=================
   沿原样拔高：主色 #1E9FFF 与侧栏蓝色渐变不动，只统一质感与细节层级。
   L1 令牌 → L2 框架 → L3 控件 → L4 页签·表格·弹窗
   全部追加覆盖，不改上方原段落，便于并行会话整份覆盖后按老流程恢复。 */

/* ---------- L1 设计令牌 ---------- */
:root{
  --r-card:14px;--r-ctl:9px;--r-pill:999px;
  --sh-1:0 1px 2px rgba(16,52,88,.05), 0 1px 3px rgba(16,52,88,.045);
  --sh-2:0 7px 20px -14px rgba(16,52,88,.30), 0 2px 6px rgba(16,52,88,.05);
  --sh-3:0 24px 58px -30px rgba(11,40,72,.42), 0 10px 24px -18px rgba(11,40,72,.20);
  --hair:rgba(140,175,210,.30);
  --hair-2:rgba(140,175,210,.20);
  --ink-1:#1B2733;--ink-2:#54677A;--ink-3:#8B9AAB;
  --brand:#1E9FFF;--brand-d:#0B7FDB;
}
/* 全局数字等宽：所有表格数字、统计值读起来成列 */
.tk-table td.num,.table-wrap td.num,.kpi .v,.tag,.hp-kpi-v,
.fov-kpi-v,[class*="kpi"] .v,[class*="amt"],[class*="num"]{font-variant-numeric:tabular-nums;}
body{color:var(--ink-1);-webkit-font-smoothing:antialiased;}

/* ---------- L2 框架层 ---------- */
/* 内容区底色：极淡冷暖过渡，让白卡浮起来（不是纯灰板） */
.content{
  padding:22px 26px 44px;
  background:
    radial-gradient(760px 320px at 12% -8%, rgba(30,159,255,.055), transparent 70%),
    radial-gradient(680px 300px at 96% 2%, rgba(83,74,183,.045), transparent 72%),
    #F4F7FB;
}
/* 顶栏：毛玻璃 + 细描边，滚动时不再是一条硬白线 */
.appbar{
  background:rgba(255,255,255,.82);
  -webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);
  border-bottom:1px solid var(--hair);
  box-shadow:0 1px 0 rgba(255,255,255,.9), 0 6px 18px -18px rgba(16,52,88,.5);
  position:relative;z-index:20;
}
.appbar .crumb{color:var(--ink-3);}
.appbar .crumb b{color:var(--ink-1);font-weight:650;letter-spacing:-.1px;}
.appbar .icon-btn{border-radius:11px;transition:background .15s,color .15s,transform .15s;}
.appbar .icon-btn:hover{background:rgba(30,159,255,.10);color:var(--brand-d);}
.appbar .icon-btn:active{transform:scale(.94);}

/* 侧栏：保留蓝色渐变与黄条身份，加右缘高光 + 更柔投影，菜单块圆角化 */
.drawer{
  box-shadow:1px 0 0 rgba(255,255,255,.14) inset, 6px 0 22px -14px rgba(13,71,131,.5);
}
.drawer-head{border-bottom:1px solid rgba(255,255,255,.14);}
.nav-group{margin:0 7px 3px;}
.nav-group-head{
  border-radius:10px;padding:9px 8px;font-size:14px;
  transition:background .16s ease, box-shadow .16s ease, transform .12s ease;
}
.nav-group-head .ng-icon{width:28px;height:28px;flex:0 0 28px;}
.nav-group-head .ng-label{letter-spacing:.2px;}
.nav-group-head.active{
  background:linear-gradient(96deg, rgba(4,38,74,.62) 0%, rgba(4,38,74,.18) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10), 0 6px 14px -12px rgba(0,0,0,.7);
}
.nav-group-head.active .ng-icon{color:#FFD54F;}
.nav-group-head.open:not(.active){background:rgba(255,255,255,.09);}
.nav-group-head:active{transform:scale(.985);}
.nav-flyout{
  border-radius:0 var(--r-card) var(--r-card) var(--r-card);
  border:1px solid var(--hair);box-shadow:var(--sh-3);
  padding:7px;background:rgba(255,255,255,.97);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
}
.nav-flyout.wide{border-radius:0 var(--r-card) var(--r-card) var(--r-card);}
.nav-flyout .nav-item{border-radius:9px;font-size:13.5px;}

/* 工作区页签（顶部多标签）：胶囊化 + 未激活去掉硬边框 */
.ws-tabs{padding:8px 18px 0;background:transparent;border-bottom:1px solid var(--hair-2);}
.ws-tab{
  border:1px solid transparent;border-radius:10px 10px 0 0;font-size:13px;
  transition:background .15s,color .15s,border-color .15s;
}
.ws-tab:hover{background:rgba(30,159,255,.08);border-color:transparent;}
.ws-tab.active{
  background:#fff;border-color:var(--hair);border-bottom-color:#fff;
  box-shadow:0 -2px 8px -6px rgba(16,52,88,.4);
}

/* 页面头：统一「标题 20/650 + 副标题 + 右侧操作」节奏 */
.page-head{
  display:flex;align-items:center;gap:12px;
  margin:0 0 16px;padding-bottom:13px;
  border-bottom:1px solid var(--hair-2);
}
.page-head h1{
  margin:0;font-size:20px;font-weight:650;letter-spacing:-.3px;color:var(--ink-1);
  display:flex;align-items:center;gap:9px;
}
.page-head h1::before{
  content:"";width:3px;height:17px;border-radius:2px;flex:none;
  background:linear-gradient(180deg,#5CC0FF,#0B7FDB);
  box-shadow:0 0 0 3px rgba(30,159,255,.09);
}
.page-head .sub{font-size:13px;color:var(--ink-3);letter-spacing:.1px;}

/* ---------- L3 控件层 ---------- */
/* 按钮：微渐变 + 内高光 + 悬停浮起；统一 9px 圆角（原来是 4px 直角） */
.btn{
  height:34px;padding:0 15px;border-radius:var(--r-ctl);
  font-size:13.5px;font-weight:500;letter-spacing:.1px;
  border:1px solid transparent;background:#fff;color:var(--ink-2);
  box-shadow:0 1px 2px rgba(16,52,88,.06);
  transition:background .16s, box-shadow .16s, transform .1s, border-color .16s, color .16s;
}
.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px -8px rgba(16,52,88,.45);}
.btn:active{transform:translateY(0) scale(.985);box-shadow:0 1px 1px rgba(16,52,88,.10);filter:none;}
.btn-sm{height:28px;padding:0 10px;font-size:12.5px;border-radius:8px;}
.btn-primary{
  background:linear-gradient(180deg,#43B2FF 0%,#1E9FFF 52%,#0F8EF0 100%);
  color:#fff;border-color:rgba(11,127,219,.45);
  box-shadow:0 1px 2px rgba(16,90,160,.26), inset 0 1px 0 rgba(255,255,255,.30);
}
.btn-primary:hover{
  background:linear-gradient(180deg,#57BBFF 0%,#2AA5FF 52%,#0F8EF0 100%);
  box-shadow:0 6px 16px -8px rgba(16,120,200,.62), inset 0 1px 0 rgba(255,255,255,.34);
}
.btn-add{
  background:linear-gradient(180deg,#2ACB92 0%,#00B578 54%,#00A06C 100%);
  color:#fff;border-color:rgba(0,150,100,.42);
  box-shadow:0 1px 2px rgba(0,120,80,.24), inset 0 1px 0 rgba(255,255,255,.26);
}
.btn-add:hover{background:linear-gradient(180deg,#3BD8A2 0%,#0BBF82 54%,#00A06C 100%);
  box-shadow:0 6px 16px -8px rgba(0,150,100,.55), inset 0 1px 0 rgba(255,255,255,.3);}
.btn-danger{
  background:linear-gradient(180deg,#FF9463 0%,#FF7A45 54%,#F06A35 100%);
  color:#fff;border-color:rgba(220,90,50,.4);
  box-shadow:0 1px 2px rgba(180,70,30,.22), inset 0 1px 0 rgba(255,255,255,.26);
}
.btn-ghost{
  background:#fff;border-color:var(--hair);color:var(--ink-2);
  box-shadow:0 1px 2px rgba(16,52,88,.05);
}
.btn-ghost:hover{
  background:#F6FBFF;border-color:#8FCBFF;color:var(--brand-d);
  box-shadow:0 4px 12px -8px rgba(16,120,200,.5);
}
.btn-text{border-radius:7px;font-size:13.5px;padding:4px 8px;box-shadow:none;}
.btn-text:hover{background:rgba(30,159,255,.10);box-shadow:none;transform:none;}
.btn:disabled,.btn[disabled]{opacity:.5;transform:none;box-shadow:none;cursor:not-allowed;}

/* 搜索框 / 下拉 / 日期：统一 9px 圆角 + 内阴影 + focus 三层光晕 */
.toolbar .search{
  height:34px;border-radius:var(--r-ctl);border:1px solid var(--hair);
  background:#fff;box-shadow:inset 0 1px 2px rgba(16,52,88,.045);
  transition:border-color .16s, box-shadow .16s;
}
.toolbar .search:focus-within{
  border-color:#7FC4FF;
  box-shadow:0 0 0 3px rgba(30,159,255,.14), inset 0 1px 2px rgba(16,52,88,.03);
}
.toolbar .search .s-ic{color:#A3B2C2;}
.toolbar select,.toolbar .nsel-inp{
  height:34px;border-radius:var(--r-ctl);border:1px solid var(--hair);
  background:#fff;color:var(--ink-2);
  transition:border-color .16s, box-shadow .16s;
}
.toolbar select:hover,.toolbar .nsel-inp:hover{border-color:#B9D5EE;}
.toolbar select:focus,.toolbar .nsel-inp:focus{
  outline:none;border-color:#7FC4FF;box-shadow:0 0 0 3px rgba(30,159,255,.14);
}
/* 表单盒（label 灰底 + 输入连体）：只改容器，不动内部 input 的 border:none，避免破坏连体结构 */
.field{border-radius:var(--r-ctl);border-color:var(--hair);background:#fff;
  transition:border-color .16s, box-shadow .16s;}
.field:focus-within{border-color:#7FC4FF;box-shadow:0 0 0 3px rgba(30,159,255,.14);}
.field label{background:#F8FBFE;border-right-color:var(--hair-2);color:var(--ink-2);font-size:13px;}
.page-head input#pbDate{border-radius:var(--r-ctl);border:1px solid var(--hair);}
.page-head input#pbDate:focus{outline:none;border-color:#7FC4FF;box-shadow:0 0 0 3px rgba(30,159,255,.14);}
.bill-range input[type=date]{border-radius:8px;border:1px solid var(--hair);}
input[type=checkbox],input[type=radio]{accent-color:#1E9FFF;cursor:pointer;}
input[type=checkbox]{transition:transform .1s;}
input[type=checkbox]:active{transform:scale(.9);}

/* 工具条：去掉灰板感，改极淡渐变 + 细线 */
.toolbar{
  padding:11px 14px;background:linear-gradient(180deg,#FCFDFF 0%,#F8FBFE 100%);
  border-bottom:1px solid var(--hair-2);
}

/* 状态徽标：统一 pill（浅底 + 同色 22% 描边），文字 12/500 */
.tag{
  height:21px;padding:0 8px;border-radius:var(--r-pill);
  font-size:12px;font-weight:500;letter-spacing:.1px;
  border:1px solid transparent;
}
.tag-gray{background:#F2F6FA;color:#5A6B7B;border-color:rgba(140,175,210,.30);}
.tag-blue{background:#EAF5FF;color:#0B6FBF;border-color:rgba(30,159,255,.24);}
.tag-green{background:#E8FAF1;color:#0E7A55;border-color:rgba(18,128,92,.22);}
.tag-orange{background:#FFF5E4;color:#A96A12;border-color:rgba(183,121,31,.22);}
.tag-red{background:#FDECEC;color:#BC2A2A;border-color:rgba(197,48,48,.20);}
.tag-purple{background:#F2EEFF;color:#5340BE;border-color:rgba(91,69,199,.20);}

/* 卡片 / 表格容器 / 页面面板：统一 14px 圆角 + 0.5px 描边 + 一级阴影 */
.card,.table-wrap,.sc-panel,.kpi,.inv-tbl-wrap{
  border-radius:var(--r-card);
  border-color:var(--hair);
  box-shadow:var(--sh-1);
}
.card,.kpi{position:relative;overflow:hidden;}
.kpi{padding:15px 17px;}
.kpi .t{font-size:12.5px;color:var(--ink-3);letter-spacing:.2px;}
.kpi .v{font-size:25px;font-weight:680;letter-spacing:-.4px;margin-top:6px;color:var(--ink-1);}
.kpi .i{border-radius:10px;width:32px;height:32px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7);}
.card-pad{padding:16px 18px;}

/* ---------- L4 页签统一 ---------- */
/* ① 斜折页页签（销售中心 / 财务 / 客户 / 库存 / 运输 / 价格）：保留折页机制，只提纯质感 */
.sc-strip{height:50px;background:linear-gradient(180deg,#EDF3F9 0%,#E5EDF6 100%);}
.sc-flip b{background:#CBDCEB;}
.sc-flip i{background:linear-gradient(180deg,#FFFFFF 0%,#FBFCFF 100%);}
.sc-tab{font-size:15px;letter-spacing:.25px;color:#47576A;}
.sc-tab:hover{color:#0F6FD8;}
.sc-tab.active{color:#0F6FD8;}
.sc-tab .tx::after{height:3px;border-radius:3px;bottom:-7px;
  background:linear-gradient(90deg,#5CC0FF,#0F6FD8);}
.sc-cnt{background:#DCE6F0;color:#66788A;font-weight:600;font-size:11.5px;height:17px;min-width:17px;line-height:17px;}
.sc-tab.active .sc-cnt{background:#D9EAFF;color:#0F6FD8;}

/* ② 灰底胶囊页签（进销表内：销售/收货款/付运费/历史订单/分装记录） */
.tk-tabs{
  background:linear-gradient(180deg,#F1F6FB 0%,#EAF1F8 100%);
  border-radius:var(--r-pill);padding:3px;gap:2px;
  box-shadow:inset 0 1px 2px rgba(16,52,88,.055);
}
.tk-tab{
  border-radius:var(--r-pill);font-size:12.5px;padding:4px 13px;color:#5B6B7C;
  transition:background .16s, color .16s, box-shadow .16s;
}
.tk-tab:hover{color:#0F6FD8;background:rgba(255,255,255,.6);}
.tk-tab.on{
  background:#fff;color:#0F6FD8;font-weight:600;
  box-shadow:0 1px 2px rgba(18,54,95,.14), inset 0 0 0 .5px rgba(140,175,210,.25);
}

/* ③ 小分段控件（库存三按钮 / 文档视图切换）：同款胶囊语言 */
.inv-seg{border-radius:var(--r-pill);background:#EDF3F9;box-shadow:inset 0 1px 2px rgba(16,52,88,.05);}
.doc-seg{border-radius:var(--r-pill);border-color:var(--hair);overflow:hidden;}
.doc-seg button.on{background:#E4F1FF;color:#0F6FD8;}

/* ---------- L4 表格细化 ---------- */
/* 通用列表表头：浅蓝灰渐变 + 细底线，字号收到 13，字距略开 */
thead th{
  background:linear-gradient(180deg,#FBFDFF 0%,#F5F9FD 100%);
  color:#4E6275;font-size:13px;font-weight:600;letter-spacing:.35px;
  padding:9px 14px;border-bottom:1px solid var(--hair);
}
/* 进销密集表：表头与通栏同语言，只轻微收字号 */
.tk-table th{
  background:linear-gradient(180deg,#FAFDFF 0%,#F4F9FD 100%);
  color:#4E6275;font-size:13px;letter-spacing:.35px;
  border-bottom:1px solid var(--hair);
}
.tk-table td{border-bottom:1px solid #F2F6FA;}
tbody td{border-bottom:1px solid #F2F6FA;}
/* 行内数字统一等宽 + 轻字距，读数成列 */
tbody td.num,.tk-table td.num,.bill-tbl td.num{font-variant-numeric:tabular-nums;letter-spacing:.1px;}
/* 表内输入框：细描边 + focus 光晕（不动尺寸，保持原有列宽实测值） */
.tk-in:focus,.tk-subbar .search:focus-within{
  outline:none;box-shadow:0 0 0 3px rgba(30,159,255,.16);
}
/* 表格容器圆角处不露直角：首末行去掉多余横线 */
.table-wrap > table > tbody > tr:last-child > td{border-bottom:none;}
.sc-panel > .table-scroll > table > tbody > tr:last-child > td{border-bottom:none;}

/* ---------- L4 弹窗 / 抽屉 / 浮层 ---------- */
.modal-mask{
  background:rgba(12,28,45,.42);
  -webkit-backdrop-filter:blur(3px) saturate(1.05);backdrop-filter:blur(3px) saturate(1.05);
}
.modal{
  border-radius:var(--r-card);
  box-shadow:var(--sh-3), 0 0 0 .5px rgba(140,175,210,.28);
}
.modal-head{
  padding:15px 20px;border-bottom:1px solid var(--hair-2);
  background:linear-gradient(180deg,#FCFDFF 0%,#F7FAFE 100%);
  border-radius:var(--r-card) var(--r-card) 0 0;
}
.modal-head h3{font-size:16px;font-weight:650;letter-spacing:-.2px;color:var(--ink-1);}
.modal-head .x{
  width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  transition:background .15s, color .15s;
}
.modal-head .x:hover{background:#FDEAEA;color:#C53030;}
.modal-body{padding:18px 20px;}
.modal-foot{
  padding:13px 20px;border-top:1px solid var(--hair-2);
  background:linear-gradient(180deg,#FCFDFF 0%,#F8FBFE 100%);
  border-radius:0 0 var(--r-card) var(--r-card);
}
/* 弹出小菜单（头像菜单 / 行内操作菜单） */
.menu-pop{
  border-radius:12px;border:1px solid var(--hair);
  box-shadow:var(--sh-3);padding:5px;
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
}
.menu-pop button{border-radius:8px;font-size:13.5px;}

/* ---------- v1489a 补丁1：表头深度 / 统计卡统一 / 页面细节 ---------- */
/* 表头再深一档，成为明确的"栏"，避免白成一片；同时覆盖 doc-table / pb-table 自带表头 */
thead th,
.tk-table th,
.doc-table thead th,
.pb-table thead th,
.att-table thead th{
  background:linear-gradient(180deg,#F8FBFE 0%,#EEF5FB 100%);
  color:#43566A;font-weight:600;letter-spacing:.35px;
  border-bottom:1px solid var(--hair);
}
.doc-table thead th,.pb-table thead th,.att-table thead th{font-size:13px;}

/* 统计小卡（客户 / 考勤 / 分析）：统一圆角、描边、阴影与 hover 浮起 */
.crm-stat,.att-stat,.loss-kpi{
  border-radius:var(--r-card);
  border:1px solid var(--hair);
  background:linear-gradient(180deg,#FFFFFF 0%,#FCFDFF 100%);
  box-shadow:var(--sh-1);
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.crm-stat:hover,.att-stat:hover,.loss-kpi:hover{
  transform:translateY(-1px);
  border-color:rgba(140,175,210,.45);
  box-shadow:var(--sh-2);
}
.att-stats{margin-bottom:14px;}
/* 页面标题不换行（实时价格页曾把「实时价格」压成两行） */
.page-head h1{white-space:nowrap;flex:none;}
.page-head .sub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* 文档库 / 资源页表格容器 */
.card .table-wrap,.card.att-card{border:none;box-shadow:none;background:transparent;}
.card.att-card{border-radius:var(--r-card);border:1px solid var(--hair);background:#fff;box-shadow:var(--sh-1);overflow:hidden;}

/* ---------- v1489b 补丁2：表头加深到可辨识 / 卡片细节 ---------- */
/* 表头：从"几乎白"加深到明确的一栏，同时保留轻盈感（不用硬灰） */
thead th,
.tk-table th,
.doc-table thead th,
.pb-table thead th,
.att-table thead th{
  background:linear-gradient(180deg,#F3F8FD 0%,#E7F0F9 100%);
  color:#3C5165;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
  border-bottom:1px solid rgba(140,175,210,.42);
}
/* 表头内的排序/拖拽图标与文字同深度 */
thead th [class*="sort"],thead th .tk-th-tag{color:#7C8FA2;}

/* 统计卡：极轻顶部高光，避免白成一片（不改语义色） */
.crm-stat,.att-stat,.loss-kpi{
  background:linear-gradient(180deg,#FFFFFF 0%,#FBFDFF 62%,#F7FAFE 100%);
  box-shadow:inset 0 1px 0 #fff, var(--sh-1);
}

/* 文档中心：文件卡统一圆角/阴影/悬停浮起 */
.doc-card{border-radius:var(--r-card);border-color:var(--hair);box-shadow:var(--sh-1);}
.dk-grid > *{
  border-radius:12px;
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
.dk-grid > *:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:rgba(140,175,210,.5);}

/* 页面内零散小搜索框（文档 / 库存 / 客户等）统一圆角 */
.dk-search input,.doc-search input,.crm-search input,.inv-search input{border-radius:var(--r-ctl);}

/* ---------- v1489c 补丁3：账户卡 / 空状态 / 分页 / 表内搜索 ---------- */
/* 财务资金账户卡：与全站卡片同一质感（原来只有白底细边，静态看不出边界） */
.fin-acc{
  border-radius:12px;border-color:var(--hair);
  background:linear-gradient(180deg,#FFFFFF 0%,#FCFDFF 100%);
  box-shadow:inset 0 1px 0 #fff, var(--sh-1);
}
.fin-acc:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:rgba(30,159,255,.45);}
.fin-acc.on{
  border-color:#7FC4FF;
  box-shadow:0 0 0 2px rgba(30,159,255,.16), var(--sh-1);
}
.fin-acc-add{background:linear-gradient(180deg,#FAFCFF,#F5F9FE);}

/* 表内小搜索框（收货款页签右侧那条）统一圆角 */
.tk-subbar .search{border-radius:var(--r-ctl);border-color:var(--hair);height:30px;}
.tk-subbar .search:focus-within{border-color:#7FC4FF;box-shadow:0 0 0 3px rgba(30,159,255,.14);}

/* 空状态：统一留白与灰阶，不再是裸文字 */
.hp-empty,.tk-grp-empty,.fr-empty,.bk-empty,.doc-none,.att-empty{
  color:var(--ink-3);font-size:13px;
}

/* 分页 / 合计条 */
.table-foot,.tk-foot,.pager{
  border-top:1px solid var(--hair-2);
  background:linear-gradient(180deg,#FCFDFF,#F8FBFE);
  color:var(--ink-2);
}

/* 滚动条与滚动容器圆角一致（表格横向滚动时不露出直角白块） */
.table-scroll{scrollbar-width:thin;}
.table-scroll::-webkit-scrollbar{height:9px;width:9px;}
.table-scroll::-webkit-scrollbar-thumb{background:#D3DFEB;border-radius:6px;border:2px solid #fff;}
.table-scroll::-webkit-scrollbar-thumb:hover{background:#B9CCDE;}
.table-scroll::-webkit-scrollbar-track{background:transparent;}

/* ---------- v1489d 补丁4：编辑遮罩居中对齐（修原有拉伸缺陷）+ 小弹窗质感 ---------- */
/* 原 .doc-edit-mask 只写了 display:flex 没写 align-items，子弹窗被 stretch 拉满整屏高度，
   补卡这类短弹窗会变成一条 880px 高的白柱——这里改为居中并允许内部滚动。 */
.doc-edit-mask{
  align-items:center;justify-content:center;
  overflow-y:auto;padding:22px;
  background:rgba(12,30,50,.42);
  -webkit-backdrop-filter:blur(3px) saturate(1.05);backdrop-filter:blur(3px) saturate(1.05);
}
.doc-edit-mask > *{margin:auto;}

/* 小弹窗（补卡 / 简易编辑）与主弹窗同一语言 */
.att-modal{border-radius:var(--r-card);box-shadow:var(--sh-3), 0 0 0 .5px rgba(140,175,210,.26);}
.att-modal-h{
  padding:14px 18px;border-bottom:1px solid var(--hair-2);
  background:linear-gradient(180deg,#FCFDFF 0%,#F7FAFE 100%);
  border-radius:var(--r-card) var(--r-card) 0 0;
  font-size:15px;font-weight:600;color:var(--ink-1);
}
.att-modal-b input,.att-modal-b select,.att-modal-b textarea{
  border-radius:var(--r-ctl);border:1px solid var(--hair);
  transition:border-color .16s, box-shadow .16s;
}
.att-modal-b input:focus,.att-modal-b select:focus,.att-modal-b textarea:focus{
  outline:none;border-color:#7FC4FF;box-shadow:0 0 0 3px rgba(30,159,255,.14);
}
.att-modal-f{
  padding:12px 18px;border-top:1px solid var(--hair-2);
  background:linear-gradient(180deg,#FCFDFF 0%,#F8FBFE 100%);
  border-radius:0 0 var(--r-card) var(--r-card);
}

/* ---------- v1489e 补丁5：顶部统计条间距 / 顶栏图标块 ---------- */
/* 客户 / 运输页顶部统计卡与斜折页页签同处一条 .crm-topbar，卡与卡之间要有明确缝隙 */
.crm-topbar .crm-stats{gap:10px;align-items:stretch;}
.crm-topbar .crm-stat{border-radius:12px;box-shadow:var(--sh-1);}
.crm-topbar .crm-stat:hover{box-shadow:var(--sh-2);}
/* 运输页：统计条与下方表格卡之间留出节奏 */
.tr-topbar{margin-bottom:12px;}

/* 顶栏左侧首页图标：做成浅蓝圆角块，比裸线条图标更立得住 */
.appbar .icon-btn.home-btn{
  width:30px;height:30px;border-radius:9px;
  background:linear-gradient(180deg,#F2F8FF,#E8F2FE);
  box-shadow:inset 0 0 0 .5px rgba(140,175,210,.4);
  color:#3E7FD1;
}
.appbar .icon-btn.home-btn:hover{background:linear-gradient(180deg,#E9F4FF,#DCEBFD);color:#0B7FDB;}

/* ---------- v1489f 补丁6：胶囊页签在窄屏不换行（手机端曾被压成竖排两行） ---------- */
.tk-tabs{max-width:100%;}
.tk-tab{white-space:nowrap;flex:0 0 auto;}
@media(max-width:900px){
  .tk-tabs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
  .tk-tabs::-webkit-scrollbar{display:none;}
}

/* ---------- v1489g 补丁7：页签行右侧按钮窄屏不被压扁 ---------- */
#tkContract,.tk-stamp-btn{flex:0 0 auto;}
.tk-stamp-btn span,#tkContract span{display:inline-block;white-space:nowrap;}
@media(max-width:900px){
  .tk-subbar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;}
  .tk-subbar::-webkit-scrollbar{display:none;}
}

/* ============================================================
   v1490a 细节打磨（专门做两处）
   ① 运输页顶部：页签条与指标卡拉开分组间距，卡片与页签垂直居中
   ② 文档中心：文件卡片统一高度 + 类型色纸片图标 + 悬停操作层细化
   ============================================================ */

/* ---------- ① 运输页顶部 ---------- */
/* 页签条与指标卡是两组东西：组间留 26px 呼吸，卡与卡之间收紧到 10px，
   纵向 14px 供窄屏换行；页签条垂直居中在卡组上，刷新按钮与卡组右缘齐 */
.crm-topbar.tr-topbar{gap:14px 26px;align-items:center;}
.crm-topbar.tr-topbar .tr-tabs2{align-self:center;}
.crm-topbar.tr-topbar .tr-stats{gap:10px;}
.crm-topbar.tr-topbar .crm-stat{border-radius:12px;padding:9px 14px 8px;}
.crm-topbar.tr-topbar .tr-actions{align-self:center;}
@media (max-width:900px){
  .crm-topbar.tr-topbar{gap:10px 12px;}
}

/* ---------- ② 文档中心文件卡片 ---------- */
/* 网格：卡略放宽、间距 10，一屏依然 8~10 个；卡片常态不加边框（避免白底套白框显碎） */
.dk-grid{grid-template-columns:repeat(auto-fill,minmax(142px,1fr));gap:10px 10px;}
.dk-item{border-radius:12px;padding:10px 10px 9px;}
.dk-item:hover{background:#FBFDFF;border-color:#D3E3F5;box-shadow:0 10px 22px -18px rgba(16,64,120,.75);}

/* 图标块：一张白纸片 —— 白底 + 极淡描边 + 左缘类型色条 + 右下角同色晕 + 纸页折角 */
.dt{height:78px;border-radius:10px;margin-bottom:9px;}
.dt-badge{
  position:relative;overflow:hidden;
  background:linear-gradient(180deg,#FFFFFF 0%,#F7FAFE 100%);
  border:1px solid #E7EFF8;
  box-shadow:0 1px 2px rgba(16,64,120,.04);
}
.dt-badge::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:var(--dtc,#C3D2E0);
}
.dt-badge::after{
  content:"";position:absolute;right:-18px;bottom:-26px;width:78px;height:78px;border-radius:50%;
  background:radial-gradient(circle at 42% 42%,var(--dtg,rgba(122,139,156,.10)),transparent 70%);
  pointer-events:none;
}
.dt-badge b{font-size:27px;font-weight:750;letter-spacing:.5px;line-height:1;color:var(--dtc,#5A6B7B);}
.dt-badge span{font-size:10.5px;letter-spacing:.4px;color:#9DADBD;}
/* 每种类型一套色（大字 + 底晕），一眼分得清 Word / Excel / PDF / 压缩包 */
.dt-pdf  {--dtc:#D94A4A;--dtg:rgba(217,74,74,.13);}
.dt-word {--dtc:#2B6CB0;--dtg:rgba(43,108,176,.13);}
.dt-excel{--dtc:#0F8A5F;--dtg:rgba(15,138,95,.13);}
.dt-ppt  {--dtc:#D97706;--dtg:rgba(217,119,6,.14);}
.dt-txt  {--dtc:#5A6B7B;--dtg:rgba(90,107,123,.11);}
.dt-zip  {--dtc:#8A6D3B;--dtg:rgba(138,109,59,.12);}
.dt-other{--dtc:#7A8B9C;--dtg:rgba(122,139,156,.11);}
/* 文件夹与图片缩略块不要色条、不要底晕，保持原样 */
.dt-folder::before,.dt-folder::after,.dt-img::before,.dt-img::after{display:none;}
.dt-img{border:1px solid #E7EFF8;border-radius:10px;box-shadow:0 1px 2px rgba(16,64,120,.04);}

/* 文件名固定两行高度：一行、两行的卡对齐，下方的文件大小永远在同一条线上 */
.di-name{height:37px;min-height:37px;line-height:18.5px;font-size:13.5px;}
.di-meta{margin-top:3px;font-size:12px;}
/* 悬停操作层：四个小按钮做成一块半透明浮层，位置稳定不压字 */
.di-acts{top:6px;right:6px;padding:2px;border-radius:8px;gap:1px;
  background:rgba(255,255,255,.94);border:1px solid rgba(16,64,120,.07);
  box-shadow:0 3px 12px -6px rgba(16,64,120,.45);}
.di-acts button{width:21px;height:21px;font-size:12.5px;border-radius:5px;}

/* ---------- v1490b 收尾：去掉图标块里那块发脏的圆晕，可编辑做小胶囊 ---------- */
.dt-badge::after{
  right:-30px;top:-34px;bottom:auto;width:74px;height:74px;
  background:var(--dtg,rgba(122,139,156,.10));opacity:.55;
}
.dt-badge span{
  font-size:10px;letter-spacing:.3px;color:#93A5B6;
  background:#F1F6FC;border-radius:999px;padding:2px 7px;line-height:1.35;
}
/* 文件夹卡也给一层极淡的纸底，跟文件卡在同一套语言里（不描边、不压加重） */
.dt-folder{background:linear-gradient(180deg,#FCFDFF,#F6FAFE);border:1px solid #EDF3FA;border-radius:10px;}
.dt-folder svg{width:50px;height:50px;}
/* 网格操作层：线性图标替换原来的 emoji，跟系统其他图标同一套笔画 */
.di-acts .ia-ico{
  width:13px;height:13px;display:block;margin:auto;
  fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;
}
.di-acts button[data-act="del"]:hover{background:#FDECEA;color:#D64545;}
.di-acts button[data-act="download"]:hover{background:#EAF3FE;color:#1E7FD9;}
/* 运输页：统计条与下方内容之间再松一点 */
.crm-topbar.tr-topbar{margin-bottom:16px;}

/* ---------- v1490c：右上角那团色做成柔光（纯色圆边界太硬） ---------- */
.dt-badge::after{
  right:-42px;top:-48px;width:106px;height:106px;border-radius:50%;opacity:1;
  background:radial-gradient(circle at 50% 50%,var(--dtg,rgba(122,139,156,.10)) 0%,transparent 68%);
}

/* ---------- v1490d：文件夹角标上移、元信息行距、触屏操作层收小 ---------- */
/* 文件夹角标原本压在文件夹图形右下，改成钉在纸片右上角，跟文件类型标签同一处 */
.dt-ct{top:5px;right:6px;bottom:auto;font-size:9.5px;padding:2px 5px;border-radius:5px;}
/* 往来资料里的元信息会折两行，行距收一点更整 */
.di-meta{line-height:1.45;}
/* 触屏（手机/平板）没有 hover，操作层原来常显且压掉半个图标块：整体缩到 82%、去掉浮层阴影 */
@media (pointer:coarse){
  .di-acts{top:3px;right:3px;transform:scale(.82);transform-origin:top right;
    background:rgba(255,255,255,.86);box-shadow:none;border-color:rgba(16,64,120,.05);}
}

/* ---------- v1490e：触屏操作层再收一档（手机上四颗按钮仍占掉图标块顶边） ---------- */
@media (pointer:coarse){
  .di-acts{top:2px;right:2px;transform:scale(.75);border-radius:999px;padding:2px 3px;}
  .di-acts button{width:22px;height:22px;}
}

/* ---------- v1494a：飞书云文档嵌入（页面内直接编辑，编辑器由飞书 CDN 提供） ---------- */
.fs-mask{position:fixed;inset:0;z-index:9000;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;}
.fs-shell{width:calc(100vw - 32px);height:calc(100vh - 32px);max-width:1600px;background:#fff;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 18px 50px rgba(0,0,0,.28);}
.fs-bar{flex:0 0 46px;display:flex;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid #e6e8ec;background:#fff;}
.fs-badge{flex:0 0 auto;font-size:11px;font-weight:700;color:#fff;background:#3370ff;border-radius:4px;padding:2px 6px;letter-spacing:.5px;}
.fs-name{flex:1 1 auto;min-width:0;font-size:14px;font-weight:600;color:#1f2329;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fs-state{flex:0 0 auto;font-size:12px;color:#8a9099;max-width:34%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.fs-btn{flex:0 0 auto;height:30px;padding:0 12px;border:1px solid #d5d8dd;background:#fff;border-radius:6px;font-size:13px;color:#1f2329;cursor:pointer;}
.fs-btn:hover{border-color:#3370ff;color:#3370ff;}
.fs-done{background:#3370ff;border-color:#3370ff;color:#fff;}
.fs-done:hover{background:#245bdb;color:#fff;}
.fs-host{flex:1 1 auto;min-height:0;position:relative;background:#f7f8fa;}
.fs-host iframe{width:100%;height:100%;border:0;}
.fs-tip{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#646a73;font-size:13px;text-align:center;padding:24px;background:#f7f8fa;}
.fs-tip b{font-size:15px;color:#1f2329;}
.fs-tip button{height:32px;padding:0 16px;border:0;border-radius:6px;background:#3370ff;color:#fff;font-size:13px;cursor:pointer;}
@media (max-width:760px){
  .fs-shell{width:100vw;height:100vh;border-radius:0;}
  .fs-state{display:none;}
}

/* ---------- v1491a 行情页：口径说明入口 / 采集按钮状态 ---------- */
.page-head .pb-howto{
  font-size:12.5px;color:#1E7FD9;cursor:pointer;margin-left:10px;
  padding:2px 9px;border-radius:999px;background:#EAF4FF;
  border:1px solid #D3E6FA;white-space:nowrap;display:inline-block;
}
.page-head .pb-howto:hover{background:#DFEEFF;border-color:#B7D8F7;color:#0B6BC4;}
.pb-help-body p{margin:0 0 10px;font-size:13.5px;line-height:1.85;color:#41566B;}
.pb-help-body p:last-child{margin-bottom:0;}
.pb-help-body b{color:#17395A;}
#pbCollect .pb-spin{
  display:inline-block;width:12px;height:12px;vertical-align:-1px;margin-right:4px;
  border:2px solid rgba(255,255,255,.42);border-top-color:#fff;border-radius:50%;
  animation:pbSpin .7s linear infinite;
}
@keyframes pbSpin{to{transform:rotate(360deg)}}
#pbCollect[disabled]{opacity:.92;cursor:progress;}

/* ===== 客户列表「跟进」格改造 v1506a（11-09 用户口径）=====
   ① 加号挪到格子右上角，点它看跟进记录；
   ② 点格子本身就地输入本次跟进（光标直接落在格里，无弹窗），
      回车或点别处自动存成一条；条数 / 上次日期·方式 仍在第一行。 */
.crm-cl-table td.crm-c-follow{position:relative;}
.crm-cl-table td.crm-c-follow .crm-fl-top{padding-right:24px;}
.crm-fadd{position:absolute;top:5px;right:6px;z-index:1;width:22px;height:22px;padding:0;
  display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;
  background:#fff;color:#3D7DB0;font:inherit;font-size:14px;line-height:1;cursor:pointer;
  transition:background .14s,border-color .14s,color .14s;}
.crm-fadd:hover{background:#EAF3FB;border-color:#9CC8E6;color:var(--primary);}
.crm-fcnt{font-size:11.5px;color:var(--text-3);}
.crm-cl-table td.crm-c-follow:hover .crm-flast{color:var(--primary);}
.crm-finput{margin-top:4px;min-height:24px;padding:2px 6px;border:1px solid #9CC8E6;border-radius:6px;
  background:#FBFDFF;font-size:13px;line-height:1.4;color:#22384D;outline:none;cursor:text;
  box-shadow:0 0 0 3px rgba(30,159,255,.10);word-break:break-word;white-space:pre-wrap;}
.crm-finput:empty::before{content:attr(data-ph);color:#9AA9B8;}
.crm-finput.crm-fsaving{opacity:.55;}

/* ===== 槽车销货单：次序列改只读自动编号（11-09 用户口径）=====
   编号＝按本表显示顺序全表连续 1..N，不再用流转带过来的 ship_seq，也不允许手填重号；
   要调先后拖动行首 ⠿，编号自动重排。 */
.tk-seq-ro{display:inline-block;min-width:20px;text-align:center;font-variant-numeric:tabular-nums;color:#5B6B7C;}
.tk-table.tk-tank td.tk-seq .tk-seq-ro{font-weight:600;color:#12365F;}
/* 付运费 · 报车押金列：和超损扣款同款窄数字框 */
.tk-table.tk-tank td.tk-deposit-cell .tk-in{height:22px;}

/* ===== 付运费 · 报车押金（11-09 用户口径，晚间修正）=====
   ① 未填时是虚线空框，格子里用浅灰小字「200」当提示（只是提示，不是真值），宽度够、字不裁；
   ② 必须手填（没有押金填 0）才计算应结运费；没填时应结运费列显示「待填押金」并进不了提交结算；
   ③ 填上后虚线变实线蓝框，和扣款框一致。 */
.tk-table.tk-tank td.tk-deposit-cell{white-space:nowrap;}
.tk-table.tk-tank td.tk-deposit-cell input.veh-deposit{width:72px;min-width:72px;height:22px;font-size:12.5px;
  text-align:center;padding:2px 4px;border-radius:6px;line-height:18px;}
.tk-table.tk-tank td.tk-deposit-cell input.veh-deposit::placeholder{font-size:11px;color:#A9B6C4;font-weight:400;opacity:1;}
.tk-table.tk-tank td.tk-deposit-cell input.veh-deposit.tk-dep-empty{
  border:1px dashed #D9B473;background:#FFFCF5;box-shadow:none;color:#B7791F;}
.tk-table.tk-tank td.tk-deposit-cell input.veh-deposit.tk-dep-empty:hover{border-color:#C79A4E;background:#FFF9EC;}
.tk-table.tk-tank td.tk-deposit-cell input.veh-deposit.tk-dep-empty:focus{
  border-style:solid;border-color:#1E9FFF;background:#FBFDFF;color:#22384D;
  box-shadow:0 0 0 3px rgba(30,159,255,.12);}
/* 应结运费列 / 财务应付：未填押金的提示胶囊 */
.tk-dep-todo{display:inline-block;font-size:11.5px;line-height:18px;padding:0 7px;border-radius:999px;
  color:#B7791F;background:#FFF6E6;border:1px dashed #E5C083;cursor:help;white-space:nowrap;}

/* ===== 财务页头「今日待办」条 v1509a（11-09 用户要求）=====
   标题右侧一排琥珀金胶囊：应收 / 应付 / 报销各多少单待审核（带金额），点一下直达对应页签；
   全部审完时显示淡金「✓ 没有待审的单」，不占视觉重量。 */
.fin-todo{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-left:8px;min-height:22px;}
.fin-todo-tag{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;
  font-style:normal;font-size:11.5px;line-height:1;letter-spacing:.4px;font-weight:600;color:#7A4E06;
  background:linear-gradient(180deg,#FFEAB8,#F8D588);border:1px solid #E7BE5E;
  box-shadow:0 1px 2px rgba(176,120,20,.16),inset 0 1px 0 rgba(255,255,255,.75);
  white-space:nowrap;cursor:default;}
.fin-todo-tag.fin-todo-ok{color:#7C6A3E;background:linear-gradient(180deg,#FBF3DC,#F2E7C8);
  border-color:#E4D5AC;box-shadow:inset 0 1px 0 rgba(255,255,255,.7);}
.fin-todo-item{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 10px;border-radius:999px;
  font-family:inherit;font-size:12px;line-height:1;color:#8A6414;background:#FFFBF0;
  border:1px solid #F0DFB4;cursor:pointer;white-space:nowrap;
  transition:background .15s,border-color .15s,box-shadow .15s,transform .15s;}
.fin-todo-item b{font-size:13.5px;font-weight:700;color:#B7791F;font-variant-numeric:tabular-nums;letter-spacing:.2px;}
.fin-todo-item i{font-style:normal;font-size:11.5px;color:#AC8845;font-variant-numeric:tabular-nums;padding-left:2px;}
.fin-todo-item:hover{background:#FFF3D4;border-color:#DFC078;box-shadow:0 2px 7px rgba(176,120,20,.15);transform:translateY(-1px);}
.fin-todo-item:active{transform:translateY(0);}
/* 应收 / 应付 / 报销：同为金调，深浅区分，扫一眼能分出三本账 */
.fin-todo-item.recv b{color:#B7791F;}
.fin-todo-item.pay b{color:#A9620F;}
.fin-todo-item.exp b{color:#8A6A2E;}
.fin-todo-item.fin-todo-rej{cursor:default;color:#B4574D;background:#FFF6F4;border-color:#F2CFC9;}
.fin-todo-item.fin-todo-rej b{color:#C0392B;}
.fin-todo-item.fin-todo-rej:hover{background:#FFF1EE;border-color:#EBBBB3;box-shadow:none;transform:none;}
.fin-todo-none{font-size:12px;color:#9A916F;letter-spacing:.2px;}
/* 财务页头专用：宽度不够时让待办条整体换到下一行，不挤掉副标题 */
.fin-head{flex-wrap:wrap;row-gap:8px;}
@media (max-width:1180px){
  .fin-head .fin-todo{order:10;flex:0 0 100%;margin-left:0;row-gap:6px;}
  .fin-todo-item{font-size:11.5px;padding:0 8px;}
  .fin-todo-item i{font-size:11px;}
}

/* 待办条微调（放大一号、加时钟图标，读起来更像「今天的活」） */
.fin-todo{gap:7px;}
.fin-todo-tag{height:24px;padding:0 10px;font-size:12px;gap:4px;}
.fin-todo-ico{width:12.5px;height:12.5px;display:block;opacity:.85;}
.fin-todo-item{height:24px;padding:0 11px;font-size:12.5px;gap:6px;}
.fin-todo-item b{font-size:14.5px;}
.fin-todo-item i{font-size:12px;}
.fin-todo-none{font-size:12.5px;}

/* ===== v1513a 今日待办直达：要审的单子闪三下 → 停在琥珀提示色，点这一行（或审完重画）即恢复 ===== */
@keyframes finRowFlash{0%,100%{background-color:transparent}50%{background-color:#FFCE73}}
.tk-table.fin-look tbody tr.fin-flash>td{animation:finRowFlash .42s ease-in-out 3;}
.tk-table.fin-look tbody tr.fin-need>td{background-color:#FFE9BE !important;}
.tk-table.fin-look tbody tr.fin-need>td:first-child{box-shadow:inset 3px 0 0 #E8A33D;}
.tk-table.fin-look tbody tr.fin-need:hover>td{background-color:#FFE0A6 !important;}
@media (prefers-reduced-motion:reduce){.tk-table.fin-look tbody tr.fin-flash>td{animation:none;}}

/* ===== v1518a 财务 · 台账页（收款单 / 付款单 / 报表）与报表版式 =====
   台账页只换头部容器，单据本体仍是通用资源页，所以观感靠 fin-look 那套继承；
   报表是只读页，卡片式排版：KPI 四宫格 + 账龄堆叠条 + 应付构成条 + 日记账明细。 */
.fin-dochead{margin-bottom:12px;border:1px solid #E4EDF6;border-radius:var(--r-card,14px);
  background:#fff;box-shadow:0 1px 2px rgba(16,52,88,.04);}
.fin-dochead-in{display:flex;align-items:center;gap:14px;padding:9px 14px;flex-wrap:wrap;}
.fin-dochead-seg{flex:0 0 330px;max-width:100%;}
.fin-dochead-tip{margin-left:auto;font-size:12.5px;color:var(--ink-3,#8B9AAB);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

.fin-rep{display:flex;flex-direction:column;gap:12px;}
.fre-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
.fre-kpi{padding:14px 16px;border:1px solid #E4EDF6;border-radius:var(--r-card,14px);background:#fff;
  box-shadow:var(--sh-1,0 1px 3px rgba(16,52,88,.05));}
.fre-kpi-t{font-size:12.5px;color:var(--ink-3,#8B9AAB);}
.fre-kpi-v{margin:5px 0 3px;font-size:23px;font-weight:600;letter-spacing:-.4px;color:#12365F;
  font-variant-numeric:tabular-nums;}
.fre-kpi-v small{margin-left:3px;font-size:12px;font-weight:400;color:#9AA9B8;}
.fre-kpi-s{font-size:12px;color:var(--ink-3,#8B9AAB);}

.fre-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:12px;align-items:start;}
.fre-card{min-width:0;padding:16px 18px 14px;border:1px solid #E4EDF6;border-radius:var(--r-card,14px);
  background:#fff;box-shadow:var(--sh-1,0 1px 3px rgba(16,52,88,.05));}
.fre-hd{display:flex;align-items:baseline;gap:10px;margin-bottom:14px;}
.fre-hd h3{margin:0;font-size:15px;font-weight:600;color:#12365F;}
.fre-hd-s{font-size:12px;color:#9AA9B8;}

.fre-agebar{display:flex;height:12px;border-radius:999px;overflow:hidden;background:#EEF3F8;}
.fre-agebar i{display:block;height:100%;transition:width .45s ease;}
.fre-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin:10px 0 4px;font-size:12.5px;color:#54677A;}
.fre-legend span{display:inline-flex;align-items:center;gap:6px;}
.fre-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;}
.fre-legend b{color:#12365F;font-weight:600;font-variant-numeric:tabular-nums;}
.fre-sub{margin:14px 0 6px;font-size:12.5px;color:var(--ink-3,#8B9AAB);}
.fre-table{margin:0;}
.fre-rank{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;margin-right:7px;
  border-radius:5px;background:#EEF4FB;color:#5B7FA6;font-size:11px;}

.fre-payrow{display:grid;grid-template-columns:76px minmax(0,1fr) 82px 32px;align-items:center;gap:10px;
  padding:7px 0;font-size:13px;color:#54677A;}
.fre-payrow-n{white-space:nowrap;}
.fre-payrow-bar{height:7px;border-radius:999px;background:#EEF3F8;overflow:hidden;}
.fre-payrow-bar i{display:block;height:100%;border-radius:999px;transition:width .45s ease;}
.fre-payrow-v{text-align:right;font-weight:600;color:#12365F;font-variant-numeric:tabular-nums;}
.fre-payrow-p{font-style:normal;font-size:12px;text-align:right;color:#9AA9B8;}
.fre-paysum{display:flex;align-items:baseline;gap:8px;margin-top:12px;padding-top:12px;
  border-top:1px dashed #E4EDF6;font-size:13px;color:#54677A;}
.fre-paysum b{font-size:20px;font-weight:600;color:#12365F;font-variant-numeric:tabular-nums;}
.fre-paysum em{font-style:normal;font-size:12px;color:#9AA9B8;}
.fre-note{margin-top:10px;font-size:12px;line-height:1.65;color:#9AA9B8;}

@media (max-width:1180px){
  .fre-kpis{grid-template-columns:repeat(2,minmax(0,1fr));}
  .fre-grid{grid-template-columns:minmax(0,1fr);}
}
@media (max-width:720px){
  .fre-kpis{grid-template-columns:minmax(0,1fr);}
  .fin-dochead-seg{flex:1 1 100%;}
  .fin-dochead-tip{display:none;}
}
.fre-sup{display:flex;align-items:center;gap:7px;padding:5px 0;font-size:13px;color:#3F5265;
  border-bottom:1px dashed #F0F5FA;}
.fre-sup:last-of-type{border-bottom:none;}
.fre-sup-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fre-sup b{font-weight:600;color:#12365F;font-variant-numeric:tabular-nums;}

/* ===== v1521a 财务减负：区块折叠 + 客户抽屉 =====
   折叠只收起表格与明细，标题与合计条始终可见；箭头朝上=已展开，朝下=已收起。 */
.fin-fold-btn{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;margin-right:3px;
  padding:0;border:1px solid #DCE7F1;border-radius:6px;background:#fff;color:#5B7FA6;cursor:pointer;flex:0 0 auto}
.fin-fold-btn:hover{background:#EFF6FF;border-color:#8FB6DC;color:#1668E3}
.fin-fold-btn svg{transition:transform .18s ease}
.fin-fold-btn.down svg{transform:rotate(180deg)}
.fin-card.is-folded .fin-fold-body{display:none}

.fin-drawer-mask{position:fixed;inset:0;z-index:1200;display:flex;justify-content:flex-end;
  background:rgba(15,35,55,.28);animation:fdFade .16s ease}
.fin-drawer{display:flex;flex-direction:column;width:min(940px,94vw);height:100%;background:#F7FAFD;
  box-shadow:-10px 0 34px rgba(16,52,88,.18);animation:fdIn .24s cubic-bezier(.22,.61,.36,1)}
.fin-drawer-hd{display:flex;align-items:center;gap:12px;padding:15px 20px;background:#fff;border-bottom:1px solid #E4EDF6}
.fin-drawer-name{font-size:16.5px;font-weight:600;color:#12365F;letter-spacing:.2px}
.fin-drawer-sub{margin-top:3px;font-size:12.8px;color:#7B8A9B}
.fin-drawer-bd{flex:1;overflow:auto;padding:14px 20px 30px}
.fd-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.fd-kpis>div{padding:11px 14px;background:#fff;border:1px solid #E4EDF6;border-radius:12px}
.fd-kpis span{display:block;font-size:12px;color:#8B9AAB}
.fd-kpis b{display:block;margin-top:3px;font-size:16px;color:#12365F;font-variant-numeric:tabular-nums}
.fd-h{margin:16px 0 8px;font-size:13.5px;color:#12365F}
.fd-h em{font-style:normal;margin-left:8px;font-size:12.3px;color:#8B9AAB}
@keyframes fdFade{from{opacity:0}to{opacity:1}}
@keyframes fdIn{from{transform:translateX(30px);opacity:.55}to{transform:none;opacity:1}}
@media (max-width:720px){.fin-drawer{width:100%}.fd-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 收起态提示：合计条右侧补一句，避免用户以为表格丢了 */
.fin-card.is-folded .fin-bar::after{content:'· 已收起，点标题左侧箭头展开';margin-left:auto;font-style:normal;
  font-size:12px;color:#9AA9B8;font-weight:400;}
/* 抽屉里的表格要撑满宽度（通用表格是自适应列宽，不加这条会缩在左侧一半） */
.fin-drawer .table-scroll{width:100%;overflow:auto}
.fin-drawer .tk-table{width:100%}
.fin-drawer .tk-table thead th{white-space:nowrap}
/* 抽屉表格：覆盖 .tk-table.fin-look 的 width:max-content（否则只按内容宽度撑，右侧留大片空白） */
.fin-drawer .tk-table.fin-look{width:100% !important;min-width:0 !important;max-width:none}

/* ===== v1522a 库存·槽车归档：许昌 / 乌海 / 其他（按计划名称）分组 + 一屏展示、组内滚动 =====
   与历史订单（hist-gscroll）同一套机制：外层不再整表滚，tbody 自己限高自己滚；
   列宽由 JS 量一次写百分比再切固定布局，否则各组按自己内容算宽会左右错位。
   高度分配在 fitArchGroups()：装得下就全部展开（一屏、无滚动条），装不下每组保底 2 行、其余按需分配。 */
.table-scroll.freeze-head.arch-gscroll-wrap{overflow-x:auto;overflow-y:hidden;max-height:none !important;}
/* 列宽 = 各列自然宽度（JS 量一次写 px，见 fitArchGroups），总宽超出容器就整表横向滚（与原表一致），
   纵向由每个 tbody 自己限高自己滚。全局 `.table-scroll > table{width:max-content !important}`
   在 tbody 改成 block 后会绕成死循环/膨胀，所以宽度由 JS 用 inline !important 写死。 */
.table-scroll.arch-gscroll-wrap>table.arch-gscroll-ready{table-layout:fixed;min-width:100%;}
.tk-table.arch-gscroll-ready>thead{display:table;width:100%;table-layout:fixed;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body{display:block;width:100%;overflow-y:auto;overflow-x:hidden;
  overscroll-behavior:contain;margin-bottom:8px;border-radius:0 0 8px 8px;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr{display:table;width:100%;table-layout:fixed;}
/* 组头吸顶：组内滚到哪都看得见自己翻的是哪一组 */
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr.tk-grp{position:sticky;top:0;z-index:3;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr.tk-gap{display:none;}
/* 15 列在 100% 固定布局下会比原来紧，长文本一律省略号（悬停看 title/原值），行高才稳 */
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr>td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr.tk-grp>td{overflow:visible;white-space:normal;}
/* 组内滚动条细一点，别把最后一行挤没 */
.tk-table.arch-gscroll-ready>tbody.tk-grp-body::-webkit-scrollbar{width:8px;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body::-webkit-scrollbar-thumb{background:#CFE0F0;border-radius:8px;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body::-webkit-scrollbar-thumb:hover{background:#A9C4DC;}
/* 归档的组头比普通表头更"重"一点：一眼看出这是分组而不是一条数据（组头在组内滚动时吸顶） */
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr.tk-grp>td{background:#D8E8F9 !important;
  border-top:1px solid #BFD6EE !important;border-bottom:1px solid #BFD6EE !important;padding:4px 12px 3px !important;
  line-height:1.45;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr.tk-grp .tk-grp-nm{font-size:14.5px;font-weight:700;}
.tk-table.arch-gscroll-ready>tbody.tk-grp-body>tr.tk-grp .tk-grp-ct{font-size:12.5px;color:#6C8098;}
