/* ============================================================
   v5 THEME OVERRIDE — pure visual skin, keeps layout/logic
   基线：artifacts/design/…v5-assistant-home-best-of-both…png
   只改视觉 token：颜色、渐变、圆角、阴影、字重
   不改 grid 模板、定位、JS hook class
   ============================================================ */

/* —— 色板重定义 —— */
:root {
  --bg-page: #F5F7FB;
  --bg-card: #FFFFFF;
  --bg-soft: #F1F3F9;
  --text-main: #0F172A;
  --text-sub: #475569;
  --text-soft: #64748B;
  --line: rgba(148, 163, 184, 0.14);
  --line-strong: rgba(148, 163, 184, 0.24);
  --brand: #4F46E5;
  --brand-soft: #EEF2FF;
  --danger: #EF4444;
  --danger-soft: #FEE2E2;
  --warning: #F59E0B;
  --warning-soft: #FEF3C7;
  --success: #10B981;
  --success-soft: #D1FAE5;
  --violet-p2: #8B5CF6;
  --purple-high: #A855F7;

  /* v5 专属：stat 卡统一渐变 */
  --v5-stat-grad: linear-gradient(135deg, #2D3BB2 0%, #4338CA 55%, #6D28D9 100%);
  --v5-card-shadow: 0 8px 24px rgba(30, 41, 59, 0.06);
  --v5-card-shadow-hover: 0 12px 32px rgba(30, 41, 59, 0.10);
}

/* QA: keep native selects to one clean chevron in modal/form surfaces. */
html body .app-shell .field select,
html body .modal-card select,
html body .app-modal select {
  appearance: none !important;
  -webkit-appearance: none !important;
  background-image:
    linear-gradient(45deg, transparent 50%, currentColor 50%),
    linear-gradient(135deg, currentColor 50%, transparent 50%) !important;
  background-position:
    calc(100% - 18px) 50%,
    calc(100% - 12px) 50% !important;
  background-size: 6px 6px, 6px 6px !important;
  background-repeat: no-repeat !important;
  padding-right: 40px !important;
}

html body .app-shell .field select::-ms-expand,
html body .modal-card select::-ms-expand,
html body .app-modal select::-ms-expand {
  display: none !important;
}

/* ═══════════════════════════════════════════════════════════════════
   PERFORMANCE: 滚动流畅性 + 渲染加速
   ═══════════════════════════════════════════════════════════════════ */
main.page-body {
  contain: layout style;
  will-change: scroll-position;
}
.assistant-block,
.panel,
.v5-panel,
.glass-panel {
  contain: layout style paint;
  content-visibility: auto;
  contain-intrinsic-size: auto 200px;
}
.mobile-shell main.page-body {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: contain;
}
.mobile-shell .event-card,
.mobile-shell .todo-card,
.mobile-shell .assistant-list-item {
  transform: translateZ(0);
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  .mobile-shell .event-card,
  .mobile-shell .todo-card,
  .mobile-shell .assistant-list-item {
    will-change: auto;
    transform: none;
  }
}

/* MOBILE: 禁用 hover 上浮（触屏上 :hover 在滚动时误触发导致卡顿） */
@media (hover: none) and (pointer: coarse) {
  .event-card:hover,
  .todo-card:hover,
  .command-card:hover,
  .stat-card:hover,
  .assistant-list-item:hover,
  .auth-shot-field:hover {
    transform: none !important;
  }
}

/* 页面切换过渡：仅使用 GPU 友好的 opacity + transform */
.mobile-shell main.page-body {
  animation: xqj-page-enter 220ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
@keyframes xqj-page-enter {
  from { opacity: 0.6; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* —— body 背景 —— */
html:not([data-theme="dark"]) body {
  background:
    radial-gradient(circle at 92% 6%, rgba(139, 92, 246, 0.10), transparent 32%),
    radial-gradient(circle at 8% 94%, rgba(79, 70, 229, 0.06), transparent 26%),
    var(--bg-page) !important;
}

/* [removed] Stat 卡 A/B/C 紫渐变 + glyph 胶囊 (浅色) — 被 v4-DD (line ~5176+) + line 7479+ (mailbox) 完全覆盖为白底 */

/* —— 普通卡片：白色 + 16-20px 圆角 + 软阴影 —— */
.card,
.panel,
.page-header,
.workflow-nav-root,
.assistant-block,
.week-column,
.event-card,
.command-card,
.sidebar-section,
.inbox-reference-card,
.mailbox-card,
.mailbox-summary-item,
.digest-card,
.digest-section,
.ai-chat-shell,
.assistant-ai-panel {
  background: var(--bg-card) !important;
  border-radius: 20px !important;
  box-shadow: var(--v5-card-shadow) !important;
  border: 1px solid var(--line) !important;
}

/* inline 小卡可以更小圆角 */
.chip,
.status-pill,
.filter-chip,
.quick-chip {
  border-radius: 999px !important;
}

/* —— 侧栏：白色 + 细分割线 —— */
.side-nav,
.assistant-workflow-nav {
  background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFE 100%) !important;
  border-right: 1px solid var(--line) !important;
}

.workflow-nav-item {
  border-radius: 16px !important;
  transition: background-color 0.18s var(--ease-ios), border-color 0.18s var(--ease-ios), color 0.18s var(--ease-ios), box-shadow 0.18s var(--ease-ios), transform 0.18s var(--ease-ios);
}

.workflow-nav-item:hover {
  background: rgba(79, 70, 229, 0.06) !important;
  transform: translateX(2px);
}

.workflow-nav-item.active,
html:not([data-theme="dark"]) body .side-nav .nav-item.active,
html:not([data-theme="dark"]) body .assistant-workflow-nav .nav-item.active {
  background: linear-gradient(135deg, #4F46E5 0%, #6366F1 100%) !important;
  color: #FFFFFF !important;
  box-shadow: 0 12px 28px rgba(79, 70, 229, 0.26) !important;
  border-color: transparent !important;
}

.workflow-nav-item.active .workflow-nav-hint,
html:not([data-theme="dark"]) body .side-nav .nav-item.active * {
  color: rgba(255, 255, 255, 0.96) !important;
}

/* nav item hover */
html:not([data-theme="dark"]) body .side-nav .nav-item:not(.active):hover,
html:not([data-theme="dark"]) body .assistant-workflow-nav .nav-item:not(.active):hover {
  background: rgba(79, 70, 229, 0.08) !important;
  color: #312E81 !important;
}

/* —— Event 卡：恢复 ::before 左色条 (4px 部门色 accent) —— */
html:not([data-theme="dark"]) body .app-shell .event-card {
  position: relative;
  overflow: hidden;
}

/* event-card 左侧 4px 部门色 accent (使用 inline --event-color) */
html:not([data-theme="dark"]) body .app-shell .event-card::before {
  content: "" !important;
  display: block !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 4px !important;
  background: var(--event-color, var(--v4-brand, #4F46E5)) !important;
  border-radius: 4px 0 0 4px !important;
}

/* event 卡 hover 提升 */
html:not([data-theme="dark"]) body .app-shell .event-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 36px rgba(30, 41, 59, 0.10) !important;
  transition: background-color 0.22s var(--ease-ios), border-color 0.22s var(--ease-ios), color 0.22s var(--ease-ios), box-shadow 0.22s var(--ease-ios), transform 0.22s var(--ease-ios);
}

/* —— priority pill 统一配色 —— */
html:not([data-theme="dark"]) body .app-shell .priority-pill,
html:not([data-theme="dark"]) body .app-shell [class*="priority-pill"],
html:not([data-theme="dark"]) body .app-shell .chip[data-priority] {
  font-weight: 700 !important;
  letter-spacing: 0.02em;
  border-radius: 999px !important;
  padding: 3px 10px !important;
  font-size: 12px !important;
  line-height: 1.4 !important;
}

/* —— header / toolbar：白色简洁 —— */
.page-header {
  background: var(--bg-card) !important;
  border: 1px solid var(--line) !important;
}

/* —— Primary CTA：indigo 实心 —— */
.btn-primary,
button[data-variant="primary"],
.primary-action,
.submit-btn {
  background: linear-gradient(135deg, #4F46E5, #6366F1) !important;
  color: #FFFFFF !important;
  border: none !important;
  box-shadow: 0 6px 16px rgba(79, 70, 229, 0.24) !important;
}

.btn-primary:hover,
button[data-variant="primary"]:hover {
  box-shadow: 0 10px 22px rgba(79, 70, 229, 0.32) !important;
  transform: translateY(-1px);
}

/* —— outline 图标默认 1.5 stroke —— */
svg[stroke-width="2"]:not([data-preserve-stroke]) {
  stroke-width: 1.5 !important;
}

/* —— 语义色统一 pills —— */
.priority-pill.p1,
[data-priority="p1"] {
  background: rgba(245, 158, 11, 0.14) !important;
  color: #B45309 !important;
  border-color: rgba(245, 158, 11, 0.3) !important;
}

.priority-pill.p2,
[data-priority="p2"] {
  background: rgba(139, 92, 246, 0.14) !important;
  color: #6D28D9 !important;
  border-color: rgba(139, 92, 246, 0.3) !important;
}

.priority-pill.p4,
[data-priority="p4"] {
  background: rgba(239, 68, 68, 0.14) !important;
  color: #B91C1C !important;
  border-color: rgba(239, 68, 68, 0.3) !important;
}

.priority-pill.high,
[data-priority="high"] {
  background: rgba(168, 85, 247, 0.14) !important;
  color: #7E22CE !important;
  border-color: rgba(168, 85, 247, 0.3) !important;
}

/* —— 悬浮新手启航清单：白卡 + 轻阴影 —— */
.onboarding-checklist-fab,
.new-user-checklist {
  background: var(--bg-card) !important;
  border-radius: 16px !important;
  box-shadow: 0 16px 40px rgba(30, 41, 59, 0.12) !important;
  border: 1px solid var(--line) !important;
}

/* —— 云端已连接 chip —— */
.checklist-focus-target {
  outline: 3px solid rgba(99, 102, 241, 0.72) !important;
  outline-offset: 4px !important;
  box-shadow:
    0 0 0 8px rgba(99, 102, 241, 0.16),
    0 16px 34px rgba(99, 102, 241, 0.24) !important;
  animation: checklistFocusPulse 1.2s ease-in-out infinite !important;
}

.checklist-focus-note {
  position: fixed;
  z-index: 10020;
  width: min(264px, calc(100vw - 24px));
  padding: 10px 12px;
  border-radius: 12px;
  background: #111827;
  color: #ffffff;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.28);
  pointer-events: none;
  display: flex;
  flex-direction: column;
  gap: 3px;
  animation: checklistFocusNoteIn 180ms ease-out;
}

.checklist-focus-note strong {
  font-size: 12px;
  line-height: 1.3;
  font-weight: 800;
}

.checklist-focus-note span {
  font-size: 12px;
  line-height: 1.45;
  color: rgba(255, 255, 255, 0.82);
}

@keyframes checklistFocusPulse {
  0%, 100% { outline-color: rgba(99, 102, 241, 0.72); }
  50% { outline-color: rgba(251, 113, 133, 0.82); }
}

@keyframes checklistFocusNoteIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

.cloud-status,
.sync-status-chip {
  background: var(--bg-card) !important;
  border-radius: 999px !important;
  border: 1px solid var(--line) !important;
  box-shadow: var(--v5-card-shadow) !important;
}

/* —— 字体层级微调 —— */
.page-header-title,
h1,
h2 {
  font-weight: 800 !important;
  letter-spacing: -0.02em;
}

/* ============================================================
   v8 增强：数字徽章 + accent bar + 插画替换
   ============================================================ */

/* —— 待安排卡：加 1/2/3 数字徽章 + 左侧紧急级 accent bar —— */
html:not([data-theme="dark"]) body .app-shell .pending-list {
  counter-reset: pending-counter;
}

html:not([data-theme="dark"]) body .app-shell .pending-card {
  counter-increment: pending-counter;
  padding-left: 68px !important;
  position: relative !important;
  overflow: hidden;
}

/* 数字徽章圆形 */
html:not([data-theme="dark"]) body .app-shell .pending-card::before {
  content: counter(pending-counter);
  position: absolute;
  left: 20px;
  top: 20px;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: linear-gradient(135deg, #EEF2FF, #E0E7FF);
  color: #4338CA;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 15px;
  font-feature-settings: "tnum";
  line-height: 1;
  border: 1px solid rgba(99, 102, 241, 0.22);
  z-index: 1;
}

/* 左侧 4px 紧急级 accent bar —— default 紫色 */
html:not([data-theme="dark"]) body .app-shell .pending-card::after {
  content: "";
  position: absolute;
  left: 0;
  top: 14px;
  bottom: 14px;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: linear-gradient(180deg, #6366F1, #8B5CF6);
  z-index: 0;
}

/* pending card hover 提升 */
html:not([data-theme="dark"]) body .app-shell .pending-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 36px rgba(30, 41, 59, 0.10) !important;
  transition: background-color 0.22s var(--ease-ios), border-color 0.22s var(--ease-ios), color 0.22s var(--ease-ios), box-shadow 0.22s var(--ease-ios), transform 0.22s var(--ease-ios);
}

/* —— 待办卡：加 1-8 数字 + 左侧状态 accent bar —— */
html:not([data-theme="dark"]) body .app-shell .todo-list {
  counter-reset: todo-counter;
}

html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card {
  counter-increment: todo-counter;
  padding-left: 64px !important;
  position: relative !important;
  overflow: hidden;
}

html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card::before {
  content: counter(todo-counter);
  position: absolute;
  left: 18px;
  top: 50%;
  transform: translateY(-50%);
  width: 32px;
  height: 32px;
  border-radius: 999px;
  background: linear-gradient(135deg, #EEF2FF, #E0E7FF);
  color: #4338CA;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 14px;
  font-feature-settings: "tnum";
  line-height: 1;
  border: 1px solid rgba(99, 102, 241, 0.22);
  z-index: 1;
}

/* todo 左侧状态 accent bar */
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card::after {
  content: "";
  position: absolute;
  left: 0;
  top: 10px;
  bottom: 10px;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: linear-gradient(180deg, #F59E0B, #F97316); /* default 待处理 = 橙 */
  z-index: 0;
}

/* 已完成 = 绿 */
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card:has(.status-pill.done)::after,
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card:has(.status-pill.success)::after {
  background: linear-gradient(180deg, #10B981, #059669);
}

/* 处理中 = 紫 */
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card:has(.status-pill.progress)::after,
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card:has(.status-pill.in-progress)::after {
  background: linear-gradient(180deg, #A855F7, #9333EA);
}

/* todo card hover */
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(30, 41, 59, 0.08) !important;
  transition: background-color 0.2s var(--ease-ios), border-color 0.2s var(--ease-ios), color 0.2s var(--ease-ios), box-shadow 0.2s var(--ease-ios), transform 0.2s var(--ease-ios);
}

/* —— 左导航图标细节：stroke 变细更现代 —— */
html:not([data-theme="dark"]) body .side-nav .nav-item svg,
html:not([data-theme="dark"]) body .assistant-workflow-nav .nav-item svg {
  stroke-width: 1.75 !important;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* 左导航 nav-item 圆角 + 间距 */
html:not([data-theme="dark"]) body .side-nav .nav-item,
html:not([data-theme="dark"]) body .assistant-workflow-nav .nav-item {
  border-radius: 12px !important;
  font-weight: 600;
}

/* 收信箱未读数字圆徽章：白底红数字 → v5 indigo */
html:not([data-theme="dark"]) body .side-nav .nav-badge,
html:not([data-theme="dark"]) body .side-nav [class*="nav-badge"],
html:not([data-theme="dark"]) body .side-nav .nav-item-count {
  background: linear-gradient(135deg, #EF4444, #DC2626) !important;
  color: #FFFFFF !important;
  border-radius: 999px !important;
  min-width: 20px;
  height: 20px;
  padding: 0 6px !important;
  font-weight: 700 !important;
  box-shadow: 0 4px 10px rgba(239, 68, 68, 0.28) !important;
  border: 2px solid #FFFFFF !important;
}

/* —— 微信识别页插画：替换成 v5 风格云朵萌物 + 日历 + 花朵 —— */
html:not([data-theme="dark"]) body .app-shell .inbox-empty-svg-wrapper {
  position: relative;
  min-height: 220px;
}

html:not([data-theme="dark"]) body .app-shell .inbox-empty-svg-wrapper > svg {
  opacity: 0 !important;
  visibility: hidden !important;
}

html:not([data-theme="dark"]) body .app-shell .inbox-empty-svg-wrapper::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300' fill='none'><defs><linearGradient id='cloud-g' x1='0' y1='0' x2='0' y2='1'><stop offset='0' stop-color='%23F0F4FF'/><stop offset='1' stop-color='%23E0E7FF'/></linearGradient><linearGradient id='bubble-g' x1='0' y1='0' x2='1' y2='0'><stop offset='0' stop-color='%234F46E5'/><stop offset='1' stop-color='%236366F1'/></linearGradient></defs><g><path d='M85 180 L70 195 L82 200 Q75 190 85 180' fill='%2310B981' opacity='0.45'/><path d='M95 190 L85 200 L93 205' fill='%2310B981' opacity='0.45'/></g><ellipse cx='200' cy='240' rx='110' ry='8' fill='%23000' opacity='0.06'/><g transform='translate(120,75)'><path d='M25 60 Q0 60 0 35 Q0 18 20 15 Q25 0 45 0 Q70 0 78 20 Q100 20 100 42 Q100 60 80 60 Z' fill='url(%23cloud-g)' stroke='%236366F1' stroke-width='2' stroke-opacity='0.3'/><circle cx='38' cy='30' r='3.5' fill='%231E293B'/><circle cx='62' cy='30' r='3.5' fill='%231E293B'/><path d='M42 42 Q50 48 58 42' stroke='%231E293B' stroke-width='2' stroke-linecap='round' fill='none'/><circle cx='30' cy='40' r='3' fill='%23FBA5A5' opacity='0.7'/><circle cx='70' cy='40' r='3' fill='%23FBA5A5' opacity='0.7'/></g><g transform='translate(155,145)'><rect x='0' y='0' width='100' height='28' rx='14' fill='url(%23bubble-g)'/><path d='M20 28 L14 38 L26 32 Z' fill='%234F46E5'/><circle cx='30' cy='14' r='2.5' fill='%23FFF'/><circle cx='45' cy='14' r='2.5' fill='%23FFF'/><circle cx='60' cy='14' r='2.5' fill='%23FFF'/></g><g transform='translate(280,90)'><rect x='0' y='8' width='50' height='50' rx='8' fill='%23FFF' stroke='%236366F1' stroke-width='2'/><rect x='0' y='8' width='50' height='14' rx='8' fill='%236366F1'/><rect x='0' y='18' width='50' height='4' fill='%236366F1'/><line x1='12' y1='0' x2='12' y2='14' stroke='%234F46E5' stroke-width='3' stroke-linecap='round'/><line x1='38' y1='0' x2='38' y2='14' stroke='%234F46E5' stroke-width='3' stroke-linecap='round'/><circle cx='14' cy='34' r='3' fill='%23F59E0B'/><circle cx='26' cy='34' r='3' fill='%2310B981'/><circle cx='38' cy='34' r='3' fill='%23EF4444'/><path d='M11 47 L15 51 L20 45' stroke='%2310B981' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></g><g fill='%23FBBF24'><path d='M65 80 L68 73 L71 80 L78 83 L71 86 L68 93 L65 86 L58 83 Z' opacity='0.7'/><path d='M340 50 L343 43 L346 50 L353 53 L346 56 L343 63 L340 56 L333 53 Z' opacity='0.6'/><circle cx='100' cy='50' r='3' opacity='0.55'/><circle cx='355' cy='185' r='2.5' opacity='0.5'/></g></svg>");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  pointer-events: none;
}

/* —— 整体细节：panel-header 间距 / 卡片 gap —— */
html:not([data-theme="dark"]) body .panel-header h4 {
  font-weight: 800 !important;
  letter-spacing: -0.01em;
  color: #0F172A !important;
}

html:not([data-theme="dark"]) body .panel-header p {
  color: #64748B !important;
  font-size: 13px;
}

/* —— info-chip 信息胶囊：柔和灰 —— */
html:not([data-theme="dark"]) body .app-shell .info-chip {
  background: #F1F5F9 !important;
  border: 1px solid rgba(148, 163, 184, 0.22) !important;
  color: #475569 !important;
  border-radius: 999px !important;
  font-weight: 600;
}

/* 紧急级 info-chip 保留红/橙主题色 */
html:not([data-theme="dark"]) body .app-shell .info-chip[style*="220,38,38"] {
  background: rgba(239, 68, 68, 0.10) !important;
  border-color: rgba(239, 68, 68, 0.25) !important;
  color: #B91C1C !important;
}

html:not([data-theme="dark"]) body .app-shell .info-chip[style*="245,158,11"] {
  background: rgba(245, 158, 11, 0.10) !important;
  border-color: rgba(245, 158, 11, 0.25) !important;
  color: #B45309 !important;
}

/* ============================================================
   v9: stats-row 5 卡单排强制 (桌面端)
   base.css 内 @media (max-width: 1560px) 把 1440 视口降级成
   "featured 跨 4 列 + 4 卡下排"的 1+4 两排。
   设计基线 (v5-assistant-home-best-of-both) 要求 1440 也保持
   单排 5 卡:featured 2.2fr + 其余 4 卡 1fr 等宽。
   ============================================================ */
@media (min-width: 960px) {
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row,
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row {
    grid-template-columns: 2.5fr repeat(4, minmax(0, 1fr)) !important;
    gap: 8px !important;
  }

  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-featured,
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-featured {
    grid-column: auto !important;
  }
}

/* [removed] v11 stat 数字字号 — 被 v4-DD (line ~5260+) 与 line 4276+ / line 7515+ 覆盖 */

/* === Event card（今日日历）v5 样式：accent bar 从 inline --event-color 读取 === */
html:not([data-theme="dark"]) body .app-shell .event-card {
  border-left: 4px solid var(--event-color, #4F46E5) !important;
  border-radius: 14px !important;
  background: #FFFFFF !important;
  box-shadow: 0 4px 14px rgba(30, 41, 59, 0.06) !important;
  border-top: 1px solid rgba(148, 163, 184, 0.14) !important;
  border-right: 1px solid rgba(148, 163, 184, 0.14) !important;
  border-bottom: 1px solid rgba(148, 163, 184, 0.14) !important;
}

/* === 状态 pill 色系（v5 ref）— 实际 DOM class: .status-pill.todo/.done === */
html:not([data-theme="dark"]) body .app-shell .status-pill {
  border-radius: 999px !important;
  font-weight: 700 !important;
  padding: 3px 10px !important;
  font-size: 12px !important;
}
html:not([data-theme="dark"]) body .app-shell .status-pill.todo,
html:not([data-theme="dark"]) body .app-shell .status-pill.pending {
  background: rgba(245, 158, 11, 0.12) !important;
  color: #B45309 !important;
  border: 1px solid rgba(245, 158, 11, 0.28) !important;
}
html:not([data-theme="dark"]) body .app-shell .status-pill.processing,
html:not([data-theme="dark"]) body .app-shell .status-pill.in-progress {
  background: rgba(59, 130, 246, 0.12) !important;
  color: #1D4ED8 !important;
  border: 1px solid rgba(59, 130, 246, 0.28) !important;
}
html:not([data-theme="dark"]) body .app-shell .status-pill.done,
html:not([data-theme="dark"]) body .app-shell .status-pill.completed {
  background: rgba(16, 185, 129, 0.12) !important;
  color: #047857 !important;
  border: 1px solid rgba(16, 185, 129, 0.28) !important;
}
html:not([data-theme="dark"]) body .app-shell .status-pill.delayed,
html:not([data-theme="dark"]) body .app-shell .status-pill.overdue {
  background: rgba(239, 68, 68, 0.12) !important;
  color: #B91C1C !important;
  border: 1px solid rgba(239, 68, 68, 0.28) !important;
}
html:not([data-theme="dark"]) body .app-shell .status-pill.代发,
html:not([data-theme="dark"]) body .app-shell .status-pill.forwarded {
  background: rgba(139, 92, 246, 0.12) !important;
  color: #6D28D9 !important;
  border: 1px solid rgba(139, 92, 246, 0.28) !important;
}

/* === 优先级 badge（P1/P2/P3/P4 + high/mid/low 实心）=== */
/* 实际 DOM class: .badge.priority-p1 / priority-p2 / priority-p4 / priority-high */
html:not([data-theme="dark"]) body .app-shell .badge.priority-p1,
html:not([data-theme="dark"]) body .app-shell .badge.priority-P1,
html:not([data-theme="dark"]) body .app-shell .stat-card-priority.priority-p1 {
  background: #F59E0B !important;
  color: #FFFFFF !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html:not([data-theme="dark"]) body .app-shell .badge.priority-p2,
html:not([data-theme="dark"]) body .app-shell .badge.priority-P2 {
  background: #8B5CF6 !important;
  color: #FFFFFF !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html:not([data-theme="dark"]) body .app-shell .badge.priority-p3,
html:not([data-theme="dark"]) body .app-shell .badge.priority-P3 {
  background: #3B82F6 !important;
  color: #FFFFFF !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html:not([data-theme="dark"]) body .app-shell .badge.priority-p4,
html:not([data-theme="dark"]) body .app-shell .badge.priority-P4 {
  background: #EF4444 !important;
  color: #FFFFFF !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html:not([data-theme="dark"]) body .app-shell .badge.priority-high {
  background: rgba(239, 68, 68, 0.12) !important;
  color: #B91C1C !important;
  border: 1px solid rgba(239, 68, 68, 0.28) !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
}
html:not([data-theme="dark"]) body .app-shell .badge.priority-mid,
html:not([data-theme="dark"]) body .app-shell .badge.priority-medium {
  background: rgba(245, 158, 11, 0.12) !important;
  color: #B45309 !important;
  border: 1px solid rgba(245, 158, 11, 0.28) !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
}
html:not([data-theme="dark"]) body .app-shell .badge.priority-low {
  background: rgba(59, 130, 246, 0.12) !important;
  color: #1D4ED8 !important;
  border: 1px solid rgba(59, 130, 246, 0.28) !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
}

/* [removed] v13 紫渐变 stat 卡规则 — 被 v4-DD (line ~5176+) 完全覆盖为白底 ink-1 */

/* ============================================================
   v25: 今日推进台卡片重排 —— grid 布局，gradient 图标 box，类型色微染底，描述限 2 行
   ============================================================ */

body .app-shell .cockpit-item {
  display: grid !important;
  grid-template-columns: 64px 1fr !important;
  gap: 18px !important;
  align-items: start !important;
  padding: 24px 24px !important;
  border-radius: 26px !important;
  background: #f2f5fb !important;
  border: 1px solid rgba(203, 213, 225, 0.78) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.82), 0 10px 24px rgba(15, 23, 42, 0.04) !important;
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease, background 0.2s ease !important;
}
body .app-shell .cockpit-item:hover {
  transform: translateY(-2px) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9), 0 16px 34px rgba(15, 23, 42, 0.08) !important;
}
body .app-shell .cockpit-icon {
  width: 64px !important;
  height: 64px !important;
  border-radius: 18px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #fff !important;
  flex-shrink: 0 !important;
  box-shadow: 0 12px 24px rgba(99, 102, 241, 0.18) !important;
}
body .app-shell .cockpit-icon svg {
  width: 34px !important;
  height: 34px !important;
}
body .app-shell .cockpit-item-instruction .cockpit-icon {
  background: linear-gradient(135deg, #6366f1, #8b5cf6) !important;
}
body .app-shell .cockpit-item-pushitem .cockpit-icon {
  background: linear-gradient(135deg, #3b82f6, #06b6d4) !important;
  box-shadow: 0 12px 24px rgba(59, 130, 246, 0.20) !important;
}
body .app-shell .cockpit-item-blocker .cockpit-icon {
  background: linear-gradient(135deg, #f59e0b, #f97316) !important;
  box-shadow: 0 12px 24px rgba(245, 158, 11, 0.22) !important;
}

/* 阻塞项整行用橙色微染底，引导关注 */
body .app-shell .cockpit-item-blocker {
  background: #f7f4ef !important;
  border-color: rgba(245, 158, 11, 0.32) !important;
}

body .app-shell .cockpit-content {
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
}
body .app-shell .cockpit-head {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  flex-wrap: wrap !important;
}
body .app-shell .cockpit-head strong {
  font-size: 24px !important;
  font-weight: 850 !important;
  color: #111827 !important;
  line-height: 1.12 !important;
  letter-spacing: -0.035em !important;
}
body .app-shell .cockpit-count {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  min-width: 34px !important;
  height: 32px !important;
  padding: 0 10px !important;
  border-radius: 999px !important;
  font-size: 18px !important;
  font-weight: 850 !important;
  letter-spacing: 0 !important;
  background: #6366f1 !important;
  color: #fff !important;
  flex-shrink: 0 !important;
}
body .app-shell .cockpit-item-pushitem .cockpit-count { background: #3b82f6 !important; }
body .app-shell .cockpit-item-blocker .cockpit-count { background: #f59e0b !important; }

body .app-shell .cockpit-text {
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  font-size: 19px !important;
  line-height: 1.45 !important;
  color: #475569 !important;
  margin: 0 !important;
}

html[data-theme="dark"] body .app-shell .cockpit-item {
  background: rgba(255, 255, 255, 0.03) !important;
  border-color: rgba(255, 255, 255, 0.06) !important;
}
html[data-theme="dark"] body .app-shell .cockpit-item-blocker {
  background: color-mix(in srgb, #f59e0b 9%, rgba(255, 255, 255, 0.03)) !important;
  border-color: color-mix(in srgb, #f59e0b 22%, rgba(255, 255, 255, 0.06)) !important;
}

/* ============================================================
   v17: 右侧侧栏 3 个 panel 对齐 v5
   - 今日重点：P1/P2/high 彩色 pill，标题与 pill 同行
   - 风险提醒：左侧 4px 彩色竖条（红=high 橙=medium 蓝=low）
   - 快到期待办：每条前 ☐ checkbox 伪元素
   ============================================================ */

/* --- 今日重点：topic-item 头行，标题 + priority pill --- */
html:not([data-theme="dark"]) body .app-shell .topic-item {
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  padding: 24px 24px !important;
  border-radius: 28px !important;
  border: 1px solid rgba(245, 158, 11, 0.34) !important;
  background: #fff4da !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72) !important;
}
html:not([data-theme="dark"]) body .app-shell .topic-item[data-priority="p2"] {
  background: #efe7ff !important;
  border-color: rgba(139, 92, 246, 0.34) !important;
}
html:not([data-theme="dark"]) body .app-shell .topic-item-head {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  flex-wrap: nowrap !important;
}
html:not([data-theme="dark"]) body .app-shell .topic-item-head strong {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  font-size: 26px !important;
  font-weight: 850 !important;
  color: #0F172A !important;
  line-height: 1.1 !important;
  letter-spacing: -0.035em !important;
}
html:not([data-theme="dark"]) body .app-shell .topic-item-head .badge {
  flex: 0 0 auto !important;
  min-width: 50px !important;
  min-height: 36px !important;
  justify-content: center !important;
  font-size: 20px !important;
  padding: 0 12px !important;
  border-radius: 8px !important;
  line-height: 1 !important;
}
html:not([data-theme="dark"]) body .app-shell .topic-item > span:not(.badge) {
  color: #64748B !important;
  font-size: 24px !important;
  line-height: 1.34 !important;
}

body .app-shell .assistant-panel .topic-item {
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  padding: 22px 22px !important;
  border-radius: 26px !important;
  border: 1px solid rgba(245, 158, 11, 0.36) !important;
  background: #fff4da !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72), 0 10px 24px rgba(15, 23, 42, 0.04) !important;
}

body .app-shell .assistant-panel .topic-item[data-priority="p2"] {
  background: #efe7ff !important;
  border-color: rgba(139, 92, 246, 0.36) !important;
}

body .app-shell .assistant-panel .topic-item-head {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  flex-wrap: nowrap !important;
}

body .app-shell .assistant-panel .topic-item-head strong {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  font-size: 24px !important;
  font-weight: 850 !important;
  color: #0F172A !important;
  line-height: 1.12 !important;
  letter-spacing: -0.035em !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

body .app-shell .assistant-panel .topic-item-head .badge {
  flex: 0 0 auto !important;
  min-width: 50px !important;
  min-height: 36px !important;
  justify-content: center !important;
  font-size: 20px !important;
  font-weight: 850 !important;
  padding: 0 12px !important;
  border-radius: 8px !important;
  line-height: 1 !important;
}

body .app-shell .assistant-panel .topic-item > span:not(.badge) {
  color: #64748B !important;
  font-size: 22px !important;
  line-height: 1.34 !important;
}

body .app-shell .assistant-panel .cockpit-item {
  background: #f2f5fb !important;
  border-color: rgba(203, 213, 225, 0.78) !important;
}

body .app-shell .assistant-panel .cockpit-item-blocker {
  background: #f7f4ef !important;
  border-color: rgba(245, 158, 11, 0.32) !important;
}

body .app-shell .assistant-panel .cockpit-head strong {
  color: #111827 !important;
}

body .app-shell .assistant-panel .cockpit-text {
  color: #475569 !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .topic-item {
  background: #fff4da !important;
  border-color: rgba(245, 158, 11, 0.36) !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .topic-item[data-priority="p2"] {
  background: #efe7ff !important;
  border-color: rgba(139, 92, 246, 0.36) !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .topic-item-head strong {
  color: #0F172A !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .topic-item > span:not(.badge) {
  color: #64748B !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .cockpit-item {
  background: #f2f5fb !important;
  border-color: rgba(203, 213, 225, 0.78) !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .cockpit-item-blocker {
  background: #f7f4ef !important;
  border-color: rgba(245, 158, 11, 0.32) !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .cockpit-head strong {
  color: #111827 !important;
}

html[data-theme="dark"] body .app-shell .assistant-panel .cockpit-text {
  color: #475569 !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-item {
  grid-template-columns: 32px minmax(0, 1fr) !important;
  gap: 12px !important;
  align-items: center !important;
  padding: 12px 14px !important;
  border-radius: 16px !important;
  background: #ffffff !important;
  border-color: rgba(148, 163, 184, 0.16) !important;
  min-height: 76px !important;
  box-shadow: 0 8px 24px rgba(30, 41, 59, 0.05) !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-item-blocker {
  background: #fffaf3 !important;
  border-color: rgba(245, 158, 11, 0.22) !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-icon {
  width: 32px !important;
  height: 32px !important;
  border-radius: 10px !important;
  box-shadow: 0 6px 14px rgba(99, 102, 241, 0.16) !important;
  display: grid !important;
  place-items: center !important;
  align-self: center !important;
  justify-self: center !important;
  padding: 0 !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-icon svg {
  width: 18px !important;
  height: 18px !important;
  stroke-width: 1.8 !important;
  display: block !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  transform: none !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-item-pushitem .cockpit-icon svg {
  transform: translate(0.5px, 0.5px) !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-item-blocker .cockpit-icon svg {
  transform: translateY(0.5px) !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-content {
  gap: 6px !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-head {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  flex-wrap: nowrap !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-head strong {
  min-width: 0 !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.01em !important;
  color: #0f172a !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-count {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: auto !important;
  min-width: 24px !important;
  height: 22px !important;
  padding: 0 7px !important;
  border-radius: 999px !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  line-height: 1 !important;
  align-self: center !important;
}

html body .app-shell .layout-assistant .assistant-panel .cockpit-text {
  font-size: 13px !important;
  line-height: 1.5 !important;
  font-weight: 500 !important;
  color: #64748b !important;
}

html body .app-shell .layout-assistant .assistant-panel .assistant-block-heading,
html body .app-shell .layout-boss .assistant-panel .assistant-block-heading {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
}

html body .app-shell .layout-assistant .assistant-panel .assistant-block-heading .assistant-block-icon,
html body .app-shell .layout-assistant .assistant-panel .assistant-block-header .assistant-block-icon,
html body .app-shell .layout-boss .assistant-panel .assistant-block-heading .assistant-block-icon,
html body .app-shell .layout-boss .assistant-panel .assistant-block-header .assistant-block-icon {
  display: inline-grid !important;
  place-items: center !important;
  width: 22px !important;
  height: 22px !important;
  flex: 0 0 22px !important;
  line-height: 1 !important;
}

html body .app-shell .layout-assistant .assistant-panel .assistant-block-heading .assistant-block-icon svg,
html body .app-shell .layout-assistant .assistant-panel .assistant-block-header .assistant-block-icon svg,
html body .app-shell .layout-boss .assistant-panel .assistant-block-heading .assistant-block-icon svg,
html body .app-shell .layout-boss .assistant-panel .assistant-block-header .assistant-block-icon svg {
  display: block !important;
  width: 20px !important;
  height: 20px !important;
  margin: 0 !important;
}

html body .app-shell .layout-assistant .assistant-panel .assistant-block-heading h5,
html body .app-shell .layout-boss .assistant-panel .assistant-block-heading h5 {
  display: flex !important;
  align-items: center !important;
  min-height: 22px !important;
  line-height: 1.1 !important;
  margin: 0 !important;
}

html body .app-shell .layout-assistant .assistant-panel .topic-item {
  gap: 6px !important;
  padding: 12px 14px !important;
  border-radius: 16px !important;
  background: #fffaf0 !important;
  border-color: rgba(245, 158, 11, 0.22) !important;
  min-height: 88px !important;
  box-shadow: 0 8px 24px rgba(30, 41, 59, 0.05) !important;
}

html body .app-shell .layout-assistant .assistant-panel .topic-item[data-priority="p2"] {
  background: #f6f0ff !important;
  border-color: rgba(139, 92, 246, 0.22) !important;
}

html body .app-shell .layout-assistant .assistant-panel .topic-item-head {
  gap: 8px !important;
  align-items: center !important;
  width: 100% !important;
}

html body .app-shell .layout-assistant .assistant-panel .topic-item-head strong {
  order: 2 !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
  font-size: 14.5px !important;
  font-weight: 700 !important;
  line-height: 1.36 !important;
  color: #0f172a !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

html body .app-shell .layout-assistant .assistant-panel .topic-item-head .badge {
  display: inline-grid !important;
  place-items: center !important;
  order: 1 !important;
  margin-left: 0 !important;
  flex: 0 0 auto !important;
  min-width: 32px !important;
  height: 22px !important;
  min-height: 22px !important;
  padding: 0 8px 1px !important;
  border-radius: 7px !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  line-height: 22px !important;
  text-align: center !important;
}

html body .app-shell .layout-assistant .assistant-panel .topic-item > span:not(.badge) {
  font-size: 13px !important;
  line-height: 1.54 !important;
  color: #64748b !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .cockpit-item {
  background: rgba(15, 23, 42, 0.82) !important;
  border-color: rgba(148, 163, 184, 0.18) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 10px 24px rgba(0, 0, 0, 0.22) !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .cockpit-item-blocker {
  background: rgba(67, 37, 9, 0.34) !important;
  border-color: rgba(245, 158, 11, 0.28) !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .cockpit-head strong {
  color: #f8fafc !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .cockpit-text {
  color: #94a3b8 !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item {
  gap: 6px !important;
  padding: 14px 16px !important;
  min-height: 88px !important;
  background: rgba(245, 158, 11, 0.10) !important;
  border-color: rgba(245, 158, 11, 0.30) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 10px 24px rgba(0, 0, 0, 0.20) !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item[data-priority="p2"] {
  background: rgba(139, 92, 246, 0.13) !important;
  border-color: rgba(139, 92, 246, 0.34) !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item-head {
  gap: 8px !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item-head strong {
  color: #f8fafc !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item > span:not(.badge) {
  color: #a8b3c7 !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item-head .badge.priority-p1 {
  background: rgba(245, 158, 11, 0.16) !important;
  color: #fbbf24 !important;
  border-color: rgba(245, 158, 11, 0.36) !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .topic-item-head .badge.priority-p2 {
  background: rgba(139, 92, 246, 0.18) !important;
  color: #c4b5fd !important;
  border-color: rgba(139, 92, 246, 0.38) !important;
}

/* --- 风险提醒：左侧 4px 彩色竖条 --- */
html:not([data-theme="dark"]) body .app-shell .risk-card {
  position: relative !important;
  padding-left: 16px !important;
  background: #FFFFFF !important;
  border: 1px solid rgba(148, 163, 184, 0.14) !important;
  border-radius: 12px !important;
  padding: 12px 14px 12px 18px !important;
  box-shadow: 0 2px 8px rgba(30, 41, 59, 0.04) !important;
}
html:not([data-theme="dark"]) body .app-shell .risk-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 12px !important;
  bottom: 12px !important;
  width: 4px !important;
  border-radius: 0 3px 3px 0 !important;
  background: #EF4444 !important;  /* 默认红（HIGH） */
}
html:not([data-theme="dark"]) body .app-shell .risk-card[data-risk-level="medium"]::before,
html:not([data-theme="dark"]) body .app-shell .risk-card[data-risk-level="mid"]::before {
  background: #F59E0B !important;  /* 橙 */
}
html:not([data-theme="dark"]) body .app-shell .risk-card[data-risk-level="low"]::before {
  background: #3B82F6 !important;  /* 蓝 */
}
html:not([data-theme="dark"]) body .app-shell .risk-card strong {
  display: block !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  color: #0F172A !important;
  margin-bottom: 4px !important;
}
html:not([data-theme="dark"]) body .app-shell .risk-card span {
  display: block !important;
  font-size: 12.5px !important;
  line-height: 1.5 !important;
  color: #64748B !important;
}

/* --- 快到期待办：每条前 ☐ checkbox --- */
html:not([data-theme="dark"]) body .app-shell .checkable-todo {
  position: relative !important;
  padding-left: 36px !important;
}
html:not([data-theme="dark"]) body .app-shell .checkable-todo::before {
  content: "" !important;
  position: absolute !important;
  left: 12px !important;
  top: 14px !important;
  width: 16px !important;
  height: 16px !important;
  border: 2px solid #CBD5E1 !important;
  border-radius: 4px !important;
  background: #FFFFFF !important;
  box-sizing: border-box !important;
}

html body .app-shell .layout-assistant .assistant-panel .due-todo {
  display: grid !important;
  grid-template-columns: 22px minmax(0, 1fr) auto !important;
  align-items: center !important;
  gap: 9px !important;
  min-height: 30px !important;
  padding: 4px 10px !important;
  border-radius: 10px !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

html body .app-shell .layout-assistant .assistant-panel .due-todo::before {
  display: none !important;
  content: none !important;
  width: 0 !important;
  height: 0 !important;
  border: 0 !important;
  background: transparent !important;
}

html body .app-shell .layout-assistant .assistant-panel .due-todo-icon {
  display: inline-grid !important;
  place-items: center !important;
  width: 22px !important;
  height: 22px !important;
  color: #475569 !important;
}

html body .app-shell .layout-assistant .assistant-panel .due-todo-icon svg {
  display: block !important;
  width: 19px !important;
  height: 19px !important;
  margin: 0 !important;
}

html body .app-shell .layout-assistant .assistant-panel .due-todo-title {
  display: block !important;
  min-width: 0 !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  line-height: 1.25 !important;
  color: #334155 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

html body .app-shell .layout-assistant .assistant-panel .due-todo-deadline {
  justify-self: end !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  color: #64748b !important;
  white-space: nowrap !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .due-todo {
  background: transparent !important;
  border-color: transparent !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .due-todo-icon {
  color: #cbd5e1 !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .due-todo-title {
  color: #e2e8f0 !important;
}

html[data-theme="dark"] body .app-shell .layout-assistant .assistant-panel .due-todo-deadline {
  color: #94a3b8 !important;
}

/* 快到期待办 & 今日重点：默认折叠只显示 3 条，超出隐藏 + 展开按钮 */
html body .app-shell .due-todo-list.is-collapsed .due-todo-overflow,
html body .app-shell .focus-event-list.is-collapsed .focus-event-overflow {
  display: none !important;
}
.due-todo-expand-btn {
  display: block;
  width: 100%;
  margin-top: 8px;
  padding: 10px 0;
  border: 1px dashed rgba(99, 102, 241, 0.3);
  border-radius: 10px;
  background: transparent;
  color: #6366f1;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease;
}
.due-todo-expand-btn:hover {
  background: rgba(99, 102, 241, 0.06);
  border-color: rgba(99, 102, 241, 0.5);
}
html[data-theme="dark"] .due-todo-expand-btn {
  color: #a5b4fc;
  border-color: rgba(165, 180, 252, 0.3);
}
html[data-theme="dark"] .due-todo-expand-btn:hover {
  background: rgba(165, 180, 252, 0.08);
  border-color: rgba(165, 180, 252, 0.5);
}
html body .app-shell .due-todo-list:not(.is-collapsed) .due-todo-expand-btn,
html body .app-shell .focus-event-list:not(.is-collapsed) .due-todo-expand-btn {
  display: none;
}

/* ============================================================
   v18 → v25: 微信识别空状态 v5 吉祥物 PNG（浅色 + 深色双主题适配）
   - 旧的 preview 截图和 SVG fallback 永久隐藏（都带 .v5-hidden / .v5-hide-wrap 标记）
   - PNG 吉祥物在两个主题下都显示，但深色模式下加"贴纸化"处理：
     轻微降亮/降饱和（避免米黄底过度醒目）+ 紫色主题微光 + 边框
   ============================================================ */

/* 旧的 preview / SVG fallback：两个主题下都永久隐藏 */
body .app-shell .inbox-reference-empty-preview.v5-hidden,
body .app-shell .inbox-empty-svg-wrapper.v5-hide-wrap {
  display: none !important;
}

/* PNG 吉祥物（透明底，自适应主题）*/
body .app-shell .inbox-empty-v5-mascot {
  display: block !important;
  width: 100% !important;
  max-width: 320px !important;
  height: auto !important;
  margin: 0 auto 16px !important;
  background: transparent !important;
  border-radius: 0 !important;
  /* 用 drop-shadow 跟着图形轮廓走，不再画方框阴影 */
  filter: drop-shadow(0 14px 28px rgba(15, 23, 42, 0.10)) drop-shadow(0 6px 12px rgba(99, 102, 241, 0.08)) !important;
}

body .app-shell .inbox-empty-illustration-container {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 24px 16px !important;
}

/* 浅色主题：标题/副文配色 */
html:not([data-theme="dark"]) body .app-shell .inbox-empty-title {
  font-size: 18px !important;
  font-weight: 700 !important;
  color: #0F172A !important;
  margin: 8px 0 6px !important;
  text-align: center !important;
}
html:not([data-theme="dark"]) body .app-shell .inbox-empty-desc {
  font-size: 13px !important;
  color: #64748B !important;
  text-align: center !important;
  line-height: 1.6 !important;
}

/* 深色主题：透明 PNG 直接贴在深色面板上，仅微调投影让其融入 */
html[data-theme="dark"] body .app-shell .inbox-empty-v5-mascot {
  filter: drop-shadow(0 14px 28px rgba(0, 0, 0, 0.45)) drop-shadow(0 6px 18px rgba(139, 92, 246, 0.20)) !important;
}
html[data-theme="dark"] body .app-shell .inbox-empty-title {
  font-size: 18px !important;
  font-weight: 700 !important;
  color: #E5E9F3 !important;
  margin: 8px 0 6px !important;
  text-align: center !important;
  letter-spacing: -0.01em !important;
}
html[data-theme="dark"] body .app-shell .inbox-empty-desc {
  font-size: 13px !important;
  color: rgba(203, 213, 225, 0.66) !important;
  text-align: center !important;
  line-height: 1.6 !important;
}

/* ============================================================
   UNDO SNACKBAR — v20 P0
   6 秒自动消失，带撤销/关闭按钮。独立于普通 toast
   ============================================================ */
.undo-snackbar {
  position: fixed;
  left: 50%;
  bottom: 32px;
  transform: translateX(-50%);
  z-index: 50;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 12px 12px 12px 20px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.96);
  color: #FFFFFF;
  box-shadow: 0 22px 48px rgba(15, 23, 42, 0.28);
  font-size: 14px;
  animation: undo-snackbar-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);
  max-width: min(680px, calc(100vw - 32px));
}

.undo-snackbar-message {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1 1 auto;
}

.undo-snackbar-action {
  background: transparent;
  border: none;
  color: #93C5FD;
  font-weight: 700;
  font-size: 14px;
  padding: 6px 12px;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1);
  flex: 0 0 auto;
}
.undo-snackbar-action:hover {
  background: rgba(147, 197, 253, 0.12);
  color: #BFDBFE;
}

.undo-snackbar-dismiss {
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.6);
  font-size: 22px;
  line-height: 1;
  padding: 0 10px;
  cursor: pointer;
  flex: 0 0 auto;
}
.undo-snackbar-dismiss:hover {
  color: rgba(255, 255, 255, 0.95);
}

@keyframes undo-snackbar-in {
  from { opacity: 0; transform: translate(-50%, 12px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

@media (max-width: 640px) {
  .undo-snackbar {
    left: 16px;
    right: 16px;
    bottom: 96px;
    transform: none;
    border-radius: 14px;
    padding: 10px 6px 10px 14px;
    max-width: none;
  }
  @keyframes undo-snackbar-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
  }
}

/* ============================================================
   GLOBAL SEARCH OVERLAY — v21 P0
   Ctrl/Cmd+K 或顶部搜索按钮唤起，跨所有实体检索
   ============================================================ */
.global-search-overlay {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: rgba(15, 23, 42, 0.42);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: max(10vh, 80px);
  animation: global-search-overlay-in 0.18s ease;
}
@keyframes global-search-overlay-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.global-search-panel {
  width: min(680px, calc(100vw - 32px));
  background: #FFFFFF;
  border-radius: 18px;
  box-shadow: 0 28px 60px rgba(15, 23, 42, 0.32);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  max-height: 72vh;
  animation: global-search-panel-in 0.22s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes global-search-panel-in {
  from { opacity: 0; transform: translateY(-12px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.global-search-input-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid rgba(148, 163, 184, 0.18);
  color: #64748B;
}
.global-search-input {
  flex: 1;
  border: none;
  outline: none;
  background: transparent;
  font-size: 16px;
  color: #0F172A;
  padding: 4px 0;
  font-family: inherit;
}
.global-search-input::placeholder { color: #94A3B8; }
.global-search-close {
  background: transparent;
  border: none;
  color: #64748B;
  font-size: 22px;
  cursor: pointer;
  padding: 4px 10px;
  border-radius: 8px;
  line-height: 1;
}
.global-search-close:hover { background: #F1F5F9; color: #0F172A; }
.global-search-hint {
  padding: 8px 20px;
  font-size: 12px;
  color: #94A3B8;
  border-bottom: 1px solid rgba(148, 163, 184, 0.12);
}
.global-search-results {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
}
.global-search-empty {
  padding: 32px 20px;
  text-align: center;
  color: #64748B;
  font-size: 14px;
}
.global-search-group { padding: 4px 0; }
.global-search-group-label {
  padding: 8px 12px 4px;
  font-size: 11px;
  font-weight: 700;
  color: #94A3B8;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.global-search-item {
  display: block;
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  padding: 10px 12px;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.12s ease;
}
.global-search-item:hover,
.global-search-item:focus-visible {
  background: #F1F5F9;
  outline: none;
}
.global-search-item-title {
  font-size: 14px;
  font-weight: 600;
  color: #0F172A;
  margin-bottom: 2px;
  line-height: 1.4;
}
.global-search-item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 12px;
  color: #64748B;
}
.global-search-item-subtitle { color: #475569; }
.global-search-item-extra { color: #94A3B8; }

html[data-theme="dark"] .global-search-overlay {
  background: rgba(2, 6, 23, 0.62);
}

html[data-theme="dark"] .global-search-panel {
  background: rgba(15, 23, 42, 0.98);
  border: 1px solid rgba(148, 163, 184, 0.22);
  box-shadow: 0 28px 70px rgba(0, 0, 0, 0.56);
  color: #E5E7EB;
}

html[data-theme="dark"] .global-search-input-wrap,
html[data-theme="dark"] .global-search-hint {
  border-color: rgba(148, 163, 184, 0.18);
  color: #CBD5E1;
}

html[data-theme="dark"] .global-search-input {
  color: #F8FAFC;
}

html[data-theme="dark"] .global-search-input::placeholder {
  color: #94A3B8;
}

html[data-theme="dark"] .global-search-close {
  color: #CBD5E1;
}

html[data-theme="dark"] .global-search-close:hover,
html[data-theme="dark"] .global-search-item:hover,
html[data-theme="dark"] .global-search-item:focus-visible {
  background: rgba(51, 65, 85, 0.72);
  color: #F8FAFC;
}

html[data-theme="dark"] .global-search-empty,
html[data-theme="dark"] .global-search-item-meta,
html[data-theme="dark"] .global-search-item-subtitle {
  color: #CBD5E1;
}

html[data-theme="dark"] .global-search-group-label,
html[data-theme="dark"] .global-search-item-extra {
  color: #94A3B8;
}

html[data-theme="dark"] .global-search-item-title {
  color: #F8FAFC;
}

@media (max-width: 640px) {
  .global-search-overlay { padding-top: 20px; align-items: stretch; }
  .global-search-panel { max-height: 92vh; border-radius: 14px; width: calc(100vw - 24px); }
}

/* ============================================================
   SHORTCUT PANEL — C-2 (2026-05-11)
   按 ? 唤起的全局快捷键速查表，沿用 global-search 的视觉语言
   ============================================================ */
.shortcut-overlay {
  position: fixed;
  inset: 0;
  z-index: 65;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 80px;
  animation: fadeInOverlay 160ms ease-out;
}
.shortcut-panel {
  width: min(560px, calc(100vw - 32px));
  background: #FFFFFF;
  border-radius: 18px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.22), 0 8px 22px rgba(15, 23, 42, 0.08);
  border: 1px solid rgba(148, 163, 184, 0.18);
  max-height: calc(100vh - 120px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: shortcutPanelIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes shortcutPanelIn {
  from { opacity: 0; transform: translateY(-8px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.shortcut-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 22px 14px;
  border-bottom: 1px solid rgba(148, 163, 184, 0.18);
}
.shortcut-title {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.shortcut-title strong {
  font-size: 16px;
  color: #0F172A;
  font-weight: 700;
}
.shortcut-subtitle {
  font-size: 12px;
  color: #64748B;
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
}
.shortcut-close {
  width: 32px;
  height: 32px;
  border: none;
  background: rgba(148, 163, 184, 0.14);
  border-radius: 10px;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  color: #475569;
  flex-shrink: 0;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1);
}
.shortcut-close:hover { background: rgba(148, 163, 184, 0.22); transform: scale(1.04); }
.shortcut-body {
  padding: 14px 22px 22px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.shortcut-group-label {
  font-size: 12px;
  font-weight: 600;
  color: #94A3B8;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 8px;
}
.shortcut-list { display: flex; flex-direction: column; gap: 6px; }
.shortcut-row {
  display: grid;
  grid-template-columns: minmax(120px, auto) 1fr;
  align-items: center;
  gap: 16px;
  padding: 8px 12px;
  border-radius: 10px;
  transition: background-color 0.12s ease;
}
.shortcut-row:hover { background: rgba(148, 163, 184, 0.08); }
.shortcut-keys {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}
.shortcut-plus { color: #94A3B8; font-size: 12px; }
.shortcut-kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 24px;
  padding: 0 7px;
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: 12px;
  font-weight: 600;
  color: #1E293B;
  background: linear-gradient(180deg, #FFFFFF 0%, #F1F5F9 100%);
  border: 1px solid rgba(148, 163, 184, 0.45);
  border-bottom-width: 2px;
  border-radius: 6px;
  box-shadow: 0 1px 0 rgba(15, 23, 42, 0.05);
}
.shortcut-desc {
  font-size: 13px;
  color: #334155;
  line-height: 1.5;
}
@media (max-width: 640px) {
  .shortcut-overlay { padding: 16px; align-items: stretch; }
  .shortcut-panel { max-height: 90vh; border-radius: 14px; width: 100%; }
  .shortcut-row { grid-template-columns: minmax(96px, auto) 1fr; gap: 12px; }
}

/* ============================================================
   ENHANCED EMPTY STATE — C-3 (2026-05-11)
   旧 .empty-state 是纯文字 + 虚线框；.empty-state.enhanced 在上面叠加
   icon / title / desc / 可选 CTA，让"空"更亲切、更可操作。
   ============================================================ */
.empty-state.enhanced {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 36px 28px;
  text-align: center;
  background: linear-gradient(180deg, rgba(248, 250, 252, 0.96) 0%, rgba(241, 245, 249, 0.78) 100%);
  border: 1px dashed rgba(148, 163, 184, 0.4);
  border-radius: 18px;
  color: var(--text-sub, #475569);
  line-height: 1.6;
}
.empty-state.enhanced .empty-state-icon {
  width: 64px;
  height: 64px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.92);
  box-shadow: 0 4px 14px rgba(148, 163, 184, 0.18), inset 0 0 0 1px rgba(148, 163, 184, 0.18);
  color: #6366F1;
  margin-bottom: 4px;
}
.empty-state.enhanced .empty-state-title {
  font-size: 16px;
  font-weight: 600;
  color: #0F172A;
  margin-top: 4px;
}
.empty-state.enhanced .empty-state-desc {
  font-size: 13px;
  color: #64748B;
  max-width: 380px;
  margin: 0 auto;
}
.empty-state.enhanced .empty-state-action {
  margin-top: 12px;
  padding: 9px 18px;
  border: none;
  background: linear-gradient(135deg, #6366F1 0%, #818CF8 100%);
  color: #FFFFFF;
  font-size: 13px;
  font-weight: 600;
  border-radius: 10px;
  cursor: pointer;
  transition: transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 2px 8px rgba(99, 102, 241, 0.28);
}
.empty-state.enhanced .empty-state-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(99, 102, 241, 0.34);
}
.empty-state.enhanced .empty-state-action:active {
  transform: translateY(0);
  box-shadow: 0 1px 4px rgba(99, 102, 241, 0.28);
}
html[data-theme="dark"] .empty-state.enhanced {
  background: linear-gradient(180deg, rgba(30, 41, 59, 0.45) 0%, rgba(15, 23, 42, 0.32) 100%);
  border-color: rgba(148, 163, 184, 0.22);
}
html[data-theme="dark"] .empty-state.enhanced .empty-state-icon {
  background: rgba(30, 41, 59, 0.85);
  color: #A5B4FC;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28), inset 0 0 0 1px rgba(148, 163, 184, 0.18);
}
html[data-theme="dark"] .empty-state.enhanced .empty-state-title { color: #E2E8F0; }
html[data-theme="dark"] .empty-state.enhanced .empty-state-desc { color: #94A3B8; }
@media (max-width: 640px) {
  .empty-state.enhanced { padding: 28px 18px; gap: 8px; }
  .empty-state.enhanced .empty-state-icon { width: 52px; height: 52px; }
  .empty-state.enhanced .empty-state-icon svg { width: 32px; height: 32px; }
  .empty-state.enhanced .empty-state-title { font-size: 15px; }
  .empty-state.enhanced .empty-state-desc { font-size: 12.5px; }
}

/* ============================================================
   Detail-2：添加批注 chip — 增加视觉权重（钢笔 icon + hover 升级）
   ============================================================ */
.event-comment-chip {
  gap: 5px;
  transition: background 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}
.event-comment-chip::before {
  content: "";
  display: inline-block;
  width: 13px;
  height: 13px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z'/%3E%3Cpath d='m15 5 4 4'/%3E%3C/svg%3E") center/contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17 3a2.85 2.85 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z'/%3E%3Cpath d='m15 5 4 4'/%3E%3C/svg%3E") center/contain no-repeat;
  flex-shrink: 0;
}
.event-comment-chip:hover {
  background: var(--comment-color, var(--brand, #2563eb)) !important;
  color: #FFFFFF !important;
  box-shadow: 0 2px 8px rgba(37, 99, 235, 0.24);
  transform: translateY(-1px);
}
html[data-theme="dark"] .event-comment-chip:hover {
  box-shadow: 0 2px 12px rgba(99, 102, 241, 0.36);
}

/* ============================================================
   Detail-5：撤回按钮二次确认 danger 样式
   ============================================================ */
.confirm-danger {
  color: #DC2626 !important;
  font-weight: 600 !important;
  animation: confirm-pulse 0.3s ease;
}
@keyframes confirm-pulse {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.08); }
  100% { transform: scale(1); }
}
html[data-theme="dark"] .confirm-danger {
  color: #F87171 !important;
}

/* ============================================================
   ASSISTANT CHIP 折叠（v22 P0 UX，v36 升级：SVG caret + 旋转 + 优先级抢回）
   注意：base.css:24287 用 !important 把所有 .assistant-chip 改灰，所以这里
   也要用更具体选择器 + !important 才能让"更多 N 个"按钮显出折叠按钮的视觉。
   ============================================================ */
.assistant-chips-more {
  display: inline-block;
  margin: 0;
  padding: 0;
}
.assistant-chat-panel .assistant-chips-more > summary.assistant-chip-more,
.assistant-chips-more > summary.assistant-chip-more {
  list-style: none !important;
  cursor: pointer !important;
  user-select: none !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  color: #6366f1 !important;
  background: rgba(99, 102, 241, 0.08) !important;
  border: 1px dashed rgba(99, 102, 241, 0.34) !important;
  font-weight: 600 !important;
}
.assistant-chips-more > summary.assistant-chip-more::-webkit-details-marker {
  display: none;
}
.assistant-chips-more > summary.assistant-chip-more::marker {
  display: none;
  content: "";
}
.assistant-chip-more-caret {
  width: 11px;
  height: 11px;
  transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
  flex-shrink: 0;
}
.assistant-chips-more[open] .assistant-chip-more-caret {
  transform: rotate(180deg);
}
.assistant-chat-panel .assistant-chips-more[open] > summary.assistant-chip-more,
.assistant-chips-more[open] > summary.assistant-chip-more {
  background: linear-gradient(135deg, #6366f1, #8b5cf6) !important;
  color: #FFFFFF !important;
  border-color: transparent !important;
  border-style: solid !important;
  box-shadow: 0 4px 14px rgba(99, 102, 241, 0.28) !important;
}
.assistant-chat-panel .assistant-chips-more > summary.assistant-chip-more:hover,
.assistant-chips-more > summary.assistant-chip-more:hover {
  background: rgba(99, 102, 241, 0.14) !important;
  border-color: rgba(99, 102, 241, 0.5) !important;
}
.assistant-chat-panel .assistant-chips-more[open] > summary.assistant-chip-more:hover,
.assistant-chips-more[open] > summary.assistant-chip-more:hover {
  background: linear-gradient(135deg, #5b5fe3, #7c4ee8) !important;
}
.assistant-chips-more-panel {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
  padding: 10px;
  background: rgba(99, 102, 241, 0.04);
  border: 1px dashed rgba(99, 102, 241, 0.22);
  border-radius: 12px;
  width: 100%;
  animation: chipsMoreSlide 0.24s cubic-bezier(0.16, 1, 0.3, 1);
}
@keyframes chipsMoreSlide {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
html[data-theme="dark"] .assistant-chat-panel .assistant-chips-more > summary.assistant-chip-more,
html[data-theme="dark"] .assistant-chips-more > summary.assistant-chip-more {
  color: #a5b4fc !important;
  background: rgba(99, 102, 241, 0.12) !important;
  border-color: rgba(165, 180, 252, 0.32) !important;
}
html[data-theme="dark"] .assistant-chips-more-panel {
  background: rgba(99, 102, 241, 0.06);
  border-color: rgba(165, 180, 252, 0.22);
}

/* ============================================================
   Modal 拉长修复（v25 P0 UX）
   ============================================================
   问题：.modal-card / .login-card 基础类只有 overflow: hidden，
         没有 max-height；内容多时会超出视口被裁剪或被拉得很长。
   方案：给所有 modal-card 子类统一限高 + 内部 body 滚动。
*/

/* 基础 modal-card / login-card 默认高度上限 + flex 列布局 */
.modal-card,
.login-card {
  max-height: min(calc(100vh - 48px), 860px);
  max-height: min(calc(100dvh - 48px), 860px);
  display: flex;
  flex-direction: column;
}

/* modal-body / login-body 默认在超长时滚动 */
.modal-card > .modal-body,
.login-card > .login-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}

/* 针对 comment-modal-card 精简上限 */
.comment-modal-card {
  max-height: min(calc(100vh - 48px), 640px) !important;
  max-height: min(calc(100dvh - 48px), 640px) !important;
}

/* boss-welcome-card 原本强制 min-height: 82vh，取消强制高度 */
.boss-welcome-card {
  min-height: auto !important;
  max-height: min(calc(100vh - 48px), 760px);
  max-height: min(calc(100dvh - 48px), 760px);
}

/* auth-login-card 无 max-height，设一个合理上限 */
.login-card.auth-login-card {
  max-height: min(calc(100vh - 48px), 720px) !important;
  max-height: min(calc(100dvh - 48px), 720px) !important;
}
.login-card.auth-login-card > .login-body {
  overflow: auto;
  min-height: 0;
}

/* 2026-05-24：注册/邀请/忘记三视图卡片单独「跟内容走」，不被 720px 卡死。
   登录卡（不含 --register）保持 720px 上限，内部 panel 自滚以保住 hero 海报视觉。
   这块卡片本身没有 hero，全是表单，需要把所有字段都直观显示出来。 */
html body .login-card.auth-login-card.auth-shot-card.auth-shot-card--register {
  max-height: none !important;
  height: auto !important;
  min-height: auto !important;
}

/* 2026-05-17：注册/邀请/忘记密码卡片溢出修复
   ────────────────────────────────────────────────────────────────
   问题：用户在 1024×700 这种小屏 + 长表单（邀请加入 6 个字段 + 协议）下
        遇到"申请加入"按钮被视口底部裁切，无法点击的视觉 bug。
   2026-05-24 终极修复：直接关掉卡片 max-height，让卡片跟内容自然撑开；
        用户视觉反馈是想要"全部直观看见所有内容、不要可滑动的"。
        小屏上由父级 .login-overlay.auth-spotlight 接住溢出（页面级滚动）。 */
html body .auth-shot-card.auth-shot-card--register {
  overflow-y: visible !important;
  overflow-x: visible !important;
}
/* form 不要继承 flex 布局占满，让 body 自然撑开就行 */
html body .auth-shot-card.auth-shot-card--register .auth-reg-form {
  flex: 0 0 auto;
}

/* 同步规则：登录卡内部 panel 在小屏下也滚（前面的规则不变，加强一下兜底） */
html body .auth-shot-card > .auth-shot-shell {
  flex: 1 1 auto;
  min-height: 0;
  max-height: 100%;
  overflow: hidden;
}
html body .auth-shot-shell > .auth-shot-panel {
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  min-height: 0;
}
@media (max-width: 880px) {
  html body .auth-shot-card > .auth-shot-shell {
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  html body .auth-shot-shell > .auth-shot-hero {
    flex-shrink: 0;
  }
}

/* onboarding-modal-card 桌面端缺 max-height */
.onboarding-modal-card {
  max-height: min(calc(100vh - 48px), 780px);
  max-height: min(calc(100dvh - 48px), 780px);
}

/* mobile-sheet-app 是 grid 布局，不适用 flex，单独限高 */
.modal-card.mobile-sheet-app {
  max-height: min(calc(100vh - 16px), 100vh);
  max-height: min(calc(100dvh - 16px), 100dvh);
  display: grid !important;  /* 覆盖上面 display:flex */
}

/* event drawer 关闭按钮图标化（v24 P0 UX）*/
.icon-close-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid var(--line, rgba(0, 0, 0, 0.08));
  background: var(--layer-2, rgba(255, 255, 255, 0.6));
  color: var(--text-sub, #64748B);
  cursor: pointer;
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1);
}
.icon-close-button:hover {
  background: var(--bg-soft, #F1F5F9);
  color: var(--text-main, #0F172A);
  border-color: rgba(0, 0, 0, 0.15);
}
.icon-close-button:active {
  transform: scale(0.94);
}
.icon-close-button:focus-visible {
  outline: 2px solid var(--brand, #4F46E5);
  outline-offset: 2px;
}

/* =====================================================================
 * AI 气泡内 Markdown 元素样式
 *
 * 为什么要专门写：
 *   - LLM 回复里经常带 **粗体** / 表格 / 列表 / 代码块 / 引用，
 *     默认 UA 样式在气泡里会太大/太空/无边框，视觉很糟。
 *   - 所有规则都限定在 `.assistant-message.ai` 内部，用户气泡不受影响，
 *     其他页面组件也不受影响。
 *   - 暗色模式分支由 `html[data-theme="dark"]` 前缀覆盖。
 * ===================================================================== */

/* 首尾段落去 margin —— 气泡自己有内边距，里面 <p> 再加就太松 */
.assistant-message.ai > p:first-child,
.assistant-message.ai > *:first-child { margin-top: 0; }
.assistant-message.ai > p:last-child,
.assistant-message.ai > *:last-child { margin-bottom: 0; }

.assistant-message.ai p {
  margin: 8px 0;
  line-height: 1.66;
}

/* 标题：压缩字号避免把气泡撑得老大 */
.assistant-message.ai h1,
.assistant-message.ai h2,
.assistant-message.ai h3,
.assistant-message.ai h4,
.assistant-message.ai h5,
.assistant-message.ai h6 {
  margin: 14px 0 6px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--text-main, #0F172A);
}
.assistant-message.ai h1 { font-size: 1.2em; }
.assistant-message.ai h2 { font-size: 1.12em; }
.assistant-message.ai h3 { font-size: 1.05em; }
.assistant-message.ai h4,
.assistant-message.ai h5,
.assistant-message.ai h6 { font-size: 1em; }

/* 粗体：比默认再加点颜色对比 */
.assistant-message.ai strong,
.assistant-message.ai b {
  font-weight: 700;
  color: var(--text-main, #0F172A);
}

.assistant-message.ai em,
.assistant-message.ai i { font-style: italic; }

.assistant-message.ai del,
.assistant-message.ai s { opacity: 0.6; }

/* 列表：压缩 padding，避免气泡里缩进太深 */
.assistant-message.ai ul,
.assistant-message.ai ol {
  margin: 6px 0;
  padding-left: 22px;
}
.assistant-message.ai ul { list-style: disc; }
.assistant-message.ai ol { list-style: decimal; }
.assistant-message.ai li {
  margin: 2px 0;
  line-height: 1.6;
}
.assistant-message.ai li > p { margin: 2px 0; } /* 列表项里的段落 */

/* 行内代码：灰底圆角小色块 */
.assistant-message.ai code {
  background: rgba(15, 23, 42, 0.06);
  color: #c2185b;
  padding: 1px 6px;
  border-radius: 4px;
  font-family: 'SF Mono', Menlo, Consolas, 'Liberation Mono', 'Microsoft YaHei Mono', monospace;
  font-size: 0.92em;
  word-break: break-word;
}

/* 代码块：独立深色面板 + 横向滚动，不跟着换行 */
.assistant-message.ai pre {
  background: rgba(15, 23, 42, 0.92);
  color: #e2e8f0;
  padding: 12px 14px;
  border-radius: 10px;
  overflow-x: auto;
  margin: 10px 0;
  font-size: 12.5px;
  line-height: 1.55;
  white-space: pre;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.06);
}
.assistant-message.ai pre code {
  background: transparent;
  color: inherit;
  padding: 0;
  border-radius: 0;
  font-size: inherit;
  white-space: inherit;
}

/* 引用块：左竖线 + 浅色字 */
.assistant-message.ai blockquote {
  margin: 10px 0;
  padding: 4px 12px;
  border-left: 3px solid var(--brand, #4F46E5);
  background: rgba(79, 70, 229, 0.05);
  color: var(--text-soft, #475569);
  border-radius: 0 6px 6px 0;
}
.assistant-message.ai blockquote p { margin: 4px 0; }

/* 水平线 */
.assistant-message.ai hr {
  margin: 14px 0;
  border: 0;
  border-top: 1px solid rgba(15, 23, 42, 0.1);
}

/* 链接 */
.assistant-message.ai a {
  color: var(--brand, #4F46E5);
  text-decoration: underline;
  text-underline-offset: 2px;
  text-decoration-thickness: 1px;
  word-break: break-all;
}
.assistant-message.ai a:hover {
  color: var(--brand-strong, #4338CA);
  text-decoration-thickness: 2px;
}

/* 表格：老板最爱看的日程/风险就靠它
 * 关键取舍：
 *   - 少列表格（3-4 列）：不撑满气泡，按内容宽度显示，避免右边一大片留白
 *   - 多列表格（列数多到超过气泡）：限制最大宽度 + 横向滚动
 * 用 `width: max-content; max-width: 100%;` 组合同时满足两种情况
 */
.assistant-message.ai table {
  border-collapse: collapse;
  margin: 10px 0;
  width: max-content;
  max-width: 100%;
  font-size: 0.95em;
  display: block;
  overflow-x: auto;
  white-space: nowrap;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.7);
  box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.08);
}
.assistant-message.ai table thead {
  background: rgba(79, 70, 229, 0.08);
}
.assistant-message.ai table th {
  padding: 8px 12px;
  font-weight: 700;
  color: var(--text-main, #0F172A);
  text-align: left;
  border-bottom: 1px solid rgba(15, 23, 42, 0.1);
  white-space: nowrap;
}
.assistant-message.ai table td {
  padding: 7px 12px;
  border-bottom: 1px solid rgba(15, 23, 42, 0.06);
  color: var(--text-main, #0F172A);
  vertical-align: top;
}
.assistant-message.ai table tr:last-child td { border-bottom: 0; }
.assistant-message.ai table tr:nth-child(even) td { background: rgba(15, 23, 42, 0.02); }
.assistant-message.ai table th[align="right"],
.assistant-message.ai table td[align="right"] { text-align: right; }
.assistant-message.ai table th[align="center"],
.assistant-message.ai table td[align="center"] { text-align: center; }

/* 图片：限制最大宽度，避免撑爆气泡 */
.assistant-message.ai img {
  max-width: 100%;
  border-radius: 8px;
  margin: 6px 0;
}

/* 暗色模式覆盖 */
html[data-theme="dark"] .assistant-message.ai code {
  background: rgba(255, 255, 255, 0.08);
  color: #ff80ab;
}
html[data-theme="dark"] .assistant-message.ai pre {
  background: rgba(0, 0, 0, 0.5);
  color: #e2e8f0;
}
html[data-theme="dark"] .assistant-message.ai blockquote {
  background: rgba(147, 197, 253, 0.08);
  border-left-color: #93c5fd;
  color: #cbd5e1;
}
html[data-theme="dark"] .assistant-message.ai hr {
  border-top-color: rgba(226, 232, 240, 0.15);
}
html[data-theme="dark"] .assistant-message.ai table {
  background: rgba(15, 23, 42, 0.6);
  box-shadow: 0 0 0 1px rgba(226, 232, 240, 0.12);
}
html[data-theme="dark"] .assistant-message.ai table thead {
  background: rgba(147, 197, 253, 0.12);
}
html[data-theme="dark"] .assistant-message.ai table th {
  border-bottom-color: rgba(226, 232, 240, 0.18);
  color: #f1f5f9;
}
html[data-theme="dark"] .assistant-message.ai table td {
  border-bottom-color: rgba(226, 232, 240, 0.08);
  color: #e2e8f0;
}
html[data-theme="dark"] .assistant-message.ai table tr:nth-child(even) td {
  background: rgba(255, 255, 255, 0.03);
}
html[data-theme="dark"] .assistant-message.ai a {
  color: #93c5fd;
}

/* 老板指令卡"更多"折叠（v24 P0 UX）*/
.command-card-actions-compact {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.command-more-actions {
  position: relative;
  margin: 0;
  padding: 0;
}
.command-more-summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 32px;
  padding: 0 10px;
  border-radius: 8px;
  font-size: 16px;
  letter-spacing: 2px;
  line-height: 1;
}
.command-more-summary::-webkit-details-marker { display: none; }
.command-more-summary::marker { content: ""; }
.command-more-actions[open] .command-more-summary {
  background: var(--brand-soft, rgba(79, 70, 229, 0.08));
  color: var(--brand, #4F46E5);
}

/* event drawer "更多"折叠（v26 #05）— 复用 command-more 模式 */
.event-more-actions {
  position: relative;
  margin: 0;
  padding: 0;
}
.event-more-summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  height: 32px;
  padding: 0 10px;
  border-radius: 8px;
  font-size: 16px;
  letter-spacing: 2px;
  line-height: 1;
}
.event-more-summary::-webkit-details-marker { display: none; }
.event-more-summary::marker { content: ""; }
.event-more-actions[open] .event-more-summary {
  background: var(--brand-soft, rgba(79, 70, 229, 0.08));
  color: var(--brand, #4F46E5);
}
.event-more-panel {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 20;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 180px;
  padding: 8px;
  background: var(--bg-card, #FFFFFF);
  border: 1px solid var(--line, rgba(0, 0, 0, 0.08));
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
}
.event-more-panel .ghost-button {
  width: 100%;
  text-align: left;
  white-space: nowrap;
}
.event-more-panel .event-danger-action {
  color: #B42318;
  border-top: 1px solid var(--line, rgba(0, 0, 0, 0.08));
  margin-top: 2px;
  padding-top: 8px;
}
.event-more-panel .event-danger-action:hover {
  background: rgba(180, 35, 24, 0.08);
}
html[data-theme="dark"] .event-more-panel {
  background: rgba(16, 27, 45, 0.98);
  border-color: rgba(137, 155, 179, 0.2);
}
html[data-theme="dark"] .event-more-panel .event-danger-action {
  color: #FCA5A5;
  border-top-color: rgba(137, 155, 179, 0.2);
}

/* 桌面会议详情抽屉：把临时表格感收成正式信息面板 */
html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-content {
  gap: 14px !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-group {
  padding: 14px 16px !important;
  border: 1px solid var(--v4-line-2, rgba(15, 23, 42, 0.08)) !important;
  border-radius: 12px !important;
  background: rgba(255, 255, 255, 0.74) !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04) !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-group h5 {
  margin: 0 0 10px !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  color: var(--v4-ink-1, var(--text-main)) !important;
  letter-spacing: 0 !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta,
html body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta {
  gap: 0 !important;
  border: 1px solid var(--v4-line-2, rgba(15, 23, 42, 0.08)) !important;
  border-radius: 10px !important;
  background: rgba(248, 250, 252, 0.72) !important;
  overflow: hidden !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta-item,
html body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta-item {
  display: grid !important;
  grid-template-columns: minmax(78px, 0.34fr) minmax(0, 1fr) !important;
  align-items: start !important;
  justify-content: start !important;
  gap: 12px !important;
  min-width: 0 !important;
  padding: 9px 12px !important;
  border-bottom: 1px solid var(--v4-line-2, rgba(15, 23, 42, 0.08)) !important;
  color: var(--v4-ink-2, var(--text-main)) !important;
  font-size: 13px !important;
  line-height: 1.55 !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta-item:last-child,
html body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta-item:last-child {
  border-bottom: 0 !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta-item strong,
html body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta-item strong {
  min-width: 0 !important;
  color: var(--v4-ink-3, var(--text-sub)) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  line-height: 1.55 !important;
  white-space: nowrap !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta-item span,
html body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta-item span {
  min-width: 0 !important;
  text-align: left !important;
  color: var(--v4-ink-1, var(--text-main)) !important;
  overflow-wrap: anywhere !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-group > .split-actions {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) auto !important;
  align-items: center !important;
  gap: 8px !important;
  margin: 0 0 10px !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-group > .split-actions > button,
html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-group > .split-actions > .event-more-actions > summary {
  min-height: 34px !important;
  padding: 0 12px !important;
  border-radius: 9px !important;
  font-size: 12.5px !important;
  font-weight: 650 !important;
  justify-content: center !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-subnote {
  max-width: 42em !important;
  margin: 0 0 10px !important;
  color: var(--v4-ink-3, var(--text-sub)) !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .priority-dropdown-wrap {
  display: grid !important;
  grid-template-columns: 58px minmax(0, 1fr) !important;
  align-items: center !important;
  gap: 10px !important;
  margin-top: 0 !important;
}

html body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .priority-dropdown-wrap select {
  width: 100% !important;
  max-width: none !important;
  min-height: 36px !important;
  border-radius: 9px !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-group {
  background: rgba(15, 23, 42, 0.58) !important;
  border-color: rgba(137, 155, 179, 0.18) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta {
  background: rgba(15, 23, 42, 0.42) !important;
  border-color: rgba(137, 155, 179, 0.16) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta {
  background: rgba(15, 23, 42, 0.42) !important;
  border-color: rgba(137, 155, 179, 0.16) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .detail-drawer:not(.mobile) .detail-meta-item,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .event-detail-modal-card .detail-meta-item {
  border-bottom-color: rgba(137, 155, 179, 0.14) !important;
}

/* priority-dropdown-wrap 的小增强（浅色 + 深色抽屉双兼容）*/
.priority-dropdown-wrap select {
  appearance: none;
  -webkit-appearance: none;
  padding: 8px 32px 8px 10px !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23475569' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'></polyline></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: right 10px center !important;
  background-color: #FFFFFF !important;
  color: #0F172A !important;
}
.priority-dropdown-wrap select:focus-visible {
  outline: 2px solid var(--brand, #4F46E5);
  outline-offset: 1px;
}
.priority-dropdown-wrap label {
  color: var(--text-sub, #64748B) !important;
}

/* ============================================================
   v5 hero 卡："今日重点" 按设计稿重做
   ============================================================
   为什么不沿用 .stat-card-* 类？
     base.css 对 .stat-card-title / .stat-card-visual / .stat-card-priority
     堆了大量 !important 覆盖，直接改无法收场。我在 JS 里换了一组 .v5-hero-*
     的全新类名，本段选择器优先级够高（.app-shell .v5-hero-card .v5-hero-xxx）
     + 必要处 !important，能稳定把卡面貌覆盖成视觉稿的样子。
     其他 4 张 metric 卡不走这里，保持原样。
   ============================================================ */

.app-shell .v5-hero-card {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  min-height: 348px !important;
  padding: 28px 30px 26px !important;
  overflow: hidden !important;
  border-radius: 18px !important;
  background: linear-gradient(139deg, #5368ff 0%, #465bf3 44%, #3156d9 100%) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.26), 0 14px 30px rgba(49, 86, 217, 0.22) !important;
}

/* —— 顶栏：左 ☆+标签 / 右 P1 徽章 —— */
.app-shell .v5-hero-card .v5-hero-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 34px;
}
.app-shell .v5-hero-card .v5-hero-head-left {
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.app-shell .v5-hero-card .v5-hero-glyph {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.18);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.14);
  color: rgba(255, 255, 255, 0.95);
}
.app-shell .v5-hero-card .v5-hero-glyph svg {
  width: 18px;
  height: 18px;
  display: block;
  transform: translateY(0.5px);
}
.app-shell .v5-hero-card .v5-hero-label {
  font-size: 24px !important;
  font-weight: 750 !important;
  color: rgba(255, 255, 255, 0.68) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  margin: 0 !important;
}

/* 优先级徽章：橙色胶囊 */
.app-shell .v5-hero-card .v5-hero-priority {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 54px;
  height: 36px;
  padding: 0 12px;
  border-radius: 8px;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 0.02em;
  color: #ffffff;
  background: #F59E0B;
  box-shadow: 0 2px 6px rgba(245, 158, 11, 0.35);
  flex-shrink: 0;
}
.app-shell .v5-hero-card .v5-hero-priority.priority-p2 {
  background: #8B5CF6;
  box-shadow: 0 2px 6px rgba(139, 92, 246, 0.35);
}
.app-shell .v5-hero-card .v5-hero-priority.priority-p3,
.app-shell .v5-hero-card .v5-hero-priority.priority-p4,
.app-shell .v5-hero-card .v5-hero-priority.priority-p5 {
  background: rgba(255, 255, 255, 0.22);
  color: #ffffff;
  box-shadow: none;
}

/* —— 倒计时胶囊：⏱ + 文本，显示距离会议开始的时间
 * 5 种 tone 对应不同状态：
 *   far   → 蓝白色（距 2h+）
 *   near  → 蓝色（距 < 60min）
 *   soon  → 黄色（10min 内开始）
 *   live  → 红色 + 闪烁点（进行中）
 *   ended → 灰色（已结束）
 */
.app-shell .v5-hero-card .v5-hero-countdown {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  height: 26px;
  padding: 0 10px 0 8px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0;
  white-space: nowrap;
  background: rgba(255, 255, 255, 0.16);
  color: rgba(255, 255, 255, 0.94);
  backdrop-filter: blur(4px);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18);
  margin-left: auto;  /* 推到 P1 徽章左边 */
  flex-shrink: 0;
}
.app-shell .v5-hero-card .v5-hero-countdown svg {
  width: 14px;
  height: 14px;
  stroke: currentColor;
  flex-shrink: 0;
}
.app-shell .v5-hero-card .v5-hero-countdown.tone-near {
  background: rgba(96, 165, 250, 0.32);
  color: #ffffff;
  box-shadow: inset 0 0 0 1px rgba(147, 197, 253, 0.5);
}
.app-shell .v5-hero-card .v5-hero-countdown.tone-soon {
  background: rgba(250, 204, 21, 0.34);
  color: #fff8d4;
  box-shadow: inset 0 0 0 1px rgba(252, 211, 77, 0.55);
}
.app-shell .v5-hero-card .v5-hero-countdown.tone-live {
  background: rgba(239, 68, 68, 0.45);
  color: #ffffff;
  box-shadow: inset 0 0 0 1px rgba(252, 165, 165, 0.65), 0 0 0 0 rgba(239, 68, 68, 0.6);
  animation: v5HeroCountdownPulse 1.4s ease-in-out infinite;
}
.app-shell .v5-hero-card .v5-hero-countdown.tone-ended {
  background: rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.5);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
}
@keyframes v5HeroCountdownPulse {
  0%   { box-shadow: inset 0 0 0 1px rgba(252, 165, 165, 0.65), 0 0 0 0 rgba(239, 68, 68, 0.55); }
  60%  { box-shadow: inset 0 0 0 1px rgba(252, 165, 165, 0.65), 0 0 0 8px rgba(239, 68, 68, 0); }
  100% { box-shadow: inset 0 0 0 1px rgba(252, 165, 165, 0.65), 0 0 0 0 rgba(239, 68, 68, 0); }
}

/* —— 大号标题 ——
 * 设计稿里主标题非常醒目（单行大白字，占卡片上半部视觉重量主轴）。
 * 卡宽 ≈ 370，padding 22×2=44，装饰占右 130+5 gap = 135，可用标题宽 ≈ 191px。
 * 字号 28px / 6 字 ≈ 175px，刚好塞进；更长标题自动 ellipsis。
 */
.app-shell .v5-hero-card .v5-hero-title {
  margin: 18px 0 0 !important;
  padding: 0 !important;
  font-size: clamp(32px, 2.55vw, 38px) !important;
  font-weight: 850 !important;
  line-height: 1.08 !important;
  color: #ffffff !important;
  letter-spacing: -0.015em !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: calc(100% - 178px);
  z-index: 2;
}
.app-shell .v5-hero-card .v5-hero-title.is-empty {
  max-width: 100%;
  font-size: 22px !important;
  white-space: normal;
}

/* —— 时钟图标 + 时间/部门 —— */
.app-shell .v5-hero-card .v5-hero-meta {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: rgba(255, 255, 255, 0.82);
  font-size: 22px;
  font-weight: 650;
  margin: 2px 0 0;
}
.app-shell .v5-hero-card .v5-hero-meta-icon {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
  opacity: 0.9;
}

/* —— 盾牌胶囊按钮："建议提前准备" —— */
.app-shell .v5-hero-card .v5-hero-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  width: fit-content;
  max-width: calc(100% - 170px);
  padding: 12px 18px;
  margin-top: 6px;
  border-radius: 13px;
  background: rgba(255, 255, 255, 0.12);
  border: 2px solid rgba(255, 255, 255, 0.32);
  backdrop-filter: blur(6px);
  color: #ffffff;
  font-size: 22px;
  font-weight: 760;
  line-height: 1;
  cursor: default;
  transition: background 0.18s var(--ease-out, ease), border-color 0.18s var(--ease-out, ease);
}
.app-shell .v5-hero-card .v5-hero-pill:hover {
  background: rgba(255, 255, 255, 0.18);
  border-color: rgba(255, 255, 255, 0.40);
}
.app-shell .v5-hero-card .v5-hero-pill-icon {
  width: 27px;
  height: 27px;
  flex-shrink: 0;
}
.app-shell .v5-hero-card .v5-hero-pill.is-danger {
  background: rgba(248, 113, 113, 0.20);
  border-color: rgba(252, 165, 165, 0.52);
  color: #ffe4e6;
}
.app-shell .v5-hero-card .v5-hero-pill.is-danger:hover {
  background: rgba(248, 113, 113, 0.28);
}

/* —— 底部副文案 ——
 * 目标图里副文案贴卡片底部、通宽显示（不受日历遮挡）。
 * 做法：
 *   margin-top: auto 让 flex column 把剩余空间全推到副文案上方（=胶囊和副文案之间留大间距）
 *   max-width: 100% 不限宽（日历此时已在中右侧，副文案贴底不和日历重叠）
 *   日历底边距 ~50px 以上，留出副文案一行显示空间
 */
.app-shell .v5-hero-card .v5-hero-note {
  margin: auto 0 0 !important;
  padding: 0 !important;
  font-size: 21px !important;
  line-height: 1.35 !important;
  color: rgba(255, 255, 255, 0.78) !important;
  font-weight: 720 !important;
  max-width: 100% !important;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}

/* —— 中右侧线稿日历装饰 ——
 * 目标视觉稿：装饰从顶栏下方开始，贯穿到接近底部，130×130 大尺寸。
 * top: 42 = 大致和大标题的顶部对齐；bottom 不锁死（aspect ratio 1:1）
 * right: 18 = 距卡片右边缘 18px，和卡片 padding 22 呼应
 * 用 !important 是因为 base.css 对 .stat-card 内的 SVG 有通用规则
 * （display: block + width:auto），不锁死 position/size 会被拉回 flex 流。
 */
.app-shell .v5-hero-card .v5-hero-art,
.app-shell .stat-card.v5-hero-card > svg.v5-hero-art {
  position: absolute !important;
  right: 22px !important;
  top: 50% !important;
  bottom: auto !important;
  left: auto !important;
  width: 170px !important;
  height: 150px !important;
  max-width: 170px !important;
  max-height: 150px !important;
  min-width: 0 !important;
  min-height: 0 !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  color: rgba(255, 255, 255, 0.85) !important;
  opacity: 0.95 !important;
  pointer-events: none;
  /* 保证装饰在文本后面 */
  z-index: 0 !important;
  transform: translateY(-50%) !important;
  transform-origin: center !important;
  filter: drop-shadow(0 6px 18px rgba(15, 23, 42, 0.18));
  animation: v5HeroArtFloat 5.5s ease-in-out infinite;
}

@keyframes v5HeroArtFloat {
  0%, 100% { transform: translateY(-50%) translateX(0) rotate(0deg); }
  25%      { transform: translateY(calc(-50% - 4px)) translateX(-2px) rotate(-1.2deg); }
  50%      { transform: translateY(calc(-50% - 6px)) translateX(0) rotate(0deg); }
  75%      { transform: translateY(calc(-50% - 4px)) translateX(2px) rotate(1.2deg); }
}

/* sticker 元素脉冲：让红色"今天"和绿色"勾"轻微呼吸 */
.app-shell .v5-hero-card .v5-hero-art > circle[fill="#ef4444"],
.app-shell .v5-hero-card .v5-hero-art > circle[fill="#22c55e"] {
  transform-origin: center;
  transform-box: fill-box;
  animation: v5HeroStickerPulse 2.4s ease-in-out infinite;
}
.app-shell .v5-hero-card .v5-hero-art > circle[fill="#22c55e"] {
  animation-delay: 0.8s;
}

@keyframes v5HeroStickerPulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.18); }
}

/* sparkle 三个小亮点错峰闪烁 */
.app-shell .v5-hero-card .v5-hero-art > circle[r="1.6"],
.app-shell .v5-hero-card .v5-hero-art > circle[r="1.2"],
.app-shell .v5-hero-card .v5-hero-art > circle[r="1"] {
  transform-origin: center;
  transform-box: fill-box;
  animation: v5HeroSparkle 1.8s ease-in-out infinite;
}
.app-shell .v5-hero-card .v5-hero-art > circle[r="1.2"] { animation-delay: 0.4s; }
.app-shell .v5-hero-card .v5-hero-art > circle[r="1"]   { animation-delay: 0.8s; }

@keyframes v5HeroSparkle {
  0%, 100% { opacity: 0.4; transform: scale(0.7); }
  50%      { opacity: 1;   transform: scale(1.7); }
}

/* 减少动效：尊重系统设置 */
@media (prefers-reduced-motion: reduce) {
  .app-shell .v5-hero-card .v5-hero-art,
  .app-shell .v5-hero-card .v5-hero-art > circle {
    animation: none !important;
  }
}

/* 卡片内部文字节点 z-index 比装饰高，确保可点击可读 */
.app-shell .v5-hero-card > *:not(.v5-hero-art) {
  position: relative;
  z-index: 1;
}

.app-shell .v5-hero-card > .v5-hero-title {
  position: relative;
  z-index: 2 !important;
}

@media (max-width: 1180px) {
  .app-shell:not(.mobile-shell) .v5-hero-card {
    gap: 8px !important;
    min-height: 258px !important;
    padding: 18px 20px 20px !important;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-head {
    min-height: 26px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-head-left {
    gap: 8px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-glyph {
    width: 30px;
    height: 30px;
  }
  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-glyph svg {
    width: 18px;
    height: 18px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-label {
    font-size: 15px !important;
    color: rgba(255, 255, 255, 0.78) !important;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-priority {
    min-width: 40px;
    height: 28px;
    font-size: 16px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-title {
    margin-top: 14px !important;
    font-size: 25px !important;
    max-width: calc(100% - 132px);
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-meta {
    gap: 6px;
    font-size: 14px;
    font-weight: 600;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-meta-icon {
    width: 17px;
    height: 17px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-pill {
    max-width: calc(100% - 106px);
    padding: 8px 12px;
    margin-top: 4px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    gap: 7px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-pill-icon {
    width: 18px;
    height: 18px;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-note {
    font-size: 13px !important;
    line-height: 1.45 !important;
    font-weight: 650 !important;
  }

  .app-shell:not(.mobile-shell) .v5-hero-card .v5-hero-art,
  .app-shell:not(.mobile-shell) .stat-card.v5-hero-card>svg.v5-hero-art {
    right: 8px !important;
    top: 74px !important;
    width: 128px !important;
    height: 112px !important;
    max-width: 128px !important;
    max-height: 112px !important;
    color: rgba(255, 255, 255, 0.28) !important;
  }
}

/* 移动端紧凑：标题 / 字体 / 日历装饰缩一号 */
.app-shell.mobile-shell .v5-hero-card {
  padding: 16px 18px 18px !important;
  gap: 8px;
}
.app-shell.mobile-shell .v5-hero-card .v5-hero-title {
  font-size: 22px !important;
  max-width: calc(100% - 100px);
}
.app-shell.mobile-shell .v5-hero-card .v5-hero-art {
  width: 92px;
  height: 82px;
  right: 10px;
  bottom: 10px;
}
.app-shell.mobile-shell .v5-hero-card .v5-hero-pill,
.app-shell.mobile-shell .v5-hero-card .v5-hero-note {
  max-width: calc(100% - 100px);
}

/* 暗色模式：hero 卡本来就是深紫渐变底，无需反色；只微调装饰线稿让它稍显一点 */
html[data-theme="dark"] .app-shell .v5-hero-card .v5-hero-art {
  color: rgba(255, 255, 255, 0.42) !important;
}

/* ============================================================
   END v5 THEME OVERRIDE (v22)
   ============================================================ */


/* ============================================================
   助理侧栏 v25：标题图标 + 合并框（老板指令 + 老板同步）
   - 每个 section 标题从 "<h5>xx</h5>" 升级为 "<div.assistant-block-heading>
       <span.assistant-block-icon>SVG</span><h5>xx</h5>
     </div>"，图标和标题在同一水平行对齐
   - 合并框 .boss-command-aggregate 在原 .assistant-block.mailbox-theme-panel
     基础上再加内部子区段 (.assistant-subsection) + 细分割线
   ============================================================ */

.assistant-block-heading {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 6px;
}
.assistant-block-heading h5 {
  margin: 0 !important;
  flex: 1 1 auto;
  min-width: 0;
}
.assistant-block-icon {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
}
.assistant-block-icon svg {
  display: block;
}

/* h6 子区段标题前的小图标（最近指令 / 老板同步） */
.assistant-subsection-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-right: 6px;
  vertical-align: -3px;
  flex: 0 0 auto;
}
.assistant-subsection-icon svg {
  display: block;
  width: 18px;
  height: 18px;
}
.assistant-block .assistant-subsection-head h6 {
  display: inline-flex;
  align-items: center;
  gap: 0;
}

/* 合并框内部：两个子区段（最近指令 / 老板同步）之间的节奏 */
.assistant-block.boss-command-aggregate > .detail-subnote {
  margin: 0 0 14px;
}
.assistant-block.boss-command-aggregate .assistant-subsection {
  margin-top: 0;
}
.assistant-block.boss-command-aggregate .assistant-subsection + .assistant-subsection,
.assistant-block.boss-command-aggregate .assistant-subsection-divider + .assistant-subsection {
  margin-top: 0;
}

/* 子区段标题行（"最近指令" / "老板同步" 等 h6） */
.assistant-block .assistant-subsection-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.assistant-block .assistant-subsection-head h6 {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-main, #1c1740);
  letter-spacing: 0;
  text-transform: none;
  line-height: 1.2;
}
.assistant-block .assistant-subsection-head .split-actions {
  gap: 6px;
  flex-wrap: wrap;
}

/* 子区段分割线：两端淡出的细线，和卡面融为一体 */
.assistant-block.boss-command-aggregate .assistant-subsection-divider {
  margin: 18px -4px 16px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(137, 155, 179, 0.32), transparent);
  border: 0;
}
html[data-theme="dark"] .assistant-block.boss-command-aggregate .assistant-subsection-divider {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.18), transparent);
}

/* 合并后的大框整体：最近指令段稍紧凑（卡片 padding 已由 .command-list 控制），
   老板同步段的 mailbox-preview-card 原样保留 */
.assistant-block.boss-command-aggregate .assistant-subsection-commands .command-list.history {
  margin: 0;
}
.assistant-block.boss-command-aggregate .assistant-subsection-mailbox .assistant-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 12px;
}
.assistant-block.boss-command-aggregate .assistant-subsection-mailbox .mailbox-preview-footer {
  display: flex;
  justify-content: flex-end;
}

/* 助理侧栏各消息块：区域内滚动，避免只渲染 2 条却标 4 条待处理 */
.assistant-panel .assistant-scroll-stack {
  max-height: min(260px, 38vh);
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: rgba(99, 102, 241, 0.38) transparent;
  padding-right: 2px;
}
.assistant-panel .assistant-scroll-stack.command-list.history {
  max-height: min(300px, 42vh);
}
.assistant-panel .assistant-scroll-stack::-webkit-scrollbar {
  width: 5px;
  height: 5px;
}
.assistant-panel .assistant-scroll-stack::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: rgba(99, 102, 241, 0.38);
}
.assistant-panel .assistant-scroll-stack::-webkit-scrollbar-track {
  background: transparent;
}
html[data-theme="dark"] .assistant-panel .assistant-scroll-stack {
  scrollbar-color: rgba(129, 140, 248, 0.42) transparent;
}
html[data-theme="dark"] .assistant-panel .assistant-scroll-stack::-webkit-scrollbar-thumb {
  background: rgba(129, 140, 248, 0.42);
}

/* ============================================================
   v37: 侧栏品牌区可点击折叠（点 logo+标题区切换 sideNavCollapsed）
   ============================================================ */
button.nav-brand-row {
  background: none !important;
  border: none !important;
  padding: 6px 8px !important;
  margin: 0 !important;
  cursor: pointer !important;
  border-radius: 12px !important;
  font-family: inherit !important;
  font-size: inherit !important;
  color: inherit !important;
  text-align: left !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  position: relative !important;
  transition: background 0.18s ease !important;
}
button.nav-brand-row:hover,
button.nav-brand-row:active,
button.nav-brand-row:focus,
button.nav-brand-row:focus-visible {
  background: transparent !important;
  outline: none !important;
}
.nav-brand-collapse-caret {
  width: 14px !important;
  height: 14px !important;
  margin-left: auto !important;
  flex-shrink: 0 !important;
  color: rgba(100, 116, 139, 0.55) !important;
  opacity: 0 !important;
  transition: opacity 0.18s ease, transform 0.22s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
button.nav-brand-row:hover .nav-brand-collapse-caret,
button.nav-brand-row:focus-visible .nav-brand-collapse-caret {
  opacity: 1 !important;
}
.side-nav.collapsed .nav-brand-collapse-caret {
  display: none !important;
}

/* ============================================================
   侧边栏收起态彻底隐藏品牌文字（修：base.css:23556 用 display:grid !important
   把 .nav-brand-copy 强行重写，导致折叠态「星期几」标题溢出 + 被压扁
   后看起来像乱码竖条。这里用更高特异度+!important 强行清场）
   ============================================================ */
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-brand-copy,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-brand-title,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-brand-tagline,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .app-brand-tagline,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-brand h2,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-brand p,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-label,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-micro-heart {
  display: none !important;
}

/* 折叠态 brand-row（按钮）也要居中铺满 68px */
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-brand-row {
  display: flex !important;
  justify-content: center !important;
  width: 100% !important;
  padding: 0 !important;
}

/* v183d — 折叠态 brand-mark 与右侧 page-header icon 水平对齐
   v183e — 展开态 brand-row padding-top +10 后折叠态再补偿 15→10 */
html body .app-shell:not(.mobile-shell) .side-nav.collapsed {
  padding-top: 10px !important;
}

/* ============================================================
   老板同步 mailbox-preview-card 左侧色条 ↔ event-card 视觉对齐
   v183 — user 反馈"老板同步条要跟会议卡上面条一致"
   - width 6px → 4px (跟 .event-card::before 一致)
   - 颜色: 红 #ef4444 → brand 紫 #4F46E5 (跟 .event-card 部门色 fallback 一致)
   - radius 18px → 4px (跟 .event-card 一致)
   - 去掉 dark mode 红光阴影
   ============================================================ */
html body .app-shell .mailbox-preview-card::before {
  width: 4px !important;
  background: var(--mailbox-preview-accent, var(--v4-brand, #4F46E5)) !important;
  border-radius: 4px 0 0 4px !important;
  top: 0 !important;
  bottom: 0 !important;
  left: 0 !important;
}
html[data-theme="dark"] body .app-shell .mailbox-preview-card::before {
  background: var(--mailbox-preview-accent, #818cf8) !important;
  box-shadow: none !important;
}

/* 修 base.css:18313 把 mailbox-preview-card 的 overflow 强行覆盖成 visible
   导致 ::before 左侧红条超出圆角向外戳。把 overflow 拉回 hidden 让色条
   被父容器圆角裁剪、贴合卡片边缘。 */
html body .app-shell .assistant-panel .mailbox-preview-card,
html body .app-shell .mailbox-preview-card {
  overflow: hidden !important;
}

/* ============================================================
   设置菜单 3 row（账号 / 教程 / 团队）+ 退出登录 风格统一
   - 原 base.css:1273 / :1539 用饱和蓝渐变背景 + 白色实心图标
     → 浅色像 iOS 蓝胶囊、深色像饱和蓝块，跟首页 indigo 渐变 / 低饱和卡片
       的风格对不上
   - 这里整体改成跟主页 v5 hero / stat-card 一致：
     - 图标容器：透明度 indigo 边框 + 透明渐变背景（rgba 8-14% alpha）
     - 图标本身：light theme 用 #4f46e5 (indigo-600)、dark theme 用 #a5b4fc (indigo-300)
     - row 自身：扁平 + hover 才显出 indigo 高光
   ============================================================ */
html body .app-shell .nav-settings-actions {
  gap: 6px !important;
}

html body .app-shell .nav-settings-row {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: 14px !important;
  padding: 10px 12px !important;
  min-height: 56px !important;
  gap: 12px !important;
  display: grid !important;
  grid-template-columns: 40px 1fr 16px !important;
  align-items: center !important;
  box-shadow: none !important;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease !important;
  transform: none !important;
}

html body .app-shell .nav-settings-row:hover {
  background: rgba(99, 102, 241, 0.08) !important;
  border-color: rgba(99, 102, 241, 0.22) !important;
  box-shadow: 0 6px 18px rgba(79, 70, 229, 0.12) !important;
  transform: translateY(-1px) !important;
}

html body .app-shell .nav-settings-row .nav-settings-row-icon,
html body .app-shell .nav-settings-id-row .nav-settings-row-icon {
  width: 40px !important;
  height: 40px !important;
  border-radius: 12px !important;
  background: linear-gradient(135deg, rgba(79, 70, 229, 0.10), rgba(99, 102, 241, 0.18)) !important;
  border: 1px solid rgba(99, 102, 241, 0.18) !important;
  color: #4f46e5 !important;
  box-shadow: none !important;
  transform: none !important;
  transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease !important;
  flex: 0 0 40px !important;
}

html body .app-shell .nav-settings-row:hover .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(79, 70, 229, 0.20), rgba(99, 102, 241, 0.28)) !important;
  border-color: rgba(99, 102, 241, 0.45) !important;
  color: #4338ca !important;
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.18) !important;
  transform: none !important;
}

html body .app-shell .nav-settings-row-copy strong {
  font-size: 14px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
  color: var(--text-main) !important;
}

html body .app-shell .nav-settings-row-copy span {
  font-size: 11.5px !important;
  font-weight: 500 !important;
  line-height: 1.45 !important;
  color: var(--text-soft) !important;
  margin-top: 2px !important;
}

html body .app-shell .nav-settings-chevron {
  width: 14px !important;
  height: 14px !important;
  color: rgba(99, 102, 241, 0.45) !important;
  transition: color 0.18s ease, transform 0.18s ease !important;
}

html body .app-shell .nav-settings-row:hover .nav-settings-chevron {
  color: #4f46e5 !important;
  transform: translateX(3px) !important;
}

/* 深色主题：indigo 调子继续，稍亮 */
html[data-theme="dark"] body .app-shell .nav-settings-row {
  border-color: transparent !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row:hover {
  background: rgba(129, 140, 248, 0.10) !important;
  border-color: rgba(129, 140, 248, 0.28) !important;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.32) !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row .nav-settings-row-icon,
html[data-theme="dark"] body .app-shell .nav-settings-id-row .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(129, 140, 248, 0.22)) !important;
  border-color: rgba(129, 140, 248, 0.28) !important;
  color: #a5b4fc !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row:hover .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.30), rgba(129, 140, 248, 0.40)) !important;
  border-color: rgba(165, 180, 252, 0.5) !important;
  color: #c7d2fe !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row-copy strong {
  color: #e2e8f0 !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row-copy span {
  /* v23-fix: 原 rgba(203,213,225,0.72) 在深色背景上对比度不足，看不清副标题文字。
     提升到全不透明 #cbd5e1（slate-300），对比主标题 #e2e8f0 仍有层次差，但阅读不吃力。 */
  color: #cbd5e1 !important;
  opacity: 1 !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-chevron {
  color: rgba(165, 180, 252, 0.45) !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row:hover .nav-settings-chevron {
  color: #c7d2fe !important;
}

/* 退出登录 row：保持红色警示但跟整体风格一致（柔和 red 而非鲜红） */
html body .app-shell .nav-settings-row.nav-settings-logout .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.10), rgba(248, 113, 113, 0.18)) !important;
  border-color: rgba(239, 68, 68, 0.22) !important;
  color: #dc2626 !important;
}

html body .app-shell .nav-settings-row.nav-settings-logout:hover {
  background: rgba(239, 68, 68, 0.08) !important;
  border-color: rgba(239, 68, 68, 0.25) !important;
}

html body .app-shell .nav-settings-row.nav-settings-logout:hover .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.20), rgba(248, 113, 113, 0.28)) !important;
  color: #b91c1c !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.18), rgba(248, 113, 113, 0.25)) !important;
  border-color: rgba(248, 113, 113, 0.32) !important;
  color: #fca5a5 !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout:hover {
  background: rgba(248, 113, 113, 0.10) !important;
  border-color: rgba(248, 113, 113, 0.32) !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout:hover .nav-settings-row-icon {
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.30), rgba(248, 113, 113, 0.40)) !important;
  color: #fecaca !important;
}

/* ============================================================
   设置菜单 v3：editorial / utility menu 风格（去 AI 味）
   - 去掉 lavender 图标容器，改裸 line icon
   - 行用 hairline 分隔代替 card 外观
   - hover 只用 5% 极细渐变 + 左侧 2px indigo 强调条
   - chevron 14px 低透明度
   - mini-label 大写小字号 → 期刊感
   ============================================================ */

/* ── row 容器：去 card 化 ─────────────────────────────── */
html body .app-shell .nav-settings-row,
html body .app-shell .nav-settings-id-row {
  border-radius: 0 !important;
  border: none !important;
  background: transparent !important;
  margin: 0 !important;
  position: relative !important;
  transform: none !important;
  box-shadow: none !important;
  transition: background 0.18s ease !important;
}

html body .app-shell .nav-settings-row {
  padding: 14px 14px 14px 16px !important;
  align-items: center !important;
}

html body .app-shell .nav-settings-id-row {
  padding: 12px 14px 12px 16px !important;
}

/* hairline 分隔（每行之间） */
html body .app-shell .nav-settings-id-row + .nav-settings-id-row,
html body .app-shell .nav-settings-id-row + .nav-settings-row,
html body .app-shell .nav-settings-row + .nav-settings-row {
  border-top: 1px solid rgba(99, 102, 241, 0.08) !important;
}

/* 分组分隔（divider）变细 */
html body .app-shell .nav-settings-divider {
  margin: 6px 14px !important;
  border-color: rgba(99, 102, 241, 0.10) !important;
  background: rgba(99, 102, 241, 0.10) !important;
  height: 1px !important;
}

/* hover：极细 5% 渐变 + 左侧 2px indigo 条 */
html body .app-shell .nav-settings-row:hover {
  background: linear-gradient(90deg, rgba(99, 102, 241, 0.06), rgba(99, 102, 241, 0)) !important;
  border-color: transparent !important;
  box-shadow: none !important;
  transform: none !important;
}

html body .app-shell .nav-settings-row:hover::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 2px !important;
  height: 22px !important;
  background: linear-gradient(180deg, #4f46e5, #818cf8) !important;
  border-radius: 0 2px 2px 0 !important;
}

/* ── icons：裸 line icon，无容器 ─────────────────── */
html body .app-shell .nav-settings-row .nav-settings-row-icon,
html body .app-shell .nav-settings-id-row .nav-settings-row-icon {
  width: 22px !important;
  height: 22px !important;
  padding: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  border: none !important;
  color: #6366f1 !important;
  box-shadow: none !important;
  flex: 0 0 22px !important;
  transform: none !important;
}

html body .app-shell .nav-settings-id-row .nav-settings-row-icon {
  width: 20px !important;
  height: 20px !important;
  flex: 0 0 20px !important;
}

html body .app-shell .nav-settings-row:hover .nav-settings-row-icon {
  color: #4338ca !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

/* ── 文字层次：title 14/600 + sub 12/400 ────────── */
html body .app-shell .nav-settings-row-copy {
  gap: 2px !important;
}

html body .app-shell .nav-settings-row-copy > strong {
  font-size: 14px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  color: var(--text-main) !important;
  line-height: 1.36 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

html body .app-shell .nav-settings-row-copy > span {
  font-size: 12px !important;
  color: #6b7280 !important;
  line-height: 1.42 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

/* ── id-row mini-label：uppercase 期刊感 ─────────── */
html body .app-shell .nav-settings-id-row .mini-label {
  font-size: 10.5px !important;
  color: #9ca3af !important;
  letter-spacing: 0.05em !important;
  text-transform: uppercase !important;
  font-weight: 600 !important;
  margin-bottom: 2px !important;
  line-height: 1 !important;
}

html body .app-shell .nav-settings-id-row strong {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--text-main) !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
}

/* ── chevron：缩小、低透明度 ──────────────────── */
html body .app-shell .nav-settings-chevron {
  width: 14px !important;
  height: 14px !important;
  color: #9ca3af !important;
  opacity: 0.5 !important;
  flex: 0 0 14px !important;
  transition: transform 0.18s ease, color 0.18s ease, opacity 0.18s ease !important;
}

html body .app-shell .nav-settings-row:hover .nav-settings-chevron {
  color: #6366f1 !important;
  opacity: 1 !important;
  transform: translateX(2px) !important;
}

/* ── 退出登录：保持红色警示但同款裸图标 ──────── */
html body .app-shell .nav-settings-row.nav-settings-logout .nav-settings-row-icon {
  color: #dc2626 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

html body .app-shell .nav-settings-row.nav-settings-logout:hover {
  background: linear-gradient(90deg, rgba(239, 68, 68, 0.06), rgba(239, 68, 68, 0)) !important;
}

html body .app-shell .nav-settings-row.nav-settings-logout:hover::before {
  background: linear-gradient(180deg, #dc2626, #f87171) !important;
}

html body .app-shell .nav-settings-row.nav-settings-logout:hover .nav-settings-row-icon {
  color: #b91c1c !important;
  background: transparent !important;
}

html body .app-shell .nav-settings-row.nav-settings-logout:hover .nav-settings-chevron {
  color: #dc2626 !important;
  opacity: 0.9 !important;
}

/* ── 深色主题适配 ────────────────────────────── */
html[data-theme="dark"] body .app-shell .nav-settings-id-row + .nav-settings-id-row,
html[data-theme="dark"] body .app-shell .nav-settings-id-row + .nav-settings-row,
html[data-theme="dark"] body .app-shell .nav-settings-row + .nav-settings-row {
  border-top-color: rgba(165, 180, 252, 0.10) !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-divider {
  border-color: rgba(165, 180, 252, 0.10) !important;
  background: rgba(165, 180, 252, 0.10) !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row:hover {
  background: linear-gradient(90deg, rgba(129, 140, 248, 0.10), rgba(129, 140, 248, 0)) !important;
  border-color: transparent !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row .nav-settings-row-icon,
html[data-theme="dark"] body .app-shell .nav-settings-id-row .nav-settings-row-icon {
  color: #a5b4fc !important;
  background: transparent !important;
  border: none !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row:hover .nav-settings-row-icon {
  color: #c7d2fe !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row-copy > strong,
html[data-theme="dark"] body .app-shell .nav-settings-id-row strong {
  color: #f1f5f9 !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row-copy > span {
  /* v23-fix: 与 line ~2838 保持一致，提升副标题对比度 */
  color: #cbd5e1 !important;
  opacity: 1 !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-id-row .mini-label {
  color: #64748b !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-chevron {
  color: #64748b !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row:hover .nav-settings-chevron {
  color: #a5b4fc !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout .nav-settings-row-icon {
  color: #fca5a5 !important;
  background: transparent !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout:hover {
  background: linear-gradient(90deg, rgba(248, 113, 113, 0.10), rgba(248, 113, 113, 0)) !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout:hover .nav-settings-row-icon {
  color: #fecaca !important;
}

html[data-theme="dark"] body .app-shell .nav-settings-row.nav-settings-logout:hover .nav-settings-chevron {
  color: #fca5a5 !important;
}

/* ============================================================
   stat-card tooltip 改成 indigo 风格（之前是 base.css:2732 的深灰胶囊）
   - 浅色主题：白底 + indigo 边框 + indigo 字
   - 深色主题：深 indigo 底 + 浅 indigo 字
   - 同时 base.css 里的逻辑改了——tooltip 只显示"真被截断"的那行文字
   ============================================================ */
html:not([data-theme="dark"]) body .stat-card-tooltip {
  border: 1px solid rgba(99, 102, 241, 0.28) !important;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(238, 242, 255, 0.96)) !important;
  color: #312e81 !important;
  box-shadow:
    0 18px 36px rgba(79, 70, 229, 0.14),
    inset 0 1px 0 rgba(255, 255, 255, 0.85) !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
}

html:not([data-theme="dark"]) body .stat-card-tooltip::after {
  border-right-color: rgba(99, 102, 241, 0.28) !important;
  border-bottom-color: rgba(99, 102, 241, 0.28) !important;
}

html[data-theme="dark"] body .stat-card-tooltip {
  border: 1px solid rgba(129, 140, 248, 0.32) !important;
  background: linear-gradient(180deg, rgba(30, 27, 75, 0.96), rgba(24, 24, 60, 0.94)) !important;
  color: #c7d2fe !important;
  box-shadow:
    0 22px 44px rgba(2, 6, 23, 0.5),
    inset 0 1px 0 rgba(165, 180, 252, 0.08) !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
}

html[data-theme="dark"] body .stat-card-tooltip::after {
  border-right-color: rgba(129, 140, 248, 0.32) !important;
  border-bottom-color: rgba(129, 140, 248, 0.32) !important;
}

/* ============================================================
   深色主题 page-header 图标颜色适配
   - 原 base.css:22461 用 brightness(0) + invert+sepia+hue-rotate
     把 SVG 里硬编码 #1F73FF 蓝映射成 light 主题下的 #4a6cf7 蓝
   - 那个滤镜在深色背景上看起来是饱和的紫蓝，对比度过高刺眼
   - 这里覆盖深色主题的 filter，让色调对齐 .brand-mark-svg-calendar 在
     深色主题下用的 #93c5fd 浅蓝（更柔和，跟暗背景搭配）
   ============================================================ */
html[data-theme="dark"] body .app-shell .homepage-panel-icon-img,
html[data-theme="dark"] body .app-shell .assistant-home-reference-icon-symbol img,
html[data-theme="dark"] body .app-shell .assistant-route-reference-icon-symbol img,
html[data-theme="dark"] body .app-shell img.sidebar-wechat-icon-img {
  /* 把黑像素映射到 #93c5fd ≈ rgb(147,197,253) 浅蓝 */
  filter: brightness(0) saturate(100%) invert(78%) sepia(45%) saturate(394%) hue-rotate(184deg) brightness(101%) contrast(98%) !important;
}

/* 同步处理移动端顶部 mobile-header-title-icon 的 SVG/img 子元素 */
html[data-theme="dark"] .app-shell.mobile-shell .mobile-header-title-icon .homepage-panel-icon-svg,
html[data-theme="dark"] .app-shell.mobile-shell .mobile-header-title-icon .homepage-panel-icon-img {
  color: #93c5fd !important;
}
html[data-theme="dark"] button.nav-brand-row:hover,
html[data-theme="dark"] button.nav-brand-row:active,
html[data-theme="dark"] button.nav-brand-row:focus,
html[data-theme="dark"] button.nav-brand-row:focus-visible {
  background: transparent !important;
}
html[data-theme="dark"] .nav-brand-collapse-caret {
  color: rgba(165, 180, 252, 0.6) !important;
}

/* ============================================================
   v82: 侧栏品牌区图标改为内联 SVG（透明、theme-aware）
   - 浅色：品牌蓝 #2563eb，柔和蓝色 drop-shadow
   - 深色：浅蓝 #93c5fd，drop-shadow 收弱避免过亮
   - 标题用 serif Black + 宽距，对齐 login-brand-vertical 视觉
   ============================================================ */
.brand-mark .brand-mark-svg-calendar {
  color: #2563eb;
  filter: drop-shadow(0 8px 20px rgba(37, 99, 235, 0.18));
  width: 100%;
  height: 100%;
  display: block;
  overflow: visible;
}
html[data-theme="dark"] .brand-mark .brand-mark-svg-calendar {
  color: #93c5fd;
  filter: drop-shadow(0 6px 16px rgba(147, 197, 253, 0.22));
}

/* 让标题更接近 login-brand-vertical 的 serif Black 字形 */
.app-shell .nav-brand-title,
.app-shell .app-brand-title {
  font-family: "Noto Serif SC", var(--font-display, "Noto Serif SC"), serif !important;
  font-weight: 900 !important;
  letter-spacing: 0.04em !important;
}
.app-shell:not(.mobile-shell) .nav-brand-title {
  letter-spacing: 0.04em !important;
}
html[data-theme="dark"] .app-shell .nav-brand-title,
html[data-theme="dark"] .app-shell .app-brand-title {
  color: #f1f5f9 !important;
}

/* ========== 议程池左栏底部双知识卡（填补留白） ==========
   v23-tighten：原 margin-top:14 + padding-top:14 = 28px 上间距过松，
   下方又有 panel-body 默认 22px padding，合计 ~54px 留白。
   收紧到 12px + 10px = 22px 上间距，下方靠 panel-body padding 收 14px。*/
.pending-knowledge-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px dashed rgba(148, 163, 184, 0.25);
}

@media (max-width: 540px) {
  .pending-knowledge-grid { grid-template-columns: 1fr; }
}

.pending-knowledge-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 14px 16px;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, 0.20);
  background: linear-gradient(180deg, #FFFFFF 0%, rgba(248, 250, 255, 0.85) 100%);
  box-shadow: 0 1px 0 rgba(15, 23, 42, 0.02), 0 6px 16px rgba(15, 23, 42, 0.04);
  overflow: hidden;
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.pending-knowledge-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg, var(--pkc-tone-a, #6366F1), var(--pkc-tone-b, #8B5CF6));
  opacity: 0.85;
}

.pending-knowledge-card:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--pkc-tone-a, #6366F1) 35%, rgba(148,163,184,0.20));
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.08);
}

.pending-knowledge-card--flow { --pkc-tone-a: #6366F1; --pkc-tone-b: #8B5CF6; }
.pending-knowledge-card--tip  { --pkc-tone-a: #F59E0B; --pkc-tone-b: #EF4444; }

.pending-knowledge-illust {
  width: 100%;
  aspect-ratio: 200 / 110;
  border-radius: 10px;
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--pkc-tone-a) 8%, white) 0%,
    color-mix(in srgb, var(--pkc-tone-b) 6%, white) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid color-mix(in srgb, var(--pkc-tone-a) 18%, rgba(148,163,184,0.15));
}

.pending-knowledge-illust svg {
  width: 100%;
  height: 100%;
  display: block;
}

.pending-knowledge-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--text-main, #0F172A);
  margin: 0;
  letter-spacing: 0.01em;
}

.pending-knowledge-steps,
.pending-knowledge-tips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.pending-knowledge-steps li,
.pending-knowledge-tips li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 12.5px;
  line-height: 1.55;
  color: var(--text-sub, #475569);
}

.pending-knowledge-steps li strong,
.pending-knowledge-tips li strong {
  color: var(--text-main, #0F172A);
  font-weight: 700;
}

.pending-knowledge-step-num {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--pkc-tone-a) 0%, var(--pkc-tone-b) 100%);
  color: white;
  margin-top: 2px;
  box-shadow: 0 2px 6px color-mix(in srgb, var(--pkc-tone-a) 30%, transparent);
}

.pending-knowledge-dot {
  flex-shrink: 0;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-top: 6px;
  background: #94A3B8;
}

.pending-knowledge-dot[data-tone="indigo"] { background: linear-gradient(135deg, #6366F1, #8B5CF6); }
.pending-knowledge-dot[data-tone="amber"]  { background: linear-gradient(135deg, #F59E0B, #EF4444); }
.pending-knowledge-dot[data-tone="green"]  { background: linear-gradient(135deg, #10B981, #059669); }

/* dark theme */
html[data-theme="dark"] .pending-knowledge-card {
  background: linear-gradient(180deg, rgba(30, 41, 59, 0.65) 0%, rgba(15, 23, 42, 0.55) 100%);
  border-color: rgba(148, 163, 184, 0.18);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 8px 18px rgba(0, 0, 0, 0.30);
}

html[data-theme="dark"] .pending-knowledge-illust {
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--pkc-tone-a) 16%, rgba(15, 23, 42, 0.6)) 0%,
    color-mix(in srgb, var(--pkc-tone-b) 12%, rgba(15, 23, 42, 0.6)) 100%);
  border-color: color-mix(in srgb, var(--pkc-tone-a) 30%, rgba(148, 163, 184, 0.20));
}

html[data-theme="dark"] .pending-knowledge-title {
  color: #E2E8F0;
}

html[data-theme="dark"] .pending-knowledge-steps li,
html[data-theme="dark"] .pending-knowledge-tips li {
  color: #94A3B8;
}

html[data-theme="dark"] .pending-knowledge-steps li strong,
html[data-theme="dark"] .pending-knowledge-tips li strong {
  color: #F1F5F9;
}

html[data-theme="dark"] .pending-knowledge-grid {
  border-top-color: rgba(148, 163, 184, 0.18);
}

@media (min-width: 960px) {
  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row {
    grid-template-columns: 2.5fr repeat(4, minmax(0, 1fr)) !important;
    gap: 8px !important;
    align-items: stretch !important;
    justify-self: stretch !important;
    width: 100% !important;
    max-width: none !important;
    margin-inline: 0 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stats-featured,
  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .featured-card,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stats-featured,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .featured-card {
    grid-column: auto !important;
    grid-area: auto !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card {
    min-height: 90px !important;
    padding: 10px 14px !important;
    border-radius: 16px !important;
    gap: 4px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-glyph,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-glyph {
    width: 30px !important;
    height: 30px !important;
    border-radius: 10px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-value,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-value {
    font-size: 48px !important;
    line-height: 1 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-label,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-label {
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-note,
  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-subnote,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-note,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-subnote {
    font-size: 11.5px !important;
    line-height: 1.28 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-card,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-card {
    min-height: 90px !important;
    padding: 10px 14px !important;
    border-radius: 16px !important;
    gap: 4px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-head,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-head {
    min-height: 20px !important;
    gap: 6px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-head-left,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-head-left {
    gap: 6px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-glyph,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-glyph {
    width: 30px !important;
    height: 30px !important;
    border-radius: 10px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-glyph svg,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-glyph svg {
    width: 18px !important;
    height: 18px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-label,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-label {
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-priority,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-priority {
    min-width: 42px !important;
    height: 24px !important;
    padding: 0 8px !important;
    border-radius: 10px !important;
    font-size: 15px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-title,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-title {
    margin-top: 2px !important;
    font-size: clamp(18px, 1.25vw, 22px) !important;
    line-height: 1.08 !important;
    max-width: calc(100% - 72px) !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-meta,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-meta {
    gap: 5px !important;
    margin: 0 !important;
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-meta-icon,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-meta-icon {
    width: 14px !important;
    height: 14px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-pill,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-pill {
    max-width: calc(100% - 72px) !important;
    margin-top: 2px !important;
    padding: 5px 10px !important;
    border-width: 1px !important;
    border-radius: 12px !important;
    gap: 5px !important;
    font-size: 12px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-pill-icon,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-pill-icon {
    width: 14px !important;
    height: 14px !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-note,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-note {
    font-size: 11.5px !important;
    line-height: 1.25 !important;
    font-weight: 600 !important;
    -webkit-line-clamp: 1 !important;
    line-clamp: 1 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .v5-hero-art,
  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row.stat-card.v5-hero-card > svg.v5-hero-art,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .v5-hero-art,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row.stat-card.v5-hero-card > svg.v5-hero-art {
    /* v25-illust6: 138×124；v23: 用户反馈"插画往右移动一点"，right 32 → 16 */
    top: 50% !important;
    right: 16px !important;
    bottom: auto !important;
    left: auto !important;
    transform: translateY(calc(-50% + 22px)) !important;
    width: 138px !important;
    height: 124px !important;
    max-width: 138px !important;
    max-height: 124px !important;
  }
}

@media (min-width: 960px) {
  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-head,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-head {
    min-height: 24px !important;
    margin-bottom: 0 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-value,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-value {
    margin: 0 !important;
  }

  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-note,
  body .app-shell:not(.mobile-shell)[data-role="assistant"] .stats-row .stat-card-subnote,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-note,
  body .app-shell:not(.mobile-shell)[data-role="boss"] .stats-row .stat-card-subnote {
    margin: 0 !important;
  }
}

/* ============================================================
   v64: 待办列表 panel-header 的 filter-chip 强制单排显示
   - 默认 .split-actions flex-wrap:wrap 会让 3 个 chip 折成 2 行
   - 让 panel-title 可收缩（min-width:0），filter chip 不换行
   ============================================================ */
.app-shell:not(.mobile-shell) .todo-layout .panel-header {
  align-items: center !important;
  flex-wrap: nowrap !important;
}
.app-shell:not(.mobile-shell) .todo-layout .panel-header .panel-title {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
.app-shell:not(.mobile-shell) .todo-layout .panel-header .split-actions {
  flex-wrap: nowrap !important;
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}
.app-shell:not(.mobile-shell) .todo-layout .panel-header .filter-chip {
  flex: 0 0 auto !important;
  white-space: nowrap !important;
}

/* ============================================================
   v65: 改动同步通知 / 老板批注 卡片紧凑版
   - 单卡 padding 缩到 12-14px、行距收紧、按钮变小
   - 整列加 max-height + overflow，4+ 条不会撑爆面板
   ============================================================ */
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .panel-body .mailbox-feed {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  align-content: start !important;
  grid-auto-rows: min-content !important;
  max-height: clamp(280px, 56vh, 520px) !important;
  overflow-y: auto !important;
  padding-right: 4px !important;
  scrollbar-gutter: stable !important;
  gap: 10px !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item {
  padding: 12px 14px 12px 18px !important;
  border-radius: 14px !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item::before {
  width: 3px !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-header {
  margin-bottom: 6px !important;
  gap: 8px !important;
  flex-wrap: nowrap !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-header .split-actions {
  gap: 6px !important;
  flex-wrap: nowrap !important;
  min-width: 0 !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-header .badge {
  font-size: 11px !important;
  padding: 2px 8px !important;
  min-height: 20px !important;
  border-radius: 6px !important;
  line-height: 1.2 !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-header .pill-muted {
  font-size: 11px !important;
  padding: 2px 8px !important;
  min-height: 20px !important;
  border-radius: 999px !important;
  line-height: 1.2 !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-header .command-card-meta {
  font-size: 11.5px !important;
  white-space: nowrap !important;
  flex-shrink: 0 !important;
  color: rgba(148, 163, 184, 0.78) !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item strong {
  font-size: 13.5px !important;
  line-height: 1.34 !important;
  margin-bottom: 2px !important;
  letter-spacing: -0.01em !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item p {
  font-size: 12.5px !important;
  line-height: 1.5 !important;
  margin: 0 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  color: var(--text-sub, rgba(203, 213, 225, 0.78)) !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-actions {
  margin-top: 8px !important;
  gap: 6px !important;
  flex-wrap: wrap !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-actions .ghost-button,
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-actions .action-button {
  min-height: 28px !important;
  padding: 0 12px !important;
  font-size: 12px !important;
  border-radius: 999px !important;
  font-weight: 600 !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-actions .status-pill {
  min-height: 22px !important;
  padding: 2px 10px !important;
  font-size: 11px !important;
}

/* ============================================================
   v66: 微信识别表单底部「这是外出 / 拜访相关行程」开关瘦身
   - 原 .inbox-reference-switch 在 grid 父容器里被拉成全宽
   - 改为 max-content 自适应，左对齐，padding 收紧
   ============================================================ */
.inbox-reference-form .inbox-reference-switch {
  width: max-content !important;
  max-width: 100% !important;
  justify-self: start !important;
  align-self: start !important;
  min-height: 40px !important;
  padding: 8px 14px !important;
  border-radius: 12px !important;
  font-size: 13px !important;
  gap: 8px !important;
}
.inbox-reference-form .inbox-reference-switch input,
.inbox-reference-switch input[type="checkbox"] {
  width: 16px !important;
  height: 16px !important;
  min-width: 16px !important;
  min-height: 16px !important;
  border-radius: 5px !important;
}
.inbox-reference-form .inbox-reference-switch span {
  color: var(--text-sub, #667085) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
  white-space: nowrap !important;
}
.inbox-reference-form .inbox-reference-switch input[type="checkbox"]:checked {
  background: #4f46e5 !important;
  border-color: #4f46e5 !important;
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12) !important;
}

/* ============================================================
   v68: flatpickr 替换 Chrome 原生日期选择器，按 v5 紫色主题 + 玻璃面定制
   - 浅色：白底 + indigo 高亮
   - 深色：玻璃深色面 + indigo glow
   ============================================================ */

/* 卡片容器（关键：base.css 里 .flatpickr-calendar 的 box-shadow 会过暗，重写）*/
.flatpickr-calendar {
  --fp-bg: #ffffff;
  --fp-border: rgba(15, 23, 42, 0.08);
  --fp-text: #0f172a;
  --fp-text-muted: rgba(71, 85, 105, 0.78);
  --fp-accent: #4f46e5;
  --fp-accent-soft: rgba(79, 70, 229, 0.12);
  --fp-shadow: 0 18px 48px rgba(15, 23, 42, 0.18), 0 4px 12px rgba(15, 23, 42, 0.06);

  background: var(--fp-bg) !important;
  border: 1px solid var(--fp-border) !important;
  border-radius: 16px !important;
  box-shadow: var(--fp-shadow) !important;
  font-family: "Outfit", "Inter", "Noto Serif SC", system-ui, -apple-system, sans-serif !important;
  color: var(--fp-text) !important;
  padding: 10px 8px !important;
  width: auto !important;
  min-width: 304px !important;
}

html[data-theme="dark"] .flatpickr-calendar {
  --fp-bg: rgba(15, 23, 42, 0.96);
  --fp-border: rgba(255, 255, 255, 0.08);
  --fp-text: #e5e9f3;
  --fp-text-muted: rgba(203, 213, 225, 0.6);
  --fp-accent: #818cf8;
  --fp-accent-soft: rgba(129, 140, 248, 0.18);
  --fp-shadow: 0 24px 56px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.04), 0 0 64px -12px rgba(129, 140, 248, 0.28);
  backdrop-filter: blur(16px) saturate(1.1);
  -webkit-backdrop-filter: blur(16px) saturate(1.1);
}

/* 月份头部 */
.flatpickr-calendar .flatpickr-months {
  padding: 4px 6px 8px !important;
  align-items: center;
}
.flatpickr-calendar .flatpickr-month {
  background: transparent !important;
  color: var(--fp-text) !important;
  height: auto !important;
  border-radius: 0 !important;
}
.flatpickr-calendar .flatpickr-current-month {
  font-size: 14px !important;
  font-weight: 700 !important;
  color: var(--fp-text) !important;
  padding: 2px 0 !important;
}
.flatpickr-calendar .flatpickr-current-month .cur-year,
.flatpickr-calendar .flatpickr-current-month input.cur-year {
  color: var(--fp-text) !important;
  font-weight: 700 !important;
}
.flatpickr-calendar .flatpickr-current-month .flatpickr-monthDropdown-months {
  color: var(--fp-text) !important;
  background: transparent !important;
  font-weight: 700 !important;
}
.flatpickr-calendar .flatpickr-current-month .flatpickr-monthDropdown-months:hover {
  background: var(--fp-accent-soft) !important;
}

/* 上下月按钮 */
.flatpickr-calendar .flatpickr-prev-month,
.flatpickr-calendar .flatpickr-next-month {
  fill: var(--fp-text-muted) !important;
  color: var(--fp-text-muted) !important;
  width: 32px !important;
  height: 32px !important;
  padding: 6px !important;
  border-radius: 10px !important;
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1);
}
.flatpickr-calendar .flatpickr-prev-month:hover,
.flatpickr-calendar .flatpickr-next-month:hover {
  background: var(--fp-accent-soft) !important;
  fill: var(--fp-accent) !important;
  color: var(--fp-accent) !important;
}
.flatpickr-calendar .flatpickr-prev-month svg,
.flatpickr-calendar .flatpickr-next-month svg {
  fill: currentColor !important;
}

/* 周名行 */
.flatpickr-calendar .flatpickr-weekdays {
  background: transparent !important;
  height: 28px !important;
}
.flatpickr-calendar .flatpickr-weekday {
  color: var(--fp-text-muted) !important;
  font-weight: 600 !important;
  font-size: 12px !important;
  background: transparent !important;
}

/* 日期格 */
.flatpickr-calendar .flatpickr-days {
  width: auto !important;
}
.flatpickr-calendar .dayContainer {
  padding: 2px !important;
  width: auto !important;
  min-width: auto !important;
}
.flatpickr-calendar .flatpickr-day {
  color: var(--fp-text) !important;
  border-radius: 10px !important;
  font-weight: 500 !important;
  font-size: 13px !important;
  height: 36px !important;
  line-height: 36px !important;
  margin: 1px !important;
  border: 0 !important;
  max-width: calc(100% / 7 - 2px) !important;
  flex-basis: calc(100% / 7 - 2px) !important;
}
.flatpickr-calendar .flatpickr-day:hover {
  background: var(--fp-accent-soft) !important;
  color: var(--fp-accent) !important;
}
.flatpickr-calendar .flatpickr-day.today {
  border: 1px solid var(--fp-accent) !important;
  color: var(--fp-accent) !important;
  background: transparent !important;
  font-weight: 700 !important;
}
.flatpickr-calendar .flatpickr-day.today:hover {
  background: var(--fp-accent-soft) !important;
}
.flatpickr-calendar .flatpickr-day.selected,
.flatpickr-calendar .flatpickr-day.selected:hover {
  background: linear-gradient(180deg, #6366f1, var(--fp-accent)) !important;
  color: #ffffff !important;
  font-weight: 700 !important;
  border: 0 !important;
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.32) !important;
}
.flatpickr-calendar .flatpickr-day.prevMonthDay,
.flatpickr-calendar .flatpickr-day.nextMonthDay {
  color: var(--fp-text-muted) !important;
  opacity: 0.5;
}
.flatpickr-calendar .flatpickr-day.flatpickr-disabled {
  color: var(--fp-text-muted) !important;
  opacity: 0.3;
}

/* 时间选择行 */
.flatpickr-calendar .flatpickr-time {
  border-top: 1px solid var(--fp-border) !important;
  margin-top: 6px !important;
  padding-top: 8px !important;
  height: 44px !important;
}
.flatpickr-calendar .flatpickr-time input,
.flatpickr-calendar .flatpickr-time .flatpickr-time-separator,
.flatpickr-calendar .flatpickr-time .flatpickr-am-pm {
  color: var(--fp-text) !important;
  background: transparent !important;
  font-weight: 600 !important;
  font-size: 14px !important;
}
.flatpickr-calendar .flatpickr-time input:hover,
.flatpickr-calendar .flatpickr-time input:focus {
  background: var(--fp-accent-soft) !important;
  color: var(--fp-accent) !important;
}
.flatpickr-calendar .flatpickr-time .numInputWrapper:hover,
.flatpickr-calendar .flatpickr-time .numInputWrapper:focus-within {
  background: var(--fp-accent-soft) !important;
  border-radius: 8px !important;
}
.flatpickr-calendar .numInputWrapper span.arrowUp,
.flatpickr-calendar .numInputWrapper span.arrowDown {
  border: 0 !important;
}
.flatpickr-calendar .numInputWrapper span:hover svg {
  fill: var(--fp-accent) !important;
}

/* alt input：让选择后展示的中文格式与原 field 风格统一 */
.flatpickr-alt-input {
  cursor: pointer;
}

/* ============================================================
   v69: 微信识别工作区顶部「识别待安排 / 识别并生成日历」按钮单排
   - 默认 .inbox-reference-toolbar-actions flex-wrap:wrap 会折成 2 行
   - 改 nowrap，让 heading 收缩留出按钮空间
   ============================================================ */
.app-shell:not(.mobile-shell) .inbox-reference-toolbar {
  flex-wrap: nowrap !important;
  align-items: center !important;
}
.app-shell:not(.mobile-shell) .inbox-reference-toolbar > .inbox-reference-heading {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
.app-shell:not(.mobile-shell) .inbox-reference-toolbar-actions {
  flex-wrap: nowrap !important;
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}
.app-shell:not(.mobile-shell) .inbox-reference-toolbar-actions .ghost-button,
.app-shell:not(.mobile-shell) .inbox-reference-toolbar-actions .action-button {
  flex: 0 0 auto !important;
  white-space: nowrap !important;
}

/* ============================================================
   v70: 中等宽度（640~1140px）适配
   - 此区间侧栏已塌成 80px，但主区仍有 360px 右栏，导致内容横向溢出
   - 把 layout-assistant / layout-boss 在 1140px 以下改单栏（右栏堆叠下移）
   - 同步对智能对话、聊天气泡、chips 行做收缩，避免横向滚动
   - 顶 header 在窄屏纵向堆叠（避免动作按钮挤压标题描述）
   ============================================================ */
@media (max-width: 1140px) {
  .app-shell:not(.mobile-shell) .layout-assistant,
  .app-shell:not(.mobile-shell) .layout-boss,
  .app-shell:not(.mobile-shell)[data-role="assistant"] .layout-boss {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 14px !important;
  }

  /* 主内容 / 右栏在窄屏下都占满全宽 */
  .app-shell:not(.mobile-shell) .layout-assistant > *,
  .app-shell:not(.mobile-shell) .layout-boss > * {
    min-width: 0 !important;
    max-width: 100% !important;
  }

  /* 聊天气泡 / 输入框 / chips 容器全部不再溢出 */
  .app-shell:not(.mobile-shell) .assistant-chat-panel,
  .app-shell:not(.mobile-shell) .assistant-chat-bubble,
  .app-shell:not(.mobile-shell) .assistant-chips,
  .app-shell:not(.mobile-shell) .assistant-chat-input {
    max-width: 100% !important;
    min-width: 0 !important;
  }

  /* chips 单排可横滚，避免被截断 */
  .app-shell:not(.mobile-shell) .assistant-chips {
    overflow-x: auto !important;
    flex-wrap: nowrap !important;
    scrollbar-width: thin !important;
    padding-bottom: 4px !important;
  }
  .app-shell:not(.mobile-shell) .assistant-chips > * {
    flex-shrink: 0 !important;
  }

  /* 主内容 padding 收紧，给气泡/卡更多空间 */
  .app-shell:not(.mobile-shell) .panel-body {
    padding: 16px 14px !important;
  }
  .app-shell:not(.mobile-shell) .panel-header {
    padding: 16px 14px 10px !important;
  }

  /* 页面顶部 header 在窄屏下纵向堆叠：标题在上，操作按钮在下 */
  .app-shell:not(.mobile-shell) .page-header,
  .app-shell:not(.mobile-shell) .assistant-home-reference-topline,
  .app-shell:not(.mobile-shell) .assistant-route-reference-topline,
  .app-shell:not(.mobile-shell) .boss-pending-reference-topline {
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 12px !important;
  }
  .app-shell:not(.mobile-shell) .assistant-home-reference-lead,
  .app-shell:not(.mobile-shell) .assistant-route-reference-lead,
  .app-shell:not(.mobile-shell) .boss-pending-reference-lead {
    width: 100% !important;
    min-width: 0 !important;
  }

  /* 顶栏操作按钮可横滚，避免被裁切 */
  .app-shell:not(.mobile-shell) .assistant-home-reference-actions,
  .app-shell:not(.mobile-shell) .assistant-route-reference-actions,
  .app-shell:not(.mobile-shell) .boss-pending-reference-actions,
  .app-shell:not(.mobile-shell) .assistant-home-reference-controls,
  .app-shell:not(.mobile-shell) .assistant-route-reference-controls {
    width: 100% !important;
    min-width: 0 !important;
    overflow-x: auto !important;
    flex-wrap: nowrap !important;
    scrollbar-width: thin !important;
  }
  .app-shell:not(.mobile-shell) .assistant-home-reference-actions > *,
  .app-shell:not(.mobile-shell) .assistant-route-reference-actions > *,
  .app-shell:not(.mobile-shell) .boss-pending-reference-actions > *,
  .app-shell:not(.mobile-shell) .assistant-home-reference-controls > *,
  .app-shell:not(.mobile-shell) .assistant-route-reference-controls > * {
    flex-shrink: 0 !important;
  }

  /* 缩小标题图标盒，给文字让出空间 */
  .app-shell:not(.mobile-shell) .assistant-home-reference-lead .header-icon,
  .app-shell:not(.mobile-shell) .assistant-home-reference-lead .brand-icon,
  .app-shell:not(.mobile-shell) .assistant-home-reference-lead .desktop-header-icon {
    width: 44px !important;
    height: 44px !important;
    flex-shrink: 0 !important;
  }
}

/* ============================================================
   v71: 今日推进台标题修复 —— 图标 + 标题紧贴左侧，「继续对话」推到右侧
   原 .assistant-block-header 用 justify-content: space-between，
   导致 3 个 flex 子项被均分：图标在最左、标题在中间、按钮在最右，
   图标和标题之间出现大空缺。
   ============================================================ */
.assistant-block-header {
  justify-content: flex-start !important;
}
.assistant-block-header > h5 {
  margin-right: auto !important;
}

/* ============================================================
   v72: 收信箱「老板同步总览」4 张 stat 卡显示不全修复
   - 原 base.css 的 .mailbox-layout-redesigned .mailbox-overview-panel
     .stat-card 锁死 height: 112px，结合 72px 数字 + 描述行直接被切
   - 用更具体的 body .app-shell:not(.mobile-shell) 链路覆盖
   ============================================================ */
body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card,
body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card {
  min-height: 168px !important;
  height: auto !important;
  padding: 16px 16px 14px !important;
  overflow: visible !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-start !important;
  gap: 4px !important;
}
body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card small,
body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card small {
  font-size: 13px !important;
  line-height: 1.2 !important;
  margin-bottom: 2px !important;
}
body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card strong,
body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card strong {
  font-size: 48px !important;
  line-height: 1 !important;
  margin: 2px 0 6px !important;
  letter-spacing: -0.02em !important;
}
body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card span,
body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card span {
  font-size: 12.5px !important;
  line-height: 1.5 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 3 !important;
  line-clamp: 3 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  margin-top: auto !important;
}

/* ============================================================
   v73: 通用 .switch-field（待安排表单 / 待办编辑等）深色主题适配
   - base.css 里 .switch-field 只有浅色 #fbfdff 背景，深色下变成
     白底黑字+主题色覆盖文字 → 白底白字、不可读
   ============================================================ */
html[data-theme="dark"] .switch-field {
  background: rgba(17, 30, 49, 0.92) !important;
  border-color: rgba(137, 155, 179, 0.16) !important;
  color: var(--text-main, #e5e9f3) !important;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
}
html[data-theme="dark"] .switch-field span {
  color: var(--text-main, #e5e9f3) !important;
}
html[data-theme="dark"] .switch-field input[type="checkbox"] {
  accent-color: #6366f1;
}

/* ============================================================
   v83: page-header 图标和标题贴紧（覆盖 base.css:23812 的 grid 布局）
   - 原 base.css 用 grid-template-columns: 65px / column-gap: 18px，
     再加 SVG viewBox 0 0 512 ~ 7px 留白，整体看着 ~25px 空隙
   - 覆盖 specificity 必须 ≥ (0,4,0)，故 selector 重复 .app-shell 提至 (0,5,1)
   - 列宽收到 50px（仍能容下 SVG drawing），column-gap 收到 6px
   ============================================================ */
body .app-shell.app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-lead,
body .app-shell.app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-lead:not(.assistant-home-reference-lead),
body .app-shell.app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead {
  grid-template-columns: auto minmax(0, 1fr) !important;
  column-gap: 12px !important;
  gap: 12px !important;
}
body .app-shell.app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-lead > .assistant-homepage-reference-icon,
body .app-shell.app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-lead > .assistant-home-reference-icon-symbol,
body .app-shell.app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-lead > .assistant-route-reference-icon-symbol,
body .app-shell.app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-lead > .assistant-home-reference-icon-symbol,
body .app-shell.app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead > .assistant-homepage-reference-icon,
body .app-shell.app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead > .assistant-home-reference-icon-symbol {
  /* 让 v4-icon-final 的 64×64 接管 — 这里只是占位,让 width: auto 不溢出列 */
  width: 64px !important;
  height: 64px !important;
}

/* ============================================================
   v74: 页面顶部 page-header 紧凑化
   - 图标 65×65 → 44×44，缩小但仍保留视觉锚点
   - lead gap 14~28px → 10px，图标与标题贴近
   - title-stack h3 与 p 之间 margin-top 10px → 2px，标题正文一体感
   - p 去掉 min-height，避免 2 行死空高
   ============================================================ */
body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-lead > .assistant-homepage-reference-icon,
body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-lead > .assistant-home-reference-icon-symbol,
body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-lead > .assistant-route-reference-icon-symbol,
body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-lead > .assistant-home-reference-icon-symbol,
body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead > .assistant-homepage-reference-icon,
body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead > .assistant-home-reference-icon-symbol,
body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead > .assistant-route-reference-icon-symbol,
body .app-shell:not(.mobile-shell) .assistant-home-reference-icon-symbol,
body .app-shell:not(.mobile-shell) .assistant-route-reference-icon-symbol,
body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon,
body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon {
  /* 旧版 v74 设 44px,现在让 v4-icon-final 的 64px 接管 */
  width: 64px !important;
  height: 64px !important;
  flex: 0 0 64px !important;
  border-radius: 0 !important;
}
body .app-shell:not(.mobile-shell) .assistant-home-reference-lead,
body .app-shell:not(.mobile-shell) .assistant-route-reference-lead,
body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-lead {
  gap: 10px !important;
}
body .app-shell:not(.mobile-shell) .title-stack,
body .app-shell:not(.mobile-shell) .assistant-home-reference-stack,
body .app-shell:not(.mobile-shell) .assistant-route-reference-stack,
body .app-shell:not(.mobile-shell) .boss-pending-reference-stack {
  gap: 2px !important;
  display: flex !important;
  flex-direction: column !important;
}
body .app-shell:not(.mobile-shell) .title-stack h3,
body .app-shell:not(.mobile-shell) .assistant-home-reference-stack h3,
body .app-shell:not(.mobile-shell) .assistant-route-reference-stack h3,
body .app-shell:not(.mobile-shell) .boss-pending-reference-stack h3 {
  margin: 0 !important;
  font-size: 26px !important;
  line-height: 1.1 !important;
  letter-spacing: -0.04em !important;
}
body .app-shell:not(.mobile-shell) .title-stack p,
body .app-shell:not(.mobile-shell) .assistant-home-reference-stack p,
body .app-shell:not(.mobile-shell) .assistant-route-reference-stack p,
body .app-shell:not(.mobile-shell) .boss-pending-reference-stack p {
  margin: 2px 0 0 !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
  min-height: auto !important;
  max-width: 60ch !important;
}

/* ============================================================
   v86: 助理面板内 h6 子区段标题对齐 h5 主区段视觉
   - 「最近指令 / 老板同步」原 h6 = 13px + 18×18 图标
   - 主段（今日重点/今日推进台/风险提醒/老板指令）h5 = 16px + 22×22 容器/20×20 SVG
   - 这里把 h6 提级到与 h5 一致，但保留 v25 的两段合并结构
   ============================================================ */
body .app-shell .layout-assistant .assistant-panel .assistant-subsection-head h6 {
  font-size: 16px !important;
  font-weight: 700 !important;
  line-height: 1.16 !important;
  letter-spacing: -0.01em !important;
}
body .app-shell .layout-assistant .assistant-panel .assistant-subsection-icon {
  width: 22px !important;
  height: 22px !important;
  margin-right: 8px !important;
  vertical-align: -4px !important;
}
body .app-shell .layout-assistant .assistant-panel .assistant-subsection-icon svg {
  width: 20px !important;
  height: 20px !important;
}

/* ============================================================
   页头图标尺寸统一（所有 route 一致大小，肉眼等宽）
   - 修复 base.css 中导致 calendar 页 65px、其他页 48px 的不一致
   - calendar(.assistant-home-reference-icon-symbol) 65 → 56
   - other-symbol(.assistant-route-reference-icon-symbol) 48 → 56
   - image 类(.assistant-home-reference-icon / .assistant-route-reference-icon
     / .assistant-inbox-reference-icon) 56 → 56（保持一致）
   - 用 [data-role] + !important 抢回 base.css 的 !important
   ============================================================ */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon-symbol,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-homepage-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon-symbol,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-inbox-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon-symbol,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-homepage-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon-symbol {
  width: 56px !important;
  height: 56px !important;
  flex: 0 0 56px !important;
}

/* 内部 svg / img 跟随容器 100% */
html body .app-shell:not(.mobile-shell) .assistant-home-reference-icon-symbol > svg,
html body .app-shell:not(.mobile-shell) .assistant-home-reference-icon-symbol > img,
html body .app-shell:not(.mobile-shell) .assistant-route-reference-icon-symbol > svg,
html body .app-shell:not(.mobile-shell) .assistant-route-reference-icon-symbol > img {
  width: 100% !important;
  height: 100% !important;
  display: block !important;
}

/* ────────────────────────────────────────────────────────────────────────
   v4-icon-final：终结 base.css 散落各处的 page-header icon 尺寸冲突
   - base.css 22149/22484/22685/23597 多处用 !important 设容器宽（38/65 等）
   - base.css 22530-22576 给每个 route 单独设 transform: scale(0.97~1.20)
     → 这就是用户说"肉眼大小不一致"的真正原因！每张图都缩放比例不同
   - 这里用 html body .app-shell + [data-role] + class 提到 0,0,5,2 特异性
     压住所有冲突，并把每个 route 的 scale 全部归零
   ──────────────────────────────────────────────────────────────────────── */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon-symbol,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-homepage-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon-symbol,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-inbox-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon-symbol,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-homepage-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon-symbol {
  width: 64px !important;
  height: 64px !important;
  flex: 0 0 64px !important;
  min-width: 64px !important;
  min-height: 64px !important;
  max-width: 64px !important;
  max-height: 64px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  border: none !important;
  background: transparent !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: visible !important;
  transform: none !important;
}

/* 内部 img/svg：100% 填充 + 全部清零 transform: scale 让所有 route 视觉等大
   用 * 选择器 + ID-级特异性 (html body app-shell:not :role class *) 全覆盖 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon-symbol *,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon-symbol *,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-homepage-reference-icon *,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon *,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon *,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon-symbol *,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon-symbol *,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-homepage-reference-icon *,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon *,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon *,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon-symbol > img,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-home-reference-icon-symbol > svg,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon-symbol > img,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-route-reference-icon-symbol > svg,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-homepage-reference-icon > img,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .assistant-homepage-reference-icon > svg,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon-symbol > img,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-home-reference-icon-symbol > svg,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon-symbol > img,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-route-reference-icon-symbol > svg,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-homepage-reference-icon > img,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .assistant-homepage-reference-icon > svg {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  display: block !important;
  object-fit: contain !important;
  transform: none !important;
  scale: none !important;
}

/* 用 :not(.x):not(.y) 链堆叠特异性到 (0,7,3) 压制 base.css (0,5,1) 缩放规则
   核心：先把所有 transform 清零、img/svg 100% 填充容器
   然后用 per-route 视觉补偿 scale 让肉眼大小一致（每图标的"墨水密度"不同）*/
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-home-reference-icon-symbol img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-home-reference-icon-symbol svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-homepage-reference-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-homepage-reference-icon svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-home-reference-icon-symbol img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-home-reference-icon-symbol svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-homepage-reference-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-homepage-reference-icon svg {
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  display: block !important;
  object-fit: contain !important;
  transform-origin: center center !important;
  transform: scale(1) !important;
  scale: 1 !important;
}

/* 视觉补偿：单线条/稀疏内容的图标（如 meeting/multitasking）放大补偿
   特异性 (0,7,3) - 用 :not(._) 双 not 堆叠；以下每个 route 单独 calibrate */

/* per-route 视觉补偿 v2 — 实测肉眼对比后 calibrate
   目标：所有图标视觉大小约 50-52px (在 64px 容器内) */

/* 待安排 (meeting SVG): 单线条稀疏，需要最大放大 */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-pending-header-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol.boss-pending-header-icon img {
  transform: scale(1.20) !important;
  scale: 1.20 !important;
}

/* 待办事项 (multitasking PNG): 内容偏小 +18% */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-todos-header-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol.boss-todos-header-icon img {
  transform: scale(1.18) !important;
  scale: 1.18 !important;
}

/* 收信箱 (mailbox SVG): viewBox 已紧裁，仅 +6% */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-mailbox-header-icon img {
  transform: scale(1.06) !important;
  scale: 1.06 !important;
}

/* 微信识别 (wechat PNG): 本身 PNG 充满画布，缩小到与其他对齐 */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-inbox-header-icon img {
  transform: scale(0.85) !important;
  scale: 0.85 !important;
}

/* 首页 (homepage SVG): viewBox 已紧裁，+12% 让 clock+book 更显眼 */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-homepage-reference-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-home-reference-icon-symbol.assistant-calendar-header-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-homepage-reference-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-home-reference-icon-symbol.boss-calendar-header-icon img {
  transform: scale(1.12) !important;
  scale: 1.12 !important;
}

/* 教程 (guide-header-icon SVG): 估计需 +20% 配合稀疏内容 */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-guide-header-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol.boss-guide-header-icon img {
  transform: scale(1.20) !important;
  scale: 1.20 !important;
}

/* 设置 (settings-header-icon SVG): +8% */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-settings-header-icon img,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol.boss-settings-header-icon img {
  transform: scale(1.08) !important;
  scale: 1.08 !important;
}

/* 老板总览 (boss-overview SVG): +12% */
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-home-reference-icon-symbol.boss-overview-header-icon img {
  transform: scale(1.12) !important;
  scale: 1.12 !important;
}

/* 助理 chat（智能助手已废弃但保留 fallback）：1.0 */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .assistant-route-reference-icon-symbol.assistant-assistant-header-icon svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .assistant-route-reference-icon-symbol.boss-assistant-header-icon svg {
  transform: scale(1.0) !important;
  scale: 1.0 !important;
}

/* ============================================================================
   ╔════════════════════════════════════════════════════════════════════════╗
   ║              v4 收尾轮：上线级品质收尾（U-BB 共 8 段）                  ║
   ║   侧栏 nav-item / 新手启航 / tooltip / empty / toast / drawer body /    ║
   ║   boss-welcome / 移动端                                                  ║
   ╚════════════════════════════════════════════════════════════════════════╝ */

/* ════════ v4-U：侧栏 nav-item editorial 化 ════════ */
html body .app-shell:not(.mobile-shell) .side-nav .nav-item {
  border-radius: var(--v4-r-btn) !important;
  padding: 9px 12px !important;
  margin: 1px 0 !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--v4-ink-2) !important;
  font-weight: 500 !important;
  font-size: 13.5px !important;
  letter-spacing: -0.005em !important;
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  position: relative !important;
  box-shadow: none !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item:hover {
  background: var(--v4-surface-3) !important;
  color: var(--v4-ink-1) !important;
  border-color: transparent !important;
  transform: none !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active {
  background: linear-gradient(135deg, #4F46E5 0%, #6366F1 100%) !important;
  color: #FFFFFF !important;
  border-color: transparent !important;
  font-weight: 600 !important;
  box-shadow: 0 8px 22px rgba(79, 70, 229, 0.26) !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active,
html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active * {
  color: #FFFFFF !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active .nav-icon,
html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active svg {
  color: #FFFFFF !important;
  stroke: #FFFFFF !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active::before {
  content: "" !important;
  position: absolute !important;
  left: -8px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 3px !important;
  height: 18px !important;
  background: var(--v4-brand) !important;
  border-radius: 0 2px 2px 0 !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-item:hover {
  background: rgba(255, 255, 255, 0.04) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-item.active {
  background: rgba(129, 140, 248, 0.10) !important;
  color: var(--v4-brand-hover) !important;
}

/* nav-item 图标和 label */
html body .app-shell:not(.mobile-shell) .side-nav .nav-item .nav-label {
  font-size: 13.5px !important;
  font-weight: 500 !important;
  letter-spacing: -0.005em !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active .nav-label {
  font-weight: 600 !important;
}

/* nav-icon 图标尺寸统一 */
html body .app-shell:not(.mobile-shell) .side-nav .nav-item .nav-icon {
  width: 18px !important;
  height: 18px !important;
  flex: 0 0 18px !important;
  opacity: 0.8 !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active .nav-icon {
  opacity: 1 !important;
}

/* nav-item 角标（收信箱右侧 ❤5）— 红色 rose pill */
html body .app-shell:not(.mobile-shell) .side-nav .nav-item .nav-micro-heart,
html body .app-shell:not(.mobile-shell) .side-nav .nav-badge {
  background: rgba(244, 63, 94, 0.12) !important;
  border: 1px solid rgba(244, 63, 94, 0.32) !important;
  color: #E11D48 !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 1px 6px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  min-height: 16px !important;
  letter-spacing: 0 !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item .nav-micro-heart-icon,
html body .app-shell:not(.mobile-shell) .side-nav .nav-item .nav-micro-heart-count {
  color: #E11D48 !important;
}

/* active nav-item 内的角标:白色透明感保持可读 */
html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active .nav-micro-heart {
  background: rgba(255, 255, 255, 0.20) !important;
  border-color: rgba(255, 255, 255, 0.40) !important;
  color: #FFFFFF !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active .nav-micro-heart-icon,
html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active .nav-micro-heart-count {
  color: #FFFFFF !important;
}

/* ════════ v4-V：新手启航清单 floating widget ════════ */
html body .app-shell .onboarding-checklist,
html body .app-shell .onboarding-starter,
html body .app-shell [class*="onboarding-toast"] {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 12px 32px -8px rgba(15, 23, 42, 0.16) !important;
  padding: 14px 16px !important;
}

html[data-theme="dark"] body .app-shell .onboarding-checklist,
html[data-theme="dark"] body .app-shell .onboarding-starter,
html[data-theme="dark"] body .app-shell [class*="onboarding-toast"] {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
  box-shadow:
    0 1px 0 rgba(0, 0, 0, 0.4),
    0 12px 30px -6px rgba(0, 0, 0, 0.6) !important;
}

/* checklist 标题 */
html body .app-shell .onboarding-checklist > strong,
html body .app-shell .onboarding-starter > strong,
html body .app-shell [class*="onboarding-toast"] > strong {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: var(--v4-ink-1) !important;
  margin-bottom: 10px !important;
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
}

/* checklist 各 button */
html body .app-shell .onboarding-checklist button,
html body .app-shell .onboarding-starter button,
html body .app-shell [class*="onboarding-toast"] button {
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-chip) !important;
  padding: 8px 12px !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  color: var(--v4-ink-2) !important;
  letter-spacing: 0 !important;
  text-align: left !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  width: 100% !important;
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  box-shadow: none !important;
  margin: 4px 0 !important;
}

html body .app-shell .onboarding-checklist button:hover,
html body .app-shell .onboarding-starter button:hover,
html body .app-shell [class*="onboarding-toast"] button:hover {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
}

/* ════════ v4-W：tooltip / popover ════════ */
html body .tooltip,
html body .popover,
html body [data-tooltip-content],
html body .stat-card-tooltip {
  background: var(--v4-ink-1) !important;
  color: #f8fafc !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-chip) !important;
  padding: 6px 10px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  line-height: 1.45 !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.04) inset,
    0 6px 20px -4px rgba(0, 0, 0, 0.32) !important;
  max-width: 280px !important;
}

html[data-theme="dark"] body .tooltip,
html[data-theme="dark"] body .popover,
html[data-theme="dark"] body [data-tooltip-content],
html[data-theme="dark"] body .stat-card-tooltip {
  background: var(--v4-surface-3) !important;
  color: var(--v4-ink-1) !important;
}

/* ════════ v4-X：empty states / 无数据占位 ════════ */
html body .app-shell .empty-state,
html body .app-shell .empty-placeholder,
html body .app-shell [class*="empty-"][class*="-state"] {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 48px 32px !important;
  text-align: center !important;
  color: var(--v4-ink-3) !important;
  background: transparent !important;
  border: 1px dashed var(--v4-line-2) !important;
  border-radius: var(--v4-r-card) !important;
  gap: 8px !important;
}

html body .app-shell .empty-state strong,
html body .app-shell .empty-placeholder strong {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: var(--v4-ink-2) !important;
  letter-spacing: -0.005em !important;
}

html body .app-shell .empty-state p,
html body .app-shell .empty-state span,
html body .app-shell .empty-placeholder p,
html body .app-shell .empty-placeholder span {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  line-height: 1.5 !important;
  margin: 0 !important;
  letter-spacing: 0 !important;
}

/* ════════ v4-Y：toast / snackbar ════════ */
html body .toast,
html body .snackbar,
html body .toast-message {
  background: var(--v4-ink-1) !important;
  color: #f8fafc !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 10px 16px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  letter-spacing: -0.005em !important;
  line-height: 1.5 !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.06) inset,
    0 12px 32px -6px rgba(0, 0, 0, 0.32) !important;
  max-width: min(420px, 90vw) !important;
}

html body .toast.success,
html body .snackbar.success {
  background: linear-gradient(180deg, var(--v4-ok), #047857) !important;
  border-color: rgba(5, 150, 105, 0.4) !important;
}

html body .toast.error,
html body .snackbar.error {
  background: linear-gradient(180deg, var(--v4-danger), #b91c1c) !important;
  border-color: rgba(220, 38, 38, 0.4) !important;
}

html body .toast.warning,
html body .snackbar.warning {
  background: linear-gradient(180deg, var(--v4-warn), #b45309) !important;
  border-color: rgba(217, 119, 6, 0.4) !important;
}

/* ════════ v4-Z：detail-drawer body 内容精雕 ════════ */
html body .detail-drawer .detail-section,
html body .detail-drawer section {
  border-bottom: 1px solid var(--v4-line) !important;
  padding: 16px 0 !important;
  background: transparent !important;
  border-radius: 0 !important;
}

html body .detail-drawer .detail-section:last-child,
html body .detail-drawer section:last-child {
  border-bottom: none !important;
}

html body .detail-drawer .detail-section h4,
html body .detail-drawer .detail-section h5,
html body .detail-drawer section h4,
html body .detail-drawer section h5 {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: var(--v4-ink-3) !important;
  margin: 0 0 8px !important;
}

html body .detail-drawer .detail-row,
html body .detail-drawer .detail-meta-row {
  display: grid !important;
  grid-template-columns: 100px 1fr !important;
  gap: 8px !important;
  padding: 6px 0 !important;
  font-size: 13px !important;
}

html body .detail-drawer .detail-row > .label,
html body .detail-drawer .detail-meta-row > .label,
html body .detail-drawer .detail-row > strong:first-child {
  color: var(--v4-ink-3) !important;
  font-weight: 500 !important;
}

html body .detail-drawer .detail-row > .value,
html body .detail-drawer .detail-meta-row > .value {
  color: var(--v4-ink-1) !important;
  font-weight: 500 !important;
}

/* drawer 关闭按钮 */
html body .detail-drawer .drawer-close,
html body .detail-drawer button[data-action*="close"],
html body .detail-drawer button[aria-label*="关闭"] {
  width: 32px !important;
  height: 32px !important;
  border-radius: var(--v4-r-btn) !important;
  background: var(--v4-surface-3) !important;
  border: 1px solid var(--v4-line) !important;
  color: var(--v4-ink-2) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  box-shadow: none !important;
}

html body .detail-drawer .drawer-close:hover,
html body .detail-drawer button[data-action*="close"]:hover {
  background: var(--v4-line) !important;
  color: var(--v4-ink-1) !important;
}

/* ════════ v4-AA：boss-welcome 页 hero refinement ════════ */
html body .boss-welcome-card {
  border-radius: var(--v4-r-hero) !important;
  border: 1px solid var(--v4-line-2) !important;
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 32px 80px -24px rgba(15, 23, 42, 0.22) !important;
}

html body .boss-welcome-card h3 {
  font-weight: 600 !important;
  letter-spacing: -0.03em !important;
}

html[data-theme="dark"] body .boss-welcome-card {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

/* ════════ v4-BB：移动端 dock + mobile-specific polish ════════ */
html body .app-shell.mobile-shell .mobile-quick-dock,
html body .app-shell.mobile-shell .mobile-bottom-bar {
  background: var(--v4-surface) !important;
  border-top: 1px solid var(--v4-line) !important;
  box-shadow: 0 -4px 16px -4px rgba(15, 23, 42, 0.06) !important;
  padding: 8px !important;
}

html[data-theme="dark"] body .app-shell.mobile-shell .mobile-quick-dock,
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-bottom-bar {
  background: var(--v4-surface) !important;
  border-top-color: var(--v4-line-2) !important;
  box-shadow: 0 -4px 16px -4px rgba(0, 0, 0, 0.4) !important;
}

html body .app-shell.mobile-shell .mobile-nav-item,
html body > #app > .mobile-bottom-nav .mobile-nav-item {
  border-radius: var(--v4-r-btn) !important;
  padding: 8px 6px !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--v4-ink-3) !important;
  font-size: 11px !important;
  font-weight: 500 !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell.mobile-shell .mobile-nav-item.active,
html body > #app > .mobile-bottom-nav .mobile-nav-item.active {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
  font-weight: 600 !important;
}

/* mobile feature-card */
html body .app-shell.mobile-shell .mobile-feature-card {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
}

/* mobile primary CTA */
html body .app-shell.mobile-shell .mobile-quick-action {
  background: linear-gradient(180deg, var(--v4-brand) 0%, var(--v4-brand-hover) 100%) !important;
  border: 1px solid var(--v4-brand-hover) !important;
  border-radius: var(--v4-r-btn) !important;
  color: #ffffff !important;
  font-weight: 600 !important;
  font-size: 13.5px !important;
  letter-spacing: -0.005em !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.12) inset,
    0 1px 2px rgba(15, 23, 42, 0.08) !important;
}

/* ════════ v4-CC：通用 polish — 小细节 ════════ */

/* 滚动条精雕：极细 indigo */
html body .app-shell:not(.mobile-shell) ::-webkit-scrollbar {
  width: 8px !important;
  height: 8px !important;
}

html body .app-shell:not(.mobile-shell) ::-webkit-scrollbar-track {
  background: transparent !important;
}

html body .app-shell:not(.mobile-shell) ::-webkit-scrollbar-thumb {
  background: rgba(99, 102, 241, 0.18) !important;
  border-radius: 4px !important;
  border: 2px solid transparent !important;
  background-clip: padding-box !important;
}

html body .app-shell:not(.mobile-shell) ::-webkit-scrollbar-thumb:hover {
  background: rgba(99, 102, 241, 0.32) !important;
  background-clip: padding-box !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) ::-webkit-scrollbar-thumb {
  background: rgba(165, 180, 252, 0.18) !important;
  background-clip: padding-box !important;
}

/* 选中文字 highlight */
html body ::selection {
  background: var(--v4-brand-soft) !important;
  color: var(--v4-brand-hover) !important;
}

html[data-theme="dark"] body ::selection {
  background: rgba(129, 140, 248, 0.30) !important;
  color: var(--v4-ink-1) !important;
}

/* 登录/注册输入框：去掉选中文字时的紫色色块条（focus 全选时视觉干扰） */
html body .auth-shot-field input::selection,
html body .auth-reg-form .auth-shot-field input::selection {
  background: transparent !important;
  color: inherit !important;
}
html[data-theme="dark"] body .auth-shot-field input::selection,
html[data-theme="dark"] body .auth-reg-form .auth-shot-field input::selection {
  background: transparent !important;
  color: #f4f7ff !important;
  -webkit-text-fill-color: #f4f7ff !important;
}
html[data-theme="light"] body .auth-shot-field input::selection,
html[data-theme="light"] body .auth-reg-form .auth-shot-field input::selection {
  background: transparent !important;
  color: #0f172a !important;
  -webkit-text-fill-color: #0f172a !important;
}

/* 浏览器 autofill 默认色块 → 跟输入框背景一致 */
html[data-theme="dark"] body .auth-shot-field input:-webkit-autofill,
html[data-theme="dark"] body .auth-shot-field input:-webkit-autofill:hover,
html[data-theme="dark"] body .auth-shot-field input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 1000px #171f34 inset !important;
  box-shadow: 0 0 0 1000px #171f34 inset !important;
  -webkit-text-fill-color: #f4f7ff !important;
  caret-color: #f4f7ff !important;
  transition: background-color 99999s ease-out 0s !important;
}
html[data-theme="light"] body .auth-shot-field input:-webkit-autofill,
html[data-theme="light"] body .auth-shot-field input:-webkit-autofill:hover,
html[data-theme="light"] body .auth-shot-field input:-webkit-autofill:focus {
  -webkit-box-shadow: 0 0 0 1000px #ffffff inset !important;
  box-shadow: 0 0 0 1000px #ffffff inset !important;
  -webkit-text-fill-color: #0f172a !important;
  caret-color: #0f172a !important;
  transition: background-color 99999s ease-out 0s !important;
}

/* focus-visible 全局精雕 */
html body .app-shell *:focus-visible {
  outline: 2px solid var(--v4-brand) !important;
  outline-offset: 2px !important;
  border-radius: 4px !important;
}

/* 动画通用 ease-out（非急促） */
html body .app-shell .event-card,
html body .app-shell .pending-card,
html body .app-shell .command-card,
html body .app-shell .todo-card,
html body .app-shell .mailbox-feed-item,
html body .app-shell .focus-card,
html body .app-shell .risk-card,
html body .app-shell .decision-card {
  transition: 
    border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.18s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

/* 老板 welcome 海报字体强化 */
html body .boss-welcome-poster-line {
  font-weight: 800 !important;
  letter-spacing: -0.04em !important;
}

/* studio-toolbar 各种 nav 微调 */
html body .studio-toolbar .toolbar-brand-lockup {
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  letter-spacing: -0.01em !important;
  color: var(--v4-ink-1) !important;
}

/* 默认 button 全局兜底（没显式 class 的） */
html body .app-shell button:not([class*="action"]):not([class*="ghost"]):not([class*="toolbar"]):not([class*="nav"]):not([class*="filter"]):not([class*="segmented"]):not([class*="chip"]):not([class*="quick"]) {
  font-family: inherit !important;
  cursor: pointer !important;
  letter-spacing: -0.005em !important;
}

/* 链接 */
html body .app-shell a {
  color: var(--v4-brand) !important;
  text-decoration: none !important;
  transition: color 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell a:hover {
  color: var(--v4-brand-hover) !important;
  text-decoration: underline !important;
  text-decoration-thickness: 1px !important;
  text-underline-offset: 2px !important;
}

/* ════════ v4-DD：首页 stat 卡彻底白底（覆盖前述 v5-theme 51-768 紫渐变） ════════
   - 之前的 v5-theme 行 51/90/132/751/766 用 .stats-featured / .stats-todo /
     .stats-conflict / .stats-risk + !important 强制紫渐变白字
   - 这里用 (0,7,1) 特异性 + !important 改成 hairline 白底 + ink-1 字
   - 第 1 张 hero 仍保留 v4-E 的 brand 左条 hairline 风
   ════════════════════════════════════════════════════════════════════════════ */

/* 通用 stat-card 兜底（不在 mailbox-summary-grid 里的）
   v183 — user 反馈"把 mailbox 卡淡紫渐变底同步到首页 5 张卡"
   原: 纯白 (var(--v4-surface)) → 淡紫渐变 (与 mailbox-summary-grid 一致)
   left-border 主题色 (today/conflict/risk/todo) 保留 */
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stats-row > .stat-card,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stats-row > .stat-card,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-featured,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-featured,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-today,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-today,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-conflict,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-conflict,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-risk,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-risk,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-todo,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-todo,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.metric-card,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.metric-card {
  background: linear-gradient(135deg, #EEF0FC 0%, #E0E7FF 100%) !important;
  background-image: linear-gradient(135deg, #EEF0FC 0%, #E0E7FF 100%) !important;
  border: 1px solid rgba(99, 102, 241, 0.22) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  color: var(--v4-ink-1) !important;
  position: relative !important;
  transition: border-color 0.18s ease, transform 0.18s ease !important;
}

/* dark mode: 保持原 surface 色 */
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stats-row > .stat-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stats-row > .stat-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-featured,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-featured,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-today,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-today,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-conflict,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-conflict,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-risk,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-risk,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-todo,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-todo {
  background: var(--v4-surface) !important;
  background-image: none !important;
  border-color: var(--v4-line-2) !important;
}

html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stats-row > .stat-card:hover,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stats-row > .stat-card:hover {
  border-color: var(--v4-line-2) !important;
  transform: translateY(-1px) !important;
  box-shadow: none !important;
}

/* 内部文字色 ink-1/ink-2/ink-3 重写 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-value,
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card strong {
  color: var(--v4-ink-1) !important;
  font-weight: 600 !important;
  letter-spacing: -0.04em !important;
  font-feature-settings: "tnum" 1 !important;
}

html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-label,
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card small {
  color: var(--v4-ink-2) !important;
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
}

/* stat-card-glyph 内 SVG icon: 早期规则强制 stroke 白色,在 brand-soft 浅紫底上看不见
   → 强制 stroke / fill 用 brand 实色 indigo,确保可见
   v168: 同时覆盖 v5-hero-glyph (今日重点 featured 卡 ☆ 五角星),修复 base.css
   `.app-shell .stat-card *` 通配符把 SVG color 强制成白色,导致白星在淡紫底上不可见 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph svg,
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph svg *,
html body .app-shell .v5-hero-card .v5-hero-glyph svg,
html body .app-shell .v5-hero-card .v5-hero-glyph svg * {
  stroke: var(--v4-brand) !important;
  color: var(--v4-brand) !important;
  fill: none !important;
  opacity: 1 !important;
}
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph svg,
html body .app-shell .v5-hero-card .v5-hero-glyph svg {
  width: 18px !important;
  height: 18px !important;
}

/* 同时给 stat-card-glyph / v5-hero-glyph 容器自己 color: brand 兜底 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph,
html body .app-shell .v5-hero-card .v5-hero-glyph {
  color: var(--v4-brand) !important;
}

/* 深色模式: brand indigo (#4F46E5) 在深底上对比不够,改用更亮的 indigo-300 (#A5B4FC),
   与 dark stat-card-glyph 的 indigo-400 描边 (rgb(129,140,248)) 协调而更亮一档 */
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph svg,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph svg *,
html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-glyph svg,
html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-glyph svg * {
  stroke: #A5B4FC !important;
  color: #A5B4FC !important;
}

/* 4 张数字卡 (今日会议/冲突/风险/待办) 显示完整内容: 标题 + 大数字 + 副文 (note/subnote)
   与 featured 卡高度对齐 (~150px) — 5 张卡视觉一致
   颜色: 浅色用 ink-2 加深 (slate-600 #475569 ≈ 8.3:1 WCAG AA),深色 ink-3 已可见 */
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-today .stat-card-note,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-today .stat-card-subnote,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-conflict .stat-card-note,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-conflict .stat-card-subnote,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-risk .stat-card-note,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-risk .stat-card-subnote,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-todo .stat-card-note,
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-todo .stat-card-subnote {
  display: block !important;
  font-size: 11.5px !important;
  line-height: 1.4 !important;
  color: var(--v4-ink-2) !important;
  margin-top: 4px !important;
}

/* ════════ v167-textfillfix: 浅色主题下 stat 卡文字加深 + 修复 -webkit-text-fill-color bug
   ROOT CAUSE: base.css line 23028-23046 给 stat-card-note/subnote/title 设了
   `-webkit-text-fill-color: rgba(255,255,255,0.85) !important`
   该属性优先级高于 color → 文字渲染为半透明白色 → 浅色背景下完全不可见
   修复: 同时覆盖 color + -webkit-text-fill-color
   ════════════════════════════════════════════════════════════════ */

/* label (今日重点 / 今日会议 / 冲突提醒 等) — slate-700 #334155 / 11.4:1 AAA */
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card .stat-card-label,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card small,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card .stat-card-title,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-featured .stat-card-label,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-featured small {
  color: #334155 !important;
  -webkit-text-fill-color: #334155 !important;
  font-weight: 700 !important;
  opacity: 1 !important;
}

/* note 副文 (4/5星期日 以日历为中心 / 委办局项目沟通 等) — slate-600 #475569 / 8.3:1 AAA */
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card .stat-card-note,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-featured .stat-card-note,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-today .stat-card-note,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-conflict .stat-card-note,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-risk .stat-card-note,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-todo .stat-card-note {
  color: #475569 !important;
  -webkit-text-fill-color: #475569 !important;
  font-weight: 500 !important;
  opacity: 1 !important;
}

/* subnote 备注 (另有 6 条 / 21% 已完成 等) — slate-500 #64748B / 5.5:1 AA */
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card .stat-card-subnote,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-featured .stat-card-subnote,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-today .stat-card-subnote,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-conflict .stat-card-subnote,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-risk .stat-card-subnote,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-todo .stat-card-subnote {
  color: #64748B !important;
  -webkit-text-fill-color: #64748B !important;
  font-weight: 400 !important;
  opacity: 1 !important;
}

/* 兜底: 让 stat-card 内任何 span/p (包括 inline-alert / chip 等) 默认深字 + 重置 fill-color */
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card span:not(.badge):not(.status-pill):not([class*="priority"]):not(.stat-card-glyph):not(.stat-card-prompt),
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card p {
  color: #475569 !important;
  -webkit-text-fill-color: #475569 !important;
}

/* 5 张 stat-card 统一高度 ~150px, padding 一致 */
html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card {
  min-height: 150px !important;
  max-height: none !important;
  padding: 14px 16px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: space-between !important;
}

html body .app-shell:not(.mobile-shell)[data-role] .stats-row > .stat-card.stats-featured {
  min-height: 150px !important;
}

html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card span,
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-note,
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card p {
  color: var(--v4-ink-2) !important;
  font-weight: 400 !important;
}

/* stat 卡内 glyph 图标背景从半透明白 → indigo soft */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-glyph {
  background: var(--v4-brand-soft) !important;
  border: 1px solid var(--v4-brand-line) !important;
  color: var(--v4-brand) !important;
  border-radius: var(--v4-r-chip) !important;
}

/* 类目色：左 3px accent 条 — 5 张分别红/蓝/橙/红/紫绿 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 16px !important;
  bottom: 16px !important;
  width: 3px !important;
  background: var(--v4-brand) !important;
  border-radius: 0 3px 3px 0 !important;
  opacity: 0.6 !important;
}

/* 第 1 张 featured (今日重点) → indigo brand */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card.stats-featured::before,
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card.featured-card::before {
  background: var(--v4-brand) !important;
  opacity: 1 !important;
}

/* stats-today (今日会议) → indigo */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card.stats-today::before {
  background: var(--v4-brand) !important;
}

/* stats-conflict (冲突预警) → 橙 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card.stats-conflict::before {
  background: var(--v4-warn) !important;
}

/* stats-risk (风险预警) → 红 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card.stats-risk::before {
  background: var(--v4-danger) !important;
}

/* stats-todo (待办进度) → 绿 */
html body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card.stats-todo::before {
  background: var(--v4-ok) !important;
}

/* dark theme */
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-featured,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-featured {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-value,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card strong {
  color: var(--v4-ink-1) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card .stat-card-label,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card small {
  color: var(--v4-ink-3) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card span,
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._) .stats-row > .stat-card p {
  color: var(--v4-ink-2) !important;
}

/* ════════ v4-EE：侧栏底部"设置"按钮 — 配 nav-item 风格 ════════ */
html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: var(--v4-r-btn) !important;
  padding: 9px 12px !important;
  color: var(--v4-ink-2) !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  box-shadow: none !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger:hover {
  background: var(--v4-surface-3) !important;
  color: var(--v4-ink-1) !important;
  transform: none !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger[aria-expanded="true"] {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
}

/* trigger 内的 ⚙ 图标 */
html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger .nav-settings-trigger-icon {
  width: 18px !important;
  height: 18px !important;
  background: transparent !important;
  border: none !important;
  color: currentColor !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  flex: 0 0 18px !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger:hover {
  background: rgba(255, 255, 255, 0.04) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger[aria-expanded="true"] {
  background: rgba(129, 140, 248, 0.10) !important;
}

/* ════════ v4-FF：侧栏 brand "星期几" 紧凑化 ════════ */
html body .app-shell:not(.mobile-shell) .side-nav .nav-brand {
  margin-bottom: 16px !important;
  padding: 0 !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-brand-row {
  padding: 4px 0 !important;
  gap: 10px !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-brand-title,
html body .app-shell:not(.mobile-shell) .side-nav .nav-brand h2 {
  font-size: 22px !important;
  font-weight: 700 !important;
  letter-spacing: -0.025em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.2 !important;
  margin: 0 !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-brand-tagline,
html body .app-shell:not(.mobile-shell) .side-nav .app-brand-tagline,
html body .app-shell:not(.mobile-shell) .side-nav .nav-brand p {
  font-size: 11px !important;
  font-weight: 500 !important;
  color: var(--v4-ink-3) !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  line-height: 1.4 !important;
  margin: 2px 0 0 !important;
}

/* brand-mark (sidebar logo 笑脸日历) — 完整定义 (合并 v152 + v161)
   - 容器 54×54 锁死 (specificity 5 防 base.css 65px 覆盖)
   - v183d — user 反馈"笑脸图标大一点" 44→54
   - 透明背景, 无 border/shadow/outline
   - flex center, 显示 ::before mask icon 代替原 svg/img */
html body .app-shell.app-shell:not(.mobile-shell) .side-nav .brand-mark {
  width: 54px !important;
  height: 54px !important;
  min-width: 54px !important;
  min-height: 54px !important;
  max-width: 54px !important;
  max-height: 54px !important;
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
  flex: 0 0 54px !important;
  margin: 0 !important;
}

/* nav-brand-row flex column gap 10→0, 让 logo 与「星期几」上下贴近
   v183d — user 反馈"标题跟图标上下收缩" 2→0
   v183e — user 反馈"品牌区整体往下来点" padding-top 0→10 */
html body .app-shell.app-shell:not(.mobile-shell) .side-nav .nav-brand-row {
  gap: 0 !important;
  padding: 10px 0 0 !important;
}

/* nav-brand-copy 上移贴近 brand-mark
   v183e — user 反馈"星期几的字往上移动一点" margin-top -10px */
html body .app-shell.app-shell:not(.mobile-shell) .side-nav .nav-brand-copy {
  margin-top: -10px !important;
}

/* sidebar 内 nav-brand / nav-footer 上下都不加分隔线（保持极简，靠间距分组） */
html body .app-shell:not(.mobile-shell) .side-nav .nav-brand,
html body .app-shell:not(.mobile-shell) .side-nav .nav-footer {
  border-top: none !important;
  border-bottom: none !important;
}

/* v183e — user 反馈"侧边栏按钮往上移动跟统计卡水平对齐"
   nav-brand margin-bottom 16→0, 仅靠 side-nav gap:16 就够 */
html body .app-shell:not(.mobile-shell) .side-nav .nav-brand {
  margin-bottom: 0 !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .brand-mark-svg,
html body .app-shell:not(.mobile-shell) .side-nav .brand-mark-image {
  width: 22px !important;
  height: 22px !important;
  filter: none !important;
  color: var(--v4-brand) !important;
}

/* ════════ v4-GG：QA-fix P0 — 深色 CTA 按钮橙黄→indigo ════════
   - base.css:21603 把所有 .action-button:not(.secondary):not(.is-annotate)
     在 dark 主题下设成金黄色 (rgba(215, 178, 125)..rgba(184, 138, 84))
   - 这里用 (1,5,1) 特异性覆盖回 indigo
   ═══════════════════════════════════════════════════════════════ */

html[data-theme="dark"] body .app-shell button.action-button.action-button:not(.secondary):not(.is-annotate),
html[data-theme="dark"] body .app-shell button.action-button.action-button.primary,
html[data-theme="dark"] body .app-shell .action-button.assistant-home-reference-action,
html[data-theme="dark"] body .app-shell .action-button.boss-pending-reference-action,
html[data-theme="dark"] body .app-shell .quick-action-add,
html[data-theme="dark"] body .app-shell .submit-btn,
html[data-theme="dark"] body .app-shell button[data-variant="primary"]:not(.secondary):not(.is-annotate) {
  background: linear-gradient(180deg, var(--v4-brand) 0%, var(--v4-brand-hover) 100%) !important;
  border: 1px solid var(--v4-brand-hover) !important;
  color: #ffffff !important;
  text-shadow: none !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.12) inset,
    0 1px 2px rgba(0, 0, 0, 0.32),
    0 6px 16px -4px rgba(79, 70, 229, 0.4) !important;
}

html[data-theme="dark"] body .app-shell button.action-button.action-button:not(.secondary):not(.is-annotate):hover,
html[data-theme="dark"] body .app-shell button.action-button.action-button.primary:hover,
html[data-theme="dark"] body .app-shell .action-button.assistant-home-reference-action:hover,
html[data-theme="dark"] body .app-shell .action-button.boss-pending-reference-action:hover,
html[data-theme="dark"] body .app-shell .quick-action-add:hover,
html[data-theme="dark"] body .app-shell .submit-btn:hover,
html[data-theme="dark"] body .app-shell button[data-variant="primary"]:not(.secondary):not(.is-annotate):hover {
  background: linear-gradient(180deg, var(--v4-brand-hover) 0%, #4338ca 100%) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.16) inset,
    0 2px 4px rgba(0, 0, 0, 0.4),
    0 8px 20px -4px rgba(79, 70, 229, 0.5) !important;
  transform: translateY(-0.5px) !important;
}

/* 深色 nav-item.active 也受 base.css 21603 影响,改回 indigo soft */
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-item.action-button-class.active,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-item.active.action-button {
  background: rgba(129, 140, 248, 0.10) !important;
  color: var(--v4-brand-hover) !important;
  border-color: var(--v4-brand-line) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

/* 深色 filter-chip.active — base 21603 也设了,改回 brand-soft */
html[data-theme="dark"] body .app-shell .filter-chip.action-button-class.active,
html[data-theme="dark"] body .app-shell .filter-chip.active.action-button {
  background: rgba(129, 140, 248, 0.14) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

/* ════════ v4-HH-restore：恢复微信识别页 PNG 云朵吉祥物插画 + 浮动动效 ═════
   - 取消 v4-HH 的 dashed empty + ✨ emoji 替代方案
   - 恢复 .inbox-empty-v5-mascot PNG 显示，配合标题副文形成 editorial empty state
   - 加柔和 float / sparkle / glow 动效让 mascot 自然呼吸
   ═══════════════════════════════════════════════════════════════ */
html body .app-shell .inbox-empty-illustration-container {
  background: transparent !important;
  border: none !important;
  /* v25-empty-balance：让 mascot 与 desc 在 stage 中视觉对称
     - PNG 内 mascot 顶部透明 padding ≈ 44px(显示后)，故上方 padding 取小值
     - 下方 padding 用大值补偿"卡片底到 desc 底"的视觉空白 */
  padding: 8px 16px 52px !important;
  margin: 0 auto !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  position: relative !important;
}

/* mascot 之后让 title 紧贴一些，减少 mascot+title 之间的空白 */
html body .app-shell .inbox-empty-illustration-container > .inbox-empty-title {
  margin-top: -4px !important;
}

/* PNG 吉祥物：显示 + 浮动动效
   v182c — user 反馈"放大铺满中间区域", width 200 → 400, max 60% → 85% */
html body .app-shell img.inbox-empty-v5-mascot,
html body .app-shell .inbox-empty-illustration-container > img.inbox-empty-v5-mascot {
  display: block !important;
  width: 400px !important;
  max-width: 85% !important;
  height: auto !important;
  margin: 0 auto !important;
  filter: drop-shadow(0 12px 24px rgba(99, 102, 241, 0.16)) drop-shadow(0 4px 10px rgba(15, 23, 42, 0.06)) !important;
  animation: inbox-mascot-float 4.5s ease-in-out infinite !important;
  user-select: none !important;
  pointer-events: none !important;
}

/* mascot 背后柔光 */
html body .app-shell .inbox-empty-illustration-container::before {
  content: "" !important;
  position: absolute !important;
  top: 28px !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  width: 220px !important;
  height: 180px !important;
  background: radial-gradient(circle at center, rgba(99, 102, 241, 0.18) 0%, rgba(99, 102, 241, 0) 70%) !important;
  filter: blur(24px) !important;
  z-index: 0 !important;
  animation: inbox-glow-pulse 4s ease-in-out infinite !important;
  pointer-events: none !important;
}

html body .app-shell .inbox-empty-illustration-container > * {
  position: relative !important;
  z-index: 1 !important;
}

/* 旧的 SVG fallback 永久隐藏 */
html body .app-shell .inbox-empty-svg-wrapper.v5-hide-wrap,
html body .app-shell .inbox-reference-empty-preview.v5-hidden {
  display: none !important;
}

/* 标题/副文样式微调 */
html body .app-shell .inbox-empty-title {
  margin-top: 8px !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  color: var(--v4-ink-1) !important;
  text-align: center !important;
}

html body .app-shell .inbox-empty-desc {
  margin-top: 4px !important;
  font-size: 13.5px !important;
  color: var(--v4-ink-3) !important;
  line-height: 1.55 !important;
  text-align: center !important;
}

/* 浮动 keyframes */
@keyframes inbox-mascot-float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  25%      { transform: translateY(-6px) rotate(-1.2deg); }
  50%      { transform: translateY(-2px) rotate(0deg); }
  75%      { transform: translateY(-8px) rotate(1.2deg); }
}

@keyframes inbox-glow-pulse {
  0%, 100% { opacity: 0.55; transform: translateX(-50%) scale(1); }
  50%      { opacity: 0.85; transform: translateX(-50%) scale(1.08); }
}

/* 深色：mascot drop-shadow 偏紫 */
html[data-theme="dark"] body .app-shell img.inbox-empty-v5-mascot {
  filter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.5)) drop-shadow(0 4px 14px rgba(139, 92, 246, 0.28)) !important;
}

html[data-theme="dark"] body .app-shell .inbox-empty-illustration-container::before {
  background: radial-gradient(circle at center, rgba(139, 92, 246, 0.22) 0%, rgba(139, 92, 246, 0) 70%) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   ╔════════════════════════════════════════════════════════════════════════╗
   ║       v4-JJ：任务交办 (boss/commands) timeline editorial 重做          ║
   ╚════════════════════════════════════════════════════════════════════════╝
   - 原页面整个 .command-composer.history-only 占一大 panel,内容稀疏
   - 升级方案: panel max-width 居中 + timeline 视觉 (左 vertical rule) +
     卡片信息层级强化 + hover 微动画
   ═════════════════════════════════════════════════════════════════════════════ */

/* v189：老板指令页桌面布局 — 与助理 mailbox / inbox 一样使用 max-width 居中 + 真正撑满
   - 修复关键：page-body 是 display:grid，需要把 grid-template-columns 强制为 1fr，
     否则会按内容尺寸坍缩（旧版表现为只有 471px）
   - max-width 控制整体宽度上限，children 用 width:100% 撑满 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] main.page-body:has(.boss-commands-layout) {
  width: 100% !important;
  max-width: 1100px !important;
  margin: 0 auto !important;
  grid-template-columns: 1fr !important;
  flex: 1 1 auto !important;
}
html body .app-shell:not(.mobile-shell)[data-role="boss"] .boss-commands-layout {
  width: 100% !important;
  display: block !important;
}
html body .app-shell:not(.mobile-shell)[data-role="boss"] .boss-commands-layout > .panel {
  width: 100% !important;
  max-width: none !important;
}

/* 主 panel 内 padding 加宽（仅在主内容区，不影响 sidebar） */
html body .app-shell:not(.mobile-shell)[data-role="boss"] main.page-body > .assistant-block:has(.command-composer.history-only) {
  padding: 28px 32px !important;
  border-radius: var(--v4-r-card) !important;
}

/* 右栏 sidebar 内的指令记录沿用其他 block 的 16/16/14 紧凑 padding */
html body .app-shell:not(.mobile-shell)[data-role="boss"] aside.assistant-panel .assistant-block:has(.command-composer.history-only) {
  padding: 16px 16px 14px !important;
}

/* command-toolbar (filter tabs 行) */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-toolbar {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 0 0 16px !important;
  margin-bottom: 16px !important;
  border-bottom: 1px solid var(--v4-line) !important;
  gap: 12px !important;
}

/* command-toolbar 内的 filter tabs - 用统一 v4-N pill 风 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-toolbar > div:first-child {
  display: inline-flex !important;
  gap: 4px !important;
  padding: 3px !important;
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-pill) !important;
}

/* 「去智能对话」CTA 在右侧 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-toolbar > button {
  margin-left: auto !important;
}

/* command-list - 移除 max-height 让 cards 自然展开,内容滚动放在外层 panel-body */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list {
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  padding-right: 4px !important;
  max-height: none !important;
  overflow: visible !important;
}

/* 历史卡内部 — hairline + flex-shrink: 0 防压缩,无 overflow hidden 让 dot 可溢出 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > * {
  position: relative !important;
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 14px 18px 14px 22px !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  flex-shrink: 0 !important;
}

/* 卡片左侧 accent 3px 短条 (在 card 圆角内,用 inset+border-radius 处理) */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *::before {
  content: "" !important;
  position: absolute !important;
  left: -1px !important;
  top: -1px !important;
  bottom: -1px !important;
  width: 3px !important;
  background: var(--v4-brand) !important;
  opacity: 0.7 !important;
  border-radius: var(--v4-r-card) 0 0 var(--v4-r-card) !important;
}

/* 已撤回的 accent 用灰色 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *.is-cancelled::before,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *[data-status="cancelled"]::before,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > .command-card.cancelled::before {
  background: var(--v4-ink-3) !important;
  opacity: 0.5 !important;
}

/* 已完成 accent 用绿色 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *.is-done::before,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *[data-status="done"]::before,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *[data-status="completed"]::before,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > .command-card.done::before,
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > .command-card.completed::before {
  background: var(--v4-ok) !important;
}

html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *:hover {
  border-color: var(--v4-brand-line) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px -4px rgba(15, 23, 42, 0.08) !important;
}

/* timeline-expand-bar 优雅 */
html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .timeline-expand-bar {
  margin-top: 8px !important;
  text-align: center !important;
  border-top: 1px dashed var(--v4-line) !important;
  padding: 16px 0 0 !important;
}

html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .timeline-expand-bar > button {
  background: transparent !important;
  border: 1px solid var(--v4-line) !important;
  color: var(--v4-ink-2) !important;
  padding: 8px 20px !important;
  border-radius: var(--v4-r-btn) !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .timeline-expand-bar > button:hover {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
}

/* dark mode adjust */
html[data-theme="dark"] body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *::before {
  background: var(--v4-surface) !important;
  box-shadow: 0 0 0 3px var(--v4-surface) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell)[data-role="boss"] .command-composer.history-only .command-list > *:hover {
  border-color: var(--v4-brand-line) !important;
  box-shadow: 0 4px 12px -4px rgba(0, 0, 0, 0.4) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   ╔════════════════════════════════════════════════════════════════════════╗
   ║          v4-KK：待安排表单深做 (assistant pending form)                ║
   ╚════════════════════════════════════════════════════════════════════════╝
   - 12+ field 表单 → field group spacing + label uppercase mini + 双列 grid +
     教学卡 hairline 化
   ═════════════════════════════════════════════════════════════════════════════ */

/* pending-layout 双栏间距 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout {
  gap: 20px !important;
}

/* 右侧录入面板 panel */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body {
  padding: 20px 24px !important;
}

/* 表单 fieldset/section 间距 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > * {
  margin-bottom: 16px !important;
}

/* label 小型 uppercase 风 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body label,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body .form-label {
  display: block !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  color: var(--v4-ink-3) !important;
  margin-bottom: 6px !important;
  line-height: 1.4 !important;
}

/* "保存提示" 微小提示文字 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .form-hint,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .field-hint,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .form-help {
  font-size: 11.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  line-height: 1.5 !important;
  margin-top: 4px !important;
}

/* 双列 field grid (类型/部门、紧急程度/来源) */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .form-row,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .form-grid-2col,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .pending-form-row {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 16px !important;
}

/* form-actions 底部按钮组
   v183c — 排除 .pending-knowledge-grid (它也是 panel-body 内 last-child div, 但应保持 grid 2 列) */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .form-actions,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .pending-form-actions,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .panel-body > div:last-child:not(.pending-knowledge-grid) {
  display: flex !important;
  gap: 8px !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  padding-top: 16px !important;
  border-top: 1px solid var(--v4-line) !important;
  margin-top: 20px !important;
}

/* v183c — pending-knowledge-grid 显式恢复 grid 布局 (左右双卡)
   user 反馈: 当前两张知识卡上下排列 → 改成左右一排 */
html body .app-shell:not(.mobile-shell) .pending-knowledge-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 12px !important;
  align-items: stretch !important;
}

@media (max-width: 540px) {
  html body .app-shell:not(.mobile-shell) .pending-knowledge-grid {
    grid-template-columns: 1fr !important;
  }
}

/* 顶部"标记缺..." 三 chip 行单独突出（带短描述） */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .panel-body > div:has(> button.chip):first-of-type,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .pending-form-flags {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  padding-bottom: 8px !important;
  margin-bottom: 16px !important;
  border-bottom: 1px solid var(--v4-line) !important;
}

/* ════════ v4-LL：assistant 待安排教学卡 (议程池流程 / 录入小助士) ════════ */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-tutorial-card,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-flow-card,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-tip-card,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-helper-card,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .tutorial-card,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .helper-card {
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 16px 18px !important;
  box-shadow: none !important;
}

html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-tutorial-card h4,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-flow-card h4,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-tip-card h4,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-helper-card h4,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .tutorial-card h4,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .helper-card h4 {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: var(--v4-ink-1) !important;
  margin: 0 0 8px !important;
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
}

/* 隐藏教学卡里的 emoji icon (灯泡, 步骤图) */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-tip-card .tip-emoji,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-helper-card .helper-emoji {
  display: none !important;
}

/* 教学卡 list item 用 indigo 短引导线 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-tutorial-card ol > li,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-flow-card ol > li,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-helper-card ul > li {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.55 !important;
  letter-spacing: 0 !important;
  padding: 4px 0 !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   ╔════════════════════════════════════════════════════════════════════════╗
   ║          v4-MM：微信识别页深做 (assistant inbox)                        ║
   ╚════════════════════════════════════════════════════════════════════════╝
   - inbox-reference-layout grid: composer panel | result panel
   - 强化双 panel hairline + 内部 spacing + label uppercase + 微信原文 hero card
   ═════════════════════════════════════════════════════════════════════════════ */

/* 双栏 layout 间距 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-layout {
  gap: 20px !important;
  align-items: start !important;
}

/* 主 panel 内 padding */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-panel .panel-body {
  padding: 20px 24px !important;
}

html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-panel .panel-header {
  padding: 16px 24px !important;
  border-bottom: 1px solid var(--v4-line) !important;
}

/* 「识别工作区」outline pill 和 H3 之间 spacing */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .panel-header,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .panel-header {
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between !important;
  gap: 16px !important;
  flex-wrap: wrap !important;
}

/* "微信识别"/"识别结果" H3 主标题 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .panel-header h3,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .panel-header h3 {
  font-size: 20px !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  color: var(--v4-ink-1) !important;
  margin: 0 !important;
  line-height: 1.3 !important;
}

/* 副标说明 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .panel-header > .detail-subnote,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .panel-header > .detail-subnote {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  letter-spacing: 0 !important;
  line-height: 1.55 !important;
  margin: 4px 0 0 !important;
  flex-basis: 100% !important;
}

/* 「识别工作区」outline pill (panel-header 顶部) */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .panel-header .panel-eyebrow,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .panel-header > span:first-child {
  display: inline-flex !important;
  align-items: center !important;
  background: var(--v4-brand-soft) !important;
  border: 1px solid var(--v4-brand-line) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 3px 10px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  color: var(--v4-brand-hover) !important;
  flex-basis: 100% !important;
  width: fit-content !important;
  margin-bottom: 4px !important;
}

/* 微信原文 hero card */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .wechat-source-card,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel [class*="source-card"],
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel [class*="wechat-message"] {
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 14px 16px !important;
  box-shadow: none !important;
}

/* 微信原文卡 内 textarea 直接内联 (无额外 border) */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .wechat-source-card textarea,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel [class*="source-card"] textarea {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  font-size: 13.5px !important;
  line-height: 1.6 !important;
  color: var(--v4-ink-1) !important;
  width: 100% !important;
  resize: vertical !important;
  min-height: 80px !important;
}

html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .wechat-source-card textarea:focus,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel [class*="source-card"] textarea:focus {
  outline: none !important;
  box-shadow: none !important;
}

/* 微信原文 卡 hover/focus border 加深 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .wechat-source-card:focus-within,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel [class*="source-card"]:focus-within {
  border-color: var(--v4-brand) !important;
  box-shadow: 0 0 0 3px var(--v4-brand-soft) !important;
}

/* 字数统计/系统提示底部小字 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .source-card-foot,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .wechat-source-meta {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  font-size: 11.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  letter-spacing: 0 !important;
  margin-top: 8px !important;
}

/* 识别结果 panel - field labels uppercase */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel label,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .form-label {
  display: block !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  color: var(--v4-ink-3) !important;
  margin-bottom: 6px !important;
  line-height: 1.4 !important;
}

/* 识别结果 panel - 双列 grid (开始时间/结束时间) */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .form-row,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .panel-body > div:has(> .form-field + .form-field) {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 16px !important;
}

/* 「等待识别」chip + 提示文字行 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel [class*="status-row"],
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel [class*="result-status"] {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  padding: 12px 14px !important;
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  margin-bottom: 16px !important;
}

/* 字段间距 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-result-panel .panel-body > * {
  margin-bottom: 14px !important;
}

/* dark theme 微信原文 卡 background 调暗 */
html[data-theme="dark"] body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel .wechat-source-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell)[data-role="assistant"] .inbox-reference-composer-panel [class*="source-card"] {
  background: rgba(255, 255, 255, 0.02) !important;
  border-color: var(--v4-line-2) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   ╔════════════════════════════════════════════════════════════════════════╗
   ║          v4-NN：整体细节微调 (前几轮收口)                              ║
   ╚════════════════════════════════════════════════════════════════════════╝ */

/* ── 1. nav-item active::before 短条颜色与位置 ── */
html body .app-shell:not(.mobile-shell) .side-nav .nav-item.active::before {
  height: 16px !important;
  width: 2.5px !important;
  left: -10px !important;
}

/* ── 2. detail-subnote 全局副标说明字体一致 ── */
html body .app-shell .detail-subnote,
html body .app-shell .panel-subnote,
html body .app-shell .section-subnote {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  letter-spacing: 0 !important;
  line-height: 1.55 !important;
  margin: 4px 0 0 !important;
}

/* ── 3. panel-header padding 统一 + h3 + .detail-subnote 上下结构 ── */
html body .app-shell .panel-header > h3,
html body .app-shell .panel-header > .panel-title {
  font-size: 18px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  color: var(--v4-ink-1) !important;
  margin: 0 !important;
  line-height: 1.3 !important;
}

/* ── 4. card hover 不要 transform: translateY 太多,统一 -1px ── */
html body .app-shell .stat-card:hover,
html body .app-shell .event-card:hover,
html body .app-shell .pending-card:hover,
html body .app-shell .todo-card:hover,
html body .app-shell .command-card:hover,
html body .app-shell .focus-card:hover,
html body .app-shell .risk-card:hover,
html body .app-shell .decision-card:hover,
html body .app-shell .mailbox-feed-item:hover {
  transform: translateY(-1px) !important;
}

/* ── 5. 所有 input/textarea/select :focus 用 indigo ring (v4-D 加强) ── */
html body .app-shell input:not([type="checkbox"]):not([type="radio"]):focus,
html body .app-shell textarea:focus,
html body .app-shell select:focus {
  outline: none !important;
  border-color: var(--v4-brand) !important;
  box-shadow: 0 0 0 3px var(--v4-brand-soft) !important;
}

/* ── 6. ghost button hover 一致 ── */
html body .app-shell button.ghost-button:hover,
html body .app-shell button[data-variant="ghost"]:hover {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
}

/* ── 7. 全局 letter-spacing 数字 tabular ── */
html body .app-shell .stat-card-value,
html body .app-shell .metric-value,
html body .app-shell strong[data-value],
html body .app-shell .v5-hero-title {
  font-feature-settings: "tnum" 1, "ss01" 1 !important;
  font-variant-numeric: tabular-nums !important;
}

/* ── 8. detail-drawer overlay backdrop 模糊 ── */
html body .detail-drawer-overlay,
html body .modal-overlay,
html body .drawer-backdrop {
  background: rgba(15, 23, 42, 0.4) !important;
  backdrop-filter: blur(4px) !important;
  -webkit-backdrop-filter: blur(4px) !important;
}

html[data-theme="dark"] body .detail-drawer-overlay,
html[data-theme="dark"] body .modal-overlay,
html[data-theme="dark"] body .drawer-backdrop {
  background: rgba(0, 0, 0, 0.6) !important;
}

/* ── 9. flatpickr 日历下拉 hairline 风 ── */
html body .flatpickr-calendar {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 12px 32px -8px rgba(15, 23, 42, 0.16) !important;
  font-family: inherit !important;
}

html body .flatpickr-day {
  border-radius: var(--v4-r-chip) !important;
  font-weight: 500 !important;
}

html body .flatpickr-day:hover {
  background: var(--v4-surface-3) !important;
}

html body .flatpickr-day.selected {
  background: var(--v4-brand) !important;
  border-color: var(--v4-brand) !important;
  color: #fff !important;
}

html body .flatpickr-day.today {
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
}

html[data-theme="dark"] body .flatpickr-calendar {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
  color: var(--v4-ink-1) !important;
}

html[data-theme="dark"] body .flatpickr-day {
  color: var(--v4-ink-1) !important;
}

/* ── 10. 收信箱 stat-card 内 stat-card-value 数字加大 ── */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-value,
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card strong {
  font-size: 32px !important;
  font-weight: 600 !important;
  letter-spacing: -0.04em !important;
  line-height: 1.1 !important;
  margin: 4px 0 !important;
}

/* ── 11. 全局 button 内 emoji/装饰 icon 缩小 ── */
html body .app-shell button > svg:first-child,
html body .app-shell button > .icon:first-child,
html body .app-shell button > [class*="-icon"]:first-child {
  width: 14px !important;
  height: 14px !important;
  flex: 0 0 14px !important;
  opacity: 0.85 !important;
}

/* + button 左侧的 + 号字符也需要正确大小 */
html body .app-shell .quick-action-add::before {
  content: "" !important;
}

/* ── 12. hero 卡 P1 pill 强化 (浅色看起来正常,深色弱) ── */
html body .app-shell .v5-hero-pill,
html body .app-shell .v5-hero-meta .priority-pill,
html body .app-shell .v5-hero-meta [class*="priority-"] {
  display: inline-flex !important;
  align-items: center !important;
  background: rgba(245, 158, 11, 0.12) !important;
  border: 1px solid rgba(245, 158, 11, 0.28) !important;
  color: #b45309 !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 2px 8px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-pill,
html[data-theme="dark"] body .app-shell .v5-hero-meta .priority-pill,
html[data-theme="dark"] body .app-shell .v5-hero-meta [class*="priority-"] {
  background: rgba(245, 158, 11, 0.16) !important;
  border-color: rgba(245, 158, 11, 0.32) !important;
  color: #fbbf24 !important;
}

/* ── 13. 「距 X 分钟」时间倒计时 chip 强化 ── */
html body .app-shell .countdown-pill,
html body .app-shell .v5-hero-meta time,
html body .app-shell .v5-hero-meta [class*="time-pill"] {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  background: var(--v4-brand-soft) !important;
  border: 1px solid var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 2px 8px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  font-feature-settings: "tnum" 1 !important;
}

/* ── 14. 「+新增会议」outline 状 quick-action 应用细节 ── */
html body .app-shell .quick-action-add {
  font-feature-settings: "tnum" 1 !important;
}

/* ── 15. dark mode body 全局 typography 微调 ── */
html[data-theme="dark"] body {
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
}

/* ── 16. v5-hero meta row gap + line-height ── */
html body .app-shell .v5-hero-meta {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
  flex-wrap: wrap !important;
  margin-bottom: 6px !important;
}

/* ── 17. v5-hero-note 字体一致 ── */
html body .app-shell .v5-hero-note {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  letter-spacing: 0 !important;
  line-height: 1.6 !important;
  margin: 8px 0 0 !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-note {
  color: var(--v4-ink-3) !important;
}

/* ── 18. 「智能对话」chat-panel-shell padding 微调 ── */
html body .app-shell .chat-panel-shell {
  border-radius: var(--v4-r-card) !important;
}

/* ── 19. 待办列表 todo-card 标号 01-99 用 tabular ── */
html body .app-shell .todo-card .todo-card-number,
html body .app-shell .todo-card .todo-index {
  font-feature-settings: "tnum" 1 !important;
  font-variant-numeric: tabular-nums !important;
  color: var(--v4-ink-3) !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
}

/* ── 20. 老板新指令 / 今日必推 / 阻塞项 cockpit 卡 (v4-T 增强) ── */
html body .app-shell .focus-card .focus-card-glyph,
html body .app-shell .risk-card .risk-card-glyph,
html body .app-shell .decision-card .decision-card-glyph {
  width: 28px !important;
  height: 28px !important;
  border-radius: var(--v4-r-chip) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex: 0 0 28px !important;
  font-size: 14px !important;
}

/* ── 21. 顶部 toolbar 点击 hover 状态 ── */
html body .app-shell .studio-toolbar > * {
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
   ╔════════════════════════════════════════════════════════════════════════╗
   ║         v4-OO：Lucide stroke-1.5 图标系统统一 (icon system)            ║
   ╚════════════════════════════════════════════════════════════════════════╝
   - 全局 svg stroke-width 1.5 (Lucide 标准,比原 1.8 更轻盈)
   - 替换所有 page-header mascot (PNG/SVG 不一致风) → Lucide line icons
   - 容器保留 v4-Q brand-soft 圆角 background
   ═════════════════════════════════════════════════════════════════════════════ */

/* ── 1. 全局 svg stroke 标准化为 1.5 ── */
html body .app-shell svg[stroke="currentColor"]:not([stroke-width="2.5"]):not([stroke-width="3"]) {
  stroke-width: 1.5 !important;
}

/* ── 2. 隐藏 page-header mascot 内原 <img>/<svg> (精确 class 列表) ── */
html body .app-shell .page-header .assistant-calendar-header-icon > img,
html body .app-shell .page-header .assistant-calendar-header-icon > svg,
html body .app-shell .page-header .assistant-pending-header-icon > img,
html body .app-shell .page-header .assistant-pending-header-icon > svg,
html body .app-shell .page-header .assistant-inbox-header-icon > img,
html body .app-shell .page-header .assistant-inbox-header-icon > svg,
html body .app-shell .page-header .assistant-mailbox-header-icon > img,
html body .app-shell .page-header .assistant-mailbox-header-icon > svg,
html body .app-shell .page-header .assistant-todos-header-icon > img,
html body .app-shell .page-header .assistant-todos-header-icon > svg,
html body .app-shell .page-header .assistant-guide-header-icon > img,
html body .app-shell .page-header .assistant-guide-header-icon > svg,
html body .app-shell .page-header .assistant-settings-header-icon > img,
html body .app-shell .page-header .assistant-settings-header-icon > svg,
html body .app-shell .page-header .boss-overview-header-icon > img,
html body .app-shell .page-header .boss-overview-header-icon > svg,
html body .app-shell .page-header .boss-pending-header-icon > img,
html body .app-shell .page-header .boss-pending-header-icon > svg,
html body .app-shell .page-header .boss-todos-header-icon > img,
html body .app-shell .page-header .boss-todos-header-icon > svg,
html body .app-shell .page-header .boss-commands-header-icon > img,
html body .app-shell .page-header .boss-commands-header-icon > svg,
html body .app-shell .page-header .boss-assistant-header-icon > img,
html body .app-shell .page-header .boss-assistant-header-icon > svg,
html body .app-shell .page-header .boss-guide-header-icon > img,
html body .app-shell .page-header .boss-guide-header-icon > svg,
html body .app-shell .page-header .boss-settings-header-icon > img,
html body .app-shell .page-header .boss-settings-header-icon > svg {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
}

/* ── 3. mascot 容器 brand-soft 圆角 (精确 class 列表,避免误伤其他 header-icon) ── */
html body .app-shell:not(._)[data-role] .page-header .assistant-calendar-header-icon,
html body .app-shell:not(._)[data-role] .page-header .assistant-pending-header-icon,
html body .app-shell:not(._)[data-role] .page-header .assistant-inbox-header-icon,
html body .app-shell:not(._)[data-role] .page-header .assistant-mailbox-header-icon,
html body .app-shell:not(._)[data-role] .page-header .assistant-todos-header-icon,
html body .app-shell:not(._)[data-role] .page-header .assistant-guide-header-icon,
html body .app-shell:not(._)[data-role] .page-header .assistant-settings-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-overview-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-pending-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-todos-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-commands-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-assistant-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-guide-header-icon,
html body .app-shell:not(._)[data-role] .page-header .boss-settings-header-icon {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  position: relative !important;
  width: 52px !important;
  height: 52px !important;
  min-width: 52px !important;
  min-height: 52px !important;
  max-width: 52px !important;
  max-height: 52px !important;
  background: #EEF0FC !important;
  border-radius: 14px !important;
  border: 1px solid rgba(79, 70, 229, 0.18) !important;
  flex-shrink: 0 !important;
  padding: 0 !important;
}

html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-calendar-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-pending-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-inbox-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-mailbox-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-todos-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-guide-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .assistant-settings-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-overview-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-pending-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-todos-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-commands-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-assistant-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-guide-header-icon,
html[data-theme="dark"] body .app-shell:not(._)[data-role] .page-header .boss-settings-header-icon {
  background: rgba(129, 140, 248, 0.22) !important;
  border-color: rgba(129, 140, 248, 0.36) !important;
  width: 52px !important;
  height: 52px !important;
  min-width: 52px !important;
  min-height: 52px !important;
  max-width: 52px !important;
  max-height: 52px !important;
  border-radius: 14px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
}

/* page-header lead 容器 gap 收紧 (v170: 14 → 10 → 8,标题更靠近图标方块) */
html body .app-shell:not(.mobile-shell) .page-header .assistant-home-reference-lead,
html body .app-shell:not(.mobile-shell) .page-header .assistant-route-reference-lead {
  gap: 8px !important;
  column-gap: 8px !important;
  align-items: center !important;
}

/* page-header 标题和副文字间距收紧 */
html body .app-shell:not(.mobile-shell) .page-header .assistant-home-reference-lead h3,
html body .app-shell:not(.mobile-shell) .page-header .assistant-route-reference-lead h3 {
  margin-bottom: 2px !important;
}

html body .app-shell:not(.mobile-shell) .page-header .assistant-home-reference-lead p,
html body .app-shell:not(.mobile-shell) .page-header .assistant-route-reference-lead p {
  margin-top: 0 !important;
  min-height: 0 !important;
  line-height: 1.45 !important;
}

/* ── 4. mascot ::before 通用 mask 配置 (Lucide line icon, v170: 32px in 52px container) ──
   v178: align-self: center 必须显式设,否则 flex container 默认 cross-axis 行为
   会拉伸 ::before 高度到 ~50px,mask-size: contain 失真,导致图标只渲染上半部分。
   flex 改用 0 0 auto 而不是 0 0 32px,让 width/height 32 各自生效。 */
html body .app-shell .page-header .assistant-calendar-header-icon::before,
html body .app-shell .page-header .assistant-pending-header-icon::before,
html body .app-shell .page-header .assistant-inbox-header-icon::before,
html body .app-shell .page-header .assistant-mailbox-header-icon::before,
html body .app-shell .page-header .assistant-todos-header-icon::before,
html body .app-shell .page-header .assistant-guide-header-icon::before,
html body .app-shell .page-header .assistant-settings-header-icon::before,
html body .app-shell .page-header .boss-overview-header-icon::before,
html body .app-shell .page-header .boss-pending-header-icon::before,
html body .app-shell .page-header .boss-todos-header-icon::before,
html body .app-shell .page-header .boss-commands-header-icon::before,
html body .app-shell .page-header .boss-assistant-header-icon::before,
html body .app-shell .page-header .boss-guide-header-icon::before,
html body .app-shell .page-header .boss-settings-header-icon::before {
  content: "" !important;
  display: block !important;
  width: 32px !important;
  height: 32px !important;
  min-width: 32px !important;
  min-height: 32px !important;
  max-width: 32px !important;
  max-height: 32px !important;
  flex: 0 0 auto !important;
  flex-shrink: 0 !important;
  align-self: center !important;
  justify-self: center !important;
  background: currentColor !important;
  color: var(--v4-brand) !important;
  -webkit-mask-position: center !important;
  -webkit-mask-size: contain !important;
  -webkit-mask-repeat: no-repeat !important;
  mask-position: center !important;
  mask-size: contain !important;
  mask-repeat: no-repeat !important;
}

/* ── 5. 各 page mascot 的 Lucide 图标 (data-uri SVG mask) ── */

/* 首页 (assistant calendar) → home */
html body .app-shell .page-header .assistant-calendar-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2h-4M9 22V12h6v10M9 22h6'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2h-4M9 22V12h6v10M9 22h6'/%3E%3C/svg%3E") !important;
}

/* 待安排会议 (assistant pending) → calendar-clock */
html body .app-shell .page-header .assistant-pending-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
}

/* 微信识别 (assistant inbox) → message-square-text */
html body .app-shell .page-header .assistant-inbox-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3Cpath d='M13 8H7'/%3E%3Cpath d='M17 12H7'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3Cpath d='M13 8H7'/%3E%3Cpath d='M17 12H7'/%3E%3C/svg%3E") !important;
}

/* 收信箱 (assistant mailbox) → mail */
html body .app-shell .page-header .assistant-mailbox-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E") !important;
}

/* 待办事项 (assistant + boss todos) → list-checks */
html body .app-shell .page-header .assistant-todos-header-icon::before,
html body .app-shell .page-header .boss-todos-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 17 2 2 4-4'/%3E%3Cpath d='m3 7 2 2 4-4'/%3E%3Cpath d='M13 6h8'/%3E%3Cpath d='M13 12h8'/%3E%3Cpath d='M13 18h8'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 17 2 2 4-4'/%3E%3Cpath d='m3 7 2 2 4-4'/%3E%3Cpath d='M13 6h8'/%3E%3Cpath d='M13 12h8'/%3E%3Cpath d='M13 18h8'/%3E%3C/svg%3E") !important;
}

/* 老板总览 (boss overview) → layout-dashboard */
html body .app-shell .page-header .boss-overview-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='9' rx='1'/%3E%3Crect x='14' y='3' width='7' height='5' rx='1'/%3E%3Crect x='14' y='12' width='7' height='9' rx='1'/%3E%3Crect x='3' y='16' width='7' height='5' rx='1'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='9' rx='1'/%3E%3Crect x='14' y='3' width='7' height='5' rx='1'/%3E%3Crect x='14' y='12' width='7' height='9' rx='1'/%3E%3Crect x='3' y='16' width='7' height='5' rx='1'/%3E%3C/svg%3E") !important;
}

/* 老板待安排 (boss pending) → calendar-clock (同 assistant pending) */
html body .app-shell .page-header .boss-pending-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
}

/* 老板指令台 (boss commands) → radio-tower */
html body .app-shell .page-header .boss-commands-header-icon::before,
html body .app-shell .page-header .boss-assistant-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.9 16.1C1 12.2 1 5.8 4.9 1.9'/%3E%3Cpath d='M7.8 4.7a6.14 6.14 0 0 0-.8 7.5'/%3E%3Ccircle cx='12' cy='9' r='2'/%3E%3Cpath d='M16.2 4.8c2 2 2.26 5.11.8 7.47'/%3E%3Cpath d='M19.1 1.9a9.96 9.96 0 0 1 0 14.1'/%3E%3Cpath d='M9.5 18h5'/%3E%3Cpath d='m8 22 4-11 4 11'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.9 16.1C1 12.2 1 5.8 4.9 1.9'/%3E%3Cpath d='M7.8 4.7a6.14 6.14 0 0 0-.8 7.5'/%3E%3Ccircle cx='12' cy='9' r='2'/%3E%3Cpath d='M16.2 4.8c2 2 2.26 5.11.8 7.47'/%3E%3Cpath d='M19.1 1.9a9.96 9.96 0 0 1 0 14.1'/%3E%3Cpath d='M9.5 18h5'/%3E%3Cpath d='m8 22 4-11 4 11'/%3E%3C/svg%3E") !important;
}

/* 使用教程 (assistant + boss guide) → book-open */
html body .app-shell .page-header .assistant-guide-header-icon::before,
html body .app-shell .page-header .boss-guide-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z'/%3E%3Cpath d='M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z'/%3E%3Cpath d='M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z'/%3E%3C/svg%3E") !important;
}

/* 账号与设置 (assistant + boss settings) → settings */
html body .app-shell .page-header .assistant-settings-header-icon::before,
html body .app-shell .page-header .boss-settings-header-icon::before {
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") !important;
}

/* ── 6. brand-mark ::before — 笑脸日历 mask icon (容器定义见上方合并块 line ~5154) ── */
html body .app-shell:not(.mobile-shell) .side-nav .brand-mark::before {
  content: "" !important;
  display: block !important;
  width: 46px !important;
  height: 46px !important;
  flex: 0 0 46px !important;
  flex-shrink: 0 !important;
  background: var(--v4-brand) !important;
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='17' rx='3'/%3E%3Cpath d='M3 10h18'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Ccircle cx='9' cy='14' r='0.9' fill='black' stroke='none'/%3E%3Ccircle cx='15' cy='14' r='0.9' fill='black' stroke='none'/%3E%3Cpath d='M9 17c.8 1.2 1.8 1.8 3 1.8s2.2-.6 3-1.8'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='17' rx='3'/%3E%3Cpath d='M3 10h18'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M16 2v4'/%3E%3Ccircle cx='9' cy='14' r='0.9' fill='black' stroke='none'/%3E%3Ccircle cx='15' cy='14' r='0.9' fill='black' stroke='none'/%3E%3Cpath d='M9 17c.8 1.2 1.8 1.8 3 1.8s2.2-.6 3-1.8'/%3E%3C/svg%3E") !important;
  -webkit-mask-position: center !important;
  -webkit-mask-size: contain !important;
  -webkit-mask-repeat: no-repeat !important;
  mask-position: center !important;
  mask-size: contain !important;
  mask-repeat: no-repeat !important;
}

/* 隐藏 brand-mark 内原 svg/img */
html body .app-shell:not(.mobile-shell) .side-nav .brand-mark > svg,
html body .app-shell:not(.mobile-shell) .side-nav .brand-mark > img {
  display: none !important;
  opacity: 0 !important;
}

/* ── 8. settings drawer 宽度修复 (181px → 380px 让中文副文不被 ellipsis) ── */

/* 关键: sidebar 默认 overflow: hidden 会把 380px 宽的 menu 横向剪掉
   → menu 打开时让 sidebar overflow visible (依赖 :has() 选择器) */
html body .app-shell:not(.mobile-shell) .side-nav:has(.nav-settings-menu) {
  overflow: visible !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-menu {
  min-width: 260px !important;
  width: 260px !important;
  padding: 12px !important;
  gap: 6px !important;
  left: 8px !important;
  right: auto !important;
}

/* settings 菜单内每行: icon 列收紧到 38, 文字与 icon 紧凑挨近 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row {
  grid-template-columns: 38px minmax(0, 1fr) 16px !important;
  min-height: 54px !important;
  gap: 12px !important;
  padding: 8px 12px !important;
}

/* 标题: 不再 nowrap 截断,允许 2 行 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-copy strong,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row strong {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  font-size: 14.5px !important;
  font-weight: 700 !important;
  line-height: 1.3 !important;
}

/* 副文: 单行省略,紧贴标题正下方 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-copy span {
  font-size: 11.5px !important;
  line-height: 1.45 !important;
  max-height: calc(1.45em * 2) !important;
  -webkit-line-clamp: 2 !important;
  line-clamp: 2 !important;
  color: var(--v4-ink-3, #94A3B8) !important;
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
}

/* icon 容器统一 38×38, svg 22×22 居中 — 所有行图标视觉一致 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > [class*="icon"]:first-child {
  width: 38px !important;
  height: 38px !important;
  border-radius: 10px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* id-row 的直接 svg first-child: 用 box-sizing 限制为 38px 容器,但 svg padding 让内部图形仅占 22px 居中 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > svg:first-child {
  width: 38px !important;
  height: 38px !important;
  padding: 8px !important;
  border-radius: 10px !important;
  background: var(--v4-brand-soft, rgba(79, 70, 229, 0.08)) !important;
  box-sizing: border-box !important;
}

/* 所有其他 svg (regular row, row-icon 内嵌) 统一 22×22 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon > svg,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row .nav-settings-row-icon > svg {
  width: 22px !important;
  height: 22px !important;
}

/* regular row 的 svg first-child 也设容器 38 + padding,与 id-row 视觉一致 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-child {
  width: 38px !important;
  height: 38px !important;
  padding: 8px !important;
  border-radius: 10px !important;
  background: var(--v4-brand-soft, rgba(79, 70, 229, 0.08)) !important;
  box-sizing: border-box !important;
}

/* 兜底: 让 menu 内 .nav-settings-row 优先于第三方 padding/gap 规则,避免 line 6605 的 gap:14 覆盖 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu > .nav-settings-actions > .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-actions .nav-settings-row {
  gap: 12px !important;
  padding: 10px 12px !important;
  grid-template-columns: 38px minmax(0, 1fr) 16px !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-row {
  width: 100% !important;
  align-items: center !important;
  box-sizing: border-box !important;
  /* gap/padding 由 line ~6318/6390 (.nav-settings-menu 内) 提供,这里不再设 */
}

/* row 左侧图标统一为 38×38 容器（与 id-row 一致），SVG 内嵌 padding 8px 实际可见 22×22 */
html body .app-shell:not(.mobile-shell) .nav-settings-row > svg:first-of-type,
html body .app-shell:not(.mobile-shell) .nav-settings-row > .nav-settings-row-icon {
  width: 38px !important;
  height: 38px !important;
  padding: 8px !important;
  flex: 0 0 38px !important;
  flex-shrink: 0 !important;
  border-radius: 10px !important;
  box-sizing: border-box !important;
  stroke-width: 1.6 !important;
  background: rgba(99, 102, 241, 0.10) !important;
  border: 1px solid rgba(99, 102, 241, 0.18) !important;
  color: var(--v4-brand, #4F46E5) !important;
}

/* 右侧箭头 14px，向左移动一点 */
html body .app-shell:not(.mobile-shell) .nav-settings-row > svg:last-of-type {
  width: 14px !important;
  height: 14px !important;
  flex: 0 0 14px !important;
  flex-shrink: 0 !important;
  opacity: 0.5 !important;
  margin-right: 6px !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-row-copy {
  flex: 1 1 auto !important;
  min-width: 0 !important;
  text-align: left !important;
  white-space: normal !important;
  word-break: keep-all !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented {
  display: flex !important;
  gap: 6px !important;
  flex-wrap: nowrap !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented > * {
  flex: 1 1 auto !important;
  white-space: nowrap !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-head,
html body .app-shell:not(.mobile-shell) .nav-settings-actions,
html body .app-shell:not(.mobile-shell) .nav-settings-theme {
  width: 100% !important;
  box-sizing: border-box !important;
}

/* ── 8.5 待安排表单 textarea 高度（合并到 v186 规则，移除 max-height 限制） ── */
html body .app-shell:not(.mobile-shell) textarea[data-scope="pendingForm"][data-field="recommendedReason"],
html body .app-shell:not(.mobile-shell) textarea[data-scope="pendingForm"][data-field="note"] {
  resize: vertical !important;
  line-height: 1.55 !important;
}

/* ── 9. 设置按钮 (齿轮) → Lucide settings, 替换原 svg ── */
html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger svg,
html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger .nav-settings-icon {
  display: none !important;
}

html body .app-shell:not(.mobile-shell) .side-nav .nav-settings-trigger::before {
  content: "" !important;
  display: inline-block !important;
  width: 16px !important;
  height: 16px !important;
  background: currentColor !important;
  vertical-align: middle !important;
  margin-right: 6px !important;
  -webkit-mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") !important;
  mask-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") !important;
  -webkit-mask-position: center !important;
  -webkit-mask-size: contain !important;
  -webkit-mask-repeat: no-repeat !important;
  mask-position: center !important;
  mask-size: contain !important;
  mask-repeat: no-repeat !important;
}

/* ════════ v4-II：QA-fix P1 — 首页 hero stat 卡内的日历贴纸装饰隐藏 ════════
   - .stat-card.stats-featured 内的 ::after 或 .featured-illustration 是装饰元素
   - 隐藏后 hero 卡只剩文字+chip,更 editorial
   ═══════════════════════════════════════════════════════════════ */
html body .app-shell .stat-card.stats-featured::after,
html body .app-shell .stat-card.featured-card::after,
html body .app-shell .stat-card.stats-featured .featured-illustration,
html body .app-shell .stat-card.stats-featured .stat-card-illustration,
html body .app-shell .stat-card.stats-featured > svg:not(.stat-card-glyph svg):not(.v5-hero-art),
html body .app-shell .stat-card.stats-featured > img,
html body .app-shell .stat-card.featured-card > svg:not(.v5-hero-art),
html body .app-shell .stat-card.featured-card > img,
html body .app-shell .featured-card .featured-illustration,
html body .app-shell .stats-featured-illustration,
html body .app-shell .stats-featured-decoration {
  display: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
}

/* ============================================================
   侧栏折叠时，主内容铺满（修 base.css 15001/18358 把 assistant 角色
   的 grid 锁成 230px，导致折叠后留 162px 黑空白）
   - 让 .side-collapsed 的网格列宽 68px 在所有 role 下都生效
   - 用 [data-role] + .side-collapsed + !important 抢回特异性
   ============================================================ */
html body .app-shell.side-collapsed:not(.mobile-shell)[data-role="assistant"],
html body .app-shell.side-collapsed:not(.mobile-shell)[data-role="boss"] {
  grid-template-columns: 68px minmax(0, 1fr) !important;
}

/* ============================================================
   修：折叠侧栏时设置齿轮图标消失
   - base.css:836 用 `.nav-settings-trigger span:not(.nav-settings-trigger-icon)`
     太宽，把外层 .nav-settings-trigger-main（也是 span）也隐藏，连带图标
   - 这里把外层强制显示，只藏里面那条纯文字 "设置" span
   ============================================================ */
html body .side-nav.collapsed .nav-settings-trigger,
html body .side-nav.collapsed .nav-settings-trigger-main {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

html body .side-nav.collapsed .nav-settings-trigger-icon {
  display: block !important;
}

/* 只隐藏内层无 class 的"设置"文字 span */
html body .side-nav.collapsed .nav-settings-trigger-main > span:not(.nav-settings-trigger-icon) {
  display: none !important;
}

/* ============================================================================
   ╔════════════════════════════════════════════════════════════════════════╗
   ║                    设计令牌 v4：editorial 升级                          ║
   ║   - 限色：PRD blue (#2563EB) 仅用于主 CTA + active；其他用 slate 灰阶      ║
   ║   - 状态色系统对齐 PRD §7.2: 完成/待补/风险/主行动 4 色位                ║
   ║   - 圆角刻度：chip 8 / button 10 / card 12 / hero 16                    ║
   ║   - hairline border 取代 drop-shadow                                    ║
   ║   参考：Linear / Vercel / Notion / Stripe                              ║
   ╚════════════════════════════════════════════════════════════════════════╝ */

:root {
  /* brand: 主品牌色 PRD blue #2563EB (CTA + active 专用)
     原 indigo #4f46e5 迁移至 PRD §7.2 要求的主行动蓝，让位给状态色系统 */
  --v4-brand: #2563EB;
  --v4-brand-hover: #1D4ED8;
  --v4-brand-soft: rgba(37, 99, 235, 0.08);
  --v4-brand-line: rgba(37, 99, 235, 0.20);

  /* surface */
  --v4-surface: #ffffff;
  --v4-surface-2: #fafbfc;
  --v4-surface-3: #f4f5f7;

  /* ink: 3-tier 灰阶 */
  --v4-ink-1: #0f172a;
  --v4-ink-2: #475569;
  --v4-ink-3: #94a3b8;

  /* line: hairline */
  --v4-line: rgba(15, 23, 42, 0.06);
  --v4-line-2: rgba(15, 23, 42, 0.10);

  /* semantic - 对齐 PRD §7.2 色值 */
  --v4-ok: #0F9F6E;       /* 完成 / 已同步 / 已通过 */
  --v4-warn: #F59E0B;     /* 待补充 / 待处理 */
  --v4-danger: #EF4444;   /* 风险 / 高优 / 需确认 */

  /* PRD §7.2 语义别名（与 --v4-* 同源，供PRD 文档引用 / 新组件使用）
     不动现有 --v4-* 引用，避免连锁改动 */
  --color-primary-blue: var(--v4-brand);
  --color-primary-blue-hover: var(--v4-brand-hover);
  --color-primary-blue-soft: var(--v4-brand-soft);
  --color-success-green: var(--v4-ok);
  --color-warning-amber: var(--v4-warn);
  --color-danger-red: var(--v4-danger);
  --color-info-blue: #3B82F6;
  --color-page-bg: var(--v4-surface-2);

  /* radius scale */
  --v4-r-chip: 8px;
  --v4-r-btn: 10px;
  --v4-r-card: 12px;
  --v4-r-hero: 16px;
  --v4-r-pill: 999px;

  /* shadow（仅 hero 区用） */
  --v4-shadow-hero: 0 1px 0 rgba(15, 23, 42, 0.04), 0 12px 24px -10px rgba(15, 23, 42, 0.08);
}

html[data-theme="dark"] {
  /* dark mode: PRD blue 的浅化版，保证暗背上可读性 */
  --v4-brand: #60A5FA;
  --v4-brand-hover: #93C5FD;
  --v4-brand-soft: rgba(96, 165, 250, 0.10);
  --v4-brand-line: rgba(96, 165, 250, 0.24);

  --v4-surface: rgba(15, 23, 42, 0.96);
  --v4-surface-2: rgba(17, 24, 39, 0.92);
  --v4-surface-3: rgba(30, 41, 59, 0.88);

  --v4-ink-1: #f1f5f9;
  --v4-ink-2: #cbd5e1;
  --v4-ink-3: #64748b;

  --v4-line: rgba(255, 255, 255, 0.07);
  --v4-line-2: rgba(255, 255, 255, 0.14);

  /* dark mode 状态色：从 PRD 色重提饱和度以适应暗背 */
  --v4-ok: #34D399;
  --v4-warn: #FBBF24;
  --v4-danger: #F87171;

  --v4-shadow-hero: 0 1px 0 rgba(0, 0, 0, 0.3), 0 12px 30px -8px rgba(0, 0, 0, 0.6);
}

/* ============================================================================
   v4-A：按钮系统精雕（action-button / ghost-button / 通用 button）
   ============================================================================ */

/* 主 CTA：subtle gradient + 清晰边框，不饱和不抖 */
html body .app-shell .action-button,
html body .app-shell button.action-button {
  border-radius: var(--v4-r-btn) !important;
  padding: 10px 18px !important;
  font-size: 13.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  background: linear-gradient(180deg, var(--v4-brand) 0%, var(--v4-brand-hover) 100%) !important;
  color: #ffffff !important;
  border: 1px solid var(--v4-brand-hover) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.12) inset,
    0 1px 2px rgba(15, 23, 42, 0.08) !important;
  transition: filter 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.12s ease !important;
  letter-spacing: 0.005em !important;
  min-height: 38px !important;
}

html body .app-shell .action-button:hover,
html body .app-shell button.action-button:hover {
  filter: brightness(1.06) !important;
  transform: translateY(-0.5px) !important;
}

html body .app-shell .action-button:active,
html body .app-shell button.action-button:active {
  filter: brightness(0.96) !important;
  transform: translateY(0) !important;
}

/* secondary：outline-only，indigo 字 */
html body .app-shell button.action-button.secondary {
  background: transparent !important;
  color: var(--v4-brand) !important;
  border: 1px solid var(--v4-brand-line) !important;
  box-shadow: none !important;
}

html body .app-shell button.action-button.secondary:hover {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand) !important;
  transform: translateY(-0.5px) !important;
}

html[data-theme="dark"] body .app-shell button.action-button.secondary {
  color: var(--v4-brand) !important;
  border-color: var(--v4-brand-line) !important;
}

/* ghost-button：bare，hover 时显出 */
html body .app-shell .ghost-button,
html body .app-shell button.ghost-button {
  border-radius: var(--v4-r-btn) !important;
  padding: 8px 14px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  background: transparent !important;
  border: 1px solid var(--v4-line-2) !important;
  color: var(--v4-ink-2) !important;
  box-shadow: none !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  min-height: 32px !important;
}

html body .app-shell .ghost-button:hover,
html body .app-shell button.ghost-button:hover {
  background: var(--v4-surface-3) !important;
  border-color: var(--v4-line-2) !important;
  color: var(--v4-ink-1) !important;
  transform: translateY(-0.5px) !important;
}

html[data-theme="dark"] body .app-shell .ghost-button,
html[data-theme="dark"] body .app-shell button.ghost-button {
  background: transparent !important;
  border-color: var(--v4-line-2) !important;
  color: var(--v4-ink-2) !important;
}

html[data-theme="dark"] body .app-shell .ghost-button:hover,
html[data-theme="dark"] body .app-shell button.ghost-button:hover {
  background: rgba(129, 140, 248, 0.08) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-ink-1) !important;
}

/* ============================================================================
   v4-B：chip / pill / badge 精雕
   ============================================================================ */

/* chip：tag 类（"今天重点" / "会前准备" 这种快捷指令） */
html body .app-shell .chip,
html body .app-shell .assistant-chip,
html body .app-shell .assistant-quick-prompt,
html body .app-shell .filter-chip {
  border-radius: var(--v4-r-chip) !important;
  padding: 6px 12px !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  letter-spacing: -0.005em !important;
  background: var(--v4-surface-3) !important;
  border: 1px solid var(--v4-line) !important;
  color: var(--v4-ink-2) !important;
  box-shadow: none !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  line-height: 1.4 !important;
}

html body .app-shell .chip:hover,
html body .app-shell .assistant-chip:hover,
html body .app-shell .assistant-quick-prompt:hover,
html body .app-shell .filter-chip:hover {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand) !important;
}

html body .app-shell .chip.active,
html body .app-shell .filter-chip.active {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
  font-weight: 600 !important;
}

/* status-pill：状态胶囊（用 pill 圆角） */
html body .app-shell .status-pill {
  border-radius: var(--v4-r-pill) !important;
  padding: 3px 10px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  text-transform: uppercase !important;
  border: 1px solid transparent !important;
  line-height: 1.5 !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  white-space: nowrap !important;
}

/* badge：圆点小角标（数字 / 高亮） */
html body .app-shell .badge,
html body .app-shell .nav-badge {
  border-radius: var(--v4-r-pill) !important;
  padding: 2px 6px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  min-width: 18px !important;
  max-width: 100% !important;
  height: 18px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

/* ============================================================================
   v4-C：card / panel 圆角与边框校准（去过度阴影 + hairline）
   - 全局 panel 圆角从 24-28 → 12 / 16
   - drop-shadow → 1px hairline
   - 注意：保留 hero 区（boss-welcome 这种）的强阴影
   ============================================================================ */

/* 普通 panel 卡片：hairline + 12px radius */
html body .app-shell:not(.mobile-shell) section.panel:not(.mobile-feature-card):not(.boss-welcome-card):not(.assistant-home-reference-header):not(.assistant-route-reference-header) {
  border-radius: var(--v4-r-card) !important;
  border: 1px solid var(--v4-line) !important;
  box-shadow: none !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) section.panel:not(.mobile-feature-card):not(.boss-welcome-card):not(.assistant-home-reference-header):not(.assistant-route-reference-header) {
  border-color: var(--v4-line) !important;
}

/* event-card / pending-card / command-card / mailbox-feed-item / todo-card：
   统一卡片圆角和边框 */
html body .app-shell:not(.mobile-shell) .event-card,
html body .app-shell:not(.mobile-shell) .pending-card,
html body .app-shell:not(.mobile-shell) .command-card,
html body .app-shell:not(.mobile-shell) .mailbox-feed-item,
html body .app-shell:not(.mobile-shell) .todo-card,
html body .app-shell:not(.mobile-shell) .focus-card,
html body .app-shell:not(.mobile-shell) .risk-card,
html body .app-shell:not(.mobile-shell) .decision-card {
  border-radius: var(--v4-r-card) !important;
  border: 1px solid var(--v4-line) !important;
  box-shadow: none !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .event-card:hover,
html body .app-shell:not(.mobile-shell) .pending-card:hover,
html body .app-shell:not(.mobile-shell) .command-card:hover,
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:hover,
html body .app-shell:not(.mobile-shell) .todo-card:hover {
  border-color: var(--v4-line-2) !important;
  transform: translateY(-1px) !important;
}

/* ============================================================================
   v4-D：input / textarea / select 输入控件统一
   ============================================================================ */
html body .app-shell input[type="text"],
html body .app-shell input[type="search"],
html body .app-shell input[type="email"],
html body .app-shell input[type="tel"],
html body .app-shell input[type="password"],
html body .app-shell input[type="number"],
html body .app-shell textarea,
html body .app-shell select {
  border-radius: var(--v4-r-btn) !important;
  border: 1px solid var(--v4-line-2) !important;
  background: var(--v4-surface) !important;
  color: var(--v4-ink-1) !important;
  font-size: 14px !important;
  padding: 9px 12px !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  box-shadow: none !important;
}

html body .app-shell input:focus,
html body .app-shell textarea:focus,
html body .app-shell select:focus {
  border-color: var(--v4-brand) !important;
  box-shadow: 0 0 0 3px var(--v4-brand-soft) !important;
  outline: none !important;
}

html[data-theme="dark"] body .app-shell input,
html[data-theme="dark"] body .app-shell textarea,
html[data-theme="dark"] body .app-shell select {
  background: var(--v4-surface-2) !important;
  border-color: var(--v4-line-2) !important;
  color: var(--v4-ink-1) !important;
}

/* ============================================================================
   v4-E：「今日重点」hero 卡 editorial 重做
   - 旧：紫色全渐变 + 白字 + 彩色贴纸日历 → 太"AI dashboard 模板"
   - 新：白底 + hairline + 左侧 4px brand accent 条
        会议标题做主角（28px / 600 / -0.02em）
        其他元素全部退到二级（灰色 / 小字号 / outline）
   ============================================================================ */

/* 卡容器：去渐变，hairline + 左 brand 条 */
html body .app-shell .v5-hero-card {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-hero) !important;
  padding: 22px 24px !important;
  min-height: auto !important;
  overflow: hidden !important;
  position: relative !important;
  box-shadow: none !important;
  color: var(--v4-ink-1) !important;
  gap: 14px !important;
}

/* 左侧 4px brand accent 条（取代整面紫色） */
html body .app-shell .v5-hero-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 16px !important;
  bottom: 16px !important;
  width: 3px !important;
  background: linear-gradient(180deg, var(--v4-brand) 0%, var(--v4-brand-hover) 100%) !important;
  border-radius: 0 3px 3px 0 !important;
  z-index: 0 !important;
}

/* 顶栏 */
html body .app-shell .v5-hero-card .v5-hero-head {
  min-height: auto !important;
  margin-bottom: 0 !important;
}

html body .app-shell .v5-hero-card .v5-hero-head-left {
  gap: 10px !important;
}

/* 圆形 ☆ glyph：缩小、改 indigo */
html body .app-shell .v5-hero-card .v5-hero-glyph {
  width: 22px !important;
  height: 22px !important;
  background: var(--v4-brand-soft) !important;
  border: 1px solid var(--v4-brand-line) !important;
  color: var(--v4-brand) !important;
  box-shadow: none !important;
  border-radius: var(--v4-r-chip) !important;
}

html body .app-shell .v5-hero-card .v5-hero-glyph svg {
  width: 12px !important;
  height: 12px !important;
}

/* "今日重点" 标签：editorial UPPERCASE 灰 */
html body .app-shell .v5-hero-card .v5-hero-label {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase !important;
  color: var(--v4-ink-3) !important;
  text-shadow: none !important;
  line-height: 1 !important;
}

/* 倒计时 capsule：editorial pill，UPPERCASE */
html body .app-shell .v5-hero-card .v5-hero-countdown {
  background: var(--v4-surface-3) !important;
  border: 1px solid var(--v4-line) !important;
  color: var(--v4-ink-2) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 3px 10px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  box-shadow: none !important;
  min-height: auto !important;
  height: auto !important;
}

html body .app-shell .v5-hero-card .v5-hero-countdown svg {
  width: 12px !important;
  height: 12px !important;
  stroke-width: 2 !important;
}

/* tone 状态色：仅用左侧色点替代整体染色 */
html body .app-shell .v5-hero-card .v5-hero-countdown.tone-near {
  background: rgba(59, 130, 246, 0.08) !important;
  border-color: rgba(59, 130, 246, 0.25) !important;
  color: #2563eb !important;
}

html body .app-shell .v5-hero-card .v5-hero-countdown.tone-soon {
  background: rgba(217, 119, 6, 0.08) !important;
  border-color: rgba(217, 119, 6, 0.25) !important;
  color: var(--v4-warn) !important;
}

html body .app-shell .v5-hero-card .v5-hero-countdown.tone-live {
  background: rgba(220, 38, 38, 0.10) !important;
  border-color: rgba(220, 38, 38, 0.28) !important;
  color: var(--v4-danger) !important;
  animation: none !important;
  box-shadow: none !important;
}

html body .app-shell .v5-hero-card .v5-hero-countdown.tone-ended {
  background: var(--v4-surface-3) !important;
  border-color: var(--v4-line) !important;
  color: var(--v4-ink-3) !important;
}

/* P1 优先级：v182 — 跟列表里 .badge.priority-p1 实心橙黄一致
   (user 反馈"统计卡 P1 跟 P1 分区颜色保持一致") */
html body .app-shell .v5-hero-card .v5-hero-priority {
  background: #F59E0B !important;
  border: 1px solid transparent !important;
  color: #FFFFFF !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 3px 10px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.05em !important;
  min-width: auto !important;
  height: auto !important;
  min-height: auto !important;
  box-shadow: none !important;
  line-height: 1.4 !important;
}

html body .app-shell .v5-hero-card .v5-hero-priority.priority-p2 {
  background: rgba(139, 92, 246, 0.08) !important;
  border-color: rgba(139, 92, 246, 0.30) !important;
  color: #7c3aed !important;
  box-shadow: none !important;
}

html body .app-shell .v5-hero-card .v5-hero-priority.priority-p3,
html body .app-shell .v5-hero-card .v5-hero-priority.priority-p4,
html body .app-shell .v5-hero-card .v5-hero-priority.priority-p5 {
  background: var(--v4-surface-3) !important;
  border-color: var(--v4-line) !important;
  color: var(--v4-ink-3) !important;
}

/* 会议标题：做主角 28px / 600 / -0.02em */
html body .app-shell .v5-hero-card .v5-hero-title {
  font-size: 26px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.18 !important;
  color: var(--v4-ink-1) !important;
  margin: 6px 0 0 !important;
  max-width: calc(100% - 130px) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  text-shadow: none !important;
}

html body .app-shell .v5-hero-card .v5-hero-title.is-empty {
  font-size: 18px !important;
  font-weight: 600 !important;
  color: var(--v4-ink-2) !important;
  max-width: 100% !important;
  white-space: normal !important;
}

/* 时间·部门 meta：13px / ink-2 / weight 500 */
html body .app-shell .v5-hero-card .v5-hero-meta {
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--v4-ink-2) !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
  gap: 6px !important;
}

html body .app-shell .v5-hero-card .v5-hero-meta-icon {
  width: 14px !important;
  height: 14px !important;
  color: var(--v4-ink-3) !important;
  stroke-width: 1.8 !important;
}

/* "建议提前准备" pill：从填充 → ghost outline */
html body .app-shell .v5-hero-card .v5-hero-pill {
  background: transparent !important;
  border: 1px solid var(--v4-line-2) !important;
  color: var(--v4-ink-2) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 4px 12px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  gap: 6px !important;
  margin-top: 2px !important;
  align-self: flex-start !important;
}

html body .app-shell .v5-hero-card .v5-hero-pill:hover {
  background: var(--v4-surface-3) !important;
  border-color: var(--v4-line-2) !important;
}

html body .app-shell .v5-hero-card .v5-hero-pill-icon {
  width: 14px !important;
  height: 14px !important;
  color: var(--v4-ink-3) !important;
}

html body .app-shell .v5-hero-card .v5-hero-pill.is-danger {
  background: rgba(220, 38, 38, 0.06) !important;
  border-color: rgba(220, 38, 38, 0.25) !important;
  color: var(--v4-danger) !important;
}

html body .app-shell .v5-hero-card .v5-hero-pill.is-danger .v5-hero-pill-icon {
  color: var(--v4-danger) !important;
}

/* 底部 note：13px / ink-3 灰 */
html body .app-shell .v5-hero-card .v5-hero-note {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-3) !important;
  line-height: 1.5 !important;
  margin: 6px 0 0 !important;
  letter-spacing: 0 !important;
  text-shadow: none !important;
}

/* 日历插画：保留 SVG 原有的彩色 sticker（v23: 用户反馈"插画没有颜色"，
   原先规则把所有 sticker 改成单色 --v4-brand 蓝紫，过于灰暗）
   现在：只控制尺寸/位置/整体 opacity，不覆盖子元素 fill/stroke 色值 */
html body .app-shell .v5-hero-card .v5-hero-art,
html body .app-shell .stat-card.v5-hero-card > svg.v5-hero-art {
  position: absolute !important;
  right: 18px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 96px !important;
  height: 96px !important;
  opacity: 0.95 !important;
  pointer-events: none !important;
  z-index: 0 !important;
}

/* v23-fix: 让日历轮廓（没有显式 fill/stroke 颜色、用 currentColor 的线条）
   跟随品牌蓝紫，但保留子元素自带的 #ef4444 / #22c55e / #fbbf24 / #f472b6
   等彩色 sticker 原本的颜色。通过 `[stroke="currentColor"]` 精确匹配，
   不再使用全量通配，彩色 sticker 得以正常显示。 */
html body .app-shell .v5-hero-card .v5-hero-art {
  color: var(--v4-brand) !important;
}

/* 深色主题 */
html[data-theme="dark"] body .app-shell .v5-hero-card {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-card::before {
  background: linear-gradient(180deg, #818cf8 0%, #a5b4fc 100%) !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-title {
  color: var(--v4-ink-1) !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-meta {
  color: var(--v4-ink-2) !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-note {
  color: var(--v4-ink-3) !important;
}

html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-label {
  color: var(--v4-ink-3) !important;
}

/* v23-fix: 暗色模式下同样保留 SVG 自带彩色 sticker，只把线稿轮廓（currentColor）
   切到淡蓝紫，对比暗色背景更柔和；彩色小贴纸保持原样 */
html[data-theme="dark"] body .app-shell .v5-hero-card .v5-hero-art {
  color: rgba(165, 180, 252, 0.75) !important;
}

/* ============================================================================
   v4-F：page-header / 页头横幅 editorial 化
   - "首页 + 打开就先看今天" 这种 page header 字号节奏调整
   - 副标题改 ink-2 灰，主标题保持 28-32 力度
   ============================================================================ */
html body .app-shell:not(.mobile-shell) .assistant-home-reference-header,
html body .app-shell:not(.mobile-shell) .assistant-route-reference-header {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-hero) !important;
  box-shadow: none !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .assistant-home-reference-header,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .assistant-route-reference-header {
  background: var(--v4-surface-2) !important;
  border-color: var(--v4-line) !important;
}

/* page header 主标题 */
html body .app-shell:not(.mobile-shell) .assistant-home-reference-header h3,
html body .app-shell:not(.mobile-shell) .assistant-route-reference-header h3,
html body .app-shell:not(.mobile-shell) .assistant-home-title-stack h3 {
  font-size: 28px !important;
  font-weight: 600 !important;
  letter-spacing: -0.025em !important;
  line-height: 1.15 !important;
  color: var(--v4-ink-1) !important;
}

/* page header 副标题 */
html body .app-shell:not(.mobile-shell) .assistant-home-reference-header p,
html body .app-shell:not(.mobile-shell) .assistant-route-reference-header p,
html body .app-shell:not(.mobile-shell) .assistant-home-title-stack p {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.55 !important;
  letter-spacing: 0 !important;
}

/* ============================================================================
   v4-G：收信箱 4 张 stat 卡 editorial 重做（Linear 风）
   - 旧：深紫渐变实心 + 白色巨大数字 → 太"saas dashboard"
   - 新：白底 + hairline + 数字仍是主角(ink-1)，UPPERCASE 标签
        类目色仅作左上角 3×3 色点暗示，不染面
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card,
html body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card {
  background: linear-gradient(135deg, #EEF0FC 0%, #E0E7FF 100%) !important;
  border: 1px solid rgba(99, 102, 241, 0.22) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  color: var(--v4-ink-1) !important;
  padding: 18px 18px 16px !important;
  min-height: 156px !important;
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-start !important;
  gap: 0 !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card:hover {
  border-color: var(--v4-line-2) !important;
  transform: translateY(-1px) !important;
}

/* 标签：UPPERCASE 期刊小标 */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-label,
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card small,
html body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card small {
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
  color: var(--v4-ink-3) !important;
  line-height: 1 !important;
  margin-bottom: 12px !important;
}

/* 大数字：48-56px / 600 / ink-1 / -0.03em */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-value,
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card strong,
html body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card strong {
  font-size: 52px !important;
  font-weight: 600 !important;
  letter-spacing: -0.04em !important;
  line-height: 1 !important;
  color: var(--v4-ink-1) !important;
  margin: 0 0 8px !important;
  font-feature-settings: "tnum" 1 !important;
}

/* 副文字 / 备注：13px / ink-2 */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-note,
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card span,
html body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-overview-panel .stat-card span {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
  letter-spacing: 0 !important;
}

/* 类目色：左上角 3px 渐变条作暗示（每张 stat 颜色不同） */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 16px !important;
  bottom: 16px !important;
  width: 3px !important;
  background: var(--v4-brand) !important;
  border-radius: 0 3px 3px 0 !important;
  opacity: 0.5 !important;
}

/* 第 1 张（紧急/老板批注）红 */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card:nth-child(1)::before {
  background: var(--v4-danger) !important;
}

/* 第 2 张（待确认）橙 */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card:nth-child(2)::before {
  background: var(--v4-warn) !important;
}

/* 第 3 张（更新提醒）indigo */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card:nth-child(3)::before {
  background: var(--v4-brand) !important;
}

/* 第 4 张（已完成）绿 */
html body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card:nth-child(4)::before {
  background: var(--v4-ok) !important;
}

/* 深色主题 */
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-value,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card strong {
  color: var(--v4-ink-1) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-label,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card small {
  color: var(--v4-ink-3) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card .stat-card-note,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-summary-grid .stat-card span {
  color: var(--v4-ink-2) !important;
}

/* ============================================================================
   v4-H：收信箱 feed item / 通知卡精雕
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .mailbox-feed-item,
html body .app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  padding: 12px 14px 12px 18px !important;
  position: relative !important;
  overflow: hidden !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .mailbox-feed-item:hover {
  border-color: var(--v4-line-2) !important;
  transform: translateY(-1px) !important;
}

html body .app-shell:not(.mobile-shell) .mailbox-feed-item::before {
  width: 3px !important;
  border-radius: 0 !important;
}

html body .app-shell:not(.mobile-shell) .mailbox-feed-item strong {
  font-size: 13.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.36 !important;
  color: var(--v4-ink-1) !important;
  margin-bottom: 3px !important;
}

html body .app-shell:not(.mobile-shell) .mailbox-feed-item p {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  line-height: 1.5 !important;
  color: var(--v4-ink-2) !important;
  margin: 0 !important;
}

html body .app-shell:not(.mobile-shell) .mailbox-feed-item .mailbox-feed-meta,
html body .app-shell:not(.mobile-shell) .mailbox-feed-item time {
  font-size: 11px !important;
  font-weight: 500 !important;
  letter-spacing: 0.02em !important;
  color: var(--v4-ink-3) !important;
}

/* ============================================================================
   v4-I：待办列表 editorial
   - 已有：counter 编号 + 左侧状态色条
   - 升级：编号细瘦 / hairline 卡 / 状态用色点替代部分胶囊感
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .todo-list {
  counter-reset: todo-counter !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}

html body .app-shell:not(.mobile-shell) .todo-list .todo-card {
  counter-increment: todo-counter !important;
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  padding: 12px 16px 12px 18px !important;
  position: relative !important;
  overflow: hidden !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .todo-list .todo-card:hover {
  border-color: var(--v4-line-2) !important;
  transform: translateY(-1px) !important;
  box-shadow: none !important;
}

/* 编号：移到右上角的小灰字,不占用主内容栏空间 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card::before {
  content: counter(todo-counter, decimal-leading-zero) !important;
  position: absolute !important;
  top: 8px !important;
  right: 12px !important;
  left: auto !important;
  bottom: auto !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  font-family: "Inter", "SF Mono", monospace !important;
  letter-spacing: 0.06em !important;
  color: var(--v4-ink-3) !important;
  opacity: 0.55 !important;
  line-height: 1 !important;
  background: transparent !important;
  border: none !important;
  width: auto !important;
  height: auto !important;
  border-radius: 0 !important;
  display: block !important;
  pointer-events: none !important;
}

/* 左侧 3px 状态 accent bar — 紧贴左边 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card::after {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 3px !important;
  background: var(--v4-line-2) !important;
  border-radius: 0 !important;
}

/* 已完成 = 绿 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.done)::after,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.success)::after {
  background: var(--v4-ok) !important;
}

/* 处理中 = 紫 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.progress)::after,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.in-progress)::after {
  background: var(--v4-brand) !important;
}

/* 待处理 = 橙 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.pending)::after,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.todo)::after {
  background: var(--v4-warn) !important;
}

/* 已逾期 = 红 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.overdue)::after,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card:has(.status-pill.danger)::after {
  background: var(--v4-danger) !important;
}

/* todo 标题 */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card strong,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card h5,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card h6 {
  font-size: 14.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.4 !important;
  color: var(--v4-ink-1) !important;
  margin: 0 0 4px !important;
}

/* todo meta（时间·关联） */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card p,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .todo-meta,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .todo-deadline {
  font-size: 12px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
  letter-spacing: 0 !important;
}

/* todo 状态 pill：refined */
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill {
  font-size: 10.5px !important;
  font-weight: 700 !important;
  padding: 2px 8px !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  background: var(--v4-surface-3) !important;
  color: var(--v4-ink-2) !important;
  border-radius: var(--v4-r-pill) !important;
  border: 1px solid var(--v4-line-2) !important;
}

html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.done,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.success {
  background: rgba(5, 150, 105, 0.10) !important;
  border-color: rgba(5, 150, 105, 0.28) !important;
  color: var(--v4-ok) !important;
}

html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.progress,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.in-progress {
  background: rgba(79, 70, 229, 0.10) !important;
  border-color: rgba(79, 70, 229, 0.28) !important;
  color: var(--v4-brand) !important;
}

html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.pending,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.todo {
  background: rgba(217, 119, 6, 0.10) !important;
  border-color: rgba(217, 119, 6, 0.28) !important;
  color: var(--v4-warn) !important;
}

html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.overdue,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card .status-pill.danger {
  background: rgba(220, 38, 38, 0.10) !important;
  border-color: rgba(220, 38, 38, 0.28) !important;
  color: var(--v4-danger) !important;
}

/* 深色主题 */
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-feed-item {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card::after {
  background: var(--v4-line-2) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card::before {
  color: var(--v4-ink-3) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card strong,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card h5,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card h6,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-feed-item strong {
  color: var(--v4-ink-1) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card p,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-feed-item p {
  color: var(--v4-ink-2) !important;
}

/* ============================================================================
   v4-J：助手智能对话面板（assistant-chat-panel + composer + 快捷提示）
   - 旧：上下分块、紫色 badge、"开始新对话"金色按钮 → 像 onboarding 模板
   - 新：editorial 信息卡，状态信息收为 chip 排，对话区干净，composer 像
        Vercel/Linear 的 inline AI 输入
   ============================================================================ */

/* chat-panel 容器：去多余阴影，使用 hairline */
html body .app-shell:not(.mobile-shell) .assistant-chat-panel {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  padding: 18px 20px !important;
  gap: 14px !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .assistant-chat-panel {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line) !important;
}

/* "智能对话" 标题区：editorial */
html body .app-shell:not(.mobile-shell) .assistant-chat-header h5,
html body .app-shell:not(.mobile-shell) .assistant-chat-header h4,
html body .app-shell:not(.mobile-shell) .assistant-chat-panel > .panel-title h2,
html body .app-shell:not(.mobile-shell) .assistant-chat-panel > .panel-title h5 {
  font-size: 16px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.3 !important;
}

html body .app-shell:not(.mobile-shell) .assistant-chat-header p,
html body .app-shell:not(.mobile-shell) .assistant-chat-panel > .panel-title + p {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
}

/* "助理工作模式" / "甜蜜模式" pill：从渐变胶囊 → outline */
html body .app-shell:not(.mobile-shell) .assistant-mode-tag,
html body .app-shell:not(.mobile-shell) .assistant-mode-pill,
html body .app-shell:not(.mobile-shell) .assistant-context-mode {
  background: var(--v4-brand-soft) !important;
  border: 1px solid var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 3px 10px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  box-shadow: none !important;
}

/* 当前会话目标卡：上下文区 */
html body .app-shell:not(.mobile-shell) .assistant-context-card,
html body .app-shell:not(.mobile-shell) .assistant-conversation-context {
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 12px 14px !important;
  box-shadow: none !important;
}

html body .app-shell:not(.mobile-shell) .assistant-context-card strong,
html body .app-shell:not(.mobile-shell) .assistant-conversation-context strong {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: var(--v4-ink-1) !important;
  letter-spacing: -0.005em !important;
}

html body .app-shell:not(.mobile-shell) .assistant-context-card p,
html body .app-shell:not(.mobile-shell) .assistant-conversation-context p {
  font-size: 13px !important;
  color: var(--v4-ink-2) !important;
  margin: 2px 0 0 !important;
  line-height: 1.5 !important;
}

/* 状态 chip 行（"助理视角" / "当前状态 空闲中" / "待确认动作 0 项"） */
html body .app-shell:not(.mobile-shell) .assistant-context-badge {
  background: var(--v4-surface-3) !important;
  border: 1px solid var(--v4-line) !important;
  color: var(--v4-ink-2) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 3px 10px !important;
  font-size: 11.5px !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  box-shadow: none !important;
  white-space: nowrap !important;
}

/* 助手消息泡：editorial */
html body .app-shell:not(.mobile-shell) .assistant-message {
  font-size: 14px !important;
  line-height: 1.55 !important;
  color: var(--v4-ink-1) !important;
}

html body .app-shell:not(.mobile-shell) .assistant-message.ai {
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 12px 14px !important;
  box-shadow: none !important;
}

html body .app-shell:not(.mobile-shell) .assistant-message.user {
  background: var(--v4-brand-soft) !important;
  border: 1px solid var(--v4-brand-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 10px 14px !important;
  color: var(--v4-ink-1) !important;
  box-shadow: none !important;
}

/* 2026-05-12：聊天对话区空态布局
   原本套了 .empty-state 被 status-art auto-enhance 抢去渲染巨型插画，挤掉
   输入框 + 快捷 chip。现在 chat empty 是轻量化的纯文案 + 一个 CTA，居中
   显示，高度自适应不撑爆。 */
html body .assistant-chat-empty {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 14px !important;
  padding: 28px 20px !important;
  min-height: 0 !important;
  background: transparent !important;
  border: 0 !important;
  text-align: center !important;
}

html body .assistant-chat-empty .assistant-chat-empty-text {
  margin: 0 !important;
  font-size: 13px !important;
  color: var(--v4-ink-3, #5d6480) !important;
  line-height: 1.6 !important;
  font-weight: 400 !important;
  max-width: 420px !important;
}

/* CTA：v4 ghost 风格，与 chip 一致 */
html body .assistant-chat-empty .assistant-chat-empty-cta,
html body button.assistant-chat-empty-cta {
  background: transparent !important;
  border: 1px solid var(--v4-line-2, rgba(15,23,42,0.12)) !important;
  color: var(--v4-ink-1, #0F172A) !important;
  border-radius: var(--v4-r-btn, 999px) !important;
  padding: 8px 18px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  box-shadow: none !important;
  min-width: auto !important;
  cursor: pointer !important;
  transition: background .2s, border-color .2s, color .2s !important;
}

html body .assistant-chat-empty .assistant-chat-empty-cta:hover,
html body button.assistant-chat-empty-cta:hover {
  background: var(--v4-brand-soft, rgba(99,120,255,0.08)) !important;
  border-color: var(--v4-brand-line, rgba(99,120,255,0.24)) !important;
  color: var(--v4-brand-hover, #4f5dff) !important;
}

/* 老 .assistant-empty-state（数据列表空态）保留原来那一份兼容样式 */
html body .app-shell:not(.mobile-shell) .assistant-empty-state {
  font-size: 13px !important;
  color: var(--v4-ink-3) !important;
  line-height: 1.55 !important;
  font-weight: 400 !important;
  letter-spacing: 0 !important;
}
html body .app-shell:not(.mobile-shell) .assistant-empty-cta,
html body .app-shell:not(.mobile-shell) button.assistant-empty-cta {
  background: transparent !important;
  border: 1px solid var(--v4-line-2) !important;
  color: var(--v4-ink-1) !important;
  border-radius: var(--v4-r-btn) !important;
  padding: 8px 16px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  box-shadow: none !important;
}
html body .app-shell:not(.mobile-shell) .assistant-empty-cta:hover {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
}

/* composer 输入区："问一句，例如: 我先准备哪场会?" */
html body .app-shell:not(.mobile-shell) .assistant-compose {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 4px !important;
  gap: 6px !important;
  box-shadow: none !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .assistant-compose:focus-within {
  border-color: var(--v4-brand) !important;
  box-shadow: 0 0 0 3px var(--v4-brand-soft) !important;
}

html body .app-shell:not(.mobile-shell) .assistant-compose textarea,
html body .app-shell:not(.mobile-shell) .assistant-compose input {
  border: none !important;
  background: transparent !important;
  padding: 8px 10px !important;
  font-size: 14px !important;
  color: var(--v4-ink-1) !important;
  box-shadow: none !important;
  resize: none !important;
}

html body .app-shell:not(.mobile-shell) .assistant-compose textarea:focus,
html body .app-shell:not(.mobile-shell) .assistant-compose input:focus {
  border: none !important;
  box-shadow: none !important;
  outline: none !important;
}

/* composer 内的发送按钮：缩小 */
html body .app-shell:not(.mobile-shell) .assistant-compose .action-button {
  padding: 6px 14px !important;
  min-height: 32px !important;
  font-size: 12.5px !important;
}

/* ============================================================================
   v4-K：侧栏 assistant blocks（老板指令 / 今日重点 / 风险 / 今日推进台 / 老板同步）
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .assistant-block,
html body .app-shell:not(.mobile-shell) .layout-assistant .assistant-panel section {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  padding: 16px 16px 14px !important;
}

html body .app-shell:not(.mobile-shell) .assistant-block-heading,
html body .app-shell:not(.mobile-shell) .assistant-block-header {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-bottom: 10px !important;
  padding-bottom: 10px !important;
  border-bottom: 1px solid var(--v4-line) !important;
}

html body .app-shell:not(.mobile-shell) .assistant-block-heading h5,
html body .app-shell:not(.mobile-shell) .assistant-block-header h5 {
  font-size: 14px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.35 !important;
  margin: 0 !important;
  flex: 1 !important;
}

html body .app-shell:not(.mobile-shell) .assistant-block-icon {
  width: 22px !important;
  height: 22px !important;
  border-radius: var(--v4-r-chip) !important;
  background: var(--v4-brand-soft) !important;
  color: var(--v4-brand) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border: 1px solid var(--v4-brand-line) !important;
}

html body .app-shell:not(.mobile-shell) .assistant-block-icon svg {
  width: 14px !important;
  height: 14px !important;
}

/* assistant-list-item：内嵌列表项 */
html body .app-shell:not(.mobile-shell) .assistant-list-item {
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 8px 0 !important;
  border-bottom: 1px solid var(--v4-line) !important;
  box-shadow: none !important;
  display: grid !important;
  gap: 2px !important;
}

html body .app-shell:not(.mobile-shell) .assistant-list-item:last-child {
  border-bottom: none !important;
  padding-bottom: 0 !important;
}

html body .app-shell:not(.mobile-shell) .assistant-list-item strong {
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.4 !important;
}

html body .app-shell:not(.mobile-shell) .assistant-list-item span,
html body .app-shell:not(.mobile-shell) .assistant-list-item p {
  font-size: 12px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.45 !important;
}

/* "今日推进台"内的 cockpit-item（左图标 + 内容） */
html body .app-shell:not(.mobile-shell) .cockpit-item {
  display: grid !important;
  grid-template-columns: 28px 1fr !important;
  gap: 10px !important;
  align-items: start !important;
  padding: 8px 0 !important;
  border-bottom: 1px solid var(--v4-line) !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-item:last-child {
  border-bottom: none !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-icon {
  width: 24px !important;
  height: 24px !important;
  border-radius: var(--v4-r-chip) !important;
  background: var(--v4-surface-3) !important;
  color: var(--v4-ink-2) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border: 1px solid var(--v4-line) !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-icon svg {
  width: 13px !important;
  height: 13px !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-item-instruction .cockpit-icon {
  color: var(--v4-brand) !important;
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-item-blocker .cockpit-icon,
html body .app-shell:not(.mobile-shell) .cockpit-item-alert .cockpit-icon {
  color: var(--v4-danger) !important;
  background: rgba(220, 38, 38, 0.08) !important;
  border-color: rgba(220, 38, 38, 0.22) !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-content strong,
html body .app-shell:not(.mobile-shell) .cockpit-head strong {
  font-size: 13px !important;
  font-weight: 600 !important;
  color: var(--v4-ink-1) !important;
  letter-spacing: -0.005em !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-text {
  font-size: 12px !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
  margin: 2px 0 0 !important;
}

html body .app-shell:not(.mobile-shell) .cockpit-count {
  background: var(--v4-brand-soft) !important;
  color: var(--v4-brand-hover) !important;
  border: 1px solid var(--v4-brand-line) !important;
  border-radius: var(--v4-r-pill) !important;
  padding: 1px 7px !important;
  font-size: 10.5px !important;
  font-weight: 700 !important;
  margin-left: 6px !important;
  letter-spacing: 0 !important;
  vertical-align: 1px !important;
}

/* ============================================================================
   v4-L：日历视图（week-grid / month-grid / day-timeline）
   - 弱化卡片视觉，强化时间结构
   ============================================================================ */

/* week-grid 单元格 */
html body .app-shell:not(.mobile-shell) .week-grid > .week-cell,
html body .app-shell:not(.mobile-shell) .week-grid > .day-cell {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .week-grid > .week-cell:hover,
html body .app-shell:not(.mobile-shell) .week-grid > .day-cell:hover {
  border-color: var(--v4-line-2) !important;
}

/* month-grid 单元格 */
html body .app-shell:not(.mobile-shell) .month-grid > .month-cell,
html body .app-shell:not(.mobile-shell) .month-grid > .day-cell {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
}

/* 当前选中的日期单元 */
html body .app-shell:not(.mobile-shell) .week-grid > .week-cell.is-selected,
html body .app-shell:not(.mobile-shell) .week-grid > .day-cell.is-selected,
html body .app-shell:not(.mobile-shell) .month-grid > .month-cell.is-selected,
html body .app-shell:not(.mobile-shell) .month-grid > .day-cell.is-selected {
  border-color: var(--v4-brand) !important;
  background: var(--v4-brand-soft) !important;
  box-shadow: 0 0 0 1px var(--v4-brand-line) !important;
}

/* day-timeline 行 */
html body .app-shell:not(.mobile-shell) .timeline-row {
  border-bottom: 1px solid var(--v4-line) !important;
  background: transparent !important;
}

html body .app-shell:not(.mobile-shell) .timeline-row:last-child {
  border-bottom: none !important;
}

/* ============================================================================
   v4-M：detail-drawer / modal 抽屉精雕
   ============================================================================ */

html body .detail-drawer {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-hero) !important;
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 24px 60px -20px rgba(15, 23, 42, 0.18) !important;
}

html[data-theme="dark"] body .detail-drawer {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
  box-shadow:
    0 1px 0 rgba(0, 0, 0, 0.4),
    0 24px 60px -20px rgba(0, 0, 0, 0.7) !important;
}

html body .detail-drawer-header h2,
html body .detail-drawer-header h3,
html body .detail-drawer h2 {
  font-size: 22px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.2 !important;
}

html body .detail-drawer-meta,
html body .detail-drawer p {
  font-size: 13px !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.55 !important;
}

/* modal-card 同样精雕 */
html body .modal-card,
html body .login-card {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-hero) !important;
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 32px 80px -24px rgba(15, 23, 42, 0.22) !important;
}

html[data-theme="dark"] body .modal-card,
html[data-theme="dark"] body .login-card {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

/* ============================================================================
   v4-N：filter-tab / segmented control / tabs
   ============================================================================ */
html body .app-shell:not(.mobile-shell) .filter-tabs,
html body .app-shell:not(.mobile-shell) .segmented {
  background: var(--v4-surface-3) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-btn) !important;
  padding: 3px !important;
  gap: 0 !important;
}

html body .app-shell:not(.mobile-shell) .filter-tabs button,
html body .app-shell:not(.mobile-shell) .segmented button,
html body .app-shell:not(.mobile-shell) .filter-tab {
  background: transparent !important;
  border: none !important;
  border-radius: calc(var(--v4-r-btn) - 2px) !important;
  padding: 6px 14px !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  color: var(--v4-ink-2) !important;
  letter-spacing: 0 !important;
  box-shadow: none !important;
  transition: background 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .filter-tabs button:hover,
html body .app-shell:not(.mobile-shell) .segmented button:hover,
html body .app-shell:not(.mobile-shell) .filter-tab:hover {
  color: var(--v4-ink-1) !important;
}

html body .app-shell:not(.mobile-shell) .filter-tabs button.active,
html body .app-shell:not(.mobile-shell) .filter-tabs button.is-active,
html body .app-shell:not(.mobile-shell) .filter-tabs button[aria-selected="true"],
html body .app-shell:not(.mobile-shell) .segmented button.active,
html body .app-shell:not(.mobile-shell) .segmented button[aria-selected="true"],
html body .app-shell:not(.mobile-shell) .filter-tab.active {
  background: var(--v4-surface) !important;
  color: var(--v4-ink-1) !important;
  font-weight: 600 !important;
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 1px 2px rgba(15, 23, 42, 0.06) !important;
  border: 1px solid var(--v4-line) !important;
}

html[data-theme="dark"] body .app-shell:not(.mobile-shell) .filter-tabs button.active,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .segmented button.active,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .filter-tab.active {
  background: var(--v4-surface-3) !important;
  color: var(--v4-ink-1) !important;
  border-color: var(--v4-line-2) !important;
}

/* ============================================================================
   v4-O：登录 / 注册 / 选择身份页
   ============================================================================ */

html body .login-overlay {
  background: linear-gradient(180deg, var(--v4-surface-2) 0%, var(--v4-surface-3) 100%) !important;
}

html[data-theme="dark"] body .login-overlay {
  background: linear-gradient(180deg, #0a0f1c 0%, #0f172a 100%) !important;
}

/* login-hero（左侧渐变 hero 区） */
html body .login-hero {
  background: linear-gradient(135deg, var(--v4-brand) 0%, var(--v4-brand-hover) 60%, #6366f1 100%) !important;
  border-radius: var(--v4-r-hero) !important;
  border: none !important;
  color: #ffffff !important;
  padding: 32px 28px !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.08) inset,
    0 24px 60px -20px rgba(79, 70, 229, 0.40) !important;
}

html body .login-hero h5 {
  font-size: 26px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.18 !important;
  color: #ffffff !important;
  margin-bottom: 8px !important;
}

html body .login-hero p {
  font-size: 14px !important;
  font-weight: 400 !important;
  color: rgba(255, 255, 255, 0.78) !important;
  line-height: 1.6 !important;
  letter-spacing: 0 !important;
}

/* login-preset 卡片（"老板登录" / "助理登录" 按钮卡） */
html body .login-preset {
  background: rgba(255, 255, 255, 0.06) !important;
  border: 1px solid rgba(255, 255, 255, 0.16) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 14px 16px !important;
  font-size: 13.5px !important;
  font-weight: 500 !important;
  color: rgba(255, 255, 255, 0.92) !important;
  letter-spacing: 0 !important;
  line-height: 1.5 !important;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
  box-shadow: none !important;
}

html body .login-preset:hover {
  background: rgba(255, 255, 255, 0.12) !important;
  border-color: rgba(255, 255, 255, 0.30) !important;
  transform: translateY(-1px) !important;
}

html body .login-preset strong {
  font-size: 15px !important;
  font-weight: 600 !important;
  color: #ffffff !important;
  letter-spacing: -0.005em !important;
}

/* login-form-panel（右侧表单区） */
html body .login-form-panel .field label {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  color: var(--v4-ink-2) !important;
  letter-spacing: 0.02em !important;
  text-transform: uppercase !important;
  margin-bottom: 6px !important;
  display: block !important;
}

html body .login-form-panel .field input,
html body .login-form-panel .field select {
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-btn) !important;
  padding: 10px 12px !important;
  font-size: 14px !important;
  background: var(--v4-surface) !important;
  color: var(--v4-ink-1) !important;
  box-shadow: none !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .login-form-panel .field input:focus,
html body .login-form-panel .field select:focus {
  border-color: var(--v4-brand) !important;
  box-shadow: 0 0 0 3px var(--v4-brand-soft) !important;
  outline: none !important;
}

/* login header */
html body .login-header h4 {
  font-size: 22px !important;
  font-weight: 600 !important;
  letter-spacing: -0.02em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.2 !important;
}

html body .login-header p {
  font-size: 13px !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
}

/* ============================================================================
   v4-P：教程页 tutorial steps 重做
   - 旧：彩色编号 + colored illustrations + 多重圆角嵌套 → 像 onboarding
   - 新：editorial 编号 + hairline card + 单色 illustrations + 期刊式 bullets
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .tut-step {
  display: grid !important;
  grid-template-columns: 64px 1fr !important;
  gap: 20px !important;
  align-items: start !important;
  padding: 24px 0 !important;
  border-bottom: 1px solid var(--v4-line) !important;
}

html body .app-shell:not(.mobile-shell) .tut-step:last-child {
  border-bottom: none !important;
}

/* 编号：从大彩色圆 → editorial 数字 */
html body .app-shell:not(.mobile-shell) .tut-num {
  font-size: 36px !important;
  font-weight: 600 !important;
  letter-spacing: -0.03em !important;
  color: var(--v4-ink-3) !important;
  font-feature-settings: "tnum" 1 !important;
  background: transparent !important;
  border: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  width: auto !important;
  height: auto !important;
  line-height: 1 !important;
  box-shadow: none !important;
  display: block !important;
}

/* tutorial 卡：hairline + 紧凑 */
html body .app-shell:not(.mobile-shell) .tut-card {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 20px 22px !important;
  box-shadow: none !important;
  display: grid !important;
  gap: 12px !important;
}

/* 标题 */
html body .app-shell:not(.mobile-shell) .tut-card h4,
html body .app-shell:not(.mobile-shell) .tut-card h5,
html body .app-shell:not(.mobile-shell) .tut-step .tut-title {
  font-size: 18px !important;
  font-weight: 600 !important;
  letter-spacing: -0.015em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.3 !important;
  margin: 0 !important;
}

/* 描述段 */
html body .app-shell:not(.mobile-shell) .tut-card .tut-desc,
html body .app-shell:not(.mobile-shell) .tut-card > p {
  font-size: 13.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.6 !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
}

/* bullets */
html body .app-shell:not(.mobile-shell) .tut-card .tut-bullets {
  display: grid !important;
  gap: 6px !important;
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
}

html body .app-shell:not(.mobile-shell) .tut-card .tut-bullets li {
  font-size: 13px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.6 !important;
  padding-left: 16px !important;
  position: relative !important;
}

html body .app-shell:not(.mobile-shell) .tut-card .tut-bullets li::before {
  content: "" !important;
  position: absolute !important;
  left: 4px !important;
  top: 9px !important;
  width: 4px !important;
  height: 4px !important;
  border-radius: 50% !important;
  background: var(--v4-ink-3) !important;
}

html body .app-shell:not(.mobile-shell) .tut-card .tut-bullets li strong {
  color: var(--v4-ink-1) !important;
  font-weight: 600 !important;
}

/* example 段落 */
html body .app-shell:not(.mobile-shell) .tut-card .tut-example {
  background: var(--v4-surface-2) !important;
  border-left: 3px solid var(--v4-brand-line) !important;
  border-radius: 0 var(--v4-r-chip) var(--v4-r-chip) 0 !important;
  padding: 10px 14px !important;
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.6 !important;
  letter-spacing: 0 !important;
}

html body .app-shell:not(.mobile-shell) .tut-card .tut-example strong {
  color: var(--v4-ink-1) !important;
  font-weight: 600 !important;
}

/* illustration：缩小 + 单色化 */
html body .app-shell:not(.mobile-shell) .tut-illust,
html body .app-shell:not(.mobile-shell) .tut-card .tut-illust {
  width: 88px !important;
  height: 88px !important;
  flex: 0 0 88px !important;
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  padding: 8px !important;
  align-self: start !important;
  opacity: 0.92 !important;
}

html body .app-shell:not(.mobile-shell) .tut-illust svg,
html body .app-shell:not(.mobile-shell) .tut-card .tut-illust svg {
  width: 100% !important;
  height: 100% !important;
}

/* ============================================================================
   v4-Q：顶部工具栏（studio-toolbar / toolbar-button / segmented）
   ============================================================================ */

html body .studio-toolbar {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: var(--v4-r-card) !important;
  box-shadow: none !important;
  padding: 8px 12px !important;
}

html[data-theme="dark"] body .studio-toolbar {
  background: var(--v4-surface) !important;
  border-color: var(--v4-line-2) !important;
}

html body .toolbar-button {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: var(--v4-r-btn) !important;
  padding: 6px 12px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--v4-ink-2) !important;
  letter-spacing: 0 !important;
  box-shadow: none !important;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .toolbar-button:hover {
  background: var(--v4-surface-3) !important;
  border-color: var(--v4-line) !important;
  color: var(--v4-ink-1) !important;
}

html body .toolbar-button.active,
html body .toolbar-button[aria-pressed="true"] {
  background: var(--v4-brand-soft) !important;
  border-color: var(--v4-brand-line) !important;
  color: var(--v4-brand-hover) !important;
  font-weight: 600 !important;
}

/* ============================================================================
   v4-R：搜索框 / 命令行
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .search-box,
html body .app-shell:not(.mobile-shell) .command-search,
html body .app-shell:not(.mobile-shell) .search-input-wrap {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line-2) !important;
  border-radius: var(--v4-r-btn) !important;
  padding: 4px 10px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  box-shadow: none !important;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

html body .app-shell:not(.mobile-shell) .search-box:focus-within,
html body .app-shell:not(.mobile-shell) .command-search:focus-within,
html body .app-shell:not(.mobile-shell) .search-input-wrap:focus-within {
  border-color: var(--v4-brand) !important;
  box-shadow: 0 0 0 3px var(--v4-brand-soft) !important;
}

html body .app-shell:not(.mobile-shell) .search-box input,
html body .app-shell:not(.mobile-shell) .command-search input,
html body .app-shell:not(.mobile-shell) .search-input-wrap input {
  border: none !important;
  background: transparent !important;
  padding: 6px 0 !important;
  font-size: 13.5px !important;
  color: var(--v4-ink-1) !important;
  box-shadow: none !important;
}

html body .app-shell:not(.mobile-shell) .search-box input:focus,
html body .app-shell:not(.mobile-shell) .command-search input:focus,
html body .app-shell:not(.mobile-shell) .search-input-wrap input:focus {
  outline: none !important;
  box-shadow: none !important;
}

/* ============================================================================
   v4-S：command-card / pending-card 内部 typography 微调
   - cards 本身 v4-C 已 hairline 化，这里专门调内部 typography 节奏
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .command-card-header strong,
html body .app-shell:not(.mobile-shell) .command-card strong:first-of-type,
html body .app-shell:not(.mobile-shell) .pending-card strong:first-of-type {
  font-size: 14.5px !important;
  font-weight: 600 !important;
  letter-spacing: -0.01em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.4 !important;
}

html body .app-shell:not(.mobile-shell) .command-card-meta,
html body .app-shell:not(.mobile-shell) .command-card-body,
html body .app-shell:not(.mobile-shell) .pending-card-meta,
html body .app-shell:not(.mobile-shell) .pending-card span {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
}

/* command-card-actions 横排按钮 gap */
html body .app-shell:not(.mobile-shell) .command-card-actions,
html body .app-shell:not(.mobile-shell) .pending-card-actions {
  gap: 8px !important;
  flex-wrap: wrap !important;
  margin-top: 8px !important;
}

/* ============================================================================
   v4-T：focus-card / risk-card / decision-card 内 typography 微调
   - cards 已 hairline 化（v4-C），调字号节奏
   ============================================================================ */

html body .app-shell:not(.mobile-shell) .focus-card strong,
html body .app-shell:not(.mobile-shell) .risk-card strong,
html body .app-shell:not(.mobile-shell) .decision-card strong {
  font-size: 14px !important;
  font-weight: 600 !important;
  letter-spacing: -0.005em !important;
  color: var(--v4-ink-1) !important;
  line-height: 1.4 !important;
  margin-bottom: 4px !important;
}

html body .app-shell:not(.mobile-shell) .focus-card span,
html body .app-shell:not(.mobile-shell) .risk-card span,
html body .app-shell:not(.mobile-shell) .decision-card span {
  font-size: 12.5px !important;
  font-weight: 400 !important;
  color: var(--v4-ink-2) !important;
  line-height: 1.5 !important;
}

/* risk-card 左侧 accent 条：保留语义色 */
html body .app-shell:not(.mobile-shell) .risk-card {
  position: relative !important;
  padding-left: 16px !important;
  overflow: hidden !important;
}

html body .app-shell:not(.mobile-shell) .risk-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 14px !important;
  bottom: 14px !important;
  width: 3px !important;
  background: var(--v4-warn) !important;
  border-radius: 0 3px 3px 0 !important;
}

html body .app-shell:not(.mobile-shell) .risk-card.is-danger::before,
html body .app-shell:not(.mobile-shell) .risk-card.high::before {
  background: var(--v4-danger) !important;
}

html body .app-shell:not(.mobile-shell) .focus-card {
  position: relative !important;
  padding-left: 16px !important;
  overflow: hidden !important;
}

html body .app-shell:not(.mobile-shell) .focus-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 14px !important;
  bottom: 14px !important;
  width: 3px !important;
  background: var(--v4-brand) !important;
  border-radius: 0 3px 3px 0 !important;
}

html body .app-shell:not(.mobile-shell) .decision-card {
  position: relative !important;
  padding-left: 16px !important;
  overflow: hidden !important;
}

html body .app-shell:not(.mobile-shell) .decision-card::before {
  content: "" !important;
  position: absolute !important;
  left: 0 !important;
  top: 14px !important;
  bottom: 14px !important;
  width: 3px !important;
  background: var(--v4-ok) !important;
  border-radius: 0 3px 3px 0 !important;
}

/* ════════════════════════════════════════════════════════════════════
   v169 — page-header mascot 容器内 <img>/<svg> 强制隐藏 (最高 specificity)
   ────────────────────────────────────────────────────────────────────
   Bug: 容器 (.assistant-calendar-header-icon 等) 已锁 44×44 brand-soft + ::before 画
   Lucide 图标,但内部 <img class="homepage-panel-icon-img"> 没被隐藏:
   - line 6162 `display:none` 规则 specificity = 0,3,3
   - 旧规则 `.app-shell:not(.mobile-shell)[data-role] .{...}-icon-symbol img`
     specificity = 0,4,3 (多一个 attr selector) → 赢出 → img 反而 width:65 + scale(1.12)
   - 结果: img 渲染成 ~54px 溢出 44px 容器,看起来"图标 + 空方块"分裂
   修法: 用 [data-role] + :not(.mobile-shell) 提升到 0,5,3,加 transform:none 清掉 scale
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-calendar-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-calendar-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-pending-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-pending-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-inbox-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-inbox-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-mailbox-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-mailbox-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-todos-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .assistant-todos-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-overview-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-overview-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-pending-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-pending-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-todos-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-todos-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-commands-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-commands-header-icon > svg,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-assistant-header-icon > img,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .page-header .boss-assistant-header-icon > svg {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  width: 0 !important;
  height: 0 !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 0 !important;
  max-height: 0 !important;
  transform: none !important;
  margin: 0 !important;
  padding: 0 !important;
  position: absolute !important;
  pointer-events: none !important;
}

/* ════════════════════════════════════════════════════════════════════
   v175 — stats-row 5 张卡各自用顶条同色围一圈 (light + dark token 自动切换)
   ────────────────────────────────────────────────────────────────────
   - 今日重点 (featured) / 今日会议 (today): brand indigo
   - 冲突提醒 (conflict): warn 橙
   - 风险提醒 (risk): danger 红
   - 待办进度 (todo): ok 绿
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-featured,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-today,
html body .app-shell:not(.mobile-shell):not(._)[data-role="assistant"] .stat-card.stats-featured,
html body .app-shell:not(.mobile-shell):not(._)[data-role="boss"] .stat-card.stats-featured {
  border: 3px solid var(--v4-brand) !important;
}

html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-conflict {
  border: 3px solid var(--v4-warn) !important;
}

html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-risk {
  border: 3px solid var(--v4-danger) !important;
}

html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-todo {
  border: 3px solid var(--v4-ok) !important;
}

/* hover 各自加深(用 brand-hover / 加亮) */
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-featured:hover,
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-today:hover {
  border-color: var(--v4-brand-hover, #4338CA) !important;
}
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-conflict:hover {
  border-color: #B45309 !important; /* amber-700 */
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-conflict:hover {
  border-color: #FCD34D !important; /* amber-300 */
}
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-risk:hover {
  border-color: #B91C1C !important; /* red-700 */
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-risk:hover {
  border-color: #FCA5A5 !important; /* red-300 */
}
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-todo:hover {
  border-color: #047857 !important; /* emerald-700 */
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card.stats-todo:hover {
  border-color: #6EE7B7 !important; /* emerald-300 */
}

/* v173 已撤销 stats-row 外框 (user 不要"外面那一圈") */
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row {
  outline: none !important;
}

/* v177: 删掉每张 stat 卡左侧的 brand strip ::before
   现在四周已有 3px 同色 border 围一圈,左侧 strip 跟左 border 重叠造成"双线"多余 */
html body .app-shell:not(.mobile-shell):not(._)[data-role] .stats-row > .stat-card::before {
  display: none !important;
  content: none !important;
}

/* ════════════════════════════════════════════════════════════════════
   v179 — 设置菜单 (nav-settings-menu) 整体收紧
   ────────────────────────────────────────────────────────────────────
   user 反馈"再紧凑一点",降低各行高 + padding + gap 节省垂直空间
   ════════════════════════════════════════════════════════════════════ */
/* 容器: padding 12 → 8, 行间 gap 6 → 2 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu {
  padding: 8px !important;
  gap: 2px !important;
}

/* 每行: min-height 54 → 42, padding 8 12 → 5 10, gap 12 → 10 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu > .nav-settings-actions > .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-actions .nav-settings-row {
  min-height: 48px !important;
  padding: 6px 12px !important;
  gap: 12px !important;
  grid-template-columns: 40px minmax(0, 1fr) 14px !important;
}

/* icon 容器统一: 40×40 容器 + padding 8 + box-sizing border-box（行图标和账号图标完全一致） */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > [class*="icon"]:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-of-type,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > .nav-settings-row-icon {
  width: 40px !important;
  height: 40px !important;
  padding: 8px !important;
  border-radius: 10px !important;
  box-sizing: border-box !important;
  flex: 0 0 40px !important;
  background: rgba(99, 102, 241, 0.10) !important;
  border: 1px solid rgba(99, 102, 241, 0.18) !important;
  color: var(--v4-brand, #4F46E5) !important;
}

/* 嵌套 svg（仅当有 .nav-settings-row-icon 包裹时）保持 20×20 居中 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon > svg,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row .nav-settings-row-icon > svg {
  width: 20px !important;
  height: 20px !important;
}

/* 标题: 14.5 → 14, line-height 1.3 → 1.25 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-copy strong,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row strong {
  font-size: 14px !important;
  line-height: 1.25 !important;
}

/* 副文: 11.5 → 11, line-height 1.45 → 1.35 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-copy span {
  font-size: 11px !important;
  line-height: 1.35 !important;
}

/* v179: mini-label (当前账号 / 当前团队) 在 sidebar collapsed 时被 base.css 隐藏,
   menu 浮出后应可见,强制覆盖 display:none */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .mini-label,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-settings-menu .mini-label {
  display: block !important;
  font-size: 11px !important;
  line-height: 1.25 !important;
  margin-bottom: 1px !important;
}

/* v179: section 之间的 divider 上下 margin 6 → 2,节省 12px×3 = 36px */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-divider {
  margin: 2px 14px !important;
}

/* head / actions / theme section 上下 padding 减少 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-head {
  padding: 0 !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme {
  padding: 2px 0 0 !important;
  gap: 4px !important;
}

/* 主题切换 label 紧凑 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme > strong,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme-label {
  font-size: 12.5px !important;
  margin-bottom: 2px !important;
  padding: 2px 10px !important;
}

/* 主题切换 segmented control 高度收紧 */
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented > * {
  padding: 6px 10px !important;
  font-size: 12.5px !important;
  min-height: 30px !important;
}

/* ════════════════════════════════════════════════════════════════════
   v190 — 设置菜单进一步收紧 (user 反馈"还可以紧凑一点")
   ────────────────────────────────────────────────────────────────────
   - 行高 48 → 40, 行内 padding 6/12 → 4/10
   - icon 容器 40 → 34, 内嵌 svg 20 → 18
   - 副文 font 11 → 10.5, line-height 1.35 → 1.3
   - divider margin 2/14 → 1/12
   - 主题 segmented 高度 30 → 26
   - 容器外 padding 8 → 6, 行间 gap 2 → 1
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell:not(.mobile-shell) .nav-settings-menu {
  padding: 6px !important;
  gap: 1px !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu > .nav-settings-actions > .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-actions .nav-settings-row {
  min-height: 40px !important;
  padding: 4px 10px !important;
  gap: 10px !important;
  grid-template-columns: 34px minmax(0, 1fr) 14px !important;
}

/* icon 容器: 40 → 34, padding 8 → 7 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > [class*="icon"]:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-of-type,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > .nav-settings-row-icon {
  width: 34px !important;
  height: 34px !important;
  padding: 7px !important;
}

/* 嵌套 svg 20 → 18 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon > svg,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row .nav-settings-row-icon > svg {
  width: 18px !important;
  height: 18px !important;
}

/* 标题字号微调 14 → 13.5 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-copy strong,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row strong {
  font-size: 13.5px !important;
  line-height: 1.2 !important;
}

/* 副文 11 → 10.5 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-copy span {
  font-size: 10.5px !important;
  line-height: 1.3 !important;
}

/* mini-label (当前账号 / 当前团队) 11 → 10 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .mini-label,
html body .app-shell:not(.mobile-shell) .side-nav.collapsed .nav-settings-menu .mini-label {
  font-size: 10px !important;
  line-height: 1.2 !important;
}

/* divider 间距收紧 2/14 → 1/12 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-divider {
  margin: 1px 12px !important;
}

/* 主题切换区: padding 2/0/0 → 1/0/0, gap 4 → 2 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme {
  padding: 1px 0 0 !important;
  gap: 2px !important;
}

html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme > strong,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme-label {
  font-size: 12px !important;
  margin-bottom: 1px !important;
  padding: 1px 10px !important;
}

/* segmented 高度 30 → 26, padding 6/10 → 4/8, font 12.5 → 12 (v23: 用户反馈左右再小一点) */
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented > * {
  padding: 4px 8px !important;
  font-size: 12px !important;
  min-height: 26px !important;
}

/* 中括号图标 (chevron) 缩小 16 → 14 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-chevron {
  width: 14px !important;
  height: 14px !important;
}

/* ════════════════════════════════════════════════════════════════════
   v180 — 去掉小型 icon 容器的彩色边框 (user 反馈"边框不要了")
   ────────────────────────────────────────────────────────────────────
   去边框 (保留柔色背景):
   - .v5-hero-glyph (今日重点 ☆)
   - .stat-card-glyph-* (4 张数字 stat 卡顶部 glyph)
   - .cockpit-icon / .cockpit-count (今日推进台)
   - .assistant-block-icon (阻塞图标)
   - 其他 right-rail panel 头部小 icon
   保留:
   - .assistant-*-header-icon (page-header 大方块 mascot, v178 设计)
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell:not(.mobile-shell) .v5-hero-glyph,
html body .app-shell:not(.mobile-shell) .stat-card-glyph,
html body .app-shell:not(.mobile-shell) [class*="stat-card-glyph-"],
html body .app-shell:not(.mobile-shell) .cockpit-icon,
html body .app-shell:not(.mobile-shell) .cockpit-count,
html body .app-shell:not(.mobile-shell) .assistant-block-icon,
html body .app-shell:not(.mobile-shell) .right-rail-panel-icon,
html body .app-shell:not(.mobile-shell) .right-rail .panel-icon,
html body .app-shell:not(.mobile-shell) [class*="rail"] [class*="icon"]:not(.assistant-calendar-header-icon):not([class*="header-icon"]) {
  border: none !important;
  box-shadow: none !important;
}

/* ════════════════════════════════════════════════════════════════════
   v181 — 修复 page-header 房子图标只显示上半的根本 bug
   ────────────────────────────────────────────────────────────────────
   根因 (经 A/B 实测):
   - .assistant-calendar-header-icon::before 的 mask-image (data: SVG) 在 Chrome 下
     被切成上半 (无论 width/height/min/max/align-self/flex/position absolute 怎么设).
   - 同样的 mask SVG 在普通 div 上正常渲染. 同样的容器结构 (52×52 flex + ::before
     32×32) 用 mask 也正常. 唯一区别: page-header 的 ::before 受到 line ~4231 的
     `.assistant-home-reference-icon-symbol *` 等多个 `*` rules 干扰 (尽管 `*`
     不直接选 ::before, 但实际渲染上 mask-size:contain 算法被影响).

   解法: 把 mask-image 模式改成 content: url(SVG) 模式. SVG 直接作为 replaced
   element 嵌入, 不依赖 mask-size 算法, 不受 `*` 规则干扰.
   注意: stroke 必须硬编码为 brand 颜色 (currentColor 不能继承到 image),
        dark mode 用 separate rule 覆盖 stroke 颜色.
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell .page-header .assistant-calendar-header-icon::before {
  /* Lucide upstream house icon: 闭合墙体 + 门洞. 原 path 缺左墙 + 底横异常 */
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpath d='M9 22V12h6v10'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .assistant-pending-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .assistant-inbox-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3Cpath d='M13 8H7'/%3E%3Cpath d='M17 12H7'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .assistant-mailbox-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .assistant-todos-header-icon::before,
html body .app-shell .page-header .boss-todos-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 17 2 2 4-4'/%3E%3Cpath d='m3 7 2 2 4-4'/%3E%3Cpath d='M13 6h8'/%3E%3Cpath d='M13 12h8'/%3E%3Cpath d='M13 18h8'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .boss-overview-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='9' rx='1'/%3E%3Crect x='14' y='3' width='7' height='5' rx='1'/%3E%3Crect x='14' y='12' width='7' height='9' rx='1'/%3E%3Crect x='3' y='16' width='7' height='5' rx='1'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .boss-pending-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

html body .app-shell .page-header .boss-commands-header-icon::before,
html body .app-shell .page-header .boss-assistant-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%234F46E5' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.9 16.1C1 12.2 1 5.8 4.9 1.9'/%3E%3Cpath d='M7.8 4.7a6.14 6.14 0 0 0-.8 7.5'/%3E%3Ccircle cx='12' cy='9' r='2'/%3E%3Cpath d='M16.2 4.8c2 2 2.26 5.11.8 7.47'/%3E%3Cpath d='M19.1 1.9a9.96 9.96 0 0 1 0 14.1'/%3E%3Cpath d='M9.5 18h5'/%3E%3Cpath d='m8 22 4-11 4 11'/%3E%3C/svg%3E") !important;
  background: none !important;
  -webkit-mask: none !important;
  mask: none !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
}

/* dark mode: 重写 content url, stroke 用浅蓝 #93c5fd 提高对比度
   (原 #4F46E5 紫色 stroke 在深色背景下对比度太低, 房子下半几乎不可见) */
html[data-theme="dark"] body .app-shell .page-header .assistant-calendar-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 9 9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3Cpath d='M9 22V12h6v10'/%3E%3C/svg%3E") !important;
}

html[data-theme="dark"] body .app-shell .page-header .assistant-pending-header-icon::before,
html[data-theme="dark"] body .app-shell .page-header .boss-pending-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5'/%3E%3Cpath d='M16 2v4'/%3E%3Cpath d='M8 2v4'/%3E%3Cpath d='M3 10h5'/%3E%3Cpath d='M17.5 17.5 16 16.25V14'/%3E%3Ccircle cx='16' cy='16' r='6'/%3E%3C/svg%3E") !important;
}

html[data-theme="dark"] body .app-shell .page-header .assistant-inbox-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3Cpath d='M13 8H7'/%3E%3Cpath d='M17 12H7'/%3E%3C/svg%3E") !important;
}

html[data-theme="dark"] body .app-shell .page-header .assistant-mailbox-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E") !important;
}

html[data-theme="dark"] body .app-shell .page-header .assistant-todos-header-icon::before,
html[data-theme="dark"] body .app-shell .page-header .boss-todos-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 17 2 2 4-4'/%3E%3Cpath d='m3 7 2 2 4-4'/%3E%3Cpath d='M13 6h8'/%3E%3Cpath d='M13 12h8'/%3E%3Cpath d='M13 18h8'/%3E%3C/svg%3E") !important;
}

html[data-theme="dark"] body .app-shell .page-header .boss-overview-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='9' rx='1'/%3E%3Crect x='14' y='3' width='7' height='5' rx='1'/%3E%3Crect x='14' y='12' width='7' height='9' rx='1'/%3E%3Crect x='3' y='16' width='7' height='5' rx='1'/%3E%3C/svg%3E") !important;
}

html[data-theme="dark"] body .app-shell .page-header .boss-commands-header-icon::before,
html[data-theme="dark"] body .app-shell .page-header .boss-assistant-header-icon::before {
  content: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32' viewBox='0 0 24 24' fill='none' stroke='%2393c5fd' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.9 16.1C1 12.2 1 5.8 4.9 1.9'/%3E%3Cpath d='M7.8 4.7a6.14 6.14 0 0 0-.8 7.5'/%3E%3Ccircle cx='12' cy='9' r='2'/%3E%3Cpath d='M16.2 4.8c2 2 2.26 5.11.8 7.47'/%3E%3Cpath d='M19.1 1.9a9.96 9.96 0 0 1 0 14.1'/%3E%3Cpath d='M9.5 18h5'/%3E%3Cpath d='m8 22 4-11 4 11'/%3E%3C/svg%3E") !important;
}

/* ============================================================================
   v184：登录页左栏海报 — 浅/深色主题适配
   浅色：参考图白色圆桌会议室（自然光）
   深色：夜景会议室（城市灯光、LED 蓝光桌底）
   ============================================================================ */

/* --- 深色主题：用背景图方案替代 auth-shot-room DOM --- */
html[data-theme="dark"] .auth-shot-hero {
  row-gap: 0 !important;
  padding: 0 !important;
  align-content: start !important;
  justify-items: stretch !important;
  background:
    linear-gradient(180deg,
      rgba(9, 18, 37, 0.97) 0%,
      rgba(9, 18, 37, 0.96) 18%,
      rgba(9, 18, 37, 0.72) 32%,
      rgba(9, 18, 37, 0.28) 46%,
      rgba(9, 18, 37, 0) 58%),
    #091225 url("/assets/auth-poster-dark.png") center bottom / cover no-repeat !important;
  border-right-color: rgba(24, 37, 66, 0.92) !important;
}

html[data-theme="dark"] .auth-shot-hero-copy {
  position: relative !important;
  z-index: 2 !important;
  display: grid !important;
  justify-items: center !important;
  gap: 7px !important;
  padding: 28px 32px 0 !important;
  text-align: center !important;
}

html[data-theme="dark"] .auth-shot-room {
  display: none !important;
}

html[data-theme="dark"] .auth-shot-logo-mark::before {
  display: none !important;
}

html[data-theme="dark"] .auth-shot-brand-title {
  color: #f0f4ff !important;
  font-size: 44px !important;
  letter-spacing: -0.03em !important;
}

html[data-theme="dark"] .auth-shot-brand-subtitle {
  gap: 10px !important;
  color: rgba(165, 180, 252, 0.78) !important;
  font-size: 13px !important;
  letter-spacing: 0.18em !important;
}

html[data-theme="dark"] .auth-shot-brand-subtitle::before,
html[data-theme="dark"] .auth-shot-brand-subtitle::after {
  width: 22px !important;
  background: rgba(165, 180, 252, 0.38) !important;
}

html[data-theme="dark"] .auth-shot-brand-slogan {
  margin-top: 12px !important;
  color: #818cf8 !important;
  font-size: 14px !important;
  letter-spacing: 0.18em !important;
  text-indent: 0.18em !important;
}

/* 2026-05-05: 窄屏（iPhone 类）覆盖上面用 !important 写死的桌面字号，
   否则 base.css 的 480px 断点中 var(--auth-title-size: 32px) 会被这里盖掉。 */
@media (max-width: 480px) {
  html[data-theme="dark"] .auth-shot-brand-title,
  html[data-theme="light"] .auth-shot-brand-title {
    font-size: 32px !important;
  }
  html[data-theme="dark"] .auth-shot-brand-subtitle,
  html[data-theme="light"] .auth-shot-brand-subtitle {
    font-size: 12px !important;
    gap: 8px !important;
    letter-spacing: 0.14em !important;
  }
  html[data-theme="dark"] .auth-shot-brand-subtitle::before,
  html[data-theme="dark"] .auth-shot-brand-subtitle::after,
  html[data-theme="light"] .auth-shot-brand-subtitle::before,
  html[data-theme="light"] .auth-shot-brand-subtitle::after {
    width: 16px !important;
  }
  html[data-theme="dark"] .auth-shot-brand-slogan,
  html[data-theme="light"] .auth-shot-brand-slogan {
    margin-top: 6px !important;
    font-size: 13px !important;
    letter-spacing: 0.14em !important;
  }
  html[data-theme="dark"] .auth-shot-hero-copy,
  html[data-theme="light"] .auth-shot-hero-copy {
    gap: 4px !important;
    padding: 14px 16px 0 !important;
  }
}

/* --- 登录页 SVG 图标样式 --- */
.auth-shot-logo-svg {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
}

html[data-theme="light"] .auth-shot-logo-svg {
  color: #3b7dff !important;
}

html[data-theme="dark"] .auth-shot-logo-svg {
  color: #a5b4fc !important;
}

html[data-theme="light"] .auth-shot-logo-mark {
  background: transparent !important;
  box-shadow: none !important;
}

/* --- 浅色主题：cover 铺满 + 底部柔和蓝灰色遮罩，掩盖原图底部白色地板 --- */
html[data-theme="light"] .auth-shot-hero {
  background:
    /* 顶部白色渐变（品牌文案区域） */
    linear-gradient(180deg,
      rgba(248, 251, 255, 0.97) 0%,
      rgba(248, 251, 255, 0.96) 20%,
      rgba(248, 251, 255, 0.68) 32%,
      rgba(248, 251, 255, 0.22) 46%,
      rgba(248, 251, 255, 0) 60%),
    /* 底部柔和蓝紫色，自下而上淡化（遮住白色地板，让图片底部融入品牌色） */
    linear-gradient(0deg,
      rgba(122, 140, 220, 0.42) 0%,
      rgba(160, 180, 232, 0.32) 10%,
      rgba(190, 205, 240, 0.18) 22%,
      rgba(218, 228, 245, 0) 35%),
    #ffffff url("/assets/auth-poster-light.png") center bottom / cover no-repeat !important;
}

/* --- 深色主题：cover 铺满 + 底部深色遮罩 --- */
html[data-theme="dark"] .auth-shot-hero {
  background:
    linear-gradient(180deg,
      rgba(9, 15, 28, 0.96) 0%,
      rgba(9, 15, 28, 0.96) 20%,
      rgba(9, 15, 28, 0.68) 32%,
      rgba(9, 15, 28, 0.22) 46%,
      rgba(9, 15, 28, 0) 60%),
    linear-gradient(0deg,
      rgba(9, 15, 28, 0.92) 0%,
      rgba(9, 15, 28, 0.6) 8%,
      rgba(9, 15, 28, 0.2) 18%,
      rgba(9, 15, 28, 0) 28%),
    #0b1324 url("/assets/auth-poster-dark.png") center bottom / cover no-repeat !important;
}

/* ============================================================================
   v186：录入待安排议程页面紧凑化 — 去除多余留白
   原状态：
   - .field 间距：margin-bottom 24px + form-grid gap 16px = 40px 大间距
   - textarea field min-height 140px → 内部留白 ~17px
   合并：form-grid gap 单独控间距、textarea 自动高度
   ============================================================================ */

html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid {
  gap: 12px !important;
  flex: 0 0 auto !important;
  flex-grow: 0 !important;
}

/* textarea 不再通过 flex 撑满父容器，使用自身固定高度 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout textarea {
  flex: 0 0 auto !important;
}

html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > .field,
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > .form-grid {
  margin-bottom: 0 !important;
  min-height: auto !important;
  gap: 4px !important;
}

/* textarea 字段：去除 min-height 限制，使 textarea 决定高度 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > .field:has(textarea) {
  min-height: auto !important;
}

/* textarea 默认 2 行，避免占据过多空间 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout textarea[data-field="recommendedReason"],
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout textarea[data-field="note"] {
  min-height: 64px !important;
  height: 64px !important;
  resize: vertical !important;
}

html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout textarea[data-field="rawText"] {
  min-height: 88px !important;
  height: 88px !important;
}

/* 双列 form-grid 内部 field 间距同样压缩 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > .form-grid.two > .field {
  margin-bottom: 0 !important;
  min-height: auto !important;
  gap: 4px !important;
}

/* 底部按钮组：减少 margin-top，与表单更紧凑衔接 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .split-actions:last-child {
  margin-top: 12px !important;
  padding-top: 12px !important;
}

/* field-note 紧贴下方 */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout .field-note {
  margin-top: 2px !important;
  font-size: 11.5px !important;
  line-height: 1.45 !important;
}

/* ============================================================================
   v189：待安排页 — 右栏表单再紧凑 + switch-field 对齐 + 左栏精确 3 卡视口
   - 右栏：阻止 textarea 容器 flex 撑高，switch-field 仿 inbox 胶囊左对齐
   - 左栏：pending-list-scroll 不再跟右栏等高，固定 3 条完整卡片后滚动
   ============================================================================ */
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-header {
  padding: 14px 16px 10px !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body {
  padding: 12px 16px 14px !important;
  gap: 10px !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid {
  flex: 0 0 auto !important;
  gap: 10px !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > .field:has(textarea) {
  flex: 0 0 auto !important;
  min-height: auto !important;
  display: block !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > label.switch-field {
  width: max-content !important;
  max-width: 100% !important;
  align-self: flex-start !important;
  justify-self: start !important;
  min-height: 36px !important;
  padding: 6px 12px !important;
  border-radius: 12px !important;
  gap: 8px !important;
  margin: 0 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--text-main, #0f172a) !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > label.switch-field span {
  display: inline !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  margin: 0 !important;
  color: inherit !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .form-grid > label.switch-field input {
  width: 16px !important;
  height: 16px !important;
  flex-shrink: 0 !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout {
  /* 实测 desktop 单卡 ~201.42px + gap 10px；取 202 覆盖 subpixel 舍入 */
  --pending-card-view-h: 202px;
  --pending-list-row-gap: 10px;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > .panel:first-child .pending-list-scroll {
  flex: 0 0 auto !important;
  max-height: calc(var(--pending-card-view-h) * 3 + var(--pending-list-row-gap) * 2) !important;
  min-height: 0 !important;
  overflow-y: auto !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > .panel:first-child .pending-knowledge-grid {
  margin-top: auto !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout textarea[data-field="rawText"] {
  min-height: 76px !important;
  height: 76px !important;
}
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > section.panel:nth-child(2) .panel-body > .split-actions:last-child {
  margin-top: 10px !important;
  padding-top: 10px !important;
}

/* ============================================================================
   v188：移除待办卡片右上角自动编号 (01/02/03 …)
   - 这些数字仅来自 CSS counter，无业务含义
   - 与状态 pill 视觉冲突且容易被误读为优先级 / ID
   - 同时关闭 light / dark / desktop / 旧 light 三处 ::before
   ============================================================================ */
html body .app-shell .todo-list .todo-card::before,
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card::before,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-list .todo-card::before,
html body .app-shell:not(.mobile-shell) .todo-list .todo-card::before {
  content: none !important;
  display: none !important;
}

/* 同时把因编号而预留的左侧 padding 还原 */
html:not([data-theme="dark"]) body .app-shell .todo-list .todo-card {
  padding-left: 18px !important;
}

/* ════════════════════════════════════════════════════════════════════
   v200 — 深色主题色彩适配（发布前视觉补齐）
   ────────────────────────────────────────────────────────────────────
   修复审核发现的 dark mode 颜色丢失问题：
   1) priority-badge p1/p2/p3/p4 在 dark 下丢失实心色（被 :not 限制）
   2) priority-badge high/mid/low 在 dark 下丢失半透明色
   3) status-pill todo/pending/processing/done/delayed 在 dark 下丢失
   4) pending-card::before（数字徽章）和 ::after（左侧 accent bar）丢失
   5) 待安排页面紧急度 badge "高紧急/中紧急" 等丢失
   策略：复刻 light 规则，但选择器改为 [data-theme="dark"]，
        rgba alpha 提到 0.18-0.24，文字色改为浅色 (300-400 系)
   ════════════════════════════════════════════════════════════════════ */

/* --- priority badge: solid 实心色（dark 下保持原色，亮度更高） --- */
html[data-theme="dark"] body .app-shell .badge.priority-p1,
html[data-theme="dark"] body .app-shell .badge.priority-P1,
html[data-theme="dark"] body .app-shell .stat-card-priority.priority-p1 {
  background: #F59E0B !important;
  color: #FFFFFF !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html[data-theme="dark"] body .app-shell .badge.priority-p2,
html[data-theme="dark"] body .app-shell .badge.priority-P2 {
  background: #A78BFA !important;
  color: #1F1147 !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html[data-theme="dark"] body .app-shell .badge.priority-p3,
html[data-theme="dark"] body .app-shell .badge.priority-P3 {
  background: #60A5FA !important;
  color: #082252 !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}
html[data-theme="dark"] body .app-shell .badge.priority-p4,
html[data-theme="dark"] body .app-shell .badge.priority-P4 {
  background: #F87171 !important;
  color: #3F0808 !important;
  font-weight: 800 !important;
  border: none !important;
  border-radius: 6px !important;
  padding: 2px 8px !important;
}

/* --- priority badge: 半透明 high/mid/low --- */
html[data-theme="dark"] body .app-shell .badge.priority-high {
  background: rgba(248, 113, 113, 0.20) !important;
  color: #FCA5A5 !important;
  border: 1px solid rgba(248, 113, 113, 0.42) !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
}
html[data-theme="dark"] body .app-shell .badge.priority-mid,
html[data-theme="dark"] body .app-shell .badge.priority-medium {
  background: rgba(251, 191, 36, 0.20) !important;
  color: #FCD34D !important;
  border: 1px solid rgba(251, 191, 36, 0.42) !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
}
html[data-theme="dark"] body .app-shell .badge.priority-low {
  background: rgba(96, 165, 250, 0.20) !important;
  color: #93C5FD !important;
  border: 1px solid rgba(96, 165, 250, 0.42) !important;
  font-weight: 700 !important;
  border-radius: 999px !important;
}

/* --- status-pill 状态胶囊 --- */
html[data-theme="dark"] body .app-shell .status-pill {
  border-radius: 999px !important;
  font-weight: 700 !important;
  padding: 3px 10px !important;
  font-size: 12px !important;
}
html[data-theme="dark"] body .app-shell .status-pill.todo,
html[data-theme="dark"] body .app-shell .status-pill.pending {
  background: rgba(251, 191, 36, 0.20) !important;
  color: #FCD34D !important;
  border: 1px solid rgba(251, 191, 36, 0.42) !important;
}
html[data-theme="dark"] body .app-shell .status-pill.processing,
html[data-theme="dark"] body .app-shell .status-pill.in-progress {
  background: rgba(96, 165, 250, 0.20) !important;
  color: #93C5FD !important;
  border: 1px solid rgba(96, 165, 250, 0.42) !important;
}
html[data-theme="dark"] body .app-shell .status-pill.done,
html[data-theme="dark"] body .app-shell .status-pill.completed {
  background: rgba(52, 211, 153, 0.20) !important;
  color: #6EE7B7 !important;
  border: 1px solid rgba(52, 211, 153, 0.42) !important;
}
html[data-theme="dark"] body .app-shell .status-pill.delayed,
html[data-theme="dark"] body .app-shell .status-pill.overdue {
  background: rgba(248, 113, 113, 0.20) !important;
  color: #FCA5A5 !important;
  border: 1px solid rgba(248, 113, 113, 0.42) !important;
}
html[data-theme="dark"] body .app-shell .status-pill.代发,
html[data-theme="dark"] body .app-shell .status-pill.forwarded {
  background: rgba(167, 139, 250, 0.20) !important;
  color: #C4B5FD !important;
  border: 1px solid rgba(167, 139, 250, 0.42) !important;
}

/* --- pending-card 数字徽章 + 左侧紫条 --- */
html[data-theme="dark"] body .app-shell .pending-card {
  counter-increment: pending-counter;
  padding-left: 68px !important;
  position: relative !important;
  overflow: hidden !important;
}
html[data-theme="dark"] body .app-shell .pending-card::before {
  content: counter(pending-counter);
  position: absolute;
  left: 20px;
  top: 18px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(99, 102, 241, 0.22);
  color: #C7D2FE;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 800;
  font-size: 14px;
  border: 1px solid rgba(99, 102, 241, 0.45);
  z-index: 1;
}
html[data-theme="dark"] body .app-shell .pending-card::after {
  content: "";
  position: absolute;
  left: 0;
  top: 12px;
  bottom: 12px;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: linear-gradient(180deg, #A78BFA, #818CF8);
  z-index: 0;
}
html[data-theme="dark"] body .app-shell .pending-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.40) !important;
  transition: background-color 0.22s var(--ease-ios), border-color 0.22s var(--ease-ios), color 0.22s var(--ease-ios), box-shadow 0.22s var(--ease-ios), transform 0.22s var(--ease-ios);
}

/* --- todo-card 状态 accent bar (深色补齐) --- */
html[data-theme="dark"] body .app-shell .todo-list .todo-card:has(.status-pill.done)::after,
html[data-theme="dark"] body .app-shell .todo-list .todo-card:has(.status-pill.success)::after {
  background: linear-gradient(180deg, #34D399, #10B981) !important;
}
html[data-theme="dark"] body .app-shell .todo-list .todo-card:has(.status-pill.progress)::after,
html[data-theme="dark"] body .app-shell .todo-list .todo-card:has(.status-pill.in-progress)::after {
  background: linear-gradient(180deg, #A78BFA, #8B5CF6) !important;
}

/* --- 紧急度 chip（高紧急/中紧急/低紧急）— DOM 用 .urgency-* 或 .badge.urgency-* --- */
html[data-theme="dark"] body .app-shell .badge.urgency-high,
html[data-theme="dark"] body .app-shell .urgency-pill.high,
html[data-theme="dark"] body .app-shell [class*="urgency"][class*="high"] {
  background: rgba(248, 113, 113, 0.22) !important;
  color: #FCA5A5 !important;
  border: 1px solid rgba(248, 113, 113, 0.45) !important;
}
html[data-theme="dark"] body .app-shell .badge.urgency-mid,
html[data-theme="dark"] body .app-shell .badge.urgency-medium,
html[data-theme="dark"] body .app-shell .urgency-pill.mid,
html[data-theme="dark"] body .app-shell [class*="urgency"][class*="mid"] {
  background: rgba(251, 191, 36, 0.22) !important;
  color: #FCD34D !important;
  border: 1px solid rgba(251, 191, 36, 0.45) !important;
}
html[data-theme="dark"] body .app-shell .badge.urgency-low,
html[data-theme="dark"] body .app-shell .urgency-pill.low,
html[data-theme="dark"] body .app-shell [class*="urgency"][class*="low"] {
  background: rgba(96, 165, 250, 0.22) !important;
  color: #93C5FD !important;
  border: 1px solid rgba(96, 165, 250, 0.45) !important;
}

/* --- 收信箱顶部 4 张总览卡：恢复彩色边带（用 box-shadow 内嵌左条） --- */
html[data-theme="dark"] body .app-shell .mailbox-summary-card,
html[data-theme="dark"] body .app-shell .mailbox-overview-card {
  position: relative !important;
}
html[data-theme="dark"] body .app-shell .mailbox-summary-card.all,
html[data-theme="dark"] body .app-shell .mailbox-summary-card[data-kind="all"] {
  box-shadow: inset 4px 0 0 0 #F87171 !important;
}
html[data-theme="dark"] body .app-shell .mailbox-summary-card.command,
html[data-theme="dark"] body .app-shell .mailbox-summary-card[data-kind="command"] {
  box-shadow: inset 4px 0 0 0 #FBBF24 !important;
}
html[data-theme="dark"] body .app-shell .mailbox-summary-card.note,
html[data-theme="dark"] body .app-shell .mailbox-summary-card[data-kind="note"] {
  box-shadow: inset 4px 0 0 0 #34D399 !important;
}
html[data-theme="dark"] body .app-shell .mailbox-summary-card.change,
html[data-theme="dark"] body .app-shell .mailbox-summary-card[data-kind="change"] {
  box-shadow: inset 4px 0 0 0 #A78BFA !important;
}

/* ════════════════════════════════════════════════════════════════════
   v210 — 全站质感升级 + 高级动效（双端 × 浅深 同步）
   设计原则:
   1. 多层阴影 + 内嵌高光 → 卡片有"浮起"物理感
   2. 列表 stagger 30ms 错峰入场（前 12 项）
   3. hover 磁吸 + 阴影渐深 + 边框微变
   4. 主按钮 shimmer 高光扫过（hover）
   5. stat 卡数字单独 pop（动画延迟 240ms）
   6. tab/segmented 切换 indicator slide
   7. nav-item hover 预览态（左条预演）
   8. skeleton shimmer / hero idle 微动
   9. 全部 GPU 友好（transform/opacity/box-shadow）
   10. 尊重 prefers-reduced-motion
   ════════════════════════════════════════════════════════════════════ */

/* ── A. 卡片多层阴影（Light） ─ */
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .event-card,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .pending-card,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .command-card,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .mailbox-feed-item,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .todo-card,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .focus-card {
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 4px 12px rgba(15, 23, 42, 0.04),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}

/* ── A. 卡片多层阴影（Dark） ─ */
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .event-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .pending-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .command-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-feed-item,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-card,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .focus-card {
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.30),
    0 8px 20px rgba(0, 0, 0, 0.20),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}

/* hover 时阴影变深 + 微微提色 */
@media (hover: hover) and (pointer: fine) {
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .event-card:hover:not(:active),
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .pending-card:hover:not(:active),
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .command-card:hover:not(:active),
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .mailbox-feed-item:hover:not(:active),
  html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .todo-card:hover:not(:active) {
    box-shadow:
      0 2px 4px rgba(15, 23, 42, 0.06),
      0 16px 36px rgba(15, 23, 42, 0.10),
      inset 0 1px 0 rgba(255, 255, 255, 0.85) !important;
    border-color: rgba(99, 102, 241, 0.22) !important;
  }
  html[data-theme="dark"] body .app-shell:not(.mobile-shell) .event-card:hover:not(:active),
  html[data-theme="dark"] body .app-shell:not(.mobile-shell) .pending-card:hover:not(:active),
  html[data-theme="dark"] body .app-shell:not(.mobile-shell) .command-card:hover:not(:active),
  html[data-theme="dark"] body .app-shell:not(.mobile-shell) .mailbox-feed-item:hover:not(:active),
  html[data-theme="dark"] body .app-shell:not(.mobile-shell) .todo-card:hover:not(:active) {
    box-shadow:
      0 2px 4px rgba(0, 0, 0, 0.40),
      0 24px 48px rgba(0, 0, 0, 0.36),
      inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
    border-color: rgba(167, 139, 250, 0.30) !important;
  }
}

/* ── B. 列表 stagger 入场 — 用 nth-child 错峰，无需 JS ── */
html body .app-shell:not(.mobile-shell) .event-card:nth-child(1),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(1),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(1),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(1),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(1) { animation-delay: 0ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(2),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(2),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(2),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(2),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(2) { animation-delay: 40ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(3),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(3),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(3),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(3),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(3) { animation-delay: 80ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(4),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(4),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(4),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(4),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(4) { animation-delay: 120ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(5),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(5),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(5),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(5),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(5) { animation-delay: 160ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(6),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(6),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(6),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(6),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(6) { animation-delay: 200ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(7),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(7),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(7),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(7),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(7) { animation-delay: 240ms !important; }
html body .app-shell:not(.mobile-shell) .event-card:nth-child(n+8),
html body .app-shell:not(.mobile-shell) .pending-card:nth-child(n+8),
html body .app-shell:not(.mobile-shell) .command-card:nth-child(n+8),
html body .app-shell:not(.mobile-shell) .todo-card:nth-child(n+8),
html body .app-shell:not(.mobile-shell) .mailbox-feed-item:nth-child(n+8) { animation-delay: 280ms !important; }

/* stat-card 错峰（首页一行 4-5 张） */
html body .app-shell:not(.mobile-shell) .stat-card:nth-child(1) { animation-delay: 60ms !important; }
html body .app-shell:not(.mobile-shell) .stat-card:nth-child(2) { animation-delay: 120ms !important; }
html body .app-shell:not(.mobile-shell) .stat-card:nth-child(3) { animation-delay: 180ms !important; }
html body .app-shell:not(.mobile-shell) .stat-card:nth-child(4) { animation-delay: 240ms !important; }
html body .app-shell:not(.mobile-shell) .stat-card:nth-child(5) { animation-delay: 300ms !important; }

/* ── C. stat-card 主数字单独 pop（在卡片入场 240ms 后） ── */
@keyframes v210-stat-num-pop {
  0%   { opacity: 0; transform: translateY(8px) scale(0.85); }
  60%  { opacity: 1; transform: translateY(-1px) scale(1.04); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
html body .app-shell:not(.mobile-shell) .stat-card .stat-card-number,
html body .app-shell:not(.mobile-shell) .stat-card strong:first-of-type,
html body .app-shell:not(.mobile-shell) .stat-card .stat-card-value {
  animation: v210-stat-num-pop 520ms var(--ease-ios-spring) both !important;
  animation-delay: calc(240ms + var(--stagger, 0) * 30ms) !important;
  display: inline-block !important;
}

/* ── D. 主按钮 shimmer 高光扫过（hover；infinite 循环让用户能看到） ── */
@keyframes v210-shimmer-loop {
  0%   { transform: translateX(-160%) skewX(-18deg); opacity: 0; }
  20%  { opacity: 1; }
  60%  { opacity: 1; }
  100% { transform: translateX(280%) skewX(-18deg); opacity: 0; }
}
@media (hover: hover) and (pointer: fine) {
  html body .app-shell:not(.mobile-shell) .action-button.primary,
  html body .app-shell:not(.mobile-shell) .btn-primary,
  html body .app-shell:not(.mobile-shell) .primary-btn,
  html body .app-shell:not(.mobile-shell) .onb-btn-primary,
  html body .app-shell:not(.mobile-shell) .assistant-home-reference-action.primary,
  html body .app-shell:not(.mobile-shell) [data-action="new-meeting"],
  html body .app-shell:not(.mobile-shell) [data-action="open-onboarding"] {
    position: relative;
    overflow: hidden;
    isolation: isolate;
  }
  html body .app-shell:not(.mobile-shell) .action-button.primary::after,
  html body .app-shell:not(.mobile-shell) .btn-primary::after,
  html body .app-shell:not(.mobile-shell) .primary-btn::after,
  html body .app-shell:not(.mobile-shell) .onb-btn-primary::after,
  html body .app-shell:not(.mobile-shell) .assistant-home-reference-action.primary::after,
  html body .app-shell:not(.mobile-shell) [data-action="new-meeting"]::after {
    content: "" !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 50% !important;
    height: 100% !important;
    background: linear-gradient(110deg,
      transparent 0%,
      rgba(255, 255, 255, 0.65) 50%,
      transparent 100%) !important;
    transform: translateX(-160%) skewX(-18deg) !important;
    pointer-events: none !important;
    opacity: 0 !important;
    z-index: 2 !important;
    animation: none;
  }
  html body .app-shell:not(.mobile-shell) .action-button.primary:hover::after,
  html body .app-shell:not(.mobile-shell) .btn-primary:hover::after,
  html body .app-shell:not(.mobile-shell) .primary-btn:hover::after,
  html body .app-shell:not(.mobile-shell) .onb-btn-primary:hover::after,
  html body .app-shell:not(.mobile-shell) .assistant-home-reference-action.primary:hover::after,
  html body .app-shell:not(.mobile-shell) [data-action="new-meeting"]:hover::after {
    animation: v210-shimmer-loop 1.6s cubic-bezier(0.32, 0.72, 0, 1) infinite !important;
  }
}

/* ── E. nav-item hover 预览态：仅背景 + 左条预演（不再偏移避免抖动） ── */
@media (hover: hover) and (pointer: fine) {
  html body .app-shell:not(.mobile-shell) .side-nav .nav-item:not(.active):hover {
    background: rgba(99, 102, 241, 0.08) !important;
    transition: background 200ms var(--ease-ios), color 200ms var(--ease-ios) !important;
  }
  html[data-theme="dark"] body .app-shell:not(.mobile-shell) .side-nav .nav-item:not(.active):hover {
    background: rgba(167, 139, 250, 0.12) !important;
  }
  html body .app-shell:not(.mobile-shell) .side-nav .nav-item:not(.active):hover::before {
    content: "" !important;
    position: absolute !important;
    left: -10px !important;
    top: 50% !important;
    transform: translateY(-50%) scaleY(0.6) !important;
    width: 2.5px !important;
    height: 14px !important;
    border-radius: 2px !important;
    background: rgba(99, 102, 241, 0.45) !important;
    opacity: 0.85 !important;
    transition: transform 220ms var(--ease-ios-spring), opacity 220ms var(--ease-ios) !important;
  }
}

/* ── F. tab/segmented 切换 indicator 滑动 ── */
html body .app-shell:not(.mobile-shell) .segmented,
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented {
  position: relative;
}
html body .app-shell:not(.mobile-shell) .segmented button,
html body .app-shell:not(.mobile-shell) .tab-button,
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented button {
  transition: color 280ms var(--ease-ios), background 280ms var(--ease-ios) !important;
}
html body .app-shell:not(.mobile-shell) .segmented button.active,
html body .app-shell:not(.mobile-shell) .tab-button.active,
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented button.active {
  animation: v210-tab-pop 360ms var(--ease-ios-spring) both;
}
@keyframes v210-tab-pop {
  0%   { transform: scale(0.95); }
  60%  { transform: scale(1.03); }
  100% { transform: scale(1); }
}

/* ── G. skeleton shimmer ── */
@keyframes v210-skeleton-shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .skeleton,
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) [data-skeleton="true"],
html:not([data-theme="dark"]) body .app-shell:not(.mobile-shell) .loading-placeholder {
  background: linear-gradient(90deg,
    rgba(226, 232, 240, 0.4) 0%,
    rgba(226, 232, 240, 0.8) 50%,
    rgba(226, 232, 240, 0.4) 100%) !important;
  background-size: 200% 100% !important;
  animation: v210-skeleton-shimmer 1.4s ease-in-out infinite !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .skeleton,
html[data-theme="dark"] body .app-shell:not(.mobile-shell) [data-skeleton="true"],
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .loading-placeholder {
  background: linear-gradient(90deg,
    rgba(30, 41, 59, 0.4) 0%,
    rgba(51, 65, 85, 0.6) 50%,
    rgba(30, 41, 59, 0.4) 100%) !important;
  background-size: 200% 100% !important;
  animation: v210-skeleton-shimmer 1.4s ease-in-out infinite !important;
}

/* ── H. hero 卡 idle 微动（节制：6s 慢呼吸 + 微小幅度） ── */
@keyframes v210-hero-glyph-breathe {
  0%, 100% { transform: scale(1) rotate(0deg); }
  50%      { transform: scale(1.025) rotate(0.3deg); }
}
html body .app-shell:not(.mobile-shell) .v5-hero-glyph {
  animation: v210-hero-glyph-breathe 6s ease-in-out infinite !important;
  transform-origin: center !important;
}

/* ── I. nav 图标悬停轻微放大（节制：scale 1.06，不旋转） ── */
@media (hover: hover) and (pointer: fine) {
  html body .app-shell:not(.mobile-shell) .nav-item:hover .nav-icon svg {
    transform: scale(1.06) !important;
    transition: transform 280ms var(--ease-ios-spring) !important;
  }
  html body .app-shell:not(.mobile-shell) .nav-item.active:hover .nav-icon svg {
    transform: scale(1.04) !important;
  }
}

/* ── J. switch / toggle 滑动更润滑 ── */
html body .app-shell:not(.mobile-shell) input[type="checkbox"][role="switch"],
html body .app-shell:not(.mobile-shell) .switch input,
html body .app-shell:not(.mobile-shell) .toggle-switch {
  transition: background-color 280ms var(--ease-ios), border-color 280ms var(--ease-ios) !important;
}
html body .app-shell:not(.mobile-shell) input[type="checkbox"][role="switch"]::before,
html body .app-shell:not(.mobile-shell) .switch input::before,
html body .app-shell:not(.mobile-shell) .toggle-switch::before {
  transition: transform 320ms var(--ease-ios-spring), background 280ms var(--ease-ios) !important;
}

/* ── K. (节制) priority badge 不单独 pop —— 跟随卡片入场即可，避免动画过密 ── */

/* ── L. 路由切换时主面板的二级 stagger（panel/分块） ── */
@keyframes v210-section-fade-up {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
html body .app-shell:not(.mobile-shell) main.page-body > .panel:nth-of-type(1),
html body .app-shell:not(.mobile-shell) main.page-body > .v5-panel:nth-of-type(1),
html body .app-shell:not(.mobile-shell) main.page-body > .glass-panel:nth-of-type(1) {
  animation: v210-section-fade-up 400ms var(--ease-ios) both !important;
  animation-delay: 60ms !important;
}
html body .app-shell:not(.mobile-shell) main.page-body > .panel:nth-of-type(2),
html body .app-shell:not(.mobile-shell) main.page-body > .v5-panel:nth-of-type(2),
html body .app-shell:not(.mobile-shell) main.page-body > .glass-panel:nth-of-type(2) {
  animation: v210-section-fade-up 400ms var(--ease-ios) both !important;
  animation-delay: 140ms !important;
}
html body .app-shell:not(.mobile-shell) main.page-body > .panel:nth-of-type(3),
html body .app-shell:not(.mobile-shell) main.page-body > .v5-panel:nth-of-type(3),
html body .app-shell:not(.mobile-shell) main.page-body > .glass-panel:nth-of-type(3) {
  animation: v210-section-fade-up 400ms var(--ease-ios) both !important;
  animation-delay: 220ms !important;
}

/* ── M. page-header 入场（与 page-body 错峰） ── */
@keyframes v210-page-header-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
html body .app-shell:not(.mobile-shell) .page-header {
  animation: v210-page-header-in 360ms var(--ease-ios) both !important;
}

/* ── O. 修复 chips 容器：details 展开撑高其他 chip 的 bug ──
   父 flex 默认 stretch + nowrap，details 内浮层会撑开 details 高度并连带把同行 chip 拉成 94px。
   解：父容器 flex-wrap + align-items: flex-start；details 用 display: contents 透明化，
   让 summary 和 panel 直接成为父 flex 容器的子，summary 跟同行 chip 对齐，panel 占 100% wrap 到下一行。 */
html body .app-shell .assistant-chips,
html body .app-shell .assistant-quick-pills,
html body .app-shell .assistant-suggestions,
html body .app-shell .assistant-chat-panel .assistant-chips {
  align-items: flex-start !important;
  flex-wrap: wrap !important;
}
html body .app-shell .assistant-chips-more {
  display: contents !important;
}
/* 浮层独占一行（成为 flex 子元素后用 flex-basis: 100% wrap 到下一行） */
html body .app-shell .assistant-chips-more-panel {
  flex-basis: 100% !important;
  width: 100% !important;
  margin-top: 8px !important;
}
/* details 收起时，浏览器默认 hide non-summary children，display: contents 不影响这个行为 */

/* ════════════════════════════════════════════════════════════════════
   v220 — 设置页 + 教程页 视觉统一到主系统（消除"两页割裂感"）
   ────────────────────────────────────────────────────────────────────
   现状：renderSettingsPageV2 (.sv3-*) 和 renderTutorialPage (.tut-*)
   各自用了几百行内联 <style>，大量紫色渐变 + 自定义阴影 + 自定义统计卡，
   与主系统首页/待安排/待办的"浅卡 + 多色边带 + 多层阴影"不是一套。
   
   策略：用更具体的链路 + !important 在末尾覆盖，让这两页的视觉和首页一致：
     - 紫色渐变 hero / 紫色头像 → 与主系统 v5-hero-card 同款（3px brand 边带）
     - 紫色 sv3-hero-stat → 与首页 stats-row 多色边带（紫/橙/红/绿）一致  
     - 紫色按钮渐变 → 与主系统 .action-button.primary 同款（v210 D 段已实装）
     - 紫色数字团队卡 → 与首页 stats-row 一致的 3px 同色边框
     - 紫色 toggle / num 框 → 与主系统平面色调一致
   ════════════════════════════════════════════════════════════════════ */

/* ─── O.1 设置页 hero：去掉紫色渐变顶条，改用 brand 3px 边带 ─── */
html body .app-shell:not(.mobile-shell) .sv3-hero {
  background: var(--v4-surface) !important;
  border: 3px solid var(--v4-brand) !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 8px 24px rgba(15, 23, 42, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-hero {
  background: var(--v4-surface-2) !important;
  border-color: var(--v4-brand) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 8px 20px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}
/* 删除原顶条 5px 紫色渐变 + 圆形 radial 装饰 */
html body .app-shell:not(.mobile-shell) .sv3-hero::before {
  display: none !important;
  content: none !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero::after {
  display: none !important;
  content: none !important;
}

/* ─── O.2 设置页头像：减弱紫色渐变 → 使用 stat-card-priority 同款方块 ─── */
html body .app-shell:not(.mobile-shell) .sv3-avatar {
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.95), rgba(99, 102, 241, 0.78)) !important;
  border-radius: 18px !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.10),
    0 6px 14px rgba(99, 102, 241, 0.18) !important;
}

/* ─── O.3 设置页 4 张 hero stat：改用首页 stats-row 多色边带（紫/橙/红/绿） ─── */
html body .app-shell:not(.mobile-shell) .sv3-hero-stats {
  margin-top: 24px !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stat {
  background: var(--v4-surface) !important;
  border-radius: 16px !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 4px 12px rgba(15, 23, 42, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
  padding: 16px 18px !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-hero-stat {
  background: var(--v4-surface-2) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 4px 12px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}
/* 4 张 stat 各自 3px 边带 — 紫/橙/红/绿，匹配首页设计 */
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(1) {
  border: 3px solid var(--v4-brand) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(2) {
  border: 3px solid var(--v4-warn) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(3) {
  border: 3px solid var(--v4-danger) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(4) {
  border: 3px solid var(--v4-ok) !important;
}
/* dot 颜色对齐边带色 */
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(1) .sv3-hero-stat-dot {
  background: var(--v4-brand) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(2) .sv3-hero-stat-dot {
  background: var(--v4-warn) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(3) .sv3-hero-stat-dot {
  background: var(--v4-danger) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-stats > .sv3-hero-stat:nth-child(4) .sv3-hero-stat-dot {
  background: var(--v4-ok) !important;
}
/* 数字大字号（与首页 stat-card-value 一致） */
html body .app-shell:not(.mobile-shell) .sv3-hero-stat-value {
  font-size: 28px !important;
  letter-spacing: -0.025em !important;
  line-height: 1 !important;
  margin-top: 4px !important;
}

/* ─── O.4 设置页 section：用 v210 多层阴影替换原 box-shadow ─── */
html body .app-shell:not(.mobile-shell) .sv3-section {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: 20px !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 8px 24px rgba(15, 23, 42, 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-section {
  background: var(--v4-surface-2) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 8px 20px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}

/* ─── O.5 设置页 section-head-icon：由紫色填充 → 浅色背景 + 主色文字 ─── */
html body .app-shell:not(.mobile-shell) .sv3-section-head-icon {
  width: 36px !important;
  height: 36px !important;
  border-radius: 11px !important;
  background: rgba(99, 102, 241, 0.10) !important;
  color: var(--v4-brand) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-section-head-icon {
  background: rgba(167, 139, 250, 0.14) !important;
  color: #a5b4fc !important;
}

/* ─── O.6 设置页 toggle switch：保留紫色 thumb 但用主系统配色 ─── */
html body .app-shell:not(.mobile-shell) .sv3-switch input:checked + .sv3-slider {
  background: var(--v4-brand) !important;
}

/* ─── O.7 设置页团队 stat box：用 stats-row 同款 3px 边带（紫/红） ─── */
html body .app-shell:not(.mobile-shell) .sv3-team-stat-box {
  background: var(--v4-surface-2) !important;
  border-radius: 14px !important;
  padding: 18px 16px !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-team-stat-box {
  background: var(--v4-surface-3) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-team-stat-box[data-tone="member"] {
  border: 3px solid var(--v4-brand) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-team-stat-box[data-tone="invite"] {
  border: 3px solid var(--v4-warn) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-team-stat-box .num {
  font-size: 32px !important;
  font-weight: 800 !important;
  color: var(--text-main) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-team-stat-box[data-tone="member"] .num {
  color: var(--v4-brand) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-team-stat-box[data-tone="invite"] .num {
  color: var(--v4-warn) !important;
}

/* ─── O.8 设置页 hero 主按钮 + action-btn → 用主系统 .action-button.primary 同款 ─── */
html body .app-shell:not(.mobile-shell) .sv3-hero-btn.is-primary,
html body .app-shell:not(.mobile-shell) .sv3-action-btn {
  background: var(--v4-brand) !important;
  border: 1px solid var(--v4-brand) !important;
  border-radius: 12px !important;
  box-shadow:
    0 1px 2px rgba(99, 102, 241, 0.12),
    0 6px 14px rgba(99, 102, 241, 0.20) !important;
  font-weight: 600 !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-btn.is-primary:hover,
html body .app-shell:not(.mobile-shell) .sv3-action-btn:hover {
  background: var(--v4-brand-hover, #4338CA) !important;
  border-color: var(--v4-brand-hover, #4338CA) !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-btn:not(.is-primary) {
  background: var(--v4-surface-2) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: 12px !important;
  font-weight: 600 !important;
}
html body .app-shell:not(.mobile-shell) .sv3-hero-btn:not(.is-primary):hover {
  background: var(--v4-surface) !important;
  border-color: rgba(99, 102, 241, 0.25) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-hero-btn:not(.is-primary):hover {
  background: var(--v4-surface-3) !important;
}

/* ─── O.9 设置页 privacy 卡：减弱过强紫色 → 浅卡 + 多色边带 ─── */
html body .app-shell:not(.mobile-shell) .sv3-privacy-card {
  background: var(--v4-surface) !important;
  border: 3px solid var(--c) !important;
  border-radius: 16px !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 6px 18px rgba(15, 23, 42, 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .sv3-privacy-card {
  background: var(--v4-surface-2) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 6px 16px rgba(0, 0, 0, 0.28),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}

/* ─── O.10 教程页 hero：去渐变文字标题 + 去顶条 ─── */
html body .app-shell:not(.mobile-shell) .tut-hero {
  background: var(--v4-surface) !important;
  border: 3px solid var(--v4-brand) !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 8px 24px rgba(15, 23, 42, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .tut-hero {
  background: var(--v4-surface-2) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 8px 20px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}
html body .app-shell:not(.mobile-shell) .tut-hero::before {
  display: none !important;
  content: none !important;
}
/* hero 标题去掉紫色渐变文字，改纯深色 */
html body .app-shell:not(.mobile-shell) .tut-hero h1 {
  background: none !important;
  -webkit-text-fill-color: var(--text-main) !important;
  color: var(--text-main) !important;
  -webkit-background-clip: initial !important;
  background-clip: initial !important;
}

/* ─── O.11 教程页 num 数字框：用主系统 stat-card-priority 风格 ─── */
html body .app-shell:not(.mobile-shell) .tut-num {
  background: var(--v4-surface) !important;
  border: 3px solid var(--c) !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 4px 12px color-mix(in srgb, var(--c) 16%, transparent) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .tut-num {
  background: var(--v4-surface-2) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 4px 10px color-mix(in srgb, var(--c) 30%, transparent) !important;
}

/* ─── O.12 教程页卡片：用 v210 多层阴影 ─── */
html body .app-shell:not(.mobile-shell) .tut-card {
  background: var(--v4-surface) !important;
  border: 1px solid var(--v4-line) !important;
  border-radius: 16px !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 8px 24px rgba(15, 23, 42, 0.05),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
  transition: transform 280ms var(--ease-ios), box-shadow 280ms var(--ease-ios) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .tut-card {
  background: var(--v4-surface-2) !important;
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.40),
    0 8px 20px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.04) !important;
}
html body .app-shell:not(.mobile-shell) .tut-card:hover {
  transform: translateY(-1px) !important;
  box-shadow:
    0 2px 4px rgba(15, 23, 42, 0.06),
    0 16px 36px rgba(15, 23, 42, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.8) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .tut-card:hover {
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.40),
    0 24px 48px rgba(0, 0, 0, 0.36),
    inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
}

/* ─── O.13 教程页 illust 容器：减弱紫色背景 → 浅色 + 主色细边 ─── */
html body .app-shell:not(.mobile-shell) .tut-illust {
  background: var(--v4-surface-2) !important;
  border: 1px solid color-mix(in srgb, var(--c) 18%, var(--v4-line)) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .tut-illust {
  background: var(--v4-surface-3) !important;
}

/* ─── O.14 教程页 jump 按钮：与主系统 ghost-button 一致 ─── */
html body .app-shell:not(.mobile-shell) .tut-jump {
  background: var(--v4-surface-2) !important;
  border: 1px solid color-mix(in srgb, var(--c) 28%, var(--v4-line)) !important;
  border-radius: 10px !important;
  font-weight: 600 !important;
}
html body .app-shell:not(.mobile-shell) .tut-jump:hover {
  background: color-mix(in srgb, var(--c) 10%, var(--v4-surface-2)) !important;
  border-color: color-mix(in srgb, var(--c) 40%, var(--v4-line)) !important;
  transform: translateY(-1px) !important;
}

/* ─── O.15 时间轴左侧渐变线：节制为 indigo 单色 ─── */
html body .app-shell:not(.mobile-shell) .tut-timeline::before {
  background: linear-gradient(to bottom,
    rgba(99, 102, 241, 0.30) 0%,
    rgba(99, 102, 241, 0.18) 50%,
    rgba(99, 102, 241, 0.08) 100%) !important;
}
html[data-theme="dark"] body .app-shell:not(.mobile-shell) .tut-timeline::before {
  background: linear-gradient(to bottom,
    rgba(167, 139, 250, 0.32) 0%,
    rgba(167, 139, 250, 0.20) 50%,
    rgba(167, 139, 250, 0.10) 100%) !important;
}

/* ════════════════════════════════════════════════════════════════════
   v230 — 登录页 + 引导页 + 欢迎页 视觉统一 + 全局丝滑化打磨
   ────────────────────────────────────────────────────────────────────
   补做：之前 v210/v220 没覆盖的 3 个入口页面（用户首次进入看到的）：
     • 登录页 .login-overlay / .auth-shot-*  
     • 首次引导页 .onb-* / .onboarding-modal-card  
     • 老板欢迎页 .boss-welcome-*  
   同时全局打磨：留白、滚动条、hover 节奏、focus 动画、滚动 reveal
   ════════════════════════════════════════════════════════════════════ */

/* ─── P.1 登录页 overlay：完全遮挡主页 + 平滑淡入 ─── */
@keyframes v230-overlay-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes v230-card-rise-in {
  from { opacity: 0; transform: translateY(20px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
/* 用与主页相同的浅灰底（避免看到下方 dashboard 内容；同时叠加 backdrop blur 兜底） */
html body .login-overlay {
  animation: v230-overlay-fade-in 360ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
  background: linear-gradient(180deg, #F5F7FB 0%, #EEF1F8 100%) !important;
  backdrop-filter: blur(24px) !important;
  -webkit-backdrop-filter: blur(24px) !important;
}
/* 2026-05-04：首次 auth-ready 亮屏时禁用 login-overlay 的 fade-in 动画。
   fade-in 动画会让 overlay 前 ~100ms 处于 opacity:0→0.5 的半透明状态，
   用户透过半透明的登录遮罩能看见下方 app-shell（主工作台）内容，感知为
   "闪屏显示里面内容"。首屏直接 opacity:1 即可，无需动画。
   只禁用这个关键首屏瞬间 — 后续 view 切换（如 login↔register）仍保留动画。*/
html body .login-overlay {
  /* 覆盖 base.css 里同名的 backdropIn 动画（0.22s 也从 opacity:0 开始，同样有漏光问题）*/
  animation: none !important;
  opacity: 1 !important;
}
html[data-theme="dark"] body .login-overlay {
  background: linear-gradient(180deg, #0B0F1A 0%, #0A0E18 100%) !important;
}

/* ─── P.2 登录卡片：v210 多层阴影 + 入场弹起 ─── */
html body .login-card,
html body .login-card.auth-login-card,
html body .auth-shot-card {
  animation: v230-card-rise-in 480ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
  animation-delay: 60ms !important;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.06),
    0 24px 60px rgba(15, 23, 42, 0.10),
    0 8px 16px rgba(99, 102, 241, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}
html[data-theme="dark"] body .login-card,
html[data-theme="dark"] body .login-card.auth-login-card,
html[data-theme="dark"] body .auth-shot-card {
  box-shadow:
    0 1px 2px rgba(0, 0, 0, 0.50),
    0 32px 80px rgba(0, 0, 0, 0.50),
    0 8px 16px rgba(99, 102, 241, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
}

/* ─── P.3 登录输入框：focus 状态 ─── */
/* 2026-05-12：原本 focus 时加 3px 亮蓝外 glow 把整个框 "撑大" 6px，
   导致账号框（未 focus）vs 密码框（focus）视觉占地不一致——下框看起来明显
   更大、更圆。改为只让 border-color 变 + 1px 内描边的微弱 glow，外形不变。 */
html body .auth-shot-field {
  transition: border-color 220ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 220ms cubic-bezier(0.32, 0.72, 0, 1),
              background 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .auth-shot-field:focus-within {
  border-color: var(--v4-brand) !important;
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb, var(--v4-brand) 32%, transparent),
    0 1px 3px rgba(99, 102, 241, 0.10) !important;
  background: color-mix(in srgb, var(--v4-brand) 3%, var(--v4-surface)) !important;
}
html[data-theme="dark"] body .auth-shot-field:focus-within {
  background: color-mix(in srgb, var(--v4-brand) 8%, var(--v4-surface-2)) !important;
}

/* ─── P.4 登录主按钮：与 .action-button.primary 同款 shimmer ─── */
html body .auth-shot-submit,
html body .auth-reg-submit {
  position: relative !important;
  overflow: hidden !important;
  isolation: isolate !important;
  background: var(--v4-brand) !important;
  border: 1px solid var(--v4-brand) !important;
  box-shadow:
    0 1px 2px rgba(99, 102, 241, 0.12),
    0 6px 18px rgba(99, 102, 241, 0.22) !important;
  transition: transform 200ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 200ms cubic-bezier(0.32, 0.72, 0, 1),
              background 200ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .auth-shot-submit:hover,
html body .auth-reg-submit:hover {
  background: var(--v4-brand-hover, #4338CA) !important;
  transform: translateY(-1px) !important;
  box-shadow:
    0 2px 4px rgba(99, 102, 241, 0.16),
    0 12px 28px rgba(99, 102, 241, 0.30) !important;
}
@media (hover: hover) and (pointer: fine) {
  html body .auth-shot-submit::after,
  html body .auth-reg-submit::after {
    content: "" !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 50% !important;
    height: 100% !important;
    background: linear-gradient(110deg,
      transparent 0%,
      rgba(255, 255, 255, 0.45) 50%,
      transparent 100%) !important;
    transform: translateX(-160%) skewX(-18deg) !important;
    pointer-events: none !important;
    opacity: 0 !important;
    z-index: 0 !important;
  }
  html body .auth-shot-submit:hover::after,
  html body .auth-reg-submit:hover::after {
    animation: v210-shimmer-loop 1.6s cubic-bezier(0.32, 0.72, 0, 1) infinite !important;
  }
}

/* ─── P.5 登录 SSO 按钮：hover 浮起 + 边色透出 ─── */
html body .auth-shot-sso-button {
  transition: transform 220ms cubic-bezier(0.32, 0.72, 0, 1),
              border-color 220ms cubic-bezier(0.32, 0.72, 0, 1),
              background 220ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .auth-shot-sso-button:hover {
  transform: translateY(-2px) !important;
  border-color: var(--v4-brand) !important;
  box-shadow:
    0 1px 2px rgba(99, 102, 241, 0.10),
    0 6px 16px rgba(99, 102, 241, 0.16) !important;
}

/* ─── P.6 登录 tab：active indicator pop ─── */
html body .auth-shot-tab {
  transition: color 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .auth-shot-tab.active {
  animation: v210-tab-active-pop 360ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}

/* ─── P.7 引导页 modal card：v210 多层阴影 + 入场 ─── */
html body .modal-card.onboarding-modal-card,
html body .onboarding-modal-card {
  animation: v230-card-rise-in 480ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
  animation-delay: 60ms !important;
  box-shadow:
    0 2px 4px rgba(15, 23, 42, 0.08),
    0 32px 80px rgba(15, 23, 42, 0.12),
    0 12px 24px rgba(99, 102, 241, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.7) !important;
}
html[data-theme="dark"] body .modal-card.onboarding-modal-card,
html[data-theme="dark"] body .onboarding-modal-card {
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.50),
    0 40px 100px rgba(0, 0, 0, 0.55),
    0 12px 24px rgba(99, 102, 241, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
}

/* ─── P.8 引导页 step list：stagger 入场 + active spring ─── */
@keyframes v230-step-fade-in {
  from { opacity: 0; transform: translateX(-8px); }
  to   { opacity: 1; transform: translateX(0); }
}
html body .onboarding-modal-card .onb-step-item,
html body .onboarding-modal-card [class*="step-list"] > * {
  animation: v230-step-fade-in 320ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
}
html body .onboarding-modal-card .onb-step-item:nth-child(1)  { animation-delay: 80ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(2)  { animation-delay: 110ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(3)  { animation-delay: 140ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(4)  { animation-delay: 170ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(5)  { animation-delay: 200ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(6)  { animation-delay: 230ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(7)  { animation-delay: 260ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(8)  { animation-delay: 290ms !important; }
html body .onboarding-modal-card .onb-step-item:nth-child(n+9) { animation-delay: 320ms !important; }

/* ─── P.9 引导页主按钮 + 跳过按钮 hover 节奏 ─── */
html body .onb-btn,
html body .onb-btn-primary,
html body .onb-btn-skip,
html body .onb-btn-ghost {
  transition: transform 220ms cubic-bezier(0.32, 0.72, 0, 1),
              background 220ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .onb-btn-primary:hover {
  transform: translateY(-1px) !important;
  box-shadow:
    0 2px 4px rgba(99, 102, 241, 0.16),
    0 12px 28px rgba(99, 102, 241, 0.30) !important;
}

/* ─── P.10 引导页恢复按钮（onb-resume-fab）：呼吸 + 浮动 ─── */
@keyframes v230-fab-bounce {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-3px); }
}
html body .onb-resume-fab {
  animation: v230-fab-bounce 2.4s ease-in-out infinite !important;
  box-shadow:
    0 4px 12px rgba(99, 102, 241, 0.32),
    0 12px 28px rgba(99, 102, 241, 0.16) !important;
  transition: transform 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .onb-resume-fab:hover {
  animation-play-state: paused !important;
  transform: translateY(-4px) scale(1.04) !important;
}

/* ─── P.11 老板欢迎页：入场弹起 + 进度条流光 ─── */
@keyframes v230-progress-shine {
  0%   { background-position: -200% center; }
  100% { background-position: 200% center; }
}
html body .boss-welcome-overlay .boss-welcome-card {
  animation: v230-card-rise-in 560ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
}
html body .boss-welcome-progress > span {
  background: linear-gradient(90deg,
    var(--v4-brand) 0%,
    color-mix(in srgb, var(--v4-brand) 60%, #fff) 50%,
    var(--v4-brand) 100%) !important;
  background-size: 200% 100% !important;
  animation: v230-progress-shine 1.8s linear infinite !important;
}

/* ─── P.12 全局滚动条美化（双端 × 浅深） ─── */
html body .app-shell ::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
}
html body .app-shell ::-webkit-scrollbar-track {
  background: transparent !important;
}
html body .app-shell ::-webkit-scrollbar-thumb {
  background: rgba(99, 102, 241, 0.18) !important;
  border-radius: 8px !important;
  border: 2px solid transparent !important;
  background-clip: padding-box !important;
  transition: background 200ms ease !important;
}
html body .app-shell ::-webkit-scrollbar-thumb:hover {
  background: rgba(99, 102, 241, 0.32) !important;
  background-clip: padding-box !important;
}
html[data-theme="dark"] body .app-shell ::-webkit-scrollbar-thumb {
  background: rgba(167, 139, 250, 0.20) !important;
  background-clip: padding-box !important;
}
html[data-theme="dark"] body .app-shell ::-webkit-scrollbar-thumb:hover {
  background: rgba(167, 139, 250, 0.36) !important;
  background-clip: padding-box !important;
}

/* ─── P.13 input/textarea/select 全局 focus ring 丝滑化 ─── */
html body .app-shell input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
html body .app-shell textarea,
html body .app-shell select {
  transition: border-color 220ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 220ms cubic-bezier(0.32, 0.72, 0, 1),
              background 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .app-shell input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):focus,
html body .app-shell textarea:focus,
html body .app-shell select:focus {
  outline: none !important;
  border-color: var(--v4-brand) !important;
  box-shadow:
    0 0 0 3px color-mix(in srgb, var(--v4-brand) 18%, transparent) !important;
}

/* ─── P.14 全局 hover 节奏统一：所有 transition 默认 cubic-bezier(0.32, 0.72, 0, 1) ─── */
html body .app-shell .ghost-button,
html body .app-shell .secondary-button {
  transition: transform 220ms cubic-bezier(0.32, 0.72, 0, 1),
              border-color 220ms cubic-bezier(0.32, 0.72, 0, 1),
              background 220ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 220ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .app-shell .ghost-button:hover {
  transform: translateY(-1px) !important;
}

/* ─── P.15 IntersectionObserver-free scroll reveal：reveal-on-scroll 类 ─── */
@keyframes v230-reveal-up {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
html body .app-shell .reveal-on-scroll,
html body .app-shell [data-reveal] {
  animation: v230-reveal-up 480ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
  animation-timeline: view() !important;
  animation-range: entry 0% cover 30% !important;
}

/* ─── P.16 全局图标色彩 hover 微旋（细节质感） ─── */
@media (hover: hover) and (pointer: fine) {
  html body .app-shell .ghost-button:hover svg,
  html body .app-shell .secondary-button:hover svg {
    transition: transform 320ms cubic-bezier(0.32, 0.72, 0, 1.05) !important;
    transform: scale(1.08) !important;
  }
}

/* ─── P.17 spark 装饰（如登录标题旁的 ✦）旋转动画 ─── */
@keyframes v230-spark-spin {
  0%, 100% { transform: rotate(0deg) scale(1); opacity: 0.85; }
  50%      { transform: rotate(180deg) scale(1.2); opacity: 1; }
}
html body .auth-shot-heading .spark {
  display: inline-block !important;
  animation: v230-spark-spin 3s ease-in-out infinite !important;
  color: var(--v4-brand) !important;
}

/* ════════════════════════════════════════════════════════════════════
   v232 — 登录页 hero 重做：左右等宽 + 品牌区上半 + 海报图下半
   ────────────────────────────────────────────────────────────────────
   用户反馈：希望登录页左侧海报和参考图一致——上半干净品牌区（logo+文字）
   下半会议室图，不要现在这种"图片铺满+文字浮在上层"拥挤感。
   ════════════════════════════════════════════════════════════════════ */

/* P.17 登录卡总宽：原 1520px 太宽导致 panel 表单区拉得很长。
   保持 hero 511 不变（用户满意），收紧 panel 到约 600px → 总宽 1112，整体更紧凑居中 */
html body .login-card.auth-login-card.auth-shot-card {
  width: min(1112px, calc(100vw - 24px)) !important;
}

/* P.18 hero shell：让 hero 列宽固定 511 = 海报 ratio 0.838 完美匹配，
   panel 用 1fr 自动占余下（1112-511=601），form 表单区收紧到舒适宽度 */
html body .auth-shot-shell {
  grid-template-columns: 511px 1fr !important;
}
@media (max-width: 1320px) {
  html body .auth-shot-shell {
    grid-template-columns: minmax(380px, 511px) minmax(0, 1fr) !important;
  }
}

/* P.19 hero 容器：light/dark 各用专属海报图（用户提供的完整 1148×1370 海报）。
   选择器特异性需要 ≥ base.css 里 `html[data-theme=...] .auth-shot-hero`（0,2,1） */
html[data-theme="light"] body .auth-shot-hero,
html[data-theme="dark"] body .auth-shot-hero {
  background-size: cover !important;
  background-position: center top !important;
  background-repeat: no-repeat !important;
  display: block !important;
  padding: 0 !important;
  row-gap: 0 !important;
  position: relative !important;
  border-right: 1px solid rgba(99, 102, 241, 0.06) !important;
  overflow: hidden !important;
}
html[data-theme="light"] body .auth-shot-hero {
  background-color: #EEF1F8 !important;
  background-image: url("/assets/auth-poster-card-light.png?v=20260429-v4") !important;
}
html[data-theme="dark"] body .auth-shot-hero {
  background-color: #0B0F1A !important;
  background-image: url("/assets/auth-poster-card-dark.png?v=20260429-v4") !important;
  border-right-color: rgba(99, 102, 241, 0.10) !important;
}

/* P.20-P.24 整张海报图已包含品牌内容，隐藏 DOM 重复渲染的 logo+文字 */
html body .auth-shot-hero-copy,
html body .auth-shot-brand-lockup,
html body .auth-shot-logo-mark,
html body .auth-shot-brand-title,
html body .auth-shot-brand-subtitle,
html body .auth-shot-brand-slogan,
html body .auth-shot-lockup-image,
html body .auth-shot-logo-svg,
html body .auth-shot-logo-image {
  display: none !important;
}

/* P.26 隐藏装饰元素（原老 hero 用的额外 CSS 装饰） */
html body .auth-shot-hero::before,
html body .auth-shot-hero::after {
  display: none !important;
  content: none !important;
}

/* P.27 响应式：窄屏（< 880px）改为单列垂直堆叠 */
@media (max-width: 880px) {
  html body .auth-shot-shell {
    grid-template-columns: 1fr !important;
  }
  html body .auth-shot-hero {
    min-height: 360px !important;
  }
  html body .auth-shot-hero-copy {
    padding: 32px 24px 16px !important;
    min-height: auto !important;
  }
  html body .auth-shot-room {
    min-height: 200px !important;
  }
}

/* 2026-05-05: iPhone 类窄屏专项重构——把桌面双栏登录卡转成移动端全屏单卡：
   1) 卡片 100vw + border-radius 0 + 边到边铺满
   2) 去掉会议室海报图（桌面装饰），hero 改纯渐变背景 + 小型品牌行
   3) hero 只占 ~140px，让登录表单成为页面主角 */
@media (max-width: 480px) {
  /* 外层 overlay 取消 padding，让卡片真贴到屏幕边缘 */
  html body .login-overlay.auth-spotlight {
    padding: 0 !important;
    align-items: stretch !important;
  }
  /* 卡片本身：边到边铺满 + 圆角抹平 + 背景全黑/全白
     2026-05-10：min-height 双声明（100vh fallback + 100svh modern）。
       根因：手机端聚焦输入框 → 软键盘弹起 → 100vh 在 Android Chrome 上会
       从「全屏高度」跳到「全屏减键盘」高度（iOS 不会，但收键盘时反向跳一次），
       触发 .auth-shot-card / .auth-shot-shell / .auth-shot-panel 全链 reflow，
       hero 海报图 cover 被重新计算 → 画面整体抖动 + 海报图缩放重绘 → 用户感知"输入时闪屏"。
       100svh = small viewport height，永远等于最小可视高度，软键盘弹/收都不跳。 */
  html body .login-card.auth-login-card.auth-shot-card {
    width: 100vw !important;
    max-width: 100vw !important;
    min-height: 100vh !important;
    min-height: 100svh !important;
    border-radius: 0 !important;
    border: none !important;
    box-shadow: none !important;
  }
  /* hero 区：去掉桌面用的会议室海报图，改为简洁纯渐变
     注意：必须用 html[data-theme] 前缀才能覆盖 line 10741-10748 的高特异性规则 */
  html[data-theme] body .auth-shot-hero {
    min-height: 140px !important;
    max-height: 160px !important;
    background-image: linear-gradient(160deg,
      rgba(99, 102, 241, 0.18) 0%,
      rgba(15, 23, 42, 0.0) 70%) !important;
    background-color: transparent !important;
    border-right: none !important;
    border-bottom: 1px solid rgba(99, 102, 241, 0.10) !important;
  }
  html body .auth-shot-hero-copy {
    padding: 14px 16px 12px !important;
    gap: 4px !important;
  }
  html body .auth-shot-room,
  html body .auth-shot-room-poster {
    display: none !important;
  }
  /* shell 单列堆叠（880px query 已设过，这里强化一下）
     2026-05-10：min-height 双声明（100vh fallback + 100svh modern），同上原因。 */
  html body .auth-shot-shell {
    grid-template-columns: 1fr !important;
    min-height: 100vh !important;
    min-height: 100svh !important;
  }
  /* 登录主体（右侧 panel）padding 收紧 */
  html body .auth-shot-panel,
  html body .auth-shot-card-body {
    padding: 18px 18px 24px !important;
  }
  /* panel 用 flex column，让登录表单贴 hero 下、SSO 按钮锚底——
     消除中间和底部的空白带（这是上下没"铺满"的视觉根因）
     2026-05-10：min-height 双声明（100vh fallback + 100svh modern），同上原因。 */
  html body .auth-shot-panel {
    display: flex !important;
    flex-direction: column !important;
    min-height: calc(100vh - 160px) !important;
    min-height: calc(100svh - 160px) !important;
    box-sizing: border-box !important;
  }
  html body .auth-shot-panel-body {
    flex: 1 1 auto !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: space-between !important;
    gap: 16px !important;
    margin: 0 !important;
  }
  html body .auth-shot-panel-primary,
  html body .auth-shot-panel-secondary {
    flex: 0 0 auto !important;
  }
}

/* ════════════════════════════════════════════════════════════════════
   P.28 修复登录↔创建团队↔加入团队切换闪屏
   ────────────────────────────────────────────────────────────────────
   问题：state.authView 切换会让 render() 整个重写 .login-overlay innerHTML，
   登录卡 width 1112px → 注册卡 860px 突变 + 内部 DOM 全替换 → 视觉闪屏。
   修复：用 View Transitions API 给关键元素独立 view-transition-name，
   让浏览器对该元素的尺寸/位置做平滑 morph，内部内容做交叉淡入。
   ════════════════════════════════════════════════════════════════════ */
@supports (view-transition-name: none) {
  /* 1. 登录遮罩层保持不变（避免被 root 接管做 fade）*/
  html body .login-overlay {
    view-transition-name: auth-overlay;
  }
  /* overlay 自己的过渡：不动（瞬时），不参与 fade */
  ::view-transition-group(auth-overlay) {
    animation-duration: 0ms;
  }
  ::view-transition-old(auth-overlay),
  ::view-transition-new(auth-overlay) {
    animation: none !important;
  }

  /* 2. 登录卡：独立 morph，宽高位置平滑插值
     2026-05-04：把总时长从 320ms 收到 220ms、new 延迟 80→40ms、
     new 动画 220→160ms，整体感觉更跟手；并让 old/new 重叠 100ms 避免断档感 */
  html body .auth-shot-card {
    view-transition-name: auth-card;
  }
  ::view-transition-group(auth-card) {
    animation-duration: 220ms;
    animation-timing-function: cubic-bezier(0.32, 0.72, 0.24, 1);
  }
  ::view-transition-old(auth-card) {
    animation-duration: 140ms;
    animation-timing-function: ease-out;
  }
  ::view-transition-new(auth-card) {
    animation-duration: 160ms;
    animation-delay: 40ms;
    animation-timing-function: ease-in;
  }
}

/* ════════════════════════════════════════════════════════════════════
   v233 — 登录页切视图流畅化（解决"每次切视图都像重刷页面"）
   ────────────────────────────────────────────────────────────────────
   问题根因（2026-05-04）：
     1. v230 的 .auth-shot-card rise-in 480ms 入场动画每次 render 都会重播，
        切 login → register 时卡片先"塌下去"再"弹起来"，像刷新。
     2. 登录卡 1112px vs 注册卡 860px 差距 252px，morph 抖动大。
     3. 首次入场靠 .login-overlay 自身的淡入遮罩已足够，card 不需要单独弹起。
   修复：
     A. 完全移除 .auth-shot-card 的 rise-in（统一由 view-transition 控视图切换）
     B. register/invite/forgot 卡宽从 860 → 1000，和登录卡 1112 更接近，
        morph 幅度从 252 缩到 112，视觉更连贯
     C. data-rerendering 也再加一层兜底，对话框/欢迎卡等其它 overlay 不重播
   ════════════════════════════════════════════════════════════════════ */

/* A. 彻底关掉 .auth-shot-card 的一次性入场动画；由 .login-overlay 淡入负责首帧 */
html body .login-card.auth-login-card.auth-shot-card,
html body .auth-shot-card {
  animation: none !important;
  animation-delay: 0ms !important;
}

/* C. 其它对话框在 rerender 时也不重播入场动画（onboarding modal / boss welcome） */
html[data-rerendering] body .modal-card.onboarding-modal-card,
html[data-rerendering] body .onboarding-modal-card,
html[data-rerendering] body .boss-welcome-overlay .boss-welcome-card,
html[data-rerendering] body .login-overlay {
  animation: none !important;
}

/* 统一注册/邀请/忘记页卡片宽度到 1000px（更接近登录页 1112），
   减小 view-transition morph 时的横向抖动幅度 */
html body .login-card.auth-login-card.auth-shot-card.auth-shot-card--register {
  width: min(1000px, calc(100vw - 48px)) !important;
  max-width: 1000px !important;
}
@media (max-width: 720px) {
  html body .login-card.auth-login-card.auth-shot-card.auth-shot-card--register {
    width: min(100%, calc(100vw - 26px)) !important;
  }
}

/* 让登录页内部的字段容器高度变化也有轻微过渡，避免"tab 切换密码模式"时表单
   区域硬跳。不触发 layout trashing：只对 min-height 过渡 */
html body .auth-shot-form-main,
html body .auth-reg-form {
  transition: min-height 200ms cubic-bezier(0.32, 0.72, 0, 1);
}

/* ════════════════════════════════════════════════════════════════════
   v233-e — 修复 注册/加入团队/忘记密码 表单的"提交按钮贴底"问题
   ────────────────────────────────────────────────────────────────────
   原因：base.css 的 .auth-reg-form 设了 justify-content:center，当
   字段总高 ≥ body 可用高度时，flex center 会从顶部溢出，导致
   padding-bottom 被挤掉，按钮贴到卡片底边。
   修复思路：
     1. 改为 justify-content:flex-start（从顶部排列，自然留下底部间距）
     2. padding-top 收紧到 14px（原 28px），padding-bottom 24px；整体
        字段、按钮一起上移约 20px，视觉更集中（2026-05-04 用户要求）
     3. 给提交按钮一个 margin-top:auto，让它与上方字段自然分离
     4. body 不滚动（overflow:visible）；卡片本身高度由内容撑开
     5. 顶部 header 的上下 padding 也收紧，再上移 ~10px
   ════════════════════════════════════════════════════════════════════ */
html body .auth-reg-form {
  justify-content: flex-start !important;
  padding-top: 14px !important;
  padding-bottom: 24px !important;
}
html body .auth-reg-form .auth-shot-submit,
html body .auth-reg-form .auth-reg-submit {
  margin-top: auto !important;
}
html body .auth-reg-body {
  overflow: visible !important;
  /* 让卡片完整显示全部字段，不再滚动 */
}
/* 顶部 header（含标题 + 步骤条）收紧，整体卡片内容再往上挪 ~8px */
html body .auth-reg-header {
  padding: 12px 28px 14px !important;
}
html body .auth-reg-steps {
  padding: 6px 8px 0 !important;
}
/* 移动小屏：侧栏隐藏后表单独占整宽，padding 适度收紧以腾出更多字段高度 */
@media (max-width: 720px) {
  html body .auth-reg-form {
    padding: 14px 20px 24px !important;
  }
  html body .auth-reg-header {
    padding: 10px 18px 12px !important;
  }
}

/* ════════════════════════════════════════════════════════════════════
   v234-b — 低高桌面视口下，工作台首页"今日推进台/卡住的事"卡片底部 CTA
            ("查看收信箱"/"处理待安排" 等) 不再吃掉首屏底边。
   ────────────────────────────────────────────────────────────────────
   原始 BUG：QA 2026-05-23 visual-audit — 助理工作台首页右栏底部
            "查看收信箱"按钮 bottom = 778px > 1366×768 视口高 768px
            (即被截 10px)。原因是 .app-shell min-height:860 + 卡片
            padding 偏大 + 5 张概览卡的内边距叠加导致首屏第一屏看不到
            底部主要 CTA。整页虽然可滚动，但首屏 UX 差。
   修复策略（不动其他视口）：
     · 把 .app-shell min-height: 860 → 100vh，避免在 768px 视口
       仍然强制 860px 内容（多出 92px 全部出现在第一屏底部之外）
     · 在 (max-height: 820px) 媒体下，把概览卡片内边距和 cockpit
       推进台卡片的内边距各压一档；预留更多空间给底部 CTA
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell {
  min-height: 100vh !important;
}
@media (min-width: 721px) and (max-height: 820px) {
  html body .app-shell { min-height: 100dvh !important; }
  html body .assistant-block { padding: 12px 14px !important; }
  html body .assistant-list-item { padding: 6px 10px !important; }
  html body .app-shell .cockpit-item { padding: 10px 14px !important; gap: 12px !important; grid-template-columns: 40px 1fr !important; }
  html body .app-shell .cockpit-icon { width: 40px !important; height: 40px !important; border-radius: 12px !important; }
  html body .app-shell .cockpit-icon svg { width: 22px !important; height: 22px !important; }
  html body .cockpit-item .cockpit-text { margin-top: 2px !important; line-height: 1.4 !important; }
  html body .cockpit-item .cockpit-head { margin-bottom: 0 !important; }
  html body .assistant-block .assistant-list { gap: 4px !important; }
  html body .assistant-block .split-actions { margin-top: 6px !important; }
  /* 概览 5 张 stat-card 压一档 */
  html body .stat-card { min-height: 118px !important; padding: 10px 16px 8px !important; }
  html body .stat-card .stat-card-note { margin: 4px 0 0 !important; }
  html body .stat-card .stat-card-subnote { margin-top: 2px !important; }
  html body .stat-card-value { font-size: 30px !important; line-height: 1.15 !important; }
}

/* ════════════════════════════════════════════════════════════════════
   v234-a — 低高桌面视口（≤800px 高 + ≥721px 宽）紧凑模式
   ────────────────────────────────────────────────────────────────────
   原始 BUG：QA 2026-05-23 — 1366×768 / 1280×720 笔记本桌面分辨率下，
            "创建团队 / 加入团队"卡片的提交按钮（"下一步 / 申请加入"）
            底部 y=774px 超出视口（768/720），用户必须滚动才能点。
   spotlight 原本走 align-items:center + 非滚动，所以会被裁掉。
   修复思路（最小侵入）：
     1. 给 spotlight 加 overflow-y:auto + align-items:flex-start 作为
        最终安全网（卡片再高也能滚动到，永远点得到提交按钮）
     2. 同步把 header/stepper/sidebar/form 的内边距与字段尺寸压一档；
        实测 1366×768 下卡片高度从 666 → ~570px，不滚也能看全
     3. 仅作用于 ≤900px 高的桌面视口，>900 高桌面 / 移动端布局完全不变
        2026-05-24：从 ≤800 提到 ≤900，覆盖 1366×768 / 1366×800 / 1440×900 等常见笔记本视口
   ════════════════════════════════════════════════════════════════════ */
@media (min-width: 721px) and (max-height: 900px) {
  html body .login-overlay.auth-spotlight {
    align-items: flex-start !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch !important;
    padding-top: 16px !important;
    padding-bottom: 24px !important;
  }
  /* 2026-05-24：让注册/邀请/忘记卡在 ≤800 高视口下「跟内容走」，
     不再被父级 max-height: 720px 卡死、不再开启内部滚动；
     页面级溢出由 .auth-spotlight 自己接住（前面已加 overflow-y:auto + flex-start）。 */
  html body .login-card.auth-login-card.auth-shot-card.auth-shot-card--register {
    min-height: auto !important;
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
    margin: 0 auto !important;
  }
  /* 内层 form 也不再做内部滚动，自然撑开 */
  html body .auth-shot-card.auth-shot-card--register {
    overflow-y: visible !important;
    overflow-x: visible !important;
  }
  html body .auth-reg-header {
    padding: 8px 24px 10px !important;
  }
  html body .auth-reg-steps {
    padding: 4px 8px 0 !important;
  }
  html body .auth-reg-step-num {
    width: 26px !important;
    height: 26px !important;
    font-size: 13px !important;
  }
  html body .auth-reg-step-line {
    width: 24px !important;
    margin: 0 6px !important;
  }
  html body .auth-reg-step-label {
    font-size: 13px !important;
  }
  html body .auth-reg-header-title h2 {
    font-size: 18px !important;
  }
  html body .auth-reg-header-title p {
    font-size: 12px !important;
    margin: 2px 0 0 !important;
  }
  html body .auth-reg-sidebar {
    padding: 14px 16px !important;
    gap: 8px !important;
  }
  html body .auth-reg-icon {
    width: 80px !important;
    height: 80px !important;
  }
  html body .auth-reg-icon svg {
    width: 48px !important;
    height: 48px !important;
  }
  html body .auth-reg-info {
    gap: 6px !important;
  }
  html body .auth-reg-info-title {
    font-size: 15px !important;
  }
  html body .auth-reg-info-desc {
    font-size: 12px !important;
    line-height: 1.5 !important;
  }
  html body .auth-reg-form {
    padding: 8px 28px 14px !important;
    gap: 8px !important;
  }
  html body .auth-reg-field-group {
    gap: 4px !important;
  }
  html body .auth-reg-form .auth-shot-field {
    min-height: 38px !important;
  }
  html body .auth-reg-form .auth-shot-field input {
    height: 38px !important;
  }
  html body .auth-reg-form .auth-shot-submit.auth-reg-submit {
    min-height: 42px !important;
    height: 42px !important;
    margin-top: 4px !important;
  }
}

/* ════════════════════════════════════════════════════════════════════
   v233-d — 协议未勾选改为"pop tip 气泡"（吸附在复选框上方，带三角指向）
   ────────────────────────────────────────────────────────────────────
   设计要点：
     - 位置：absolute，复选框正上方，三角指向复选框（指向性教学）
     - 外观：深色玻璃胶囊 + 白字 + 轻微 scale-pop 入场
     - 时长：2 秒（由 JS 定时器控制）
     - 消失：2s 到期 或 用户勾选时立即
   ════════════════════════════════════════════════════════════════════ */
@keyframes auth-pop-tip-in {
  0%   { opacity: 0; transform: translateY(6px) scale(0.85); }
  55%  { opacity: 1; transform: translateY(-2px) scale(1.06); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes auth-pop-tip-bounce {
  /* 轻微上下浮动：3 段循环，让气泡"活着" */
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-3px); }
}

/* 定位锚点：agreement stack 需要 relative，让 pop tip 绝对定位参照它 */
html body .auth-shot-agreement-stack {
  position: relative;
}

html body .auth-shot-pop-tip {
  position: absolute;
  /* 吸附在复选框正上方（stack 顶边往上 12px） */
  bottom: calc(100% + 10px);
  left: 0;
  z-index: 6;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px 8px 12px;
  border-radius: 12px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1.3;
  color: #FFFFFF;
  background: linear-gradient(180deg, #1F2937 0%, #0F172A 100%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow:
    0 10px 28px rgba(15, 23, 42, 0.38),
    0 4px 10px rgba(15, 23, 42, 0.22),
    inset 0 1px 0 rgba(255, 255, 255, 0.06);
  white-space: nowrap;
  pointer-events: none;
  animation:
    auth-pop-tip-in 320ms cubic-bezier(0.18, 1.3, 0.42, 1.05) both,
    auth-pop-tip-bounce 1.4s ease-in-out 320ms infinite;
  transform-origin: left bottom;
  will-change: transform, opacity;
}
html body .auth-shot-pop-tip-arrow-up {
  display: inline-block;
  color: #FBBF24;
  font-weight: 800;
  font-size: 14px;
  line-height: 1;
  transform: translateY(-1px);
}
html body .auth-shot-pop-tip-text {
  color: #F8FAFC;
}
/* 三角形尾巴：指向下方的复选框 */
html body .auth-shot-pop-tip-tail {
  position: absolute;
  top: 100%;
  left: 20px;  /* 对齐复选框中心偏左 */
  width: 12px;
  height: 12px;
  background: #0F172A;
  border-right: 1px solid rgba(255, 255, 255, 0.08);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  transform: translateY(-62%) rotate(45deg);
  box-shadow: 2px 2px 6px rgba(15, 23, 42, 0.15);
}

/* 亮色主题下保持深色气泡（深色 pop tip 在白背景最醒目） */
html[data-theme="light"] body .auth-shot-pop-tip {
  background: linear-gradient(180deg, #1F2937 0%, #0F172A 100%);
  color: #FFFFFF;
  box-shadow:
    0 10px 28px rgba(15, 23, 42, 0.22),
    0 4px 10px rgba(15, 23, 42, 0.12);
}
html[data-theme="light"] body .auth-shot-pop-tip-tail {
  background: #0F172A;
  box-shadow: 2px 2px 6px rgba(15, 23, 42, 0.08);
}

/* 复选框被"呼吸脉冲"：提示气泡出现时轻轻脉动描边，吸引视线到目标位置 */
@keyframes auth-agreement-target-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(251, 191, 36, 0); }
  50%     { box-shadow: 0 0 0 4px rgba(251, 191, 36, 0.18); }
}
html body .auth-shot-agreement-stack.is-popping .auth-shot-agreement input[type="checkbox"] {
  animation: auth-agreement-target-pulse 1.4s ease-in-out infinite;
  border-color: rgba(251, 191, 36, 0.55) !important;
}

@media (prefers-reduced-motion: reduce) {
  html body .auth-shot-pop-tip,
  html body .auth-shot-agreement-stack.is-popping .auth-shot-agreement input[type="checkbox"] {
    animation: none !important;
  }
}

/* reduced-motion: 关闭 view transition 自定义动画 */
@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(auth-overlay),
  ::view-transition-group(auth-card),
  ::view-transition-old(auth-card),
  ::view-transition-new(auth-card) {
    animation-duration: 0ms !important;
    animation-delay: 0ms !important;
  }
}

/* ════════════════════════════════════════════════════════════════════
   P.35 移动端日期翻页按钮：从「上一段/下一段」3 字 → 单字符箭头（P2-7）
   ────────────────────────────────────────────────────────────────────
   - 箭头 chip 固定 36px 宽，给中间日期更多空间
   - 字体放大到 22px 让箭头更易点
   - 触摸目标保持 ≥ 36px 宽 + 高（WCAG 2.5.5）
   ════════════════════════════════════════════════════════════════════ */
html body .mobile-date-compact {
  grid-template-columns: 36px minmax(0, 1fr) 36px !important;
  gap: 8px !important;
}

html body .mobile-date-chip.mobile-date-nav {
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 0 !important;
  width: 36px !important;
  min-width: 36px !important;
}

html body .mobile-date-chip.mobile-date-nav > span {
  font-size: 22px !important;
  font-weight: 600 !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  display: inline-block !important;
  transform: translateY(-1px);
}

/* ════════════════════════════════════════════════════════════════════
   P.34 priority-p1 优先级徽章对比度（P1-11 / Lighthouse fail）
   ────────────────────────────────────────────────────────────────────
   实测 dark 模式下 color 被 var(--text-sub)=#cbd5e1 覆盖，导致橙底+浅灰字
   对比度 ~1.6:1，达不到 WCAG。强制 color #FFFFFF 并稍加深 bg 到 #DC6803，
   bg+text 对比 ~5:1（AA），large text 适用
   ════════════════════════════════════════════════════════════════════ */
html body .app-shell:not(._):not(._):not(._) span.v5-hero-priority.priority-p1,
html body .app-shell:not(._):not(._):not(._) .stats-row .stat-card span.v5-hero-priority.priority-p1,
html body .app-shell:not(._):not(._):not(._) .v5-hero-card span.v5-hero-priority.priority-p1 {
  background: #DC6803 !important;
  background-color: #DC6803 !important;
  color: #FFFFFF !important;
  font-weight: 700 !important;
  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.15) !important;
  box-shadow: 0 2px 6px rgba(220, 104, 3, 0.35) !important;
}

html[data-theme="dark"] body .app-shell:not(._):not(._):not(._) span.v5-hero-priority.priority-p1,
html[data-theme="dark"] body .app-shell:not(._):not(._):not(._) .stats-row .stat-card span.v5-hero-priority.priority-p1,
html[data-theme="dark"] body .app-shell:not(._):not(._):not(._) .v5-hero-card span.v5-hero-priority.priority-p1 {
  background: #F59E0B !important;
  background-color: #F59E0B !important;
  color: #1F2937 !important;
  font-weight: 800 !important;
  text-shadow: none !important;
  box-shadow: 0 2px 6px rgba(245, 158, 11, 0.45) !important;
}

/* ════════════════════════════════════════════════════════════════════
   P.33 待办页右栏：在「详情」与「新建表单」之间插分隔栏（P1-5）
   ────────────────────────────────────────────────────────────────────
   原状：选中待办时，详情和新建表单同屏；用户分不清要不要清空表单
   现状：插「＋ 新增另一条待办」分隔栏，明确边界
   ════════════════════════════════════════════════════════════════════ */
html body .detail-form-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 24px 0 16px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-soft);
  letter-spacing: -0.01em;
}

html body .detail-form-divider::before,
html body .detail-form-divider::after {
  content: "";
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--line, rgba(0, 0, 0, 0.08)) 30%, var(--line, rgba(0, 0, 0, 0.08)) 70%, transparent);
}

html body .detail-form-divider span {
  flex: 0 0 auto;
  padding: 4px 12px;
  background: var(--brand-soft, rgba(99, 102, 241, 0.08));
  color: var(--brand, rgb(99, 102, 241));
  border-radius: 12px;
  white-space: nowrap;
}

html[data-theme="dark"] body .detail-form-divider {
  color: var(--text-soft, rgba(148, 163, 184, 0.7));
}

html[data-theme="dark"] body .detail-form-divider::before,
html[data-theme="dark"] body .detail-form-divider::after {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.10) 30%, rgba(255, 255, 255, 0.10) 70%, transparent);
}

/* ════════════════════════════════════════════════════════════════════
   v233-f — 设置菜单（nav-settings-menu）外边框弱化 + 内边距收紧
   ────────────────────────────────────────────────────────────────────
   2026-05-04 用户反馈：深色主题下菜单面板右/上/下侧的浅色描边过亮，
   且面板内部 padding 让 row 距离边框留白太多。
   修复：
     1. 深色主题边框透明度 0.14 → 0.04（接近不可见）
     2. 容器 padding 6 → 2px，让 row 几乎贴住边框
     3. 容器 width 260 → 224px，整体宽度收窄，避免 row 内部留白过多
     4. row 内部水平 padding 12 → 8px，icon 和 chevron 更靠近边框
   ════════════════════════════════════════════════════════════════════ */
html[data-theme="dark"] body .app-shell .nav-settings-menu {
  border-color: rgba(148, 163, 184, 0.04) !important;
}
html body .app-shell:not(.mobile-shell) .nav-settings-menu {
  min-width: 216px !important;
  width: 216px !important;
  padding: 0 !important;
  /* 2026-05-04：宽度收紧后，base.css 的 left:0;right:0 让 menu 靠 sidebar 左对齐
     而不是和"设置"按钮居中。这里改为水平居中：left:50% + translateX(-50%) */
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) !important;
}
/* 2026-05-04：主题切换 segmented 的"跟随/浅色/深色"三项必须均分填满宽度，
   否则 width 收紧后最后一项（深色）会溢出到 menu 外面被截断。*/
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme-segmented {
  width: 100% !important;
  box-sizing: border-box !important;
}
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme-segmented > * {
  flex: 1 1 0 !important;
  min-width: 0 !important;
}
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu > .nav-settings-actions > .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-actions .nav-settings-row {
  padding: 5px 6px !important;
  gap: 8px !important;
  grid-template-columns: 32px minmax(0, 1fr) 12px !important;
}
/* icon 容器 40 → 32 (svg 18 → 16)，节省横向空间让面板更窄 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > [class*="icon"]:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-of-type,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > .nav-settings-row-icon {
  width: 32px !important;
  height: 32px !important;
  padding: 7px !important;
  border-radius: 9px !important;
}
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon > svg,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row .nav-settings-row-icon > svg {
  width: 16px !important;
  height: 16px !important;
}
/* divider 左右缩进 14 → 4 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-divider {
  margin: 2px 4px !important;
}
/* 主题切换 segmented 容器贴边 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme {
  padding: 2px 6px 2px !important;
}
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme-segmented > * {
  padding: 4px 6px !important;
  font-size: 11.5px !important;
  min-height: 24px !important;
}

/* ════════════════════════════════════════════════════════════════════
   v233-g — 会议详情 header 左侧文本「孤字换行」修复
   ────────────────────────────────────────────────────────────────────
   2026-05-04 用户反馈：事件详情 drawer 顶部的时间·地点行出现"总部 4F
   视频会议室"的"室"被单独换到下一行，排版难看。
   原因：.detail-header 是 flex，左侧包住 h4 + p 的 <div> 没有
   flex:1 / min-width:0，被右侧关闭按钮 + gap 挤压到刚好少 1 个字位，
   于是最后一个汉字孤字换行。
   修复：
     1. 左 div flex:1 + min-width:0 占满剩余空间
     2. <p> 加 overflow-wrap:anywhere 允许更自然的中英混排换行
     3. text-wrap:balance（Chrome 114+）让行间长度平均，避免孤字
   ════════════════════════════════════════════════════════════════════ */
html body .detail-drawer .detail-header > div:first-child {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
html body .detail-drawer .detail-header > div:first-child > p {
  overflow-wrap: anywhere !important;
  word-break: break-word !important;
  text-wrap: balance !important;
}

/* ════════════════════════════════════════════════════════════════════
   v233-h — toast 在深色主题下不可读修复
   ────────────────────────────────────────────────────────────────────
   2026-05-04 用户反馈：深色主题下 toast 弹窗（如「当前没有可清空的智能对话
   记录」）几乎看不清文字。
   原因：v5-theme.css 4682 行 `.toast { background: var(--v4-ink-1); color: #f8fafc; }`
   在浅色主题下 --v4-ink-1 是深色 → 深底+浅字 ✓；
   但深色主题下 --v4-ink-1 翻转为浅色 → 浅底+浅字 ✗（对比度极低）。
   修复：深色主题下强制 toast 用 slate-900 深底 + indigo 边框 + 浅字。
   ════════════════════════════════════════════════════════════════════ */
html[data-theme="dark"] body .toast,
html[data-theme="dark"] body .snackbar,
html[data-theme="dark"] body .toast-message {
  background: rgba(15, 23, 42, 0.96) !important;
  color: #f8fafc !important;
  border: 1px solid rgba(148, 163, 184, 0.18) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.06) inset,
    0 16px 40px -6px rgba(0, 0, 0, 0.55) !important;
}

html[data-theme="dark"] body .detail-form-divider span {
  background: rgba(129, 140, 248, 0.16);
  color: rgb(199, 210, 254);
}

/* ════════════════════════════════════════════════════════════════════
   P.32 周历视图：列等高 + 「添加批注」按钮不换行（P1-1 + P1-2）
   ────────────────────────────────────────────────────────────────────
   - .week-grid 是 grid 7 列：让所有 .week-column 通过 align-items:stretch
     强制等高（默认 grid 已 stretch，但被某些 padding 覆盖）
   - .week-chip 内的「添加批注」chip nowrap，避免"添加批 / 注"换行
   - 老板端 week 视图列宽窄，chip 缩字号 + 减少 padding
   ════════════════════════════════════════════════════════════════════ */
html body .week-grid {
  align-items: stretch !important;
}

html body .week-column {
  display: flex !important;
  flex-direction: column !important;
  height: 100% !important;
  min-height: 260px !important;
}

html body .week-column .week-column-list {
  flex: 1 1 auto !important;
}

/* 「添加批注」chip 紧凑化 + nowrap */
html body .week-chip .event-comment-chip,
html body .week-column .event-comment-chip {
  white-space: nowrap !important;
  font-size: 11px !important;
  padding: 3px 8px !important;
  letter-spacing: -0.01em !important;
}

html body .week-chip .mini-card-actions {
  display: flex !important;
  flex-wrap: nowrap !important;
  justify-content: flex-start !important;
}

/* ════════════════════════════════════════════════════════════════════
   P.31 移动端底部 nav 文字 nowrap + FAB 上移防遮挡（P1-3 + P1-4）
   ────────────────────────────────────────────────────────────────────
   - 底部 nav 文字强制不换行（label 都已缩到 2-3 字，加保险）
   - FAB 上移让它不与底部 tab 图标重叠
   - "云端已连接" chip 移到 FAB 上方避免视觉拥挤
   ════════════════════════════════════════════════════════════════════ */
html body .mobile-nav-label,
html body .mobile-nav-item .mobile-nav-label,
html body .app-shell.mobile-shell .mobile-nav-label,
html body > #app > .mobile-bottom-nav .mobile-nav-label {
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
  min-width: 0 !important;
}

html body .mobile-nav-item-main {
  min-width: 0 !important;
}

/* FAB 上移：在原有 14px / 16px 基础上 +20px，不再压住底部 tab */
html body .mobile-fab,
html body .mobile-fab.app-primary-fab {
  bottom: calc(var(--mobile-nav-height) + 34px + var(--mobile-safe-bottom)) !important;
}

@media (max-width: 520px) {
  html body .mobile-fab,
  html body .mobile-fab.app-primary-fab {
    bottom: calc(var(--mobile-nav-height) + 30px + var(--mobile-safe-bottom)) !important;
  }
}

/* "云端已连接" chip 移到 FAB 上方，避免与 FAB 抢右下角 */
html body .cloud-status-chip,
html body .connection-chip,
html body [data-role="cloud-status"] {
  bottom: calc(var(--mobile-nav-height) + 90px + var(--mobile-safe-bottom)) !important;
}

/* ════════════════════════════════════════════════════════════════════
   P.30 「老板指令」卡片右下角 ··· (更多操作) 按钮：从"实心卡片感"
   降级为"次级图标按钮"，hover 才点亮 indigo
   ────────────────────────────────────────────────────────────────────
   原状：summary 带 ghost-button 类继承了 border + bg → 视觉重量等同主按钮
   现状：透明无 border，hover indigo 微亮，open 时 indigo 提示状态
   ════════════════════════════════════════════════════════════════════ */
html body .command-more-summary,
html body .ghost-button.command-more-summary,
html body summary.command-more-summary {
  border: none !important;
  border-width: 0 !important;
  border-style: none !important;
  border-color: transparent !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
  min-width: 32px !important;
  height: 32px !important;
  padding: 0 8px !important;
  color: rgba(148, 163, 184, 0.7) !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: 2px !important;
  line-height: 1 !important;
  border-radius: 10px !important;
  box-shadow: none !important;
  transition: background 160ms ease, color 160ms ease, transform 160ms ease !important;
}

html body .command-more-summary:hover,
html body .ghost-button.command-more-summary:hover,
html body summary.command-more-summary:hover {
  background: rgba(99, 102, 241, 0.10) !important;
  background-color: rgba(99, 102, 241, 0.10) !important;
  color: rgb(99, 102, 241) !important;
  transform: scale(1.03) !important;
  box-shadow: none !important;
  border-color: transparent !important;
}

html body .command-more-summary:active,
html body .ghost-button.command-more-summary:active {
  transform: scale(0.96) !important;
}

html body .command-more-actions[open] > .command-more-summary,
html body .command-more-actions[open] > .ghost-button.command-more-summary {
  background: rgba(99, 102, 241, 0.14) !important;
  background-color: rgba(99, 102, 241, 0.14) !important;
  color: rgb(99, 102, 241) !important;
  border-color: transparent !important;
}

/* dark 主题：indigo 透光更柔 */
html[data-theme="dark"] body .command-more-summary,
html[data-theme="dark"] body .ghost-button.command-more-summary,
html[data-theme="dark"] body summary.command-more-summary {
  color: rgba(165, 180, 252, 0.55) !important;
  background: transparent !important;
  background-color: transparent !important;
  border-color: transparent !important;
}

html[data-theme="dark"] body .command-more-summary:hover,
html[data-theme="dark"] body .ghost-button.command-more-summary:hover,
html[data-theme="dark"] body summary.command-more-summary:hover {
  background: rgba(129, 140, 248, 0.16) !important;
  background-color: rgba(129, 140, 248, 0.16) !important;
  color: rgb(199, 210, 254) !important;
  border-color: transparent !important;
}

html[data-theme="dark"] body .command-more-actions[open] > .command-more-summary,
html[data-theme="dark"] body .command-more-actions[open] > .ghost-button.command-more-summary {
  background: rgba(129, 140, 248, 0.22) !important;
  background-color: rgba(129, 140, 248, 0.22) !important;
  color: rgb(224, 231, 255) !important;
  border-color: transparent !important;
}

/* 菜单分隔线（"状态切换" / "实用工具"分组） */
html body .command-more-divider {
  height: 1px;
  background: rgba(0, 0, 0, 0.06);
  margin: 4px -2px;
  border-radius: 1px;
  pointer-events: none;
}

html[data-theme="dark"] body .command-more-divider {
  background: rgba(255, 255, 255, 0.08);
}

/* ════════════════════════════════════════════════════════════════════
   P.29 nav-settings-row：箭头紧贴文字右侧（用户反馈"箭头到字的后面"）
   ────────────────────────────────────────────────────────────────────
   原 grid: 38px | 1fr (copy 撑满整行) | 16px (chevron 被推到最右)
   新 grid: 38px | auto (copy 按内容宽度) | auto (chevron 紧贴 copy) | 1fr (剩余空白)
   效果：箭头紧跟在标题/描述末尾，整行点击区域不变（剩余空白仍可点）
   ════════════════════════════════════════════════════════════════════ */
/* v23-fix: 4 列 (icon + auto + auto + 1fr) 改为 2 列 (icon + 1fr)，
   chevron 已隐藏，无需额外槽位，避免 row 右侧出现空白槽位 */
html body .app-shell .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu > .nav-settings-actions > .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-actions .nav-settings-row {
  grid-template-columns: 38px minmax(0, 1fr) !important;
}

/* v23-fix: copy 块占满第二列（文字左对齐填充），row 整体占满 actions 容器，
   消除 menu 右侧的大片留白 */
html body .app-shell .nav-settings-row-copy,
html body .app-shell:not(.mobile-shell) .nav-settings-row-copy {
  flex: 1 1 auto !important;
  justify-self: stretch !important;
  min-width: 0 !important;
  text-align: left !important;
}

/* chevron 紧贴 copy 右侧（margin-left 8px 间距，移除原 margin-right）*/
html body .app-shell .nav-settings-row > svg:last-of-type,
html body .app-shell:not(.mobile-shell) .nav-settings-row > svg:last-of-type,
html body .app-shell .nav-settings-chevron,
html body .app-shell:not(.mobile-shell) .nav-settings-chevron {
  margin-left: 8px !important;
  margin-right: 0 !important;
  justify-self: start !important;
}

/* hover 微动画：原 translateX(2-3px) 仍生效，但起点紧贴文字 */

/* ── N. reduced-motion 兜底（关闭装饰动画，保留功能反馈） ── */
@media (prefers-reduced-motion: reduce) {
  html body .app-shell:not(.mobile-shell) .v5-hero-glyph,
  html body .app-shell:not(.mobile-shell) .skeleton,
  html body .app-shell:not(.mobile-shell) [data-skeleton="true"] {
    animation: none !important;
  }
  html body .app-shell:not(.mobile-shell) .btn-primary::after,
  html body .app-shell:not(.mobile-shell) .primary-btn::after {
    display: none !important;
  }
  html body .app-shell:not(.mobile-shell) .stat-card .stat-card-number,
  html body .app-shell:not(.mobile-shell) .stat-card strong:first-of-type {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  html body .app-shell:not(.mobile-shell) main.page-body > .panel,
  html body .app-shell:not(.mobile-shell) main.page-body > .v5-panel {
    animation: none !important;
  }
  /* v230 装饰动画兜底 */
  html body .login-overlay,
  html body .login-card,
  html body .auth-shot-card,
  html body .modal-card.onboarding-modal-card,
  html body .onboarding-modal-card .onb-step-item,
  html body .onb-resume-fab,
  html body .boss-welcome-overlay .boss-welcome-card,
  html body .boss-welcome-progress > span,
  html body .auth-shot-heading .spark,
  html body .auth-shot-submit::after,
  html body .auth-reg-submit::after,
  html body .app-shell .reveal-on-scroll,
  html body .app-shell [data-reveal] {
    animation: none !important;
  }
  html body .auth-shot-tab.active {
    animation: none !important;
  }
}

/* ════════ v23-fix：弹窗内 .action-button 深色主题适配 ════════
   问题根因：base.css:43421 定义了 html[data-theme="dark"] .action-button:not(.secondary):not(.is-annotate)
            为金黄色渐变（rgba(215, 178, 125)..rgba(180, 140, 90)）。
            v5-theme.css:5383 的 indigo 修复规则用了 `body .app-shell` 限定，
            但所有 modal/弹窗都挂在 .app-shell 之外的 .prototype-frame 容器，
            导致弹窗内的 action-button 在深色模式下回退到金黄色，与紫色品牌不符。
   修复：用 :is() 选择器枚举所有弹窗容器，强制覆盖回 indigo 渐变。
   覆盖范围：
   - .modal-backdrop (comment-modal / todo-detail-modal / event-modal / auth-register-success)
   - .modal-card (所有 modal-card 直接子代)
   - .login-overlay / .login-card (登录弹层)
   - .auth-sso-preview-layer (SSO 占位弹窗)
   - .boss-welcome-overlay (老板欢迎页)
   - .onboarding-overlay (引导/庆祝/清单弹窗) */
html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) button.action-button:not(.secondary):not(.is-annotate),
html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) .action-button:not(.secondary):not(.is-annotate) {
  background: linear-gradient(180deg, var(--v4-brand) 0%, var(--v4-brand-hover) 100%) !important;
  border: 1px solid var(--v4-brand-hover) !important;
  color: #ffffff !important;
  text-shadow: none !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.12) inset,
    0 1px 2px rgba(0, 0, 0, 0.32),
    0 6px 16px -4px rgba(79, 70, 229, 0.4) !important;
}

html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) button.action-button:not(.secondary):not(.is-annotate):hover,
html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) .action-button:not(.secondary):not(.is-annotate):hover {
  background: linear-gradient(180deg, var(--v4-brand-hover) 0%, #4338ca 100%) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.16) inset,
    0 2px 4px rgba(0, 0, 0, 0.4),
    0 8px 20px -4px rgba(79, 70, 229, 0.5) !important;
  transform: translateY(-0.5px) !important;
}

/* v23-fix：弹窗内 .action-button.secondary 深色主题适配
   base.css:44323 把 secondary 设成金色 (rgba(215, 178, 125, 0.15))，与紫色主题不协调。
   弹窗范围内强制改为 indigo soft 配色。*/
html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) button.action-button.secondary,
html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) .action-button.secondary {
  background: rgba(129, 140, 248, 0.14) !important;
  color: var(--v4-brand-hover, #818cf8) !important;
  border: 1px solid rgba(129, 140, 248, 0.32) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) button.action-button.secondary:hover,
html[data-theme="dark"] body :is(.modal-backdrop, .modal-card, .login-overlay, .login-card, .auth-sso-preview-layer, .boss-welcome-overlay, .onboarding-overlay) .action-button.secondary:hover {
  background: rgba(129, 140, 248, 0.22) !important;
  border-color: rgba(129, 140, 248, 0.5) !important;
}

/* ════════ v23：待办状态切换下拉菜单 ════════
   "切换状态"按钮改造：点击展开 4 个状态选项的菜单，可直接跳到任一状态。
   trigger 保持 .action-button.secondary 主题色，菜单项继承 modal 容器配色。
   ═══════════════════════════════════════════ */
.todo-status-menu-wrap {
  position: relative;
  display: inline-flex;
}

.todo-status-menu-trigger {
  display: inline-flex !important;
  align-items: center;
  gap: 6px;
}

.todo-status-menu-chevron {
  transition: transform 0.18s ease;
  flex-shrink: 0;
}

.todo-status-menu-trigger.is-open .todo-status-menu-chevron {
  transform: rotate(180deg);
}

.todo-status-menu {
  position: absolute;
  bottom: calc(100% + 6px);
  right: 0;
  min-width: 180px;
  display: flex;
  flex-direction: column;
  padding: 6px;
  border-radius: 14px;
  background: var(--surface, #ffffff);
  border: 1px solid var(--line, rgba(15, 23, 42, 0.08));
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 12px 32px -8px rgba(15, 23, 42, 0.18),
    0 24px 48px -16px rgba(15, 23, 42, 0.12);
  z-index: 30;
  animation: todo-status-menu-fade-in 0.16s ease-out;
}

@keyframes todo-status-menu-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

.todo-status-menu-item {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 0;
  background: transparent;
  cursor: pointer;
  transition: background 0.14s ease;
  text-align: left;
  width: 100%;
}

.todo-status-menu-item:hover {
  background: rgba(79, 70, 229, 0.08);
}

.todo-status-menu-item.is-current {
  background: rgba(79, 70, 229, 0.10);
}

.todo-status-menu-check {
  color: var(--brand-strong, #4f46e5);
  flex-shrink: 0;
}

/* 深色主题 */
html[data-theme="dark"] .todo-status-menu {
  background: rgb(20, 28, 45) !important;
  border-color: rgba(148, 163, 184, 0.18) !important;
  box-shadow:
    0 1px 0 rgba(0, 0, 0, 0.4),
    0 16px 36px -8px rgba(0, 0, 0, 0.6),
    0 32px 64px -16px rgba(0, 0, 0, 0.5) !important;
}

html[data-theme="dark"] .todo-status-menu-item:hover {
  background: rgba(129, 140, 248, 0.12) !important;
}

html[data-theme="dark"] .todo-status-menu-item.is-current {
  background: rgba(129, 140, 248, 0.16) !important;
}

html[data-theme="dark"] .todo-status-menu-check {
  color: rgb(165, 180, 252) !important;
}

/* ════════ 引导浮窗：操作步骤 / 实战小贴士 / 快捷操作 chips ════════
   onboarding 卡片新增 3 个 section（detailsGrid 之后、example 之前）：
   1) .onb-steps：操作步骤清单（① ② ③ 编号 + 步骤文字）
   2) .onb-tips：实战小贴士（黄色 hint，含老司机经验）
   3) .onb-shortcuts：快捷操作 chips（含可选 kbd 键盘快捷键）
   每个 section 都是可选渲染，配套 dark 主题适配。
   ═══════════════════════════════════════════════════════════════════ */

/* 公共节标题样式 */
.onb-steps-title,
.onb-tips-title,
.onb-shortcuts-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  margin: 0 0 8px;
  color: rgba(124, 147, 255, 0.95);
}
.onb-steps-title svg,
.onb-tips-title svg,
.onb-shortcuts-title svg {
  width: 14px;
  height: 14px;
}

/* ── 操作步骤清单 ── */
.onb-steps {
  margin-top: 12px;
  padding: 12px 14px 10px;
  border-radius: 12px;
  background: rgba(99, 102, 241, 0.06);
  border: 1px solid rgba(99, 102, 241, 0.18);
}
.onb-steps-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.onb-step-line {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 12.5px;
  line-height: 1.65;
  color: var(--text-main, #c4cce0);
}
.onb-step-num {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #4f46e5, #7c3aed);
  color: #ffffff;
  font-weight: 700;
  font-size: 11px;
  line-height: 1;
  box-shadow: 0 2px 6px rgba(79, 70, 229, 0.32);
}
.onb-step-text {
  flex: 1;
  min-width: 0;
}

/* ── 实战小贴士 ── */
.onb-tips {
  margin-top: 12px;
  padding: 12px 14px 10px;
  border-radius: 12px;
  background: rgba(245, 158, 11, 0.07);
  border: 1px solid rgba(245, 158, 11, 0.22);
}
.onb-tips-title {
  color: rgba(245, 158, 11, 0.95);
}
.onb-tips-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.onb-tip-item {
  position: relative;
  padding-left: 16px;
  font-size: 12.5px;
  line-height: 1.65;
  color: var(--text-main, #c4cce0);
}
.onb-tip-item::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 9px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(245, 158, 11, 0.85);
}

/* ── 快捷操作 chips ── */
.onb-shortcuts {
  margin-top: 12px;
  padding: 10px 14px 12px;
  border-radius: 12px;
  background: rgba(120, 150, 220, 0.05);
  border: 1px solid rgba(120, 150, 220, 0.15);
}
.onb-shortcuts-title {
  color: rgba(170, 192, 230, 0.95);
}
.onb-shortcuts-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.onb-shortcut-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px 4px 6px;
  border-radius: 999px;
  background: rgba(120, 150, 220, 0.10);
  border: 1px solid rgba(120, 150, 220, 0.22);
  font-size: 11.5px;
  color: var(--text-main, #c4cce0);
  cursor: default;
  transition: background 0.16s ease, border-color 0.16s ease;
}
.onb-shortcut-chip:hover {
  background: rgba(120, 150, 220, 0.18);
  border-color: rgba(120, 150, 220, 0.36);
}
.onb-shortcut-kbd {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 18px;
  padding: 0 5px;
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.18);
  font-family: "SF Mono", Consolas, "Cascadia Code", Monaco, ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: rgba(220, 230, 250, 0.92);
}
.onb-shortcut-label {
  font-weight: 500;
}

/* ── Light 主题适配 ── */
html[data-theme="light"] .onb-steps {
  background: rgba(99, 102, 241, 0.05);
  border-color: rgba(99, 102, 241, 0.16);
}
html[data-theme="light"] .onb-steps-title {
  color: #4f46e5;
}
html[data-theme="light"] .onb-step-line {
  color: #1f2937;
}
html[data-theme="light"] .onb-tips {
  background: rgba(245, 158, 11, 0.06);
  border-color: rgba(245, 158, 11, 0.20);
}
html[data-theme="light"] .onb-tips-title {
  color: #b45309;
}
html[data-theme="light"] .onb-tip-item {
  color: #1f2937;
}
html[data-theme="light"] .onb-tip-item::before {
  background: #d97706;
}
html[data-theme="light"] .onb-shortcuts {
  background: #f4f6fb;
  border-color: #e0e6f0;
}
html[data-theme="light"] .onb-shortcuts-title {
  color: #475569;
}
html[data-theme="light"] .onb-shortcut-chip {
  background: #ffffff;
  border-color: #d8e0ec;
  color: #1f2937;
}
html[data-theme="light"] .onb-shortcut-chip:hover {
  background: #f0f4fa;
  border-color: #c0cee0;
}
html[data-theme="light"] .onb-shortcut-kbd {
  background: #f4f6fb;
  border-color: #d8e0ec;
  color: #4338ca;
}

/* ════════ 最近指令 / 老板指令 卡片"..."更多操作菜单（popover） ════════
   原本用原生 <details><summary>···</summary><div class="command-more-panel">..</div></details>
   ——但 .command-card 上有 content-visibility: auto（base.css:47832）会触发 paint
   containment，把超出卡片边界的子元素裁掉；加上没有任何 popover CSS，展开后菜单
   几乎不可见。这里改造成绝对定位的 popover，浮在 summary 上方，z-index 高，并在
   open 时移除父卡片的 content-visibility 裁切。
   ═══════════════════════════════════════════════════════════════════════ */
.command-more-actions {
  position: relative;
  display: inline-flex;
}

/* 隐藏 <summary> 默认 disclosure marker */
.command-more-summary {
  list-style: none;
  cursor: pointer;
}
.command-more-summary::-webkit-details-marker { display: none; }
.command-more-summary::marker { display: none; content: ""; }

.command-more-panel {
  position: absolute;
  top: auto;
  bottom: calc(100% + 6px);
  right: 0;
  min-width: 180px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px;
  border-radius: 14px;
  background: var(--surface, #ffffff);
  border: 1px solid var(--line, rgba(15, 23, 42, 0.08));
  box-shadow:
    0 1px 0 rgba(15, 23, 42, 0.04),
    0 12px 32px -8px rgba(15, 23, 42, 0.18),
    0 24px 48px -16px rgba(15, 23, 42, 0.12);
  z-index: 40;
  animation: command-more-panel-fade-in 0.16s ease-out;
}

.command-more-actions[open] {
  z-index: 41;
}

/* 展开时解除 scroll 容器裁切，否则菜单会被 .command-list overflow 截断 */
.command-list:has(.command-more-actions[open]),
.assistant-scroll-stack:has(.command-more-actions[open]),
.mailbox-feed:has(.command-more-actions[open]),
.panel-body:has(.command-more-actions[open]),
.assistant-block:has(.command-more-actions[open]) {
  overflow: visible !important;
}

.command-list:has(.command-more-actions[open]) {
  z-index: 2;
  position: relative;
}

@keyframes command-more-panel-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

/* panel 内 ghost-button 紧凑化（避免菜单太高） */
.command-more-panel .ghost-button {
  width: 100%;
  justify-content: flex-start;
  text-align: left;
  min-height: 36px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 0;
  background: transparent;
  font-size: 13px;
  white-space: nowrap;
}
.command-more-panel .ghost-button:hover {
  background: rgba(79, 70, 229, 0.08);
}

.command-more-divider {
  height: 1px;
  margin: 4px 0;
  background: var(--line, rgba(15, 23, 42, 0.08));
}

/* 关键：父 .command-card 上的 content-visibility: auto 会 paint-clip 子元素，
   open 时临时禁用，让 popover 能溢出卡片边界正常显示 */
.command-card:has(.command-more-actions[open]) {
  content-visibility: visible !important;
  overflow: visible !important;
  position: relative;
  z-index: 3;
}

/* 深色主题适配 */
html[data-theme="dark"] .command-more-panel {
  background: rgb(20, 28, 45) !important;
  border-color: rgba(148, 163, 184, 0.18) !important;
  box-shadow:
    0 1px 0 rgba(0, 0, 0, 0.4),
    0 16px 36px -8px rgba(0, 0, 0, 0.6),
    0 32px 64px -16px rgba(0, 0, 0, 0.5) !important;
}

html[data-theme="dark"] .command-more-panel .ghost-button {
  color: rgb(226, 232, 240) !important;
}

html[data-theme="dark"] .command-more-panel .ghost-button:hover {
  background: rgba(129, 140, 248, 0.12) !important;
}

html[data-theme="dark"] .command-more-divider {
  background: rgba(148, 163, 184, 0.18) !important;
}

/* v23-tighten：助理端待安排议程池左栏 panel-body 底部 padding 收紧
   原 22px，知识卡之后还有 ~22px 留白。改成 14px 让卡片底部更贴 panel 底。*/
html body .app-shell:not(.mobile-shell)[data-role="assistant"] .pending-layout > .panel:first-child > .panel-body {
  padding-bottom: 14px !important;
}

/* ========== v23-mobile-pending：移动端待安排会议精简卡片 + CTA 折叠态 ========== */
/* 极简卡片：紧急度chip + 标题 + 推荐时间 + 部门，单条高度 ~76px */
.mobile-pending-card-compact {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--line, rgba(148, 163, 184, 0.20));
  background: var(--surface, #ffffff);
  text-align: left;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  appearance: none;
  font-family: inherit;
  color: var(--text, #0f172a);
}
.mobile-pending-card-compact:hover,
.mobile-pending-card-compact:focus-visible {
  border-color: rgba(99, 102, 241, 0.35);
  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
  outline: none;
}
.mobile-pending-card-compact:active {
  transform: scale(0.99);
}
.mobile-pending-card-compact.active {
  border-color: rgba(99, 102, 241, 0.55);
  background: rgba(99, 102, 241, 0.06);
}
.mobile-pending-card-line1 {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.mobile-pending-card-line1 strong {
  flex: 1;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--text, #0f172a);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-pending-card-line1 .risk-pill {
  flex-shrink: 0;
  font-size: 11px;
  padding: 2px 8px;
}
.mobile-pending-card-line2 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 12.5px;
  color: var(--text-sub, #64748b);
}
.mobile-pending-card-line2 > span:first-child {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-pending-card-dept {
  flex-shrink: 0;
  padding: 2px 8px;
  border-radius: 8px;
  font-size: 11.5px;
  background: rgba(148, 163, 184, 0.10);
  color: var(--text-sub, #64748b);
}

/* 移动端 .pending-list-toggle 在 .mobile-list-stack(grid) 内的样式
   修复：原 .pending-list-toggle 样式只覆盖 :not(.mobile-shell)，导致 mobile 没有限定高度，
   被 grid 默认 align-items:stretch 拉成 ~457px。 */
.app-shell.mobile-shell .mobile-list-stack .pending-list-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  height: 40px;
  padding: 0 14px;
  margin-top: 4px;
  border-radius: 12px;
  border: 1px dashed rgba(148, 163, 184, 0.35);
  background: transparent;
  color: var(--text-sub, #64748b);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
  appearance: none;
  -webkit-appearance: none;
  font-family: inherit;
  align-self: stretch;
}
.app-shell.mobile-shell .mobile-list-stack .pending-list-toggle:hover,
.app-shell.mobile-shell .mobile-list-stack .pending-list-toggle:focus-visible {
  border-color: rgba(99, 102, 241, 0.45);
  color: rgb(99, 102, 241);
  background: rgba(99, 102, 241, 0.06);
  outline: none;
}
.app-shell.mobile-shell .mobile-list-stack .pending-list-toggle .pending-list-toggle-icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}
.app-shell.mobile-shell .mobile-list-stack .pending-list-toggle.is-expanded .pending-list-toggle-icon {
  transform: rotate(180deg);
}
html[data-theme="dark"] .app-shell.mobile-shell .mobile-list-stack .pending-list-toggle {
  border-color: rgba(148, 163, 184, 0.28);
  color: #94a3b8;
}
html[data-theme="dark"] .app-shell.mobile-shell .mobile-list-stack .pending-list-toggle:hover,
html[data-theme="dark"] .app-shell.mobile-shell .mobile-list-stack .pending-list-toggle:focus-visible {
  border-color: rgba(165, 180, 252, 0.45);
  color: rgb(165, 180, 252);
  background: rgba(129, 140, 248, 0.10);
}

/* ========== v23-mobile-todos：移动端待办精简卡 ========== */
/* 极简卡：状态pill + 标题（line1）/ 截止时间 + 关联会议（line2），单条 ~76px */
.mobile-todo-card-compact {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid var(--line, rgba(148, 163, 184, 0.20));
  background: var(--surface, #ffffff);
  text-align: left;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
  appearance: none;
  font-family: inherit;
  color: var(--text, #0f172a);
}
.mobile-todo-card-compact:hover,
.mobile-todo-card-compact:focus-visible {
  border-color: rgba(99, 102, 241, 0.35);
  box-shadow: 0 4px 12px rgba(15, 23, 42, 0.06);
  outline: none;
}
.mobile-todo-card-compact:active {
  transform: scale(0.99);
}
.mobile-todo-card-compact.active {
  border-color: rgba(99, 102, 241, 0.55);
  background: rgba(99, 102, 241, 0.06);
}
.mobile-todo-card-line1 {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.mobile-todo-card-line1 strong {
  flex: 1;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--text, #0f172a);
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  -webkit-box-orient: vertical;
  white-space: normal;
}
.mobile-todo-card-line1 .status-pill {
  flex-shrink: 0;
  font-size: 11px;
  padding: 2px 8px;
}
.mobile-todo-card-line2 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 12.5px;
  color: var(--text-sub, #64748b);
}
.mobile-todo-card-line2 > span:first-child {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mobile-todo-card-event {
  flex-shrink: 0;
  padding: 2px 8px;
  border-radius: 8px;
  font-size: 11.5px;
  background: rgba(148, 163, 184, 0.10);
  color: var(--text-sub, #64748b);
  max-width: 50%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* todo 详情 modal 在移动端撑满 92vw */
.app-shell.mobile-shell .todo-detail-modal-card {
  width: min(92vw, 480px) !important;
  max-height: 80vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.app-shell.mobile-shell .todo-detail-modal-card .modal-body {
  overflow-y: auto;
  padding-bottom: 16px;
}
.app-shell.mobile-shell .todo-detail-modal-card .split-actions {
  flex-direction: row !important;
  flex-wrap: wrap;
  gap: 8px !important;
}
.app-shell.mobile-shell .todo-detail-modal-card .split-actions > button {
  flex: 1 1 calc(50% - 4px);
  min-width: 0;
}

/* 暗色主题 */
html[data-theme="dark"] .mobile-todo-card-compact {
  background: rgba(30, 41, 59, 0.55);
  border-color: rgba(148, 163, 184, 0.18);
  color: #f1f5f9;
}
html[data-theme="dark"] .mobile-todo-card-compact:hover,
html[data-theme="dark"] .mobile-todo-card-compact:focus-visible {
  border-color: rgba(129, 140, 248, 0.45);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
}
html[data-theme="dark"] .mobile-todo-card-compact.active {
  border-color: rgba(129, 140, 248, 0.55);
  background: rgba(129, 140, 248, 0.10);
}
html[data-theme="dark"] .mobile-todo-card-line1 strong {
  color: #f1f5f9;
}
html[data-theme="dark"] .mobile-todo-card-line2 {
  color: #94a3b8;
}
html[data-theme="dark"] .mobile-todo-card-event {
  background: rgba(148, 163, 184, 0.16);
  color: #cbd5e1;
}

/* 折叠态 CTA 卡：当 pendingComposerOpen=false 时显示 */
.mobile-pending-composer-cta .panel-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 28px 20px !important;
  gap: 10px;
}
.mobile-pending-cta-illust {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.14), rgba(168, 85, 247, 0.14));
  color: rgb(99, 102, 241);
}
.mobile-pending-cta-illust svg {
  width: 28px;
  height: 28px;
}
.mobile-pending-composer-cta h5 {
  margin: 4px 0 0;
  font-size: 16px;
  font-weight: 700;
  color: var(--text, #0f172a);
}
.mobile-pending-composer-cta p {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--text-sub, #64748b);
  max-width: 280px;
}
.mobile-pending-composer-cta .action-button {
  margin-top: 6px;
  min-width: 180px;
}

/* Pending 详情 modal 在移动端撑满 92vw（桌面 modal-card 通用样式已限 max-width:640px） */
.app-shell.mobile-shell .pending-detail-modal-card {
  width: min(92vw, 480px) !important;
  max-height: 80vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.app-shell.mobile-shell .pending-detail-modal-card .modal-body {
  overflow-y: auto;
  padding-bottom: 16px;
}

/* 暗色 */
html[data-theme="dark"] .mobile-pending-card-compact {
  background: rgba(30, 41, 59, 0.55);
  border-color: rgba(148, 163, 184, 0.18);
  color: #f1f5f9;
}
html[data-theme="dark"] .mobile-pending-card-compact:hover,
html[data-theme="dark"] .mobile-pending-card-compact:focus-visible {
  border-color: rgba(129, 140, 248, 0.45);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4);
}
html[data-theme="dark"] .mobile-pending-card-compact.active {
  border-color: rgba(129, 140, 248, 0.55);
  background: rgba(129, 140, 248, 0.10);
}
html[data-theme="dark"] .mobile-pending-card-line1 strong {
  color: #f1f5f9;
}
html[data-theme="dark"] .mobile-pending-card-line2 {
  color: #94a3b8;
}
html[data-theme="dark"] .mobile-pending-card-dept {
  background: rgba(148, 163, 184, 0.16);
  color: #cbd5e1;
}
html[data-theme="dark"] .mobile-pending-composer-cta h5 {
  color: #f1f5f9;
}
html[data-theme="dark"] .mobile-pending-composer-cta p {
  color: #94a3b8;
}

/* ===========================================================================
   v23-theme-fix: 修复 .mobile-summary-card / .mailbox-summary-card 主题对比度
   ---
   背景：base.css 多处用 `!important` 强制把所有 .mobile-summary-card 背景设为
        var(--brand)，但文字色未对应调整：
        - 浅色：var(--brand)=紫色，文字仍是 var(--text-sub) 灰色 → 几乎不可读
        - 深色：var(--brand)=米色，is-primary 文字白色 → 对比度勉强
   修复：以更高优先级（追加 body 选择器）覆盖，回归"非 primary 用普通卡片样式，
        is-primary 用纯色蓝/紫"的设计。
   =========================================================================== */

/* 浅色：非 is-primary 卡片 → 白底 + 灰边 + 深字 */
html[data-theme="light"] body .app-shell .mobile-summary-card:not(.is-primary),
html[data-theme="light"] body .app-shell .mailbox-summary-card:not(.is-primary):not(.is-attention) {
  background: rgba(255, 255, 255, 0.96) !important;
  background-image: none !important;
  border-color: rgba(226, 232, 240, 0.96) !important;
  box-shadow: 0 14px 28px rgba(15, 23, 42, 0.06) !important;
  color: var(--text, #0f172a) !important;
}
html[data-theme="light"] body .app-shell .mobile-summary-card:not(.is-primary) small,
html[data-theme="light"] body .app-shell .mailbox-summary-card:not(.is-primary):not(.is-attention) small {
  color: var(--text-soft, #94a3b8) !important;
}
html[data-theme="light"] body .app-shell .mobile-summary-card:not(.is-primary) strong,
html[data-theme="light"] body .app-shell .mailbox-summary-card:not(.is-primary):not(.is-attention) strong {
  color: var(--text, #0f172a) !important;
}
html[data-theme="light"] body .app-shell .mobile-summary-card:not(.is-primary) span,
html[data-theme="light"] body .app-shell .mailbox-summary-card:not(.is-primary):not(.is-attention) span {
  color: var(--text-sub, #64748b) !important;
}

/* 浅色：is-primary 卡片 → 蓝色实色 + 白字（避免 brand 突变） */
html[data-theme="light"] body .app-shell .mobile-summary-card.is-primary,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-primary,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-attention {
  background: linear-gradient(135deg, #4f46e5, #4338ca) !important;
  background-image: linear-gradient(135deg, #4f46e5, #4338ca) !important;
  border-color: transparent !important;
  color: #ffffff !important;
}
html[data-theme="light"] body .app-shell .mobile-summary-card.is-primary small,
html[data-theme="light"] body .app-shell .mobile-summary-card.is-primary span,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-primary small,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-primary span,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-attention small,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-attention span {
  color: rgba(255, 255, 255, 0.85) !important;
}
html[data-theme="light"] body .app-shell .mobile-summary-card.is-primary strong,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-primary strong,
html[data-theme="light"] body .app-shell .mailbox-summary-card.is-attention strong {
  color: #ffffff !important;
}

/* 深色：is-primary 卡片 → 蓝色实色（不用 brand 米色），保证对比度 */
html[data-theme="dark"] body .app-shell .mobile-summary-card.is-primary,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-primary,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-attention {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  background-image: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  border-color: transparent !important;
  color: #ffffff !important;
  box-shadow: 0 16px 32px rgba(79, 70, 229, 0.32) !important;
}
html[data-theme="dark"] body .app-shell .mobile-summary-card.is-primary small,
html[data-theme="dark"] body .app-shell .mobile-summary-card.is-primary span,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-primary small,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-primary span,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-attention small,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-attention span {
  color: rgba(255, 255, 255, 0.85) !important;
}
html[data-theme="dark"] body .app-shell .mobile-summary-card.is-primary strong,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-primary strong,
html[data-theme="dark"] body .app-shell .mailbox-summary-card.is-attention strong {
  color: #ffffff !important;
}

/* ============================================================
   Theme Fix Pack 2 (20260503)
   修复 mobile event-detail / todo-detail / pending-detail 抽屉
   标题区内容坍缩问题
   - 背景：.mobile-detail-drawer-app 是 display:grid，声明 4 行
     `auto auto minmax(0, 1fr) auto`，正好匹配 4 个 DOM children
     （sheet-handle / hero / scroll / footer）。
   - 问题：.prototype-frame.mobile-preview .detail-drawer.mobile::before
     是调试壳追加的装饰性 pull handle（54x5 圆角条），同时也是 grid
     item。它成为第 5 个 item，把后续 children 错位推 1 行，hero
     落到 `minmax(0, 1fr)` 行被压成 0px，内容溢出覆盖滚动区，造成
     标题 / 副文 / chip row 视觉重叠。
   - 修法：让 ::before 脱离 grid 流，改 position: absolute 叠在
     drawer 顶部；drawer 自己设 position:relative（或沿用已有 fixed
     作 positioning context）。
   - 影响：所有使用 .mobile-detail-drawer-app 的抽屉：event-detail /
     todo-detail / pending-detail / annotation drawer 等。
   ============================================================ */
html body .prototype-frame.mobile-preview .detail-drawer.mobile::before,
html body .prototype-frame.mobile-preview .modal-card::before,
html body .prototype-frame.mobile-preview .comment-modal-card::before {
  position: absolute !important;
  top: 10px !important;
  left: 50% !important;
  transform: translateX(-50%) !important;
  margin: 0 !important;
  z-index: 2 !important;
  pointer-events: none !important;
}
html body .prototype-frame.mobile-preview .modal-card,
html body .prototype-frame.mobile-preview .comment-modal-card {
  position: relative;
}

/* ============================================================
   Theme Fix Pack 3 (20260503)
   修复 mobile boss/assistant overview 路由 calendarView=week|month
   时顶部 .mobile-date-pill 和 .segmented 段控件的深色适配缺失。
   - 背景：base.css 里 .mobile-date-chip 默认 bg 是 rgba(255,255,255,0.92)
     白色，.segmented 容器 bg 是 #eef2f8 浅灰，但都没有 dark 覆盖。
     深色模式下：白底 + 浅色字（color: var(--text-main) 在 dark
     token 是浅色），结果几乎看不到内容，视觉断裂。
   - 修法：给 mobile-shell 上下文下的两个组件补深色 bg / border /
     文字色，与底色形成对比。
   - 影响：route=overview + calendarView=week|month 切换时顶部工具条
     （日 周 月 + 上一周 / 4/5 周日 / 下一周）。
   ============================================================ */
/* mobile-date-chip：周切换 + 日期主胶囊 + 上下页箭头 */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-date-chip,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-date-chip {
  background: rgba(255, 255, 255, 0.05) !important;
  border-color: rgba(255, 255, 255, 0.1) !important;
  color: rgba(237, 243, 251, 0.92) !important;
  box-shadow: none !important;
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-date-chip:active,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-date-chip:active {
  background: rgba(255, 255, 255, 0.09) !important;
}
/* 主胶囊（4/5 周日）背景轻微提亮，作为视觉重心 */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-date-chip.primary,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-date-chip.primary {
  background: rgba(255, 255, 255, 0.07) !important;
}

/* mobile-shell .segmented 容器：日 周 月 段控件 */
html[data-theme="dark"] body .app-shell.mobile-shell .segmented,
html[data-theme="dark"] body .prototype-frame.mobile-preview .app-shell.mobile-shell .segmented,
html[data-theme="dark"] body .prototype-frame.mobile-preview.native-mobile-frame .segmented {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
}
/* 非 active 按钮：透明 bg + 浅灰字 */
html[data-theme="dark"] body .app-shell.mobile-shell .segmented button,
html[data-theme="dark"] body .prototype-frame.mobile-preview .app-shell.mobile-shell .segmented button,
html[data-theme="dark"] body .prototype-frame.mobile-preview.native-mobile-frame .segmented button {
  background: transparent !important;
  color: rgba(148, 163, 184, 0.92) !important;
  border-color: transparent !important;
  box-shadow: none !important;
}
/* active 按钮：高亮提升 */
html[data-theme="dark"] body .app-shell.mobile-shell .segmented button.active,
html[data-theme="dark"] body .app-shell.mobile-shell .segmented button[aria-selected="true"],
html[data-theme="dark"] body .prototype-frame.mobile-preview .app-shell.mobile-shell .segmented button.active,
html[data-theme="dark"] body .prototype-frame.mobile-preview.native-mobile-frame .segmented button.active {
  background: rgba(255, 255, 255, 0.12) !important;
  color: #ffffff !important;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
}

/* ============================================================
   Theme Fix Pack 4 (20260503) — UI Refinement
   mobile overview 顶部日期 + 段控件整体 UI 重设计
   - 目标：从"两条独立白胶囊"提升为 iOS/Native 风格的紧凑工具条
   - 变更：
     1. mobile-date-chip.primary 改为大字标题风格（20-22px 字重 700），
        去除胶囊背景边框阴影，作为视觉重心
     2. mobile-date-chip.mobile-date-nav 改为 40x40 圆形按钮，
        点按面积达 Apple HIG 44pt 标准，视觉弱化
     3. segmented 容器改为撑满宽度 + 三按钮等宽（grid 1fr 1fr 1fr），
        去除左对齐的右侧留白
     4. active 按钮用柔和高亮（不再纯白撞脸）
     5. 工具条整体增加纵向间距，让标题呼吸
   - 适用：boss route=overview + assistant route=calendar
     calendarView = week | month（day 不显示此工具条）
   ============================================================ */

/* 1. 日期导航行：箭头 40px 圆形 + 标题居中大字 */
html body .app-shell.mobile-shell .mobile-calendar-toolbar,
html body .prototype-frame.mobile-preview .mobile-calendar-toolbar {
  gap: 10px !important;
  margin-top: 12px !important;
  padding-top: 12px !important;
  border-top: 1px solid var(--v4-line, rgba(148, 163, 184, 0.14)) !important;
}
html body .app-shell.mobile-shell .mobile-calendar-toolbar + *,
html body .prototype-frame.mobile-preview .mobile-calendar-toolbar + * {
  margin-top: 8px !important;
}

html body .app-shell.mobile-shell .mobile-date-compact,
html body .prototype-frame.mobile-preview .mobile-date-compact {
  display: grid !important;
  grid-template-columns: 40px minmax(0, 1fr) 40px !important;
  align-items: center !important;
  gap: 10px !important;
}

/* 左右圆形箭头按钮 */
html body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav,
html body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav {
  width: 40px !important;
  height: 40px !important;
  min-width: 40px !important;
  min-height: 40px !important;
  padding: 0 !important;
  border-radius: 50% !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: none !important;
  transition: background 180ms ease, transform 160ms ease !important;
}
html body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav:active,
html body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav:active {
  transform: scale(0.92) !important;
}
html body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav > span,
html body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav > span {
  font-size: 20px !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  transform: translateY(-1px) !important;
}

/* 中间大字日期标题（去胶囊化） */
html body .app-shell.mobile-shell .mobile-date-chip.primary,
html body .prototype-frame.mobile-preview .mobile-date-chip.primary {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: 0.2px !important;
  padding: 0 8px !important;
  justify-content: center !important;
  min-height: 40px !important;
  line-height: 1.2 !important;
  /* 保持居中对齐 */
  text-align: center !important;
}

/* 浅色模式：箭头按钮弱底色 */
html[data-theme="light"] body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav {
  background: rgba(15, 23, 42, 0.06) !important;
  border-color: transparent !important;
  color: rgba(15, 23, 42, 0.72) !important;
}
html[data-theme="light"] body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav:hover,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav:hover,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav:hover,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav:hover {
  background: rgba(15, 23, 42, 0.1) !important;
}
/* 浅色模式：标题字色 */
html[data-theme="light"] body .app-shell.mobile-shell .mobile-date-chip.primary,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-date-chip.primary,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-date-chip.primary,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-date-chip.primary {
  color: rgba(15, 23, 42, 0.94) !important;
}

/* 深色模式：箭头按钮（覆盖 Pack 3 的默认 rgba(255,255,255,0.05) 用同样值
   但这里需要保持圆形背景，所以明确写） */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav {
  background: rgba(255, 255, 255, 0.08) !important;
  border-color: transparent !important;
  color: rgba(237, 243, 251, 0.85) !important;
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-date-chip.mobile-date-nav:hover,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-date-chip.mobile-date-nav:hover {
  background: rgba(255, 255, 255, 0.14) !important;
}
/* 深色模式：标题字色（Pack 3 已设 color，但 primary 透明后需加强） */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-date-chip.primary,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-date-chip.primary {
  color: rgba(237, 243, 251, 0.95) !important;
  background: transparent !important;
}

/* 2. 段控件：撑满宽度 + 三按钮等宽 */
html body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented,
html body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented {
  display: grid !important;
  grid-template-columns: 1fr 1fr 1fr !important;
  width: 100% !important;
  padding: 4px !important;
  border-radius: 12px !important;
  gap: 2px !important;
}

html body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button,
html body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button {
  min-height: 36px !important;
  padding: 0 !important;
  border-radius: 9px !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  letter-spacing: 0.3px !important;
  transition: background 180ms ease, color 180ms ease !important;
}

/* 浅色模式：段控件容器 + active */
html[data-theme="light"] body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented {
  background: rgba(15, 23, 42, 0.05) !important;
  border: none !important;
}
html[data-theme="light"] body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button {
  background: transparent !important;
  color: rgba(15, 23, 42, 0.62) !important;
  box-shadow: none !important;
}
html[data-theme="light"] body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button.active,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button.active,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button.active,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button.active {
  background: #ffffff !important;
  color: rgba(15, 23, 42, 0.94) !important;
  box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.06) !important;
}

/* 深色模式：段控件容器 + active */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented {
  background: rgba(255, 255, 255, 0.05) !important;
  border: none !important;
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button {
  background: transparent !important;
  color: rgba(148, 163, 184, 0.88) !important;
  box-shadow: none !important;
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-calendar-toolbar .segmented button.active,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-calendar-toolbar .segmented button.active {
  background: rgba(255, 255, 255, 0.14) !important;
  color: #ffffff !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.1) !important;
}

/* ============================================================
   Theme Fix Pack 5 (20260503) — Mobile Calendar Panel Refinement
   修复 mobile overview 本周/本月日历 panel 的 3 个排版问题：
   1. .calendar-panel-meta 的 info-chip "已定位到 4月5日星期日" 末尾被
      clip 成 "星期"，看起来像截断 bug（实际是 overflow-x: auto 横滚）。
      修：加右侧 fade mask，提示"可横向滚动"，让截断变成渐隐。
   2. .week-grid / .month-grid 有 overflow-x: auto + scrollbar-width:thin
      但没有 ::-webkit-scrollbar { display: none }，导致底部出现一条
      裸露的灰色长滚动条。修：iOS 风格完全隐藏滚动条，保留横滑手势。
   3. 横向滚动区域最右侧直接切到卡片边缘，没有 padding buffer。修：
      加 scroll-padding-right，并 mask 渐隐。
   ============================================================ */

/* 1. info-chip 行：隐藏 scrollbar + 右侧 fade mask */
html body .app-shell.mobile-shell .calendar-panel-meta,
html body .prototype-frame.mobile-preview .calendar-panel-meta {
  scrollbar-width: none !important;
  -webkit-mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 24px), transparent 100%) !important;
          mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 24px), transparent 100%) !important;
  padding-right: 12px !important;
}
html body .app-shell.mobile-shell .calendar-panel-meta::-webkit-scrollbar,
html body .prototype-frame.mobile-preview .calendar-panel-meta::-webkit-scrollbar {
  display: none !important;
}

/* 2. week-grid / month-grid：隐藏 scrollbar + fade mask + padding */
html body .app-shell.mobile-shell .week-grid,
html body .app-shell.mobile-shell .month-grid,
html body .prototype-frame.mobile-preview .week-grid,
html body .prototype-frame.mobile-preview .month-grid {
  scrollbar-width: none !important;
  -webkit-mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 28px), transparent 100%) !important;
          mask-image: linear-gradient(90deg, #000 0, #000 calc(100% - 28px), transparent 100%) !important;
  padding-bottom: 2px !important;
  padding-right: 14px !important;
  scroll-padding-right: 14px !important;
}
html body .app-shell.mobile-shell .week-grid::-webkit-scrollbar,
html body .app-shell.mobile-shell .month-grid::-webkit-scrollbar,
html body .prototype-frame.mobile-preview .week-grid::-webkit-scrollbar,
html body .prototype-frame.mobile-preview .month-grid::-webkit-scrollbar {
  display: none !important;
}

/* ============================================================
   Theme Fix Pack 6 (20260503) — Mobile Bottom Nav Active Refinement
   修复底部 nav active 状态视觉装饰重复堆叠：
   - 现状：base.css:20439-20445 + v5-theme.css:4833-4837 给
     .mobile-nav-item.active 同时叠了 brand-soft 浅紫填充 + brand-line
     紫色 border + inset 1px box-shadow 内描边。和已经够醒目的紫色
     icon + label 重叠，让 active cell 看着像被"双层框圈中"。
   - iOS / Material 现代规范：active 只通过 icon 高亮 + label 变色
     传达，hit-area 不需要装饰底色和边框。
   - 修法：清空 active cell 的 background / border / box-shadow，
     只保留 icon 品牌色填充 + 文字色加重 + 轻微上移。
   ============================================================ */

/* active cell：去除所有装饰 */
html body .app-shell.mobile-shell .mobile-nav-item.active,
html body > #app > .mobile-bottom-nav .mobile-nav-item.active,
html body .prototype-frame.mobile-preview .mobile-nav-item.active {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
}

/* active label：浅色模式用 v4 品牌主色（不用 --brand，dark 下 --brand 被覆盖为驼色），加 600 字重 */
html[data-theme="light"] body .app-shell.mobile-shell .mobile-nav-item.active .mobile-nav-label,
html[data-theme="light"] body > #app > .mobile-bottom-nav .mobile-nav-item.active .mobile-nav-label,
html[data-theme="light"] body .prototype-frame.mobile-preview .mobile-nav-item.active .mobile-nav-label,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-nav-item.active .mobile-nav-label,
html:not([data-theme="dark"]) body > #app > .mobile-bottom-nav .mobile-nav-item.active .mobile-nav-label,
html:not([data-theme="dark"]) body .prototype-frame.mobile-preview .mobile-nav-item.active .mobile-nav-label {
  color: var(--v4-brand, #4f46e5) !important;
  font-weight: 600 !important;
}

/* active label：深色模式用更亮的紫色变体（--v4-brand 在 dark 是 #818cf8） */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-nav-item.active .mobile-nav-label,
html[data-theme="dark"] body > #app > .mobile-bottom-nav .mobile-nav-item.active .mobile-nav-label,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-nav-item.active .mobile-nav-label {
  color: var(--v4-brand-hover, #a5b4fc) !important;
  font-weight: 600 !important;
}

/* 统一所有 nav-icon 大小（覆盖 base.css 对 settings 的特殊放大） */
html body .app-shell.mobile-shell .mobile-nav-item[data-route="settings"] .mobile-nav-icon,
html body > #app > .mobile-bottom-nav .mobile-nav-item[data-route="settings"] .mobile-nav-icon {
  width: 28px !important;
  height: 28px !important;
  border-radius: 12px !important;
  padding: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: inherit !important;
}
html body .app-shell.mobile-shell .mobile-nav-item[data-route="settings"] .mobile-nav-icon svg,
html body > #app > .mobile-bottom-nav .mobile-nav-item[data-route="settings"] .mobile-nav-icon svg {
  width: 18px !important;
  height: 18px !important;
}

/* active icon：保留 v4 品牌色填充（统一靛紫色，不被 dark 主题覆盖为驼色） */
html body .app-shell.mobile-shell .mobile-nav-item.active .mobile-nav-icon,
html body > #app > .mobile-bottom-nav .mobile-nav-item.active .mobile-nav-icon,
html body .prototype-frame.mobile-preview .mobile-nav-item.active .mobile-nav-icon {
  background: var(--v4-brand, #4f46e5) !important;
  color: #ffffff !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 6px 14px rgba(79, 70, 229, 0.28) !important;
}

/* 深色下 active icon 阴影更柔（淡紫色阴影） */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-nav-item.active .mobile-nav-icon,
html[data-theme="dark"] body > #app > .mobile-bottom-nav .mobile-nav-item.active .mobile-nav-icon,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-nav-item.active .mobile-nav-icon {
  box-shadow: 0 6px 14px rgba(129, 140, 248, 0.36), inset 0 1px 0 rgba(255, 255, 255, 0.16) !important;
}

/* 非 active label：在浅色用稍弱字色，不和 active 撞 */
html[data-theme="light"] body .app-shell.mobile-shell .mobile-nav-item:not(.active) .mobile-nav-label,
html[data-theme="light"] body > #app > .mobile-bottom-nav .mobile-nav-item:not(.active) .mobile-nav-label,
html:not([data-theme="dark"]) body .app-shell.mobile-shell .mobile-nav-item:not(.active) .mobile-nav-label,
html:not([data-theme="dark"]) body > #app > .mobile-bottom-nav .mobile-nav-item:not(.active) .mobile-nav-label {
  color: rgba(15, 23, 42, 0.62) !important;
  font-weight: 500 !important;
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-nav-item:not(.active) .mobile-nav-label,
html[data-theme="dark"] body > #app > .mobile-bottom-nav .mobile-nav-item:not(.active) .mobile-nav-label,
html[data-theme="dark"] body .prototype-frame.mobile-preview .mobile-nav-item:not(.active) .mobile-nav-label {
  color: rgba(148, 163, 184, 0.78) !important;
  font-weight: 500 !important;
}

/* ════════════════════════════════════════════════════════════════════
   v231 — 登录页"未加入团队"引导卡片（authNoTeamGuide）
   ────────────────────────────────────────────────────────────────────
   触发条件：
     • 后端登录接口返回 no_membership / no_account_or_team
     • 或 bootstrapAuthGate 发现 session 缺 orgId
   patch_21 会把 state.authNoTeamGuide 置为 true，登录表单最上方渲染此块。
   设计：琥珀色语义（提示而非报错），配两个行动按钮"去创建团队""我有邀请码"。
   ════════════════════════════════════════════════════════════════════ */
html body .auth-shot-noteam-guide {
  display: flex !important;
  gap: 12px !important;
  align-items: flex-start !important;
  padding: 14px 16px !important;
  border-radius: 14px !important;
  margin-bottom: 8px !important;
  border: 1px solid rgba(245, 158, 11, 0.32) !important;
  background: linear-gradient(180deg, rgba(255, 247, 232, 0.96) 0%, rgba(255, 242, 217, 0.96) 100%) !important;
  box-shadow: 0 4px 14px rgba(245, 158, 11, 0.10) !important;
  animation: v231-noteam-rise-in 320ms cubic-bezier(0.32, 0.72, 0, 1) both !important;
}
@keyframes v231-noteam-rise-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
html body .auth-shot-noteam-guide-icon {
  flex: 0 0 auto !important;
  width: 28px !important;
  height: 28px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  color: #d97706 !important;
}
html body .auth-shot-noteam-guide-icon svg {
  width: 24px !important;
  height: 24px !important;
}
html body .auth-shot-noteam-guide-body {
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
html body .auth-shot-noteam-guide-title {
  font-size: 14px !important;
  font-weight: 700 !important;
  color: #7c2d12 !important;
  margin-bottom: 4px !important;
  line-height: 1.35 !important;
}
html body .auth-shot-noteam-guide-text {
  font-size: 12.5px !important;
  line-height: 1.5 !important;
  color: #9a3412 !important;
  margin-bottom: 10px !important;
}
html body .auth-shot-noteam-guide-actions {
  display: flex !important;
  gap: 8px !important;
  flex-wrap: wrap !important;
}
html body .auth-shot-noteam-guide-btn {
  padding: 7px 14px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  border-radius: 10px !important;
  border: 1px solid transparent !important;
  cursor: pointer !important;
  transition: transform 180ms cubic-bezier(0.32, 0.72, 0, 1),
              box-shadow 180ms cubic-bezier(0.32, 0.72, 0, 1),
              background 180ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}
html body .auth-shot-noteam-guide-btn.primary {
  background: var(--v4-brand, #4f46e5) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.28) !important;
}
html body .auth-shot-noteam-guide-btn.primary:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 8px 18px rgba(79, 70, 229, 0.34) !important;
}
html body .auth-shot-noteam-guide-btn.ghost {
  background: rgba(255, 255, 255, 0.68) !important;
  color: #92400e !important;
  border-color: rgba(217, 119, 6, 0.38) !important;
}
html body .auth-shot-noteam-guide-btn.ghost:hover {
  background: #ffffff !important;
  border-color: #d97706 !important;
  transform: translateY(-1px) !important;
}

/* 深色主题 */
html[data-theme="dark"] body .auth-shot-noteam-guide {
  border-color: rgba(251, 191, 36, 0.32) !important;
  background: linear-gradient(180deg, rgba(69, 45, 14, 0.56) 0%, rgba(59, 37, 10, 0.56) 100%) !important;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.38) !important;
}
html[data-theme="dark"] body .auth-shot-noteam-guide-icon {
  color: #fbbf24 !important;
}
html[data-theme="dark"] body .auth-shot-noteam-guide-title {
  color: #fde68a !important;
}
html[data-theme="dark"] body .auth-shot-noteam-guide-text {
  color: rgba(253, 224, 138, 0.86) !important;
}
html[data-theme="dark"] body .auth-shot-noteam-guide-btn.ghost {
  background: rgba(30, 41, 59, 0.7) !important;
  color: #fde68a !important;
  border-color: rgba(251, 191, 36, 0.42) !important;
}
html[data-theme="dark"] body .auth-shot-noteam-guide-btn.ghost:hover {
  background: rgba(30, 41, 59, 0.95) !important;
  border-color: #fbbf24 !important;
}

/* ════════════════════════════════════════════════════════════════════
   2026-05-13 P1-6 — 验证码 60s 倒计时期间"换密码登录"软链接
   ──────────────────────────────────────────────────────────────────── */
html body .auth-shot-fallback-row {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
  margin: -4px 0 4px !important;
  padding: 8px 12px !important;
  border-radius: 10px !important;
  background: color-mix(in srgb, #2563eb 6%, transparent) !important;
  border: 1px solid color-mix(in srgb, #2563eb 18%, transparent) !important;
  font-size: 12.5px !important;
  color: #1e3a8a !important;
  animation: authFallbackFadeIn .25s ease both !important;
}
@keyframes authFallbackFadeIn { from { opacity: 0; transform: translateY(-2px); } to { opacity: 1; transform: translateY(0); } }
html body .auth-shot-fallback-row.is-hidden { display: none !important; }
html body .auth-shot-fallback-row svg {
  width: 14px !important;
  height: 14px !important;
  flex: 0 0 14px !important;
  color: #2563eb !important;
}
html body .auth-shot-fallback-text { color: inherit !important; opacity: 0.86; }
html body .auth-shot-fallback-link {
  background: transparent !important;
  border: 0 !important;
  padding: 2px 4px !important;
  color: #2563eb !important;
  font-weight: 700 !important;
  font-size: 12.5px !important;
  cursor: pointer !important;
  min-height: 28px !important;
  border-radius: 6px !important;
  transition: background .15s ease, color .15s ease !important;
}
html body .auth-shot-fallback-link:hover { background: rgba(37, 99, 235, 0.10) !important; }
html body .auth-shot-fallback-link:focus-visible { outline: 2px solid #2563eb !important; outline-offset: 1px !important; }
html[data-theme="dark"] body .auth-shot-fallback-row {
  background: rgba(59, 130, 246, 0.12) !important;
  border-color: rgba(96, 165, 250, 0.32) !important;
  color: #bfdbfe !important;
}
html[data-theme="dark"] body .auth-shot-fallback-row svg { color: #93c5fd !important; }
html[data-theme="dark"] body .auth-shot-fallback-link { color: #93c5fd !important; }
html[data-theme="dark"] body .auth-shot-fallback-link:hover { background: rgba(59, 130, 246, 0.18) !important; }

/* ════════════════════════════════════════════════════════════════════
   2026-05-13 — 加入团队页 "粘贴" 按钮 hover/active 反馈
   ──────────────────────────────────────────────────────────────────── */
html body button.auth-shot-inline-action[data-action="paste-invite-code"] {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  padding: 4px 10px !important;
  border-radius: 8px !important;
  background: color-mix(in srgb, #6366f1 7%, transparent) !important;
  color: #4f46e5 !important;
  border: 1px solid color-mix(in srgb, #6366f1 22%, transparent) !important;
  font-weight: 700 !important;
  transition: background .18s ease, color .18s ease, transform .12s ease, box-shadow .18s ease !important;
  cursor: pointer !important;
}
html body button.auth-shot-inline-action[data-action="paste-invite-code"]:hover {
  background: color-mix(in srgb, #6366f1 16%, transparent) !important;
  color: #312e81 !important;
  box-shadow: 0 4px 12px rgba(99,102,241,0.18) !important;
  transform: translateY(-1px) !important;
}
html body button.auth-shot-inline-action[data-action="paste-invite-code"]:active {
  transform: translateY(0) scale(0.96) !important;
  box-shadow: 0 1px 3px rgba(99,102,241,0.16) !important;
  background: color-mix(in srgb, #6366f1 22%, transparent) !important;
}
html body button.auth-shot-inline-action[data-action="paste-invite-code"]:focus-visible {
  outline: 2px solid #4f46e5 !important;
  outline-offset: 1px !important;
}
html[data-theme="dark"] body button.auth-shot-inline-action[data-action="paste-invite-code"] {
  background: rgba(99,102,241,0.16) !important;
  border-color: rgba(165,180,252,0.36) !important;
  color: #c7d2fe !important;
}
html[data-theme="dark"] body button.auth-shot-inline-action[data-action="paste-invite-code"]:hover {
  background: rgba(99,102,241,0.28) !important;
  color: #e0e7ff !important;
  box-shadow: 0 4px 12px rgba(99,102,241,0.32) !important;
}

/* ════════════════════════════════════════════════════════════════════
   v232 — 设置弹层"主题切换"分段按钮铺满 + 行图标方块收紧
   ────────────────────────────────────────────────────────────────────
   前置：base.css:51591 (v23) 把 segmented 改成 width:fit-content + 子项
   flex:0 0 auto，按钮左对齐紧凑 → 用户反馈"按钮要铺满"。
   同时 v179 (v5-theme.css:8908) 的 row-icon 是 40×40 → 用户反馈"边框再小一点"。
   ════════════════════════════════════════════════════════════════════ */

/* 1. segmented 容器铺满父级宽度 */
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented {
  display: flex !important;
  width: 100% !important;
  max-width: 100% !important;
  box-sizing: border-box !important;
  gap: 4px !important;
}

/* 2. 三个按钮 1/3 等宽平分 */
html body .app-shell:not(.mobile-shell) .nav-settings-theme-segmented > * {
  flex: 1 1 0 !important;
  min-width: 0 !important;
  padding: 4px 8px !important;
  text-align: center !important;
  justify-content: center !important;
}

/* 3. 主题切换小块自身左右 padding 贴边（和其它 row 的 12px 对齐） */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-theme {
  padding: 2px 12px 4px !important;
  align-items: stretch !important;
}

/* 4. 行图标方块：40×40 → 34×34，内部 svg 保持居中
      原 v179 规则 (line ~8908) 的多选择器全部覆盖，padding 8 → 7 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > [class*="icon"]:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-child,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > svg:first-of-type,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row > .nav-settings-row-icon {
  width: 34px !important;
  height: 34px !important;
  padding: 7px !important;
  border-radius: 9px !important;
}

/* 嵌套 svg 同步收到 18×18 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row-icon > svg,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row .nav-settings-row-icon > svg {
  width: 18px !important;
  height: 18px !important;
}

/* row 的左列宽度跟随缩到 34（原 v179 是 40），字跟得更近 */
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-id-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu > .nav-settings-actions > .nav-settings-row,
html body .app-shell:not(.mobile-shell) .nav-settings-menu .nav-settings-actions .nav-settings-row {
  grid-template-columns: 34px minmax(0, 1fr) !important;
  gap: 10px !important;
}

/* ════════════════════════════════════════════════════════════════════
   v7.3 — 移动端排版统一优化（2026-05-07）
   ────────────────────────────────────────────────────────────────────
   问题清单：
   1. 顶部副标题被 max-width:26ch 强制截断 → "进。" 等单字独占第二行
   2. 卡片右上角 ".info-chip"（"共 X 条"）在窄容器内被强制竖排（共/X/条 三行）
   3. ".calendar-panel-meta" 横向 chips 在 mobile 下用 nowrap+overflow 横滚，
      最右的"导出 PDF"按钮被裁切，看起来像被截断（用户不知道可以横滑）
   4. dark mode 下 .mobile-compact-copy h3/p 颜色偏暗，对比度低
   选择器加 .app-shell.mobile-shell 限定，仅影响 mobile 布局
   ════════════════════════════════════════════════════════════════════ */

/* 1. 副标题：去掉 26ch 限制，让其在父容器宽度内自然换行（避免临界单字独占行） */
html body .app-shell.mobile-shell .mobile-compact-copy p {
  max-width: 100% !important;
  word-break: normal !important;
  overflow-wrap: anywhere !important;
}

/* 2. info-chip 强制单行不换行 + 不被压缩 */
html body .app-shell.mobile-shell .info-chip {
  white-space: nowrap !important;
  flex-shrink: 0 !important;
}
/* 2a. 卡片头部"共 X 条"chip 单独再保险（mobile-section-head 内容右侧） */
html body .app-shell.mobile-shell .mobile-section-head > .info-chip {
  align-self: flex-start !important;
  flex: 0 0 auto !important;
  white-space: nowrap !important;
}

/* 3. calendar-panel-meta：mobile 下从 nowrap+横滚改为 wrap 流式排列，
   chips 太多时换行而不是截断 */
html body .app-shell.mobile-shell .calendar-panel-meta {
  flex-wrap: wrap !important;
  overflow-x: visible !important;
  row-gap: 8px !important;
}

/* 4. dark mode 标题/副标题对比度提升 */
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-compact-copy h3 {
  color: #F1F5F9 !important;  /* 从默认更亮的近白色 */
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-compact-copy p {
  color: rgba(226, 232, 240, 0.78) !important;  /* 副标题灰白 */
}
html[data-theme="dark"] body .app-shell.mobile-shell .mobile-compact-copy small {
  color: rgba(165, 180, 252, 0.85) !important;  /* "老板"角色标 */
}

/* ────────────────────────────────────────────────────────────────────
   v7.3 续 — 移动端悬浮按钮优化（2026-05-07）
   ────────────────────────────────────────────────────────────────────
   1. mobile-fab "+新建/+操作" 由胶囊 88×42 缩小为圆形 56×56
   2. fab 默认 70% 不透明度降低视觉重量，tap/hover/active 恢复 100%
   3. checklist 图钉 📌 同步降低默认不透明度
   4. 滚动时 fab 进一步淡化（CSS-only via :focus-within / :active 状态）
   ──────────────────────────────────────────────────────────────────── */

/* 1. fab 缩小为圆形小按钮 */
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab,
html body .mobile-fab.app-primary-fab {
  min-width: 56px !important;
  width: 56px !important;
  height: 56px !important;
  min-height: 56px !important;
  border-radius: 50% !important;
  padding: 0 !important;
  flex-direction: column !important;
  gap: 0 !important;
  /* 隐藏文字标签，只保留 "+" 符号；用 aria-label 保留可访问性 */
  font-size: 22px !important;
  line-height: 1 !important;
}

/* 1a. 隐藏 fab 内的"新建/操作"文字标签，只保留 "+" */
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab strong,
html body .mobile-fab.app-primary-fab strong {
  display: none !important;
}
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab span,
html body .mobile-fab.app-primary-fab span {
  font-size: 26px !important;
  line-height: 1 !important;
  font-weight: 300 !important;
}

/* 2. fab 默认 70% 不透明度，hover/active/focus 恢复 100% */
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab,
html body .mobile-fab.app-primary-fab {
  opacity: 0.78 !important;
  transition: opacity 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease !important;
}
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab:hover,
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab:active,
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab:focus,
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab:focus-visible,
html body .mobile-fab.app-primary-fab:hover,
html body .mobile-fab.app-primary-fab:active,
html body .mobile-fab.app-primary-fab:focus,
html body .mobile-fab.app-primary-fab:focus-visible {
  opacity: 1 !important;
  transform: scale(1.05) !important;
}

/* 3. checklist 图钉 📌 默认半透明，hover/active 恢复 */
html body button[data-action="toggle-checklist-widget"] {
  opacity: 0.78 !important;
  width: 44px !important;
  height: 44px !important;
  font-size: 16px !important;
  transition: opacity 0.18s ease, transform 0.18s ease !important;
}
html body button[data-action="toggle-checklist-widget"]:hover,
html body button[data-action="toggle-checklist-widget"]:active,
html body button[data-action="toggle-checklist-widget"]:focus,
html body button[data-action="toggle-checklist-widget"]:focus-visible {
  opacity: 1 !important;
  transform: scale(1.06) !important;
}

/* ────────────────────────────────────────────────────────────────────
   v7.4 — 页面底部留白避免 fab 遮挡内容（2026-05-08）
   ────────────────────────────────────────────────────────────────────
   - fab 位置: bottom = nav-height + 34 + safe-bottom + 56(自身) = nav-height + 90 + safe-bottom
   - 现有 page-body.mobile 最小 padding-bottom: nav-height + 20 + safe-bottom 不够，
     底部内容会被 fab 遮挡（boss/pending 的"展开剩余 3 条"按钮、boss/todos 卡片等）
   - 提升 padding-bottom 至 nav-height + 110 + safe-bottom 给 fab 让出 56+约 20px 安全间距
   ──────────────────────────────────────────────────────────────────── */
html body .app-shell.mobile-shell .page-body.mobile,
html body .app-shell.mobile-shell main.page-body.mobile {
  padding-bottom: calc(var(--mobile-nav-height) + 110px + var(--mobile-safe-bottom)) !important;
}

/* 短屏紧凑：留 90px 间距，避免压缩太狠 */
@media (max-height: 720px) {
  html body .app-shell.mobile-shell .page-body.mobile,
  html body .app-shell.mobile-shell main.page-body.mobile {
    padding-bottom: calc(var(--mobile-nav-height) + 90px + var(--mobile-safe-bottom)) !important;
  }
}

/* calendar-focus-mode 不缩 padding（顶部已经压缩） */
html body .app-shell.mobile-shell .page-body.mobile.calendar-focus-mode {
  padding-bottom: calc(var(--mobile-nav-height) + 110px + var(--mobile-safe-bottom)) !important;
}

/* ============================================================================
   ╔════════════════════════════════════════════════════════════════════════╗
   ║              PRD §8.2 P0：底部导航中心浮动新增按钮                       ║
   ║   - 5 等分布局，第 3 项是浮起的圆形蓝色 + 按钮                           ║
   ║   - 按钮 56×56，相对底部 nav top 上浮 -16px，box-shadow 立体感           ║
   ║   - is-open 状态：+ 旋转 45° 变成 ×，颜色变红警示                       ║
   ║   - 隐藏旧 mobile-fab.app-primary-fab（已被中心按钮替代）               ║
   ╚════════════════════════════════════════════════════════════════════════╝ */

/* 隐藏旧右下角 fab（PRD §8.2 已用中心按钮替代） */
html body .mobile-fab.app-primary-fab,
html body .app-shell.mobile-shell .mobile-fab.app-primary-fab {
  display: none !important;
}

/* 5 等分网格：item 横向 stretch 强制等宽，避免中心按钮内容撑大 cell */
html body .app-shell.mobile-shell .mobile-bottom-nav-v3,
html body .mobile-bottom-nav-v3 {
  display: grid !important;
  grid-template-columns: repeat(5, 1fr) !important;
  align-items: center !important;
  justify-items: stretch !important;
  position: relative !important;
}

/* 5 等分内的所有 nav-item: min-width: 0 让 grid 1fr 能强制等宽
   否则 mobile-nav-center-action 的 fab content (56px) 会让该 cell 变宽，
   破坏 5 等分布局 */
html body .mobile-bottom-nav-v3 .mobile-nav-item {
  min-width: 0 !important;
}

/* 中心按钮：浮起容器 */
html body .mobile-nav-item.mobile-nav-center-action {
  position: relative !important;
  overflow: visible !important;
  background: transparent !important;
  border: none !important;
  padding: 4px 6px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-end !important;
  gap: 0 !important;
  min-width: auto !important;
  cursor: pointer !important;
}

/* 浮起的圆形蓝色 + 按钮 */
html body .mobile-nav-center-fab {
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 56px !important;
  height: 56px !important;
  border-radius: 50% !important;
  margin-top: -22px !important;
  background: linear-gradient(180deg, var(--v4-brand) 0%, var(--v4-brand-hover) 100%) !important;
  color: #ffffff !important;
  box-shadow:
    0 8px 18px -4px rgba(37, 99, 235, 0.40),
    0 2px 6px rgba(15, 23, 42, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.18) !important;
  transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.18s ease, background 0.18s ease !important;
}

html body .mobile-nav-center-fab svg {
  width: 28px !important;
  height: 28px !important;
  stroke: currentColor !important;
}

/* hover/active 反馈 */
html body .mobile-nav-item.mobile-nav-center-action:hover .mobile-nav-center-fab {
  transform: scale(1.06) translateY(-2px) !important;
  box-shadow:
    0 10px 22px -4px rgba(37, 99, 235, 0.50),
    0 3px 8px rgba(15, 23, 42, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.22) !important;
}

html body .mobile-nav-item.mobile-nav-center-action:active .mobile-nav-center-fab {
  transform: scale(0.96) !important;
}

/* 打开状态：+ 旋转 45° 变成 ×，颜色变红警示 */
html body .mobile-nav-item.mobile-nav-center-action.is-open .mobile-nav-center-fab {
  background: linear-gradient(180deg, var(--v4-danger) 0%, #DC2626 100%) !important;
  transform: rotate(45deg) !important;
  box-shadow:
    0 8px 18px -4px rgba(239, 68, 68, 0.40),
    0 2px 6px rgba(15, 23, 42, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.18) !important;
}

html body .mobile-nav-item.mobile-nav-center-action.is-open:hover .mobile-nav-center-fab {
  transform: rotate(45deg) scale(1.06) !important;
}

/* 中心按钮的标签 */
html body .mobile-nav-label.mobile-nav-center-label {
  font-size: 10.5px !important;
  font-weight: 600 !important;
  color: var(--v4-brand) !important;
  margin-top: 2px !important;
  letter-spacing: 0.02em !important;
}

/* 打开状态的标签变红 */
html body .mobile-nav-item.mobile-nav-center-action.is-open .mobile-nav-center-label {
  color: var(--v4-danger) !important;
}

/* 暗色模式调整 */
html[data-theme="dark"] body .mobile-nav-center-fab {
  box-shadow:
    0 8px 22px -4px rgba(96, 165, 250, 0.44),
    0 2px 6px rgba(0, 0, 0, 0.30),
    inset 0 1px 0 rgba(255, 255, 255, 0.16) !important;
}

html[data-theme="dark"] body .mobile-nav-label.mobile-nav-center-label {
  color: var(--v4-brand-hover) !important;
}

/* ============================================================================
   PRD §7.2 P0：状态标签 9 种语义色（chip 系统）
   - 高优 / 需确认  → danger 红
   - 待补 / 待处理  → warn 橙
   - 待审批 / 处理中 → info 蓝
   - 已通过 / 已同步 / 已完成 → ok 绿
   ──────────────────────────────────────────────────────────────────────────── */

html body .status-chip {
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  padding: 3px 9px !important;
  border-radius: var(--v4-r-pill) !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.01em !important;
  line-height: 1.4 !important;
  white-space: nowrap !important;
  border: 1px solid transparent !important;
}

html body .status-chip.status-danger,
html body .status-chip.status-priority-high,
html body .status-chip.status-need-confirm {
  background: rgba(239, 68, 68, 0.10) !important;
  color: #B91C1C !important;
  border-color: rgba(239, 68, 68, 0.24) !important;
}

html body .status-chip.status-warn,
html body .status-chip.status-pending-fill,
html body .status-chip.status-pending {
  background: rgba(245, 158, 11, 0.12) !important;
  color: #B45309 !important;
  border-color: rgba(245, 158, 11, 0.28) !important;
}

html body .status-chip.status-info,
html body .status-chip.status-pending-approval,
html body .status-chip.status-processing {
  background: rgba(37, 99, 235, 0.10) !important;
  color: #1D4ED8 !important;
  border-color: rgba(37, 99, 235, 0.24) !important;
}

html body .status-chip.status-ok,
html body .status-chip.status-approved,
html body .status-chip.status-synced,
html body .status-chip.status-done {
  background: rgba(15, 159, 110, 0.10) !important;
  color: #0F7A56 !important;
  border-color: rgba(15, 159, 110, 0.24) !important;
}

html body .status-chip .status-chip-dot {
  width: 6px !important;
  height: 6px !important;
  border-radius: 50% !important;
  background: currentColor !important;
}

/* dark mode chips */
html[data-theme="dark"] body .status-chip.status-danger,
html[data-theme="dark"] body .status-chip.status-priority-high,
html[data-theme="dark"] body .status-chip.status-need-confirm {
  background: rgba(248, 113, 113, 0.16) !important;
  color: #FCA5A5 !important;
  border-color: rgba(248, 113, 113, 0.32) !important;
}

html[data-theme="dark"] body .status-chip.status-warn,
html[data-theme="dark"] body .status-chip.status-pending-fill,
html[data-theme="dark"] body .status-chip.status-pending {
  background: rgba(251, 191, 36, 0.16) !important;
  color: #FCD34D !important;
  border-color: rgba(251, 191, 36, 0.32) !important;
}

html[data-theme="dark"] body .status-chip.status-info,
html[data-theme="dark"] body .status-chip.status-pending-approval,
html[data-theme="dark"] body .status-chip.status-processing {
  background: rgba(96, 165, 250, 0.16) !important;
  color: #93C5FD !important;
  border-color: rgba(96, 165, 250, 0.32) !important;
}

html[data-theme="dark"] body .status-chip.status-ok,
html[data-theme="dark"] body .status-chip.status-approved,
html[data-theme="dark"] body .status-chip.status-synced,
html[data-theme="dark"] body .status-chip.status-done {
  background: rgba(52, 211, 153, 0.16) !important;
  color: #6EE7B7 !important;
  border-color: rgba(52, 211, 153, 0.32) !important;
}

/* ============================================================================
   PRD §9.2 P0：首页今日重点卡 + 4 KPI 卡组
   ──────────────────────────────────────────────────────────────────────────── */

/* 2026-05-10 v8 — 对齐修复：
   原本 .mobile-today-focus-card / .mobile-kpi-grid 各自带 16px 横向 margin，
   而同 .mobile-home-stack 内的 calendar-panel / cockpit / mobile-home-grid
   等其他兄弟元素都是 margin:0（横向由父 .page-body.mobile 的 padding 统一接管）。
   结果：今日重点卡 + 4 KPI 卡比下面的卡向内多 16px，左右两侧不齐 → 用户感知为
   "宽度跟页面不一致"。同时纵向 margin (12/12 + 8/16) 又叠加在父级 gap:14px 上，
   节奏与其余兄弟不一致 ("间距没有跟其他页面一致")。
   修法：清零两者的 margin，让横向回归 page-body 的 padding、纵向回归 stack 的 gap。 */
html body .mobile-today-focus-card {
  margin: 0 !important;
  padding: 16px !important;
  border-radius: var(--v4-r-hero) !important;
  background: linear-gradient(135deg, var(--v4-surface) 0%, rgba(37, 99, 235, 0.04) 100%) !important;
  border: 1px solid var(--v4-line) !important;
  box-shadow: var(--v4-shadow-hero) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
}

html body .mobile-today-focus-card .focus-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
}

html body .mobile-today-focus-card .focus-eyebrow {
  font-size: 11.5px !important;
  font-weight: 600 !important;
  color: var(--v4-brand) !important;
  letter-spacing: 0.06em !important;
  text-transform: uppercase !important;
}

html body .mobile-today-focus-card .focus-countdown {
  font-size: 12px !important;
  font-weight: 600 !important;
  color: var(--v4-warn) !important;
  background: rgba(245, 158, 11, 0.10) !important;
  padding: 3px 9px !important;
  border-radius: var(--v4-r-pill) !important;
}

html body .mobile-today-focus-card h4 {
  font-size: 17px !important;
  font-weight: 700 !important;
  color: var(--v4-ink-1) !important;
  letter-spacing: -0.01em !important;
  margin: 0 !important;
  line-height: 1.32 !important;
}

html body .mobile-today-focus-card .focus-meta {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  font-size: 13px !important;
  color: var(--v4-ink-2) !important;
}

html body .mobile-today-focus-card .focus-meta .focus-divider {
  width: 1px !important;
  height: 12px !important;
  background: var(--v4-line-2) !important;
}

html body .mobile-today-focus-card .focus-action {
  display: flex !important;
  gap: 8px !important;
  margin-top: 4px !important;
}

html body .mobile-today-focus-card .focus-action button {
  flex: 1 !important;
}

/* 4 KPI 卡组 */
html body .mobile-kpi-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 8px !important;
  margin: 0 !important;
}

html body .mobile-kpi-card {
  background: var(--v4-surface) !important;
  border-radius: var(--v4-r-card) !important;
  border: 1px solid var(--v4-line) !important;
  padding: 12px 8px !important;
  text-align: center !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 4px !important;
  min-width: 0 !important;
  cursor: pointer !important;
  transition: transform 0.12s ease, box-shadow 0.18s ease, border-color 0.18s ease !important;
}

html body .mobile-kpi-card:active {
  transform: scale(0.97) !important;
}

html body .mobile-kpi-card .kpi-value {
  font-size: 22px !important;
  font-weight: 700 !important;
  color: var(--v4-ink-1) !important;
  letter-spacing: -0.02em !important;
  line-height: 1.1 !important;
}

html body .mobile-kpi-card .kpi-label {
  font-size: 11px !important;
  color: var(--v4-ink-2) !important;
  font-weight: 500 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  max-width: 100% !important;
}

/* KPI 警示色：风险 / 冲突 卡的数值用 danger 红 */
html body .mobile-kpi-card.kpi-danger .kpi-value {
  color: var(--v4-danger) !important;
}

html body .mobile-kpi-card.kpi-warn .kpi-value {
  color: var(--v4-warn) !important;
}

html body .mobile-kpi-card.kpi-info .kpi-value {
  color: var(--v4-brand) !important;
}


/* ============================================================================
   ╔════════════════════════════════════════════════════════════════════════╗
   ║              PRD §8.1 P0：移动端顶部栏 SVG 图标按钮                      ║
   ║   - .mobile-header-icon-svg：SVG 内容居中，1.9 stroke-width             ║
   ║   - .mobile-header-icon-badge：右上角红点徽章，PRD 危险红                ║
   ╚════════════════════════════════════════════════════════════════════════╝ */

html body .mobile-header-icon.mobile-header-icon-svg {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  font-size: 0 !important;
  color: var(--v4-ink-2) !important;
  transition: color 0.18s ease, background 0.18s ease, transform 0.12s ease !important;
}

html body .mobile-header-icon.mobile-header-icon-svg svg {
  width: 19px !important;
  height: 19px !important;
  stroke: currentColor !important;
}

html body .mobile-header-icon.mobile-header-icon-svg:hover {
  color: var(--v4-brand) !important;
  background: var(--v4-brand-soft) !important;
}

html body .mobile-header-icon.mobile-header-icon-svg:active {
  transform: scale(0.94) !important;
}

/* 顶部栏徽章：右上红点（PRD 危险红） */
html body .mobile-header-icon-badge {
  position: absolute !important;
  top: -3px !important;
  right: -3px !important;
  min-width: 16px !important;
  height: 16px !important;
  padding: 0 4px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: var(--v4-danger) !important;
  color: #ffffff !important;
  font-size: 10px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  border-radius: 999px !important;
  border: 2px solid var(--v4-surface) !important;
  letter-spacing: 0.01em !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.12) !important;
  pointer-events: none !important;
}

html[data-theme="dark"] body .mobile-header-icon.mobile-header-icon-svg {
  color: var(--v4-ink-2) !important;
}

html[data-theme="dark"] body .mobile-header-icon-badge {
  border-color: var(--v4-surface) !important;
}

/* ===== P1.1 PRD §10 待安排页：筛选 chip + 草稿卡 + 三按钮 ===== */
/* 筛选 chip 横向滚动条 */
html body .mobile-pending-filter-bar {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  overflow-x: auto;
  overflow-y: hidden;
  padding: 4px 0 12px;
  margin: 0 -4px 4px;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
html body .mobile-pending-filter-bar::-webkit-scrollbar {
  display: none;
}

/* 2026-05-23：收信箱专用 — 上下间距统一更紧凑（用户反馈"上下线间距不一致，希望紧凑一点"）
   原 mobile-pending-filter-bar 上 4 下 12 不对称，mailbox 这块在 mobile-summary-strip 下面，
   原 padding 4/12 让 chip 跟上方的卡片间距 = strip-bottom + 4，跟下方区块间距 = 12 + body-margin，
   视觉上呈"上紧下松"。现在改成上下都 6，且 chip 自身高度也压一档。 */
html body .mobile-mailbox-filter-bar {
  padding: 6px 0 6px !important;
  margin: 6px 0 2px !important;
  gap: 6px !important;
}
html body .mobile-mailbox-filter-bar .mobile-pending-filter-chip {
  padding: 6px 12px !important;
  font-size: 12.5px !important;
}

/* 2026-05-23：所有横向滚动 strip 的滚动条彻底隐藏（用户反馈"底部的滑动条不是很隐藏"）
   原 .mobile-summary-strip 已用 scrollbar-width:none + ::-webkit-scrollbar{display:none}，
   但某些 Chromium / Edge 渲染会保留 thumb/track 残影；
   补 -ms-overflow-style + thumb / track 透明 + overflow-anchor + scrollbar-color 兜底。
   作用于 mobile-summary-strip / mobile-pending-filter-bar / mobile-mailbox-filter-bar 等同类容器。 */
html body .mobile-summary-strip,
html body .mobile-pending-filter-bar,
html body .mobile-mailbox-filter-bar {
  -ms-overflow-style: none !important;
  scrollbar-width: none !important;
  scrollbar-color: transparent transparent !important;
  overflow-anchor: none !important;
}
html body .mobile-summary-strip::-webkit-scrollbar,
html body .mobile-pending-filter-bar::-webkit-scrollbar,
html body .mobile-mailbox-filter-bar::-webkit-scrollbar {
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  background: transparent !important;
}
html body .mobile-summary-strip::-webkit-scrollbar-thumb,
html body .mobile-pending-filter-bar::-webkit-scrollbar-thumb,
html body .mobile-mailbox-filter-bar::-webkit-scrollbar-thumb,
html body .mobile-summary-strip::-webkit-scrollbar-track,
html body .mobile-pending-filter-bar::-webkit-scrollbar-track,
html body .mobile-mailbox-filter-bar::-webkit-scrollbar-track {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* 2026-05-23：移动端 summary 卡从横向露出式 strip 收紧为 2 列网格。
   之前 grid-auto-columns: minmax(132px, min(68%, 240px)) 会让第二张卡露到
   viewport 右侧，视觉巡检记为 hOverflow。现在同屏完整展示，避免用户误以为还要横滑。 */
html body .app-shell.mobile-shell .mobile-summary-strip {
  display: grid !important;
  grid-auto-flow: row !important;
  grid-auto-columns: unset !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
  overflow: visible !important;
  padding-bottom: 0 !important;
}
html body .app-shell.mobile-shell .mobile-summary-card {
  width: auto !important;
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: visible !important;
}
html body .app-shell.mobile-shell .mobile-summary-card span {
  overflow-wrap: break-word !important;
  word-break: break-all !important;
}
html body .app-shell.mobile-shell .mobile-summary-card strong {
  overflow-wrap: break-word !important;
}
html body .app-shell.mobile-shell .mobile-summary-strip .mobile-summary-card:last-child:nth-child(odd) {
  grid-column: 1 / -1 !important;
}
html body .mobile-pending-filter-chip {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border-radius: 999px;
  border: 1px solid rgba(17, 24, 39, 0.10);
  background: var(--v4-surface);
  color: var(--v4-ink-2);
  font-size: 13px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  transition: background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), color 0.18s cubic-bezier(0.4, 0, 0.2, 1), border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), transform 0.1s ease;
  white-space: nowrap;
  min-height: 36px; /* PRD §19 触达区合规 */
}
html body .mobile-pending-filter-chip:focus-visible {
  outline: 2px solid var(--v4-brand);
  outline-offset: 2px;
}
html body .mobile-pending-filter-chip:hover {
  border-color: var(--v4-brand);
  color: var(--v4-brand);
}
html body .mobile-pending-filter-chip:active {
  transform: scale(0.97);
}
html body .mobile-pending-filter-chip.is-active {
  background: var(--v4-brand);
  color: #ffffff;
  border-color: var(--v4-brand);
  box-shadow: 0 2px 6px rgba(37, 99, 235, 0.20);
}
html body .mobile-pending-filter-chip .filter-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: rgba(17, 24, 39, 0.06);
  color: var(--v4-ink-2);
  font-size: 11px;
  font-weight: 700;
}
html body .mobile-pending-filter-chip.is-active .filter-count {
  background: rgba(255, 255, 255, 0.22);
  color: #ffffff;
}

/* 草稿卡 pro 版 */
html body .mobile-pending-card-pro {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 14px 10px;
  border-radius: 16px;
  background: var(--v4-surface);
  border: 1px solid rgba(17, 24, 39, 0.08);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
  margin-bottom: 10px;
  transition: border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.18s cubic-bezier(0.4, 0, 0.2, 1);
}
html body .mobile-pending-card-pro:active {
  border-color: var(--v4-brand);
}
html body .mobile-pending-card-pro .pro-card-head {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
html body .mobile-pending-card-pro .pro-card-head .risk-pill,
html body .mobile-pending-card-pro .pro-card-head .status-pill {
  flex: 0 0 auto;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.01em;
}
html body .mobile-pending-card-pro .pro-card-source {
  margin-left: auto;
  font-size: 11px;
  color: var(--v4-ink-3);
  font-weight: 500;
}
html body .mobile-pending-card-pro .pro-card-body {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  appearance: none;
}
html body .mobile-pending-card-pro .pro-card-title {
  display: block;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--v4-ink-1);
  margin-bottom: 6px;
}
html body .mobile-pending-card-pro .pro-card-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--v4-ink-2);
  line-height: 1.5;
}
html body .mobile-pending-card-pro .pro-card-divider {
  display: inline-block;
  width: 3px;
  height: 3px;
  border-radius: 999px;
  background: rgba(17, 24, 39, 0.20);
}
html body .mobile-pending-card-pro .pro-card-missing {
  margin-top: 6px;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(245, 158, 11, 0.12);
  color: #B45309;
  font-size: 12px;
  font-weight: 500;
}
html body .mobile-pending-card-pro .pro-card-conflict {
  margin-top: 6px;
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(239, 68, 68, 0.12);
  color: #B91C1C;
  font-size: 12px;
  font-weight: 500;
}
html body .mobile-pending-card-pro .pro-card-actions {
  display: grid;
  /* 2026-05-10：原本 3 列（补全信息 / 提交审批 / 排入日历），删掉"提交审批"后改为 2 列 */
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  padding-top: 8px;
  border-top: 1px solid rgba(17, 24, 39, 0.06);
}
/* 2026-05-10：跟 cmd-card-actions 一样统一两个按钮尺寸（ghost-button 和 action-button
   全局 min-height 不一样，会让一个 36px 一个 38px，参见 v5-theme.css:6882/6932） */
html body .mobile-pending-card-pro .pro-card-actions > button,
html body .mobile-pending-card-pro .pro-card-actions > button.ghost-button,
html body .mobile-pending-card-pro .pro-card-actions > button.action-button,
html body .mobile-pending-card-pro .pro-card-actions > button.action-button.secondary {
  height: 36px !important;
  min-height: 36px !important;
  max-height: 36px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  padding: 0 8px !important;
  border-radius: 10px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
html body .mobile-pending-card-pro .pro-card-actions > button[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
}

/* 暗色适配 */
html[data-theme="dark"] body .mobile-pending-filter-chip {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.10);
  color: var(--v4-ink-2);
}
html[data-theme="dark"] body .mobile-pending-filter-chip .filter-count {
  background: rgba(255, 255, 255, 0.10);
  color: var(--v4-ink-2);
}
html[data-theme="dark"] body .mobile-pending-card-pro {
  background: var(--v4-surface);
  border-color: rgba(255, 255, 255, 0.08);
}
html[data-theme="dark"] body .mobile-pending-card-pro .pro-card-actions {
  border-top-color: rgba(255, 255, 255, 0.06);
}
html[data-theme="dark"] body .mobile-pending-card-pro .pro-card-missing {
  background: rgba(245, 158, 11, 0.16);
  color: #FCD34D;
}
html[data-theme="dark"] body .mobile-pending-card-pro .pro-card-conflict {
  background: rgba(239, 68, 68, 0.16);
  color: #FCA5A5;
}

/* ===== P1.2 PRD §11 微信识别页：字数 + 清空 + 置信度三档 chip ===== */
html body .mobile-inbox-input-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 6px;
  font-size: 12px;
}
html body .mobile-inbox-input-foot .inbox-char-count {
  color: var(--v4-ink-3);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
html body .mobile-inbox-input-foot .inbox-char-count.is-warn {
  color: var(--v4-warning, #F59E0B);
}
html body .mobile-inbox-input-foot .inbox-char-count.is-over {
  color: var(--v4-danger);
  font-weight: 700;
}
html body .mobile-inbox-input-foot .inbox-clear-btn {
  height: 28px;
  padding: 0 10px;
  font-size: 12px;
  border-radius: 999px;
}

/* 置信度三档 chip */
html body .conf-chip {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.01em;
  margin-left: 6px;
  vertical-align: middle;
  line-height: 1;
}
html body .conf-chip.conf-high {
  background: rgba(16, 185, 129, 0.14);
  color: #047857;
}
html body .conf-chip.conf-medium {
  background: rgba(245, 158, 11, 0.16);
  color: #B45309;
}
html body .conf-chip.conf-low {
  background: rgba(239, 68, 68, 0.14);
  color: #B91C1C;
}
html[data-theme="dark"] body .conf-chip.conf-high {
  background: rgba(16, 185, 129, 0.20);
  color: #6EE7B7;
}
html[data-theme="dark"] body .conf-chip.conf-medium {
  background: rgba(245, 158, 11, 0.20);
  color: #FCD34D;
}
html[data-theme="dark"] body .conf-chip.conf-low {
  background: rgba(239, 68, 68, 0.20);
  color: #FCA5A5;
}

/* 提取按钮 disabled 态视觉 */
html body .mobile-inbox-input-card .mobile-action-row > button[disabled] {
  opacity: 0.45;
  cursor: not-allowed;
  filter: saturate(0.6);
}

/* ===== P1.3 PRD §12 收信箱：分类 chip + 老板指令展开卡 + 状态时间线 ===== */
/* 通过 data-mailbox-filter 控制 section 显隐：非 all 时只显示 header 和匹配的 section */
html body .mobile-mailbox-stack[data-mailbox-filter="command"] [data-mailbox-section="annotation"],
html body .mobile-mailbox-stack[data-mailbox-filter="command"] [data-mailbox-section="direct"],
html body .mobile-mailbox-stack[data-mailbox-filter="annotation"] [data-mailbox-section="command"],
html body .mobile-mailbox-stack[data-mailbox-filter="annotation"] [data-mailbox-section="direct"],
html body .mobile-mailbox-stack[data-mailbox-filter="direct"] [data-mailbox-section="command"],
html body .mobile-mailbox-stack[data-mailbox-filter="direct"] [data-mailbox-section="annotation"],
html body .mobile-mailbox-stack[data-mailbox-filter="pending"] [data-mailbox-section="direct"],
html body .mobile-mailbox-stack[data-mailbox-filter="system"] [data-mailbox-section="command"],
html body .mobile-mailbox-stack[data-mailbox-filter="system"] [data-mailbox-section="annotation"] {
  display: none !important;
}

/* 老板指令卡 */
html body .mobile-mailbox-command-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px;
  border-radius: 16px;
  background: var(--v4-surface);
  border: 1px solid rgba(17, 24, 39, 0.08);
  margin-bottom: 12px;
}
html body .mobile-mailbox-command-card.is-priority-high {
  border: 2px solid var(--v4-danger);
  box-shadow: 0 4px 12px -4px rgba(239, 68, 68, 0.20);
}
html body .mobile-mailbox-command-card .cmd-card-head {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
html body .mobile-mailbox-command-card .cmd-card-prio-badge {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 8px;
  border-radius: 999px;
  background: var(--v4-danger);
  color: #ffffff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.01em;
}
html body .mobile-mailbox-command-card .cmd-card-time {
  margin-left: auto;
  font-size: 11px;
  color: var(--v4-ink-3);
}
html body .mobile-mailbox-command-card .cmd-card-body {
  font-size: 14px;
  line-height: 1.55;
  color: var(--v4-ink-1);
}
html body .mobile-mailbox-command-card .cmd-card-actions {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding-top: 8px;
  border-top: 1px solid rgba(17, 24, 39, 0.06);
}
/* 2026-05-10：原本 3 个按钮（ghost-button / action-button.secondary / action-button）
   在 v5-theme.css:6932/6882 全局规则里 padding/font-size/min-height 各不相同：
     - ghost-button:  padding 8px 14px, font 12.5px, min-height 32px !important
     - action-button: padding 10px 18px, font 13.5px, min-height 38px !important
   且 min-height 带 !important，会撑高 action-button 到 38px，让"标记处理中"
   显得比"回传完成 / 请求确认"矮 2px、字小 1px → 用户感受"三按钮大小不一致"。
   这里在 cmd-card-actions 里把 3 个按钮的尺寸全部强制对齐。 */
html body .mobile-mailbox-command-card .cmd-card-actions > button,
html body .mobile-mailbox-command-card .cmd-card-actions > button.ghost-button,
html body .mobile-mailbox-command-card .cmd-card-actions > button.action-button,
html body .mobile-mailbox-command-card .cmd-card-actions > button.action-button.secondary {
  height: 36px !important;
  min-height: 36px !important;
  max-height: 36px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  padding: 0 8px !important;
  border-radius: 10px !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* 状态时间线（5 节点） */
html body .mailbox-command-timeline {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 0;
  padding: 8px 0;
  margin: 0;
  list-style: none;
  position: relative;
}
html body .mailbox-command-timeline::before {
  content: "";
  position: absolute;
  top: 14px;
  left: 10%;
  right: 10%;
  height: 2px;
  background: rgba(17, 24, 39, 0.10);
  z-index: 0;
}
html body .mailbox-command-timeline > li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  position: relative;
  z-index: 1;
}
html body .mailbox-command-timeline > li > .dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 999px;
  background: rgba(17, 24, 39, 0.20);
  border: 2px solid var(--v4-surface);
  box-shadow: 0 0 0 2px rgba(17, 24, 39, 0.06);
  transition: background 0.2s ease, box-shadow 0.2s ease;
}
html body .mailbox-command-timeline > li.is-done > .dot {
  background: var(--v4-success, #10B981);
  box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.20);
}
html body .mailbox-command-timeline > li > .label {
  font-size: 10px;
  color: var(--v4-ink-3);
  font-weight: 500;
  text-align: center;
  line-height: 1.2;
}
html body .mailbox-command-timeline > li.is-done > .label {
  color: var(--v4-ink-2);
  font-weight: 600;
}

/* 暗色 */
html[data-theme="dark"] body .mobile-mailbox-command-card {
  background: var(--v4-surface);
  border-color: rgba(255, 255, 255, 0.08);
}
html[data-theme="dark"] body .mobile-mailbox-command-card .cmd-card-actions {
  border-top-color: rgba(255, 255, 255, 0.06);
}
html[data-theme="dark"] body .mailbox-command-timeline::before {
  background: rgba(255, 255, 255, 0.10);
}
html[data-theme="dark"] body .mailbox-command-timeline > li > .dot {
  background: rgba(255, 255, 255, 0.20);
  border-color: var(--v4-surface);
}

/* ===== P2.1 PRD §13.5 助手动作卡：6 类 ===== */
html body .mobile-assistant-action-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  padding: 10px 0 4px;
  margin: 4px 0;
}
html body .mobile-assistant-action-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 12px 6px;
  border-radius: 14px;
  border: 1px solid rgba(17, 24, 39, 0.08);
  background: var(--v4-surface);
  color: var(--v4-ink-1);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: transform 0.1s ease, border-color 0.18s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.18s cubic-bezier(0.4, 0, 0.2, 1);
  min-height: 70px;
}
html body .mobile-assistant-action-card:hover {
  border-color: var(--v4-brand);
  color: var(--v4-brand);
}
html body .mobile-assistant-action-card:active {
  transform: scale(0.97);
}
html body .mobile-assistant-action-card .mac-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  background: rgba(37, 99, 235, 0.10);
  color: var(--v4-brand);
}
html body .mobile-assistant-action-card .mac-icon svg {
  width: 16px;
  height: 16px;
}
html body .mobile-assistant-action-card .mac-label {
  font-size: 12px;
  line-height: 1.2;
  text-align: center;
}
html[data-theme="dark"] body .mobile-assistant-action-card {
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.08);
}
html[data-theme="dark"] body .mobile-assistant-action-card .mac-icon {
  background: rgba(96, 165, 250, 0.16);
  color: #93C5FD;
}

/* ===== P2.3 PRD §17 移动端空态 / 加载态 / 错误态 ===== */
/* 通用骨架屏（移动端）*/
@keyframes mobileSkeletonShimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
html body .mobile-skeleton {
  display: block;
  border-radius: 8px;
  background: linear-gradient(90deg,
    rgba(17, 24, 39, 0.04) 0%,
    rgba(17, 24, 39, 0.08) 50%,
    rgba(17, 24, 39, 0.04) 100%);
  background-size: 200% 100%;
  animation: mobileSkeletonShimmer 1.4s ease-in-out infinite;
}
html body .mobile-skeleton-text { height: 14px; margin: 6px 0; }
html body .mobile-skeleton-title { height: 22px; margin: 8px 0; width: 60%; }
html body .mobile-skeleton-card {
  height: 120px;
  border-radius: 16px;
  margin-bottom: 12px;
}
html[data-theme="dark"] body .mobile-skeleton {
  background: linear-gradient(90deg,
    rgba(255, 255, 255, 0.04) 0%,
    rgba(255, 255, 255, 0.08) 50%,
    rgba(255, 255, 255, 0.04) 100%);
  background-size: 200% 100%;
}
@media (prefers-reduced-motion: reduce) {
  html body .mobile-skeleton { animation: none; }
}

/* 通用空态卡（mobile） */
html body .mobile-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 32px 16px;
  text-align: center;
  color: var(--v4-ink-2);
}
html body .mobile-empty-state .empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 999px;
  background: rgba(37, 99, 235, 0.08);
  color: var(--v4-brand);
  margin-bottom: 4px;
}
html body .mobile-empty-state .empty-icon svg { width: 24px; height: 24px; }
html body .mobile-empty-state .empty-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--v4-ink-1);
}
html body .mobile-empty-state .empty-desc {
  font-size: 12px;
  color: var(--v4-ink-3);
  line-height: 1.5;
}
html body .mobile-empty-state .empty-cta {
  margin-top: 8px;
  height: 36px;
  padding: 0 14px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
}

/* 通用错误态卡（mobile） */
html body .mobile-error-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 24px 16px;
  text-align: center;
  border-radius: 14px;
  background: rgba(239, 68, 68, 0.06);
  border: 1px solid rgba(239, 68, 68, 0.16);
}
html body .mobile-error-state .err-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  background: rgba(239, 68, 68, 0.14);
  color: var(--v4-danger);
}
html body .mobile-error-state .err-icon svg { width: 20px; height: 20px; }
html body .mobile-error-state .err-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--v4-danger);
}
html body .mobile-error-state .err-desc {
  font-size: 12px;
  color: var(--v4-ink-2);
  line-height: 1.5;
}
html body .mobile-error-state .err-retry {
  margin-top: 6px;
  height: 36px;
  padding: 0 16px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  background: var(--v4-danger);
  color: #ffffff;
  border: none;
  cursor: pointer;
}
html body .mobile-error-state .err-retry:hover { filter: brightness(1.05); }
html[data-theme="dark"] body .mobile-error-state {
  background: rgba(239, 68, 68, 0.10);
  border-color: rgba(239, 68, 68, 0.24);
}

/* PRD §17.1 首页加载态：今日重点卡骨架变体（state.homeLoading 时启用） */
html body .mobile-today-focus-card.is-loading h4,
html body .mobile-today-focus-card.is-loading .focus-meta {
  visibility: hidden;
  position: relative;
}
html body .mobile-today-focus-card.is-loading::before {
  content: "";
  position: absolute;
  inset: 14px;
  border-radius: 12px;
  background: linear-gradient(90deg,
    rgba(17, 24, 39, 0.04) 0%,
    rgba(17, 24, 39, 0.08) 50%,
    rgba(17, 24, 39, 0.04) 100%);
  background-size: 200% 100%;
  animation: mobileSkeletonShimmer 1.4s ease-in-out infinite;
  pointer-events: none;
}

/* 增强 .empty-state 已有元素的移动端表现（不破坏桌面） */
html body .app-shell.mobile-shell .empty-state {
  padding: 28px 16px;
  text-align: center;
  color: var(--v4-ink-2);
  border-radius: 12px;
  background: rgba(17, 24, 39, 0.02);
  font-size: 13px;
  line-height: 1.6;
}
html[data-theme="dark"] body .app-shell.mobile-shell .empty-state {
  background: rgba(255, 255, 255, 0.03);
}

/* ============================================================================
   2026-05-08 登录页移动端品牌区居中修复
   问题：mobile 视口下 .auth-shot-hero 用 cover + center bottom 让品牌内容
        贴顶或裁切（logo 一半被切、星期几大字偏上），整体不居中。
   修复：≤ 880px 视口用 aspect-ratio 1148:900 按海报图本身比例渲染 hero，
        background-position: center top + cover 保证：
        - 紫色霓虹日历 logo 完整可见
        - "星期几" / "会议协作系统" / "让会议，变得简单" 三层文字水平居中
        - 海报底部会议室桌椅自然衔接登录表单
   特异性：html[data-theme="..."] body .auth-shot-hero (0,2,2) + !important
          压过 base.css line 51430 (0,2,1) 与 v5-theme line 10744 (0,2,2)
   ============================================================================ */
@media (max-width: 880px) {
  /* 特异性 (0,4,2)：压过 base.css line 51430 的 (0,2,1) 与 v5-theme line 10744 的 (0,2,2)。
     2026-05-19：移动端海报换成 SVG（auth-poster-mobile-{light,dark}.svg），
     不再用 PC Gmail 截图，矢量图自动适配任何屏幕尺寸。 */
  html[data-theme="light"] body .login-card.auth-login-card .auth-shot-hero {
    background-image:
      linear-gradient(180deg,
        rgba(248, 251, 255, 0.0) 0%,
        rgba(248, 251, 255, 0.0) 60%,
        rgba(238, 241, 248, 0.6) 90%,
        rgba(238, 241, 248, 1) 100%),
      url("/assets/auth-poster-mobile-light.svg?v=20260519-svg") !important;
  }
  html[data-theme="dark"] body .login-card.auth-login-card .auth-shot-hero {
    background-image:
      linear-gradient(180deg,
        rgba(11, 15, 26, 0.0) 0%,
        rgba(11, 15, 26, 0.0) 60%,
        rgba(11, 15, 26, 0.6) 90%,
        rgba(11, 15, 26, 1) 100%),
      url("/assets/auth-poster-mobile-dark.svg?v=20260519-svg") !important;
  }
  html[data-theme="light"] body .login-card.auth-login-card .auth-shot-hero,
  html[data-theme="dark"] body .login-card.auth-login-card .auth-shot-hero {
    background-position: center top, center top !important;
    background-size: cover, cover !important;
    background-repeat: no-repeat, no-repeat !important;
    aspect-ratio: auto !important;
    min-height: auto !important;
    max-height: none !important;
  }
}

/* ============================================================
   2026-05-09：主题切换 / 路由切换平滑过渡
   原问题：dark↔light 切换时 background-color / color 瞬间突变（无 transition），
           视觉上"闪一下"。给 root 容器加 220ms 颜色过渡，整体感受平滑。
   尊重用户偏好：reduced-motion 时不做过渡。
   ============================================================ */
html, body, .app-shell, .panel, .side-nav, .top-bar, .main-area, main {
  transition:
    background-color 220ms cubic-bezier(0.32, 0.72, 0, 1),
    color 180ms cubic-bezier(0.32, 0.72, 0, 1),
    border-color 180ms cubic-bezier(0.32, 0.72, 0, 1) !important;
}

@media (prefers-reduced-motion: reduce) {
  html, body, .app-shell, .panel, .side-nav, .top-bar, .main-area, main {
    transition: none !important;
  }
}

/* ============================================================
   v201 (2026-05-24)：修复"老板批注 / 改动同步通知"卡片标题被裁
   ─────────────────────────────────────────────────────────
   现象：会议标题 <strong>（如"委办局项目沟通"）只显示字符顶部一半。
   根因链：
     1. base.css:11200 `.mailbox-side-stack` 用 `grid-template-rows: 1fr 1fr`
        把上下两个 panel 严格等分高度；
     2. 内层 `.mailbox-feed` 被 v5-theme.css:4080 设为 `display:flex; column;
        align-items:stretch`，max-height clamp(280px, 56vh, 520px) + overflow-y:auto；
     3. flex column 默认子 `flex-shrink: 1`，浏览器在 max-height 受限时
        会**先压缩子项再出滚动条**，把每张卡压到 ~50px；
     4. `.mailbox-feed-item` 自带 `overflow: hidden` (base.css:8488)
        把溢出的标题直接裁掉 → 字符底部消失。
   修复：
     - mailbox-feed-item `flex: 0 0 auto` 禁止被父 flex 压缩；
     - `overflow: visible` 即使父 flex 边界算错也不裁内容；
     - `min-height: fit-content` 保证按实际内容撑高；
     - ::before 色条改用自身 border-radius 圆角，不再依赖父 overflow:hidden。
   ============================================================ */
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item {
  flex: 0 0 auto !important;
  overflow: visible !important;
  min-height: fit-content !important;
}
.app-shell:not(.mobile-shell) .mailbox-layout-redesigned .mailbox-feed-item::before {
  border-radius: 14px 0 0 14px !important;
}

/* QA final override: one chevron only for native selects. */
html body .app-shell .field select,
html body .modal-card select,
html body .app-modal select,
html body [role="dialog"] select {
  appearance: none !important;
  -webkit-appearance: none !important;
  background-image:
    linear-gradient(45deg, transparent 50%, currentColor 50%),
    linear-gradient(135deg, currentColor 50%, transparent 50%) !important;
  background-position:
    calc(100% - 18px) 50%,
    calc(100% - 12px) 50% !important;
  background-size: 6px 6px, 6px 6px !important;
  background-repeat: no-repeat !important;
  padding-right: 40px !important;
}

html body .app-shell .field select::-ms-expand,
html body .modal-card select::-ms-expand,
html body .app-modal select::-ms-expand,
html body [role="dialog"] select::-ms-expand {
  display: none !important;
}

html[data-theme="dark"] body [role="dialog"] .field select,
html[data-theme="dark"] body [role="dialog"] select,
html[data-theme="dark"] body .app-shell .field select,
html[data-theme="dark"] body .modal-card select,
html[data-theme="dark"] body .app-modal select {
  background-image:
    linear-gradient(45deg, transparent 50%, currentColor 50%),
    linear-gradient(135deg, currentColor 50%, transparent 50%) !important;
  background-position:
    calc(100% - 18px) 50%,
    calc(100% - 12px) 50% !important;
  background-size: 6px 6px, 6px 6px !important;
  background-repeat: no-repeat !important;
}
