/* ============================================================
   智能会议中心会议助手 — UI 主题 v3（Anthropic 风格暖调设计系统）
   纯样式层重写：不改 DOM 结构 / 不改 JS / 不引外部资源
   设计语言：奶白暖调纸感底色 + 墨色文字 + 赤陶色强调
             衬线标题 + 细边框卡片 + 轻阴影 + 克制微动效
   ============================================================ */

:root {
  /* 主色：赤陶暖橙（Anthropic book cloth） */
  --color-primary: #d97757;
  --color-primary-hover: #c56545;
  --color-primary-light: #ecb5a2;
  --color-primary-bg: #f9ede7;
  --color-primary-gradient: linear-gradient(135deg, #d97757 0%, #c56545 100%);

  --color-success: #788c5d;
  --color-success-bg: #eef2e4;
  --color-warning: #c98f3d;
  --color-warning-bg: #f8eed7;
  --color-error: #c44e4e;
  --color-error-bg: #f7e3e0;
  --color-info: #6a9bcc;
  --color-info-bg: #e9f0f7;
  --color-staff-bg: #f8eed7;

  /* 中性色：暖调纸感层次 */
  --color-text-primary: #141413;
  --color-text-secondary: #6b6962;
  --color-text-tertiary: #9d9b93;
  --color-border: #d8d6ce;
  --color-border-light: #e8e6dc;
  --color-background: #f3f1eb;
  --color-surface: #faf9f5;
  --color-white: #faf9f5;

  /* 页面底色：奶白纸感 + 极淡的赤陶/雾蓝晕染 */
  --bg-app: radial-gradient(1100px 520px at 82% -12%, rgba(217, 119, 87, 0.05) 0%, rgba(217, 119, 87, 0) 55%),
            radial-gradient(880px 480px at -8% 112%, rgba(106, 155, 204, 0.05) 0%, rgba(106, 155, 204, 0) 50%),
            #f3f1eb;

  /* 字体：正文无衬线保证小字号可读性；标题用衬线传达纸质文档气质 */
  --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
    'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-display: Georgia, 'Times New Roman', 'Songti SC', 'STZhongsong', 'SimSun', serif;

  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-base: 12px;
  --spacing-md: 16px;
  --spacing-lg: 20px;
  --spacing-xl: 24px;

  --border-radius-sm: 6px;
  --border-radius-base: 8px;
  --border-radius-lg: 12px;
  --border-radius-xl: 14px;
  --border-radius-round: 999px;

  --shadow-sm: 0 1px 2px rgba(20, 20, 19, 0.04);
  --shadow-base: 0 2px 8px rgba(20, 20, 19, 0.06);
  --shadow-md: 0 4px 16px rgba(20, 20, 19, 0.08);
  --shadow-lg: 0 12px 32px rgba(20, 20, 19, 0.12);

  /* ===== Element Plus 主题变量深度覆盖 ===== */
  --el-color-primary: #d97757;
  --el-color-primary-light-3: #e29377;
  --el-color-primary-light-5: #ecb5a2;
  --el-color-primary-light-7: #f4d4c8;
  --el-color-primary-light-8: #f7e2d9;
  --el-color-primary-light-9: #faf0ea;
  --el-color-primary-dark-2: #c56545;

  --el-color-success: #788c5d;
  --el-color-success-light-3: #96a67f;
  --el-color-success-light-5: #b5c1a4;
  --el-color-success-light-7: #d4dbc9;
  --el-color-success-light-8: #e3e8db;
  --el-color-success-light-9: #f1f4ec;
  --el-color-success-dark-2: #60704a;

  --el-color-warning: #c98f3d;
  --el-color-warning-light-3: #d6a967;
  --el-color-warning-light-5: #e3c391;
  --el-color-warning-light-7: #f0ddbc;
  --el-color-warning-light-8: #f6ead1;
  --el-color-warning-light-9: #fbf6e7;
  --el-color-warning-dark-2: #a17231;

  --el-color-danger: #c44e4e;
  --el-color-danger-light-3: #d37373;
  --el-color-danger-light-5: #e1a0a0;
  --el-color-danger-light-7: #f0cccc;
  --el-color-danger-light-8: #f5dcdc;
  --el-color-danger-light-9: #faeded;
  --el-color-danger-dark-2: #9d3e3e;
  --el-color-error: #c44e4e;
  --el-color-error-light-3: #d37373;
  --el-color-error-light-5: #e1a0a0;
  --el-color-error-light-7: #f0cccc;
  --el-color-error-light-8: #f5dcdc;
  --el-color-error-light-9: #faeded;
  --el-color-error-dark-2: #9d3e3e;

  --el-color-info: #8d8b83;
  --el-color-info-light-3: #a8a69e;
  --el-color-info-light-5: #c1bfb7;
  --el-color-info-light-7: #dbd9d1;
  --el-color-info-light-8: #e6e4dc;
  --el-color-info-light-9: #f1efe8;
  --el-color-info-dark-2: #716f68;

  --el-bg-color: #faf9f5;
  --el-bg-color-overlay: #faf9f5;
  --el-bg-color-page: #f3f1eb;

  --el-text-color-primary: #141413;
  --el-text-color-regular: #3d3c38;
  --el-text-color-secondary: #6b6962;
  --el-text-color-placeholder: #9d9b93;
  --el-text-color-disabled: #b8b6ae;

  --el-border-color: #d8d6ce;
  --el-border-color-light: #e2e0d6;
  --el-border-color-lighter: #e8e6dc;
  --el-border-color-extra-light: #efede4;
  --el-border-color-dark: #c9c7bd;
  --el-border-color-darker: #b8b6ae;

  --el-fill-color: #efede4;
  --el-fill-color-light: #f3f1eb;
  --el-fill-color-lighter: #f6f5ef;
  --el-fill-color-extra-light: #faf9f5;
  --el-fill-color-dark: #e8e6dc;
  --el-fill-color-darker: #e0ddd2;
  --el-fill-color-blank: #faf9f5;

  --el-border-radius-base: 8px;
  --el-border-radius-small: 6px;
  --el-font-size-base: 14px;
  --el-font-family: var(--font-sans);

  --el-box-shadow: 0 12px 32px rgba(20, 20, 19, 0.12);
  --el-box-shadow-light: 0 4px 16px rgba(20, 20, 19, 0.08);
  --el-box-shadow-lighter: 0 2px 8px rgba(20, 20, 19, 0.06);

  --el-table-border-color: #e8e6dc;
  --el-table-header-bg-color: #f3f1eb;
  --el-table-header-text-color: #6b6962;
  --el-table-row-hover-bg-color: #f4ede5;
  --el-table-tr-bg-color: #faf9f5;

  --el-mask-color: rgba(20, 20, 19, 0.4);
  --el-disabled-bg-color: #f3f1eb;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: var(--font-sans);
  background: var(--bg-app);
  color: var(--color-text-primary);
  height: 100vh;
  overflow: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

#app { height: 100vh; display: flex; flex-direction: column; }

/* ===== 顶部导航：纸感平面 + 细分隔线 ===== */
.app-header {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border-light);
  padding: 0 var(--spacing-xl);
  height: 62px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
  box-shadow: var(--shadow-sm);
  z-index: 20;
}

.app-title {
  font-family: var(--font-display);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: 0.3px;
  color: var(--color-text-primary);
  display: flex;
  align-items: center;
  gap: 10px;
}

.app-title .el-icon {
  color: var(--color-primary);
  font-size: 19px;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary-bg);
  border: 1px solid rgba(217, 119, 87, 0.25);
  border-radius: 9px;
}

