/* ============================================================
   源锦辰软件销售平台 · 运营后台主题「经营驾驶舱 V6」
   钛金军工浅色机甲：机甲青 #0a7e96 + 军工橙 #e8681c + 冷钢灰底（对齐 CRM/全站统一主题）
   ============================================================ */
:root{
  /* --- 机甲基色 --- */
  --bg:#dbe2ec; --bg-soft:#e6edf5; --surface:#FFFFFF; --surface-2:#f4f8fc;
  --border:#d4dce6; --border-strong:#b8c3d1;
  --text:#22364c; --text-2:#485b73; --text-3:#73839b; --text-4:#8d9aae;
  --primary:#0a7e96; --primary-2:#076277; --primary-soft:#e2f5fa; --primary-tint:#eef8fb;
  --success:#1b9a5d; --success-soft:#e3f5ec; --warning:#d9a20a; --warning-soft:#fbf3da;
  --danger:#d6453c; --danger-soft:#fbe9e8; --cyan:#0a7e96;
  --shadow-sm:0 1px 2px rgba(34,54,76,.06);
  --shadow:0 4px 16px -4px rgba(34,54,76,.10),0 2px 6px -2px rgba(34,54,76,.05);
  --shadow-lg:0 24px 56px -16px rgba(34,54,76,.22),0 10px 24px -10px rgba(34,54,76,.10);
  --radius:14px; --radius-sm:9px; --radius-lg:20px;

  /* --- Element Plus 主题接管：机甲青系 --- */
  --el-color-primary:#0a7e96;
  --el-color-primary-dark-2:#076277;
  --el-color-primary-light-3:#54a5b6;
  --el-color-primary-light-5:#8abfcb;
  --el-color-primary-light-7:#b5d8e0;
  --el-color-primary-light-8:#cee5ea;
  --el-color-primary-light-9:#e2f5fa;
  --el-color-success:#1b9a5d; --el-color-warning:#d9a20a; --el-color-danger:#d6453c; --el-color-info:#73839b;
  --el-border-radius-base:10px;
  --el-text-color-primary:#22364c; --el-text-color-regular:#485b73; --el-text-color-secondary:#73839b;
  --el-border-color:#d4dce6; --el-border-color-light:#d4dce6; --el-border-color-lighter:#e0e7f0; --el-border-color-extra-light:#e9eef5;
  --el-fill-color:#e9eff6; --el-fill-color-light:#eef3f8; --el-fill-color-lighter:#f4f8fb; --el-fill-color-extra-light:#FFFFFF;
  --el-bg-color:#FFFFFF; --el-bg-color-page:#dbe2ec;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text-2);
  font-family:"Manrope","Noto Sans SC","Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,h4{color:var(--text);font-weight:700;line-height:1.25;margin:0}
a{text-decoration:none;color:inherit}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
.num{font-feature-settings:'tnum';font-variant-numeric:tabular-nums}

/* ============================================================
   登录页 · 浅钢渐变 + 青光晕（对齐 mech-theme）
   ============================================================ */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(900px 500px at 75% -10%,rgba(35,195,223,.18),transparent 60%),
             radial-gradient(800px 420px at 15% 110%,rgba(10,126,150,.10),transparent 55%),
             linear-gradient(155deg,#dbe2ec 0%,#d0d9e5 45%,#c7d1de 100%);}
.login-box{width:420px;padding:20px}
.login-box .el-card{border:none;border-radius:18px;overflow:hidden;box-shadow:0 24px 60px rgba(34,54,76,.22);padding:14px}
.login-box .el-card::before{content:"";display:block;height:4px;margin:-20px -20px 24px;
  background:linear-gradient(90deg,#076277,#0a7e96,#23c3df,#0a7e96,#076277)}
.login-box h2{text-align:center;margin:0 0 4px;color:var(--primary);letter-spacing:2px;font-size:22px;font-weight:800}
.login-box .tip{text-align:center;color:var(--text-4);font-size:12px;letter-spacing:4px;margin-bottom:26px}
.login-box .el-button--primary{letter-spacing:4px;font-weight:600;height:44px;
  background:linear-gradient(135deg,#0a7e96,#076277);border-color:#076277;box-shadow:0 6px 18px -6px rgba(10,126,150,.55)}
.login-box .el-button--primary:hover{background:linear-gradient(135deg,#076277,#064f61);box-shadow:0 10px 24px -6px rgba(10,126,150,.6)}

/* ============================================================
   后台两栏架构 · 侧栏 + 顶栏
   ============================================================ */
.admin{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.admin-side{background:var(--surface);border-right:1px solid var(--border);padding:20px 14px 12px;
  display:flex;flex-direction:column;position:sticky;top:0;height:calc(100vh - var(--tg-beian-h,0px));overflow-y:auto}
.admin-side .brand{padding:0 10px 18px;border-bottom:1px solid var(--border);margin-bottom:10px;flex:none;
  display:flex;align-items:center;gap:11px;font-weight:800;font-size:17px;color:var(--text);cursor:pointer}
.admin-side .brand .logo{width:38px;height:38px;border-radius:11px;
  background:linear-gradient(135deg,#23c3df,#076277);display:grid;place-items:center;
  box-shadow:0 6px 16px -4px rgba(10,126,150,.5);flex:none}
.admin-side .brand .logo svg{width:21px;height:21px}
.admin-side .brand small{display:block;font-size:10.5px;font-weight:600;color:var(--text-4);letter-spacing:1.5px}
.side-group{font-size:11px;font-weight:800;color:var(--text-4);letter-spacing:1.2px;padding:13px 12px 5px}
.side-item{display:flex;align-items:center;gap:11px;padding:8px 12px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--text-3);transition:.2s;cursor:pointer;user-select:none}
.side-item svg{width:19px;height:19px;flex:none}
.side-item:hover{background:var(--bg);color:var(--text)}
.side-item.on{background:var(--primary-soft);color:var(--primary);font-weight:700}
.side-item .badge{margin-left:auto;background:var(--danger);color:#fff;font-size:10.5px;padding:1px 7px;border-radius:100px;font-weight:700}
.side-item .badge.succ{background:var(--success)}
.side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--border)}

.admin-main{display:flex;flex-direction:column;min-width:0}
.admin-top{height:70px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:18px;padding:0 30px;position:sticky;top:0;z-index:50}
.admin-top h1{font-size:19px;color:var(--text);font-weight:700;letter-spacing:-.3px}

.admin-top .right{margin-left:auto;display:flex;align-items:center;gap:12px}

/* --- 搜索框 --- */
.admin-search{display:flex;align-items:center;gap:9px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:9px 14px;width:300px;color:var(--text-4);font-size:13.5px;cursor:pointer;transition:.2s}
.admin-search:hover{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.admin-search svg{width:16px;height:16px;flex:none}
.admin-search .as-ph{flex:1;min-width:0;overflow:hidden;white-space:nowrap}
.admin-search .as-kbd{font-size:11px;color:var(--text-3);border:1px solid var(--border-strong);border-radius:5px;padding:0 6px;background:var(--surface);font-family:inherit}

/* --- 主题切换按钮 --- */
.theme-toggle{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:10px;border:1px solid var(--border);background:var(--surface);font-size:13px;font-weight:700;color:var(--text-2);transition:.2s}
.theme-toggle:hover{border-color:var(--primary);color:var(--primary)}
.theme-toggle svg{width:17px;height:17px}

/* --- 天工SSO机甲青按钮 --- */
.btn-tg{display:flex;align-items:center;gap:7px;padding:8px 15px;border-radius:10px;border:1px solid #076277;background:linear-gradient(135deg,#0a7e96,#076277);color:#fff;font-size:13px;font-weight:700;cursor:pointer;transition:.2s;box-shadow:0 4px 12px rgba(10,126,150,.3)}
.btn-tg:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(10,126,150,.4)}
.btn-tg svg{width:16px;height:16px}

/* --- icon按钮（待办铃铛等） --- */
.icon-btn{position:relative;width:40px;height:40px;border-radius:10px;border:1px solid var(--border);background:var(--surface);display:grid;place-items:center;color:var(--text-2);cursor:pointer;transition:.2s;text-decoration:none}
.icon-btn:hover{border-color:var(--primary);color:var(--primary)}
.icon-btn svg{width:19px;height:19px}

/* --- 待办红点 --- */
.dot-badge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;border-radius:9px;background:var(--danger);color:#fff;font-size:10px;font-weight:800;display:grid;place-items:center;padding:0 4px;border:2px solid var(--surface)}

/* --- 头像 --- */
.avatar{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,#23c3df,#0a7e96);display:grid;place-items:center;color:#fff;font-weight:800;font-size:15px;flex:none;cursor:pointer}

/* --- 汉堡按钮 --- */
.menu-btn{display:none;width:38px;height:38px;border-radius:9px;border:1px solid var(--border);background:var(--surface);place-items:center;color:var(--text-2);cursor:pointer}
.menu-btn svg{width:20px;height:20px}

.admin-body{padding:30px;display:flex;flex-direction:column;gap:24px;background:var(--bg)}

/* ============================================================
   面板切换框架
   ============================================================ */
.admin-panel{display:none;flex-direction:column;gap:22px}
.admin-panel.show{display:flex}

/* ============================================================
   全局搜索弹窗
   ============================================================ */
.gs-mask{position:fixed;inset:0;background:rgba(34,54,76,.35);z-index:290;display:none;align-items:flex-start;justify-content:center;padding-top:6vh}
.gs-mask.show{display:flex}
.gs-box{width:660px;max-width:calc(100vw - 32px);background:var(--surface);border-radius:16px;overflow:hidden;box-shadow:0 30px 80px rgba(34,54,76,.3);border:1px solid var(--border)}
.gs-input{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border)}
.gs-input svg{width:20px;height:20px;color:var(--text-4);flex:none}
.gs-input input{flex:1;min-width:0;border:0;outline:0;font-size:15px;background:transparent;color:var(--text);font-family:inherit}
.gs-input .gs-esc{font-size:11px;color:var(--text-3);border:1px solid var(--border-strong);border-radius:6px;padding:2px 8px;cursor:pointer}
.gs-results{max-height:52vh;overflow-y:auto;padding:8px}
.gs-group{font-size:10.5px;font-weight:800;letter-spacing:.8px;color:var(--text-4);padding:10px 12px 4px}
.gs-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:9px;cursor:pointer;transition:.15s}
.gs-item:hover{background:var(--bg)}
.gs-item .gsi-ic{width:34px;height:34px;border-radius:9px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;flex:none}
.gs-item .gsi-ic svg{width:17px;height:17px}
.gs-item b{font-size:13px;font-weight:700;display:block;color:var(--text)}
.gs-item small{font-size:11.5px;color:var(--text-4);display:block;margin-top:1px}
.gs-item .gsi-tag{margin-left:auto;font-size:10.5px;color:var(--text-4);white-space:nowrap;font-weight:600}
.gs-item .gsi-st{margin-left:auto;font-size:10.5px;color:#fff;padding:1px 7px;border-radius:100px;font-weight:700}
.gs-empty{padding:42px;text-align:center;color:var(--text-4);font-size:13px}

/* ============================================================
   待办下拉
   ============================================================ */
.notify-wrap{position:relative}
.notify-panel{position:absolute;top:48px;right:0;width:340px;max-height:440px;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 50px rgba(34,54,76,.18);padding:8px;display:none;z-index:100}
.notify-panel.show{display:block;animation:npIn .18s ease}
@keyframes npIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.np-head{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 4px}
.np-head b{font-size:14px;color:var(--text)}.np-head span{font-size:11px;color:var(--text-4);cursor:pointer}
.np-section{font-size:10.5px;font-weight:800;letter-spacing:.8px;color:var(--text-4);padding:10px 10px 4px}
.np-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;cursor:pointer;transition:.15s}
.np-item:hover{background:var(--bg)}
.np-item b{display:block;font-size:12.5px;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.np-item small{display:block;font-size:11px;color:var(--text-4);margin-top:1px}
.np-item .np-count{background:var(--danger);color:#fff;font-size:11px;padding:1px 8px;border-radius:100px;font-weight:800;white-space:nowrap}
.np-foot{padding:10px;text-align:center;border-top:1px solid var(--border);margin-top:4px}
.np-foot a{color:var(--primary);font-size:12px;font-weight:700;text-decoration:none}

/* ============================================================
   KPI / 图表 / 数据卡片
   ============================================================ */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.kpi{padding:22px 24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:.2s}
.kpi:hover{border-color:var(--primary);box-shadow:0 6px 18px rgba(10,126,150,.12)}
.kpi .top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.kpi .label{font-size:13px;font-weight:600;color:var(--text-3)}
.kpi .kic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary)}
.kpi .kic svg{width:19px;height:19px}
.kpi .val{font-size:29px;font-weight:800;color:var(--text);letter-spacing:-1px}
.kpi .trend{font-size:12.5px;font-weight:700;margin-top:6px;display:flex;align-items:center;gap:5px}
.kpi .trend.up{color:var(--success)}.kpi .trend.down{color:var(--danger)}

.mini-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.mini-stat{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px}
.mini-stat .ms-label{font-size:12.5px;color:var(--text-3);font-weight:600}
.mini-stat .ms-val{font-size:24px;font-weight:800;color:var(--text);margin-top:7px;letter-spacing:-.5px}
.mini-stat .ms-sub{font-size:11.5px;font-weight:700;margin-top:4px;color:var(--text-4)}

.chart-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:24px}
.chart-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:24px}
.chart-box .ch-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.chart-box .ch-head h4{font-size:16px;color:var(--text)}
.echart{width:100%;height:300px}

.admin-cols{display:grid;grid-template-columns:1.5fr 1fr;gap:24px}
.data-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px}
.data-card .dc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px;flex-wrap:wrap}
.data-card .dc-head h4{font-size:15.5px;color:var(--text);font-weight:700}

.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.toolbar .search-box{flex:1;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:9px 14px;min-width:200px}
.toolbar .search-box svg{width:16px;height:16px;color:var(--text-4);flex:none}
.toolbar .search-box input{border:none;outline:none;background:transparent;font-size:13.5px;font-family:inherit;color:var(--text);width:100%}
.chip-filters{display:flex;gap:8px;flex-wrap:wrap}
.chip-filters button{padding:7px 15px;border-radius:100px;font-size:12.5px;font-weight:700;color:var(--text-3);background:var(--surface);border:1px solid var(--border);transition:.2s}
.chip-filters button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.row-actions{display:flex;gap:6px;justify-content:flex-end}
.row-actions button{font-size:12px;font-weight:700;padding:5px 10px;border-radius:7px;color:var(--primary);background:var(--primary-soft);white-space:nowrap;transition:.15s}
.row-actions button:hover{background:var(--primary);color:#fff}
.row-actions button.danger{color:var(--danger);background:var(--danger-soft)}
.row-actions button.warn{color:var(--warning);background:var(--warning-soft)}

/* ============================================================
   订单五环 chain
   ============================================================ */
.chain{display:flex;align-items:flex-start;margin:6px 0 4px;gap:0}
.chain-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;text-align:center;min-width:0}
.ci-dot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--bg);border:2px solid var(--border-strong);color:var(--text-4);font-size:13px;font-weight:800}
.ci-label{font-size:12px;font-weight:700;color:var(--text-2)}
.ci-no{font-size:10px;color:var(--text-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.chain-item.done .ci-dot{background:var(--success);border-color:var(--success);color:#fff}
.chain-item.active .ci-dot{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 0 0 4px var(--primary-soft)}
.chain-item.active .ci-label{color:var(--primary)}
.chain-item.gray .ci-dot{background:var(--bg);border-color:var(--border-strong);color:var(--text-4)}
.chain-item.red .ci-dot{background:var(--danger);border-color:var(--danger);color:#fff}
.chain-line{flex:0 0 22px;height:2px;background:var(--border-strong);margin-top:15px}
.chain-line.done{background:var(--success)}

/* ============================================================
   能力中枢 banner + grid
   ============================================================ */
.tg-banner{display:flex;align-items:center;gap:20px;justify-content:space-between;background:linear-gradient(150deg,#f4f8fc 0%,#e6edf5 60%,#dde5ee 100%);border:1px solid var(--border);border-bottom:2px solid var(--primary);border-radius:16px;padding:24px 28px;color:var(--text);flex-wrap:wrap}
.tg-banner h3{font-size:20px;margin-bottom:6px;color:var(--text);font-weight:800}
.tg-banner p{font-size:13px;color:var(--text-3);max-width:580px;line-height:1.65;margin:0}
.tg-badges{display:flex;gap:8px;flex-wrap:wrap}
.tg-badges span{font-size:11.5px;background:var(--primary-soft);border:1px solid rgba(10,126,150,.3);color:var(--primary-2);padding:5px 12px;border-radius:100px;font-weight:700}
.tg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.tg-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px;transition:.2s;display:flex;flex-direction:column;gap:11px;cursor:pointer;text-decoration:none;color:inherit}
.tg-card:hover{border-color:var(--primary);box-shadow:0 10px 26px rgba(10,126,150,.14);transform:translateY(-2px)}
.tg-card .tg-ic{width:42px;height:42px;border-radius:11px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center}
.tg-card .tg-ic svg{width:21px;height:21px}
.tg-card h4{font-size:14.5px;color:var(--text);font-weight:700}
.tg-card p{font-size:12px;color:var(--text-3);line-height:1.55;flex:1;margin:0}
.tg-card .tg-open{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:var(--primary);cursor:pointer}
.tg-card .tg-open:hover{text-decoration:underline}

/* ============================================================
   Element Plus 主题补丁（机甲青系）
   ============================================================ */
.el-card{border-color:var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:none}
.el-card__header{border-bottom:1px solid var(--border);font-weight:600;color:var(--text);padding:14px 20px}
.el-card__body{padding:20px}

.el-button{border-radius:10px;font-weight:500}
/* 实心按钮：仅作用于默认形态，排除 is-text / is-plain / is-link 变体，避免文字按钮被刷上实心背景导致文字不可见 */
.el-button--primary:not(.is-text):not(.is-plain):not(.is-link){background:linear-gradient(135deg,#0a7e96,#076277);border-color:#076277;color:#fff;box-shadow:0 4px 12px -4px rgba(10,126,150,.45)}
.el-button--primary:not(.is-text):not(.is-plain):not(.is-link):hover{background:linear-gradient(135deg,#076277,#064f61);border-color:#064f61;color:#fff;box-shadow:0 6px 16px -4px rgba(10,126,150,.55)}
.el-button--success:not(.is-text):not(.is-plain):not(.is-link){background:var(--success);border-color:var(--success);color:#fff}
.el-button--warning:not(.is-text):not(.is-plain):not(.is-link){background:var(--warning);border-color:var(--warning);color:#fff}
.el-button--danger:not(.is-text):not(.is-plain):not(.is-link){background:var(--danger);border-color:var(--danger);color:#fff}
/* 朴素按钮 is-plain：浅色底+彩色字 */
.el-button--primary.is-plain{background:var(--primary-soft);color:var(--primary);border-color:#b5d8e0}
.el-button--primary.is-plain:hover{background:var(--primary);color:#fff;border-color:var(--primary)}
.el-button--success.is-plain{background:var(--success-soft);color:var(--success);border-color:#6EE7B7}
.el-button--success.is-plain:hover{background:var(--success);color:#fff;border-color:var(--success)}
.el-button--warning.is-plain{background:var(--warning-soft);color:var(--warning);border-color:#FCD34D}
.el-button--warning.is-plain:hover{background:var(--warning);color:#fff;border-color:var(--warning)}
.el-button--danger.is-plain{background:var(--danger-soft);color:var(--danger);border-color:#FCA5A5}
.el-button--danger.is-plain:hover{background:var(--danger);color:#fff;border-color:var(--danger)}
/* 文字按钮 is-text / is-link：透明底+对应彩色字，表格操作列全靠它 */
.el-button.is-text,.el-button.is-link{background:transparent;box-shadow:none}
.el-button--primary.is-text,.el-button--primary.is-link{color:var(--primary)}
.el-button--success.is-text,.el-button--success.is-link{color:var(--success)}
.el-button--warning.is-text,.el-button--warning.is-link{color:var(--warning)}
.el-button--danger.is-text,.el-button--danger.is-link{color:var(--danger)}
.el-button--info.is-text,.el-button--info.is-link{color:var(--text-3)}
.el-button.is-text:hover,.el-button.is-link:hover{background:var(--bg);box-shadow:none}
.el-button--primary.is-text:hover{color:var(--primary-2);background:var(--primary-soft)}
.el-button--danger.is-text:hover{background:var(--danger-soft)}

.el-input__wrapper{border-radius:10px;box-shadow:0 0 0 1px var(--border) inset;background:var(--surface)}
.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--primary) inset !important}
.el-select__wrapper{border-radius:10px;box-shadow:0 0 0 1px var(--border) inset;background:var(--surface)}
.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--primary) inset !important}

.el-table{--el-table-border-color:var(--border);--el-table-header-bg-color:var(--bg-soft);
  --el-table-row-hover-bg-color:#e2f5fa; --el-table-text-color:var(--text-2); --el-table-header-text-color:var(--text-2);
  background:var(--surface);border-radius:var(--radius);overflow:hidden}
.el-table th.el-table__cell{background:var(--bg-soft) !important;color:var(--text-2);font-weight:700;font-size:12px;letter-spacing:.3px}
.el-table .el-table__cell{border-bottom-color:var(--border);font-size:13px}
.el-table--border .el-table__cell{border-right-color:var(--border)}

.el-dialog{border-radius:var(--radius-lg);overflow:hidden}
.el-dialog__header{border-bottom:1px solid var(--border);margin-right:0;padding:18px 22px;margin-top:0}
.el-dialog__title{font-weight:700;color:var(--text);font-size:16px}
.el-dialog__body{padding:22px}
.el-dialog__footer{padding:16px 22px;border-top:1px solid var(--border)}

.el-tag{border-radius:100px;font-weight:600}
.el-pagination{--el-pagination-hover-color:var(--primary)}
.el-pagination .el-pager li.is-active{background:var(--primary);color:#fff}

/* el-tabs —— 侧栏架构下隐藏tab条视觉，让Element Plus内部状态正常工作
   用 height:0 + overflow:hidden 而非 display:none —— 保留DOM让nav-scrollable/activeBar正常计算
   Element Plus 的 v-model="tab" 完全独立工作，侧栏通过 props adminTab 驱动切换 */
.el-tabs{background:transparent}
.el-tabs__nav-wrap{height:0;overflow:hidden;border-bottom:none;margin-bottom:0;padding-bottom:0;opacity:0}
.el-tabs__content{display:block}
.el-tabs__active-bar{display:none}
.el-tab-pane{/* 不加任何display覆盖 —— 完全交给Element Plus v-show控制 */}

.el-alert{border-radius:10px}
.el-message-box{border-radius:var(--radius-lg)}

/* ============================================================
   浮动工具（五环等）
   ============================================================ */
.sp-dock{position:fixed;right:20px;bottom:60px;z-index:99;display:flex;flex-direction:column;gap:8px}
.sp-dock a, .sp-dock button{width:42px;height:42px;border-radius:12px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);cursor:pointer;display:grid;place-items:center;color:var(--text-3);transition:.2s;text-decoration:none}
.sp-dock a:hover, .sp-dock button:hover{background:var(--primary);color:#fff;transform:translateY(-2px);border-color:var(--primary)}
.sp-dock a svg, .sp-dock button svg{width:18px;height:18px}

/* 五环弹窗（el-dialog内链式） */
.rings-wrap .chain-wrap{display:flex;align-items:flex-start;margin:10px 0}
.rings-wrap .ring-node{flex:1;text-align:center;padding:14px 4px;border-radius:10px;background:var(--bg);border:1px solid var(--border);position:relative;min-width:0}
.rings-wrap .ring-node + .ring-node::before{content:"";position:absolute;left:-1px;top:20px;width:22px;height:2px;background:var(--border-strong)}
.rings-wrap .ring-node.green{background:var(--success-soft);border-color:#A7F3D0}
.rings-wrap .ring-node.green + .ring-node::before{background:var(--success)}
.rings-wrap .ring-node.blue{background:var(--primary-soft);border-color:#b5d8e0}
.rings-wrap .ring-node.blue + .ring-node::before{background:var(--primary)}
.rings-wrap .ring-node.red{background:var(--danger-soft);border-color:#FECACA}
.rings-wrap .ring-node.red + .ring-node::before{background:var(--danger)}
.rings-wrap .ring-node.gray{background:var(--bg);border-color:var(--border-strong)}
.rings-wrap .ring-node .r-dot{width:12px;height:12px;border-radius:50%;margin:0 auto 6px;background:var(--border-strong)}
.rings-wrap .ring-node.green .r-dot{background:var(--success)}
.rings-wrap .ring-node.blue  .r-dot{background:var(--primary)}
.rings-wrap .ring-node.red   .r-dot{background:var(--danger)}
.rings-wrap .ring-node .r-lbl{font-size:12px;font-weight:700;color:var(--text-2)}
.rings-wrap .ring-node .r-val{font-size:11px;color:var(--text-4);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ============================================================
   面板内快速操作栏
   ============================================================ */
.panel-quick{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.panel-quick .pill-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:100px;font-size:13px;font-weight:700;color:var(--text-2);background:var(--surface);border:1px solid var(--border);cursor:pointer;transition:.2s;text-decoration:none}
.panel-quick .pill-btn:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}
.panel-quick .pill-btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.panel-quick .pill-btn.primary:hover{background:var(--primary-2);box-shadow:0 6px 16px -4px rgba(10,126,150,.5)}

/* ============================================================
   弹窗过渡兜底（全站）
   ============================================================ */
.dialog-fade-enter-active, .dialog-fade-leave-active,
.dialog-fade-enter-active .el-overlay-dialog, .dialog-fade-leave-active .el-overlay-dialog,
.el-drawer-fade-enter-active, .el-drawer-fade-leave-active,
.message-box-fade-enter-active, .message-box-fade-leave-active,
.viewer-fade-enter-active, .viewer-fade-leave-active,
.el-message-fade-enter-active, .el-message-fade-leave-active,
.el-notification-fade-enter-active, .el-notification-fade-leave-active,
.el-loading-fade-enter-active, .el-loading-fade-leave-active {
  animation: none !important; transition: none !important;
}

/* ============================================================
   side-overlay 基础样式：永远 position:fixed + 默认 hidden
   放在 media query 外面，避免桌面端（>1000px）误作为 grid 子元素占列
   ============================================================ */
.side-overlay{position:fixed;inset:0;background:rgba(34,54,76,.45);z-index:150;display:none}
.side-overlay.show{display:block}

/* ============================================================
   响应式（对齐设计稿断点 1000px / 600px）
   ============================================================ */
@media(max-width:1000px){
  .admin{grid-template-columns:1fr}
  .menu-btn{display:grid}
  .admin-side{position:fixed;top:0;left:0;bottom:calc(var(--tg-beian-h, 0px));z-index:200;width:280px;height:calc(100vh - var(--tg-beian-h,0px));transform:translateX(-100%);transition:transform .25s ease;box-shadow:0 0 60px rgba(34,54,76,.28)}
  .admin-side.open{transform:none}
  .admin-top{padding:0 16px;gap:12px}
  .kpi-grid,.mini-stat-grid{grid-template-columns:repeat(2,1fr)}
  .chart-grid,.admin-cols{grid-template-columns:1fr}
  .tg-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .admin-top{gap:8px;padding:0 12px;height:62px}
  .admin-top h1{font-size:15px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .admin-search{width:38px;padding:9px;justify-content:center}
  .admin-search .as-ph,.admin-search .as-kbd,.theme-toggle{display:none}
  .btn-tg{padding:8px 11px;font-size:0}
  .btn-tg svg{width:18px;height:18px}
  .admin-top .right{gap:6px}
  .icon-btn,.avatar{width:36px;height:36px}
  .notify-panel{width:calc(100vw - 32px);right:-8px}
  .kpi-grid,.mini-stat-grid,.tg-grid{grid-template-columns:1fr}
  .admin-body{padding:18px}
  .sp-dock{right:12px;bottom:48px}
}
