/* ============================================================
   Cobra Dark Theme —— 黑底翠绿霓虹 + 眼镜蛇背景
   覆盖 Ant Design Vue 与原生样式，全站统一深色科技风。
   ============================================================ */

:root {
  --cobra-green:        #00ff9c;
  --cobra-green-soft:   #1fdd8a;
  --cobra-green-dim:    #0a7a4e;
  --cobra-red:          #ff2e3d;

  --cobra-bg:           #050a08;
  --cobra-bg-2:         #0a1410;
  --cobra-panel:        rgba(8, 18, 14, 0.78);
  --cobra-panel-solid:  #0c1714;
  --cobra-border:       rgba(0, 255, 156, 0.18);
  --cobra-border-strong:rgba(0, 255, 156, 0.45);

  --cobra-text:         #d6f5e6;
  --cobra-text-dim:     #6f8c7e;
  --cobra-text-mute:    #4c655a;

  --cobra-shadow:       0 0 24px rgba(0, 255, 156, 0.08), 0 0 60px rgba(0, 255, 156, 0.04);

  /* 重写原项目用到的 CSS 变量，让没动到的组件也跟着变深色 */
  --primary:            var(--cobra-green);
  --primary-hover:      var(--cobra-green-soft);
  --primary-bg:         rgba(0, 255, 156, 0.12);
  --success:            var(--cobra-green);
  --warning:            #f5c43c;
  --danger:             var(--cobra-red);
  --text-1:             var(--cobra-text);
  --text-2:             var(--cobra-text-dim);
  --text-3:             var(--cobra-text-mute);
  --border:             var(--cobra-border);
  --bg:                 var(--cobra-bg);

  --main-bg:            var(--cobra-bg);
  --sider-bg:           rgba(5, 12, 9, 0.92);
  --sider-border:       var(--cobra-border);
  --sider-text:         var(--cobra-text-dim);
  --sider-active:       var(--cobra-green);
  --sider-active-bg:    rgba(0, 255, 156, 0.10);
  --sider-group:        var(--cobra-text-mute);

  --header-bg:          rgba(5, 12, 9, 0.85);
  --header-border:      var(--cobra-border);
  --header-shadow:      rgba(0, 0, 0, 0.6);
}

/* ──────────── 全局背景：眼镜蛇电路背景图 ──────────── */
html, body {
  background: var(--cobra-bg) !important;
  color: var(--cobra-text);
}

body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse at 50% 30%, rgba(0, 255, 156, 0.08), transparent 70%),
    url('./cobra-bg.png') center/cover no-repeat;
  opacity: 0.38;
  filter: saturate(1.1) brightness(0.7);
  pointer-events: none;
}

body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.55) 0%, rgba(0, 0, 0, 0.85) 100%);
  pointer-events: none;
}

#app, .app-layout, .ant-layout {
  position: relative;
  z-index: 1;
  background: transparent !important;
}

/* ──────────── 侧栏 sider ──────────── */
.ant-layout-sider,
aside.sider {
  background: var(--sider-bg) !important;
  border-right: 1px solid var(--cobra-border) !important;
  box-shadow: inset -1px 0 0 rgba(0, 255, 156, 0.05), 4px 0 24px rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(8px);
}

