/* 设备页沿用管理后台的间距与字体，仅为表格状态引入语义色。 */
.device-filters{display:flex;align-items:end;flex-wrap:wrap;gap:16px;border:0;padding:0;margin:0;min-width:0}
.device-filters .field{flex:1 1 176px;max-width:280px}
.device-filters .toolbar{padding-bottom:1px}
.device-filters .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.device-table{border-radius:8px}
.device-table table{min-width:1700px}
.device-table th,.device-table td{padding:16px;vertical-align:middle}
.device-table td:not(:nth-child(8)):not(:nth-child(10)){white-space:nowrap}
.device-table th{background:#f6f8fc;color:var(--muted)}
.device-table td:nth-child(8),.device-table td:nth-child(10){min-width:144px;max-width:224px}
.device-table td:nth-child(4){min-width:168px}
.device-table td:nth-child(11),.device-table td:nth-child(12),.device-table td:nth-child(13),.device-table td:nth-child(14),.device-table td:last-child{white-space:nowrap}
.device-table th:last-child,.device-table td:last-child{position:sticky;right:0;background:var(--surface);border-left:1px solid var(--line)}
.device-table th:last-child{background:#f6f8fc}
.device-table .device-name{color:#265db8;font-weight:600;border:0;background:transparent;padding:0;margin:0}
.device-number{font-variant-numeric:tabular-nums}
.device-realtime-connection{margin:12px 0;color:var(--muted)}
.device-realtime-value{display:inline-block;min-width:5.5em;font-variant-numeric:tabular-nums}
.device-realtime-normal{color:#176759}
.device-realtime-stale,.device-realtime-unavailable,.device-realtime-unsupported,.device-realtime-unauthorized,.device-realtime-error,.device-realtime-reconnecting,.device-realtime-expired{color:var(--muted)}
.device-realtime-detail{margin:20px 0 12px;padding-top:12px;border-top:1px solid var(--line)}
.device-realtime-detail h3{margin:0 0 8px;font-size:1rem}
.device-badge{display:inline-block;white-space:nowrap;border-radius:20px;padding:4px 12px;font-size:13px}
.device-badge-blue{color:#244f9c;background:#e8effd}
.device-badge-green{color:#176759;background:#e6f3ed}
.device-badge-purple{color:#674194;background:#f0eafa}
.device-badge-amber{color:#8c570b;background:#fcf2df}
.device-badge-red{color:#aa332b;background:#fbe9e6}
.device-badge-neutral{color:#536273;background:#edf0f4}
.device-detail{margin-top:16px}
/* 三类设备详情共用布局与空值规则；颜色只表达真实状态，不为占位诊断赋色。 */
.device-detail-dialog{width:min(1040px,calc(100vw - 32px));padding:20px}
.device-detail-dialog>.dialog-header{padding-bottom:12px;border-bottom:1px solid var(--line)}
.device-detail.device-realtime-detail{margin:12px 0 0;padding:0;border:0}
.device-detail-overview{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.device-detail-category{font-weight:600;margin-right:auto}
.device-detail-live-status{display:flex;align-items:center;gap:4px;font-size:13px}
.device-detail-live-status dd{min-width:40px;margin-right:8px}
.device-detail-overview .device-realtime-connection{margin:0;font-size:12px}
.device-detail-grid{display:grid;gap:12px;min-width:0}
.device-overview-grid{grid-template-columns:minmax(0,2fr) minmax(220px,1fr);align-items:stretch}
.device-detail-section{min-width:0;border:1px solid var(--line);border-radius:6px;padding:16px;background:var(--surface)}
.device-detail-section>h3{display:flex;align-items:center;gap:8px;font-size:14px;margin:0 0 12px}
.device-detail-section>h3::before{content:'';width:3px;height:14px;border-radius:2px;background:var(--accent);flex:none}
.device-basic-layout{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:16px;align-items:start}
.device-detail-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 12px;margin:0;font-size:13px;line-height:1.5}
.device-detail-facts dt{color:var(--muted)}
.device-detail-facts dd{margin:0;min-height:20px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.device-detail-facts dd .device-realtime-value{min-width:0}
.device-detail-map-slot{position:relative;min-width:0}
.device-slot-caption{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}
.device-map-empty{height:120px;border:1px solid var(--line);border-radius:4px;background:var(--canvas)}
.device-detail-photo{display:flex;flex-direction:column}
.device-photo-empty{flex:1;min-height:240px;border:1px solid var(--line);border-radius:4px;background:var(--surface)}
.device-detail-metric{border:1px solid var(--line);border-radius:4px;padding:8px;text-align:center;min-width:0}
.device-detail-metric-value{min-height:24px;font-variant-numeric:tabular-nums;line-height:1.5}
.device-detail-metric-value .device-realtime-value{min-width:0;overflow-wrap:anywhere}
.device-detail-metric-label{font-size:13px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}
.device-weather-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:16px}
.device-module-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:16px}
.device-cpu-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:12px}
.device-system-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:16px}
.device-thunder-board,.device-flash-parameters{margin-top:12px}
.device-thunder-observation{margin-top:12px}
.device-detail-group-status,.device-selfcheck-status{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:13px}
.device-detail-group-status>span:first-child,.device-selfcheck-status>span:first-child{color:var(--muted)}
.device-thunder-observation .device-detail-facts{grid-template-columns:max-content minmax(0,1fr) max-content minmax(0,1fr)}
.device-thunder-cells{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}
.device-thunder-cells h4{font-size:13px;font-weight:600;margin:0 0 6px}
.device-thunder-cell-values{white-space:pre-wrap;overflow:auto;max-height:8rem;overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.5;font-variant-numeric:tabular-nums}
.device-board-grid,.device-communication-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.device-communication-grid{margin-top:12px}
.device-parameter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.device-diagnostic-card{min-width:0;border:1px solid var(--line);border-radius:4px;padding:12px}
.device-diagnostic-card h4{font-size:13px;font-weight:600;margin:0 0 8px}
.device-board-grid .device-diagnostic-card{background:var(--canvas)}
.device-selfcheck{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin-top:12px;border:1px solid var(--line);border-radius:4px;padding:12px;font-size:13px}
.device-selfcheck-status{margin:0}
.device-detail-empty{display:inline-block;min-width:64px;min-height:20px}
.device-registered-details{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.device-registered-details>summary{cursor:pointer;color:var(--accent);font-size:13px}
.device-registration-facts{margin-top:12px;grid-template-columns:max-content minmax(0,1fr) max-content minmax(0,1fr)}
.device-detail-dialog footer{margin-top:12px}
.device-online-discovery{grid-column:1/-1;min-width:0;border:1px solid var(--line);border-radius:4px;padding:12px}
.device-online-discovery h3{font-size:14px;margin:0;flex:1}
.device-online-discovery p{font-size:13px;line-height:1.6;margin:8px 0}
.device-discovery-results{max-height:220px;overflow:auto}
.device-discovery-results table{min-width:0;table-layout:fixed}
.device-discovery-results th:first-child{width:22%}
.device-discovery-results th:last-child{width:28%}
.device-discovery-results td,.device-discovery-results th{padding:8px}
.device-discovery-results td{overflow-wrap:anywhere;white-space:normal}
.device-discovery-results button{max-width:100%;padding:6px;white-space:normal}
@media(max-width:900px){.device-system-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.device-cpu-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.device-parameter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:768px){.device-overview-grid{grid-template-columns:1fr}.device-photo-empty{min-height:160px}.device-detail-overview .device-realtime-connection{flex-basis:100%}.device-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.device-detail-dialog{padding:12px}.device-detail-section{padding:12px}.device-basic-layout{grid-template-columns:minmax(0,1fr)}.device-map-empty{height:96px}.device-weather-grid,.device-system-grid,.device-cpu-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.device-board-grid,.device-communication-grid,.device-parameter-grid{grid-template-columns:1fr}.device-thunder-observation .device-detail-facts{grid-template-columns:max-content minmax(0,1fr)}.device-registration-facts{grid-template-columns:max-content minmax(0,1fr)}}
.device-repair-dialog{width:min(680px,calc(100vw - 32px))}
.device-repair-form{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.device-repair-form[hidden]{display:none}
.device-repair-device{border:1px solid var(--line);border-radius:4px;overflow:hidden}
.device-repair-device>.field{display:grid;grid-template-columns:120px minmax(0,1fr);gap:0;align-items:stretch}
.device-repair-device>.field+.field{border-top:1px solid var(--line)}
.device-repair-device label{display:flex;align-items:center;padding:10px 12px;background:var(--canvas)}
.device-repair-device input[readonly]{background:var(--surface);border:0;border-left:1px solid var(--line);border-radius:0;padding:10px 12px}
.device-repair-reason textarea{min-height:120px}
.device-repair-counter{align-self:flex-end;font-size:12px;font-variant-numeric:tabular-nums}
.device-repair-reload{justify-content:flex-start}
.device-repair-form [role=status],.device-repair-form [role=alert]{min-height:1.5em}
.device-repair-form [role=status]:empty,.device-repair-form [role=alert]:empty{display:none}
.device-repair-reload[hidden]{display:none}
.device-repair-form .field[hidden]{display:none}
.device-repair-reason-cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;white-space:pre-wrap;min-width:160px;max-width:300px}
.device-repair-detail h3{margin:14px 0 8px;font-size:14px}
.probe-migration-confirm{display:flex;align-items:flex-start;gap:8px;line-height:1.6;overflow-wrap:anywhere}
.probe-migration-confirm[hidden],.probe-migration-resume-preview[hidden]{display:none}
.probe-migration-detail{min-width:0}
.probe-migration-detail .facts{margin:12px 0}
.probe-migration-detail .table-scroll{max-width:100%}
.probe-migration-dialog{width:min(1120px,calc(100vw - 32px))}
.probe-migration-detail table{min-width:1060px}
.probe-migration-detail th:nth-child(-n+2),.probe-migration-detail td:nth-child(-n+2){white-space:nowrap}
.probe-migration-detail td:nth-child(3){min-width:250px;max-width:330px;white-space:normal;overflow-wrap:anywhere}
.probe-migration-detail th,.probe-migration-detail td{padding:9px;font-variant-numeric:tabular-nums}
.probe-migration-totals{font-size:12px;margin-top:8px}
.probe-migration-batch{margin:12px 0;font-size:12px}
.probe-migration-batch summary{cursor:pointer;color:var(--muted)}
.probe-migration-actions{margin-top:16px}
.probe-migration-resume-preview{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:4px;background:var(--canvas)}
.probe-migration-resume-preview .notice{margin:0 0 12px}
.probe-migration-history>ol{margin:8px 0;padding-left:22px}
.probe-migration-history li{padding:10px 0;border-bottom:1px solid var(--line)}
.probe-migration-history-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}
.probe-migration-history .facts{margin:8px 0;font-size:12px}
.probe-migration-history-note{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.6}
.probe-migration-history details>summary{cursor:pointer;font-size:12px;color:var(--muted)}
.device-repairs-filter .field{min-width:170px}
@media(max-width:640px){.device-repair-device>.field{grid-template-columns:112px minmax(0,1fr)}.device-repair-dialog{padding:14px}.device-repair-form footer{justify-content:flex-end}}
.device-filters .field{min-width:176px}
.device-import-dialog form>.field{margin-top:16px}
.device-import-dialog form>.error{margin-top:8px}
.device-import-dialog progress{display:block;width:100%;height:12px;margin:8px 0;accent-color:var(--accent)}
.device-import-dialog progress[hidden]{display:none}
.device-import-dialog table{min-width:0;table-layout:fixed}
.device-import-dialog th,.device-import-dialog td{white-space:normal;overflow-wrap:anywhere}
/* 服务团队沿用后台配色；卡片与人员表单在小屏下单列展示。 */
.device-team-dialog{width:min(920px,calc(100vw - 32px))}
.device-team-content{margin-top:16px}
.device-team-device{font-weight:550;margin-bottom:8px;overflow-wrap:anywhere}
.device-team-groups{display:flex;flex-direction:column;gap:20px;margin:16px 0}
.device-team-group h3{margin-bottom:10px}
.device-team-group h3 span{font-size:13px;font-weight:400}
.device-team-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.device-team-card{display:flex;align-items:flex-start;gap:12px;padding:16px;background:var(--canvas);border:1px solid var(--line);border-radius:6px;min-width:0}
.device-team-avatar{display:flex;align-items:center;justify-content:center;flex:0 0 40px;height:40px;background:var(--accent);color:var(--surface);border-radius:6px;font-size:17px;font-weight:600}
.device-team-avatar-1{background:#387e9c}.device-team-avatar-2{background:#657783}
.device-team-person-info{flex:1;min-width:0;overflow-wrap:anywhere}
.device-team-person-info h4{font-size:14px;margin:0 0 4px}
.device-team-contact{font-size:12px;color:var(--muted);margin-top:4px}
.device-team-card-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}
.device-team-card-actions button{font-size:12px;padding:4px 8px}
.device-team-add{min-height:104px;border-style:dashed;color:var(--accent);background:var(--surface)}
.device-team-empty{font-size:13px;margin:4px 0 8px}
.device-team-person-dialog{width:min(460px,calc(100vw - 32px))}
.device-team-person-form{display:flex;flex-direction:column;gap:16px;margin-top:20px}
@media(max-width:768px){.device-team-grid{grid-template-columns:1fr}}
@media(max-width:480px){.device-team-card{padding:12px;gap:8px}.device-team-card-actions button{padding:4px 6px}.device-team-avatar{flex-basis:32px;height:32px;font-size:15px}}
.probe-migration-history-panel{margin:12px 0}
.probe-migration-history-panel[hidden]{display:none}
.probe-migration-history-panel>summary{cursor:pointer;font-weight:600;padding:6px 0}
.probe-migration-row-status{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.probe-migration-row-status button{font-size:12px;padding:3px 8px}
/* 绑定探头沿用设备页的紧凑行布局，手机端允许编号与状态换行。 */
.device-field-probes-dialog { width: min(640px, calc(100vw - 32px)); }
.device-probe-choices fieldset { margin: 12px 0; padding: 12px; border: 1px solid var(--border, #d8dee7); }
.device-probe-option { display: flex; align-items: flex-start; gap: 8px; padding: 8px 0; }
.device-probe-option > span { display: flex; flex-direction: column; gap: 4px; overflow-wrap: anywhere; }
.device-probe-option input { flex: 0 0 auto; margin-top: 3px; }
.device-bound-fields { display: flex; flex-direction: column; gap: 6px; }
.device-bound-probe { display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; }
.device-table .device-bound-probe { flex-wrap: nowrap; }
.device-detail-bound-fields .device-bound-probe { padding: 8px 0; border-bottom: 1px solid var(--border, #d8dee7); }
.device-detail-bound-fields .device-bound-probe:last-child { border-bottom: 0; }
.device-detail-bound-fields .device-bound-probe small { flex-basis: 100%; }
