/* 按部署查看 v32：部署位置节点状态汇总 */
.deploy-location-summary-v32 {
  min-height: 38px;
  padding: 7px 10px;
  display: flex;
  align-items: center;
  gap: 7px;
  border-bottom: 1px solid var(--pg-border);
  background: #f7f9fa;
  white-space: nowrap;
}

.overview-page-v14 .deploy-location-summary-v32 :is(strong, b, span, em) {
  font-size: 12px !important;
  line-height: 20px;
}

.deploy-location-summary-v32 strong,
.deploy-location-summary-v32 > b {
  color: var(--pg-text);
  font-weight: 600;
}

.deploy-location-summary-v32 span { color: var(--pg-secondary); }
.deploy-location-summary-v32 em { font-style: normal; font-weight: 600; }
.deploy-location-summary-v32 .online em { color: var(--pg-success); }
.deploy-location-summary-v32 .fault,
.deploy-location-summary-v32 .fault em { color: var(--pg-danger); }
.deploy-location-summary-v32 .offline,
.deploy-location-summary-v32 .offline em { color: #65747d; }
.deploy-location-summary-v32 .unknown,
.deploy-location-summary-v32 .unknown em { color: var(--pg-warning); }

@media (max-width: 1280px) {
  .deploy-location-summary-v32 { flex-wrap: wrap; gap: 2px 9px; }
  .deploy-location-summary-v32 > b { margin-right: auto; }
}

/* 按网络拓扑 v33：工控机内运行对象分层 */
.topology-runtime-group-v33 {
  width: min(760px, 100%);
  padding: 0;
  overflow: hidden;
  text-align: left;
}

.topology-runtime-group-v33 > header {
  min-height: 48px;
  padding: 7px 11px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--pg-border);
  background: #f7f9fa;
}

