/* ═══════════════════════════════════════════
   IMPTC 设计系统 — 内蒙古电力交易中心官方风格
   品牌色 #1EACA6 (官網綠) + Element Plus 框架
   ═══════════════════════════════════════════ */
:root {
  /* 官方品牌色板 — 官網綠系 */
  --brand-green: #1EACA6;
  --brand-green-hover: #18908b;
  --brand-green-active: #147a76;
  --brand-green-light: #e8f6f5;
  --brand-green-lighter: #f0faf9;
  --brand-green-dark: #0c263d;         /* 深色文字/背景 */

  /* 通用色板 */
  --el-color-primary: var(--brand-green);
  --el-color-primary-light-3: #5ec4bf;
  --el-color-primary-light-5: #8dd7d4;
  --el-color-primary-light-7: #bce9e7;
  --el-color-primary-light-8: #d4f1ef;
  --el-color-primary-light-9: #e8f6f5;
  --el-color-primary-dark-2: var(--brand-green-hover);
  --el-color-success: #67C23A;
  --el-color-warning: #E6A23C;
  --el-color-danger: #F56C6C;
  --el-color-info: #909399;

  /* 布局色 */
  --bg: #f4f9f8;
  --panel: #FFFFFF;
  --border: #DCDFE6;
  --border-light: #E4E7ED;
  --border-lighter: #EBEEF5;
  --border-extra-light: #F2F6FC;

  /* 语义色映射 */
  --primary: var(--brand-green);
  --primary-hover: var(--brand-green-hover);
  --primary-light: var(--brand-green-light);
  --accent: var(--brand-green);
  --accent-hover: var(--brand-green-hover);
  --warning: var(--el-color-warning);
  --error: var(--el-color-danger);

  /* 文字色 — 官網用的深綠黑 #101f1c */
  --text-primary: #101f1c;
  --text-regular: #404946;
  --text-secondary: #909399;
  --text-placeholder: #C0C4CC;
  --text: var(--text-primary);
  --muted: var(--text-secondary);

  /* 侧边栏 (浅色) */
  --sidebar-bg: #FFFFFF;
  --sidebar-text: var(--text-regular);
  --sidebar-active: var(--brand-green);
  --sidebar-active-bg: var(--brand-green-light);

  /* 基础 */
  --font: 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', system-ui, sans-serif;
  --radius: 4px;
  --radius-lg: 8px;
  --shadow: 0 2px 12px 0 rgba(0,0,0,0.06);
  --shadow-light: 0 2px 4px rgba(0,0,0,0.04);
  --shadow-dark: 0 2px 12px 0 rgba(0,0,0,0.1);
  --transition-fast: 0.2s cubic-bezier(0.4,0,0.2,1);
  --transition-normal: 0.3s cubic-bezier(0.4,0,0.2,1);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  background: var(--bg); color: var(--text);
  font-family: var(--font); font-size: 14px; height: 100vh; overflow: hidden;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}

.layout { display: flex; height: 100vh; }

/* ═══ 左侧导航 — imptc.com 绿色主题侧边栏 ═══ */
.sidebar {
  width: 220px; background: linear-gradient(180deg, #10807b 0%, #1EACA6 84px, #FFFFFF 84px);
  color: var(--text-regular);
  display: flex; flex-direction: column; flex-shrink: 0;
  border-right: 1px solid var(--border);
  box-shadow: 2px 0 12px rgba(30,172,166,0.12);
  overflow-y: auto;
}
.sidebar-header {
  padding: 24px 20px 20px; border-bottom: 1px solid rgba(255,255,255,0.18);
  text-align: center;
}
.sidebar-header h1 {
  color: #fff; font-size: 17px; font-weight: 700; letter-spacing: 1px;
  display: flex; align-items: center; justify-content: center; gap: 8px;
  text-shadow: 0 1px 2px rgba(0,0,0,0.12);
}
.sidebar-header p { color: rgba(255,255,255,0.85); font-size: 11px; margin-top: 6px; }

.nav-section { padding: 6px 0 0; }
.nav-item {
  display: flex; align-items: center; gap: 10px; padding: 11px 20px; margin: 1px 0;
  border-radius: 0; cursor: pointer; transition: all var(--transition-fast);
  font-size: 13px; color: var(--text-regular); border: none; background: none;
  width: 100%; text-align: left; position: relative;
  border-left: 3px solid transparent;
}
.nav-item:hover { background: var(--brand-green-lighter); color: var(--primary); }
.nav-item.active {
  background: var(--primary-light);
  color: var(--primary);
  border-left-color: var(--primary);
  font-weight: 600;
}
.nav-item .icon { font-size: 15px; width: 20px; text-align: center; opacity: 0.7; }
.nav-item.active .icon { opacity: 1; }
.nav-item.running { animation: epPulse 1.2s infinite; }
@keyframes epPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.55; } }

/* ═══ 左侧栏手风琴菜单 ═══ */
.nav-item-top {
  font-weight: 500;
  border-bottom: 1px solid var(--border-lighter);
  padding: 13px 20px;
}
.nav-item-top .nav-arrow {
  margin-left: auto;
  font-size: 10px;
  color: var(--text-placeholder);
  transition: transform var(--transition-normal);
}

/* 手风琴分组容器 */
.nav-group {
  overflow: hidden;
}
.nav-group-header {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  justify-content: flex-start;
}
.nav-group-header .nav-arrow {
  margin-left: auto;
  font-size: 10px;
  color: var(--text-placeholder);
  transition: transform var(--transition-normal);
}
.nav-group.open .nav-group-header .nav-arrow {
  transform: rotate(90deg);
  color: var(--primary);
}

/* 二级菜单容器 — 默认折叠，展开时带动画 */
.nav-group-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s cubic-bezier(0.4,0,0.2,1);
  background: var(--brand-green-lighter);
}
.nav-group.open .nav-group-body {
  max-height: 600px;
}

/* 二级菜单项 — 缩进 + 左侧竖线 */
.nav-sub-item {
  padding-left: 36px;
  font-size: 12px;
  border-left: 3px solid transparent;
  border-bottom: 1px solid rgba(0,0,0,0.03);
}
.nav-sub-item:hover {
  background: rgba(30,172,166,0.08);
}
.nav-sub-item.active {
  background: var(--primary-light);
  color: var(--primary);
  border-left-color: var(--primary);
  font-weight: 600;
}
.nav-sub-item .icon {
  font-size: 13px;
  width: 18px;
}

