/* =========================================================================
 * ZdsjuP1 皮肤 · 服务器详情弹窗 + 侧栏 LOGO 样式补丁
 *
 * 主体由脚本从 public/user/css/skinpro.css 提取，请勿手工编辑（改脚本后重新生成）。
 *
 * 背景：ZdsjuP1 的 host/、server/ 目录只有 purchase.html，模板解析出现三重错位 ——
 *   1. Skin_model.php get_root()：这两个目录存在 → 模块级回退不触发，view_root 仍是 skin/ZdsjuP1/
 *   2. common_helper.php skin_extends()：detail.html 不存在 → 文件级回退到 skin/default 的新版弹窗模板
 *   3. default/host/index.html 用纯相对路径 extends '../layouts/member_index.html'（不过 skin_extends）
 *      → 侧栏/顶栏结构也取自 default，而它第一行的 './member.html'|skin_extends 又指回 ZdsjuP1/member.html
 * 于是「结构是 default 的新版、<head> 是 ZdsjuP1 的」，而 ZdsjuP1 不加载 skinpro.css，
 * 导致新版结构依赖的样式全部缺失：弹窗内联 SVG 按默认 300x150 渲染、两栏布局塌陷、
 * 侧栏 LOGO 完全没有尺寸约束（按 logo.png 原始 400x120 显示）。
 *
 * 本文件只含必需部分：CSS 变量 + 弹窗作用域规则(.sk-winbar/.kvm_detail/#serverModal) + 侧栏 LOGO 约束，
 * 不含 skinpro.css 中会重塑整站外观的全局规则（body / #header / .btn / .table ...）。
 * ========================================================================= */

/* ============================== CSS 变量 ============================== */
:root{
  --sk-brand:#635bff; --sk-brand-d:#4f46e5; --sk-brand-l:#8b85ff;
  --sk-brand-bg:#eeedfe; --sk-brand-bg2:#f5f4ff;
  --sk-glow:rgba(99,91,255,.42); --sk-ring:rgba(99,91,255,.18);
  --sk-page:#f6f7f9; --sk-card:#ffffff; --sk-card-2:#fafbfc;
  --sk-border:#edeff2; --sk-border-2:#f3f4f6; --sk-border-3:#e3e6ea;
  --sk-ink:#0d1526; --sk-ink-2:#475569; --sk-mut:#8b95a7; --sk-faint:#c4ccd8;
  --sk-rail:#0e1119; --sk-rail-2:#161a24; --sk-rail-mut:#8b93a7; --sk-rail-faint:#565f74;
  --sk-head:#f9f9fd; --sk-stripe:#fbfbfe;
  --sk-danger:#e8554d; --sk-danger-bg:#fdecec;
  --sk-success:#16a06a; --sk-success-bg:#e7f6ee;
  --sk-warn:#dd9224; --sk-warn-bg:#fdf3e1;
  --sk-radius-sm:9px; --sk-radius:11px; --sk-radius-lg:14px;
  /* 布局外壳变量（默认=① 云控制台：浅色侧栏、方正紧凑） */
  --sk-app-bg:var(--sk-page);
  --sk-side-bg:var(--sk-card); --sk-side-ink:var(--sk-ink-2); --sk-side-grp:var(--sk-mut);
  --sk-side-brand:var(--sk-ink); --sk-side-bd:var(--sk-border);
  --sk-card-bd:var(--sk-border); --sk-card-blur:none;
  --sk-sh:0 1px 2px rgba(13,21,38,.04),0 1px 3px rgba(13,21,38,.05);
  --sk-sh-md:0 4px 18px rgba(13,21,38,.06),0 2px 6px rgba(13,21,38,.04); --sk-sh-lg:0 16px 44px rgba(13,21,38,.14);
}
html[data-skin="dark"]{
  --sk-page:#0b0b14; --sk-card:#15151f; --sk-card-2:#1a1a26;
  --sk-border:#262636; --sk-border-2:#1f1f2c; --sk-border-3:#2e2e40;
  --sk-ink:#e9eaf4; --sk-ink-2:#c0c2d6; --sk-mut:#7f819b; --sk-faint:#5a5c75;
  --sk-rail:#0a0a14; --sk-rail-2:#14141f; --sk-head:#1a1a26; --sk-stripe:#181822;
  --sk-danger:#f1746b; --sk-danger-bg:#3a1f1d;
  --sk-success:#34c281; --sk-success-bg:#15301f;
  --sk-warn:#e7a948; --sk-warn-bg:#352713;
  --sk-sh:0 1px 2px rgba(0,0,0,.3); --sk-sh-md:0 6px 22px rgba(0,0,0,.45); --sk-sh-lg:0 16px 46px rgba(0,0,0,.6);
}