.user-selector { display: flex; align-items: center; gap: 10px; }

.user-info {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  font-size: 14px;
  color: var(--color-text-secondary);
  padding-right: 6px;
}

.user-avatar {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--color-text-primary);
  color: var(--color-surface);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 600;
}

/* ===== 主体布局 ===== */
.main-container { flex: 1; display: flex; overflow: hidden; padding: var(--spacing-md); gap: var(--spacing-md); }

/* 左侧 AI 助手面板：独立卡片 */
.chat-panel {
  width: 420px;
  min-width: 360px;
  background: var(--color-surface);
  border: 1px solid var(--color-border-light);
  border-radius: var(--border-radius-lg);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}

.chat-header {
  padding: var(--spacing-md) var(--spacing-lg);
  border-bottom: 1px solid var(--color-border-light);
  background: var(--color-surface);
}

.chat-header h3 {
  font-family: var(--font-display);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.2px;
  color: var(--color-text-primary);
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
}

.chat-header h3 .el-icon { color: var(--color-primary); }

.chat-header p { font-size: 12px; color: var(--color-text-tertiary); margin-top: var(--spacing-xs); }

.chat-messages {
  flex: 1;
  overflow-y: auto;
  padding: var(--spacing-md);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-md);
}

.message { display: flex; gap: var(--spacing-sm); max-width: 92%; animation: msgIn 0.28s ease; }
@keyframes msgIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
.message.user { align-self: flex-end; flex-direction: row-reverse; }
.message.ai { align-self: flex-start; }

