*{margin:0;padding:0;box-sizing:border-box;}
:root{
  --bg:#0f172a; --card:#ffffff; --ink:#0f172a; --muted:#64748b;
  --brand:#2563eb; --brand2:#3b82f6; --accent:#06b6d4;
  --ok:#16a34a; --warn:#d97706; --bad:#dc2626;
  --line:#e2e8f0; --soft:#f1f5f9;
}
body{
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  background:linear-gradient(160deg,#0b1220,#14223c 60%,#0f172a);
  min-height:100vh; color:var(--ink); padding:24px 16px 60px;
}
.wrap{width:100%;max-width:1120px;margin:0 auto;}
header{text-align:center;color:#e2f0ff;margin-bottom:20px;}
header h1{font-size:24px;font-weight:800;}
header h1 span{color:var(--accent);}
header p{margin-top:6px;color:#9db4d6;font-size:13.5px;line-height:1.7;}
.card{background:var(--card);border-radius:16px;box-shadow:0 18px 50px rgba(0,0,0,.35);overflow:hidden;margin-bottom:18px;}
.card .head{padding:14px 20px;border-bottom:1px solid var(--line);background:var(--soft);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;}
.card .head h2{font-size:16px;font-weight:800;}
.card .body{padding:18px 20px;}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;}
.tl-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.tl-group label{font-size:13px;font-weight:600;color:var(--muted);}
.btn{padding:9px 15px;border:none;border-radius:9px;cursor:pointer;font-size:13.5px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand2));box-shadow:0 4px 12px rgba(37,99,235,.3);transition:.15s;}
.btn:hover{transform:translateY(-1px);}
.btn.ghost{background:#0f172a;color:#fff;}
.btn.ok{background:linear-gradient(135deg,#16a34a,#22c55e);}
.btn.danger{background:linear-gradient(135deg,#dc2626,#ef4444);}
.btn.sm{padding:4px 9px;font-size:12px;}
select,input{font-family:inherit;font-size:13px;padding:8px 9px;border:1.5px solid var(--line);border-radius:8px;outline:none;color:var(--ink);background:#fff;}
select:focus,input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.14);}
input[type="number"],input[type="text"]{width:110px;}
/* 变压器卡片 */
.tgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px;}
.tcard{border:1px solid var(--line);border-radius:14px;padding:16px;background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.05);position:relative;}
.tcard .tname{font-size:15px;font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.tcard .tname-rt{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;}
.tcard .tkva{font-size:12px;color:var(--muted);margin:3px 0 10px;}
.meter{height:16px;border-radius:999px;background:var(--line);overflow:hidden;position:relative;}
.meter i{display:block;height:100%;border-radius:999px;width:0;transition:width .4s ease;}
.load{font-size:24px;font-weight:800;margin-top:10px;}
.sub{font-size:11.5px;color:var(--muted);margin-top:4px;line-height:1.7;}
.tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;}
.tag.ok{background:#dcfce7;color:#15803d;}
.tag.mid{background:#fef3c7;color:#b45309;}
.tag.bad{background:#fee2e2;color:#b91c1c;}
.label{display:inline-block;font-size:11px;font-weight:600;color:var(--muted);background:var(--soft);border:1px solid var(--line);padding:1px 7px;border-radius:6px;margin-right:6px;}
/* 管理区双栏 */
.cols{display:grid;grid-template-columns:1fr 1.6fr;gap:18px;}
.pl .panel{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;margin-bottom:8px;cursor:pointer;transition:.15s;background:#fff;}
.pl .panel:hover{border-color:var(--brand);}
.pl .panel.sel{border-color:var(--brand);background:#eff6ff;box-shadow:0 0 0 3px rgba(37,99,235,.12);}
.pl .pmeta{display:flex;flex-direction:column;gap:2px;}
.pl .pname{font-weight:700;font-size:13.5px;}
.pl .pmut{font-size:11.5px;color:var(--muted);}
.pl .pact{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;}
.addpanel{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap;}
.addpanel input[type="text"]{flex:1;min-width:160px;width:auto;}
.addpanel input[type="number"]{width:110px;}
.addpanel #pnlCable{flex:0 1 150px;min-width:120px;width:150px;}
.addpanel #pnlLoc{flex:0 1 140px;min-width:120px;width:140px;}
.addpanel .cc,.ovbox .cc{display:flex;align-items:center;gap:5px;white-space:nowrap;flex:none;width:auto;}
.addpanel .cc i,.ovbox .cc i{font-style:normal;color:var(--muted);font-weight:700;}
.addpanel .cc select,.ovbox .fl .cc select{width:86px;flex:none;min-width:0;}
.addpanel .cc input[type="text"],.ovbox .fl .cc input[type="text"]{width:74px;flex:none;min-width:0;}
table{width:100%;border-collapse:collapse;font-size:12.5px;}
th,td{padding:7px 8px;border:1px solid var(--line);text-align:left;}
th{background:#f8fafc;color:#111827;font-weight:700;}
tr:nth-child(even) td{background:#fafbfe;}
.empty{padding:26px;text-align:center;color:var(--muted);font-size:13px;}
.rowadd{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:12px;align-items:end;}
.fb .field{display:flex;flex-direction:column;gap:3px;}
.fb label{font-size:11.5px;color:var(--muted);font-weight:600;}
.fb input,.fb select{width:100%;}
.sugg{margin-top:8px;font-size:12.5px;color:var(--brand);font-weight:600;}
.hint{margin-top:6px;font-size:11.5px;color:var(--muted);}
.bar{display:flex;height:10px;border-radius:6px;overflow:hidden;background:var(--line);}
.bar i{transition:width .3s;}
.dup{margin-top:6px;font-size:11.5px;color:#7c3aed;}
/* 阶段二：底图 */
.mapbox{position:relative;border:1.5px dashed var(--line);border-radius:12px;background:#101c33;overflow:hidden;margin-top:10px;}
.mapbox canvas{display:block;width:100%;height:auto;}
.map-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;}
.map-tools label{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--ink);cursor:pointer;}
.upborder{display:inline-block;font-size:12.5px;color:#334155;}
#mapStatus{font-size:12.5px;color:var(--muted);line-height:1.7;margin-top:8px;}
/* 阶段二：拆旧换新 */
.wi-wrap{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.wi-box h3{font-size:14px;margin-bottom:10px;}
.wi-rm{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px;}
.wi-rm .trgroup{margin-bottom:8px;}
.wi-rm .trgroup>label{font-weight:700;font-size:12.5px;display:block;margin-bottom:4px;}
.wi-rm label.eq{display:flex;align-items:center;gap:6px;font-size:12.5px;padding:3px 6px;border-radius:6px;cursor:pointer;}
.wi-rm label.eq:hover{background:var(--soft);}
.wi-new .lt{list-style:none;border:1px solid var(--line);border-radius:10px;margin-top:8px;max-height:220px;overflow:auto;}
.wi-new .lt li{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;font-size:12.5px;border-bottom:1px dashed var(--line);}
.pvgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:14px;margin-top:6px;}
.pvcard{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;}
.pvcard .pvt{font-weight:800;font-size:13.5px;display:flex;justify-content:space-between;align-items:center;}
.pvrow{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:5px;}
.pvrow b{color:var(--ink);}
.pvarrow{display:flex;align-items:center;gap:8px;margin-top:8px;}
.pvarrow .mini{flex:1;text-align:center;font-size:12px;color:var(--muted);}
.pvarrow .mini b{display:block;font-size:16px;}
.pvfoot{margin-top:10px;display:flex;justify-content:flex-end;gap:8px;}
.selbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;}
.selbar .tt{font-size:13px;font-weight:700;color:var(--muted);}
.tog{display:inline-flex;align-items:center;gap:6px;cursor:pointer;user-select:none;border:1.5px solid var(--line);border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:600;color:var(--muted);background:#fff;transition:.15s;}
.tog input{display:none;}
.tog .dot{width:13px;height:13px;border-radius:50%;border:2px solid var(--line);background:#fff;transition:.15s;}
.tog input:checked + .dot{border-color:var(--brand);background:var(--brand);box-shadow:inset 0 0 0 3px #fff;}
.tog input:checked ~ span{color:var(--brand);}
/* 弹窗 */
.ov{position:fixed;inset:0;background:rgba(15,23,42,.55);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px;}
.ovbox{background:#fff;border-radius:14px;padding:22px 24px;width:100%;max-width:360px;box-shadow:0 24px 60px rgba(0,0,0,.45);}
.ovbox h3{font-size:16px;margin-bottom:16px;}
.ovbox .fl{display:flex;flex-direction:column;gap:5px;margin-bottom:13px;}
.ovbox .fl input[type="number"]{width:100%;}
.ovbox .fl select{width:100%;}
.ovbtns{display:flex;justify-content:flex-end;gap:10px;margin-top:8px;}
/* ---- 整体布局：侧边栏 + 主区 ---- */
.shell{display:flex;align-items:flex-start;gap:18px;max-width:1400px;margin:0 auto;}
.shell .wrap{flex:1;min-width:0;max-width:none;}
/* ---- 侧边栏 ---- */
.sb{
  flex:0 0 300px;position:sticky;top:16px;align-self:flex-start;
  background:linear-gradient(180deg,#0a1220,#101c33);
  border:1px solid #1e2b45;border-radius:16px;overflow:hidden;
  color:#cbd5e1;box-shadow:0 18px 50px rgba(0,0,0,.45);
}
.sb-head{padding:14px 14px 12px;border-bottom:1px solid #1e2b45;background:rgba(37,99,235,.08);display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.sb-brand{min-width:0;}
.sb-title{font-size:17px;font-weight:800;color:#e2f0ff;}
.sb-title span{color:var(--accent);}
.sb-sub{font-size:11px;color:#7f97c0;margin-top:3px;}
.sb-fold{
  flex:none;align-self:flex-start;border:1px solid #2a3b5e;background:rgba(148,163,184,.08);
  color:#7f97c0;font-size:11px;line-height:1;padding:5px 7px;border-radius:7px;cursor:pointer;transition:.15s;
}
.sb-fold:hover{background:rgba(37,99,235,.15);color:#c7dcff;border-color:var(--brand);}
/* 收起状态：只显示细导航条 */
.sbrail{
  flex:0 0 48px;align-self:flex-start;position:sticky;top:16px;
  display:none;flex-direction:column;align-items:center;gap:8px;
  background:linear-gradient(180deg,#0a1220,#101c33);
  border:1px solid #1e2b45;border-radius:14px;padding:12px 0;box-shadow:0 18px 50px rgba(0,0,0,.45);
}
.shell.collapsed .sb{display:none;}
.shell.collapsed .sbrail{display:flex;}
.shell.collapsed .wrap{margin-left:0;}
.sbrail-btn{
  width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid #2a3b5e;background:rgba(148,163,184,.08);color:#8fb3ff;
  font-size:17px;border-radius:9px;cursor:pointer;transition:.15s;
}
.sbrail-btn:hover{background:rgba(37,99,235,.2);color:#c7dcff;border-color:var(--brand);}
@media(max-width:900px){.shell.collapsed .sbrail{position:static;flex-direction:row;width:100%;justify-content:center;}}
.sb-actions{padding:12px 16px 6px;}
.sb-actions .btn{width:100%;}
.sb-modes{display:flex;align-items:center;gap:6px;padding:2px 16px 2px;}
.sb-modes .md{flex:1;padding:4px 6px;font-size:11.5px;font-weight:700;color:#7f97c0;background:transparent;border:1px solid #2a3b5e;border-radius:7px;cursor:pointer;transition:.12s;}
.sb-modes .md:hover{color:#c7dcff;border-color:var(--brand);}
.sb-modes .md.on{color:#fff;background:rgba(37,99,235,.22);border-color:var(--brand);}
.sb-modes .regrp{flex:none;padding:3px 8px;font-size:11px;width:auto;}
.sb-hd{padding:10px 16px 6px;font-size:11px;font-weight:700;color:#7f97c0;text-transform:uppercase;letter-spacing:.5px;}
.sb-tree{max-height:calc(100vh - 260px);overflow:auto;padding:4px 8px 14px;}
.sb-tree::-webkit-scrollbar{width:8px;}
.sb-tree::-webkit-scrollbar-thumb{background:#1e2b45;border-radius:4px;}
.sb-n{margin:2px 0;}
.sb-row{display:flex;align-items:center;gap:6px;padding:7px 8px;border-radius:8px;cursor:pointer;transition:.12s;user-select:none;}
.sb-row:hover{background:rgba(148,163,184,.12);}
.sb-n.sel>.sb-row{background:rgba(37,99,235,.18);box-shadow:inset 2px 0 0 var(--brand);}
.sb-caret{width:14px;flex:none;color:#7f97c0;font-size:11px;text-align:center;transition:transform .15s;}
.sb-caret.o{transform:rotate(0);}
.sb-txt{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;font-weight:600;color:#e2f0ff;}
/* 变压器行两行布局：第一行完整展示名称，第二行容量+负载率 */
.sb-trrow{align-items:flex-start;}
.sb-trrow .sb-pmeta{line-height:1.35;padding:2px 0;}
.sb-trrow .sb-tname{font-weight:700;font-size:13.5px;color:#e2f0ff;white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;}
.sb-trrow .sb-tmeta{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;margin-top:3px;min-width:0;}
.sb-trrow .sb-tcap{flex:none;font-size:9.5px;font-weight:700;color:#8fb3ff;background:rgba(37,99,235,.16);border:1px solid #2a3b5e;border-radius:6px;padding:1px 5px;line-height:1.4;white-space:nowrap;}
.sb-trrow .sb-tlabel{font-size:10.5px;color:#7f97c0;flex:none;white-space:nowrap;}
.sb-trrow .sb-tmeta .sb-meter{flex:1 1 40px;min-width:20px;max-width:56px;}
.sb-trrow .sb-tmeta em{flex:none;white-space:nowrap;}
.sb-ttcap{font-style:normal;font-size:11.5px;font-weight:700;}
.sb-per{display:inline-flex;align-items:center;gap:5px;flex:none;}
.sb-meter{width:46px;height:7px;border-radius:999px;background:#1e2b45;overflow:hidden;flex:none;}
.sb-meter i{display:block;height:100%;border-radius:999px;}
.sb-per em{font-style:normal;font-size:11.5px;font-weight:700;}
.sb-so{font-size:10.5px;color:#7f97c0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px;flex:none;}
.sb-pnrow .sb-txt{font-weight:600;font-size:12.5px;}
.sb-btns{display:inline-flex;align-items:center;gap:2px;flex:none;opacity:0;transition:.12s;}
.sb-row:hover .sb-btns{opacity:1;}
.sbdn{
  border:none;background:transparent;color:#7f97c0;cursor:pointer;font-size:11px;
  padding:2px 4px;border-radius:5px;line-height:1;
}
.sbdn:hover{background:rgba(220,38,38,.15);color:#f87171;}
.sb-ch{margin-left:14px;border-left:1px solid #1e2b45;padding-left:6px;}
.sb-empty{padding:12px;text-align:center;color:#7f97c0;font-size:12px;}
.sb-addpnl{
  width:100%;margin-top:3px;border:1px dashed #2a3b5e;background:transparent;color:#8fb3ff;
  border-radius:7px;padding:5px;font-size:11.5px;font-weight:600;cursor:pointer;transition:.12s;
}
.sb-addpnl:hover{background:rgba(37,99,235,.15);border-color:var(--brand);color:#c7dcff;}
/* 分组视图：组行（组名 + 电柜数量），可点击任意位置展开/收起，右侧 ✎ 重命名 */
.sb-grp .sb-grrow{align-items:flex-start;}
.sb-grrow .sb-pmeta{line-height:1.4;padding:2px 0;min-width:0;}
.sb-grrow .sb-tname{font-weight:700;font-size:13px;color:#c9f7d0;white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;}
.sb-grrow .sb-so{margin-top:3px;flex:none;white-space:nowrap;max-width:none;}
.sb-grrow.drop-target{box-shadow:inset 0 0 0 2px var(--brand);}
.sb-grrow.drop-target.over{background:rgba(37,184,90,.24);box-shadow:inset 0 0 0 2px #22c55e;}
.sb-grp.sel>.sb-row{box-shadow:inset 2px 0 0 #22c55e;}
/* 设备叶子 */
.sb-eq{display:flex;align-items:center;gap:6px;padding:5px 8px;margin:2px 0;border-radius:7px;background:rgba(148,163,184,.07);}
.sb-eqnm{font-size:12px;color:#b7c6e0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sb-eso{font-size:10.5px;color:#7f97c0;flex:none;}
@media(max-width:900px){ .shell{flex-direction:column;} .sb{flex:none;width:100%;position:static;} .sb-tree{max-height:320px;} }
@media(max-width:860px){ .cols{grid-template-columns:1fr;} .wi-wrap{grid-template-columns:1fr;} .board-grid{grid-template-columns:1fr;} .stat-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));} }

/* ============ 两级侧边栏导航 ============ */
.sb-nav{padding:8px 0;}
.sb-navitem{
  width:100%;display:flex;align-items:center;gap:10px;
  padding:8px 16px;border:none;background:transparent;
  color:#cbd5e1;font-size:13px;font-weight:600;
  cursor:pointer;border-radius:8px;transition:.15s;text-align:left;
}
.sb-navitem:hover{background:rgba(148,163,184,.12);}
.sb-navitem.sel{background:rgba(37,99,235,.18);color:#e2f0ff;box-shadow:inset 2px 0 0 var(--brand);}
.sb-navitem span{flex:1;}
.sb-groupt{position:relative;}
.sb-caret2{
  width:14px;flex:none;color:#7f97c0;font-size:11px;line-height:1;
  transition:transform .15s;cursor:pointer;
}
.sb-group.open .sb-caret2{transform:rotate(180deg);}
.sb-groupsub{
  padding-left:30px;margin:0 8px;
  border-left:1px solid #1e2b45;
  display:none;
}
.sb-group.open .sb-groupsub{display:block;}

/* ============ 板块视图切换 ============ */
.view{display:none;}
.view.active{display:block;animation:viewIn .22s ease;}
@keyframes viewIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}

/* ============ 首页综合看板 ============ */
.board-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px;background:rgba(255,255,255,.06);border:1px solid #1e2b45;border-radius:14px;padding:16px 20px;}
.board-head h1{font-size:22px;color:#e2f0ff;font-weight:800;}
.board-head h1 span{color:var(--accent);}
.board-head p{font-size:12.5px;color:#9db4d6;margin-top:3px;}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:14px;margin-bottom:18px;}
.stat-card{
  background:linear-gradient(160deg,#0f172a,#16243f);color:#e2f0ff;
  border:1px solid #1e2b45;border-radius:14px;padding:16px 18px;
  box-shadow:0 10px 30px rgba(0,0,0,.28);position:relative;overflow:hidden;
}
.stat-card::after{content:"";position:absolute;top:-26px;right:-26px;width:70px;height:70px;border-radius:50%;background:rgba(37,99,235,.14);}
.stat-card .dnum{font-size:30px;font-weight:800;line-height:1;color:#fff;}
.stat-card .dlab{font-size:12px;color:#9db4d6;margin-top:7px;font-weight:700;}
.stat-card .dsub{font-size:11px;color:#64748b;margin-top:3px;}
.stat-card .dgn{
  --r:0;
  --cur:#3b82f6;--rem:#23314d;--deg:calc(var(--r)*3.6deg);
  width:64px;height:64px;border-radius:50%;
  background:conic-gradient(var(--cur) 0 var(--deg),var(--rem) var(--deg) 360deg);
  display:flex;align-items:center;justify-content:center;
}
.stat-card .dgn-in{width:46px;height:46px;border-radius:50%;background:#0a1220;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.stat-card .dgn-in b{font-size:16px;color:#fff;line-height:1;}
.stat-card .dgn-in span{font-size:9px;color:#9db4d6;margin-top:2px;}
.board-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:18px;}
.horiz,.stack{position:relative;min-height:60px;max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:11px;padding-top:4px;}
.horiz::-webkit-scrollbar,.stack::-webkit-scrollbar{width:8px;}
.horiz::-webkit-scrollbar-thumb,.stack::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px;}
.hbar-row{display:grid;grid-template-columns:max-content 1fr max-content;align-items:center;gap:10px;font-size:12px;}
.hbar-lbl{color:#334155;font-weight:700;max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hbar-track{height:14px;border-radius:999px;background:#e2e8f0;overflow:hidden;}
.hbar-fill{display:block;height:100%;border-radius:999px;min-width:4px;}
.hbar-val{color:#64748b;font-weight:700;white-space:nowrap;}
.stack-row{display:grid;grid-template-columns:max-content 1fr max-content;align-items:center;gap:10px;font-size:12px;}
.stack-lbl{color:#334155;font-weight:700;max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;z-index:1;}
.stack-track{height:18px;border-radius:5px;display:flex;overflow:hidden;background:#e2e8f0;}
.stack-used{background:linear-gradient(135deg,#2563eb,#3b82f6);}
.stack-rem{background:#cbd5e1;}
.stack-over{background:#ef4444;}
.stack-val{color:#64748b;font-weight:700;white-space:nowrap;}

/* ============ 电柜两行显示：名称整行 + 进线信息 ============ */
.sb-pnl .sb-pnrow{align-items:flex-start;}
.sb-pmeta{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;line-height:1.35;}
.sb-pmeta .sb-txt{flex:1;font-weight:600;font-size:12.5px;white-space:normal;overflow:visible;text-overflow:clip;word-break:break-all;color:#e2f0ff;}
.sb-pmeta .sb-so{flex:none;max-width:none;white-space:normal;font-size:10.5px;color:#7f97c0;line-height:1.5;word-break:break-all;}
.sb-pnl .sb-caret{margin-top:2px;}

/* ============ 长按拖拽迁移 ============ */
.sb-drag-hint{font-size:11px;color:#8fb3ff;background:rgba(37,99,235,.15);border:1px solid #2a3b5e;border-radius:8px;padding:7px 10px;margin:6px 8px;line-height:1.6;}
.sb-tree.drag-pnl .sb-pnrow:not(.sel){opacity:.4;}
.sb-tree.drag-pnl .sb-txt{pointer-events:none;}
.sb-trrow.drop-target{box-shadow:inset 0 0 0 2px var(--brand);}
.sb-trrow.drop-target.over{background:rgba(37,99,235,.32);box-shadow:inset 0 0 0 2px var(--accent);}
/* 跟手拖拽的幽灵小卡 + 拖拽期间禁止页面选中 */
body.dragging-pnl{user-select:none;-webkit-user-select:none;}
.sb-drag-ghost{position:fixed;z-index:10000;pointer-events:none;display:flex;align-items:center;gap:8px;background:linear-gradient(135deg,#1e3a8a,#2563eb);border:1px solid #3b82f6;border-radius:10px;padding:8px 12px;box-shadow:0 12px 30px rgba(0,0,0,.45);max-width:240px;}
.sb-drag-ghost>i{font-style:normal;font-size:14px;color:#93c5fd;}
.sb-drag-ghost>span{font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sb-drag-ghost>em{font-style:normal;font-size:10px;color:#bfdbfe;}

/* ============ 电柜详情卡（右侧） ============ */
#pnlDetailCard .head h2{font-size:16px;}
.pd-line{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13px;border-bottom:1px dashed var(--line);flex-wrap:wrap;}
.pd-line>span{color:var(--muted);font-weight:600;min-width:84px;flex:none;}
.pd-line b{font-weight:700;color:var(--ink);}
.pd-line select{flex:0 1 220px;}
.pd-sub{margin-top:12px;font-size:12px;font-weight:700;color:var(--muted);}
.pd-table{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:6px;}
.pd-th,.pd-tr{display:grid;grid-template-columns:2.2fr 1fr 1fr 1fr 1fr;gap:8px;padding:7px 10px;font-size:12px;}
.pd-th{background:#f8fafc;font-weight:700;color:#111827;}
.pd-tr{border-top:1px solid var(--line);color:#334155;}
.pd-th i,.pd-tr i{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pd-empty{padding:14px;text-align:center;color:var(--muted);font-size:12px;}
.pd-btns{display:flex;gap:8px;justify-content:flex-end;margin-top:12px;}