/* ==================================================================
   数织 UI 改版 · 覆盖层 v2（B 明彩工作台）
   ------------------------------------------------------------------
   只有 <html class="ui2"> 时生效（?ui=2 由引导脚本加 class）。
   布局全部沿用原 assets/style.css，本文件只改颜色 / 字号 / 间距 /
   圆角 / 边框；唯一例外是经营总览 KPI 卡（改 flex 以容纳图标块）。
   方向：浅灰底 #F4F7FB + 深蓝侧栏 #202B4B + 主色 #2E6BFF；
   彩色只在小面积：导航图标、KPI 图标块、状态标签、按钮。
   大面积（底 / 面板 / 边框）全部低饱和。无渐变、无发光、无网格。
   7 色语义不变：蓝 绿 红 灰（动作）/ 黄 青 柠檬（状态）。
   ================================================================== */

/* ---------- 1. 变量：覆盖原 :root，原 CSS 里所有 var() 自动跟随 ---------- */
html.ui2{
  --bg:#F4F7FB;
  --card:#FFFFFF;
  --side:#202B4B;      /* B 深蓝侧栏 */
  --side-2:#2A3760;
  --ink:#1B2437;
  --ink-2:#55617A;
  --ink-3:#8B96AB;
  --line:#E4EAF2;
  --brand:#2E6BFF;
  --brand-2:#4E86FF;
  --ok:#0E9F6E;
  --warn:#B45309;
  --err:#E5484D;
  --radius:8px;
  /* 7 色阶变量：k1 浅底 / k2 浅边 / k3 主色 / k4 悬停 / k5 按下 / kt 实心文字 / kf 彩边文字 */
  --k1:#EAF1FF; --k2:#C7DBFF; --k3:#2E6BFF; --k4:#4E86FF; --k5:#1D52D8; --kt:#FFFFFF; --kf:#2E6BFF;
}

/* ---------- 2. 全局 ---------- */
html.ui2 body{background:var(--bg);color:var(--ink);font-size:13px;line-height:1.5}
html.ui2 .muted{color:var(--ink-3);font-size:12px}
html.ui2 .mono{font-size:12px}
html.ui2 .req{color:var(--err)}
html.ui2 .content{padding:20px 28px 48px}

/* ---------- 3. 侧栏：B 深蓝 #202B4B，图标按分组着色（JS 注入 SVG） ----------
   侧栏底色是中性承载面，不计入 7 色语义；
   选中项用 #324273 实底白字，不用主色，避免长条高饱和。 */
