/* ============================================================
   协会服务系统 · 管理后台视觉刷新层 (admin-refresh)
   加载顺序：style.css 之后。本文件只覆盖设计令牌 + 叠加密集排版样式，
   不改任何业务/模块逻辑（assets/js/modules/*.js 零触碰）。
   基调：天空蓝纯色（#2f80d8），靠留白、层级、一致性格提气。
   约束：禁用 emoji 图标（已由 index.html 内联 SVG 替代）、禁用紫粉渐变、禁用空洞文案。
   ============================================================ */

/* ---------- 1. 设计令牌覆盖（浅色 / 默认） ---------- */
:root {
  /* 更通透的底色与更冷的中性边色 -> 留白提气 */
  --bg: #f4f8fd;
  --bg-grad: none;
  --surface: #ffffff;
  --surface-solid: #ffffff;
  --surface-2: #f4f8fc;
  --border: #dce8f5;
  --border-strong: #c7d9eb;
  --text: #163a63;
  --text-2: #526a84;
  --text-3: #6e88a4;
  --heading-color: #163a63;
  --body-color: #526a84;
  --helper-color: #6e88a4;

  /* 更柔和、更有层次的阴影 */
  --shadow: 0 2px 10px rgba(31, 91, 145, .07);
  --shadow-lg: 0 14px 34px -18px rgba(31, 91, 145, .18);
  --glass-blur: 0px;

  /* 深蓝品牌色：保留皇家蓝调，略加深以显稳重 */
  --accent: #2f80d8;
  --accent-2: #216cc0;
  --accent-3: #5b9be0;
  --primary: var(--accent);
  --primary-soft: rgba(47, 128, 216, .10);
  --hover: rgba(47, 128, 216, .06);
  --icon-color: #5d7ea6;
  --icon-active-color: #2f80d8;
  --icon-disabled-color: #b7c8da;
  --icon-stroke: 1.25;
  --icon-stroke-lg: 1.5;

  /* 更现代的圆角 */
  --radius-sm: 8px;
  --radius: 10px;
  --radius-lg: 12px;
  --radius-xl: 16px;

  /* 字号阶梯微调：标题更醒目 */
  --type-page-title: 21px;
  --type-card-title: 15.5px;

  /* 内容区略放宽，整体更透气 */
  --page-width: 1240px;
  --page-width-wide: 1480px;
}

/* ---------- 2. 设计令牌覆盖（深色） ---------- */
[data-theme="dark"] {
  --bg: #0a1a2e;
  --bg-grad: none;
  --surface: #0f2742;
  --surface-solid: #0f2742;
  --surface-2: #14304f;
  --border: rgba(150, 180, 210, .16);
  --border-strong: rgba(150, 180, 210, .30);
  --text: #eaf1f8;
  --text-2: #c2d3e3;
  --text-3: #93aac0;
  --heading-color: #6ea8e6;
  --body-color: #d4e1ee;
  --helper-color: #93aac0;
  --shadow: 0 12px 32px -14px rgba(0, 0, 0, .6);
  --shadow-lg: 0 26px 64px -20px rgba(0, 0, 0, .7);
  --sidebar-bg: #0a2240;
  --hover: rgba(255, 255, 255, .07);
  --accent: #5b9be0;
  --accent-2: #2f80d8;
  --accent-3: #75b2f0;
  --primary-soft: rgba(91, 155, 224, .18);
}

/* ---------- 3. 排版结构优化（侧边栏 / 顶栏 / 内容区） ---------- */
.app { grid-template-columns: 248px 1fr; }   /* 侧栏略收窄，内容更舒展 */

.sidebar {
  padding: 22px 14px;
  gap: 4px;
  box-shadow: 1px 0 0 var(--border);
}
.brand { padding: 6px 10px 20px; gap: 12px; }
.brand-logo {
  width: 42px; height: 42px; border-radius: 12px;
  background: var(--accent);
  box-shadow: none;
  font-size: 19px;
}
.brand-name { font-size: 15.5px; letter-spacing: .3px; color: var(--heading-color); }
.brand-sub { font-size: 11px; color: var(--text-3); letter-spacing: .04em; }