/* ============================== 详情弹窗外壳（限定 #serverModal，不影响其它弹窗） ============================== */
/* 定位：不沿用任何皮肤的居中机制，自己写全。
   - ZdsjuP1/bootstrap.css 在 >=768px 给 .modal-dialog 设了 left:50%; margin-left:-280px; width:560px; padding:30px 0
   - ZdsjuP1/style.css 又给 .modal-large 设了 top:50%; left:0; right:0; margin:-400px auto 0
   两套机制混用极易把弹窗推出视口，所以这里把 top/left/right/bottom/width/margin/padding 全部显式重置，
   统一用 margin:auto 水平居中 + 顶部留白，高度由 #serverModalPjax 的 max-height:85vh 控制。 */
#serverModal .modal-dialog.modal-large{
    position:relative; top:0; left:0; right:0; bottom:auto;
    width:auto; max-width:1080px;
    margin:30px auto; padding:0;
}
@media(max-width:1120px){
    #serverModal .modal-dialog.modal-large{ max-width:94vw; }
}
@media(max-width:767px){
    #serverModal .modal-dialog.modal-large{ max-width:none; margin:10px auto; }
}
#serverModal .modal-content{ background:var(--sk-card); border:1px solid var(--sk-border); border-radius:var(--sk-radius-lg); box-shadow:var(--sk-sh-lg); overflow:hidden; }
#serverModal .modal-body{ padding:20px; }
#serverModal .close{ color:var(--sk-mut); opacity:.7; text-shadow:none; }
#serverModal .close:hover{ color:var(--sk-ink); opacity:1; }
/* 弹窗内图片兜底：任何未被具体规则约束的图片都不许撑破卡片 */
#serverModal img{ max-width:100%; }
/* bootstrap.css 的 .tooltip z-index:1030 低于 modal(1050)，挂到 body 上会被弹窗盖住 */
.tooltip{ z-index:1080; }

/* ============================== 侧栏站点 LOGO 尺寸约束 ============================== */
/* 为什么需要：default/host/index.html 用纯相对路径 {extends file='../layouts/member_index.html'}
   （不经 skin_extends），所以页面结构取自 default 的 layouts/member_index.html —— 站点 LOGO
   位于 <nav id="nav" class="nav-primary"> 侧栏内。而 ZdsjuP1 的 style.css 只写了
   `.navbar .nav-brand img{max-height:45px}`，要求祖先是 .navbar 顶栏，对侧栏结构完全不匹配，
   LOGO 因此没有任何尺寸约束，按 logo.png 原始 400x120 渲染。
   default 皮肤靠 skinpro.css 的 `.nav-primary .nav-brand img` 覆盖此结构，ZdsjuP1 不加载它，故在此补齐。
   侧栏 #nav 宽 195px，减去左右 padding 16px 后可用 163px，max-width:150px 放得下。 */
#nav.nav-primary .nav-brand,
.nav-primary .nav-brand{ display:flex; align-items:center; justify-content:center; padding:12px 16px; margin:0; overflow:hidden; }
#nav.nav-primary .nav-brand img,
.nav-primary .nav-brand img{ max-height:34px; max-width:150px; width:auto; height:auto; }
#nav.nav-primary .nav-brand .txt,
.nav-primary .nav-brand .txt{ font-size:16px; font-style:normal; font-weight:700; white-space:nowrap; }

/* ===== 云服务器详情弹窗 · 图一控制台风格：左侧竖排导航 + 右侧宽内容 ===== */
/* 加宽弹窗（原 900px → 1080px；窄屏自适应） */