.sidebar-footer { margin-top: auto; padding: 14px 20px; border-top: 1px solid var(--border-lighter); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sidebar-footer .info { font-size: 11px; color: var(--text-secondary); }
.sidebar-footer .sep { font-size: 11px; color: var(--border-light); }
.sidebar-footer a { font-size: 11px; color: var(--brand-green); text-decoration: none; }
.sidebar-footer a:hover { text-decoration: underline; }

/* ═══════════════════════════════════════════════
   更新日志弹窗（changelog-viewer）
   ═══════════════════════════════════════════════ */
#clog-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  z-index: 2147483640;
  display: flex; align-items: center; justify-content: center;
  outline: none;
}
.clog-bg {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.5);
}
.clog-box {
  position: relative;
  width: 820px; max-width: 94vw; height: 560px; max-height: 85vh;
  background: #161b22; border: 1px solid #30363d; border-radius: 12px;
  display: flex; flex-direction: column;
  box-shadow: 0 12px 48px rgba(0,0,0,0.55);
  overflow: hidden;
}
.clog-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 20px; border-bottom: 1px solid #21262d;
  background: #0d1117; flex-shrink: 0;
}
.clog-title { font-size: 15px; font-weight: 600; color: #e6edf3; }
.clog-close {
  width: 28px; height: 28px; border: none; background: transparent;
  color: #8b949e; font-size: 16px; cursor: pointer; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
}
.clog-close:hover { background: #21262d; color: #e6edf3; }
.clog-body {
  flex: 1; display: flex; min-height: 0;
}
.clog-list {
  width: 200px; flex-shrink: 0; overflow-y: auto; padding: 8px 0;
  border-right: 1px solid #21262d; background: #0d1117;
}
.clog-list .clog-loading,
.clog-list .clog-empty,
.clog-list .clog-error {
  padding: 20px 16px; font-size: 12px; color: #8b949e; text-align: center;
}
.clog-list .clog-error { color: #f85149; }
.clog-item {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 16px; cursor: pointer; font-size: 12px; color: #8b949e;
  transition: background 0.15s; border-left: 2px solid transparent;
  user-select: none;
}
.clog-item:hover { background: #1c2128; color: #c9d1d9; }
.clog-item.active {
  background: #1a2332; color: #58a6ff;
  border-left-color: #58a6ff;
}
.clog-item-dot {
  width: 6px; height: 6px; border-radius: 50%; background: #30363d; flex-shrink: 0;
}
.clog-item.active .clog-item-dot { background: #58a6ff; }
.clog-item-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.clog-item-size { font-size: 10px; color: #484f58; flex-shrink: 0; }
.clog-content {
  flex: 1; overflow-y: auto; padding: 20px 28px;
}
.clog-content .clog-loading,
.clog-content .clog-empty,
.clog-content .clog-error {
  font-size: 13px; color: #8b949e; text-align: center; padding-top: 60px;
}
.clog-content .clog-error { color: #f85149; }

/* ── Markdown 渲染样式 ── */
.clog-md { color: #c9d1d9; font-size: 13px; line-height: 1.7; }
.clog-md h1 { font-size: 20px; font-weight: 600; color: #e6edf3; border-bottom: 1px solid #21262d; padding-bottom: 10px; margin: 0 0 16px; }
.clog-md h2 { font-size: 16px; font-weight: 600; color: #e6edf3; margin: 24px 0 10px; }
.clog-md h3 { font-size: 14px; font-weight: 600; color: #e6edf3; margin: 18px 0 8px; }
.clog-md p { margin: 0 0 10px; }
.clog-md ul, .clog-md ol { margin: 0 0 10px; padding-left: 20px; }
.clog-md li { margin-bottom: 4px; }
.clog-md code {
  background: #1c2128; padding: 2px 6px; border-radius: 4px;
  font-family: Consolas, 'Courier New', monospace; font-size: 12px; color: #d2a8ff;
}
.clog-md pre {
  background: #0d1117; border: 1px solid #21262d; border-radius: 6px;
  padding: 12px 16px; overflow-x: auto; margin: 0 0 12px;
}
.clog-md pre code { background: none; padding: 0; color: #c9d1d9; }
.clog-md table { border-collapse: collapse; width: 100%; margin: 0 0 12px; }
.clog-md th, .clog-md td { border: 1px solid #30363d; padding: 6px 12px; text-align: left; font-size: 12px; }
.clog-md th { background: #0d1117; font-weight: 600; color: #e6edf3; }
.clog-md strong { color: #e6edf3; }
.clog-md a { color: #58a6ff; }
.clog-md blockquote {
  border-left: 3px solid #30363d; margin: 0 0 10px; padding: 4px 14px;
  color: #8b949e;
}
.clog-md hr { border: none; border-top: 1px solid #21262d; margin: 16px 0; }

.clog-footer {
  padding: 10px 20px; border-top: 1px solid #21262d;
  font-size: 11px; color: #484f58; background: #0d1117; flex-shrink: 0;
  text-align: center;
}

/* ═══ 右侧主区域 ═══ */
.main { flex: 1; display: flex; flex-direction: column; min-width: 0; background: var(--bg); }

/* 顶栏 */
.topbar {
  background: linear-gradient(180deg, #fff 0%, #f8fdfc 100%);
  border-bottom: 2px solid var(--primary);
  padding: 10px 20px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  box-shadow: 0 2px 8px rgba(30,172,166,0.06);
}
.topbar .date { font-weight: 600; color: var(--primary); font-size: 13px; }
.topbar select {
  padding: 7px 12px; border: 1px solid var(--border); border-radius: var(--radius);
  font-size: 13px; background: var(--panel); color: var(--text-regular); min-width: 150px;
  transition: border-color var(--transition-fast);
}
.topbar select:hover { border-color: var(--text-placeholder); }
.topbar select:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 2px rgba(30,172,166,0.15); }
#monthSelect { min-width: 70px; }
#monthSelect:hover { border-color: var(--text-placeholder); }
#monthSelect:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 2px rgba(30,172,166,0.15); }
.token-input {
  padding: 7px 12px; border: 1px solid var(--border); border-radius: var(--radius);
  font-size: 13px; width: 280px; background: var(--panel); color: var(--text-regular);
  transition: border-color var(--transition-fast);
}
.token-input:hover { border-color: var(--text-placeholder); }
.token-input:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 2px rgba(30,172,166,0.15); }
.token-dropdown { display: none; position: absolute; top: 100%; right: 0; z-index: 50; background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 4px 12px rgba(0,0,0,0.1); min-width: 180px; }
.token-dropdown.show { display: block; }
.token-dropdown-item { padding: 8px 14px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; font-size: 12px; transition: all var(--transition-fast); }
.token-dropdown-item:hover { background: #eff6ff; color: var(--primary); }
.token-dropdown-item.loading { opacity: 0.5; pointer-events: none; }
.btn-sm.loading { opacity: 0.6; pointer-events: none; }
.btn-sm {
  padding: 7px 16px; border: 1px solid var(--border); border-radius: var(--radius);
  font-size: 12px; cursor: pointer; font-weight: 500; transition: all var(--transition-fast);
  background: var(--panel); color: var(--text-regular);
  display: inline-flex; align-items: center; gap: 4px;
}
.btn-sm:hover { border-color: var(--primary); color: var(--primary); }
.btn-primary {
  background: var(--primary); border-color: var(--primary); color: #fff;
}
.btn-primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); color: #fff; }
.btn-accent {
  background: var(--accent); border-color: var(--accent); color: #fff;
}
.btn-accent:hover { background: var(--accent-hover); border-color: var(--accent-hover); color: #fff; }
.btn-muted { background: #F5F7FA; border-color: var(--border); color: var(--text-regular); }
.btn-muted:hover { background: var(--brand-green-lighter); border-color: var(--primary-light-7); color: var(--primary); }
.btn-danger { background: var(--error); border-color: var(--error); color: #fff; }
.btn-danger:hover { background: #f56c6c; border-color: #f56c6c; color: #fff; }
.btn-sm:active { transform: scale(0.97); }
.token-status { font-size: 12px; font-weight: 500; }
.token-ok { color: var(--el-color-success); }
.token-err { color: var(--el-color-danger); }

/* ═══ 内容区 ═══ */
.content { flex: 1; display: flex; overflow: hidden; }

/* 全宽页面（企业统计/文件共享/交易员管理等）：纵向排列，子元素自动撑满宽度 */
.main-content { flex-direction: column; }

/* 功能面板 */
.func-panel {
  width: 380px; padding: 14px; overflow-y: auto; flex-shrink: 0;
  border-right: 1px solid var(--border);
  background: linear-gradient(180deg, #f8fdfc 0%, #f0faf9 50%, #f8fdfc 100%);
}
.func-card {
  background: var(--panel); border-radius: var(--radius); border: 1px solid var(--border);
  margin-bottom: 10px; overflow: hidden; box-shadow: var(--shadow-light);
  transition: all var(--transition-fast);
}
.func-card:hover { box-shadow: var(--shadow); border-color: var(--brand-green-light); }
.func-card.open { border-color: var(--primary); border-left: 3px solid var(--primary); }
.func-card-header {
  padding: 14px 16px; cursor: pointer; display: flex; align-items: center; gap: 10px;
  transition: background var(--transition-fast); border-bottom: 1px solid transparent;
}
.func-card.open .func-card-header {
  border-bottom-color: var(--border-lighter);
  background: var(--brand-green-lighter);
}
.func-card-header:hover { background: var(--brand-green-lighter); }
.func-card-header .icon { font-size: 18px; }
.func-card-header .title { font-weight: 600; font-size: 13px; flex: 1; color: var(--text-primary); }
.func-card.open .func-card-header .title { color: var(--primary); }
.func-card-header .arrow {
  color: var(--text-placeholder); transition: transform var(--transition-normal);
  font-size: 10px;
}
.func-card.open .arrow { transform: rotate(90deg); color: var(--primary); }

.func-card-body { display: none; padding: 14px 16px 16px; }
.func-card.open .func-card-body { display: block; animation: epSlideDown 0.25s ease; }
@keyframes epSlideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 表单元素 */
.form-group { margin-bottom: 12px; }
.form-label { display: block; font-size: 13px; color: var(--text-regular); margin-bottom: 6px; font-weight: 500; }
.form-input, .form-select {
  width: 100%; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius);
  font-size: 13px; background: var(--panel); color: var(--text-regular);
  transition: border-color var(--transition-fast);
}
.form-input:hover, .form-select:hover { border-color: var(--text-placeholder); }
.form-input:focus, .form-select:focus {
  border-color: var(--primary); outline: none;
  box-shadow: 0 0 0 2px rgba(30,172,166,0.15);
}
.form-input::placeholder { color: var(--text-placeholder); }
.form-hint { font-size: 12px; color: var(--text-secondary); margin-top: 4px; }

.checkbox-group { display: flex; flex-wrap: wrap; gap: 8px; }
.checkbox-item {
  display: flex; align-items: center; gap: 6px; padding: 7px 14px;
  border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer;
  font-size: 12px; transition: all var(--transition-fast); user-select: none;
  background: var(--panel); color: var(--text-regular);
}
.checkbox-item:hover { border-color: var(--primary); color: var(--primary); background: var(--brand-green-lighter); }
.checkbox-item.selected {
  background: var(--primary); border-color: var(--primary);
  color: #fff; font-weight: 500;
}
.checkbox-item input { display: none; }

.btn-run {
  width: 100%; padding: 10px 16px; border: none; border-radius: var(--radius);
  font-size: 13px; font-weight: 600; cursor: pointer; transition: all var(--transition-fast);
  margin-top: 8px; letter-spacing: 0.5px;
}
.btn-run-primary { background: var(--primary); color: #fff; }
.btn-run-primary:hover { background: var(--primary-hover); box-shadow: 0 4px 12px rgba(30,172,166,0.35); }
.btn-run-accent { background: var(--accent); color: #fff; }
.btn-run-accent:hover { background: var(--accent-hover); box-shadow: 0 4px 12px rgba(30,172,166,0.35); }
.btn-run-muted { background: #F5F7FA; color: var(--text-regular); border: 1px solid var(--border); }
.btn-run-muted:hover { background: var(--brand-green-lighter); border-color: var(--primary); color: var(--primary); box-shadow: 0 4px 12px rgba(30,172,166,0.15); }
.btn-run:disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; }
.btn-run:active:not(:disabled) { transform: scale(0.98); }

/* ═══ 日志面板 ═══ */
.log-panel { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.log-header {
  padding: 12px 20px; border-bottom: 2px solid var(--primary); display: flex;
  justify-content: space-between; align-items: center;
  background: linear-gradient(180deg, #fff 0%, #f8fdfc 100%);
}
.log-header .title { font-weight: 600; font-size: 14px; color: var(--primary); }
.log-header .count { font-size: 12px; color: var(--text-secondary); }
.log-body {
  flex: 1; overflow-y: auto; padding: 12px 20px;
  font-family: 'Cascadia Code', 'Consolas', 'Menlo', monospace;
  font-size: 12px; line-height: 1.7; background: #1A1E2B; color: #a3b1cc;
}
.log-line { padding: 2px 0; white-space: pre-wrap; word-break: break-all; }
.log-line.success { color: #67C23A; }
.log-line.error { color: #F56C6C; }
.log-line.info { color: #5ec4bf; }
.log-line.warn { color: #E6A23C; }
.log-empty { color: #4a5568; font-style: italic; }

/* ═══ 状态栏 ═══ */
.statusbar {
  padding: 6px 20px; border-top: 1px solid var(--border); font-size: 11px;
  color: var(--text-secondary); display: flex; gap: 20px;
  background: linear-gradient(180deg, #f8fdfc 0%, #fff 100%);
}

/* ═══ 弹窗 ═══ */
.modal-overlay {
  display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.45);
  z-index: 1000; align-items: center; justify-content: center;
  backdrop-filter: blur(2px);
}
.modal-overlay.active { display: flex; animation: epFadeIn 0.2s ease; }
@keyframes epFadeIn { from { opacity: 0; } to { opacity: 1; } }
.modal-box {
  background: var(--panel); border-radius: var(--radius-lg); padding: 28px; min-width: 400px;
  max-width: 460px; box-shadow: var(--shadow-dark);
  border-top: 3px solid var(--primary);
  animation: epScaleIn 0.25s cubic-bezier(0.4,0,0.2,1);
}
@keyframes epScaleIn {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}
.modal-box h3 { font-size: 17px; margin-bottom: 20px; color: var(--primary); font-weight: 600; }
.modal-box .form-input { margin-bottom: 12px; }
.modal-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 20px; }

/* ═══ 空状态 ═══ */
.empty-state {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  height: 100%; color: var(--text-secondary);
}
.empty-state .icon { font-size: 56px; margin-bottom: 16px; opacity: 0.5; }
.empty-state p { font-size: 14px; }

/* ═══ 置换申报专用 ═══ */
.dp-panel { padding: 20px 24px; height: 100%; display: flex; flex-direction: column; overflow: hidden; }
.dp-panel h2 { font-size: 18px; margin-bottom: 18px; display: flex; align-items: center; gap: 8px; color: var(--primary); }
.dp-config {
  display: flex; gap: 14px; flex-wrap: wrap; align-items: flex-end;
  margin-bottom: 18px; padding: 16px 18px;
  background: linear-gradient(135deg, #f8fdfc 0%, #e8f6f5 100%);
  border: 1px solid var(--primary-light-7); border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(30,172,166,0.06);
}
.dp-config .fg { display: flex; flex-direction: column; gap: 4px; }
.dp-config .fg label { font-size: 12px; color: var(--text-secondary); font-weight: 500; }
.dp-config .fg input, .dp-config .fg select {
  padding: 7px 12px; border: 1px solid var(--border); border-radius: var(--radius);
  font-size: 13px; min-width: 130px; background: var(--panel); color: var(--text-regular);
  transition: border-color var(--transition-fast);
}
.dp-config .fg input:hover, .dp-config .fg select:hover { border-color: var(--text-placeholder); }
.dp-config .fg input:focus, .dp-config .fg select:focus {
  border-color: var(--primary); outline: none;
  box-shadow: 0 0 0 2px rgba(30,172,166,0.15);
}
.dp-config .fg select { min-width: 200px; }
.dp-actions { display: flex; gap: 8px; align-items: flex-end; }
.dp-table-wrap {
  flex: 1; overflow-y: auto; border: 1px solid var(--border);
  border-radius: var(--radius); background: var(--panel);
  box-shadow: var(--shadow-light);
}
.dp-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dp-table thead { position: sticky; top: 0; z-index: 2; }
.dp-table th {
  background: linear-gradient(180deg, #e8f6f5 0%, #d4f1ef 100%);
  padding: 10px 12px; text-align: left; font-size: 12px;
  color: #0c6b66; border-bottom: 2px solid var(--primary); font-weight: 600;
  white-space: nowrap;
}
.dp-table td { padding: 8px 12px; border-bottom: 1px solid var(--border-lighter); color: var(--text-regular); }
.dp-table tbody tr { transition: background var(--transition-fast); }
.dp-table tbody tr:hover td { background: #F5F7FA; }
.dp-table tr.hour-header td {
  background: linear-gradient(90deg, #e8f6f5 0%, #bce9e7 50%, #e8f6f5 100%);
  font-weight: 700; font-size: 13px;
  padding: 9px 12px; color: #0c6b66; border-bottom: 2px solid var(--primary);
}
.dp-table .chk { width: 36px; text-align: center; }
.dp-table .chk input[type=checkbox],
.dp-table .chk-all-hour input[type=checkbox] {
  width: 15px; height: 15px; cursor: pointer; accent-color: var(--primary);
}
.dp-table .energy { text-align: right; font-variant-numeric: tabular-nums; color: var(--el-color-success); font-weight: 500; }
.dp-table .price { text-align: right; font-variant-numeric: tabular-nums; }
.dp-table .retId { font-size: 11px; color: var(--text-secondary); max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
.dp-bottom {
  margin-top: 14px; padding: 16px 18px;
  background: linear-gradient(135deg, #f8fdfc 0%, #f0faf9 100%);
  border: 1px solid var(--primary-light-7); border-radius: var(--radius);
  box-shadow: 0 2px 8px rgba(30,172,166,0.06);
}
.dp-bottom .summary { display: flex; gap: 28px; margin-bottom: 14px; font-size: 13px; flex-wrap: wrap; }
.dp-bottom .summary .num { font-weight: 700; font-size: 17px; color: var(--primary); }
.dp-price-ctrl { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; }
.dp-price-ctrl .fg { display: flex; flex-direction: column; gap: 4px; }
.dp-price-ctrl .fg label { font-size: 12px; color: var(--text-secondary); font-weight: 500; }
.dp-price-ctrl .fg input, .dp-price-ctrl .fg select {
  padding: 7px 12px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px;
}
.dp-toast {
  position: fixed; top: 20px; right: 20px; padding: 12px 22px;
  border-radius: var(--radius); color: #fff; font-size: 13px; font-weight: 500;
  z-index: 9999; animation: epToastIn 2.8s ease forwards;
  box-shadow: var(--shadow-dark);
}
.dp-toast.ok { background: var(--el-color-success); }
.dp-toast.err { background: var(--el-color-danger); }
@keyframes epToastIn {
  0%   { opacity: 0; transform: translateX(40px); }
  12%  { opacity: 1; transform: translateX(0); }
  80%  { opacity: 1; }
  100% { opacity: 0; transform: translateY(-10px); }
}

/* ─── 置换申报增强 ─── */
.dp-table input.ed-alloc,
.dp-table input.ed-price {
  width: 90px; padding: 4px 8px; border: 1px solid var(--border);
  border-radius: var(--radius); font-size: 12px; text-align: right;
  font-variant-numeric: tabular-nums; background: var(--panel);
  transition: border-color var(--transition-fast), background var(--transition-fast);
}
.dp-table input.ed-alloc:hover,
.dp-table input.ed-price:hover { border-color: var(--text-placeholder); }
.dp-table input.ed-alloc:focus,
.dp-table input.ed-price:focus {
  border-color: var(--primary); outline: none;
  box-shadow: 0 0 0 2px rgba(30,172,166,0.15); background: #fff;
}
.dp-table input.ed-changed {
  background: #fef0e6 !important; border-color: var(--el-color-warning) !important;
}
.dp-table select.ed-zh-type {
  width: 62px; padding: 2px 4px; border: 1px solid var(--border);
  border-radius: 3px; font-size: 12px; background: var(--panel);
}
.dp-table input.ed-zh-amt {
  width: 72px; padding: 3px 6px; border: 1px solid var(--border);
  border-radius: 3px; font-size: 12px; text-align: right;
  font-variant-numeric: tabular-nums; background: var(--panel);
}
.dp-table select.ed-zh-type:focus, .dp-table input.ed-zh-amt:focus {
  border-color: var(--primary); outline: none;
  box-shadow: 0 0 0 2px rgba(30,172,166,0.15);
}
.dp-table select.ed-zh-type.ed-changed, .dp-table input.ed-zh-amt.ed-changed {
  background: #fef0e6 !important; border-color: var(--el-color-warning) !important;
}

.dp-hour-alloc { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.dp-hour-alloc input { width: 72px; padding: 3px 8px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 11px; }
.dp-hour-alloc input:focus { border-color: var(--primary); outline: none; }
.dp-hour-alloc button {
  padding: 3px 10px; font-size: 11px; border-radius: var(--radius);
  border: 1px solid var(--border); background: var(--panel); cursor: pointer;
  transition: all var(--transition-fast); color: var(--text-regular);
}
.dp-hour-alloc button:hover { border-color: var(--primary); color: var(--primary); background: var(--primary-light); }
.dp-hour-alloc .dp-hour-real-total { font-size: 12px; font-weight: 600; color: var(--el-color-success); }

.dp-price-mode { display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap; margin-bottom: 12px; }
.dp-price-mode .fg { display: flex; flex-direction: column; gap: 4px; }
.dp-price-mode .fg label { font-size: 12px; color: var(--text-secondary); font-weight: 500; }
.dp-price-mode .fg input,
.dp-price-mode .fg select {
  padding: 7px 12px; border: 1px solid var(--border); border-radius: var(--radius); font-size: 13px;
  transition: border-color var(--transition-fast);
}
.dp-price-mode .fg input:focus,
.dp-price-mode .fg select:focus { border-color: var(--primary); outline: none; }

.dp-hour-warn { font-size: 10px; color: var(--el-color-warning); margin-left: 4px; }

/* ═══ 统一日期组件 ═══ */
.date-presets { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 8px; }
.date-preset-btn {
  padding: 4px 14px; border: 1px solid var(--border); border-radius: 14px;
  font-size: 12px; cursor: pointer; background: var(--panel);
  color: var(--text-regular); transition: all var(--transition-fast); white-space: nowrap;
}
.date-preset-btn:hover { border-color: var(--primary); color: var(--primary); background: var(--brand-green-lighter); }
.date-preset-btn.active {
  background: var(--primary); border-color: var(--primary);
  color: #fff; font-weight: 600;
}

.date-range-row { display: flex; gap: 8px; align-items: center; margin-bottom: 6px; }
.date-range-sep { font-size: 12px; color: var(--text-secondary); flex-shrink: 0; }

.date-input {
  padding: 7px 10px; border: 1px solid var(--border); border-radius: var(--radius);
  font-size: 12px; background: var(--panel); color: var(--text-regular); min-width: 0;
  transition: border-color var(--transition-fast);
}
.date-input:hover { border-color: var(--text-placeholder); }
.date-input:focus { border-color: var(--primary); outline: none; box-shadow: 0 0 0 2px rgba(30,172,166,0.15); }

.date-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; min-height: 24px; }
.date-tag {
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px;
  background: var(--primary-light); border: 1px solid var(--primary-light-7);
  border-radius: 14px; font-size: 11px; color: var(--primary); cursor: pointer;
  transition: all var(--transition-fast);
}
.date-tag:hover { background: var(--primary-light-7); border-color: var(--primary-light-3); }

.date-error { font-size: 12px; color: var(--el-color-danger); margin-top: 4px; display: none; }
.date-error.show { display: block; }

.date-footer { display: flex; gap: 6px; align-items: center; margin-top: 6px; }
.date-footer .btn-clear { padding: 2px 8px; border: none; background: none; font-size: 11px; color: var(--text-secondary); cursor: pointer; text-decoration: underline; }
.date-footer .btn-clear:hover { color: var(--el-color-danger); }

/* 修复实时出清表格最小宽度，防止挤压 */
#clearTableWrap table {
  min-width: 520px;
}

/* ═══ Dashboard 首页 ═══ */
.dashboard-card {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  padding: 24px 16px; border-radius: var(--radius-lg); border: 1px solid var(--border);
  background: var(--panel); text-decoration: none; color: var(--text-regular);
  transition: all var(--transition-fast); text-align: center;
}
.dashboard-card:hover {
  border-color: var(--primary); box-shadow: var(--shadow);
  transform: translateY(-2px);
}
.dashboard-card .icon { font-size: 32px; }
.dashboard-card .title { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.dashboard-card:hover .title { color: var(--primary); }
.stat-badge {
  padding: 12px 20px; background: var(--panel); border: 1px solid var(--border);
  border-radius: var(--radius); font-size: 13px; text-align: center;
  box-shadow: var(--shadow-light);
}
.stat-badge .num { font-size: 20px; font-weight: 700; color: var(--primary); }
.stat-badge .label { font-size: 11px; color: var(--muted); margin-top: 2px; }

/* ═══ 多标签页 — 标签栏 + 标签容器 ═══ */
.tab-bar {
  display: flex; align-items: stretch; gap: 0;
  background: var(--panel); border-bottom: 2px solid var(--border);
  padding: 0 8px; min-height: 36px; overflow-x: auto; flex-shrink: 0;
}
.tab-bar::-webkit-scrollbar { height: 3px; }
.tab-button {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 16px; font-size: 13px; cursor: pointer;
  border: none; background: none; color: var(--text-secondary);
  border-bottom: 2px solid transparent; margin-bottom: -2px;
  white-space: nowrap; transition: all var(--transition-fast);
  position: relative; user-select: none;
}
.tab-button:hover { color: var(--primary); background: var(--brand-green-lighter); }
.tab-button.active {
  color: var(--primary); font-weight: 600;
  border-bottom-color: var(--primary);
}
.tab-button .tab-icon { font-size: 14px; }
.tab-button .tab-close {
  margin-left: 6px; font-size: 12px; line-height: 1; cursor: pointer;
  padding: 2px 5px; border-radius: 3px; color: var(--text-placeholder);
  transition: all var(--transition-fast);
}
.tab-button .tab-close:hover { color: var(--el-color-danger); background: #fef0f0; }

.tab-host {
  flex: 1; position: relative; overflow: hidden; min-height: 0;
}
.tab-container {
  position: absolute; inset: 0; display: none;
  flex-direction: column; overflow: hidden;
}
.tab-container.active { display: flex; }

/* ═══ 账号管理 ═══ */
.accounts-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; }
.accounts-header h2 { font-size:18px; color:var(--text-primary); margin:0; }
.account-table { width:100%; border-collapse:collapse; background:var(--panel); border-radius:var(--radius); overflow:hidden; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.account-table th { background:var(--bg); padding:10px 14px; text-align:left; font-size:13px; color:var(--text-secondary); font-weight:500; border-bottom:1px solid var(--border); }
.account-table td { padding:10px 14px; border-bottom:1px solid var(--border-lighter); font-size:13px; color:var(--text-regular); }
.account-table tr:last-child td { border-bottom:none; }
.status-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; }
.status-dot.online { background:var(--el-color-success); }
.status-dot.offline { background:var(--el-color-info); }
.btn-group { display:flex; gap:6px; flex-wrap:wrap; }
.btn-xs { padding:4px 10px; font-size:12px; border-radius:var(--radius); border:1px solid var(--border); background:var(--panel); color:var(--text-regular); cursor:pointer; transition:all .15s; white-space:nowrap; }
.btn-xs:hover { border-color:var(--primary); color:var(--primary); }
.btn-xs.primary { background:var(--primary); color:#fff; border-color:var(--primary); }
.btn-xs.primary:hover { background:var(--primary-hover); }
.btn-xs.danger { color:var(--error); border-color:var(--error); }
.btn-xs.danger:hover { background:var(--error); color:#fff; }
.token-preview { font-family:monospace; font-size:11px; color:var(--muted); max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:inline-block; }
.time-ago { font-size:11px; color:var(--muted); }
.toast { position:fixed; top:20px; right:20px; padding:10px 18px; border-radius:var(--radius); font-size:13px; z-index:2000; animation:fadeInOut 2.5s; color:#fff; }
.toast.success { background:var(--el-color-success); }
.toast.error { background:var(--el-color-danger); }
@keyframes fadeInOut { 0%{opacity:0;transform:translateY(-10px)} 10%{opacity:1;transform:translateY(0)} 80%{opacity:1} 100%{opacity:0} }
/* 账号弹窗 */
.modal-mask { position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,.35); z-index:1000; display:none; align-items:center; justify-content:center; }
.modal-mask.show { display:flex; }
.modal-mask .modal-box { background:var(--panel); border-radius:8px; padding:24px; width:400px; max-width:90vw; box-shadow:0 4px 20px rgba(0,0,0,.15); border-top:none; }
.modal-mask .modal-box h3 { margin:0 0 16px; font-size:16px; color:var(--text-primary); }
.form-row { margin-bottom:14px; }
.form-row label { display:block; font-size:12px; color:var(--text-secondary); margin-bottom:4px; }
.form-row input { width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:var(--radius); font-size:13px; box-sizing:border-box; }
.form-row input:focus { outline:none; border-color:var(--primary); }
.form-row input:disabled { background:var(--bg); color:var(--text-secondary); cursor:not-allowed; }

/* 代码块 — Token/Cookie 展示 */
.code-block {
  background: #1A1E2B; color: #a3b1cc;
  font-family: 'Cascadia Code', 'Consolas', 'Menlo', monospace;
  font-size: 11px; line-height: 1.5;
  padding: 10px 14px; border-radius: var(--radius);
  max-height: 80px; overflow-y: auto; overflow-x: auto;
  white-space: pre; word-break: break-all;
  margin: 0; border: 1px solid #2d3340;
}

/* ═══ 全局滚动条 — imptc.com 绿色风格 ═══ */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #bce9e7; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #5ec4bf; }

/* ═══ 企业数据统计 ═══ */
.stats-container {
  padding: 24px;
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.stats-header {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.stats-header h2 {
  font-size: 18px;
  color: var(--primary);
  margin: 0;
  display: flex;
  align-items: center;
  gap: 8px;
}
.stats-header select {
  padding: 7px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font-size: 13px;
  background: var(--panel);
  color: var(--text-regular);
  min-width: 100px;
}
.stats-table-wrap {
  flex: 1;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--panel);
  box-shadow: var(--shadow-light);
}
.stats-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  min-width: 1400px;
}
.stats-table thead {
  position: sticky;
  top: 0;
  z-index: 2;
}
.stats-table th {
  background: linear-gradient(180deg, #e8f6f5 0%, #d4f1ef 100%);
  padding: 10px 10px;
  text-align: center;
  font-size: 12px;
  color: #0c6b66;
  border-bottom: 2px solid var(--primary);
  font-weight: 600;
  white-space: nowrap;
}
.stats-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--border-lighter);
  color: var(--text-regular);
  text-align: center;
  white-space: nowrap;
}
.stats-table tbody tr:hover td {
  background: #F5F7FA;
}
.stats-table .name-link {
  color: var(--primary);
  cursor: pointer;
  font-weight: 600;
  text-decoration: none;
}
.stats-table .name-link:hover {
  text-decoration: underline;
}
.stats-table .num {
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.stats-table .day-row {
  cursor: pointer;
}
.stats-table .day-row.expanded td {
  background: var(--brand-green-lighter);
  font-weight: 600;
}
.stats-hourly-row td {
  padding: 0;
}
.stats-hourly-inner {
  padding: 12px 16px;
  background: #f8fdfc;
  border-top: 1px dashed var(--border-lighter);
}
.stats-hourly-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
}
.stats-hourly-table th {
  background: #e8f6f5;
  padding: 5px 6px;
  font-size: 10px;
  border-bottom: 1px solid var(--border-lighter);
  position: static;
}
.stats-hourly-table td {
  padding: 4px 6px;
  font-size: 11px;
  border-bottom: 1px solid var(--border-extra-light);
}
.stats-back-btn {
  padding: 6px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--panel);
  color: var(--text-regular);
  cursor: pointer;
  font-size: 12px;
  transition: all var(--transition-fast);
}
.stats-back-btn:hover {
  border-color: var(--primary);
  color: var(--primary);
}
.stats-import-btn {
  padding: 7px 16px;
  border: 1px solid var(--primary);
  border-radius: var(--radius);
  background: var(--primary);
  color: #fff;
  cursor: pointer;
  font-size: 12px;
  font-weight: 500;
  transition: all var(--transition-fast);
}
.stats-import-btn:hover {
  background: var(--primary-hover);
}

/* ═══ 企业卡片布局 ═══ */
.stats-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  margin-bottom: 20px;
  box-shadow: var(--shadow-light);
  overflow: hidden;
  transition: box-shadow var(--transition-fast);
}
.stats-card:hover {
  box-shadow: var(--shadow);
}
.stats-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border-lighter);
  background: var(--brand-green-lighter);
}
.stats-card-title {
  display: flex;
  align-items: center;
  gap: 12px;
}
.stats-card-title .name-link {
  font-size: 16px;
  font-weight: 700;
}
.stats-keepalive-badge {
  font-size: 11px;
  color: var(--el-color-success);
  background: #e6f9e6;
  padding: 2px 8px;
  border-radius: 10px;
}
.stats-card-actions {
  display: flex;
  gap: 8px;
}
.stats-sync-btn {
  padding: 6px 14px;
  border: 1px solid var(--primary);
  border-radius: var(--radius);
  background: var(--primary);
  color: #fff;
  cursor: pointer;
  font-size: 12px;
  font-weight: 500;
  transition: all var(--transition-fast);
}
.stats-sync-btn:hover {
  background: var(--primary-hover);
}
.stats-card-body {
  padding: 0;
  overflow-x: auto;
}
.stats-card-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  min-width: 1200px;
}
.stats-card-table th {
  background: #f0f7f6;
  padding: 6px 8px;
  font-size: 11px;
  color: var(--text-secondary);
  border-bottom: 1px solid var(--border-lighter);
  white-space: nowrap;
  text-align: center;
}
.stats-card-table td {
  padding: 6px 8px;
  text-align: center;
  border-bottom: 1px solid var(--border-extra-light);
  white-space: nowrap;
}
.stats-card-empty {
  padding: 24px;
  text-align: center;
  color: var(--muted);
  font-size: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.stats-card-footer {
  display: flex;
  gap: 16px;
  padding: 8px 20px;
  border-top: 1px solid var(--border-lighter);
  font-size: 11px;
  color: var(--text-secondary);
  background: #fafbfc;
}
.stats-status {
  font-size: 12px;
  color: var(--text-secondary);
}

/* ═══ 月份切换器 ═══ */
.stats-month-switcher {
  display: flex;
  align-items: center;
  gap: 8px;
}
.stats-month-btn {
  width: 28px;
  height: 28px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--panel);
  color: var(--text-regular);
  cursor: pointer;
  font-size: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all var(--transition-fast);
}
.stats-month-btn:hover {
  border-color: var(--primary);
  color: var(--primary);
}

/* ═══ 节点选择 ═══ */
.node-option {
  transition: all var(--transition-fast);
}
.node-option:hover {
  background: var(--brand-green-lighter) !important;
}

/* ═══════════════════════════════════════════
   文件共享模块
   ═══════════════════════════════════════════ */
.fileshare-wrap {
  padding: 24px 28px;
  height: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.fileshare-header h2 {
  font-size: 18px;
  font-weight: 600;
  color: var(--text-primary);
  margin-bottom: 4px;
}
.fileshare-hint {
  font-size: 12px;
  color: var(--text-secondary);
}

/* 上传拖拽区 */
.fileshare-dropzone {
  border: 2px dashed var(--border);
  border-radius: var(--radius-lg);
  padding: 40px 20px;
  text-align: center;
  background: var(--panel);
  cursor: pointer;
  transition: all var(--transition-fast);
}
.fileshare-dropzone:hover {
  border-color: var(--primary);
  background: var(--brand-green-lighter);
}
.fileshare-dropzone.drag-over {
  border-color: var(--primary);
  background: var(--brand-green-light);
  box-shadow: 0 0 0 4px rgba(30,172,166,0.12);
}
.fs-dz-icon { font-size: 2.4rem; margin-bottom: 8px; }
.fs-dz-text { font-size: 14px; color: var(--text-regular); margin-bottom: 4px; }
.fs-dz-hint  { font-size: 12px; color: var(--text-secondary); }

/* 进度条 */
.fileshare-progress {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 12px 18px;
}
.fileshare-progress span {
  display: block;
  font-size: 12px;
  color: var(--text-secondary);
  margin-bottom: 6px;
}
.fs-progress-bar {
  height: 6px;
  background: var(--border-extra-light);
  border-radius: 3px;
  overflow: hidden;
}
.fs-progress-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, var(--primary), #38bdf8);
  border-radius: 3px;
  transition: width 0.3s;
}

/* 文件列表标题 */
.fileshare-section-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text-primary);
}

/* 文件表格 */
.fileshare-table-wrap {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow-y: auto;
  flex: 1;
  min-height: 0;
}
.fileshare-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.fileshare-table thead {
  background: var(--border-extra-light);
}
.fileshare-table th {
  padding: 10px 16px;
  text-align: left;
  font-weight: 600;
  color: var(--text-secondary);
  font-size: 12px;
  border-bottom: 1px solid var(--border);
}
.fileshare-table td {
  padding: 10px 16px;
  border-bottom: 1px solid var(--border-lighter);
  color: var(--text-regular);
}
.fileshare-table tbody tr:last-child td {
  border-bottom: none;
}
.fileshare-table tbody tr:hover {
  background: var(--brand-green-lighter);
}
.fs-name {
  max-width: 280px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-weight: 500;
  color: var(--text-primary);
}
.fs-time {
  color: var(--text-secondary);
  font-size: 12px;
}
.fs-empty {
  text-align: center;
  padding: 40px 16px !important;
  color: var(--text-placeholder);
  font-size: 13px;
}
.fs-btn-dl, .fs-btn-del {
  margin-right: 6px;
}


/* ═══ 企业统计重构：日/月模板、三状态、图表与考核 ═══ */

/* 状态点与徽标：1结算(绿) 2预测(橙) 3仅合约(灰) 0无数据 */
.state-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.dot-state-1 { background:#67c23a; }
.dot-state-2 { background:#e6a23c; }
.dot-state-3 { background:#909399; }
.dot-state-0 { background:#4a4f5a; }
.state-badge { padding:2px 10px; border-radius:10px; font-size:12px; font-weight:600; }
.state-badge-1 { background:rgba(103,194,58,0.15); color:#67c23a; border:1px solid rgba(103,194,58,0.4); }
.state-badge-2 { background:rgba(230,162,60,0.15); color:#e6a23c; border:1px solid rgba(230,162,60,0.4); }
.state-badge-3 { background:rgba(144,147,153,0.15); color:#909399; border:1px solid rgba(144,147,153,0.4); }
.state-badge-0 { background:rgba(74,79,90,0.2); color:var(--muted,#888); border:1px solid rgba(74,79,90,0.5); }

/* 数据来源着色：预测价琥珀斜体、默认曲线电量蓝灰斜体 */
.price-forecast { color:#e6a23c !important; font-style:italic; }
.vol-default { color:#7d8db3 !important; font-style:italic; }

/* 图例条 */
.stats-legend { display:flex; flex-wrap:wrap; gap:14px; align-items:center; padding:6px 4px 10px; font-size:12px; color:var(--text-secondary,#aaa); }
.legend-item { display:inline-flex; align-items:center; gap:4px; }
.legend-swatch { padding:0 4px; border-radius:3px; background:rgba(128,140,160,0.12); font-size:11px; }

/* 头部控件 */
.stats-inline-label { font-size:12px; color:var(--text-secondary,#aaa); display:inline-flex; align-items:center; gap:6px; }
.stats-select { background:var(--panel,#1c2230); color:inherit; border:1px solid var(--border,#333); border-radius:4px; padding:3px 6px; font-size:12px; }
.stats-hint { padding:8px 12px; margin-bottom:10px; border:1px dashed rgba(230,162,60,0.5); border-radius:6px; font-size:12px; color:#e6a23c; }
.stats-hint a { color:#e6a23c; text-decoration:underline; }

/* 日汇总条 */
.day-summary-bar { display:flex; flex-wrap:wrap; gap:16px; padding:12px 16px; margin-bottom:12px; background:var(--panel,#1c2230); border-radius:8px; font-size:13px; }

/* 日表：中午时段行淡高亮、汇总行、负值 */
.noon-row td { background:rgba(84,112,198,0.06); }
.stats-total-row td { background:rgba(103,194,58,0.08); border-top:2px solid rgba(103,194,58,0.35); }
.stats-day-table td.neg, .num.neg { color:#f56c6c; }

/* 月页图表区 */
.month-charts-row { display:grid; grid-template-columns: minmax(260px,1fr) minmax(320px,1.4fr) minmax(320px,1.4fr); gap:12px; margin-bottom:14px; }
.month-chart { height:220px; background:var(--panel,#1c2230); border:1px solid var(--border,#2a3040); border-radius:8px; }
@media (max-width: 1200px) { .month-charts-row { grid-template-columns:1fr; } .month-chart { height:240px; } }

/* 考核卡片区 */
.assess-title { margin:18px 0 10px; font-size:15px; }
.assess-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:12px; padding-bottom:24px; }
.assess-card { background:var(--panel,#1c2230); border:1px solid var(--border,#2a3040); border-radius:8px; padding:12px 14px; }
.assess-card-title { font-size:13px; font-weight:600; margin-bottom:8px; }
.assess-row { display:flex; justify-content:space-between; gap:8px; font-size:12px; padding:3px 0; color:var(--text-secondary,#aaa); }
.assess-row b { color:inherit; font-variant-numeric:tabular-nums; }
.assess-warn { border-color:rgba(230,162,60,0.55); }
.assess-warn .assess-card-title { color:#e6a23c; }
.assess-final { border-color:rgba(103,194,58,0.55); }
.assess-final-num { font-size:26px; font-weight:700; color:#67c23a; margin:6px 0 10px; font-variant-numeric:tabular-nums; }
.assess-final-num span { font-size:12px; font-weight:400; color:var(--muted,#888); }
.assess-unset { border-style:dashed; }
.assess-cfg-btn { margin-top:4px; }

/* 默认曲线编辑器 */
.curve-grid { display:grid; grid-template-columns:repeat(6, 1fr); gap:8px; margin-top:10px; }
.curve-cell { display:flex; flex-direction:column; gap:3px; font-size:11px; color:var(--muted,#888); }
.curve-input { background:var(--panel,#1c2230); color:inherit; border:1px solid var(--border,#333); border-radius:4px; padding:4px 6px; font-size:12px; width:100%; box-sizing:border-box; }
@media (max-width: 700px) { .curve-grid { grid-template-columns:repeat(4, 1fr); } }

/* 月度参数弹窗 */
.param-group { margin-top:12px; }
.param-group-title { font-size:12px; font-weight:600; color:var(--text-secondary,#aaa); border-bottom:1px solid var(--border,#2a3040); padding-bottom:4px; margin-bottom:6px; }
.param-row { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:4px 0; font-size:12px; }
.param-row span { color:var(--text-secondary,#aaa); }
.param-input { width:130px; background:var(--panel,#1c2230); color:inherit; border:1px solid var(--border,#333); border-radius:4px; padding:4px 6px; font-size:12px; }
.param-src { font-style:normal; font-size:10px; padding:1px 5px; border-radius:3px; background:rgba(128,140,160,0.15); color:var(--muted,#888); margin-left:4px; }
.param-src.saved { background:rgba(103,194,58,0.15); color:#67c23a; }
.param-src.preset { background:rgba(84,112,198,0.18); color:#7d8db3; }

.month-days-scroll { overflow-y:auto; max-height:420px; }