.logo {
  border-bottom: 1px solid var(--cobra-border) !important;
  background:
    radial-gradient(circle at 50% 50%, rgba(0, 255, 156, 0.15), transparent 70%);
  position: relative;
}
.logo-icon-img {
  /* 把 Vue 原生的 object-fit:cover 改成 contain，
     让竖向的眼镜蛇 logo 按完整比例显示，不被裁切 */
  width: auto !important;
  height: 100% !important;
  max-width: 90% !important;
  margin: 0 auto !important;
  object-fit: contain !important;
  display: block !important;
  filter:
    drop-shadow(0 0 8px rgba(0, 255, 156, 0.65))
    drop-shadow(0 0 18px rgba(0, 255, 156, 0.35)) !important;
}
.logo {
  /* 让 .logo 容器水平居中 logo 图片 */
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* ──────────── 顶部 header ──────────── */
.header,
.ant-layout-header {
  background: var(--header-bg) !important;
  border-bottom: 1px solid var(--cobra-border) !important;
  box-shadow: 0 1px 0 rgba(0, 255, 156, 0.12), 0 4px 18px rgba(0, 0, 0, 0.5) !important;
  backdrop-filter: blur(10px);
}

.header *,
.ant-layout-header * { color: var(--cobra-text) !important; }

/* 面包屑 */
.ant-breadcrumb, .ant-breadcrumb * { color: var(--cobra-text-dim) !important; }
.ant-breadcrumb-link:hover { color: var(--cobra-green) !important; }
.ant-breadcrumb-separator { color: var(--cobra-text-mute) !important; }

/* tab bar */
.ant-tabs-tab { color: var(--cobra-text-dim) !important; background: transparent !important; }
.ant-tabs-tab-active, .ant-tabs-tab:hover { color: var(--cobra-green) !important; }
.ant-tabs-ink-bar { background: var(--cobra-green) !important; box-shadow: 0 0 8px var(--cobra-green); }
.ant-tabs-nav::before { border-color: var(--cobra-border) !important; }

/* ──────────── 菜单 menu ──────────── */
.ant-menu-dark, .ant-menu, .sider-menu {
  background: transparent !important;
  border-right: 0 !important;
}
.ant-menu .ant-menu-item,
.sider-menu .ant-menu-item {
  color: var(--cobra-text-dim) !important;
  margin: 4px 8px !important;
  border-radius: 6px !important;
}
.ant-menu .ant-menu-item:hover,
.sider-menu .ant-menu-item:hover {
  color: var(--cobra-green) !important;
  background: rgba(0, 255, 156, 0.06) !important;
}
.ant-menu .ant-menu-item-selected,
.sider-menu .ant-menu-item-selected {
  background: linear-gradient(90deg, rgba(0, 255, 156, 0.18), rgba(0, 255, 156, 0.04)) !important;
  color: var(--cobra-green) !important;
  box-shadow: inset 3px 0 0 var(--cobra-green), 0 0 20px rgba(0, 255, 156, 0.15);
}
.ant-menu .ant-menu-item .anticon,
.sider-menu .ant-menu-item .anticon { color: inherit !important; }
.ant-menu-item-group-title,
.sider-menu .ant-menu-item-group-title {
  color: var(--cobra-text-mute) !important;
  font-size: 11px !important;
  letter-spacing: 1.5px !important;
  text-transform: uppercase;
}

/* ──────────── 内容区域 ──────────── */
.ant-layout-content { background: transparent !important; }

/* 通用卡片/面板 */
.ant-card,
.ant-table-wrapper,
.proxy-page > div,
.glass-card {
  background: var(--cobra-panel) !important;
  border: 1px solid var(--cobra-border) !important;
  border-radius: 10px !important;
  box-shadow: var(--cobra-shadow) !important;
  backdrop-filter: blur(6px);
}
.ant-card-head,
.ant-card-head-title { color: var(--cobra-text) !important; border-color: var(--cobra-border) !important; }
.ant-card-body { color: var(--cobra-text) !important; }

/* ──────────── 表格 table ──────────── */
.ant-table {
  background: transparent !important;
  color: var(--cobra-text) !important;
}
.ant-table-thead > tr > th {
  background: rgba(0, 255, 156, 0.06) !important;
  color: var(--cobra-green) !important;
  border-bottom: 1px solid var(--cobra-border) !important;
  font-weight: 600;
  letter-spacing: .5px;
}
.ant-table-thead > tr > th::before { background: var(--cobra-border) !important; }
.ant-table-tbody > tr > td {
  background: transparent !important;
  color: var(--cobra-text) !important;
  border-bottom: 1px solid rgba(0, 255, 156, 0.08) !important;
}
.ant-table-tbody > tr:hover > td,
.ant-table-tbody > tr.ant-table-row-hover > td {
  background: rgba(0, 255, 156, 0.06) !important;
}
.ant-table-placeholder { background: transparent !important; color: var(--cobra-text-mute) !important; }
.ant-empty-description { color: var(--cobra-text-mute) !important; }
.ant-pagination *,
.ant-pagination-item-link { color: var(--cobra-text-dim) !important; background: transparent !important; border-color: var(--cobra-border) !important; }
.ant-pagination-item-active { background: rgba(0, 255, 156, 0.12) !important; border-color: var(--cobra-green) !important; }
.ant-pagination-item-active a { color: var(--cobra-green) !important; }

/* ──────────── 按钮 ──────────── */
.ant-btn {
  background: rgba(8, 18, 14, 0.6) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  color: var(--cobra-text) !important;
  border-radius: 6px !important;
  font-weight: 500;
  transition: all .2s;
}
.ant-btn:hover {
  color: var(--cobra-green) !important;
  border-color: var(--cobra-green) !important;
  box-shadow: 0 0 12px rgba(0, 255, 156, 0.35);
}
.ant-btn-primary {
  background: linear-gradient(135deg, var(--cobra-green-soft), var(--cobra-green-dim)) !important;
  border: 1px solid var(--cobra-green) !important;
  color: #052013 !important;
  font-weight: 600;
  box-shadow: 0 0 16px rgba(0, 255, 156, 0.4);
}
.ant-btn-primary:hover {
  color: #001209 !important;
  background: linear-gradient(135deg, var(--cobra-green), var(--cobra-green-soft)) !important;
  box-shadow: 0 0 24px rgba(0, 255, 156, 0.6);
}
.ant-btn-dangerous { color: var(--cobra-red) !important; border-color: var(--cobra-red) !important; }
.ant-btn-dangerous:hover { background: rgba(255, 46, 61, 0.12) !important; box-shadow: 0 0 14px rgba(255, 46, 61, 0.45); }

/* ──────────── 输入框 / select ──────────── */
.ant-input,
.ant-input-affix-wrapper,
.ant-select-selector,
.ant-input-number,
.ant-picker {
  background: rgba(5, 12, 9, 0.7) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  color: var(--cobra-text) !important;
  border-radius: 6px !important;
}
.ant-input::placeholder,
.ant-select-selection-placeholder { color: var(--cobra-text-mute) !important; }
.ant-input:focus,
.ant-input-affix-wrapper-focused,
.ant-select-focused .ant-select-selector,
.ant-input:hover,
.ant-input-affix-wrapper:hover,
.ant-select-selector:hover {
  border-color: var(--cobra-green) !important;
  box-shadow: 0 0 0 2px rgba(0, 255, 156, 0.15) !important;
}
.ant-select-arrow, .ant-input-prefix, .ant-input-suffix { color: var(--cobra-text-dim) !important; }
/* affix-wrapper 内层 input 必须透明，否则会遮住右侧眼睛/清除图标 */
.ant-input-affix-wrapper .ant-input { background: transparent !important; }
/* 密码输入框眼睛图标 — 确保可见（Ant Design Vue 4.x CSS-in-JS 可能覆盖颜色） */
.ant-input-password-icon,
.ant-input-password-icon svg,
.ant-input-password .ant-input-suffix span[role="img"],
.ant-input-password .ant-input-suffix span[role="img"] svg {
  color: var(--cobra-text) !important;
  opacity: 1 !important;
  visibility: visible !important;
  display: inline-flex !important;
}

/* select 下拉 */
.ant-select-dropdown {
  background: var(--cobra-panel-solid) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.6), 0 0 16px rgba(0, 255, 156, 0.1) !important;
}
.ant-select-item { color: var(--cobra-text) !important; }
.ant-select-item-option-selected,
.ant-select-item-option-active {
  background: rgba(0, 255, 156, 0.12) !important;
  color: var(--cobra-green) !important;
}

