/* PMC 生产管理系统 · 样式（手机优先，电脑上自动变成带侧边栏的布局） */
:root{
  --brand:#1f3b63; --brand2:#2b5c9b; --bg:#f4f6f9; --card:#fff;
  --line:#e2e8f0; --text:#1f2937; --muted:#6b7280;
  --ok:#0f9d58; --warn:#e8a33d; --bad:#d93025; --ready:#2b7de9;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);font:15px/1.5 "Microsoft YaHei","微软雅黑",-apple-system,"Segoe UI",sans-serif}
a{color:var(--brand2);text-decoration:none}
a:hover{text-decoration:underline}
code{background:#eef2f7;padding:1px 5px;border-radius:4px;font-size:13px}
pre{white-space:pre-wrap;background:#f8fafc;border:1px solid var(--line);padding:8px;border-radius:6px;font-size:12px;max-height:320px;overflow:auto}

/* 顶栏 */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;
  background:var(--brand);color:#fff;padding:10px 14px;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.topbar .brand{color:#fff;font-weight:700;font-size:17px}
.topbar .spacer{flex:1}
.topbar .who{font-size:13px;opacity:.95}
.topbar .who em{font-style:normal;display:block;font-size:11px;opacity:.75}
.menu-btn{background:none;border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:6px;
  font-size:16px;padding:2px 9px;cursor:pointer}

/* 侧边导航 */
.sidenav{position:fixed;top:0;left:0;bottom:0;width:190px;background:#25344a;padding:60px 0 20px;
  transform:translateX(-100%);transition:transform .2s;overflow:auto;z-index:15}
body.nav-open .sidenav{transform:none}
.sidenav a{display:block;color:#cbd5e1;padding:11px 18px;font-size:14px;border-left:3px solid transparent}
.sidenav a:hover{background:#1e2b3d;text-decoration:none;color:#fff}
.sidenav a.active{background:#1b2536;color:#fff;border-left-color:#4b8bf5;font-weight:600}

.content{padding:14px;max-width:1500px;margin:0 auto}
.page-title{font-size:19px;margin:4px 0 14px}

@media(min-width:900px){
  .sidenav{transform:none;width:200px}
  .content{margin-left:200px;padding:20px 24px}
  .menu-btn{display:none}
}

/* 卡片与盒子 */
.box,.form-card,.rule-card{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:14px 16px;margin-bottom:14px}
.box h2,.form-card h2,.rule-card h2{font-size:16px;margin:0 0 10px}
.grid2{display:grid;gap:14px}
@media(min-width:1000px){.grid2{grid-template-columns:1fr 1fr}}
.cards{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 18px;min-width:104px;text-align:center}
.card .num{font-size:24px;font-weight:700;color:var(--brand)}
.card .lbl{font-size:12px;color:var(--muted)}
.card.ok .num{color:var(--ok)}
.card.bad .num{color:var(--bad)}

/* 表单 */
label{display:block;margin-bottom:10px;font-size:13px;color:#374151;font-weight:600}
label.inline{display:inline-flex;align-items:center;gap:6px;font-weight:400;margin-right:16px}
input[type=text],input[type=password],input[type=number],input[type=date],input[type=file],select,textarea{
  width:100%;margin-top:4px;padding:9px 10px;border:1px solid #cbd5e1;border-radius:8px;font-size:14px;
  background:#fff;font-family:inherit}
textarea{font-family:Consolas,Menlo,monospace;font-size:12.5px}
input:focus,select:focus,textarea:focus{outline:2px solid #bcd3f7;border-color:var(--brand2)}
.row{display:grid;gap:12px}
@media(min-width:700px){.row{grid-template-columns:1fr 1fr}}
.form-card.narrow{max-width:460px}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.req{color:var(--bad)}
.w70{max-width:70px}
.w90{max-width:90px}
.w200{max-width:200px}
details summary{cursor:pointer;margin:6px 0}

/* 按钮 */
.btn{display:inline-block;padding:8px 15px;border-radius:8px;border:1px solid #cbd5e1;background:#fff;
  color:var(--text);font-size:14px;cursor:pointer;line-height:1.2;font-family:inherit}
.btn:hover{background:#f1f5f9;text-decoration:none}
.btn.primary{background:var(--brand2);border-color:var(--brand2);color:#fff}
.btn.primary:hover{background:#24528a}
.btn.ghost{background:transparent}
.btn.warn{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.tiny{padding:4px 10px;font-size:12.5px}
.btn.block{width:100%}

/* 表格 */
.table-wrap{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:10px}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--card)}
.tbl th,.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap}
.tbl th{background:#f8fafc;font-size:12.5px;color:#475569;position:sticky;top:0}
.tbl tr:last-child td{border-bottom:none}
.tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
table.tbl input,table.tbl select{margin-top:0;padding:5px 7px;font-size:13px}
.box table.tbl{border:1px solid var(--line);border-radius:8px}

/* 标签、进度、风险 */
.tag{display:inline-block;padding:1px 8px;border-radius:20px;background:#eef2f7;font-size:12px;color:#475569}
.st-wait{background:#eef2f7}
.st-plan{background:#e7effd;color:#24528a}
.st-ready{background:#e3f1ff;color:#1f6fd0}
.st-run{background:#e6f4ea;color:#0f7a44}
.st-done{background:#dff3e6;color:#0b6b3a}
.st-off{background:#f1f3f5;color:#868e96}
.st-bad{background:#fdecea;color:#b3261e}
.st-ok{background:#e6f4ea;color:#0f7a44}
.risk{font-size:12.5px;padding:1px 7px;border-radius:6px;background:#eef2f7;color:#475569}
.risk.bad{background:#fdecea;color:#b3261e;font-weight:600}
.risk.warn{background:#fef3e2;color:#b57200;font-weight:600}
.risk.ok{background:#eef2f7}
.bar{height:7px;background:#e9edf2;border-radius:6px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,#4b8bf5,#2b7de9)}
.bar.big{height:11px;margin-top:8px}
.flash{padding:9px 13px;border-radius:8px;margin-bottom:12px;font-size:14px}
.flash.ok{background:#e6f4ea;color:#0b6b3a;border:1px solid #bfe3cc}
.flash.bad{background:#fdecea;color:#b3261e;border:1px solid #f5c6c2}
.empty{background:var(--card);border:1px dashed #cbd5e1;border-radius:10px;padding:26px;text-align:center}
.muted{color:var(--muted)}
.small{font-size:12.5px}
.pager{display:flex;gap:12px;align-items:center;margin:12px 2px;font-size:13px;flex-wrap:wrap}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;background:var(--card);
  border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:14px}
.toolbar input[type=text]{width:220px;margin-top:0}
.toolbar select{width:auto;margin-top:0}
.toolbar .spacer{flex:1}
.toolbar-inner{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.toolbar-inner input[type=text]{width:200px;margin-top:0}
.toolbar-inner select{width:auto;margin-top:0}
.inline-form{display:flex;gap:5px;align-items:center}
.inline-form input{margin-top:0;padding:4px 6px;font-size:12.5px}
tr.row-bad td{background:#fdf3f2}
tr.row-bad td:first-child{box-shadow:inset 3px 0 0 var(--bad)}

/* 体检页 */
.doctor-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.doctor-bad{border-left:4px solid var(--bad)}
.doctor-warn{border-left:4px solid var(--warn)}
.box textarea{min-height:260px;line-height:1.6}
.card.warn .num{color:var(--warn)}
.checklist{list-style:none;padding:0;margin:0}
.checklist li{padding:6px 0;border-bottom:1px dashed var(--line)}
.checklist li .mark{display:inline-block;width:20px;color:#c0c8d2}
.checklist li.done .mark{color:var(--ok)}
.kv{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:14px}
.kv div span{color:var(--muted);font-size:12.5px;display:block}
.errlist{color:#b3261e;font-size:13px;max-height:420px;overflow:auto}
.rule-card .rule-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.rule-card .rule-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.route-item{padding:7px 0;border-bottom:1px dashed var(--line)}
.flow{color:#24528a}
.foot{text-align:center;color:#9aa4b2;font-size:12px;padding:16px 10px 30px}

/* 登录页 */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#eef2f7}
.login-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:26px 24px;width:min(92vw,380px);
  box-shadow:0 6px 24px rgba(31,59,99,.08)}
.login-card h1{margin:0 0 2px;font-size:20px;color:var(--brand)}
.login-card .btn{margin-top:8px}

/* ---------------- 打印（生产指令单） ---------------- */
.print-body{background:#e8ecf1;margin:0;padding:0}
.print-toolbar{display:flex;gap:10px;align-items:center;padding:10px 16px;background:#fff;
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.print-sheet{background:#fff;width:210mm;min-height:280mm;margin:14px auto;padding:14mm 12mm;
  box-shadow:0 2px 12px rgba(0,0,0,.12);color:#111;font-size:12.5px}
.sheet-head{position:relative;text-align:center;border-bottom:2px solid #111;padding-bottom:8px;margin-bottom:12px}
.sheet-company{font-size:14px;letter-spacing:2px}
.sheet-title{font-size:22px;font-weight:700;letter-spacing:6px;margin:4px 0}
.sheet-no{font-size:12px;color:#444}
.sheet-h3{font-size:13px;margin:14px 0 6px;padding-left:6px;border-left:4px solid #1f3b63}
table.sheet-info{width:100%;border-collapse:collapse;margin-bottom:6px}
table.sheet-info th,table.sheet-info td{border:1px solid #999;padding:5px 7px;font-size:12px}
table.sheet-info th{background:#f1f3f6;width:11%;text-align:left;font-weight:600;white-space:nowrap}
table.sheet-tbl{width:100%;border-collapse:collapse;margin-bottom:6px}
table.sheet-tbl th,table.sheet-tbl td{border:1px solid #999;padding:5px 7px;font-size:12px}
table.sheet-tbl th{background:#f1f3f6;font-weight:600}
table.sheet-tbl td.c,table.sheet-tbl th.c{text-align:center}
table.sheet-tbl tr{height:26px}
.big{font-weight:700;font-size:14px}
.sheet-notes{margin:4px 0 0 18px;padding:0;font-size:12px;line-height:1.7}
.sheet-sign{width:100%;border-collapse:collapse;margin-top:16px}
.sheet-sign th,.sheet-sign td{border:1px solid #999;padding:12px 7px;font-size:12px}
.sheet-sign th{background:#f1f3f6;width:11%;text-align:left;font-weight:600;white-space:nowrap}
.sheet-foot{font-size:11px;color:#666;text-align:center;margin:6px 0 0}
.sheet-qr{position:absolute;right:0;top:0;text-align:center}
.sheet-qr svg{width:26mm;height:26mm}
.sheet-qr-cap{font-size:10px;color:#444;letter-spacing:1px}
.qr-box{margin:6px 0}
.qr-box svg{width:150px;height:150px}
.printlist{list-style:none;padding:0;margin:0}
.printlist li{padding:7px 0;border-bottom:1px dashed var(--line);display:flex;gap:10px;align-items:center}

@media print{
  .no-print,.topbar,.sidenav,.foot,.print-toolbar{display:none !important}
  .print-body{background:#fff}
  .print-sheet{width:auto;margin:0;padding:0;box-shadow:none;min-height:0}
  @page{size:A4 portrait;margin:14mm 12mm}
  table.sheet-tbl tr{height:auto}
  a{color:#000;text-decoration:none}
}

/* ---------------- 车间报工台（手机优先） ---------------- */
.work-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 12px}
.work-hello{font-size:19px;font-weight:700}
.work-hello span{display:block;font-weight:400;font-size:12.5px;color:var(--muted)}
.work-h2{font-size:15px;color:#475569;margin:14px 0 8px}
.work-card{background:#fff;border:1px solid var(--line);border-left:4px solid var(--brand2);
  border-radius:10px;padding:12px 14px;margin-bottom:12px}
.work-card.work-red{border-left-color:var(--bad);background:#fffafa}
.work-card.work-yellow{border-left-color:var(--warn);background:#fffdf7}
.work-reason{font-size:13px;color:#b3261e;background:#fdecea;border-radius:6px;
  padding:5px 9px;margin-bottom:8px}
.work-card.work-yellow .work-reason{color:#b57200;background:#fef3e2}
/* 总入口：能点的卡片 */
.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.link-card{display:block;text-decoration:none;background:#fff;border:1px solid var(--line);
  border-left:4px solid #cbd5e1;border-radius:10px;padding:10px 12px;color:#1f2937;
  transition:box-shadow .15s,transform .15s}
.link-card:hover{box-shadow:0 4px 14px rgba(15,23,42,.12);transform:translateY(-1px);text-decoration:none}
.link-card b{display:block;font-size:15px;color:var(--brand);margin-bottom:2px}
.link-card span{display:block;font-size:12px;color:var(--muted);line-height:1.5}
.link-card.primary{border-left-color:var(--brand);background:#f7faff}
.link-card.act{border-left-color:#0e9f6e;background:#f6fffb}
.link-card.act b{color:#0e7a55}
.link-card.doc{border-left-color:#e8a33d;background:#fffdf7}
.link-card.doc b{color:#9a6206;word-break:break-all;font-size:14px}
.link-card.off{opacity:.55;cursor:default}
.link-card.off:hover{box-shadow:none;transform:none}
.sub{margin:14px 0 8px;font-size:14px;color:var(--brand);border-left:3px solid var(--brand2);padding-left:8px}
pre.log{background:#0f172a;color:#e2e8f0;padding:12px;border-radius:8px;font-size:12px;
  line-height:1.55;overflow:auto;max-height:420px;white-space:pre-wrap}
.work-title{font-size:16px;font-weight:600;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.work-sub{font-size:12.5px;color:var(--muted);margin:4px 0 9px}
.work-nums{display:flex;gap:18px;margin-bottom:6px}
.work-nums b{font-size:19px;color:var(--brand);font-variant-numeric:tabular-nums}
.work-nums span{display:block;font-size:11.5px;color:var(--muted)}
.work-tags{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0 10px;align-items:center}
.work-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.work-form input[type=number]{flex:1;min-width:110px;margin-top:0;padding:12px 10px;font-size:17px;
  text-align:center;font-weight:700}
.work-form input[type=text],.work-form select{margin-top:0;padding:10px;font-size:14px}
.work-form .btn{padding:12px 20px;font-size:16px}
@media(max-width:520px){
  .work-form{flex-direction:column;align-items:stretch}
  .work-form .btn{width:100%}
  .work-nums{gap:12px}
  .work-nums b{font-size:17px}
  .content{padding:10px}
}

/* ---------------- 车间大屏（挂电视） ---------------- */
.tv-body{background:#0d1522;color:#e8eef8;margin:0;min-height:100vh;
  font-family:"Microsoft YaHei","微软雅黑",sans-serif;overflow-x:hidden}
.tv-top{display:flex;align-items:center;gap:20px;padding:14px 26px;border-bottom:1px solid #1e2c44}
.tv-clock{font-size:34px;font-weight:700;color:#4b8bf5;font-variant-numeric:tabular-nums;min-width:170px}
.tv-title{flex:1;font-size:24px;letter-spacing:2px}
.tv-page{font-size:16px;color:#7d8ea8}
.tv-wrap{padding:20px 26px}
.tv-slide{display:none}
.tv-slide:first-child{display:block}
.tv-h1{font-size:26px;margin:4px 0 18px;color:#9dc0ff;font-weight:600}
.tv-stats{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:26px}
.tv-stat{background:#152238;border:1px solid #22334f;border-radius:12px;padding:16px 28px;text-align:center;min-width:150px}
.tv-stat b{display:block;font-size:44px;line-height:1.1;color:#7fb2ff;font-variant-numeric:tabular-nums}
.tv-stat span{font-size:14px;color:#8fa3bd}
.tv-stat.ok b{color:#3ddc84}
.tv-stat.warn b{color:#f5b942}
.tv-stat.bad b{color:#ff6b5e}
.tv-progress{margin-top:6px}
.tv-progress-label{font-size:18px;color:#8fa3bd}
.tv-bar{height:20px;background:#16233a;border-radius:10px;overflow:hidden;margin-top:8px}
.tv-bar i{display:block;height:100%;background:linear-gradient(90deg,#2b7de9,#3ddc84)}
.tv-alert{margin-top:18px;font-size:20px;color:#f5b942}
.tv-table{width:100%;border-collapse:collapse;font-size:20px}
.tv-table th,.tv-table td{padding:11px 12px;border-bottom:1px solid #1c2a42;text-align:left}
.tv-table th{color:#7d8ea8;font-size:15px;font-weight:500}
.tv-table td.c,.tv-table th.c{text-align:center}
.tv-dept{color:#9dc0ff;font-weight:600}
.tv-rowbar{position:relative;background:#16233a;border-radius:8px;height:30px;min-width:220px}
.tv-rowbar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#2b7de9,#4b8bf5)}
.tv-rowbar em{position:absolute;right:10px;top:3px;font-style:normal;font-weight:700;font-size:18px}
.tv-over{background:#2a1518}
.tv-over b{color:#ff6b5e}
.tv-empty{font-size:22px;color:#7d8ea8;padding:30px 0}
.tv-foot{padding:12px 26px;color:#6b7c96;font-size:14px;border-top:1px solid #1e2c44}
.tv-foot a{color:#4b8bf5;margin-left:14px}

/* ===== 侧边栏分组折叠（2026-10-11 定稿：按"字看不清"的反馈提对比度） =====
   配色思路：深蓝底 #1e2b3d 上，分组标题用亮白 #e8eef7 加粗，
   菜单项用 #d8e2ef（足够亮），当前项用亮蓝底 + 白字，一眼能找到。
   字号：分组标题 14px、菜单项 15px（车间和年纪大的看得清） */
.sidenav{background:#1b2740}
.sidenav a{font-size:15px;color:#d8e2ef;padding:12px 18px}
.sidenav a.active{background:#2a5db0;color:#fff;border-left-color:#7db1ff;font-weight:700}

.sidenav .navgroup{margin:0;border-top:1px solid rgba(255,255,255,.14)}
.sidenav .navgroup summary{
  list-style:none;cursor:pointer;padding:12px 16px;font-size:14px;font-weight:700;
  color:#e8eef7;background:rgba(255,255,255,.05);
  display:flex;align-items:center;gap:8px;user-select:none;
}
.sidenav .navgroup summary::-webkit-details-marker{display:none}
.sidenav .navgroup summary::before{
  content:"▸";font-size:13px;color:#9dc0f0;transition:transform .15s;display:inline-block;
}
.sidenav .navgroup[open] summary::before{transform:rotate(90deg)}
.sidenav .navgroup summary:hover{background:rgba(255,255,255,.13);color:#fff}
.sidenav .navgroup[open] summary{background:rgba(255,255,255,.10);color:#fff}
.sidenav .navgroup .navcount{
  margin-left:auto;font-size:12px;font-weight:600;color:#eaf2fb;
  border-radius:9px;padding:1px 8px;background:rgba(255,255,255,.18);
}
.sidenav .navgroup .sublink{
  padding-left:34px;font-size:15px;color:#cfdcec;background:#22304a;
}
.sidenav .navgroup .sublink:hover{background:#2c3d5c;color:#fff}
.sidenav .navgroup .sublink.active{
  background:#2a5db0;color:#fff;border-left-color:#7db1ff;font-weight:700;
}

/* 顶栏的"改密码/退出"：原来描边太细看不清，加实底 */
.topbar .btn.ghost{
  border:1px solid rgba(255,255,255,.75);color:#fff;background:rgba(255,255,255,.14);
  font-size:13.5px;padding:5px 12px;font-weight:600;
}
.topbar .btn.ghost:hover{background:rgba(255,255,255,.28);color:#fff}

/* 顶栏用户名：加亮 + 加大 */
.topbar .who{font-size:14px;color:#fff;font-weight:600}
.topbar .who em{font-size:11.5px;color:#bed3ee;opacity:1}

/* 颜色小标签（同款多色，一眼看出是哪个色） */
.colorchip{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:8px;
  background:#eef2f7;color:#1f3b63;font-size:12.5px;font-weight:600;vertical-align:middle}
/* ===== 手机端二维码卡片（发给负责人的）===== */
.qrcards {
  display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px;
}
.qrcard {
  border: 2px solid #d7e0ee; border-radius: 10px; padding: 12px 14px;
  background: #fff; text-align: center; min-width: 200px;
  page-break-inside: avoid;
}
.qrname {
  font-size: 17px; font-weight: 700; color: #1b2740; margin-bottom: 2px;
}
.qrimg { margin: 8px 0 6px; }
.qrimg svg { width: 168px; height: 168px; display: block; margin: 0 auto; }
.qrurl {
  color: #5a6b85; word-break: break-all; max-width: 200px;
  margin: 0 auto; line-height: 1.35;
}

/* 打印时：只留二维码卡片，去掉导航和表单，方便贴到工位 */
@media print {
  #sidebar, .navgroup, .topbar, form, .btn, .no-print { display: none !important; }
  .qrcards { gap: 10px; }
  .qrcard { border-color: #999; }
  .qrimg svg { width: 150px; height: 150px; }
  body { background: #fff; }
}


/* ============================================================
   统计条 / 筛选条 / 状态文字 / 小标签
   （2026-10-13 补：这些类模板里一直在用，但样式表里漏了定义，
     导致「日报核验」「首件确认」「手机端链接」等页面没有样式）
   ============================================================ */
.stat-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.stat-card{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:10px 18px;min-width:118px;text-align:center}
.stat-card b{display:block;font-size:24px;font-weight:700;color:var(--brand);
  font-variant-numeric:tabular-nums;line-height:1.25}
.stat-card span{font-size:12px;color:var(--muted)}
.stat-card.ok b{color:var(--ok)}
.stat-card.warn b{color:var(--warn)}
.stat-card.bad b{color:var(--bad)}

.filterbar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end}
.filterbar label{display:inline-flex;flex-direction:column;gap:2px;margin:0;
  font-size:12px;font-weight:600;color:#374151}
.filterbar input[type=text],.filterbar input[type=number],.filterbar input[type=date],
.filterbar input[type=password],.filterbar select{width:auto;min-width:110px;margin:0;
  padding:7px 9px;font-size:13px}
.filterbar .chk{flex-direction:row;align-items:center;gap:6px;font-weight:400;
  font-size:13px;color:#374151}
.filterbar .chk input{width:auto;margin:0}
.filterbar button{margin:0}

.ok-text{color:var(--ok);font-weight:600}
.warn-text{color:var(--warn);font-weight:600}
.bad-text{color:var(--bad);font-weight:600}

.badge{display:inline-block;padding:1px 9px;border-radius:99px;font-size:12px;
  font-weight:600;background:#eef2f7;color:var(--muted);border:1px solid var(--line);
  vertical-align:middle;white-space:nowrap}
.badge.ok{background:#e7f6ee;color:var(--ok);border-color:#b6e3c9}
.badge.bad{background:#fdeceb;color:var(--bad);border-color:#f5c2be}
.badge.warn{background:#fdf4e3;color:#a96b09;border-color:#f0d9a8}

/* 表格行状态（数据导入结果、生产日报用） */
tr.fail td,.fail{background:#fff5f5}
.no_report{color:var(--muted)}
.qc_reject{color:var(--bad);font-weight:600}

/* 小按钮（首件确认页那种行内操作） */
.btn.small{padding:6px 12px;font-size:13px}