html.ui2 .sidebar{background:var(--side);border-right:1px solid #2E3A5E}
html.ui2 .brand{border-bottom:1px solid #2E3A5E;padding:16px 18px}
html.ui2 .brand-txt b{color:#FFFFFF;font-size:13.5px;font-weight:500}
html.ui2 .brand-txt small{color:#8FA3C8;font-size:9px}
html.ui2 .nav-sec{color:#8296BC;font-size:11px;font-weight:400;letter-spacing:.04em;padding:14px 12px 5px}
html.ui2 .nav-item{color:#C3CFE4;font-size:13px;border-radius:8px;padding:9px 12px;margin-bottom:2px}
html.ui2 .nav-item i{opacity:1;color:#8FA3C8;display:inline-flex;width:17px;justify-content:center}
html.ui2 .nav-item i svg{width:16px;height:16px;display:block}
html.ui2 .nav-item:hover{background:var(--side-2);color:#FFFFFF}
html.ui2 .nav-item:hover i{color:#FFFFFF}
html.ui2 .nav-item.active{background:#344680;color:#FFFFFF;font-weight:500}
/* JS 给图标写了内联分组色，选中态需 !important 才能转白 */
html.ui2 .nav-item.active i{color:#FFFFFF!important}
html.ui2 .side-foot{border-top:1px solid #2E3A5E}
html.ui2 .avatar{background:#324273;color:#AEC6FF}
html.ui2 .user-meta b{color:#E8EEF7;font-weight:500}
html.ui2 .user-meta small{color:#8FA3C8}
html.ui2 .side-foot .btn-link{color:#9DB3D0}
html.ui2 .side-foot .btn-link:hover{color:#FFFFFF}
/* 徽标在深底上保留白底，去掉原投影，避免发光感 */
html.ui2 .sidebar .logo-mark.img{background:#FFFFFF;box-shadow:none}

/* ---------- 4. 顶栏 ---------- */
html.ui2 .topbar{height:56px;background:#FFFFFF;border-bottom:1px solid var(--line)}
html.ui2 .topbar h2{font-size:14px;font-weight:500;letter-spacing:0}

/* ---------- 5. 卡片 / KPI ---------- */
html.ui2 .card{background:#FFFFFF;border:1px solid var(--line);border-radius:10px;box-shadow:none}
html.ui2 .card-head{padding:10px 16px;border-bottom:1px solid #EDF1F7}
html.ui2 .card-head h3{font-size:13px;font-weight:500;color:#1B2437}
html.ui2 .card-head.sub{border-top:1px solid var(--line)}
html.ui2 .card-sub{padding:12px 16px 4px}
html.ui2 .card-sub h4{font-size:12px;font-weight:500;color:#55617A}
html.ui2 .kpi{background:#FFFFFF;border:1px solid var(--line);border-radius:10px;padding:16px}
html.ui2 .kpi-label{font-size:12px;color:#8B96AB;font-weight:400}
html.ui2 .kpi-val{font-size:22px;font-weight:600;letter-spacing:-.2px;color:#1B2437;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
html.ui2 .kpi-sub{font-size:11px;color:#8B96AB}
/* 经营总览四张 KPI 浅彩卡 + 彩色图标块（图标由 ui2.js 注入） */
html.ui2 #page-dashboard .kpi-row .kpi{display:flex;align-items:flex-start;gap:12px}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(1){background:#EAF1FF;border-color:#D5E3FF}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(2){background:#F1EDFE;border-color:#E3D9FB}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(3){background:#E4F8F5;border-color:#CBF0EA}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(4){background:#FFF3E0;border-color:#FFE6C0}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(1) .kpi-val{color:#17347D}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(2) .kpi-val{color:#3D2A8F}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(3) .kpi-val{color:#0A5A52}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(4) .kpi-val{color:#8F4E0A}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(1) .kpi-label,
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(1) .kpi-sub{color:#5B79C4}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(2) .kpi-label,
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(2) .kpi-sub{color:#8472C9}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(3) .kpi-label,
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(3) .kpi-sub{color:#4B9C94}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(4) .kpi-label,
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(4) .kpi-sub{color:#B07C3F}
html.ui2 .u2-kpi-ico{width:38px;height:38px;border-radius:10px;flex:none;
  display:grid;place-items:center;color:#FFFFFF}
html.ui2 .u2-kpi-ico svg{width:19px;height:19px}
html.ui2 .u2-kpi-text{min-width:0}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(1) .u2-kpi-ico{background:#2E6BFF}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(2) .u2-kpi-ico{background:#7C5CFF}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(3) .u2-kpi-ico{background:#14B8A6}
html.ui2 #page-dashboard .kpi-row .kpi:nth-child(4) .u2-kpi-ico{background:#F59E0B}

/* ---------- 6. 表格：行高 48、表头 12px 常规字重、金额等宽右对齐 ---------- */
html.ui2 .tbl{font-size:13px}
html.ui2 .tbl th{text-align:left;font-size:12px;font-weight:400;color:#8B96AB;
  padding:11px 16px;background:#FFFFFF;border-bottom:1px solid var(--line);
  white-space:nowrap}
html.ui2 .tbl td{padding:14px 16px;border-bottom:1px solid #EDF1F7;color:#55617A;font-size:13px}
html.ui2 .tbl tbody tr:hover td{background:#F7FAFF}
html.ui2 .tbl tbody tr:last-child td{border-bottom:none}
html.ui2 .tbl .num,html.ui2 .tbl td.num{text-align:right;font-weight:500;color:#1B2437;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
html.ui2 .tbl .empty{color:#8B96AB;font-size:12.5px}
html.ui2 .tbl tfoot td{background:#F7F9FC;border-top:1px solid var(--line);font-weight:500;color:#1B2437}
html.ui2 .fixhead .tbl th{background:#FFFFFF;box-shadow:0 1px 0 var(--line)}
/* 密集明细表保留紧凑行高，避免一屏看不到几行；这是功能意图，不改 */
html.ui2 .tbl.compact th,html.ui2 .tbl.compact td{padding:8px 16px;font-size:12.5px}
html.ui2 #tblPlanDetail th,html.ui2 #tblPlanDetail td,
html.ui2 #tblPlanProgress th,html.ui2 #tblPlanProgress td{padding:8px 12px}
html.ui2 #tblPlanDetail thead th,html.ui2 #tblPlanProgress thead th{background:#FFFFFF;box-shadow:0 1px 0 var(--line)}
html.ui2 #tblPlanDetail tfoot td,html.ui2 #tblPlanProgress tfoot td,
html.ui2 #tblProdPlan tfoot td{background:#F7F9FC;border-top:1px solid var(--line)}
html.ui2 #tblPlanDetail thead th:nth-child(1),html.ui2 #tblPlanProgress thead th:nth-child(1),
html.ui2 #tblPlanDetail tfoot td:nth-child(1){background:#F7F9FC}
html.ui2 #tblRp thead th:nth-child(-n+4),html.ui2 #tblRp td:nth-child(-n+4){background:#FFFFFF}
html.ui2 #tblRp tbody tr:hover td:nth-child(-n+4){background:#F7FAFF}
html.ui2 #tblPlanDetail tbody tr:hover td,html.ui2 #tblPlanDetail tbody tr:hover td:nth-child(1),
html.ui2 #tblPlanProgress tbody tr:hover td,html.ui2 #tblPlanProgress tbody tr:hover td:nth-child(1),
html.ui2 #tblProdPlan tbody tr:hover{background:#F7FAFF}
html.ui2 .pager,html.ui2 .actions{background:#FFFFFF;border-top:1px solid var(--line);padding:12px 16px}
html.ui2 tr.ch-grp td,html.ui2 tr.lk-grp td{background:#F7F9FC;color:#55617A}
html.ui2 .inv-sum{background:#F7F9FC;border:1px solid var(--line);color:#55617A;border-radius:8px}
html.ui2 .ov-strip{border:1px solid var(--line);border-radius:10px;background:#FFFFFF}
html.ui2 .ov-strip .ov-l{font-size:12px;color:#8B96AB}
html.ui2 .ov-strip .ov-v{font-size:15px;font-weight:500}
html.ui2 #tblRp td.fac-th,html.ui2 #tblPlanDetail td.fac-col{background:#F7F9FC}
html.ui2 #tblRp td.ok{color:#0E9F6E}
html.ui2 #tblRp td.bad,html.ui2 #tblPlanDetail td.diff-bad,
html.ui2 #tblProdPlan td.diff-bad,html.ui2 #tblPlanProgress td.diff-bad{color:#E5484D;background:#FDECEC}
html.ui2 #tblPlanDetail td.pick{color:#2E6BFF}
html.ui2 #pkgList .tbl td.ok{color:#0E9F6E}
html.ui2 #pkgList .tbl td.bad{color:#B45309}

/* ---------- 7. 按钮：统一尺寸 / 圆角 / 字重 ---------- */
html.ui2 .btn{height:34px;padding:0 14px;border:1px solid var(--line);border-radius:8px;
  font-size:13px;font-weight:400;transition:.12s}
html.ui2 .btn.sm{height:30px;padding:0 12px;font-size:12.5px}
html.ui2 .btn.xs{height:26px;padding:0 10px;font-size:12px}
html.ui2 .btn-block{height:36px;width:100%;margin-top:16px}
html.ui2 .btn-primary{background:#2E6BFF;border-color:#2E6BFF;color:#FFFFFF}
html.ui2 .btn-primary:hover{background:#4E86FF;border-color:#4E86FF}
html.ui2 .btn-primary:active{background:#1D52D8;border-color:#1D52D8}
html.ui2 .btn-primary:disabled{background:#C9CFDA;border-color:#C9CFDA;color:#FFFFFF}
html.ui2 .btn-ghost{background:#FFFFFF;border-color:#E4EAF2;color:#55617A}
html.ui2 .btn-ghost:hover{border-color:#2E6BFF;color:#2E6BFF}
html.ui2 .btn-danger{background:#E5484D;border-color:#E5484D;color:#FFFFFF}
html.ui2 .btn-danger:hover{background:#C23539;border-color:#C23539}
html.ui2 .btn-danger:disabled{background:#C9CFDA;border-color:#C9CFDA}
html.ui2 .btn-link{color:#2E6BFF;font-size:12px}
html.ui2 .btn-link:hover{color:#4E86FF}
html.ui2 .btn-link.danger{color:#E5484D}
html.ui2 .btn-link:disabled{color:#C9CFDA}

/* ---------- 8. 七色语义按钮（class 由 ui2.js 按按钮文案自动打） ---------- */
/* A 动作色：蓝 / 绿 / 红 / 灰 —— 可实心、浅底、白底彩边 */
html.ui2 .u2-blue  {--k1:#EAF1FF;--k2:#C7DBFF;--k3:#2E6BFF;--k4:#4E86FF;--k5:#1D52D8;--kt:#FFFFFF;--kf:#2E6BFF}
html.ui2 .u2-green {--k1:#E4F7EE;--k2:#B3E7CF;--k3:#0E9F6E;--k4:#15B57F;--k5:#0A7A55;--kt:#FFFFFF;--kf:#0A7A55}
html.ui2 .u2-red   {--k1:#FDECEC;--k2:#F6C5C6;--k3:#E5484D;--k4:#EB686C;--k5:#C23539;--kt:#FFFFFF;--kf:#C23539}
html.ui2 .u2-gray  {--k1:#F2F4F8;--k2:#E2E8F0;--k3:#8B96AB;--k4:#A3ADBE;--k5:#6C7789;--kt:#FFFFFF;--kf:#55617A}
/* B 状态色：黄 / 青 / 柠檬 —— 明度高，文字压深一档（--kf），只做白底彩边 */
html.ui2 .u2-gold  {--k1:#FEF3DC;--k2:#F5DFA6;--k3:#D97706;--k4:#E18E1F;--k5:#B46205;--kt:#1B2437;--kf:#9A5A04}
html.ui2 .u2-cyan  {--k1:#E3F6F9;--k2:#B9E6EC;--k3:#0D9DB8;--k4:#17AECB;--k5:#0A7E94;--kt:#1B2437;--kf:#0A7285}
html.ui2 .u2-lime  {--k1:#F2FADF;--k2:#E0F0B0;--k3:#84B414;--k4:#95C726;--k5:#6C9610;--kt:#1B2437;--kf:#5F940A}

html.ui2 .btn.u2-solid{background:var(--k3);border-color:var(--k3);color:var(--kt)}
html.ui2 .btn.u2-solid:hover{background:var(--k4);border-color:var(--k4);color:var(--kt)}
html.ui2 .btn.u2-solid:active{background:var(--k5);border-color:var(--k5)}
html.ui2 .btn.u2-soft{background:var(--k1);border-color:var(--k2);color:var(--kf)}
html.ui2 .btn.u2-soft:hover{background:var(--k1);border-color:var(--k3);color:var(--kf)}
html.ui2 .btn.u2-soft:active{background:var(--k2);border-color:var(--k3)}
html.ui2 .btn.u2-outline{background:#FFFFFF;border-color:var(--k2);color:var(--kf)}
html.ui2 .btn.u2-outline:hover{background:var(--k1);border-color:var(--k3);color:var(--kf)}
html.ui2 .btn.u2-gray.u2-outline{border-color:#E2E8F0;color:#55617A}
html.ui2 .btn.u2-gray.u2-outline:hover{border-color:#8B96AB;color:#1B2437;background:#F2F4F8}
/* 保险：状态色永不实心、永不上浅底，即使 JS 误打也退回白底彩边 */
html.ui2 .btn.u2-gold.u2-solid,html.ui2 .btn.u2-cyan.u2-solid,html.ui2 .btn.u2-lime.u2-solid,
html.ui2 .btn.u2-gold.u2-soft,html.ui2 .btn.u2-cyan.u2-soft,html.ui2 .btn.u2-lime.u2-soft{
  background:#FFFFFF;border-color:var(--k2);color:var(--kf)}
html.ui2 .btn:disabled{opacity:.42}

/* ---------- 9. 徽标 / 标签：同一套 7 色 ---------- */
html.ui2 .badge{border-radius:4px;font-size:12px;font-weight:400;padding:2px 8px}
html.ui2 .badge.ok{background:#E4F7EE;color:#0A7A55}
html.ui2 .badge.warn{background:#FEF3DC;color:#9A5A04}
html.ui2 .badge.err{background:#FDECEC;color:#C23539}
html.ui2 .badge.info{background:#EAF1FF;color:#2E6BFF}
html.ui2 .badge.gray{background:#F2F4F8;color:#55617A}
html.ui2 .chip{background:#EAF1FF;color:#2E6BFF;border:1px solid #C7DBFF;border-radius:4px;font-size:12px;padding:2px 8px}
html.ui2 .chip.miss{background:#F2F4F8;color:#8B96AB;border-color:#E2E8F0}
html.ui2 .chip.warn{background:#FEF3DC;color:#9A5A04;border-color:#F5DFA6}
html.ui2 .chip.good{background:#E4F7EE;color:#0A7A55;border-color:#B3E7CF}
html.ui2 .chip.bad{background:#FDECEC;color:#C23539;border-color:#F6C5C6}
html.ui2 .tag-main{background:#EAF1FF;color:#2E6BFF;border-radius:4px;font-weight:400}
html.ui2 .pm-art{background:#EAF1FF;color:#2E6BFF;border-radius:4px}
html.ui2 .svr-sec.ok{color:#0A7A55;background:#E4F7EE}
html.ui2 .svr-sec.warn{color:#9A5A04;background:#FEF3DC}
html.ui2 .svr-key.on{color:#0A7A55;border-color:#B3E7CF;background:#E4F7EE;border-radius:4px}
html.ui2 .cron-chip{border-radius:4px;background:#FFFFFF;color:#55617A}
html.ui2 .cron-chip:hover{border-color:#2E6BFF;color:#2E6BFF;background:#EAF1FF}

/* ---------- 10. 表单 / 页签 / 提示 ---------- */
html.ui2 .inp{height:34px;padding:0 12px;border:1px solid var(--line);border-radius:8px;
  font-size:13px;color:#1B2437}
html.ui2 .inp:focus{border-color:#2E6BFF;box-shadow:0 0 0 2px rgba(46,107,255,.12)}
html.ui2 .inp.sm{height:30px;font-size:12.5px}
html.ui2 .fld-label{font-size:12px;color:#55617A;font-weight:400}
html.ui2 .fld-err{color:#E5484D;font-size:12px}
html.ui2 .chk input{accent-color:#2E6BFF}
html.ui2 .tbl select.inp{height:28px}
html.ui2 .dash-tabs{background:#EDF1F7;border-radius:8px;padding:3px}
html.ui2 .dash-tab{font-size:13px;font-weight:400;color:#55617A;border-radius:6px;padding:6px 14px}
html.ui2 .dash-tab.active{background:#FFFFFF;color:#2E6BFF;box-shadow:none;font-weight:500}
html.ui2 .pp-seg{border:1px solid var(--line);border-radius:8px}
html.ui2 .pp-seg-btn{color:#8B96AB;font-size:12px}
html.ui2 .pp-seg-btn:hover{background:#F4F7FB}
html.ui2 .pp-seg-btn.active{background:#EAF1FF;color:#2E6BFF;font-weight:500}
html.ui2 .notice{background:#F4F7FB;border:1px solid var(--line);border-radius:8px;
  color:#55617A;font-size:12.5px}
html.ui2 .notice b{color:#1B2437}
html.ui2 .notice.warn{background:#FEF3DC;border-color:#F5DFA6;color:#9A5A04}
html.ui2 .notice.warn b{color:#9A5A04}
html.ui2 .issues.warn,html.ui2 .up-verdict.warn{background:#FEF3DC;border-color:#F5DFA6;color:#9A5A04}
html.ui2 .issues.error,html.ui2 .up-verdict.bad{background:#FDECEC;border-color:#F6C5C6;color:#C23539}
html.ui2 .up-verdict.ok{background:#E4F7EE;border-color:#B3E7CF;color:#0A7A55}
html.ui2 .iss.err,html.ui2 .cp-bad{color:#C23539}
html.ui2 .iss.warn,html.ui2 .cp-warn{color:#9A5A04}
html.ui2 .fld-hint.warn{color:#9A5A04}
html.ui2 .chk-item.bad{border-color:#F6C5C6}
html.ui2 .chk-item.warn{border-color:#F5DFA6}

/* ---------- 11. 上传区 / 弹窗 / 登录 ---------- */
html.ui2 .dropzone{border:1px dashed #C4CDDB;border-radius:10px;background:#FFFFFF;padding:36px 20px}
html.ui2 .dropzone:hover,html.ui2 .dropzone.over{border-color:#2E6BFF;background:#F7FAFF}
html.ui2 #upCard.dragging{border-color:#2E6BFF;background:#F7FAFF;box-shadow:none}
html.ui2 .dz-icon{color:#8B96AB}
html.ui2 .dz-title{font-size:13px;font-weight:500}
html.ui2 .dz-sub{font-size:12px;color:#8B96AB}
html.ui2 .modal-box{background:#FFFFFF;border-radius:10px;border:1px solid var(--line);
  box-shadow:0 8px 24px rgba(27,36,55,.14)}
html.ui2 .modal-box h3{font-size:15px;font-weight:500}
html.ui2 .modal-box p{font-size:12.5px;color:#55617A}
html.ui2 .modal-x{color:#8B96AB;border-radius:8px}
html.ui2 .modal-x:hover{background:#F2F4F8;color:#1B2437}
html.ui2 .login-wrap{background:#F4F7FB}
html.ui2 .login-card{background:#FFFFFF;border:1px solid var(--line);border-radius:10px;
  box-shadow:none;padding:32px}
html.ui2 .logo-mark{background:#2E6BFF;box-shadow:none}
html.ui2 .logo-mark.img{background:#FFFFFF;box-shadow:none}
html.ui2 .login-brand h1{font-size:18px;font-weight:500}
html.ui2 .login-brand p{font-size:12px;color:#8B96AB}
html.ui2 .login-tabs{background:#EDF1F7;border-radius:8px}
html.ui2 .login-tab{font-size:13px;font-weight:400;color:#55617A}
html.ui2 .login-tab.active{color:#2E6BFF;font-weight:500;box-shadow:none}
html.ui2 .who-box{background:#F4F7FB;border-radius:8px;font-size:12.5px;color:#55617A}
html.ui2 .login-note{color:#8B96AB}
html.ui2 .toast{border-radius:8px;font-size:13px;box-shadow:0 6px 20px rgba(27,36,55,.20)}
html.ui2 .toast.err{background:#E5484D}
html.ui2 .toast.ok{background:#0E9F6E}

/* ---------- 12. 脚本管理 / 其它浅蓝底收敛为灰阶 ---------- */
html.ui2 .exec-card{border-radius:10px;box-shadow:none}
html.ui2 .exec-card:hover{border-color:#C7DBFF;box-shadow:none}
html.ui2 .exec-card.accent{border-color:#C7DBFF;background:#FFFFFF}
html.ui2 .exec-steps code{background:#F4F7FB;border:1px solid var(--line);border-radius:4px}
html.ui2 .exec-note{border-top:1px dashed var(--line)}
html.ui2 .pkg-tree{background:#F4F7FB;border:1px solid var(--line);border-radius:8px}
html.ui2 .svr-item{border-radius:8px;background:#FFFFFF}
html.ui2 .svr-key{background:#FFFFFF;border:1px dashed var(--line);border-radius:4px}
html.ui2 .svr-moved{background:#F4F7FB;border:1px dashed var(--line);border-radius:8px}
html.ui2 .wa-kv-row{background:#F4F7FB;border-radius:8px}
html.ui2 .wa-kv-row > span{color:#8B96AB}
html.ui2 .wa-url,html.ui2 .wa-act{color:#2E6BFF}
html.ui2 .pp-note{background:#F4F7FB;border:1px solid var(--line);border-radius:8px;color:#55617A}
html.ui2 .pp-note b{color:#2E6BFF}
html.ui2 .art-bar{background:#F4F7FB;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
html.ui2 .exec-dot.on{box-shadow:0 0 0 3px rgba(14,159,110,.14)}
html.ui2 .exec-dot.off{box-shadow:0 0 0 3px rgba(229,72,77,.12)}

/* ---------- 13. 对照开关浮标（只在 ?ui=2 出现） ---------- */
.u2-float{position:fixed;right:16px;bottom:14px;z-index:700;
  height:28px;padding:0 12px;border:1px solid #E2E8F0;border-radius:8px;
  background:#FFFFFF;color:#55617A;font-size:12px;font-family:inherit;cursor:pointer;
  box-shadow:0 2px 8px rgba(27,36,55,.10)}
.u2-float:hover{border-color:#2E6BFF;color:#2E6BFF}
