/* 慎读宇宙集群 — 样式表 */
:root{
  --brand:#0e9577;
  --bg:#f3f4f7; --card:#ffffff; --ink:#16181d; --sub:#8a8f99; --line:#e9ebef;
  --green:#1fbf7a; --grey:#b7bcc5; --blue:#3b7cff; --orange:#ff7a1a; --red:#e5484d;
  --radius:16px; --shadow:0 1px 2px rgba(16,20,30,.04),0 6px 20px rgba(16,20,30,.05);
  --shadow-h:0 2px 6px rgba(16,20,30,.06),0 16px 40px rgba(16,20,30,.10);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI",Roboto,"Helvetica Neue",sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}
.wrap{max-width:1180px;margin:0 auto;padding:20px 16px 64px}
.ic{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px}

/* ===== 顶部 ===== */
header.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:4px 2px 20px}
.brand{display:flex;align-items:center;gap:13px}
.brand .logo{width:44px;height:44px;color:var(--brand)}
.brand .logo svg{width:100%;height:100%}
.brand h1{font-size:20px;font-weight:700;letter-spacing:.3px}
.brand p{font-size:12.5px;color:var(--sub);margin-top:1px}
.top-actions{display:flex;gap:8px;align-items:center}

/* ===== 视图切换 ===== */
.view-toggle{display:flex;background:#fff;border:1px solid var(--line);border-radius:11px;padding:3px;gap:2px}
.vt-btn{width:34px;height:32px;border:none;background:transparent;border-radius:8px;cursor:pointer;color:var(--sub);display:grid;place-items:center;transition:.15s}
.vt-btn .ic{width:16px;height:16px}
.vt-btn.active{background:var(--ink);color:#fff}
.vt-btn:hover:not(.active){color:var(--ink);background:#f3f4f6}

/* ===== 按钮 ===== */
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:11px;padding:9px 14px;font-size:13.5px;cursor:pointer;transition:.16s;font-weight:600;display:inline-flex;align-items:center;gap:7px}
.btn:hover{border-color:#cdd2da;transform:translateY(-1px);box-shadow:0 3px 10px rgba(16,20,30,.06)}
.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.primary:hover{background:#2a2e37}
.icon-btn{width:35px;height:35px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--sub);display:inline-grid;place-items:center;cursor:pointer;transition:.16s;flex:none}
.icon-btn .ic{width:16px;height:16px}
.icon-btn:hover{border-color:#cdd2da;color:var(--ink);transform:translateY(-1px);box-shadow:0 3px 10px rgba(16,20,30,.08)}
.icon-btn.go{color:#fff;background:var(--green);border-color:var(--green)}
.icon-btn.go:hover{background:#17a56a;box-shadow:0 4px 12px rgba(31,191,122,.35)}
.icon-btn.sm{width:30px;height:30px;border-radius:8px}
.icon-btn.sm .ic{width:14px;height:14px}
.icon-btn:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}

/* ===== 汇总条 ===== */
.summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 18px;min-width:104px;box-shadow:var(--shadow)}
.stat .n{font-size:23px;font-weight:700;line-height:1.1}
.stat .l{font-size:12px;color:var(--sub);margin-top:3px;display:flex;align-items:center;gap:5px}
.stat .dot{display:inline-block;width:7px;height:7px;border-radius:50%}

/* ===== 徽章/标签 ===== */
.badge{font-size:10.5px;font-weight:600;padding:2.5px 7px;border-radius:99px;display:inline-flex;align-items:center;gap:4px;letter-spacing:.2px}
.badge .dot{width:5px;height:5px;border-radius:50%}
.badge.on{background:#e5f8ef;color:#0a9b5e}
.badge.off{background:#f1f2f4;color:#8a8f99}
.badge.unk{background:#fdf6e3;color:#b8860b}
.badge.type{background:#eef2ff;color:#4a63d8}
.badge.exit{background:#fff3e6;color:#d97a06}
.badge.self{background:#16181d;color:#fff}
.badge.pub{background:#e6f4ff;color:#096dd9}
.badge.cat{background:#f3eaff;color:#7c3aed}
.tag{font-size:11px;color:var(--sub);background:#f3f4f6;border-radius:6px;padding:2.5px 7px;font-weight:500}
.latency{font-size:11px;font-weight:700;padding:2.5px 8px;border-radius:6px;background:#eef2ff;color:#4a63d8}

/* ===== 卡片网格 ===== */
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(344px,1fr))}
@media (max-width:560px){.grid{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px;transition:.18s;height:100%}
.card:hover{box-shadow:var(--shadow-h);transform:translateY(-2px)}
.card.offline{opacity:.7}
.card-head{display:flex;align-items:flex-start;gap:12px;cursor:pointer;user-select:none}
.avatar{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:18px;flex:none;position:relative}
.avatar .st{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:50%;border:2.5px solid #fff}
.st.on{background:var(--green)} .st.off{background:var(--grey)} .st.unk{background:#f0c040}
.card-title{flex:1;min-width:0}
.card-title .nm{font-size:16px;font-weight:700;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.caret{width:15px;height:15px;color:var(--sub);transition:transform .2s;transform:rotate(-90deg);flex:none;margin-top:14px}
.card.open .caret{transform:rotate(0deg)}
.tags{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap}

/* ===== 资源区 ===== */
.res{display:none;grid-template-columns:1fr 1fr;gap:10px}
.card.open .res{display:grid}
.cell{background:#f8f9fb;border:1px solid #f0f1f4;border-radius:12px;padding:11px 12px}
.cell .k{font-size:11.5px;color:var(--sub);display:flex;align-items:center;gap:6px;margin-bottom:6px;font-weight:600}
.cell .k .ic{width:13px;height:13px}
.cell .v{font-size:14px;font-weight:700}
.cell .v small{font-weight:500;color:var(--sub);font-size:11.5px}
.bar{height:5px;background:#e9ebef;border-radius:99px;overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;border-radius:99px;transition:width .4s}
.res-pending{grid-column:1/-1;background:#f8f9fb;border:1px dashed #d9dde3;border-radius:12px;padding:18px;text-align:center;color:var(--sub);font-size:13px}

/* ===== 卡片操作行（永置底部） ===== */
.ops{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line)}
.ops .spacer{flex:1}
.updated{font-size:11px;color:#b4b9c1}

/* ===== 列表视图 ===== */
.listview{display:flex;flex-direction:column;gap:8px}
.lrow{display:grid;grid-template-columns:2.1fr 1.2fr 1.3fr 1.3fr 1.5fr .9fr 1.3fr;gap:12px;align-items:center;padding:11px 16px;background:#fff;border:1px solid var(--line);border-radius:12px;transition:.15s;box-shadow:var(--shadow)}
.lrow:hover{box-shadow:var(--shadow-h)}
.lrow.lhead{background:transparent;border:none;box-shadow:none;padding:4px 16px;font-size:11.5px;color:var(--sub);font-weight:600;letter-spacing:.3px}
.lrow.offline{opacity:.65}
.lcell{display:flex;align-items:center;gap:8px;min-width:0;font-size:13px}
.lcell.name{font-weight:700;font-size:14px}
.lcell .avatar{width:32px;height:32px;border-radius:9px;font-size:14px}
.lcell .avatar .st{width:10px;height:10px;border-width:2px}
.lcell .sub{font-size:11px;color:var(--sub);font-weight:500}
.lmini{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}
.lmini .row{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--sub)}
.lmini .bar{flex:1;margin-top:0;height:4px}
.lmini .v{font-size:11.5px;font-weight:600;color:var(--ink);min-width:34px}
.lops{display:flex;gap:6px;justify-content:flex-end}
.empty{text-align:center;color:var(--sub);padding:70px 20px}
.foot{text-align:center;color:#c2c7cf;font-size:12px;margin-top:36px}
.loading{display:inline-block;width:16px;height:16px;border:2px solid #e3e6ea;border-top-color:var(--blue);border-radius:50%;animation:sp 0.7s linear infinite;vertical-align:-3px}
@keyframes sp{to{transform:rotate(360deg)}}

/* 列表响应式：小屏隐藏次要列 */
@media (max-width:900px){
  .lrow{grid-template-columns:1.6fr 1fr 1.2fr 1.2fr}
  .lrow .hide-sm{display:none}
}

/* ===== 弹窗 ===== */
.modal-mask{position:fixed;inset:0;background:rgba(15,17,21,.5);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:50;padding:20px}
.modal-mask.show{display:flex}
.modal{background:#fff;border-radius:20px;padding:24px;max-width:452px;width:100%;box-shadow:0 24px 64px rgba(0,0,0,.22);animation:pop .18s;max-height:90vh;overflow-y:auto}
@keyframes pop{from{transform:scale(.95);opacity:0}}
.modal h3{font-size:17px;font-weight:700;margin-bottom:2px}
.modal .sub{font-size:12.5px;color:var(--sub);margin-bottom:18px}
.field{margin-bottom:15px}
.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}
.field input,.field select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:11px;font-size:14px;font-family:inherit;background:#fff}
.field input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(59,124,255,.12)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.seg{display:flex;background:#f3f4f6;border-radius:11px;padding:4px;gap:4px;margin-bottom:15px}
.seg button{flex:1;padding:8px;border:none;background:transparent;border-radius:8px;cursor:pointer;font-weight:600;font-size:13px;color:var(--sub);transition:.15s}
.seg button.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.file-drop{border:1.5px dashed #d9dde3;border-radius:11px;padding:16px;text-align:center;color:var(--sub);font-size:13px;cursor:pointer;transition:.15s}
.file-drop:hover{border-color:var(--blue);color:var(--blue)}
.file-drop.has{border-color:var(--green);color:var(--green);border-style:solid}
.m-result{font-size:12.5px;padding:9px 12px;border-radius:9px;background:#f8f9fb;margin-bottom:14px;min-height:18px;word-break:break-all}
.m-result:empty{display:none}
.m-actions{display:flex;gap:10px;margin-top:6px}
.m-actions .btn{flex:1;justify-content:center}

/* ===== Web 终端 ===== */
.term-mask{background:rgba(10,12,16,.72)}
.term-wrap{background:#0d1117;border-radius:14px;width:100%;max-width:1020px;height:82vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 64px rgba(0,0,0,.45)}
.term-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#161b22;color:#c9d1d9;font-size:13px;border-bottom:1px solid #21262d;font-weight:600}
.term-head button{background:#21262d;border:none;color:#c9d1d9;padding:6px 13px;border-radius:8px;cursor:pointer;font-size:12px;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.term-head button:hover{background:#2d333b}
#terminal{flex:1;padding:8px 10px;overflow:hidden}


/* ============================================================
   移动端 / 多端适配
   ============================================================ */
@media (max-width: 860px){
  .wrap{padding:14px 12px 56px}
  /* 顶部导航压缩 */
  header.top{margin-bottom:14px}
  .brand{gap:10px}
  .brand .logo{width:38px;height:38px}
  .brand h1{font-size:18px}
  .brand p{font-size:11.5px}
  .top-actions{gap:6px}
  .btn{padding:9px 12px;font-size:13px}
  /* 汇总条 2 列网格 */
  .summary{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:14px}
  .stat{min-width:0;padding:11px 14px}
  .stat .n{font-size:20px}
  .stat .l{font-size:11px}

  /* 列表视图 → 移动端垂直紧凑卡片 */
  .lrow{display:flex;flex-direction:column;align-items:stretch;gap:10px;padding:14px}
  .lrow.lhead{display:none}                 /* 隐藏表头 */
  .lcell{width:100%;min-width:0}
  .lcell.hide-sm{display:none}               /* 隐藏分类/地址/系统 */
  .lcell.name{font-size:15px}
  .lcell .sub{margin-top:4px}
  .lmini{width:100%}
  .lcell.lops{justify-content:flex-end}
  /* 延迟与操作合并到底部一行 */
  .lrow > .lcell:nth-last-child(2){           /* 延迟列 */
    display:flex;justify-content:flex-end;
  }

  /* 卡片视图单列、间距收紧 */
  .grid{grid-template-columns:1fr;gap:12px}
  .card{padding:14px 16px}

  /* 触控目标增大（≥42px） */
  .icon-btn{width:42px;height:42px;border-radius:11px}
  .icon-btn.sm{width:38px;height:38px;border-radius:9px}
  .icon-btn .ic{width:17px;height:17px}
  .icon-btn.sm .ic{width:15px;height:15px}

  /* 弹窗：移动端底部弹出、占满宽 */
  .modal-mask{padding:0;align-items:flex-end}
  .modal{max-width:100%;width:100%;border-radius:20px 20px 0 0;max-height:94vh;padding:20px 18px 26px}
  .m-actions{flex-wrap:wrap}
  .m-actions .btn{flex:1;min-width:100px}
  .row2{grid-template-columns:1fr;gap:0}
  /* 终端全屏 */
  .term-mask{padding:0}
  .term-wrap{max-width:100%;height:100dvh;height:100vh;border-radius:0}
  .term-head{border-radius:0}
}
@media (max-width: 380px){
  .summary{grid-template-columns:repeat(2,1fr)}
  .brand h1{font-size:16px}
}


/* ===== 汇总条可折叠 ===== */
.summary-wrap{margin-bottom:18px}
.summary-head{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 16px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow);user-select:none;transition:.15s}
.summary-head:hover{border-color:#cdd2da}
.summary-head .caret{width:15px;height:15px;color:var(--sub);transition:transform .2s;transform:rotate(-90deg);flex:none}
.summary-wrap.open .caret{transform:rotate(0deg)}
.summary-wrap .summary{margin-top:10px}


/* ===== 软路由面板 ===== */
.card .router-sec{display:none;padding:0 14px 12px}
.card.open .router-sec{display:block}
.router-box{background:#f7f9fc;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.router-title{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;margin-bottom:6px}
.rt-row{display:flex;gap:10px;font-size:12.5px;padding:5px 0;border-top:1px dashed #edf0f4}
.rt-row:first-of-type{border-top:none}
.rt-k{flex:none;width:60px;color:var(--sub)}
.rt-v{flex:1;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}
@media(max-width:768px){.rt-row{flex-direction:column;gap:2px}.rt-k{width:auto}}

/* ===== 特色功能 ===== */
.feat-btn{color:#8b5cf6;border-color:#e7defc;background:#f7f4ff}
.feat-btn:hover{background:#efeaff;border-color:#d6c9fa}
.feat-sec{font-size:13px}
.feat-head{display:flex;align-items:center;gap:7px;font-weight:700;font-size:14px;margin-bottom:8px}
.node-head{display:flex;align-items:center;justify-content:space-between;margin:14px 0 6px;padding-top:12px;border-top:1px solid var(--line)}
.node-title{font-weight:700;font-size:13px}
.btn-mini{padding:5px 12px;font-size:12px;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;font-weight:600;transition:.15s}
.btn-mini:hover{border-color:var(--blue);color:var(--blue)}
.btn-mini:disabled{opacity:.5;cursor:default}
#node-list{max-height:280px;overflow-y:auto}
.node-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:12.5px}
.node-row:hover{background:#f7f9fc}
.node-row.current{background:#eef8f1}
.node-hp{flex:1;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.node-ms{flex:none;width:60px;text-align:right;font-weight:600}
.node-cur{flex:none;color:var(--green);font-weight:700;font-size:12px}

/* ===== 特色功能：列表 → 详情 ===== */
.feat-item{display:flex;align-items:center;gap:12px;padding:15px 16px;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:.15s;margin-bottom:10px;background:#fff}
.feat-item:hover{border-color:#d6c9fa;background:#faf8ff;transform:translateY(-1px)}
.feat-ic{width:20px;height:20px;color:#8b5cf6;flex:none}
.feat-nm{flex:1;font-weight:600;font-size:14px}
.feat-arrow{width:16px;height:16px;color:var(--sub);transform:rotate(-90deg);flex:none}
.feat-back{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;color:var(--blue);cursor:pointer;margin-bottom:10px;font-weight:600}
.feat-back:hover{text-decoration:underline}

/* 节点真实连通性 */
.node-tcp{font-size:10.5px;color:var(--sub);margin-left:8px}
.node-dead{flex:none;color:var(--sub);font-size:12px}
.node-row.dead{opacity:.55}

/* ===== 移动端：禁止缩放配套 ===== */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{-webkit-tap-highlight-color:transparent}
@media (max-width:768px){
  /* 输入框 16px，配合禁止缩放防 iOS 聚焦缩放 */
  .field input,.field select,.field textarea,input[type=text],input[type=password],input[type=number],select,textarea{font-size:16px !important}
}

/* 移动端节点行：握手延迟换行显示完整 */
@media(max-width:768px){
  .node-row{align-items:flex-start}
  .node-hp{display:flex;flex-direction:column;gap:2px;white-space:normal;line-height:1.4}
  .node-tcp{margin-left:0;font-size:10px}
  .node-ms{padding-top:2px}
  .node-row .btn-mini{flex:none}
}

/* ===== 资源趋势图 ===== */
.card .trend-sec{display:none;padding:0 14px 12px}
.card.open .trend-sec{display:block}
.trend-title{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--sub);margin-bottom:6px}
.trend-title span{display:inline-flex;align-items:center;gap:4px;margin-right:10px}
.trend-title i{width:10px;height:3px;border-radius:2px;display:inline-block}
.trend-canvas{width:100%;height:140px;display:block}

/* ===== InstaBox 平台状态 ===== */
.ib-platform{display:flex;align-items:center;gap:6px;font-size:11.5px;margin-top:5px;padding:4px 8px;background:#f7f9fc;border-radius:7px;flex-wrap:wrap}
.ib-platform .dot{width:7px;height:7px;border-radius:50%}
.ib-cd{margin-left:auto;font-weight:600}

/* ============================================================
   UI 美化升级（覆盖层，放最后）
   ============================================================ */
:root{
  --bg:#f5f6f8; --card:#ffffff; --ink:#0b0c0e; --sub:#71747c; --line:#e7e9ed;
  --green:#0ea472; --grey:#a6abb4; --blue:#4f6ef7; --orange:#f08c1a; --red:#e5484d;
  --radius:13px;
  --shadow:0 0 0 1px rgba(15,18,25,.03),0 1px 2px rgba(15,18,25,.04),0 10px 28px rgba(15,18,25,.05);
  --shadow-h:0 0 0 1px rgba(15,18,25,.04),0 4px 10px rgba(15,18,25,.07),0 20px 48px rgba(15,18,25,.10);
}
body{
  background:
    radial-gradient(1200px 500px at 20% -10%, rgba(79,110,241,.05), transparent 60%),
    radial-gradient(1000px 480px at 95% -5%, rgba(14,164,114,.045), transparent 60%),
    var(--bg);
  letter-spacing:-.01em;
}
/* 顶部品牌 */

.brand h1{letter-spacing:-.02em;font-weight:750}
.brand p{color:var(--sub)}
/* 汇总条 */
.summary-head{border-radius:13px;box-shadow:var(--shadow);font-weight:650;letter-spacing:-.01em}
.stat{border-radius:13px;box-shadow:var(--shadow);transition:box-shadow .2s,transform .2s}
.stat:hover{transform:translateY(-1px);box-shadow:var(--shadow-h)}
.stat .n{font-weight:750;letter-spacing:-.02em}
/* 卡片 */
.card{border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid transparent;transition:box-shadow .22s,transform .22s}
.card:hover{box-shadow:var(--shadow-h);transform:translateY(-2px)}
.card-head .nm{font-weight:650;letter-spacing:-.015em}
/* 状态点呼吸 */
.badge .dot,.avatar .st{animation:none}
.badge.on .dot,.avatar .st.on{box-shadow:0 0 0 0 rgba(14,164,114,.5);animation:pulse 2.2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(14,164,114,.45)}70%{box-shadow:0 0 0 6px rgba(14,164,114,0)}100%{box-shadow:0 0 0 0 rgba(14,164,114,0)}}
/* 徽章质感 */
.badge{font-weight:650;letter-spacing:.01em}
.tag{background:#f4f5f7;font-weight:550}
/* 按钮 */
.btn{border-radius:11px;font-weight:600;letter-spacing:-.01em;transition:.18s}
.btn.primary{background:linear-gradient(180deg,#23262d,#101216);border-color:#101216;box-shadow:0 2px 8px rgba(11,12,14,.25),inset 0 1px 0 rgba(255,255,255,.08)}
.btn.primary:hover{box-shadow:0 6px 16px rgba(11,12,14,.32),inset 0 1px 0 rgba(255,255,255,.08)}
.icon-btn{border-radius:9px;transition:.18s}
.icon-btn.go{background:linear-gradient(180deg,#12b57c,#0c9c69);border-color:#0c9c69;box-shadow:0 2px 8px rgba(14,164,114,.3)}
/* 进度条渐变 */
.cell .bar i,.bar i{border-radius:99px}
.cell .bar i{box-shadow:inset 0 0 0 1px rgba(0,0,0,.02)}
/* 视图切换 */
.view-toggle{border-radius:11px;box-shadow:var(--shadow)}
.vt-btn.active{background:linear-gradient(180deg,#23262d,#101216);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
/* 列表行 */
.lrow{transition:box-shadow .2s,transform .2s}
.lrow:hover{box-shadow:var(--shadow-h)}
/* 头像更立体 */
.avatar{box-shadow:0 4px 12px rgba(15,18,25,.18),inset 0 1px 0 rgba(255,255,255,.18)}
/* modal */
.modal{border-radius:18px;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 24px 64px rgba(0,0,0,.22)}
/* 特色按钮 */
.feat-btn{box-shadow:0 2px 8px rgba(139,92,246,.18)}

/* ============================================================
   主题系统：亮=自然精致 / 暗=科技感
   ============================================================ */

/* ---------- 暗色科技主题 ---------- */
[data-theme=dark]{
  --brand:#2ee6c8;
  --bg:#060a12; --card:rgba(148,163,184,.05); --ink:#e9eff7; --sub:#8695a7;
  --line:rgba(148,163,184,.13);
  --green:#34e3b0; --grey:#5b6673; --blue:#5aa0ff; --orange:#f5a524; --red:#ff6b6b;
  --radius:14px;
  --shadow:0 0 0 1px rgba(148,163,184,.06),0 10px 30px rgba(0,0,0,.45);
  --shadow-h:0 0 0 1px rgba(94,234,212,.18),0 16px 44px rgba(0,0,0,.55);
}
[data-theme=dark] body{
  background:
    radial-gradient(1100px 520px at 15% -10%, rgba(46,230,200,.07), transparent 60%),
    radial-gradient(900px 480px at 90% 0%, rgba(90,160,255,.06), transparent 60%),
    var(--bg);
}
/* 暗色网格纹理 */
[data-theme=dark] body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:linear-gradient(rgba(148,163,184,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.05) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,black 30%,transparent 75%);
}
[data-theme=dark] .wrap{position:relative;z-index:1}
/* 暗色玻璃拟态卡片 */
[data-theme=dark] .card,[data-theme=dark] .stat,[data-theme=dark] .summary-head,
[data-theme=dark] .lrow,[data-theme=dark] .view-toggle,[data-theme=dark] .modal,
[data-theme=dark] .login-card{
  background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid var(--line);
}
[data-theme=dark] .card:hover{border-color:rgba(94,234,212,.3);box-shadow:var(--shadow-h),0 0 24px rgba(46,230,200,.06)}
/* 暗色文字/徽章/标签 */
[data-theme=dark] .tag{background:rgba(148,163,184,.12);color:var(--sub)}
[data-theme=dark] .badge.on{background:rgba(52,227,176,.14);color:var(--green)}
[data-theme=dark] .badge.off{background:rgba(148,163,184,.12);color:var(--sub)}
[data-theme=dark] .badge.unk{background:rgba(245,165,36,.14);color:var(--orange)}
[data-theme=dark] .badge.type{background:rgba(90,160,255,.14);color:var(--blue)}
[data-theme=dark] .badge.exit{background:rgba(245,165,36,.14);color:var(--orange)}
[data-theme=dark] .badge.self{background:#e9eff7;color:#0b0c0e}
[data-theme=dark] .badge.pub{background:rgba(90,160,255,.14);color:var(--blue)}
[data-theme=dark] .badge.cat{background:rgba(167,139,250,.16);color:#a78bfa}
[data-theme=dark] .latency{background:rgba(90,160,255,.14);color:var(--blue)}
/* 暗色状态点发光 */
[data-theme=dark] .badge.on .dot,[data-theme=dark] .avatar .st.on{box-shadow:0 0 8px rgba(52,227,176,.9);animation:pulse-d 2.2s infinite}
@keyframes pulse-d{0%{box-shadow:0 0 0 0 rgba(52,227,176,.5)}70%{box-shadow:0 0 0 7px rgba(52,227,176,0)}100%{box-shadow:0 0 0 0 rgba(52,227,176,0)}}
/* 暗色按钮 */
[data-theme=dark] .btn{background:rgba(148,163,184,.08);border-color:var(--line);color:var(--ink)}
[data-theme=dark] .btn:hover{border-color:rgba(148,163,184,.3)}
[data-theme=dark] .btn.primary{background:linear-gradient(180deg,#2ee6c8,#1fbf9f);color:#05261f;border-color:transparent;box-shadow:0 4px 18px rgba(46,230,200,.3)}
[data-theme=dark] .icon-btn{background:rgba(148,163,184,.08);border-color:var(--line);color:var(--sub)}
[data-theme=dark] .icon-btn:hover{color:var(--ink);border-color:rgba(148,163,184,.3)}
[data-theme=dark] .icon-btn.go{background:linear-gradient(180deg,#2ee6c8,#1fbf9f);color:#05261f;border-color:transparent}
[data-theme=dark] .vt-btn.active{background:linear-gradient(180deg,#2ee6c8,#1fbf9f);color:#05261f}
/* 暗色进度条/分隔 */
[data-theme=dark] .cell .bar,[data-theme=dark] .lmini .bar{background:rgba(148,163,184,.12)}
[data-theme=dark] .res-pending,[data-theme=dark] .sub{color:var(--sub)}
[data-theme=dark] .modal h3,[data-theme=dark] .card-head .nm{color:var(--ink)}
/* 暗色输入框/下拉 */
[data-theme=dark] .field input,[data-theme=dark] .field select,[data-theme=dark] input,[data-theme=dark] select{
  background:rgba(148,163,184,.08);border-color:var(--line);color:var(--ink)}
/* 暗色软路由/节点 */
[data-theme=dark] .router-box,[data-theme=dark] .ib-platform{background:rgba(148,163,184,.06);border-color:var(--line)}
[data-theme=dark] .node-row:hover{background:rgba(148,163,184,.08)}
[data-theme=dark] .node-row.current{background:rgba(52,227,176,.1)}
[data-theme=dark] .btn-mini{background:rgba(148,163,184,.08);border-color:var(--line);color:var(--ink)}
[data-theme=dark] .trend-title{color:var(--sub)}
/* 暗色 feat-item */
[data-theme=dark] .feat-item{background:rgba(148,163,184,.05);border-color:var(--line)}
[data-theme=dark] .feat-item:hover{background:rgba(148,163,184,.1);border-color:rgba(94,234,212,.3)}
/* 暗色终端 */
[data-theme=dark] .term-mask .modal{background:#0a0f16}
/* 主题切换按钮 */
.theme-btn{width:35px;height:35px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--sub);display:inline-grid;place-items:center;cursor:pointer;transition:.18s;flex:none}
.theme-btn:hover{color:var(--ink);transform:translateY(-1px)}
.theme-btn .ic{width:16px;height:16px}

/* ---------- 亮色自然精致微调 ---------- */
:root{
  --green:#0ea472; --blue:#3f6df6;
}
[data-theme=light] body{
  background:
    radial-gradient(1100px 520px at 12% -8%, rgba(63,109,246,.06), transparent 60%),
    radial-gradient(950px 500px at 92% -4%, rgba(14,164,114,.05), transparent 60%),
    linear-gradient(180deg,#f7f8f6,#f2f4f1);
}

/* ===== 暗色：资源槽/统计/tag 补充适配 ===== */
[data-theme=dark] .cell{background:rgba(148,163,184,.06);border-color:rgba(148,163,184,.1)}
[data-theme=dark] .cell .v{color:var(--ink)}
[data-theme=dark] .cell .v small{color:var(--sub)}
[data-theme=dark] .cell .k{color:var(--sub)}
[data-theme=dark] .cell .k .ic{color:var(--sub)}
[data-theme=dark] .stat .n{color:var(--ink)}
[data-theme=dark] .stat .l{color:var(--sub)}
[data-theme=dark] .stat .dot[style*="background:#0a9b5e"],[data-theme=dark] .stat .dot[style*="background:var(--green)"]{background:var(--green)!important}
[data-theme=dark] .tag{background:rgba(148,163,184,.12);color:var(--sub)}
[data-theme=dark] .latency{background:rgba(90,160,255,.14);color:var(--blue)}
[data-theme=dark] .lmini .v{color:var(--ink)}
[data-theme=dark] .lmini .row{color:var(--sub)}
/* 暗色趋势图区域 */
[data-theme=dark] .trend-box{border-color:var(--line)}
[data-theme=dark] .trend-legend{color:var(--sub)}
/* 暗色汇总条展开 */
[data-theme=dark] .summary-body{color:var(--ink)}
/* 暗色列表视图 */
[data-theme=dark] .lrow{color:var(--ink)}
[data-theme=dark] .lcell{color:var(--ink)}
[data-theme=dark] .lrow:hover{background:rgba(148,163,184,.06)}
[data-theme=dark] .lrow .sub{color:var(--sub)}
/* 暗色卡片底部 */
[data-theme=dark] .card-foot{color:var(--sub)}
[data-theme=dark] .card-foot .upd{color:var(--sub)}
/* 暗色弹窗 */
[data-theme=dark] .modal{background:#111827;color:var(--ink)}
[data-theme=dark] .modal label{color:var(--sub)}
[data-theme=dark] .field input,[data-theme=dark] .field select{background:rgba(148,163,184,.1);border-color:rgba(148,163,184,.15);color:var(--ink)}
[data-theme=dark] .field input:focus,[data-theme=dark] .field select:focus{border-color:rgba(94,234,212,.4)}
[data-theme=dark] .field input::placeholder{color:rgba(148,163,184,.35)}
/* 暗色feat弹窗标题 */
[data-theme=dark] .feat-title{color:var(--ink)}
/* 暗色节点测速行 */
[data-theme=dark] .node-row .nm{color:var(--ink)}
[data-theme=dark] .node-row .sub{color:var(--sub)}
[data-theme=dark] .node-row .ping{color:var(--sub)}
/* 暗色终端头部 */
[data-theme=dark] .term-header{background:rgba(148,163,184,.08);border-color:var(--line);color:var(--ink)}
[data-theme=dark] .term-header .close{color:var(--sub)}
[data-theme=dark] .term-header .close:hover{color:var(--ink)}
/* 暗色 InstaBox 平台卡片 */
[data-theme=dark] .ib-platform .sub{color:var(--sub)}
/* 暗色滚动条 */
[data-theme=dark] ::-webkit-scrollbar-track{background:transparent}
[data-theme=dark] ::-webkit-scrollbar-thumb{background:rgba(148,163,184,.2);border-radius:99px}
[data-theme=dark] ::-webkit-scrollbar-thumb:hover{background:rgba(148,163,184,.35)}

/* QwenPaw 链接 */
.qwenpaw-link{color:var(--brand);text-decoration:none;font-weight:600}
.qwenpaw-link:hover{text-decoration:underline}
