/* ===== 活动系统 V3 Phase 1 样式 ===== */

/* ---------- 模板管理页 ---------- */
.tpl-page { padding: 20px 24px; }
.tpl-page-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; }
.tpl-page-header h2 { margin: 0; font-size: 20px; color: #1a1a1a; }
.tpl-page-header h2 i { color: #1890ff; margin-right: 8px; }
.tpl-page-subtitle { font-size: 13px; color: #999; margin-top: 4px; }

.tpl-filters { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; align-items: center; }
.tpl-filters select, .tpl-filters input { padding: 6px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 13px; }
.tpl-filters input { min-width: 200px; }
.tpl-filters input:focus, .tpl-filters select:focus { border-color: #1890ff; outline: none; }

.tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.tpl-card { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 20px; transition: box-shadow 0.2s, border-color 0.2s; cursor: pointer; position: relative; }
.tpl-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.08); border-color: #d0e0ff; }
.tpl-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 12px; }
.tpl-card-name { font-size: 16px; font-weight: 600; color: #1a1a1a; }
.tpl-card-category { display: inline-block; padding: 2px 8px; background: #f0f5ff; color: #1890ff; border-radius: 4px; font-size: 11px; }
.tpl-card-meta { display: flex; gap: 16px; margin: 12px 0; font-size: 12px; color: #8c8c8c; }
.tpl-card-meta span i { margin-right: 4px; }
.tpl-card-modules { display: flex; gap: 6px; flex-wrap: wrap; }
.tpl-module-badge { padding: 2px 8px; border-radius: 10px; font-size: 11px; background: #f5f5f5; color: #595959; }
.tpl-module-badge.enabled { background: #f6ffed; color: #52c41a; }
.tpl-module-badge.disabled { background: #fff1f0; color: #ff4d4f; }
.tpl-card-actions { display: flex; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f0f0f0; }
.tpl-card-actions button { font-size: 12px; padding: 4px 12px; }

.tpl-status-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; }
.tpl-status-dot.published { background: #52c41a; }
.tpl-status-dot.draft { background: #d9d9d9; }
.tpl-status-dot.deprecated { background: #ff4d4f; }

/* 模板编辑弹窗 */
.tpl-edit-modal { max-height: 70vh; overflow-y: auto; }
.tpl-edit-section { margin-bottom: 20px; }
.tpl-edit-section h4 { font-size: 14px; color: #333; margin: 0 0 10px 0; padding-bottom: 8px; border-bottom: 1px solid #f0f0f0; display: flex; align-items: center; gap: 8px; }
.tpl-edit-section h4 label { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: normal; cursor: pointer; margin-left: auto; }
.tpl-module-items { display: flex; flex-direction: column; gap: 8px; }
.tpl-module-item { display: flex; gap: 8px; align-items: center; padding: 8px; background: #fafafa; border-radius: 6px; }
.tpl-module-item input { flex: 1; padding: 6px 10px; border: 1px solid #d9d9d9; border-radius: 4px; font-size: 13px; }
.tpl-module-item input:focus { border-color: #1890ff; outline: none; }
.tpl-module-item select { padding: 6px 10px; border: 1px solid #d9d9d9; border-radius: 4px; font-size: 13px; background: #fff; }
.tpl-module-item .btn-icon { background: none; border: none; color: #ff4d4f; cursor: pointer; font-size: 16px; padding: 4px; }

/* ---------- 创建活动 V3 三步向导 ---------- */
.create-v3-page { max-width: 900px; margin: 0 auto; padding: 20px 24px; }
.create-v3-steps { display: flex; align-items: center; justify-content: center; margin-bottom: 32px; }
.create-v3-step { display: flex; align-items: center; gap: 10px; }
.create-v3-step-num { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 600; background: #f0f0f0; color: #8c8c8c; transition: all 0.3s; }
.create-v3-step.active .create-v3-step-num { background: #1890ff; color: #fff; }
.create-v3-step.done .create-v3-step-num { background: #52c41a; color: #fff; }
.create-v3-step-label { font-size: 13px; color: #8c8c8c; }
.create-v3-step.active .create-v3-step-label { color: #1890ff; font-weight: 500; }
.create-v3-step.done .create-v3-step-label { color: #52c41a; }
.create-v3-step-arrow { margin: 0 20px; color: #d9d9d9; font-size: 18px; }

/* 步骤 1: 模板选择 */
.create-v3-templates { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.create-v3-tpl-card { border: 2px solid #e8e8e8; border-radius: 10px; padding: 20px; cursor: pointer; transition: all 0.2s; background: #fff; }
.create-v3-tpl-card:hover { border-color: #91d5ff; box-shadow: 0 2px 12px rgba(24,144,255,0.1); }
.create-v3-tpl-card.selected { border-color: #1890ff; box-shadow: 0 0 0 3px rgba(24,144,255,0.15); background: #f0f8ff; }
.create-v3-tpl-card h4 { margin: 0 0 8px 0; font-size: 15px; }
.create-v3-tpl-card .meta { font-size: 12px; color: #8c8c8c; margin-bottom: 8px; }
.create-v3-tpl-card .modules { display: flex; gap: 4px; flex-wrap: wrap; }

/* 步骤 2: AI 生成 */
.create-v3-ai-generating { text-align: center; padding: 60px 20px; }
.create-v3-ai-generating .spinner { font-size: 48px; color: #1890ff; animation: spin 1s linear infinite; }
.create-v3-ai-generating h4 { margin: 16px 0 8px; color: #333; }
.create-v3-ai-generating p { color: #8c8c8c; font-size: 13px; }
.create-v3-ai-error { text-align: center; padding: 40px 20px; background: #fff2f0; border: 1px solid #ffccc7; border-radius: 8px; }
.create-v3-ai-error i { font-size: 36px; color: #ff4d4f; }
.create-v3-ai-error p { color: #ff4d4f; margin: 8px 0; }
.create-v3-gen-progress { margin: 20px 0; }
.create-v3-gen-section { display: flex; align-items: center; gap: 10px; padding: 8px 12px; margin-bottom: 6px; border-radius: 6px; font-size: 13px; }
.create-v3-gen-section.generating { background: #f0f5ff; color: #1890ff; }
.create-v3-gen-section.done { background: #f6ffed; color: #52c41a; }
.create-v3-gen-section.pending { background: #fafafa; color: #d9d9d9; }
.create-v3-gen-section i { width: 16px; text-align: center; }

/* 步骤 3: 审查确认 */
.create-v3-review { display: flex; flex-direction: column; gap: 16px; }
.create-v3-review-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.create-v3-review-header h3 { margin: 0; }
.create-v3-review-actions { display: flex; gap: 8px; }

.review-section-card { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; overflow: hidden; transition: border-color 0.2s; }
.review-section-card:hover { border-color: #d0e0ff; }
.review-section-card.confirmed { border-color: #b7eb8f; background: #fcffe6; }
.review-section-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; cursor: pointer; background: #fafafa; border-bottom: 1px solid #f0f0f0; transition: background 0.2s; }
.review-section-card.confirmed .review-section-header { background: #f6ffed; }
.review-section-header:hover { background: #f0f5ff; }
.review-section-title { display: flex; align-items: center; gap: 10px; font-weight: 600; font-size: 15px; }
.review-section-title .confirm-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 10px; border-radius: 12px; font-size: 11px; color: #52c41a; background: #f6ffed; border: 1px solid #b7eb8f; font-weight: normal; }
.review-section-body { padding: 16px 20px; display: none; }
.review-section-card.open .review-section-body { display: block; }
.review-section-content { font-size: 14px; line-height: 1.8; color: #333; max-height: 400px; overflow-y: auto; white-space: pre-wrap; }
.review-section-content.editing { border: 1px solid #d9d9d9; border-radius: 6px; padding: 12px; min-height: 200px; outline: none; }
.review-section-content.editing:focus { border-color: #1890ff; box-shadow: 0 0 0 2px rgba(24,144,255,0.1); }
.review-section-actions { display: flex; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f0f0f0; }
.review-section-attachments { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.review-attachment { width: 80px; height: 80px; border-radius: 6px; border: 1px solid #e8e8e8; object-fit: cover; cursor: pointer; }
.review-attachment.add { display: flex; align-items: center; justify-content: center; font-size: 24px; color: #d9d9d9; background: #fafafa; }

.create-v3-submit-bar { display: flex; justify-content: center; gap: 12px; padding: 20px 0; margin-top: 8px; border-top: 1px solid #f0f0f0; }
.create-v3-intro { text-align: center; padding: 24px; background: #f0f8ff; border-radius: 10px; margin-bottom: 20px; }
.create-v3-intro h4 { margin: 0 0 8px; color: #1890ff; }
.create-v3-intro p { color: #595959; font-size: 13px; margin: 0; }
.create-v3-manual-entry { text-align: center; margin-top: 20px; }

/* ---------- 执行看板 5 区布局 ---------- */
.exec-dash { padding: 20px 24px; }
.exec-dash-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; }
.exec-dash-header h2 { margin: 0; font-size: 20px; }
.exec-dash-header .activity-meta { font-size: 13px; color: #8c8c8c; }
.exec-dash-grid { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto auto; gap: 16px; }
.exec-dash-grid > .full-row { grid-column: 1 / -1; }

/* 区域 1: 进度条 */
.exec-panel { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 20px; }
.exec-panel-header { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; margin-bottom: 16px; color: #333; }
.exec-panel-header i { color: #1890ff; }
.progress-overall-bar { height: 12px; background: #f0f0f0; border-radius: 6px; overflow: hidden; margin-bottom: 8px; }
.progress-overall-fill { height: 100%; background: linear-gradient(90deg, #1890ff, #52c41a); border-radius: 6px; transition: width 0.6s ease; }
.progress-overall-label { display: flex; justify-content: space-between; font-size: 13px; color: #595959; }
.progress-phase-info { margin-top: 12px; padding: 10px 14px; background: #fafafa; border-radius: 8px; display: flex; justify-content: space-between; font-size: 13px; }
.progress-phase-name { color: #1890ff; font-weight: 500; }
.progress-phase-day { color: #8c8c8c; }

/* 区域 2: KPI 卡片 */
.exec-kpi-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
.exec-kpi-card { padding: 16px; border-radius: 10px; border: 1px solid #e8e8e8; text-align: center; }
.exec-kpi-card.normal { background: #fafafa; }
.exec-kpi-card.warning { background: #fffbe6; border-color: #ffe58f; }
.exec-kpi-card.critical { background: #fff2f0; border-color: #ffccc7; }
.exec-kpi-card.exceeded { background: #f6ffed; border-color: #b7eb8f; }
.exec-kpi-card .kpi-name { font-size: 12px; color: #8c8c8c; margin-bottom: 6px; }
.exec-kpi-card .kpi-actual { font-size: 28px; font-weight: 700; color: #1a1a1a; }
.exec-kpi-card .kpi-target { font-size: 12px; color: #8c8c8c; margin-top: 4px; }
.exec-kpi-card .kpi-pct { font-size: 12px; margin-top: 4px; font-weight: 500; }
.exec-kpi-card.normal .kpi-pct { color: #1890ff; }
.exec-kpi-card.warning .kpi-pct { color: #faad14; }
.exec-kpi-card.critical .kpi-pct { color: #ff4d4f; }
.exec-kpi-card.exceeded .kpi-pct { color: #52c41a; }

/* 区域 3: 预警面板 */
.exec-alert-item { display: flex; gap: 10px; padding: 10px 14px; border-radius: 8px; margin-bottom: 8px; font-size: 13px; }
.exec-alert-item.red { background: #fff2f0; border: 1px solid #ffccc7; }
.exec-alert-item.yellow { background: #fffbe6; border: 1px solid #ffe58f; }
.exec-alert-item .alert-icon { font-size: 16px; flex-shrink: 0; }
.exec-alert-item.red .alert-icon { color: #ff4d4f; }
.exec-alert-item.yellow .alert-icon { color: #faad14; }
.exec-alert-item .alert-content { flex: 1; }
.exec-alert-item .alert-message { color: #333; font-weight: 500; }
.exec-alert-item .alert-suggestion { color: #8c8c8c; margin-top: 2px; font-size: 12px; }
.exec-alert-empty { text-align: center; padding: 30px; color: #8c8c8c; }

/* 区域 4: 团队状态 */
.exec-team-list { display: flex; flex-direction: column; gap: 10px; }
.exec-team-item { display: flex; align-items: center; gap: 12px; padding: 10px 14px; background: #fafafa; border-radius: 8px; }
.exec-team-avatar { width: 36px; height: 36px; border-radius: 50%; background: #f0f5ff; color: #1890ff; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 14px; }
.exec-team-info { flex: 1; }
.exec-team-name { font-size: 14px; font-weight: 500; }
.exec-team-tasks { font-size: 12px; color: #8c8c8c; }
.exec-team-badge { padding: 2px 10px; border-radius: 12px; font-size: 11px; font-weight: 500; }
.exec-team-badge.ok { background: #f6ffed; color: #52c41a; }
.exec-team-badge.warning { background: #fffbe6; color: #faad14; }
.exec-team-badge.critical { background: #fff2f0; color: #ff4d4f; }

/* 区域 5: 时间线 */
.exec-timeline { position: relative; padding-left: 24px; }
.exec-timeline::before { content: ''; position: absolute; left: 7px; top: 0; bottom: 0; width: 2px; background: #e8e8e8; }
.exec-tl-node { position: relative; padding: 0 0 20px 20px; }
.exec-tl-node::before { content: ''; position: absolute; left: -21px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: #d9d9d9; border: 2px solid #fff; }
.exec-tl-node.completed::before { background: #52c41a; }
.exec-tl-node.in_progress::before { background: #1890ff; box-shadow: 0 0 0 3px rgba(24,144,255,0.2); animation: pulse 1.5s infinite; }
.exec-tl-node.pending::before { background: #d9d9d9; }
@keyframes pulse { 0%, 100% { box-shadow: 0 0 0 3px rgba(24,144,255,0.2); } 50% { box-shadow: 0 0 0 6px rgba(24,144,255,0.1); } }
.exec-tl-node .tl-label { font-size: 14px; font-weight: 500; }
.exec-tl-node .tl-date { font-size: 12px; color: #8c8c8c; margin-top: 2px; }
.exec-tl-node .tl-status { font-size: 11px; margin-top: 2px; }
.exec-tl-node.completed .tl-status { color: #52c41a; }
.exec-tl-node.in_progress .tl-status { color: #1890ff; }

/* 看板加载 & 刷新 */
.exec-dash-refresh { display: flex; justify-content: flex-end; margin-bottom: 12px; font-size: 12px; color: #8c8c8c; }
.exec-dash-loading { text-align: center; padding: 60px; }
.exec-dash-loading i { font-size: 36px; color: #1890ff; }

/* ---------- 复盘 V3 五板块可折叠 ---------- */
.review-v3-page { max-width: 1000px; margin: 0 auto; padding: 20px 24px; }
.review-v3-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.review-v3-header h2 { margin: 0; font-size: 20px; }
.review-v3-header .meta { font-size: 13px; color: #8c8c8c; display: flex; gap: 16px; }

.review-panels { display: flex; flex-direction: column; gap: 14px; }

.review-panel { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; overflow: hidden; transition: border-color 0.2s; }
.review-panel:hover { border-color: #d0e0ff; }
.review-panel.open { border-color: #91d5ff; }
.review-panel-header { display: flex; align-items: center; gap: 10px; padding: 14px 20px; cursor: pointer; background: #fafafa; transition: background 0.2s; }
.review-panel-header:hover { background: #f0f5ff; }
.review-panel.open .review-panel-header { background: #f0f8ff; border-bottom: 1px solid #e8e8e8; }
.review-panel-icon { font-size: 22px; }
.review-panel-title { font-weight: 600; font-size: 15px; flex: 1; }
.review-panel-arrow { color: #8c8c8c; transition: transform 0.2s; }
.review-panel.open .review-panel-arrow { transform: rotate(180deg); }
.review-panel-summary { font-size: 12px; color: #8c8c8c; margin-left: auto; margin-right: 10px; max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-panel-body { display: none; padding: 16px 20px; }
.review-panel.open .review-panel-body { display: block; }

.review-panel-body .data-source { font-size: 11px; color: #bfbfbf; margin-top: 12px; padding-top: 8px; border-top: 1px solid #f5f5f5; }

/* 数据复盘表格 */
.review-kpi-table { width: 100%; border-collapse: collapse; margin: 12px 0; }
.review-kpi-table th, .review-kpi-table td { padding: 10px 14px; text-align: left; border-bottom: 1px solid #f0f0f0; font-size: 13px; }
.review-kpi-table th { background: #fafafa; font-weight: 600; color: #333; }
.review-kpi-table .kpi-pct-cell { font-weight: 600; }
.review-kpi-table .kpi-pct-cell.up { color: #52c41a; }
.review-kpi-table .kpi-pct-cell.down { color: #ff4d4f; }
.review-kpi-table .kpi-trend { font-size: 14px; }
.review-kpi-table .kpi-trend.up { color: #52c41a; }
.review-kpi-table .kpi-trend.down { color: #ff4d4f; }

/* 总结板块 */
.review-score-input { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; }
.review-score-input label { font-size: 14px; color: #333; }
.review-score-input input { width: 80px; padding: 8px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 18px; text-align: center; }
.review-score-input input:focus { border-color: #1890ff; outline: none; }
.review-summary-group { margin-bottom: 14px; }
.review-summary-group label { display: block; font-size: 13px; font-weight: 500; color: #333; margin-bottom: 6px; }
.review-summary-input { width: 100%; min-height: 72px; padding: 10px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 13px; font-family: inherit; resize: vertical; }
.review-summary-input:focus { border-color: #1890ff; outline: none; }

/* 经验卡片 */
.review-exp-item { padding: 10px 14px; background: #fafafa; border-radius: 8px; margin-bottom: 8px; }
.review-exp-content { font-size: 14px; color: #333; margin-bottom: 6px; }
.review-exp-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.review-exp-tag { padding: 1px 8px; background: #f0f5ff; color: #1890ff; border-radius: 10px; font-size: 11px; }
.review-exp-form { margin-top: 14px; padding: 14px; background: #fafafa; border-radius: 8px; }
.review-exp-form textarea { width: 100%; min-height: 80px; padding: 10px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 13px; font-family: inherit; resize: vertical; margin-bottom: 10px; }
.review-exp-form textarea:focus { border-color: #1890ff; outline: none; }
.review-exp-form .row { display: flex; gap: 8px; align-items: center; }

/* AI 洞察块 */
.review-ai-insight { margin-top: 12px; padding: 14px; background: linear-gradient(135deg, #f0f8ff, #f0f5ff); border: 1px solid #d0e0ff; border-radius: 8px; }
.review-ai-insight .ai-header { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #1890ff; font-weight: 500; margin-bottom: 8px; }
.review-ai-insight .ai-content { font-size: 13px; line-height: 1.7; color: #333; }

/* 复盘加载状态 */
.review-v3-loading { text-align: center; padding: 60px; }
.review-v3-loading i { font-size: 36px; color: #722ed1; }
.review-v3-empty { text-align: center; padding: 60px; background: #fafafa; border-radius: 10px; }
.review-v3-empty h4 { color: #595959; }
.review-v3-empty p { color: #8c8c8c; font-size: 13px; }

/* ---------- 通用工具按钮样式（活动V3页面作用域内，避免全局污染） ---------- */
.create-v3-page .btn-group,
.review-v3-page .btn-group,
.activity-execute-page .btn-group,
.exec-dash .btn-group,
.meeting-room-page .btn-group,
.et-page .btn-group { display: flex; gap: 8px; }

.create-v3-page .btn-sm,
.review-v3-page .btn-sm,
.activity-execute-page .btn-sm,
.exec-dash .btn-sm,
.meeting-room-page .btn-sm,
.et-page .btn-sm { font-size: 12px; padding: 4px 12px; border-radius: 6px; cursor: pointer; border: 1px solid #d9d9d9; background: #fff; color: #333; transition: all 0.2s; }

.create-v3-page .btn-sm:hover,
.review-v3-page .btn-sm:hover,
.activity-execute-page .btn-sm:hover,
.exec-dash .btn-sm:hover,
.meeting-room-page .btn-sm:hover,
.et-page .btn-sm:hover { border-color: #1890ff; color: #1890ff; }

.create-v3-page .btn-sm.btn-primary,
.review-v3-page .btn-sm.btn-primary,
.activity-execute-page .btn-sm.btn-primary,
.exec-dash .btn-sm.btn-primary,
.meeting-room-page .btn-sm.btn-primary,
.et-page .btn-sm.btn-primary { background: #1890ff; color: #fff; border-color: #1890ff; }

.create-v3-page .btn-sm.btn-primary:hover,
.review-v3-page .btn-sm.btn-primary:hover,
.activity-execute-page .btn-sm.btn-primary:hover,
.exec-dash .btn-sm.btn-primary:hover,
.meeting-room-page .btn-sm.btn-primary:hover,
.et-page .btn-sm.btn-primary:hover { background: #40a9ff; }

.create-v3-page .btn-sm.btn-danger,
.review-v3-page .btn-sm.btn-danger,
.activity-execute-page .btn-sm.btn-danger,
.exec-dash .btn-sm.btn-danger,
.meeting-room-page .btn-sm.btn-danger,
.et-page .btn-sm.btn-danger { color: #ff4d4f; }

.create-v3-page .btn-sm.btn-danger:hover,
.review-v3-page .btn-sm.btn-danger:hover,
.activity-execute-page .btn-sm.btn-danger:hover,
.exec-dash .btn-sm.btn-danger:hover,
.meeting-room-page .btn-sm.btn-danger:hover,
.et-page .btn-sm.btn-danger:hover { border-color: #ff4d4f; background: #fff1f0; }

.create-v3-page .btn-sm.btn-success,
.review-v3-page .btn-sm.btn-success,
.activity-execute-page .btn-sm.btn-success,
.exec-dash .btn-sm.btn-success,
.meeting-room-page .btn-sm.btn-success,
.et-page .btn-sm.btn-success { background: #52c41a; color: #fff; border-color: #52c41a; }

.create-v3-page .btn-sm.btn-success:hover,
.review-v3-page .btn-sm.btn-success:hover,
.activity-execute-page .btn-sm.btn-success:hover,
.exec-dash .btn-sm.btn-success:hover,
.meeting-room-page .btn-sm.btn-success:hover,
.et-page .btn-sm.btn-success:hover { background: #73d13d; }

.empty-state-v3 { text-align: center; padding: 60px 20px; color: #8c8c8c; }
.empty-state-v3 i { font-size: 48px; color: #d9d9d9; }
.empty-state-v3 h4 { margin: 12px 0 4px; color: #595959; }

/* 响应式：小屏看板变单列 */
@media (max-width: 768px) {
    .exec-dash-grid { grid-template-columns: 1fr; }
    .create-v3-templates { grid-template-columns: 1fr; }
    .tpl-grid { grid-template-columns: 1fr; }
}
/* ===== 活动系统 V3 Phase 1 样式 结束 ===== */

/* ===== 活动系统 V3 Phase 2 样式 ===== */

/* ==================== A. 营销总览样式 (.marketing-*) ==================== */

.marketing-page { padding: 20px 24px; }

.marketing-header { margin-bottom: 20px; }
.marketing-header h2 { margin: 0; font-size: 20px; color: #1a1a1a; }
.marketing-header h2 i { margin-right: 8px; }
.marketing-subtitle { font-size: 13px; color: #999; }

.marketing-stats { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.marketing-stat-card { display: flex; align-items: center; gap: 14px; padding: 18px 20px; background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; flex: 1; min-width: 200px; transition: box-shadow 0.2s; }
.marketing-stat-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
.marketing-stat-icon { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.marketing-stat-body { flex: 1; }
.marketing-stat-value { font-size: 26px; font-weight: 700; color: #1a1a1a; line-height: 1.2; }
.marketing-stat-label { font-size: 12px; color: #8c8c8c; margin-top: 2px; }

.marketing-filters { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; flex-wrap: wrap; gap: 10px; }
.marketing-filters-left { display: flex; gap: 10px; flex-wrap: wrap; }
.marketing-filters-right { display: flex; align-items: center; gap: 12px; }
.marketing-filter-select { padding: 6px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 13px; background: #fff; }
.marketing-filter-select:focus { border-color: #1890ff; outline: none; }
.marketing-count { font-size: 13px; color: #8c8c8c; }

.marketing-activity-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.marketing-activity-card { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 16px 18px; cursor: pointer; transition: box-shadow 0.2s, border-color 0.2s; border-left: 4px solid #e8e8e8; }
.marketing-activity-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.08); border-color: #d0e0ff; }
.marketing-activity-card.status-green { border-left-color: #52c41a; }
.marketing-activity-card.status-yellow { border-left-color: #faad14; }
.marketing-activity-card.status-red { border-left-color: #ff4d4f; }

.marketing-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 12px; }
.marketing-card-name { font-size: 15px; font-weight: 600; color: #1a1a1a; flex: 1; margin-right: 8px; }
.marketing-card-type { display: inline-block; padding: 2px 8px; background: #f0f5ff; color: #1890ff; border-radius: 4px; font-size: 11px; white-space: nowrap; }

.marketing-card-body { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.marketing-card-phase { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.marketing-phase-label { color: #8c8c8c; }
.marketing-phase-name { color: #1890ff; font-weight: 500; }
.marketing-card-progress { display: flex; align-items: center; gap: 10px; }
.marketing-progress-bar { flex: 1; height: 8px; background: #f0f0f0; border-radius: 4px; overflow: hidden; }
.marketing-progress-fill { height: 100%; background: linear-gradient(90deg, #1890ff, #52c41a); border-radius: 4px; transition: width 0.4s ease; }
.marketing-progress-pct { font-size: 12px; color: #595959; font-weight: 500; min-width: 36px; text-align: right; }

.marketing-card-footer { display: flex; align-items: center; gap: 14px; font-size: 12px; color: #8c8c8c; flex-wrap: wrap; }
.marketing-card-owner, .marketing-card-campus { display: flex; align-items: center; gap: 4px; }
.marketing-card-signal { margin-left: auto; font-size: 12px; }

.marketing-loading { text-align: center; padding: 60px; color: #8c8c8c; }
.marketing-loading i { font-size: 36px; color: #1890ff; margin-bottom: 12px; display: block; }

/* ==================== B. 集团总览样式 (.group-overview-*) ==================== */

.group-overview-page { padding: 20px 24px; }

.group-overview-header { margin-bottom: 20px; }
.group-overview-header h2 { margin: 0; font-size: 20px; color: #1a1a1a; }
.group-overview-header h2 i { margin-right: 8px; }
.group-overview-subtitle { font-size: 13px; color: #999; }

.group-overview-stats { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
.group-overview-stat-card { flex: 1; min-width: 150px; padding: 18px; background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; text-align: center; transition: box-shadow 0.2s; }
.group-overview-stat-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
.group-overview-stat-icon { font-size: 22px; margin-bottom: 8px; }
.group-overview-stat-value { font-size: 24px; font-weight: 700; color: #1a1a1a; line-height: 1.2; }
.group-overview-stat-label { font-size: 12px; color: #8c8c8c; margin-top: 4px; }

.group-overview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 20px; }

.group-overview-panel { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 16px 20px; }
.group-overview-panel-title { display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; color: #333; margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid #f0f0f0; }
.group-overview-panel-title i { font-size: 16px; }

.group-overview-dist-row { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.group-overview-dist-label { width: 100px; font-size: 13px; color: #595959; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.group-overview-dist-bar { flex: 1; height: 10px; background: #f5f5f5; border-radius: 5px; overflow: hidden; }
.group-overview-dist-fill { height: 100%; background: #722ed1; border-radius: 5px; transition: width 0.4s ease; min-width: 4px; }
.group-overview-dist-count { font-size: 13px; color: #8c8c8c; font-weight: 500; min-width: 30px; text-align: right; }

.group-overview-chart { display: flex; align-items: flex-end; gap: 16px; height: 160px; padding-top: 8px; }
.group-overview-bar-col { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; }
.group-overview-bar { display: flex; flex-direction: column; align-items: center; width: 100%; justify-content: flex-end; }
.group-overview-bar-fill { width: 36px; background: linear-gradient(180deg, #1890ff, #69c0ff); border-radius: 4px 4px 0 0; transition: height 0.4s ease; min-height: 4px; }
.group-overview-bar-value { font-size: 11px; color: #595959; margin-bottom: 4px; font-weight: 500; }
.group-overview-bar-label { font-size: 11px; color: #8c8c8c; margin-top: 6px; white-space: nowrap; text-align: center; }

.group-overview-filters { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; flex-wrap: wrap; gap: 10px; }
.group-overview-filters-left { display: flex; gap: 10px; flex-wrap: wrap; }
.group-overview-filters-right { display: flex; align-items: center; gap: 12px; }
.group-overview-filter-select { padding: 6px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 13px; background: #fff; }
.group-overview-filter-select:focus { border-color: #1890ff; outline: none; }
.group-overview-count { font-size: 13px; color: #8c8c8c; }

.group-overview-activity-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.group-overview-activity-card { background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; padding: 16px 18px; cursor: pointer; transition: box-shadow 0.2s, border-color 0.2s; border-left: 4px solid #e8e8e8; }
.group-overview-activity-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.08); border-color: #d0e0ff; }
.group-overview-activity-card.status-green { border-left-color: #52c41a; }
.group-overview-activity-card.status-yellow { border-left-color: #faad14; }
.group-overview-activity-card.status-red { border-left-color: #ff4d4f; }

.group-overview-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 12px; }
.group-overview-card-name { font-size: 15px; font-weight: 600; color: #1a1a1a; flex: 1; margin-right: 8px; }
.group-overview-card-type { display: inline-block; padding: 2px 8px; background: #f0f5ff; color: #1890ff; border-radius: 4px; font-size: 11px; white-space: nowrap; }

.group-overview-card-body { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.group-overview-card-phase { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #8c8c8c; }
.group-overview-card-phase strong { color: #1890ff; }
.group-overview-card-progress { display: flex; align-items: center; gap: 10px; }
.group-overview-progress-bar { flex: 1; height: 8px; background: #f0f0f0; border-radius: 4px; overflow: hidden; }
.group-overview-progress-fill { height: 100%; background: linear-gradient(90deg, #1890ff, #52c41a); border-radius: 4px; transition: width 0.4s ease; }
.group-overview-progress-pct { font-size: 12px; color: #595959; font-weight: 500; min-width: 36px; text-align: right; }

.group-overview-card-footer { display: flex; align-items: center; gap: 14px; font-size: 12px; color: #8c8c8c; flex-wrap: wrap; }
.group-overview-card-owner, .group-overview-card-campus { display: flex; align-items: center; gap: 4px; }
.group-overview-card-signal { margin-left: auto; font-size: 12px; }

.group-overview-loading { text-align: center; padding: 60px; color: #8c8c8c; }
.group-overview-loading i { font-size: 36px; color: #1677ff; margin-bottom: 12px; display: block; }

/* ==================== C. 我的待办样式 (.todos-* / .my-todos-*) ==================== */

.my-todos-page { max-width: 1000px; margin: 0 auto; padding: 20px 24px; }

.todos-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; flex-wrap: wrap; gap: 10px; }
.todos-header-left { flex: 1; }
.todos-title { margin: 0; font-size: 20px; color: #1a1a1a; }
.todos-title i { color: #1890ff; margin-right: 8px; }
.todos-subtitle { font-size: 13px; color: #999; display: block; margin-top: 4px; }
.todos-refresh-btn { white-space: nowrap; }

.todos-stats-row { display: flex; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.todos-stat-card { flex: 1; min-width: 160px; display: flex; align-items: center; gap: 14px; padding: 16px 18px; background: #fff; border: 1px solid #e8e8e8; border-radius: 10px; border-left: 4px solid #e8e8e8; transition: box-shadow 0.2s; }
.todos-stat-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
.todos-stat-icon { font-size: 24px; flex-shrink: 0; }
.todos-stat-body { flex: 1; }
.todos-stat-value { font-size: 24px; font-weight: 700; color: #1a1a1a; line-height: 1.2; }
.todos-stat-label { font-size: 12px; color: #8c8c8c; margin-top: 2px; }

.todos-zone { margin-bottom: 20px; border: 1px solid #e8e8e8; border-radius: 10px; overflow: hidden; }
.todos-zone-empty { }
.todos-zone-header { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: #fafafa; border-bottom: 1px solid #f0f0f0; }
.todos-zone-title { font-weight: 600; font-size: 14px; color: #333; }
.todos-zone-count { font-size: 12px; color: #8c8c8c; background: #f0f0f0; padding: 2px 10px; border-radius: 10px; }
.todos-zone-body { padding: 12px 16px; }
.todos-zone-empty-msg { text-align: center; padding: 24px; color: #8c8c8c; font-size: 13px; }
.todos-zone-placeholder { text-align: center; padding: 30px 16px; color: #bfbfbf; }
.todos-zone-placeholder i { font-size: 28px; margin-bottom: 8px; display: block; }
.todos-zone-placeholder p { font-size: 14px; color: #8c8c8c; margin: 4px 0; }
.todos-zone-placeholder span { font-size: 12px; }

.todos-warning-card { padding: 14px; margin-bottom: 10px; background: #fafafa; border-radius: 8px; border: 1px solid #f0f0f0; transition: all 0.2s; }
.todos-warning-card:hover { border-color: #d0e0ff; }
.todos-warning-card:last-child { margin-bottom: 0; }
.todos-warning-card-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px; gap: 8px; }
.todos-warning-activity { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.todos-warning-link { color: #1890ff; font-weight: 500; font-size: 14px; text-decoration: none; cursor: pointer; }
.todos-warning-link:hover { text-decoration: underline; }
.todos-warning-task { font-size: 13px; color: #595959; }
.todos-warning-tag { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 500; white-space: nowrap; }
.todos-warning-tag.tag-critical { background: #fff1f0; color: #ff4d4f; }
.todos-warning-tag.tag-warning { background: #fffbe6; color: #faad14; }

.todos-warning-card-body { font-size: 13px; color: #595959; }
.todos-warning-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; font-size: 12px; color: #8c8c8c; }
.todos-warning-meta i { font-size: 12px; }
.todos-warning-reason { display: flex; align-items: flex-start; gap: 6px; margin-bottom: 6px; font-size: 13px; line-height: 1.5; }
.todos-warning-ai-badge { flex-shrink: 0; font-size: 11px; color: #8c8c8c; }
.todos-warning-time { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #bfbfbf; }
.todos-warning-time i { font-size: 12px; }
.todos-warning-card-actions { display: flex; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid #f0f0f0; }

.todos-approval-card { padding: 14px; margin-bottom: 10px; background: #fafafa; border-radius: 8px; border: 1px solid #f0f0f0; transition: all 0.2s; }
.todos-approval-card:hover { border-color: #d0e0ff; }
.todos-approval-card:last-child { margin-bottom: 0; }
.todos-approval-card-header { margin-bottom: 8px; }
.todos-approval-type { font-size: 12px; color: #8c8c8c; }
.todos-approval-card-body { font-size: 13px; color: #595959; margin-bottom: 10px; }
.todos-approval-status { display: flex; align-items: center; gap: 6px; color: #8c8c8c; }
.todos-approval-card-actions { padding-top: 10px; border-top: 1px solid #f0f0f0; }
.todos-approval-hint { font-size: 12px; color: #bfbfbf; display: flex; align-items: center; gap: 4px; }
.todos-approval-reject-reason { margin-top: 8px; padding: 8px 12px; color: #ff4d4f; background: #fff2f0; border-radius: 6px; font-size: 12px; line-height: 1.5; }

.todos-loading { text-align: center; padding: 60px; color: #8c8c8c; }
.todos-loading i { font-size: 36px; color: #1890ff; margin-bottom: 12px; display: block; }
.todos-empty { }

/* 弹窗组件 */
.dismiss-dialog { padding: 0; }
.dismiss-dialog-desc { font-size: 13px; color: #595959; margin-bottom: 12px; display: flex; align-items: center; gap: 6px; }
.dismiss-reason-textarea { width: 100%; min-height: 80px; padding: 10px 12px; border: 1px solid #d9d9d9; border-radius: 6px; font-size: 13px; font-family: inherit; resize: vertical; box-sizing: border-box; }
.dismiss-reason-textarea:focus { border-color: #1890ff; outline: none; }
.dismiss-dialog-error { color: #ff4d4f; font-size: 12px; margin-top: 6px; }
.dismiss-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }

.confirm-dialog { padding: 0; }
.confirm-dialog-desc { font-size: 13px; color: #8c8c8c; margin-bottom: 16px; }
.confirm-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; }

/* ==================== 全局/通用样式增强 ==================== */

/* 轮廓按钮 */
.btn-outline { background: #fff; border: 1px solid #d9d9d9; color: #595959; }
.btn-outline:hover { border-color: #1890ff; color: #1890ff; background: #fff; }

/* 文字按钮 */
.btn-text { background: none; border: none; color: #8c8c8c; padding: 4px 10px; font-size: 12px; border-radius: 4px; cursor: pointer; transition: all 0.2s; }
.btn-text:hover { color: #1890ff; background: #f0f5ff; }

/* 标签 */
.tag-critical { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; background: #fff1f0; color: #ff4d4f; font-weight: 500; }
.tag-warning { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; background: #fffbe6; color: #faad14; font-weight: 500; }

/* ===== 执行人评价面板 (my-evaluation) V3 Phase 3 ===== */

.my-evaluation-page { padding: 20px 24px; max-width: 960px; margin: 0 auto; }

/* ---- 通用区块 ---- */
.me-section { background: #fff; border: 1px solid #f0f0f0; border-radius: 12px; padding: 20px 24px; margin-bottom: 16px; }
.me-section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.me-section-header h4 { margin: 0; font-size: 15px; font-weight: 600; color: #333; display: flex; align-items: center; gap: 8px; }
.me-section-hint { font-size: 11px; color: #999; }

/* ---- 空状态 ---- */
.me-empty { text-align: center; padding: 60px 20px; color: #333; }
.me-empty h4 { margin: 0 0 8px; font-size: 16px; font-weight: 500; }
.me-empty p { margin: 0 0 16px; font-size: 13px; }
.me-link-btn {
    display: inline-block; padding: 8px 16px; background: #149ebb; color: #fff;
    border-radius: 6px; font-size: 13px; text-decoration: none; cursor: pointer;
}
.me-link-btn:hover { background: #107d96; }

/* ---- 活动选择器 ---- */
.me-selector-section { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.me-selector-label { font-size: 14px; font-weight: 500; color: #333; white-space: nowrap; }
.me-selector {
    flex: 1; min-width: 240px; padding: 8px 12px; border: 1px solid #d9d9d9; border-radius: 8px;
    font-size: 13px; background: #fff; cursor: pointer; color: #333;
}
.me-selector:focus { border-color: #149ebb; outline: none; }

/* ---- 综合分展示 ---- */
.me-overview-section { background: linear-gradient(135deg, #f0f9ff 0%, #f8fcff 100%); border-color: #bae7ff; }
.me-overview-card { display: flex; align-items: center; gap: 32px; flex-wrap: wrap; }
.me-overview-left { text-align: center; min-width: 120px; }
.me-overview-label { font-size: 13px; color: #6c757d; margin-bottom: 4px; }
.me-overview-score { font-size: 48px; font-weight: 700; line-height: 1; }
.me-overview-grade { margin-top: 8px; }
.me-grade-badge { display: inline-block; padding: 3px 12px; border-radius: 12px; font-size: 13px; font-weight: 500; }
.me-overview-right { flex: 1; }
.me-overview-dim-scores { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.me-dim-mini { text-align: center; }
.me-dim-mini-label { display: block; font-size: 11px; color: #999; margin-bottom: 4px; }
.me-dim-mini-score { display: block; font-size: 20px; font-weight: 600; color: #333; }
.me-dim-mini-grade { display: block; font-size: 12px; font-weight: 500; margin-top: 2px; }

/* ---- 雷达图 ---- */
.me-radar-container { max-width: 480px; margin: 0 auto; }

/* ---- 趋势箭头 ---- */
.me-trend-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.me-trend-card {
    background: #fafafa; border: 1px solid #f0f0f0; border-radius: 10px;
    padding: 16px; text-align: center;
}
.me-trend-card-label { font-size: 12px; color: #8c8c8c; margin-bottom: 6px; }
.me-trend-card-change { font-size: 26px; font-weight: 700; margin-bottom: 6px; }
.me-trend-card-values { font-size: 11px; color: #999; display: flex; justify-content: center; gap: 8px; }
.me-trend-cur { color: #333; }
.me-trend-prev { color: #bfbfbf; }

/* ---- 趋势折线图 ---- */
.me-dim-switch-bar { display: flex; gap: 8px; margin-bottom: 12px; }
.me-dim-switch-btn {
    padding: 6px 16px; border: 1px solid #d9d9d9; border-radius: 20px;
    background: #fff; font-size: 12px; color: #666; cursor: pointer;
    transition: all 0.2s;
}
.me-dim-switch-btn:hover { border-color: #1890ff; color: #1890ff; }
.me-dim-switch-btn.active { background: #1890ff; color: #fff; border-color: #1890ff; }
.me-trend-chart-container { position: relative; height: 240px; }

/* ---- AI 建议 ---- */
.me-suggestions-list { display: flex; flex-direction: column; gap: 12px; }
.me-suggestion-item {
    background: #fafaff; border: 1px solid #e8e8ff; border-radius: 10px; padding: 14px 16px;
}
.me-suggestion-problem { font-size: 13px; color: #333; margin-bottom: 6px; line-height: 1.5; }
.me-suggestion-advice { font-size: 13px; color: #722ed1; line-height: 1.5; }

/* ---- 评分依据 ---- */
.me-basis-toggle {
    cursor: pointer; padding: 10px 16px; background: #fafafa; border-radius: 8px;
    font-size: 13px; color: #666; user-select: none; transition: background 0.2s;
}
.me-basis-toggle:hover { background: #f0f0f0; }
.me-basis-body { margin-top: 12px; }
.me-basis-content { display: flex; flex-direction: column; gap: 12px; }
.me-basis-dim-row {
    background: #fafafa; border: 1px solid #f0f0f0; border-radius: 10px; padding: 12px 16px;
}
.me-basis-dim-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.me-basis-dim-name { font-size: 14px; font-weight: 600; color: #333; }
.me-basis-dim-score { font-size: 13px; font-weight: 500; }
.me-basis-dim-data { font-size: 12px; color: #666; margin-bottom: 4px; line-height: 1.5; }
.me-basis-dim-formula { font-size: 12px; color: #999; line-height: 1.5; }
.me-basis-formula-summary {
    padding: 10px 16px; background: #e6f7ff; border: 1px solid #91d5ff;
    border-radius: 8px; font-size: 13px; color: #0050b3; text-align: center; font-weight: 500;
}
.me-basis-breakdown { font-size: 12px; color: #666; text-align: center; }

/* ---- 响应式 ---- */
@media (max-width: 768px) {
    .my-evaluation-page { padding: 12px; }
    .me-overview-card { flex-direction: column; gap: 16px; }
    .me-overview-dim-scores { grid-template-columns: repeat(2, 1fr); }
    .me-trend-cards { grid-template-columns: repeat(2, 1fr); }
    .me-radar-container { max-width: 100%; }
}

/* 响应式补充 */
@media (max-width: 768px) {
    .group-overview-grid { grid-template-columns: 1fr; }
    .marketing-stats { flex-direction: column; }
    .group-overview-stats { flex-direction: column; }
    .todos-stats-row { flex-direction: column; }
    .marketing-stat-card { min-width: auto; }
    .group-overview-stat-card { min-width: auto; }
    .todos-stat-card { min-width: auto; }
}

/* ===== 执行人工具箱 V3 Phase 3: 7×3 日历网格 ===== */

/* ---- 日历网格容器 ---- */
.calendar-grid {
    display: grid;
    grid-template-columns: 52px repeat(7, 1fr);
    grid-template-rows: auto repeat(3, 1fr);
    gap: 4px;
    margin-top: 12px;
}

.calendar-col-header {
    text-align: center;
    padding: 8px 4px;
    font-size: 12px;
    background: #fafafa;
    border-radius: 6px 6px 0 0;
    font-weight: 500;
    color: #595959;
}
.calendar-col-header.calendar-col-corner {
    background: transparent;
}
.calendar-col-header.calendar-today-header {
    background: #e6f7ff;
    color: #1890ff;
    font-weight: 700;
}
.calendar-day-name {
    display: block;
    font-size: 13px;
}
.calendar-day-date {
    display: block;
    font-size: 11px;
    color: #8c8c8c;
    margin-top: 2px;
}

/* ---- 行头（时段标签）---- */
.calendar-row-header {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    color: #8c8c8c;
    background: #fafafa;
    border-radius: 4px;
    padding: 4px;
    writing-mode: horizontal-tb;
    font-weight: 500;
}

/* ---- 日历格子 ---- */
.calendar-cell {
    min-height: 100px;
    background: #fafafa;
    border: 1px solid #f0f0f0;
    border-radius: 6px;
    padding: 4px;
    transition: background 0.2s, border-color 0.2s, box-shadow 0.2s;
    display: flex;
    flex-direction: column;
}
.calendar-cell:hover {
    background: #f5f9ff;
    border-color: #d0e0ff;
}
.calendar-cell.calendar-cell-today {
    background: #f0f9ff;
    border-color: #bae7ff;
}
.calendar-cell-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-height: 80px;
}
.calendar-cell-empty {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    color: #d9d9d9;
    border: 1px dashed #e8e8e8;
    border-radius: 4px;
    margin: 2px;
    min-height: 40px;
}

/* ---- 任务卡片（网格版）---- */
.task-card {
    background: #fff;
    border-radius: 6px;
    padding: 6px 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.06);
    cursor: pointer;
    transition: box-shadow 0.15s, transform 0.15s;
    font-size: 12px;
    position: relative;
}
.task-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}
.task-card.et-card-completed {
    opacity: 0.7;
}
.task-card-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 4px;
    margin-bottom: 2px;
}
.task-card-title {
    font-weight: 600;
    color: #333;
    line-height: 1.35;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---- 活动类型标签 ---- */
.task-card-badge {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 3px;
    font-size: 10px;
    font-weight: 500;
    margin: 2px 0;
}

/* ---- 活动名称 ---- */
.task-card-activity {
    display: block;
    font-size: 10px;
    color: #8c8c8c;
    margin: 1px 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---- 卡片元信息 ---- */
.task-card-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: #8c8c8c;
    margin: 3px 0;
    flex-wrap: wrap;
}
.task-card-assignee {
    color: #595959;
}
.task-card-due {
    color: #bfbfbf;
}

/* ---- 队友头像行 ---- */
.task-card-teammates {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: #1890ff;
    cursor: pointer;
    padding: 2px 0;
    user-select: none;
}
.task-card-teammates:hover {
    color: #40a9ff;
    text-decoration: underline;
}

/* ---- 卡片状态 ---- */
.task-card-status {
    font-size: 10px;
    margin: 2px 0;
}

/* ---- 卡片操作按钮 ---- */
.task-card-actions {
    display: flex;
    gap: 4px;
    margin-top: 4px;
    flex-wrap: wrap;
}

/* ---- 拖拽态 ---- */
.task-ghost {
    opacity: 0.35;
    background: #e6f7ff !important;
    border: 2px dashed #1890ff !important;
}
.task-dragging {
    opacity: 0.7;
    box-shadow: 0 4px 16px rgba(0,0,0,0.15) !important;
    transform: rotate(2deg);
}

/* ---- 队友弹窗 ---- */
.teammates-popover {
    position: fixed;
    z-index: 10000;
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    box-shadow: 0 6px 24px rgba(0,0,0,0.12);
    width: 260px;
    max-height: 360px;
    overflow-y: auto;
    padding: 12px;
}
.teammates-popover-header {
    font-size: 13px;
    font-weight: 600;
    color: #333;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid #f0f0f0;
}
.teammates-popover-item {
    padding: 8px 0;
    border-bottom: 1px solid #fafafa;
}
.teammates-popover-item:last-child {
    border-bottom: none;
}
.teammates-popover-name {
    font-size: 13px;
    font-weight: 500;
    color: #333;
    margin-bottom: 2px;
}
.teammates-popover-stats {
    font-size: 11px;
    color: #8c8c8c;
    margin-bottom: 4px;
}
.teammates-popover-tasks {
    font-size: 11px;
    color: #595959;
    line-height: 1.5;
}
.teammates-popover-loading,
.teammates-popover-empty,
.teammates-popover-error {
    text-align: center;
    padding: 20px 12px;
    font-size: 12px;
    color: #8c8c8c;
}
.teammates-popover-error {
    color: #ff4d4f;
}

/* ---- 响应式：小屏 7 列紧凑 ---- */
@media (max-width: 1024px) {
    .calendar-grid {
        grid-template-columns: 40px repeat(7, 1fr);
        gap: 2px;
    }
    .calendar-col-header {
        padding: 4px 2px;
        font-size: 10px;
    }
    .calendar-day-name {
        font-size: 11px;
    }
    .calendar-day-date {
        font-size: 10px;
    }
    .calendar-cell {
        min-height: 72px;
        padding: 2px;
    }
    .task-card {
        padding: 4px 5px;
        font-size: 11px;
    }
    .task-card-title {
        font-size: 11px;
    }
    .calendar-row-header {
        font-size: 10px;
        padding: 2px;
    }
}

/* ================================================================
   6-Tab 活动详情页（B1 Detail Page v2）
   前缀：ad- (activity detail)
   ================================================================ */

/* ---- 容器 & 加载/空状态 ---- */
.activity-detail-v2 {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: #f5f6f8;
    position: relative;
}

.ad-loading,
.ad-loading-sm {
    text-align: center;
    padding: 40px 16px;
    color: #8c8c8c;
    font-size: 14px;
}
.ad-loading-sm { padding: 20px 10px; font-size: 13px; }
.ad-loading i,
.ad-loading-sm i { margin-right: 6px; color: #1890ff; }

.ad-empty {
    text-align: center;
    padding: 48px 20px;
    color: #8c8c8c;
}
.ad-empty i { font-size: 42px; color: #d9d9d9; display: block; margin-bottom: 12px; }
.ad-empty p { margin: 4px 0; font-size: 14px; }
.ad-empty-icon { font-size: 48px !important; color: #d9d9d9 !important; display: block !important; margin-bottom: 12px !important; }

/* ---- 顶部返回栏 ---- */
.ad-top-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 20px;
    background: #fff;
    border-bottom: 1px solid #f0f0f0;
}
.ad-back-btn {
    width: 36px; height: 36px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    background: #fff;
    color: #595959;
    cursor: pointer;
    font-size: 15px;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.2s;
}
.ad-back-btn:hover { border-color: #1890ff; color: #1890ff; background: #f0f8ff; }
.ad-top-info { display: flex; align-items: baseline; gap: 8px; }
.ad-title { font-size: 16px; font-weight: 600; color: #1a1a1a; }
.ad-id { font-size: 12px; color: #bfbfbf; font-family: monospace; }

/* ---- 活动信息卡片 ---- */
.ad-info-card {
    margin: 16px 20px 0;
    padding: 20px;
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
}
.ad-info-main {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}
.ad-activity-name { margin: 0; font-size: 20px; font-weight: 700; color: #1a1a1a; }

.ad-info-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-bottom: 8px;
}
.ad-meta-item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #595959;
}
.ad-meta-item i { color: #bfbfbf; font-size: 12px; width: 14px; text-align: center; }
.ad-meta-label { font-size: 11px; color: #bfbfbf; margin-right: 2px; }
.ad-meta-value { font-weight: 500; color: #333; }
.ad-info-desc { margin-top: 10px; padding-top: 10px; border-top: 1px solid #f5f5f5; }
.ad-info-desc p { margin: 0; font-size: 13px; color: #595959; line-height: 1.6; }

/* ---- 状态徽章 ---- */
.ad-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 12px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 500;
}
.status-planning { background: #f0f5ff; color: #1890ff; }
.status-pending { background: #fffbe6; color: #faad14; }
.status-rejected { background: #fff1f0; color: #ff4d4f; }
.status-running { background: #e6f7ff; color: #1677ff; }
.status-ended { background: #f6ffed; color: #52c41a; }
.status-reviewed { background: #f9f0ff; color: #722ed1; }
.status-archived { background: #f5f5f5; color: #8c8c8c; }

/* ---- TabBar ---- */
.ad-tab-bar {
    display: flex;
    margin: 0 20px;
    background: #fff;
    border-bottom: 1px solid #e8e8e8;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.ad-tab-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 12px 18px;
    border: none;
    border-bottom: 3px solid transparent;
    background: transparent;
    font-size: 13px;
    color: #8c8c8c;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.2s;
    font-weight: 400;
}
.ad-tab-btn:hover:not(.ad-tab-disabled) {
    color: #1890ff;
    background: #fafafa;
}
.ad-tab-active {
    font-weight: 600;
    background: #fafafa;
}
.ad-tab-disabled {
    color: #d9d9d9 !important;
    cursor: not-allowed;
    opacity: 0.6;
}
.ad-tab-lock {
    font-size: 10px;
    margin-left: 2px;
    color: #d9d9d9;
}

/* ---- Tab 内容区 ---- */
.ad-tab-content {
    flex: 1;
    overflow-y: auto;
    margin: 0 20px 0;
    padding: 16px 0;
}
.ad-section-divider {
    border: none;
    border-top: 1px solid #f0f0f0;
    margin: 20px 0;
}

/* ---- 底部操作栏 ---- */
.ad-actions-bar {
    display: flex;
    gap: 10px;
    padding: 14px 20px;
    background: #fff;
    border-top: 1px solid #e8e8e8;
    justify-content: flex-start;
    flex-shrink: 0;
}

/* ==================== Info Tab: 策划编辑 ==================== */

.ad-info-tab {
    max-width: 900px;
}
.ad-plan-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}
.ad-plan-header h3 { margin: 0; font-size: 16px; color: #333; display: flex; align-items: center; gap: 8px; }
.ad-plan-header-actions { display: flex; gap: 8px; }
.ad-plan-readonly-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 12px;
    background: #fffbe6;
    border: 1px solid #ffe58f;
    border-radius: 6px;
    font-size: 12px;
    color: #d48806;
}

/* 子步骤卡片 */
.ad-plan-sub-steps {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.ad-plan-sub-step {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 8px;
    overflow: hidden;
    transition: border-color 0.2s;
}
.ad-plan-sub-step:hover { border-color: #d0e0ff; }
.ad-plan-sub-step.sub-filled { border-left: 3px solid #52c41a; }

.ad-plan-sub-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    cursor: pointer;
    user-select: none;
    background: #fafafa;
    transition: background 0.15s;
}
.ad-plan-sub-header:hover { background: #f0f5ff; }
.ad-plan-sub-title {
    display: flex;
    align-items: center;
    gap: 10px;
}
.ad-plan-sub-num {
    width: 24px; height: 24px;
    background: #f0f0f0;
    color: #8c8c8c;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 600;
}
.ad-plan-sub-icon { color: #1890ff; font-size: 14px; width: 16px; text-align: center; }
.ad-plan-sub-name { font-weight: 600; font-size: 14px; color: #333; }
.ad-plan-sub-desc { font-size: 12px; color: #bfbfbf; margin-left: 8px; }
.ad-plan-sub-indicator {
    display: flex;
    align-items: center;
    gap: 10px;
}
.ad-plan-filled-badge {
    padding: 2px 8px;
    background: #f6ffed;
    color: #52c41a;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
}
.ad-plan-empty-badge {
    padding: 2px 8px;
    background: #fafafa;
    color: #d9d9d9;
    border-radius: 10px;
    font-size: 11px;
}
.ad-plan-toggle-icon {
    color: #bfbfbf;
    font-size: 12px;
    transition: transform 0.2s;
}
.ad-plan-sub-body { padding: 14px 16px; border-top: 1px solid #f0f0f0; }
.ad-plan-sub-body.ad-collapsed { display: none; }

.ad-plan-fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 20px;
}
.ad-plan-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.ad-field-label {
    font-size: 12px;
    font-weight: 500;
    color: #8c8c8c;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.ad-field-value-readonly {
    font-size: 14px;
    color: #333;
    padding: 6px 0;
    border-bottom: 1px solid #f0f0f0;
}
.ad-empty-value { color: #d9d9d9; font-style: italic; }

.ad-field-input {
    padding: 8px 12px;
    border: 1px solid #d9d9d9;
    border-radius: 6px;
    font-size: 14px;
    transition: border-color 0.2s;
    background: #fff;
}
.ad-field-input:focus { border-color: #1890ff; outline: none; box-shadow: 0 0 0 2px rgba(24,144,255,0.1); }
.ad-field-textarea {
    min-height: 64px;
    resize: vertical;
    font-family: inherit;
}

/* AI 操作区 */
.ad-plan-ai-actions {
    display: flex;
    gap: 8px;
    margin-top: 16px;
    padding: 12px 16px;
    background: #fafafa;
    border-radius: 8px;
    border: 1px solid #f0f0f0;
}

/* ==================== Info Tab: 审批时间线 ==================== */

.ad-approve-section h4 {
    margin: 0 0 12px 0;
    font-size: 15px;
    color: #333;
    display: flex; align-items: center; gap: 8px;
}
.ad-approve-timeline {
    position: relative;
    padding-left: 8px;
}
.ad-approve-node {
    display: flex;
    gap: 14px;
    padding: 0 0 20px 0;
    position: relative;
}
.ad-approve-node::after {
    content: '';
    position: absolute;
    left: 15px;
    top: 32px;
    bottom: 0;
    width: 2px;
    background: #e8e8e8;
}
.ad-approve-node:last-child::after { display: none; }
.ad-approve-dot {
    width: 32px; height: 32px;
    border-radius: 50%;
    background: #f5f5f5;
    color: #bfbfbf;
    display: flex; align-items: center; justify-content: center;
    font-size: 13px;
    flex-shrink: 0;
    z-index: 1;
}
.ad-approve-node.approved .ad-approve-dot { background: #52c41a; color: #fff; }
.ad-approve-node.rejected .ad-approve-dot { background: #ff4d4f; color: #fff; }
.ad-approve-node.pending .ad-approve-dot { background: #faad14; color: #fff; }

.ad-approve-body { flex: 1; padding-top: 4px; }
.ad-approve-title { font-size: 14px; font-weight: 500; color: #333; }
.ad-approve-meta {
    display: flex; gap: 12px;
    font-size: 12px; color: #bfbfbf; margin-top: 2px;
}
.ad-approve-comment {
    margin-top: 6px;
    padding: 8px 12px;
    background: #fafafa;
    border-radius: 6px;
    font-size: 13px;
    color: #595959;
    line-height: 1.5;
}
.ad-approve-reject-reason {
    margin-top: 4px;
    font-size: 12px;
    color: #ff4d4f;
}

/* ==================== Execute Tab ==================== */

.ad-execute-tab { max-width: 960px; }
.ad-execute-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}
.ad-execute-header h3 { margin: 0; font-size: 16px; color: #333; display: flex; align-items: center; gap: 8px; }
.ad-execute-stats { display: flex; gap: 16px; }
.ad-execute-stat { text-align: center; }
.ad-execute-stat .stat-value { font-size: 22px; font-weight: 700; color: #333; line-height: 1.2; }
.ad-execute-stat .stat-label { font-size: 11px; color: #bfbfbf; display: block; margin-top: 2px; }

.ad-execute-actions {
    display: flex; gap: 8px; margin-bottom: 14px;
}
.ad-execute-table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 8px;
    overflow: hidden;
    font-size: 13px;
}
.ad-execute-table th {
    background: #fafafa;
    padding: 10px 14px;
    border-bottom: 1px solid #e8e8e8;
    font-weight: 600;
    color: #333;
    text-align: left;
    white-space: nowrap;
}
.ad-execute-table td {
    padding: 10px 14px;
    border-bottom: 1px solid #f0f0f0;
    vertical-align: middle;
    color: #595959;
}
.ad-execute-table tr:last-child td { border-bottom: none; }
.ad-task-name { font-weight: 500; color: #333; }

/* ==================== Execute Tab V2 三区域增强 ==================== */

.ad-execute-v2 {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* --- 公用块 --- */
.ad-execute-v2-block {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    overflow: hidden;
}
.ad-execute-v2-panel-inner {
    padding: 16px 20px;
}
.ad-execute-v2-panel-hd {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid #f0f0f0;
}
.ad-execute-v2-panel-hd h4 {
    margin: 0;
    font-size: 14px;
    color: #333;
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1;
}
.ad-execute-v2-badge {
    font-size: 12px;
    padding: 2px 8px;
    border-radius: 10px;
    background: #f5f5f5;
    color: #8c8c8c;
    font-weight: 500;
}
.ad-execute-v2-badge-warn {
    background: #fff1f0;
    color: #ff4d4f;
}
.ad-execute-v2-badge-ok {
    background: #f6ffed;
    color: #52c41a;
}
.ad-execute-v2-error {
    padding: 32px 20px;
    text-align: center;
    color: #8c8c8c;
}
.ad-execute-v2-error i { font-size: 28px; display: block; margin-bottom: 8px; color: #d9d9d9; }
.ad-execute-v2-error p { margin: 0; font-size: 13px; }

/* --- 区域1：双栏布局 --- */
.ad-execute-v2-row1 {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 16px;
    align-items: start;
}
.ad-execute-v2-alerts {
    min-height: 200px;
}
.ad-execute-v2-tasks {
    min-height: 300px;
}

/* --- 预警卡片 --- */
.ad-alerts-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}
.ad-alert-card {
    text-align: center;
    padding: 14px 10px;
    border-radius: 8px;
    background: #fafafa;
    border: 1px solid #f0f0f0;
    transition: box-shadow 0.2s;
}
.ad-alert-card:hover {
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.ad-alert-card--urgent {
    border-color: #ffccc7;
    background: #fff;
}
.ad-alert-card-icon-wrap {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 8px;
    font-size: 16px;
}
.ad-alert-card-value {
    font-size: 26px;
    font-weight: 700;
    line-height: 1.2;
}
.ad-alert-card-label {
    font-size: 12px;
    color: #8c8c8c;
    margin-top: 2px;
}

/* --- 待办列表 --- */
.ad-task-list-empty {
    text-align: center;
    padding: 28px 20px;
    color: #bfbfbf;
}
.ad-task-list-empty p { margin: 8px 0 12px; font-size: 13px; }
.ad-task-list-body {
    max-height: 420px;
    overflow-y: auto;
}
.ad-task-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid #f5f5f5;
    gap: 12px;
}
.ad-task-row:last-child { border-bottom: none; }
.ad-task-row--done { opacity: 0.55; }
.ad-task-row--overdue { background: #fff2f0; margin: 0 -20px; padding-left: 20px; padding-right: 20px; border-radius: 4px; }
.ad-task-row-main { flex: 1; min-width: 0; }
.ad-task-row-main .ad-task-name {
    font-size: 13px;
    font-weight: 500;
    color: #333;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 320px;
}
.ad-task-row--done .ad-task-name { color: #bbb; text-decoration: line-through; }
.ad-task-meta {
    display: flex;
    gap: 12px;
    margin-top: 4px;
    font-size: 12px;
    color: #8c8c8c;
}
.ad-task-meta-item { display: flex; align-items: center; gap: 4px; white-space: nowrap; }
.ad-task-meta-item i { font-size: 11px; width: 14px; }
.ad-task-row-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.ad-task-status {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 500;
    white-space: nowrap;
}
.ad-task-status--pending  { background: #f5f5f5; color: #8c8c8c; }
.ad-task-status--running  { background: #e6f7ff; color: #1890ff; }
.ad-task-status--done    { background: #f6ffed; color: #52c41a; }
.ad-task-status--overdue { background: #fff1f0; color: #ff4d4f; }
.ad-task-status--today   { background: #fff7e6; color: #fa8c16; }
.ad-task-done-btn {
    width: 24px; height: 24px; padding: 0;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; border-radius: 50%;
}
.ad-task-add-btn { width: 24px; height: 24px; padding: 0; font-size: 11px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; }

/* --- 区域2/3：全宽 --- */
.ad-execute-v2-toolbox,
.ad-execute-v2-dashboard {
    min-height: 200px;
}
/* 工具箱内嵌时：压缩顶部选择栏 */
.ad-execute-v2-toolbox .et-page {
    padding: 0;
}
.ad-execute-v2-toolbox .et-topbar {
    padding: 12px 20px;
    background: #fafafa;
    border-bottom: 1px solid #f0f0f0;
}
/* 工具箱「仅看我的」Toggle */
.et-only-mine-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #595959;
    cursor: pointer;
    user-select: none;
    margin-right: 12px;
}
.et-only-mine-toggle input[type="checkbox"] {
    accent-color: #1890ff;
    width: 16px;
    height: 16px;
    cursor: pointer;
}
/* 看板内嵌时：隐藏全宽页头（由外层 panel-hd 替代） */
.ad-execute-v2-dashboard .exec-dash-header {
    display: none;
}
.ad-execute-v2-dashboard .exec-dash {
    padding: 0;
}

/* --- 响应式 --- */
@media (max-width: 768px) {
    .ad-execute-v2-row1 {
        grid-template-columns: 1fr;
    }
    .ad-alerts-cards {
        grid-template-columns: 1fr 1fr;
    }
}

/* ==================== 执行工具箱：我的待办任务（默认视图） ==================== */

.et-my-tasks-view {
    padding: 16px 4px;
}
.et-my-tasks-heading {
    font-size: 15px;
    font-weight: 600;
    color: #333;
    margin: 0 0 16px 0;
    padding-left: 4px;
}

.et-my-task-group {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    margin-bottom: 14px;
    overflow: hidden;
}
.et-my-task-group-header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    background: #fafafa;
    border-bottom: 1px solid #f0f0f0;
    font-size: 13px;
    flex-wrap: wrap;
}
.et-my-task-group-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
}
.et-my-task-group-name {
    font-weight: 600;
    color: #1a1a1a;
}
.et-my-task-group-count {
    color: #8c8c8c;
    font-size: 12px;
}
.et-my-task-group-tasks {
    padding: 10px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.et-my-task-group-tasks .task-card {
    flex: 0 0 260px;
    max-width: 280px;
}

/* ==================== Review Tab ==================== */

.ad-review-tab { max-width: 900px; }
.ad-review-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}
.ad-review-header h3 { margin: 0; font-size: 16px; color: #333; display: flex; align-items: center; gap: 8px; }
.ad-review-header-actions { display: flex; gap: 8px; }

.ad-review-section {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    padding: 20px;
    margin-bottom: 16px;
}
.ad-review-section h4 {
    margin: 0 0 14px 0;
    font-size: 14px;
    color: #333;
    display: flex; align-items: center; gap: 8px;
    padding-bottom: 10px;
    border-bottom: 1px solid #f0f0f0;
}
.ad-review-goals {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}
.ad-review-goal-card {
    text-align: center;
    padding: 14px 12px;
    background: #fafafa;
    border-radius: 8px;
    border: 1px solid #f0f0f0;
}
.ad-review-goal-card .goal-label { font-size: 12px; color: #8c8c8c; margin-bottom: 6px; }
.ad-review-goal-card .goal-value { font-size: 22px; font-weight: 700; color: #333; }

.ad-review-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* ==================== Publish Tab ==================== */

.ad-publish-tab { max-width: 960px; }
.ad-publish-section {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    padding: 0;
    margin-bottom: 16px;
    overflow: hidden;
}
.ad-publish-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 20px;
    background: #fafafa;
    border-bottom: 1px solid #f0f0f0;
}
.ad-publish-section-header h4 { margin: 0; font-size: 14px; color: #333; display: flex; align-items: center; gap: 8px; }

.ad-publish-queue-table-wrap { padding: 0; }
.ad-publish-table { border-radius: 0; border: none; }
.ad-publish-table th { white-space: nowrap; }

/* 模板选择弹窗 */
.ad-template-item {
    padding: 12px 14px;
    border: 1px solid #e8e8e8;
    border-radius: 8px;
    margin-bottom: 8px;
    cursor: pointer;
    transition: all 0.15s;
}
.ad-template-item:hover { border-color: #1890ff; background: #f0f8ff; }
.ad-template-name { font-size: 14px; font-weight: 500; color: #333; margin-bottom: 4px; }
.ad-template-desc { font-size: 12px; color: #8c8c8c; }

/* 发布表单 */
.ad-task-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.ad-task-form .form-group { margin: 0; }
.ad-task-form .form-group label { display: block; margin-bottom: 4px; font-size: 13px; font-weight: 500; color: #333; }

/* ==================== Meeting Tab: 会议管理样式 ==================== */

.meeting-room-loading {
    text-align: center;
    padding: 48px 16px;
    color: #8c8c8c;
    font-size: 14px;
}
.meeting-room-loading i { margin-right: 6px; color: #fa8c16; }

.meeting-room-page { max-width: 960px; }

.meeting-room-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
}
.meeting-room-header h3 { margin: 0; font-size: 16px; color: #333; display: flex; align-items: center; gap: 8px; }

/* 会议列表 */
.meeting-list { display: flex; flex-direction: column; gap: 10px; }

.meeting-card {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    padding: 16px;
    cursor: pointer;
    transition: box-shadow 0.2s, border-color 0.2s;
    border-left: 4px solid #e8e8e8;
}
.meeting-card:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.06); border-color: #d0e0ff; }
.meeting-card.status-planned { border-left-color: #faad14; }
.meeting-card.status-live { border-left-color: #1890ff; }
.meeting-card.status-done { border-left-color: #52c41a; }
.meeting-card.status-archived { border-left-color: #d9d9d9; }

.meeting-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
.meeting-type-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    background: #f0f5ff;
    color: #1890ff;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 500;
}
.meeting-status {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
}
.meeting-status.status-planned { background: #fffbe6; color: #d48806; }
.meeting-status.status-live { background: #e6f7ff; color: #1677ff; }
.meeting-status.status-done { background: #f6ffed; color: #389e0d; }
.meeting-status.status-archived { background: #f5f5f5; color: #8c8c8c; }

.meeting-card-body { }
.meeting-title { font-size: 15px; font-weight: 600; color: #1a1a1a; margin-bottom: 6px; }
.meeting-meta { font-size: 12px; color: #8c8c8c; display: flex; gap: 14px; flex-wrap: wrap; }
.meeting-meta span { display: inline-flex; align-items: center; gap: 4px; }

/* 会议详情面板 */
.meeting-detail-panel {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    padding: 20px;
    margin-bottom: 16px;
}
.meeting-detail-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid #f0f0f0;
}
.meeting-detail-header h3 { margin: 0; font-size: 17px; color: #1a1a1a; }
.meeting-detail-actions { display: flex; gap: 6px; flex-wrap: wrap; }

.meeting-detail-fields { display: flex; flex-direction: column; gap: 12px; }
.meeting-field { display: flex; flex-direction: column; gap: 4px; }
.meeting-field label { font-size: 12px; color: #8c8c8c; font-weight: 500; }
.meeting-field div { font-size: 14px; color: #333; line-height: 1.6; }

.meeting-ai-block {
    padding: 12px 14px;
    background: linear-gradient(135deg, #f0f8ff, #f0f5ff);
    border: 1px solid #d0e0ff;
    border-radius: 8px;
    margin-bottom: 14px;
}
.meeting-ai-block strong { font-size: 13px; color: #1890ff; display: block; margin-bottom: 6px; }
.meeting-ai-block p,
.meeting-ai-block pre { font-size: 13px; color: #333; line-height: 1.7; margin: 0; white-space: pre-wrap; font-family: inherit; }

/* 创建会议表单 */
.meeting-create-panel {
    background: #fff;
    border: 1px solid #e8e8e8;
    border-radius: 10px;
    padding: 20px;
    margin-bottom: 16px;
}
.meeting-create-panel h4 { margin: 0 0 14px 0; font-size: 15px; color: #333; }
.meeting-form-actions { display: flex; gap: 8px; margin-top: 16px; padding-top: 14px; border-top: 1px solid #f0f0f0; }

/* ==================== 响应式 ==================== */

@media (max-width: 768px) {
    .ad-info-meta { gap: 10px; }
    .ad-meta-item { font-size: 12px; }
    .ad-tab-btn { padding: 10px 12px; font-size: 12px; }
    .ad-plan-fields { grid-template-columns: 1fr; }
    .ad-review-goals { grid-template-columns: 1fr 1fr; }
    .ad-execute-stats { gap: 10px; flex-wrap: wrap; }
    .ad-execute-table { font-size: 12px; }
    .ad-execute-table th,
    .ad-execute-table td { padding: 8px 10px; }
    .ad-actions-bar { flex-wrap: wrap; }
    .ad-top-bar { padding: 10px 14px; }
    .ad-info-card { margin: 10px 14px 0; padding: 14px; }
    .ad-tab-bar { margin: 0 14px; }
    .ad-tab-content { margin: 0 14px 0; padding: 10px 0; }
    .meeting-detail-header { flex-direction: column; gap: 10px; }
    .meeting-detail-actions { width: 100%; }
    .meeting-card-header { flex-wrap: wrap; gap: 6px; }
}

/* ---- 工具辅助类兼容 ---- */
.mr-1 { margin-right: 4px !important; }
.mr-2 { margin-right: 8px !important; }

/* ===== A-M2 AI 智能策划入口横幅 ===== */
.create-v3-ai-planner-banner {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    margin: 0 0 20px 0;
    background: linear-gradient(135deg, #f0f5ff 0%, #e6f7ff 100%);
    border: 1px solid #91d5ff;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(24, 144, 255, 0.08);
}
.create-v3-ai-planner-banner .ai-planner-icon {
    font-size: 36px;
    flex-shrink: 0;
}
.create-v3-ai-planner-banner .ai-planner-content {
    flex: 1;
}
.create-v3-ai-planner-banner .ai-planner-content h4 {
    margin: 0 0 4px 0;
    font-size: 16px;
    font-weight: 600;
    color: #1a1a1a;
}
.create-v3-ai-planner-banner .ai-planner-content p {
    margin: 0;
    font-size: 13px;
    color: #595959;
}
.ai-planner-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 24px;
    background: linear-gradient(135deg, #1890ff, #40a9ff);
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.2s;
    box-shadow: 0 2px 8px rgba(24, 144, 255, 0.3);
}
.ai-planner-btn:hover {
    background: linear-gradient(135deg, #1677cc, #3399e6);
    box-shadow: 0 4px 12px rgba(24, 144, 255, 0.4);
    transform: translateY(-1px);
}

/* AI 策划弹窗 */
.ai-planner-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
    animation: aiPlannerFadeIn 0.2s ease;
}
@keyframes aiPlannerFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}
.ai-planner-dialog {
    background: #fff;
    border-radius: 12px;
    width: 480px;
    max-width: 92vw;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
    animation: aiPlannerSlideUp 0.25s ease;
}
@keyframes aiPlannerSlideUp {
    from { transform: translateY(20px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
.ai-planner-dialog-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 16px;
    font-weight: 600;
    color: #1a1a1a;
}
.ai-planner-close {
    background: none;
    border: none;
    font-size: 18px;
    color: #8c8c8c;
    cursor: pointer;
    padding: 4px;
    line-height: 1;
}
.ai-planner-close:hover {
    color: #ff4d4f;
}
.ai-planner-dialog-body {
    padding: 20px;
}
.ai-planner-dialog-body label {
    display: block;
    margin-bottom: 8px;
    font-size: 13px;
    font-weight: 500;
    color: #595959;
}
.ai-planner-dialog-body textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    resize: vertical;
    box-sizing: border-box;
}
.ai-planner-dialog-body textarea:focus {
    border-color: #1890ff;
    outline: none;
    box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.1);
}
.ai-planner-dialog-body select {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    font-size: 14px;
    font-family: inherit;
    background: #fff;
    cursor: pointer;
}
.ai-planner-dialog-body select:focus {
    border-color: #1890ff;
    outline: none;
}
.ai-planner-dialog-footer {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 20px 16px;
}
.ai-planner-dialog-submit {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 8px 20px;
    background: linear-gradient(135deg, #1890ff, #40a9ff);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}
.ai-planner-dialog-submit:hover {
    background: linear-gradient(135deg, #1677cc, #3399e6);
}