.nav { gap: 4px; margin-top: 10px; }
.nav-group { padding: 16px 14px 7px; font-size: 10.5px; letter-spacing: .14em; color: var(--text-3); }
.nav-item {
  padding: 11px 13px; border-radius: 10px; gap: 11px; font-size: 13.5px;
  transition: background-color .22s var(--ease), color .22s var(--ease), box-shadow .22s var(--ease);
}
.nav-item:hover { background: var(--hover); color: var(--text); transform: none; }
.nav-item.active {
  background: var(--primary-soft); color: var(--accent); font-weight: 700;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent);
}
.nav-item.active::before {
  width: 4px; height: 22px; border-radius: 4px; background: var(--accent);
  box-shadow: none;
}
.nav-ico, .nav-svg { width: 19px; height: 19px; }
.nav-svg {
  color: var(--icon-color);
  stroke-width: var(--icon-stroke);
}
.nav-item.active .nav-svg { color: var(--icon-active-color); }
.nav-item:disabled .nav-svg, .nav-item[aria-disabled="true"] .nav-svg { color: var(--icon-disabled-color); }
.sidebar-foot { padding: 14px 12px 4px; margin-top: 16px; }

.topbar {
  padding: 16px 36px; gap: 14px;
  background: var(--surface);
}
.topbar h1 { font-size: 21px; letter-spacing: .2px; }
.topbar .crumb { font-size: 12.5px; color: var(--text-3); }

.content { padding: 36px 40px; }

/* ---------- 3b. 业务页共同收口：旧模块也必须使用同一套控件 ---------- */
.content .toolbar {
  gap: 10px;
  padding: 12px;
  margin-bottom: 16px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--shadow);
}
.content .toolbar .search { min-width: 240px; }
.content .toolbar .search .si { color: var(--icon-color); font-size: 15px; }
.content .toolbar .input,
.content .toolbar .select,
.content .toolbar select,
.content .toolbar input {
  min-height: 40px;
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
}
.content .toolbar .btn-primary,
.content .card .btn-primary,
.content .table-wrap .btn-primary {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  box-shadow: var(--shadow);
}
.content .toolbar .btn-primary:hover,
.content .card .btn-primary:hover,
.content .table-wrap .btn-primary:hover {
  background: var(--accent-2);
  border-color: var(--accent-2);
}
.content .btn-ghost {
  background: var(--surface);
  border-color: var(--border-strong);
  color: var(--text-2);
}
.content .btn-ghost:hover { background: var(--primary-soft); border-color: var(--accent); color: var(--accent); }
.content .card-title { color: var(--heading-color); }
.content .card-sub, .content .cell-sub { color: var(--helper-color); }

/* 大赛列表：将旧的密集表格改为可扫读的企业后台行，不改业务字段和操作。 */
.content .comp-list,
.content .competition-list { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.content .comp-list th,
.content .competition-list th { background: var(--surface-2); color: var(--text-2); font-weight: 700; }
.content .comp-list td,
.content .competition-list td { border-color: var(--border); vertical-align: middle; }
.content .table-wrap { border: 1px solid var(--border); box-shadow: var(--shadow); }
.content .tbl th { background: var(--surface-2); color: var(--text-2); border-bottom-color: var(--border); }
.content .tbl td { border-bottom-color: var(--border); }
.content .tbl tbody tr:hover { background: var(--hover); }
.content .stage-pills .sp { background: var(--surface-2); border-color: var(--border); color: var(--text-3); }
.content .stage-pills .sp.cur { background: var(--primary-soft); border-color: color-mix(in srgb, var(--accent) 38%, var(--border)); color: var(--accent); box-shadow: none; }
.content .card[style*="linear-gradient"] { background: var(--surface) !important; border: 1px solid var(--border) !important; }

/* 内容型表单和列表统一间距，避免旧页面出现控件贴边、字号跳变。 */
.content .field label { color: var(--text-2); }
.content .field input, .content .field select, .content .field textarea,
.content .form-control, .content .input, .content .select, .content .textarea {
  border-color: var(--border-strong);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
}
.content .field input:focus, .content .field select:focus, .content .field textarea:focus,
.content .form-control:focus, .content .input:focus, .content .select:focus, .content .textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--primary-soft);
  outline: none;
}

/* ---------- 4. 卡片 / 按钮 / 表单 / 表格 质感统一 ---------- */
.card {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  border-color: var(--border);
}
.card-head { margin-bottom: 18px; gap: 14px; }
.card-title { font-size: 16px; }

.btn { border-radius: 8px; font-weight: 600; }
.btn:hover { transform: none; }
.btn-primary {
  background: var(--accent);
  box-shadow: var(--shadow);
  border: none;
}