.message-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  flex-shrink: 0; display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 600;
}
.message.user .message-avatar { background: var(--color-text-primary); color: var(--color-surface); }
.message.ai .message-avatar { background: var(--color-primary-bg); color: var(--color-primary); }

.message-content {
  padding: 10px var(--spacing-md);
  border-radius: var(--border-radius-lg);
  font-size: 14px; line-height: 1.62;
  white-space: pre-wrap; word-break: break-word;
  box-shadow: var(--shadow-sm);
}
.message.user .message-content {
  background: #2d2c28;
  color: #faf9f5;
  border-bottom-right-radius: var(--border-radius-sm);
}
.message.ai .message-content {
  background: var(--color-background);
  color: var(--color-text-primary);
  border-bottom-left-radius: var(--border-radius-sm);
  border: 1px solid var(--color-border-light);
}

/* 聊天消息内的最小 Markdown 元素（加粗/斜体/行内代码），配合 app.html renderMessageHtml */
.message-content strong { font-weight: 600; }
.message-content em { font-style: italic; }
.message-content code {
  font-family: 'SFMono-Regular', Consolas, 'Courier New', monospace;
  font-size: 13px;
  background: rgba(20, 20, 19, 0.05);
  border: 1px solid var(--color-border-light);
  border-radius: 3px;
  padding: 0 4px;
}
.message.user .message-content code {
  background: rgba(250, 249, 245, 0.14);
  border-color: rgba(250, 249, 245, 0.28);
  color: #faf9f5;
}

.message-content .meeting-card {
  background: var(--color-surface);
  border-radius: var(--border-radius-base);
  padding: var(--spacing-md);
  margin: var(--spacing-sm) 0;
  border: 1px solid var(--color-border);
}
.message-content .meeting-card-item { padding: var(--spacing-sm) 0; border-bottom: 1px solid var(--color-border-light); }
.message-content .meeting-card-item:last-child { border-bottom: none; }

.chat-input-area {
  padding: var(--spacing-md);
  border-top: 1px solid var(--color-border-light);
  background: var(--color-surface);
}
.chat-compose-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: var(--spacing-sm);
  gap: var(--spacing-sm);
}
.chat-compose-bar .send-mode-btn {
  color: var(--color-text-tertiary);
  font-size: 12px;
  padding: 2px 6px;
}
.chat-compose-bar .send-mode-btn .el-icon {
  margin-right: 2px;
  font-size: 13px;
}
.chat-compose-bar .send-btn {
  flex-shrink: 0;
  font-weight: 600;
  padding: 8px 18px;
}
.quick-actions { display: flex; gap: var(--spacing-sm); margin-bottom: var(--spacing-sm); flex-wrap: wrap; }
.quick-action-btn {
  padding: var(--spacing-xs) var(--spacing-base) !important;
  font-size: 12px !important;
  border-radius: var(--border-radius-round) !important;
}

/* ===== 右侧日历面板：独立卡片 ===== */
.calendar-panel {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--color-surface);
  border: 1px solid var(--color-border-light);
  border-radius: var(--border-radius-lg);
  box-shadow: var(--shadow-sm);
}

.calendar-toolbar {
  padding: var(--spacing-md) var(--spacing-lg);
  border-bottom: 1px solid var(--color-border-light);
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: var(--color-surface);
}
.calendar-title {
  font-family: var(--font-display);
  font-size: 16px; font-weight: 600; letter-spacing: 0.3px;
  font-variant-numeric: tabular-nums;
}
.calendar-nav { display: flex; align-items: center; gap: var(--spacing-md); }
.calendar-legend { display: flex; gap: var(--spacing-md); font-size: 12px; color: var(--color-text-secondary); }
.legend-item { display: flex; align-items: center; gap: 5px; }
.legend-dot { width: 10px; height: 10px; border-radius: 50%; box-shadow: 0 0 0 3px rgba(20, 20, 19, 0.03); }

