/* ================================================================
   UEE 扫描台账 · 公共样式（设计Token = 开工文档§3.2 唯一颜色来源）
   ================================================================ */
:root{
  --green-900:#1E3B2C; --green-600:#2F7D5B; --green-400:#6FBF95;
  --green-200:#CFE6D8; --green-100:#E7F1EB;
  --bg:#F2F4F1; --surface:#FFFFFF;
  --text:#1A2B22; --text-2:#6B7A72; --line:#E4E9E5;
  --ok-bg:#E3F2E8; --ok-fg:#1F7A4D; --warn-bg:#FBF0D3; --warn-fg:#9A6B00;
  --err-bg:#FBE3DF; --err-fg:#B3372A; --mute-bg:#EDF0EE; --mute-fg:#6B7A72;
  --buyer-a:#2563EB; --buyer-a-bg:#E8EFFD; --buyer-b:#EA8A00; --buyer-b-bg:#FDF1DF;
  --radius-card:20px; --radius-btn:999px; --shadow:0 1px 3px rgba(20,40,30,.06);
}
*{box-sizing:border-box;margin:0;padding:0;font-family:'Noto Sans SC','Manrope',sans-serif}
.num,.mono{font-family:'Manrope','Noto Sans SC',sans-serif;font-variant-numeric:tabular-nums}
body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.6}
button{cursor:pointer;border:none;font-family:inherit}
a{text-decoration:none;color:inherit}

