*{box-sizing:border-box}
:root{--navy:#0f172a;--navy2:#1e293b;--blue:#2563eb;--blue-l:#eff6ff;--line:#e5e7eb;--bg:#f5f7fa;--txt:#111827;--sub:#6b7280;--orange:#f59e0b;--red:#dc2626;--green:#16a34a}
body{margin:0;font:14px/1.5 -apple-system,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif;color:var(--txt);background:var(--bg)}
button,input,select,textarea{font:inherit}
.layout{display:flex;height:100vh}
/* 侧边栏 */
.side{width:232px;background:var(--navy);color:#e5e7eb;overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}
.brand{display:flex;gap:12px;align-items:center;padding:16px 18px;border-bottom:1px solid rgba(255,255,255,.07)}
.gem{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#3b82f6,#1d4ed8);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px rgba(37,99,235,.4)}
.bt{font-weight:700;font-size:16px;color:#fff}.bs{font-size:12px;color:#94a3b8;margin-top:1px}
.navs{padding:6px 10px 20px}
.nav{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:#e2e8f0;text-decoration:none;white-space:nowrap;margin:2px 0;transition:background .12s}
.nav .ic{width:17px;height:17px;flex-shrink:0;color:#94a3b8}
.nav .nl{flex:1}
.nav:hover{background:var(--navy2)}
.nav.on{background:var(--blue);color:#fff;font-weight:600;box-shadow:0 4px 12px rgba(37,99,235,.35)}
.nav.on .ic{color:#fff}
.bdg:empty{display:none}
.bdg.cnt{background:#1d4ed8;color:#fff;border-radius:10px;min-width:20px;height:20px;line-height:20px;text-align:center;font-size:12px;font-weight:700;padding:0 6px}
.bdg.pend{background:var(--orange);color:#111;border-radius:10px;font-size:11.5px;font-weight:700;padding:1px 8px}
.bdg.tagb{background:rgba(255,255,255,.12);color:#cbd5e1;border-radius:6px;font-size:11.5px;padding:1px 7px}
.nav.on .bdg.tagb{background:rgba(255,255,255,.22);color:#fff}
/* 主区 */
.main{flex:1;overflow-y:auto;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid var(--line);padding:0 28px;height:56px;flex-shrink:0;position:sticky;top:0;z-index:5}
.crumb{flex:1;color:var(--sub)}.crumb i{font-style:normal;margin:0 10px;color:#9ca3af}.crumb b{color:var(--txt)}
.topr{display:flex;align-items:center;gap:10px}
.who{color:var(--sub);font-size:13px}
.content{padding:22px 28px}
.phead{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 22px;margin-bottom:16px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.phead>div:first-child{flex:1}
.phead h1{display:flex;align-items:center;gap:10px;font-size:19px;margin:0}
.phead h1 .ic{width:22px;height:22px;color:var(--blue)}
.pdesc{color:#9ca3af;font-size:13px;margin-top:4px}
.pacts{display:flex;gap:8px;flex-wrap:wrap}
.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:14px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.card h3{margin:0 0 12px;font-size:15px}
.tabs{display:flex;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;margin-bottom:14px}
.tab{flex:1;border:1px solid transparent;background:none;border-radius:8px;padding:10px 14px;cursor:pointer;color:#4b5563;white-space:nowrap}
.tab:hover{background:#f9fafb}
.tab.on{background:var(--blue-l);border-color:#bfdbfe;color:#1d4ed8;font-weight:600}
.btn{border:1px solid #d1d5db;background:#fff;border-radius:8px;padding:6px 14px;cursor:pointer;white-space:nowrap;color:var(--txt)}
.btn:hover{background:#f9fafb}.btn.pri{background:var(--blue);color:#fff;border-color:var(--blue)}.btn.pri:hover{background:#1d4ed8}
.btn.red{color:var(--red);border-color:#fecaca}.btn.sm{padding:2px 10px;font-size:13px}
.btn:disabled{opacity:.45;cursor:not-allowed}
input,select,textarea{border:1px solid #d1d5db;border-radius:8px;padding:6px 10px;background:#fff;outline:none}
input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
table{border-collapse:collapse;width:100%;background:#fff}
th,td{border-bottom:1px solid #f1f2f4;padding:8px 10px;text-align:left;white-space:nowrap}
th{background:#f9fafb;color:var(--sub);font-weight:500;font-size:13px;position:sticky;top:0;z-index:1}
td.n,th.n{text-align:right}
tr.gp>td{background:#fbfcfe;font-weight:600;cursor:pointer}
tr.gp:hover>td{background:var(--blue-l)}
.tw{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:auto;max-height:calc(100vh - 300px);box-shadow:0 1px 2px rgba(16,24,40,.04)}
.arrow{display:inline-block;width:16px;color:#9ca3af}
/* 金属颜色高亮：不要改 */
.pill{display:inline-block;padding:1px 8px;border-radius:6px;font-weight:700;color:#000;border:1px solid transparent;font-variant-numeric:tabular-nums}
.m-KY{background:rgb(255,255,0)}.m-KR{background:rgb(255,200,200)}.m-KW{background:#fff;border-color:#9aa0a6}
.chip{min-width:44px;text-align:center}
/* KPI 卡片 */
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-bottom:16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 20px;box-shadow:0 1px 2px rgba(16,24,40,.04)}
.stat span{display:block;color:#9ca3af;font-size:13px}
.stat b{display:block;font-size:28px;font-weight:800;color:var(--txt);margin:4px 0 2px;font-variant-numeric:tabular-nums}
.stat b.hl{color:var(--blue)}.stat.warn b{color:#d97706}
.stat small{color:var(--sub);font-size:12.5px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.bad{color:var(--red);font-weight:700}.ok{color:var(--green);font-weight:600}.muted{color:#9ca3af;font-size:12px}
.tag{display:inline-block;padding:0 9px;border-radius:10px;font-size:12px;background:#f3f4f6}
.tag.g{background:#dcfce7;color:#15803d}.tag.y{background:#fef3c7;color:#b45309}.tag.r{background:#fee2e2;color:var(--red)}
.grid input{width:58px;text-align:right;font-weight:700}
.grid td{padding:4px 5px}
.issues{border:1px solid #fecaca;background:#fef2f2;border-radius:10px;padding:10px 14px;color:var(--red);margin:10px 0}
.issues li{margin:2px 0}
.cellbad .pill{box-shadow:none}
.loading{padding:28px;color:#9ca3af}
#modal .mask{position:fixed;inset:0;background:rgba(15,23,42,.35);display:flex;align-items:flex-start;justify-content:center;padding-top:6vh;z-index:9}
#modal .box{background:#fff;border-radius:14px;padding:22px;min-width:420px;max-width:92vw;max-height:84vh;overflow:auto;box-shadow:0 20px 50px rgba(15,23,42,.25)}
#modal h3{margin:0 0 14px}
.form label{display:block;margin:8px 0 3px;color:var(--sub);font-size:13px}
.form input,.form select{width:100%}
#toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:20}
#toast div{background:var(--navy);color:#fff;padding:8px 18px;border-radius:8px;margin-bottom:6px}
#toast div.e{background:var(--red)}
.login{max-width:360px;margin:16vh auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:30px;box-shadow:0 10px 30px rgba(15,23,42,.08)}
.login input{width:100%;margin:6px 0 12px}
.login .btn{background:var(--blue);border-color:var(--blue);color:#fff;padding:9px}
.linecard{border:1px solid var(--line);border-radius:10px;padding:12px;margin:10px 0;background:#fff}
.linehead{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
tr.igp>td{background:#fff}tr.igp:hover>td{background:#f8fafc}
tr.isub>td{background:#fff}
tr.itp>td,tr.itp:hover>td{background:rgb(110,160,235);color:#0b1220;font-weight:700}
tr.itp .muted,tr.itp .arrow{color:#1e293b}
#it th:nth-child(n+3):not(:last-child),#it td:nth-child(n+3):not(:last-child){text-align:center}

td.ck,th.ck{text-align:center;width:36px}td.ck input,th.ck input{width:16px;height:16px;cursor:pointer}
.selbar{display:flex;align-items:center;gap:10px;background:#eef4ff;border:1px solid rgb(110,160,235);border-radius:8px;padding:8px 14px;margin:8px 0}
.bform td{padding:6px 8px;border:none}.bform input,.bform select{width:240px}.bform input:disabled,.bform select:disabled{background:#f3f4f6;color:#aaa}.bchk{white-space:nowrap;cursor:pointer}
.bform{width:100%}.bform td:first-child{width:110px}.bform td:nth-child(2){width:120px;white-space:nowrap}.bform label.bchk{display:inline-flex;align-items:center;gap:6px;margin:0;font-weight:normal}.bform label.bchk input{width:16px;height:16px;margin:0}
.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.danger:hover{filter:brightness(.92)}.btn.danger:disabled{opacity:.45;cursor:not-allowed;filter:none}
.bform select#b_shape,.bform select#b_shape2{display:inline-block}
.bform select#b_shape{width:120px}.bform select#b_shape2{width:200px}
.stcard{display:grid;grid-template-columns:130px 1fr 130px 1fr;gap:8px 16px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px 16px}.stl{color:var(--sub)}.stv{word-break:break-all}
.stsec{margin-top:12px}.stsh{font-weight:700;font-size:13px;color:#0f172a;margin:0 0 6px 2px;padding-left:8px;border-left:3px solid rgb(110,160,235)}
.stown0{margin-bottom:4px}
.stform{width:860px;max-width:90vw}.stfg{display:grid;grid-template-columns:120px 1fr 120px 1fr;gap:8px 12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 14px}
.stfg label{margin:0;color:var(--sub);font-size:13px}.stfg input,.stfg select{width:100%;margin:0}
tr.stb>td{background:#fff;cursor:pointer;border-top:1px solid var(--line)}tr.stb:hover>td{background:#f8fafc}tr.stb .arrow{color:var(--sub)}tr.stdet>td{background:#fafbfc}
.stfg textarea{width:100%;margin:0;resize:vertical;font:inherit;padding:6px 8px;border:1px solid var(--line);border-radius:6px;box-sizing:border-box}.stfg label.lt{align-self:start;padding-top:6px}.stv.pl{white-space:pre-line}
.gtab th.gc,.gtab td.gc{text-align:center;width:96px}tr.gmr>td{background:#fff;cursor:pointer;border-top:1px solid var(--line)}tr.gmr:hover>td{background:#f8fafc}tr.gsub>td{background:#fff}
.gth{position:relative;width:72px;height:72px;margin:auto;border-radius:6px;overflow:hidden;border:1px solid var(--line);cursor:zoom-in;background:#f8fafc}.gth img{width:100%;height:100%;object-fit:cover;display:block}
.wm{position:absolute;inset:0;pointer-events:none;background-repeat:repeat}.gurl{position:absolute;left:2px;bottom:2px;font-size:10px;background:rgba(15,23,42,.65);color:#fff;border-radius:3px;padding:0 3px}
.gempty{width:72px;height:72px;margin:auto;border:1.5px dashed #94a3b8;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--sub);font-size:12px;cursor:pointer}.gempty:hover{border-color:var(--blue);color:var(--blue)}
.gbig{position:relative;display:inline-block;max-width:80vw}.gbig img{max-width:80vw;max-height:66vh;display:block}
.nmck{display:inline-flex;align-items:center;gap:4px;margin:0 12px 6px 0;cursor:pointer;font-weight:normal}.nmck input{width:16px;height:16px;margin:0}
.stform.nmw{width:1100px;max-width:calc(95vw - 44px)}#modal .box:has(.nmw){max-height:90vh;max-width:95vw}
.nmfoot{justify-content:flex-end;position:sticky;bottom:-22px;background:#fff;padding:12px 0;margin:8px 0 -22px;border-top:1px solid var(--line);z-index:2}
.nmrow{display:flex;align-items:flex-start;gap:10px;margin-top:8px}.nmlab{width:90px;flex-shrink:0;padding-top:2px}.nmcodes{display:flex;flex-wrap:wrap;gap:4px 6px}
.nmcodes .pill{font-size:12px;padding:1px 6px}.nmcodes{gap:4px}
tr.gsz>td{background:#fff}
/* ===== Walmart 风格样式（只在样稿里） ===== */
:root{--wm:#0071DC;--wm-d:#004F9A;--wm-n:#041E42;--wm-y:#FFC220;--wm-bg:#F2F8FD;--wm-g:#F5F5F5;--wm-line:#E3E4E5;--wm-txt:#2E2F32;--wm-sub:#74767C;
  --navy:#0071DC;--navy2:#0062C2;--blue:#0071DC;--blue-l:#E6F1FC;--line:#E3E4E5;--bg:#F5F5F5;--txt:#2E2F32;--sub:#74767C}
body{font-family:"Bogle","Inter","Helvetica Neue",Arial,"PingFang SC","Microsoft YaHei","Noto Sans CJK SC",sans-serif}
.side{background:var(--wm)}
.brand{border-bottom:1px solid rgba(255,255,255,.18)}
.gem{background:transparent;box-shadow:none;width:40px;height:40px}.gem svg{width:34px;height:34px}
.bs{color:#cfe4fa}
.nav{color:#fff;border-radius:999px}.nav .ic{color:#fff}
.nav:hover{background:var(--wm-d)}
.nav.on{background:var(--wm-n);box-shadow:inset 3px 0 0 var(--wm-y)}.nav.on .ic{color:var(--wm-y)}
.bdg.cnt{background:#fff;color:var(--wm-d)}.bdg.pend{background:var(--wm-y);color:var(--wm-n)}
.top{border-bottom:3px solid var(--wm-y)}
.card,.stat{border-radius:16px;border-color:var(--wm-line);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.stat b.hl{color:var(--wm)}.stat b{color:var(--wm-n)}
.btn{border-radius:999px;border-color:var(--wm-n);color:var(--wm-n);font-weight:700;padding:6px 16px}
.btn:hover{background:var(--wm-bg)}
.btn.pri{background:var(--wm);border-color:var(--wm)}.btn.pri:hover{background:var(--wm-d)}
.btn.sm{padding:2px 12px}.btn.red{border-color:#de1c24;color:#de1c24}
.btn.danger{background:#de1c24;border-color:#de1c24}
th{background:var(--wm-n);color:#fff;font-weight:700}
th,td{border-bottom-color:var(--wm-line)}
tr:hover>td{background:#fafbfc}
tr.itp>td,tr.itp:hover>td{background:var(--wm-bg);color:var(--wm-n);box-shadow:inset 4px 0 0 var(--wm)}
tr.itp .muted,tr.itp .arrow{color:var(--wm-d)}
tr.gp:hover>td{background:var(--blue-l)}
.selbar{background:#FFF8E1;border-color:var(--wm-y);border-radius:12px}
.stsh{border-left-color:var(--wm-y)}
.tag{border-radius:999px;font-weight:700}
.tag.y{background:#FFF3CC;color:#8a5a00}
input,select,textarea{border-radius:8px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--wm);outline-offset:0}
th,th *{color:#fff!important}
/* Walmart 主题补充 */
tr.itp>td,tr.itp:hover>td{box-shadow:none}
tr.itp>td:first-child{box-shadow:inset 4px 0 0 var(--wm)}
th.szh{font-weight:800;min-width:0;padding:8px 2px;text-align:center;font-size:12px}
.phead h1 .ic{color:var(--wm)}
.tab.on{background:var(--wm-bg);border-color:var(--wm);color:var(--wm-n);font-weight:700}
.tab{border-radius:999px}
input:focus,select:focus,textarea:focus{border-color:var(--wm);box-shadow:none}
.selbar{border-color:var(--wm-y)}
.stsh{color:var(--wm-n)}
#toast div{background:var(--wm-n);border-radius:999px}
.login{border-radius:16px;border-top:6px solid var(--wm)}
.login .btn{background:var(--wm);border-color:var(--wm);color:#fff;border-radius:999px;width:100%}
.login .btn:hover{background:var(--wm-d)}
.gempty:hover{border-color:var(--wm);color:var(--wm)}
.box{border-radius:16px}.box h3{color:var(--wm-n)}
.bt{font-size:18px;line-height:1.2}.brand{min-height:40px}
.nav .bdg.cnt,.nav.on .bdg.cnt{background:var(--wm-n)!important;color:#fff!important;border:1px solid rgba(255,255,255,.55)}
.nav.on .bdg.cnt{background:#fff!important;color:var(--wm-n)!important}
#it td,#it th{padding-left:3px;padding-right:3px}
#it .pill{padding:1px 5px}
.nav .bdg.tagb{background:var(--wm-n);color:#fff;font-weight:700;border:1px solid rgba(255,255,255,.55)}.nav.on .bdg.tagb{background:#fff;color:var(--wm-n)}
.gemt td.gml{white-space:normal;font-size:12px;line-height:1.5;color:var(--wm-sub);font-weight:400;word-break:break-word}
tr.itp>td.gml,tr.itp:hover>td.gml{font-weight:400;color:var(--wm-sub)}
.irt{width:100%;margin:4px 0 8px}.irt th{background:var(--wm-bg)!important;color:var(--wm-n)!important}.irt th *{color:var(--wm-n)!important}
/* 登录页（Walmart 风格） */
.lgw{display:flex;min-height:100vh;background:#fff}
.lgl{width:32%;min-width:260px;background:#041E42;display:flex;align-items:center;justify-content:center}
.lgmark{text-align:left}
.lgword{color:#fff;font-weight:800;font-size:30px;letter-spacing:.5px;display:flex;align-items:center;gap:8px}
.lgspark svg{width:36px;height:36px;display:block}
.lgsub{color:#fff;opacity:.7;font-size:13px;margin-top:4px}
.lgr{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:10vh 24px 24px}
.lgc{width:340px;min-height:340px;border:1px solid #dadce0;box-shadow:0 1px 4px rgba(0,0,0,.06);padding:26px 22px;display:flex;flex-direction:column;background:#fff}
.lgc h2{text-align:center;margin:0 0 14px;font-size:24px;font-weight:800;color:#2E2F32}
.lgc label{font-size:13px;font-weight:700;color:#2E2F32;margin:8px 0 5px}
.lgc input{width:100%;box-sizing:border-box;height:38px;border:1px solid #c7c8ca;border-radius:4px;padding:0 10px;font-size:14px;margin:0}
.lgc input:focus{outline:2px solid #0071DC;outline-offset:0;border-color:#0071DC}
.lgpw{position:relative}.lgpw input{padding-right:40px}
.lgeye{position:absolute;right:4px;top:4px;width:30px;height:30px;border:0;background:none;color:#46474a;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px}
.lgeye:hover{background:#f2f2f2}
.lghint{font-size:12.5px;color:#74767C;margin:12px 0 18px}
.lgbtn{width:100%;height:40px;border:0;border-radius:4px;background:#0071DC;color:#fff;font-weight:700;font-size:15px;cursor:pointer}
.lgbtn:hover{background:#004F9A}
.lgbtn:disabled{background:#f2f2f2;color:#74767C;cursor:default}
@media (max-width:760px){.lgw{flex-direction:column}.lgl{width:100%;min-height:150px;padding:28px 0}.lgr{padding:28px 16px}.lgc{width:100%;max-width:380px;min-height:0}}
.lgw .lgc{min-height:360px;box-sizing:border-box}
#ovl .mask{position:fixed;inset:0;background:rgba(15,23,42,.35);display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;z-index:60}#ovl .box{background:#fff;border-radius:16px;padding:22px;min-width:420px;max-width:92vw;max-height:84vh;overflow:auto;box-shadow:0 20px 50px rgba(15,23,42,.3)}#ovl h3{margin:0 0 14px;color:var(--wm-n)}
.acdd{position:absolute;left:8px;top:40px;z-index:20;background:#fff;border:1px solid var(--wm-line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:240px;max-height:300px;overflow:auto}
.aci{padding:6px 10px;cursor:pointer;white-space:nowrap}.aci small{color:var(--wm-sub);margin-left:6px}.aci:hover,.aci.on{background:var(--wm-bg)}
.cht{cursor:pointer;opacity:.35;border:1px solid transparent}.cht.on{opacity:1;box-shadow:0 0 0 2px var(--wm)}.cht:disabled{cursor:default}
.l_hint{font-size:12px;margin-top:3px}
.btn.danger-o{background:#fff;color:#de1c24;border:1px solid #de1c24}.btn.danger-o:hover{background:#fdecec}
.fzh{display:inline-block;background:#fff4e0;color:#a35a00;border:1px solid #f5b041;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600}
.ach{padding:4px 10px;font-size:11px;font-weight:700;color:#a35a00;background:#fff8ec;border-top:1px solid var(--wm-line)}
.ndl{font-weight:700;color:var(--wm-ink,#2e2f32);margin-left:4px}
.ndw{position:relative;display:inline-flex;align-items:center}
.ndw #ndp{width:34px;padding:6px 4px;margin-left:4px;color:transparent;cursor:pointer}
.ndw #ndp::-webkit-datetime-edit{display:none}
.lockt{font-size:12px;font-weight:600;color:#2e7d32;background:#e8f5e9;border-radius:10px;padding:2px 8px;margin-left:6px}
.rov{gap:24px;margin:6px 0 10px}.rov span{color:var(--wm-sub,#555)}.rov b{color:#111}
.unlk{background:#fff4e0;border:1px solid #f5b041;color:#8a4b00;border-radius:8px;padding:6px 10px;font-size:13px;margin:4px 0 10px}

/* 添加/修改大袋：大对话框，左表单+美度，右产品图例 */
#modal .box.bagbox{width:1100px;max-width:96vw;max-height:94vh;padding:18px 22px}
.bagdlg{display:grid;grid-template-columns:460px 1fr;gap:24px;align-items:start}
.bagl h3{margin:0 0 10px}.bagl .row label{font-size:13px}
.bzt{margin:0;width:100%;border:1px solid var(--wm-line,#e3e4e5);border-radius:8px}.bzt td,.bzt th{padding:2px 12px;line-height:1.2}
.bzt .pill{font-size:12px;padding:1px 8px}.bzt .bz{width:110px;text-align:right;padding:3px 8px;height:26px}.bzt .bzs td{background:#f5f6f7;padding:5px 12px}
.bagr{border-left:1px solid var(--wm-line,#e3e4e5);padding-left:22px}.bagrh{font-weight:700;margin:2px 0 10px}
.bimgs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.bimg{display:flex;flex-direction:column;gap:4px}.bimgt{font-size:12px;color:var(--wm-sub,#6d6e71);font-weight:600}
.bth,.bph{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;border:1px solid var(--wm-line,#e3e4e5);background:#f8fafc}
.bth{cursor:zoom-in}.bth img{width:100%;height:100%;object-fit:contain}.bth:hover{box-shadow:0 0 0 2px var(--wm,#0071dc)}
.bph{display:flex;align-items:center;justify-content:center;color:#9a9b9d;font-size:13px}
#lbx{position:fixed;inset:0;background:rgba(4,30,66,.88);z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:zoom-out}
#lbx .lbt{color:#fff;font-weight:700;margin-bottom:10px}#lbx .lbt .muted{color:#c9d3e0;font-weight:400}
#lbx .lbi{position:relative;max-width:88vw;max-height:84vh}#lbx .lbi img{display:block;max-width:88vw;max-height:84vh;object-fit:contain;background:#fff;border-radius:8px}
#lbx .lbn{position:fixed;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;border:0;background:rgba(255,255,255,.9);font-size:30px;cursor:pointer;color:#041e42}
#lbx .lbp{left:24px}#lbx .lbn.lbx{right:24px}
@media (max-width:900px){.bagdlg{grid-template-columns:1fr}.bagr{border-left:0;padding-left:0}}
/* 数量整数校验 */
input.qbad{border-color:#de1c24!important;box-shadow:0 0 0 2px rgba(222,28,36,.15)}
input.qbig{border-color:#f5a623!important;box-shadow:0 0 0 2px rgba(245,166,35,.2)}
.qh{display:block;font-size:11px;line-height:1.3;margin-top:2px;white-space:nowrap;font-weight:600}.qh.bad{color:#de1c24}.qh.big{color:#b86e00}
td.n .qh{text-align:right}
/* ② 录大袋和小袋：简单、字大、防呆 */
.bsubh{font-size:13px;font-weight:400;color:var(--wm-sub,#6d6e71);margin-left:8px}
.bigcard .linehead{font-size:16px;gap:14px;align-items:center}.bigcard .linehead .pill{font-size:14px}
.lst{display:inline-block;border-radius:999px;padding:3px 12px;font-weight:700;font-size:14px}
.lst.none{background:#eef0f2;color:#5a5c5f}.lst.ok{background:#e6f4ea;color:#1e7e34}.lst.warn{background:#fff4e0;color:#a35a00}.lst.bad{background:#fdecec;color:#c0161d}
.btn.addbag{margin-left:auto;font-size:15px;padding:8px 18px}
.bagt td,.bagt th{font-size:14px}
/* 删除草稿：平时灰色，鼠标放上去/选中才变红 */
.btn.ndelg{background:#fff;color:#8a8c8f;border:1px solid #c9cbce;margin-right:8px}
.btn.ndelg:hover,.btn.ndelg:focus-visible{background:#de1c24;color:#fff;border-color:#de1c24;cursor:pointer}
.hrw{background:#fdecec;color:#c0161d;border-radius:8px;padding:6px 10px;font-size:14px}
/* 表格里的删除按钮：和「删除草稿」一样，平时灰色，鼠标放上去/选中才变红 */
table .btn.red,table .btn.danger-o,table .btn.danger{background:#fff;color:#8a8c8f;border:1px solid #c9cbce;box-shadow:none}
table .btn.red:hover:not(:disabled),table .btn.danger-o:hover:not(:disabled),table .btn.danger:hover:not(:disabled),
table .btn.red:focus-visible,table .btn.danger-o:focus-visible,table .btn.danger:focus-visible{background:#de1c24;color:#fff;border-color:#de1c24}

/* 送货单识别 */
.ocrz{border:3px dashed #b9c4d6;border-radius:12px;padding:16px;margin:10px 0;cursor:pointer;background:#f7f9fc;min-height:140px;display:flex;align-items:center;justify-content:center;gap:16px;text-align:center}.ocri{font-size:52px;line-height:1}.ocrt{font-size:20px;font-weight:600;color:#2a3550}.ocrz.busy .ocrt{color:#2f6fed}
.ocrz:hover,.ocrz.drag,.ocrz:focus{border-color:#2f6fed;background:#eef4ff;outline:none}.ocrz.busy{cursor:wait;color:#2f6fed}
.ocrsum{padding:10px 12px;border-radius:8px;margin:6px 0 10px;background:#eefaf0;border:1px solid #bfe5c6}
.ocrsum.warn{background:#fff8e6;border-color:#f0d58a}.ocrsum.bad{background:#fdeeee;border-color:#f0b5b5}
.ocrg.on{display:grid;grid-template-columns:minmax(0,42fr) minmax(0,58fr);grid-template-areas:'img tbl';gap:14px;align-items:stretch}.ocrg.on #ocri{grid-area:img}.ocrg.on .ocrl{grid-area:tbl}.ocrg.on .ocrl{overflow-x:auto;min-width:0}.ocrg.on #nl .l_sc{width:110px!important}
.ocrimg{position:sticky;top:10px;border:1px solid #dde3ec;border-radius:8px;padding:8px;background:#fff;min-height:500px;max-height:calc(100vh - 40px);overflow:auto;box-sizing:border-box}.ocrimg img{width:100%;cursor:zoom-in;display:block;margin-top:4px}
#nl tr.o_warn td{background:#fffaf0}#nl tr.o_bad td{background:#fff3f3}.lst.warn{background:#fff1cc;color:#8a5a00}.ocrw{font-size:12px;color:#8a5a00;display:block;max-width:190px;white-space:normal;line-height:1.3}.ocrg.on #nl td,.ocrg.on #nl th{padding-left:6px;padding-right:6px}
.nfiles{margin-top:8px}.nfth{height:60px;border:1px solid #ccd;border-radius:4px;cursor:zoom-in}
.ocrt small{display:block;font-size:13px;font-weight:400;color:#7a8499;margin-top:6px}.ocrz:focus{border-color:#2f6fed;background:#eef4ff;outline:none}
.ocrg.on #ocri{min-height:500px}.ocrg.on .hlong{display:none}.ocrg.on #nl{width:100%}.ocrg.on #nl .l_sc{width:96px!important}.ocrg.on #nl .l_q{width:62px!important}
.ocrg.on #nl td.l_fz{max-width:170px;white-space:normal;font-size:12px;line-height:1.3}.ocrg.on #nl .l_fz .fzh{white-space:normal}.ocrg.on #nl td,.ocrg.on #nl th{padding-left:5px;padding-right:5px}
.ocrg.on .l_ch .chip,.ocrg.on .l_ch button{padding-left:6px;padding-right:6px}
/* 需复查（请看一下 / 近似型号）：很浅的红；要改：更深的红；认出：绿色不变 */
.fzh{background:#fff1f1;color:#d93025;border:1px solid #f4a7a2}
#nl tr.o_warn td,#nl tr:has(.fzh) td,#pl tr:has(.fzh) td,.bagt tr:has(.fzh) td{background:#fff1f1}
#nl .lst.warn,.ocrsum .lst.warn{background:#fde4e2;color:#d93025;border:1px solid #f4a7a2}.ocrw{color:#d93025}
#nl tr.o_bad td{background:#fbd5d2}#nl .lst.bad,.ocrsum .lst.bad{background:#c5221f;color:#fff;border:1px solid #a50e0e}
.ocrsum.warn{background:#fff1f1;border-color:#f4a7a2}
#nl tr.o_amt td{background:#fff1f1}.ntot{margin:8px 0 0;padding:8px 10px;background:#f6f8fb;border-radius:8px;font-size:15px}.ntot b{font-size:17px}
.ocrg.on #nl .l_p{width:64px!important}.ocrg.on #nl .l_a{width:80px!important}
#nl input[type=number]::-webkit-inner-spin-button,#nl input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}#nl input[type=number]{-moz-appearance:textfield;text-align:right;padding-left:4px;padding-right:6px}
.ocrg.on{grid-template-columns:minmax(0,38fr) minmax(0,62fr)!important}.ocrg.on #nl .l_sc{width:84px!important}.ocrg.on #nl .l_q{width:50px!important}.ocrg.on #nl .l_p{width:60px!important}.ocrg.on #nl .l_a{width:78px!important}
.ocrg.on #nl td.l_fz{max-width:120px}.ocrg.on #nl .lst{white-space:nowrap}
.totbad{display:inline-block;background:#fff1f1;border:1px solid #f4a7a2;color:#d93025;border-radius:6px;padding:3px 10px;font-weight:600}.totbad small{font-weight:400;margin-left:8px;font-size:12px}
.l_ch{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.l_ch .cht{order:1;margin:0}.l_ch .cht.on{order:0}  /* 选中的颜色永远在最左边，切换时只改顺序不动状态 */
.ocrq:empty{display:none}.ocrq{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:-4px 0 8px;padding:6px 10px;background:#f6f8fb;border:1px solid #dde3ec;border-radius:8px;font-size:13px}.ocrqf{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid #ccd5e3;border-radius:12px;padding:2px 4px 2px 10px}.ocrqx{border:0;background:none;color:#888;cursor:pointer;font-size:12px;padding:0 4px}.ocrqx:hover{color:#d93025}
.btn.nedtg{background:#fff;color:#8a8c8f;border:1px solid #c9cbce;margin-right:8px}.btn.nedtg:hover,.btn.nedtg:focus-visible{background:#1a66d2;color:#fff;border-color:#1a66d2;cursor:pointer}
/* 添加大袋：美度和数量挨着（窄表，左对齐） */
.bzt{width:auto;table-layout:fixed;border-collapse:separate}
.bzt th:first-child,.bzt td:first-child{width:90px;padding:2px 6px 2px 10px}
.bzt th:last-child,.bzt td:last-child{width:110px;padding:2px 10px 2px 0;text-align:left;white-space:nowrap;overflow:visible}
.bzt .bz{width:100px}
.bzt .bzs td{padding:5px 10px 5px 0}.bzt .bzs td:first-child{padding-left:10px}
.bzt .qh{display:block;white-space:nowrap}
.bzt th:last-child,.bzt td:last-child{width:230px;padding:2px 10px 2px 0}
.bzt th:nth-child(2),.bzt td:nth-child(2){width:110px;padding:2px 10px 2px 0;text-align:left;white-space:nowrap;overflow:visible}
.bzt .bzn{width:220px;height:26px;padding:3px 8px;text-align:left}.bzt .bzn{color:#D92D20}.bzt .bzn::placeholder{color:#a3a6aa}
.bznote{font-size:11px;color:#D92D20;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0 auto;text-align:right}
@media (min-width:901px){.bagdlg{grid-template-columns:auto 1fr}}
/* ② 每个型号一行：固定列，上下对齐 */
.bigcard .linehead.lhg{font-size:15px;display:grid;grid-template-columns:calc(12ch + 8px) 66px 128px 108px 110px minmax(0,1fr) auto;gap:12px;align-items:center}
.lhg .lh-m{font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lhg .lh-c .pill{display:inline-block;width:60px;text-align:center;box-sizing:border-box}
.lhg .lh-c.bad{grid-column:span 1;white-space:nowrap;font-size:13px}
.lhg .lh-q{display:grid;grid-template-columns:auto 1fr auto;gap:4px;align-items:baseline;white-space:nowrap}
.lhg .lh-q b{text-align:right;font-variant-numeric:tabular-nums}
.lhg .lh-s{justify-self:start}.lhg .lh-b{justify-self:end}
@media (max-width:900px){.bigcard .linehead.lhg{grid-template-columns:110px 76px 1fr 1fr;}.lhg .lh-x,.lhg .lh-b{grid-column:1/-1}}
.dlog{margin-top:14px}.dlog h4{margin:0 0 6px;color:#D92D20}.dlog tr.muted td{color:#8a8c8f}
/* 数字框不要上下小箭头（全站） */
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;margin:0}
/* 添加大袋 右侧：三个数 + 两两比较 */
.bchk{margin-top:16px;border:1px solid var(--line,#e3e4e5);border-radius:10px;padding:14px;background:#fff}
.bck3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
.bck3 div{background:#f5f6f7;border-radius:8px;padding:8px 12px}.bck3 span{display:block;font-size:13px;color:#5f6368}.bck3 b{font-size:30px;font-variant-numeric:tabular-nums;line-height:1.2}
.bckp{border-radius:6px;padding:6px 10px;margin:4px 0;font-size:15px;font-weight:600}
.bckp.ok{background:#ecfdf3;color:#067647}.bckp.bad{background:#fef3f2;color:#D92D20}.bckn{margin-top:6px;font-size:12px}
.bck3 .ref{background:#fafafa;border:1px dashed #d0d3d6}.bck3 .ref b{color:#5f6368}
/* 添加大袋：几乎全屏，两栏自动缩放，不出横向滚动条；字大，仓库看得清 */
#modal .box.bagbox{position:fixed;left:3vw;top:3vh;width:94vw;height:94vh;max-width:none;max-height:none;min-width:0;box-sizing:border-box;overflow-x:hidden;overflow-y:auto;padding:16px 20px}
#modal .box.bagbox .bagdlg{grid-template-columns:minmax(0,45fr) minmax(0,55fr);gap:20px}
.bagbox .bagl,.bagbox .bagr{min-width:0}
.bagbox .bagl h3{font-size:20px}
.bagbox .bagl .row{flex-wrap:wrap;gap:10px}.bagbox .bagl .row label{font-size:16px;flex:1 1 120px;min-width:0}
.bagbox .bagl .row input{font-size:18px;height:40px;width:100%!important;box-sizing:border-box}
.bagbox .bzt{width:100%;table-layout:fixed}
.bagbox .bzt th{font-size:15px}
.bagbox .bzt th:first-child,.bagbox .bzt td:first-child{width:28%}
.bagbox .bzt th:nth-child(2),.bagbox .bzt td:nth-child(2){width:24%}
.bagbox .bzt th:last-child,.bagbox .bzt td:last-child{width:auto}
.bagbox .bzt td{height:40px;padding-top:3px;padding-bottom:3px}
.bagbox .bzt td:first-child .pill{font-size:20px;font-weight:700;padding:2px 10px}
.bagbox .bzt .bz{font-size:20px;height:36px;width:100%;box-sizing:border-box;font-weight:600}
.bagbox .bzt .bzn{font-size:16px;height:36px;width:100%;box-sizing:border-box}
.bagbox .bzt .bzs td{font-size:20px}
.bagbox .bimgs{gap:10px}.bagbox .bth,.bagbox .bph{max-height:24vh;width:100%;margin:0 auto}
.bagbox .bimg{min-width:0;align-items:center}.bagbox .bimgt{align-self:flex-start}
.bagbox .bck3 b{font-size:clamp(26px,3vw,40px)}.bagbox .bck3 span{font-size:15px}.bagbox .bckp{font-size:18px}
@media (max-width:760px){#modal .box.bagbox .bagdlg{grid-template-columns:1fr}.bagbox .bagr{border-left:0;padding-left:0}}
.bzt .bzn,.bzt .bzn::placeholder,.bznote{font-weight:400!important}
.bagbox .bckn,.bagbox .bckp{white-space:normal;overflow-wrap:anywhere}
/* 添加大袋：半码行整行浅灰，整码行白色（不用斑马纹）；输入框保持白色 */
.bzt tr.bzwhole td{background:#fff!important}.bzt tr.bzhalf td{background:#EEF0F3!important}
.bzt tr.bzhalf input,.bzt tr.bzwhole input{background:#fff}
/* 半码行底色 + 输入框缩小，底色从上下右露出来 */
.bzt tr.bzhalf td{background:rgb(200,230,255)!important}
.bagbox .bzt td{height:42px;padding-top:6px!important;padding-bottom:6px!important;box-sizing:border-box}
.bagbox .bzt .bz{height:30px;width:85%;font-size:19px;padding:2px 8px}
.bagbox .bzt .bzn{height:30px;width:85%;font-size:15px;padding:2px 8px}
/* 添加大袋 新布局：左 30%（标题+PO/标签+美度表），右 70%（上 65% 图1–3，下 35% 差异） */
#modal .box.bagbox{display:flex;flex-direction:column}
#modal .box.bagbox .bagdlg{grid-template-columns:minmax(0,30fr) minmax(0,70fr);gap:18px;flex:1;min-height:0}
.bagbox .bagt3{font-size:19px;line-height:1.5}.bagbox .bagt3 .bdq{white-space:nowrap;font-weight:600;color:#3c4043;margin-left:4px}.bagbox .bagt3 .bdq b{font-size:22px;color:#0b1f3a}
.bagbox .bagl .row{flex-wrap:nowrap;gap:10px}
.bagbox .bagl .row label{flex:none}
.bagbox .bagl .row #bpo{width:17ch!important;max-width:100%}
.bagbox .bagl .row #bq{width:6ch!important}
.bagbox .bagl .row label:first-child{flex:0 1 auto;min-width:0}
.bagbox .bzt th:first-child,.bagbox .bzt td:first-child{width:118px}
.bagbox .bzt th:nth-child(2),.bagbox .bzt td:nth-child(2){width:82px}
.bagbox .bzt .bz{width:70px}
.bagbox .bzt .bzn{width:calc(100% - 8px)}
.bagbox .bagr{display:flex;flex-direction:column;min-height:0;height:100%}
.bagbox .bagrh{flex:none}
.bagbox .bimgs{flex:65 1 0;min-height:0}
.bagbox .bimg{min-height:0;height:100%;align-items:stretch}
.bagbox .bth,.bagbox .bph{flex:1 1 0;min-height:0;max-height:none;aspect-ratio:auto;width:100%}
.bagbox .bchk{flex:35 1 0;min-height:0;overflow:auto;margin-top:12px}
@media (max-width:760px){#modal .box.bagbox .bagdlg{grid-template-columns:1fr}.bagbox .bagr{height:auto}.bagbox .bimgs{height:40vh;flex:none}}
.bagbox .bagl .row #bpo{width:180px!important}
.bagbox .bzt .bzn{width:150px!important;max-width:100%}
#modal .box.bagbox .bagdlg{grid-template-columns:minmax(380px,30fr) minmax(0,70fr)}
.bagbox .bagr{height:calc(94vh - 36px);position:sticky;top:0;align-self:start}
/* PO 行：PO 填满，标签数量小；图1–3 正方形（JS 定边长），图片 contain 居中 */
.bagbox .bagl .row{display:flex;flex-wrap:nowrap;gap:10px;max-width:100%}
.bagbox .bagl .row label:first-child{flex:1 1 auto;min-width:0}.bagbox .bagl .row label:first-child #bpo{width:100%!important}
.bagbox .bagl .row label:last-child{flex:none}
.bagbox .bimg{align-items:flex-start}
.bagbox .bth,.bagbox .bph{flex:none;aspect-ratio:1/1;max-width:100%}
.bagbox .bth img{width:100%;height:100%;object-fit:contain;object-position:center}
/* 取消/保存：右栏右下角，大按钮，一直看得见 */
.bagbox .bagbtns{flex:none;display:flex;justify-content:flex-end;gap:16px;margin-top:12px}
.bagbox .bagbtns .btn{height:56px;min-width:140px;font-size:20px;border-radius:12px;padding:0 24px}
.bagbox .bagbtns .btn:not(.pri){background:#fff;border:2px solid #0b1f3a;color:#0b1f3a}
/* 内容区窄时整体按比例缩小，保持 左表/右图 两栏 */
#modal .box.bagbox.bagsm .bagdlg{grid-template-columns:minmax(0,42fr) minmax(0,58fr);gap:12px}
.bagbox.bagsm{padding:12px 14px!important}
.bagbox.bagsm .bagt3{font-size:16px}.bagbox.bagsm .bagt3 .bdq b{font-size:18px}
.bagbox.bagsm .bagl .row label{font-size:14px}.bagbox.bagsm .bagl .row input{font-size:16px;height:34px}
.bagbox.bagsm .bzt th:first-child,.bagbox.bagsm .bzt td:first-child{width:92px}
.bagbox.bagsm .bzt th:nth-child(2),.bagbox.bagsm .bzt td:nth-child(2){width:62px}
.bagbox.bagsm .bzt td:first-child .pill{font-size:16px;padding:1px 6px}
.bagbox.bagsm .bzt .bz{width:54px;font-size:17px;height:28px}
.bagbox.bagsm .bzt .bzn{width:110px!important;height:28px}
.bagbox.bagsm .bzt td{height:38px;padding-top:5px!important;padding-bottom:5px!important}
.bagbox.bagsm .bck3{gap:6px}.bagbox.bagsm .bck3 div{padding:6px 8px}.bagbox.bagsm .bck3 span{font-size:12px}.bagbox.bagsm .bck3 b{font-size:24px}
.bagbox.bagsm .bckp{font-size:15px}
.bagbox.bagsm .bagbtns .btn{height:48px;min-width:110px;font-size:18px}
/* 左右互换：左 = 图1–3 + 差异（70%），右 = 录入（30%）；按钮在右栏底部右下角一直看得见 */
#modal .box.bagbox{overflow:hidden}
#modal .box.bagbox .bagdlg{grid-template-columns:minmax(0,70fr) minmax(380px,30fr)}
#modal .box.bagbox.bagsm .bagdlg{grid-template-columns:minmax(0,58fr) minmax(0,42fr)}
.bagbox .bagr{order:-1;border-left:0;padding-left:0;border-right:1px solid var(--wm-line,#e3e4e5);padding-right:18px;position:static}
.bagbox .bagl{overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;min-height:0}
.bagbox .bagl .bzt{flex:none}
.bagbox .bagbtns{position:sticky;bottom:0;background:#fff;padding:10px 0 2px;margin-top:auto;z-index:2}
.bagbox .bchk{flex:none;padding-bottom:12px}.bagbox .bimgs{flex:1 1 0}
/* 图1–3 高度=正方形；差异框占满下面空间，内容放大、上下均匀 */
.bagbox .bimgs{flex:none!important}
.bagbox .bchk{flex:1 1 auto!important;min-height:0;margin-top:12px;display:flex;flex-direction:column;justify-content:space-evenly;gap:10px;padding:14px 16px!important;overflow:hidden}
.bagbox .bchk .bck3{margin:0;gap:12px}.bagbox .bchk .bck3 div{padding:10px 14px}
.bagbox .bchk .bck3 span,.bagbox.bagsm .bchk .bck3 span{font-size:18px}
.bagbox .bchk .bck3 b,.bagbox.bagsm .bchk .bck3 b{font-size:clamp(36px,4.2vw,56px);line-height:1.15}
.bagbox .bchk .bckp,.bagbox.bagsm .bchk .bckp{font-size:22px;padding:10px 14px;margin:0}
.bagbox .bchk .bckn{font-size:14px;margin:0}
/* 备注框填满格子（右边留 8px），和表格右边对齐 */
#modal .bagbox .bzt td .bzn,#modal .bagbox.bagsm .bzt td .bzn{width:calc(100% - 8px)!important;max-width:none}
#modal .bagbox .bzt td:last-child{padding-right:0!important}

.bagdone{display:inline-block;border:1px solid #c4c4c4;color:#888;background:#fff;border-radius:8px;padding:6px 14px;font-weight:600;cursor:default;user-select:none}
.bagdone.bagbig{border-color:#D92D20;background:#D92D20;color:#fff}

#ask .askm{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.25)}
#ask .askb{position:fixed;left:50%;top:37vh;transform:translateX(-50%);width:max(330px,32vw);min-height:max(190px,33vh);max-height:60vh;box-sizing:border-box;background:#fff;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.35);padding:clamp(14px,1.8vw,24px);display:flex;flex-direction:column;gap:12px}
#ask .askt{white-space:pre-line;font-size:clamp(16px,1.6vw,22px);line-height:1.45;color:#111;overflow:auto;flex:1}
#ask .askbtn{display:flex;justify-content:flex-end;gap:12px}
#ask .askbtn .btn{font-size:clamp(16px,1.5vw,20px);padding:8px 26px;min-height:44px}
.ncrow{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ncrow>p{margin:0}
.ncact{display:flex;align-items:center;gap:10px;margin-left:auto}
.btn.ncbig{min-width:150px;height:55px;font-size:19px;font-weight:700;padding:0 22px}
.btn.ncbig.ncoff{background:#d0d5dd;color:#667085;border-color:#d0d5dd;cursor:not-allowed}
.nchint{color:#D92D20;font-weight:600;font-size:15px}
.ncst{display:inline-flex;flex-direction:column;align-items:center;gap:4px}
.ncst .nchint{font-size:14px;white-space:nowrap}
.bqh{display:block;font-size:11px;line-height:1.3;margin-top:2px;white-space:nowrap;font-weight:600;color:#b86e00}.bqh[hidden]{display:none}
.facform{min-width:min(560px,86vw)}
.wtodos{display:flex;flex-wrap:wrap;gap:12px}
.wtodo{display:flex;align-items:center;gap:10px;padding:12px 18px;border:1px solid #f5c26b;background:#fff8eb;border-radius:12px;color:#7a4b00;text-decoration:none;font-size:16px}
.wtodo b{font-size:26px;color:#D92D20}.wtodo:hover{background:#ffefd1}
.wrange{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wtab tr.wsub td{background:#f2f4f7;font-weight:700}.wtab tr.wtot td{background:#e6edf7;font-weight:800;font-size:15px}
.invt td.iind{width:14px;padding-left:4px;padding-right:0}
.invt .binp{width:calc(12ch + 16px);padding:3px 6px;font-size:13px}
.invt td:has(>.binp){position:relative;width:1%}
.invt .binok{position:absolute;left:10px;bottom:-1px;color:#12b76a;font-size:11px;font-weight:600;white-space:nowrap;pointer-events:none}
.invt tr.igp td:nth-child(2){white-space:nowrap;width:1%}
td.rmk{color:inherit;font-size:13px;white-space:pre-line;max-width:320px}
.rtot{margin-left:18px;font-size:16px;font-weight:600}.rtot b{font-size:26px;font-weight:800;color:#0b3d91;margin-left:6px}

.scanbox{width:min(1100px,94vw)}
.sctab td{vertical-align:top}.sctab input{width:100%;box-sizing:border-box}.sctab .sc_t{width:auto}
.sctab .sc_n{min-width:90px}.sctab .sc_d{min-width:130px}.sctab .sc_q{width:80px}.sctab .sc_a{width:100px}.sctab .sc_m{min-width:110px}
.sc_info{max-width:300px}.sc_ti{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}
.sc_dup{opacity:.6}
.sc_dupt{color:var(--red);font-weight:700;font-size:13px}
.ocrz.slim{min-height:0;height:58px;padding:6px 16px;gap:12px;border-width:2px;border-color:#7aa2f0;background:#eef4ff;box-sizing:border-box}
.ocrz.slim .ocri{font-size:26px}.ocrz.slim .ocrt{font-size:15px;display:flex;align-items:baseline;gap:12px}.ocrz.slim .ocrt small{display:inline;margin-top:0;font-size:12px}

/* ===== 左侧窄栏 + 弹出菜单 ===== */
:root{--railw:72px}
.side.rail{width:var(--railw);background:var(--wm-n);overflow:visible;position:relative;z-index:30}
.rail .brand{flex-direction:column;gap:2px;padding:10px 4px 8px;border-bottom:1px solid rgba(255,255,255,.12);text-align:center}
.rail .gem{width:30px;height:30px}.rail .gem svg{width:26px;height:26px}.rail .bt{font-size:10px;line-height:1.15;letter-spacing:.5px}
.rail .navs{padding:6px 0;overflow:visible}
.rg{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:9px 2px;margin:2px 6px;border-radius:10px;color:#cbd5e1;cursor:pointer;user-select:none}
.rg>.ic{width:22px;height:22px;color:#cbd5e1}.rgl{font-size:12px}
.rg:hover,.rg.open{background:rgba(255,255,255,.1);color:#fff}.rg:hover>.ic,.rg.open>.ic{color:#fff}
.rg.on{background:var(--wm);color:#fff;font-weight:700}.rg.on>.ic{color:var(--wm-y)}
.rgd{display:none;position:absolute;top:6px;right:10px;width:8px;height:8px;border-radius:50%;background:var(--wm-y);box-shadow:0 0 0 2px var(--wm-n)}.rg.hasb .rgd{display:block}
.fly{display:none;position:fixed;left:calc(var(--railw) - 2px);width:190px;background:#fff;color:var(--wm-txt);border-radius:0 10px 10px 0;box-shadow:6px 8px 24px rgba(4,30,66,.22);padding:8px;z-index:40;cursor:default;font-weight:400}
.rg.open .fly{display:block}
.fly .nav{color:var(--wm-txt);border-radius:8px;padding:8px 10px;margin:1px 0}.fly .nav:hover{background:var(--wm-bg)}
.fly .nav.on{background:var(--blue-l);color:var(--wm);font-weight:700;box-shadow:inset 3px 0 0 var(--wm)}
.fly .nav .bdg.tagb,.fly .nav.on .bdg.tagb,.fly .nav .bdg.cnt,.fly .nav.on .bdg.cnt{background:var(--wm-n)!important;color:#fff!important;border:none}
#modal .mask,#ovl .mask{left:var(--railw)}
.fly .nav.on:hover{background:var(--blue-l);color:var(--wm)}
.pwbad{color:var(--red,#dc2626);font-weight:700;font-size:13px;margin:4px 0 6px}input.errin{border-color:var(--red,#dc2626)!important;background:#fff5f5}
.tag.mtag{font-size:11px;padding:0 6px;background:#fff7e6;color:#b45309;border:1px solid #f5c26b;font-weight:600}
.top .crumb{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clocks{flex:1;display:flex;justify-content:space-evenly;align-items:center;min-width:0}
.clk{display:flex;align-items:baseline;gap:6px;white-space:nowrap;min-width:150px}
.clk .cl{font-size:11px;color:var(--sub)}.clk .ct{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--txt)}
@media (max-width:1100px){.clk3{display:none}}
@media (max-width:900px){.clocks{display:none}.top .crumb{flex:1}}
.clk .cwk{font-weight:500}.clk .holi{color:#ea580c;font-weight:700}
.clk3{min-width:0}
.hrpend .hl{font-size:26px}.hrpend.warn{border-color:#f59e0b;background:#fffbeb}
.holi{color:#ea580c}.wdbox{display:flex;flex-wrap:wrap;gap:10px}.wdbox label{display:flex;align-items:center;gap:4px;font-weight:400}.wdbox input{width:auto}
.lvdays{margin-top:12px;font-size:13px}.lvdays b{font-size:16px}.lvdays b.bad{color:var(--red)}
.calbtn{border:1px solid var(--line);background:#fff;border-radius:8px;width:30px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--sub);padding:0;flex:none}
.calbtn:hover{color:#0071ce;border-color:#0071ce}.calbtn svg{width:16px;height:16px}
#calpop{position:fixed;z-index:60;width:460px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.18);padding:12px 14px;font-size:13px}
.calh{display:flex;align-items:center;gap:8px}.calh select{padding:3px 6px;border-radius:8px;font-size:13px;width:auto}.calnav{flex:1;display:flex;align-items:center;justify-content:center;gap:2px}
.calar{border:0;background:none;font-size:20px;line-height:1;cursor:pointer;color:var(--sub);padding:0 6px}.calx{border:0;background:none;font-size:20px;cursor:pointer;color:var(--sub);padding:0 2px}
.calw{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;color:var(--sub);margin:10px 0 4px}.calw .we{color:#e11d48}
.calg{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cd{position:relative;text-align:center;padding:4px 0 3px;border-radius:8px;cursor:pointer;border:1.5px solid transparent;line-height:1.2}
.cd:hover{background:#f3f4f6}.cd b{display:block;font-size:17px;font-weight:600;color:var(--txt)}.cd small{display:block;font-size:10.5px;color:#4b5563;white-space:nowrap;overflow:hidden}
.cd small.fe{color:#0369a1}.cd.we b{color:#e11d48}.cd.off{background:#fff1f2}.cd.off b,.cd.off small{color:#e11d48}
.cd.oth{opacity:.4}.cd.tod{border-color:#3b82f6}.cd.tod b,.cd.tod small{color:#2563eb}.cd.sel{background:#e0ecff}.cd.sel.off{background:#ffe4e6}
.cd .bx{position:absolute;top:-3px;right:-2px;font-style:normal;font-size:10px;line-height:15px;padding:0 3px;border-radius:4px;color:#fff}
.bx.xiu{background:#e11d48}.bx.ban{background:#374151}.bx.jin{background:#3b82f6}
.calf{margin-top:10px;background:#f6f7fb;border-radius:10px;padding:10px 12px}.calf1{display:flex;gap:14px;align-items:flex-start}
.calln{font-size:17px;font-weight:700;white-space:nowrap}.calgz{font-size:12px;color:var(--sub);margin-top:2px;white-space:nowrap}
.calyj{flex:1;font-size:12.5px;line-height:1.7}.calyj i{font-style:normal;color:#fff;border-radius:4px;padding:0 4px;margin-right:6px;font-size:11px}.calyj .yi{background:#e11d48}.calyj .ji{background:#374151}
.calf2{border-top:1px solid #e5e7eb;margin-top:8px;padding-top:6px;color:#374151}.calf2 b{color:#e11d48}
.lgeye.pweye{top:50%;transform:translateY(-50%);width:28px;height:28px}.form .lgpw input{width:100%;box-sizing:border-box;padding-right:38px}
.amzt{color:#ea580c}.amzrem{margin-bottom:16px}.amzrem .hrl{font-size:14px;margin:4px 0}.amzrem .hrl b:not(.amzt){color:#ea580c}
.tag.amztag{background:#fff7ed;color:#c2410c;border:1px solid #fdba74}tr.amzon td{background:#fffaf3}
.cd .amzc{display:block;font-style:normal;font-size:9.5px;line-height:13px;margin:1px 3px 0;border-radius:3px;background:#f97316;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pwban{display:flex;gap:12px;align-items:center;justify-content:space-between;background:#fff7ed;border:1px solid #fdba74;border-left:4px solid #f97316;border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:14px}
.pwban a{color:#c2410c;font-weight:600}.pwbtn{white-space:nowrap}.pwauto{font-size:11px;background:#fef3c7;color:#92400e;border-radius:4px;padding:0 5px}
.pwchk{margin:0 0 12px;font-size:12.5px}.pwchk .bad{color:#dc2626}

/* 账号启用/暂停开关 */
.sw{position:relative;width:34px;height:18px;border-radius:9px;border:0;background:#c5cbd3;padding:0;vertical-align:middle;cursor:pointer;transition:background .15s}
.sw i{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:left .15s}
.sw.on{background:#22a35a}.sw.on i{left:18px}
.sw:disabled{cursor:default;opacity:.6}
.swl{margin-left:6px;font-size:12px;color:#6b7480;vertical-align:middle}

/* 账号表：admin 单独一行放最上面，下面隔开 */
tr.adminrow td{background:#f3f7fd;border-bottom:6px solid #dfe5ee}
tr.grpend td{border-bottom:6px solid #dfe5ee}  /* 账号表：部门之间隔开 */
.pon{color:#111;font-weight:700}.poff{color:#9aa1ab;font-weight:400;font-style:italic}  /* 工作时间表 人员：启用黑粗；暂停灰斜 */
.hc{color:#6b7480;font-weight:400;margin-left:1px}.hct{font-size:14px;font-weight:500;color:#6b7480}  /* 工作时间表 人数 */
/* 对齐：部门名定宽，人数（N）同一竖线起；数字等宽 */
td.dn{padding-right:2px;white-space:nowrap}
td.hc{padding-left:0;width:1%;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:left}
table.tnum td{font-variant-numeric:tabular-nums}
table.tnum .sw,table.tnum .swl{vertical-align:middle}
/* 团队成员卡片：标签列定宽，值左对齐成一条线 */
.tcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.tcards .card{margin:0}
.tcard .th{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.tcard .th b,.tcard .th i{font-size:15px}
.tcard .ts{font-size:12px;margin-top:2px}.tcard .tg{display:grid;grid-template-columns:4em 1fr;row-gap:6px;column-gap:10px;font-size:13px;font-variant-numeric:tabular-nums}
.tcard .tk{color:#6b7480}.tcard .tv{word-break:break-all}.tcard .tu{font-size:11px;margin-top:10px}.tcard.off{background:#fafbfc}
/* 首页 生日提醒 */
.bdt{width:auto;border-collapse:collapse}.bdt td{padding:3px 14px 3px 0;border:0;font-size:13px;white-space:nowrap}.bdt .bn{font-weight:700;min-width:4em}
.bdt tr.today td{color:#c2410c;font-weight:700}.bdt tr.today .bx{color:#c2410c}
/* 首页网格：12 列吸附，行高固定，卡片填满格子；小屏幕一列排、不能拖 */
.hgrid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:var(--hgr,22px);gap:var(--hgg,14px);margin-bottom:16px}
.hgrid>.gi{position:relative;min-width:0;min-height:0}
.hgrid>.gi>.card,.hgrid>.gi>.stat{margin:0;height:100%;box-sizing:border-box;overflow:auto}
.hgrid .hrl{margin:4px 0;font-size:13px}.hgrid .tag{margin:2px 4px 2px 0}
.gi>.gh{position:absolute;top:6px;right:8px;font-style:normal;font-size:14px;line-height:1;color:#9aa1ab;cursor:grab;padding:3px 4px;border-radius:6px;opacity:0;transition:opacity .15s;user-select:none;touch-action:none}
.gi>.gr{position:absolute;right:2px;bottom:2px;width:14px;height:14px;cursor:nwse-resize;opacity:0;transition:opacity .15s;touch-action:none;
  background:linear-gradient(135deg,transparent 0 55%,#9aa1ab 55% 62%,transparent 62% 72%,#9aa1ab 72% 79%,transparent 79%)}
.gi:hover>.gh,.gi:hover>.gr,.gi.drag>.gh,.gi.drag>.gr{opacity:1}.gi>.gh:hover{background:#eef1f5;color:#4b5563}
.gi.drag{z-index:5}.gi.drag>.card,.gi.drag>.stat{box-shadow:0 8px 24px rgba(16,24,40,.18);outline:2px dashed #93b4e8;outline-offset:2px}
.hgrid:has(.gi.drag){background-image:linear-gradient(to right,rgba(147,180,232,.12) 1px,transparent 1px);background-size:calc((100% + var(--hgg,14px)) / 12) 100%}
@media (max-width:760px){.hgrid{display:block}.hgrid>.gi{margin-bottom:12px}.hgrid>.gi>.card,.hgrid>.gi>.stat{height:auto;overflow:visible;overflow-x:auto}.gi>.gh,.gi>.gr{display:none}}
.card.empty{text-align:center;padding:56px 20px}.emptyic .ic{width:44px;height:44px;color:#9aa1ab}.emptyt{font-size:17px;font-weight:700;margin-top:12px;color:#374151}.emptyd{margin-top:6px;font-size:13px}  /* 空页面 */
/* 物流订单 */
.tag.lxs{min-width:52px;text-align:center}.tag.b{background:#dbeafe;color:#1d4ed8}.tag.c{background:#ccfbf1;color:#0f766e}
.lxf select,.lxf input[type=date]{width:auto}.lxt tr.lxr{cursor:pointer}.lxt tr.lxr:hover td{background:#f8fafc}.lxtk{font-variant-numeric:tabular-nums;white-space:nowrap}
.lxbox{min-width:620px}.lxkv{display:grid;grid-template-columns:96px 1fr;gap:6px 12px;margin:8px 0 4px}.lxk{color:var(--sub);font-size:13px}.lxbox h4{margin:14px 0 6px}
table.lxbt{width:100%;border-collapse:collapse}table.lxbt td,table.lxbt th{padding:4px 8px}table.lxbt th.n,table.lxbt td.n{text-align:right}.lxtot td{font-weight:700;border-top:1px solid #e5e7eb}
.lxform{min-width:620px}.lxg{display:grid;grid-template-columns:repeat(4,1fr);gap:0 12px}.lxg2{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}.lxg input,.lxg select,.lxg2 input{width:100%}
.lxbw{max-height:260px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px}.lxin2 input{width:100%;text-align:right;font-variant-numeric:tabular-nums;margin:0}.lxno{width:40px;color:var(--sub)}
.lxfx{display:inline-flex;align-items:center;gap:10px;margin-right:10px}.tag.lxnf{background:#f3f4f6;color:#6b7280;font-weight:600;margin:0}
.tag.lxsb{background:#fef3c7;color:#92400e}.tag.lxpr{background:#fee2e2;color:#b91c1c}.shbox{min-width:640px}.shbox .lxkv{grid-template-columns:110px 1fr}.shq{width:110px;text-align:right;font-variant-numeric:tabular-nums;margin:0}
.shwarn{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca;border-radius:8px;padding:8px 12px;margin:8px 0}
.shcfg{min-width:820px}.lxg3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 12px}.lxg3 .span2{grid-column:span 2}.lxg3 input,.lxg3 select{width:100%}
.shst{display:flex;gap:18px;align-items:center;margin:6px 0 2px;font-size:13px}.shst .tag{margin:0 0 0 4px}
table.shdt th{text-align:left;font-size:13px;color:var(--sub);font-weight:600}table.shdt td{padding:3px 4px}table.shdt input{width:100%;margin:0}table.shdt td:nth-child(1){width:84px}table.shdt td:nth-child(5){width:56px}table.shdt td:nth-child(6){width:84px}table.shdt td:nth-child(8){width:36px}
.fbsum{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.fbsum div{display:flex;flex-direction:column;gap:2px}.fbsum b{font-variant-numeric:tabular-nums;font-size:16px}.fbck{display:inline-flex;align-items:center;gap:4px;margin:0}
table.fbc{margin-bottom:8px}table.fbc th{text-align:left}table.fbc th .muted{color:#cbd5e1!important;font-weight:400}table.fbc th.n{text-align:right}table.fbc td:first-child,table.fbc th:first-child{width:150px}.fbr{cursor:pointer}.fbr:hover td{background:#f8fafc}
.rg.rgext{margin-top:18px}.rg.rgext::before{content:"";position:absolute;left:4px;right:4px;top:-10px;border-top:1px solid rgba(255,255,255,.28)}

/* 生产白板（矩阵卡：横 = 工序，竖 = 颜色×美度；A4 横向） */
.wbrow{padding:14px 16px}
.wbohd{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.wbot{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}
.wbot b{font-size:15px}
.wbact{display:flex;gap:6px;flex-shrink:0}
.wbcards{display:flex;gap:16px;overflow-x:auto;padding:4px 2px 10px;align-items:flex-start}
.wbcard{flex:0 0 820px;min-height:420px;background:#fff;border:1px solid #d9dee5;border-radius:4px;box-shadow:0 2px 6px rgba(15,23,42,.08);padding:16px 18px 10px;display:flex;flex-direction:column}
.wbhd{display:flex;align-items:baseline;gap:14px;border-bottom:2px solid #0f172a;padding-bottom:8px;margin-bottom:10px}
.wbhd .wbact{margin-left:auto}
.wbm{font-size:22px;font-weight:700;letter-spacing:.5px}
.wbtot{font-size:15px;color:#0f172a}
.wbt{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12.5px;font-variant-numeric:tabular-nums}
.wbt col.c1{width:104px}.wbt col.c2{width:56px}.wbt col.c3{width:72px}
.wbt th{font-weight:600;padding:6px 4px;white-space:nowrap}
.wbt td{border-bottom:1px solid #e2e8f0;padding:3px 4px;height:32px}
.wbt .n{text-align:right}
.wbln{white-space:nowrap}.wbln b{margin-left:6px}
.wbo{font-weight:700;background:#f8fafc}
.wbshc{background:#f8fafc}
.wbt tr.wbsum td{border-top:1.5px solid #0f172a;border-bottom:none;font-weight:700}
.wbq{width:100%;max-width:58px;text-align:right;border:1px solid #cbd5e1;background:#fff;border-radius:4px;padding:3px 6px;font:inherit;cursor:pointer}
.wbq.em{color:#94a3b8;background:#f8fafc}
.wbq:hover{border-color:#2563eb;background:#eff6ff}
.wbq.lo,.wbv.lo{color:#d83931;font-weight:700;border-color:#f3b4b0;background:#fef2f2}
.wbrc{font-weight:700}.wbrc.ok{color:#16a34a;background:#dcfce7}.wbrc.bad{color:#b91c1c;background:#fee2e2}.wbrc.warn{color:#92400e;background:#fef3c7}
.wbfoot{margin-top:auto;padding-top:8px;font-size:11px}
.wbform{display:grid;grid-template-columns:72px 1fr;gap:10px 12px;align-items:center;min-width:360px}

/* 配货白板 */
.pkgrid{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}
.pkcard{flex:0 0 620px;background:#fff;border:1px solid #d9dee5;border-top:6px solid var(--sc);border-radius:4px;box-shadow:0 2px 6px rgba(15,23,42,.08);padding:12px 16px 10px}
.pkhd{display:flex;align-items:center;gap:10px;padding-bottom:6px}
.pkhd .wbact{margin-left:auto}
.pkst{background:var(--sc);color:#fff;font-weight:700;padding:3px 10px;border-radius:4px;font-size:14px}
.pkti{font-weight:700;font-size:15px}
.pkmeta{font-size:11.5px;border-bottom:2px solid #0f172a;padding-bottom:6px;margin-bottom:8px}
.pkneed{font-weight:700;background:#f8fafc}
.pkshort{color:#d83931;font-weight:700;background:#fef2f2}
.pkby{font-size:11px;white-space:nowrap}
.pkleg{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.pkleg i{width:14px;height:14px;border-radius:3px;display:inline-block}
.pill.pk-待配货{background:#f1f5f9;color:#334155}.pill.pk-配货中{background:#dbeafe;color:#1d4ed8}.pill.pk-配货完毕{background:#dcfce7;color:#166534}

/* 采购产品 / 订单接收 */
.potab td{vertical-align:middle}
.poops{text-align:right;white-space:nowrap}.poops .btn{margin-left:6px}
.pill.po-w{background:#fef3c7;color:#92400e}.pill.po-ok{background:#dcfce7;color:#166534}
.poform{display:grid;grid-template-columns:72px 1fr 72px 1fr;gap:10px 12px;align-items:center;min-width:640px}
.poform .span3{grid-column:span 3}
.polines input.pl_m{width:110px}.polines input.pl_q,.polines input.pl_p{width:80px;text-align:right}
.polines td{padding:3px 6px}
.wblock{margin-left:auto;font-size:11.5px}
.pill.po-done{background:#e2e8f0;color:#475569}
.wbrow.done,.wbcard.done{background:#f1f5f9;filter:grayscale(1);opacity:.75}
.potab tr.podone td{color:#94a3b8}
.wbsrc{display:inline-block;min-width:44px;padding:3px 6px;font-weight:700}
.wbt th small{font-weight:400;font-size:10px;opacity:.8}
.pp{display:grid;grid-template-columns:300px minmax(0,1fr);grid-template-rows:auto 1fr;gap:16px;margin-bottom:16px;align-items:start}.pp .card{margin:0}
.ppl{grid-row:span 2;align-self:stretch;display:flex;flex-direction:column;min-height:520px}.ppl input{width:100%;margin-bottom:8px}
#pp_list{flex:1;overflow:auto;max-height:640px}.ppi{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border-radius:6px;cursor:pointer;border:1px solid transparent}
.ppi:hover{background:#f1f5f9}.ppi.on{background:#eff6ff;border-color:#93c5fd}.ppshort{color:#c5221f;font-variant-numeric:tabular-nums}
.pph{margin:0 0 10px;font-size:15px}.ppbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.ppbar label{color:#64748b}.ppbar input,.ppbar select{width:150px}
.ppg th.c{text-align:center}.ppg td{padding:4px 3px;vertical-align:top}.ppc{text-align:center}.ppc input{width:56px;text-align:right}
.ppst{font-size:11px;color:#64748b;white-space:nowrap;margin-top:2px}.ppst i{font-style:normal;color:#cbd5e1;margin:0 2px}.ppst b{color:#c5221f;font-weight:600}.ppst u{text-decoration:none;color:#2563eb}
.pprt{vertical-align:middle!important;font-weight:600}.ppfoot{justify-content:space-between;margin-top:10px}
.ppsum td{vertical-align:middle}.ppdet{white-space:normal!important}.ppdet div{margin:3px 0}.ppdet .chip,.ppdet .tag{min-width:44px;text-align:center;margin-right:8px}.ppdet span{display:inline-block;margin:2px 12px 2px 0;white-space:nowrap;font-variant-numeric:tabular-nums}
.ppe .tw,.pps .tw{overflow-x:auto;max-width:100%}.ppsum tr.tot td{background:#f8fafc}
.pprf{background:#f8fafc;border-right:1px solid #e2e8f0;vertical-align:middle!important}.pprf input{width:60px;border-color:#93c5fd}
.ppdays{width:64px!important;text-align:right}#pp_ddt{min-width:90px}
input.wbq{cursor:text;-moz-appearance:textfield}input.wbq::-webkit-inner-spin-button,input.wbq::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
input.wbq:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 2px #bfdbfe;background:#fff;color:inherit}
input.wbq.ing{background:#fefce8}input.wbq.sv{border-color:#16a34a;box-shadow:0 0 0 2px #bbf7d0;background:#f0fdf4}input.wbq.er{border-color:#dc2626;box-shadow:0 0 0 2px #fecaca;background:#fef2f2}
.ppst{display:grid;grid-template-columns:auto auto;gap:0 4px;justify-content:center;font-size:10.5px;line-height:1.3}.ppst>*{text-align:left}
.pill.pst-r{background:#fee2e2;color:#b91c1c}.pill.pst-y{background:#fef3c7;color:#92400e}.pill.pst-g{background:#dcfce7;color:#166534}
.potab td.pst{white-space:nowrap}.pstp{margin-left:8px;font-size:12px;color:#64748b}
.pill.pst-p{background:#ede9fe;color:#6d28d9}
.wbt col.c4{width:150px}.wbt th.wbpk,.wbt td.wbpk{white-space:nowrap;text-align:right;padding-left:10px;border-left:1px solid #e2e8f0}
.wbpkq{width:52px;text-align:right;margin-right:6px;padding:3px 5px}.wbpkbar{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.wbpkbar input{width:150px}
.wbcard:has(col.c4){flex-basis:980px}
.wbpklog{margin-left:auto;margin-right:10px}.pklog td{vertical-align:middle;padding:5px 8px}.pklog .pk_q{width:70px;text-align:right}.pklog .pk_d{width:150px}
.shtab td,.shdet td{vertical-align:middle}.shdet .sd_q{width:70px;text-align:right}.shdet .sd_d{width:150px}
.pill.pst-b{background:#dbeafe;color:#1d4ed8}.wbpkd2{font-size:11px;color:#2563eb;margin-right:6px}.shops{white-space:nowrap}.shops .btn+.btn{margin-left:6px}
.gemwrap{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:16px;align-items:start}.gemL{min-width:0}
.gemR{position:sticky;top:12px;margin:0}.gemR.drag{outline:2px dashed #2563eb;outline-offset:-6px;background:#eff6ff}
.gemmain{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;min-height:300px;display:flex;align-items:center;justify-content:center;overflow:hidden}.gemmain img{max-width:100%;max-height:460px;display:block;cursor:zoom-in}
.gemph{text-align:center;color:#64748b;padding:40px 20px;line-height:1.8}
.gemthumbs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.gemslot{border:1px solid #e2e8f0;border-radius:6px;padding:6px;text-align:center;background:#fff;min-height:90px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:6px}
.gemslot.empty{border-style:dashed;justify-content:center}.gemslot img{max-width:100%;max-height:80px;cursor:zoom-in}.gemops{display:flex;gap:4px}
.gmlc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}#gmt tr.gsel td{background:#eff6ff!important}#gmt tr.gsel td:first-child{box-shadow:inset 3px 0 0 #2563eb}
.gemtop{margin-bottom:10px;flex-wrap:wrap;gap:8px}.gemtop select{font-size:14px;padding:6px 8px}
.gemwrap{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}.gemR{padding:12px}
.gemt2 td,.gemt2 th{padding-top:10px;padding-bottom:10px;vertical-align:top}.gemt2 td.gmlw{white-space:normal;word-break:keep-all;overflow-wrap:anywhere;line-height:1.6}
.gembigs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gembig{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;display:flex;flex-direction:column;overflow:hidden}.gembig.empty{border-style:dashed}
.gembh{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;background:#fff;border-bottom:1px solid #e2e8f0;min-height:34px}
.gembody{flex:1;min-height:420px;display:flex;align-items:center;justify-content:center}.gembody img{width:100%;max-height:calc(100vh - 300px);object-fit:contain;cursor:zoom-in;display:block}
.gemstrip{display:flex;gap:8px;margin-top:8px}.gemstrip .gemslot{width:110px}
@media (max-width:1100px){.gembigs{grid-template-columns:1fr}}
.ssheet{border-collapse:collapse;width:100%;font-size:17px;background:#fff}.ssheet th,.ssheet td{border:1px solid #111;padding:6px 10px;text-align:center;white-space:nowrap}
.ssheet th{font-weight:700;background:#fff;color:#111}.ssheet th.sst{background:#fde58a;font-size:20px;padding:10px}.ssheet tr.ssf td{font-size:17px}.ssheet input.sd_q{width:80px;font-size:16px;text-align:center}.ssheet input.sd_d{font-size:14px}
.ssm{margin-top:8px;font-size:13px;color:#64748b}@media print{.ssheet{font-size:15px}}
.ssheet tr th,.modal .ssheet tr th,#modal .ssheet th{color:#111!important;background:#fff!important}#modal .ssheet th.sst,.ssheet th.sst{background:#fde58a!important;color:#111!important}
#modal .ssheet th,.ssheet th{font-size:17px!important}#modal .ssheet th.sst,.ssheet th.sst{font-size:22px!important}
@media print{#app,#toast,.side,.top{display:none!important}#modal .ssheet{font-size:15px}}
.ssheet th,.ssheet td,#modal .ssheet th,#modal .ssheet td{border:1px solid #111!important}.ssheet,.ssheet *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.finbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.finsum{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}.finkpi{display:flex;flex-direction:column;gap:4px;margin:0}.finkpi span{color:#64748b;font-size:13px}.finkpi b{font-size:26px}.finkpi b.neg{color:#dc2626}.finkpi small{color:#64748b;font-size:12px;line-height:1.6}
.hgrid>.gi>.fincard{display:flex;flex-direction:column;overflow:hidden}.finlist{flex:1;min-height:0;overflow:hidden}
.finch{display:flex;align-items:center;gap:8px;margin-bottom:6px}.finch b{font-size:16px}.finch{padding-right:22px}
.tag.fin_in{background:#dcfce7;color:#166534}.tag.fin_out{background:#fee2e2;color:#991b1b}.finbig{font-size:24px;font-weight:700;margin:2px 0}
.fint{width:100%;margin-top:8px;font-size:13px;border-collapse:collapse}.fint td{padding:4px 2px;border-top:1px solid #f1f5f9}.fint td.finl{max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.finft{margin-top:auto;padding-top:10px}.finft a{color:var(--blue);text-decoration:none}
@media (max-width:900px){.finsum{grid-template-columns:1fr}}
.ppg{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start;margin-top:10px}.ppcard{border:1px solid #e2e8f0;border-radius:10px;padding:8px 10px;background:#fff;flex:1 1 230px;min-width:230px;max-width:340px}
.ppch{display:flex;align-items:center;gap:8px;padding-bottom:6px;border-bottom:1px solid #f1f5f9;margin-bottom:4px;flex-wrap:wrap}.ppch .pprf{font-size:12px;color:#64748b;display:flex;align-items:center;gap:4px}.ppch .pprf input{width:56px}.ppct{margin-left:auto;font-size:13px;color:#64748b}
.ppct2{width:100%;border-collapse:collapse;font-size:13px}.ppct2 th{font-weight:500;color:#64748b;font-size:12px;padding:3px 4px;background:none;border-bottom:1px solid #f1f5f9}.ppct2 td{padding:3px 4px;border-bottom:1px solid #f8fafc}.ppct2 td.c,.ppct2 th.c{text-align:center}
.ppct2 input{width:64px;text-align:center}.ppct2 .ppneed{color:#dc2626}.ppct2 u{text-decoration:none;color:#2563eb}
.ppcard .ppct2 th{color:#64748b!important;background:transparent!important;position:static}
/* 采购产品颜色卡（两版待选：.ppg.vA 只有卡头上色；.ppg.vB 卡头深色 + 卡身同色浅底）；输入框、美度格白底；深色字 */
.ppcard{border:1.5px solid #1e2a4a!important;padding:0!important;overflow:hidden;background:#fff}.ppcard .ppch{padding:8px 10px;margin:0;border-bottom:1.5px solid #1e2a4a;color:#111}
.ppcard .ppct2{margin:4px 0 6px}.ppcard .ppct2 th:first-child,.ppcard .ppct2 td:first-child{padding-left:10px}.ppcard .ppct2 th:last-child,.ppcard .ppct2 td:last-child{padding-right:10px}
.ppcard .ppch .pprf,.ppcard .ppct{color:#111}.ppcard .ppch .chip{border:1px solid #1e2a4a;background:#fff}
.ppcard .ppct2,.ppcard .ppct2 tr,.ppcard .ppct2 th{background:transparent!important}.ppcard .ppct2 th{color:#1f2937!important}.ppcard .ppct2 td{color:#111;border-bottom-color:rgba(30,42,74,.12)}
.ppcard .ppct2 td:nth-child(2){text-align:center}.ppcard .ppct2 td b{color:#111}
.ppcard input{background:#fff!important;border:1px solid #1e2a4a!important;color:#111;box-shadow:none!important}
.ppcard .ppct2 .muted{color:#374151!important}.ppcard .ppct2 .ppneed{color:#b00000!important}.ppcard .ppct2 u{color:#0b3fa8}
.ppg.vA .ppcard.m-KY .ppch{background:rgb(255,236,90)}.ppg.vA .ppcard.m-KR .ppch{background:rgb(250,190,195)}.ppg.vA .ppcard.m-KW .ppch{background:#dfe3e8}
.ppg.vB .ppcard.m-KY .ppch{background:rgb(255,214,0)}.ppg.vB .ppcard.m-KR .ppch{background:rgb(236,140,155)}.ppg.vB .ppcard.m-KW .ppch{background:#b8c0ca}
.ppg.vB .ppcard.m-KY{background:rgb(255,250,215)}.ppg.vB .ppcard.m-KR{background:rgb(253,234,237)}.ppg.vB .ppcard.m-KW{background:#f1f3f6}
.ppg.vB .ppcard .ppct2 td:first-child{background:#fff!important}.ppg.vA .ppcard .ppct2 td:first-child{background:#fff}
/* B 版最终：整张卡（卡头+卡身）都用颜色色 */
.ppg.vB .ppcard.m-KY,.ppg.vB .ppcard.m-KY .ppch{background:rgb(255,214,0)}.ppg.vB .ppcard.m-KR,.ppg.vB .ppcard.m-KR .ppch{background:rgb(236,140,155)}.ppg.vB .ppcard.m-KW,.ppg.vB .ppcard.m-KW .ppch{background:#c3cad3}
.ppg.vB .ppcard .ppct2 td{border-bottom-color:rgba(30,42,74,.18)}.ppg.vB .ppcard .ppct2 .muted{color:#1f2937!important}.ppg.vB .ppcard .ppct2 .ppneed{color:#8b0000!important}.ppg.vB .ppcard .ppct2 u{color:#0a2f80}
.ppg.vB .ppcard .ppct2 td:first-child{border:1px solid #1e2a4a}
/* B 版分区填色：卡头深色（满宽），卡身同色浅底，表格所有格子透明、无白列白缝；只有数量输入框白色 */
.ppg.vB .ppcard.m-KY{background:rgb(255,246,190)!important}.ppg.vB .ppcard.m-KY .ppch{background:rgb(240,190,0)!important}
.ppg.vB .ppcard.m-KR{background:rgb(252,226,231)!important}.ppg.vB .ppcard.m-KR .ppch{background:rgb(214,98,122)!important}
.ppg.vB .ppcard.m-KW{background:#e6e9ee!important}.ppg.vB .ppcard.m-KW .ppch{background:#8e98a6!important}
.ppg.vB .ppcard .ppct2{margin:0!important;border-collapse:collapse}.ppg.vB .ppcard .ppct2 tr,.ppg.vB .ppcard .ppct2 th,.ppg.vB .ppcard .ppct2 td,.ppg.vB .ppcard .ppct2 td:first-child,.ppg.vB .ppcard .ppct2 tr:nth-child(n) td{background:transparent!important;border-left:0!important;border-right:0!important;border-top:0!important}
.ppg.vB .ppcard .ppct2 th{padding-top:6px}.ppg.vB .ppcard .ppct2 tr:last-child td{padding-bottom:8px}
.ppg.vB .ppcard.m-KR .ppch,.ppg.vB .ppcard.m-KR .ppch .pprf,.ppg.vB .ppcard.m-KR .ppct,.ppg.vB .ppcard.m-KR .ppct b,.ppg.vB .ppcard.m-KW .ppch .pprf,.ppg.vB .ppcard.m-KW .ppct,.ppg.vB .ppcard.m-KW .ppct b{color:#fff!important}
.ppg.vB .ppcard .ppch .chip{background:#fff!important;color:#111!important}
.ppg.vB .ppcard .ppch .chip{background:transparent!important;color:inherit!important;border:1.5px solid currentColor!important;font-weight:700}.ppg.vB .ppcard.m-KY .ppch .chip{color:#111!important}
.ppg.vB .ppcard .ppch .pprf{background:transparent!important}.ppg.vB .ppcard .ppct2 td,.ppg.vB .ppcard .ppct2 td:first-child{border-bottom:1px solid rgba(30,42,74,.15)!important}.ppg.vB .ppcard .ppct2 th{border-bottom:1px solid rgba(30,42,74,.3)!important}
/* 半码行（5.5#、6.5#…）整行比整码行深一档（同添加大袋的半码规则），输入框保持白色 */
.ppg.vB .ppcard.m-KY .ppct2 tr.pphalf td{background:rgb(255,232,130)!important}.ppg.vB .ppcard.m-KR .ppct2 tr.pphalf td{background:rgb(246,200,210)!important}.ppg.vB .ppcard.m-KW .ppct2 tr.pphalf td{background:#d3d8df!important}
.ppcard input{font-weight:700!important;font-size:14px}
.ppbar input.ppno{width:19em;min-width:220px}
.ssheet td.sspo{font-size:14px}
.side .brand{cursor:pointer}
.ssheet td.sspo,.ssheet th.sspo{white-space:nowrap!important;min-width:11em;font-size:15px}.ppbar input.ppno{width:13.5em;min-width:13.5em}
.ppest{color:#111}.ppest b{color:#0b3fa8}
.ppfoot>span.muted,.ppfoot .ppest{color:#111!important}
.fpbox{margin-top:16px}.fptw{max-height:70vh;overflow:auto}.fpt th{position:sticky;top:0;z-index:1}.fpt th.c,.fpt td.c{text-align:center}.fpt td{vertical-align:middle}
.fpt input.fpin{width:90px;text-align:right;font-weight:600}.fpt input.fpok{background:#dcfce7!important;transition:background .3s}

.fpshut .fpbody{display:none}.fpshut .fptog .fparr{transform:none}.fptog .fparr,.fpgh .fparr{display:inline-block;transition:transform .15s}.fpbox:not(.fpshut) .fptog .fparr{transform:rotate(90deg)}
.fpgh td{background:#eef2f8;font-weight:700;cursor:pointer;user-select:none}.fpgc tr.fpr,.fpgc tr.fppr{display:none!important}.fpgc .fpgh .fparr{transform:rotate(-90deg)}
/* 款号定价斑马纹：同半码行规则的浅蓝，输入框保持白色 */
.fpt tr.fpr:nth-child(odd) td{background:rgb(200,230,255)!important}.fpt tr.fpr:nth-child(even) td{background:#fff!important}.fpt .fpin{background:#fff}

/* 入库 ① 送货单表格：套「出货记录」单子样式（黄标题、全框线、大字） */
#nl.nlsheet{counter-reset:nls;width:100%}#nl.nlsheet tr.nlr{counter-increment:nls}#nl.nlsheet td.nlsn::before{content:counter(nls)}
#nl.nlsheet td{white-space:normal;vertical-align:middle}#nl.nlsheet td.nlpo{font-size:14px}#nl.nlsheet input{font-size:16px}
#nl.nlsheet th{font-size:16px!important}#nl.nlsheet th.sst{font-size:22px!important}#nl.nlsheet .l_ch{justify-content:center}
.nlfoot{border-top:none!important;margin-top:-1px}.nlfoot td{font-size:17px;text-align:left!important}.nlfoot td.nlft{width:40%}.nlfoot .ntot{margin:0;padding:0;background:none}
.phead .ocrz.ocrhd{flex:1;max-width:760px;margin:0 20px;height:52px;align-self:center}.ocrz.ocrhd .ocrt{font-size:14px;white-space:nowrap}.ocrz.ocrhd .ocrt small{font-size:11px}
.azby{margin:6px 0;font-size:12px;border-top:1px dashed #d8dee8;padding-top:4px}.azby div{display:flex;justify-content:space-between;gap:8px;line-height:1.7}.azby span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#475569}.azby b{white-space:nowrap;font-weight:600}
#nl input.l_sc.l_lock{background:#eef0f3!important;color:#475569;cursor:not-allowed;border-color:#cbd2dc}
.ntseg{display:inline-flex;border:1.5px solid #0b2447;border-radius:8px;overflow:hidden;margin:0 6px}.ntseg .ntb{border:0;background:#fff;color:#0b2447;padding:6px 14px;font-weight:600;cursor:pointer;font-size:14px}
.ntseg .ntb+.ntb{border-left:1.5px solid #0b2447}.ntseg .ntb.on{background:#0b2447;color:#fff}.ntseg .ntb:disabled{cursor:default;opacity:.85}
#nl .l_pot{width:100%;min-width:11em;font-size:14px}
#nl tr.o_po td{background:#fff1f1}#nl .powarn{display:block;color:#c5221f;font-weight:700;font-size:13px;white-space:normal}
#nl select.l_po.l_pobad{border:2px solid #d93025;background:#fff4f3}
.pombar{gap:10px;align-items:center;flex-wrap:wrap}.pomt td,.pomt th{white-space:nowrap}.pomt tr.pomh td{background:#f6f4ff}.pomtag{background:#ede9fe;color:#5b21b6;font-size:11px}
.phno{font-size:16px;color:#0b2447}.pomlw{max-height:260px;overflow:auto}.pomlt td,.pomlt th{padding:4px 8px}
.tdb{position:absolute;top:2px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#d93025;color:#fff;font-size:10px;line-height:16px;text-align:center;font-style:normal}
.rg{position:relative}.nav .tdb{position:static;margin-left:6px;display:inline-block}.tdbar{gap:8px}.tdt td{vertical-align:top}.tdc{font-size:12px;margin-top:2px;white-space:pre-wrap}.tdtag{background:#e0ecff;color:#0b3a8a}.tdact{white-space:nowrap}
.pomreq{border:2px solid #f4b400}
.tdcard{border-left:4px solid #1a73e8;margin-bottom:14px}.tdn{display:inline-block;min-width:20px;padding:0 6px;border-radius:10px;background:#e8eaed;color:#555;font-size:12px;text-align:center}.tdn.on{background:#d93025;color:#fff}
.tdlist{margin-top:8px}.tdi{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid #eee}.tdm{flex:1}
.pog summary{cursor:pointer;list-style:none}.pog summary::-webkit-details-marker{display:none}.pog ol{margin:10px 0 0;padding-left:20px;line-height:1.8}.pog code{background:#f1f3f4;padding:0 4px;border-radius:3px}
.ppch{flex-wrap:wrap;min-height:64px;align-content:center}.ppcno{flex-basis:100%;text-align:right;font-weight:700;color:#000;font-size:14px;margin-top:4px;min-height:18px}
.ppcnw{flex-basis:100%;text-align:right;margin-top:4px;min-height:18px;font-size:14px}.ppcnl{color:#333;font-size:13px}.ppcnw .ppcno{display:inline;flex-basis:auto;margin:0}.ppadded{color:#16a34a;font-weight:600;margin-left:auto;margin-right:8px}
.ppi{gap:8px;justify-content:flex-start}.ppi input{width:auto;margin:0}.ppi .ppshort{margin-left:auto}.ppsel{display:flex;gap:6px;margin-bottom:8px}
.ppsec{border-top:2px solid #1e2a4a;padding-top:10px;margin-top:14px}.ppsec:first-of-type{border-top:0;margin-top:6px}.ppsh{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.ppsm{font-size:17px}
.ppsn{font-size:12px;color:#64748b;display:flex;align-items:center;gap:4px}.ppsn input{width:170px}.ppmsum{margin-left:auto;font-size:13px;color:#475569;white-space:nowrap;flex-shrink:0}
.ppsh .ppsn{white-space:nowrap}
.ppsel{flex-wrap:nowrap}.ppsel .btn{white-space:nowrap;flex:0 0 auto}
.ppnot{color:#475569;font-weight:600;font-size:13px}
.ppbq{margin-left:auto;font-size:14px;color:#334155;white-space:nowrap;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:8px;padding:4px 12px}.ppbq b{color:#0f172a;font-size:15px}
.ppbody{display:flex;gap:12px;align-items:flex-start}.ppbody .ppg{flex:1;min-width:0}.ppims{width:120px;flex:0 0 120px;display:flex;flex-direction:column;gap:8px}.ppim{position:relative;width:120px;height:120px;border:1px solid #cbd5e1;border-radius:8px;overflow:hidden;cursor:zoom-in;background:#fff}.ppim img{width:100%;height:100%;object-fit:contain}.ppim .wm{position:absolute;inset:0;pointer-events:none}.ppimph{width:120px;height:120px;border:1px dashed #cbd5e1;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px}
.pibad td{vertical-align:top}.pibad .piin{width:130px}.pibad .pip{width:80px}.pisug{font-size:12px;color:#b45309;margin-top:4px;white-space:nowrap}.pisug .btn{margin-left:4px;padding:1px 8px}
.pinote{color:#c2410c;font-weight:600;margin-top:2px}
.fpt input.fpin:placeholder-shown{background:#fff3b0;border-color:#e6c84f}  /* 款号定价：没填价格的格子淡黄色提醒，填了就是白色（纯样式，打字/清空即时变化） */
.fpmiss{font-size:12px;color:#94a3b8;white-space:nowrap}.fpmiss.on{color:#d92d20;font-weight:700;cursor:pointer;text-decoration:underline dotted}.fpmiss.on b{font-size:13px}.fpm0{color:#cbd5e1}
.fpop{position:absolute;z-index:50;background:#fff;border:1px solid #cbd5e1;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);width:280px;max-height:300px;display:flex;flex-direction:column}.fpoph{padding:8px 10px;border-bottom:1px solid #eee;font-size:13px;display:flex;gap:4px;align-items:center}.fpopx{margin-left:auto;cursor:pointer;font-size:16px;color:#64748b}.fpopl{overflow:auto;padding:8px;display:flex;flex-wrap:wrap;gap:6px}.fpopl a{padding:2px 8px;border:1px solid #cbd5e1;border-radius:12px;cursor:pointer;font-weight:600;font-size:12px}.fpopl a:hover{background:#e0ecff}
.fpt input.fphl{outline:3px solid #f59e0b;outline-offset:1px}
.fpsec{margin-top:14px}.fpsec+.fpsec{border-top:2px solid #1e2a4a;padding-top:12px}.fpsh{display:flex;align-items:center;gap:14px;margin-bottom:8px}.fpsn{font-size:17px}.fpsh .fpmiss{font-size:13px}.fpgm{color:#d92d20;font-weight:700;font-size:12px;margin-left:8px}.fph{white-space:nowrap}.fphi{display:inline-block;font-size:12px;color:#475569;background:#f1f5f9;border-radius:10px;padding:1px 8px;margin-right:6px}.fphi:first-child{color:#0f172a;font-weight:600}.fpsec .fptw{max-height:60vh}
.fpbat{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:8px 12px;margin-bottom:6px}.fpbath{gap:10px;align-items:center}.fpbl{margin-top:8px;max-height:260px;overflow:auto}
.fpsec .fpt{table-layout:fixed;width:100%}.fpsec .fpt th:nth-child(1){width:140px}.fpsec .fpt th:nth-child(2){width:150px}.fpsec .fpt th:nth-child(3){width:170px}.fpsec .fpt th:nth-child(4){width:130px}.fpsec .fph{overflow:hidden;text-overflow:ellipsis}

/* 款号索引 */
.fpsh .fpixa,.fpsh .fpixd,.fpsh .fphint{margin-left:10px}
.fpdbar{display:none;margin-left:12px;font-size:13px;color:var(--red,#c00)}
.fpsec.fpdel .fpdbar{display:inline-flex;gap:6px;align-items:center}
.fpsec.fpdel .fpixd{display:none}
.fpck{display:none;margin:0 8px 0 0;width:16px;height:16px;vertical-align:middle}
.fpsec.fpdel tr.fpe .fpck{display:inline-block}
.fpempty{padding:10px 4px}
.ixal{max-height:420px;overflow:auto;border:1px solid var(--line,#ddd);border-radius:6px;padding:6px 10px}
.ixagh{font-weight:600;margin:8px 0 4px}
.ixagl{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 10px}
.ixai{display:flex;gap:4px;align-items:center;font-size:13px;cursor:pointer}
.fpsec .fphc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.pinewq{background:#fffbeb;border:1px solid #fcd34d;border-radius:6px;padding:8px 10px;margin-bottom:6px;font-size:13px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pinewq>b,.pinewq{color:#92400e}
tr.fppr td{background:#fffbeb}

.fpsec td.fpst{color:#94a3b8;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

#pp_f option.ppfx{color:#9ca3af}

/* 撤单 */
.pill.pst-wd{background:#e5e7eb;color:#6b7280}
tr.powd td{color:#9ca3af!important;text-decoration:line-through}
tr.powd td.poops,tr.powd td.pst{text-decoration:none}
tr.powd b{color:#9ca3af}
.powdw{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:6px;padding:8px 10px;font-size:13px;margin:8px 0 12px;line-height:1.6}
.btn.powdb{color:#b91c1c;border-color:#fca5a5;background:#fff}
/* 首页 待办 + 通知 并排 */
.tdrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;margin-bottom:14px}.tdrow .tdcard{margin-bottom:0}
.ntcard{border-left-color:#7c3aed}.tdi.ntread{opacity:.6}

/* 概览四卡（财务概览卡片样式） */
.ovc .ovb{flex:1;min-height:0;overflow:hidden;font-size:13px}.ovl{padding:3px 0;border-bottom:1px dashed #eef0f3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovl a{color:var(--blue);text-decoration:none}.ovdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#d93025;margin-right:6px;vertical-align:middle}.ovl.ntread{opacity:.55}

/* 采购产品左栏：型号 | 有报价的工厂（灰） | 缺 —— 三列对齐 */
.ppi b{flex:0 0 64px;font-variant-numeric:tabular-nums}.ppi .ppfn{flex:1;min-width:0;color:#9aa3af;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ppi .ppshort{margin-left:0;flex:0 0 58px;text-align:right}

/* 报价状态开关：绿=开 灰=关 */
.qsw{position:relative;width:38px;height:20px;border-radius:10px;border:0;background:#cbd5e1;cursor:pointer;padding:0;transition:.15s;vertical-align:middle}
.qsw i{position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:.15s}
.qsw.on{background:#16a34a}.qsw.on i{left:20px}.qsw:disabled{cursor:not-allowed;opacity:.55}

/* 工厂 · 产品目录 */
.fcat{display:grid;grid-template-columns:280px 1fr;gap:14px;align-items:start}.fcl{display:flex;flex-direction:column;gap:8px;max-height:78vh}
#fc_list{overflow:auto;flex:1}.fci{display:flex;justify-content:space-between;padding:7px 10px;border-radius:6px;cursor:pointer}.fci:hover{background:#f1f5f9}.fci.on{background:#eff6ff;outline:1px solid #93c5fd}
.fcr{display:flex;flex-direction:column;gap:14px}.fct{width:100%;border-collapse:collapse}.fct th,.fct td{padding:7px 10px;border-bottom:1px solid #eef0f3;text-align:left}
.fcg{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.fcim{aspect-ratio:1;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#f8fafc}
.fcim .bth{position:relative;width:100%;height:100%;cursor:zoom-in}.fcim img{width:100%;height:100%;object-fit:contain}.fcim .wm{position:absolute;inset:0;pointer-events:none}
.fcn{text-align:center;margin-top:12px;line-height:1.8}.fcn b{color:#d92d20}.ppfn s{text-decoration:none;color:#c0c6cf}
@media(max-width:900px){.fcat{grid-template-columns:1fr}}

/* 节假日卡小日历 */
.mcal{margin:4px 0 6px;font-size:11.5px}.mch{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.mch a{cursor:pointer;padding:0 8px;color:var(--blue);font-size:15px;user-select:none}
.mcg{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.mcg u{text-decoration:none;color:#94a3b8;font-size:10.5px}.mcg i{font-style:normal;padding:2px 0;border-radius:5px;border:1px solid transparent;line-height:1.35}
.mcn{background:#dcfce7;color:#15803d}.mco{background:#ffedd5;color:#c2410c}.mwk{border-color:#94a3b8!important;color:#475569}.mcg i.mtd{font-weight:800;box-shadow:inset 0 0 0 1.5px var(--blue)}
.mcl{display:flex;gap:8px;margin-top:4px;font-size:10.5px}.mcl span{padding:0 6px;border-radius:4px;border:1px solid transparent}
/* 采购产品版面：左栏加宽（3 个工厂简称不截断）；图片紧挨颜色卡、放大，和右边 × 留空 */
.pp{grid-template-columns:380px minmax(0,1fr)!important}
.ppbody{padding-right:44px}.ppbody .ppg{flex:0 1 auto!important}.ppbody .ppims{width:150px!important;flex:0 0 150px!important}.ppbody .ppim,.ppbody .ppimph{width:150px!important;height:150px!important}
.gi[data-id=ov_holi] .ovl{white-space:normal;line-height:1.45}

/* 概览「日历」：公历 + 农历；我的休息日 = 玫瑰色实心圆 */
.ocal{flex:1;display:flex;flex-direction:column;min-height:0}.och{display:flex;justify-content:space-between;align-items:center;margin:2px 0 6px}.och a{cursor:pointer;padding:0 12px;color:var(--blue);font-size:18px;user-select:none}
.ocg{display:grid;grid-template-columns:repeat(7,1fr);gap:4px 2px;text-align:center}.ocg u{text-decoration:none;color:#94a3b8;font-size:12px}
.ocg i{font-style:normal;position:relative;display:flex;flex-direction:column;align-items:center;padding:3px 0}
.ocg i b{width:30px;height:30px;line-height:30px;border-radius:50%;font-size:14px;font-weight:600;color:#1f2937}.ocg i small{font-size:10.5px;color:#94a3b8;margin-top:1px;white-space:nowrap}.ocg i small.lf{color:#c2410c;font-weight:600}
.ocg i.off b{background:rgb(236,140,155);color:#fff}.ocg i.td b{box-shadow:0 0 0 2px var(--blue)}
.ocg i em,.ocl em{font-style:normal;position:absolute;top:0;right:8%;font-size:9.5px;color:#64748b;border:1px solid #94a3b8;border-radius:3px;padding:0 2px;line-height:1.2;background:#fff}
.ocl{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11.5px;color:#64748b}.ocl em{position:static}.ocl .dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:rgb(236,140,155);vertical-align:-1px;margin-right:4px}

.fpsec .fpin:disabled{color:#9aa3af!important;background:#f1f5f9!important;border-color:#e2e8f0!important;pointer-events:none;user-select:none;cursor:not-allowed}

.hrfac tr.hfrow td{background:var(--hf);border-top:2px solid #8a94a6}
.hrfac tr.hfrow:last-child td{border-bottom:2px solid #8a94a6}
.hrfac .hfdot{display:inline-block;width:10px;height:10px;border-radius:3px;background:var(--hf);border:1px solid #8a94a6;margin-right:6px;vertical-align:-1px}
.ppdet span .pill,.ppdet span .ppq{margin:0}.ppdet span .pill{margin-right:3px;padding:1px 5px}.ppdet .ppq{font-weight:400}

/* 预览：顶栏国旗 + 醒目日历按钮 */
.clk{align-items:center}.clk .flag{width:20px;height:13px;flex:none;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.12);display:block}
.calbtn.calbig{width:32px;height:32px;padding:0;border:none;border-radius:7px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25);display:inline-flex;flex-direction:column;overflow:hidden;cursor:pointer;transition:transform .12s}
.calbtn.calbig:hover{transform:translateY(-1px) scale(1.06)}
.calbig .cbh{background:linear-gradient(#ef4444,#dc2626);color:#fff;font-size:9px;font-weight:700;line-height:12px;height:12px;flex:none;text-align:center}
.calbig .cbd{flex:1;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;color:#1e3a8a;border:1px solid #e5e7eb;border-top:none;border-radius:0 0 7px 7px;font-variant-numeric:tabular-nums}
/* 预览：星期紧跟北京时间（约两个汉字间距）；原位置显示深圳天气 */
.clk .cwk{margin-left:2em;font-size:13px;font-weight:500;color:var(--txt);white-space:nowrap}
.cwx{gap:6px;font-size:13px;color:var(--txt);align-items:center}
.cwx .wxi{font-size:18px;line-height:1}.cwx .wxt{font-weight:600}.cwx .wxtip{color:#0f766e;font-size:12px}
.cwx .wxna{color:var(--sub);font-size:12px}
.cwx.wxred,.cwx.wxred .wxt,.cwx.wxred .wxtip,.cwx.wxred .wxal{color:#dc2626}.cwx .wxal{font-weight:800}
/* 预览：顶栏加高到 72px，文字和图标按比例放大（约 1.25 倍），全部垂直居中 */
.top{height:72px}
.top .crumb{font-size:17px}.top .crumb b{font-size:18px}
.clk{gap:8px}.clk .cl{font-size:14px}.clk .ct{font-size:16px}.clk .cwk{font-size:16px}
.clk .flag{width:26px;height:17px}
.calbtn.calbig{width:46px;height:48px;border-radius:9px}
.calbig .cbh{font-size:12px;line-height:16px;height:16px}
.calbig .cbd{font-size:22px;border-radius:0 0 9px 9px}
.cwx{gap:8px;font-size:16px}.cwx .wxi{font-size:32px}.cwx .wxtip{font-size:14px}.cwx .wxna{font-size:14px}
.who{font-size:15px}.topr .btn.sm{font-size:14px;padding:5px 14px}
.cwx .wxaqi{font-size:14px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap}
.wxaqi.aq-1{background:#00e400;color:#fff}.wxaqi.aq-2{background:#ffff00;color:#5b4a00}.wxaqi.aq-3{background:#ff7e00;color:#fff}.wxaqi.aq-4{background:#ff0000;color:#fff}.wxaqi.aq-5{background:#99004c;color:#fff}.wxaqi.aq-6{background:#7e0023;color:#fff}
.cwx.wxred .wxaqi{color:#fff}
.top .clocks{justify-content:space-between;gap:22px;padding:0 10px}.top .clk{min-width:0;flex:none}.top .crumb{flex:0 1 auto}
@media (max-width:1700px){.cwx .wxtip{display:none}}  /* 窄屏先藏出行提示（鼠标放上去看），保证不重叠 */
@media (max-width:1450px){.top .crumb>span,.top .crumb>i{display:none}}
@media (max-width:1500px){.topr .who{display:none}}  /* 窄屏藏「姓名·角色」，避免和天气重叠 */

/* 预览：顶栏全局搜索 */
.gsw{position:relative;flex:none}.gsw #gsq{width:230px;height:34px;border-radius:17px;padding:0 14px;font-size:14px;border:1px solid var(--line);background:#f8fafc}
.gsw #gsq:focus{background:#fff;border-color:#0071ce;outline:none}
.gsr{position:absolute;right:0;top:40px;width:380px;max-height:420px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.15);z-index:50;padding:4px}
.gsi{display:flex;gap:8px;align-items:center;padding:7px 10px;border-radius:7px;cursor:pointer;font-size:14px;white-space:nowrap;overflow:hidden}.gsi.on,.gsi:hover{background:#eef5fd}
.gsk{font-size:11px;background:#e2e8f0;color:#334155;border-radius:4px;padding:1px 6px;flex:none}.gsn{padding:10px}
.jumphl,.jumphl td{background:#fff3b0!important;transition:background .6s}
@media (max-width:1600px){.gsw #gsq{width:150px}}
.rg{position:relative}.rgn{position:absolute;top:4px;right:6px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#e11d48;color:#fff;font-size:11px;line-height:18px;text-align:center;font-weight:700;box-shadow:0 0 0 2px #0b1f3a}
.nav .tdn{margin-left:auto;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#e11d48;color:#fff;font-size:11px;line-height:18px;text-align:center}

/* 预览：闹钟卡 + 到点弹窗 */
.alrow{display:flex;align-items:center;gap:8px}.alrow .alhm{font-size:18px;font-variant-numeric:tabular-nums}.alrow.aloff{opacity:.45}.alrow a{font-size:12px}.alrow a.red{color:#dc2626}
.alpop{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:9999;display:flex;align-items:center;justify-content:center}
.albox{background:#fff;border-radius:18px;padding:26px 40px;text-align:center;box-shadow:0 20px 50px rgba(0,0,0,.35);min-width:300px}
.alclk{font-size:86px;line-height:1;display:inline-block;animation:alwob .35s ease-in-out infinite alternate;transform-origin:50% 80%}
@keyframes alwob{from{transform:rotate(-14deg)}to{transform:rotate(14deg)}}
.altm{font-size:34px;font-weight:800;color:#dc2626;margin-top:6px;font-variant-numeric:tabular-nums}.altx{font-size:17px;margin-top:4px;color:#334155}
.cwx.wxred .wxtip{display:none}  /* 有预警时，预警比出行提示重要：提示收到鼠标悬停里 */
@media (max-width:1900px){.gsw #gsq{width:170px}}
@media (max-width:1700px){.gsw #gsq{width:130px}}
.top .clocks{overflow:hidden}
.gsw #gsq{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M20 20l-4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:10px center;background-size:16px;padding-left:32px}
@media (max-width:1500px){.gsw{width:36px;height:34px}.gsw #gsq{width:36px;padding:0 0 0 32px;color:transparent;cursor:pointer;position:absolute;right:0;top:0}.gsw #gsq::placeholder{color:transparent}
  .gsw #gsq:focus{width:300px;color:inherit;cursor:text;z-index:60;box-shadow:0 4px 16px rgba(0,0,0,.15)}.gsw #gsq:focus::placeholder{color:#94a3b8}.top .clocks{gap:14px}}
@media (max-width:1500px){.clk .cl{display:none}.top .clocks{gap:10px;padding:0 4px}.cwx .wxi{font-size:26px}}  /* 窄屏：国旗代替「美国(太平洋)/北京」文字（鼠标悬停有说明） */

/* 预览：撤销条 */
.undot{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#1f2937;color:#fff;padding:10px 12px 10px 18px;border-radius:12px;z-index:9998;display:flex;align-items:center;gap:10px;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.3)}
.undot .btn{background:#fbbf24;border-color:#fbbf24;color:#111;font-weight:700}

/* 预览：收藏页面 */
.favbtn{border:none;background:none;font-size:22px;color:#cbd5e1;cursor:pointer;margin-left:8px;vertical-align:-2px;padding:0}.favbtn.on{color:#f59e0b}.favbtn:hover{color:#f59e0b}
.favbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px}.favh{font-weight:700;color:#b45309;margin-right:4px}
.favi{display:inline-flex;align-items:center;gap:2px;background:#fff7e6;border:1px solid #fcd34d;border-radius:18px;padding:4px 6px 4px 14px}.favi a{font-weight:600;color:#92400e;text-decoration:none}
.favi i{font-style:normal;cursor:pointer;color:#b45309;padding:0 4px;opacity:.5}.favi i:hover{opacity:1}

/* 闹钟弹窗放大 1.5 倍（对话框、闹钟图标、时间、备注、按钮） */
.albox{padding:39px 60px;border-radius:27px;min-width:450px}.alclk{font-size:129px}.altm{font-size:51px;margin-top:9px}.altx{font-size:26px;margin-top:6px}
.albox .row{gap:15px!important;margin-top:21px!important}.albox .btn{font-size:21px;padding:12px 27px;border-radius:12px}
#app.alshake{animation:alpage .15s ease-in-out 10 alternate}
@keyframes alpage{from{transform:translateX(-4px)}to{transform:translateX(4px)}}
@media (prefers-reduced-motion: reduce){.alclk{animation:none}#app.alshake{animation:none}}

/* 预览：网络信号图标（和放大后的顶栏图标一样大） */
.netic{display:inline-flex;align-items:center;justify-content:center;width:34px;height:30px;cursor:help;flex:none}.netic svg{width:30px;height:24px;fill:none;stroke-width:2.6;stroke-linecap:round}

/* 预览：表格导出按钮 */
.xlbtn{float:right;margin:0 0 6px 8px;font-size:12px;padding:3px 10px;opacity:.75}.xlbtn:hover{opacity:1}

/* 预览：交期提醒：3 天内到期没送齐 = 黄；过期没送齐 = 红 */
tr.due-soon td{background:#fef9c3!important}tr.due-soon td:first-child{box-shadow:inset 4px 0 0 #eab308}
tr.due-overdue td{background:#fee2e2!important}tr.due-overdue td:first-child{box-shadow:inset 4px 0 0 #dc2626}

/* 预览：搜索 → 产品目录卡片 */
.gscat{width:min(860px,90vw)}.gscat .fct{margin:12px 0}

/* 预览：闲置锁屏（全屏不透明，盖住所有 ERP 内容）：深色底 + 粉/青交替的大圆角数字，半透明叠在一起；冒号是两个半透明圆点 */
body.locked{overflow:hidden}
#lockscr{position:fixed;inset:0;z-index:99999;background:#0b0b12;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:48px;color:#e5e7eb}
.lkclock{display:flex;align-items:center;font-family:"Nunito","Varela Round","Arial Rounded MT Bold","Helvetica Rounded",ui-rounded,system-ui,sans-serif;font-weight:900;font-size:min(30vw,300px);line-height:.9;letter-spacing:-.02em;user-select:none}
.lkd{display:inline-block;margin:0 -.09em;mix-blend-mode:screen;opacity:.86;border-radius:.2em}
.lkp{color:#ff2fa0}.lkc{color:#22b8ff}
.lkcolon{display:inline-flex;flex-direction:column;gap:.22em;margin:0 .06em;mix-blend-mode:screen}
.lkcolon i{display:block;width:.17em;height:.17em;border-radius:50%;background:#c9a7ff;opacity:.55}
.lkcolon i:last-child{background:#22b8ff}
.lkbox{display:flex;flex-direction:column;align-items:center;gap:12px}
.lkname{font-size:20px;font-weight:700;color:#f3f4f6}
#lkf{display:flex;gap:8px}#lkf input{width:260px;padding:10px 14px;border-radius:10px;border:1px solid #374151;background:#111827;color:#fff;font-size:15px}
.lkerr{color:#f87171;min-height:18px;font-size:13px}.lkout{color:#9ca3af;font-size:13px}
.ssrow{border-top:1px dashed #e5e7eb;margin-top:8px;padding-top:6px}.lkhint{color:#cbd5e1;font-size:14px}.lkbox{background:#0b0b12cc;padding:22px 28px;border-radius:16px;backdrop-filter:blur(6px)}#lockscr.lkwake .lkclock{opacity:.55}#lockscr.lkwake{gap:28px}
.ssbtn{border:0;background:none;cursor:pointer;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;flex:none}.ssbtn:hover{background:#f1f5f9}.ssbtn svg{width:20px;height:20px;fill:none;stroke:#475569;stroke-width:2;stroke-linecap:round}.lkun{color:#9ca3af;font-size:13px;margin-top:-6px}.ssidle{padding:2px 4px;border-radius:6px;border:1px solid #d1d5db;font-size:12px}
.lkbox[hidden]{display:none}#ss_row .ovl{gap:6px;flex-wrap:wrap}

/* 预览：白板卡片锁（红 = 锁定，绿 = 正常） */
.wblk{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:6px}.wblkt{color:#9ca3af;font-size:12px}
.qsw.lk{background:#dc2626}.wbcard.wblocked .wbt input,.wbcard.wblocked .wbpkbar input,.wbcard.wblocked .wbt button:not(.wblkbtn),.wbcard.wblocked .wbhd button{opacity:.45;cursor:not-allowed;background:#f3f4f6}

/* 预览：白板卡片 + 右边竖排 3 张产品图 */
.wbcw{display:flex;gap:10px;align-items:flex-start}.wbcw>.wbcard{flex:1;min-width:0}
.wbimgs{width:150px;flex:none;display:flex;flex-direction:column;gap:8px}.wbimt{display:flex;gap:4px;flex-wrap:wrap;font-size:12px}
.wbim{width:150px;height:150px;border-radius:10px;overflow:hidden;position:relative;cursor:zoom-in;background:#f8fafc;border:1px solid #e5e7eb;display:flex;align-items:center;justify-content:center}
.wbim img{width:100%;height:100%;object-fit:contain}.wbim.bph{cursor:default;font-size:12px}
.wbbigc{flex:none;align-self:center;display:flex}
.wbpkbig{font-size:22px;font-weight:800;padding:22px 18px;border-radius:14px;line-height:1.3;width:120px;white-space:normal;box-shadow:0 4px 12px #2563eb40}
.wbpkbig:disabled{background:#cbd5e1!important;color:#64748b!important;box-shadow:none;cursor:not-allowed;opacity:1}
.wbpkdone,.wbpkdone:disabled{background:#e5e7eb!important;color:#6b7280!important;box-shadow:none;cursor:default;pointer-events:none}
.pogo{cursor:pointer}a.pogo{color:inherit;text-decoration:underline dotted}td.pogo .pill,td.pogo span{cursor:pointer}
/* 生产白板卡片宽度：每张型号卡占满一行（右边留图片列 + 大按钮），最后一栏不再溢出 */
.wbcards{flex-wrap:wrap;overflow-x:visible}
.wbcw{flex:1 1 100%;width:100%;min-width:0}
.wbcw>.wbcard{flex:1 1 auto;min-width:0}
.wbt col.c4{width:230px}.wbt td.wbpk{overflow:visible}
@media (max-width:1400px){.wbimgs{width:118px}.wbim{width:118px;height:118px}.wbpkbig{width:100px;font-size:19px;padding:18px 12px}.wbt col.c4{width:210px}.wbt col.c1{width:92px}}
@media (max-width:1100px){.wbcw{flex-wrap:wrap}.wbcw>.wbcard{flex-basis:100%}.wbimgs{flex-direction:row;width:auto}.wbbigc{align-self:center}}
.srst{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#e5e7eb}.srst.pend{background:#fef3c7;color:#b45309}.srst.ok{background:#dcfce7;color:#15803d}.srst.bad{background:#fee2e2;color:#b91c1c}tr.srpend td{background:#fffbeb}.srf label{font-size:12px;color:#6b7280}
.tipbar{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#eff6ff;border:1px solid #bfdbfe;color:#1e3a8a;border-radius:10px;padding:8px 12px;margin:0 0 12px;font-size:13px}.scrow{padding:6px 0;border-bottom:1px solid #f1f5f9}
/* Batch C：手机布局（窄屏）：左栏变底部横条，表格可横向滑动，表单换行 */
@media (max-width:760px){.layout{flex-direction:column}.side.rail{position:fixed;bottom:0;left:0;right:0;top:auto;width:100%;height:58px;flex-direction:row;z-index:50}.side.rail .brand{display:none}.side.rail .navs{display:flex;flex-direction:row;overflow-x:auto;width:100%}.side.rail .rg{min-width:58px}.side.rail .fly{bottom:58px;top:auto!important;left:0!important;position:fixed}.main{margin-left:0!important;padding-bottom:64px}.top{flex-wrap:wrap;gap:6px;height:auto!important;padding:6px 10px}.top .clocks{display:none}.content{padding:10px!important}.tw,table{display:block;overflow-x:auto;max-width:100%}.row{flex-wrap:wrap}.card{padding:12px}h1{font-size:18px}input,select,button{font-size:16px}}
.stkban{display:flex;gap:14px;align-items:center;background:#dc2626;color:#fff;padding:7px 16px;font-size:13px}.stkban b{font-size:15px}.stkban a{color:#fff;margin-left:auto;text-decoration:underline}
.qsw.stkbig{width:64px;height:34px;border-radius:17px}.qsw.stkbig i{width:28px;height:28px;top:3px;left:3px}.qsw.stkbig.on{background:#dc2626}.qsw.stkbig.on i{left:33px}
.stksum{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 14px}.stksum>div{flex:1;min-width:120px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:10px 14px}.stksum b{display:block;font-size:22px}.stksum span{font-size:12px;color:#6b7280}.stksum .warn{background:#fffbeb;border-color:#fcd34d}
tr.stkdup td,.stklast .stkdup{background:#fef9c3}tr.stkx td{color:#9ca3af;text-decoration:line-through}.stkdupt{background:#fde047;color:#713f12;border-radius:8px;padding:1px 8px;font-size:12px;font-weight:600}.stkdiff{color:#b91c1c;font-weight:600}
.stkalert{border:2px solid #dc2626}.stklast>div{padding:5px 8px;border-bottom:1px solid #f1f5f9;font-size:13px}.skg input,.skg select{padding:4px}
/* 顶栏日历图标（新）：橙红顶条 + 两个深色装订环 + 英文月份；白纸大号深蓝日期；右下角折角 */
.calbtn.calbig{position:relative;width:46px;height:50px;border-radius:7px;overflow:visible;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.calbig .cbh{align-self:stretch;width:100%;background:#f0532d;color:#fff;font:700 11px/17px system-ui,sans-serif;height:17px;border-radius:7px 7px 0 0;padding-top:2px;letter-spacing:.3px}
.calbig .cbd{align-self:stretch;width:100%;border:none;font:800 24px/1 system-ui,sans-serif;color:#1f2f4d;background:linear-gradient(135deg,#fff 0,#fff calc(100% - 9px),transparent calc(100% - 9px));border-radius:0 0 7px 7px}
.calbig .cbr{position:absolute;top:-4px;width:4px;height:9px;border-radius:2px;background:#1f2f4d;box-shadow:0 0 0 1.5px #fff;z-index:2}.calbig .cbr1{left:12px}.calbig .cbr2{right:12px}
.calbig .cbf{position:absolute;right:0;bottom:0;width:9px;height:9px;background:linear-gradient(135deg,#d9dee6 0,#eef1f5 50%,transparent 50%);border-radius:0 0 7px 0}
.skz{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;margin-top:10px}.skz label{display:flex;flex-direction:column;align-items:center;gap:3px}.skz input{width:100%;font-size:16px;text-align:center}.skz .skt span{font-size:20px;font-weight:700;padding-top:4px}@media (max-width:760px){.skz{grid-template-columns:repeat(4,1fr)}}
/* 手机入库（预览）：一屏一步，≥48px 触控 */
.mi{min-height:100vh;display:flex;flex-direction:column;background:#f1f5f9;font-size:17px}.mitop{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;background:#0b2545;color:#fff;height:56px;padding:0 8px}
.mitop b{flex:1;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mib0{width:48px;height:48px;border:0;background:transparent;color:#fff;font-size:32px}.miuser{font-size:13px;opacity:.8}
.mistk{background:#dc2626;color:#fff;text-align:center;padding:10px;font-weight:700}.mibody{flex:1;padding:12px 12px 150px}
.miscan{width:100%;height:210px;border:0;border-radius:20px;background:#1e6fd9;color:#fff;font-size:30px;font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;box-shadow:0 6px 16px #1e6fd955}
.miscan svg{width:72px;height:72px;fill:none;stroke:#fff;stroke-width:1.8;stroke-linecap:round}.miscan small{font-size:15px;font-weight:500;opacity:.9}#mi_v{width:100%;border-radius:14px;margin-top:10px}
.mih{margin:18px 4px 8px;color:#475569;font-size:15px}.milist{display:flex;flex-direction:column;gap:10px}
.micard{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;text-align:left;min-height:72px;border:1px solid #cbd5e1;border-radius:14px;background:#fff;padding:12px 16px;font-size:18px}
.micard span{grid-row:2;color:#64748b;font-size:15px}.micard em{grid-row:1/3;grid-column:2;align-self:center;font-style:normal;font-weight:800;font-size:22px;color:#0b2545}
.misum{display:flex;justify-content:space-between;background:#fff;border-radius:12px;padding:10px 14px;margin-bottom:10px;font-size:15px}.misum b{font-size:22px;margin-left:4px}.mired{color:#dc2626}
.mihd{display:flex;gap:12px;align-items:center;background:#0b2545;color:#fff;border-radius:12px 12px 0 0;padding:8px 12px;margin-top:8px}.mihd img,.minoimg{width:56px;height:56px;border-radius:8px;object-fit:cover;background:#fff;color:#94a3b8;display:flex;align-items:center;justify-content:center;font-size:12px}
.mihd b{display:block;font-size:20px}.mihd span{font-size:14px;opacity:.85}
.mirow{display:flex;align-items:center;gap:10px;background:#fff;border-bottom:1px solid #e2e8f0;padding:6px 10px;min-height:64px}.mirow.midiff{background:#fef2f2}.mirow.miok{background:#f0fdf4}.mirow.midiff.miok{background:#fef2f2}
.miz{width:64px;font-size:26px;font-weight:800}.miz small{font-size:13px;font-weight:500;margin-left:2px}.miexp{flex:1;color:#dc2626;font-weight:700;font-size:15px}
.minum{min-width:96px;height:52px;border:2px solid #94a3b8;border-radius:12px;background:#fff;font-size:28px;font-weight:800}.midiff .minum{border-color:#dc2626;color:#dc2626}
.micheck{width:56px;height:52px;border:2px solid #16a34a;border-radius:12px;background:#fff;color:#16a34a;font-size:30px;font-weight:900}.miok .micheck{background:#16a34a;color:#fff}
.mifoot{position:fixed;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#fffffff2;box-shadow:0 -4px 14px #0002}
.migo{height:64px;border:0;border-radius:16px;background:#16a34a;color:#fff;font-size:24px;font-weight:800}.migo:disabled{background:#94a3b8}.miall{height:52px;border:2px solid #16a34a;border-radius:14px;background:#fff;color:#16a34a;font-size:19px;font-weight:700}
.midone{text-align:center;font-size:22px;font-weight:800;color:#16a34a;padding:12px}
.mipadm{position:fixed;inset:0;background:#0007;z-index:100;display:flex;align-items:flex-end}.mipad{width:100%;background:#fff;border-radius:20px 20px 0 0;padding:14px 14px calc(14px + env(safe-area-inset-bottom))}
.mipt{font-size:22px;font-weight:800}.mipt small{font-size:15px;color:#64748b;font-weight:500;margin-left:8px}.mipv{font-size:56px;font-weight:900;text-align:center;padding:4px 0 8px;letter-spacing:2px}
.mipk{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mipk button{height:60px;border:0;border-radius:12px;background:#e2e8f0;font-size:28px;font-weight:700}.mipk .mipm{background:#dbeafe;color:#1e40af}.mipk .mipc{background:#f1f5f9;font-size:18px}
.mipb{display:grid;grid-template-columns:1fr 2fr;gap:8px;margin-top:10px}.mipb button{height:60px;border:0;border-radius:14px;font-size:22px;font-weight:700;background:#e2e8f0}.mipb .mipok{background:#16a34a;color:#fff}
.miok2{display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:80px;font-size:20px}.mibig{width:120px;height:120px;border-radius:50%;background:#16a34a;color:#fff;font-size:72px;display:flex;align-items:center;justify-content:center}.miok2 b{font-size:30px}
.mftabs{display:flex;gap:6px;overflow-x:auto;margin:0 0 10px;padding-bottom:2px}.mftab{flex:none;min-height:48px;min-width:64px;padding:0 12px;border-radius:12px;border:2px solid #cbd5e1;background:#fff;font-size:17px;font-weight:700}.mftab.on{background:#0f2744;color:#fff;border-color:#0f2744}
.mfhd{position:relative}.mflkb{margin-left:auto;min-width:56px;min-height:56px;border-radius:14px;border:0;background:#16a34a;color:#fff;font-size:20px;display:flex;flex-direction:column;align-items:center;justify-content:center}.mflkb.on{background:#dc2626}.mflkb small{font-size:11px}
.mfnote{background:#fef2f2;color:#b91c1c;font-weight:700;text-align:center;padding:6px;border-radius:8px;margin:0 0 8px;font-size:13px}.mflk{color:#16a34a}.mflk.on{color:#dc2626}.minum.mfem{color:#94a3b8}.mfm{color:#93c5fd;margin-right:6px}.mfm.on{color:#fff;font-weight:700;text-decoration:underline}
.mirow .miz .chip{font-size:15px;padding:4px 8px;margin-right:8px;white-space:nowrap;writing-mode:horizontal-tb;vertical-align:middle}.mirow .miz{display:flex;align-items:center;white-space:nowrap}
.mirow .miz small{margin-right:10px}
.mirow .miz{width:auto;min-width:64px;flex:none}
.msbar{display:flex;gap:8px;margin-bottom:6px}.msjump{flex:1;min-height:56px;border-radius:14px;border:2px solid #1d4ed8;background:#eff6ff;color:#1d4ed8;font-size:18px;font-weight:800}
.msgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mstile{min-height:72px;border-radius:14px;border:2px solid #cbd5e1;background:#fff;font-size:22px;font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center}
.mstile small{font-size:12px;font-weight:600;color:#64748b}.mstile.part{border-color:#f59e0b;background:#fffbeb}.mstile.all{border-color:#16a34a;background:#f0fdf4}
.mscols{display:flex;flex-direction:column;gap:12px}.mscol{display:flex;align-items:center;gap:14px;min-height:96px;border-radius:16px;border:3px solid #cbd5e1;background:#fff;padding:10px 14px;text-align:left}.mscol img,.mscol .minoimg{width:76px;height:76px;object-fit:cover;border-radius:10px}
.mscol b{font-size:28px;flex:1}.mscol.m-KY{border-color:#eab308}.mscol.m-KR{border-color:#f472b6}.mscol.m-KW{border-color:#94a3b8}.msdone{color:#16a34a;font-weight:700;font-size:14px}
.msr{min-height:52px;padding:4px 12px}.msr .minum{min-height:48px}.msok{font-size:24px;color:#16a34a;margin-right:10px}.msleft{display:flex;flex-wrap:wrap;gap:6px}.msleft span{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:6px 8px;font-size:14px}
.msrows{display:grid;grid-template-columns:1fr 1fr;column-gap:6px}.msrows .msr{border-radius:10px;justify-content:space-between}.msrows .msr .minum{min-width:72px;width:auto;flex:1;margin-left:6px}.msrows .miz{min-width:52px;font-size:22px}
.mscw{display:flex;flex-direction:column;gap:12px;height:calc(100dvh - 68px - 24px)}
.msbig{display:flex;align-items:center;gap:16px;background:#0f2744;color:#fff;border-radius:18px;padding:14px 18px;flex:none;min-height:150px}.msbig img,.msbig .minoimg{width:120px;height:120px;object-fit:cover;border-radius:14px;background:#fff}
.msbig b{font-size:64px;font-weight:900;line-height:1;flex:1;text-align:center;word-break:break-all}
.mscw .mscols{flex:1;display:flex;flex-direction:column;gap:12px;min-height:0}.mscw .mscol{flex:1;min-height:110px;border-width:4px}
.mscw .mscol img,.mscw .mscol .minoimg{width:84px;height:84px}.mscw .mscol b{font-size:40px;font-weight:900}.mscw .mscol .muted,.mscw .msdone{font-size:17px;font-weight:700}
.mscw .mscol.m-KY{background:#fefce8}.mscw .mscol.m-KR{background:#fdf2f8}.mscw .mscol.m-KW{background:#f8fafc}
.mscw .mscol b{white-space:nowrap;flex:none;margin-right:auto}.mscw .mscol .msdone,.mscw .mscol .muted{text-align:right;flex:0 1 auto}
.wbgrp{font-weight:800;font-size:13px;color:#0f2744;background:#e2e8f0;padding:4px 8px;border-radius:6px;margin:6px 0 4px}.wbgrp2{background:#fde68a;color:#78350f}.wbte{margin-bottom:6px}
.mftabs2{display:flex;flex-direction:column;gap:6px;margin:0 0 10px}.mftrow{display:grid;grid-template-columns:30px repeat(5,1fr);gap:5px;align-items:center;background:#e2e8f0;border-radius:12px;padding:5px}
.mftrow2{background:#fde68a}.mftl{font-size:12px;font-weight:800;color:#334155;writing-mode:vertical-rl;text-align:center;justify-self:center}.mftrow2 .mftl{color:#78350f}
.mftrow .mftab{min-width:0;padding:0 2px;font-size:16px;min-height:48px}
.dfs{color:#dc2626}.dfo{color:#16a34a}.dfk{color:#64748b;font-weight:600}.mfdept{background:#ecfeff;color:#0e7490;font-weight:700;border-radius:10px;padding:6px 10px;font-size:14px}
.fbis{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow:auto}.fbi{display:flex;gap:10px;align-items:center;padding:8px 10px;border-radius:10px;background:#fff;border:1px solid #e2e8f0}.fbi.s{background:#fef2f2;border-color:#fecaca}.fbi.o{background:#f0fdf4;border-color:#bbf7d0}.fbi>b{font-size:22px;min-width:52px;text-align:center}
.fbm{border-top:1px solid #e2e8f0;padding-top:8px;margin-top:8px}.fbgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px;margin-top:6px}.fbc{border:2px solid #e2e8f0;border-radius:10px;padding:6px;display:flex;flex-direction:column;align-items:center;background:#fff}
.fbc span{font-size:13px;font-weight:700}.fbc>b{font-size:20px}.fbc>b small{font-size:12px;color:#64748b}.fbc em{font-style:normal;font-size:12px}.fbc.s{border-color:#dc2626;background:#fef2f2}.fbc.o{border-color:#16a34a}.fbc.k{border-color:#94a3b8}.fbc2 span::after{content:" 分色";font-size:10px;color:#b45309}
.fbbadge{background:#dc2626;color:#fff;font-weight:800;border-radius:12px;padding:12px;margin-bottom:10px;text-align:center;cursor:pointer;min-height:48px}
.fbnote{display:flex;gap:12px;align-items:center;background:#fff;border-radius:14px;padding:10px 12px;margin-bottom:8px;border:2px solid #e2e8f0}.fbnote.un{box-shadow:inset 4px 0 0 #1d4ed8}.fbnote.s{border-color:#fecaca}.fbnote.o{border-color:#bbf7d0}
.fbnd{font-size:26px;font-weight:900;min-width:66px;text-align:center}.fbnb{display:flex;flex-direction:column;gap:2px}.fbnb b{font-size:16px}.fbnb span{font-size:14px}.fbnb small{color:#64748b}
@media(min-width:700px){.fbis{display:grid;grid-template-columns:1fr 1fr;max-height:none}}
.dpw{display:flex;gap:14px;align-items:flex-start}.dpl{display:flex;flex-direction:column;gap:4px;width:230px;flex:none;max-height:560px;overflow:auto}.dpd{text-align:left;border:1px solid #e2e8f0;background:#fff;border-radius:8px;padding:8px 10px;cursor:pointer;display:flex;justify-content:space-between;gap:6px}.dpd small{color:#64748b}.dpd.on{background:#0f2744;color:#fff}.dpd.on small{color:#cbd5e1}
.dpr{flex:1}.dpt{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.dpg{border:1px solid #e2e8f0;border-radius:10px;padding:8px 10px}.dpgh{display:flex;gap:6px;align-items:center;border-bottom:1px solid #f1f5f9;padding-bottom:6px;margin-bottom:6px}.dpch{display:flex;flex-direction:column;gap:4px;padding-left:18px}.dpch label{font-size:14px}
.wbsp{border-top:1px solid #e2e8f0;padding-top:10px;margin-top:10px}.wbsph{display:flex;gap:10px;align-items:center;margin-bottom:6px}.wbsph img{width:48px;height:48px;border-radius:8px;object-fit:cover}.wbsph b{font-size:18px}.wbst{max-width:640px}
.mftrow2{grid-template-columns:30px repeat(4,1fr)}.mftrow .mftab{font-size:15px}

/* 手机盘点：美度一列 + 缩略图大图 */
.msrows.ms1col{grid-template-columns:1fr;row-gap:0}.ms1col .msr{min-height:0;padding:2px 12px}.ms1col .msr .minum{min-height:40px;height:40px;flex:1}.ms1col .miz{flex:none;width:64px;min-width:64px}
.msth{position:relative;flex:none;cursor:zoom-in}.msth img{display:block}.msth .wm{position:absolute;inset:0;pointer-events:none}.msth i{position:absolute;right:2px;bottom:2px;background:rgba(0,0,0,.6);color:#fff;font-style:normal;font-size:11px;border-radius:6px;padding:0 4px}
.mslb{position:fixed;inset:0;background:#000;z-index:9999;display:flex;flex-direction:column;color:#fff}.mslbt{display:flex;align-items:center;gap:10px;padding:12px 14px;font-size:17px}.mslbt span{flex:1;color:#cbd5e1}.mslbt button{background:none;border:0;color:#fff;font-size:28px}
.mslbi{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.mslbi img{max-width:100%;max-height:100%;object-fit:contain}.mslbi .wm{position:absolute;inset:0;pointer-events:none}
.mslba{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:72px;border:0;border-radius:12px;background:rgba(15,23,42,.55);color:#fff;font-size:40px}.mslba.l{left:6px}.mslba.r{right:6px}
.mslbd{display:flex;justify-content:center;gap:8px;padding:14px}.mslbd span{width:9px;height:9px;border-radius:50%;background:#64748b}.mslbd span.on{background:#fff}
.fpsec.fphoff .fpmiss,.fpsec.fphoff .fpgm{display:none}
/* 盘点单：11 行美度均分填满表头和交单按钮之间的高度 */
.mi:has(.ms1col){height:100dvh;min-height:0}.mibody:has(.ms1col){display:flex;flex-direction:column;padding-bottom:92px;min-height:0}
.msrows.ms1col{flex:1;min-height:0;grid-auto-rows:minmax(44px,1fr)}.ms1col .msr{height:auto;align-items:stretch}.ms1col .msr .miz{align-self:center}.ms1col .msr .minum{height:auto;min-height:0;padding:0;margin:3px 0 3px 6px}
/* 盘点单：交单按钮在上，款号卡片固定在下 */
.mi:has(.ms1col) .mibody{padding-bottom:104px}.migo.mstop{margin:0 0 8px;flex:none}.mifoot .mihd.msfoot{margin:0;border-radius:12px}
/* 手机页统一：操作按钮在顶栏下面（吸顶），说明信息在底部固定 */
.mifoot.mitopact{position:sticky;top:56px;bottom:auto;z-index:4;padding:8px 12px;box-shadow:0 4px 12px #0002;background:#fffffff2}
.mibody{padding-bottom:24px}.mi:has(.miinfo) .mibody{padding-bottom:110px}
.miinfo{position:fixed;left:0;right:0;bottom:0;z-index:4;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:#fffffff2;box-shadow:0 -4px 14px #0002}
.miinfo .mihd{margin:0;border-radius:12px}.miinfo .fcn{margin:6px 0 0}
.mfact{display:flex;gap:8px;align-items:stretch}.mfact .migo{flex:1}.mfact .mflkb{flex:none}
/* 工厂 PO：滑动解锁 */
.mfsl{flex:1;position:relative;height:64px;border-radius:32px;background:#e2e8f0;overflow:hidden;touch-action:none;user-select:none}
.mfslf{position:absolute;left:0;top:0;bottom:0;width:64px;border-radius:32px;background:linear-gradient(90deg,#16a34a,#22c55e)}
.mfsl span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding-left:40px;font-size:19px;font-weight:800;color:#475569;pointer-events:none}
.mfsl.ok span{color:#fff}
.mfslk{position:absolute;left:4px;top:4px;width:56px;height:56px;border-radius:50%;background:#fff;box-shadow:0 2px 8px #0004;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:900;color:#16a34a;cursor:grab;touch-action:none}
.mfunl{flex:1;display:flex;align-items:center;justify-content:center;border-radius:14px;background:#dcfce7;border:2px solid #16a34a;color:#15803d;font-size:19px;font-weight:800;min-height:60px}
/* 盘点改单 */
.msedb{margin-left:8px;border:2px solid #2563eb;color:#2563eb;background:#fff;border-radius:10px;padding:6px 12px;font-size:16px;font-weight:800;display:flex;flex-direction:column;align-items:center}.msedb small{font-size:11px;font-weight:600;color:#64748b}
.msedm{width:110px;font-size:20px;font-weight:800;border:0;border-radius:8px;padding:2px 6px}.msedc{display:inline-flex;gap:4px;vertical-align:middle}.msedc button{border:2px solid #fff6;background:transparent;color:#fff;border-radius:8px;padding:2px 8px;font-size:15px;font-weight:800}.msedc button.on{background:#fff;color:#0b2545}
.mihd a,.stkht+a{color:#93c5fd;text-decoration:underline;cursor:pointer}.stkht td,.stkht th{padding:4px 6px}.stkht .stkhnow td{background:#dcfce7;font-weight:700}.stkhby td{color:#64748b;font-size:12px;background:#f8fafc}
.mfdept1{font-size:18px;font-weight:800;padding:10px 12px;margin-bottom:8px}
/* 手机极简 / 防呆：颜色+符号表达状态 */
.dfa{color:#d97706}.miexp{color:#64748b;font-weight:700;font-size:16px}
.minum.mfok{border-color:#16a34a;background:#f0fdf4}.minum.mfshort{border-color:#dc2626;background:#fef2f2}.minum.mfbig{border-color:#d97706;background:#fffbeb;color:#b45309}
.mftab i{font-style:normal;display:block;font-size:20px;line-height:1.1}.mfdept1{font-size:26px;text-align:center}
.mfsaved{position:fixed;left:50%;top:40%;transform:translate(-50%,-50%);width:120px;height:120px;border-radius:50%;background:#16a34aee;color:#fff;font-size:72px;font-weight:900;display:flex;align-items:center;justify-content:center;z-index:10000;animation:mfsv .9s ease forwards;pointer-events:none}
@keyframes mfsv{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}20%{transform:translate(-50%,-50%) scale(1.05);opacity:1}80%{opacity:1}100%{opacity:0}}
.mfsl span{padding-left:50px;letter-spacing:4px;color:#64748b}
.mfsaved.big{background:#dc2626ee}
/* 大缺口（要重做）：大红横幅 + 格子加粗红 */
.mfbigal{background:#dc2626;color:#fff;font-size:24px;font-weight:900;border-radius:14px;padding:14px 12px;margin:0 0 8px;text-align:center;line-height:1.4;animation:mfpulse 1.2s ease-in-out infinite alternate}
@keyframes mfpulse{from{box-shadow:0 0 0 0 #dc262688}to{box-shadow:0 0 0 8px #dc262600}}
.dfbig{font-size:20px}.minum.mfshortbig{border-width:4px;border-color:#dc2626;background:#fee2e2;color:#b91c1c}
.fbi.big,.fbnote.big{border:3px solid #dc2626;background:#fee2e2}
/* 工序名：不用图标，大号粗体字 */
.mftab{font-size:20px;font-weight:900;letter-spacing:1px}.mftab i{display:none}.mfdept1{font-size:34px;font-weight:900;letter-spacing:4px;color:#0b2545}
.mftrow .mftab{font-size:20px;font-weight:900;min-height:56px;letter-spacing:0}
/* 工序名：仿宋字体（朱雀仿宋 Zhuque Fangsong，SIL OFL 1.1，只取工序名用到的字，约 8KB；许可证见 /static/fonts/fs-proc-OFL.txt） */
@font-face{font-family:"ErpProcFS";src:url("/static/fonts/fs-proc.woff") format("woff");font-display:swap}
.mftab,.mftrow .mftab,.mfdept1{font-family:"ErpProcFS",FangSong,STFangsong,"FangSong_GB2312",serif;font-weight:900}
.mftrow .mftab{font-size:23px}.mfdept1{font-size:40px}
/* ===== 工人手机页铁律：戴手套也能点（≥64px、间距大）；颜色只三种含义：绿 = 正常/完成，黄 = 疑似按错（如超订单 2 倍），红 = 少/异常；其他状态一律中性色 ===== */
.dfa{color:#a16207}.minum.mfbig{border-color:#eab308;background:#fef9c3;color:#854d0e;border-width:4px}
.mflkb.on{background:#0f2744}.mftrow2{background:#e0e7ff}.mftrow2 .mftl{color:#1e3a8a}
.mstile.part{border-color:#3b82f6;background:#eff6ff}
.mi .minum{min-height:64px;font-size:30px}.mi .mirow{min-height:72px}.micheck{width:68px;height:64px}
.miall{height:64px;font-size:22px}.migo{min-height:72px;font-size:26px}.mi .mifoot.mitopact{gap:10px}
.mipk{gap:10px!important}.mipk button{height:72px;font-size:32px}.mipb button{min-height:72px;font-size:30px}
.mftab,.mftrow .mftab{min-height:64px}.mflkb{min-width:72px;min-height:72px;font-size:30px}.msjump{min-height:64px;font-size:26px}
.msedb{min-height:64px;min-width:72px;font-size:26px;justify-content:center}.mstile{min-height:80px}
.msrows.ms1col{grid-auto-rows:minmax(64px,1fr)}.ms1col .msr .minum{min-height:56px}
.mfsl{height:72px;border-radius:36px}.mfslk{width:64px;height:64px}.mfunl{min-height:72px}
.mi:has(.ms1col){height:auto;min-height:100dvh}.mipk button.mipc{font-size:30px;font-weight:900}.mipb .mipok{font-size:40px}
.msrows.ms1col{grid-auto-rows:minmax(72px,1fr)}.ms1col .msr .minum{min-height:60px}
/* 手机盘点单：11 行必须一屏放下、不滚动（少操作优先，覆盖 64px 下限）；顶栏/交单/底部卡片适当压缩，行均分剩余高度 */
.mi:has(.ms1col){height:100dvh;min-height:0;overflow:hidden}
.mi:has(.ms1col) .mitop{height:48px}.mi:has(.ms1col) .mifoot.mitopact{top:48px;padding:6px 10px}.mi:has(.ms1col) .migo{min-height:56px;height:56px}
.mi:has(.ms1col) .mibody{display:flex;flex-direction:column;min-height:0;padding:6px 10px var(--msinfo,76px)}
.mi:has(.ms1col) .miinfo{padding:6px 10px calc(6px + env(safe-area-inset-bottom))}.mi:has(.ms1col) .miinfo .mihd{padding:4px 10px;min-height:0}
.mi:has(.ms1col) .miinfo .mihd img,.mi:has(.ms1col) .miinfo .minoimg{width:48px;height:48px}
.msrows.ms1col{flex:1;min-height:0;grid-auto-rows:minmax(0,1fr);row-gap:3px}
.mi .ms1col .mirow.msr{min-height:0;padding:0 10px;height:auto}.mi .ms1col .msr .minum{min-height:0;height:auto;margin:3px 0 3px 8px;flex:1;font-size:28px}
.mi .mirow[onclick]{cursor:pointer;-webkit-tap-highlight-color:#16a34a33}
/* 大键盘：底行只有 AC、⌫ 两个等宽键；没有关闭键，点外面关 */
.mipk2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.mipk2 button{height:72px;border:0;border-radius:12px;background:#f1f5f9;font-size:30px;font-weight:900}
.mipb .mipe{background:#e2e8f0;color:#0f172a;font-size:28px;font-weight:900}
/* 统一大键盘：所有手机页同一尺寸；占屏幕下方 75%，上面 25% 是暗区（点了关闭） */
.mipadm .mipad{height:75dvh;display:flex;flex-direction:column;box-sizing:border-box}
.mipadm .mipk{flex:1;grid-auto-rows:1fr;min-height:0}.mipadm .mipk button,.mipadm .mipk2 button,.mipadm .mipb button{height:auto;min-height:0}
.mipadm .mipk2{flex:0 0 18%;min-height:0}.mipadm .mipb{flex:0 0 13%;min-height:0;grid-template-columns:1fr 2fr}.mipadm .mipb.mipb1{grid-template-columns:1fr}
.mipadm .mipt,.mipadm .mipv{flex:none}
.mipadm .mipk{flex:4 1 0}.mipadm .mipk2{flex:1 1 0;margin-top:10px}.mipadm .mipb{flex:1 1 0;margin-top:10px}

/* 人事›合作工厂：工厂部门 */
.hfdp{display:inline-block;padding:2px 8px;margin:2px 4px 2px 0;border-radius:10px;background:#fff;border:1px solid #cbd5e1;font-size:12px}.hfdp i{font-style:normal;margin-left:4px;color:#2563eb;font-weight:700}
.hfde{border:1px solid #e2e8f0;border-radius:8px;padding:8px;margin-bottom:8px}.hfds{margin-top:6px;font-size:13px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}.hfds label{display:inline-flex;gap:3px;align-items:center}

/* 部门权限设置：公司 / 各工厂 分块（默认折叠）；工厂部门只读 */
.dpblk{margin-bottom:8px;border:1px solid #e2e8f0;border-radius:8px;padding:4px 6px}.dpblk>summary{cursor:pointer;font-weight:700;padding:4px 2px}.dpfd{padding:5px 8px;font-size:13px;color:#334155}

/* 账户›部门 开关：绿 = 开，灰 = 关 */
.fdsw{position:relative;display:inline-block;width:46px;height:26px;cursor:pointer}.fdsw input{opacity:0;width:0;height:0}.fdsw i{position:absolute;inset:0;background:#cbd5e1;border-radius:13px;transition:.2s}.fdsw i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:.2s}.fdsw input:checked+i{background:#16a34a}.fdsw input:checked+i::after{left:23px}tr.fdoff td{color:#94a3b8}

/* 预览：老板看板 */
.bgauth{margin-top:12px}.bgauth>summary{cursor:pointer;font-weight:700}.bgt input[type=datetime-local]{font-size:13px}td.bgok{color:#16a34a;font-weight:700}td.bglow{color:#dc2626}

/* 交接台账 */
.hochip{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:10px;background:#e0e7ff;color:#1e3a8a;font-size:13px;font-weight:700}.hochip.ok{background:#dcfce7;color:#15803d}.hochip.neg{background:#fee2e2;color:#b91c1c}
.hobtn{margin-left:6px;padding:4px 10px;border-radius:8px;border:1px solid #0f2a4a;background:#fff;font-weight:700;font-size:14px}
.howho{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}.hochipb{padding:10px 16px;border-radius:22px;border:2px solid #cbd5e1;background:#fff;font-size:17px;font-weight:700;min-height:48px}.hochipb.on{border-color:#16a34a;background:#dcfce7}
.hokind{display:flex;gap:8px;margin-bottom:10px}.hokind button{flex:1;min-height:48px;font-size:18px;font-weight:800;border-radius:10px;border:2px solid #cbd5e1;background:#fff}.hokind button.on{background:#0f2a4a;color:#fff;border-color:#0f2a4a}
.hot td,.hot th{text-align:center;font-size:16px}.horow{cursor:pointer;height:52px}.horow td.hoq{font-size:20px;font-weight:800}td.hook{color:#16a34a;font-weight:800}td.honeg{color:#dc2626;font-weight:800}
#modal .box:has(.hokind){min-width:0;width:560px;max-width:94vw;box-sizing:border-box;padding:16px}#modal .box:has(.hokind) table.hot,#modal .box:has(.hokind) table{width:100%!important;display:table}
body:has(.mi) #modal .mask,body:has(.mi) #ovl .mask{left:0}

.stklock{position:fixed;right:0;bottom:0;z-index:8;background:rgba(100,116,139,.45);display:flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none;cursor:not-allowed}.stklock div{background:#fff;border-radius:16px;padding:28px 40px;box-shadow:0 20px 50px rgba(15,23,42,.3);text-align:center;max-width:86vw}.stklock b{display:block;font-size:34px;color:#b91c1c;margin-bottom:8px}.stklock span{color:#475569;font-size:15px}.stkgray{filter:grayscale(1) opacity(.6);user-select:none;-webkit-user-select:none;pointer-events:none}
.msleft a{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:8px 10px;color:#0f2a4a;text-decoration:none;font-weight:600}.msgrp{margin-top:12px;color:#0f2a4a}.opsk{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.opsk .card{margin:0}.opsoos{display:flex;flex-wrap:wrap;gap:6px}.opsoos span{border:1px solid #e2e8f0;border-radius:6px;padding:3px 8px;font-size:13px}

.stkrel{background:#fff;border:1.5px solid #dc2626;color:#dc2626}.stkrel:hover,.stkrel:active{background:#dc2626;color:#fff;border-color:#dc2626}.stkfree{font-size:13px;color:#15803d;background:#dcfce7;border-radius:8px;padding:2px 8px;margin-left:6px}
.stkprog{display:flex;align-items:center;gap:24px}.stkpgl{flex:1}.stkpgt{font-size:20px;margin-bottom:8px}.stkpgt b{font-size:34px;font-weight:800}.stkbar{height:22px;border-radius:11px;background:#e5e7eb;overflow:hidden}.stkbar i{display:block;height:100%;border-radius:11px;background:#22c55e}
.stkleft{position:relative}.stkleftl{font-weight:700;color:#0f2a4a;border-bottom:1px dashed #0f2a4a;cursor:default;white-space:nowrap}.stkpop{display:none;position:absolute;right:0;top:100%;z-index:20;width:420px;max-height:420px;overflow:auto;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 12px 30px rgba(15,23,42,.2);padding:10px;flex-wrap:wrap;gap:6px}.stkleft:hover .stkpop{display:flex}.stkpop span{border:1px solid #e2e8f0;border-radius:6px;padding:3px 8px;font-size:13px}
