.ir-main{display:grid;gap:12px}.serial-bar,.target-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:7px}.serial-state{display:flex;align-items:center;gap:8px;margin-right:8px}.serial-bar label,.target-bar>label:not(.check){display:flex;align-items:center;gap:7px;font-size:12px;font-weight:650;white-space:nowrap}.serial-bar select{width:190px}.serial-spec{display:flex;gap:5px;flex-wrap:wrap;margin-left:auto}.serial-spec span,.command-tag{padding:3px 7px;border-radius:4px;background:#eef3f7;color:#526778;font:11px ui-monospace,SFMono-Regular,monospace}.ir-main input:not([type=checkbox]),.ir-main select,.ir-main textarea{min-width:0;min-height:34px;padding:6px 8px;border:1px solid #cbd4da;border-radius:5px;background:#fff;width:100%}.ir-main select:disabled{background:#f5f7f8;color:var(--muted)}.ir-notice{font-size:12px;color:#6b613f;background:#fff8e9;border:1px solid #efdfb9;padding:8px 12px;border-radius:5px}.ir-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line)}.ir-tabs button{border:0;border-bottom:3px solid transparent;background:transparent;padding:10px 18px;color:var(--muted);font-weight:700}.ir-tabs button[aria-selected=true]{color:var(--cyan);border-bottom-color:var(--cyan);background:#e7f5f6}.target-bar #targetAddress{width:150px;font-family:ui-monospace,SFMono-Regular,monospace}.check{display:inline-flex!important;align-items:center;gap:6px;font-size:12px;font-weight:400!important;color:var(--muted)}.check input{margin:0;width:14px;height:14px;accent-color:var(--cyan)}.relay-state{margin-left:auto;color:var(--muted);font-size:12px}.relay-state b{padding:4px 8px;margin-left:4px;color:#687681;background:#f0f3f5;border-radius:4px}.ir-view{display:grid;gap:12px}.ir-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ir-main .panel-head{min-height:52px}.ir-main .panel-head .btn,.ir-main .panel-foot .btn{height:32px;font-size:12px}.ir-facts{display:grid;grid-template-columns:1fr 1fr;gap:0 20px;margin:0 0 10px}.ir-facts>div{display:flex;justify-content:space-between;gap:8px;padding:9px 0;border-bottom:1px solid #edf0f2;font-size:12px}.ir-facts dt{color:var(--muted)}.ir-facts dd{margin:0;font-weight:650;text-align:right}.ir-facts small{font-weight:400;color:var(--muted)}.ir-actions{display:flex;gap:7px;flex-wrap:wrap}.ir-actions .btn{height:32px;font-size:12px}.parameter-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}.parameter-row{display:flex;align-items:center;gap:7px;min-width:0}.parameter-row label{display:flex;align-items:center;gap:6px;flex:1;font-size:12px;white-space:nowrap;min-width:0}.parameter-row input{width:100%;max-width:200px}.parameter-row .short{flex:0 1 105px}.parameter-row .btn{height:34px;font-size:12px;padding:0 9px}.fixed-protection{font-size:12px;flex-wrap:wrap}.panel-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--line);background:#fafbfc}.calibration-grid{display:grid;grid-template-columns:1fr 1fr 1.8fr 1.1fr 1.6fr;gap:10px}.calibration-grid label,.test-grid label,.batch-grid label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:650}.calibration-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}.test-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.test-status{display:flex;gap:35px;padding:18px 0}.test-status span{display:block;font-size:12px;color:var(--muted)}.test-status b{display:block;font-size:14px;margin-top:3px}.batch-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:20px}.batch-grid textarea{resize:vertical;font:13px/1.7 ui-monospace,SFMono-Regular,monospace}.batch-fields{display:grid;gap:12px}.raw-row{display:flex;align-items:center;gap:10px}.raw-row label{font-size:12px;white-space:nowrap}.raw-row input{font-family:ui-monospace,SFMono-Regular,monospace}.console-head{display:flex;justify-content:space-between;gap:10px;margin:12px 0 6px;color:var(--muted);font-size:11px}#irLog{margin:0;min-height:150px;max-height:280px;overflow:auto;padding:12px;background:#15222b;color:#b9cbd5;border-radius:5px;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.8 ui-monospace,SFMono-Regular,monospace}.ir-main .hint{font-size:11px}.topbar .top-actions{flex-shrink:0}
@media(max-width:1250px){.ir-grid{grid-template-columns:1fr}.parameter-grid{grid-template-columns:1fr}.calibration-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.serial-spec{margin-left:0}.ir-facts>div{gap:12px}.target-bar .relay-state{margin-left:0}}@media(max-width:720px){.ir-main .test-grid,.ir-main .calibration-grid,.batch-grid{grid-template-columns:1fr 1fr}.batch-grid>label{grid-column:1/-1}.batch-grid>div{grid-column:1/-1}.ir-facts{grid-template-columns:1fr}.parameter-row{flex-wrap:wrap}.parameter-row label{flex:1 1 140px}.target-bar label.check{width:100%}.serial-bar select{width:160px}.ir-tabs button{padding:10px 9px;font-size:12px}.calibration-actions{align-items:flex-start}.serial-state{width:100%}.topbar .top-actions{display:flex}.topbar .port-badge{display:none}.console-head{flex-wrap:wrap}}
.app{display:block}.ir-main{max-width:1680px}
.status-link{color:var(--cyan);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.status-link:hover{text-decoration-thickness:2px}
.parameter-panel .parameter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:14px}
.parameter-panel .parameter-row{display:grid;grid-template-columns:minmax(0,1fr)auto;gap:12px;padding:12px;border:1px solid var(--line);border-radius:7px;background:#fafcfd;min-height:88px;align-items:end}
.parameter-panel .parameter-row:last-child{grid-column:1/-1}
.parameter-fields{display:flex;gap:10px;min-width:0;align-items:end}
.parameter-panel .parameter-fields label{display:grid;gap:6px;flex:1;min-width:0;font-size:12px;font-weight:600;color:var(--muted);white-space:normal}
.parameter-panel .parameter-fields .short{flex:0 0 90px}
.parameter-panel .parameter-row input{max-width:none;height:34px;color:var(--ink,#253746);font-weight:500}
.parameter-value{display:flex;align-items:center;min-height:34px;line-height:17px;overflow-wrap:anywhere}
.parameter-actions{display:grid;grid-template-columns:repeat(2,60px);gap:6px;flex-shrink:0}
.parameter-panel .parameter-actions .btn{height:34px;padding:0 10px;white-space:nowrap}
.parameter-panel .settings-actions{grid-template-columns:repeat(3,max-content);align-self:end}
.parameter-panel .settings-actions .btn{min-width:60px}
.setting-editor{display:grid;grid-template-columns:1fr 1fr;gap:14px}.setting-editor fieldset{margin:0;border:1px solid var(--line);border-radius:6px;padding:12px}.setting-editor legend{font-weight:700;padding:0 5px}.setting-choice{display:flex;align-items:center;gap:8px;padding:7px 0;font-size:13px;line-height:1.5}.setting-choice input[type=checkbox]{width:15px;height:15px;margin:0;accent-color:var(--cyan)}
@media(max-width:600px){.setting-editor{grid-template-columns:1fr}}
@media(max-width:1050px){.parameter-panel .parameter-grid{grid-template-columns:1fr}}
@media(max-width:480px){.parameter-panel .parameter-row{grid-template-columns:minmax(0,1fr);gap:10px}.parameter-actions{justify-content:end}.parameter-panel .parameter-fields .short{flex-basis:86px}}
/* 透支授予回执：数值和单位分层，小屏仍保留两列且不横向滚动。 */
#overdraftDialog{width:min(520px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow-y:auto;overflow-x:hidden}
#overdraftDialog .dialog-head{gap:16px;align-items:flex-start;padding:18px 20px 14px}
.receipt-meter{margin:5px 0 0;color:var(--muted);font-size:12px}.receipt-meter span{margin-left:5px;color:var(--ink);font-variant-numeric:tabular-nums}
.receipt-body{padding:18px 20px 20px}.receipt-success{display:flex;align-items:center;gap:9px;color:var(--green);font-size:14px}.receipt-check{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--green-soft);font-weight:800}.receipt-account{margin-left:auto;padding:3px 8px;border-radius:4px;background:#eef3f7;color:#546575;font-size:12px}
.receipt-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}.receipt-metric{min-width:0;padding:13px 14px;background:#f6f8fa;border:1px solid #e4e9ed;border-radius:7px}.receipt-metric>span{display:block;color:var(--muted);font-size:12px}.receipt-metric strong{display:block;margin-top:6px;color:var(--ink);font-size:14px;line-height:1.4;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.receipt-metric small{display:inline-block;margin-left:6px;color:var(--muted);font-size:12px;font-weight:500}.receipt-note{margin:15px 0 0;color:var(--muted);font-size:12px;line-height:1.7;overflow-wrap:anywhere}
@media(max-width:420px){#overdraftDialog .dialog-head{padding:15px}.receipt-body{padding:15px}.receipt-metric{padding:11px}.receipt-metric strong{font-size:14px}}
.compat-reads{flex-wrap:wrap;gap:8px;margin:16px 0}.compat-control{display:flex;align-items:flex-end;flex-wrap:wrap;gap:16px;margin:20px 0}.compat-control label{display:grid;gap:8px;font-size:13px;color:#52627b}.compat-control input{min-height:36px;border:1px solid #ccd7e6;border-radius:8px;padding:7px 10px;color:#1e304d;background:#fff}.compat-result{margin-top:20px;border:1px solid #d9e5f5;border-radius:12px;overflow:hidden;background:#f7faff}.compat-result>span{display:block;padding:12px 16px;background:#eaf2ff;font-size:13px;font-weight:600;color:#27569a}.compat-result pre{margin:0;padding:18px;white-space:pre-wrap;font:14px/1.9 ui-monospace,monospace;color:#263956;min-height:120px}
.target-bar.compat-mode>.btn,.target-bar.compat-mode>.check,.target-bar.compat-mode>.relay-state{display:none}
.target-bar.compat-mode>.check{display:none!important}

/* 与平台共用的状态/设置三字节卡片视觉规范。 */
#statusDialog,#settingDialog{width:min(1080px,calc(100vw - 32px));max-width:1080px}.byte-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.byte-card{border:1px solid #dce5ed;border-radius:10px;overflow:hidden;background:#fff}.byte-card>header{display:flex;justify-content:space-between;align-items:center;padding:13px 14px;background:#eef5fc;color:#245b91}.byte-card>header code{font-size:14px;font-weight:700}.byte-card>p{margin:0;padding:9px 14px;color:#6e7f90;font-size:12px;border-bottom:1px solid #e5ebf0}.byte-row{display:grid;grid-template-columns:48px minmax(0,1fr) 54px;gap:5px;align-items:center;min-height:48px;padding:7px 10px;border-bottom:1px solid #edf1f5;font-size:12px}.byte-row>code{color:#8a98a5;font-size:11px}.byte-row>b{text-align:right;color:#7c8a97;font-size:11px}.byte-row.active{background:#fff7e9}.byte-row.active>b{color:#ab6200}@media(max-width:760px){.byte-cards{grid-template-columns:1fr}}

.byte-row.ping-cycle{min-height:96px}

.byte-row.load-profile{min-height:144px;grid-template-columns:48px minmax(0,1fr);align-content:center}.byte-row.load-profile>b{grid-column:2;text-align:left;font-size:12px;overflow-wrap:anywhere;color:#456885}
/* 当前设备、操作回执与统计结果 */
.device-summary{display:grid;grid-template-columns:1.25fr .6fr 1.1fr .8fr .7fr 1fr .8fr;gap:12px;padding:12px 15px;background:#edf4fc;border:1px solid #d8e5f4;border-radius:8px}.device-summary>div{min-width:0}.device-summary span{display:block;font-size:11px;color:#61758b}.device-summary strong{display:block;margin-top:4px;font-size:13px;color:#23486e;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.device-summary #deviceNumber{font-family:ui-monospace,monospace}.relay-caption{margin-left:7px;font-size:10px}
.operation-result{padding:12px 15px;border:1px solid #dce3eb;border-left:4px solid #8a9aaa;border-radius:7px;background:#fff}.operation-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px}.operation-title>span:not(.operation-meta){padding:2px 8px;border-radius:4px;background:#eef2f6;font-size:11px;font-weight:650}.operation-meta{margin-left:auto;color:var(--muted);font-size:11px}.operation-meta b{font-family:ui-monospace,monospace;font-weight:500}.operation-result p{margin:6px 0 0;font-size:12px;overflow-wrap:anywhere;color:#526575}.operation-result.success{border-left-color:var(--green)}.operation-result.success #resultState{background:var(--green-soft);color:var(--green)}.operation-result.error{border-left-color:var(--red)}.operation-result.error #resultState{background:var(--red-soft);color:var(--red)}.operation-result.pending{border-left-color:var(--blue)}.operation-result.pending #resultState{color:var(--blue)}.operation-result.unconfirmed{border-left-color:var(--amber)}.operation-result.unconfirmed #resultState{background:var(--amber-soft);color:var(--amber)}
.ir-grid{grid-template-columns:1.25fr 1fr}.billing-panel{grid-column:1/-1}.billing-panel .panel-body{display:grid;grid-template-columns:1fr 1.3fr;gap:20px}.command-group h3,.action-heading{margin:0 0 8px;font-size:12px;font-weight:650;color:#61758b}.command-group+.command-group{border-left:1px solid var(--line);padding-left:20px}.parameter-panel .parameter-row [data-confirmed]{grid-column:1/-1;color:#61758b;font-size:11px;overflow-wrap:anywhere}.parameter-panel .parameter-row:last-child{grid-column:auto}.calibration-profile{font-size:12px;color:#527394;margin:8px 0 12px}.ir-main input[readonly]{background:#f3f6fa;color:#61758b}.maintenance-panel .panel-body{padding:11px 14px}
.statistics-view:empty{display:none}.stat-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:0}.stat-metrics>div{min-width:0;background:#f3f7fc;border:1px solid #e0e8f2;border-radius:6px;padding:10px 12px}.stat-metrics dt{font-size:11px;color:var(--muted)}.stat-metrics dd{margin:4px 0 0;font-size:14px;font-weight:650;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.stat-tables{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.stat-table{border:1px solid var(--line);border-radius:6px;overflow:hidden}.stat-table h3{margin:0;padding:9px 11px;font-size:12px;background:#edf3fa;color:#3b5f85}.stat-table table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}.stat-table th,.stat-table td{padding:7px 11px;text-align:right;border-bottom:1px solid #edf0f4}.stat-table th:first-child,.stat-table td:first-child{text-align:left}.stat-table th{color:var(--muted);font-size:11px;font-weight:500}.stat-table tr:last-child td{border:0}.stat-note{margin:10px 0 0;font-size:11px;color:var(--muted);line-height:1.7}.integrity{display:grid;gap:4px;margin-top:12px;padding:10px 12px;border-radius:6px;font-size:12px;background:var(--green-soft);color:var(--green)}.integrity.incomplete{background:var(--amber-soft);color:var(--amber)}.freeze-slot{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.freeze-slot>header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.freeze-slot h3{font-size:13px;margin:0}.freeze-slot>header>span{color:var(--muted);font-size:11px}#freezeDialog,#todayDialog{width:min(760px,calc(100vw - 28px))}#freezeDialog .dialog-body,#todayDialog .dialog-body{max-height:75vh;overflow:auto}
.log-tools{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:12px}.log-tools>label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);white-space:nowrap}.log-tools select{width:160px}.raw-row label{color:var(--blue);font-weight:650}
@media(max-width:1100px){.device-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.ir-grid{grid-template-columns:1fr}.billing-panel .panel-body{grid-template-columns:1fr 1fr}}@media(max-width:720px){.device-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.parameter-panel .parameter-grid,.billing-panel .panel-body{grid-template-columns:1fr}.command-group+.command-group{border-left:0;border-top:1px solid var(--line);padding:12px 0 0}.operation-meta{margin-left:0;width:100%}.log-tools{flex-wrap:wrap}.stat-tables{grid-template-columns:1fr}.ir-main{padding:12px}.ir-tabs{overflow:auto}.ir-tabs button{white-space:nowrap}}
/* 两款表型共用串口，界面与命令入口独立。 */
.app{display:grid;grid-template-columns:236px minmax(0,1fr)}.ir-sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:#fff;border-right:1px solid #dce4ee}.ir-brand{height:72px;flex-shrink:0;padding:0 17px;display:flex;gap:10px;align-items:center;border-bottom:1px solid #dce4ee}.ir-brand>span{background:linear-gradient(145deg,#1f5eff,#087f8c);color:#fff;border-radius:8px;padding:8px;font-weight:800}.ir-brand strong{font-size:14px}.ir-brand small{display:block;font-size:10px;color:#7d8a99;margin-top:2px}.ir-sidebar nav{padding:17px 12px;overflow:auto}.profile-group{margin-bottom:20px}.profile-group h2{margin:0 0 8px;padding:0 10px;font-size:12px;line-height:1.8;color:#65768b;font-weight:650}.profile-group.selected h2{color:#255c9f}.profile-group button{display:block;width:100%;text-align:left;border:0;border-radius:6px;background:transparent;padding:9px 12px 9px 22px;color:#65768b;font-size:12px;line-height:1.5;margin:3px 0}.profile-group button:hover{background:#f2f6fc}.profile-group button.active{background:#e9f1ff;color:#2054a0;font-weight:700;box-shadow:inset 3px 0 #3168db}.profile-group button:disabled{opacity:.5;cursor:wait}.ir-sidebar-foot{margin-top:auto;border-top:1px solid #e5ebf3;padding:14px 20px;color:#7b899a;font-size:11px;line-height:1.8}.ir-main{padding:18px 20px 30px}.legacy-profile .target-bar>[data-command],.legacy-profile .target-bar>.check,.legacy-profile .target-bar>.relay-state{display:none}.legacy-target-actions{display:flex;flex:1;gap:8px;align-items:center;flex-wrap:wrap}.legacy-relay{margin-left:auto;color:#6d7d8e;font-size:12px}.legacy-relay b{margin:0 8px;font-weight:750;color:#265780}.legacy-view{display:grid;gap:12px}.legacy-banner{padding:12px 15px;display:flex;justify-content:space-between;gap:12px;align-items:center;background:#edf4fc;border:1px solid #d6e5f5;border-radius:7px;color:#285480;font-size:13px}.legacy-banner>span{font-size:11px;color:#6d829a}.legacy-confirmed{grid-column:1/-1;color:#61758b;font-size:11px}.legacy-phase-wrap{overflow:auto;margin:6px 0 14px}.legacy-phase-wrap .phase-table{font-size:12px;min-width:380px}.legacy-maintenance{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.legacy-maintenance label{display:grid;gap:5px;font-size:12px;color:var(--muted)}.legacy-maintenance input{max-width:220px}.legacy-profile .topbar .title h1{font-size:14px}
@media(max-width:1100px){.app{grid-template-columns:200px minmax(0,1fr)}.ir-sidebar nav{padding:15px 8px}.ir-brand{padding:0 12px}.profile-group button{padding-left:15px}.ir-main{padding:14px}.serial-bar select{max-width:160px}.ir-facts>div{overflow-wrap:anywhere}.parameter-panel .parameter-grid{grid-template-columns:1fr}.legacy-banner{flex-wrap:wrap}}
@media(max-width:760px){.app{grid-template-columns:1fr}.ir-sidebar{position:static;height:auto}.ir-brand,.ir-sidebar-foot{display:none}.ir-sidebar nav{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:10px 12px}.profile-group{margin:0}.profile-group h2{font-size:11px}.profile-group button{padding:5px 10px;font-size:11px}.legacy-profile .topbar .title h1{font-size:14px}.legacy-target-actions{flex-basis:100%}.legacy-relay{margin-left:0}.topbar{padding:0 14px}}
.legacy-profile .target-bar>.check{display:none!important}.legacy-profile .topbar .title h1{font-size:14px}
/* 继电器读回状态与操作按钮明确区分。 */
#relayStatus[data-relay-state=closed],#deviceRelay[data-relay-state=closed],[data-legacy-value=relayLabel][data-relay-state=closed]{color:#08783e;background:#e4f6e9;border-radius:5px;padding:4px 10px;font-size:14px;font-weight:800;display:inline-block}
#relayStatus[data-relay-state=open],#deviceRelay[data-relay-state=open],[data-legacy-value=relayLabel][data-relay-state=open]{color:#c02834;background:#ffeaec;border-radius:5px;padding:4px 10px;font-size:14px;font-weight:800;display:inline-block}
#relayStatus[data-relay-state=fault],#deviceRelay[data-relay-state=fault],[data-legacy-value=relayLabel][data-relay-state=fault]{color:#aa5700;background:#fff1d9;border-radius:5px;padding:4px 10px;font-size:14px;font-weight:800;display:inline-block}
.maintenance-calibration-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:stretch}.maintenance-calibration-grid>.panel{min-width:0}.maintenance-calibration-grid .calibration-profile{margin:0 0 12px}.maintenance-calibration-grid .legacy-maintenance input{max-width:190px}@media(max-width:900px){.maintenance-calibration-grid{grid-template-columns:1fr}}
.maintenance-calibration-grid .ir-actions .btn{height:32px;min-width:96px;padding:0 12px;font-size:12px}.field-error{margin:0;padding:9px 11px;border-radius:5px;color:var(--red);background:var(--red-soft);font-size:12px}

.batch-meters{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.batch-meters label{display:flex;gap:6px;align-items:center;padding:7px;background:#f5f8fc;border:1px solid var(--line);border-radius:6px;min-width:0}.batch-meters label span{font-size:11px;font-weight:700;color:var(--muted)}.batch-meters input{min-width:0;width:100%;font-variant-numeric:tabular-nums;font-size:12px}.batch-setting-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.batch-setting-grid fieldset{border:1px solid var(--line);border-radius:6px;padding:12px}.batch-setting-grid legend{font-weight:700;color:var(--blue)}.batch-setting-grid .setting-choice{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:12px}.batch-setting-grid input[type=checkbox]{width:auto}.batch-fields{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.batch-fields label{display:grid;gap:5px;font-size:12px}.batch-fields input{width:160px}.batch-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:16px}.batch-toolbar .test-status{flex:1;margin:0;grid-template-columns:repeat(4,minmax(0,1fr))}.batch-result-wrap{overflow-x:auto}.batch-results{width:100%;border-collapse:collapse;font-size:12px}.batch-results th,.batch-results td{padding:10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.batch-results th{background:#f3f7fc;white-space:nowrap}.batch-results td:nth-child(2){font-variant-numeric:tabular-nums;white-space:nowrap}.batch-results td:last-child{min-width:260px;white-space:pre-wrap;overflow-wrap:anywhere}.batch-passed{color:#13845b;font-weight:750}.batch-failed{color:#c33443;font-weight:750}.batch-running{color:#245bca;font-weight:750}@media(max-width:1200px){.batch-meters{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:720px){.batch-meters{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-toolbar{align-items:stretch;flex-direction:column}.batch-setting-grid{grid-template-columns:1fr}}

body.batch-view .target-bar,body.batch-view .device-summary,body.batch-view #lastOperation{display:none!important}

/* 本地调试各页面采用统一的小字号；批量测试以表位直接呈现结果。 */
body{font-size:12px}.topbar .title h1,.legacy-profile .topbar .title h1{font-size:14px}.test-status b,.receipt-metric strong{font-size:14px}.batch-summary{display:flex;align-items:center;gap:16px;margin-left:auto;font-size:12px;color:var(--muted)}.batch-summary b{font-size:12px;color:var(--ink);font-variant-numeric:tabular-nums}.batch-meters{gap:6px;grid-template-columns:repeat(6,minmax(0,1fr))}.batch-meters label{padding:5px;gap:4px}.batch-meters input{height:30px;padding:4px 6px;font-size:12px;width:100%;flex:1}.batch-meters output{flex:0 0 42px;text-align:center;white-space:nowrap;font-size:11px;font-weight:650}.batch-meters label span{flex:0 0 16px}.batch-meters input::placeholder{font-size:11px}.batch-toolbar{justify-content:flex-end;margin-top:8px}.batch-toolbar .ir-actions{margin:0}.batch-setting-grid fieldset{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;padding:8px 10px}.batch-setting-grid .setting-choice{margin:0;font-size:12px}.batch-setting-grid fieldset>label:not(.setting-choice){display:flex;gap:7px;align-items:center;font-size:12px}.batch-setting-grid select{width:130px;max-width:100%}.batch-fields{gap:12px;margin-bottom:8px}.batch-fields label{gap:4px}.batch-fields input{height:30px}.batch-setting-grid{gap:8px}#toggleBatchLog{display:none}body.batch-view #toggleBatchLog{display:inline-flex}body.batch-view .console-panel:not(.expanded) .panel-body{display:none}body.batch-view .ir-main{gap:8px;padding-top:12px;padding-bottom:12px}body.batch-view .panel-head{padding:8px 12px}body.batch-view .panel-body{padding:10px 12px}body.batch-view .hint{margin-top:0;margin-bottom:8px}body.batch-view .console-panel .panel-head .hint{margin:0}body.batch-view .serial-bar{padding:8px 12px}body.batch-view .batch-meters input{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}@media(max-width:1400px){.batch-meters{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:900px){.batch-meters{grid-template-columns:repeat(3,minmax(0,1fr))}.batch-summary{gap:8px;flex-wrap:wrap}}@media(max-width:700px){.batch-meters{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-setting-grid fieldset{grid-template-columns:1fr}.batch-summary{margin-left:0}.batch-view .panel-head{flex-wrap:wrap}}
.batch-setting-grid fieldset{align-content:start}.batch-setting-grid .setting-choice{padding:0;min-height:24px;line-height:1.4}.batch-setting-grid fieldset>label:not(.setting-choice){padding:0;min-height:24px}.batch-setting-grid select{height:30px;padding:3px 6px}
.batch-meters output{flex-basis:52px;line-height:1.45}.batch-meters output>span{display:block}.batch-meters label.batch-card-passed{background:#edf8f0;border-color:#b8dfc3}.batch-meters label.batch-card-failed{background:#fff0f0;border-color:#efc1c4}
/* 参数卡只呈现读回信息，待写入字段统一放入修改弹窗。 */
.parameter-panel .parameter-row{min-height:72px;align-items:center}
.parameter-readout{display:grid;gap:7px;min-width:0}
.parameter-caption{font-size:12px;color:var(--muted);font-weight:600}
.parameter-readout .confirmed-value,.parameter-readout .legacy-confirmed,.parameter-readout [data-confirmed]{font-size:12px!important;color:var(--ink,#253746)!important;line-height:1.6;font-weight:600}
.parameter-editor-dialog{width:min(480px,calc(100vw - 28px))}
.parameter-editor-meter{font-size:12px;color:var(--muted);margin:6px 0 0}
.parameter-editor-dialog .parameter-fields{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.parameter-editor-dialog label{display:grid;gap:7px;font-size:12px;color:var(--muted);font-weight:600}
.parameter-editor-dialog input{box-sizing:border-box;width:100%;min-height:36px;padding:7px 10px;color:var(--ink,#253746);background:#fff;border:1px solid #cbd4da;border-radius:5px;font:inherit}
.parameter-editor-dialog input:focus{outline:2px solid #bed8f5;outline-offset:1px;border-color:#4688c9}
.parameter-editor-error{margin:14px 0 0;color:#b63838;background:#fff1f1;border:1px solid #f2c9c9;border-radius:5px;padding:8px 10px;font-size:12px}
/* 桌面端每行三项，结果只显示数值；表设置不重复展示读取结果。 */
.parameter-panel .parameter-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px}
.parameter-panel .parameter-row{min-height:66px;padding:9px 10px;gap:8px}
.parameter-readout{gap:4px}
.parameter-panel .settings-actions{grid-template-columns:repeat(3,max-content);align-self:center;gap:4px}
.parameter-panel .settings-actions .btn{min-width:0;padding:0 7px}
.parameter-panel .parameter-fields>label{gap:4px}
.parameter-panel .parameter-value{min-height:0}
@media(max-width:1280px){.parameter-panel .parameter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.parameter-panel .parameter-grid{grid-template-columns:1fr}}