/* 斜纹 = 待处理（签名元素） */
.hatch{background:repeating-linear-gradient(45deg,transparent 0 4px,var(--green-200) 4px 6px)}
.hatch-warn{background:repeating-linear-gradient(45deg,transparent 0 4px,#F0DFAE 4px 6px)}

/* 顶部导航（四端互跳） */
#topnav{position:sticky;top:0;z-index:200;background:var(--green-900);color:#fff;padding:10px 20px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#topnav .title{font-weight:700;margin-right:16px}
#topnav a{background:rgba(255,255,255,.12);color:#fff;border-radius:var(--radius-btn);padding:6px 18px;font-size:13px}
#topnav a.on{background:#fff;color:var(--green-900);font-weight:700}
#topnav .hint{margin-left:auto;font-size:12px;opacity:.7}

/* 通用组件 */
.card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow);padding:24px}
.btn{border-radius:var(--radius-btn);padding:9px 22px;font-size:14px;font-weight:500}
.btn-pri{background:var(--green-900);color:#fff}
.btn-sec{background:#fff;color:var(--text);border:1.5px solid var(--line)}
.btn-sm{padding:5px 14px;font-size:12.5px}
.tag{display:inline-block;border-radius:6px;padding:2px 10px;font-size:12px;font-weight:500}
.tag-ok{background:var(--ok-bg);color:var(--ok-fg)}.tag-warn{background:var(--warn-bg);color:var(--warn-fg)}
.tag-err{background:var(--err-bg);color:var(--err-fg)}.tag-mute{background:var(--mute-bg);color:var(--mute-fg)}
.tag-a{background:var(--buyer-a-bg);color:var(--buyer-a)}.tag-b{background:var(--buyer-b-bg);color:var(--buyer-b)}
table{width:100%;border-collapse:collapse}
th{font-size:12px;color:var(--text-2);font-weight:500;text-align:left;padding:8px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
td{padding:10px 12px;border-bottom:1px solid var(--line);font-size:13.5px;vertical-align:middle}
tr.row-a td:first-child{box-shadow:inset 4px 0 0 var(--buyer-a)}
tr.row-b td:first-child{box-shadow:inset 4px 0 0 var(--buyer-b)}
tr.clk{cursor:pointer}tr.clk:hover td{background:var(--green-100)}
.red-row td{background:#FDF3F1!important}
.grp{background:var(--green-100);font-weight:700;font-size:13px}

/* 列表四件套 */
.filterbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.filterbar select,.filterbar input{border:1.5px solid var(--line);border-radius:99px;padding:7px 14px;font-size:13px;outline:none;background:#fff}
.filterbar input:focus,.filterbar select:focus{border-color:var(--green-600)}
.filterbar .exp{margin-left:auto}
.pgn{color:var(--text-2);font-size:12px;text-align:right;margin-top:10px}

.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.tabs button{background:transparent;border-radius:var(--radius-btn);padding:7px 20px;font-size:13.5px;color:var(--text-2)}
.tabs button.on{background:var(--green-900);color:#fff;font-weight:600}
.prog{height:8px;border-radius:99px;overflow:hidden;display:flex;width:110px}
.prog .fill{background:var(--green-600)}
.qcard{border:1px solid var(--line);border-radius:16px;padding:16px 18px;margin-bottom:12px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.qcard.pend{border-style:dashed}
.thumb{width:64px;height:64px;border-radius:12px;background:var(--green-100);display:flex;align-items:center;justify-content:center;font-size:24px;flex-shrink:0}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.kpi{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow);padding:20px 22px}
.kpi .lab{font-size:13px;color:var(--text-2)}
.kpi .val{font-family:'Manrope';font-weight:800;font-size:42px;line-height:1.2;margin:6px 0 2px}
.kpi.dark{background:var(--green-900);color:#fff}
.kpi.dark .lab{color:rgba(255,255,255,.75)}
.kpi .foot{font-size:12px;color:var(--text-2)}.kpi.dark .foot{color:var(--green-400)}
.omni{display:flex;gap:8px;margin-bottom:18px}
.omni input{flex:1;max-width:520px;border:2px solid var(--green-200);border-radius:14px;padding:11px 16px;font-size:14px;outline:none;background:#fff}
.omni input:focus{border-color:var(--green-600)}

/* 明细抽屉 */
.drawer-mask{position:fixed;inset:0;background:rgba(20,40,30,.35);z-index:290;display:none}
.drawer-mask.on{display:block}
.drawer{position:fixed;top:0;right:0;width:min(820px,96vw);height:100vh;background:#fff;z-index:295;transform:translateX(105%);transition:transform .25s;box-shadow:-8px 0 30px rgba(0,0,0,.12);display:flex;flex-direction:column}
.drawer.on{transform:none}
.drawer .dhead{padding:22px 26px 16px;border-bottom:1px solid var(--line)}
.drawer .dhead h3{font-size:18px;font-family:'Manrope','Noto Sans SC';font-weight:800}
.drawer .dhead .meta{color:var(--text-2);font-size:12.5px;margin-top:4px;line-height:1.8}
.drawer .dbody{padding:18px 26px;overflow-y:auto;flex:1}
.drawer .dbody h4{font-size:13px;color:var(--text-2);margin:16px 0 8px;font-weight:500}
.drawer .close{position:absolute;top:18px;right:20px;width:36px;height:36px;border-radius:12px;background:var(--mute-bg);font-size:16px}
.tl{border-left:2px solid var(--green-200);padding-left:16px;margin-left:6px}
.tl div{position:relative;padding-bottom:10px;font-size:12.5px;color:var(--text-2)}
.tl div::before{content:'';position:absolute;left:-21px;top:6px;width:8px;height:8px;border-radius:99px;background:var(--green-600)}
.pgrid{display:flex;gap:8px;flex-wrap:wrap}
.pgrid .p{width:58px;height:58px;border-radius:12px;background:var(--green-100);display:flex;align-items:center;justify-content:center;font-size:22px;cursor:pointer}

/* 导入向导 */
.wiz-mask{position:fixed;inset:0;background:rgba(20,40,30,.45);z-index:310;display:none;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow-y:auto}
.wiz-mask.on{display:flex}
.wiz{background:#fff;border-radius:22px;width:min(760px,96vw);padding:28px}
.wsteps{display:flex;gap:6px;margin-bottom:22px}
.wsteps span{flex:1;text-align:center;font-size:12.5px;color:var(--text-2);padding:8px;border-radius:12px;background:var(--mute-bg)}
.wsteps span.on{background:var(--green-900);color:#fff;font-weight:700}
.wsteps span.done{background:var(--green-100);color:var(--green-600)}
.supgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.supgrid .sc{border:2px solid var(--line);border-radius:16px;padding:18px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.supgrid .sc:hover{border-color:var(--green-600);background:var(--green-100)}
.supgrid .sc b{font-size:15px}
.drop{border:2.5px dashed var(--green-400);border-radius:18px;padding:44px 20px;text-align:center;color:var(--text-2);cursor:pointer;background:var(--green-100)}
.drop:hover{border-color:var(--green-600)}
.drop .big{font-size:34px;margin-bottom:6px}
.sumbar{display:flex;gap:14px;background:var(--green-100);border-radius:14px;padding:14px 18px;margin-bottom:14px;font-size:14px}
.sumbar b{font-family:'Manrope';font-size:20px}
.wact{display:flex;gap:10px;margin-top:20px;justify-content:flex-end}

/* Toast / Modal */
#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:400;display:none;border-radius:14px;padding:13px 26px;font-size:15px;font-weight:600;box-shadow:0 6px 24px rgba(0,0,0,.15);max-width:90vw}
#toast.ok{background:var(--green-900);color:#fff}
#toast.warn{background:var(--warn-bg);color:var(--warn-fg)}
.mask{position:fixed;inset:0;background:rgba(20,40,30,.45);z-index:320;display:none;align-items:center;justify-content:center}
.mask.on{display:flex}
.modal{background:#fff;border-radius:22px;padding:26px;width:min(400px,90vw)}
.modal h3{font-size:17px;margin-bottom:8px}
.modal p{color:var(--text-2);font-size:13.5px;margin-bottom:14px}
.modal .bignum{font-family:'Manrope';font-weight:800;font-size:44px;text-align:center;color:var(--err-fg);letter-spacing:6px;margin:6px 0 12px}
.modal input{width:100%;border:2px solid var(--line);border-radius:14px;padding:12px;font-size:20px;text-align:center;outline:none;font-family:'Manrope'}
.modal input:focus{border-color:var(--err-fg)}
.modal .acts{display:flex;gap:10px;margin-top:16px}
.modal .acts button{flex:1;height:46px;border-radius:14px;font-size:15px;font-weight:700}

/* PC布局（admin/portal共用部分） */
.pc-layout{display:flex;min-height:calc(100vh - 46px)}
.pc-layout aside{width:220px;background:var(--surface);padding:24px 14px;flex-shrink:0}
.pc-layout aside .logo{font-family:'Manrope';font-weight:800;font-size:20px;color:var(--green-900);padding:0 12px 20px}
.pc-layout aside .navlab{font-size:11px;color:var(--text-2);letter-spacing:.1em;padding:14px 12px 6px}
.pc-layout .nav{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;color:var(--text-2);font-size:14px;cursor:pointer;position:relative;margin:2px 0}
.pc-layout .nav.on{color:var(--green-900);font-weight:700;background:var(--green-100)}
.pc-layout .nav.on::before{content:'';position:absolute;left:-14px;top:8px;bottom:8px;width:4px;border-radius:4px;background:var(--green-600)}
.pc-layout .nav .cnt{margin-left:auto;background:var(--err-bg);color:var(--err-fg);border-radius:99px;font-size:11px;padding:1px 8px;font-weight:700}
.pc-layout main{flex:1;padding:26px 30px;max-width:none;min-width:0}
.pc-layout .view{display:none}.pc-layout .view.on{display:block}
h1.pg{font-size:26px;font-weight:800;font-family:'Manrope','Noto Sans SC'}
.sub{color:var(--text-2);margin:4px 0 18px;font-size:13.5px}

/* 现场端手机框 */
.field-wrap{display:flex;justify-content:center;gap:30px;align-items:flex-start;padding:26px 12px;flex-wrap:wrap}
.phone{width:392px;max-width:96vw;flex:0 0 392px;background:#fff;border-radius:36px;box-shadow:0 12px 40px rgba(20,40,30,.18);overflow:hidden;border:8px solid #1A2B22}
.ph-top{padding:14px 18px;color:#fff;transition:background .3s}
.ph-top .brand{display:flex;justify-content:space-between;align-items:center;font-weight:700}
.badge-up{background:rgba(255,255,255,.2);border-radius:99px;padding:2px 10px;font-size:11px;cursor:pointer}
.badge-up.has{background:var(--warn-bg);color:var(--warn-fg);font-weight:700}
.ph-hit{font-size:12px;opacity:.85;margin-top:8px}
.ph-loc{font-size:21px;font-weight:800;font-family:'Manrope','Noto Sans SC'}
.ph-body{padding:16px;background:#fff;min-height:520px;font-size:16px}
.ph-body .scr{display:none}.ph-body .scr.on{display:block}
.progbar{background:var(--green-100);border-radius:99px;height:10px;overflow:hidden;margin:4px 0 14px}
.progbar>div{height:100%;background:var(--green-600);border-radius:99px}
.scan-in{display:flex;gap:8px;margin-bottom:10px}
.scan-in input{flex:1;border:2px solid var(--green-600);border-radius:14px;padding:13px 14px;font-size:16px;outline:none}
.scan-in button{border-radius:14px;background:var(--green-900);color:#fff;padding:0 18px;font-size:20px}
.sim{font-size:12px;color:var(--text-2);margin-bottom:12px;line-height:1.9}
.sim a{color:var(--green-600);cursor:pointer;text-decoration:underline;margin-right:10px}
.line-item{display:flex;align-items:center;gap:10px;padding:12px 6px;border-bottom:1px solid var(--line);min-height:56px}
.line-item .nm{flex:1;font-size:15px}
.line-item .nm small{display:block;color:var(--text-2);font-size:12px}
.line-item .q{font-family:'Manrope';font-weight:800;font-size:20px;min-width:34px;text-align:center}
.line-item .more{width:40px;height:40px;border-radius:12px;background:var(--mute-bg);font-size:18px}
.fbtns{display:flex;gap:10px;margin-top:14px}
.fbtn{flex:1;height:58px;border-radius:16px;font-size:16.5px;font-weight:700}
.fbtn.pri{background:var(--green-900);color:#fff}
.fbtn.sec{background:#fff;border:2px solid var(--line)}
.fmenu{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.fmenu button{height:64px;border-radius:16px;background:var(--green-100);color:var(--green-900);font-size:15.5px;font-weight:700}
.fmenu .wide{grid-column:1/-1;background:var(--green-900);color:#fff}
.draftbar{background:var(--warn-bg);color:var(--warn-fg);border-radius:14px;padding:12px 14px;font-size:14px;display:flex;align-items:center;gap:10px;margin-bottom:12px}
.draftbar button{border-radius:99px;padding:5px 14px;font-size:13px;font-weight:700}
.avgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:10px 0 20px}
.avgrid .av{height:96px;border-radius:18px;background:var(--green-100);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-weight:700;font-size:14px;cursor:pointer}
.avgrid .av span{font-size:30px}
.pinpad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:260px;margin:0 auto}
.pinpad button{height:56px;border-radius:16px;background:var(--mute-bg);font-size:20px;font-weight:700}
.pindots{text-align:center;font-size:30px;letter-spacing:12px;margin:10px 0 18px;color:var(--green-900)}
.seg{display:flex;background:var(--mute-bg);border-radius:99px;padding:4px;margin-bottom:14px}
.seg button{flex:1;border-radius:99px;padding:11px;font-size:15px;font-weight:700;background:transparent;color:var(--text-2)}
.seg button.on{background:var(--green-900);color:#fff}
.fld{margin-bottom:12px}
.fld label{font-size:13px;color:var(--text-2);display:block;margin-bottom:5px}
.fld input,.fld textarea{width:100%;border:1.5px solid var(--line);border-radius:14px;padding:12px;font-size:16px;font-family:inherit;outline:none}
.fld input:focus,.fld textarea:focus{border-color:var(--green-600)}
.abgrid{display:flex;gap:10px}
.abgrid button{flex:1;height:54px;border-radius:14px;font-size:17px;font-weight:800;border:2px solid var(--line);background:#fff;color:var(--text-2)}
.abgrid button.on-a{background:var(--buyer-a);border-color:var(--buyer-a);color:#fff}
.abgrid button.on-b{background:var(--buyer-b);border-color:var(--buyer-b);color:#fff}
.photo-add{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}
.photo-add .p{width:72px;height:72px;border-radius:14px;background:var(--green-100);display:flex;align-items:center;justify-content:center;font-size:26px}
.photo-add .add{border:2px dashed var(--green-400);background:#fff;cursor:pointer;color:var(--green-600)}
.backlink{color:var(--green-600);font-size:14px;margin-bottom:12px;display:inline-block;cursor:pointer;font-weight:600}
.today-item{display:flex;align-items:center;gap:10px;padding:13px 6px;border-bottom:1px solid var(--line);cursor:pointer}
.today-item .st{font-size:20px}
.today-item .inf{flex:1;font-size:14px}
.today-item .inf small{display:block;color:var(--text-2);font-size:12px}
.testguide{width:320px;font-size:13px}
.testguide h3{font-size:15px;margin-bottom:10px}
.testguide li{margin-bottom:7px;color:var(--text-2)}
.testguide code{background:var(--green-100);border-radius:6px;padding:1px 7px;font-family:'Manrope';color:var(--green-900);cursor:pointer}

/* 首页导航卡 */
.home-grid{max-width:900px;margin:40px auto;padding:0 20px;display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.home-card{background:var(--surface);border-radius:var(--radius-card);box-shadow:var(--shadow);padding:28px;display:block;transition:transform .15s}
.home-card:hover{transform:translateY(-3px)}
.home-card .ic{font-size:36px}
.home-card h2{font-size:19px;margin:10px 0 4px;font-family:'Manrope','Noto Sans SC';font-weight:800}
.home-card p{color:var(--text-2);font-size:13px}

/* v1.3 追加 */
.subinfo{font-size:11px;color:var(--text-2);font-family:'Noto Sans SC';margin-top:2px}
.lnk{color:var(--green-600);cursor:pointer}
.crumb{color:var(--green-600);font-size:13.5px;cursor:pointer;font-weight:600;margin-bottom:12px;display:inline-block}
.subtabs{display:flex;gap:6px;margin-bottom:12px}
.subtabs button{background:var(--mute-bg);border-radius:99px;padding:5px 16px;font-size:12.5px;color:var(--text-2)}
.subtabs button.on{background:var(--green-600);color:#fff;font-weight:600}
/* v1.5 追加 */
input.cell{width:100%;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:13px;font-family:inherit;outline:none}
input.cell:focus{border-color:var(--green-600)}
.instr-bar{background:var(--warn-bg);color:var(--warn-fg);border:2px solid #E8C96A;border-radius:14px;padding:12px 14px;font-size:15px;font-weight:700;margin-bottom:12px;display:flex;gap:8px;align-items:center}
/* v1.6 追加：状态筛选chips与状态Tag强化 */
.chips{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.chips button{border-radius:99px;padding:6px 16px;font-size:12.5px;background:var(--mute-bg);color:var(--text-2);font-weight:600}
.chips button.on{background:var(--green-900);color:#fff}
.chips button b{font-family:'Manrope'}
.st-wait{background:var(--warn-bg);color:var(--warn-fg);background-image:repeating-linear-gradient(45deg,transparent 0 4px,#F0DFAE 4px 6px)}
.st-part{background:#E3ECFB;color:#2456A6}
.st-done{background:var(--ok-bg);color:var(--ok-fg)}
.st-closed{background:var(--mute-bg);color:var(--mute-fg)}
.st-void{background:var(--err-bg);color:var(--err-fg);text-decoration:line-through}
.codebadge{background:var(--mute-bg);color:var(--text-2);border-radius:6px;padding:0 6px;font-size:10.5px;cursor:help;margin-left:4px}
.console{display:grid;grid-template-columns:340px 1fr;gap:16px}
.console .scanpanel{background:var(--green-900);border-radius:var(--radius-card);padding:20px;color:#fff}
.console .scanpanel input{width:100%;border:none;border-radius:14px;padding:14px;font-size:17px;outline:none;font-family:'Manrope'}
.console .hitinfo{margin-top:14px;font-size:13px;line-height:2}
/* v1.8 追加：多选筛选与操作台模式色 */
.ms{position:relative;display:inline-block}
.ms-btn{border:1.5px solid var(--line);border-radius:99px;padding:7px 14px;font-size:13px;background:#fff;color:var(--text)}
.ms-dd{display:none;position:absolute;top:110%;left:0;z-index:120;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:10px 14px;min-width:170px}
.ms-dd.on{display:block}
.ms-dd label{display:block;font-size:13px;padding:4px 0;cursor:pointer;white-space:nowrap}
/* v2.0 追加 */
.pup{color:#B3372A;font-weight:800;cursor:help}
.pdn{color:#1F7A4D;font-weight:800;cursor:help}
.badge-new{background:#B3372A;color:#fff;border-radius:6px;padding:1px 7px;font-size:10px;font-weight:800;margin-left:5px;vertical-align:middle}
tr.row-gray td{background:#F0F2F0!important;color:#8A948D}
tr.row-gray td .tag{opacity:.75}
/* v2.1 追加 */
.bar{height:36px;background:repeating-linear-gradient(90deg,#111 0 2px,transparent 2px 4px,#111 4px 7px,transparent 7px 9px,#111 9px 10px,transparent 10px 13px);border-radius:2px}
.bar+.barno{font-family:'Manrope';font-size:12px;letter-spacing:2px;text-align:center;margin-top:2px}
.tagchip{display:inline-block;background:var(--green-100);color:var(--green-900);border:1px solid var(--green-200);border-radius:8px;padding:1px 8px;font-size:11px;font-weight:600;margin-right:4px;cursor:pointer}
.tagchip.add{background:#fff;border-style:dashed;color:var(--text-2)}
.rmk{cursor:help;font-size:14px}
.jp-sheet{background:#fff;width:min(720px,94vw);padding:36px 44px;border-radius:8px;font-size:13px;color:#111;max-height:88vh;overflow-y:auto}
.jp-sheet h2{text-align:center;font-size:22px;letter-spacing:16px;border-bottom:3px double #111;padding-bottom:8px;margin-bottom:16px}
.jp-sheet table{border:1px solid #111}
.jp-sheet th{background:#EFEFEF;border:1px solid #111;color:#111;text-align:center;padding:5px}
.jp-sheet td{border:1px solid #111;padding:5px 8px}
.jp-meta{display:flex;justify-content:space-between;gap:20px;margin-bottom:14px}
/* v2.3 追加：表单内照片按钮修复 + 流水样式 */
.photo-add .p.add{width:auto;min-width:96px;padding:0 12px;font-size:12.5px;white-space:nowrap;display:flex;align-items:center;justify-content:center;line-height:1.2}
.qin{font-family:'Manrope';font-weight:800;font-size:15px;color:var(--ok-fg)}
.qout{font-family:'Manrope';font-weight:800;font-size:15px;color:var(--err-fg)}
.ellip{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:bottom}

/* v2.4 追加：现场端应收/实收行 */
.cntbar{display:flex;justify-content:space-between;background:var(--green-100);border-radius:12px;padding:8px 14px;font-size:14px;margin-bottom:8px}
.qbtn{width:34px;height:34px;border-radius:10px;background:var(--mute-bg);font-size:18px;font-weight:800;color:var(--text)}
.qnum{font-family:Manrope;font-weight:800;font-size:19px;min-width:36px;text-align:center;cursor:pointer}
.expb{font-size:11px;color:var(--text-2);display:block}
.line-item .lthumb{width:42px;height:42px;border-radius:10px;background:var(--mute-bg);display:flex;align-items:center;justify-content:center;font-size:21px;flex:0 0 42px}
.req{color:#B3372A;font-weight:800;font-size:15px}
/* v3.1 帮助说明组件 */
details.help{background:#F4F8F5;border:1px solid var(--green-200);border-radius:14px;padding:10px 16px;margin-bottom:14px}
details.help summary{cursor:pointer;font-weight:700;font-size:13.5px;color:var(--green-900)}
details.help div{font-size:12.5px;color:var(--text-2);line-height:1.8;margin-top:8px}
details.help b{color:var(--text)}
/* v3.2 */
#drawer td,#drawer th{white-space:nowrap}
h1.pg{margin-bottom:4px}
.sub{margin-bottom:10px}
.chips{margin-bottom:8px}
.filterbar{margin-bottom:8px;gap:8px}
.tabs{margin-bottom:8px}

/* v3.5 待处理角标 */
.pbadge{display:inline-block;background:var(--warn-bg);border:1px solid #E3C88A;border-radius:8px;padding:0 6px;font-size:11px;font-weight:700;margin-left:4px;cursor:help;vertical-align:middle}

/* v4.2 行内操作折叠菜单 */
.opcell{position:relative;display:inline-block}
td.opcell{display:table-cell}
.amenu{position:absolute;right:6px;top:calc(100% - 8px);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px rgba(20,40,30,.16);z-index:60;min-width:150px;padding:6px;text-align:left}
.amenu .ami{padding:8px 12px;border-radius:8px;cursor:pointer;font-size:13px;white-space:nowrap}
.amenu .ami:hover{background:var(--green-100)}

/* ===== v4.3 抽屉信息层次（全局生效） ===== */
.drawer .dhead{background:linear-gradient(180deg,var(--green-100),#fff);border-bottom:2px solid var(--green-600)}
.drawer .dhead h3{font-size:19px;letter-spacing:.2px}
.drawer .dhead h3 .mono{font-size:21px}
.dh2{color:var(--text-2);font-size:12.5px;margin-top:4px;font-weight:400}
.dacts{display:flex;gap:8px;flex-wrap:wrap;padding:10px 0 12px;border-bottom:1px dashed var(--line);margin-bottom:4px}
.drawer .dbody h3{font-size:13px;color:var(--green-900);background:var(--green-100);border-left:4px solid var(--green-600);padding:6px 10px;border-radius:0 8px 8px 0;margin:16px 0 8px;font-weight:800}
.drawer .dbody h3:first-of-type{margin-top:6px}
.drawer .dbody table{font-size:12.5px}
.drawer .dbody table th{background:#fafbfa;font-weight:600;color:var(--text-2)}
/* ===== v4.3 列表行内减负 ===== */
.tbl-grid{border-collapse:collapse}
.tbl-grid th,.tbl-grid td{border:1px solid var(--line)}
.tbl-grid th{background:#F7F9F7}
.srcmark{display:inline-block;font-size:10px;line-height:1.5;padding:0 5px;border-radius:4px;background:var(--mute-bg);color:var(--mute-fg);margin-right:6px;vertical-align:2px}
.subbadges{margin-top:3px;line-height:1.4}
.subbadges .pbadge,.subbadges .tagchip{font-size:10px;padding:0 4px;margin-right:3px}
.subbadges .rmk{font-size:11px}
.dt2{display:inline-block;line-height:1.35}
.dt2 small{display:block;color:var(--text-2);font-weight:400;font-size:11px}
.st-sub{display:block;font-size:11px;font-weight:700;margin-top:1px}

/* v4.4 抽屉次要信息层级 */
.dtbl-sub{font-size:12px}
.dtbl-sub th{font-size:11.5px}
.vch{display:block;font-size:10.5px;color:var(--text-2)}
.vgoods{font-size:11.5px;color:var(--text-2)}
.drawer .dbody .tl,.drawer .dbody .timeline{font-size:12px;color:var(--text-2)}

/* v4.5 二级折叠导航 */
aside .navlab{cursor:pointer;user-select:none;border-top:1px solid var(--line);margin-top:6px;padding-top:12px}
aside .navlab:first-of-type{border-top:none;margin-top:0}
aside .navlab::after{content:" ▾";font-size:9px;color:var(--text-2)}
aside .navlab.fold::after{content:" ▸"}
/* v4.5 时间线统一小字 */
.tl{font-size:12px}
.tl div{font-size:12px;padding-bottom:8px}
.tl div b{font-family:'Manrope',monospace;font-weight:700;font-size:11.5px;margin-right:4px}

/* v4.6 菜单层级视觉升级 */
aside .navlab{font-size:12.5px;font-weight:800;color:var(--green-900);background:var(--green-100);border-radius:10px;padding:9px 12px;margin:8px 0 4px;letter-spacing:.06em;border-top:none}
aside .nav{padding-left:24px;border-bottom:1px solid #EFF3F0;border-radius:0;margin:0;font-size:13.5px;transition:all .12s}
aside .nav:last-of-type{border-bottom:none}
aside .nav:hover{background:var(--green-100);font-size:14.5px;font-weight:700;color:var(--green-900)}
aside .nav.on{border-radius:10px}

/* v4.7 菜单压缩 + 顶部模块条 */
aside .navlab{padding:6px 10px;margin:5px 0 2px;font-size:11.5px}
aside .nav{padding:6px 10px 6px 20px;font-size:13px;gap:8px}
aside .nav:hover{font-size:13.5px}
.modbar{display:flex;flex-wrap:wrap;gap:4px;padding:8px 6px;border-bottom:1px solid var(--line);margin-bottom:4px}
.modbar button{border:1px solid var(--line);background:#fff;border-radius:99px;padding:3px 10px;font-size:11.5px;cursor:pointer;color:var(--text-2)}
.modbar button.on{background:var(--green-900);color:#fff;border-color:var(--green-900);font-weight:700}


/* ================================================================
   v5.0 经典企业级换肤（HAN拍板，样板确认版）
   平角 / 扁平 / 白卡灰底 / 深绿仅header与主按钮 / 全边框紧凑表格
   ================================================================ */
:root{
  --green-900:#246B41; --green-600:#2E7D4F; --green-400:#5FA97F;
  --green-200:#D8E7DE; --green-100:#F0F7F3;
  --bg:#F5F6F7; --line:#DCDFE6;
  --text:#303133; --text-2:#606266;
  --radius-card:4px; --radius-btn:3px;
  --shadow:none;
}
.card{border:1px solid #EBEEF5;box-shadow:none;border-radius:4px}
.btn,.btn-pri,.btn-sec{border-radius:3px!important}
.tag{border-radius:2px!important}
.chips button,.seg button,.tabs button{border-radius:3px!important}
input,select,textarea{border-radius:3px!important}
th{background:#FAFAFA!important;border:1px solid #EBEEF5;font-weight:600}
td{border:1px solid #EBEEF5}
table{border-collapse:collapse}
.filterbar[style*="background"]{background:#FAFBFA!important;border:1px solid #EBEEF5;border-radius:3px!important}
.pgn b{border-radius:3px}
aside .navlab{border-radius:3px}
.amenu{border-radius:3px;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.amenu .ami{border-radius:2px}
.kpi,.qcard{border-radius:4px!important;box-shadow:none;border:1px solid #EBEEF5}
/* 列宽拖拽手柄 */
.thres{position:absolute;right:-3px;top:0;bottom:0;width:6px;cursor:col-resize;z-index:5}

/* ===== 抽屉 → 整页详情（v5.0核心） ===== */
.drawer{left:0!important;right:0!important;width:100%!important;max-width:100%!important;
  border-radius:0;border-left:none;background:var(--bg);box-shadow:none}
.drawer .dhead{background:#fff;border-bottom:1px solid #EBEEF5;padding:14px 22px 12px}
.drawer .dhead h3{font-size:16px}
.drawer .dbody{padding:14px 22px;background:var(--bg)}
.drawer .dbody>*{background:#fff}
.drawer .dbody h3{background:none;border-left:3px solid var(--green-600);color:var(--green-600);border-radius:0;padding:2px 8px;margin:16px 0 8px;font-size:13px}
.drawer .dbody table,.drawer .dbody .tl,.drawer .dbody p{background:#fff}
.dcrumb{background:#fff;border-bottom:1px solid #EBEEF5;padding:9px 22px;font-size:12.5px;color:#909399;display:flex;align-items:center;gap:6px}
.dcrumb a{color:var(--green-600);cursor:pointer;font-weight:600}
.dcrumb a:hover{text-decoration:underline}
.dmask{display:none!important}

.qok{color:var(--ok-fg)}

/* ================================================================
   v5.1 对齐确认样板（UEE风格样板_经典企业级）
   ================================================================ */
/* 应用头栏 */
.apphdr{height:48px;background:#2E8555;color:#fff;display:flex;align-items:center;padding:0 18px;gap:14px}
.apphdr .alogo{font-size:14.5px;font-weight:700;letter-spacing:.5px}
.apphdr .asub{font-size:10.5px;opacity:.85}
.apphdr .sp{flex:1}
.apphdr .hbtn{color:#fff;font-size:12.5px;opacity:.92;cursor:pointer;padding:4px 8px;border-radius:3px}
.apphdr .hbtn:hover{opacity:1;background:rgba(255,255,255,.14)}
/* 侧栏：样板m1/m2 */
aside{background:#fff!important;border-right:1px solid #EBEEF5;padding:4px 0}
aside .navlab{background:none!important;color:var(--text-2)!important;font-size:13.5px!important;font-weight:600;border-radius:0!important;padding:11px 18px!important;margin:0!important;letter-spacing:0!important;border-top:none!important}
aside .navlab:hover{color:var(--green-600)!important;background:#F0F7F3!important}
aside .nav{padding:8px 16px 8px 34px!important;font-size:12.5px!important;border-left:3px solid transparent;border-bottom:none!important;border-radius:0!important;margin:0!important;gap:6px!important}
aside .nav:hover{color:var(--green-600)!important;background:#F0F7F3!important;font-size:12.5px!important;font-weight:400!important}
aside .nav.on{color:var(--green-600)!important;font-weight:700!important;border-left-color:var(--green-600);background:#F7FBF9!important}
aside .nav.on::before{display:none}
/* 页面面包屑 */
.pgcrumb{font-size:12.5px;color:#909399;margin:0 0 12px;display:flex;align-items:center;gap:6px}
.pgcrumb a{color:#909399;cursor:pointer}
.pgcrumb a:hover{color:var(--green-600)}
.pgcrumb .cur{color:var(--text);font-weight:600}
/* 详情页头（样板式：状态大字+冒号信息行） */
.dstat2{font-size:16px;font-weight:700;margin-right:14px}
.ds-wait{color:#D64541}.ds-part{color:#3A76C4}.ds-done{color:#2E7D4F}.ds-closed{color:#909399}
.dinfo{display:flex;flex-wrap:wrap;gap:4px 18px;font-size:12.5px;color:var(--text-2);margin-top:6px}
.dinfo b{color:var(--text)}
/* 详情页内tab（样板tabs2） */
.tabs2{display:flex;gap:2px;border-bottom:2px solid #EBEEF5;margin:6px 0 14px;background:#fff}
.tabs2 button{border:none;background:none;padding:9px 18px;font-size:13.5px;color:var(--text-2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px}
.tabs2 button.on{color:var(--green-600);font-weight:700;border-bottom-color:var(--green-600)}
.dtab{display:none}.dtab.on{display:block}
/* 详情页工具条（绿色文字链） */
.dtool2{float:right;font-size:12.5px}
.dtool2 a{color:var(--green-600);cursor:pointer;margin-left:14px;font-weight:600}
.dtool2 a:hover{text-decoration:underline}

/* v5.3 空态组件（A3三态基准样式） */
.empty2{text-align:center;color:#909399;font-size:13px;padding:34px 10px;background:#FAFBFA;border:1px dashed var(--line);border-radius:4px}

/* ================================================================
   V2.0 Stitch 深海军蓝×橙 换肤层（DESIGN.md v1.0 §1 整体替换稿）
   骨架=经典企业级(v5.x)全部保留；本层只换皮肤，最后声明生效
   ================================================================ */
:root{
  /* ── 外壳（Stitch 皮肤） ── */
  --chrome-900:#000918;   /* 侧栏最深底 */
  --chrome-800:#002140;   /* 侧栏主底 / 顶栏 */
  --chrome-700:#102134;   /* 侧栏悬停 / 深色卡 */
  --chrome-fg:#E0E3E5;    /* 侧栏文字 */
  --chrome-fg-dim:#8E9BAA;/* 侧栏分组标签 */
  --primary:#FD761A;      /* CTA橙：主按钮/激活菜单/当前步骤 */
  --primary-dark:#9D4300; /* CTA hover/按下 */
  --primary-tint:#FFF0E6; /* 橙 tint：选中底 */
  --accent-blue:#466082;  /* 沉稳蓝：链接/次强调 */
  --accent-blue-2:#6F89AE;

  /* ── 中性 ── */
  --bg:#F8F9FB; --card:#FFFFFF;
  --line:#C3C6CE; --line-light:#E0E3E5;
  --text:#191C1E; --text-2:#43474E; --text-3:#74777E;
  --r:3px;                /* 全站圆角，平角风 */
  --shadow:0 1px 2px rgba(0,9,24,.06);
  --shadow-pop:0 4px 12px rgba(0,9,24,.14); /* 浮层菜单专用 */
  --th-bg:#FAFAFA;        /* 表头底（DESIGN.md §4） */

  /* ── 状态四色（StatusTag 唯一来源） ── */
  --ok-fg:#1F7A4D;  --ok-bg:#EAF5EE;  --ok-line:#B8D8C5;
  --warn-fg:#9A6B00;--warn-bg:#FBF3DC;--warn-line:#F0D5A8;
  --err-fg:#C0392B; --err-bg:#FDEEEC; --err-line:#EFC3C1;
  --info-fg:#3A76C4;--info-bg:#EFF5FC;--info-line:#B8D0EC;
  --mute-fg:#74777E;--mute-bg:#F2F4F6;--mute-line:#DDE0E4;

  /* ── 归属色（仅Tag/色条/现场顶栏，禁实心按钮） ── */
  --buyer-a:#2563EB; --buyer-a-bg:#E8EFFD;
  --buyer-b:#EA8A00; --buyer-b-bg:#FDF1DF;

  /* ── 旧变量别名（基础层/页面沿用的旧名→新Token，仅此一处映射） ── */
  --green-900:var(--primary);
  --green-600:var(--primary);
  --green-400:var(--accent-blue-2);
  --green-200:var(--line-light);
  --green-100:var(--primary-tint);
  --surface:var(--card);
  --radius-card:var(--r); --radius-btn:var(--r);
}

/* ── 字体（§2）：CJK正文 + 数字一律 JetBrains Mono/tabular ── */
*{font-family:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif}
body{font-size:13px;line-height:1.6}
.num,.mono,.barno,.qnum,.qin,.qout,.kpi .val,.modal .bignum,.modal input,
.console .scanpanel input,.sumbar b,.tl div b,.dt2{font-family:"JetBrains Mono",Consolas,Menlo,monospace;font-variant-numeric:tabular-nums}
h1.pg{font-size:16px;font-weight:700;font-family:inherit}
.drawer .dhead h3,.home-card h2{font-family:inherit}
.kpi .val{font-weight:700;font-size:34px}

/* ── 顶栏 52px：chrome-800 白字（§3） ── */
.apphdr{height:52px;background:var(--chrome-800)}
#topnav{background:var(--chrome-900)}
#topnav a{border-radius:var(--r)}
#topnav a.on{background:var(--primary);color:#fff}

/* ── 侧栏：chrome-800→900 深底；激活=左3px橙条+chrome-700+白字（§3） ── */
aside{background:linear-gradient(180deg,var(--chrome-800),var(--chrome-900))!important;border-right:none}
aside .navlab{color:var(--chrome-fg-dim)!important}
aside .navlab:hover{color:var(--chrome-fg)!important;background:var(--chrome-700)!important}
aside .navlab::after{color:var(--chrome-fg-dim)}
.pc-layout aside .nav{color:var(--chrome-fg);border-bottom:none}
aside .nav:hover{color:#fff!important;background:var(--chrome-700)!important}
aside .nav.on{color:#fff!important;background:var(--chrome-700)!important;border-left-color:var(--primary)!important;font-weight:700!important}
.pc-layout .nav.on::before{display:none}

/* ── 按钮（§4）：主=橙实心；次hover=橙字橙边；每页一个主按钮 ── */
.btn-pri{background:var(--primary)}
.btn-pri:hover{background:var(--primary-dark)}
.btn-sec:hover{color:var(--primary);border-color:var(--primary)}

/* ── StatusTag：软底+深字+1px同族描边、圆角2px、1px 7px（§4） ── */
.tag{border:1px solid transparent;border-radius:2px!important;padding:1px 7px}
.tag-ok{border-color:var(--ok-line)}.tag-warn{border-color:var(--warn-line)}
.tag-err{border-color:var(--err-line)}.tag-mute{border-color:var(--mute-line)}
.st-wait{border-color:var(--warn-line)}
.st-part{background:var(--info-bg);color:var(--info-fg);border-color:var(--info-line)}
.st-done{border-color:var(--ok-line)}.st-closed{border-color:var(--mute-line)}
.st-void{border-color:var(--err-line)}

/* ── 表格（§4）：th 浅灰底 12.5px/600；行高≈36px；边框 line-light ── */
th{background:var(--th-bg)!important;border:1px solid var(--line-light);font-size:12.5px;font-weight:600;padding:7px 10px}
td{border:1px solid var(--line-light);font-size:12.5px;padding:7px 10px}
.tbl-grid th,.tbl-grid td{border-color:var(--line-light)}
tr.clk:hover td{background:var(--primary-tint)}
.grp{background:var(--primary-tint)}

/* ── 状态大字/详情（换 token，不改结构） ── */
.ds-wait{color:var(--err-fg)}.ds-part{color:var(--info-fg)}
.ds-done{color:var(--ok-fg)}.ds-closed{color:var(--mute-fg)}
.drawer .dbody h3{border-left-color:var(--accent-blue);color:var(--accent-blue)}
.dcrumb{border-bottom-color:var(--line-light)}
.drawer .dhead{border-bottom-color:var(--line-light)}
.tabs2{border-bottom-color:var(--line-light)}

/* ── 链接=沉稳蓝（§1：链接/次强调） ── */
.lnk,.crumb,.backlink,.sim a{color:var(--accent-blue)}
.dtool2 a,.dcrumb a{color:var(--accent-blue)}
.pgcrumb a:hover{color:var(--accent-blue)}
.testguide code{color:var(--accent-blue);background:var(--info-bg)}

/* ── 深色强调块：KPI首卡/扫描台=chrome-700 反白（§4） ── */
.kpi.dark{background:var(--chrome-700)}
.kpi.dark .foot{color:var(--accent-blue-2)}
.console .scanpanel{background:var(--chrome-700)}
#toast.ok{background:var(--chrome-800)}

/* ── 斜纹=待处理：线色 line-light 上叠 primary-tint（§4） ── */
.hatch{background:repeating-linear-gradient(45deg,transparent 0 4px,var(--line-light) 4px 6px) var(--primary-tint)}

/* ── 步骤条（§4）：已完成=深色实心；当前=橙描边橙字 ── */
.wsteps span.on{background:var(--card);color:var(--primary);border:1.5px solid var(--primary);font-weight:700}
.wsteps span.done{background:var(--chrome-700);color:#fff}

/* ── 中性化：商品标签chip / 帮助块（橙只留给CTA与激活态） ── */
.tagchip{background:var(--mute-bg);color:var(--text-2);border-color:var(--mute-line)}
details.help{background:var(--info-bg);border-color:var(--info-line)}
details.help summary{color:var(--info-fg)}

/* ── 边框统一 line-light；浮层菜单用 --shadow-pop ── */
.card{border-color:var(--line-light)}
.kpi,.qcard{border-color:var(--line-light)}
.amenu{box-shadow:var(--shadow-pop)}
.ms-dd{box-shadow:var(--shadow-pop)}

/* ── 平角补齐（禁则5：圆角>4px 一律拉平；手机模拟器边框除外） ── */
.wiz,.modal,.jp-sheet,.ms-dd,.drop,.sumbar,.thumb,.photo-add .p,.pgrid .p,
.supgrid .sc,details.help,.tagchip,input.cell,.instr-bar,.draftbar,.cntbar,
.amenu .ami,.wsteps span,.modal input,.modal .acts button,#toast,.qbtn,
.line-item .lthumb,.line-item .more,.avgrid .av,.pinpad button,.fmenu button,
.fbtn,.fld input,.fld textarea,.abgrid button,.progbar,.progbar>div,.scan-in input,
.scan-in button,.badge-up,.seg,.seg button,.codebadge,.srcmark,.pbadge,.home-card,
.drawer .close,.empty2{border-radius:var(--r)!important}

/* ── 履约详情状态步骤条（参照 po-fulfillment/pc_34 排版；只读监控） ── */
.postep{display:flex;align-items:center;gap:6px;font-size:12px;margin-top:8px;flex-wrap:wrap}
.postep .ps{display:flex;align-items:center;gap:5px;color:var(--text-3)}
.postep .ps .dot{width:18px;height:18px;border-radius:99px;background:var(--mute-bg);color:var(--mute-fg);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.postep .ps.done{color:var(--text-2)}
.postep .ps.done .dot{background:var(--chrome-700);color:#fff}
.postep .ps.cur{color:var(--primary);font-weight:700}
.postep .ps.cur .dot{background:var(--card);border:1.5px solid var(--primary);color:var(--primary)}
.postep .ps.mute{color:var(--mute-fg)}
.postep .ps.mute .dot{background:var(--mute-bg);color:var(--mute-fg)}
.postep .lk{width:26px;height:1px;background:var(--line-light)}

/* ── 入库操作台四模式色（防误操作强区分；唯一来源=此处 token） ── */
:root{--mode-in:#2E7D4F;--mode-bat:#1E4E79;--mode-ret:#7A2E24;--mode-tmp:#4A3A6B}

/* ── PC 端 seg 视图切换控件尺寸约束（.seg 原为现场端全宽设计） ── */
.pc-layout .seg{max-width:440px;margin-bottom:8px}
.pc-layout .seg button{padding:7px 10px;font-size:12.5px}

/* ── 可折叠面板（页面层次整理：主内容=列表，次要作业区默认收起） ── */
details.fold{background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);margin-bottom:10px}
details.fold>summary{cursor:pointer;padding:10px 14px;font-weight:700;font-size:13px;list-style:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::before{content:'▸';color:var(--text-3);font-size:11px}
details.fold[open]>summary::before{content:'▾'}
details.fold>.fbody{padding:2px 14px 12px}
details.fold>summary .sumhint{font-weight:400;font-size:12px;color:var(--text-2)}

/* ── 字号上调一档（2026-07-19 HAN 现场裁决：核心内容偏小；覆盖 §2 旧值） ──
   正文 13→14px · 表格 12.5→13px · 弹窗/表单同步；小注释(11~12px)不动 */
body{font-size:14px}
td{font-size:13px}
th{font-size:13px}
.modal p{font-size:14px}
.fld label{font-size:13.5px}
.fld input,.fld textarea,.fld select{font-size:15px}
.supgrid .sc b{font-size:16px}
.filterbar select,.filterbar input{font-size:13.5px}
.chips button{font-size:13px}
details.fold>summary{font-size:13.5px}
details.help summary{font-size:14px}
.sub{font-size:13.5px}
h1.pg{font-size:17px}

/* ── 拖拽上传全局支持（2026-07-19 HAN：所有图片/文件上传须可拖拽） ── */
.drop.dragging,.photo-add .add.dragging,.p.add.dragging{border-color:var(--primary)!important;background:var(--primary-tint)!important;color:var(--primary)}

/* ── 侧栏对齐 Stitch 参照（2026-07-19 HAN：一级/二级字号与展示方式向 pc_19 看齐）──
   一级分组=图标+文字 13px 亮字；二级 14px 行高约42px 缩进；激活=整块CTA橙实心（Stitch形态） */
.pc-layout aside{width:232px}
aside .navlab{font-size:13px!important;font-weight:700;color:var(--chrome-fg)!important;
  padding:14px 18px 6px!important;margin:2px 0 0!important;letter-spacing:.04em;background:none!important}
aside .navlab:hover{background:var(--chrome-700)!important}
.pc-layout aside .nav{padding:11px 16px 11px 38px!important;font-size:14px!important;
  margin:1px 8px 1px 0!important;border-radius:0 4px 4px 0!important;border-left:none!important}
aside .nav:hover{font-size:14px!important;font-weight:400!important}
aside .nav.on{background:var(--primary)!important;color:#fff!important;font-weight:700!important;border-left:none!important}
aside .nav.on .cnt{background:#fff;color:var(--primary)}

/* ── 字阶终版：对照 Stitch 稿比例（2026-07-19 HAN 二次裁决，覆盖上方"上调一档"块） ──
   正文15 · 表格14 · 页标题20 · 侧栏15 · 控件同步；11~12px 仅限角标与小注 */
body{font-size:15px}
td{font-size:14px;padding:9px 12px}
th{font-size:14px;padding:9px 12px}
h1.pg{font-size:20px;font-weight:700}
.sub{font-size:14px}
.pgcrumb{font-size:13.5px}
.filterbar select,.filterbar input{font-size:14px;padding:8px 14px}
.btn{font-size:14.5px}
.btn-sm{font-size:13px;padding:6px 14px}
.chips button{font-size:13.5px;padding:7px 16px}
.tag{font-size:12.5px}
.tabs button{font-size:14px}
.tabs2 button{font-size:14.5px}
details.fold>summary{font-size:14.5px}
details.help summary{font-size:14.5px}
details.help div{font-size:13.5px}
.modal p{font-size:15px}
.fld label{font-size:14px}
.kpi .lab{font-size:14px}
.kpi .foot{font-size:13px}
.dinfo{font-size:13.5px}
.drawer .dhead h3{font-size:18px}
/* 侧栏同步放大 */
.pc-layout aside{width:248px}
aside .navlab{font-size:14.5px!important;padding:16px 18px 8px!important}
.pc-layout aside .nav{padding:12px 16px 12px 40px!important;font-size:15px!important}
aside .nav:hover{font-size:15px!important}
.pc-layout .nav .cnt{font-size:12px}
.apphdr .alogo{font-size:16px}

/* ── 现场端字号 ×1.25（§6：正文18起 · 按钮≥56 · 扫描行高≥52） ── */
.ph-body{font-size:18px}
.scan-in input{font-size:18px;padding:14px}
.scan-in button{font-size:22px}
.line-item{min-height:56px}
.line-item .nm{font-size:17px}
.line-item .nm small{font-size:13px}
.fbtn{font-size:18px}
.fmenu button{font-size:17px}
.seg button{font-size:16px}
.fld label{font-size:15px}
.fld input,.fld textarea{font-size:18px}
.sim{font-size:13px}
.ph-loc{font-size:22px}
.today-item .inf{font-size:15px}
.avgrid .av{font-size:16px}
/* 现场端 seg 恢复全宽（PC 约束不适用于手机框内） */
.phone .seg{max-width:none}
.phone .seg button{padding:12px;font-size:16px}

/* ── 现场端橙色收敛（每屏一个主按钮；次级中性、深色锚点=chrome） ── */
.fmenu button{background:var(--mute-bg);color:var(--text)}
.fmenu .wide{background:var(--chrome-800);color:#fff}
.scan-in button{background:var(--chrome-800)}
.progbar{background:var(--line-light)}
.pindots{color:var(--chrome-800)}
.testguide code{cursor:pointer}
.scan-in button{white-space:nowrap;font-size:16px;padding:0 14px}

/* ── 现场端 Stitch 化整版（2026-07-19 HAN：文字溢出修复 + 模拟链接外移后瘦身） ── */
.phone{width:412px;flex:0 0 412px}
.fbtn{height:auto;min-height:56px;padding:12px 10px;line-height:1.4}
.fbtn span{display:block;margin-top:2px}
.fmenu button{height:auto;min-height:60px;padding:12px 8px;line-height:1.35}
.field-wrap .testguide{width:360px}
#simPanel .sim{margin-bottom:4px;font-size:12.5px}
#simPanel .sim a{margin-right:8px}

/* ── 现场端手机框真实比例 + 底部导航 + 瓷片列表（2026-07-19 HAN 裁决） ── */
.phone{width:390px;flex:0 0 390px;height:812px;display:flex;flex-direction:column;border-radius:36px}
.ph-body{flex:1;overflow-y:auto;min-height:0;padding-bottom:8px}
.ph-nav{display:flex;border-top:1px solid var(--line-light);background:var(--card);flex:0 0 62px}
.ph-nav button{flex:1;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;color:var(--text-3);font-weight:600}
.ph-nav button span{font-size:20px;line-height:1}
.ph-nav button.on{color:var(--primary)}
/* 瓷片列表（任务队列风格,照 Stitch _19） */
.ttile{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);padding:13px 14px;margin-bottom:8px;cursor:pointer}
.ttile .tic{font-size:24px;flex:0 0 32px;text-align:center}
.ttile .tbody{flex:1;min-width:0}
.ttile .tbody b{font-size:17px;display:block}
.ttile .tbody small{font-size:12.5px;color:var(--text-2)}
.ttile .tgo{color:var(--text-3);font-size:20px}
.ttile.pri{background:var(--primary);border-color:var(--primary)}
.ttile.pri b,.ttile.pri small,.ttile.pri .tgo{color:#fff}
.ttile.sub{margin-left:20px;padding:10px 14px}
.ttile.sub b{font-size:15px}
.ttile:active{transform:scale(.99)}
/* 现场端统一下拉 */
.fsel{width:100%;font-size:17px;padding:12px;border:1.5px solid var(--line);border-radius:var(--r);background:var(--card)}

/* ── 收货扫描流程 Stitch 化（参照 _1 手机收货连续扫码稿） ── */
.scard{background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);padding:12px 14px;margin-bottom:10px}
.slab{display:block;font-size:13.5px;font-weight:700;margin-bottom:6px}
#hitCard{margin-bottom:10px}
#hitCard .hithead{background:var(--ok-bg);border:1px solid var(--ok-line);border-bottom:none;border-radius:var(--r) var(--r) 0 0;padding:10px 14px;font-weight:800;color:var(--ok-fg);font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#hitCard .hitchip{background:var(--card);border:1px solid var(--ok-line);border-radius:2px;padding:1px 8px;font-size:12.5px;font-weight:600;color:var(--text)}
#hitCard .hitbody{background:var(--card);border:1px solid var(--line-light);border-radius:0 0 var(--r) var(--r);padding:12px 14px}
#hitCard.unmatched{background:var(--warn-bg);border:1.5px solid var(--warn-line);border-radius:var(--r);padding:12px 14px}
.statbar{display:flex;background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);padding:10px 0;margin:8px 0;text-align:center}
.statbar>div{flex:1;border-right:1px solid var(--line-light)}
.statbar>div:last-child{border-right:none}
.statbar small{display:block;font-size:12.5px;color:var(--text-2)}
.statbar b{font-size:22px}

/* ── 现场端工作台八模块（照 Stitch _19）+ 步骤条 + 全局文字收敛 ── */
.locstrip{display:flex;align-items:center;gap:6px;background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);padding:10px 14px;font-size:14px;margin-bottom:10px}
.scanbig{background:var(--primary);color:#fff;border-radius:8px;padding:22px;text-align:center;cursor:pointer;margin-bottom:12px;display:flex;flex-direction:column;align-items:center;gap:2px;box-shadow:var(--shadow)}
.scanbig b{font-size:20px}
.scanbig small{font-size:12.5px;opacity:.9}
.scanbig:active{transform:scale(.99)}
.wgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.wtile{background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);padding:16px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:15.5px;font-weight:700;cursor:pointer}
.wtile span{font-size:28px;line-height:1}
.wtile:active{background:var(--primary-tint);border-color:var(--primary)}
.ptitle{font-size:18px;font-weight:800;margin:2px 0 4px}
.hint{font-size:12.5px;color:var(--text-3);margin-bottom:10px;line-height:1.6}
.step{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line-light);border-radius:var(--r);padding:13px 14px;margin-bottom:8px;cursor:pointer}
.step .sno{flex:0 0 30px;height:30px;border-radius:99px;background:var(--chrome-800);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px}
.step .sbody{flex:1}
.step .sbody b{font-size:16.5px;display:block}
.step .sbody small{font-size:12.5px;color:var(--text-2)}
.step.off{background:var(--th-bg);border-style:dashed;cursor:default}
.step.off .sno{background:var(--mute-fg)}
.step.opt .sno{background:var(--accent-blue)}

/* ── 大箱测量一屏化（AE3：四格大数字紧凑版） ── */
.msgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}
.msgrid label{font-size:12px;color:var(--text-2);display:block;margin-bottom:3px}
.msgrid input{width:100%;border:2px solid var(--line);border-radius:var(--r);padding:8px 4px;font-size:19px;font-weight:800;text-align:center}
#msOut{padding:8px 10px;font-size:13.5px;margin-bottom:6px}
#s-measure2 .photo-add .p{width:56px;height:56px}
#s-measure2 .fbtn{min-height:48px;font-size:15px;padding:8px 6px}

/* ── 现场端 P0/P1 打磨（iPhone 级评审整改） ── */
.actbar{display:none;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-bottom,0));border-top:1px solid var(--line-light);background:var(--card);flex:0 0 auto}
.actbar .fbtn{flex:1;min-height:52px;font-size:17px;white-space:nowrap;padding:8px}
#okFlash{position:absolute;inset:0;z-index:50;background:var(--ok-fg);color:#fff;display:none;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-radius:inherit}
#okFlash.on{display:flex}
#okFlash b{font-size:24px}
#okFlash small{font-size:15px;opacity:.9}
.phone{position:relative;overflow:hidden}
/* 商品行一行式紧凑（P0-3） */
.line-item{min-height:64px;padding:8px 4px;gap:8px}
.line-item .lthumb{width:44px;height:44px;flex:0 0 44px;font-size:22px;border-radius:var(--r)}
.line-item .nm{font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.line-item .nm small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
.qbtn{width:44px;height:44px;border-radius:var(--r);font-size:20px}
.qnum{font-size:20px;min-width:34px}
.line-item .more{width:44px;height:44px;border-radius:var(--r)}
.scan-in button{min-width:52px}

/* ════════════════════════════════════════════════════════════════
   现场端移动设计子系统 M1（2026-07-19 专题会决议：严格照 Stitch 手机稿）
   圆角:卡10/控件8 · 灰阶容器分层代替边框嵌套 · 编号数字全 JetBrains Mono
   ════════════════════════════════════════════════════════════════ */
.phone{background:#f8f9fb;border-radius:34px}
.phone .mbar{background:#101418;color:#fff;padding:12px 16px;display:flex;align-items:center;gap:10px;flex:0 0 auto}
.phone .mbar b{font-size:16.5px}
.phone .mbar .mico{font-size:20px;opacity:.9}
.ph-top{background:var(--card);color:var(--text);padding:10px 16px;transition:background .3s;border-bottom:1px solid var(--line-light)}
.ph-top[style*="background"]{color:#fff;border-bottom:none}
.ph-top .brand{display:none}
.phone .crumb2{font-size:12.5px;color:var(--text-3);padding:8px 2px 2px}
.phone .crumb2 b{color:var(--text);font-weight:700}
/* 圆角覆写（脱离PC平角体系） */
.phone .scard,.phone .ttile,.phone .step,.phone .statbar,.phone .locstrip,#hitCard .hithead,#hitCard .hitbody,#hitCard.unmatched{border-radius:10px!important}
.phone .fbtn,.phone .fsel,.phone .scan-in input,.phone .scan-in button,.phone .fld input,.phone .fld textarea,.phone .qbtn,.phone .line-item .more,.phone .photo-add .p{border-radius:8px!important}
.phone .wtile{border-radius:12px!important}
.phone .scanbig{border-radius:14px!important}
#hitCard .hithead{border-radius:10px 10px 0 0!important}
#hitCard .hitbody{border-radius:0 0 10px 10px!important}
/* 灰阶容器 */
.phone .gpanel{background:#eceef0;border-radius:8px;padding:12px 14px;margin:8px 0}
.phone .gpanel .glab{font-size:12.5px;color:var(--text-2);display:block}
.phone .gpanel b.mono{font-size:16px}
/* 明细行＝灰面板行（照 s1） */
.phone .line-item{background:#eceef0;border-radius:8px;border-bottom:none;margin-bottom:8px;padding:10px 12px;min-height:60px}
.phone .line-item .lthumb{background:var(--card)}
.phone .qnum{background:var(--card);border:1px solid var(--line-light);border-radius:6px;padding:4px 10px}
.phone .qbtn{background:var(--card);border:1px solid var(--line-light)}
/* 扫描卡按钮行 */
.phone .scanops{display:flex;gap:8px;margin-top:8px;align-items:center}
.phone .scanops .sop{border:1.5px solid var(--text);background:var(--card);border-radius:8px;padding:8px 14px;font-size:14px;font-weight:700}
/* 未匹配卡（照 s1：橙粗边+白底黑边大按钮） */
#hitCard.unmatched{border:2px solid #F57F17!important;background:#FFF8E1!important}
#hitCard.unmatched .fbtn{background:var(--card)!important;border:1.5px solid var(--text)!important;color:var(--text)!important;font-weight:800}
/* 照片上传大虚线按钮 */
.phone .photo-add .p.add{width:100%;min-height:56px;border:1.5px dashed var(--text-3);color:var(--text-2);font-size:15px;font-weight:600;background:var(--card)}
/* 底部操作条 1:2 + 统计 */
.actbar .fbtn.sec{flex:1;background:#eceef0;border:none}
.actbar .fbtn.pri{flex:2}
/* 统计条照 s1：标签上·大mono值下 */
.phone .statbar{border:none;background:var(--card);border-top:1px solid var(--line-light);border-radius:0!important;margin:10px 0 0;padding:12px 0 2px}
.phone .statbar b{font-family:'JetBrains Mono',Consolas,monospace;font-size:24px}
.phone .statbar small{font-weight:700;color:var(--text)}
.phone .scanops .sop{white-space:nowrap}
.phone .progbar{display:none}

/* ── 收货页 taste 精修：单焦点·零教学文字·图标方钮 ── */
.phone .slab{font-size:13px;color:var(--text-2);font-weight:600}
.phone .scanops .sop.sq{width:44px;height:44px;padding:0;font-size:19px;display:flex;align-items:center;justify-content:center;border-color:var(--line)}
#hitCard .hithead{padding:8px 14px;font-size:14px}
#hitCard .hitbody{padding:10px 14px}
.phone .qbtn{width:40px;height:40px;font-size:18px}
.phone .line-item .more{width:40px;height:40px}
.phone .qnum{min-width:28px;padding:4px 8px;font-size:18px}
.phone .line-item{gap:6px}
.phone .line-item .nm{min-width:0;flex:1}

/* ── 装大箱扫描页 按钮规格（防折行/层级） ── */
#s-cartonscan .fbtns{margin-top:10px}
#s-cartonscan .fbtn{white-space:nowrap;height:auto;min-height:48px;font-size:16px;padding:8px 12px}
#s-cartonscan .fbtn.sec{flex:0 0 30%;background:#eceef0;border:none}
#s-cartonscan .fbtn.pri{flex:1}
#s-cartonscan .fbtn span{display:inline;margin-top:0}

/* ── 首页任务卡 ── */
.taskrow{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid var(--line);cursor:pointer}
.taskrow:last-child{border-bottom:none}
.taskrow>span{font-size:20px}
.taskrow>div{flex:1;min-width:0}
.taskrow b{font-size:14.5px;display:block}
.taskrow small{font-size:12px;color:var(--text-2)}
.taskrow .tnum{font-size:20px;font-weight:800;font-family:'JetBrains Mono',Consolas,monospace;display:inline}
.taskrow .tnum.warn{color:var(--warn-fg)}
.taskrow .tnum.err{color:var(--err-fg)}
.taskrow i{font-style:normal;color:var(--text-2);font-size:18px}
/* ── 渠道表头带 + 大箱两行式明细行 ── */
.chhead{display:flex;align-items:center;gap:8px;background:var(--th-bg);border-left:4px solid var(--line);padding:8px 10px;border-radius:6px;margin:4px 0 2px;min-width:0}
.chhead b{font-size:14.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chhead small{margin-left:auto;font-weight:400;color:var(--text-2);font-size:12px;white-space:nowrap}
.bxrow{padding:9px 2px;border-bottom:1px solid var(--line);cursor:pointer}
.bxrow:last-child{border-bottom:none}
.bxrow .r1{display:flex;align-items:center;gap:8px}
.bxrow .r1 b{font-family:'JetBrains Mono',Consolas,monospace;font-size:15.5px;flex:1;min-width:0}
.bxrow .r1 .tag{flex:0 0 auto}
.bxrow .r2{display:flex;align-items:center;font-size:12.5px;color:var(--text-2);margin-top:3px}
.bxrow .r2 i{font-style:normal;margin-left:auto;font-size:17px;color:var(--text-2)}
.bxrow .rms{font-size:12.5px;color:var(--err-fg);font-weight:700;margin-top:2px}
.bxrow:active{background:var(--th-bg)}
/* ── PC作业页 四格信息带（参照pc_15/22/67） ── */
.iquad{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:0 0 12px}
.iquad>div{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;min-width:0}
.iquad .qh{font-size:12px;color:var(--text-2);display:flex;align-items:center;gap:5px;margin-bottom:4px}
.iquad .qv{font-size:13.5px;font-weight:700;line-height:1.45}
.iquad .q-state{border-left:3px solid var(--ok-fg)}
.iquad .q-state.warn{border-left-color:var(--warn-fg)}
.iquad .q-exc{border-left:3px solid var(--err-fg)}
.iquad .q-exc .qv{color:var(--err-fg)}
.iquad .q-exc.clk{cursor:pointer}
/* ── PC状态步骤条（参照pc_57/76） ── */
.pcsteps{display:flex;align-items:center;margin:0 0 12px;flex-wrap:wrap;row-gap:6px}
.pcsteps .st{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--text-2);background:var(--card);border:1.5px solid var(--line);border-radius:99px;padding:5px 14px;white-space:nowrap}
.pcsteps .st.done{color:#fff;background:var(--chrome-800);border-color:var(--chrome-800)}
.pcsteps .st.cur{color:var(--primary);border:2px solid var(--primary);background:#FFF4EC}
.pcsteps .ln{width:26px;height:2px;background:var(--line);flex:0 0 auto}
/* ── 作业事实记录时间线（参照pc_50/15） ── */
.optl{position:relative;padding-left:18px}
.optl:before{content:'';position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.optl .ev{position:relative;margin-bottom:12px}
.optl .ev:last-child{margin-bottom:2px}
.optl .ev:before{content:'';position:absolute;left:-17px;top:4px;width:8px;height:8px;border-radius:50%;background:var(--chrome-800)}
.optl .ev.err:before{background:var(--err-fg)}
.optl .tm{font-size:12px;color:var(--text-2);font-family:'JetBrains Mono',Consolas,monospace}
.optl .bd{background:var(--th-bg);border-radius:var(--r);padding:8px 12px;font-size:13px;margin-top:3px;line-height:1.6}