/* ──────────── tag / badge ──────────── */
.ant-tag { border-radius: 999px !important; padding: 0 10px !important; border: 1px solid currentColor !important; background: transparent !important; }
.ant-tag-success, .ant-tag-green { color: var(--cobra-green) !important; background: rgba(0, 255, 156, 0.10) !important; box-shadow: 0 0 8px rgba(0, 255, 156, 0.25); }
.ant-tag-error, .ant-tag-red { color: var(--cobra-red) !important; background: rgba(255, 46, 61, 0.10) !important; }
.ant-tag-default { color: var(--cobra-text-dim) !important; background: rgba(255, 255, 255, 0.04) !important; }
.ant-badge-status-success .ant-badge-status-dot { background: var(--cobra-green) !important; box-shadow: 0 0 6px var(--cobra-green) !important; }

/* ──────────── modal / drawer ──────────── */
.ant-modal-content,
.ant-drawer-content {
  background: var(--cobra-panel-solid) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  box-shadow: 0 10px 60px rgba(0, 0, 0, 0.8), 0 0 30px rgba(0, 255, 156, 0.15) !important;
}
.ant-modal-header,
.ant-drawer-header { background: transparent !important; border-bottom: 1px solid var(--cobra-border) !important; }
.ant-modal-title,
.ant-drawer-title { color: var(--cobra-green) !important; }
.ant-modal-close-x,
.ant-drawer-close { color: var(--cobra-text-dim) !important; }
.ant-modal-body,
.ant-drawer-body { color: var(--cobra-text) !important; }
.ant-modal-mask { background: rgba(0, 0, 0, 0.75) !important; backdrop-filter: blur(2px); }

/* ──────────── 弹出层 ──────────── */
.ant-tooltip-inner,
.ant-popover-inner {
  background: var(--cobra-panel-solid) !important;
  color: var(--cobra-text) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.7);
}
.ant-tooltip-arrow::before,
.ant-popover-arrow-content { background: var(--cobra-panel-solid) !important; }

/* ──────────── message / notification ──────────── */
.ant-message-notice-content,
.ant-notification-notice {
  background: var(--cobra-panel-solid) !important;
  color: var(--cobra-text) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.7), 0 0 16px rgba(0, 255, 156, 0.2) !important;
}

/* ──────────── 标题 / 文字 ──────────── */
h1, h2, h3, h4, h5, h6 { color: var(--cobra-text) !important; }
.page-title, .ant-card-head-title {
  color: var(--cobra-green) !important;
  text-shadow: 0 0 12px rgba(0, 255, 156, 0.35);
  letter-spacing: 1px;
}