/* 周视图 */
.week-view { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
.week-header {
  display: grid;
  grid-template-columns: 60px repeat(7, 1fr);
  border-bottom: 1px solid var(--color-border);
  background: var(--color-background);
}
.week-header-cell {
  padding: 10px var(--spacing-sm);
  text-align: center;
  font-size: 13px;
  color: var(--color-text-secondary);
  border-right: 1px solid var(--color-border-light);
}
.week-header-cell.today {
  background: var(--color-primary-bg);
  color: var(--color-primary-hover);
  font-weight: 700;
}
.week-header-cell .day-number {
  font-size: 19px; font-weight: 700; display: block; margin-top: 3px;
  font-variant-numeric: tabular-nums;
}
.week-header-cell.today .day-number {
  width: 30px; height: 30px; line-height: 30px; margin: 3px auto 0;
  background: var(--color-primary); color: #faf9f5; border-radius: 50%;
}

.week-body { flex: 1; display: grid; grid-template-columns: 60px repeat(7, 1fr); overflow-y: auto; }
.time-slot {
  border-right: 1px solid var(--color-border-light);
  border-bottom: 1px solid var(--color-border-light);
  font-size: 11px; color: var(--color-text-tertiary);
  text-align: center; height: 52px;
  display: flex; align-items: flex-start; justify-content: center; padding-top: 4px;
  font-variant-numeric: tabular-nums;
}
.day-column { border-right: 1px solid var(--color-border-light); position: relative; min-height: 100%; }
.day-column.today { background: rgba(217, 119, 87, 0.03); }
.time-grid-line { height: 52px; border-bottom: 1px dashed var(--color-border-light); }

/* 会议块：纸感卡片 + 悬浮动效 */
.meeting-event {
  position: absolute; left: 3px; right: 3px;
  border-radius: var(--border-radius-sm);
  padding: 5px 8px; font-size: 11px;
  cursor: pointer; overflow: hidden;
  border-left: 3px solid;
  box-shadow: var(--shadow-sm);
  transition: transform 0.16s ease, box-shadow 0.16s ease;
  z-index: 2;
}
.meeting-event:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  z-index: 10;
}
.meeting-event .event-title { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.meeting-event .event-info { font-size: 10px; opacity: 0.85; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 1px; }

.meeting-event.redacted {
  background: var(--color-background) !important;
  border-left-color: var(--color-text-tertiary) !important;
  color: var(--color-text-tertiary) !important;
  cursor: default;
}
.meeting-event.redacted:hover { transform: none; box-shadow: var(--shadow-sm); }

/* 只看我的会议：非本人参加的会议半透明淡显（仍可点击查看，20260708 需求3） */
.meeting-event.not-participant {
  opacity: 0.32;
  filter: grayscale(0.25);
}
.meeting-event.not-participant:hover {
  opacity: 0.7;
  transform: none;
}

/* 优先级配色（暖调柔化，同层次语义） */
.priority-p0 { background: var(--color-error-bg); border-left-color: var(--color-error); color: #8f322c; }
.priority-p1 { background: var(--color-warning-bg); border-left-color: var(--color-warning); color: #7d551d; }
.priority-p2 { background: var(--color-info-bg); border-left-color: var(--color-info); color: #3f6288; }
.priority-p3 { background: var(--color-success-bg); border-left-color: var(--color-success); color: #4d6534; }

/* 组织层级配色（应用于 .meeting-event 与图例小圆点 / 标签）
   委办=红、处级=蓝、本中心=绿、外部=橙。
   说明：层级优先级高于 priority-pX —— 后定义的同元素同属性会覆盖，
   meeting-event 上若同时挂了 .priority-pX 与 .org-XXX，
   实际颜色按组织层级，符合反馈中"按层级配色"的诉求。 */
.meeting-event.org-commission { background: #f7e0dc; border-left-color: #c2453a; color: #8e2f26; }
.meeting-event.org-department { background: #e7eff7; border-left-color: #6a9bcc; color: #3f6288; }
.meeting-event.org-center     { background: #edf2e4; border-left-color: #788c5d; color: #4d6534; }
.meeting-event.org-external   { background: #f8ecd9; border-left-color: #cd8437; color: #7d551d; }

.legend-dot.org-commission { background: #c2453a; }
.legend-dot.org-department { background: #6a9bcc; }
.legend-dot.org-center     { background: #788c5d; }
.legend-dot.org-external   { background: #cd8437; }

/* 人员 level 配色：委领导红、处领导紫、中心主任深绿(松)、中心领导绿(橄榄)、中心员工琥珀黄、外来人员暖灰。
   会议卡片按“会议内最高级别人员”着色（见 app.html getMeetingEffectiveLevel）。
   （20260707 反馈约束保留：六级一眼可分——尤其两种绿(中心主任 vs 中心领导)与员工黄要可分；
    v3 主题在保持 红/紫/绿系/黄/灰 色系语义不变的前提下整体柔化饱和度以贴合暖调纸感；
    中心主任用深松绿+较深薄荷底，中心领导用浅橄榄绿+极浅底，深浅与饱和度双重区分。） */
.meeting-event.level-committee, .meeting-event.meeting-stack.level-committee, .stack-card.level-committee { background: #f7e0dc; border-left-color: #c2453a; color: #8e2f26; }
.meeting-event.level-bureau, .meeting-event.meeting-stack.level-bureau, .stack-card.level-bureau { background: #ece5f6; border-left-color: #7d5bb0; color: #52357e; }
.meeting-event.level-center_director, .meeting-event.meeting-stack.level-center_director, .stack-card.level-center_director { background: #c9e2d4; border-left-color: #1f5c47; color: #17422f; }
.meeting-event.level-center_leader, .meeting-event.meeting-stack.level-center_leader, .stack-card.level-center_leader { background: #edf3e3; border-left-color: #7d9d63; color: #4d6534; }
.meeting-event.level-staff, .meeting-event.meeting-stack.level-staff, .stack-card.level-staff { background: #f8eed7; border-left-color: #d29a3a; color: #7d551d; }
.meeting-event.level-external, .meeting-event.meeting-stack.level-external, .stack-card.level-external { background: #f0efe9; border-left-color: #a09e96; color: #55534c; }

.legend-dot.level-committee { background: #c2453a; }
.legend-dot.level-bureau { background: #7d5bb0; }
.legend-dot.level-center_director { background: #1f5c47; }
.legend-dot.level-center_leader { background: #7d9d63; }
.legend-dot.level-staff { background: #d29a3a; }
.legend-dot.level-external { background: #a09e96; }

.stack-tip-dot.level-committee { background: #c2453a; }
.stack-tip-dot.level-bureau { background: #7d5bb0; }
.stack-tip-dot.level-center_director { background: #1f5c47; }
.stack-tip-dot.level-center_leader { background: #7d9d63; }
.stack-tip-dot.level-staff { background: #d29a3a; }
.stack-tip-dot.level-external { background: #a09e96; }

.attendee-tag.level-committee { background: #f7e0dc; border-color: #e3a8a0; color: #8e2f26; }
.attendee-tag.level-bureau { background: #ece5f6; border-color: #c4b0e0; color: #52357e; }
.attendee-tag.level-center_director { background: #c9e2d4; border-color: #7fb598; color: #17422f; }
.attendee-tag.level-center_leader { background: #edf3e3; border-color: #bccfa4; color: #4d6534; }
.attendee-tag.level-staff { background: #f8eed7; border-color: #e3c58c; color: #7d551d; }
.attendee-tag.level-external { background: #f0efe9; border: 1px dashed #c9c7bd; color: #55534c; }

/* 人员管理表：层级标签按 level 配色（委红/处紫/中心主任深绿/中心领导绿/员工黄/外部灰）。 */
.org-tag.level-committee { background: #f7e0dc; color: #8e2f26; border-color: #e3a8a0; }
.org-tag.level-bureau { background: #ece5f6; color: #52357e; border-color: #c4b0e0; }
.org-tag.level-center_director { background: #c9e2d4; color: #17422f; border-color: #7fb598; }
.org-tag.level-center_leader { background: #edf3e3; color: #4d6534; border-color: #bccfa4; }
.org-tag.level-staff { background: #f8eed7; color: #7d551d; border-color: #e3c58c; }
.org-tag.level-external { background: #f0efe9; color: #55534c; border-color: #c9c7bd; }

/* 人员管理表：姓名按层级着色，委领导红、处领导紫，一眼区分（20260706 反馈 6）。 */
.user-name-level { font-weight: 600; }
.user-name-level.level-committee { color: #b13a2f; }
.user-name-level.level-bureau { color: #6a4a9e; }
.user-name-level.level-center_director { color: #1f5c47; }
.user-name-level.level-center_leader { color: #5c7a41; }
.user-name-level.level-staff { color: #7d551d; font-weight: 500; }
.user-name-level.level-external { color: #55534c; }

/* 小时聚合块：同一天同一小时多场会议合并展示。
   用三层堆叠阴影暗示"卡片叠卡片"，和正常会议块视觉上区分但同色系。 */
.meeting-event.meeting-stack {
  background: #eeece4;
  border-left-color: #a09e96;
  color: #55534c;
  /* 三层堆叠:右下偏移 + 渐弱 */
  box-shadow:
    3px 3px 0 -1px #d8d6ce,
    6px 6px 0 -2px #e8e6dc,
    var(--shadow-sm);
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  text-align: center;
  font-weight: 600;
}
.meeting-event.meeting-stack:hover {
  background: #e5e2d8;
  box-shadow:
    3px 3px 0 -1px #b8b6ae,
    6px 6px 0 -2px #d8d6ce,
    var(--shadow-md);
}
.meeting-event.meeting-stack .event-title { font-size: 13px; color: #3d3c38; }
.meeting-event.meeting-stack .event-info { color: #6b6962; }

/* 悬停 tooltip 速览样式 */
.stack-tooltip { max-width: 320px; }
.stack-tip-list { padding: 4px 2px; }
.stack-tip-head { font-weight: 700; font-size: 12px; color: var(--color-text-primary); margin-bottom: 6px; }
.stack-tip-row { display: flex; align-items: center; gap: 6px; font-size: 12px; padding: 2px 0; }
.stack-tip-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.stack-tip-dot.org-commission { background: #c2453a; }
.stack-tip-dot.org-department { background: #6a9bcc; }
.stack-tip-dot.org-center     { background: #788c5d; }
.stack-tip-dot.org-external   { background: #cd8437; }
.stack-tip-title { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--color-text-secondary); }
.stack-tip-time { color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
.stack-tip-more { font-size: 11px; color: var(--color-text-tertiary); margin-top: 4px; font-style: italic; }

/* 抽屉内同时段会议卡片列表 */
.stack-anchor {
  padding: 0 4px 12px; font-size: 12px; color: var(--color-text-tertiary);
  border-bottom: 1px dashed var(--color-border-light); margin-bottom: 12px;
}
.stack-list { display: flex; flex-direction: column; gap: 10px; }
.stack-card {
  padding: 10px 12px; border-radius: var(--border-radius-base);
  border-left: 3px solid; cursor: pointer;
  transition: transform 0.16s ease, box-shadow 0.16s ease;
  box-shadow: var(--shadow-sm);
}
.stack-card:hover { transform: translateX(-2px); box-shadow: var(--shadow-md); }
.stack-card-time { font-size: 12px; font-weight: 700; opacity: 0.85; font-variant-numeric: tabular-nums; }
.stack-card-title { font-size: 14px; font-weight: 600; margin: 4px 0; }
.stack-card-meta { font-size: 12px; opacity: 0.75; }
.stack-card.org-commission { background: #f7e0dc; border-left-color: #c2453a; color: #8e2f26; }
.stack-card.org-department { background: #e7eff7; border-left-color: #6a9bcc; color: #3f6288; }
.stack-card.org-center     { background: #edf2e4; border-left-color: #788c5d; color: #4d6534; }
.stack-card.org-external   { background: #f8ecd9; border-left-color: #cd8437; color: #7d551d; }

/* ===== 会议表单弹窗 ===== */
.meeting-form-content { padding: var(--spacing-lg); }
.meeting-form-content .el-form-item { margin-bottom: var(--spacing-md); }

/* 人员标签 */
.attendee-tags { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); }
.attendee-tag {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 10px; border-radius: var(--border-radius-round);
  font-size: 12px; background: var(--color-background); border: 1px solid var(--color-border);
}
.attendee-tag.priority-0 { background: var(--color-error-bg); border-color: #e3a8a0; color: #8f322c; }
.attendee-tag.priority-1 { background: var(--color-warning-bg); border-color: #e3c58c; color: #7d551d; }
.attendee-tag.priority-2 { background: var(--color-info-bg); border-color: #b3cbe2; color: #3f6288; }
.attendee-tag.priority-3 { background: var(--color-success-bg); border-color: #bccfa4; color: #4d6534; }
/* 组织层级 attendee-tag 颜色，会覆盖 .priority-N */
.attendee-tag.org-commission { background: #f7e0dc; border-color: #e3a8a0; color: #8e2f26; }
.attendee-tag.org-department { background: #e7eff7; border-color: #b3cbe2; color: #3f6288; }
.attendee-tag.org-center     { background: #edf2e4; border-color: #bccfa4; color: #4d6534; }
.attendee-tag.org-external,
.attendee-tag.attendee-tag-external {
  background: #f8ecd9;
  border: 1px dashed #e3c58c;
  color: #7d551d;
}
/* 管理面板中的层级 tag（el-tag） */
.org-tag.org-commission { background: #f7e0dc; color: #8e2f26; border-color: #e3a8a0; }
.org-tag.org-department { background: #e7eff7; color: #3f6288; border-color: #b3cbe2; }
.org-tag.org-center     { background: #edf2e4; color: #4d6534; border-color: #bccfa4; }

/* 冲突提示 */
.conflict-alert {
  background: var(--color-error-bg);
  border: 1px solid #e3a8a0;
  border-radius: var(--border-radius-base);
  padding: var(--spacing-md);
  margin: var(--spacing-md) 0;
}
.conflict-alert-title { color: var(--color-error); font-weight: 700; font-size: 14px; margin-bottom: var(--spacing-sm); }
.conflict-item { font-size: 13px; color: var(--color-text-secondary); padding: var(--spacing-xs) 0; }

/* ===== Element Plus 组件微调 ===== */
.el-button { font-weight: 600; border-radius: var(--border-radius-base); transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.2s ease, border-color 0.2s ease, color 0.2s ease; }
.el-button:active { transform: scale(0.97); }
.el-button--primary {
  --el-button-text-color: #faf9f5;
  --el-button-hover-text-color: #faf9f5;
  border: none;
  box-shadow: 0 2px 8px rgba(197, 101, 69, 0.24);
}
.el-button--primary:hover { box-shadow: 0 4px 14px rgba(197, 101, 69, 0.32); }
.el-dialog { border-radius: var(--border-radius-xl); overflow: hidden; box-shadow: var(--shadow-lg); border: 1px solid var(--color-border-light); }
.el-dialog__header { padding: var(--spacing-lg) var(--spacing-xl); border-bottom: 1px solid var(--color-border-light); margin: 0; }
.el-dialog__title { font-family: var(--font-display); font-weight: 600; letter-spacing: 0.3px; }
.el-drawer__title { font-family: var(--font-display); font-weight: 600; color: var(--color-text-primary); }
.el-message-box__title { font-family: var(--font-display); font-weight: 600; }
.el-card, .el-message-box { border-radius: var(--border-radius-lg); }
.el-input__wrapper, .el-textarea__inner { border-radius: var(--border-radius-base); }
.el-table th.el-table__cell { font-weight: 600; letter-spacing: 0.3px; }

/* ===== 响应式 ===== */
@media (max-width: 1024px) { .chat-panel { width: 340px; } }
@media (max-width: 768px) {
  .main-container { flex-direction: column; }
  .chat-panel { width: 100%; height: 50%; }
}

/* ===== 滚动条 ===== */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #d3d0c5; border-radius: 4px; border: 2px solid transparent; background-clip: padding-box; }
::-webkit-scrollbar-thumb:hover { background: #bcb9ac; background-clip: padding-box; }

/* 导入勾选弹窗 */
.import-check-list { display: flex; flex-direction: column; gap: 8px; max-height: 420px; overflow: auto; padding-right: 4px; }
.import-check-item { width: 100%; height: auto; align-items: flex-start; margin: 0; padding: 8px 12px; }
.import-check-title { font-weight: 700; color: var(--color-text-primary); line-height: 1.5; }
.import-check-meta { font-size: 12px; color: var(--color-text-tertiary); line-height: 1.5; margin-top: 2px; }
.import-check-item { border: 1px solid var(--color-border-light); border-radius: 6px; }
.import-unit-picker { margin: 6px 0 2px 24px; }
.import-unit-tip { font-size: 12px; color: var(--color-warning, #7d551d); line-height: 1.5; margin-bottom: 4px; }