/* 弹窗顶栏：标题左对齐（无背景框）+ 右侧刷新/关闭图标钮 */
.sk-winbar{ display:flex; align-items:center; gap:12px; padding:15px 18px; background:var(--sk-head); border-bottom:1px solid var(--sk-border); }
.sk-winbar-title{ flex:1 1 auto; min-width:0; display:flex; align-items:center; gap:8px; font-size:14px; font-weight:400; color:var(--sk-ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sk-winbar-title b{ font-weight:400; }
.sk-winbar-title .sk-head-ic{ color:var(--sk-brand); width:18px; height:18px; font-size:16px; flex:0 0 auto; }
.sk-winbar-sn{ color:var(--sk-mut); font-weight:400; }
.sk-winbar-act{ flex:0 0 auto; display:flex; gap:8px; }

/* 弹窗整体固定高度：顶栏 + 左栏固定，右侧内容区独立滚动 */
#serverModalPjax{ display:flex; flex-direction:column; max-height:85vh; overflow:hidden; }
#serverModalPjax > .sk-winbar{ flex:0 0 auto; }
/* 两栏布局：占满顶栏以下全部高度 */
.kvm_detail.sk-modal-2col{ display:flex; padding:0 !important; flex:1 1 auto; min-height:0; }
.kvm_detail .sk-modal-side{ overflow-y:auto; }

/* 左侧导航栏 */
.kvm_detail .sk-modal-side{ width:156px; flex:0 0 156px; background:var(--sk-head); border-right:1px solid var(--sk-border); padding:14px 10px; }
.kvm_detail .sk-side-head{ display:flex; align-items:center; gap:8px; padding:4px 10px 14px; }
.kvm_detail .sk-side-head .sk-head-ic{ color:var(--sk-brand); font-size:17px; }
.kvm_detail .sk-side-title{ font-size:13px; }
.kvm_detail .sk-side-title b{ font-weight:600; }
.kvm_detail .sk-side-sn{ color:var(--sk-mut); font-weight:400; }
/* 竖排导航（覆盖横向 nav-tabs 样式） */
.kvm_detail .sk-side-nav{ border:0 !important; display:flex; flex-direction:column; gap:2px; float:none !important; margin:0 !important; }
.kvm_detail .sk-side-nav > li{ float:none !important; margin:0 !important; }
.kvm_detail .sk-side-nav > li > a{ display:flex !important; align-items:center; gap:9px; padding:9px 11px !important; margin:0 !important; border:0 !important; border-radius:8px !important; background:transparent !important; color:var(--sk-ink-2) !important; font-size:13px; }
.kvm_detail .sk-side-nav > li > a:hover{ background:var(--sk-card) !important; color:var(--sk-ink) !important; border:0 !important; }
.kvm_detail .sk-side-nav > li.active > a,
.kvm_detail .sk-side-nav > li.active > a:hover,
.kvm_detail .sk-side-nav > li.active > a:focus{ background:var(--sk-brand-bg) !important; color:var(--sk-brand-d) !important; border:0 !important; font-weight:500; }
.kvm_detail .sk-side-nav > li > a i{ font-size:15px; width:16px; text-align:center; flex:0 0 auto; }
.kvm_detail .sk-side-nav > li > a b{ font-weight:inherit; }

/* 右侧主区 */
.kvm_detail .sk-modal-main{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; overflow:hidden; }
.kvm_detail .sk-main-head{ display:flex; align-items:center; justify-content:flex-end; gap:8px; padding:12px 18px 0; }
.kvm_detail .sk-main-body{ padding:18px; flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; }
.kvm_detail .sk-main-body::-webkit-scrollbar{ width:7px; }
.kvm_detail .sk-main-body::-webkit-scrollbar-thumb{ background:var(--sk-border-3); border-radius:6px; }
.kvm_detail .sk-main-body::-webkit-scrollbar-thumb:hover{ background:var(--sk-mut); }

/* 右上角低调 ghost 圆钮（刷新/关闭） */
.sk-winbar .sk-hbtn{ width:32px; height:32px; padding:0; border-radius:8px; display:inline-flex; align-items:center; justify-content:center; color:var(--sk-ink-2); background:var(--sk-card); border:1px solid var(--sk-border-3); transition:all .15s; cursor:pointer; text-decoration:none; }
.sk-winbar .sk-hbtn{ width:30px; height:30px; }
.sk-winbar .sk-hbtn i{ font-size:12.5px; margin:0; }
.sk-winbar .sk-hbtn:hover{ background:var(--sk-brand-bg); color:var(--sk-brand-d); border-color:var(--sk-brand-l); }
.sk-winbar .sk-hbtn.sk-hbtn-close:hover{ background:var(--sk-danger-bg); color:var(--sk-danger); border-color:transparent; }

/* 移动端：两栏塌成上下，导航横向滚动 */
@media(max-width:767px){
    /* 手机端弹窗满屏居中：撤销桌面的 -47vw 负边距（其 left:50% 锚点仅在 ≥768px 生效） */
    /* 手机端弹窗整体滚动改用 overflow:visible，圆角失去裁剪；给顶栏补上顶部圆角 */
    #serverModalPjax > .modal-header,
    #serverModalPjax > .sk-winbar{ border-radius:var(--sk-radius-lg) var(--sk-radius-lg) 0 0; }
    .kvm_detail.sk-modal-2col{ flex-direction:column; min-height:0; }
    .kvm_detail .sk-modal-side{ width:auto; flex:none; border-right:0; border-bottom:1px solid var(--sk-border); padding:10px; }
    .kvm_detail .sk-side-head{ padding:4px 6px 10px; }
    .kvm_detail .sk-side-nav{ flex-direction:row; overflow-x:auto; gap:4px; -webkit-overflow-scrolling:touch; }
    .kvm_detail .sk-side-nav > li > a b{ white-space:nowrap; }
    /* 移动端整体滚动，取消桌面的固定高度/局部滚动 */
    #serverModalPjax{ max-height:none; overflow:visible; }
    .kvm_detail .sk-modal-main{ overflow:visible; }
    .kvm_detail .sk-main-body{ overflow-y:visible; }
    .kvm_detail .sk-modal-side{ overflow-y:visible; }
}

/* 实例卡：主机名 + 右上状态胶囊 + 操作排 + 资源指标（控制台风格） */
.kvm_detail .sk-inst-card{ border:1px solid var(--sk-border-2); border-radius:var(--sk-radius-lg); background:var(--sk-card); padding:18px; margin-bottom:14px; }
.kvm_detail .sk-inst-head{ display:flex; align-items:flex-start; justify-content:flex-start; gap:12px; }
.kvm_detail .sk-inst-head > .sk-status-pill{ margin-left:auto; }
.kvm_detail .sk-inst-os{ flex:0 0 auto; align-self:center; display:flex; align-items:center; justify-content:center; }
.kvm_detail .sk-inst-os img{ width:36px; height:36px; object-fit:contain; }
.kvm_detail .sk-inst-os i{ font-size:32px; line-height:1; color:var(--sk-ink-2); }
.kvm_detail .sk-inst-title{ font-size:17px; font-weight:600; color:var(--sk-ink); line-height:1.3; word-break:break-all; }
.kvm_detail .sk-inst-sub{ font-size:12.5px; color:var(--sk-mut); margin-top:3px; word-break:break-all; }
/* 状态胶囊：圆点 + 文字，颜色随电源状态（开机绿 / 关机红 / 异常黄） */
.kvm_detail .sk-status-pill{ flex:0 0 auto; display:inline-flex; align-items:center; gap:7px; padding:5px 13px; border-radius:20px; font-size:12.5px; font-weight:500; background:var(--sk-head); color:var(--sk-mut); white-space:nowrap; }
.kvm_detail .sk-status-pill::before{ content:""; width:7px; height:7px; border-radius:50%; background:currentColor; flex:0 0 auto; }
.kvm_detail .sk-status-pill b{ font-size:12.5px !important; font-weight:500; color:inherit !important; margin:0; display:inline-flex; align-items:center; }
.kvm_detail .sk-status-pill b i{ display:none; }
.kvm_detail .sk-status-pill.sk-on{ background:var(--sk-success-bg); color:var(--sk-success); }
.kvm_detail .sk-status-pill.sk-off{ background:var(--sk-danger-bg); color:var(--sk-danger); }
.kvm_detail .sk-status-pill.sk-warn{ background:var(--sk-warn-bg); color:var(--sk-warn); }
/* 提示消息 */
.kvm_detail .sk-inst-msg{ margin-top:10px; font-size:13px; }
/* 操作按钮排 */
.kvm_detail .sk-inst-acts{ display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
/* 按钮排在实例卡内时（物理服务器）：与上方状态留间距 */
.kvm_detail .sk-inst-card > .sk-inst-acts{ margin:15px 0 0; }
.kvm_detail .sk-inst-acts .btn-group,
.kvm_detail .sk-inst-acts .btn{ margin:0 !important; vertical-align:middle; }
.kvm_detail .sk-inst-acts .m-r-mini{ margin-right:0 !important; }
.kvm_detail .sk-inst-acts .btn{ padding:7px 15px !important; border-radius:9px !important; font-weight:400 !important; }
/* 普通按钮（开机/关机/重启/PUSH）：文字次级灰、图标更淡灰、hover 加深 */
.kvm_detail .sk-inst-acts .btn-white{ color:var(--sk-ink) !important; border-color:var(--sk-border-3) !important; }
.kvm_detail .sk-inst-acts .btn-white i{ color:var(--sk-ink-2) !important; }
.kvm_detail .sk-inst-acts .btn-white:hover,
.kvm_detail .sk-inst-acts .btn-white:focus{ color:var(--sk-ink) !important; background:var(--sk-head) !important; border-color:var(--sk-border-3) !important; }
.kvm_detail .sk-inst-acts .btn-white:hover i{ color:var(--sk-ink-2) !important; }
.kvm_detail .sk-inst-acts .caret{ opacity:.5; }
.kvm_detail .sk-inst-acts .btn-info .caret{ border-top-color:var(--sk-brand-d); opacity:.9; }
/* 远程连接（主操作）：描边高亮，图标同品牌色 */
.kvm_detail .sk-inst-acts .btn-info{ background:var(--sk-brand-bg) !important; color:var(--sk-brand-d) !important; border:1px solid var(--sk-brand-l) !important; box-shadow:none !important; }
.kvm_detail .sk-inst-acts .btn-info i{ color:var(--sk-brand-d) !important; }
.kvm_detail .sk-inst-acts .btn-info:hover,
.kvm_detail .sk-inst-acts .btn-info:focus{ background:var(--sk-brand-bg2) !important; border-color:var(--sk-brand) !important; }

/* 资源指标卡：大数字（CPU/内存为实时使用率）+ 标签 + 进度条 */
.kvm_detail .sk-res-bar{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:0 0 14px; }
.kvm_detail .sk-res{ background:var(--sk-head); border-radius:12px; padding:14px 16px; }
.kvm_detail .sk-res-pct{ display:block; font-size:23px; font-weight:600; color:var(--sk-ink); line-height:1.15; }
.kvm_detail .sk-res-pct.text-success{ color:var(--sk-brand) !important; }
.kvm_detail .sk-res-u{ font-size:14px; font-weight:400; color:var(--sk-ink-2); }
.kvm_detail .sk-res-k{ display:block; color:var(--sk-mut); font-size:12px; margin:5px 0 10px; }
.kvm_detail .sk-res-line{ height:4px; border-radius:3px; background:var(--sk-border); box-shadow:none; overflow:hidden; margin:0; }
.kvm_detail .sk-res-line .progress-bar{ height:100%; box-shadow:none; background:var(--sk-brand); transition:width .5s ease; }
.kvm_detail .sk-res-line .progress-bar.progress-bar-success{ background:var(--sk-brand); }
.kvm_detail .sk-res-line .progress-bar.progress-bar-warning{ background:var(--sk-warn); }
.kvm_detail .sk-res-line .progress-bar.progress-bar-danger{ background:var(--sk-danger); }
.kvm_detail .sk-res-line-static{ opacity:.55; }
.kvm_detail .sk-res-sub{ display:block; font-size:12px; font-weight:500; color:var(--sk-ink-2); line-height:1.1; letter-spacing:.2px; }
@media(max-width:640px){ .kvm_detail .sk-res-bar{ grid-template-columns:repeat(2,1fr); } }

/* 信息卡 / 付费卡：描边圆角卡 + 卡头操作区 */
.kvm_detail .sk-info-card{ border:1px solid var(--sk-border-2); border-radius:var(--sk-radius-lg); overflow:hidden; margin-bottom:14px; box-shadow:none; background:var(--sk-card); }
.kvm_detail .sk-info-card > .list-group-item.heading{ display:flex; align-items:center; gap:10px; background:transparent; padding:13px 16px 11px; border:0; margin:0; }
/* 合并卡里的第二小节标题（付费信息）：加上分隔线区分 */
.kvm_detail .sk-info-card > .list-group-item.heading.sk-sub-head{ border-top:1px solid var(--sk-border-2); margin:6px 16px 0; padding:15px 0 11px; }
.kvm_detail .sk-info-card .heading b.text-black{ font-weight:600; font-size:13.5px; }
.kvm_detail .sk-info-card .heading b.text-black::before{ display:none; }
.kvm_detail .sk-head-ic2{ width:15px; height:15px; color:var(--sk-mut); margin-right:8px; vertical-align:-3px; flex:0 0 auto; }
.kvm_detail .sk-head-acts{ margin-left:auto; display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:4px 14px; font-size:12.5px; }
.kvm_detail .sk-head-acts a{ white-space:nowrap; }
.kvm_detail .sk-head-acts .sk-auto-renew{ margin:0; font-weight:400; color:var(--sk-ink-2); cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.kvm_detail .sk-head-acts .sk-auto-renew input{ margin:0; vertical-align:middle; }
.kvm_detail .sk-head-acts .icon-lock{ color:var(--sk-brand); }

/* 属性网格（方案A）：标签在上、值在下，3 列，留白分隔 */
.kvm_detail .sk-kv{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px 28px; padding:18px; background:transparent; }
.kvm_detail .sk-kv-i{ display:flex; flex-direction:column; align-items:flex-start; gap:5px; padding:0; background:transparent; border:0; }
.kvm_detail .sk-kv-full{ grid-column:1 / -1; flex-direction:row; align-items:baseline; gap:10px; }
/* 跨整行、标签在上内容在下（如用户备注） */
.kvm_detail .sk-kv-wide{ grid-column:1 / -1; }
.kvm_detail .sk-kv-wide .sk-v{ white-space:pre-wrap; line-height:1.6; }
.kvm_detail .sk-k{ color:var(--sk-mut); font-size:12px; flex:0 0 auto; white-space:nowrap; }
.kvm_detail .sk-v{ color:var(--sk-ink); font-size:14px; min-width:0; word-break:break-all; }
.kvm_detail .sk-kv-full .sk-v{ flex:0 1 auto; }
.kvm_detail .sk-acts{ flex:0 0 auto; margin-left:auto; white-space:nowrap; padding-left:12px; }
.kvm_detail .sk-acts a{ margin-left:12px; }
.kvm_detail .sk-acts a:first-child{ margin-left:0; }
@media(max-width:640px){
    .kvm_detail .sk-kv{ grid-template-columns:1fr 1fr; }
    .kvm_detail .sk-kv-full{ grid-column:1 / -1; }
}

/* ===== 图一冷浅蓝灰色系 + 降噪（减少加粗），更清爽 ===== */
/* 顶栏 / 左栏 / 指标卡：冷浅蓝灰底（暗色回退主题色） */
.sk-winbar,
.kvm_detail .sk-modal-side,
.kvm_detail .sk-res{ background:#f4f6fb; }
html[data-skin="dark"] .sk-winbar,
html[data-skin="dark"] .kvm_detail .sk-modal-side,
html[data-skin="dark"] .kvm_detail .sk-res{ background:var(--sk-head); }
/* 减少加粗：标题/数值用中等字重，键值正文不加粗 */
.kvm_detail .sk-inst-title{ font-weight:500; }
.kvm_detail .sk-res-pct{ font-weight:500; }
.kvm_detail .sk-info-card .heading b.text-black{ font-weight:500; }
.kvm_detail .sk-kv .sk-v,
.kvm_detail .sk-kv .sk-v b{ font-weight:400; }
.kvm_detail .sk-inst-card b{ font-weight:500; }

/* ===== 连接信息卡：现代 alert 风格（浅品牌底 + 等宽字体，突出登录凭证；置于信息卡上方） ===== */
/* 顺序：实例卡 → 连接卡 → 云服务器信息卡 → 付费卡（用 order 调，不改 HTML） */
.kvm_detail #detailForm{ display:flex; flex-direction:column; }
.kvm_detail #detailForm > *{ order:3; }
.kvm_detail #detailForm > .sk-inst-card{ order:1; }
.kvm_detail #detailForm > .sk-inst-acts{ order:2; }
.kvm_detail #detailForm > .sk-res-bar{ order:3; }
.kvm_detail #detailForm > .sk-conn-card{ order:4; }
.kvm_detail #detailForm > .sk-info-card:not(.sk-conn-card){ order:5; }
/* alert 外观：浅品牌底 + 品牌边框 + 图标 */
.kvm_detail .sk-conn-card{ background:var(--sk-brand-bg2); border:1px solid var(--sk-brand-bg); box-shadow:none; }
.kvm_detail .sk-conn-card .heading{ border:0 !important; }
.kvm_detail .sk-conn-card .heading b.text-black{ color:var(--sk-brand-d) !important; display:flex; align-items:center; }
.kvm_detail .sk-conn-card .heading b.text-black::before{ display:none; }
.kvm_detail .sk-conn-card .sk-conn-ic{ width:16px; height:16px; color:var(--sk-brand); margin-right:8px; flex:0 0 auto; }
.kvm_detail .sk-conn-card .sk-v{ color:var(--sk-ink); font-family:'SFMono-Regular',ui-monospace,Menlo,Consolas,'Courier New',monospace; letter-spacing:.02em; }
/* 紧凑：减小标题/内容内边距与行距 */
.kvm_detail .sk-conn-card .heading{ padding:11px 16px 3px !important; }
.kvm_detail .sk-conn-card .sk-kv{ row-gap:9px; }
/* 查看/隐藏/复制：统一灰色图标 + hover 加深 */
.kvm_detail .sk-conn-card .sk-eye,
.kvm_detail .sk-conn-card .icon-copy{ color:var(--sk-mut) !important; margin-left:8px; cursor:pointer; }
.kvm_detail .sk-conn-card .sk-eye:hover,
.kvm_detail .sk-conn-card .icon-copy:hover{ color:var(--sk-ink-2) !important; }
.kvm_detail .sk-conn-card .sk-eye-ic{ width:15px; height:15px; vertical-align:-3px; }
/* 用户备注标签旁的编辑图标 */
.kvm_detail .sk-remark-edit{ color:var(--sk-mut); margin-left:6px; cursor:pointer; }
.kvm_detail .sk-remark-edit:hover{ color:var(--sk-brand); }
.kvm_detail .sk-remark-edit i{ font-size:12px; }
/* 实例名后的备注图标（hover 显示备注、点击编辑） */
.kvm_detail .sk-name-remark{ display:inline-flex; align-items:center; color:var(--sk-mut); margin-left:8px; cursor:pointer; vertical-align:middle; }
.kvm_detail .sk-name-remark:hover{ color:var(--sk-brand); }
.kvm_detail .sk-name-remark.has-remark{ color:var(--sk-brand); }
.kvm_detail .sk-name-remark svg{ width:15px; height:15px; }

/* ===== 详情选项卡页面通用视觉增强（网络/硬盘/安全组/备份/任务/日志） ===== */
/* 顶部工具栏按钮间距 */
.kvm_detail .sk-main-body .btn.m-b{ margin-bottom:14px; }
/* 卡片 panel：描边圆角、无阴影 */
.kvm_detail .sk-main-body .panel{ border:1px solid var(--sk-border-2) !important; border-radius:var(--sk-radius-lg) !important; box-shadow:none !important; background:var(--sk-card); overflow:hidden; margin-bottom:14px; }
.kvm_detail .sk-main-body .panel > .panel-body{ padding:0; }
.kvm_detail .sk-main-body .panel > .panel-heading{ background:var(--sk-head) !important; border-bottom:1px solid var(--sk-border-2) !important; padding:11px 16px; font-weight:500; }
/* 表格：清爽表头 + 细分隔 + hover */
.kvm_detail .sk-main-body .table{ margin:0; }
.kvm_detail .sk-main-body .table > tbody > tr > td,
.kvm_detail .sk-main-body .table > thead > tr > th{ padding:11px 16px !important; border-color:var(--sk-border-2) !important; vertical-align:middle; }
.kvm_detail .sk-main-body .table > tbody > tr.active > td{ background:var(--sk-head) !important; color:var(--sk-mut) !important; font-weight:400; }
.kvm_detail .sk-main-body .table > tbody > tr:not(.active):hover > td{ background:var(--sk-card-2) !important; }
/* list-group（键值信息卡）：描边圆角，排除概览页自定义卡 */
.kvm_detail .sk-main-body .list-group:not(.sk-info-card){ border:1px solid var(--sk-border-2); border-radius:var(--sk-radius-lg); overflow:hidden; box-shadow:none; margin-bottom:14px; }
.kvm_detail .sk-main-body .list-group:not(.sk-info-card) > .list-group-item{ border:0; border-bottom:1px solid var(--sk-border-2); padding:11px 16px; background:var(--sk-card); }
.kvm_detail .sk-main-body .list-group:not(.sk-info-card) > .list-group-item:last-child{ border-bottom:0; }
/* 分页：右对齐 + 上下边距 */
.kvm_detail .sk-main-body .pagination{ display:block !important; text-align:right; margin:16px 4px 6px !important; padding:0; }