.topology-runtime-group-v33 > header strong,
.topology-runtime-group-v33 > header span { display: block; }
.topology-runtime-group-v33 > header strong { font-size: 13px !important; }
.topology-runtime-group-v33 > header span,
.topology-runtime-group-v33 > header b { color: var(--pg-secondary); font-size: 12px !important; }
.topology-runtime-sections-v33 { padding: 10px; display: grid !important; grid-template-columns: 1.2fr .8fr; gap: 10px; }
.topology-runtime-section-v33 { min-width: 0; padding: 8px; border: 1px solid var(--pg-border); border-radius: 5px; background: #fff; }
.topology-runtime-section-title-v33 { margin-bottom: 7px; display: flex; align-items: center; justify-content: space-between; }
.topology-runtime-section-title-v33 strong { font-size: 13px !important; }
.topology-runtime-section-title-v33 span { color: var(--pg-muted); font-size: 12px !important; }
.topology-product-node-v33,
.topology-runtime-object-v33 { width: 100%; min-width: 0; display: grid; align-items: center; border: 1px solid #cfe4e0; border-radius: 4px; background: #f8fcfb; color: var(--pg-text); text-align: left; cursor: pointer; }
.topology-product-node-v33 { min-height: 46px; padding: 5px 7px; grid-template-columns: 24px minmax(0,1fr) auto; gap: 6px; }
.topology-runtime-object-v33 { min-height: 42px; padding: 4px 6px; grid-template-columns: 20px minmax(0,1fr) auto; gap: 5px; }
.topology-product-node-v33:hover,
.topology-runtime-object-v33:hover { border-color: var(--pg-primary); background: var(--pg-primary-soft); }
.topology-product-node-v33.selected,
.topology-runtime-object-v33.selected { border-color: var(--pg-primary); box-shadow: 0 0 0 2px rgba(23,125,112,.12); }
.topology-product-node-v33 > i,
.topology-runtime-object-v33 > i { display: grid; place-items: center; color: var(--pg-primary); }
.topology-product-node-v33 svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.topology-runtime-object-v33 svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.topology-product-node-v33 span strong,
.topology-product-node-v33 span small,
.topology-runtime-object-v33 span strong,
.topology-runtime-object-v33 span small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topology-product-node-v33 span strong,
.topology-runtime-object-v33 span strong { font-size: 12px !important; }
.topology-product-node-v33 span small,
.topology-runtime-object-v33 span small { color: var(--pg-muted); font-size: 11px !important; }
.topology-product-node-v33.unknown,
.topology-runtime-object-v33.unknown { border-color: #d5dde1; background: #fafbfc; }
.topology-product-components-v33,
.topology-public-services-v33 { margin-top: 7px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }
.topology-public-services-v33 { margin-top: 0; grid-template-columns: 1fr; }

@media (max-width: 1180px) {
  .topology-runtime-group-v33 { width: 680px; }
}

@media (max-width: 1024px) {
  .topology-runtime-sections-v33 { grid-template-columns: 1fr; }
}

/* 按网络拓扑 v34：每台工控机独立展示部署对象 */
.topology-site-detail-v34 { min-width: 980px; }
.topology-host-relation-v34 { width: 900px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; color: var(--pg-primary); text-align: center; }
.topology-host-relation-v34 span { font-size: 12px !important; line-height: 24px; }
.topology-host-lanes-v34 { width: 900px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; align-items: start; }
.topology-host-lane-v34 { min-width: 0; border: 1px solid #b9d8d1; border-radius: 7px; background: #fff; overflow: hidden; }
.topology-host-lane-v34.unknown { border-color: #d5dde1; }
.topology-host-head-v34 { width: 100%; min-height: 54px; padding: 6px 9px; display: grid; grid-template-columns: 25px minmax(0,1fr) auto; align-items: center; gap: 7px; border: 0; border-bottom: 1px solid var(--pg-border); background: #f6fbfa; color: var(--pg-text); text-align: left; cursor: pointer; }
.topology-host-lane-v34.unknown .topology-host-head-v34 { background: #f7f9fa; }
.topology-host-head-v34:hover { background: var(--pg-primary-soft); }
.topology-host-head-v34.selected { box-shadow: inset 0 0 0 2px rgba(23,125,112,.16); }
.topology-host-head-v34 > i { display: grid; place-items: center; color: var(--pg-primary); }
.topology-host-head-v34 > i svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.topology-host-head-v34 span strong,
.topology-host-head-v34 span small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topology-host-head-v34 span strong { font-size: 13px !important; }
.topology-host-head-v34 span small { color: var(--pg-secondary); font-size: 11px !important; }
.topology-host-runtime-v34 { padding: 9px; display: grid; gap: 8px; }
.topology-host-runtime-v34 .topology-runtime-section-v33 { padding: 7px; }
.topology-host-runtime-v34 .topology-product-components-v33 { grid-template-columns: repeat(2,minmax(0,1fr)); }
.topology-host-runtime-v34 .topology-public-services-v33 { grid-template-columns: repeat(2,minmax(0,1fr)); }
.topology-host-runtime-v34 .topology-runtime-object-v33:last-child:nth-child(odd) { grid-column: 1/-1; }

@media (max-width: 1180px) {
  .topology-site-detail-v34 { align-items: flex-start; }
}

/* 按网络拓扑 v35：工点卡片补充节点状态数量 */
.topology-site-card-v31 { min-height: 144px; }
.topology-site-node-stats-v35 { margin: 7px 0; padding: 7px 0; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border-top: 1px solid #edf1f3; border-bottom: 1px solid #edf1f3; }
.topology-site-node-stats-v35 span { display: flex; align-items: center; justify-content: center; gap: 4px; border-right: 1px solid #edf1f3; color: var(--pg-secondary); font-size: 12px !important; }
.topology-site-node-stats-v35 span:last-child { border-right: 0; }
.topology-site-node-stats-v35 b { color: var(--pg-text); font-size: 12px !important; }
.topology-site-node-stats-v35 .online b { color: var(--pg-success); }
.topology-site-node-stats-v35 .fault,
.topology-site-node-stats-v35 .fault b { color: var(--pg-danger); }
.topology-site-node-stats-v35 .offline,
.topology-site-node-stats-v35 .offline b { color: #65747d; }
.topology-site-card-v31 footer { gap: 8px; }
.topology-site-card-v31 footer strong { margin-left: auto; color: var(--pg-secondary); font-size: 12px !important; font-weight: 500; }

/* 按网络拓扑 v36：单台工控机多产品与折叠展开 */
.topology-runtime-section-title-v36 { align-items: flex-start; }
.topology-runtime-section-title-v36 > div strong,
.topology-runtime-section-title-v36 > div span { display: block; }
.topology-runtime-section-title-v36 > button { height: 26px; padding: 0 7px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-primary); font-size: 12px !important; cursor: pointer; }
.topology-runtime-section-title-v36 > button:hover { border-color: var(--pg-primary); background: var(--pg-primary-soft); }
.topology-products-list-v36 { display: grid; gap: 7px; }
.topology-product-group-v36 { border: 1px solid #d7e4e6; border-radius: 4px; background: #fff; overflow: hidden; }
.topology-product-group-v36.fault { border-color: #efaaa6; background: #fffafa; }
.topology-product-group-v36.unknown { border-color: #d5dde1; background: #fafbfc; }
.topology-product-group-head-v36 { min-height: 46px; display: grid; grid-template-columns: 28px minmax(0,1fr); align-items: stretch; }
.topology-product-toggle-v36 { border: 0; border-right: 1px solid var(--pg-border); background: transparent; color: var(--pg-secondary); font-size: 16px !important; cursor: pointer; }
.topology-product-toggle-v36:hover { background: var(--pg-primary-soft); color: var(--pg-primary); }
.topology-product-main-v36 { min-width: 0; padding: 5px 7px; display: grid; grid-template-columns: 22px minmax(0,1fr) auto; align-items: center; gap: 6px; border: 0; background: transparent; color: var(--pg-text); text-align: left; cursor: pointer; }
.topology-product-main-v36:hover { background: #f6fbfa; }
.topology-product-main-v36.selected { box-shadow: inset 0 0 0 2px rgba(23,125,112,.15); }
.topology-product-main-v36 > i { display: grid; place-items: center; color: var(--pg-primary); }
.topology-product-main-v36 > i svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.topology-product-main-v36 span strong,
.topology-product-main-v36 span small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.topology-product-main-v36 span strong { font-size: 12px !important; }
.topology-product-main-v36 span small { color: var(--pg-muted); font-size: 11px !important; }
.topology-product-components-v36 { margin: 0; padding: 7px; border-top: 1px solid var(--pg-border); background: #fbfcfc; }
.topology-product-collapsed-v36 { padding: 5px 8px; border-top: 1px solid var(--pg-border); color: var(--pg-muted); font-size: 11px !important; }
.topology-host-lane-v36 .topology-host-runtime-v34 { gap: 9px; }
.topology-host-lane-v36 .topology-runtime-section-v33.product { background: #fcfdfd; }

/* 按部署查看 v37：统一位置树与右侧内容视图 */
.deployment-location-tree-v37 { background: #fff; }
.deployment-location-tree-v37 > h3 { height: 46px; }
.deployment-tree-search-v37 { margin-top: 9px; }
.deployment-tree-section-v37 { height: 28px; padding: 7px 7px 0; color: var(--pg-muted); font-size: 12px !important; font-weight: 600; }
.deployment-location-tree-v37 .deploy-tree-row-v17 { cursor: default; }
.deployment-location-tree-v37 button.deploy-tree-row-v17 { cursor: pointer; }
.deployment-location-tree-v37 .network-tree-dot-v26 { flex: 0 0 6px; }
.deployment-location-tree-v37 .network-tree-more-v31 { margin-left: 47px; }
.deployment-view-tabs-v37 { height: 43px; padding: 0 12px; display: flex; align-items: center; gap: 22px; border-bottom: 1px solid var(--pg-border); background: #fff; }
.deployment-view-tabs-v37 button { position: relative; height: 42px; padding: 0 2px; border: 0; background: transparent; color: var(--pg-secondary); font-size: 13px !important; cursor: pointer; }
.deployment-view-tabs-v37 button:hover { color: var(--pg-primary); }
.deployment-view-tabs-v37 button.active { color: var(--pg-primary); font-weight: 600; }
.deployment-view-tabs-v37 button.active::after { content: ""; position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; background: var(--pg-primary); }
.deployment-view-tabs-v37 > span { margin-left: auto; color: var(--pg-muted); font-size: 12px !important; }
.deployment-main-v17 > .deployment-view-tabs-v37 { margin: 0 -14px; }
.network-topology-main-v26 > .deployment-view-tabs-v37 + .network-topo-head-v26 { border-top: 0; }
@media(max-width:1180px){.deployment-view-tabs-v37>span{display:none}}

/* 按部署查看 v38：参考图分层运行树 */
.deployment-layout-v17 { grid-template-columns: 292px minmax(0, 1fr); }
.network-topology-layout-v26 { grid-template-columns: 292px minmax(0, 1fr) 220px; }
.deployment-location-tree-v38 { min-width: 0; overflow: hidden; background: #fff; }
.deployment-tree-scroll-v38 { height: 100%; padding: 12px 10px 18px 9px; overflow: auto; color: var(--pg-text); }
.deployment-branch-v38 { position: relative; }
.deployment-children-v38 { position: relative; margin-left: 20px; }
.deployment-children-v38::before { content: ""; position: absolute; top: -3px; bottom: 8px; left: 8px; border-left: 1px solid #e1e7ea; }
.deployment-node-v38 { position: relative; z-index: 1; width: 100%; min-height: 32px; padding: 3px 4px 3px 0; display: flex; align-items: flex-start; gap: 6px; border: 0; background: transparent; color: var(--pg-text); text-align: left; }
.deployment-node-v38.root { font-weight: 600; }
.deployment-node-v38 > b { min-width: 0; padding-top: 3px; overflow: hidden; font-size: 13px!important; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; }
.deployment-chevron-v38 { flex: 0 0 12px; height: 24px; display: grid; place-items: center; color: #43535d; font-size: 15px!important; line-height: 20px; }
.deployment-tree-icon-v38 { flex: 0 0 18px; width: 18px; height: 18px; margin-top: 3px; display: grid; place-items: center; border-radius: 3px; color: #fff; background: var(--pg-success); }
.deployment-tree-icon-v38.fault { background: var(--pg-danger); }
.deployment-tree-icon-v38 svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.deployment-alert-v38 { margin: 5px 0 0 1px; color: var(--pg-danger); font-size: 11px!important; font-style: normal; line-height: 16px; }
.deployment-group-v38 { min-height: 49px; cursor: pointer; }
.deployment-dot-v38 { flex: 0 0 8px; width: 8px; height: 8px; margin-top: 9px; border-radius: 50%; background: #b9c1c6; }
.deployment-dot-v38.online { background: #28a96f; }
.deployment-dot-v38.offline { background: #b9c1c6; }
.deployment-node-copy-v38 { min-width: 0; display: flex; flex-direction: column; }
.deployment-node-copy-v38 > b { font-size: 13px!important; line-height: 22px; }
.deployment-metrics-v38 { display: flex; align-items: center; gap: 6px; white-space: nowrap; font-size: 12px!important; line-height: 18px; }
.deployment-metrics-v38 b { color: var(--pg-success); font-size: inherit!important; }
.deployment-metrics-v38 em { color: var(--pg-danger); font-size: inherit!important; font-style: normal; }
.deployment-metrics-v38 strong { color: var(--pg-warning); font-size: inherit!important; }
.deployment-metrics-v38 i { color: #aab5bc; font-size: inherit!important; font-style: normal; }
.deployment-site-box-v38 { position: relative; z-index: 2; margin: 0 0 6px 27px; padding: 3px; display: grid; gap: 1px; border: 1px solid #dfe7ea; border-radius: 7px; background: #fff; box-shadow: 0 2px 8px rgba(27,53,68,.05); }
.deployment-site-v38 { width: 100%; height: 31px; padding: 0 8px; display: grid; grid-template-columns: 8px minmax(0,1fr) auto; align-items: center; gap: 8px; border: 1px solid transparent; border-radius: 4px; background: #fff; color: var(--pg-text); text-align: left; cursor: pointer; }
.deployment-site-v38:hover { background: #f5faf9; }
.deployment-site-v38:focus-visible { outline: 2px solid rgba(23,125,112,.28); outline-offset: 1px; }
.deployment-site-v38.active { border-color: #c9e5df; background: linear-gradient(90deg,#def4ed 0%,#f3fbf8 100%); box-shadow: 0 1px 4px rgba(23,125,112,.12); }
.deployment-site-v38 > b { overflow: hidden; font-size: 13px!important; line-height: 20px; text-overflow: ellipsis; white-space: nowrap; }
.deployment-site-v38 > em { font-size: 11px!important; font-style: normal; line-height: 18px; white-space: nowrap; }
.deployment-site-v38 > em.fault { color: var(--pg-danger); }
.deployment-site-v38 > em.unreachable { color: var(--pg-warning); letter-spacing: -2px; }
.deployment-site-v38 > em.offline { color: #b9c1c6; letter-spacing: -2px; }
.deployment-site-v38 .deployment-dot-v38 { margin-top: 0; }
.deployment-more-v38 { position: relative; z-index: 2; height: 28px; padding-left: 31px; color: var(--pg-text); font-weight: 600; line-height: 28px; }
.deployment-line-v39 { min-height: 49px; cursor: pointer; }
.deployment-line-v39 .deployment-node-copy-v38 { flex: 1; }
.deployment-line-v39 .deployment-alert-v38 { margin-left: auto; }
.deployment-line-icon-v39 { background: var(--pg-success); }
@media(max-width:1180px){
  .deployment-layout-v17 { grid-template-columns: 272px minmax(0,1fr); }
  .network-topology-layout-v26 { grid-template-columns: 272px minmax(0,1fr) 190px; }
  .deployment-tree-scroll-v38 { padding-left: 7px; padding-right: 7px; }
  .deployment-children-v38 { margin-left: 17px; }
}

/* 按部署查看 v41 */
.deployment-workspace-body-v41 { grid-template-columns: 292px minmax(0,1fr) 300px; }
.deployment-location-tree-v41 { min-width: 0; border-right: 1px solid var(--pg-border); background: #fff; }
.deployment-location-tree-v41 > header { padding: 12px 10px 10px; border-bottom: 1px solid var(--pg-border); }
.deployment-location-tree-v41 h3 { margin: 0 0 8px; font-size: 14px!important; line-height: 22px; }
.deployment-tree-search-v41 { height: 32px; padding: 0 8px; display: flex; align-items: center; gap: 6px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; }
.deployment-tree-search-v41:focus-within { border-color: var(--pg-primary); box-shadow: 0 0 0 2px rgba(23,125,112,.1); }
.deployment-tree-search-v41 > span { color: var(--pg-muted); font-size: 16px; }
.deployment-tree-search-v41 input { min-width: 0; flex: 1; border: 0; outline: 0; background: transparent; color: var(--pg-text); font-size: 13px; }
.deployment-tree-search-v41 button { width: 22px; height: 22px; padding: 0; border: 0; background: transparent; color: var(--pg-muted); cursor: pointer; font-size: 17px; }
.deployment-location-tree-v41 .deployment-tree-scroll-v38 { height: calc(100% - 85px); }
.deployment-location-tree-v41 .deployment-node-v38 { width: 100%; border: 0; background: transparent; text-align: left; cursor: pointer; }
.deployment-location-tree-v41 .deployment-node-v38:hover,.deployment-location-tree-v41 .deployment-node-v38.active { background: var(--pg-primary-soft); color: var(--pg-primary); }
.deployment-location-tree-v41 .deployment-site-v38 > span:nth-child(2) { min-width: 0; flex: 1; }
.deployment-location-tree-v41 .deployment-site-v38 small { margin-top: 1px; display: block; color: var(--pg-secondary); font-size: 11px!important; font-weight: 400; line-height: 17px; white-space: nowrap; }
.deployment-location-tree-v41 .deployment-site-v38.search-match { background: #fff6df; box-shadow: inset 0 0 0 1px #efd9a3; }
.deployment-location-tree-v41 .deployment-site-v38[hidden],.deployment-location-tree-v41 [data-line-search][hidden],.deployment-location-tree-v41 [data-center-search][hidden] { display: none!important; }
.deployment-site-box-v41 { margin-bottom: 5px; }
.deployment-tree-empty-v41 { margin: 18px 8px; padding: 18px 8px; color: var(--pg-muted); font-size: 12px!important; text-align: center; }
.deployment-current-scope-v41 { min-width: 250px; display: grid; align-self: center; }
.deployment-current-scope-v41 span,.deployment-current-scope-v41 small { color: var(--pg-secondary); font-size: 12px!important; line-height: 18px; }
.deployment-current-scope-v41 strong { font-size: 14px!important; line-height: 20px; }
.deployment-filter-v41 label { margin-left: 16px; }
.deployment-site-row-v40 { flex-wrap: wrap; }
.deployment-site-row-v40 .deployment-topology-node-v40 { min-width: 190px; }
@media(max-width:1180px){
  .deployment-workspace-body-v41 { grid-template-columns: 272px minmax(680px,1fr) 280px; overflow-x: auto; }
  .deployment-current-scope-v41 { min-width: 220px; }
  .deployment-filter-v41 label { margin-left: 0; }
}
@media(max-width:1024px){.network-topology-layout-v26{grid-template-columns:272px minmax(620px,1fr) 190px}}

/* 按部署查看 v40：网络拓扑工作台 */
.deployment-workspace-v40 { display: grid; gap: 12px; }
.deployment-filter-v40 { min-height: 58px; padding: 10px 12px; display: flex; align-items: flex-end; gap: 10px; border: 1px solid var(--pg-border); border-radius: 7px; background: #fff; }
.deployment-filter-v40 label { width: 190px; display: grid; gap: 3px; }
.deployment-filter-v40 label > span { color: var(--pg-secondary); font-size: 12px!important; line-height: 18px; }
.deployment-filter-v40 select { width: 100%; height: 32px; padding: 0 28px 0 9px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-text); }
.deployment-filter-v40 select:focus { border-color: var(--pg-primary); outline: 0; box-shadow: 0 0 0 2px rgba(23,125,112,.1); }
.deployment-abnormal-toggle-v40 { height: 32px; padding: 0 10px; display: flex; align-items: center; gap: 7px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-secondary); cursor: pointer; }
.deployment-abnormal-toggle-v40 i { position: relative; width: 28px; height: 16px; border-radius: 8px; background: #c8d1d6; }
.deployment-abnormal-toggle-v40 i::after { content: ""; position: absolute; top: 2px; left: 2px; width: 12px; height: 12px; border-radius: 50%; background: #fff; transition: transform .15s; }
.deployment-abnormal-toggle-v40.active { border-color: #b7d9d2; color: var(--pg-primary); background: var(--pg-primary-soft); }
.deployment-abnormal-toggle-v40.active i { background: var(--pg-primary); }
.deployment-abnormal-toggle-v40.active i::after { transform: translateX(12px); }
.deployment-filter-note-v40 { margin-left: auto; padding-bottom: 6px; color: var(--pg-muted); font-size: 12px!important; }
.deployment-summary-v40 { min-height: 88px; display: grid; grid-template-columns: repeat(4, minmax(120px, .7fr)) minmax(330px, 1.8fr); border: 1px solid var(--pg-border); border-radius: 7px; background: #fff; overflow: hidden; }
.deployment-summary-v40 > article { padding: 12px 16px; display: flex; flex-direction: column; justify-content: center; border-right: 1px solid var(--pg-border); }
.deployment-summary-v40 article span { color: var(--pg-secondary); font-size: 12px!important; }
.deployment-summary-v40 article strong { margin-top: 2px; color: var(--pg-text); font-size: 24px!important; line-height: 30px; }
.deployment-summary-v40 article.online strong { color: var(--pg-success); }
.deployment-summary-v40 article.fault strong { color: var(--pg-danger); }
.deployment-summary-v40 article.offline strong { color: #65747d; }
.deployment-status-help-v40 { padding: 10px 14px; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-content: center; gap: 2px 12px; }
.deployment-status-help-v40 > b { grid-column: 1/-1; font-size: 12px!important; }
.deployment-status-help-v40 span,.deployment-legend-v40 span { display: flex; align-items: center; gap: 5px; color: var(--pg-secondary); font-size: 12px!important; white-space: nowrap; }
.deployment-status-help-v40 i,.deployment-legend-v40 i { width: 7px; height: 7px; border-radius: 50%; background: var(--pg-success); }
.deployment-status-help-v40 i.fault,.deployment-legend-v40 i.fault { background: var(--pg-danger); }
.deployment-status-help-v40 i.offline,.deployment-legend-v40 i.offline { background: #89979f; }
.deployment-status-help-v40 i.unreachable,.deployment-legend-v40 i.unreachable { background: var(--pg-warning); }
.deployment-workspace-body-v40 { min-height: 675px; display: grid; grid-template-columns: minmax(0,1fr) 300px; border: 1px solid var(--pg-border); border-radius: 7px; background: #fff; overflow: hidden; }
.deployment-topology-card-v40 { min-width: 0; background: #fbfcfd; }
.deployment-topology-card-v40 > header { height: 58px; padding: 8px 14px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--pg-border); background: #fff; }
.deployment-topology-card-v40 h2,.deployment-topology-card-v40 p { margin: 0; }
.deployment-topology-card-v40 h2 { font-size: 16px!important; line-height: 24px; }
.deployment-topology-card-v40 p { color: var(--pg-secondary); font-size: 12px!important; }
.deployment-legend-v40 { display: flex; gap: 13px; }
.deployment-topology-scroll-v40 { height: 616px; overflow: auto; }
.deployment-topology-canvas-v40 { min-width: 790px; padding: 16px 20px 28px; display: flex; flex-direction: column; align-items: center; }
.deployment-service-layer-v40 { width: min(760px,100%); padding: 10px 12px; border: 1px dashed #cddade; border-radius: 7px; background: #fff; }
.deployment-service-layer-v40 > strong { display: block; margin-bottom: 8px; text-align: center; }
.deployment-service-layer-v40 > div { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.deployment-flow-arrow-v40 { height: 27px; color: #73868f; font-size: 18px!important; line-height: 27px; }
.deployment-network-layer-v40 { display: flex; flex-direction: column; align-items: center; }
.deployment-network-layer-v40 > span { height: 25px; color: #73868f; line-height: 25px; }
.deployment-switch-row-v40 { display: flex; gap: 18px; }
.deployment-topology-node-v40 { position: relative; width: 235px; min-height: 57px; padding: 7px 9px; display: grid; grid-template-columns: 28px minmax(0,1fr) auto; align-items: center; gap: 7px; border: 1px solid #b8d8d1; border-radius: 5px; background: #fff; color: var(--pg-text); text-align: left; cursor: pointer; }
.deployment-topology-node-v40:hover { border-color: var(--pg-primary); background: #f8fcfb; }
.deployment-topology-node-v40:focus-visible { outline: 2px solid rgba(23,125,112,.25); outline-offset: 2px; }
.deployment-topology-node-v40.selected { box-shadow: 0 0 0 2px rgba(23,125,112,.2); }
.deployment-topology-node-v40.fault { border-color: #eba6a2; background: #fff8f7; }
.deployment-topology-node-v40.offline { border-color: #cbd3d7; background: #f5f7f8; color: #65747d; }
.deployment-topology-node-v40.unreachable { border-style: dashed; border-color: #e7a13b; background: #fffaf1; }
.deployment-topology-node-v40.context { opacity: .58; }
.deployment-node-icon-v40 { width: 26px; height: 26px; display: grid; place-items: center; color: var(--pg-primary); }
.deployment-topology-node-v40.fault .deployment-node-icon-v40 { color: var(--pg-danger); }
.deployment-topology-node-v40.offline .deployment-node-icon-v40 { color: #788791; }
.deployment-node-icon-v40 svg { width: 23px; height: 23px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.deployment-topology-node-v40 strong,.deployment-topology-node-v40 small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.deployment-topology-node-v40 strong { font-size: 13px!important; line-height: 20px; }
.deployment-topology-node-v40 small { color: var(--pg-secondary); font-size: 12px!important; line-height: 18px; }
.deployment-topology-node-v40 > em { color: var(--pg-success); font-size: 12px!important; font-style: normal; }
.deployment-topology-node-v40.fault > em { color: var(--pg-danger); }
.deployment-topology-node-v40.offline > em { color: #65747d; }
.deployment-site-group-v40 { width: min(800px,100%); padding: 10px 12px 12px; border: 1px solid #d5e1e4; border-radius: 7px; background: #fff; }
.deployment-site-group-v40 > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.deployment-site-group-v40 header strong,.deployment-site-group-v40 header span { display: block; }
.deployment-site-group-v40 header span,.deployment-site-group-v40 header small { color: var(--pg-secondary); font-size: 12px!important; }
.deployment-site-row-v40 { margin-top: 9px; display: flex; justify-content: center; gap: 10px; }
.deployment-site-row-v40 .deployment-topology-node-v40 { width: 31%; }
.deployment-hardware-v40 { width: min(800px,100%); display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.deployment-hardware-v40 .deployment-topology-node-v40 { width: calc(25% - 8px); }
.deployment-detail-v40 { min-width: 0; border-left: 1px solid var(--pg-border); background: #fff; }
.deployment-detail-v40 > header { padding: 13px 14px 11px; border-bottom: 1px solid var(--pg-border); }
.deployment-detail-v40 h3,.deployment-detail-v40 h4 { margin: 0; font-size: 14px!important; }
.deployment-detail-v40 header > div { margin-top: 9px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.deployment-detail-v40 header strong { font-size: 14px!important; }
.deployment-detail-v40 dl { margin: 0; padding: 8px 14px 12px; border-bottom: 1px solid var(--pg-border); }
.deployment-detail-v40 dl > div { min-height: 31px; padding: 5px 0; display: grid; grid-template-columns: 82px minmax(0,1fr); gap: 6px; border-bottom: 1px solid #edf1f3; }
.deployment-detail-v40 dl > div:last-child { border-bottom: 0; }
.deployment-detail-v40 dt { color: var(--pg-muted); font-size: 12px!important; }
.deployment-detail-v40 dd { min-width: 0; margin: 0; overflow-wrap: anywhere; color: var(--pg-text); font-size: 12px!important; line-height: 20px; }
.deployment-diagnostics-v40,.deployment-alerts-v40 { padding: 12px 14px; border-bottom: 1px solid var(--pg-border); }
.deployment-diagnostics-v40 > div { margin-top: 9px; display: flex; flex-wrap: wrap; gap: 7px; }
.deployment-diagnostics-v40 button { height: 30px; padding: 0 9px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-text); cursor: pointer; }
.deployment-diagnostics-v40 button:hover { border-color: var(--pg-primary); color: var(--pg-primary); }
.deployment-diagnostics-v40 button.primary { border-color: var(--pg-primary); background: var(--pg-primary); color: #fff; }
.deployment-diagnostics-v40 p,.deployment-alerts-v40 p { margin: 8px 0 0; color: var(--pg-muted); font-size: 12px!important; line-height: 20px; }
.deployment-alerts-v40 h4 { display: flex; align-items: center; justify-content: space-between; }
.deployment-alerts-v40 h4 span { color: var(--pg-danger); }
.deployment-alerts-v40 article { margin-top: 9px; padding: 8px 9px; border: 1px solid #f1d1cf; border-radius: 4px; background: #fff8f7; }
.deployment-alerts-v40 article b,.deployment-alerts-v40 article span { display: block; font-size: 12px!important; }
.deployment-alerts-v40 article b { color: #a43e3b; }
.deployment-alerts-v40 article span { margin-top: 2px; color: var(--pg-muted); }
@media(max-width:1180px){
  .deployment-filter-v40 { flex-wrap: wrap; }
  .deployment-filter-note-v40 { width: 100%; margin-left: 0; padding: 0; }
  .deployment-summary-v40 { grid-template-columns: repeat(4,1fr); }
  .deployment-status-help-v40 { grid-column: 1/-1; border-top: 1px solid var(--pg-border); }
  .deployment-workspace-body-v40 { grid-template-columns: minmax(680px,1fr) 280px; overflow-x: auto; }
}

/* v41 最终层叠：左树、拓扑、详情三栏 */
.deployment-workspace-body-v40.deployment-workspace-body-v41 { grid-template-columns: 292px minmax(0,1fr) 300px; }
@media(max-width:1180px){
  .deployment-workspace-body-v40.deployment-workspace-body-v41 { grid-template-columns: 272px minmax(680px,1fr) 280px; overflow-x: auto; }
}

/* v42：紧凑部署拓扑工作区 */
.deployment-workspace-v42 { gap: 0; }
.deployment-workspace-body-v42 { min-height: calc(100vh - 148px); }
.deployment-location-tree-v42 > header { padding-top: 10px; }
.deployment-tree-title-v42 { min-height: 28px; margin-bottom: 7px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.deployment-tree-title-v42 h3 { margin: 0; }
.deployment-tree-abnormal-v42 { height: 26px; padding: 0 7px; display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-secondary); font-size: 12px!important; cursor: pointer; }
.deployment-tree-abnormal-v42:hover { border-color: var(--pg-primary); color: var(--pg-primary); }
.deployment-tree-abnormal-v42:focus-visible { outline: 0; box-shadow: 0 0 0 2px rgba(23,125,112,.14); }
.deployment-tree-abnormal-v42 i { position: relative; width: 24px; height: 14px; border-radius: 8px; background: #cbd4d9; }
.deployment-tree-abnormal-v42 i::after { content: ""; position: absolute; top: 2px; left: 2px; width: 10px; height: 10px; border-radius: 50%; background: #fff; transition: transform .15s ease; }
.deployment-tree-abnormal-v42.active { border-color: #b9dcd5; color: var(--pg-primary); background: var(--pg-primary-soft); }
.deployment-tree-abnormal-v42.active i { background: var(--pg-primary); }
.deployment-tree-abnormal-v42.active i::after { transform: translateX(10px); }
.deployment-root-v42 { min-height: 49px; }
.deployment-root-v42 .deployment-node-copy-v38 { flex: 1; }
.deployment-root-v42 .deployment-node-copy-v38 > b { font-size: 14px!important; line-height: 21px; }
.deployment-root-metrics-v42 { display: flex; align-items: center; gap: 4px; white-space: nowrap; font-size: 11px!important; line-height: 18px; }
.deployment-root-metrics-v42 b { color: var(--pg-text); }
.deployment-root-metrics-v42 em { color: var(--pg-success); font-style: normal; }
.deployment-root-metrics-v42 strong { color: var(--pg-danger); }
.deployment-root-metrics-v42 u { color: #65747d; text-decoration: none; }
.deployment-root-metrics-v42 i { color: #aab5bc; font-style: normal; }
.deployment-topology-card-v42 > header { height: 68px; }
.deployment-header-tools-v42 { display: flex; align-items: center; gap: 16px; }
.deployment-product-filter-v42 { display: flex; align-items: center; gap: 6px; color: var(--pg-secondary); font-size: 12px!important; }
.deployment-product-filter-v42 select { width: 174px; height: 32px; padding: 0 26px 0 8px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-text); }
.deployment-product-filter-v42 select:focus { border-color: var(--pg-primary); outline: 0; box-shadow: 0 0 0 2px rgba(23,125,112,.1); }
.deployment-topology-card-v42 .deployment-topology-scroll-v40 { height: calc(100vh - 218px); min-height: 616px; }
@media(max-width:1280px){
  .deployment-topology-card-v42 > header { align-items: flex-start; height: 88px; }
  .deployment-header-tools-v42 { align-items: flex-end; flex-direction: column; gap: 4px; }
  .deployment-topology-card-v42 .deployment-topology-scroll-v40 { height: calc(100vh - 238px); }
}

/* v43：中心服务明细与工点内部层级 */
.deployment-location-tree-v42 .deployment-site-v41 { height: auto; min-height: 48px; padding-top: 5px; padding-bottom: 5px; align-items: center; }
.deployment-location-tree-v42 .deployment-site-box-v41 { overflow: visible; }
.deployment-location-tree-v42 .deployment-site-v41 small { overflow: visible; text-overflow: clip; }
.deployment-topology-canvas-v43 { min-width: 860px; align-items: center; }
.deployment-center-services-v43 { width: min(840px,100%); display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
.deployment-service-panel-v43 { min-width: 0; padding: 9px; border: 1px dashed #cadbd7; border-radius: 7px; background: #fff; }
.deployment-service-panel-v43.fault { border-color: #efc3c0; }
.deployment-service-panel-v43 > header { margin-bottom: 7px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.deployment-service-panel-v43 > header strong { font-size: 13px!important; }
.deployment-service-panel-v43 > header span { color: var(--pg-secondary); font-size: 12px!important; }
.deployment-service-panel-v43 > div { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; }
.deployment-mini-node-v43 { min-width: 0; min-height: 47px; padding: 5px 6px; display: grid; grid-template-columns: 20px minmax(0,1fr) auto; align-items: center; gap: 5px; border: 1px solid #cfe1dd; border-radius: 4px; background: #fff; color: var(--pg-text); text-align: left; cursor: pointer; }
.deployment-mini-node-v43:hover,.deployment-mini-node-v43.selected { border-color: var(--pg-primary); background: var(--pg-primary-soft); }
.deployment-mini-node-v43.fault { border-color: #edb4b1; background: #fff8f7; }
.deployment-mini-node-v43.offline { border-color: #d1d9dd; background: #f6f8f9; color: #65747d; }
.deployment-mini-node-v43.context { opacity: .58; }
.deployment-mini-node-v43 > i { display: grid; place-items: center; color: var(--pg-primary); }
.deployment-mini-node-v43.fault > i { color: var(--pg-danger); }
.deployment-mini-node-v43.offline > i { color: #788791; }
.deployment-mini-node-v43 svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.deployment-mini-node-v43 span,.deployment-mini-node-v43 b,.deployment-mini-node-v43 small { min-width: 0; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.deployment-mini-node-v43 b { font-size: 12px!important; line-height: 18px; }
.deployment-mini-node-v43 small { color: var(--pg-muted); font-size: 10px!important; line-height: 16px; }
.deployment-mini-node-v43 > em { color: var(--pg-success); font-size: 10px!important; font-style: normal; }
.deployment-mini-node-v43.fault > em { color: var(--pg-danger); }
.deployment-mini-node-v43.offline > em { color: #65747d; }
.deployment-current-site-v43 { width: min(860px,100%); border: 1px solid #cddde0; border-radius: 7px; background: #fff; overflow: hidden; }
.deployment-current-site-v43 > header { min-height: 54px; padding: 8px 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--pg-border); background: #f7fafb; }
.deployment-current-site-v43 > header strong,.deployment-current-site-v43 > header span { display: block; }
.deployment-current-site-v43 > header strong { font-size: 14px!important; }
.deployment-current-site-v43 > header span { color: var(--pg-secondary); font-size: 12px!important; }
.deployment-current-site-v43 > header > div:last-child { display: flex; gap: 12px; font-size: 12px; }
.deployment-current-site-v43 > header b { color: var(--pg-success); }
.deployment-current-site-v43 > header em { color: var(--pg-danger); font-style: normal; }
.deployment-site-section-v43 { padding: 10px 12px 12px; }
.deployment-site-section-v43 + .deployment-site-section-v43 { border-top: 1px solid var(--pg-border); }
.deployment-site-section-v43 h4 { margin: 0 0 8px; display: flex; align-items: center; justify-content: space-between; font-size: 13px!important; }
.deployment-site-section-v43 h4 span { color: var(--pg-muted); font-size: 11px!important; font-weight: 400; }
.deployment-direct-hardware-v43 { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 7px; }
.deployment-host-grid-v43 { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; align-items: start; }
.deployment-host-lane-v43 { min-width: 0; border: 1px solid #c9ded9; border-radius: 5px; overflow: hidden; }
.deployment-host-lane-v43.unknown { border-color: #d4dce0; }
.deployment-host-head-v43 { width: 100%; min-height: 48px; padding: 5px 8px; display: grid; grid-template-columns: 24px minmax(0,1fr) auto; align-items: center; gap: 6px; border: 0; border-bottom: 1px solid var(--pg-border); background: #f2f9f7; color: var(--pg-text); text-align: left; cursor: pointer; }
.deployment-host-head-v43:hover { background: var(--pg-primary-soft); }
.deployment-host-head-v43 > i { color: var(--pg-primary); }
.deployment-host-head-v43 svg { width: 21px; height: 21px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.deployment-host-head-v43 span b,.deployment-host-head-v43 span small { display: block; }
.deployment-host-head-v43 b { font-size: 13px!important; }
.deployment-host-head-v43 small { color: var(--pg-muted); font-size: 11px!important; }
.deployment-host-head-v43 em { color: var(--pg-success); font-size: 11px!important; font-style: normal; }
.deployment-host-content-v43 { padding: 8px; display: grid; gap: 8px; }
.deployment-host-content-v43 h5 { margin: 0 0 5px; color: var(--pg-secondary); font-size: 11px!important; }
.deployment-host-products-v43 > p { margin: 5px 0; color: var(--pg-muted); font-size: 11px!important; }
.deployment-product-group-v43 { margin-bottom: 7px; border: 1px solid var(--pg-border); border-radius: 4px; overflow: hidden; }
.deployment-product-group-v43:last-child { margin-bottom: 0; }
.deployment-product-group-v43 > button { width: 100%; min-height: 38px; padding: 4px 7px; display: flex; align-items: center; justify-content: space-between; gap: 8px; border: 0; border-bottom: 1px solid var(--pg-border); background: #f8fbfb; color: var(--pg-text); text-align: left; cursor: pointer; }
.deployment-product-group-v43 > button:hover { background: var(--pg-primary-soft); }
.deployment-product-group-v43 > button b,.deployment-product-group-v43 > button small { display: block; }
.deployment-product-group-v43 > button b { font-size: 12px!important; }
.deployment-product-group-v43 > button small { color: var(--pg-muted); font-size: 10px!important; }
.deployment-product-group-v43 > button em { color: var(--pg-success); font-size: 10px!important; font-style: normal; }
.deployment-product-group-v43.fault > button em { color: var(--pg-danger); }
.deployment-product-group-v43 > div,.deployment-host-public-v43 > div { padding: 6px; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; }
.deployment-host-public-v43 > div { padding: 0; }
.deployment-product-group-v43 .deployment-mini-node-v43,.deployment-host-public-v43 .deployment-mini-node-v43 { min-height: 42px; }
@media(max-width:1280px){
  .deployment-topology-canvas-v43 { min-width: 820px; }
  .deployment-center-services-v43,.deployment-current-site-v43 { width: 800px; }
}

/* v44：按关系折叠路由器层级，线路独立管理 */
.deployment-location-tree-v44 .deployment-router-v44 { min-height: 50px; }
.deployment-location-tree-v44 .deployment-router-v44 .deployment-tree-icon-v38 { background: var(--pg-primary); }
.deployment-location-tree-v44 .deployment-router-flat-v44 { margin-left: 19px; }
.deployment-location-tree-v44 .deployment-site-v44.flattened { min-height: 63px; margin: 3px 0; border: 1px solid var(--pg-border); border-radius: 5px; background: #fff; }
.deployment-location-tree-v44 .deployment-site-v44.flattened.active { border-color: #b8dcd5; background: var(--pg-primary-soft); }
.deployment-location-tree-v44 .deployment-site-relation-v44 { color: var(--pg-muted); }
.deployment-location-tree-v44 .deployment-router-branch-v44 + .deployment-router-flat-v44,
.deployment-location-tree-v44 .deployment-router-flat-v44 + .deployment-router-branch-v44,
.deployment-location-tree-v44 .deployment-router-flat-v44 + .deployment-router-flat-v44 { margin-top: 5px; }
.deployment-line-manage-v44 { height: 32px; padding: 0 10px; display: inline-flex; align-items: center; gap: 5px; flex: 0 0 auto; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-text); font-size: 12px!important; cursor: pointer; }
.deployment-line-manage-v44:hover { border-color: var(--pg-primary); color: var(--pg-primary); background: var(--pg-primary-soft); }
.deployment-line-manage-v44:focus-visible { outline: 0; box-shadow: 0 0 0 2px rgba(23,125,112,.12); }
.deployment-line-manage-v44 svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.deployment-line-filter-v45 { display: flex; align-items: center; gap: 6px; color: var(--pg-secondary); font-size: 12px!important; }
.deployment-line-filter-v45 select { width: 174px; height: 32px; padding: 0 26px 0 8px; border: 1px solid var(--pg-border); border-radius: 4px; background: #fff; color: var(--pg-text); }
.deployment-line-filter-v45 select:focus { border-color: var(--pg-primary); outline: 0; box-shadow: 0 0 0 2px rgba(23,125,112,.1); }
.deployment-line-management-v44 { min-width: 0; }
.deployment-line-toolbar-v44 { margin-bottom: 12px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.deployment-line-toolbar-v44 strong,.deployment-line-toolbar-v44 span { display: block; }
.deployment-line-toolbar-v44 span { margin-top: 2px; color: var(--pg-secondary); font-size: 12px; }
.deployment-line-management-v44 .table-wrap { max-height: 360px; overflow: auto; border: 1px solid var(--pg-border); border-radius: 4px; }
.deployment-line-management-v44 .data-table { min-width: 720px; }
@media(max-width:1280px){
  .deployment-header-tools-v42 { gap: 7px; }
  .deployment-line-manage-v44 { padding: 0 7px; }
}
