/* 量产值班模式布局；颜色变量沿用 rpg.css */
.lineGrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 330px;gap:18px;align-items:start}
.toolPanel,.sidePanel{background:#1c3540;border:1px solid #496571;border-radius:10px;padding:18px;box-shadow:0 4px 0 #0b1f27;min-width:0}
.sidePanel{padding:6px 14px}.sidePanel .section{margin:12px 0;padding:14px}
.toolHead{display:flex;justify-content:space-between;align-items:center;gap:10px}.toolHead h2{margin:0;font-size:21px;color:var(--gold)}
.toolState{font-size:12px;color:var(--mint);border:1px solid #4f8378;border-radius:4px;padding:2px 9px}.toolState.isDown{color:#ffbb89;border-color:#a5744f}
.chartTitle{font-size:13px;font-weight:500;color:var(--muted);margin:14px 0 6px}
.spc{width:100%;height:auto;display:block;background:#102b38;border:1px solid #365561;border-radius:7px}
.spc .axis{fill:#aec4c9;font-size:11px}.spc .center{stroke:#83a3a7;stroke-width:1}.spc .ctrl{stroke:#ffda83;stroke-width:1;stroke-dasharray:5 4}.spc .spec{stroke:#f08c6a;stroke-width:1.2}.spc .daySep{stroke:#3f5f6b;stroke-dasharray:2 4}
.spc .trace{fill:none;stroke:#79dbc1;stroke-width:2}.spc .okpt{fill:#79dbc1}.spc .flag{fill:#ffda83;stroke:#fff3cf;stroke-width:1.5}.spc .oos{fill:#f08c6a;stroke:#ffd9c9;stroke-width:1.5}
.chartEmpty{padding:60px 10px;text-align:center;background:#102b38;border:1px solid #365561;border-radius:7px}
.chartLegend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--muted);margin:6px 0 10px}.lg::before{content:"";display:inline-block;width:16px;height:0;border-top:2px solid;margin-right:5px;vertical-align:middle}.lg.center::before{border-color:#83a3a7}.lg.ctrl::before{border-color:#ffda83;border-top-style:dashed}.lg.spec::before{border-color:#f08c6a}
.timeRow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0;font-size:14px}.timeRow button{padding:4px 10px;font-size:13px}.timeRow small{color:var(--muted);font-size:11px}
.actGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}.actGrid button,.timeRow button{display:flex;flex-direction:column;align-items:flex-start;gap:1px;font-size:13px;padding:8px 11px;text-align:left}.actGrid button small,.timeRow button small{font-size:10px;color:var(--gold);min-height:0}.timeRow button small:empty,.actGrid button small:empty{display:none}
.hud .pointsBox strong{font:700 22px/1.4 ui-monospace,monospace;color:var(--gold);letter-spacing:4px}.hud .kpis{margin-left:auto;display:flex;flex-wrap:wrap;gap:6px 20px;font-size:13px;color:var(--muted)}.hud .kpis b{color:var(--text);font-size:16px}.hud .kpis small{font-size:11px}.warnText{color:#ffbb89!important}
.alertBox{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 18px;padding:11px 16px;border-radius:8px;border:1px solid #3b5966;background:#172f3a;font-size:13px}.alertBox.has{border-color:var(--gold);background:#3a4738}.alertBox b{color:var(--gold)}.alertBox .flag{color:#ffe7aa}.alertBox .warn{color:#ffbb89}.alertBox .none{color:var(--muted)}
.holdLot{border-top:1px solid #355461;padding:10px 0}.holdLot:first-of-type{border-top:0}.holdLot b{color:#ffbb89}.holdLot .rowActions{margin-top:6px;gap:6px}.holdLot button{font-size:12px;padding:5px 9px}
.lineLog{max-height:220px;overflow:auto}.handover{white-space:normal;font-size:14px;line-height:1.8}
.advanceBar{display:flex;justify-content:center;align-items:center;gap:16px;margin:20px 0 6px;font-size:14px;color:var(--muted)}.advanceBar .primary{font-size:17px;padding:13px 34px}
#lineDialog{width:min(820px,94vw)}
@media(max-width:1200px){.lineGrid{grid-template-columns:1fr 1fr}.sidePanel{grid-column:1/3;display:grid;grid-template-columns:1fr 1fr;gap:0 14px}}
@media(max-width:760px){.lineGrid{grid-template-columns:1fr}.sidePanel{grid-column:1;display:block}.hud .kpis{margin-left:0;width:100%}.top nav a{display:inline}}
.lifeBox{display:grid;gap:4px;margin:12px 0 2px}.lifeRow{display:grid;grid-template-columns:96px 1fr auto;gap:10px;align-items:center;font-size:12px;color:var(--muted)}.lifeRow .meter{margin:0;height:7px}.lifeRow b{font-weight:500;color:var(--text);font-size:12px;white-space:nowrap}.lifeRow.warn b,.lifeRow.warn .meter i{color:var(--gold)}.lifeRow.warn .meter i{background:var(--gold)}.lifeRow.over b{color:#ffbb89}.lifeRow.over .meter i{background:#f08c6a}.alertBox a{margin-left:auto}

/* 推进按钮固定在屏幕底部：页面内容每小时都会变长，按钮跟着内容走会越点越靠下。 */
.advanceBar{position:fixed;left:0;right:0;bottom:0;z-index:50;margin:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(17,35,44,.95);border-top:1px solid #496571;box-shadow:0 -6px 18px rgba(0,0,0,.35)}
body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
.toast{bottom:calc(96px + env(safe-area-inset-bottom))}
/* 版面稳定：还没有批次时的空图表占用与“图表 + 图例”相同的高度；待判定批次放进固定高度的滚动区，
   这样下面的量测按钮不会被批次数量顶来顶去。 */
.chartEmpty{padding:82px 10px;margin-bottom:10px}
.holdList{height:340px;overflow:auto;padding-right:4px}