.table-wrap { border-radius: var(--radius-lg); overflow: hidden; }
.table-wrap table th {
  background: var(--surface-2);
  font-weight: 700; color: var(--text-2);
  letter-spacing: .02em;
}

.input, .select, .textarea {
  border-radius: 8px; border-color: var(--border-strong);
}
.input:focus, .select:focus, .textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--primary-soft);
}

/* 会务 AI 助理：控制项必须在内容区内换行，避免场景开关被挤到屏幕外。 */
.ewb-ai-controls {
  flex-wrap: wrap;
  align-items: flex-start;
  min-width: 0;
}
.ewb-ai-controls > .ewb-helper {
  flex: 0 0 auto;
}
.ewb-ai-controls #ewbAiInput,
.ewb-ai-controls #ewbAiBudget {
  flex: 1 1 220px;
  min-width: 180px;
  box-sizing: border-box;
}
.ewb-ai-controls #ewbAiPoints {
  flex: 1 1 100%;
  min-width: 0;
  line-height: 1.5;
  white-space: normal;
}
.ewb-ai-preflight {
  flex: 1 1 100%;
  min-width: 0;
  padding: 8px 10px;
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  background: var(--primary-soft);
  color: var(--accent-2);
  font-size: 12px;
  line-height: 1.6;
}
.ewb-ai-scene-config {
  flex: 1 1 100%;
  width: 100%;
  min-width: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  box-sizing: border-box;
}
.ewb-ai-scene-config > .ewb-helper {
  grid-column: 1 / -1;
}
.ewb-ai-scene-config > label {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  white-space: nowrap;
}

/* ---------- 5. 登录页提气（深蓝品牌背景，无紫粉） ---------- */
.login-bg {
  position: absolute; inset: 0;
  background: var(--primary-soft);
}
.login-bg::before, .login-bg::after { display: none; }
.login-card {
  border-radius: 16px;
  box-shadow: var(--shadow-lg);
  padding: 42px 38px 34px;
}
.login-brand .brand-logo {
  background: var(--accent);
  box-shadow: none;
}

/* ---------- 6. 细节：滚动条 / 聚焦环 / 选中 ---------- */
html { scrollbar-color: var(--border-strong) var(--surface-2); scrollbar-width: thin; }
::-webkit-scrollbar-thumb { border-radius: 10px; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
::selection { background: var(--primary-soft); color: var(--text); }

/* 顶栏品牌图标与文字按钮里的 SVG 对齐 */
.topbar .btn svg { vertical-align: -3px; margin-right: 6px; }
.topbar svg,
.btn svg,
.table-wrap svg,
.toolbar svg {
  color: var(--icon-color);
  stroke-width: var(--icon-stroke) !important;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.btn-primary svg, .nav-item.active svg { color: currentColor; }

/* ---------- 7. Enterprise Pro 共享扩展：会务、培训、写作与流水线 ---------- */
.ecc-people-box, .ecc-speech-form, .ecc-inline-form input, .ecc-inline-form select,
.ecc-point-row img, .ecc-table-row, .ecc-role-list span {
  border-color: var(--border);
  background: var(--surface);
  color: var(--body-color);
}
.ecc-people-head, .ecc-speech-title, .ecc-link, .ecc-message { color: var(--accent); }
.ecc-person-row, .ecc-table-row { border-color: var(--border); color: var(--body-color); }
.ecc-person-row small, .ecc-table-row small, .ecc-table-head, .ecc-muted, .ecc-list li span,
.ecc-role-list span, .ecc-hint { color: var(--helper-color); }
.ecc-person-row select, .ecc-speech-form input, .ecc-speech-form textarea {
  border-color: var(--border-strong); background: var(--surface); color: var(--text);
}
.ecc-kpi-inline b { color: var(--accent); }
.ecc-link.danger { color: var(--text-2); }
.ecc-speech-actions { border-color: var(--border); }
.ecc-role-list span { border-radius: 8px; }

/* 内联 SVG 统一为细线同色系；emoji 仅保留在投票监票大屏代码路径。 */
.content svg:not(.xj-trend):not(.xj-chart):not(.vb-card-cover-ico),
.content .toolbar svg, .content .card-head svg {
  stroke-width: var(--icon-stroke) !important;
  stroke-linecap: round;
  stroke-linejoin: round;
}

@media (max-width: 700px) {
  .ewb-ai-scene-config { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ewb-ai-controls #ewbAiInput,
  .ewb-ai-controls #ewbAiBudget { min-width: 0; width: 100%; }
}