/* 自定义滚动条 */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.4); }
::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--cobra-green-dim), rgba(0, 255, 156, 0.3));
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover { background: var(--cobra-green); }

/* ──────────── 顶部主题切换器 —— 整个隐藏（眼镜蛇只有一套暗黑主题） ──────────── */
.theme-switcher { display: none !important; }

/* ──────────── 顶部"系统正常"等绿色状态徽章 ──────────── */
.ant-tag-success { box-shadow: 0 0 12px rgba(0, 255, 156, 0.35) !important; }

/* 用户名/头像区域 */
.ant-avatar { background: var(--cobra-green-dim) !important; color: #002310 !important; box-shadow: 0 0 12px rgba(0, 255, 156, 0.4); }

/* 选中文本 */
::selection { background: var(--cobra-green); color: #001209; }

/* ============================================================
   Form / Label / Divider / Radio / Upload / Tabs 等组件补充适配
   （上一版只覆盖了表格+菜单+按钮，这里把表单类一次性扫干净）
   ============================================================ */

/* ──────────── 全局兜底：默认深色文本 ──────────── */
body, .ant-app, .ant-typography, label, span, p, div, dt, dd, li {
  color: var(--cobra-text);
}

/* Form item label —— 字段标题 */
.ant-form-item-label > label,
.ant-form-item-label > label.ant-form-item-required {
  color: var(--cobra-text) !important;
  font-weight: 500;
}
.ant-form-item-label > label::after {
  color: var(--cobra-text-dim) !important;
}
/* 必填星号 */
.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional)::before {
  color: var(--cobra-red) !important;
  text-shadow: 0 0 6px rgba(255, 46, 61, 0.5);
}

/* 表单帮助文字 / 错误提示 */
.ant-form-item-explain,
.ant-form-item-extra { color: var(--cobra-text-mute) !important; }
.ant-form-item-explain-error { color: var(--cobra-red) !important; }

/* ──────────── Divider（分隔线 + 文字，例如「应用信息」「标签版本」）──────────── */
.ant-divider,
.ant-divider-horizontal {
  border-color: var(--cobra-border) !important;
}
.ant-divider-inner-text,
.ant-divider-with-text {
  color: var(--cobra-green) !important;
  font-size: 13px !important;
  letter-spacing: 1.5px;
  text-shadow: 0 0 8px rgba(0, 255, 156, 0.4);
}
.ant-divider-horizontal.ant-divider-with-text::before,
.ant-divider-horizontal.ant-divider-with-text::after {
  border-top-color: var(--cobra-border) !important;
}

/* ──────────── 通用「卡片区段标题」h3/h4 等弱标题 ──────────── */
.section-title,
.form-section-title,
.subtitle {
  color: var(--cobra-green) !important;
  letter-spacing: 1px;
  text-shadow: 0 0 6px rgba(0, 255, 156, 0.3);
}

/* ──────────── textarea 与 InputGroup ──────────── */
textarea.ant-input,
.ant-input-textarea-show-count::after {
  background: rgba(5, 12, 9, 0.7) !important;
  color: var(--cobra-text) !important;
  border-color: var(--cobra-border-strong) !important;
}
.ant-input-group-addon {
  background: rgba(0, 255, 156, 0.08) !important;
  color: var(--cobra-green) !important;
  border: 1px solid var(--cobra-border-strong) !important;
}

/* ──────────── Radio / Radio Group ──────────── */
.ant-radio-wrapper,
.ant-radio-button-wrapper { color: var(--cobra-text-dim) !important; }
.ant-radio-wrapper:hover,
.ant-radio-button-wrapper:hover { color: var(--cobra-green) !important; }
.ant-radio-button-wrapper {
  background: rgba(5, 12, 9, 0.6) !important;
  border-color: var(--cobra-border-strong) !important;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
  background: rgba(0, 255, 156, 0.18) !important;
  border-color: var(--cobra-green) !important;
  color: var(--cobra-green) !important;
  box-shadow: 0 0 10px rgba(0, 255, 156, 0.35) !important;
}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {
  background-color: var(--cobra-green) !important;
}
.ant-radio-inner {
  background: rgba(5, 12, 9, 0.7) !important;
  border-color: var(--cobra-border-strong) !important;
}
.ant-radio-checked .ant-radio-inner {
  border-color: var(--cobra-green) !important;
  background: rgba(0, 255, 156, 0.15) !important;
}
.ant-radio-checked .ant-radio-inner::after { background: var(--cobra-green) !important; }

/* ──────────── Checkbox / Switch ──────────── */
.ant-checkbox-wrapper { color: var(--cobra-text-dim) !important; }
.ant-checkbox-inner {
  background: rgba(5, 12, 9, 0.7) !important;
  border-color: var(--cobra-border-strong) !important;
}
.ant-checkbox-checked .ant-checkbox-inner {
  background: var(--cobra-green) !important;
  border-color: var(--cobra-green) !important;
}
.ant-switch { background: rgba(255, 255, 255, 0.12) !important; }
.ant-switch-checked { background: var(--cobra-green) !important; box-shadow: 0 0 10px rgba(0, 255, 156, 0.5); }

/* ──────────── Upload 上传区域 / 按钮 ──────────── */
.ant-upload, .ant-upload-select,
.ant-upload.ant-upload-drag,
.ant-upload-list-item {
  background: rgba(5, 12, 9, 0.5) !important;
  border: 1px dashed var(--cobra-border-strong) !important;
  color: var(--cobra-text) !important;
}
.ant-upload.ant-upload-drag:hover { border-color: var(--cobra-green) !important; }
.ant-upload-text, .ant-upload-hint { color: var(--cobra-text-dim) !important; }

/* ──────────── 不带 ant- 前缀的常见自定义类 ──────────── */
.form-label, .field-label, .field-title { color: var(--cobra-text) !important; }
.muted, .text-muted, .help-text { color: var(--cobra-text-mute) !important; }
.required-mark, .required-star { color: var(--cobra-red) !important; }

/* ──────────── 列表 / Description List ──────────── */
.ant-descriptions-item-label,
.ant-descriptions-item-content { color: var(--cobra-text) !important; }
.ant-descriptions-item-label { color: var(--cobra-text-dim) !important; }
.ant-descriptions-bordered .ant-descriptions-view {
  border-color: var(--cobra-border) !important;
}
.ant-descriptions-bordered .ant-descriptions-item-label,
.ant-descriptions-bordered .ant-descriptions-item-content {
  border-color: var(--cobra-border) !important;
  background: transparent !important;
}

/* ──────────── 链接 a 标签 ──────────── */
a, a:visited { color: var(--cobra-green-soft); }
a:hover { color: var(--cobra-green); text-shadow: 0 0 8px rgba(0, 255, 156, 0.5); }

/* ──────────── 表单字段最右边的 SelectArrow / clear icon ──────────── */
.ant-select-clear { background: transparent !important; color: var(--cobra-text-mute) !important; }
.ant-select-clear:hover { color: var(--cobra-red) !important; }

/* ──────────── 自定义业务页面（眼镜蛇前端常见包裹器）补一刀 ──────────── */
.build-page, .app-build, .proxy-page, .device-page {
  color: var(--cobra-text);
}
.build-page label, .app-build label,
.build-page .label, .app-build .label,
.section-block .title, .form-block .title { color: var(--cobra-text) !important; }

/* 兼容某些自写卡片 */
.card, .panel, .block {
  background: var(--cobra-panel) !important;
  border: 1px solid var(--cobra-border) !important;
  color: var(--cobra-text) !important;
}

/* ============================================================
   内联样式硬覆盖
   有些组件直接写 style="background:#fafafa" / color:#666 等浅色
   下面通过属性选择器精准定位并强制改色
   ============================================================ */

/* 浅灰内联背景（#fafafa / rgb(250,250,250)）→ 暗黑面板 */
[style*="#fafafa"],
[style*="#FAFAFA"],
[style*="rgb(250, 250, 250)"],
[style*="rgb(250,250,250)"],
[style*="#f5f5f5"],
[style*="#F5F5F5"],
[style*="rgb(245, 245, 245)"],
[style*="rgb(245,245,245)"],
[style*="#f0f0f0"],
[style*="#F0F0F0"],
[style*="rgb(240, 240, 240)"],
[style*="#fff"][style*="background"],
[style*="#FFF"][style*="background"],
[style*="white"][style*="background"] {
  background: rgba(0, 255, 156, 0.06) !important;
  border: 1px solid var(--cobra-border) !important;
  color: var(--cobra-text) !important;
}

/* 浅灰内联文字（#666 / #999 / #86909c 等）→ 暗黑可读色 */
[style*="color:#666"],
[style*="color: #666"],
[style*="color:#999"],
[style*="color: #999"],
[style*="color:#888"],
[style*="color: #888"],
[style*="color:#86909c"],
[style*="color: #86909c"],
[style*="color:#4e5969"],
[style*="color: #4e5969"],
[style*="color:#1d2129"],
[style*="color: #1d2129"],
[style*="color:rgb(102, 102, 102)"],
[style*="color: rgb(102, 102, 102)"] {
  color: var(--cobra-text-dim) !important;
}

/* 这两个内联灰色背景的「基础文案语言 / 弹窗文案语言」语言选择条 */
[style*="基础文案语言"], /* 无效，只是占位 */
form .ant-form > div[style*="background"],
form > div[style*="padding:8px 12px"],
form > div[style*="padding: 8px 12px"] {
  background: rgba(0, 255, 156, 0.06) !important;
  border: 1px solid var(--cobra-border) !important;
  border-radius: 6px !important;
  color: var(--cobra-text) !important;
}
form > div[style*="padding:8px 12px"] span,
form > div[style*="padding: 8px 12px"] span,
[style*="#fafafa"] span,
[style*="rgb(250"] span {
  color: var(--cobra-text-dim) !important;
}

/* AppListView 高频构建行高亮 .row-building td */
.row-building td { background: rgba(0, 255, 156, 0.08) !important; }

/* ============================================================
   登录页 LoginView 暗黑科技风重写
   原版是金黄火焰风，这里改成翠绿霓虹眼镜蛇风
   ============================================================ */

/* 整页底色 + 用眼镜蛇电路图做背景（覆盖原 /bg.jpg） */
.login-page { background: #020604 !important; }
.login-page::before {
  background:
    radial-gradient(ellipse at 50% 40%, rgba(0, 255, 156, 0.08), transparent 65%),
    rgba(0, 0, 0, 0.55) !important;
}
.login-bg-image {
  background-image: url('./cobra-bg.png') !important;
  filter: saturate(1.15) brightness(0.85) contrast(1.05);
}

/* 去掉小 logo 图，让背景里的眼镜蛇 + COBRA 标题自己说话 */
.login-logo-img { display: none !important; }
.login-logo-wrap {
  margin-bottom: 18px !important;
  min-height: 88px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

/* 仅保留 COBRA 文字标题（伪元素注入，无需改 Vue） */
.login-logo-wrap::after {
  content: 'C O B R A';
  display: block;
  text-align: center;
  font-size: 32px;
  font-weight: 800;
  letter-spacing: 18px;
  color: var(--cobra-green);
  text-shadow:
    0 0 18px rgba(0, 255, 156, 0.7),
    0 0 40px rgba(0, 255, 156, 0.4),
    0 4px 18px rgba(0, 0, 0, 0.8);
  font-family: 'Segoe UI', sans-serif;
}
/* 在「账号登录」上方注入一段「眼镜蛇控制台 / v1.0」副标题 */
.panel-header::before {
  content: '眼  镜  蛇  控  制  台';
  display: block;
  margin: -8px 0 14px;
  text-align: center;
  font-size: 11px;
  letter-spacing: 6px;
  color: var(--cobra-text-mute);
  text-transform: uppercase;
}

/* 登录面板：暗黑玻璃 + 绿色霓虹边 */
.login-panel {
  background:
    linear-gradient(160deg, rgba(5, 15, 11, 0.92) 0%, rgba(8, 22, 16, 0.88) 100%) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  border-radius: 4px !important;
  box-shadow:
    0 0 0 1px rgba(0, 255, 156, 0.08),
    0 24px 60px rgba(0, 0, 0, 0.7),
    0 0 60px rgba(0, 255, 156, 0.12),
    inset 0 1px 0 rgba(0, 255, 156, 0.15) !important;
}
.login-panel::before {
  background: linear-gradient(90deg, transparent, rgba(0, 255, 156, 0.7), transparent) !important;
}
.login-panel::after {
  border-top-color: var(--cobra-green) !important;
  border-left-color: var(--cobra-green) !important;
  box-shadow: 0 0 6px rgba(0, 255, 156, 0.4);
}

/* 标题区 ── 「账号登录」 */
.panel-title-line {
  background: linear-gradient(90deg, transparent, rgba(0, 255, 156, 0.5), transparent) !important;
}
.panel-title-text {
  color: var(--cobra-green) !important;
  text-shadow: 0 0 12px rgba(0, 255, 156, 0.5) !important;
}

/* 输入框 */
.field-input-wrap {
  background: rgba(0, 0, 0, 0.55) !important;
  border: 1px solid var(--cobra-border-strong) !important;
}
.field-input-wrap.focused {
  border-color: var(--cobra-green) !important;
  box-shadow:
    0 0 14px rgba(0, 255, 156, 0.35),
    inset 0 0 10px rgba(0, 255, 156, 0.06) !important;
}
.field-input-wrap.error {
  border-color: var(--cobra-red) !important;
  box-shadow: 0 0 10px rgba(255, 46, 61, 0.3) !important;
}
.field-prefix-icon { color: rgba(0, 255, 156, 0.6) !important; }
.field-error { color: var(--cobra-red) !important; }

.custom-input.ant-input,
.custom-input .ant-input,
.login-panel :is(.ant-input, .ant-input-affix-wrapper) {
  background: transparent !important;
  color: var(--cobra-text) !important;
  border: none !important;
  box-shadow: none !important;
}
.custom-input.ant-input::placeholder,
.custom-input .ant-input::placeholder,
.login-panel .ant-input::placeholder {
  color: rgba(110, 140, 125, 0.5) !important;
}
.login-panel .ant-input-suffix svg,
.login-panel .ant-input-clear-icon svg { color: rgba(0, 255, 156, 0.55) !important; }

/* 登录按钮：替换金色火焰背景为翠绿渐变 */
.fire-btn {
  background:
    linear-gradient(135deg, var(--cobra-green-soft) 0%, var(--cobra-green-dim) 100%) !important;
  color: #001a0d !important;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25) !important;
  box-shadow:
    0 4px 22px rgba(0, 255, 156, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.25),
    0 0 0 1px var(--cobra-green) !important;
}
.fire-btn:hover {
  background:
    linear-gradient(135deg, var(--cobra-green) 0%, var(--cobra-green-soft) 100%) !important;
  box-shadow:
    0 8px 32px rgba(0, 255, 156, 0.7),
    inset 0 1px 0 rgba(255, 255, 255, 0.35),
    0 0 0 1px var(--cobra-green) !important;
}
.fire-btn::after {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, transparent 60%) !important;
}

/* TG 二次验证文字色 */
.tg-title { color: var(--cobra-green) !important; text-shadow: 0 0 10px rgba(0, 255, 156, 0.4); }
.tg-step { color: var(--cobra-text-dim) !important; }
.tg-step-num {
  border-color: var(--cobra-green) !important;
  color: var(--cobra-green) !important;
}
.tg-link {
  color: var(--cobra-green) !important;
  border-bottom-color: rgba(0, 255, 156, 0.4) !important;
}
.tg-link:hover { border-bottom-color: var(--cobra-green) !important; }
.tg-code-wrap {
  background: rgba(0, 0, 0, 0.55) !important;
  border: 1px solid var(--cobra-border-strong) !important;
}
.tg-code-input.ant-input { color: var(--cobra-green) !important; text-shadow: 0 0 10px rgba(0, 255, 156, 0.4); }
.tg-back-btn {
  background: rgba(0, 0, 0, 0.5) !important;
  border: 1px solid var(--cobra-border-strong) !important;
  color: var(--cobra-text-dim) !important;
}
.tg-back-btn:hover {
  background: rgba(0, 255, 156, 0.08) !important;
  color: var(--cobra-green) !important;
  border-color: var(--cobra-green) !important;
}

/* ============================================================
   登录页 —— 桌面客户端窗口形态
   登录卡片本身收紧到 280px，并由 JS 包一层「窗口标题栏」
   让它看起来像一个独立的桌面应用窗口
   ============================================================ */

/* ─── 桌面客户端窗口模拟模式 ───
   仅在 Electron 桌面客户端（cobra-server-config.js 检测到后给 body 加 .cobra-desktop-mode）才启用：
   把整个 .login-page 收缩为 520×520 的居中小窗口，加标题栏与最小化/关闭按钮。
   网页端（浏览器）不会加这个 class，登录页保持原生全屏布局。
*/
body.cobra-desktop-mode {
  background: #02060a !important;
  overflow: hidden !important;
}
body.cobra-desktop-mode::before {
  content: '';
  position: fixed;
  inset: 0;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(0, 255, 156, 0.04), transparent 60%),
    #02060a;
  z-index: 0;
}
body.cobra-desktop-mode .login-page {
  position: fixed !important;
  top: 50% !important;
  left: 50% !important;
  right: auto !important;
  bottom: auto !important;
  transform: translate(-50%, -50%) !important;
  width: 520px !important;
  min-width: 520px !important;
  max-width: calc(100vw - 40px) !important;
  height: 520px !important;
  min-height: 0 !important;
  max-height: calc(100vh - 40px) !important;
  border-radius: 8px !important;
  border: 1px solid rgba(0, 255, 156, 0.35) !important;
  box-shadow:
    0 24px 72px rgba(0, 0, 0, 0.9),
    0 0 60px rgba(0, 255, 156, 0.18),
    inset 0 1px 0 rgba(0, 255, 156, 0.15) !important;
  overflow: hidden !important;
  background: #04090b !important;
  display: flex !important;
  align-items: flex-end !important;
  justify-content: center !important;
  padding-bottom: 32px !important;
  box-sizing: border-box !important;
  z-index: 10 !important;
}

/* 背景图：让蛇头落在 ~25% 处，正好在登录卡片上方露出（仅桌面客户端） */
body.cobra-desktop-mode .login-page > .login-bg .login-bg-image {
  background-size: cover !important;
  background-position: center 28% !important;
}
/* 给窗口左上角加一个霓虹小角（仅桌面客户端） */
body.cobra-desktop-mode .login-page::after {
  content: '';
  position: absolute;
  top: -1px; left: -1px;
  width: 22px; height: 22px;
  border-top: 2px solid #00ff9c;
  border-left: 2px solid #00ff9c;
  box-shadow: 0 0 8px rgba(0, 255, 156, 0.5);
  z-index: 20;
  pointer-events: none;
}
body.cobra-desktop-mode .login-wrap {
  margin-bottom: 0 !important;
}
/* 齿轮按钮在桌面客户端：吸附到窗口右下角内部 */
body.cobra-desktop-mode .cobra-gear-btn {
  position: absolute !important;
  bottom: 16px !important;
  right: 18px !important;
}
/* 背景图收窄到「窗口」内部，不再当壁纸用（仅桌面客户端） */
body.cobra-desktop-mode .login-page .login-bg {
  position: absolute !important;
  inset: 0 !important;
  z-index: 0 !important;
}
body.cobra-desktop-mode .login-bg-image {
  background-image: url('./cobra-bg.png') !important;
  background-size: cover !important;
  background-position: center !important;
  filter: saturate(0.9) brightness(0.5) contrast(1.05) !important;
}
body.cobra-desktop-mode .login-page::before {
  background:
    radial-gradient(ellipse at 50% 45%, rgba(0, 255, 156, 0.05), transparent 60%),
    rgba(0, 0, 0, 0.72) !important;
}

/* 登录卡片本体（窄版，仅桌面客户端） */
body.cobra-desktop-mode .login-panel {
  width: 280px !important;
  padding: 18px 22px 22px !important;
  border-radius: 4px !important;
}
body.cobra-desktop-mode .login-logo-wrap {
  margin-bottom: 8px !important;
  min-height: 40px !important;
}
body.cobra-desktop-mode .login-logo-wrap::after {
  font-size: 18px !important;
  letter-spacing: 8px !important;
}
body.cobra-desktop-mode .panel-header::before {
  margin: -4px 0 8px !important;
  font-size: 9px !important;
  letter-spacing: 3px !important;
}
body.cobra-desktop-mode .panel-title-text {
  font-size: 13px !important;
  letter-spacing: 4px !important;
}
body.cobra-desktop-mode .panel-title-line {
  margin: 6px 0 14px !important;
}
body.cobra-desktop-mode .login-panel :is(.ant-input, .ant-input-affix-wrapper) {
  font-size: 12.5px !important;
}
body.cobra-desktop-mode .field-input-wrap {
  height: 36px !important;
  margin-bottom: 10px !important;
}
body.cobra-desktop-mode .fire-btn {
  height: 36px !important;
  font-size: 13px !important;
  letter-spacing: 6px !important;
}

/* ─── 桌面客户端系统标题栏 ───
   只要 body 上有 cobra-has-titlebar（由 cobra-server-config.js 在 Electron 客户端
   注入），就在视窗顶部 fixed 一条标题栏，登录前/后全程存在。 */
body.cobra-has-titlebar .cobra-desktop-titlebar {
  position: fixed !important;
  top: 0 !important; left: 0 !important; right: 0 !important;
  height: 34px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 0 12px 0 16px !important;
  background: linear-gradient(180deg, rgba(0, 12, 8, 0.95), rgba(0, 8, 5, 0.92)) !important;
  border-bottom: 1px solid rgba(0, 255, 156, 0.28) !important;
  -webkit-app-region: drag !important;
  user-select: none !important;
  z-index: 99999 !important;
  backdrop-filter: blur(10px) !important;
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.45) !important;
}
body.cobra-has-titlebar .cobra-desktop-titlebar::after {
  content: '' !important;
  position: absolute !important;
  left: 8% !important; right: 8% !important; bottom: 0 !important;
  height: 1px !important;
  background: linear-gradient(90deg, transparent, rgba(0, 255, 156, 0.55), transparent) !important;
}
body.cobra-has-titlebar .cobra-desktop-title {
  font-size: 11.5px !important;
  letter-spacing: 2.5px !important;
  color: rgba(0, 255, 156, 0.85) !important;
  font-family: 'Consolas', monospace !important;
  text-shadow: 0 0 8px rgba(0, 255, 156, 0.35) !important;
}
body.cobra-has-titlebar .cobra-desktop-btns {
  display: flex !important;
  gap: 7px !important;
  -webkit-app-region: no-drag !important;
}
body.cobra-has-titlebar .cobra-desktop-btn {
  width: 14px !important; height: 14px !important; border-radius: 50% !important;
  border: none !important; cursor: pointer !important; padding: 0 !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  font-size: 9px !important; color: rgba(0,0,0,.7) !important; font-weight: 700 !important;
  transition: all .15s !important;
}
body.cobra-has-titlebar .cobra-desktop-btn.minimize { background: #f5c43c !important; }
body.cobra-has-titlebar .cobra-desktop-btn.minimize:hover { background: #e0b030 !important; transform: scale(1.2); }
body.cobra-has-titlebar .cobra-desktop-btn.close { background: #ff5f57 !important; }
body.cobra-has-titlebar .cobra-desktop-btn.close:hover { background: #e04040 !important; transform: scale(1.2); }

/* 整个页面下推 34px 给标题栏让位 */
body.cobra-has-titlebar #app { padding-top: 34px !important; }
