/* settings.css — 系统设置页 + 实时分析页（FTP/全局参数） */
/* ===== 系统设置页 ===== */
.set-layout{ display:flex; flex-direction:column; gap:14px; max-width:860px; padding:4px 0;}
.set-card{ background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:16px; }
.set-card-title{ font-size:14px; font-weight:700; color:var(--text-bright); margin-bottom:12px; }
.set-row{ display:flex; align-items:center; gap:10px; margin-bottom:10px; min-width:0;}
.set-row .set-lab{ width:150px; flex:0 0 150px; font-size:13px; color:var(--text-normal);}
.set-inp{ padding:7px 9px; font-size:13px; border-radius:var(--radius-sm); border:1px solid var(--border);
  background:var(--bg-secondary); color:var(--text-bright); min-width:120px;}
.set-chk{ width:18px; height:18px; accent-color:var(--accent);}
.set-grid2{ display:grid; grid-template-columns:1fr 1fr; gap:0 18px;}
.set-save{ display:flex; align-items:center; gap:10px; margin-top:6px;}
.set-msg{ font-size:12px; color:var(--accent);}
.set-msg.err{ color:var(--red);}
.set-val{ font-size:14px; font-weight:700; color:var(--text-bright);}
.set-stat{ font-size:12px; color:var(--text-normal); opacity:.85;}
.set-inp[type=range]{ padding:0; min-width:0; width:100%;}
.set-lab .val{ color:var(--label-bright); font-weight:700;}

/* ===== 实时分析页（只读看板） ===== */
.realtime-head{ align-items:center; gap:14px; flex-wrap:wrap;}
.realtime-status{ display:flex; align-items:center; gap:8px; margin-left:auto;}
.rt-badge{ font-size:12px; padding:3px 10px; border-radius:12px; border:1px solid var(--border);
  background:var(--bg-secondary); color:var(--text-bright); font-weight:600;}
.rt-nowait{ color:var(--text-dim);}
.rt-dot{ width:10px; height:10px; border-radius:50%; background:#555;}
.rt-dot.on{ background:var(--green); box-shadow:0 0 8px var(--green);}
.rt-dot.fresh{ animation:rtpulse 0.6s ease;}
@keyframes rtpulse{ 0%{transform:scale(1.6);} 100%{transform:scale(1);} }
.rt-clock{ font-variant-numeric:tabular-nums; color:var(--text-dim); font-size:12px;}
.rt-layout{ flex:1; display:flex; flex-direction:column; gap:10px; min-height:0;}
.rt-empty{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
  color:var(--text-dim); gap:12px; border:1px dashed var(--border); border-radius:var(--radius);}
.rt-empty-icon{ font-size:40px; opacity:.5;}
.rt-live{ display:flex; flex-direction:column; gap:10px; min-height:0; flex:1;}
.rt-imgs{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:16px; min-height:0; flex:1;}
.rt-col{ display:flex; flex-direction:column; min-height:0;}
.rt-col .col-cap{ display:flex; align-items:center; gap:8px;}
.rt-col-annot .rt-imgwrap{ flex:1; }
/* 右侧 ROI 评分卡面板 */
.rt-roi-list{ flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:8px;
  background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:10px;}
.roi-score-card{ display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:6px;
  border:1px solid var(--border); border-left-width:4px; background:var(--bg-secondary); font-size:13px;}
.roi-score-card.pass{ border-left-color:var(--green);}
.roi-score-card.fail{ border-left-color:var(--red);}
.roi-score-card-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:var(--text-bright); font-weight:600;}
.roi-score-card-val{ font-weight:800; font-size:14px; font-variant-numeric:tabular-nums;}
.roi-score-card-val.good{ color:var(--green);}
.roi-score-card-val.mid{ color:var(--yellow);}
.roi-score-card-val.bad{ color:var(--red);}
.roi-score-card-tag{ font-size:10px; font-weight:700; padding:2px 7px; border-radius:4px;}
.roi-score-card-tag.pass{ color:var(--green); background:rgba(68,204,68,.12);}
.roi-score-card-tag.fail{ color:#ff5a5a; background:rgba(239,68,68,.15);}
.rt-imgwrap{ flex:1; min-height:0; overflow:auto; background:#0e0e0e; border-radius:6px;
  border:1px solid var(--border); display:flex; align-items:center; justify-content:center;}
.rt-img{ max-width:100%; max-height:100%; object-fit:contain; display:block;}
.rt-score{ margin-left:auto; font-weight:700; font-size:13px; color:var(--text-bright);}
.rt-resultbar{ display:flex; align-items:center; gap:10px; font-size:13px; color:var(--text-normal);
  padding:10px 12px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm);}
.rt-resultbar b{ color:var(--text-bright);}
.rt-sep{ color:var(--text-dim);}
.rt-file{ max-width:340px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12.5px;}
.rt-ok{ margin-left:auto; font-weight:800; font-size:14px;}
.rt-ok.pass{ color:var(--green);}
.rt-ok.fail{ color:#ff5a5a;}
