*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#0a152e; --panel:#111f42; --panel2:#152a55; --line:#2c4a7e;
  --txt:#e9effc; --dim:#8fa5cc; --blue:#2e75b6; --blue2:#5b9bd5; --cyan:#00b0f0;
  --green:#00b050; --orange:#ed7d31; --red:#e5533c; --gold:#d4a017;
  /* 兼容别名：旧 admin.js/anns-edit.js 仍引用这些变量名 */
  --panel-2:var(--panel2); --border:var(--line); --pass:var(--green);
  --warn:var(--orange); --fail:var(--red); --text:var(--txt); --muted:var(--dim);
}
html,body{height:100%}
body{
  background:radial-gradient(1200px 800px at 20% -10%, #12305f 0%, var(--bg) 60%) fixed;
  color:var(--txt); font-family:"Microsoft YaHei","PingFang SC",sans-serif;
  display:flex; flex-direction:row; overflow:hidden;
}
/* 未登录只读态：写控件整体隐藏（登录后 body 移除 .ro） */
body.ro .need-auth{display:none!important}
/* 左侧导航 */
.sidebar{flex:0 0 176px;height:100vh;background:linear-gradient(180deg,#0d2138,#0a1a2e);
  border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 12px;gap:10px}
.brand{display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;letter-spacing:1px;color:#fff;padding:2px 4px 10px;border-bottom:1px solid var(--line)}
.brand i{width:11px;height:11px;border-radius:50%;background:linear-gradient(135deg,#00b0f0,#2e75b6);box-shadow:0 0 8px rgba(0,176,240,.8)}
.menu{display:flex;flex-direction:column;gap:3px;margin-top:4px}
.menu .group{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:#a9bcdf;
  letter-spacing:1px;margin:10px 4px 4px;padding:5px 6px;border-radius:7px;cursor:pointer;user-select:none;
  border:1px solid transparent;transition:color .15s,background .15s,border-color .15s}
.menu .group::before{content:'';flex:0 0 auto;width:3px;height:12px;border-radius:2px;
  background:linear-gradient(180deg,var(--cyan),var(--blue));box-shadow:0 0 6px rgba(0,176,240,.55);transition:box-shadow .15s}
.menu .group:hover{color:#fff;background:#122c47;border-color:#1d3a63}
.menu .group:hover::before{box-shadow:0 0 10px rgba(0,176,240,.95)}
.menu .item{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:8px;color:var(--dim);
  font-size:13px;cursor:pointer;border:1px solid transparent;transition:all .15s;user-select:none}
.menu .item:hover{background:#122c47;color:var(--txt)}
.menu .item.active{background:linear-gradient(135deg,#1f4e79,#2e75b6);color:#fff;border-color:#00b0f0}
.menu .item .ic{font-style:normal;font-size:15px}
/* 侧栏「管理/退出」按钮（登录态加 .on） */
.menu .item.auth .dot{width:8px;height:8px;border-radius:50%;background:var(--dim);flex:0 0 auto;transition:all .15s}
.menu .item.auth:hover{color:var(--txt)}
.menu .item.auth.on{color:#7de3ff;border-color:rgba(74,222,128,.5);background:rgba(0,176,90,.08)}
.menu .item.auth.on .dot{background:#4ade80;box-shadow:0 0 6px rgba(74,222,128,.8)}
.sideinfo{margin-top:auto;border-top:1px solid var(--line);padding-top:10px;font-size:11px;color:var(--dim);
  display:flex;flex-direction:column;gap:5px}
.sideinfo b{color:var(--txt);font-weight:600}
.backstat{margin-top:4px;color:var(--dim);font-size:10px;line-height:1.5}
/* 导航分组折叠：点分组标题收起/展开 */
.menu .grp{display:flex;flex-direction:column;gap:3px}
.menu .group .caret{margin-left:auto;font-style:normal;font-size:11px;letter-spacing:0;opacity:.8;transition:transform .2s}
.menu .group.collapsed .caret{transform:rotate(-90deg)}
.menu .grp-items{display:flex;flex-direction:column;gap:3px}
.menu .grp-items.collapsed{display:none}
/* 效率达成：整块嵌入 web5s/eff 的独立看板，撑满内容区 */
#view-eff{min-height:0}
.eff-databar{flex:none;display:flex;align-items:center;gap:10px;padding:0 2px 8px}
.eff-databar .hint{flex:1;min-width:0}
.eff-databar code{background:#132a44;padding:1px 5px;border-radius:4px;font-size:11px}
.eff-frame{flex:1;width:100%;min-height:0;border:0;border-radius:10px;background:#0f1c33}
/* 整栏折叠（点右上角把手）：收起为图标条 */
.nav-toggle{margin-left:auto;flex:0 0 auto;width:22px;height:22px;padding:0;display:flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--line);border-radius:6px;color:var(--dim);cursor:pointer;font-size:12px;line-height:1;transition:all .15s}
.nav-toggle:hover{color:#fff;border-color:var(--cyan);background:#122c47}
.menu .item.auth .auth-c{display:none}
.sidebar.collapsed{flex:0 0 58px;padding:14px 8px}
.sidebar.collapsed .brand{justify-content:center;gap:0;padding:2px 0 10px}
.sidebar.collapsed .brand i,.sidebar.collapsed .brand-txt{display:none}
.sidebar.collapsed .nav-toggle{margin-left:0;transform:rotate(180deg)}
.sidebar.collapsed .menu{gap:2px}
.sidebar.collapsed .menu .grp{gap:0}
.sidebar.collapsed .menu .group{height:1px;padding:0;margin:10px 2px;gap:0;background:var(--line);
  border-color:transparent;font-size:0;letter-spacing:0;overflow:hidden}
.sidebar.collapsed .menu .group::before,.sidebar.collapsed .menu .group .caret{display:none}
.sidebar.collapsed .menu .group:hover{background:var(--line);border-color:transparent}
.sidebar.collapsed .menu .grp-items.collapsed{display:flex}
.sidebar.collapsed .menu .item{justify-content:center;padding:10px 0;gap:0;font-size:0}
.sidebar.collapsed .menu .item .ic{font-size:17px}
.sidebar.collapsed .menu .item.auth .dot{display:none}
.sidebar.collapsed .menu .item.auth .auth-c{display:inline}
.sidebar.collapsed .sideinfo{display:none}
/* 内容区 */
.content{flex:1;display:flex;flex-direction:column;height:100vh;padding:10px 18px;overflow:hidden}
.view{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;width:100%}
.head{flex:0 0 auto;position:relative;display:flex;align-items:center;justify-content:center;padding:0 4px 12px}
.ttl{font-size:22px;font-weight:700;letter-spacing:1px;line-height:1.1;text-align:center}
.clock{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--dim);text-align:right;line-height:1.5}
.clock b{display:block;font-size:17px;color:var(--txt)}
.panel{background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);
  border-radius:12px;padding:12px 16px;flex:1;min-height:0;display:flex;flex-direction:column}
.pttl{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:10px;flex:0 0 auto}
.pttl::before{content:"";width:4px;height:15px;border-radius:2px;background:var(--blue2)}
.pttl .hint{font-size:11px;color:var(--dim);font-weight:400;margin-left:auto}
/* 首页 车间平面图（导入图片 + 画框标注，整页铺满） */
#view-home:fullscreen{width:100vw;height:100vh;background:var(--bg)}
#view-home:-webkit-full-screen{width:100vw;height:100vh;background:var(--bg)}
.shop-panel{padding:0}
.shopwrap{flex:1;min-height:0;overflow:hidden;background:#0d1a36;position:relative}
.shopwrap.over{outline:2px solid var(--cyan);outline-offset:-2px}
#shopImg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;display:none;user-select:none;-webkit-user-drag:none;background:#0d1a36}
#annSvg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none}
#dirStat{color:var(--orange)}
.shopempty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:var(--dim);z-index:2;transition:background .2s}
.shopempty:hover{background:rgba(0,176,240,.05);color:#bcd8f5}
.se-ic{font-size:52px;opacity:.85}
.se-t{font-size:17px;font-weight:700;letter-spacing:1px}
.se-s{font-size:12px}
.ann-box{fill:transparent;stroke:#7db5e8;stroke-width:1.6;cursor:pointer;pointer-events:all;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35));transition:stroke-width .12s}
.ann-box:hover{stroke:#7de3ff;stroke-width:2.2;filter:drop-shadow(0 0 8px rgba(0,176,240,.55))}
.ann-box.sel{stroke:#00e5ff;stroke-width:2.2;animation:annPulse 1.6s ease-in-out infinite}
.ann-box.pass{stroke:#4ade80}
.ann-box.warn{stroke:#fbbf24}
.ann-box.fail{stroke:#f87171}
@keyframes annPulse{0%,100%{filter:drop-shadow(0 0 6px rgba(0,176,240,.4))}50%{filter:drop-shadow(0 0 14px rgba(0,176,240,.9))}}
/* 小火车式闪点：一排小圆点沿框轮廓匀速行进（animateMotion 错开形成队形） */
.ann-train .train-dot{opacity:0;transition:opacity .15s;fill:#00e5ff;filter:drop-shadow(0 0 4px rgba(0,229,255,.9));pointer-events:none}
.ann-g:hover .ann-train .train-dot{opacity:1}
/* 全屏模式：逐条轮播——默认隐藏，仅当前播放框(.fs-on)显示小火车，顺序按线体排序 */
#view-home.fs .ann-g .ann-train .train-dot{opacity:0}
#view-home.fs .ann-g.fs-on .ann-train .train-dot{opacity:1}
.ann-lab-bg{fill:rgba(10,21,46,.78);stroke:#2c4a7e;stroke-width:.6px;cursor:pointer;transition:stroke .12s,fill .12s}
.ann-lab-bg:hover{stroke:var(--cyan);fill:rgba(20,42,84,.9)}
.ann-label{fill:#fff;font-size:13px;font-weight:700;letter-spacing:.5px;stroke:rgba(10,21,46,.9);stroke-width:.8px;paint-order:stroke;pointer-events:none;user-select:none}
.ann-corner{stroke:var(--cyan);stroke-width:2;fill:none;pointer-events:none}
.ann-hd{fill:#00e5ff;stroke:#0a152e;stroke-width:1;pointer-events:all;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
.ann-hd:hover{fill:#ffffff}
.ann-ghost{fill:rgba(0,176,240,.15);stroke:var(--cyan);stroke-width:1.5;stroke-dasharray:4 3;pointer-events:none}
.ann-vtx{fill:#00e5ff;stroke:#0a152e;stroke-width:1;pointer-events:all;cursor:pointer;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}
.ann-vtx:hover{fill:#ffffff}
.ann-poly-prev polyline{fill:none;stroke:var(--cyan);stroke-width:1.5;stroke-dasharray:4 3;pointer-events:none}
.ann-poly-prev polygon{fill:rgba(0,176,240,.12);pointer-events:none}
.ann-del{cursor:pointer}
.ann-del circle{fill:var(--red);stroke:#fff;stroke-width:1}
.ann-del text{fill:#fff;font-size:13px;font-weight:700;pointer-events:none}
.tip{position:fixed;z-index:99;min-width:150px;max-width:240px;background:rgba(9,20,40,.93);border:1px solid #2c4a7e;border-left:3px solid var(--cyan);border-radius:8px;padding:8px 12px;font-size:12px;line-height:1.7;color:var(--txt);pointer-events:none;box-shadow:0 4px 18px rgba(0,0,0,.55);backdrop-filter:blur(4px)}
/* 全屏轮播气球：小箭头指向当前线框（fsTipShow 定边 .fsa-l/.fsa-r + 定垂直位 var(--acT)） */
.tip.fsc::before{content:'';position:absolute;top:var(--acT);width:0;height:0;border-top:8px solid transparent;border-bottom:8px solid transparent;transform:translateY(-50%)}
.tip.fsc.fsa-l::before{right:100%;border-right:9px solid rgba(9,20,40,.93)}   /* 贴框于右→尾在左缘朝左指框 */
.tip.fsc.fsa-r::before{left:100%;border-left:9px solid rgba(9,20,40,.93)}   /* 贴框于左→尾在右缘朝右指框 */
.tip-name{font-size:13px;font-weight:700;color:#fff;letter-spacing:1px;margin-bottom:2px}
.tip-row{color:var(--dim)}
.tip-row.dim{color:rgba(143,165,204,.6);font-size:11px}
.shopfoot{flex:0 0 auto;padding:6px 10px;font-size:11px;color:var(--dim);display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);background:rgba(13,26,54,.55)}
.selbar{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--txt)}
.selinput{width:120px;background:#0d1a36;border:1px solid var(--cyan);border-radius:5px;color:var(--txt);font-size:12px;padding:3px 6px;outline:none}
.selinput option{background:#0d1a36;color:var(--txt)}
.btn{background:#122c47;border:1px solid var(--line);color:var(--dim);border-radius:6px;font-size:11px;padding:3px 10px;cursor:pointer;transition:all .15s}
.btn:hover{color:var(--txt);border-color:var(--blue2)}
.btn.on{background:linear-gradient(135deg,#1f4e79,#2e75b6);color:#fff;border-color:var(--cyan)}
.btn.small{padding:2px 8px;background:#2a1a1a;border-color:#7a2f2f;color:#ffb4ad}
.btn.small:hover{background:#3a2323;color:#ff6b6b;border-color:var(--red)}
.btn-primary{background:linear-gradient(135deg,#00b0f0,#2e75b6);border:1px solid #00d5ff;color:#fff;font-weight:700}
.btn-primary:hover{box-shadow:0 0 12px rgba(0,176,240,.55);color:#fff;border-color:#00d5ff}
.btn-primary:disabled{opacity:.7;cursor:wait}
.btn-primary.ok{background:linear-gradient(135deg,#1e7a3a,#2faf5a);border-color:#3ddc84;cursor:default}
.btn-primary.ok:hover{box-shadow:0 0 12px rgba(61,220,132,.55);border-color:#3ddc84}
.btn-danger{background:linear-gradient(135deg,#e06666,#b02e2e);border:1px solid #ff8a8a;color:#fff;font-weight:700}
.btn-danger:hover{box-shadow:0 0 12px rgba(224,102,102,.55);color:#fff;border-color:#ff8a8a}
.btn-exit{background:#2a1a1a;border-color:#7a2f2f;color:#ffb4ad}
.btn-exit:hover{background:#3a2323;color:#ff6b6b;border-color:var(--red)}
.footbtns{margin-left:auto;display:inline-flex;gap:6px}
.msg{font-size:11px;color:var(--cyan);opacity:0;transition:opacity .3s;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg.show{opacity:1}
.msg.ok{color:#3ddc84;font-size:13px;font-weight:700}
.msg.err{color:#ff6b5e;font-size:13px;font-weight:700}
/* 占位页 */
.placeholder{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:12px}

/* ================= 线体5S 页 ================= */
#view-line5s:fullscreen{width:100vw;height:100vh;background:var(--bg)}
#view-line5s:-webkit-full-screen{width:100vw;height:100vh;background:var(--bg)}
.line5s-panel{padding:8px 12px;gap:8px}
.ldetail{flex:0 0 auto;display:flex;flex-direction:column;gap:4px}
.ldwrap{position:relative;height:128px;overflow:hidden;background:#0d1a36;border:1px solid var(--line);border-radius:8px}
.ldwrap.over{outline:2px solid var(--cyan);outline-offset:-2px}
#ldImg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:none;user-select:none;-webkit-user-drag:none}
.ldempty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;color:var(--dim);transition:background .2s}
.ldempty:hover{background:rgba(0,176,240,.05);color:#bcd8f5}
.ld-ic{font-size:24px;opacity:.85}
.ld-t{font-size:13px;font-weight:700;letter-spacing:1px}
.ld-s{font-size:10px}
.ldbar{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--dim)}
.ldtitle{font-weight:700;color:var(--txt);font-size:12px;letter-spacing:.5px}
.ldstat{color:var(--orange)}

/* 工站卡片：横排一排（参照 DIP9 看板 stationBar） */
.stgrid{flex:0 0 auto;display:flex;gap:5px;overflow-x:auto;padding-bottom:2px}
.stgrid::-webkit-scrollbar{height:5px}
.stgrid::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.stcard{flex:0 0 auto;min-width:64px;text-align:center;padding:4px 6px;background:#0d1a36;border:1px solid var(--line);
  border-radius:8px;cursor:pointer;transition:all .15s;user-select:none}
.stcard:hover{border-color:var(--blue2);transform:translateY(-1px)}
.stcard.on{background:linear-gradient(160deg,#1f4e79,#2e75b6);border-color:var(--cyan);color:#fff;
  box-shadow:0 3px 10px rgba(0,176,240,.3)}
.st-no{font-size:9px;color:var(--dim);white-space:nowrap}
.stcard.on .st-no{color:#bcd8f5}
.st-name{font-size:12px;font-weight:700;margin-top:1px;white-space:nowrap}
.st-people{font-size:9px;color:var(--dim);margin-top:1px;white-space:nowrap}
.stcard.on .st-people{color:#bcd8f5}
.st-s5{font-size:10px;font-weight:700;margin-top:1px;white-space:nowrap}

/* 底部：左列[岗位信息|工站图片] / 右列[5S执行标准要求|5S评分表|物品标注] */
.stbottom{flex:1;min-height:0;display:flex;gap:8px}
.stleft{flex:0 0 40%;min-height:0;display:flex;flex-direction:column;gap:8px}
.stleft .stdbar{min-height:0}   /* 岗位信息压缩到内容高度 */
.stdbar{flex:0 0 auto;min-height:150px;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.stdbar .pttl{margin-bottom:4px}
.stright .stdbar{flex:0 0 172px;min-height:0}   /* 右侧图表模块固定高度 */
.std-cols{flex:1;display:flex;gap:10px;min-height:0}
.std-chart{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.std-chart .pttl{font-size:12px;margin-bottom:0}
.chart-box{flex:1;min-height:0}
.chart-empty{color:var(--dim);font-size:11px;text-align:center;padding-top:44px}
.std-body{display:flex;align-items:center;flex-wrap:wrap;gap:4px 22px;font-size:12px;line-height:1.7;min-width:0}
.std-body .info-empty{padding-top:4px}
.stphoto{flex:1;min-height:0;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.stphoto .pttl{margin-bottom:6px}
.stimgwrap{flex:1;min-height:0;position:relative;overflow:hidden;background:#0d1a36;border:1px solid var(--line);border-radius:7px}
#stImg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;display:none;user-select:none}
#stAnnSvg{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none}
.st-ann{cursor:pointer;transform-box:fill-box;transform-origin:center;transition:transform .12s}
.st-ann polygon.arr{fill:var(--ac,#00b0f0);stroke:rgba(10,21,46,.9);stroke-width:1.5}
.st-ann circle{fill:var(--ac,#00b0f0);stroke:rgba(10,21,46,.9);stroke-width:1.5}
.st-ann:hover{transform:scale(1.12)}
.st-ann text.num{fill:#0a152e;font-size:9px;font-weight:700;text-anchor:middle;pointer-events:none}
.st-ann text.nm{fill:#e9effc;font-size:9.5px;text-anchor:middle;stroke:rgba(10,21,46,.9);stroke-width:.6px;paint-order:stroke;pointer-events:none}
.st-ann.sel polygon.arr{stroke:var(--gold);stroke-width:2.5}
.st-ann.sel circle{stroke:var(--gold);stroke-width:2.5;filter:drop-shadow(0 0 6px rgba(212,160,23,.8))}
.stann-btn{margin-left:2px}
.stimg-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--dim);font-size:12px;text-align:center;line-height:1.8;padding:0 12px}
.stimg-empty .se-ic{font-size:34px;opacity:.6}

/* 右侧列 */
.stright{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.rpanel{flex:1;min-height:0;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.rpanel.s5-panel{flex:0 0 auto}   /* 5S评分表只占内容高度，压缩高度 */
.stright .rpanel:last-child{max-height:320px}   /* 物品标注限高，内部滚动 */
.rpanel .pttl{margin-bottom:6px}
.rbody{flex:1;min-height:0;overflow:auto;font-size:12px;line-height:1.6}
.rbody::-webkit-scrollbar{width:6px}
.rbody::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}

/* 5S执行标准要求（岗位信息 横排占宽） */
.info-empty{color:var(--dim);font-size:12px;text-align:center;padding-top:26px}
.std-info{display:flex;flex-wrap:wrap;gap:4px 22px;align-items:center}
.std-item{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.std-item .ik{color:var(--dim);font-size:11px}
.std-item .iv{font-weight:600;color:var(--txt)}
.std-sec{flex-basis:100%;font-size:10px;font-weight:700;color:var(--cyan);letter-spacing:1px;margin-top:2px;white-space:nowrap}
.joblist{display:flex;flex-wrap:wrap;gap:4px 18px;padding-top:2px}
.job{display:inline-flex;gap:6px;color:var(--txt);font-size:12px}
.job::before{content:"•";color:var(--cyan)}

/* 5S评分表 */
.s5-body .info-empty{padding-top:26px}
.s5tbl{width:100%;border-collapse:collapse}
.s5tbl th,.s5tbl td{padding:3px 6px;border:1px solid rgba(44,74,126,.4);text-align:center;font-size:11px}
.s5tbl th{background:rgba(46,117,182,.22);color:#dce9ff;font-weight:600}
.s5tbl td:first-child{text-align:left;color:var(--dim)}
.s5tbl tr.row-total{background:rgba(0,176,240,.08)}
.s5tbl tr.row-total td{font-weight:700}
.s5tbl .up{color:var(--green)} .s5tbl .dn{color:var(--red)}
.s5tbl .dim{color:var(--dim)}
.s5tbl .ok{color:var(--green);font-weight:700}
.s5tbl .ng{color:var(--red);font-weight:700}
.s5sub{color:var(--dim);font-size:10px;margin-top:5px}

/* 物品标注表 */
.ann-body{min-width:0}
.anntbl{width:100%;border-collapse:collapse}
.anntbl th,.anntbl td{padding:2px 4px;border:1px solid rgba(44,74,126,.4);text-align:left;font-size:11px}
.anntbl th{background:rgba(46,117,182,.22);color:#dce9ff;font-weight:600}
.anntbl td:first-child{width:38px;text-align:center;color:var(--dim)}
.anntbl td:nth-child(2){width:96px}
.anntbl td:nth-child(3){width:60px}
.anntbl td.col-del{width:26px;text-align:center}
.ain{width:100%;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--txt);
  font-size:11px;padding:1px 4px;outline:none;transition:all .12s}
.ain:hover{border-color:var(--line)}
.ain:disabled{opacity:1;color:var(--txt);-webkit-text-fill-color:var(--txt);cursor:default}
.ain:focus{border-color:var(--cyan);background:rgba(0,176,240,.08)}
.ain-del{width:18px;height:18px;border:none;border-radius:4px;background:rgba(229,83,60,.15);color:#ff8a80;
  cursor:pointer;font-size:11px;line-height:1;padding:0}
.ain-del:hover{background:var(--red);color:#fff}
.ph-ic{font-size:56px;opacity:.75}
.ph-t{font-size:22px;font-weight:700;color:#bcd8f5;letter-spacing:2px}
.ph-s{font-size:13px;color:var(--dim)}

/* ================= 点检评分页 ================= */
.inspect-panel{display:flex;flex-direction:column;gap:8px;padding:8px 10px;min-width:0}
.insbar{display:flex;align-items:center;gap:8px;min-width:0}
.insel{background:#0d1a36;color:#e9effc;border:1px solid var(--line);border-radius:6px;padding:4px 8px;font-size:13px;outline:none}
.insel:focus{border-color:var(--cyan)}

/* 上方：工站横排一排 */
.insstgrid{flex:0 0 auto;display:flex;gap:5px;overflow-x:auto;padding-bottom:2px;min-width:0;width:100%}
.insstgrid::-webkit-scrollbar{height:5px}
.insstgrid::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.inscard{flex:0 0 auto;min-width:72px;text-align:center;padding:5px 6px;background:#0d1a36;border:1px solid var(--line);
  border-radius:8px;cursor:pointer;transition:all .15s;user-select:none}
.inscard:hover{border-color:var(--blue2);transform:translateY(-1px)}
.inscard.on{background:linear-gradient(160deg,#1f4e79,#2e75b6);border-color:var(--cyan);color:#fff;
  box-shadow:0 3px 10px rgba(0,176,240,.3)}
.ins-no{font-size:9px;color:var(--dim);white-space:nowrap}
.inscard.on .ins-no{color:#bcd8f5}
.ins-name{font-size:12px;font-weight:700;margin-top:1px;white-space:nowrap}
.ins-sc{font-size:17px;font-weight:800;margin-top:1px;line-height:1.1}
.inscard.no{opacity:.55;border-style:dashed}
.inscard.no .ins-sc{color:var(--dim)}
/* 数据维护：管理岗角色带 + 生产岗位卡拖拽排序 */
.inscard.role:not(.on){border-color:rgba(0,213,255,.3);background:linear-gradient(160deg,#0e2444,#0b1830)}
.inscard.role:not(.on) .ins-no{color:#5f9fd0}
.inscard.role:not(.on) .ins-name{color:#8fd4ff}
.inscard.role:not(.on) .maint-pn{color:#d7e9ff}
.inscard[draggable="true"]{cursor:grab}
.inscard[draggable="true"]:active{cursor:grabbing}
.inscard.dragging{opacity:.45;border-style:dashed}
.inscard.drop-before{box-shadow:-1px 0 0 0 #00e5ff,0 0 7px rgba(0,229,255,.4)}
.inscard.drop-after{box-shadow:1px 0 0 0 #00e5ff,0 0 7px rgba(0,229,255,.4)}

/* 下半部分：左[点检表] / 右[历史记录] */
.inspect-bottom{flex:1;min-height:0;display:flex;gap:8px}
.inspect-left{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;
  background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.inspect-tbl{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px}
.itbl-scroll{flex:1;min-height:0;overflow:auto;border-radius:4px}
.itbl-scroll::-webkit-scrollbar{width:5px}
.itbl-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.itbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.itbl th,.itbl td{text-align:center;padding:3px 6px;color:#bcd8f5}
.itbl th{color:var(--dim);font-weight:600;font-size:11px;background:#0d1a36;white-space:nowrap}
.itbl th:nth-child(1){width:8%}
.itbl th:nth-child(2){width:22%}
.itbl th:nth-child(3){width:36%}
.itbl th:nth-child(4){width:12%}
.itbl th:nth-child(5){width:22%}
.itbl td.it-name{text-align:left;color:#e9effc;white-space:nowrap;padding-left:10px;overflow:hidden;text-overflow:ellipsis}
.itbl td.it-std{text-align:left;color:#8fa5cc;font-size:11px;line-height:1.35}
.itbl td.it-sc{text-align:center;white-space:nowrap}
.itbl .it-dec{width:20px;height:20px;margin-right:2px;background:#13244c;border:1px solid var(--line);border-radius:4px;color:#7fb7ff;font-size:13px;line-height:1;cursor:pointer;vertical-align:middle}
.itbl .it-dec:hover{background:#1c3566;border-color:var(--cyan)}
.itbl td.sub{white-space:nowrap;color:#bcd8f5}
.itbl td.sub b{color:#00e5ff}
.itbl tr+tr{border-top:1px solid rgba(44,74,126,.35)}
.itbl tr.it-cat td{background:#13244c;color:#e9effc;font-weight:700;font-size:12px;text-align:left;padding:4px 8px}
.itbl tr.it-cat td.sub{text-align:right;color:#bcd8f5;font-weight:400;white-space:nowrap}
.itbl .it-in{width:34px;height:20px;text-align:center;background:#101f3f;border:1px solid var(--line);border-radius:4px;color:#e9effc;font-size:12px;font-weight:700;padding:1px;outline:none;vertical-align:middle}
.itbl .it-in:focus{border-color:var(--cyan)}
.itbl td.it-note{text-align:center}
.itbl .itnote{width:100%;height:20px;background:#101f3f;border:1px solid var(--line);border-radius:4px;color:#bcd8f5;font-size:11px;padding:1px 4px;outline:none;vertical-align:middle}
.itbl .itnote:focus{border-color:var(--cyan)}
.it-stdhint{font-size:9px;color:var(--dim);font-weight:400;margin-left:6px}
.inspect-ctrl{flex:0 0 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.inspect-ctrl label{font-size:12px;color:#bcd8f5}
.inspect-ctrl .it-month{width:132px;text-align:center;background:#101f3f;border:1px solid var(--line);border-radius:5px;color:#e9effc;font-size:13px;font-weight:700;padding:3px;outline:none;color-scheme:dark}
.inspect-ctrl .it-month:focus{border-color:var(--cyan)}
.inspect-ctrl .it-wk{width:74px;text-align:center;text-align-last:center;background:#101f3f;border:1px solid var(--line);border-radius:5px;color:#e9effc;font-size:13px;font-weight:700;padding:3px 4px;outline:none;color-scheme:dark}
.inspect-ctrl .it-wk:focus{border-color:var(--cyan)}
.it-tag{padding:2px 10px;border-radius:4px;font-size:12px;font-weight:700}
.it-total-inline{font-size:13px;font-weight:800;color:#e9effc;padding:2px 10px;background:#13244c;border:1px solid var(--line);border-radius:6px;white-space:nowrap}
.it-total-inline b{color:#00e5ff}
#itSubmit{background:linear-gradient(135deg,#00b0f0,#2e75b6);border:1px solid #00d5ff;color:#fff;font-size:13px;font-weight:700;padding:5px 20px;border-radius:6px;box-shadow:0 0 10px rgba(0,176,240,.45);cursor:pointer;transition:all .15s}
#itSubmit:hover{box-shadow:0 0 16px rgba(0,176,240,.7);transform:translateY(-1px)}
#itSubmit:active{transform:translateY(0)}
.it-ro-tag{padding:2px 10px;border-radius:6px;font-size:12px;font-weight:700;background:#3a2a10;border:1px solid #7a5a1a;color:#ffd57a;white-space:nowrap}
#itSubmit.ro-done{background:#1a2a4a;border:1px solid var(--line);color:var(--dim);font-weight:700;cursor:not-allowed;box-shadow:none}
.it-sc.ro{font-size:13px;font-weight:800;color:#7de3ff}
.it-note-txt{display:inline-block;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d4b45f;font-size:11px;cursor:help;vertical-align:middle}
.it-note-txt:empty::before{content:"—";color:var(--dim)}
.it-total-inline .mx{font-size:10px;color:var(--dim);font-weight:400}

/* 下半部分右侧：历史点检记录 */
.inspect-right{flex:0 0 42%;min-width:0;display:flex;flex-direction:column;
  background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.inspect-hist{flex:1;min-height:0;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:#0d1a36;padding:6px 8px}
.inspect-hist table{width:100%;border-collapse:collapse;font-size:11px}
.inspect-hist th,.inspect-hist td{text-align:center;padding:4px 5px;color:#bcd8f5}
.inspect-hist th{color:var(--dim);font-weight:600}
.inspect-hist tr+tr{border-top:1px solid rgba(44,74,126,.35)}
.inspect-hist tr{cursor:pointer;transition:background .12s}
.inspect-hist tr:hover{background:rgba(0,176,240,.06)}
.inspect-hist tr.on td{background:#1f4e79;color:#fff}
.inspect-hist .info-empty{padding:10px;text-align:center;color:var(--dim);font-size:11px;line-height:1.8}
.inspect-hist .his-mon td{background:#13244c;color:#e9effc;font-weight:700;text-align:left;padding:5px 8px;font-size:12px}
.ins-months{flex:0 0 auto;display:flex;gap:2px;overflow-x:auto;padding:2px 0 4px}
.ins-months::-webkit-scrollbar{height:4px}
.ins-months::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.insmonth{flex:0 0 auto;min-width:22px;text-align:center;padding:2px 3px;border-radius:5px;background:#13244c;border:1px solid var(--line);color:#bcd8f5;font-size:10px;cursor:pointer;transition:all .15s}
.insmonth:hover{border-color:var(--cyan)}
.insmonth.on{background:var(--cyan);color:#06122b;font-weight:700;border-color:var(--cyan)}
.insmonth.no{opacity:.35;cursor:default}
.ins-cards{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;overflow:hidden}
.ins-card{flex:1 1 0;min-height:0;border:1px solid var(--line);border-radius:8px;background:#0d1a36;padding:6px 8px;display:flex;flex-direction:column;overflow:hidden}
.ins-card-rank .ins-chart,.ins-card-table .ins-chart{height:100%;flex:1;min-height:0}
.ins-card-table .inspect-hist{flex:1;min-height:0;max-height:none}
.ins-card-ttl{font-size:11px;color:#e9effc;font-weight:700;margin-bottom:4px;display:flex;align-items:baseline;gap:6px}
.ins-card-ttl .hint{font-size:9px;color:var(--dim);font-weight:400}
.ins-chart{width:100%;height:100%;flex:1;min-height:0}

/* ---- 数据维护页：线体信息 / 工站清单 / 岗位责任人（复用 点检评分/线体5S 布局类） ---- */
.mform{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;padding:2px 2px 4px}
.mfield{display:flex;flex-direction:column;gap:3px}
.mfield label{font-size:11px;color:var(--dim)}
.mt-in{width:130px;height:26px;background:#101f3f;border:1px solid var(--line);border-radius:5px;color:#e9effc;font-size:12px;padding:2px 8px;outline:none;box-sizing:border-box}
.mt-in:focus{border-color:var(--cyan)}
.mt-num{width:74px}
.mt-ro{color:var(--dim)!important;font-weight:700;background:transparent!important;border:none!important}
.mt-sel{height:26px;background:#101f3f;border:1px solid var(--line);border-radius:5px;color:#e9effc;font-size:12px;padding:2px 4px;outline:none;color-scheme:dark}
.mfield .mt-sel{width:110px}
.mt-ta{width:100%;min-height:52px;background:#101f3f;border:1px solid var(--line);border-radius:5px;color:#bcd8f5;font-size:11px;line-height:1.5;padding:4px 6px;outline:none;resize:vertical;box-sizing:border-box}
.mt-ta:focus{border-color:var(--cyan)}
.m-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:8px;background:#0d1a36}
.m-scroll::-webkit-scrollbar{width:5px;height:5px}
.m-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.mtbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.mtbl th,.mtbl td{text-align:center;padding:3px 6px;color:#bcd8f5}
.mtbl th{color:var(--dim);font-weight:600;font-size:11px;background:#0d1a36;white-space:nowrap}
.mtbl tr+tr{border-top:1px solid rgba(44,74,126,.35)}
.mtbl td.mt-ro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtbl .mt-in{width:94%}
.mtbl .mt-empno{width:90%}
.mtbl .mt-sel{width:96%}
.mtbl .mt-span{width:96%;text-align:center;letter-spacing:.3px}
.mtbl .mt-span::placeholder{color:#5c7bb0}
.mtbl .mt-star{width:34px;text-align:center}
.mt-star-cell{white-space:nowrap}
.mt-star-btn{width:20px;height:22px;background:#0b1940;border:1px solid var(--line);border-radius:4px;color:var(--cyan);font-size:13px;line-height:1;cursor:pointer;vertical-align:middle}
.mt-star-btn:hover{border-color:var(--cyan)}
.mt-star-btn:active{background:#132a5c}
.mstar{display:inline-flex;align-items:center;gap:4px}
.mstar .mt-in{width:40px;text-align:center}
.mtbl .mt-ta{width:100%}
.mtbl-staff th:nth-child(1){width:5%}
.mtbl-staff th:nth-child(2){width:11%}
.mtbl-staff th:nth-child(3){width:7%}
.mtbl-staff th:nth-child(4){width:7%}
.mtbl-staff th:nth-child(5){width:8%}
.mtbl-staff th:nth-child(6){width:8%}
.mtbl-staff th:nth-child(7){width:10%}
.mtbl-staff th:nth-child(8){width:8%}
.mtbl-staff th:nth-child(9){width:7%}
.mtbl-staff th:nth-child(10){width:13%}
.mtbl-staff th:nth-child(11){width:12%}
.mt-std-cell{text-align:center}
.mtbl .mt-std{width:62px;text-align:center;font-weight:700;color:var(--cyan)}
.mtbl-staff tbody tr.on td .mt-std{color:#fff}
.mt-dash{color:var(--dim)}
.mtbl-staff tbody tr.on td{background:#1f4e79;color:#fff}
.mtbl-staff tbody tr.on td input{background:#1f4e79}
.mtbl-staff tbody tr.on td select{background:#1f4e79}
.inscard .maint-pn{font-size:11px;font-weight:600;margin-top:2px;line-height:1.2}
.inscard.on .maint-pn{color:#fff}
.mt-no{width:44px;text-align:center}
.mtbl td.mt-no{color:var(--dim);white-space:nowrap}
.mtbl-staff tbody tr.on td.mt-no{color:#dcebff}
.mt-del{color:#ff8a8a;background:transparent;border:1px solid rgba(255,100,100,.4);padding:1px 6px;font-size:10px}
.mt-del:hover{background:rgba(255,80,80,.18);border-color:#ff6b6b}
.inscard.addcard{min-width:44px;color:var(--cyan);border-style:dashed;display:flex;align-items:center;justify-content:center}
.inscard.addcard:hover{background:rgba(0,213,255,.08);transform:translateY(-1px)}
.maint-foot{flex:0 0 auto;display:flex;align-items:center;gap:10px}
.bkbtns{margin-left:auto;display:inline-flex;align-items:center;gap:8px}
#maintSave{background:linear-gradient(135deg,#00b0f0,#2e75b6);border:1px solid #00d5ff;color:#fff;font-size:13px;font-weight:700;padding:6px 22px;border-radius:6px;box-shadow:0 0 10px rgba(0,176,240,.45);cursor:pointer;transition:all .15s}
#maintSave:hover{box-shadow:0 0 16px rgba(0,176,240,.7);transform:translateY(-1px)}

/* 弹窗（登录 / 新增岗位 / 删除线体 / 评分修正 / 线体详情） */
.mmodal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:rgba(4,12,26,.66);backdrop-filter:blur(2px)}
.mmodal-box{width:560px;max-width:92vw;background:linear-gradient(160deg,#14285a,#0d1a36);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.mmodal-ttl{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:12px}
.mmodal-ttl::before{content:"";width:4px;height:15px;border-radius:2px;background:var(--cyan)}
.mmodal-ttl .hint{font-size:10px;color:var(--dim);font-weight:400}
.mmodal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 12px}
.mmodal-grid .mfield .mt-in{width:100%}
.mmodal-grid .mfield .mt-sel{width:100%}
.mmodal-grid .mfield .mstar .mt-in{width:44px;text-align:center}
.mmodal-grid.night-fields{margin-top:4px;border-top:1px dashed rgba(44,74,126,.55);padding-top:10px}
.mmodal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}
.mmodal-msg{margin:2px 0 4px;line-height:1.8}
.mmodal-msg .mm-t{font-size:15px;color:var(--txt)}
.mmodal-msg .mm-s{font-size:12px;color:var(--dim);margin-top:4px}
#stAddOk{background:linear-gradient(135deg,#00b0f0,#2e75b6);border:1px solid #00d5ff;color:#fff;font-weight:700;padding:4px 20px;border-radius:6px}
#stAddOk:hover{box-shadow:0 0 12px rgba(0,176,240,.55)}
#lineDelOk{background:linear-gradient(135deg,#e06666,#b02e2e);border:1px solid #ff8a8a;color:#fff;font-weight:700;padding:4px 20px;border-radius:6px}
#lineDelOk:hover{box-shadow:0 0 12px rgba(224,102,102,.55)}
/* 登录弹窗 */
.modal-login{width:min(400px,92vw)}
.login-tip{margin-bottom:10px;line-height:1.6;font-size:12px;color:var(--dim)}
.mmodal-in{width:100%;height:34px;background:#0d1a36;border:1px solid var(--line);border-radius:6px;color:var(--txt);font-size:14px;padding:2px 10px;outline:none}
.mmodal-in:focus{border-color:var(--cyan)}
.login-err{color:var(--red);font-size:12px;margin-top:6px;min-height:16px}
.login-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}

/* 评分修正编辑表 */
.score-edit-table{width:100%;border-collapse:collapse}
.score-edit-table th,.score-edit-table td{padding:3px 6px;border:1px solid rgba(44,74,126,.4);text-align:center;font-size:11px}
.score-edit-table th{background:rgba(46,117,182,.22);color:#dce9ff;font-weight:600}
.score-edit-table td:first-child{text-align:left;color:var(--dim);white-space:nowrap}
.score-edit-table .se-in{width:40px;height:20px;text-align:center;background:#101f3f;border:1px solid var(--line);border-radius:4px;color:var(--txt);font-size:12px;font-weight:700;padding:1px;outline:none}
.score-edit-table .se-in:focus{border-color:var(--cyan)}
.score-edit-table .se-cell{min-width:66px;padding:3px 4px}
.score-edit-table .se-note-in{width:100%;height:18px;margin-top:3px;background:#0d1a38;border:1px solid rgba(44,74,126,.5);border-radius:3px;color:#a9c3e8;font-size:9px;padding:1px 3px;outline:none}
.score-edit-table .se-note-in:focus{border-color:var(--cyan)}
.score-edit-table .se-note-in::placeholder{color:#54709c}
.se-note{width:100%;height:40px;background:#101f3f;border:1px solid var(--line);border-radius:5px;color:var(--txt);font-size:12px;padding:4px 6px;outline:none;resize:vertical}
.se-note:focus{border-color:var(--cyan)}
.score-edit-total{text-align:right;font-weight:700;color:var(--txt);margin-top:8px;font-size:13px}

/* ================= 5S排名 看板：线体+工站双榜 / 月周切换 / 自动奖项 ================= */
.rankbar{flex:0 0 auto;display:flex;align-items:center;gap:10px;font-size:11px;color:var(--dim);padding:0 4px 8px;flex-wrap:wrap}
.rank-ttl{font-size:20px;font-weight:800;letter-spacing:1px;color:#fff;margin-right:6px}
.rank-months{display:flex;gap:2px;overflow-x:auto;max-width:340px}
.rank-months::-webkit-scrollbar{height:4px}
.rank-months::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.rank-wks{display:flex;gap:4px}
.rankwk{flex:0 0 auto;min-width:38px;text-align:center;padding:2px 8px;border-radius:5px;background:#13244c;border:1px solid var(--line);color:#bcd8f5;font-size:11px;cursor:pointer;transition:all .15s;user-select:none}
.rankwk:hover{border-color:var(--cyan)}
.rankwk.on{background:var(--cyan);color:#06122b;font-weight:700;border-color:var(--cyan)}
.rankwk.no{opacity:.35;cursor:default}
.rank-clock{flex:0 0 auto;margin-left:auto;font-size:11px;color:var(--dim);text-align:right;line-height:1.5}
.rank-clock b{display:block;font-size:15px;color:var(--txt)}
.rank-kpis{flex:0 0 auto;display:flex;gap:8px;margin-bottom:8px}
.rank-kpi{flex:1;min-width:0;display:flex;align-items:center;gap:10px;background:linear-gradient(160deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:10px;padding:8px 12px}
.rank-kpi.rank-gauge-card{flex:0 0 132px;flex-direction:column;align-items:stretch;gap:0;padding:6px 10px}
.rank-kpi .rk-gauge-n{font-weight:700;color:var(--txt)}
.rank-gauge{flex:1;min-height:0}
.rank-kpi .rk-ic{font-size:24px;opacity:.9}
.rank-kpi .rk-body{flex:1;min-width:0;line-height:1.35}
.rank-kpi .rk-t{font-size:10px;color:var(--dim);letter-spacing:1px}
.rank-kpi .rk-v{font-size:20px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-kpi .rk-s{font-size:9px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-main{flex:1;min-height:0;display:flex;gap:8px}
.rank-left{flex:0 0 34%;min-width:0;display:flex;flex-direction:column;gap:8px}
.rank-panel{flex:1;min-height:0;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:10px;padding:8px 10px}
.rank-panel .pttl{margin-bottom:6px}
.rank-line-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:5px;padding-right:2px}
.rank-line-list::-webkit-scrollbar{width:5px}
.rank-line-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.rank-line{display:flex;align-items:center;gap:8px;background:#0d1a36;border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:12px;flex:0 0 auto}
.rl-medal{flex:0 0 18px;text-align:center;font-size:13px}
.rl-name{flex:0 0 52px;font-weight:700;color:#e9effc;white-space:nowrap}
.rl-bar{flex:1;min-width:0;height:8px;background:rgba(44,74,126,.3);border-radius:4px;overflow:hidden}
.rl-fill{display:block;height:100%;border-radius:4px}
.rl-sc{flex:0 0 30px;text-align:right;font-weight:800;font-size:13px}
.rl-delta{flex:0 0 24px;text-align:center;font-size:11px;font-weight:700;color:var(--dim);white-space:nowrap}
.rl-pass{flex:0 0 auto;font-size:9px;color:var(--dim);white-space:nowrap}
.rank-awards{flex:0 0 auto;display:flex;flex-direction:column;gap:5px;overflow-y:auto;padding-right:2px}
.rank-awards::-webkit-scrollbar{width:5px}
.rank-awards::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.rank-award{display:flex;align-items:center;gap:8px;background:#0d1a36;border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:11px;flex:0 0 auto}
.ra-ic{font-size:16px}
.ra-t{flex:0 0 52px;color:var(--dim);font-weight:700;white-space:nowrap}
.ra-name{flex:0 0 auto;font-weight:800;font-size:13px;white-space:nowrap}
.ra-line{flex:0 0 auto;color:var(--dim);font-size:10px;background:#13244c;border:1px solid var(--line);border-radius:4px;padding:1px 5px;white-space:nowrap}
.ra-s{margin-left:auto;font-size:9px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rank-right{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.rank-chart-panel{flex:1;min-height:0}
.rank-chart-panel .chart-box{width:100%;height:100%;flex:1;min-height:0}
.rank-weak{flex:1;min-height:0}
.weak-cols{flex:1;min-height:0;display:flex;gap:10px}
.weak-chart{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0}
.weak-chart .pttl{margin-bottom:6px}
.weak-chart .chart-box{width:100%;height:100%;flex:1;min-height:0}

/* ================= 葡萄图：员工每日绩效 ================= */
.grapebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 2px 8px}
.grape-bar-left{display:flex;align-items:center;gap:8px}
.grape-month{font-size:15px;font-weight:800;color:var(--txt);min-width:76px;text-align:center}
.grape-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:10px;color:var(--dim)}
.grape-legend .gl{display:flex;align-items:center;gap:4px}
.grape-legend .gdot{width:12px;height:12px}
.grape-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px}
.apple-panel{position:relative;overflow:hidden;background:linear-gradient(#d6ecff 0%,#eff9ef 158px,#8ac75a 190px,#64ad3f 100%);border:1px solid rgba(255,255,255,.35);border-radius:14px;padding:30px 12px 16px;flex:0 0 auto}
.apple-panel::before{content:"";position:absolute;top:10px;right:22px;width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff6c8,#ffd34d 58%,#ffb020);box-shadow:0 0 16px rgba(255,206,90,.85);z-index:1}
.apple-panel::after{content:"";position:absolute;top:14px;left:96px;width:44px;height:15px;border-radius:10px;background:rgba(255,255,255,.88);box-shadow:12px -5px 0 -1px rgba(255,255,255,.88),26px 2px 0 -5px rgba(255,255,255,.7);z-index:1}
.apple-panel .pttl{color:#1c3a12}
.apple-panel .pttl::before{background:#3f9e2e}
.apple-panel .pttl .hint{color:#557a38}
.apple-panel .pttl-adm{background:#2f7d3a;color:#fff;font-size:11px;font-weight:700;padding:2px 10px;border-radius:10px;white-space:nowrap;line-height:1.5;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.apple-panel .pttl-adm.none{background:rgba(255,255,255,.5);color:#557a38;font-weight:400;box-shadow:none}
.pttl-adm.shift{background:#3a7bbf}
.apple-trees{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:10px 14px;width:100%;padding:6px 2px 10px;position:relative;z-index:2}
.apple-tree{background:transparent;border:none;border-radius:12px;padding:6px 4px 4px;text-align:center;width:150px;flex:0 0 auto;position:relative}
.apple-tree:nth-child(odd){transform:translateY(14px)}
.apple-tree:nth-child(4n){transform:translateY(7px)}
.apple-tree:nth-child(3n){transform:translateY(-4px)}
.a-avg{position:absolute;top:6px;right:6px;background:rgba(255,255,255,.82);color:#2c6b1d;font-size:10px;font-weight:800;padding:1px 6px;border-radius:8px;border:1px solid rgba(44,107,29,.25);z-index:3;line-height:1.5;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.a-avg.dim{color:#7b9a5e}
.apple-tree svg{width:150px;height:200px;display:block;margin:0 auto;cursor:pointer}
.a-shift{display:inline-block;font-size:10px;font-weight:700;color:#fff;background:#3a7bbf;border-radius:7px;padding:0 7px;line-height:1.6;margin-top:2px}
.a-shift.night{background:#7a5bb0}
.a-name{margin-top:4px;line-height:1.35}
.a-name b{display:block;font-size:13px;color:#274a18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a-name .a-post{font-size:10px;color:#547a37;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a-sum{font-size:10px;line-height:1.4;margin-top:3px;color:#3d5c2a}
.a-sum .dim{color:#6b8a4d}
.a-sum .gc-t{font-weight:800;font-size:10px}
.a-sum .gc-t.g1{color:#1e7a2f}
.a-sum .gc-t.g2{color:#2b9e45}
.a-sum .gc-t.y{color:#a06f00}
.a-sum .gc-t.r{color:#c0392b}
.a-sum .gc-t.r2{color:#8a1a1a}
.gdot{width:18px;height:18px;border-radius:50%;flex:0 0 auto;cursor:pointer;border:1px solid rgba(255,255,255,.18);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);transition:transform .1s}
.gdot:hover{transform:scale(1.25)}
.gc-g1{background:#007a3d}
.gc-g2{background:#2fb65a}
.gc-y{background:#ffc93c}
.gc-r{background:#f0544a}
.gc-r2{background:#a01818}
.gc-none{background:#4a5a7a}
.gc-t.g1{color:#5fdc97}
.gc-t.g2{color:#7ce7a2}
.gc-t.y{color:#ffd166}
.gc-t.r{color:#f0706a}
.gc-t.r2{color:#ff6a6a}
.gview{text-align:left;min-width:280px}
.gview-grade{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:10px;font-weight:600;color:var(--txt)}
.gv-lv{display:inline-block;padding:3px 12px;border-radius:12px;color:#fff;font-size:13px;font-weight:800}
.gv-lv.lv3,.gv-lv.g1{background:#007a3d}
.gv-lv.lv2{background:#ed7d31}
.gv-lv.g2{background:#2fb65a}
.gv-lv.y{background:#c99700}
.gv-lv.r{background:#f0544a}
.gv-lv.lvx,.gv-lv.r2{background:#a01818}
.gview-grade b{font-size:20px}
.gview-dims{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 10px;margin-bottom:10px}
.gv-dim{background:rgba(255,255,255,.06);border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:13px;display:flex;align-items:center;gap:6px;color:var(--txt)}
.gv-dim b{font-size:15px}
.gv-dim.bad{color:#ff6b5e;border-color:rgba(255,107,94,.45)}
.gv-dim.bad b{color:#ff6b5e}
.gv-dim i{font-style:normal;color:#ff6b5e}
.gview-cut{font-size:13px;color:var(--dim);margin-bottom:6px}
.gview-note{font-size:13px;color:var(--cyan);background:rgba(0,176,240,.08);border-radius:6px;padding:6px 8px}
.gview-empty{font-size:13px;line-height:1.8;color:var(--dim);padding:10px 0;text-align:center}

/* ================= 线体一键考核：按周打分制 ================= */
.assessbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:0 2px 8px}
.assess-hint{font-size:10px;color:var(--dim);margin-left:auto}
.assess-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-right:2px}
.assess-table-wrap{overflow-x:auto}
.assess-table{width:100%;border-collapse:collapse;font-size:12px;background:linear-gradient(160deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:10px;overflow:hidden;min-width:800px}
.assess-table th,.assess-table td{padding:5px 8px;text-align:center;border-bottom:1px solid rgba(255,255,255,.05);white-space:nowrap}
.assess-table thead th{background:#122c47;color:var(--dim);font-size:11px;font-weight:600;position:-webkit-sticky;position:sticky;top:0;z-index:1}
.assess-table tbody tr:hover{background:rgba(255,255,255,.03)}
.assess-table .c-st{text-align:left;font-weight:700;color:var(--txt)}
.assess-table .c-name{text-align:left;color:var(--dim)}
.as-shift{display:inline-block;font-size:10px;font-weight:700;color:var(--cyan);background:rgba(58,123,191,.16);border:1px solid rgba(58,123,191,.42);border-radius:6px;padding:0 5px;margin-right:5px;line-height:1.6;vertical-align:middle}
.as-shift.night{color:#b79ce0;background:rgba(122,91,176,.16);border-color:rgba(122,91,176,.45)}
.assess-table .c-total{font-weight:800;color:var(--cyan);font-size:13px}
.assess-table .asscore{width:50px;background:#0d1a36;color:#e9effc;border:1px solid var(--line);border-radius:6px;padding:3px 4px;font-size:13px;text-align:center;outline:none}
.assess-table .asscore:disabled,.assess-table .anote:disabled{opacity:.45;cursor:not-allowed}
.assess-table .anote{background:#0d1a36;color:#e9effc;border:1px solid var(--line);border-radius:6px;padding:3px 8px;font-size:12px;outline:none;width:210px}
.as-lv{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:800}
.as-lv.lv3{background:#123524;color:#5fdc97}
.as-lv.lv2{background:#3a2a10;color:#ffb547}
.as-lv.lvx{background:#2a080a;color:#ff6a6a;border:1px solid #7a1f22}
.assess-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:4px 2px}
.assess-rule{font-size:10px;color:var(--dim)}

@media (max-width: 900px) {
  .stbottom { flex-direction: column; }
  .stleft { flex: none; }
  .stright { flex: none; }
}

/* 底部 tabBar：只在手机端出现（照小程序骨架），桌面端隐藏 */
.tabbar{display:none}

/* ================= 手机端适配（≤768px：照小程序骨架 —— 顶部标题栏 + 底部 tabBar） =================
   横屏时手机的宽度会超过 768px，只按宽度判断会整个掉回桌面版（左侧导航整排冒出来、
   底部 tabBar 也没了）。所以补一条「横屏 + 矮屏 + 没有 hover（=触摸设备）」的条件，
   让手机横竖屏都走同一套骨架。加 hover 是为了不误伤被拉矮的桌面浏览器窗口。 */
@media (max-width: 768px), (orientation: landscape) and (max-height: 560px) and (hover: none) {
  /* 整体框架照小程序：顶部深蓝标题栏（品牌 + 页面入口 + 退出登录），内容纵向滚动 */
  body { flex-direction: column; }
  .sidebar {
    position: fixed; top: 0; left: 0; right: 0; z-index: 60;
    flex: none; width: auto; height: 46px; flex-direction: row; align-items: center;
    padding: 0 10px; gap: 8px; border-right: none; border-bottom: 1px solid #16233f;
    background: #1f2b45;
  }
  .brand { flex: 0 0 auto; font-size: 14px; padding: 0; border-bottom: none; letter-spacing: .5px; }
  .brand i { width: 9px; height: 9px; }
  .menu { flex: 1; flex-direction: row; justify-content: flex-end; overflow: visible; gap: 4px;
    margin-top: 0; padding-bottom: 0; }
  /* 手机端页面入口收进顶栏的 .tabbar（只有一个「异常分析」），这里把侧栏那些菜单项全藏掉；
     管理登录手机端也不显示（手机端不做方案配置/月度数据上传那类活） */
  .menu .grp, .menu .group, .menu .grp-items { display: none; }
  .menu .item { flex: 0 0 auto; padding: 5px 8px; font-size: 11px; gap: 4px; border-radius: 6px; }
  .menu .item .ic { font-size: 13px; }
  .menu .item[data-view] { display: none; }
  .menu .item.auth { display: none; }
  /* 退出登录：顶栏只留一个图标按钮（文字收掉，桌面端照旧带文字） */
  .menu #logoutItem { background: #2f6fed; color: #fff; padding: 0; gap: 0;
    width: 32px; height: 32px; justify-content: center; border-radius: 8px; }
  .menu #logoutItem .lg-txt { display: none; }
  .menu #logoutItem .ic { font-size: 16px; }
  .menu #logoutItem:hover { background: #2658b5; color: #fff; }
  .sideinfo { display: none; }
  .nav-toggle { display: none; }
  /* 手机端没有侧栏可折，折叠态等同普通态 */
  .sidebar.collapsed { position: fixed; width: auto; height: 46px; padding: 0 10px; }
  .sidebar.collapsed .brand { justify-content: flex-start; gap: 8px; padding: 0; }
  .sidebar.collapsed .brand i { display: block; }
  .sidebar.collapsed .brand-txt { display: inline; }
  .sidebar.collapsed .menu .group { display: none; }
  .sidebar.collapsed .menu .item { justify-content: flex-start; padding: 5px 8px; gap: 4px; font-size: 11px; }
  .sidebar.collapsed .menu .item .ic { font-size: 13px; }
  .sidebar.collapsed .menu .item.auth .dot { display: block; }
  .sidebar.collapsed .menu .item.auth .auth-c { display: none; }

  /* 导航入口放进顶部标题栏里（跟品牌、退出登录同一行）——手机屏小，
     顶部一条 + 底部一条两头占地方，就把入口收到顶栏里 */
  .tabbar { position: static; flex: 0 0 auto; display: flex; background: transparent;
    border: none; padding: 0; }
  .tabbar .tab { flex: 0 0 auto; height: 30px; display: flex; flex-direction: row;
    align-items: center; justify-content: center; gap: 4px; padding: 0 9px;
    border-radius: 8px; color: #cdd9ee; background: rgba(255,255,255,.08);
    font-size: 11px; cursor: pointer; user-select: none; }
  .tabbar .tab .ic { font-size: 13px; line-height: 1; }
  .tabbar .tab.on { color: #fff; background: #2f6fed; font-weight: 700; }

  /* 整站就这一页：让看板把屏幕占满，别再套一层页面滚动。
     「上传月度数据」是电脑上干的活，手机端收掉 */
  #view-eff { flex: 1 1 auto; }
  .eff-databar { display: none; }
  .eff-frame { flex: 1 1 auto; height: auto; min-height: 0; }
  .content { flex: 1; height: auto; padding: 52px 6px 6px; overflow-y: auto; overflow-x: hidden; }
  .view { flex: none; }
  .head { padding: 0 2px 8px; }
  .ttl { font-size: 17px; }
  .clock { display: none; }
  .panel { flex: none; }

  /* 首页：平面图限高可看 */
  .shopwrap { flex: none; height: 55vh; }
  .shopempty .se-ic { font-size: 40px; }
  .shopempty .se-t { font-size: 15px; }

  /* 线体5S：纵向堆叠，工站图限高 */
  .ldwrap { height: 110px; }
  .stphoto { flex: none; height: 38vh; }
  .stright .stdbar { flex: none; height: auto; min-height: 0; }
  .stright .std-cols { flex: none; flex-direction: column; }
  .stright .std-chart { flex: none; }
  .stright .std-chart .chart-box { flex: none; height: 32vh; }
  .stright .rpanel:last-child { flex: none; max-height: 320px; }
  .stright .rpanel:last-child .rbody { flex: none; height: 220px; overflow: auto; }

  /* 点检评分（重点）：填分表横滚 + 历史可看 */
  .insbar { flex-wrap: wrap; }
  .inspect-bottom { flex: none; flex-direction: column; }
  .inspect-left { flex: none; height: 50vh; }
  .itbl { min-width: 600px; }
  .itbl .it-in, .itbl .itnote { font-size: 14px; }
  .itbl .it-dec { width: 26px; height: 26px; font-size: 15px; }
  #itSubmit { padding: 8px 22px; font-size: 14px; }
  .inspect-right { flex: none; }
  .ins-cards { flex: none; }
  .ins-card { flex: none; min-height: 0; }
  .ins-cards .ins-chart { flex: none; height: 220px; }
  .ins-card-table .inspect-hist { flex: none; max-height: 220px; overflow: auto; }
  .inspect-hist table { min-width: 520px; }

  /* 5S排名：纵向堆叠，图表/榜单限高 */
  .rank-main { flex: none; flex-direction: column; }
  .rank-left { flex: none; }
  .rank-right { flex: none; }
  .rank-kpis { flex-wrap: wrap; }
  .rank-line-list { height: 32vh; }
  .rank-awards { max-height: 130px; }
  .rank-chart-panel { flex: none; height: 38vh; }
  .rank-weak { flex: none; height: 60vh; }
  .weak-cols { flex: none; flex-direction: column; }
  .weak-chart { flex: none; }
  .weak-chart .chart-box { flex: none; height: 26vh; }

  /* 数据维护：表格横向滚动 */
  .mtbl { min-width: 720px; }
  .m-scroll { height: 52vh; overflow-x: auto; overflow-y: auto; }
  .maint-foot { flex-wrap: wrap; gap: 8px; }

  /* 苹果林：树缩小，多棵横向滚动 */
  .apple-panel { padding: 26px 8px 12px; background: linear-gradient(#d6ecff 0%, #eff9ef 154px, #8ac75a 186px, #64ad3f 100%); }
  .apple-panel .pttl-adm { font-size: 10px; padding: 1px 8px; }
  .apple-tree { width: 118px; }
  .apple-tree:nth-child(odd) { transform: translateY(10px); }
  .apple-tree:nth-child(3n) { transform: translateY(0); }
  .a-avg { font-size: 9px; top: 4px; right: 4px; padding: 0 5px; }
  .apple-tree svg { width: 118px; height: 158px; }
  .apple-trees { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; padding-bottom: 8px; }
  .gdot { width: 13px; height: 13px; }
  .gview { min-width: 0; width: 100%; }
  .gview-dims { grid-template-columns: repeat(2, 1fr); }

  /* 线体考核：表格横向滚动，提示换行 */
  .assess-hint { margin-left: 0; width: 100%; }
  .assess-table .anote { width: 150px; }
  .assess-foot { gap: 8px; }

  /* 弹窗：限宽不溢出，修正表横滚 */
  .mmodal-box { max-width: 96vw; }
  #scoreEditBody { overflow: auto; }
  .score-edit-table { min-width: 560px; }
  .mmodal-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ================= 数据维护：Excel 导入岗位人员 ================= */
.imp-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 4px 6px}
.imp-hint{flex:1;min-width:220px;color:#54709c;font-size:11px}
#maintImpSum{color:#cfe0ff;line-height:1.6}
#maintImpList{max-height:36vh;overflow:auto;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:12px;line-height:1.8}
.mi-ok{color:#7ce7a2}
.mi-err{color:#ff8f86}
.mi-warn{color:#ffd166}
.mi-ttl{font-weight:800;color:#cfe0ff;margin:8px 0 2px;font-size:12px}
.mi-b{display:inline-block;min-width:30px;font-size:10px;font-weight:800;text-align:center;border-radius:6px;padding:0 4px;margin-right:4px}
.mi-ov .mi-b{background:rgba(240,164,0,.16);color:#ffc93c;border:1px solid rgba(255,201,60,.4)}
.mi-new .mi-b{background:rgba(47,182,90,.14);color:#7ce7a2;border:1px solid rgba(47,182,90,.4)}
.mi-ov{color:#ffd166}
.mi-new{color:#9fe8b4}
.mi-same{color:#54709c;margin-top:4px}
@media (max-width:768px){
  .imp-bar{gap:6px}
  .imp-hint{min-width:0}
}

/* ===== 线体生产状态：首页平面图盖色（停线红 / 异常黄 / 无排程灰，盖过 5S 分色；形状在 g.ann-g 内） ===== */
.ann-g .st-stop{fill:rgba(229,57,53,.30);stroke:#ff5a4e;animation:stStopFlash 1.15s ease-in-out infinite}
.ann-g .st-abn{fill:rgba(247,181,0,.26);stroke:#f0b429;animation:stAbnFlash 1.6s ease-in-out infinite}
.ann-g .st-idle{fill:rgba(150,158,172,.5);stroke:#aab2c0}
@keyframes stStopFlash{0%,100%{fill:rgba(229,57,53,.72)}50%{fill:rgba(229,57,53,.14)}}
@keyframes stAbnFlash{0%,100%{fill:rgba(247,181,0,.58)}50%{fill:rgba(247,181,0,.10)}}
.stleg{display:inline-flex;align-items:center;gap:5px;color:var(--dim)}
.stleg .lg{width:9px;height:9px;border-radius:2px;display:inline-block}
.lg-stop{background:#e5533c}.lg-abn{background:#f0b429}.lg-idle{background:#9aa3b0}.lg-ok{background:rgba(47,111,237,.5)}

/* ===== 线体状态 独立页：全厂一览手风琴（正常/无排程/异常/停线 · 开单·编辑·恢复归档） ===== */
.status-wrap{overflow:auto;padding:4px 12px 12px}
.strow{border:1px solid var(--line);border-radius:8px;margin-top:8px;background:rgba(13,26,54,.35);overflow:hidden}
.sthead{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;user-select:none}
.sthead:hover{background:rgba(47,111,237,.06)}
.stname{font-weight:700;color:#fff;min-width:110px;font-size:14px}
.stchip{font-size:11px;font-weight:800;padding:2px 8px;border-radius:10px;min-width:64px;text-align:center;flex:none}
.stchip.c-ok{background:rgba(0,176,80,.14);color:#4ade80;border:1px solid rgba(0,176,80,.45)}
.stchip.c-stop{background:rgba(229,57,53,.18);color:#ff6a5f;border:1px solid rgba(255,106,95,.55);animation:chipStop 1.15s ease-in-out infinite}
.stchip.c-abn{background:rgba(240,180,41,.16);color:#f6c45a;border:1px solid rgba(240,180,41,.5);animation:chipAbn 1.6s ease-in-out infinite}
.stchip.c-idle{background:rgba(150,158,172,.16);color:#aab2c0;border:1px solid #6b7686}
@keyframes chipStop{0%,100%{box-shadow:0 0 6px rgba(255,106,95,.55)}50%{box-shadow:0 0 0 rgba(255,106,95,0)}}
@keyframes chipAbn{0%,100%{box-shadow:0 0 6px rgba(246,196,90,.4)}50%{box-shadow:0 0 0 rgba(246,196,90,0)}}
.chev{display:inline-block;font-size:10px;color:#54709c;transition:transform .18s;line-height:1;flex:none}
.strow.open .chev{transform:rotate(90deg)}
.stmeta{flex:1;min-width:140px;color:#54709c;font-size:12px;line-height:1.5;text-align:right}
.stbody{display:none;padding:2px 14px 14px;border-top:1px dashed rgba(120,150,190,.18)}
.strow.open .stbody{display:block}
.stnote{color:#7c93b8;font-size:12px;margin-top:12px}
.stnote.hot{color:#f6c45a}
.stactionrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px}
.stactionrow .stsep{color:#54709c;font-size:12px}
.stfld{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px}
.stf{display:flex;flex-direction:column;gap:4px;min-width:150px;flex:1}
.stf label{font-size:11px;color:#54709c;font-weight:600}
.stf .insel,.stf .mt-in{width:100%}
.stf .mt-in.ststart,.stf .mt-in.stend{color-scheme:dark}
.stclosepanel{margin-top:12px;border:1px dashed rgba(240,180,41,.4);border-radius:8px;padding:10px 12px;background:rgba(240,180,41,.06)}
.stclosepanel .stnote{margin-top:0;margin-bottom:8px}
.stendbar{display:flex;gap:8px;align-items:center;margin-top:2px}
.stendbar .mt-in{flex:1;min-width:0}
.stendbar .btn{flex:none}
.stbtns{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;flex-wrap:wrap}
@media(max-width:768px){
  .sthead{flex-wrap:wrap}
  .stname{min-width:0}
  .stmeta{min-width:0;width:100%;text-align:left}
  .stfld{flex-direction:column;gap:10px}
  .stf{min-width:0}
  .stbtns{justify-content:flex-start}
}

/* ================= 人力出勤模块（出勤维护 / 人力总览） ================= */
body.ro .need-write{display:none!important}
.att-panel{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:10px 12px}
.attident{display:flex;align-items:center;gap:6px;margin-left:auto;font-size:11px;color:var(--dim);white-space:nowrap}
.attident b{color:#e9effc;font-size:12px}
.attident .ai-sub{color:var(--cyan);font-style:normal;font-size:11px}
.attident .ai-tag{padding:1px 6px;border-radius:4px;background:#1f4e79;color:#cfe6ff;font-size:10px;font-weight:700}
.attident.adm .ai-tag{background:#7a4a12;color:#ffdda8}
.attident .ai-none{color:#7b91b3}
.att-kpis{flex:0 0 auto;display:flex;gap:8px;flex-wrap:wrap}
.att-kpi{flex:0 0 auto;min-width:104px;border:1px solid var(--line);border-radius:8px;background:#0d1a36;
  padding:6px 12px;display:flex;flex-direction:column;gap:1px;align-items:center}
.att-kpi b{font-size:22px;line-height:1.1;color:#e9effc;font-variant-numeric:tabular-nums}
.att-kpi span{font-size:10px;color:var(--dim);white-space:nowrap}
.att-kpi.bad b{color:#ff7a6b}
.att-kpi.good b{color:#3ddc84}
.att-kpi.wide{flex:1 1 260px;min-width:200px;align-items:flex-start;justify-content:center}
.att-kpi.wide b{font-size:12px;font-weight:400;color:#bcd8f5;line-height:1.5;text-align:left}
.att-kpi.wide .att-dx{white-space:normal}
.att-incoming{flex:0 0 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  border:1px dashed rgba(0,213,255,.45);border-radius:8px;background:rgba(0,176,240,.08);padding:6px 10px}
.att-incoming .ai-ttl{font-size:11px;color:#8fd4ff;font-weight:700}
.att-incoming .ai-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:12px;
  background:#122c47;border:1px solid var(--line);font-size:12px;color:#e9effc}
.att-incoming .ai-chip i{font-style:normal;font-size:10px;color:var(--dim)}
.att-scroll{flex:1;min-height:0}
.mtbl-att th:nth-child(1){width:4%}
.mtbl-att th:nth-child(2){width:11%}
.mtbl-att th:nth-child(3){width:10%}
.mtbl-att th:nth-child(4){width:8%}
.mtbl-att th:nth-child(5){width:10%}
.mtbl-att th:nth-child(6){width:10%}
.mtbl-att th:nth-child(7){width:13%}
.mtbl-att th:nth-child(8){width:24%}
.mtbl-att th:nth-child(9){width:10%}
.mtbl-att td.at-no{color:var(--dim)}
.mtbl-att td.at-name{color:#e9effc;font-weight:600}
.mtbl-att td.at-emp{color:#8fb0d8;font-variant-numeric:tabular-nums}
.mtbl-att td.at-kind{color:var(--dim);font-size:11px}
.mtbl-att tr[data-from] td.at-name{color:#8fd4ff}
.mtbl-att .at-from{font-style:normal;font-size:10px;color:var(--dim);font-weight:400}
.mtbl-att td.hide,.at-to.hide{visibility:hidden}
.mtbl-att .at-name-in,.mtbl-att .at-emp-in{width:94%}
.at-bf{font-style:normal;color:#ffc000}
.att-empty{padding:22px 16px;color:var(--dim);font-size:13px;line-height:1.9;text-align:center}
.att-dx{font-variant-numeric:tabular-nums}
.ov-body{flex:1;min-height:0;display:flex;gap:10px}
.ov-body .rpanel{flex:1 1 0;min-width:0}
.ov-table{flex:1;min-height:0}
.mtbl-ov th:nth-child(1){width:16%}
.mtbl-ov td.ov-line{color:#e9effc;font-weight:600}
.mtbl-ov td.bad{color:#ff7a6b}
.mtbl-ov td.good{color:#3ddc84}

/* ===== 岗位管理：左线体 + 右岗位清单（顺序即编号）+ 底部批量录入 ===== */
.ar-body{flex:1;min-height:0;display:flex;gap:10px}
.ar-body .ar-left{flex:0 0 176px;min-height:0}
.ar-body .ar-right{flex:1 1 0;min-width:0}
.ar-lines{flex:1;min-height:0;padding:3px}
.ar-line{display:flex;align-items:center;gap:8px;padding:5px 9px;border-radius:6px;cursor:pointer;
  font-size:12px;color:#bcd8f5;border:1px solid transparent}
.ar-line:hover{background:#12294a}
.ar-line.active{background:#12294a;border-color:var(--cyan);color:#e9effc;font-weight:600}
.ar-line .al-nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ar-line .al-n{font-variant-numeric:tabular-nums;color:var(--dim);font-size:11px}
.ar-line.active .al-n{color:var(--cyan)}
.ar-line .al-arw{flex:0 0 9px;font-size:9px;color:var(--dim);line-height:1}
.ar-head{flex:0 0 auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ar-head .ar-ttl{font-size:13px;font-weight:700;color:#e9effc}
.ar-head .ar-cnt{font-size:11px;color:var(--cyan);font-variant-numeric:tabular-nums}
.ar-find{margin-left:auto;display:flex;align-items:center;position:relative}
.ar-q{width:190px;box-sizing:border-box;background:#0d1a36;border:1px solid var(--line);border-radius:7px;
  color:#e9effc;font-family:inherit;font-size:12px;padding:5px 22px 5px 8px;outline:none}
.ar-q:focus{border-color:var(--cyan)}
.ar-q::placeholder{color:var(--dim)}
.ar-qx{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:18px;height:18px;line-height:1;
  border:0;border-radius:50%;background:transparent;color:var(--dim);font-size:11px;cursor:pointer;padding:0}
.ar-qx:hover{color:#e9effc;background:#1c2b52}
.ap-stns{padding:2px 2px 6px}
.ap-stn{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px}
.ap-stn:hover{background:#12294a}
.ap-stn+.ap-stn{border-top:1px solid var(--line);border-radius:0}
.ap-no{flex:0 0 24px;font-size:10px;color:var(--dim);font-variant-numeric:tabular-nums}
.ap-nm{flex:1;min-width:0;font-size:12px;color:#e9effc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ap-op{flex:0 0 auto;display:flex;gap:4px}
.ap-op .btn{padding:0;width:22px;height:22px;line-height:1;font-size:11px}
.ap-add{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding-top:8px;margin-top:6px;border-top:1px solid var(--line)}
.ap-in{flex:1;min-width:0;box-sizing:border-box;min-height:34px;max-height:96px;resize:vertical;padding:5px 8px;font-family:inherit;font-size:12px;
  color:#e9effc;background:#0d1a36;border:1px solid var(--line);border-radius:7px}
.ap-in:focus{outline:none;border-color:var(--cyan)}
.ap-add .btn{flex:0 0 auto}
.ap-dirty{font-size:11px;color:#ffc000}

@media(max-width:768px){
  .ar-body{flex-direction:column}
  .ar-body .ar-left{flex:none}
  .ar-lines{flex:none;max-height:30vh}
  .ar-body .ar-right{flex:none}
  .ap-stns{flex:none;height:46vh}
  .attident{margin-left:0;width:100%;flex-wrap:wrap}
  .att-kpi{min-width:84px;padding:5px 9px}
  .att-kpi b{font-size:18px}
  .att-kpi.wide{flex:1 1 100%}
  .att-panel{flex:none}
  .att-scroll{flex:none;height:56vh}
  .ov-body{flex-direction:column}
  .ov-body .rpanel{flex:none}
  .ov-body .rpanel:first-child .chart-box{flex:none;height:32vh}
  .ov-table{flex:none;height:46vh}
  .mtbl-att{min-width:760px}
  .mtbl-ov{min-width:620px}
  /* 窄屏放不下 14 张卡，退回换行 */
  #ibKpis{flex-wrap:wrap}
  #ibKpis .ib-kpi-grp{flex:1 1 100%;flex-wrap:wrap}
  #ibKpis .att-kpi{flex:1 1 auto}
}

/* ===== 物品点检（逐项确认产线物品是否还在工位）===== */
/* 两个班别组挤在同一横排：14 张卡等分整行，不做换行 */
#ibKpis{flex-wrap:nowrap;gap:6px}
#ibKpis .ib-kpi-grp{flex:1 1 0;min-width:0;display:flex;align-items:center;gap:6px;flex-wrap:nowrap}
#ibKpis .ib-kpi-grp + .ib-kpi-grp{margin-left:4px;padding-left:10px;border-left:1px dashed rgba(0,213,255,.25)}
#ibKpis .att-kpi{flex:1 1 0;min-width:0;padding:6px 8px}
#ibKpis .att-kpi b{font-size:20px}
.ib-grp-ttl{flex:0 0 auto;font-size:11px;font-weight:700;color:#8fd4ff;padding:3px 9px;border-radius:12px;
  background:#122c47;border:1px solid var(--line)}
.it-by{width:96px}
.it-body{flex:1;min-height:0;display:flex;gap:10px}
.it-left{flex:1 1 0;min-width:0;display:flex;flex-direction:column}
.it-right{flex:0 0 340px;min-width:280px;display:flex;flex-direction:column}
.it-cards{flex:1;min-height:0;overflow-y:auto;display:grid;gap:8px;
  grid-template-columns:repeat(auto-fill,minmax(262px,1fr));align-content:start;padding-right:2px}
.it-cards::-webkit-scrollbar,.it-hist::-webkit-scrollbar{width:5px}
.it-cards::-webkit-scrollbar-thumb,.it-hist::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.it-empty{padding:26px 16px;color:var(--dim);font-size:13px;line-height:1.9;text-align:center;grid-column:1/-1}

.it-card{border:1px solid var(--line);border-radius:8px;background:#0d1a36;padding:11px 13px;
  display:flex;flex-direction:column;gap:7px}
.it-card.ok{border-color:rgba(0,176,80,.45);background:rgba(0,176,80,.06)}
.it-card.miss{border-color:rgba(255,106,95,.6);background:rgba(229,57,53,.10)}
.it-card.bad{border-color:rgba(240,180,41,.55);background:rgba(240,180,41,.09)}
.it-card.wait{border-color:rgba(150,158,172,.35)}
.it-card.viol{border-color:rgba(176,107,255,.5);background:rgba(176,107,255,.08)}
.it-name{display:flex;align-items:center;gap:6px;font-size:13px;color:#e9effc;font-weight:600;min-width:0}
.it-name .it-qty{font-size:11px;color:var(--dim);font-weight:400;font-variant-numeric:tabular-nums}
.it-st{font-size:10px;font-weight:700;padding:1px 7px;border-radius:9px;margin-left:auto;flex:none}
.it-st.ok{background:rgba(0,176,80,.16);color:#4ade80;border:1px solid rgba(0,176,80,.45)}
.it-st.miss{background:rgba(229,57,53,.18);color:#ff8a7f;border:1px solid rgba(255,106,95,.55)}
.it-st.bad{background:rgba(240,180,41,.16);color:#f6c45a;border:1px solid rgba(240,180,41,.5)}
.it-st.wait{background:rgba(150,158,172,.14);color:#aab2c0;border:1px solid #6b7686}
.it-st.viol{background:rgba(176,107,255,.16);color:#c6a3ff;border:1px solid rgba(176,107,255,.5)}
.it-seg{display:flex;gap:4px}
.it-seg button{flex:1;background:#122c47;border:1px solid var(--line);color:var(--dim);border-radius:5px;
  font-size:12px;padding:5px 0;cursor:pointer;transition:all .15s}
.it-seg button:hover{color:var(--txt);border-color:var(--blue2)}
.it-seg button.on{font-weight:700;color:#fff}
.it-seg button.on.ok{background:linear-gradient(135deg,#1e7a3a,#2faf5a);border-color:#3ddc84}
.it-seg button.on.miss{background:linear-gradient(135deg,#c0392b,#e5533c);border-color:#ff8a8a}
.it-seg button.on.bad{background:linear-gradient(135deg,#a97a10,#e0a50f);border-color:#ffd166}
.it-seg button.on.wait{background:#2c3a55;border-color:#6b7686;color:#dfe6f2}
.it-seg button.on.viol{background:linear-gradient(135deg,#5b3aa6,#7c4dcc);border-color:#c6a3ff}
.it-note{width:100%;height:26px;font-size:11px}

.it-hist{flex:1;min-height:0}
.it-hbar{display:flex;align-items:center;gap:6px;padding:6px 9px;border-bottom:1px solid var(--line);
  position:-webkit-sticky;position:sticky;top:0;background:#0d1a36;z-index:1}
.it-hbar span{font-size:11px;color:var(--dim);flex:1;font-variant-numeric:tabular-nums}
.it-hbar .btn{padding:1px 7px}
.it-hrow{border-bottom:1px solid rgba(120,150,190,.14);padding:7px 9px;display:flex;flex-direction:column;gap:4px;cursor:pointer}
.it-hrow:hover{background:rgba(47,111,237,.08)}
.it-hhead{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--dim);min-width:0}
.it-hhead b{color:#e9effc;font-size:12px;font-variant-numeric:tabular-nums}
.it-hln{color:#8fb0d8}
.it-hhead i{font-style:normal;font-size:10px;color:var(--dim)}
.it-hby{margin-left:auto;color:#8fd4ff;white-space:nowrap}
.it-hw{color:#f6c45a}
.it-hdel{padding:0 6px!important;font-size:10px}
.it-hchips{display:flex;flex-wrap:wrap;gap:4px}
.it-chip{font-size:10px;padding:1px 6px;border-radius:9px;border:1px solid var(--line);background:#122c47;color:var(--dim)}
.it-chip.ok{background:rgba(0,176,80,.14);color:#4ade80;border-color:rgba(0,176,80,.45)}
.it-chip.miss{background:rgba(229,57,53,.16);color:#ff8a7f;border-color:rgba(255,106,95,.5)}
.it-chip.bad{background:rgba(240,180,41,.14);color:#f6c45a;border-color:rgba(240,180,41,.45)}
.it-chip.viol{background:rgba(176,107,255,.14);color:#c6a3ff;border-color:rgba(176,107,255,.45)}

.it-cfghint{font-size:11px;color:var(--dim);line-height:1.7;margin:2px 0 8px}
.it-cfgbody{max-height:52vh;overflow-y:auto;display:flex;flex-direction:column;gap:6px;
  border:1px solid var(--line);border-radius:8px;padding:8px;background:#0d1a36}
.it-cfgr{display:flex;align-items:center;gap:8px}
.it-cfgr .it-cfgname{flex:1;width:auto}
.it-cfgr .it-cfgqty{width:64px}
.it-cfgfoot{display:flex;justify-content:flex-start;padding-top:2px}
@media(max-width:768px){
  .it-body{flex-direction:column}
  .it-left{flex:none}
  .it-cards{flex:none;height:44vh;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
  .it-right{flex:none}
  .it-hist{flex:none;height:40vh}
  .it-by{width:80px}
}

/* ---------- 点检看板（📊 点检看板页） ---------- */
/* 当日各线状态：一行一条线，一格一个班别；格内上行写班别+项数+状态，下面把物品逐项摆成卡片，
   卡片颜色就是这一项的点检结果（齐全绿/缺件红/损坏黄/未点检灰），现场一眼看出该确认哪几样 */
.ib-row{display:flex;align-items:stretch;gap:6px;padding:6px 9px;border-bottom:1px solid rgba(120,150,190,.14)}
.ib-row b{flex:0 0 88px;align-self:center;font-size:12px;font-weight:700;color:#e9effc;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ib-cn{flex:none;font-style:normal;font-size:10px;color:#8fd4ff;border:1px solid rgba(90,150,220,.4);
  border-radius:4px;padding:0 4px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ib-cell{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:4px;font-size:11px;
  padding:4px 8px;border-radius:6px;border:1px solid var(--line);background:#122c47;color:var(--dim);
  cursor:pointer;transition:all .15s}
.ib-cell:hover{border-color:var(--blue2);color:var(--txt)}
.ib-celltop{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden}
.ib-cell i{font-style:normal;font-size:10px;color:#8fd4ff;margin-left:auto;flex:none}
.ib-cell.ok{background:rgba(0,176,80,.14);border-color:rgba(0,176,80,.45);color:#4ade80}
.ib-cell.bad{background:rgba(229,57,53,.16);border-color:rgba(255,106,95,.5);color:#ff8a7f}
.ib-cell.wait{background:rgba(240,180,41,.14);border-color:rgba(240,180,41,.45);color:#f6c45a}
.ib-cell.viol{background:rgba(176,107,255,.14);border-color:rgba(176,107,255,.5);color:#c6a3ff}
.ib-cell.no{background:#0f1c33;border-style:dashed;color:#7d8db0}
/* 点检进度趋势只占 1/4，其余 3/4 让给「当日各线状态」（物品卡片要多留地方） */
#view-itemboard .it-left .rpanel:first-child{flex:1 1 0}
#view-itemboard .it-left .rpanel:nth-child(2){flex:3 1 0}
/* 格内物品卡片 */
.ib-items{display:flex;flex-wrap:wrap;gap:3px}
.ib-item{font-size:10px;line-height:1.5;padding:0 5px;border-radius:4px;border:1px solid var(--line);
  background:#122c47;color:var(--dim);white-space:nowrap;font-variant-numeric:tabular-nums}
.ib-item.ok{background:rgba(0,176,80,.16);color:#4ade80;border-color:rgba(0,176,80,.45)}
.ib-item.miss{background:rgba(229,57,53,.18);color:#ff8a7f;border-color:rgba(255,106,95,.5)}
.ib-item.bad{background:rgba(240,180,41,.16);color:#f6c45a;border-color:rgba(240,180,41,.45)}
.ib-item.wait{background:#16233c;color:#8b9abb;border-color:rgba(150,158,172,.3)}
.ib-item.viol{background:rgba(176,107,255,.16);color:#c6a3ff;border-color:rgba(176,107,255,.45)}
/* 当日缺件/损坏明细 */
.ib-brow{padding:7px 9px;border-bottom:1px solid rgba(120,150,190,.14);display:flex;flex-direction:column;gap:4px}
.ib-brow.miss{border-left:3px solid rgba(255,106,95,.75)}
.ib-brow.bad{border-left:3px solid rgba(240,180,41,.75)}
.ib-btop{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--dim);min-width:0}
.ib-bln{color:#8fb0d8;white-space:nowrap}
.ib-bby{margin-left:auto;font-style:normal;font-size:10px;color:#8fd4ff;white-space:nowrap}
.ib-bname{display:flex;align-items:center;gap:6px;font-size:12px;color:#e9effc;min-width:0}
.ib-bname .it-qty{font-size:11px;color:var(--dim);font-weight:400;font-variant-numeric:tabular-nums}
.ib-bnote{font-size:10px;color:#d4b45f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#ibLines,#ibBad{flex:1;min-height:0}
@media(max-width:768px){
  /* 手机：列高由内容决定，面板别再按 flex 比例分（basis 0 会塌成 0 高），改由内部盒子的 vh 定高 */
  #view-itemboard .it-left .rpanel:first-child,
  #view-itemboard .it-left .rpanel:nth-child(2){flex:none}
  #ibTrend{height:16vh;flex:none}   /* 同为 flex 项，basis 0 会盖掉 height，必须 flex:none 才吃 vh */
  #ibLines{height:54vh;flex:none}
  #ibBad{height:34vh;flex:none}
  .ib-row b{flex:0 0 62px}
  .ib-cn{font-size:9px;padding:0 3px}
  .ib-row{flex-direction:column;gap:4px}
  .ib-row b{align-self:flex-start}
  .ib-item{font-size:9px;padding:0 4px}
}
/* ---------- 人力工时（⏱ 人力工时页）：成品大表原样搬上来，只排版不重算 ---------- */
.ah-src{font-size:12px;color:#e9effc;font-weight:600;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ah-when{font-size:11px;color:var(--dim);white-space:nowrap}
/* 表格自己横向滚（列多），容器别再裁掉 */
.ah-wrap{flex:1;min-height:0;overflow:auto}
.ah-tbl{min-width:100%}
.ah-tbl td{font-variant-numeric:tabular-nums}
.ah-tbl .ah-num{text-align:right}
.ah-tbl .ah-line{text-align:left;color:#e9effc;white-space:nowrap}
.ah-tbl .ah-sh{white-space:nowrap}
.ah-tbl thead th{position:-webkit-sticky;position:sticky;top:0;z-index:3;box-shadow:0 1px 0 rgba(44,74,126,.7)}
/* 表末（全厂合计/全厂-白班/全厂-夜班/占比）钉在容器底部：
   表格单元格的 sticky bottom 在这张表上不生效，改成另起一张同列宽的小表、外面套个 sticky div */
.ah-foot{position:-webkit-sticky;position:sticky;bottom:0;z-index:4;background:#0d1a36}
.ah-ftbl td{height:22px;line-height:22px;padding-top:0;padding-bottom:0}
.ah-ftbl tbody tr:first-child td{border-top:2px solid rgba(255,176,0,.6)}
.ah-ftbl tr.ah-gtot td{background:#242721}
.ah-ftbl tr.ah-note td{background:#0d1a36}
/* 行类型：白班金 / 夜班绿 / 小计加粗淡底 / 全厂加重 / 占比灰字 */
.ah-tbl tr.ah-day{background:rgba(255,192,0,.05)}
.ah-tbl tr.ah-day .ah-line{box-shadow:inset 3px 0 0 #ffc000}
.ah-tbl tr.ah-day .ah-sh{color:#ffc000;font-weight:700}
.ah-tbl tr.ah-night .ah-sh{color:#3ddc84;font-weight:700}
.ah-tbl tr.ah-night .ah-num{color:#9fd9b4}
.ah-tbl tr.ah-sub{background:rgba(120,150,190,.07)}
.ah-tbl tr.ah-sub td{font-weight:700;color:#dbe8fa}
.ah-tbl tr.ah-gtot{background:rgba(255,176,0,.09)}
.ah-tbl tr.ah-gtot td{font-weight:700;color:#ffd88a}
.ah-tbl tr.ah-sub + tr.ah-gtot{border-top:2px solid rgba(255,176,0,.6)}
.ah-tbl tr.ah-gtot + tr.ah-gtot{border-top:1px solid rgba(255,176,0,.3)}
.ah-tbl tr.ah-note td{color:var(--dim);font-style:italic;font-weight:400}
.ah-tbl .ah-empty{padding:44px 12px;text-align:center;color:var(--dim);font-size:12px}
/* 「展开」列按钮：点一下整条线展开/收起，人数行各贴自己那行下面 */
.ah-tbl .ah-tb{background:rgba(58,166,255,.10);border:1px solid rgba(0,176,240,.45);color:#7fc9ff;
  border-radius:4px;padding:0 9px;font:inherit;font-size:11px;cursor:pointer;line-height:1.5}
.ah-tbl .ah-tb:hover{border-color:#3aa6ff;color:#a8dcff;background:rgba(58,166,255,.18)}
.ah-tbl .ah-tb.on{border-color:#3aa6ff;background:rgba(58,166,255,.24);color:#dceeff;font-weight:700}
/* 展开出来的「每日出勤人数」行 */
.ah-tbl tr.ah-cnt td{color:#7fc4ff;font-size:11px;background:rgba(58,166,255,.07);
  border-top:1px dashed rgba(58,166,255,.4)}
.ah-tbl tr.ah-cnt .ah-sh{color:#8fd0ff;font-weight:600;font-size:11px}
/* 线体筛选下拉 */
.ah-sel{background:#111a2b;color:#dbe8fa;border:1px solid rgba(120,150,190,.4);border-radius:4px;
  padding:3px 8px;font:inherit;font-size:12px;max-width:170px}
.ah-sel:focus{outline:none;border-color:#3aa6ff}
/* 左右冻结列：横向滚动时 线别/班别 钉左、合计/展开/人均工时 钉右。
   定位(left/right)在渲染时按列宽写成行内 style，这里只管「不透明底 + 本身淡色罩」与分隔影 */
.ah-tbl{background:#111f42}
.ah-tbl thead th.ah-fz{background-color:#0d1a36}
.ah-tbl tbody td.ah-fz{background-color:#111f42}
.ah-tbl tbody tr.ah-day  td.ah-fz{background-image:linear-gradient(rgba(255,192,0,.05),rgba(255,192,0,.05))}
.ah-tbl tbody tr.ah-sub  td.ah-fz{background-image:linear-gradient(rgba(120,150,190,.07),rgba(120,150,190,.07))}
.ah-tbl tbody tr.ah-gtot td.ah-fz{background-image:linear-gradient(rgba(255,176,0,.09),rgba(255,176,0,.09))}
.ah-tbl tbody tr.ah-cnt  td.ah-fz{background-image:linear-gradient(rgba(58,166,255,.07),rgba(58,166,255,.07))}
.ah-tbl.ah-ftbl tbody td.ah-fz{background-color:#242721;background-image:none}
.ah-tbl.ah-ftbl tbody tr.ah-note td.ah-fz{background-color:#0d1a36}
.ah-tbl th.ah-fzE{box-shadow:6px 0 8px -6px rgba(0,0,0,.55),0 1px 0 rgba(44,74,126,.7)}
.ah-tbl th.ah-fzB{box-shadow:-6px 0 8px -6px rgba(0,0,0,.55),0 1px 0 rgba(44,74,126,.7)}
.ah-tbl td.ah-fzE{box-shadow:6px 0 8px -6px rgba(0,0,0,.55)}
.ah-tbl td.ah-fzB{box-shadow:-6px 0 8px -6px rgba(0,0,0,.55)}
/* 窄屏：左右两组都冻的话总宽 390px 会把整个表盖满（日期列全看不见），
   所以只留 线别/班别 钉左，合计/展开/人均工时 解冻回普通列（!important 压掉行内 sticky） */
@media (max-width:768px){
  .ah-tbl th.ah-fzR,.ah-tbl td.ah-fzR{position:static !important;box-shadow:none !important;
    background-color:transparent !important;background-image:none !important}
}
/* 表末钉底小表自带一行表头（标注「出勤人数」列）；非冻结格 static，免得 thead 的 top:0 在 .ah-wrap 里乱飞；冻结格靠行内 sticky 保左右 */
.ah-ftbl thead th{position:static;background:#0d1a36}
.ah-ftbl thead th.ah-fz{background-color:#0d1a36}
.ah-ftbl thead th{height:20px;line-height:20px;padding-top:0;padding-bottom:0}
/* 表末「全厂合计/白班/夜班」行的空「班别」格填人力（该行出勤人数），蓝字区别于白/夜班 */
.ah-tbl tr.ah-gtot td.ah-hc{color:#8fd0ff;font-weight:700;font-size:11px;text-align:center}
.ah-ftbl tr.ah-gtot td.ah-hc.ah-fz{background-color:#242721;background-image:none}
/* 表末「人力合计/人力-白班/人力-夜班」三行：蓝调，跟上面的全厂工时行（金）区分 */
.ah-tbl tr.ah-htot td{color:#9fd0ff}
.ah-ftbl tr.ah-htot td{background:#16263d}
.ah-ftbl tr.ah-hb td{border-top:2px solid rgba(58,166,255,.55)}
.ah-tbl.ah-ftbl tbody tr.ah-htot td.ah-fz{background-color:#16263d;background-image:none}
.ah-tbl.ah-ftbl tbody tr.ah-htot td.ah-hc{background-color:#16263d}


/* ---- 人力出勤预估页：日期格勾选开线；表末日汇总（开线人力 + 预估工时） ---- */
.ah-tbl td.ae-ckc{text-align:center;padding-left:0;padding-right:0}
.ah-tbl td.ae-ckc input.ae-ck{width:15px;height:15px;margin:0;vertical-align:middle;accent-color:#3aa6ff;cursor:pointer}
.ah-tbl tr.ah-night + tr.ah-day td{border-top:1px solid rgba(120,150,190,.18)}
.ah-ftbl tr.ae-bold td{font-weight:700;color:#cfe4ff}
.ah-tbl thead th.ae-dth{text-align:center}
/* ---- 人力出勤预估：线体多选浮层（勾选式，日汇总/汇总卡按勾出来的线算） ---- */
.ah-multi{position:relative;display:inline-block}
.ah-mbtn{background:#111a2b;color:#dbe8fa;border:1px solid rgba(120,150,190,.4);border-radius:4px;
  padding:3px 8px;font:inherit;font-size:12px;cursor:pointer;max-width:190px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.ah-mbtn:hover{border-color:#3aa6ff}
.ah-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:60;background:#0e1a33;border:1px solid #2a4070;
  border-radius:6px;padding:6px 8px;box-shadow:0 10px 26px rgba(0,0,0,.5);min-width:150px;max-height:330px;overflow:auto}
.ah-pi{display:flex;align-items:center;gap:6px;padding:3px 4px;font-size:12px;color:#cfe0f5;
  cursor:pointer;white-space:nowrap;border-radius:4px}
.ah-pi:hover{background:rgba(58,166,255,.12)}
.ah-pi input{width:14px;height:14px;margin:0;accent-color:#3aa6ff;cursor:pointer}
.ah-pall{font-weight:700;color:#dbe8fa}
.ah-plist{margin-top:5px;border-top:1px solid #223a63;padding-top:5px}
/* ---- 人力出勤预估：日汇总里的「实际状况 / 差异」（实际逐日取自人力工时，差异 = 实际 - 预估） ---- */
.ah-tbl.ah-ftbl tr.ae-act td{color:#8fd0ff}
.ah-tbl.ah-ftbl tr.ae-act.ah-hb td{border-top:2px solid rgba(58,166,255,.55)}
.ah-tbl.ah-ftbl tr.ae-diff td{color:#b8c6dc}
.ah-tbl.ah-ftbl tr.ae-diff.ah-hb td{border-top:2px solid rgba(255,176,0,.5)}
.ah-tbl.ah-ftbl td.ae-dfp{color:#ffc861;font-weight:700}
.ah-tbl.ah-ftbl td.ae-dfn{color:#7fc4ff;font-weight:700}
/* 人力出勤预估：数字格靠左 —— 只改这一页；「人力工时」沿用 .ah-tbl .ah-num 的右对齐，不受影响 */
#view-attest .ah-tbl .ah-num{text-align:left}
/* 人力出勤预估：格子整格可点、可按住拖拽连刷（逻辑见 attEst.js aeBindPaint）
   输入框不吃指针事件 —— 点击恒落在 td 上，省得原生切换和我们自己切的打两遍 */
#view-attest .ah-tbl td.ae-ckc{cursor:pointer;user-select:none}
#view-attest .ah-tbl td.ae-ckc input.ae-ck{pointer-events:none}
/* 人力出勤预估：点行首「线别 / 班别」= 这一行整月开/关（逻辑见 attEst.js aeRowToggle）
   只挂主表的行首格，表末「日汇总」那张表的同名格不跟着变成手型 */
#view-attest #aeTbl tbody td.ah-line,
#view-attest #aeTbl tbody td.ah-sh{cursor:pointer;user-select:none}
#view-attest #aeTbl tbody td.ah-line:hover,
#view-attest #aeTbl tbody td.ah-sh:hover{background-image:linear-gradient(rgba(58,166,255,.20),rgba(58,166,255,.20))}
/* ---- 岗位管理·左清单表：线体 | 系统人力(白/夜) | 差异(白/夜) | 岗位（两层粘顶表头） ---- */
.ar-body .ar-left{flex:0 0 336px}
.ar-lines{padding:0}
.ar-line{display:grid;grid-template-columns:9px minmax(0,1fr) 34px 34px 34px 34px 26px;column-gap:6px;align-items:center;padding:5px 8px}
.ar-line .al-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ar-line .al-hc,.ar-line .al-df,.ar-line .al-n{text-align:right;font-variant-numeric:tabular-nums;font-size:11px;min-width:0}
.ar-line .al-hc{color:#8fd0ff}
.ar-line .al-df{color:var(--dim)}
.ar-line .al-n{color:var(--dim)}
.ar-line .al-dfp{color:#ffc861;font-weight:700}
.ar-line .al-dfn{color:#7fc4ff;font-weight:700}
.ar-line.active .al-hc{color:var(--cyan)}
.ar-line.active .al-n{color:var(--cyan)}
.ar-hd{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:#0d1a36;border-bottom:1px solid var(--line);font-size:10px;font-weight:600;letter-spacing:.5px;color:var(--dim)}
.ar-hd .ar-hr{display:grid;grid-template-columns:9px minmax(0,1fr) 34px 34px 34px 34px 26px;column-gap:6px;align-items:center;padding:2px 8px;border:1px solid transparent}
.ar-hd .ar-hr:first-child{padding-top:4px}
.ar-hd .ar-hr:last-child{padding-bottom:4px;border-top-style:dashed;border-top-color:rgba(44,74,126,.7)}
.ar-hd .al-grp{grid-column:span 2;text-align:center}
.ar-hd .al-hc,.ar-hd .al-n{text-align:right;font-size:10px;font-weight:600;min-width:0}
.ar-hd .al-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ar-line.ar-ft{position:-webkit-sticky;position:sticky;bottom:0;z-index:2;cursor:default;background:#0d1a36;font-weight:700;color:#e9effc;border-top-color:var(--line)}
.ar-line.ar-ft:hover{background:#0d1a36}
.ar-line.ar-ft .al-nm{text-align:right;color:var(--dim);font-size:10px;letter-spacing:.5px}
/* ---- 人员名册·左清单：线体 | 标配（岗位数）| 名册人数 | 差异 ----
   跟「岗位管理」共用 .ar-line，这一页只把列宽收成 5 列 ---- */
#view-attroster .ar-line{grid-template-columns:9px minmax(0,1fr) 40px 34px 38px}
#view-attroster .ar-line .al-std{text-align:right;color:var(--gold);font-size:11px;font-variant-numeric:tabular-nums;min-width:0}
#view-attroster .ar-line.active .al-std{color:var(--cyan)}
/* 表头单行：同一把列宽；.ar-hd .ar-hr 的虚线分隔是给「岗位管理」两层表头用的，这里抹掉 */
#view-attroster .ar-hd .ar-hr{grid-template-columns:9px minmax(0,1fr) 40px 34px 38px;padding:4px 8px;border-top:1px solid transparent}
#view-attroster .ar-hd .al-std{text-align:right;color:var(--gold);font-size:10px;font-weight:600;min-width:0}
#view-attroster .ar-hd .al-df{text-align:right;font-size:10px;font-weight:600;min-width:0}
#view-attest .att-kpi.ae-real b{color:#8fd0ff}

/* 页脚：工信部 ICP 备案号（备案要求悬挂于网站底部，链接到工信部备案系统） */
.sitefoot{flex:0 0 auto;text-align:center;font-size:11px;color:var(--dim);padding:6px 0 2px;line-height:1.4;letter-spacing:.3px}
.sitefoot a{color:var(--dim);text-decoration:none}
.sitefoot a:hover{color:var(--cyan);text-decoration:underline}
/* 数据维护：KPI 角标 + 人力池（由本地版搬入） */
.maint-kpi{font-size:12px;font-weight:700;color:#ffc000;background:rgba(255,192,0,.12);border:1px solid rgba(255,192,0,.4);border-radius:10px;padding:2px 8px;white-space:nowrap}
.maint-kpi:empty{display:none}
.mt-inc{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 10px;border:1px solid rgba(255,192,0,.4);border-radius:8px;background:rgba(255,192,0,.07)}
.mt-inc .mi-ttl{font-size:12px;font-weight:600;color:#ffc000}
.mt-inc .mi-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#e9effc;background:#12233f;border:1px solid var(--line);border-radius:14px;padding:2px 4px 2px 10px}
.mt-inc .mi-chip i{font-style:normal;font-size:11px;color:var(--dim)}
.mt-inc .mi-btn{font-size:11px;font-family:inherit;cursor:pointer;padding:2px 8px;border-radius:10px;background:#123a5c;border:1px solid #2c4a7e;color:#8fd4ff}
.mt-inc .mi-btn:hover{background:#1a4d78;color:#fff}
/* 数据维护（人力出勤版）：岗位责任人表 / 人力池 / 外援行 —— 由本地版搬入 */
.inscard.role:not(.on) .maint-pn{color:#d7e9ff}
.inscard .maint-pn{font-size:11px;font-weight:600;margin-top:2px;line-height:1.2}
.inscard.on .maint-pn{color:#fff}
.inscard .maint-pn.sup{color:#ffc000!important}
.mtbl .mt-attto:disabled{opacity:.35}
.mtbl td.mt-ro{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtbl-staff th:nth-child(1){width:5%}
.mtbl-staff th:nth-child(2){width:19%}
.mtbl-staff th:nth-child(3){width:12%}
.mtbl-staff th:nth-child(4){width:16%}
.mtbl-staff th:nth-child(5){width:18%}
.mtbl-staff th:nth-child(6){width:10%}
.mtbl-staff th:nth-child(7){width:20%}
.mtbl-staff td.mt-hrs{text-align:center;color:#8fd4ff;font-variant-numeric:tabular-nums;white-space:nowrap}
.mtbl-staff tbody tr.on td.mt-hrs{color:#fff}
.mtbl-staff td.mt-v{color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mtbl-staff td.mt-surplus{color:#ffc000!important;font-weight:700}
.mtbl-staff tr.mt-extra td.mt-x-nm{color:#8fb4dd;font-weight:600}
.mtbl-staff tr.mt-extra td.mt-x-emp{color:var(--dim)}
.mtbl-staff tr.mt-sup td.mt-sup-post{color:#ffc000;font-weight:600;text-align:left;padding-left:8px;white-space:normal}
.mtbl-staff tr.mt-sup td.mt-sup-post .mt-sup-done{font-style:normal;font-weight:400;color:var(--dim);margin-left:4px}
.mtbl-staff tr.mt-sup.mt-back{opacity:.55}
.mtbl-staff tr.mt-sup.mt-back td{color:var(--dim);font-weight:400}
.mtbl-staff button.mt-x{font-family:inherit;font-size:11px;line-height:1;cursor:pointer;padding:2px 5px;border-radius:6px;background:transparent;border:1px solid rgba(255,192,0,.45);color:#ffc000}
.mtbl-staff button.mt-x:hover{background:rgba(255,192,0,.18);color:#fff}
.mtbl-staff button.mt-ret{font-family:inherit;font-size:11px;line-height:1;cursor:pointer;padding:2px 5px;border-radius:6px;background:transparent;border:1px solid rgba(0,176,240,.5);color:#8fd4ff;margin-left:4px}
.mtbl-staff button.mt-ret:hover{background:rgba(0,176,240,.18);color:#fff}

/* ================= 手机端 线长报工页（#view-report） ================= */
#view-report .rp-lock{color:#8fd4ff;font-weight:700;white-space:nowrap}
#view-report .insbar{gap:6px 10px}
#view-report .mtbl-report th,#view-report .mtbl-report td{padding:6px 4px;font-size:13px}
#view-report .mtbl-report select.mt-sel{min-width:82px}
@media (max-width: 768px){
  #view-report .mtbl-report{min-width:0}
  #view-report .mtbl-report th,#view-report .mtbl-report td{padding:6px 3px;font-size:12px}
  #view-report .mtbl-report select.mt-sel{min-width:74px}
}


/* 手机端报工页排版修正：
   ① 整页跟着滚，不再让表格自己内滚 —— 内滚 + 固定顶栏会互相压
   ② 每列给明确宽度、控件吃满格子：原来 5 等分每列 71px，姓名下拉 min-width 74 溢出压到隔壁「出勤」列
   ③ 岗位表砍掉那个没内容的空列（现在 4 列） */
#view-report .mtbl-report{min-width:0}
#view-report .mtbl-report select.mt-sel,#view-report .mtbl-report input{width:100%;min-width:0;max-width:100%;box-sizing:border-box}
#view-report .mtbl-post th:nth-child(1){width:26%}
#view-report .mtbl-post th:nth-child(2){width:24%}
#view-report .mtbl-post th:nth-child(3){width:34%}
#view-report .mtbl-post th:nth-child(4){width:16%}
#view-report .mtbl-pool th:nth-child(1){width:22%}
#view-report .mtbl-pool th:nth-child(2){width:22%}
#view-report .mtbl-pool th:nth-child(3){width:18%}
#view-report .mtbl-pool th:nth-child(4){width:20%}
#view-report .mtbl-pool th:nth-child(5){width:18%}
@media (max-width: 768px), (orientation: landscape) and (max-height: 560px) and (hover: none){
  #view-report .m-scroll{flex:none;height:auto;overflow:visible}
  #view-report .mtbl-report th,#view-report .mtbl-report td{padding:6px 3px;font-size:12px}
  #view-report .mtbl-post th:nth-child(1){width:24%}
  #view-report .mtbl-post th:nth-child(2){width:22%}
  #view-report .mtbl-post th:nth-child(3){width:38%}
  #view-report .mtbl-post th:nth-child(4){width:16%}
}

/* 手机端报工页排版（2026-10-14）：去边框、字号更小、内边距更小 */
@media (max-width: 768px), (orientation: landscape) and (max-height: 560px) and (hover: none){
  #view-report .mtbl-report th,#view-report .mtbl-report td{padding:3px 2px;font-size:11px}
  #view-report .mtbl-report tr+tr{border-top:0}
  #view-report .mtbl-report .mt-in,#view-report .mtbl-report .mt-sel{border:0;background:transparent;border-radius:0;padding:0 2px;font-size:11px}
  #view-report .mtbl-report .mt-in:focus,#view-report .mtbl-report .mt-sel:focus{background:rgba(0,176,240,.12)}
}
/* 岗位人员页（2026-10-14）：一线两行、岗位横铺（上行岗位名、下行姓名；线体/岗位数两格上下合并） */
.ah-tbl .as-l{overflow:hidden;text-overflow:ellipsis}
.ah-tbl .as-off{color:#6b7d93}
.ah-tbl tr.as-ftr td{font-weight:700;color:#dbe8fa;background:rgba(120,150,190,.10)}
.ah-tbl tr.as-ftr td.ah-fz{background-color:#16264c}
.ah-tbl tr.as-prow>td.as-l{color:var(--dim)}
.ah-tbl tr.as-prow>td.as-off{color:#6b7d93}
.ah-tbl tr.as-nrow>td.as-l{color:#fff;font-weight:600}
.ah-tbl tr.as-nrow>td.as-off{color:#6b7d93;font-weight:400}
.ah-tbl tr.as-nrow{border-top:0}
.ah-tbl tr.as-prow>td,.ah-tbl tr.as-nrow>td{padding-top:2px;padding-bottom:2px}
/* 缺人（当天报工标了「缺人」的岗）：两行都染红，姓名行写「缺人」 */
.ah-tbl tr.as-prow>td.as-need,.ah-tbl tr.as-nrow>td.as-need{color:#ff7b7b}

/* 手机报工：计数条（已派/总岗/缺/待派），由 report.js reportUpdateCount() 填，空态由 JS 收 display */
.rp-bar{display:none;font-size:11px;color:var(--dim);padding:3px 2px;line-height:1.6}
.rp-bar b{color:#cfe0ff;font-weight:600}
.rp-bar b.rp-bar-bad{color:#ff7b7b}

/* 报工页的池子/外援原本没有 .mtbl-staff 那样的配色和按钮样式，这里补齐（桌面同样适用） */
#view-report .mtbl-pool tr.mt-extra td.mt-x-nm{color:#8fb4dd;font-weight:600}
#view-report .mtbl-pool tr.mt-extra td.mt-x-emp{color:var(--dim)}
#view-report .mtbl-pool tr.mt-sup td.mt-sup-post{color:#ffc000;font-weight:600}
#view-report .mtbl-pool tr.mt-sup .mt-sup-done{font-style:normal;font-weight:400;color:var(--dim);margin-left:4px}
#view-report .mtbl-pool tr.mt-sup.mt-back{opacity:.55}
#view-report .mtbl-pool tr.mt-sup.mt-back td{color:var(--dim);font-weight:400}
#view-report .mtbl-pool button.mt-x,#view-report .mtbl-pool button.mt-ret{font-family:inherit;font-size:11px;line-height:1;cursor:pointer;padding:3px 6px;border-radius:6px;background:transparent}
#view-report .mtbl-pool button.mt-x{border:1px solid rgba(255,192,0,.45);color:#ffc000}
#view-report .mtbl-pool button.mt-ret{border:1px solid rgba(0,176,240,.5);color:#8fd4ff;margin-left:4px}

/* 手机端 人力池·外援：一人一行，格子一律不折行。工号列只留空位（不显示字）。
   已归还的标记挪到最后一列（那一列本来空着），免得来源格被挤到第二行。 */
@media (max-width: 768px), (orientation: landscape) and (max-height: 560px) and (hover: none){
  #view-report .mtbl-pool th,#view-report .mtbl-pool td{padding:3px 1px;font-size:10.5px;vertical-align:middle}
  #view-report .mtbl-pool th:nth-child(1),#view-report .mtbl-pool td:nth-child(1){width:17%}
  #view-report .mtbl-pool th:nth-child(2),#view-report .mtbl-pool td:nth-child(2){width:22%}
  #view-report .mtbl-pool th:nth-child(3),#view-report .mtbl-pool td:nth-child(3){width:19%}
  #view-report .mtbl-pool th:nth-child(4),#view-report .mtbl-pool td:nth-child(4){width:23%}
  #view-report .mtbl-pool th:nth-child(5),#view-report .mtbl-pool td:nth-child(5){width:19%}
  #view-report .mtbl-pool select.mt-sel,#view-report .mtbl-pool input{width:100%;min-width:0;max-width:100%}
  #view-report .mtbl-pool tr[data-pool]>td:nth-child(1){visibility:hidden}
  #view-report .mtbl-pool tr.mt-extra>td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #view-report .mtbl-pool tr.mt-extra>td:nth-child(5){overflow:visible}
  #view-report .mtbl-pool tr.mt-sup .mt-sup-done{margin-left:2px;font-size:10px}
  #view-report .mtbl-pool tr.mt-extra button.mt-x,#view-report .mtbl-pool tr.mt-extra button.mt-ret{font-size:10px;padding:2px 4px;white-space:nowrap}
  #view-report .mtbl-pool tr.mt-extra button.mt-ret{margin-left:0;margin-right:3px}
}
/* ===== 老 Safari(iOS<=14.4) 兼容：不支持 flex gap / gap 简写 =====
   html.nogap 由 index.html 头部脚本按特性检测添加，现代浏览器不加 */
html.nogap .sidebar > * + *{margin-top:10px}
html.nogap .brand > * + *{margin-left:8px}
html.nogap .menu > * + *{margin-top:3px}
html.nogap .menu .group > * + *{margin-left:7px}
html.nogap .menu .item > * + *{margin-left:9px}
html.nogap .sideinfo > * + *{margin-top:5px}
html.nogap .menu .grp > * + *{margin-top:3px}
html.nogap .menu .grp-items > * + *{margin-top:3px}
html.nogap .eff-databar > * + *{margin-left:10px}
html.nogap .sidebar.collapsed .menu > * + *{margin-top:2px}
html.nogap .pttl > * + *{margin-left:8px}
html.nogap .shopempty > * + *{margin-top:8px}
html.nogap .shopfoot > * + *{margin-left:10px}
html.nogap .selbar > * + *{margin-left:6px}
html.nogap .footbtns > * + *{margin-left:6px}
html.nogap .placeholder > * + *{margin-top:12px}
html.nogap .ldetail > * + *{margin-top:4px}
html.nogap .ldempty > * + *{margin-top:1px}
html.nogap .ldbar > * + *{margin-left:10px}
html.nogap .stgrid > * + *{margin-left:5px}
html.nogap .stbottom > * + *{margin-left:8px}
html.nogap .stleft > * + *{margin-top:8px}
html.nogap .std-cols > * + *{margin-left:10px}
html.nogap .std-chart > * + *{margin-top:2px}
html.nogap .std-body > * + *{margin-left:22px}
html.nogap .stimg-empty > * + *{margin-top:3px}
html.nogap .stright > * + *{margin-top:8px}
html.nogap .std-info > * + *{margin-left:22px}
html.nogap .std-item > * + *{margin-left:6px}
html.nogap .joblist > * + *{margin-left:18px}
html.nogap .job > * + *{margin-left:6px}
html.nogap .inspect-panel > * + *{margin-top:8px}
html.nogap .insbar > * + *{margin-left:8px}
html.nogap .insstgrid > * + *{margin-left:5px}
html.nogap .inspect-bottom > * + *{margin-left:8px}
html.nogap .inspect-left > * + *{margin-top:8px}
html.nogap .inspect-tbl > * + *{margin-top:8px}
html.nogap .inspect-ctrl > * + *{margin-left:8px}
html.nogap .ins-months > * + *{margin-left:2px}
html.nogap .ins-cards > * + *{margin-top:8px}
html.nogap .ins-card-ttl > * + *{margin-left:6px}
html.nogap .mform > * + *{margin-left:10px}
html.nogap .mfield > * + *{margin-top:3px}
html.nogap .mstar > * + *{margin-left:4px}
html.nogap .maint-foot > * + *{margin-left:10px}
html.nogap .bkbtns > * + *{margin-left:8px}
html.nogap .mmodal-ttl > * + *{margin-left:8px}
html.nogap .mmodal-foot > * + *{margin-left:10px}
html.nogap .login-foot > * + *{margin-left:10px}
html.nogap .rankbar > * + *{margin-left:10px}
html.nogap .rank-months > * + *{margin-left:2px}
html.nogap .rank-wks > * + *{margin-left:4px}
html.nogap .rank-kpis > * + *{margin-left:8px}
html.nogap .rank-kpi > * + *{margin-left:10px}
html.nogap .rank-main > * + *{margin-left:8px}
html.nogap .rank-left > * + *{margin-top:8px}
html.nogap .rank-line-list > * + *{margin-top:5px}
html.nogap .rank-line > * + *{margin-left:8px}
html.nogap .rank-awards > * + *{margin-top:5px}
html.nogap .rank-award > * + *{margin-left:8px}
html.nogap .rank-right > * + *{margin-top:8px}
html.nogap .weak-cols > * + *{margin-left:10px}
html.nogap .grapebar > * + *{margin-left:10px}
html.nogap .grape-bar-left > * + *{margin-left:8px}
html.nogap .grape-legend > * + *{margin-left:10px}
html.nogap .grape-legend .gl > * + *{margin-left:4px}
html.nogap .grape-body > * + *{margin-top:8px}
html.nogap .apple-trees > * + *{margin-left:14px}
html.nogap .gview-grade > * + *{margin-left:8px}
html.nogap .gv-dim > * + *{margin-left:6px}
html.nogap .assessbar > * + *{margin-left:10px}
html.nogap .assess-body > * + *{margin-top:8px}
html.nogap .assess-foot > * + *{margin-left:14px}
html.nogap .imp-bar > * + *{margin-left:8px}
html.nogap .stleg > * + *{margin-left:5px}
html.nogap .sthead > * + *{margin-left:10px}
html.nogap .stactionrow > * + *{margin-left:10px}
html.nogap .stfld > * + *{margin-left:14px}
html.nogap .stf > * + *{margin-top:4px}
html.nogap .stendbar > * + *{margin-left:8px}
html.nogap .stbtns > * + *{margin-left:8px}
html.nogap .att-panel > * + *{margin-top:8px}
html.nogap .attident > * + *{margin-left:6px}
html.nogap .att-kpis > * + *{margin-left:8px}
html.nogap .att-kpi > * + *{margin-top:1px}
html.nogap .att-incoming > * + *{margin-left:8px}
html.nogap .att-incoming .ai-chip > * + *{margin-left:5px}
html.nogap .ov-body > * + *{margin-left:10px}
html.nogap .ar-body > * + *{margin-left:10px}
html.nogap .ar-head > * + *{margin-left:8px}
html.nogap .ap-stn > * + *{margin-left:8px}
html.nogap .ap-op > * + *{margin-left:4px}
html.nogap .ap-add > * + *{margin-left:8px}
html.nogap #ibKpis > * + *{margin-left:6px}
html.nogap #ibKpis .ib-kpi-grp > * + *{margin-left:6px}
html.nogap .it-body > * + *{margin-left:10px}
html.nogap .it-card > * + *{margin-top:7px}
html.nogap .it-name > * + *{margin-left:6px}
html.nogap .it-seg > * + *{margin-left:4px}
html.nogap .it-hbar > * + *{margin-left:6px}
html.nogap .it-hrow > * + *{margin-top:4px}
html.nogap .it-hhead > * + *{margin-left:6px}
html.nogap .it-hchips > * + *{margin-left:4px}
html.nogap .it-cfgbody > * + *{margin-top:6px}
html.nogap .it-cfgr > * + *{margin-left:8px}
html.nogap .ib-row > * + *{margin-left:6px}
html.nogap .ib-cell > * + *{margin-top:4px}
html.nogap .ib-celltop > * + *{margin-left:6px}
html.nogap .ib-items > * + *{margin-left:3px}
html.nogap .ib-brow > * + *{margin-top:4px}
html.nogap .ib-btop > * + *{margin-left:6px}
html.nogap .ib-bname > * + *{margin-left:6px}
html.nogap .ah-pi > * + *{margin-left:6px}
html.nogap .mt-inc > * + *{margin-left:8px}
html.nogap .mt-inc .mi-chip > * + *{margin-left:6px}
html.nogap #view-report .insbar > * + *{margin-left:10px}
@media (max-width: 768px), (orientation: landscape) and (max-height: 560px) and (hover: none) {
  html.nogap .sidebar > * + *{margin-top:8px}
  html.nogap .menu > * + *{margin-top:4px}
  html.nogap .menu .item > * + *{margin-left:4px}
  html.nogap .sidebar.collapsed .brand > * + *{margin-left:8px}
  html.nogap .sidebar.collapsed .menu .item > * + *{margin-left:4px}
  html.nogap .tabbar .tab > * + *{margin-left:4px}
  html.nogap .maint-foot > * + *{margin-left:8px}
  html.nogap .assess-foot > * + *{margin-left:8px}
}
@media (max-width:768px) {
  html.nogap .imp-bar > * + *{margin-left:6px}
}
@media (max-width:768px) {
  html.nogap .stfld > * + *{margin-left:10px}
  html.nogap .ib-row > * + *{margin-left:4px}
}
/* grid 容器：用旧名 grid-gap 兜底 */
html.nogap .mmodal-grid{grid-gap:10px 12px}
html.nogap .gview-dims{grid-gap:6px 10px}
html.nogap .ar-line{grid-gap:8px}
html.nogap .it-cards{grid-gap:8px}
/* 数据维护 / 岗位管理页右上角：LUXSHARE ICT 标识（白底胶囊，桌面端显示） */
.inslogo{height:22px;width:auto;margin-left:auto;flex:none;background:#fff;padding:2px 6px;border-radius:5px;box-shadow:0 1px 3px rgba(0,0,0,.35);user-select:none}
@media (max-width:768px){ .inslogo{display:none} }
/* 数据维护页顶栏：熟练级/入门级/新手级 + 上岗证合格率（先按模拟数据展示） */
.maint-level{display:inline-flex;align-items:center;flex-wrap:wrap}
.maint-level > * + *{margin-left:6px}
.mlv{font-size:11px;padding:2px 8px;border-radius:10px;border:1px solid transparent;white-space:nowrap}
.mlv b{margin-left:5px;font-size:12px;font-weight:800}
.mlv.l1{color:#3ddc84;border-color:rgba(61,220,132,.45);background:rgba(61,220,132,.12)}
.mlv.l2{color:#5b9bd5;border-color:rgba(91,155,213,.45);background:rgba(91,155,213,.12)}
.mlv.l3{color:#f6c45a;border-color:rgba(246,196,90,.45);background:rgba(246,196,90,.12)}
.mlv.lic{color:#cfd9ee;border-color:rgba(120,150,190,.4);background:rgba(120,150,190,.1)}

/* ===== 岗位人员页：KPI 卡片可点（看是谁）+ 点击后的明细浮层 ===== */
.att-kpi.as-click { cursor: pointer; }
.att-kpi.as-click:hover { border-color: #2f6fd0; box-shadow: inset 0 0 0 1px #2f6fd0; }
.att-kpi.as-click:active { background: #eef4fd; }

.as-pop { position: fixed; left: 0; top: 0; width: 100%; height: 100%; background: rgba(17,24,39,.42); z-index: 70; display: flex; align-items: center; justify-content: center; }
.as-pop-bx { background: #fff; border-radius: 10px; width: 84%; max-width: 880px; max-height: 76%; overflow: auto; padding: 12px 16px 16px; box-shadow: 0 12px 34px rgba(0,0,0,.28); }
.as-pop-hd { display: flex; align-items: baseline; position: sticky; top: -12px; background: #fff; padding: 6px 0 8px; border-bottom: 1px solid #eef0f3; margin-bottom: 8px; }
.as-pop-hd b { font-size: 15px; color: #111827; }
.as-pop-hd i { font-style: normal; color: #6b7280; font-size: 12px; margin-left: 10px; }
.as-pop-x { margin-left: auto; cursor: pointer; color: #9ca3af; font-size: 15px; line-height: 1; padding: 2px 4px; }
.as-pop-x:hover { color: #111827; }
.as-pop-em { color: #b45309; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; padding: 6px 9px; font-size: 12px; margin: 0 0 10px; }
.as-pop-ln { font-size: 12.5px; color: #374151; margin: 10px 0 5px; border-bottom: 1px dashed #e5e7eb; padding-bottom: 3px; }
.as-pop-it { display: inline-block; background: #f3f4f6; border: 1px solid #e5e7eb; border-radius: 999px; padding: 2px 10px; font-size: 12.5px; color: #1f2937; margin: 0 6px 6px 0; }
.as-pop-it em { font-style: normal; color: #6b7280; font-size: 11px; margin-left: 5px; }
/* ===== 岗位管理页：岗位行鼠标拖拽排序 ===== */
.ap-stn.ap-drg{cursor:grab}
.ap-stn.ap-drg:active{cursor:grabbing}
.ap-grip{flex:0 0 auto;color:#5d769a;font-size:13px;line-height:1;letter-spacing:-2px}
.ap-stn.dragging{opacity:.45;background:#152b4d}
.ap-stn.drop-before{box-shadow:inset 0 2px 0 0 #00e5ff}
.ap-stn.drop-after{box-shadow:inset 0 -2px 0 0 #00e5ff}

/* ===== 岗位管理页：岗位名双击就地改名 ===== */
.ap-nm.ap-ed{cursor:text}
.ap-stn.ap-editing{background:#12294a}
.ap-nm-in{width:100%;min-width:0;box-sizing:border-box;padding:2px 6px;font-family:inherit;font-size:12px;
  color:#e9effc;background:#0d1a36;border:1px solid var(--cyan);border-radius:5px}
.ap-nm-in:focus{outline:none}
/* ================= 手机端：停线提报 =================
   表单页不套内层 52vh 滚动条，整页跟着 .content 滚；头部两格在窄屏自动落成单列 */
@media (max-width:768px){
  #view-help .att-panel{padding:8px 8px 16px}
  #view-help .m-scroll{height:auto;overflow:visible;border:0;background:transparent}
  #view-help .m-scroll>div{padding:4px 4px 12px!important;max-width:none!important}
  #view-help .insbar .hint{display:none}
  #view-help .mfield>.mt-in,#view-help .mfield>.mt-sel{height:34px;font-size:13px}
  #view-help textarea.mt-in{height:auto!important;min-height:84px}
  #view-help .mmodal-grid{gap:8px 10px}
  #view-help .maint-foot{gap:8px}
  #view-help .maint-foot .hint{flex:1 1 100%;order:9}
  #view-help .btn{padding:8px 16px;font-size:13px}
}
/* 数据维护（人力指派版式：左人力池 + 右岗位表 + 顶部KPI + 底部重置/保存） */
.am-page{display:flex;flex-direction:column;gap:8px;padding:8px 10px;min-width:0}
.am-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.am-bar .inslogo{margin-left:auto}
.am-kpis{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-left:6px}
.am-lv{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:12px;font-size:11.5px;border:1px solid var(--line);background:#0d1a36;color:var(--dim);white-space:nowrap}
.am-lv b{font-size:12px;font-weight:700;color:#dcebff;font-variant-numeric:tabular-nums}
.am-lv.l1{border-color:rgba(61,220,132,.4);background:rgba(61,220,132,.08);color:#7fd6a2}
.am-lv.l1 b{color:#3ddc84}
.am-lv.l2{border-color:rgba(0,176,240,.4);background:rgba(0,176,240,.08);color:#8fd4ff}
.am-lv.l2 b{color:#8fd4ff}
.am-lv.l3{border-color:rgba(255,192,0,.4);background:rgba(255,192,0,.08);color:#ffc000}
.am-lv.l3 b{color:#ffc000}
.am-main{display:flex;gap:8px;flex:1 1 auto;min-height:0;min-width:0}
.am-pool{flex:0 0 268px;max-width:268px;display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);border-radius:8px;background:#0d1a36;padding:8px}
.am-pool-hd{display:flex;align-items:center;gap:8px;margin-bottom:7px;min-width:0}
.am-pool-hd b{font-size:13px;color:var(--txt)}
.am-pool-hd span{font-size:11px;color:var(--dim)}
.am-pool-btns{margin-left:auto;display:flex;gap:4px}
.am-pbtn{height:22px;padding:0 8px;border:1px solid var(--line);border-radius:6px;background:#12233f;color:#9fb7d8;font-family:inherit;font-size:11px;white-space:nowrap;cursor:pointer;transition:all .15s}
.am-pbtn:hover{border-color:var(--blue2);background:#17325a;color:#fff}
.am-pbtn.has-in{border-color:rgba(255,192,0,.6);background:rgba(255,192,0,.12);color:#ffc000;font-weight:700}
.am-pool-list{flex:1 1 auto;min-height:80px;overflow:auto;display:flex;flex-direction:column;gap:5px;padding-right:2px}
.am-pool-list::-webkit-scrollbar{width:6px}
.am-pool-list::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.am-pi{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:3px 7px;border:1px solid var(--line);border-radius:8px;background:#101f3f;min-width:0}
.am-pi.off{background:#0c1729;border-color:#213a63}
.am-pi.off .am-pi-nm{color:#7f93b3}
.am-pi.onpost{opacity:.72}
.am-pi.sup{background:#0e2218;border-color:rgba(61,220,132,.35)}
.am-av{flex:0 0 21px;width:21px;height:21px;display:grid;place-items:center;border-radius:50%;background:rgba(0,176,240,.16);color:#8fd4ff;font-size:11px;font-weight:700}
.am-av.in{background:rgba(61,220,132,.18);color:#3ddc84}
.am-av.out{background:rgba(255,192,0,.16);color:#ffc000}
.am-pi-main{flex:1 1 0;min-width:0;display:flex;flex-direction:column;line-height:15px}
.am-pi-nm{font-size:12px;font-weight:600;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.am-pi-em{font-size:10px;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.am-pi-tag{font-style:normal;font-size:10px;color:#ffc000;margin-left:3px}
.am-psel{flex:0 0 58px;width:58px;height:22px;padding:0 2px;border:1px solid var(--line);border-radius:5px;background:#0d1a36;color:#dcebff;font-family:inherit;font-size:11px;outline:none;color-scheme:dark}
.am-pout{flex:0 0 auto;height:21px;padding:0 7px;border:1px solid var(--line);border-radius:5px;background:#12233f;color:#9fb7d8;font-family:inherit;font-size:10.5px;cursor:pointer}
.am-pout:hover:not(:disabled){border-color:rgba(255,192,0,.6);background:rgba(255,192,0,.12);color:#ffc000}
.am-pout:disabled{border-color:#1d3357;background:#0b1729;color:#4a5f80;cursor:not-allowed}
.am-px{flex:0 0 auto;width:16px;height:16px;line-height:15px;margin-left:auto;text-align:center;border-radius:50%;color:#7f93b3;font-style:normal;font-size:13px;cursor:pointer}
.am-px:hover{background:rgba(255,80,80,.2);color:#ff8a8a}
.am-suprow{flex:0 0 100%;display:flex;align-items:center;gap:4px;margin-top:2px}
.am-sup-lb{font-style:normal;font-size:10px;color:var(--dim);white-space:nowrap}
.am-sup-sel{flex:1 1 0;min-width:0;height:22px;padding:0 2px;border:1px solid var(--line);border-radius:5px;background:#0d1a36;color:#dcebff;font-family:inherit;font-size:11px;outline:none;color-scheme:dark}
.am-sup-val{flex:1 1 0;min-width:0;font-size:11px;color:#8fd4ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.am-pool-none{padding:14px 0;text-align:center;font-size:12px;color:var(--dim)}
.am-post{flex:1 1 auto;min-width:0;min-height:0;display:flex;flex-direction:column;gap:6px}
.am-table-wrap{flex:1 1 auto;min-height:150px;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#0d1a36}
.am-table-wrap::-webkit-scrollbar{width:6px;height:6px}
.am-table-wrap::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.am-tbl{width:100%;min-width:800px;border-collapse:collapse;font-size:12px;table-layout:fixed}
.am-tbl th{position:sticky;top:0;z-index:2;padding:6px 8px;background:#12233f;border-bottom:1px solid var(--line);color:#8fa5cc;font-size:11.5px;font-weight:600;text-align:left;white-space:nowrap}
.am-tbl td{padding:2px 8px;border-bottom:1px solid rgba(44,74,126,.3);color:#bcd8f5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.am-tbl tbody tr:hover td{background:#101f3f}
.am-tbl tbody tr.on td{background:#1f4e79;color:#fff}
.am-tbl td.num{color:var(--dim);font-variant-numeric:tabular-nums;text-align:center}
.am-tbl td.post{color:var(--txt);font-weight:500}
.am-tbl td.mono{font-variant-numeric:tabular-nums}
.am-tbl td.hrs{text-align:right;padding-right:14px;color:#8fd4ff;font-variant-numeric:tabular-nums}
.am-tbl tbody tr.on td.hrs{color:#fff}
.am-tbl td.op{text-align:right;overflow:visible}
.am-tbl .am-dash{color:#5c7bb0}
.am-tag-role{display:inline-block;margin-left:6px;padding:0 5px;height:17px;line-height:17px;border-radius:4px;background:rgba(0,176,240,.16);color:#8fd4ff;font-size:10px;font-weight:600;vertical-align:1px}
.am-pick{width:100%;height:25px;padding:0 15px 0 5px;border:1px solid transparent;border-radius:6px;background:#101f3f url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0h8L4 5z' fill='%238fa5cc'/%3E%3C/svg%3E") no-repeat right 5px center;background-size:8px 5px;-webkit-appearance:none;appearance:none;color:var(--txt);font-family:inherit;font-size:12px;font-weight:500;outline:none;cursor:pointer;color-scheme:dark}
.am-pick:hover{border-color:var(--line);background-color:#16294d}
.am-pick:focus{border-color:var(--cyan)}
.am-pick.vacant{color:#6f86a8;font-weight:400}
.am-pick.need{color:#ffc000;font-weight:700}
.am-pick.borrow{color:#3ddc84;font-weight:600}
.am-pick option{background:#0d1a36;color:#e9effc;font-weight:400}
.am-pick option.borrow{color:#3ddc84}
.am-kind{width:62px;height:25px;padding:0 4px;border:1px solid transparent;border-radius:6px;background:#101f3f;color:#dcebff;font-family:inherit;font-size:12px;outline:none;cursor:pointer;color-scheme:dark}
.am-kind:hover{border-color:var(--line)}
.am-tm{width:76px;height:25px;padding:0 3px;border:1px solid var(--line);border-radius:6px;background:#0d1a36;color:#e9effc;font-family:inherit;font-size:12px;text-align:center;outline:none;color-scheme:dark}
.am-tm:focus{border-color:var(--cyan)}
.am-tm-sep{margin:0 3px;font-style:normal;font-size:11px;color:#5c7bb0}
.am-mini{height:24px;padding:0 9px;border:1px solid var(--line);border-radius:6px;background:#12233f;color:#9fb7d8;font-family:inherit;font-size:11.5px;cursor:pointer}
.am-mini:hover{border-color:rgba(255,100,100,.55);background:rgba(255,80,80,.14);color:#ff8a8a}
.am-foot{flex:0 0 auto;display:flex;align-items:center;gap:10px}
.am-hint{margin-right:auto;font-size:11.5px;color:var(--dim)}
.am-hint.dirty{color:#ffc000;font-weight:600}
.am-foot .btn{padding:5px 16px;font-size:13px}
.am-empty{padding:14px;text-align:center;color:var(--dim);font-size:12px}
/* 借入/借出弹窗 */
.am-dlg-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:210;display:flex;align-items:center;justify-content:center;background:rgba(4,12,26,.66)}
.am-dlg{width:720px;max-width:94vw;max-height:86vh;display:flex;flex-direction:column;background:linear-gradient(160deg,#14285a,#0d1a36);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.am-dlg-hd{padding:10px 14px;font-size:14px;font-weight:700;border-bottom:1px solid var(--line)}
.am-dlg-bd{padding:10px 14px;overflow:auto;flex:1 1 auto}
.am-dlg-ft{padding:10px 14px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line)}
.am-sec{margin-bottom:10px}
.am-sec-h{font-size:12px;font-weight:600;color:#8fd4ff;margin-bottom:5px}
.am-dt{width:100%;border-collapse:collapse;font-size:12px}
.am-dt th,.am-dt td{padding:4px 6px;border-bottom:1px solid rgba(44,74,126,.35);text-align:left;white-space:nowrap}
.am-dt th{color:var(--dim);font-weight:600;font-size:11px;background:#12233f}
.am-dt tr.sel td{background:rgba(0,176,240,.1)}
.am-dt td.c{width:28px;text-align:center}
.am-dt input[type=time]{height:24px;padding:0 3px;border:1px solid var(--line);border-radius:5px;background:#0d1a36;color:#e9effc;font-family:inherit;font-size:11.5px;color-scheme:dark}
.am-dt input[type=checkbox]{cursor:pointer}
.am-dlg-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12.5px}
.am-dlg-row label{flex:0 0 72px;color:var(--dim)}
.am-dlg-row select,.am-dlg-row input{height:28px;padding:0 7px;border:1px solid var(--line);border-radius:6px;background:#0d1a36;color:#e9effc;font-family:inherit;font-size:12.5px;outline:none;color-scheme:dark}
.am-dlg-row .who{font-weight:600}
.am-dlg-row .who em{font-style:normal;font-size:11px;color:var(--dim);margin-left:6px}
.am-none{padding:12px 0;text-align:center;font-size:12px;color:var(--dim)}
@media (max-width:900px){
  .am-main{flex-direction:column}
  .am-pool{flex:0 0 auto;max-width:none}
  .am-pool-list{max-height:190px}
  .am-table-wrap{flex:0 0 auto;max-height:56vh}
}
.am-grp{flex:0 0 100%;margin:2px 0 -1px;padding:3px 2px 0;font-size:10.5px;color:#7f93b3;border-top:1px dashed rgba(44,74,126,.55)}
.am-badge{display:inline-block;margin-left:4px;padding:0 4px;height:15px;line-height:15px;border-radius:8px;background:rgba(255,192,0,.2);color:#ffc000;font-size:9.5px;font-weight:700;vertical-align:1px}
.am-badge.rt{background:rgba(61,220,132,.18);color:#3ddc84}

/* 人力工时页：系统报工 / HR / 差异 七行结构 */
.ah-tbl tr.ah-rep{background:rgba(58,166,255,.045)}
.ah-tbl tr.ah-rep .ah-line{box-shadow:inset 3px 0 0 rgba(58,166,255,.55)}
.ah-tbl tr.ah-rep td.ah-num{color:#c9dcf3}
.ah-tbl tr.ah-rep .ah-sh{font-weight:600}
.ah-tbl tr.ah-r-day .ah-sh{color:#9fc8ff}
.ah-tbl tr.ah-r-night .ah-sh{color:#7fd6a6}
.ah-tbl tr.ah-r-sum .ah-sh{color:#cfe0f5}
.ah-tbl tr.ah-r-sum td{font-weight:600}
.ah-tbl tr.ah-diffrow{background:rgba(240,180,92,.05);border-bottom:2px solid rgba(120,150,190,.22)}
.ah-tbl tr.ah-diffrow td{color:#f0b45c;font-weight:600}
.ah-tbl tr.ah-diffrow td.ah-diff{font-size:11px}
.ah-tbl tr.ah-diffrow .ah-sh{color:#f0b45c}
.ah-dp{color:#ff8b8b !important}
.ah-dn{color:#7fd6a6 !important}
.ah-clk{cursor:pointer;border-bottom:1px dashed rgba(240,180,92,.6)}
.ah-clk:hover{color:#fff}
.ah-tbl tbody tr.ah-rep td.ah-fz{background-image:linear-gradient(rgba(58,166,255,.045),rgba(58,166,255,.045))}
.ah-tbl tbody tr.ah-diffrow td.ah-fz{background-image:linear-gradient(rgba(240,180,92,.05),rgba(240,180,92,.05))}
