html, body, #app { height: 100%; margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; }

/* ========== v1.17 登录页 — 两栏布局（左品牌叙事 + 右表单），深蓝主题 ========== */
.axl {
  position: fixed; inset: 0;
  display: flex;
  background: #060e1a;     /* 深蓝（用户指定） */
  color: #e2e8f0;
  overflow: hidden;
  font-family: "Inter", -apple-system, BlinkMacSystemFont,
               "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
/* 背景层 */
.axl-bg { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.axl-glow {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(0,212,255,0.07) 0%, transparent 50%),
    radial-gradient(ellipse at 80% 20%, rgba(139,92,246,0.05) 0%, transparent 40%),
    radial-gradient(ellipse at 65% 90%, rgba(0,212,255,0.04) 0%, transparent 40%);
}
.axl-grid {
  position: absolute; inset: 0; opacity: 0.04;
  background-image:
    linear-gradient(rgba(0,212,255,1) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,212,255,1) 1px, transparent 1px);
  background-size: 60px 60px;
}

/* ========== 左栏：品牌叙事 ========== */
.axl-left {
  flex: 2 1 64%;
  width: 64%; min-width: 0;
  position: relative; z-index: 5;
  display: flex; flex-direction: column; justify-content: space-between;
  padding: 72px clamp(56px, 7vw, 120px) 56px;     /* 上下更宽松 */
}
@media (max-width: 1023px) { .axl-left { display: none; } }
.axl-left::before {
  content: ''; position: absolute;
  left: 30%; top: 50%; transform: translate(-50%, -50%);
  width: 540px; height: 540px;
  background: radial-gradient(circle, rgba(0,212,255,0.06) 0%, transparent 70%);
  border-radius: 50%; pointer-events: none;
}
.axl-brand-top {
  position: relative; z-index: 2;
  display: flex; align-items: center; gap: 18px;
}
.axl-logo {
  width: 64px; height: 64px;
  border-radius: 16px;
  background: linear-gradient(135deg, #22d3ee 0%, #3b82f6 50%, #8b5cf6 100%);
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  box-shadow: 0 0 40px rgba(0,212,255,0.35),
              0 0 0 1px rgba(255,255,255,0.06) inset;
  animation: axl-pulse 3s ease-in-out infinite;
}
.axl-logo svg { width: 34px; height: 34px; }
@keyframes axl-pulse {
  0%, 100% { box-shadow: 0 0 40px rgba(0,212,255,0.30), 0 0 0 1px rgba(255,255,255,0.06) inset;
            filter: drop-shadow(0 0 6px rgba(0,212,255,0.4)); }
  50%      { box-shadow: 0 0 56px rgba(0,212,255,0.55), 0 0 0 1px rgba(255,255,255,0.10) inset;
            filter: drop-shadow(0 0 14px rgba(0,212,255,0.8)); }
}
.axl-brand-title {
  margin: 0; font-size: 22px; font-weight: 800;
  background: linear-gradient(90deg, #67e8f9, #60a5fa 60%, #c4b5fd);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  line-height: 1.2;
}
.axl-brand-tag {
  margin: 4px 0 0; font-size: 11px;
  color: rgba(34,211,238,0.7);
  letter-spacing: 3px; font-weight: 600;
  font-family: ui-monospace, monospace;
}

/* Hero */
.axl-hero { position: relative; z-index: 2; max-width: 620px; }
.axl-hero-title {
  margin: 0 0 22px; font-size: 44px; font-weight: 800;
  line-height: 1.15; letter-spacing: -0.5px;
}
.axl-hero-line1 {
  background: linear-gradient(90deg, #e2e8f0, #67e8f9 70%, #93c5fd);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
.axl-hero-line2 {
  background: linear-gradient(90deg, #22d3ee, #60a5fa 60%, #a78bfa);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
.axl-hero-desc {
  color: #8ea8c0; font-size: 14.5px; line-height: 1.8;
  margin: 0 0 36px; max-width: 560px;
}

/* 3 个特性 */
.axl-feats { display: flex; flex-direction: column; gap: 16px; }
.axl-feat {
  display: flex; align-items: center; gap: 16px;
}
.axl-feat-ico {
  width: 44px; height: 44px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.axl-feat-ico svg { width: 22px; height: 22px; }
.axl-feat-cyan    { background: rgba(34,211,238,0.10); border: 1px solid rgba(34,211,238,0.20); color: #22d3ee; }
.axl-feat-violet  { background: rgba(139,92,246,0.10); border: 1px solid rgba(139,92,246,0.20); color: #a78bfa; }
.axl-feat-emerald { background: rgba(16,185,129,0.10); border: 1px solid rgba(16,185,129,0.20); color: #34d399; }
.axl-feat-name { font-size: 14.5px; font-weight: 600; }
.axl-text-cyan    { color: #67e8f9; }
.axl-text-violet  { color: #c4b5fd; }
.axl-text-emerald { color: #6ee7b7; }
.axl-feat-sub { font-size: 12.5px; color: #607890; margin-top: 2px; }

.axl-left-foot {
  position: relative; z-index: 2;
  font-size: 11px;
  color: rgba(100, 120, 144, 0.55);  /* v1.18.6 更柔和的沉底感 */
  letter-spacing: 0.4px;
}

/* ========== 右栏：表单（1/3 宽）========== */
.axl-right {
  flex: 1 1 36%;
  width: 36%; min-width: 0;
  position: relative; z-index: 5;
  display: flex; flex-direction: column; justify-content: center;
  padding: 60px clamp(36px, 3.5vw, 56px);
}
.axl-right > * { max-width: 400px; width: 100%; align-self: center; }
@media (max-width: 1023px) {
  .axl-right { width: 100%; flex: 1 1 100%; padding: 40px 24px; }
}

/* 中间扫描光束（v1.18.6 加亮 + 加粗 + 加快） */
.axl-divider {
  position: absolute; left: 0; top: 0; bottom: 0; width: 2px;
  background: linear-gradient(to bottom,
    transparent 0%,
    rgba(0,212,255,0.20) 15%,
    rgba(0,212,255,0.60) 50%,
    rgba(0,212,255,0.20) 85%,
    transparent 100%);
  animation: axl-div-pulse 2.4s ease-in-out infinite;
}
/* 拖尾光带 */
.axl-divider::before {
  content: ''; position: absolute;
  left: -5px; width: 12px; height: 140px;
  background: linear-gradient(to bottom,
    transparent 0%,
    rgba(0,212,255,0.55) 25%,
    rgba(200,250,255,1) 50%,
    rgba(0,212,255,0.55) 75%,
    transparent 100%);
  filter: blur(3px); border-radius: 50%;
  animation: axl-div-scan 2.6s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
/* 亮点光球 */
.axl-divider::after {
  content: ''; position: absolute;
  left: -5px; width: 11px; height: 11px;
  background: radial-gradient(circle,
    rgba(255,255,255,1) 0%,
    rgba(180,250,255,0.95) 30%,
    rgba(0,212,255,0.85) 60%,
    transparent 80%);
  border-radius: 50%;
  box-shadow:
    0 0 16px rgba(180,250,255,1),
    0 0 32px rgba(0,212,255,0.8),
    0 0 48px rgba(0,212,255,0.4);
  animation: axl-div-scan 2.6s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@media (max-width: 1023px) { .axl-divider { display: none; } }
@keyframes axl-div-pulse {
  0%, 100% { opacity: 0.35; }
  50%      { opacity: 0.80; }
}
@keyframes axl-div-scan {
  0%   { top: -10%; opacity: 0; }
  8%   { opacity: 1; }
  92%  { opacity: 1; }
  100% { top: 110%; opacity: 0; }
}

/* 移动端 logo */
.axl-mobile-brand { display: none; text-align: center; margin-bottom: 32px; }
@media (max-width: 1023px) { .axl-mobile-brand { display: block; } }
.axl-logo-mobile { margin: 0 auto 14px; }

/* 欢迎 */
.axl-welcome { margin-bottom: 28px; }
.axl-welcome-title {
  margin: 0 0 6px; font-size: 24px; font-weight: 700;
  background: linear-gradient(90deg, #67e8f9, #60a5fa);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
}
.axl-welcome-sub { font-size: 13px; color: #7a9ab8; margin: 0; }

/* Tabs */
.axl-tabs {
  display: flex; gap: 4px; padding: 4px;
  background: rgba(10,22,40,0.80);
  border: 1px solid rgba(34,211,238,0.15);
  border-radius: 12px;
  margin-bottom: 28px;
}
.axl-tab {
  flex: 1;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 10px 0;
  background: transparent; border: 1px solid transparent;
  color: #607890; font-size: 13px; font-weight: 500;
  border-radius: 8px;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.18s;
}
.axl-tab svg { width: 14px; height: 14px; }
.axl-tab:hover { color: #a0b4cc; }
.axl-tab.active {
  background: rgba(34,211,238,0.12); color: #67e8f9;
  border-color: rgba(34,211,238,0.30);
  box-shadow: 0 0 10px rgba(0,212,255,0.10);
}
.axl-tab.active:nth-child(2) {       /* 注册 tab 提亮：紫色饱和度 + 亮度上调 */
  background: rgba(167,139,250,0.22);
  color: #ddd6fe;
  border-color: rgba(167,139,250,0.55);
  box-shadow: 0 0 16px rgba(167,139,250,0.30);
  text-shadow: 0 0 8px rgba(167,139,250,0.5);
}

/* 表单 */
.axl-form { display: flex; flex-direction: column; gap: 16px; }
.axl-field { display: flex; flex-direction: column; }
.axl-label {
  font-size: 12px; font-weight: 500; color: #a0b4cc;
  margin-bottom: 8px;
}
.axl-input-wrap { position: relative; }
.axl-input {
  width: 100%; box-sizing: border-box;
  padding: 13px 16px;
  background: rgba(10,22,40,0.80);
  border: 1px solid rgba(26,48,80,1);
  border-radius: 12px;
  color: #e2e8f0; font-size: 14px;
  outline: none;
  font-family: inherit;
  transition: border-color 0.18s, box-shadow 0.18s, background 0.18s;
}
.axl-input::placeholder { color: #4a6070; }
.axl-input:focus {
  border-color: rgba(34,211,238,0.45);
  box-shadow: 0 0 0 3px rgba(34,211,238,0.10);
  background: rgba(13,31,53,1);
}
.axl-input-wrap .axl-input { padding-right: 44px; }
.axl-eye {
  position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  background: transparent; border: none; padding: 4px;
  color: #4a6070; cursor: pointer; border-radius: 6px;
  display: flex; align-items: center; justify-content: center;
}
.axl-eye svg { width: 17px; height: 17px; }
.axl-eye:hover { color: #a0b4cc; }

.axl-error {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px;
  background: rgba(244,63,94,0.10);
  border: 1px solid rgba(244,63,94,0.25);
  border-radius: 10px;
  color: #fb7185; font-size: 12.5px;
}
.axl-error .dot {
  width: 6px; height: 6px; border-radius: 50%; background: #fb7185;
  box-shadow: 0 0 6px #fb7185;
}
.axl-shake-enter-active { animation: axl-shake 0.30s; }
@keyframes axl-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-5px); }
  75% { transform: translateX(5px); }
}

.axl-submit {
  margin-top: 6px;
  padding: 14px;
  background: linear-gradient(90deg, #22d3ee 0%, #3b82f6 50%, #8b5cf6 100%);
  color: #fff; font-weight: 600; font-size: 14px;
  border: none; border-radius: 12px;
  cursor: pointer;
  letter-spacing: 3px;
  box-shadow: 0 8px 20px rgba(0,212,255,0.25);
  transition: filter 0.18s, box-shadow 0.18s, transform 0.08s;
  font-family: inherit;
}
.axl-submit:hover:not(:disabled) {
  filter: brightness(1.10);
  box-shadow: 0 12px 28px rgba(0,212,255,0.45);
}
.axl-submit:active:not(:disabled) { transform: translateY(1px); }
.axl-submit:disabled { opacity: 0.6; cursor: not-allowed; }
.axl-submit-violet {
  background: linear-gradient(90deg, #a78bfa 0%, #8b5cf6 50%, #6d28d9 100%);
  box-shadow: 0 8px 20px rgba(139,92,246,0.30);
}
.axl-submit-violet:hover:not(:disabled) {
  box-shadow: 0 12px 28px rgba(139,92,246,0.45);
}
.axl-loading { display: inline-flex; align-items: center; gap: 8px; justify-content: center; }

/* 首次启动横幅 */
.axl-setup-banner {
  display: flex; align-items: center; gap: 12px;
  background: linear-gradient(135deg, rgba(16,185,129,0.12), rgba(34,211,238,0.10));
  border: 1px solid rgba(16,185,129,0.30);
  border-radius: 12px;
  padding: 12px 16px;
  margin-bottom: 4px;
}
.axl-setup-icon { font-size: 28px; flex-shrink: 0; }
.axl-setup-title { font-weight: 600; color: #6ee7b7; font-size: 14px; margin-bottom: 2px; }
.axl-setup-sub { color: #94c5d8; font-size: 12px; }
.axl-setup-sub b { color: #67e8f9; }

.axl-required { color: #fb7185; }
.axl-inv-ok {
  margin-top: 8px; padding: 8px 12px;
  background: rgba(16,185,129,0.10);
  border: 1px solid rgba(16,185,129,0.25);
  color: #6ee7b7; font-size: 12px;
  border-radius: 8px;
}
.axl-inv-ok b { color: #34d399; }
.axl-inv-err {
  margin-top: 8px; padding: 8px 12px;
  background: rgba(244,63,94,0.10);
  border: 1px solid rgba(244,63,94,0.25);
  color: #fb7185; font-size: 12px;
  border-radius: 8px;
}
.axl-help {
  margin-top: 8px;
  text-align: center;
  font-size: 12px;
  color: #607890;
}
.axl-help b { color: #67e8f9; }

/* v1.19 顶栏锁定按钮禁用态 + 高级配置 */
.hdr-btn.disabled,
.hdr-btn[disabled] {
  opacity: 0.4;
  cursor: not-allowed;
  filter: grayscale(0.5);
}
.hdr-btn.disabled:hover,
.hdr-btn[disabled]:hover {
  filter: grayscale(0.5);  /* 禁用态不响应 hover */
  transform: none;
}
.cfg-group { margin-bottom: 18px; }
.cfg-group-title {
  font-size: 13px; font-weight: 700;
  color: #1f2937;
  padding: 6px 0 10px;
  border-bottom: 1px solid #e5e7eb;
  margin-bottom: 12px;
}
.cfg-item {
  display: flex; align-items: center; gap: 18px;
  padding: 12px 0;
  border-bottom: 1px dashed #eef2f7;
}
.cfg-item:last-child { border-bottom: none; }
.cfg-item-info { flex: 1; min-width: 0; }
.cfg-item-label {
  font-size: 13.5px; font-weight: 600;
  color: #1f2937;
  display: flex; align-items: center; flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 4px;
}
.cfg-item-desc { font-size: 12.5px; color: #6b7280; line-height: 1.55; }
.cfg-item-meta { font-size: 11px; color: #9ca3af; margin-top: 4px; }
.cfg-item-ctrl { flex-shrink: 0; }

/* v1.19.3 主开关 + 子开关层级 */
.cfg-item-parent {
  background: rgba(59, 130, 246, 0.04);
  border-left: 3px solid #3b82f6;
  padding-left: 12px;
  border-bottom: 1px solid #e5e7eb;
}
.cfg-item-parent .cfg-item-label { color: #1d4ed8; }
.cfg-item-child {
  padding-left: 36px;     /* 子项缩进 */
}
.cfg-item-tree {
  display: inline-block;
  color: #9ca3af;
  font-family: monospace;
  margin-right: 4px;
}
.cfg-item-disabled .cfg-item-label,
.cfg-item-disabled .cfg-item-desc {
  color: #94a3b8 !important;
  opacity: 0.7;
}
.cfg-item-disabled .cfg-item-tree { color: #cbd5e1; }

/* v1.21.1 漂亮的进度遮罩 — 替代 ElLoading 的黑色全遮罩 */
.smart-loader-mask {
  position: fixed; inset: 0; z-index: 9999;
  background: radial-gradient(circle at center,
    rgba(15, 23, 42, 0.45) 0%,
    rgba(15, 23, 42, 0.70) 100%);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
}
.smart-loader-card {
  background: linear-gradient(135deg, #ffffff 0%, #f5f7fa 100%);
  border-radius: 18px;
  padding: 36px 52px;
  box-shadow: 0 24px 64px rgba(0,0,0,0.30),
              0 0 0 1px rgba(99,102,241,0.10) inset;
  text-align: center;
  min-width: 360px;
  animation: smart-loader-pop 0.32s cubic-bezier(0.2, 1.4, 0.4, 1) both;
}
@keyframes smart-loader-pop {
  0%   { opacity: 0; transform: scale(0.85) translateY(20px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}

/* 双环旋转 */
.smart-loader-ring {
  position: relative;
  width: 96px; height: 96px;
  margin: 0 auto 22px;
}
.smart-loader-ring .ring-outer,
.smart-loader-ring .ring-inner {
  position: absolute; inset: 0;
  border-radius: 50%;
  border: 4px solid transparent;
}
.smart-loader-ring .ring-outer {
  border-top-color: #3b82f6;
  border-right-color: #06b6d4;
  animation: smart-loader-spin 1.2s linear infinite;
}
.smart-loader-ring .ring-inner {
  inset: 14px;
  border-top-color: #8b5cf6;
  border-left-color: #ec4899;
  animation: smart-loader-spin 0.9s linear infinite reverse;
}
.smart-loader-ring .ring-center {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 30px;
  animation: smart-loader-bounce 1.4s ease-in-out infinite;
}
@keyframes smart-loader-spin {
  to { transform: rotate(360deg); }
}
@keyframes smart-loader-bounce {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.1); }
}

.smart-loader-title {
  font-size: 18px; font-weight: 700;
  color: #1f2937;
  margin-bottom: 8px;
}
.smart-loader-step {
  font-size: 14px;
  color: #4b5563;
  min-height: 22px;
  transition: opacity 0.3s;
}
.smart-loader-time {
  font-size: 12px;
  color: #9ca3af;
  margin-top: 10px;
  font-family: ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
}
.smart-loader-tip {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px dashed #e5e7eb;
  font-size: 12px; color: #6b7280;
  line-height: 1.6;
  max-width: 320px;
}
/* Vue transition */
.loader-fade-enter-active, .loader-fade-leave-active {
  transition: opacity 0.22s ease;
}
.loader-fade-enter-from, .loader-fade-leave-to {
  opacity: 0;
}

/* v1.20.6 智能导入卡片 */
.smart-import-card {
  display: flex; align-items: center; gap: 24px;
  margin-bottom: 14px;
  padding: 18px 24px;
  background: linear-gradient(135deg, #eff6ff 0%, #f3e8ff 100%);
  border: 1px solid rgba(59, 130, 246, 0.18);
  border-radius: 12px;
  box-shadow: 0 2px 12px rgba(59, 130, 246, 0.05);
}
.smart-import-info { flex: 1; min-width: 0; }
.smart-import-title {
  font-size: 16px; font-weight: 700;
  color: #1e40af;
  display: flex; align-items: center;
  margin-bottom: 6px;
}
.smart-import-emoji {
  font-size: 22px;
  margin-right: 8px;
}
.smart-import-desc {
  font-size: 13px;
  color: #475569;
  line-height: 1.65;
}
.smart-import-desc b { color: #1f2937; }

/* v1.18 邀请码代码块 */
.inv-code {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 13px; font-weight: 600;
  color: #2563eb;
  background: #eef2ff;
  padding: 2px 8px; border-radius: 4px;
  letter-spacing: 1px;
}
.axl-spin {
  width: 16px; height: 16px; border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.35);
  border-top-color: #fff;
  animation: axl-spin 0.7s linear infinite;
}
@keyframes axl-spin { to { transform: rotate(360deg); } }

/* 注册提示 */
.axl-register-tip {
  text-align: center;
  padding: 24px 8px;
}
.axl-register-icon {
  width: 56px; height: 56px; margin: 0 auto 16px;
  display: flex; align-items: center; justify-content: center;
  background: rgba(139,92,246,0.12);
  border: 1px solid rgba(139,92,246,0.30);
  border-radius: 14px;
  color: #c4b5fd;
}
.axl-register-icon svg { width: 28px; height: 28px; }
.axl-register-title { font-size: 16px; font-weight: 600; color: #c4b5fd; margin-bottom: 10px; }
.axl-register-desc { font-size: 13px; color: #8ea8c0; line-height: 1.7; }
.axl-secondary {
  margin-top: 18px;
  padding: 10px 24px;
  background: rgba(10,22,40,0.6);
  border: 1px solid rgba(34,211,238,0.20);
  color: #67e8f9;
  border-radius: 10px;
  cursor: pointer;
  font-family: inherit;
  font-size: 13px;
}
.axl-secondary:hover {
  background: rgba(34,211,238,0.08);
  border-color: rgba(34,211,238,0.40);
}

/* 快速登录 */
.axl-quick {
  margin-top: 28px; padding-top: 24px;
  border-top: 1px solid rgba(26,48,80,1);
}
.axl-quick-title {
  text-align: center; font-size: 11px; color: #4a6070;
  margin: 0 0 14px; letter-spacing: 1px;
}
.axl-roles {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.axl-role {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 11px 14px;
  background: rgba(10,22,40,0.6);
  border: 1px solid rgba(26,48,80,1);
  border-radius: 12px;
  color: #a0b4cc; font-size: 12.5px; font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: all 0.18s;
}
.axl-role:disabled { opacity: 0.5; cursor: not-allowed; }
.axl-role em {
  margin-left: auto; font-style: normal;
  font-size: 10.5px; color: #4a6070;
  font-family: ui-monospace, monospace;
}
.axl-role .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: currentColor;
  box-shadow: 0 0 6px currentColor;
  flex-shrink: 0;
}
.axl-role-admin    { color: #67e8f9; border-color: rgba(34,211,238,0.18); }
.axl-role-leader   { color: #6ee7b7; border-color: rgba(16,185,129,0.18); }
.axl-role-auditor  { color: #fbbf24; border-color: rgba(245,158,11,0.18); }
.axl-role-reviewer { color: #c4b5fd; border-color: rgba(139,92,246,0.18); }
.axl-role:hover:not(:disabled) {
  background: rgba(13,31,53,1);
  transform: translateY(-1px);
  filter: brightness(1.15);
}

.axl-mobile-foot {
  display: none;
  text-align: center; margin-top: 24px;
  font-size: 11px; color: #485a72;
}
@media (max-width: 1023px) { .axl-mobile-foot { display: block; } }

/* ========== 兼容旧 v1.16 ax-* 选择器 ========== */
.ax-login {
  position: fixed; inset: 0;
  background: #0a0e1a;        /* dark-950 */
  color: #e2e8f0;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  font-family: "Inter", -apple-system, BlinkMacSystemFont,
               "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
/* 动画背景 */
.ax-login .ax-bg {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
}
.ax-grid {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(59,130,246,0.10) 1px, transparent 1px),
    linear-gradient(90deg, rgba(59,130,246,0.10) 1px, transparent 1px);
  background-size: 60px 60px;
  mask-image: radial-gradient(ellipse at center, black 40%, transparent 80%);
}
.ax-orb {
  position: absolute; border-radius: 50%;
  filter: blur(60px);
  opacity: 0.55;
  animation: ax-pulse 6s ease-in-out infinite;
}
.ax-orb-1 { top: 20%; left: 18%; width: 380px; height: 380px;
  background: radial-gradient(circle, rgba(59,130,246,0.55), transparent 70%); }
.ax-orb-2 { bottom: 18%; right: 18%; width: 320px; height: 320px;
  background: radial-gradient(circle, rgba(139,92,246,0.55), transparent 70%);
  animation-delay: 1.5s; }
.ax-orb-3 { top: 48%; right: 30%; width: 250px; height: 250px;
  background: radial-gradient(circle, rgba(34,211,238,0.45), transparent 70%);
  animation-delay: 3s; }
@keyframes ax-pulse {
  0%, 100% { opacity: 0.45; transform: scale(1); }
  50%      { opacity: 0.70; transform: scale(1.08); }
}

/* 中央舞台 */
.ax-stage {
  position: relative; z-index: 10;
  width: 100%; max-width: 420px; padding: 0 16px;
  animation: ax-enter 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes ax-enter {
  0%   { opacity: 0; transform: translateY(28px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* 品牌 */
.ax-brand { text-align: center; margin-bottom: 30px; }
.ax-logo {
  width: 76px; height: 76px; margin: 0 auto 20px;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
  border-radius: 18px; color: #fff;
  box-shadow: 0 12px 30px rgba(59,130,246,0.35),
              0 0 0 1px rgba(255,255,255,0.08) inset;
  animation: ax-logo-bounce 0.6s cubic-bezier(0.2, 1.6, 0.4, 1) both;
}
.ax-logo svg { width: 38px; height: 38px;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,0.25)); }
@keyframes ax-logo-bounce {
  0% { transform: scale(0); }
  60% { transform: scale(1.08); }
  100% { transform: scale(1); }
}
.ax-title {
  margin: 0 0 6px; font-size: 30px; font-weight: 800;
  background: linear-gradient(90deg, #38bdf8, #818cf8 60%, #c4b5fd);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  letter-spacing: 0.5px;
}
.ax-subtitle {
  color: #64748b; font-size: 13px;
  letter-spacing: 0.4px;
}

/* 玻璃卡 */
.ax-card {
  background: rgba(15,23,42,0.55);
  border: 1px solid rgba(99,102,241,0.18);
  border-radius: 20px;
  padding: 32px;
  backdrop-filter: blur(16px) saturate(1.4);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  box-shadow: 0 24px 60px rgba(0,0,0,0.45),
              0 0 0 1px rgba(255,255,255,0.04) inset;
}
.ax-form { display: flex; flex-direction: column; gap: 18px; }
.ax-field { display: flex; flex-direction: column; }
.ax-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 500;
  color: #cbd5e1; margin-bottom: 8px;
}
.ax-label-icon { width: 14px; height: 14px; color: #94a3b8; }
.ax-input-wrap { position: relative; }
.ax-input {
  width: 100%; box-sizing: border-box;
  padding: 13px 16px;
  background: rgba(30,41,59,0.65);
  border: 1px solid rgba(99,102,241,0.20);
  border-radius: 12px;
  color: #e2e8f0; font-size: 14px;
  outline: none;
  transition: border-color 0.18s, box-shadow 0.18s, background 0.18s;
  font-family: inherit;
}
.ax-input::placeholder { color: #475569; }
.ax-input:focus {
  border-color: rgba(99,102,241,0.55);
  background: rgba(30,41,59,0.85);
  box-shadow: 0 0 0 3px rgba(99,102,241,0.15);
}
.ax-input[type="password"], .ax-input-wrap .ax-input { padding-right: 44px; }
.ax-eye {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  background: transparent; border: none; padding: 4px;
  color: #64748b; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  border-radius: 6px;
}
.ax-eye svg { width: 18px; height: 18px; }
.ax-eye:hover { color: #cbd5e1; background: rgba(255,255,255,0.04); }

.ax-error {
  display: flex; align-items: center; gap: 8px;
  padding: 11px 14px;
  background: rgba(244,63,94,0.10);
  border: 1px solid rgba(244,63,94,0.25);
  border-radius: 12px;
  color: #fb7185; font-size: 13px;
}
.ax-error svg { width: 16px; height: 16px; flex-shrink: 0; }
.ax-shake-enter-active { animation: ax-shake 0.32s; }
@keyframes ax-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-6px); }
  75% { transform: translateX(6px); }
}

.ax-submit {
  width: 100%; padding: 14px;
  margin-top: 4px;
  background: linear-gradient(90deg, #2563eb 0%, #7c3aed 100%);
  color: #fff; font-weight: 600; font-size: 15px;
  border: none; border-radius: 12px;
  cursor: pointer;
  box-shadow: 0 10px 24px rgba(37,99,235,0.30);
  transition: filter 0.2s, transform 0.1s, box-shadow 0.2s;
  font-family: inherit;
  letter-spacing: 2px;
}
.ax-submit:hover:not(:disabled) {
  filter: brightness(1.08);
  box-shadow: 0 14px 32px rgba(37,99,235,0.45);
}
.ax-submit:active:not(:disabled) { transform: translateY(1px); }
.ax-submit:disabled { opacity: 0.6; cursor: not-allowed; }
.ax-submit-inner { display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.ax-submit-inner svg { width: 18px; height: 18px; }
.ax-spin {
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.35);
  border-top-color: #fff;
  animation: ax-spin 0.7s linear infinite;
}
@keyframes ax-spin { to { transform: rotate(360deg); } }

/* 分隔线 + 角色 */
.ax-divider {
  display: flex; align-items: center; gap: 14px;
  margin: 22px 0 16px;
}
.ax-divider::before, .ax-divider::after {
  content: ''; flex: 1; height: 1px;
  background: rgba(148,163,184,0.18);
}
.ax-divider span {
  font-size: 11px; color: #64748b; letter-spacing: 1.2px; text-transform: uppercase;
}

.ax-roles {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}
.ax-role {
  background: rgba(30,41,59,0.5);
  border: 1px solid rgba(99,102,241,0.12);
  border-radius: 12px;
  padding: 12px 8px;
  color: #cbd5e1;
  font-family: inherit;
  cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  transition: all 0.18s;
}
.ax-role:hover:not(:disabled) {
  background: rgba(51,65,85,0.65);
  border-color: rgba(99,102,241,0.30);
  transform: translateY(-2px);
}
.ax-role:disabled { opacity: 0.5; cursor: not-allowed; }
.ax-role-icon {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 10px;
}
.ax-role-icon svg { width: 18px; height: 18px; }
.ax-role-admin    { background: rgba(59,130,246,0.20); color: #60a5fa; }
.ax-role-leader   { background: rgba(16,185,129,0.20); color: #34d399; }
.ax-role-auditor  { background: rgba(245,158,11,0.20); color: #fbbf24; }
.ax-role-reviewer { background: rgba(139,92,246,0.22); color: #a78bfa; }
.ax-role-label { font-size: 12px; font-weight: 600; color: #e2e8f0; }
.ax-role-sub { font-size: 10px; color: #64748b; font-family: ui-monospace, monospace; }

.ax-footer {
  text-align: center; margin-top: 24px;
  font-size: 11px; color: #475569; letter-spacing: 0.4px;
  font-family: ui-monospace, monospace;
}

/* 移动端 */
@media (max-width: 480px) {
  .ax-card { padding: 24px 20px; }
  .ax-roles { grid-template-columns: repeat(2, 1fr); }
}

.app-layout { height: 100%; display: flex; flex-direction: column; min-height: 0; }
.app-header {
  /* v2.3.8 fix: flex 列里固定占位，绝不被压缩——否则顶栏背景框会塌陷并盖住下方页面标题 */
  flex: 0 0 66px;
  height: 66px; color: #fff; display: flex; align-items: center;
  padding: 0 20px 0 14px; justify-content: space-between;
  /* 深蓝渐变 + 顶部 1px 青色霓虹线 */
  background:
    linear-gradient(180deg, #0e1c3a 0%, #122348 100%);
  border-bottom: 1px solid rgba(34,211,238,0.20);
  /* v2.3.8: 收紧向下阴影，避免盖住下方页面标题 */
  box-shadow: 0 1px 0 rgba(95,225,255,0.20),
              0 2px 6px rgba(0,0,0,0.22);
  position: relative; z-index: 10;
}
.app-header::after {
  content: ''; position: absolute; bottom: -1px; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg,
    transparent 0%, rgba(95,225,255,0.0) 10%,
    #5fe1ff 50%,
    rgba(95,225,255,0.0) 90%, transparent 100%);
  /* v2.3.8 fix: 收窄霓虹光晕，避免向下溢出干扰页面标题 */
  box-shadow: 0 0 6px rgba(95,225,255,0.55);
  pointer-events: none;
}
.app-header .title {
  display: flex; align-items: center; gap: 16px;
  font-size: 18px; font-weight: 700;
}

/* AuditX-Agent 原版 Logo：cyan→blue 渐变方块 + Shield + 脉冲呼吸 */
.app-header .app-logo {
  width: 46px; height: 46px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%);
  border-radius: 10px;
  color: #fff;
  animation: audit-logo-pulse 2s ease-in-out infinite;
}
.app-header .app-logo svg {
  width: 32px; height: 32px;
}
@keyframes audit-logo-pulse {
  0%, 100% {
    transform: scale(1);
    filter: drop-shadow(0 0 5px #00d4ff);
  }
  50% {
    transform: scale(1.1);
    filter: drop-shadow(0 0 15px #00d4ff);
  }
}

/* 标题文字 + 副标题双行 */
.title-stack {
  display: flex; flex-direction: column; line-height: 1.15;
}
.app-header .title-text {
  background: linear-gradient(90deg, #67e8f9 0%, #22d3ee 50%, #60a5fa 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont,
               "Segoe UI", "PingFang SC", sans-serif;
  font-size: 23px; font-weight: 900;
  letter-spacing: 0.2px;                /* 字间距压缩 */
  line-height: 1.1;
  text-rendering: optimizeLegibility;
  filter: drop-shadow(0 0 8px rgba(95,225,255,0.55))
          drop-shadow(0 0 16px rgba(34,211,238,0.3));
  white-space: nowrap;
  /* 水平方向压缩 8%，从左侧锚定不影响左对齐 */
  transform: scaleX(0.92);
  transform-origin: left center;
  display: inline-block;
}
.app-header .title-sub {
  color: #a0b4cc; font-size: 11px; font-weight: 500;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  margin-top: 2px;
  /* 撑满父容器（= 主标题原始布局宽度）+ 单行 justify 摊开字符 */
  align-self: stretch;
  text-align: justify;
  text-align-last: justify;
  text-justify: inter-character;
  letter-spacing: 0.3px;        /* 减小本身字距，把展宽空间留给 justify */
  /* 与主标题同步水平压缩 → 视觉宽度自动对齐到 "AuditX Agent" */
  transform: scaleX(0.92);
  transform-origin: left center;
}
.app-header .title-ver {
  align-self: flex-end;
  margin: 0 0 -9px 6px;          /* 负 margin 让它向下溢出，骑在底边霓虹线上 */
  background: rgba(95,225,255,0.14) !important;
  border: 1px solid rgba(95,225,255,0.45) !important;
  color: #b7f0ff !important;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-weight: 600; letter-spacing: 0.4px;
  font-size: 10px !important;
  height: 18px !important;
  line-height: 16px !important;
  padding: 0 7px !important;
  border-radius: 4px !important;
  position: relative; z-index: 11;
  box-shadow: 0 2px 6px rgba(0,0,0,0.35),
              0 0 6px rgba(95,225,255,0.20);
}
.app-header .user-area { display: flex; align-items: center; gap: 12px; }

/* ============ Header v1.34：项目栏卡片化（更显眼、双层信息） ============ */

.app-header .proj-bar {
  flex: 1; display: flex; align-items: center; gap: 12px;
  padding: 0 24px;
  min-width: 0;                  /* 允许内部 ellipsis 生效 */
}

/* 主卡片 — v1.34.4 单卡片集成 popover 切换；紧凑、青蓝主调、可点击 */
.app-header .proj-card {
  display: flex; align-items: center; gap: 10px;
  padding: 5px 38px 5px 9px;          /* 右侧留出 caret 空间 */
  border-radius: 10px;
  background: linear-gradient(135deg,
    rgba(6,182,212,0.05) 0%,
    rgba(59,130,246,0.08) 100%);
  border: 1px solid rgba(95,225,255,0.20);
  min-width: 0; max-width: 460px;
  cursor: pointer;
  position: relative;
  transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;
}
.app-header .proj-card.has-project {
  background: linear-gradient(135deg,
    rgba(6,182,212,0.12) 0%,
    rgba(59,130,246,0.16) 100%);
  border-color: rgba(95,225,255,0.42);
  box-shadow:
    0 0 0 1px rgba(95,225,255,0.08) inset,
    0 0 12px rgba(95,225,255,0.12);
}
.app-header .proj-card:hover {
  border-color: rgba(95,225,255,0.65);
  background: linear-gradient(135deg,
    rgba(6,182,212,0.18) 0%,
    rgba(59,130,246,0.22) 100%);
  box-shadow:
    0 0 0 1px rgba(95,225,255,0.15) inset,
    0 0 16px rgba(95,225,255,0.22);
}
.app-header .proj-card-icon {
  width: 30px; height: 30px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%);
  color: #fff;
  border-radius: 7px;
  font-size: 16px;
  box-shadow:
    0 0 0 1px rgba(95,225,255,0.28) inset,
    0 0 6px rgba(95,225,255,0.18);
}
.app-header .proj-card-body {
  display: flex; flex-direction: column; min-width: 0;
  flex: 1 1 auto;
  line-height: 1.2;
  gap: 1px;
}
.app-header .proj-card-name {
  color: #fff;
  font-size: 14.5px; font-weight: 700;
  letter-spacing: 0.2px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  text-shadow:
    0 1px 2px rgba(0,0,0,0.40),
    0 0 8px rgba(95,225,255,0.20);
}
.app-header .proj-card-empty-title {
  color: rgba(212,223,238,0.65);
  font-size: 13px; font-weight: 500;
  font-style: italic;
  letter-spacing: 0.2px;
}
.app-header .proj-card-meta {
  display: flex; align-items: center; gap: 5px;
  font-size: 11px;
  color: rgba(190,215,240,0.72);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  letter-spacing: 0.3px;
}
.app-header .proj-card-meta .proj-no {
  color: #c0d8ee;
  background: rgba(255,255,255,0.05);
  padding: 1px 5px; border-radius: 3px;
  font-weight: 600;
  font-size: 10.5px;
}
.app-header .proj-card-meta .dot-sep { color: rgba(95,225,255,0.50); font-weight: 700; }
.app-header .proj-card-meta .proj-year {
  color: #e0eaf5; font-weight: 600;
}
.app-header .proj-card-meta .proj-region.zj {
  background: linear-gradient(135deg, rgba(34,211,238,0.22), rgba(59,130,246,0.18));
  color: #d0f4ff;
  padding: 1px 6px; border-radius: 3px;
  border: 1px solid rgba(95,225,255,0.42);
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", sans-serif;
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.3px;
  line-height: 1.4;
  text-shadow: 0 1px 2px rgba(0,0,0,0.30);
}
/* 下拉指示箭头 — 右侧绝对定位，hover/打开时旋转 */
.app-header .proj-card-caret {
  position: absolute; right: 12px; top: 50%;
  transform: translateY(-50%);
  color: rgba(120,230,255,0.65);
  font-size: 14px;
  transition: color 0.2s, transform 0.25s;
  pointer-events: none;
}
.app-header .proj-card:hover .proj-card-caret { color: #67e8f9; }
.app-header .proj-card[aria-describedby] .proj-card-caret {
  transform: translateY(-50%) rotate(180deg);
  color: #67e8f9;
}

/* 项目切换 popover 内容（弹层）— v1.34.6 浅色背景，对比清晰 */
.proj-popover-pop {
  background: #ffffff !important;
  border: 1px solid #e5e7eb !important;
  box-shadow:
    0 6px 20px rgba(15,23,42,0.16),
    0 2px 6px rgba(15,23,42,0.08) !important;
  padding: 10px !important;
  border-radius: 10px !important;
}
.proj-popover-pop .proj-pop {
  display: flex; flex-direction: column; gap: 8px;
}
.proj-popover-pop .proj-pop-search .el-input__wrapper {
  background: #f9fafb !important;
  box-shadow: 0 0 0 1px #e5e7eb inset !important;
  transition: box-shadow 0.2s;
}
.proj-popover-pop .proj-pop-search .el-input__wrapper:hover {
  box-shadow: 0 0 0 1px #93c5fd inset !important;
}
.proj-popover-pop .proj-pop-search .el-input__wrapper.is-focus {
  box-shadow: 0 0 0 1px #3b82f6 inset !important;
}
.proj-popover-pop .proj-pop-search .el-input__inner {
  color: #1f2937 !important;
}
.proj-popover-pop .proj-pop-search .el-input__inner::placeholder {
  color: #9ca3af !important;
}
.proj-popover-pop .proj-pop-search .el-input__prefix {
  color: #6b7280 !important;
}
.proj-popover-pop .proj-pop-list {
  max-height: 340px; overflow-y: auto;
  margin: 0 -2px; padding: 0 2px;
}
.proj-popover-pop .proj-pop-list::-webkit-scrollbar {
  width: 6px;
}
.proj-popover-pop .proj-pop-list::-webkit-scrollbar-thumb {
  background: #d1d5db; border-radius: 3px;
}
.proj-popover-pop .proj-pop-list::-webkit-scrollbar-thumb:hover {
  background: #9ca3af;
}
.proj-popover-pop .proj-pop-empty {
  padding: 24px 12px; text-align: center;
  color: #9ca3af; font-size: 12px;
}
.proj-popover-pop .proj-pop-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-radius: 6px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  border: 1px solid transparent;
}
.proj-popover-pop .proj-pop-item + .proj-pop-item { margin-top: 2px; }
.proj-popover-pop .proj-pop-item:hover {
  background: #f3f4f6;
}
.proj-popover-pop .proj-pop-item.active {
  background: linear-gradient(135deg,
    rgba(6,182,212,0.10), rgba(59,130,246,0.14));
  border-color: rgba(59,130,246,0.40);
  box-shadow: 0 0 10px rgba(59,130,246,0.10);
}
.proj-popover-pop .pp-icon {
  width: 28px; height: 28px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #e0f2fe, #dbeafe);
  border-radius: 7px;
  color: #2563eb;
  font-size: 15px;
}
.proj-popover-pop .proj-pop-item.active .pp-icon {
  background: linear-gradient(135deg, #06b6d4, #3b82f6);
  color: #fff;
  box-shadow: 0 0 8px rgba(59,130,246,0.30);
}
.proj-popover-pop .pp-body { flex: 1 1 auto; min-width: 0; }
.proj-popover-pop .pp-name {
  color: #111827; font-size: 14px; font-weight: 600;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.proj-popover-pop .pp-meta {
  display: flex; align-items: center; gap: 4px;
  margin-top: 2px;
  color: #6b7280;
  font-size: 11.5px;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}
.proj-popover-pop .pp-meta .dot-sep { color: #d1d5db; }
.proj-popover-pop .pp-check {
  color: #2563eb; font-size: 16px; flex-shrink: 0;
}

/* 项目切换下拉 — v1.34.3 放大放亮，作为"次焦点" */
.app-header .proj-select {
  width: 260px;
}
.app-header .proj-select .el-select__wrapper {
  background: linear-gradient(135deg,
    rgba(95,225,255,0.14) 0%,
    rgba(59,130,246,0.18) 100%) !important;
  border: 1px solid rgba(95,225,255,0.42) !important;
  box-shadow:
    0 0 0 1px rgba(95,225,255,0.06) inset,
    0 0 10px rgba(95,225,255,0.14) !important;
  transition: all 0.2s;
  min-height: 40px !important;        /* 34 → 40，跟 proj-card 同高 */
  padding: 0 12px !important;
  cursor: pointer;
}
.app-header .proj-select .el-select__wrapper:hover {
  background: linear-gradient(135deg,
    rgba(95,225,255,0.22) 0%,
    rgba(59,130,246,0.26) 100%) !important;
  border-color: rgba(95,225,255,0.70) !important;
  box-shadow:
    0 0 0 1px rgba(95,225,255,0.16) inset,
    0 0 18px rgba(95,225,255,0.30) !important;
}
.app-header .proj-select .el-select__wrapper.is-focused {
  border-color: #5fe1ff !important;
  box-shadow:
    0 0 0 2px rgba(95,225,255,0.22),
    0 0 18px rgba(95,225,255,0.35) !important;
}
.app-header .proj-select .el-select__placeholder {
  color: #e8f4ff !important;
  font-size: 14px !important;
  font-weight: 600;
  text-shadow: 0 1px 2px rgba(0,0,0,0.30);
}
.app-header .proj-select .el-select__placeholder.is-transparent {
  color: rgba(212,232,255,0.65) !important;
  font-weight: 500;
}
.app-header .proj-select .el-select__prefix {
  color: #67e8f9 !important;
  margin-right: 6px;
}
.app-header .proj-select .el-select__prefix .el-icon { font-size: 16px; }
.app-header .proj-select .el-select__suffix .el-icon {
  color: rgba(120,230,255,0.90) !important;
  font-size: 14px;
}

/* 项目状态徽标（已锁定 / 编辑中） */
.app-header .proj-status {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 11px; border-radius: 14px;
  font-size: 12px; font-weight: 700;
  border: 1.5px solid; line-height: 1;
  flex-shrink: 0;
  text-shadow: 0 1px 2px rgba(0,0,0,0.35);
  margin-left: auto;
}
.app-header .proj-status .el-icon { font-size: 13px; }
.app-header .proj-status.locked {
  color: #fff3d0;
  background: linear-gradient(135deg, rgba(245,158,11,0.30), rgba(217,119,6,0.40));
  border-color: rgba(252,211,77,0.70);
  box-shadow: 0 0 14px rgba(252,211,77,0.30);
}
.app-header .proj-status.editing {
  color: #d1fae5;
  background: linear-gradient(135deg, rgba(16,185,129,0.30), rgba(5,150,105,0.40));
  border-color: rgba(110,231,183,0.70);
  box-shadow: 0 0 14px rgba(110,231,183,0.30);
}
/* v1.19.1 状态机 4 种状态 */
.app-header .proj-status.state-draft {
  color: #e0e7ee;
  background: linear-gradient(135deg, rgba(100,116,139,0.30), rgba(71,85,105,0.40));
  border-color: rgba(148,163,184,0.65);
  box-shadow: 0 0 12px rgba(148,163,184,0.18);
}
.app-header .proj-status.state-under_review {
  color: #dbeafe;
  background: linear-gradient(135deg, rgba(59,130,246,0.30), rgba(37,99,235,0.40));
  border-color: rgba(96,165,250,0.70);
  box-shadow: 0 0 14px rgba(96,165,250,0.30);
}
.app-header .proj-status.state-reviewed {
  color: #d1fae5;
  background: linear-gradient(135deg, rgba(16,185,129,0.30), rgba(5,150,105,0.40));
  border-color: rgba(110,231,183,0.70);
  box-shadow: 0 0 14px rgba(110,231,183,0.30);
}
.app-header .proj-status.state-locked {
  color: #fff3d0;
  background: linear-gradient(135deg, rgba(245,158,11,0.32), rgba(217,119,6,0.42));
  border-color: rgba(252,211,77,0.75);
  box-shadow: 0 0 16px rgba(252,211,77,0.35);
}
/* Header 按钮（锁定 / 解锁） — v1.34.4 回归青蓝主调，跟项目卡片同色系 */
.app-header .hdr-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 14px; border-radius: 8px;
  background: rgba(95,225,255,0.06);
  border: 1px solid rgba(95,225,255,0.30);
  color: #b7f0ff; cursor: pointer;
  font-size: 12.5px; font-weight: 600;
  transition: all 0.2s;
  font-family: inherit;
  min-height: 32px;
}
.app-header .hdr-btn:hover {
  background: rgba(95,225,255,0.14);
  border-color: rgba(95,225,255,0.55);
  box-shadow: 0 0 0 1px rgba(95,225,255,0.18),
              0 0 12px rgba(95,225,255,0.22);
  transform: translateY(-1px);
}
/* 锁定项目 — 琥珀色微微暖（点缀，不喧宾夺主） */
.app-header .hdr-btn.warn {
  color: #fcd34d;
  border-color: rgba(252,211,77,0.42);
  background: rgba(252,211,77,0.08);
}
.app-header .hdr-btn.warn:hover {
  color: #fde68a;
  border-color: rgba(252,211,77,0.70);
  background: rgba(252,211,77,0.18);
  box-shadow: 0 0 0 1px rgba(252,211,77,0.20),
              0 0 14px rgba(252,211,77,0.32);
}
/* 解锁 — 翠绿微微暖 */
.app-header .hdr-btn.ok {
  color: #86efac;
  border-color: rgba(110,231,183,0.42);
  background: rgba(110,231,183,0.08);
}
.app-header .hdr-btn.ok:hover {
  color: #bbf7d0;
  border-color: rgba(110,231,183,0.70);
  background: rgba(110,231,183,0.18);
  box-shadow: 0 0 0 1px rgba(110,231,183,0.20),
              0 0 14px rgba(110,231,183,0.32);
}
/* disabled 状态 — 看得清"它在那"，但明显不可用 */
.app-header .hdr-btn.disabled,
.app-header .hdr-btn[disabled] {
  cursor: not-allowed;
  opacity: 1;
  color: rgba(176,210,238,0.55) !important;
  background: rgba(95,225,255,0.04) !important;
  border-color: rgba(95,225,255,0.22) !important;
  border-style: dashed !important;
  box-shadow: none;
  filter: none;
  text-shadow: none;
}
.app-header .hdr-btn.disabled:hover,
.app-header .hdr-btn[disabled]:hover {
  transform: none;
  background: rgba(95,225,255,0.06) !important;
  border-color: rgba(95,225,255,0.32) !important;
  color: rgba(190,220,245,0.68) !important;
}
.app-header .hdr-btn .el-icon { font-size: 13px; }

/* 用户区 */
.app-header .user-chip {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 5px 12px 5px 10px; border-radius: 18px;
  background: rgba(95,225,255,0.06);
  border: 1px solid rgba(95,225,255,0.25);
  color: #d4dfee; cursor: pointer; font-size: 13px;
  transition: all 0.2s;
}
.app-header .user-chip:hover {
  background: rgba(95,225,255,0.12);
  border-color: rgba(95,225,255,0.50);
  box-shadow: 0 0 12px rgba(95,225,255,0.20);
}
.app-header .user-chip .el-icon {
  color: #5fe1ff;
  filter: drop-shadow(0 0 4px rgba(95,225,255,0.5));
}
.app-header .user-name { font-weight: 600; letter-spacing: 0.3px; }
.app-header .role-pill {
  padding: 2px 8px; border-radius: 10px;
  background: rgba(95,225,255,0.15);
  border: 1px solid rgba(95,225,255,0.35);
  color: #b7f0ff; font-size: 10.5px; font-weight: 700;
  letter-spacing: 0.5px; text-transform: uppercase;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}
/* v1.27.5 sider-perf3: 用 CSS 变量驱动宽度 + sidebar absolute 定位，
   彻底避免 flex 兄弟 reflow（sidebar 变宽不再波及 mapping 等重内容主区）。
   --sider-w 由 body.sider-folded 类切换。 */
.app-body {
  flex: 1 1 0;
  min-height: 0;               /* v2.3.8 fix: flex 子项默认 min-height:auto 会被内容撑高，
                                  导致列溢出、顶栏被挤压塌陷盖住标题；归 0 才能正确分配高度 */
  position: relative;          /* sidebar absolute 定位基准 */
  overflow: hidden;
  --sider-w: 232px;            /* 默认展开宽度 */
}
body.sider-folded .app-body { --sider-w: 60px; }

/* v1.6 关联交易页 */
.rp-toolbar {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px; margin-bottom: 8px;
  background: linear-gradient(90deg, rgba(34,68,120,0.08), rgba(34,211,238,0.04));
  border: 1px solid rgba(34,211,238,0.15);
  border-radius: 8px;
}
.rp-dev-high { color: #f56c6c; font-weight: 700; }
.rp-dev-mid  { color: #e6a23c; font-weight: 600; }
.rp-dev-low  { color: #67c23a; }

/* v1.7 抽样工作台 */
.samp-layout { display: flex; gap: 12px; height: calc(100vh - 200px); min-height: 600px; }
.samp-left {
  width: 224px; flex-shrink: 0;
  display: flex; flex-direction: column;
  background: #f8fafc; border: 1px solid #e4e7ed; border-radius: 8px;
  overflow: hidden;
}
.samp-list-head {
  padding: 10px 14px; font-weight: 600;
  display: flex; justify-content: space-between; align-items: center;
  background: linear-gradient(90deg, #f1f5f9, #e2e8f0);
  border-bottom: 1px solid #e4e7ed;
}
.samp-list { flex: 1; overflow-y: auto; padding: 8px; }
.samp-list-item {
  padding: 10px 12px; margin-bottom: 6px; border-radius: 6px;
  cursor: pointer; border: 1px solid transparent; background: #fff;
  transition: all 0.2s;
}
.samp-list-item:hover {
  background: #f0f9ff; border-color: #bae6fd;
}
.samp-list-item.active {
  background: linear-gradient(135deg, #dbeafe, #e0f2fe);
  border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59,130,246,0.15);
}
.samp-item-title { font-size: 13px; font-weight: 600; color: #1f2937; }
.samp-item-name { font-size: 12px; color: #475569; margin: 2px 0; }
.samp-item-meta { font-size: 11px; color: #94a3b8; }
.samp-main { flex: 1; overflow: auto; }
.step-card { margin-bottom: 16px; }
.samp-diff-ok { color: #67c23a; }
.samp-diff-err { color: #f56c6c; font-weight: 600; }
.app-sider {
  width: 220px; background: #fff; border-right: 1px solid #eee; overflow-y: auto;
}
.app-content {
  /* sider-perf3: 不再 flex:1，改用 padding-left 让位 absolute sidebar */
  margin-left: var(--sider-w, 232px);
  height: 100%;
  overflow-y: auto; background: #f4f6fa; padding: 24px;
  transition: margin-left 0.18s cubic-bezier(0.4, 0, 0.2, 1);
  contain: layout style paint;   /* 隔离重绘范围 */
}

/* ============================================================ */
/* 科技风深色 Sidebar v1.4.8 — 林深见 AI 风格                    */
/*  - 纯黑底 + 青色霓虹                                           */
/*  - 玻璃磨砂卡片 + 文字 glow + 顶部高亮线                       */
/* ============================================================ */
.app-sider.tech-sider {
  /* sider-perf3: absolute 定位 + CSS 变量驱动宽度，脱离 flex 流 → sidebar 变宽不再触发 mapping/ledger 等重内容主区 reflow */
  position: absolute;
  top: 0; left: 0; bottom: 0;
  width: var(--sider-w, 232px);
  z-index: 5;
  /* 深蓝底 + 顶部/底部青色光晕 + 顶部 1px 青色高亮线 */
  background:
    radial-gradient(ellipse 100% 50% at 50% 0%, rgba(95,225,255,0.10) 0%, transparent 70%),
    radial-gradient(ellipse 80% 40% at 0% 100%, rgba(34,211,238,0.07) 0%, transparent 70%),
    linear-gradient(180deg, #0e1c3a 0%, #122348 50%, #0e1c3a 100%);
  border-right: 1px solid rgba(34,211,238,0.18);
  color: #c8d4e6;
  display: flex; flex-direction: column;
  overflow: visible; padding: 0;  /* visible: 让折叠按钮 fab 跨出右边沿 */
  transition: width 0.18s cubic-bezier(0.4, 0, 0.2, 1);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif;
  contain: layout style;     /* 隔离 sidebar 内部布局变化 */
}

/* 顶部 1px 青色霓虹细线（核心装饰） */
.app-sider.tech-sider::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(34,211,238,0.0) 8%,
    #5fe1ff 50%,
    rgba(34,211,238,0.0) 92%,
    transparent 100%);
  box-shadow: 0 0 8px rgba(95,225,255,0.6), 0 0 16px rgba(34,211,238,0.3);
  z-index: 2;
}

/* 网格纹（淡 cyan） */
.app-sider.tech-sider::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(95,225,255,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(95,225,255,0.05) 1px, transparent 1px);
  background-size: 36px 36px;
  mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 75%, transparent 100%);
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 25%, #000 75%, transparent 100%);
}

/* 折叠宽度由 body.sider-folded 切换 CSS 变量驱动；这条留作向后兼容（无 body class 时仍能折叠） */
.app-sider.tech-sider.collapsed { width: var(--sider-w, 60px); }

/* 折叠按钮：跨骑在 sidebar 右边沿、垂直居中
   展开/折叠态位置完全一致 → 视觉稳定 + 单手操作
   按钮中心位于 sidebar.right，一半在内一半在外 */
.sider-collapse-btn {
  position: absolute;
  top: 50%;
  right: -13px;
  transform: translateY(-50%);
  width: 26px; height: 26px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  /* 默认就是亮青色 + 自带光晕 */
  color: #67e8f9;
  font-size: 13px; font-weight: 700;
  border-radius: 50%;
  background: linear-gradient(135deg, #14305e 0%, #1a3e7a 100%);
  border: 1.5px solid rgba(95, 225, 255, 0.65);
  /* 4px 同色 ring 融入边沿 + 默认 8px 青色光晕 + 外阴影 */
  box-shadow:
    0 0 0 4px rgba(14, 28, 58, 0.4),
    0 0 8px rgba(95, 225, 255, 0.35),
    0 2px 8px rgba(0, 0, 0, 0.45);
  transition: color 0.2s, border-color 0.2s, background 0.2s,
              box-shadow 0.2s, transform 0.2s;
  z-index: 50;
}
.sider-collapse-btn .el-icon {
  /* 图标默认就有微光 */
  filter: drop-shadow(0 0 3px rgba(95, 225, 255, 0.6));
}
.sider-collapse-btn:hover {
  /* hover 时全方位拉满 */
  color: #b7f0ff;
  border-color: rgba(183, 240, 255, 0.95);
  background: linear-gradient(135deg, #1c4486 0%, #225aa8 100%);
  box-shadow:
    0 0 0 4px rgba(14, 28, 58, 0.4),
    0 0 16px rgba(95, 225, 255, 0.85),
    0 0 28px rgba(34, 211, 238, 0.45),
    0 2px 8px rgba(0, 0, 0, 0.5);
  transform: translateY(-50%) scale(1.12);
}
.sider-collapse-btn:hover .el-icon {
  filter: drop-shadow(0 0 6px rgba(183, 240, 255, 0.95));
}
.sider-collapse-btn:active {
  transform: translateY(-50%) scale(0.92);
}
/* 折叠态保持完全一致的位置 */
.app-sider.tech-sider.collapsed .sider-collapse-btn {
  top: 50%; right: -13px;
}

/* 菜单主体（按钮已挪到右边沿中部，顶部恢复正常 padding） */
.sider-menu {
  flex: 1; overflow-y: auto; overflow-x: hidden;
  padding: 14px 0 12px; position: relative; z-index: 1;
}
.app-sider.tech-sider.collapsed .sider-menu { padding-top: 14px; }
.sider-menu::-webkit-scrollbar { width: 3px; }
.sider-menu::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(95,225,255,0.4), rgba(34,211,238,0.2));
  border-radius: 2px;
}

/* 分组标题：青色小字 + 渐隐细线 */
.sider-group { margin: 4px 0 6px; }
.sider-group-label {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 18px 6px 14px; font-size: 10.5px; font-weight: 700;
  color: rgba(120,230,255,0.85); letter-spacing: 2px; text-transform: uppercase;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}
.grp-bar { width: 2px; height: 10px; border-radius: 1px; flex-shrink: 0;
  box-shadow: 0 0 6px currentColor, 0 0 10px currentColor; }
.grp-name { white-space: nowrap; text-shadow: 0 0 8px rgba(95,225,255,0.45); }
.grp-line { flex: 1; height: 1px;
  background: linear-gradient(90deg, rgba(95,225,255,0.35), transparent 80%); }
.sider-group-divider {
  height: 1px; margin: 14px 14px;
  background: linear-gradient(90deg, transparent, rgba(95,225,255,0.30), transparent);
  display: none;     /* v1.27.5 默认隐藏，仅折叠态显示（替代原 v-if/v-else 模板切换）*/
}
.app-sider.tech-sider.collapsed .sider-group-divider { display: block; }
.app-sider.tech-sider.collapsed .sider-item-name,
.app-sider.tech-sider.collapsed .sider-status-text,
.app-sider.tech-sider.collapsed .sider-version {
  display: none;     /* v1.27.5 折叠态隐藏文字（替代 v-if 销毁 DOM，零 reflow）*/
}

/* 菜单项 — 文字更亮（高对比度） */
.sider-item {
  display: flex; align-items: center; gap: 11px;
  padding: 9px 14px 9px 16px; margin: 1px 10px;
  color: #d4dfee; cursor: pointer; position: relative;
  border-radius: 6px; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  font-size: 13.5px; letter-spacing: 0.2px; font-weight: 500;
  text-decoration: none;
  border: 1px solid transparent;
  background: transparent;
}
.sider-item-indicator {
  position: absolute; left: -10px; top: 50%; transform: translateY(-50%);
  width: 2px; height: 0; border-radius: 0 2px 2px 0;
  background: #5fe1ff;
  transition: height 0.2s ease;
}
.sider-item-icon { font-size: 16px; flex-shrink: 0;
  transition: transform 0.2s, color 0.2s, filter 0.2s;
  color: #a5b4cf; }
.sider-item-name { flex: 1; white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
  transition: text-shadow 0.2s, letter-spacing 0.2s; }
.sider-item-glow {
  position: absolute; inset: 0; border-radius: 6px;
  background:
    linear-gradient(90deg, rgba(95,225,255,0.10), rgba(34,211,238,0.04) 60%, transparent),
    radial-gradient(circle at 20% 50%, rgba(95,225,255,0.12), transparent 70%);
  opacity: 0; transition: opacity 0.2s; pointer-events: none;
}

/* hover：玻璃磨砂卡片浮起效果 */
.sider-item:hover {
  color: #ffffff;
  background: linear-gradient(90deg, rgba(34,68,120,0.55), rgba(34,68,120,0.20));
  border-color: rgba(95,225,255,0.30);
  box-shadow:
    inset 0 1px 0 rgba(95,225,255,0.14),
    0 2px 8px rgba(0,0,0,0.35),
    0 0 0 1px rgba(95,225,255,0.10);
  transform: translateX(1px);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.sider-item:hover .sider-item-icon {
  color: #5fe1ff;
  filter: drop-shadow(0 0 4px rgba(95,225,255,0.5));
  transform: scale(1.05);
}
.sider-item:hover .sider-item-glow { opacity: 1; }
.sider-item:hover .sider-item-indicator { height: 18px;
  box-shadow: 0 0 6px #5fe1ff, 0 0 12px rgba(95,225,255,0.5); }
.sider-item:hover .sider-item-name {
  text-shadow: 0 0 4px rgba(95,225,255,0.15);
}

/* active 状态：明显的霓虹高亮卡片 */
.sider-item.active {
  color: #b7f0ff;
  background:
    linear-gradient(90deg, rgba(34,211,238,0.28), rgba(34,211,238,0.10) 60%, transparent),
    linear-gradient(180deg, rgba(28,52,98,0.85), rgba(20,38,80,0.65));
  border-color: rgba(95,225,255,0.45);
  font-weight: 600;
  box-shadow:
    inset 0 1px 0 rgba(95,225,255,0.25),
    inset 0 0 16px rgba(95,225,255,0.10),
    0 0 0 1px rgba(95,225,255,0.18),
    0 4px 16px rgba(0,0,0,0.45);
  text-shadow: 0 0 10px rgba(95,225,255,0.7);
}
.sider-item.active .sider-item-indicator {
  height: 24px; width: 3px;
  background: #5fe1ff;
  box-shadow: 0 0 8px #5fe1ff, 0 0 16px rgba(95,225,255,0.7), 0 0 24px rgba(34,211,238,0.4);
}
.sider-item.active .sider-item-icon {
  color: #5fe1ff;
  filter: drop-shadow(0 0 6px rgba(95,225,255,0.7)) drop-shadow(0 0 12px rgba(34,211,238,0.4));
}
.sider-item.active .sider-item-glow { opacity: 1; }

/* v1.15.1 不同分组 active 强调色：6 大分组各一色 */
/* 数据准备 - 绿色 */
.sider-item.active[data-group="prepare"] {
  color: #6ee7b7; border-color: rgba(110,231,183,0.30);
  text-shadow: 0 0 8px rgba(110,231,183,0.5); }
.sider-item.active[data-group="prepare"] .sider-item-indicator {
  background: #6ee7b7; box-shadow: 0 0 8px #6ee7b7, 0 0 16px rgba(110,231,183,0.7); }
.sider-item.active[data-group="prepare"] .sider-item-icon {
  color: #6ee7b7; filter: drop-shadow(0 0 6px rgba(110,231,183,0.7)); }

/* 账簿分析 - 浅蓝 */
.sider-item.active[data-group="analysis"] {
  color: #7dd3fc; border-color: rgba(125,211,252,0.30);
  text-shadow: 0 0 8px rgba(125,211,252,0.5); }
.sider-item.active[data-group="analysis"] .sider-item-indicator {
  background: #7dd3fc; box-shadow: 0 0 8px #7dd3fc, 0 0 16px rgba(125,211,252,0.7); }
.sider-item.active[data-group="analysis"] .sider-item-icon {
  color: #7dd3fc; filter: drop-shadow(0 0 6px rgba(125,211,252,0.7)); }

/* 审计专项 - 橙 */
.sider-item.active[data-group="audit"] {
  color: #fb923c; border-color: rgba(251,146,60,0.30);
  text-shadow: 0 0 8px rgba(251,146,60,0.5); }
.sider-item.active[data-group="audit"] .sider-item-indicator {
  background: #fb923c; box-shadow: 0 0 8px #fb923c, 0 0 16px rgba(251,146,60,0.7); }
.sider-item.active[data-group="audit"] .sider-item-icon {
  color: #fb923c; filter: drop-shadow(0 0 6px rgba(251,146,60,0.7)); }

/* 审计产出 - 黄 */
.sider-item.active[data-group="output"] {
  color: #fcd34d; border-color: rgba(252,211,77,0.30);
  text-shadow: 0 0 8px rgba(252,211,77,0.5); }
.sider-item.active[data-group="output"] .sider-item-indicator {
  background: #fcd34d; box-shadow: 0 0 8px #fcd34d, 0 0 16px rgba(252,211,77,0.7); }
.sider-item.active[data-group="output"] .sider-item-icon {
  color: #fcd34d; filter: drop-shadow(0 0 6px rgba(252,211,77,0.7)); }

/* 复核归档 - 紫 */
.sider-item.active[data-group="review"] {
  color: #a78bfa; border-color: rgba(167,139,250,0.30);
  text-shadow: 0 0 8px rgba(167,139,250,0.5); }
.sider-item.active[data-group="review"] .sider-item-indicator {
  background: #a78bfa; box-shadow: 0 0 8px #a78bfa, 0 0 16px rgba(167,139,250,0.7); }
.sider-item.active[data-group="review"] .sider-item-icon {
  color: #a78bfa; filter: drop-shadow(0 0 6px rgba(167,139,250,0.7)); }

/* 系统 - 灰 */
.sider-item.active[data-group="admin"] {
  color: #cbd5e1; border-color: rgba(203,213,225,0.25); }
.sider-item.active[data-group="admin"] .sider-item-indicator {
  background: #cbd5e1; box-shadow: 0 0 6px rgba(203,213,225,0.5); }

/* 折叠态：图标居中 + 不显示文字 */
.app-sider.tech-sider.collapsed .sider-item {
  justify-content: center; padding: 11px 0; margin: 2px 8px;
}
.app-sider.tech-sider.collapsed .sider-item .sider-item-icon { font-size: 18px; }
.app-sider.tech-sider.collapsed .sider-group-label { display: none; }

/* ============================================================
   底部状态栏 v1.10.13
   - 默认展开：参与 flex 流，自然位于 sider 最底部
   - 点击小柄 (toggle) 可收起/展开，状态持久化
   - 不再使用 hover 窗帘 / 绝对定位，避开 Windows taskbar 遮挡问题
   ============================================================ */
.sider-footer {
  position: relative;
  flex-shrink: 0;                              /* flex 子项，不被压缩 */
  display: flex;
  flex-direction: column;
  background:
    linear-gradient(180deg, transparent 0%, rgba(14,28,58,0.55) 50%, rgba(18,35,72,0.8) 100%);
  border-top: 1px solid rgba(34,211,238,0.18);
  z-index: 1;
}

/* 切换按钮（小柄）：始终可见，永远位于 sider 最底部那一行 */
.sider-footer-toggle {
  height: 14px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: background .2s ease;
}
.sider-footer-toggle:hover {
  background: rgba(95,225,255,0.06);
}
.sider-footer-handle {
  width: 42px; height: 4px;
  border-radius: 2px;
  background: rgba(95,225,255,0.35);
  box-shadow: 0 0 8px rgba(95,225,255,0.25);
  transition: background .2s ease, width .2s ease, box-shadow .2s ease;
}
.sider-footer-toggle:hover .sider-footer-handle {
  background: rgba(95,225,255,0.7);
  width: 56px;
  box-shadow: 0 0 12px rgba(95,225,255,0.5);
}

/* 内容区：状态 + 版本号 —— 通过 max-height 实现折叠动画 */
.sider-footer-content {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px;
  padding: 8px 18px 10px;
  font-size: 12.5px;
  overflow: hidden;
  max-height: 60px;
  opacity: 1;
  transition: max-height .28s cubic-bezier(0.4, 0, 0.2, 1),
              opacity .2s ease,
              padding .25s ease;
  letter-spacing: 0.3px;
}

/* 折叠态：内容区压扁、隐藏 */
.sider-footer.collapsed .sider-footer-content {
  max-height: 0;
  opacity: 0;
  padding-top: 0;
  padding-bottom: 0;
  pointer-events: none;
}
/* 折叠态：小柄变得更"安静"（提示当前已收起）*/
.sider-footer.collapsed .sider-footer-handle {
  background: rgba(95,225,255,0.22);
  box-shadow: none;
}
.sider-status {
  display: flex; align-items: center; gap: 7px; white-space: nowrap;
  /* 亮度与底部小柄 (rgba(95,225,255,0.35)) 同档：青色细字 */
  color: rgba(95, 225, 255, 0.55);
  font-weight: 300;
  letter-spacing: 0.4px;
  font-size: 11.5px;
}
.status-dot {
  width: 6px; height: 6px; border-radius: 50%; background: #5fe1ff;
  box-shadow: 0 0 0 2px rgba(95,225,255,0.18), 0 0 10px #5fe1ff;
  animation: pulse-dot 2s ease-in-out infinite;
}
@keyframes pulse-dot {
  0%, 100% { box-shadow: 0 0 0 2px rgba(95,225,255,0.18), 0 0 10px #5fe1ff; }
  50%      { box-shadow: 0 0 0 5px rgba(95,225,255,0.04), 0 0 18px #5fe1ff,
                          0 0 26px rgba(34,211,238,0.4); }
}
.sider-version {
  color: #a0b4cc;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  letter-spacing: 1.2px; font-size: 11px; font-weight: 400;
}
/* sider 折叠态：状态栏内容居中显示（只有圆点和版本号会显示），padding 收紧 */
.app-sider.tech-sider.collapsed .sider-footer-content {
  justify-content: center;
  padding: 8px 0 10px;
}
.section-title {
  display: flex; align-items: center; gap: 12px; margin-bottom: 16px;
}
.section-title h2 { margin: 0; font-size: 20px; font-weight: 600; color: #1f2937; }
.section-title .desc { color: #6b7280; font-size: 13px; }

.stat-card {
  display: flex; align-items: center; gap: 16px; padding: 20px;
  border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}
.stat-card .icon-box {
  width: 56px; height: 56px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 28px; color: #fff;
}
.stat-card .stat-val { font-size: 28px; font-weight: 700; }
.stat-card .stat-label { color: #6b7280; font-size: 13px; }

.quick-actions { background: #fff; border-radius: 10px; padding: 24px; margin-top: 24px; }
.quick-actions h3 { margin: 0 0 16px; font-size: 16px; font-weight: 600; }

.toolbar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; gap: 12px; }
.toolbar .left { display: flex; gap: 8px; flex: 1; }
.toolbar .right { display: flex; gap: 8px; }

.card { background: #fff; border-radius: 10px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }

.workpaper-detail-table th { background: #f3f4f6; }
.tag-success { color: #16a34a; }
.tag-warning { color: #d97706; }
.tag-error { color: #dc2626; }

.empty-tip { text-align: center; color: #9ca3af; padding: 40px 0; }

.el-menu { border-right: none !important; }

/* 菜单分组标签 */
.menu-group-label {
  padding: 12px 16px 4px; font-size: 11px; color: #9ca3af;
  font-weight: 600; letter-spacing: 0.5px;
}

/* 顶部项目栏（v1.5.1 起在下方统一覆盖） */

/* 财务报表表格 — v2.3.5 pass6: 字色 #fff → #e8edf5 与全局柔白统一 */
.fs-table { width: 100%; border-collapse: collapse; }
.fs-table th { background: #4472C4; color: #e8edf5; padding: 10px; text-align: center;
  border: 1px solid #d4d4d4; font-weight: 600; }
.fs-table td { padding: 8px 12px; border: 1px solid #e5e7eb; }
.fs-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.fs-table tr.section td { background: #f2f2f2; font-weight: 600; font-style: italic; }
.fs-table tr.total td { background: #E7E6E6; font-weight: 700; }
.fs-table tr.lvl-2 td:first-child { padding-left: 28px; }
.fs-table tr.lvl-3 td:first-child { padding-left: 48px; }
.fs-table .pct-up   { color: #16a34a; font-weight: 600; }
.fs-table .pct-down { color: #dc2626; font-weight: 600; }
/* v2.6.x 账表中心：财务报表行下钻 */
.fs-drill-hint { font-size: 12.5px; color: #2563eb; margin: 0 0 8px;
  display: flex; align-items: center; gap: 5px; }
.fs-table tr.fs-drillable { cursor: pointer; }
.fs-table tr.fs-drillable:hover td { background: #eff6ff; }
.fs-table tr.fs-drillable .fs-drill-i { font-size: 12px; color: #93c5fd; margin-left: 5px;
  opacity: 0; transition: opacity .15s; vertical-align: -1px; }
.fs-table tr.fs-drillable:hover .fs-drill-i { opacity: 1; }

/* v2.6.x 账表中心：左侧树形导航（账簿 + 财务报表 一眼全看到） */
.lz-left-tabs { background: #fff; border-radius: 8px; box-shadow: 0 1px 2px rgba(0,0,0,.04); }
.lz-left-tabs > .el-tabs__header.is-left {
  margin-right: 0; min-width: 168px;
  background: #f8fafc; border-right: 1px solid #e5e7eb; border-radius: 8px 0 0 8px;
}
.lz-left-tabs .el-tabs__nav-wrap.is-left { padding: 6px 0 10px; }
.lz-left-tabs .el-tabs__nav.is-left { border: none; }
/* 用药丸底色作选中态，弃用默认细竖条 */
.lz-left-tabs .el-tabs__active-bar.is-left { display: none; }
.lz-left-tabs .el-tabs__item.is-left {
  justify-content: flex-start; text-align: left;
  height: 32px; line-height: 32px;
  margin: 1px 8px; padding: 0 12px; border-radius: 6px;
  font-size: 13px; font-weight: 500; color: #475569; letter-spacing: 0.2px;
  transition: background .12s, color .12s;
}
.lz-left-tabs .el-tabs__item.is-left:hover:not(.is-disabled) { color: #1d4ed8; background: #f1f5f9; }
.lz-left-tabs .el-tabs__item.is-left.is-active {
  color: #2563eb; font-weight: 600; background: #e6effe;
  box-shadow: inset 3px 0 0 #2563eb;       /* 药丸内左侧蓝条做强提示 */
}
.lz-left-tabs .el-tabs__content { padding: 12px 16px; }
/* 分组标题（用 disabled 页签伪装，不可点）：上分隔线 + 留白，层次更清楚 */
.lz-left-tabs .el-tabs__item.is-disabled {
  height: 24px; line-height: 28px; padding: 0 0 0 4px; cursor: default; opacity: 1;
  margin: 10px 0 2px; border-top: 1px solid #eef2f7;
}
.lz-left-tabs .el-tabs__item.is-disabled:first-child { margin-top: 2px; border-top: none; }
.lz-grp { font-size: 11px; color: #475569; font-weight: 700; letter-spacing: 2px; }

/* ===========================================================================
   底稿工作台 βeta（P0+ 三栏骨架）—— 视觉基线见 docs/assets/workpaper_workspace_mockup.png
   token: 主蓝 #355aa0 / 树底 #f8fafc / 表线 #b6bcc7 / 中枢高亮 #eaf1fb
   =========================================================================== */
.wpw {
  display: flex; gap: 0; height: calc(100vh - 64px - 48px);
  min-height: 480px; background: #fff; border: 1px solid #e5e7eb;
  border-radius: 10px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.05);
}

/* ---------- v2.6 L3 证据链面板（工作台右栏「证据」tab） ---------- */
.wpw-evidence { padding: 6px 2px; }
.wpw-ev-hint { font-size: 12px; color: #64748b; background: #f8fafc; border: 1px solid #eef2f7;
  border-radius: 6px; padding: 7px 10px; margin-bottom: 8px; }
.wpw-ev-item { border: 1px solid #e5e7eb; border-radius: 8px; padding: 8px 10px; margin-bottom: 7px; }
.wpw-ev-row { font-weight: 600; color: #1e293b; font-size: 13px; margin-bottom: 3px; }

/* ---------- v2.6 L5 审计健康度 / 可归档度 ---------- */
.hc-grid { display: flex; flex-direction: column; gap: 4px; }
.hc-row { display: flex; align-items: center; gap: 8px; font-size: 12.5px; padding: 3px 0; }
.hc-row.hc-fail { color: #b91c1c; }
.hc-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: #cbd5e1; }
.hc-dot.ok { background: #16a34a; }
.hc-dot.hard { background: #dc2626; }
.hc-dot.soft { background: #f59e0b; }
.hc-lv { font-size: 10px; padding: 0 5px; border-radius: 4px; flex-shrink: 0; line-height: 16px; }
.hc-lv.hard { background: #fee2e2; color: #b91c1c; }
.hc-lv.soft { background: #fef3c7; color: #92400e; }
.hc-name { font-weight: 600; color: #334155; flex-shrink: 0; }
.hc-row.hc-fail .hc-name { color: #b91c1c; }
.hc-detail { color: #94a3b8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- v2.6 P2 纳税调整手工调整：漂移通知 + 已调整行 + 选回 ---------- */
.wpw-drift-banner {
  display: flex; align-items: center; gap: 8px; margin: 0 0 10px;
  padding: 9px 12px; border-radius: 7px; font-size: 13px;
  background: #fff7ed; border: 1px solid #fed7aa; color: #9a3412;
}
.wpw-drift-banner .el-icon { color: #ea580c; }
.wpw-ov-row td { background: #fffbeb; }
.wpw-ov-acts { margin-left: 8px; display: inline-flex; gap: 8px; }
.wpw-ov-acts a { color: #2563eb; cursor: pointer; font-size: 12px; }
.wpw-ov-acts a:hover { text-decoration: underline; }
.wpw-ov-acts a.wpw-del-act { color: #dc2626; }
/* A 回收站入口 */
.wpw-addrow { display: flex; align-items: center; gap: 14px; }
.wpw-recycle-link { font-size: 12px; color: #64748b; cursor: pointer; display: inline-flex; align-items: center; gap: 3px; }
.wpw-recycle-link:hover { color: #355aa0; }
.wpw-recycle-n { background: #dc2626; color: #fff; border-radius: 9px; font-size: 10px;
  font-weight: 700; padding: 0 6px; min-width: 16px; text-align: center; }
/* B 结论编辑 */
.wpw-concl-acts { float: right; display: inline-flex; align-items: center; gap: 10px; font-weight: 400; }
.wpw-concl-acts a { color: #2563eb; cursor: pointer; font-size: 12px; }
.wpw-concl-acts a:hover { text-decoration: underline; }
.wpw-concl-edit { width: 100%; box-sizing: border-box; border: 1px solid #9db8e0; border-radius: 8px;
  padding: 12px 14px; font-size: 13px; line-height: 1.9; color: #14306b; background: #fff;
  resize: vertical; font-family: inherit; outline: none; }
.wpw-concl-editbtns { margin-top: 8px; display: flex; gap: 8px; }
.wpw-btn-plain { height: 30px; padding: 0 14px; background: #fff; color: #475569;
  border: 1px solid #d3dae6; border-radius: 7px; cursor: pointer; font-size: 13px; }
.wpw-concl-hist-txt { max-width: 360px; white-space: pre-wrap; word-break: break-all; font-size: 12px; }

/* ---------- 可拖拽分隔条 ---------- */
.wpw-splitter {
  flex: 0 0 5px; cursor: col-resize; background: transparent; position: relative;
  z-index: 5; transition: background .12s;
}
.wpw-splitter::before {
  content: ''; position: absolute; top: 0; bottom: 0; left: 50%;
  width: 1px; transform: translateX(-50%); background: #e5e7eb;
}
.wpw-splitter:hover, .wpw-splitter.dragging { background: rgba(53,90,160,.12); }
.wpw-splitter:hover::before, .wpw-splitter.dragging::before { background: #355aa0; width: 2px; }

/* ---------- 左：脊柱树 ---------- */
.wpw-tree {
  flex: 0 0 230px; background: #f8fafc;
  display: flex; flex-direction: column; overflow-y: auto; padding: 12px 0;
}
.wpw-persp { display: flex; gap: 6px; padding: 0 12px 12px; align-items: center; }
.wpw-persp-seg { display: flex; gap: 6px; flex: 1; }
.wpw-persp button {
  flex: 1; height: 30px; border: 1px solid #d3dae6; background: #fff;
  border-radius: 6px; font-size: 13px; color: #475569; cursor: pointer;
  transition: all .12s;
}
.wpw-persp button.on { background: #355aa0; border-color: #355aa0; color: #fff; font-weight: 600; }
.wpw-persp .wpw-chklist-btn { flex: 0 0 auto; padding: 0 10px; white-space: nowrap; }
.wpw-persp .wpw-chklist-btn:hover:not(:disabled) { border-color: #355aa0; color: #355aa0; }
.wpw-persp .wpw-chklist-btn:disabled { opacity: .5; cursor: not-allowed; }
/* §15 底稿清单弹框 */
.wpw-chkdlg-hint { font-size: 12px; color: #64748b; margin-bottom: 10px; display: flex;
  justify-content: space-between; gap: 12px; }
.wpw-chkdlg-stat { color: #355aa0; font-weight: 600; white-space: nowrap; }
.wpw-chkdlg-grp { margin-bottom: 12px; }
.wpw-chkdlg-grp-h { font-size: 12px; font-weight: 700; color: #475569; padding: 4px 0;
  border-bottom: 1px solid #eef1f6; margin-bottom: 4px; }
.wpw-chkdlg-row { display: flex; align-items: center; gap: 8px; padding: 5px 4px; font-size: 13px; }
.wpw-chkdlg-row.off { opacity: .7; }
.wpw-chkdlg-code { font-family: ui-monospace, monospace; color: #355aa0; flex: 0 0 64px; font-size: 12px; }
.wpw-chkdlg-name { flex: 0 0 auto; color: #1f2937; }
.wpw-chkdlg-reason { flex: 1; color: #94a3b8; font-size: 11px; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; text-align: right; }
.wpw-chkdlg-pill { flex: 0 0 auto; border: none; border-radius: 10px; padding: 2px 10px;
  font-size: 11px; font-weight: 600; cursor: pointer; }
.wpw-chkdlg-pill.on { background: #e6f4ea; color: #16a34a; }
.wpw-chkdlg-pill.add { background: #eef2f8; color: #355aa0; border: 1px dashed #9db8e0; }
.wpw-hub {
  display: flex; align-items: center; gap: 8px; margin: 0 8px 8px;
  padding: 9px 10px; border-radius: 7px; background: #eaf1fb;
  cursor: pointer; font-weight: 600; color: #1e3a72; border: 1px solid #d6e2f5;
}
.wpw-hub.active { box-shadow: inset 3px 0 0 #355aa0; }
.wpw-hub-ico { font-size: 15px; }
.wpw-hub-txt { font-size: 13.5px; }
.wpw-nodes { list-style: none; margin: 0; padding: 0; }
.wpw-node {
  display: flex; align-items: center; gap: 6px; padding: 7px 12px 7px 8px;
  cursor: pointer; font-size: 13px; color: #334155; border-radius: 6px;
  margin: 1px 8px; transition: background .12s, color .12s; position: relative;
}
.wpw-node:hover { background: #eef2f8; }
.wpw-node.active { background: #e6effe; color: #2563eb; font-weight: 600; box-shadow: inset 3px 0 0 #2563eb; }
.wpw-leaf { padding-left: 22px; font-size: 12.5px; color: #475569; }
.wpw-caret { width: 14px; display: inline-flex; justify-content: center; color: #94a3b8; font-size: 12px; }
.wpw-idx { font-family: ui-monospace, monospace; font-size: 11px; color: #94a3b8; min-width: 26px; }
.wpw-name { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wpw-node-edit { color: #94a3b8; font-size: 13px; }
.wpw-dot { width: 14px; height: 14px; border-radius: 50%; display: inline-flex; align-items: center;
  justify-content: center; font-size: 9px; color: #fff; font-weight: 700; }
.wpw-dot.is-ok { background: #16a34a; }
.wpw-dot.is-adj { background: #355aa0; }
.wpw-dot.is-pending { background: #dc2626; }

/* ---------- 中：视图画布 ---------- */
.wpw-canvas { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; }
.wpw-bar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 18px; border-bottom: 1px solid #eef1f5; flex: 0 0 auto;
}
.wpw-crumb { display: flex; align-items: center; gap: 6px; font-size: 14px; color: #64748b; }
.wpw-crumb .el-icon { color: #355aa0; }
.wpw-crumb b { color: #cbd5e1; font-weight: 400; }
.wpw-crumb .cur { color: #1e293b; font-weight: 600; }
.wpw-bar-right { display: flex; align-items: center; gap: 8px; }
.wpw-seg { display: inline-flex; border: 1px solid #d3dae6; border-radius: 6px; overflow: hidden; }
.wpw-seg button {
  height: 30px; padding: 0 14px; border: none; background: #fff; cursor: pointer;
  font-size: 13px; color: #475569; transition: all .12s;
}
.wpw-seg button.on { background: #355aa0; color: #fff; font-weight: 600; }
.wpw-icbtn {
  height: 30px; padding: 0 10px; border: 1px solid #d3dae6; background: #fff;
  border-radius: 6px; cursor: pointer; color: #475569; display: inline-flex;
  align-items: center; gap: 4px; font-size: 13px;
}
.wpw-icbtn:hover { color: #355aa0; border-color: #9db8e0; }

.wpw-tablewrap { flex: 1; overflow: auto; padding: 16px 18px; }
.wpw-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.wpw-table th {
  background: #355aa0; color: #fff; font-weight: 600; font-size: 12.5px;
  padding: 9px 12px; text-align: left; border: 1px solid #2c4b87; white-space: nowrap;
}
.wpw-table th.num { text-align: right; }
.wpw-table td { padding: 9px 12px; border: 1px solid #d8dde6; color: #1f2937; }
.wpw-table td.num { text-align: right; font-variant-numeric: tabular-nums; }
.wpw-table td.mono { font-family: ui-monospace, monospace; color: #475569; }
.wpw-table tr.total td { background: #f4f6fa; font-weight: 700; color: #1e293b; }
/* 三种单元格身份 */
.cell-derived { background: #f6f7f9; color: #475569; }
.cell-input { background: #fff; box-shadow: inset 0 0 0 1.5px #9db8e0; border-radius: 3px; font-weight: 600; color: #14306b; }
.cell-formula { background: #f0f5fc; position: relative; }
.cell-formula .fx {
  position: absolute; top: 2px; right: 4px; font-size: 9px; font-style: italic;
  color: #6f93cf; font-family: ui-monospace, monospace;
}
.wpw-badge {
  display: inline-block; background: #e6effe; color: #2563eb; font-weight: 700;
  padding: 1px 8px; border-radius: 10px; font-size: 12px;
}
.wpw-badge.less { background: #fef2f2; color: #dc2626; }
/* §15 行内可编辑单元格（税收金额/调增/调减） */
.wpw-ecell.editable { cursor: text; position: relative; }
.wpw-ecell.editable:hover { background: #f0f5fc; box-shadow: inset 0 0 0 1px #c7d8f2; }
.wpw-ecell .wpw-edit-pen { font-size: 11px; color: #9db8e0; margin-left: 4px; vertical-align: -1px; opacity: 0; transition: opacity .12s; }
.wpw-ecell.editable:hover .wpw-edit-pen { opacity: 1; }
.wpw-cell-input { width: 100%; box-sizing: border-box; border: none; outline: none; text-align: right;
  background: #fff; box-shadow: inset 0 0 0 1.5px #355aa0; border-radius: 3px; padding: 2px 6px;
  font-weight: 600; color: #14306b; font-size: 13px; }
/* 纳税调整汇总桥（自撰干净版）：里程碑行(审定利润/应纳税所得额)加重 */
.wpw-table tr.wpw-bridge-key td { background: #eaf1fb; font-weight: 700; color: #1e3a72; }
.wpw-bridge td { padding: 12px 14px; font-size: 13.5px; }
.wpw-bridge-sign { display: inline-block; width: 18px; color: #94a3b8; font-weight: 700; }
/* L#5 收敛：汇总桥 vs 申报表A100000 新旧对账 */
.wpw-recon { margin: 10px 2px 4px; font-size: 12.5px; }
.wpw-recon-ok { background: #ecfdf5; border: 1px solid #a7f3d0; color: #047857;
  border-radius: 6px; padding: 8px 12px; font-weight: 600; }
.wpw-recon-hint { background: #f8fafc; border: 1px dashed #cbd5e1; color: #64748b;
  border-radius: 6px; padding: 8px 12px; }
.wpw-recon-bad { background: #fff7ed; border: 1px solid #fdba74; border-radius: 6px; padding: 8px 12px; }
.wpw-recon-title { color: #c2410c; font-weight: 700; margin-bottom: 6px; }
.wpw-recon-tbl { width: 100%; border-collapse: collapse; }
.wpw-recon-tbl th, .wpw-recon-tbl td { padding: 4px 8px; text-align: left; border-bottom: 1px solid #fde7cf; }
.wpw-recon-tbl th.num, .wpw-recon-tbl td.num { text-align: right; font-variant-numeric: tabular-nums; }
.wpw-recon-tbl tr.wpw-recon-diff td { background: #fef2f2; color: #b91c1c; font-weight: 600; }
/* 收敛§8.2 审计健康度·统一校验门面 */
.wpw-health { margin-bottom: 12px; border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px; background: #fafbfc; }
.wpw-health-bar { display: flex; align-items: center; gap: 10px; }
.wpw-health-run { background: #2563eb; color: #fff; border: none; border-radius: 6px; padding: 6px 14px;
  font-size: 13px; font-weight: 600; cursor: pointer; }
.wpw-health-run:disabled { background: #93c5fd; cursor: default; }
.wpw-health-when { font-size: 11px; color: #94a3b8; }
.wpw-health-hint { margin-top: 8px; font-size: 12px; color: #64748b; }
.wpw-health-score { display: flex; align-items: baseline; gap: 8px; margin: 10px 0 4px; padding: 8px 12px;
  border-radius: 6px; }
.wpw-health-score.ok { background: #ecfdf5; } .wpw-health-score.bad { background: #fef2f2; }
.wpw-health-pct { font-size: 24px; font-weight: 800; }
.wpw-health-score.ok .wpw-health-pct { color: #059669; } .wpw-health-score.bad .wpw-health-pct { color: #dc2626; }
.wpw-health-lbl { font-size: 12px; color: #64748b; margin-right: auto; }
.wpw-health-flags { display: flex; gap: 6px; flex-wrap: wrap; }
.wpw-hf { font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 600; }
.wpw-hf.ok { background: #d1fae5; color: #047857; } .wpw-hf.warn { background: #fef3c7; color: #b45309; }
.wpw-hf.err { background: #fee2e2; color: #b91c1c; }
.wpw-health-sec { font-size: 11px; font-weight: 700; color: #475569; letter-spacing: 1px; margin: 10px 0 4px; }
.wpw-health-item { border-left: 3px solid #cbd5e1; padding: 6px 10px; margin-bottom: 5px; border-radius: 0 6px 6px 0; background: #fff; }
.wpw-health-item.pass { border-left-color: #34d399; }
.wpw-health-item.fail-hard { border-left-color: #ef4444; background: #fef2f2; }
.wpw-health-item.fail-soft { border-left-color: #f59e0b; background: #fffbeb; }
.wpw-health-item.na { border-left-color: #e2e8f0; opacity: .7; }
.wpw-health-ih { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.wpw-health-ic { font-weight: 800; width: 14px; text-align: center; }
.wpw-health-item.pass .wpw-health-ic { color: #059669; }
.wpw-health-item.fail-hard .wpw-health-ic { color: #dc2626; }
.wpw-health-item.fail-soft .wpw-health-ic { color: #d97706; }
.wpw-health-in { font-weight: 600; color: #1e293b; }
.wpw-health-lv { margin-left: auto; font-size: 10px; padding: 1px 6px; border-radius: 8px; background: #e2e8f0; color: #475569; }
.wpw-health-lv.na { background: #f1f5f9; color: #94a3b8; }
.wpw-health-id { font-size: 12px; color: #64748b; margin-top: 2px; }
.wpw-health-drill { font-size: 11.5px; color: #475569; margin-top: 2px; padding-left: 8px; }
/* P0+.11c 预置底稿库 */
.wpw-libsec { margin-top: 10px; border-top: 1px solid #e5e7eb; padding-top: 6px; }
.wpw-grp-title { display: flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700;
  color: #475569; letter-spacing: 2px; padding: 4px 12px; }
.wpw-grp-title .grp-bar { width: 3px; height: 12px; border-radius: 2px; background: #6ee7b7; }
.wpw-grp-sub { font-size: 11px; color: #94a3b8; padding: 6px 12px 2px; font-weight: 600; }
/* §15 税务左树三分区色条标题 */
.wpw-sec-title { display: flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 700;
  color: #475569; letter-spacing: 1px; padding: 8px 12px 3px; margin-top: 2px; }
.wpw-sec-title .sec-bar { width: 3px; height: 12px; border-radius: 2px; background: #94a3b8; }
.wpw-sec-title.sec-a .sec-bar { background: #355aa0; }   /* 纳税调整明细 */
.wpw-sec-title.sec-b .sec-bar { background: #d97706; }   /* 税收优惠/特殊事项 */
.wpw-sec-title.sec-c .sec-bar { background: #16a34a; }   /* 申报产出（只读） */
.wpw-node.readonly { opacity: 0.78; }
.wpw-node-ro { margin-left: auto; color: #16a34a; font-weight: 700; font-size: 11px; }
/* §15 税务左树底部图例 */
.wpw-legend { display: flex; gap: 12px; flex-wrap: wrap; padding: 8px 12px; margin-top: 6px;
  border-top: 1px dashed #e5e7eb; font-size: 11px; color: #64748b; }
.wpw-legend span { display: inline-flex; align-items: center; gap: 4px; }
.wpw-legend .lg-dot { width: 12px; height: 12px; border-radius: 50%; display: inline-flex;
  align-items: center; justify-content: center; font-size: 9px; color: #fff; }
.wpw-legend .lg-dot.adj { background: #355aa0; }
.wpw-legend .lg-dot.ok { background: #16a34a; }
.wpw-legend .lg-dot.none { background: #fff; border: 1px solid #cbd5e1; }
.wpw-legend .lg-plus { width: 12px; height: 12px; display: inline-flex; align-items: center;
  justify-content: center; font-size: 12px; font-weight: 700; color: #355aa0; }
/* §15 ＋可勾选 备用附表（下拉选择） */
.wpw-node.wpw-addable { padding: 2px 8px; }
.wpw-addable-trigger { display: inline-flex; align-items: center; gap: 4px; cursor: pointer;
  border: 1px dashed #cbd5e1; border-radius: 6px; padding: 4px 10px; font-size: 12px; color: #355aa0; }
.wpw-addable-trigger:hover { background: #f0f5fc; border-color: #9db8e0; }
.wpw-addable-trigger .wpw-idx { color: #355aa0; font-weight: 700; margin: 0; }
.wpw-addable-lbl { color: #475569; }
.wpw-addable-caret { font-size: 11px; color: #94a3b8; }
/* Option B：税务底稿节点的「产出申报表行」标注 */
.wpw-libnode .wpw-libnode-form { font-size: 10px; color: #6366f1; background: #eef2ff;
  border-radius: 8px; padding: 0 6px; margin-left: 4px; white-space: nowrap; flex: 0 0 auto; }
.wpw-libnode .wpw-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 底稿库折叠开关 */
.wpw-grp-toggle { cursor: pointer; user-select: none; }
.wpw-grp-toggle:hover { color: #355aa0; }
.wpw-grp-caret { font-size: 12px; color: #94a3b8; margin-right: 2px; }
.wpw-grp-count { margin-left: auto; font-size: 10px; color: #94a3b8; font-weight: 600;
  background: #eef2f8; border-radius: 8px; padding: 0 6px; }
.wpw-bt { width: 16px; height: 16px; border-radius: 4px; font-size: 10px; color: #fff;
  display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.wpw-bt.bt-procedure { background: #8b5cf6; }   /* 程序表 */
.wpw-bt.bt-table { background: #355aa0; }       /* 审核表 */
/* §19.1 共享底稿表头容器（审计/税务/库模板统一） */
.wpw-wphead { margin-bottom: 8px; }
/* 8 要素表头 */
.wpw-libform { padding: 4px 0; }
.wpw-hdr8 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0;
  border: 1px solid #b6bcc7; border-bottom: none; margin-bottom: 0; font-size: 12.5px; }
.wpw-hdr8 > div { display: flex; border-bottom: 1px solid #b6bcc7; border-right: 1px solid #d8dde6; }
.wpw-hdr8 label { background: #f4f6fa; color: #475569; padding: 6px 8px; min-width: 64px;
  border-right: 1px solid #e2e8f0; font-weight: 600; }
.wpw-hdr8 span { padding: 6px 8px; color: #1f2937; flex: 1; }
.wpw-hdr8 span.ph { color: #cbd5e1; }
/* 新增底稿弹窗内的 8 要素表头：补齐底边 + 与录入区留白 */
.wpw-hdr8-dlg { border-bottom: 1px solid #b6bcc7; margin-bottom: 14px; }
.wpw-newwp-dlg .wpw-adj-form { margin-top: 0; }
.wpw-tick { color: #16a34a; font-weight: 700; }
.wpw-lib-note { margin-top: 8px; font-size: 12px; color: #94a3b8; }
/* §19.7 一屏工作视图（双联程序+审核表同屏） */
.wpw-unit-toggle { display: flex; align-items: center; gap: 6px; margin: 8px 0 4px; }
.wpw-unit-lbl { font-size: 12px; color: #64748b; margin-right: 4px; }
.wpw-unit-toggle button { font-size: 12px; padding: 3px 12px; border: 1px solid #d8dde6;
  background: #fff; color: #64748b; cursor: pointer; border-radius: 14px; }
.wpw-unit-toggle button.on { background: #355aa0; color: #fff; border-color: #355aa0; font-weight: 600; }
.wpw-unit-sec { margin-top: 10px; }
.wpw-unit-h { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700;
  color: #355aa0; padding: 5px 0; border-bottom: 2px solid #e2e8f0; margin-bottom: 6px; }
.wpw-unit-ix { font-size: 11px; font-family: monospace; background: #eef2fb; color: #355aa0;
  padding: 1px 7px; border-radius: 4px; }
/* §17 认定×程序覆盖条 */
.wpw-cover { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 10px;
  padding: 7px 12px; background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 12.5px; }
.wpw-cover-t { font-weight: 700; color: #475569; letter-spacing: 1px; }
.wpw-cover-chip { display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px;
  border-radius: 12px; border: 1px solid #d8dde6; color: #64748b; background: #fff; }
.wpw-cover-dot { width: 8px; height: 8px; border-radius: 50%; background: #cbd5e1; }
.wpw-cover-chip.on { background: #ecfdf5; border-color: #86efac; color: #166534; }
.wpw-cover-chip.on .wpw-cover-dot { background: #16a34a; }
.wpw-cover-chip.gap { background: #fffbeb; border-color: #fcd34d; color: #92400e; }
.wpw-cover-chip.gap .wpw-cover-dot { background: #f59e0b; }
.wpw-cover-gap { color: #b45309; font-weight: 600; cursor: help; }
.wpw-cover-ok { color: #16a34a; font-weight: 600; }
/* §16 关联穿透面板 */
.wpw-graph { padding: 8px 4px; font-size: 12.5px; }
.wpw-graph-node { font-weight: 700; color: #355aa0; padding: 4px 0 8px; border-bottom: 1px solid #e5e7eb; }
.wpw-graph-sec { margin-top: 10px; }
.wpw-graph-h { font-size: 12px; font-weight: 700; color: #475569; margin-bottom: 5px; }
.wpw-graph-n { background: #eef2fb; color: #355aa0; border-radius: 8px; padding: 0 6px; font-size: 10px; margin-left: 4px; }
.wpw-graph-edge { padding: 3px 0; color: #475569; line-height: 1.6; }
.wpw-graph-arrow { color: #355aa0; font-weight: 600; margin-left: 4px; }
.wpw-graph-arrow.muted { color: #cbd5e1; font-weight: 400; }
.wpw-graph-as { display: inline-block; font-size: 11px; padding: 1px 8px; margin: 2px 4px 2px 0;
  border-radius: 10px; border: 1px solid #e2e8f0; color: #94a3b8; }
.wpw-graph-as.on { background: #ecfdf5; border-color: #86efac; color: #166534; }
.wpw-graph-gap { color: #b45309; margin-top: 6px; font-size: 12px; }
.wpw-graph-toggle { float: right; }
.wpw-graph-toggle button { font-size: 10px; padding: 1px 8px; border: 1px solid #d8dde6;
  background: #fff; color: #64748b; cursor: pointer; }
.wpw-graph-toggle button:first-child { border-radius: 10px 0 0 10px; }
.wpw-graph-toggle button:last-child { border-radius: 0 10px 10px 0; border-left: none; }
.wpw-graph-toggle button.on { background: #355aa0; color: #fff; border-color: #355aa0; }
.wpw-graph-canvas { width: 100%; height: 360px; margin-top: 6px; }
.wpw-projgraph-link { display: inline-block; margin-top: 4px; font-size: 11px; color: #355aa0; cursor: pointer; }
.wpw-projgraph-link:hover { text-decoration: underline; }
.wpw-projgraph-info { font-size: 12.5px; color: #64748b; margin-bottom: 8px; }
.wpw-projgraph-canvas { width: 100%; height: 60vh; min-height: 420px; }
/* §16 发起 AJE 波及预览 */
.wpw-impact { margin-top: 10px; padding: 8px 10px; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; }
.wpw-impact-h { font-size: 12.5px; font-weight: 700; color: #92400e; margin-bottom: 6px; }
.wpw-impact-row { display: flex; align-items: flex-start; flex-wrap: wrap; gap: 5px; margin: 3px 0; }
.wpw-impact-k { font-size: 12px; color: #b45309; min-width: 48px; }
.wpw-impact-tag { font-size: 11px; padding: 1px 8px; border-radius: 10px; background: #fff; border: 1px solid #fcd34d; color: #92400e; }
.wpw-impact-tag.form { background: #eef2fb; border-color: #c7d6ef; color: #355aa0; font-family: monospace; }
/* §11 AI 协审建议（认定缺口） */
.wpw-ai-sug { margin-bottom: 10px; padding: 8px 10px; background: #f5f3ff; border: 1px solid #ddd6fe; border-radius: 6px; }
.wpw-ai-sug.ok { background: #ecfdf5; border-color: #a7f3d0; }
.wpw-ai-sug-h { font-size: 12.5px; font-weight: 700; color: #6d28d9; margin-bottom: 6px; }
.wpw-ai-sug.ok .wpw-ai-sug-h { color: #166534; }
.wpw-ai-sug-item { margin: 6px 0; padding-top: 4px; border-top: 1px dashed #e9e5fb; }
.wpw-ai-sug-wp { font-size: 12.5px; font-weight: 600; color: #4c1d95; }
.wpw-ai-sug-gap { font-size: 12px; color: #6b7280; margin: 2px 0 2px 6px; }
.wpw-ai-sug-as { display: inline-block; font-size: 10px; padding: 0 6px; border-radius: 8px;
  background: #fde68a; color: #92400e; margin-right: 4px; }
.wpw-ai-draft-btn { font-size: 11px; padding: 1px 8px; margin-left: 6px; border-radius: 10px;
  background: #ede9fe; color: #6d28d9; border: 1px solid #ddd6fe; cursor: pointer; }
.wpw-ai-draft-btn:hover:not(:disabled) { background: #ddd6fe; }
.wpw-ai-draft-btn:disabled { opacity: .6; cursor: default; }
.wpw-ai-draft { font-size: 12px; color: #374151; margin: 3px 0 3px 6px; line-height: 1.6; }
.wpw-ai-draft-src { font-size: 10px; color: #a78bfa; margin-left: 6px; }
.wpw-ai-adopt-btn { font-size: 10px; padding: 0 7px; margin-left: 6px; border-radius: 9px;
  background: #16a34a; color: #fff; border: none; cursor: pointer; }
.wpw-ai-adopt-btn:hover:not(:disabled) { background: #15803d; }
.wpw-ai-adopt-btn:disabled { background: #86efac; cursor: default; }
/* 采纳的 AI 程序在程序表中的标记 */
.wpw-proc-ai { background: #f5f3ff; }
.wpw-proc-aibadge { display: inline-block; font-size: 9px; padding: 0 5px; margin-left: 6px;
  border-radius: 7px; background: #ddd6fe; color: #6d28d9; font-weight: 600; vertical-align: middle; }
/* §17 认定×程序覆盖矩阵 */
.wpw-cov { margin-top: 10px; padding: 8px 12px; border: 1px solid #e5e7eb; border-radius: 6px; background: #fafbfc; }
.wpw-cov-h { font-size: 12.5px; font-weight: 700; color: #475569; margin-bottom: 6px; }
.wpw-cov-cnt { margin-left: 8px; font-size: 11px; padding: 1px 8px; border-radius: 10px;
  background: #fef3c7; color: #b45309; }
.wpw-cov-cnt.full { background: #dcfce7; color: #16a34a; }
.wpw-cov-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.wpw-cov-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 12px;
  padding: 3px 10px; border-radius: 14px; background: #f1f5f9; color: #94a3b8; border: 1px solid #e2e8f0; }
.wpw-cov-chip.on { background: #ecfdf5; color: #166534; border-color: #86efac; }
.wpw-cov-chip b { font-size: 10px; }
.wpw-cov-gap { margin-top: 7px; font-size: 12px; color: #b45309; cursor: help; }
.wpw-cov-ok { margin-top: 7px; font-size: 12px; color: #16a34a; }
/* §19 三级复核签批条 */
.wpw-signbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-top: 10px; padding: 8px 12px; background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 6px; }
.wpw-signbar-t { font-size: 12px; font-weight: 700; color: #475569; letter-spacing: 1px; }
.wpw-sign-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px;
  padding: 4px 10px; border-radius: 16px; background: #fff; border: 1px solid #d8dde6; color: #64748b; }
.wpw-sign-chip.done { background: #ecfdf5; border-color: #86efac; color: #166534; }
.wpw-sign-chip b { font-weight: 600; }
.wpw-sign-who { color: inherit; opacity: .85; }
.wpw-sign-btn { font-size: 12px; padding: 2px 10px; border-radius: 12px; cursor: pointer;
  background: #355aa0; color: #fff; border: none; }
.wpw-sign-btn:disabled { background: #cbd5e1; cursor: not-allowed; }
.wpw-sign-btn:not(:disabled):hover { background: #2c4d8c; }
.wpw-sign-x { cursor: pointer; color: #ef4444; font-weight: 700; margin-left: 2px; }
/* P0+.14 导出底稿按钮 */
.wpw-export { display: inline-flex; align-items: center; gap: 4px; background: #355aa0; color: #fff; border: none; }
.wpw-export:hover:not(:disabled) { background: #2c4d8c; }
.wpw-export:disabled { background: #cbd5e1; cursor: not-allowed; }
/* P0+.11b 智能清单：具备/备选角标 + 判定提示条 */
.wpw-chk { font-size: 10px; padding: 0 5px; height: 16px; line-height: 16px; border-radius: 8px;
  flex: 0 0 auto; background: #e5e7eb; color: #94a3b8; cursor: pointer; }
.wpw-chk.on { background: #dcfce7; color: #16a34a; font-weight: 700; }
.wpw-chk.on:hover { background: #bbf7d0; }
.wpw-chk.on.manual { background: #dbeafe; color: #2563eb; }   /* 人工启用 */
.wpw-chk-m { margin-left: 3px; font-size: 9px; opacity: .8; font-weight: 600; }
.wpw-chk.add { background: #fff; color: #355aa0; border: 1px dashed #9db4d8; font-weight: 600; }
.wpw-chk.add:hover { background: #f1f6ff; border-color: #355aa0; }
.wpw-lib-dim { opacity: .62; }
.wpw-lib-dim .wpw-name { color: #94a3b8; }
.wpw-chk-banner { display: flex; align-items: center; gap: 8px; margin-bottom: 8px;
  padding: 6px 10px; border-radius: 6px; font-size: 12.5px;
  background: #f1f5f9; border-left: 3px solid #cbd5e1; color: #64748b; }
.wpw-chk-banner.on { background: #ecfdf5; border-left-color: #16a34a; color: #166534; }
.wpw-chk-tag { font-weight: 700; flex: 0 0 auto; }
.wpw-chk-reason { color: inherit; opacity: .9; }
/* §15 新增调整事项按钮（底稿下方加行入口） */
.wpw-addrow { margin-top: 10px; }
.wpw-addrow-btn { display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  padding: 7px 14px; font-size: 13px; color: #355aa0; font-weight: 600;
  background: #fff; border: 1px dashed #9db4d8; border-radius: 6px; transition: all .15s; }
.wpw-addrow-btn:hover { background: #f1f6ff; border-color: #355aa0; }
/* 工作台首次进入引导条 */
.wpw-onboard { margin: 14px 18px 0; }
.wpw-onboard-body { font-size: 12.5px; line-height: 1.8; color: #334155; }
.wpw-onboard-body u { text-decoration-color: #dc2626; }
.wpw-concl-tag { color: #16a34a; font-size: 12.5px; }
.wpw-concl-tag.warn { color: #b45309; }
.wpw-mock-pill { margin-left: 8px; font-size: 11px; color: #b45309; background: #fff7ed;
  border: 1px solid #fed7aa; border-radius: 9px; padding: 1px 8px; }
.wpw-norow { text-align: center; color: #94a3b8; padding: 28px 0; font-size: 13px; }
.wpw-hint { font-size: 12px; color: #6b7280; padding: 0 18px 6px; }
.wpw-row-click { cursor: pointer; }
.wpw-row-click:hover td { background: #eef5ff; }
.wpw-adj-form { display: flex; flex-direction: column; gap: 12px; }
.wpw-adj-tip { font-size: 12px; color: #6b7280; line-height: 1.7; background: #f8fafc;
  border: 1px solid #eef1f5; border-radius: 6px; padding: 8px 10px; }
.wpw-adj-row { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.wpw-adj-row label { color: #6b7280; min-width: 64px; }
.wpw-adj-row b { font-family: ui-monospace, monospace; color: #1e293b; }
.wpw-adj-2 { display: flex; gap: 8px; }
/* 校验/AI 标签 */
.wpw-checks { flex: 1; overflow-y: auto; padding: 12px 12px 8px; }
.wpw-check-sum { display: flex; gap: 8px; margin-bottom: 10px; }
.wpw-cs { font-size: 12px; padding: 2px 9px; border-radius: 10px; font-weight: 600; }
.wpw-cs.err { background: #fef2f2; color: #dc2626; }
.wpw-cs.warn { background: #fffbeb; color: #b45309; }
.wpw-cs.ok { background: #f0fdf4; color: #16a34a; }
.wpw-check-item { border: 1px solid #eef1f5; border-left-width: 3px; border-radius: 6px;
  padding: 8px 10px; margin-bottom: 8px; background: #fff; }
.wpw-check-item.lvl-err { border-left-color: #dc2626; }
.wpw-check-item.lvl-warn { border-left-color: #f59e0b; }
.wpw-check-item.lvl-ok { border-left-color: #16a34a; }
.wpw-check-head { display: flex; align-items: center; gap: 6px; }
.wpw-check-badge { font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 4px;
  background: #f1f5f9; color: #475569; flex: 0 0 auto; }
.lvl-err .wpw-check-badge { background: #fef2f2; color: #dc2626; }
.lvl-warn .wpw-check-badge { background: #fffbeb; color: #b45309; }
.lvl-ok .wpw-check-badge { background: #f0fdf4; color: #16a34a; }
.wpw-check-title { font-size: 13px; font-weight: 600; color: #1e293b; line-height: 1.4; }
.wpw-check-detail { font-size: 12px; color: #475569; line-height: 1.6; margin-top: 4px; }
.wpw-check-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; font-size: 11px; color: #94a3b8; }
.wpw-check-rule { font-family: ui-monospace, monospace; }
.wpw-check-fix { color: #2563eb; }

.wpw-conclusion { padding: 4px 18px 14px; flex: 0 0 auto; }
.wpw-concl-title { font-size: 13px; font-weight: 600; color: #334155; margin-bottom: 8px;
  padding-left: 9px; border-left: 3px solid #355aa0; }
.wpw-concl-box {
  border: 1px solid #e2e8f0; border-radius: 8px; padding: 12px 14px; background: #fcfdff;
  font-size: 13px; line-height: 1.9; color: #334155;
}
.wpw-signoff { padding: 0 18px 16px; flex: 0 0 auto; }
.wpw-btn-primary {
  height: 34px; padding: 0 16px; background: #355aa0; color: #fff; border: none;
  border-radius: 7px; cursor: pointer; font-size: 13px; display: inline-flex;
  align-items: center; gap: 6px; font-weight: 500;
}
.wpw-btn-primary:hover { background: #2c4b87; }

/* ---------- 右：上下文面板 ---------- */
.wpw-context {
  flex: 0 0 300px; background: #fcfdff;
  display: flex; flex-direction: column; overflow: hidden;
}
.wpw-ctx-tabs { display: flex; border-bottom: 1px solid #eef1f5; padding: 4px 6px 0; gap: 2px; }
.wpw-ctx-tabs button {
  flex: 1; height: 38px; border: none; background: transparent; cursor: pointer;
  font-size: 13px; color: #64748b; border-bottom: 2px solid transparent; transition: all .12s;
}
.wpw-ctx-tabs button.on { color: #355aa0; font-weight: 600; border-bottom-color: #355aa0; }
.wpw-timeline { flex: 1; overflow-y: auto; padding: 14px 14px 8px; }
.wpw-tl-item { display: flex; gap: 10px; position: relative; padding-bottom: 16px; }
.wpw-tl-item::before {
  content: ""; position: absolute; left: 4px; top: 16px; bottom: 0; width: 1px; background: #e2e8f0;
}
.wpw-tl-item:last-child::before { display: none; }
.wpw-tl-dot { width: 9px; height: 9px; border-radius: 50%; background: #fff; border: 2px solid #94a3b8;
  margin-top: 4px; flex: 0 0 auto; z-index: 1; }
.wpw-tl-body { flex: 1; min-width: 0; }
.wpw-tl-head { display: flex; align-items: center; gap: 6px; }
.wpw-ava { width: 22px; height: 22px; border-radius: 50%; color: #fff; font-size: 11px;
  display: inline-flex; align-items: center; justify-content: center; font-weight: 600; flex: 0 0 auto; }
.wpw-ava.sm { width: 20px; height: 20px; font-size: 10px; }
.wpw-tl-who { font-size: 13px; font-weight: 600; color: #1e293b; }
.wpw-tl-time { margin-left: auto; font-size: 11.5px; color: #94a3b8; }
.wpw-tl-act { font-size: 12.5px; color: #475569; margin: 3px 0 0 28px; }
.wpw-tl-detail { font-size: 12px; color: #355aa0; margin: 2px 0 0 28px; font-variant-numeric: tabular-nums; }
.wpw-ctx-empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
  color: #94a3b8; gap: 10px; padding: 24px; text-align: center; }
.wpw-ctx-empty .el-icon { font-size: 30px; }
.wpw-ctx-empty p { font-size: 12.5px; line-height: 1.7; margin: 0; }
.wpw-presence {
  flex: 0 0 auto; border-top: 1px solid #eef1f5; padding: 10px 14px; font-size: 12.5px;
  color: #475569; display: flex; align-items: center; gap: 6px;
}
.wpw-pres-dot { width: 7px; height: 7px; border-radius: 50%; background: #16a34a; }
/* v2.6.x 财报行审定调整角标 */
.fs-aje-badge { margin-left: 8px; transform: scale(.9); vertical-align: 1px; }
/* v2.6.x 审定影响一览卡片 */
.lz-impact-card { border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px 14px; margin-bottom: 10px; background: #fff; }
.lz-impact-head { display: flex; align-items: center; gap: 8px; }
.lz-impact-head b { font-family: ui-monospace, monospace; }
.lz-impact-amt { margin-left: auto; font-weight: 700; color: #b45309; }
.lz-impact-desc { margin-top: 4px; color: #1f2937; font-size: 13px; }
.lz-impact-legs { margin-top: 3px; color: #6b7280; font-size: 12px; }
.lz-impact-affects { margin-top: 8px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.lz-aff-lbl { font-size: 12px; color: #6b7280; }
.lz-aff-tag { cursor: pointer; }

/* 底稿中心：左右分栏，独立滚动 + 可拖拽宽度 */
.wp-split {
  display: flex;
  height: calc(100vh - 200px);    /* 顶部 header + section-title + toolbar 大约 200px */
  min-height: 500px;
  gap: 0;
}
/* v1.15.5 拖拽分割条期间，全局关闭过渡动画，避免与每帧宽度更新打架 */
body.is-dragging,
body.is-dragging * {
  transition: none !important;
  animation-play-state: paused !important;
}
body.is-dragging .wp-tree,
body.is-dragging .wp-right {
  will-change: width;     /* 提示浏览器使用合成层加速 */
}

/* v1.27.5 性能优化：sidebar 折叠/展开 transition 期间，临时关掉昂贵的视觉效果
   原本卡顿来源：
     1. ::after 网格纹的 mask-image 每帧重算（极贵）
     2. ::before 5 段渐变 + 双 box-shadow 霓虹线
     3. 底部双 radial-gradient + linear-gradient 叠加背景
     4. 菜单项 hover 的 backdrop-filter: blur(4px) — 期间鼠标横扫会反复触发
     5. .sider-collapse-btn 4 层 box-shadow + drop-shadow filter
   关掉后视觉只是 220ms 内"无装饰"，结束立刻恢复，无感知。 */
body.sider-transitioning .app-sider.tech-sider {
  will-change: width;
  contain: layout style paint;  /* 把重绘范围隔离在 sidebar 内 */
  /* 主背景退化成纯渐变，去掉 2 个 radial-gradient */
  background: linear-gradient(180deg, #0e1c3a 0%, #122348 50%, #0e1c3a 100%);
}
body.sider-transitioning .app-sider.tech-sider::before,
body.sider-transitioning .app-sider.tech-sider::after {
  display: none;  /* 网格纹 + 顶部霓虹线 */
}
body.sider-transitioning .sider-item,
body.sider-transitioning .sider-item-icon,
body.sider-transitioning .sider-item-name,
body.sider-transitioning .sider-item-indicator,
body.sider-transitioning .sider-item-glow,
body.sider-transitioning .sider-collapse-btn {
  transition: none !important;
}
body.sider-transitioning .sider-item:hover {
  /* 拖动期间禁用 hover：backdrop-filter 极贵 */
  background: transparent;
  box-shadow: none;
  border-color: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  transform: none;
}
body.sider-transitioning .sider-item:hover .sider-item-glow { opacity: 0; }
body.sider-transitioning .sider-item:hover .sider-item-icon {
  transform: none; filter: none;
}

/* sider-perf4: 大表页面（ledger / mapping）的卡顿根源是 el-table 的 ResizeObserver
   在 sidebar transition 期间持续触发完整列宽 reflow（数百行 × 数列 = 极重）。
   解法：transition 期间整个 .app-content 用 content-visibility: hidden 完全跳过
   layout 与渲染，sidebar 独立流畅滑动。结束后浏览器一次性 reflow 主区（1 帧）。

   兼容性：Chrome 85+ / Edge 85+ / Firefox 125+ / Safari 18+ — 全主流支持。
   不支持的浏览器自动回退到原本的 reflow 行为（无害）。 */
body.sider-transitioning .app-content {
  content-visibility: hidden;
  /* auto + 上次记住的 size：保持滚动条位置不跳，且新内容长度变化时浏览器自动更新占位 */
  contain-intrinsic-size: auto 1200px;
  pointer-events: none;                /* 期间禁用交互，避免触发 hover 计算 */
  transition: none !important;         /* 期间不需要 margin-left 动画（内容已隐藏）*/
}
.wp-split .wp-tree {
  width: var(--tree-w, 240px);    /* v2.3.5: 260 → 240 */
  flex: 0 0 auto;
  display: flex; flex-direction: column;
  background: #fff; border-radius: 8px 0 0 8px;
  padding: 0; overflow: hidden;
  box-shadow: 0 1px 2px rgba(0,0,0,0.06);
}
.wp-split .wp-tree-head {
  padding: 8px 10px; border-bottom: 1px solid #eef2f7;
  flex: 0 0 auto;
}
.wp-split .wp-tree-body {
  padding: 6px 4px 12px; overflow-y: auto; flex: 1 1 auto;
}

/* v2.3.5 工作底稿左栏极致紧凑头部
   原本占 ~170px 垂直，重构后 ~70px */
.wp-tree-head-compact { padding: 8px 10px 6px !important; }
.wp-th-progress-row {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 6px;
}
.wp-th-progress-bar {
  flex: 1; height: 4px;
  background: #f1f5f9; border-radius: 2px; overflow: hidden;
}
.wp-th-progress-bar > div {
  height: 100%;
  background: linear-gradient(90deg, #2a5298, #10b981);
  transition: width 0.3s ease;
}
.wp-th-progress-num {
  font-size: 11.5px; color: #475569; font-weight: 600;
  font-variant-numeric: tabular-nums;
  flex: 0 0 auto;
}
.wp-th-info {
  color: #94a3b8; font-size: 13px;
  cursor: help;
  transition: color 0.15s;
}
.wp-th-info:hover { color: #2a5298; }

.wp-th-tools-row {
  display: flex; gap: 4px; align-items: center;
  margin-bottom: 6px;
}
.wp-th-segment { flex: 0 0 auto; }
.wp-th-segment .el-radio-button__inner {
  padding: 3px 8px !important;
  font-size: 11.5px !important;
  height: auto !important;
}
.wp-th-search { flex: 1 1 auto; min-width: 0; }
.wp-th-search .el-input__wrapper {
  padding-left: 6px !important;
  padding-right: 6px !important;
}
.wp-th-search .el-input__inner {
  height: 24px !important;
  font-size: 12px !important;
}
.wp-th-search .el-input__prefix { font-size: 11px; }

/* 极简 chip 替代 el-tag，padding 更紧 */
.wp-th-chip-row {
  display: flex; gap: 4px; flex-wrap: wrap;
}
.wp-th-chip {
  font-size: 11px; line-height: 1;
  padding: 3px 8px;
  border-radius: 10px;
  background: #f1f5f9; color: #64748b;
  cursor: pointer;
  border: 1px solid transparent;
  transition: all 0.12s;
  user-select: none;
}
.wp-th-chip:hover { background: #e2e8f0; }
.wp-th-chip.active {
  background: var(--c-brand); color: #fff;
  border-color: var(--c-brand);
}
.wp-th-chip.done.active { background: #10b981; border-color: #10b981; }
.wp-th-chip.empty.active { background: #f59e0b; border-color: #f59e0b; }
.wp-th-chip.pending.active { background: #6b7280; border-color: #6b7280; }
.wp-splitter {
  width: 6px; flex: 0 0 6px; cursor: col-resize;
  background: transparent; position: relative; user-select: none;
}
.wp-splitter::before {
  content: ''; position: absolute; left: 2px; top: 0; bottom: 0;
  width: 2px; background: #e5e7eb;
}
.wp-splitter:hover::before { background: #2a5298; }
.wp-split .wp-right {
  flex: 1 1 auto; min-width: 0;
  overflow-y: auto; overflow-x: auto;
  background: #f7f9fc; border-radius: 0 8px 8px 0;
}
.wp-split .wp-right .card { margin: 0; min-height: 100%; }

/* 底稿 / 各页面通用时间戳条 */
.wp-ts-bar, .page-ts-bar {
  margin-top:10px; padding:8px 10px; background:#f0f5ff; border-radius:6px;
  font-size:11.5px; color:#4b5563; line-height:1.8;
  display:flex; flex-direction:column; gap:1px;
}
.wp-ts-bar .el-icon, .page-ts-bar .el-icon { font-size:12px; vertical-align:-1px; margin-right:3px; color:#6b7280; }

/* 底稿目录树（项目结构样式） */
.wp-tree .wp-cat { font-weight:600; padding:4px 6px; color:#374151;
  display:flex; align-items:center; gap:6px; font-size:12.5px;
  cursor: pointer; user-select: none; border-radius: 4px;
  transition: background 0.12s;
  line-height: 1.4; }    /* v2.3.5 pass10: 5 6 → 4 6 */
.wp-tree .wp-cat:hover { background: #f8fafc; }
.wp-tree .wp-cat-chevron {
  flex: 0 0 14px; width: 14px; height: 14px;
  display: inline-flex; align-items: center; justify-content: center;
  color: #94a3b8; transition: color 0.12s;
}
.wp-tree .wp-cat-chevron .el-icon { font-size: 11px; }
.wp-tree .wp-cat:hover .wp-cat-chevron { color: var(--c-brand); }
.wp-tree .wp-cat-block.collapsed .wp-cat { opacity: 0.85; }
.wp-tree .wp-cat-block { margin-bottom: 2px; }     /* pass10: 4 → 2 */
.wp-tree .wp-cat-children {
  padding-left: 4px;
  border-left: 1px dashed transparent;             /* 占位防抖 */
  transition: opacity 0.15s;
}
.wp-tree .wp-cat-block:not(.collapsed) .wp-cat-children {
  border-left-color: #e2e8f0;
  margin-left: 7px;
}
.wp-tree .wp-cat-total { font-size: 10.5px; color: #cbd5e1; flex: 0 0 auto; }
.wp-tree .wp-cat-stats { flex: 0 0 auto; }
.wp-tree .wp-progress { flex:1; height:6px; background:#f3f4f6; border-radius:3px; }
.wp-tree .wp-progress > div { height:100%; background:linear-gradient(90deg,#2a5298,#10b981);
  border-radius:3px; }
.wp-tree .wp-cat .wp-cat-name { flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wp-tree .wp-item { padding: 2px 8px 2px 18px; display: flex; align-items: center; gap: 5px;
  cursor: pointer; border-radius: 4px; font-size: 12px; min-width: 0;
  position: relative; transition: background .15s;
  line-height: 1.45; }    /* v2.3.5 pass10: 上下 padding 4→2，行高紧凑 */
.wp-tree .wp-item:hover { background: #f3f6fb; }
/* v2.3.5 pass8 目录 active 回退到浅蓝渐变 + 蓝字（pass7 深蓝填充被用户否决，字看不清） */
.wp-tree .wp-item.active {
  background: linear-gradient(90deg, #dbeafe 0%, #eff6ff 100%);
  color: #1d4ed8; font-weight: 600;
  box-shadow: inset 0 0 0 1px rgba(59,130,246,0.35);
}
.wp-tree .wp-item.active::before {
  content: ''; position: absolute;
  left: 0; top: 4px; bottom: 4px; width: 3px;
  background: linear-gradient(180deg, #2a5298 0%, #4472c4 100%);
  border-radius: 2px;
  box-shadow: 0 0 6px rgba(42,82,152,0.55);
}
.wp-tree .wp-item.active .wp-item-code { color: #1d4ed8; }
.wp-tree .wp-item.active .wp-item-name { color: #1f2937; }
.wp-tree .wp-item .wp-item-code { color: #2a5298; flex: 0 0 auto; font-size: 11.5px;
  font-family: ui-monospace,Menlo,monospace; }
.wp-tree .wp-item .wp-item-name { flex: 1 1 auto; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wp-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  flex-shrink: 0; vertical-align: middle; }
.wp-dot.done       { background: #10b981; box-shadow: 0 0 0 2px #d1fae5; }
.wp-dot.done_empty { background: #f59e0b; box-shadow: 0 0 0 2px #fef3c7; }
.wp-dot.pending    { background: #d1d5db; box-shadow: 0 0 0 2px #f3f4f6; }

/* v2.1.1-p21：升级版"已生成/未生成"方框 —— 替换 .wp-dot，扫视一眼能区分（参考小蜜同学）*/
.wp-checkbox {
  display: inline-flex; align-items: center; justify-content: center;
  width: 14px; height: 14px; border-radius: 3px;
  border: 1.5px solid #d1d5db;
  background: #fff;
  flex-shrink: 0;
  font-size: 11px; font-weight: 700; line-height: 1;
  color: transparent;
}
.wp-checkbox.done {
  background: #10b981; border-color: #059669; color: #fff;
}
.wp-checkbox.done_empty {
  background: #fef3c7; border-color: #f59e0b; color: #92400e;
}
.wp-checkbox.pending { background: #f9fafb; border-color: #d1d5db; }

/* 行级背景色提示 */
.wp-item.wp-item-status-done_empty { background: #fffbeb; }
.wp-item.wp-item-status-done_empty:hover { background: #fef3c7; }

/* 图例 */
.wp-tree-legend {
  display: flex; gap: 12px; align-items: center;
  padding: 8px 10px; margin-top: 4px;
  border-top: 1px solid #e5e7eb;
  font-size: 11.5px; color: #6b7280;
  flex-wrap: wrap;
}
.wp-tree-legend > span { display: inline-flex; align-items: center; gap: 4px; }

/* v2.3.8 总进度移到左栏底部 */
.wp-split .wp-tree-foot {
  flex: 0 0 auto; padding: 8px 10px;
  border-top: 1px solid #e5e7eb; background: #fff;
}
.wp-tree-foot-top {
  display: flex; justify-content: space-between;
  font-size: 12.5px; color: #374151;
}
.wp-tree-foot .wp-tree-legend {
  border-top: none; padding: 0;
}

/* v2.1.1-p21：表格缩放包装 —— CSS var 控制 scale，宽度补偿防止溢出 */
.rt-zoom-wrap {
  transform: scale(var(--rt-zoom, 1));
  transform-origin: 0 0;
  width: calc(100% / var(--rt-zoom, 1));
  transition: transform .15s ease;
}
/* 缩放控件按钮组 */
.rt-zoom {
  display: inline-flex; align-items: center; gap: 0;
  border: 1px solid #e5e7eb; border-radius: 6px;
  background: #fff; padding: 2px;
}
.rt-zoom .el-button {
  width: 28px; height: 24px; padding: 0;
  font-size: 14px; font-weight: 700; line-height: 1;
  border: none; background: transparent; color: #4b5563;
}
.rt-zoom .el-button:hover:not(:disabled) { background: #f3f4f6; color: #1f2937; }
.rt-zoom .el-button:disabled { color: #d1d5db; }
.rt-zoom-val {
  display: inline-block; min-width: 50px; text-align: center;
  font-size: 12px; font-variant-numeric: tabular-nums;
  color: #6b7280; cursor: pointer; user-select: none;
  padding: 0 4px;
}
.rt-zoom-val.active { color: #2563eb; font-weight: 600; }
.rt-zoom-val:hover { color: #1e40af; }

/* v2.1.1-p21：Excel 列字母表头视觉（更浅的灰，作为定位锚点） */
.rt-excel-col > .cell {
  color: #6b7280; font-weight: 600; font-size: 11.5px;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  letter-spacing: 0.5px;
}
/* 行号列 - 跟列字母同款灰色 */
.rt-rowidx .cell {
  color: #6b7280; font-size: 11.5px;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}
/* v2.2: 左侧分类三色统计（永远三色，0 时变暗保持位置一致） */
.wp-cat-stats { display:inline-flex; gap:4px; align-items:center; margin-left:auto;
  font-size:11px; font-variant-numeric:tabular-nums; }
.wp-cat-stat { display:inline-flex; align-items:center; gap:2px;
  padding:1px 5px; border-radius:8px; font-weight:600; line-height:1.3;
  min-width:22px; justify-content:center; transition:opacity 0.15s; }
.wp-cat-stat.done    { color:#047857; background:#d1fae5; }
.wp-cat-stat.empty   { color:#92400e; background:#fef3c7; }
.wp-cat-stat.pending { color:#374151; background:#e5e7eb; }
.wp-cat-stat.zero    { opacity:0.28; }
.wp-cat-stat:hover   { opacity:1; transform:scale(1.05); }
/* 行级状态背景细节 */
.wp-tree .wp-item.st-done_empty { background:#fffbeb; }
.wp-tree .wp-item.st-done_empty:hover { background:#fef3c7; }
.wp-tree .wp-item.st-pending { background:transparent; }

/* v2.2 P-③: 底稿可编辑 */
/* v2.3.5 pass4 编辑工具栏极简化：黄渐变横条 → 一行小字 muted，
   只有真正"已修改"时高亮，否则视觉降到最低 */
.wp-edit-toolbar {
  display:flex; align-items:center; gap:8px;
  padding: 2px 0; margin: 0 0 6px;
  background: transparent;
  border: none;
  font-size: 11px;
  color: #94a3b8;
  min-height: 22px;
}
.wp-edit-toolbar .wp-edit-by { color:#94a3b8; font-size: 10.5px; margin-right:auto; }
/* 真正"已修改"时才左侧加细黄条作为告警提示（用 .has-changes class 替代 :has() 选择器以提升兼容性） */
.wp-edit-toolbar.has-changes {
  padding: 4px 10px;
  border-left: 2px solid #f59e0b;
  background: rgba(254, 243, 199, 0.35);
  border-radius: 0 4px 4px 0;
}
.wp-edit-toolbar .el-tag { font-size: 10.5px !important; padding: 0 6px !important; height: 18px !important; line-height: 16px !important; }
.wp-edit-toolbar .el-button { padding: 2px 8px !important; min-height: 22px !important; font-size: 11px !important; }
.wp-edit-toolbar .el-button .el-icon { font-size: 11px; }
.wp-payload-table td.editable { cursor:cell; transition:background 0.15s; }
.wp-payload-table td.editable:hover {
  background:#dbeafe !important;
  outline:1px dashed #3b82f6;
  outline-offset:-1px;
}
.wp-payload-table td.cell-overridden {
  background:#fef3c7 !important;
  position:relative;
}
.wp-payload-table td.cell-overridden::after {
  content:'✎';
  position:absolute; top:1px; right:3px;
  font-size:9px; color:#d97706;
}
.wp-payload-table td.cell-overridden.editable:hover {
  background:#fed7aa !important;
}

/* v2.2 P-②: 底稿管理面板 */
.wpa-stats { display:flex; gap:12px; margin:14px 0; flex-wrap:wrap; }
.wpa-stat-card {
  flex:1 1 130px; min-width:130px;
  padding:14px 16px; background:#fff;
  border-radius:8px; border:1px solid #e5e7eb;
  cursor:pointer; transition:0.2s;
  display:flex; flex-direction:column; gap:4px;
}
.wpa-stat-card:hover { transform:translateY(-2px); box-shadow:0 4px 12px rgba(0,0,0,0.06); }
.wpa-stat-card.active { border-color:#2a5298; box-shadow:0 0 0 2px rgba(42,82,152,0.15); }
.wpa-stat-card.st-draft     { border-left:3px solid #94a3b8; }
.wpa-stat-card.st-reviewing { border-left:3px solid #3b82f6; }
.wpa-stat-card.st-approved  { border-left:3px solid #10b981; }
.wpa-stat-card.st-rejected  { border-left:3px solid #ef4444; }
.wpa-stat-card.st-locked    { border-left:3px solid #f59e0b; }
.wpa-stat-card.extra        { border-left:3px solid #d97706; }
.wpa-stat-num { font-size:22px; font-weight:700; color:#1e293b; font-variant-numeric:tabular-nums; }
.wpa-stat-label { font-size:12px; color:#6b7280; }

.wpa-batch-bar {
  margin:8px 0;
  background:linear-gradient(to right, #eff6ff 0%, #dbeafe 100%);
  border-left:4px solid #3b82f6;
}
.wpa-batch-bar :deep(.el-card__body) { padding:10px 14px; display:flex; align-items:center; gap:8px; }
.wpa-batch-info { font-size:13px; margin-right:4px; }

.wpa-filter-bar { display:flex; align-items:center; gap:10px; margin:10px 0 6px; }
.wpa-count-hint { font-size:12px; color:#9ca3af; }

.wpa-code-link { color:#2a5298; font-family:ui-monospace,Menlo,monospace; text-decoration:none; }
.wpa-code-link:hover { text-decoration:underline; }

.wpa-row-locked   { background:#fef3c7 !important; }
.wpa-row-rejected { background:#fee2e2 !important; }

/* v2.2 P-C: 底稿模板管理器 */
.tpl-cols-editor, .tpl-out-editor { background:#f9fafb; padding:10px;
  border-radius:6px; border:1px solid #e5e7eb; }
.tpl-cols-hint { font-size:12px; color:#6b7280; margin-bottom:8px; }
.tpl-col-row, .tpl-out-row {
  display:flex; align-items:center; gap:6px; margin-bottom:6px;
  padding:4px; border-radius:4px; background:#fff;
}
.tpl-col-drag { cursor:move; color:#9ca3af; font-size:14px; user-select:none; }
.tpl-tpl-vars { margin-top:6px; font-size:12px; color:#6b7280;
  display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.tpl-tpl-vars code {
  padding:1px 6px; background:#eff6ff; border-radius:4px;
  color:#2563eb; font-family:ui-monospace,Menlo,monospace; font-size:11px;
  cursor:pointer;
}
.tpl-tpl-vars code:hover { background:#dbeafe; }
.tpl-prev-section { margin-bottom:14px; }
.tpl-prev-section h4 { margin:8px 0; color:#374151; font-size:13px; }
.legend-dot { margin-right: 4px; }
mark.wp-hl { background: #fef08a; color: #1f2937; padding: 0 1px; border-radius: 2px; }

/* 数据中心总览卡片 */
.data-ov-card {
  display:flex; align-items:center; gap:10px; padding:12px;
  background:#fff; border-radius:8px; border:1px solid #e5e7eb;
  cursor:pointer; transition:0.2s;
}
.data-ov-card:hover { border-color:#2a5298; box-shadow:0 2px 8px rgba(42,82,152,0.15); }
.data-ov-card.ready { background:#f0fdf4; border-color:#10b981; }
.data-ov-card.pending { background:#fef2f2; border-color:#fca5a5; }
.data-ov-card .dot {
  width:10px; height:10px; border-radius:50%; flex-shrink:0;
}
.data-ov-card .dot.g { background:#10b981; }
.data-ov-card .dot.r { background:#ef4444; }

/* tab 上的状态点 */
.dot-status {
  display:inline-block; width:8px; height:8px; border-radius:50%;
  background:#e5e7eb; margin-right:6px;
  vertical-align:middle;
}
.dot-status.on { background:#10b981; }
.tip { margin-top:8px; color:#888; font-size:13px; }

/* 表格行高亮 */
.el-table .row-warning { background-color: #fef9e7 !important; }
.el-table .row-error   { background-color: #fee2e2 !important; }
/* v1.30 校验结果分级配色（覆盖整行） */
.el-table .row-warn td  { background-color: #fffbeb !important; }
.el-table .row-err td   { background-color: #fef2f2 !important; }
/* v1.31 勾稽健康度色块 */
.health-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 8px;
}
.health-chip {
  border: 1px solid #e5e7eb; border-radius: 8px;
  padding: 8px 10px; cursor: pointer;
  background: #fff; transition: transform .1s, box-shadow .15s;
}
.health-chip:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(0,0,0,0.08);
}
.health-chip.health-chip-active {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 2px rgba(37,99,235,0.25);
  background: #eff6ff;
}

/* ===== v2.3.8 资料完整度驾驶舱 ===== */
.materials-page .mat-overview {
  display: flex; align-items: center; gap: 28px; padding: 18px 22px; margin-bottom: 14px;
}
.materials-page .mat-gauge-val { font-size: 26px; font-weight: 700; color: #1f2937; }
.materials-page .mat-gauge-val small { font-size: 13px; margin-left: 1px; }
.materials-page .mat-gauge-cap { font-size: 11px; color: #9ca3af; margin-top: 2px; }
.materials-page .mat-stats {
  flex: 1; display: grid; grid-template-columns: repeat(3, auto) 1fr; gap: 18px 28px; align-items: center;
}
.materials-page .mat-stat .ms-val { font-size: 22px; font-weight: 700; }
.materials-page .mat-stat .ms-label { font-size: 12px; color: #6b7280; margin-top: 2px; }
.materials-page .mat-hint {
  grid-column: 1 / -1; font-size: 12px; color: #9ca3af; display: flex; gap: 6px; align-items: flex-start;
}
.materials-page .mat-sec-title { font-size: 14px; font-weight: 600; color: #374151; margin-bottom: 12px; display: flex; align-items: center; gap: 6px; }
.materials-page .mat-sec-title.danger { color: #dc2626; }
.materials-page .mat-missing { border-left: 3px solid #dc2626; }
.materials-page .mat-miss-item { padding: 10px 0; border-bottom: 1px dashed #f0f0f0; }
.materials-page .mat-miss-item:last-child { border-bottom: none; }
.materials-page .mm-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.materials-page .mm-name { font-weight: 600; color: #1f2937; }
.materials-page .mm-mod { font-size: 11px; color: #9ca3af; margin-left: auto; }
.materials-page .mm-row, .materials-page .mi-row { font-size: 12.5px; color: #4b5563; line-height: 1.7; }
.materials-page .mm-k, .materials-page .mi-k { color: #9ca3af; }
.materials-page .mat-legend { display: flex; gap: 16px; font-size: 12px; color: #6b7280; margin-bottom: 6px; }
.materials-page .mat-legend .dot, .materials-page .mi-left .dot {
  display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; vertical-align: middle;
}
.materials-page .dot.have { background: #16a34a; }
.materials-page .dot.miss { background: #dc2626; }
.materials-page .dot.na { background: #cbd5e1; }
.materials-page .mm-actions { margin-top: 7px; display: flex; align-items: center; }
.materials-page .mat-mod-title { font-weight: 600; color: #1f2937; }
.materials-page .mat-mod-counts { display: inline-flex; gap: 6px; margin-left: 10px; }
.materials-page .mat-item { display: flex; gap: 8px; padding: 8px 0; border-bottom: 1px dashed #f5f5f5; }
.materials-page .mat-item:last-child { border-bottom: none; }
.materials-page .mat-item.st-na { opacity: 0.55; }
.materials-page .mi-left { padding-top: 4px; }
.materials-page .mi-head { display: flex; align-items: center; gap: 8px; margin-bottom: 2px; }
.materials-page .mi-name { font-weight: 500; color: #1f2937; }
.health-chip .hc-head {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 13px; color: #1f2937;
}
.health-chip .hc-score {
  font-size: 18px; font-weight: 700;
}
.health-chip .hc-bar {
  height: 4px; background: #f3f4f6; border-radius: 2px;
  margin: 6px 0; overflow: hidden;
}
.health-chip .hc-bar > div {
  height: 100%; border-radius: 2px; transition: width .3s;
}
.health-chip .hc-footer {
  display: flex; gap: 8px; font-size: 12px;
}
.health-chip.health-good  { border-color: #86efac; }
.health-chip.health-good .hc-score, .health-chip.health-good .hc-bar > div { color: #16a34a; background: #16a34a; }
.health-chip.health-warn  { border-color: #fde68a; background: #fffbeb; }
.health-chip.health-warn .hc-score { color: #d97706; }
.health-chip.health-warn .hc-bar > div { background: #d97706; }
.health-chip.health-bad   { border-color: #fecaca; background: #fef2f2; }
.health-chip.health-bad  .hc-score { color: #dc2626; }
.health-chip.health-bad  .hc-bar > div { background: #dc2626; }

/* v1.30 勾稽跳转：目标行高亮动画 */
@keyframes rt-jumphl-pulse {
  0%   { background-color: #fde68a; }
  60%  { background-color: #fef3c7; }
  100% { background-color: transparent; }
}
.el-table .rt-jumphl td {
  animation: rt-jumphl-pulse 4.5s ease-out 1 forwards;
  box-shadow: inset 3px 0 0 #f59e0b;
}

/* ============ 底稿详情头 — v2.3.5 pass6（紧凑 + 蓝色 + 柔白字 #e8edf5） ============ */
.wp-detail-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 14px;
  margin: -12px -16px 0;
  border-radius: 8px 8px 0 0;
  background: linear-gradient(135deg, #2a5298 0%, #2e86c1 100%);
  color: #e8edf5;                                       /* pass6: #fff → #e8edf5 */
}
.wp-detail-head-left { display: flex; align-items: center; gap: 10px; }
.wp-detail-head-left h3 {
  margin: 0; color: #e8edf5;                            /* pass6 柔白 */
  font-size: 13.5px; font-weight: 600; letter-spacing: 0.2px;
}
.wp-code-pill {
  background: rgba(255,255,255,0.18); color: #e8edf5;   /* pass6 柔白 */
  padding: 2px 8px; border-radius: 10px;
  font-size: 11px; font-weight: 700; letter-spacing: 0.4px;
  font-family: ui-monospace, Menlo, monospace;
}
/* 标题条内所有 el-tag effect="dark" 字色也从 #fff → 柔白 #e8edf5 */
.wp-detail-head .el-tag--dark { color: #e8edf5 !important; }
/* "对应附注" 按钮：plain primary 在蓝底上做反白，确保对比度 */
.wp-detail-head .el-button--primary.is-plain {
  background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.35);
  color: #e8edf5;
}
.wp-detail-head .el-button--primary.is-plain:hover {
  background: rgba(255,255,255,0.22); border-color: rgba(255,255,255,0.5);
  color: #fff;
}

/* 元信息条更克制：从浅蓝灰背景 → 透明背景，纯文字 */
.wp-meta {
  display: flex; flex-wrap: wrap; gap: 4px 16px;
  background: transparent; border: none;
  padding: 4px 14px 8px; margin: 0 -16px 8px;
  font-size: 11px; color: #64748b;
  line-height: 1.5;
  border-bottom: 1px dashed #e2e8f0;
}
.wp-meta > div { display: inline-flex; align-items: baseline; gap: 3px; }
.wp-meta b { color: #94a3b8; font-weight: 400; font-size: 10.5px; }

.wp-payload-table { overflow-x: auto; }

/* v2.3.5 pass7 底稿详情容器统一基线字号：所有未显式 size 的元素继承 12.5px */
.wp-detail { font-size: 12.5px; line-height: 1.55; color: #1e293b; }
.wp-detail b, .wp-detail strong { font-weight: 600; }
/* 审计结论段落紧凑 */
.wp-detail > div > p,
.wp-detail > div > div.wp-conclusion {
  font-size: 12.5px; padding: 6px 10px !important;
  margin-top: 4px !important; line-height: 1.55;
}
.wp-detail .el-divider { margin: 8px 0 !important; }

.wp-table {
  width: 100%; border-collapse: collapse; font-size: 12.5px;
  border: 1px solid #d6dee8;
}
.wp-table thead th {
  /* v2.3.5 pass8 改回深蓝（与底稿标题条 wp-detail-head 同色系，全表头统一） */
  background: linear-gradient(180deg, #4472c4 0%, #3a64b3 100%);
  color: #e8edf5; font-weight: 600;
  padding: 5px 10px; font-size: 12.5px;
  border: 1px solid #355aa0;
  text-align: center; white-space: nowrap;
  letter-spacing: 0.2px;
}
.wp-table tbody td {
  padding: 4px 10px; border: 1px solid #e5e7eb;
  font-variant-numeric: tabular-nums; font-size: 12.5px;
}
/* v2.3.5 pass9 所有底稿表格首列统一浅灰（跟 th.lbl 同色），
   让"标签列 vs 数据列"在视觉上一致，不管是 renderInfo/renderRisk/renderTable */
.wp-table tbody td:first-child {
  background: #e2e8f0;
  color: #334155;
  font-weight: 500;
}
/* 极少数情况下首列就是数字（如序号），保持数字字体但仍浅灰底 */
.wp-table tbody td:first-child.num { font-weight: 600; }
.wp-table tbody tr.even td { background: #fff; }
.wp-table tbody tr.odd td  { background: #f8fafc; }
.wp-table tbody tr:hover td { background: #fff8e1 !important; }
.wp-table td.num { text-align: right; }
.wp-table tfoot td {
  background: #e7e6e6; font-weight: 700; padding: 10px 12px;
  border: 1px solid #b8b8b8;
}
.wp-table tfoot td.num { text-align: right; color: #1f2937; }
/* v2.3.5 pass8: th.lbl 保持浅灰底深字（这是表格"标签列"约定俗成的风格） */
.wp-table th.lbl {
  background: #e2e8f0; color: #334155; font-weight: 600;
  width: 160px; text-align: left;
}

/* v2.3.5 pass8 子区块标题：改成蓝色（与底稿标题条 wp-detail-head 同色系，统一蓝） */
.wp-info-card { margin-bottom: 10px; }
.wp-info-title {
  background: linear-gradient(180deg, #4472c4 0%, #3a64b3 100%);
  color: #e8edf5;
  padding: 5px 12px; font-weight: 600;
  font-size: 12.5px; letter-spacing: 0.2px;
  border-radius: 4px 4px 0 0;
  border: 1px solid #355aa0; border-bottom: none;
}

.wp-text-box {
  background: #f7f9fc; padding: 16px; border-radius: 6px;
  border-left: 4px solid #2a5298; color: #374151; line-height: 1.6;
}

.wp-raw {
  background: #f3f4f6; padding: 12px; border-radius: 6px;
  font-size: 12px; max-height: 500px; overflow: auto;
}

.risk-tag {
  display: inline-block; padding: 2px 10px; border-radius: 10px;
  font-size: 12px; font-weight: 600;
}
.risk-tag.risk-high { background: #fee2e2; color: #b91c1c; }
.risk-tag.risk-mid  { background: #fef3c7; color: #b45309; }
.risk-tag.risk-low  { background: #d1fae5; color: #047857; }

/* v1.4 映射弹窗样式 */
.map-dlg .dlg-section {
  background: #f7f9fc;
  border: 1px solid #e8ecf2;
  border-radius: 6px;
  padding: 16px;
  margin-bottom: 12px;
}
.map-dlg .dlg-section-title {
  font-size: 14px;
  font-weight: 600;
  color: #2a5298;
  margin-bottom: 12px;
  border-left: 3px solid #2a5298;
  padding-left: 8px;
}
.map-dlg .hint {
  font-size: 12px;
  color: #999;
  line-height: 1.4;
  margin-top: 2px;
}
.map-dlg .val-ok   { color: #67c23a; }
.map-dlg .val-diff { color: #f56c6c; font-weight: 600; }
.map-dlg .el-form-item { margin-bottom: 12px; }

/* 风险评分圆环 */
.risk-ring { width: 140px; height: 140px; transform: rotate(-90deg); }
.risk-ring .bg { fill: none; stroke: #f3f4f6; stroke-width: 3.2; }
.risk-ring .fg { fill: none; stroke-width: 3.2; stroke-linecap: round;
                  transition: stroke-dasharray .6s ease, stroke .3s ease; }

/* ============ v1.8 账簿查询 ============ */
.ledger-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 0;
  margin-bottom: 8px;
  border-bottom: 1px solid #f0f0f0;
}
.ledger-stats {
  display: flex;
  gap: 16px;
  align-items: center;
  font-size: 13px;
  color: #555;
  margin-left: auto;
}
.ledger-stats span { display: inline-flex; gap: 4px; align-items: center; }
.ledger-stats b { color: #1f2937; font-weight: 600; }

.ledger-empty {
  text-align: center;
  padding: 80px 20px;
  color: #999;
}
.ledger-empty p { margin: 12px 0 0; }

/* v1.12 总账分页器 */
/* ========== v1.14.9 AI 一句话解读卡片 ========== */
.biz-insights {
  background: linear-gradient(135deg, #fef3c7 0%, #fef9e7 100%);
  border: 1px solid #fbbf24;
  border-radius: 10px;
  padding: 12px 16px;
  margin-bottom: 14px;
}
.biz-insights-head {
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 700;
  color: #92400e;
  margin-bottom: 8px;
  font-size: 14px;
}
.biz-insights-head small {
  font-weight: 400;
  color: #b45309;
  font-size: 11px;
}
.biz-insights-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.biz-insights-list li {
  display: flex;
  gap: 8px;
  padding: 6px 0;
  font-size: 13px;
  color: #1f2937;
  line-height: 1.6;
  border-top: 1px dashed rgba(146, 64, 14, 0.15);
}
.biz-insights-list li:first-child { border-top: none; }
.biz-insights-list li.tip-good { color: #166534; }
.biz-insights-list li.tip-warn { color: #92400e; }
.biz-insights-list li.tip-info { color: #475569; }
.biz-tip-go {
  margin-left: 8px; color: #2563eb; cursor: pointer; font-weight: 600;
  white-space: nowrap; font-size: 12.5px;
}
.biz-tip-go:hover { text-decoration: underline; }
/* v2.41 AI 深度诊断面板 */
.biz-aidiag { margin: 10px 0 14px; }
.biz-aidiag-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.biz-aidiag-bar .muted { color: #94a3b8; }
.biz-aidiag-result { margin-top: 10px; }
.biz-aidiag-summary {
  font-weight: 600; color: #0f172a; background: #eff6ff;
  border-left: 3px solid #2563eb; border-radius: 6px; padding: 8px 12px; margin-bottom: 8px;
}
.biz-aidiag-item {
  background: #fff; border: 1px solid #e2e8f0; border-radius: 8px;
  padding: 10px 12px; margin-bottom: 8px; font-size: 13px; line-height: 1.7;
}
.biz-aidiag-item .bd-title { font-weight: 600; color: #1e293b; margin-bottom: 2px; }
.biz-aidiag-item .bd-row { color: #475569; }
.biz-aidiag-item .bd-k { color: #94a3b8; }
.biz-aidiag-item .bd-actions { margin-top: 4px; }
/* v2.6 取数口径自检 */
.biz-selfcheck { margin-top: 10px; }
.sc-badges { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.sc-item {
  display: flex; align-items: flex-start; gap: 8px;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 8px;
  padding: 9px 12px; margin-bottom: 6px; font-size: 13px; line-height: 1.6;
}
.sc-item .sc-dot { flex-shrink: 0; width: 8px; height: 8px; border-radius: 50%; margin-top: 6px; background: #cbd5e1; }
.sc-item.sc-high .sc-dot { background: #ef4444; }
.sc-item.sc-medium .sc-dot { background: #f59e0b; }
.sc-item.sc-low .sc-dot { background: #3b82f6; }
.sc-item .sc-body { flex: 1; }
.sc-item .sc-title { font-weight: 600; color: #1e293b; }
.sc-item .sc-detail { color: #64748b; margin-top: 2px; }
.hc-layer { display: flex; align-items: center; gap: 6px; font-weight: 700; color: #334155;
  font-size: 13px; margin: 4px 0 6px; padding-bottom: 4px; border-bottom: 1px dashed #e2e8f0; }
.hc-layer small { font-weight: 400; color: #94a3b8; }
.tip-icon {
  flex-shrink: 0;
  font-size: 14px;
}
.tip-text {
  flex: 1;
}

/* ========== v1.14 经营总结 + 五大类卡片 + 友好编码 ========== */
.biz-summary {
  background: linear-gradient(135deg, #f4f7fc 0%, #ffffff 100%);
  border: 1px solid #e3eaf3;
  border-radius: 10px;
  padding: 14px 18px;
  margin: 0 0 14px 0;
  box-shadow: 0 1px 2px rgba(0,0,0,0.02);
}
.biz-summary-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  line-height: 1.8;
}
.biz-tag {
  font-weight: 600;
  color: #555;
}
.biz-num {
  font-weight: 600;
  color: #1f2937;
  font-variant-numeric: tabular-nums;
}
.biz-num-strong {
  font-weight: 700;
  font-size: 16px;
  color: #2563eb;
}
.biz-neg { color: #dc2626 !important; }
.biz-sep { color: #cbd5e1; margin: 0 2px; }
.biz-divider {
  width: 1px;
  height: 18px;
  background: #d1d5db;
  margin: 0 10px;
}
.biz-tag-asset    { color: #2563eb; }
.biz-tag-liab     { color: #dc2626; }
.biz-tag-equity   { color: #059669; }
.biz-tag-income   { color: #16a34a; }
.biz-tag-expense  { color: #ea580c; }
.biz-tag-profit   { color: #7c3aed; }

.biz-cards {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 10px;
  margin-bottom: 14px;
}
.biz-card {
  display: flex;
  align-items: center;
  gap: 12px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-left: 4px solid #e5e7eb;
  border-radius: 8px;
  padding: 12px 14px;
  cursor: pointer;
  transition: all 0.18s ease;
}
.biz-card:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0,0,0,0.06);
}
.biz-card.active {
  background: linear-gradient(135deg, #eff6ff 0%, #ffffff 100%);
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.12);
}
.biz-card-asset   { border-left-color: #2563eb; }
.biz-card-liab    { border-left-color: #dc2626; }
.biz-card-equity  { border-left-color: #059669; }
.biz-card-income  { border-left-color: #16a34a; }
.biz-card-expense { border-left-color: #ea580c; }
.biz-card-reset   { border-left-color: #6b7280; }
.biz-card-profit  { border-left-color: #7c3aed; }
.biz-card.active.biz-card-profit { background: #f5f3ff; }
/* 标题栏数据来源 ⓘ 角标（hover 出提示） */
.ph-info {
  font-size: 14px; color: #9ca3af; margin-left: 6px;
  vertical-align: middle; cursor: help; transition: color .15s;
}
.ph-info:hover { color: #2563eb; }
.biz-card.active.biz-card-asset   { background: #eff6ff; }
.biz-card.active.biz-card-liab    { background: #fef2f2; }
.biz-card.active.biz-card-equity  { background: #ecfdf5; }
.biz-card.active.biz-card-income  { background: #f0fdf4; }
.biz-card.active.biz-card-expense { background: #fff7ed; }
.biz-card-icon {
  font-size: 28px;
  line-height: 1;
}
.biz-card-body { flex: 1; min-width: 0; }
.biz-card-label {
  font-size: 12px;
  color: #6b7280;
  margin-bottom: 2px;
}
.biz-card-value {
  font-size: 16px;
  font-weight: 700;
  color: #1f2937;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.biz-card-meta {
  font-size: 11px;
  color: #9ca3af;
  margin-top: 1px;
}
.acc-cat-emoji {
  display: inline-block;
  margin-right: 6px;
  font-size: 14px;
}
/* 自动汇总行的"派生名"：浅一点的灰色 + 斜体，跟客户原始名做区分 */
.name-auto {
  color: #6b7280;
  font-style: italic;
}
/* 重要性高亮：金额加深红 + 略大 */
.amt-material {
  color: #b91c1c !important;
  font-weight: 700;
}
/* v1.15 记入底稿弹窗 + 底稿详情 notes 列表 */
.note-form {
  display: flex; flex-direction: column;
  gap: 10px;
}
.note-source {
  background: #fef9e7;
  border: 1px solid #fbbf24;
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 13px;
}
.note-target {
  display: flex; align-items: center; gap: 6px;
  font-size: 13px;
  color: #2563eb;
}
/* v2.3.5 pass7 审计发现区块字号统一 12.5px */
.wp-notes-section { margin-top: 12px; }
.wp-notes-head {
  display: flex; align-items: center; gap: 6px;
  font-weight: 600; font-size: 12.5px;
  margin-bottom: 6px;
}
.wp-notes-title { color: #1f2937; }
.wp-notes-empty {
  background: #f9fafb;
  border: 1px dashed #d1d5db;
  border-radius: 6px;
  padding: 10px;
  text-align: center;
  color: #94a3b8;
  font-size: 11.5px;
}
.wp-notes-list { display: flex; flex-direction: column; gap: 10px; }
.wp-note {
  border: 1px solid #e5e7eb;
  border-left: 4px solid #94a3b8;
  border-radius: 6px;
  padding: 10px 12px;
  background: #fff;
}
.wp-note-finding    { border-left-color: #f59e0b; background: #fffbeb; }
.wp-note-adjustment { border-left-color: #dc2626; background: #fef2f2; }
.wp-note-memo       { border-left-color: #6366f1; background: #eef2ff; }
.wp-note-kam        { border-left-color: #b91c1c; background: #fee2e2; }
.wp-note-head {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px; color: #6b7280;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.wp-note-source b { color: #1f2937; }
.wp-note-amt {
  font-weight: 600;
  color: #1f2937;
  font-variant-numeric: tabular-nums;
}
.wp-note-amt .yoy-up { color: #16a34a; margin-left: 2px; }
.wp-note-amt .yoy-dn { color: #dc2626; margin-left: 2px; }
.wp-note-time { color: #9ca3af; margin-left: auto; }
.wp-note-content {
  font-size: 13px;
  color: #1f2937;
  line-height: 1.6;
  white-space: pre-wrap;
}

/* 同比对比着色 */
.yoy-cell {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-variant-numeric: tabular-nums;
  font-size: 12px;
}
.yoy-good {
  color: #16a34a;
  font-weight: 600;
}
.yoy-bad {
  color: #dc2626;
  font-weight: 600;
}
.yoy-flat {
  color: #9ca3af;
}
.diff-tag {
  margin-left: 6px;
  vertical-align: middle;
}

/* ========== v1.14.1 桑基图 / 经营全景 ========== */
.flow-pane {
  background: #fff;
  border-radius: 8px;
  padding: 16px;
}
.bs-section {
  margin-bottom: 18px;
}
.bs-title {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 15px;
  font-weight: 700;
  color: #1f2937;
  margin-bottom: 8px;
  padding-left: 4px;
  border-left: 4px solid #2563eb;
}
.bs-section:nth-child(2) .bs-title { border-left-color: #ea580c; }
.bs-subtitle {
  font-size: 12px;
  font-weight: 400;
  color: #6b7280;
}
.bs-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.bs-pie-wrap {
  background: #fafbfc;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 10px 12px;
}
.bs-pie-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 4px;
}
.bs-pie-name {
  font-size: 13px;
  font-weight: 600;
  color: #1f2937;
}
.bs-pie-total {
  font-size: 12px;
  color: #6b7280;
}
.bs-pie {
  width: 100%;
  height: 280px;
}
.flow-hint {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #6b7280;
  background: #f3f4f6;
  padding: 6px 12px;
  border-radius: 14px;
  margin-bottom: 10px;
}
.sankey-chart {
  width: 100%;
  height: 520px;
}
.flow-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 8px;
  padding: 10px 12px;
  font-size: 12px;
  color: #555;
  background: #fafbfc;
  border-radius: 6px;
}
.flow-legend .dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-right: 4px;
  vertical-align: middle;
}
.flow-legend .dot-income  { background: #16a34a; }
.flow-legend .dot-cost    { background: #dc2626; }
.flow-legend .dot-expense { background: #ea580c; }
.flow-legend .dot-tax     { background: #9333ea; }
.flow-legend .dot-profit  { background: #7c3aed; }

.ledger-pager {
  display: flex;
  justify-content: flex-end;
  padding: 12px 4px 4px;
}

/* v1.13 多级科目树形展示 */
.acc-code-cell {
  display: inline-flex; align-items: center; gap: 4px;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}
.is-parent {
  font-weight: 700;
  color: #1f2937;
}
/* 父级行：浅蓝灰背景 */
.el-table .row-parent td {
  background: #f0f5ff !important;
}
/* 自动汇总行（客户没上送父级，系统补的）：浅紫底 */
.el-table .row-auto-agg td {
  background: #f5f3ff !important;
}
.el-table .row-auto-agg .is-parent {
  color: #6d28d9;
}
/* 客户上送父级值 ≠ 子合计：浅黄背景 + 右侧红色细条 */
.el-table .row-has-diff td {
  background: #fffbeb !important;
}
.el-table .row-has-diff td:first-child {
  box-shadow: inset 3px 0 0 #dc2626;
}
/* Δ 差异标记 */
.diff-tag {
  margin-left: 4px;
  cursor: help;
  vertical-align: middle;
}

/* 金额着色：借方绿、贷方橙 */
.amt-debit  { color: #67c23a; }
.amt-credit { color: #e6a23c; }
.amt-running { color: #2a5298; font-weight: 600; }
.amt-ok   { color: #67c23a; }
.amt-warn { color: #e6a23c; }
.amt-bad  { color: #f56c6c; font-weight: 700; }

/* 总账展开内嵌表 */
.general-detail {
  padding: 8px 16px 4px;
  background: #fafbfc;
}

/* 明细账：期初/合计行高亮 */
.el-table .sub-row-begin {
  background: #f0f7ff !important;
  font-weight: 600;
}
.el-table .sub-row-end {
  background: #fff8e6 !important;
  font-weight: 600;
}
.el-table .sub-row-hit {
  background: #fff5f5 !important;
}
.el-table .sub-row-hit td { border-left: 3px solid #f56c6c; }

/* ============================================================
 * v1.9 视觉规范 v1.0 — AuditX Design System
 * ============================================================ */
:root {
  /* 文本色 */
  --c-text-primary:   #1f2937;
  --c-text-secondary: #4b5563;
  --c-text-muted:     #6b7280;
  --c-text-faint:     #9ca3af;
  /* 品牌色 */
  --c-brand:        #2a5298;
  --c-brand-light:  #4472C4;
  --c-brand-accent: #5fe1ff;
  /* 表格 */
  --tbl-head-bg:    #f1f5f9;
  --tbl-head-color: #334155;
  --tbl-border:     #e5e7eb;
  /* 字号 */
  --fs-page-title:    15px;    /* v2.3.5 紧凑化：22 → 15，减少头部占地 */
  --fs-section-title: 14px;
  --fs-body:          14px;
  --fs-small:         12.5px;
  --fs-tiny:          11.5px;
}

/* ---------- v2.3.5 统一紧凑页面顶部 (.page-header) ----------
   设计目标：从「醒目大标题区」改为「极简工具栏式」，
   总高度 ~80px → ~38-44px，节省接近一半内容空间。
   科技现代感来源：精致字号 + subtle border + 微渐变 accent + 克制阴影 */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  /* v2.3.8: 顶部留白放进标题自身(随 sticky 一起、不透明)；margin→padding 合并不透出滚动内容 */
  padding: 14px 0;
  margin-bottom: 0;
  border-bottom: 1px solid rgba(15, 23, 42, 0.06);
  gap: 14px;
  flex-wrap: wrap;
  /* v2.3.8: 标题钉在内容区顶部(紧贴页眉下方)，向下滚动时不被全局顶栏盖住 */
  position: sticky;
  top: 0;
  z-index: 5;
  background: #f4f6fa;   /* = .app-content 背景，遮住下方滚动内容 */
}
/* 底部 1px accent 渐变细线（科技感细节，几乎不可见但氛围在） */
.page-header::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: -1px;
  height: 1px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(42, 82, 152, 0.18) 12%,
    rgba(95, 225, 255, 0.20) 50%,
    rgba(42, 82, 152, 0.10) 88%,
    transparent 100%);
  opacity: 0.6;
  pointer-events: none;
}
.page-header .ph-left {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.page-header .ph-icon {
  flex: none;
  width: 26px; height: 26px;
  border-radius: 7px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 14px; color: #fff;
  background: linear-gradient(135deg, var(--c-brand) 0%, var(--c-brand-light) 100%);
  box-shadow: 0 1px 3px rgba(42,82,152,0.18);
  transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease;
}
.page-header:hover .ph-icon {
  filter: brightness(1.08) saturate(1.1);
  box-shadow: 0 2px 5px rgba(42,82,152,0.28);
}
.page-header .ph-text {
  min-width: 0;
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap;
}
.page-header .ph-title {
  font-size: var(--fs-page-title);
  font-weight: 600;
  color: var(--c-text-primary);
  line-height: 1.3;
  display: inline-flex; align-items: center; gap: 6px;
  letter-spacing: 0.2px;
  margin: 0;
}
.page-header .ph-subtitle {
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  line-height: 1.4;
  font-weight: 400;
  /* 同行显示（不再换行），跟标题之间用细分隔点 */
  position: relative;
  padding-left: 10px;
}
.page-header .ph-subtitle::before {
  content: "";
  position: absolute; left: 0; top: 50%;
  width: 3px; height: 3px;
  background: var(--c-text-faint);
  border-radius: 50%;
  transform: translateY(-50%);
  opacity: 0.6;
}
.page-header .ph-version {
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  letter-spacing: 0.5px;
  font-size: 11px;
  padding: 2px 6px;
  background: rgba(42, 82, 152, 0.06);
  color: var(--c-brand);
  border-radius: 4px;
}
.page-header .ph-right {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
/* 窄屏（侧栏展开 + 小屏）副标题隐藏，省横向空间 */
@media (max-width: 1100px) {
  .page-header .ph-subtitle,
  .page-header .ph-sub { display: none; }
}
/* 老布局兼容：有些页面用 h2 不用 .ph-title — 同样压缩 */
.page-header h2 {
  margin: 0;
  font-size: var(--fs-page-title);
  font-weight: 600;
  color: var(--c-text-primary);
  letter-spacing: 0.2px;
  display: inline-flex; align-items: center; gap: 6px;
}
/* 有些页面（workpaper_admin 等）用 .ph-sub 作为副标题 — 跟 ph-subtitle 同款 */
.page-header .ph-sub {
  font-size: var(--fs-small);
  color: var(--c-text-muted);
  line-height: 1.4;
  font-weight: 400;
  display: inline-flex; align-items: center; gap: 4px;
  position: relative; padding-left: 10px;
}
.page-header .ph-sub::before {
  content: ""; position: absolute; left: 0; top: 50%;
  width: 3px; height: 3px; background: var(--c-text-faint);
  border-radius: 50%; transform: translateY(-50%); opacity: 0.6;
}
.page-header .ph-sub .el-icon { font-size: 12px; opacity: 0.7; }
/* v2.3.8: 顶部 padding 归零——顶部留白移进 sticky 标题自身，避免标题与顶栏间留缝/透出 */
.app-content { padding: 0 18px 14px; font-size: 13.5px; }

/* ---------- v2.3.5 全局视觉密度优化 ----------
   原则：辅助信息(按钮/tag/输入框/表头/卡片) 让位核心内容(表单数据/表格行)
   只缩 default size 的元素，明确写了 size="small/large" 的不动 */

/* el-button default size：30px 高（默认 32），padding 紧凑 */
.app-content .el-button:not(.el-button--small):not(.el-button--mini):not(.el-button--large) {
  padding: 6px 14px;
  font-size: 13px;
  min-height: 30px;
  line-height: 18px;
}
/* button 内的 icon */
.app-content .el-button .el-icon { font-size: 14px; }

/* el-tag default：22px 高 */
.app-content .el-tag:not(.el-tag--small):not(.el-tag--large) {
  height: 22px;
  padding: 0 7px;
  font-size: 12px;
  line-height: 20px;
}

/* el-input / el-select default：32px 高 */
.app-content .el-input:not(.el-input--small):not(.el-input--large) .el-input__wrapper,
.app-content .el-select:not(.el-select--small):not(.el-select--large) .el-input__wrapper {
  padding: 0 10px;
}
.app-content .el-input:not(.el-input--small):not(.el-input--large) .el-input__inner,
.app-content .el-select:not(.el-select--small):not(.el-select--large) .el-input__inner {
  height: 30px;
  font-size: 13px;
}

/* 表格密度：cell padding 8 → 6（行高自动跟着 -4px），字号 14→13 */
.app-content .el-table th.el-table__cell,
.app-content .el-table td.el-table__cell {
  padding: 5px 0;
}
.app-content .el-table .cell { font-size: 13px; line-height: 1.5; padding: 0 10px; }
.app-content .el-table th.el-table__cell .cell { font-size: 12.5px; font-weight: 600; }

/* card padding 紧凑 */
.app-content .card,
.app-content .el-card__body { padding: 12px 16px; }

/* el-form-item 紧凑：垂直 label 时 margin-bottom 缩 */
.app-content .el-form-item { margin-bottom: 14px; }
.app-content .el-form-item__label { font-size: 13px; line-height: 1.5; padding-bottom: 4px; }

/* el-radio-button default 高度 */
.app-content .el-radio-group:not([class*="--small"]):not([class*="--large"])
  .el-radio-button__inner {
  padding: 7px 14px; font-size: 13px;
}

/* el-tabs 紧凑 */
.app-content .el-tabs__item { font-size: 13.5px; padding: 0 14px; height: 36px; }
.app-content .el-tabs__nav-wrap { padding: 0 4px; }

/* el-message / el-message-box 不动（独立浮层，密度自洽） */

/* 通用辅助信息样式（页面里"次要信息"可加这个 class） */
.aux-info, .info-secondary {
  font-size: var(--fs-tiny);
  color: var(--c-text-muted);
  font-weight: 400;
}

/* el-pagination 紧凑 */
.app-content .el-pagination { font-size: 12.5px; }
.app-content .el-pagination .btn-prev,
.app-content .el-pagination .btn-next,
.app-content .el-pagination .el-pager li { min-width: 26px; height: 26px; line-height: 26px; }

/* ---------- 子区块标题 (.block-title) ---------- */
.block-title {
  font-size: var(--fs-section-title);
  font-weight: 600;
  color: var(--c-text-primary);
  padding-left: 10px;
  border-left: 3px solid var(--c-brand);
  margin: 0 0 12px;
  line-height: 1.3;
  display: flex;
  align-items: center;
  gap: 10px;
}
.block-title .bt-desc {
  font-size: var(--fs-small);
  font-weight: 400;
  color: var(--c-text-muted);
}

/* v2.3.5 pass8 全局表头改回深蓝（与底稿标题条 wp-detail-head 同色系，所有蓝色统一） */
.el-table thead th.el-table__cell {
  background: linear-gradient(180deg, #4472c4 0%, #3a64b3 100%) !important;
  color: #e8edf5 !important;
  font-weight: 600 !important;
  border-color: #355aa0 !important;
}
.el-table thead th.el-table__cell .cell { color: #e8edf5; }
.el-table thead th.el-table__cell .caret-wrapper .sort-caret.ascending  { border-bottom-color: rgba(232,237,245,0.95); }
.el-table thead th.el-table__cell .caret-wrapper .sort-caret.descending { border-top-color:    rgba(232,237,245,0.95); }
.el-table thead th.el-table__cell.is-sortable:hover { background: linear-gradient(180deg, #3a64b3 0%, #2f56a3 100%) !important; }
.el-table thead th.el-table__cell .el-icon,
.el-table thead th.el-table__cell .el-table__column-filter-trigger { color: #e8edf5 !important; }
.el-table thead th.el-table__cell .el-checkbox__inner { background: rgba(255,255,255,0.15); border-color: rgba(232,237,245,0.6); }
.fs-table th { background: var(--c-brand-light); color: #e8edf5; }

/* v2.6.x 全站表格描边加深：默认 #ebeef5 太浅，统一调深一档让网格线清晰可见
   （同时影响 border 模式与下方非 border 表，两者一致） */
.el-table {
  --el-table-border-color: #b6bcc7;
  --el-table-border: 1px solid #b6bcc7;
}
/* 未显式加 border 的表格也补齐竖向网格线 + 外框，与 border 模式视觉一致
   （用 :not(.el-table--border) 排除已显式 border 的表，避免双线） */
.el-table:not(.el-table--border) .el-table__cell {
  border-right: 1px solid #b6bcc7;
}
.el-table:not(.el-table--border) thead th.el-table__cell {
  border-right-color: #355aa0 !important;   /* 表头深蓝，竖线同色系 */
}
.el-table:not(.el-table--border) {
  border-top: 1px solid #b6bcc7;
  border-left: 1px solid #b6bcc7;
  box-sizing: border-box;
}

/* ============ v1.10.2 申报表中心 — 借用底稿 wp-split 框架
   v2.3.5 pass6 跟底稿完全一致风格（蓝渐变 + 柔白字 #e8edf5 + 紧凑） ============ */
.rt-detail-head {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 14px; margin: -12px -16px 0;
  border-radius: 8px 8px 0 0;
  background: linear-gradient(135deg, #2a5298 0%, #2e86c1 100%);
  color: #e8edf5;
}
.rt-detail-head-left { display: flex; align-items: baseline; gap: 10px; flex: 1; min-width: 0; }
/* v2.3.8 表号粗体大字（占据表头左上方主位） */
.rt-form-code-big {
  flex: 0 0 auto; color: #fff;
  font-size: 18px; font-weight: 800; letter-spacing: 0.6px;
  font-family: ui-monospace, Menlo, monospace;
}
.rt-detail-head-left h3 {
  margin: 0; color: #d6e0ee;
  font-size: 13px; font-weight: 500;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  letter-spacing: 0.2px;
}
.rt-detail-head .el-tag--dark { color: #e8edf5 !important; }
.rt-meta {
  display: flex; flex-wrap: wrap; gap: 4px 16px;
  background: transparent; border: none;
  padding: 4px 14px 8px; margin: 0 -16px 0;
  border-bottom: 1px dashed #e2e8f0;
}
.rt-meta > div { display: inline-flex; align-items: baseline; gap: 4px; }
.rt-meta span { color: #94a3b8; font-size: 10.5px; }
.rt-meta b { color: #475569; font-size: 11.5px; font-weight: 500; }
.rt-num { font-variant-numeric: tabular-nums; }

/* ============================================================
 * v1.11 电子税务局申报中心
 * ============================================================ */
.ef-summary {
  background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 14px 18px;
  margin-bottom: 18px;
}
.ef-sum-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px 24px;
}
.ef-sum-cell { display: flex; flex-direction: column; gap: 4px; }
.ef-sum-k { color: #6b7280; font-size: 12px; letter-spacing: .3px; }
.ef-sum-v { color: #111827; font-weight: 600; font-size: 14px; }
.ef-mono { font-family: ui-monospace, "SF Mono", Menlo, monospace; letter-spacing: .5px; }

.ef-wizard {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  padding: 18px 22px 22px;
}
.ef-step-box {
  margin-top: 18px;
  padding: 18px 20px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
}
.ef-step-head {
  display: flex; align-items: center; gap: 8px;
  font-size: 15px; font-weight: 700; color: #1e3a8a;
  margin-bottom: 10px;
}
.ef-step-head .el-icon { font-size: 18px; color: #3b82f6; }
.ef-tip {
  color: #6b7280; font-size: 13px; line-height: 1.6;
  margin: 0 0 12px 0;
}
.ef-form { margin-top: 8px; }
.ef-actions {
  margin-top: 14px; padding-top: 14px;
  border-top: 1px dashed #e5e7eb;
  display: flex; gap: 8px; flex-wrap: wrap;
}
.ef-pkg-info {
  margin-top: 12px; padding: 10px 14px;
  background: #ecfdf5; border: 1px solid #a7f3d0; border-radius: 6px;
  font-size: 13px;
}
.ef-msg-list { margin-top: 10px; }
.ef-msg-err, .ef-msg-warn {
  padding: 6px 10px; margin-bottom: 4px;
  border-radius: 4px; font-size: 13px;
}
.ef-msg-err  { background: #fef2f2; }
.ef-msg-warn { background: #fffbeb; }
.ef-confirm {
  background: #fff; border: 1px solid #e5e7eb; border-radius: 6px;
  padding: 12px 16px; margin-top: 8px; line-height: 2;
  font-size: 13.5px;
}
.ef-confirm span { color: #6b7280; margin-right: 4px; }
.ef-confirm b { color: #111827; font-weight: 600; }
.ef-timeline-wrap { padding: 8px 0 4px 8px; }


/* ============================================================
 * v1.11.5 全局表格自适应（避免横向滚动）
 *
 * 设计原则：
 *   1. 表格宽度永远不超出父容器（width:100%）
 *   2. 长文本自动省略 + tooltip
 *   3. 操作列右侧 sticky（fixed=right 时仍贴边可见）
 *   4. 数字列字体使用等宽数字（tabular-nums），等宽对齐
 *   5. 表内单元格 padding 紧凑（节省横向空间）
 * ============================================================ */
.el-table { width: 100% !important; }
/* 表格主体允许超出时显示 x 滚动条（兜底，避免页面 body 出滚动） */
.el-table .el-table__body-wrapper { overflow-x: auto; }
/* 单元格紧凑 padding：默认 8px → 6px，size=small 时 4px */
.el-table .cell { padding-left: 8px; padding-right: 8px; }
.el-table--small .cell { padding-left: 6px; padding-right: 6px; }
/* 数字列等宽对齐 */
.el-table td .cell { font-variant-numeric: tabular-nums; }
/* fixed=right 操作列：阴影更明显，告诉用户右侧是粘性的 */
.el-table .el-table__fixed-right { box-shadow: -3px 0 8px rgba(0,0,0,0.06); }
/* el-tag 在表格中略微缩小，避免占太多列宽 */
.el-table .el-tag--small { padding: 0 6px; }

/* ===== v1.22 Phase 2 浙江省专版底稿样式 ===== */
.region-section { margin: 16px 0; padding: 14px 16px; background: linear-gradient(135deg, #fef3c7 0%, #fffbeb 100%);
                   border-left: 3px solid #f59e0b; border-radius: 6px; }
.region-section-title { display:flex; align-items:center; gap:6px; font-weight:600;
                         font-size:14px; color:#92400e; margin-bottom:10px; }
.region-checklist { display: flex; flex-direction: column; gap: 8px; }
.region-check-item { display:flex; align-items:center; gap:10px; padding:6px 8px;
                      background:rgba(255,255,255,0.6); border-radius:4px; }
.region-check-note { font-size:12px; color:#dc2626; font-style:italic; }
.region-memo { padding: 10px 14px; background: #fff; border-radius: 4px; line-height: 1.7;
                color: #444; font-size: 13px; border: 1px dashed #f59e0b; }
.region-procedures { margin: 0 0 0 20px; padding: 0; line-height: 1.8; color: #1f2937; font-size: 13px; }
.region-procedures li { margin-bottom: 4px; }
/* 浙江专列在 wp-payload-table 内的标识 */
.wp-payload-table th.region-col { background: linear-gradient(135deg, #fef3c7, #fbbf24) !important;
                                    color: #78350f !important; }

/* v1.22 底稿详情区域差异提示条 */
.wp-region-banner {
  margin: 6px 0 10px; padding: 4px 12px;            /* v2.3.5: 10/14/8/14 → 6/10/4/12 */
  background: linear-gradient(90deg, #fef3c7 0%, #fffbeb 100%);
  border-left: 3px solid #f59e0b; border-radius: 4px;
  font-size: 11.5px; color: #92400e; display: flex; align-items: center; gap: 5px;
}
.wp-region-banner b { color: #b45309; font-weight: 600; }
.wp-region-banner .el-icon { font-size: 12px; }

/* v1.23 报告页区域模板提示条 */
.region-tpl-banner {
  margin: 12px 0; padding: 10px 14px;
  background: linear-gradient(90deg, #e0f2fe 0%, #f0f9ff 100%);
  border-left: 3px solid #0284c7; border-radius: 4px;
  font-size: 13px; color: #075985; display: flex; align-items: center; gap: 8px;
}
.region-tpl-banner.zj {
  background: linear-gradient(90deg, #fef3c7 0%, #fffbeb 100%);
  border-left-color: #f59e0b; color: #92400e;
}
.region-tpl-banner b { color: #0c4a6e; }
.region-tpl-banner.zj b { color: #b45309; }

/* v1.24 税审报告预览 */
/* 报告中心 — 调整前/后对比表 */
.rpt-cmp-table { width:100%; border-collapse:collapse; font-size:13px; margin-top:4px; }
.rpt-cmp-table th { background:#f0f5ff; color:#2a5298; font-weight:600; padding:8px 12px; text-align:right; border-bottom:2px solid #d1dff5; }
.rpt-cmp-table th:first-child { text-align:left; }
.rpt-cmp-table td { padding:6px 12px; text-align:right; border-bottom:1px solid #eef2f7; }
.rpt-cmp-table td.lbl { text-align:left; color:#374151; font-weight:500; }
.rpt-cmp-table tr.highlight td { background:#f7f9fc; font-weight:600; }

.rp-preview-doc {
  font-family: "Songti SC", "SimSun", serif;
  font-size: 14px;
  line-height: 1.85;
  color: #1f2937;
  max-height: calc(100vh - 140px);
  overflow: auto;
  padding: 8px 4px 24px;
}
.rp-preview-doc .rp-p { margin: 0 0 0.55em; text-indent: 2em; }
.rp-preview-doc .rp-blank { margin: 0; height: 0.6em; }
.rp-preview-doc .rp-empty { color: #9ca3af; font-style: italic; }
.rp-edit-ta textarea {
  font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
  font-size: 13px;
  line-height: 1.5;
}

/* v1.25 报告按章节编辑 */
.rp-sec-block { margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #e5e7eb; }
.rp-sec-title { font-weight: 600; font-size: 13px; color: #1e40af; margin-bottom: 6px; }
.rp-sec-ta textarea { min-height: 72px; }

/* ===================================================== */
/* v1.27 AuditX Copilot · 右侧悬浮 AI 面板               */
/* ===================================================== */
.copilot-root { position: fixed; right: 0; bottom: 0; z-index: 2000; pointer-events: none; }
.copilot-root > * { pointer-events: auto; }

/* ----- 悬浮触发按钮 -----
   v2.1.1-p23b 兜底：max-left / max-top 确保即便 inline :style 把 left/top 设到屏外，
   浏览器也会用 CSS 限制让它至少有一部分可见。z-index 显式 2001 比 root 高，
   visibility/opacity 显式给值，防止某些第三方样式不小心隐藏掉。 */
.copilot-fab {
  position: fixed; right: 22px; bottom: 28px;
  max-width: calc(100vw - 8px);   /* 永远不超出 viewport */
  display: flex !important; align-items: center; gap: 8px;
  visibility: visible !important; opacity: 1;
  z-index: 2001;
  padding: 10px 18px 10px 14px; border: none;
  background: linear-gradient(135deg, #1e40af 0%, #2563eb 50%, #06b6d4 100%);
  color: #fff; font-weight: 600; font-size: 13px; letter-spacing: 0.3px;
  border-radius: 999px;
  box-shadow: 0 8px 24px rgba(37,99,235,0.35), 0 2px 6px rgba(0,0,0,0.12);
  cursor: grab; transition: transform .18s, box-shadow .18s, filter .18s;
  user-select: none; -webkit-user-drag: none;
}
.copilot-fab:hover { transform: translateY(-2px); box-shadow: 0 12px 32px rgba(37,99,235,0.45); filter: brightness(1.05); }
.copilot-fab:active { transform: translateY(0); }
/* v2.1.1-p18 拖动中：cursor grabbing + 抬起阴影 + 禁用 hover 抖动 */
.copilot-fab.dragging {
  cursor: grabbing;
  transform: none !important;
  box-shadow: 0 16px 36px rgba(37,99,235,0.55), 0 4px 10px rgba(0,0,0,0.18);
  transition: none;
  opacity: 0.92;
}

/* v2.1.1-p19 FAB 右键迷你菜单 */
.cp-fab-menu {
  position: fixed;
  min-width: 180px;
  background: #fff;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(15,23,42,0.18), 0 2px 6px rgba(0,0,0,0.08);
  border: 1px solid #e5e7eb;
  padding: 6px;
  z-index: 2100;
  font-size: 13px;
  animation: cp-fab-menu-in .12s ease-out;
}
@keyframes cp-fab-menu-in {
  from { opacity: 0; transform: scale(0.95) translateY(-4px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
.cp-fab-menu-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px;
  border-radius: 5px;
  cursor: pointer;
  color: #374151;
  user-select: none;
  transition: background .12s;
}
.cp-fab-menu-item:hover { background: #f3f4f6; color: #1e40af; }
.cp-fab-menu-item.disabled {
  color: #9ca3af; cursor: not-allowed;
  pointer-events: none;
}
.cp-fab-menu-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; font-size: 14px;
  color: #6b7280;
}
.cp-fab-icon { font-size: 18px; line-height: 1; filter: drop-shadow(0 0 4px rgba(255,255,255,0.4)); }
.cp-fab-label { font-family: "Inter", -apple-system, sans-serif; }
.cp-fab-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #f87171; box-shadow: 0 0 6px rgba(248,113,113,0.6);
}
.cp-fab-dot.active { background: #34d399; box-shadow: 0 0 8px rgba(52,211,153,0.7); animation: cp-pulse 2s ease-in-out infinite; }
@keyframes cp-pulse {
  0%,100% { transform: scale(1); opacity: 1; }
  50%     { transform: scale(1.25); opacity: 0.75; }
}

/* ----- 抽屉容器 ----- */
/* v2.3.4: 默认居中浮窗（可拖动）；docked-right 可切回老抽屉模式 */
.copilot-drawer {
  position: fixed;
  /* 默认居中 */
  top: 5vh; left: 50%; transform: translateX(-50%);
  width: 720px; height: 88vh;
  background: #f8fafc;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  box-shadow: 0 24px 80px rgba(15, 23, 42, 0.28);
  display: flex; flex-direction: column;
  z-index: 2001;
  overflow: hidden;
}
/* 用户拖动后：不再 translate，用 left/top 定位（cpWindowStyle 提供） */
.copilot-drawer.dragged { transform: none !important; }
.copilot-drawer.dragging { user-select: none; box-shadow: 0 32px 96px rgba(15, 23, 42, 0.4); }
/* head 悬停提示可拖 */
.copilot-drawer .cp-header { cursor: move; }
.copilot-drawer.fullscreen .cp-header,
.copilot-drawer.docked-right .cp-header { cursor: default; }

.copilot-drawer.wide { width: 820px; }
.copilot-drawer.with-sidebar { width: 840px; }
.copilot-drawer.wide.with-sidebar { width: 1040px; }
.copilot-drawer.with-sidebar { flex-direction: row; }

/* 贴右抽屉模式（v2.3.4 保留兼容老用户习惯） */
.copilot-drawer.docked-right {
  top: 0; right: 0; left: auto; bottom: 0;
  height: 100vh;
  width: 440px;
  border-radius: 0;
  border: none;
  border-left: 1px solid #e5e7eb;
  box-shadow: -16px 0 48px rgba(15, 23, 42, 0.18);
  transform: none;
}
.copilot-drawer.docked-right.wide { width: 640px; }
.copilot-drawer.docked-right.with-sidebar { width: 680px; }
.copilot-drawer.docked-right.wide.with-sidebar { width: 880px; }

/* v1.39.3 全屏放大 */
.copilot-drawer.fullscreen {
  left: 0; top: 0; right: 0; bottom: 0; width: auto !important;
  height: auto !important;
  border: none; border-radius: 0; box-shadow: none;
  transform: none;
  z-index: 2100;
}
.copilot-drawer.fullscreen.with-sidebar { flex-direction: row; }

/* v2.3-p1：左侧对话列表 sidebar */
.copilot-drawer { flex-direction: row; }  /* 默认 row，cp-main 仍 column */
.cp-main {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column;
  background: #f8fafc;
  overflow: hidden;
}
.cp-sidebar {
  width: 240px; flex-shrink: 0;
  background: #f1f5f9;
  border-right: 1px solid #e2e8f0;
  display: flex; flex-direction: column;
  overflow: hidden;
  transition: width .18s cubic-bezier(.4,0,.2,1);
}
.cp-sidebar.collapsed { width: 36px; }
.cp-side-head {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 10px; min-height: 48px;
  border-bottom: 1px solid #e2e8f0;
  background: #fff;
}
.cp-side-toggle, .cp-side-newbtn {
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: none; cursor: pointer;
  color: #64748b; border-radius: 6px;
  transition: all .12s;
}
.cp-side-toggle:hover, .cp-side-newbtn:hover {
  background: #e0e7ff; color: #2563eb;
}
.cp-sidebar.collapsed .cp-side-head { padding: 8px 4px; justify-content: center; }
.cp-side-title { flex: 1; font-weight: 600; font-size: 13px; color: #334155; }
.cp-side-newbtn { background: #2563eb; color: #fff !important; }
.cp-side-newbtn:hover { background: #1d4ed8 !important; }
.cp-side-list {
  flex: 1; overflow-y: auto;
  padding: 6px;
}
.cp-side-list::-webkit-scrollbar { width: 4px; }
.cp-side-list::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 2px; }
.cp-side-empty {
  text-align: center; color: #94a3b8;
  font-size: 12.5px; padding: 24px 8px;
}
.cp-side-empty-sub { color: #cbd5e1; font-size: 11.5px; }
.cp-side-item {
  position: relative;
  padding: 8px 10px;
  border-radius: 8px;
  cursor: pointer;
  margin-bottom: 2px;
  background: transparent;
  transition: background .12s;
  border: 1px solid transparent;
}
.cp-side-item:hover { background: #e0e7ff; }
.cp-side-item.active {
  background: #fff;
  border-color: #93c5fd;
  box-shadow: 0 1px 3px rgba(37,99,235,0.08);
}
.cp-side-item.pinned { background: #fef9c3; }
.cp-side-item.pinned:hover { background: #fef08a; }
.cp-side-item.active.pinned { background: #fef9c3; border-color: #facc15; }

.cp-side-item-row {
  display: flex; align-items: center; gap: 4px;
}
.cp-side-item-title {
  flex: 1; min-width: 0;
  font-size: 13px; font-weight: 500; color: #1e293b;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cp-side-item-pin { font-size: 10px; flex-shrink: 0; }
.cp-side-item-meta {
  font-size: 11px; color: #94a3b8;
  margin-top: 2px;
  display: flex; gap: 4px;
}
.cp-side-item-time { flex-shrink: 0; }
.cp-side-item-cnt { color: #cbd5e1; }
.cp-side-item-actions {
  position: absolute; top: 6px; right: 6px;
  display: none; gap: 1px;
  background: rgba(255,255,255,0.96);
  border-radius: 4px;
  padding: 1px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.08);
}
.cp-side-item:hover .cp-side-item-actions { display: flex; }
.cp-side-act {
  width: 22px; height: 22px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: none; cursor: pointer;
  color: #64748b; border-radius: 3px;
  transition: all .1s;
}
.cp-side-act:hover { background: #e0e7ff; color: #2563eb; }
.cp-side-act .el-icon { font-size: 12px; }
.cp-side-act-danger:hover { background: #fee2e2; color: #dc2626; }
.copilot-drawer.fullscreen .cp-chat,
.copilot-drawer.fullscreen .cp-agent-area {
  max-width: 1100px;
  margin: 0 auto;
  width: 100%;
}
body.cp-fullscreen-locked { overflow: hidden; }
.cp-slide-enter-active, .cp-slide-leave-active { transition: transform .26s cubic-bezier(.22,.61,.36,1), opacity .2s; }
.cp-slide-enter-from, .cp-slide-leave-to { transform: translateX(110%); opacity: 0; }
/* 全屏切换时不要 slide-X 动画，改用淡入 */
.copilot-drawer.fullscreen.cp-slide-enter-from,
.copilot-drawer.fullscreen.cp-slide-leave-to { transform: none; }

/* ----- 头部 ----- */
.cp-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  background: linear-gradient(135deg, #0f172a 0%, #1e3a8a 60%, #155e75 100%);
  color: #e2e8f0;
}
.cp-title { display: flex; align-items: center; gap: 10px; }
.cp-logo {
  font-size: 22px; line-height: 1; padding: 6px;
  background: rgba(255,255,255,0.08); border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.12);
}
.cp-name { font-size: 14px; font-weight: 700; letter-spacing: 0.4px; }
.cp-sub {
  font-size: 11.5px; color: #94a3b8; margin-top: 2px;
  display: flex; align-items: center; gap: 6px;
}
.cp-dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: #ef4444; box-shadow: 0 0 4px rgba(239,68,68,0.6);
}
.cp-dot.active { background: #22c55e; box-shadow: 0 0 5px rgba(34,197,94,0.7); }
.cp-actions { display: flex; align-items: center; gap: 4px; }
.cp-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.04); color: #cbd5e1; cursor: pointer;
  border-radius: 8px; transition: background .15s, color .15s, border-color .15s;
}
.cp-icon-btn:hover { background: rgba(255,255,255,0.1); color: #fff; border-color: rgba(255,255,255,0.18); }

/* ----- 模式 ----- */
.cp-modes {
  display: flex; gap: 6px; padding: 8px 14px;
  background: #fff; border-bottom: 1px solid #eef2f7;
}
.cp-mode {
  flex: 1; display: inline-flex; align-items: center; justify-content: center;
  gap: 6px; padding: 7px 10px; font-size: 12.5px; font-weight: 500;
  color: #475569; background: #f1f5f9; border: 1px solid transparent;
  border-radius: 8px; cursor: pointer; transition: all .15s;
}
.cp-mode:hover { background: #e2e8f0; }
.cp-mode.active {
  background: linear-gradient(135deg, #dbeafe 0%, #cffafe 100%);
  color: #0c4a6e; border-color: #93c5fd;
  box-shadow: 0 1px 3px rgba(37,99,235,0.12);
}
.cp-mode-icon { font-size: 14px; }

/* v1.40.0 顶层两模式：⚡ 快速问答 / 🔧 智能调度 */
.cp-mode-toggle {
  display: flex; gap: 8px; padding: 10px 14px 0;
  background: #fff;
}
.cp-mode-pill {
  flex: 1; display: inline-flex; align-items: center; justify-content: center;
  gap: 6px; padding: 9px 12px; font-size: 13.5px; font-weight: 600;
  color: #475569; background: #f8fafc; border: 1.5px solid #e2e8f0;
  border-radius: 10px; cursor: pointer; transition: all .15s;
  position: relative;
}
.cp-mode-pill:hover:not([disabled]) { background: #f1f5f9; border-color: #cbd5e1; }
.cp-mode-pill[disabled] { cursor: not-allowed; opacity: 0.55; }
.cp-mode-pill.active {
  background: linear-gradient(135deg, #dbeafe 0%, #cffafe 100%);
  color: #0c4a6e; border-color: #38bdf8;
  box-shadow: 0 2px 8px rgba(56,189,248,0.18);
}
.cp-mode-pill.agent.active {
  background: linear-gradient(135deg, #fef3c7 0%, #fed7aa 100%);
  color: #7c2d12; border-color: #f97316;
  box-shadow: 0 2px 8px rgba(249,115,22,0.20);
}
.cp-mode-pill-icon { font-size: 16px; }
.cp-mode-pill-text { letter-spacing: 0.5px; }
.cp-mode-pill-badge {
  position: absolute; top: -6px; right: 8px;
  padding: 1px 6px; font-size: 9px; font-weight: 700;
  background: #f97316; color: #fff; border-radius: 8px;
  letter-spacing: 0.5px;
}

/* v1.40.0 智能调度的工具权限栏 */
.cp-agent-opts {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 16px; background: #fff7ed; border-bottom: 1px solid #fed7aa;
  font-size: 12.5px; color: #7c2d12;
}
.cp-agent-opts-label { font-weight: 600; }
.cp-trace-link {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; font-size: 12px; color: #7c2d12;
  background: #fff; border: 1px solid #fed7aa; border-radius: 6px;
  cursor: pointer; transition: all .12s;
}
.cp-trace-link:hover { background: #fef3c7; border-color: #f97316; }

/* v1.40.0 自动建议条 */
.cp-agent-suggest {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 14px; margin: 0;
  background: linear-gradient(135deg, #fef3c7 0%, #fee2e2 100%);
  border-bottom: 1px solid #fde68a;
  font-size: 12px; color: #78350f;
  animation: cp-suggest-in .25s ease-out;
}
.cp-agent-suggest .el-icon { color: #f97316; }
.cp-agent-suggest > span { flex: 1; }
.cp-agent-suggest b { color: #7c2d12; }
.cp-suggest-btn {
  padding: 4px 10px; font-size: 12px; font-weight: 600;
  background: #f97316; color: #fff; border: none; border-radius: 6px;
  cursor: pointer;
}
.cp-suggest-btn:hover { background: #ea580c; }
.cp-suggest-dismiss {
  padding: 4px 8px; font-size: 11px; color: #78350f;
  background: transparent; border: 1px solid #fed7aa; border-radius: 6px;
  cursor: pointer;
}
.cp-suggest-dismiss:hover { background: rgba(255,255,255,0.5); }
@keyframes cp-suggest-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ----- 项目栏 ----- */
.cp-project-bar {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 16px; background: #ecfeff; border-bottom: 1px solid #cffafe;
  font-size: 12.5px; color: #155e75;
}
.cp-project-bar .el-icon { font-size: 14px; }

/* v1.34 RAG 工具栏 */
.cp-rag-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 16px; background: #fafafa; border-bottom: 1px solid #ebeef5;
  font-size: 12px; color: #606266;
}
.cp-rag-label { font-weight: 500; }

/* v1.34 引用 tags */
.cp-citations {
  margin-top: 10px; padding: 8px 10px; background: #fafafa; border-radius: 6px;
  display: flex; flex-wrap: wrap; gap: 4px; align-items: center;
}
.cp-cit-title { font-size: 12px; color: #909399; margin-right: 4px; }
/* v2.3.6 选项目卡片：没选项目的项目类问答，列出项目让用户点选 */
.cp-proj-picker {
  margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px;
}
.cp-proj-chip {
  display: inline-flex; flex-direction: column; align-items: flex-start;
  gap: 2px; padding: 8px 14px; border: 1px solid #dbeafe; border-radius: 10px;
  background: #f5f9ff; cursor: pointer; transition: all .15s ease;
  font-family: inherit; text-align: left; min-width: 120px;
}
.cp-proj-chip:hover {
  border-color: #3b82f6; background: #e8f1ff;
  box-shadow: 0 2px 8px rgba(59,130,246,.18); transform: translateY(-1px);
}
.cp-proj-chip-name { font-size: 13px; font-weight: 600; color: #1e40af; }
.cp-proj-chip-meta { font-size: 11.5px; color: #64748b; }
/* v1.41 P5: 引用 hover 卡 */
.cp-cit-pop { padding: 12px 14px !important; }
.cit-card { font-size: 12.5px; line-height: 1.55; color: #1f2937; }
.cit-card .cit-title {
  font-weight: 600; color: #075985; margin-bottom: 6px; font-size: 13px;
}
.cit-card .cit-breadcrumb {
  display: flex; gap: 6px; flex-wrap: wrap; align-items: center;
  margin-bottom: 6px;
}
.cit-card .cit-article {
  display: inline-block; padding: 1px 8px;
  background: rgba(2,132,199,0.10); color: #0369a1;
  border-radius: 4px; font-weight: 600;
}
.cit-card .cit-bc {
  color: #475569; font-size: 11.5px;
}
.cit-card .cit-meta {
  display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 6px;
}
.cit-card .cit-doc-no { color: #475569; margin-bottom: 4px; }
.cit-card .cit-date { color: #475569; margin-bottom: 6px; }
.cit-card .cit-snippet {
  margin-top: 6px; padding: 8px; background: #f8fafc;
  border-left: 2px solid #cbd5e1;
  font-size: 12px; line-height: 1.6; color: #475569;
}

/* v1.34 / v1.40.0 Agent 步骤折叠 */
/* v2.5 B4 — Plan-and-Execute 卡片 */
.cp-agent-plan {
  margin-top: 8px;
  border-radius: 10px;
  border: 1px solid #c7d2fe;
  background: linear-gradient(180deg, #eef2ff, #f5f3ff);
  overflow: hidden;
}
.cp-agent-plan summary {
  display: flex; align-items: center; gap: 10px;
  cursor: pointer; user-select: none; padding: 8px 12px;
  font-size: 12.5px; color: #4338ca;
}
.cp-agent-plan summary::-webkit-details-marker { display: none; }
.cp-agent-plan summary:hover { background: rgba(199, 210, 254, 0.4); }
.cp-plan-badge {
  font-weight: 600; padding: 2px 8px;
  background: #4f46e5; color: #fff; border-radius: 10px; font-size: 11.5px;
}
.cp-agent-plan.plan-v1 .cp-plan-badge,
.cp-agent-plan.plan-v2 .cp-plan-badge,
.cp-agent-plan.plan-v3 .cp-plan-badge {
  background: linear-gradient(135deg, #f59e0b, #f97316);
}
.cp-plan-meta { flex: 1; color: #64748b; font-size: 12px; }
.cp-plan-toggle { font-size: 11px; color: #94a3b8; }
.cp-agent-plan details[open] .cp-plan-toggle::before { content: '收起 ▴'; }
.cp-agent-plan details[open] .cp-plan-toggle { font-size: 0; }
.cp-agent-plan details[open] .cp-plan-toggle::before { font-size: 11px; }
.cp-plan-body { padding: 4px 14px 12px; }
.cp-plan-reason {
  font-size: 12px; color: #475569; font-style: italic;
  padding: 4px 8px; margin-bottom: 8px;
  border-left: 2px solid #c7d2fe; background: rgba(255, 255, 255, 0.6);
}
.cp-plan-steps {
  margin: 0; padding-left: 22px; display: flex; flex-direction: column; gap: 6px;
}
.cp-plan-step {
  font-size: 12.5px; line-height: 1.55; color: #1e293b;
  padding: 6px 10px; border-radius: 6px; background: rgba(255, 255, 255, 0.7);
  border: 1px solid rgba(199, 210, 254, 0.5);
}
.cp-plan-step-action { font-weight: 500; }
.cp-plan-step-tool {
  display: inline-block; margin-left: 8px; padding: 1px 7px;
  background: #e0e7ff; color: #4338ca; border-radius: 9px;
  font-size: 11px; font-weight: 500;
}
.cp-plan-step-why { color: #64748b; font-size: 11.5px; margin-top: 2px; }
.cp-plan-step-expected { color: #16a34a; font-size: 11.5px; margin-top: 2px; }
.cp-plan-history {
  margin-top: 12px; padding: 8px 10px;
  background: rgba(254, 243, 199, 0.5);
  border: 1px solid #fde68a; border-radius: 8px;
}
.cp-plan-history-title { font-size: 12px; color: #92400e; font-weight: 600; margin-bottom: 6px; }
.cp-plan-history-item {
  display: flex; gap: 6px; font-size: 12px; color: #44403c;
  padding: 4px 0; border-top: 1px dashed #fcd34d;
}
.cp-plan-history-item:first-child { border-top: none; }
.cp-plan-hi-icon { flex: none; }
.cp-plan-hi-text { flex: 1; line-height: 1.5; }
.cp-plan-hi-trigger { color: #b45309; font-size: 11px; }
.cp-plan-hi-reason { color: #64748b; font-size: 11.5px; margin-top: 2px; font-style: italic; }

.cp-agent-plan-fallback {
  margin-top: 8px; padding: 6px 12px; font-size: 12px; color: #92400e;
  background: #fef3c7; border-radius: 8px; border: 1px solid #fde68a;
}

.cp-agent-steps { margin-top: 8px; }
.cp-agent-steps summary {
  display: flex; align-items: center; gap: 6px;
  cursor: pointer; font-size: 12.5px; color: #475569; padding: 6px 10px;
  background: #f1f5f9; border-radius: 8px; user-select: none;
  border: 1px solid #e2e8f0; list-style: none;
  transition: background 0.15s;
}
.cp-agent-steps summary:hover { background: #e2e8f0; }
.cp-agent-steps summary::-webkit-details-marker { display: none; }
.cp-agent-steps .cp-steps-icon { font-size: 14px; }
.cp-agent-steps .cp-steps-title { flex: 1; font-weight: 500; }
.cp-agent-steps .cp-steps-fail { color: #dc2626; font-weight: 600; }
.cp-agent-steps .cp-steps-toggle {
  font-size: 11px; color: #94a3b8;
}
.cp-agent-steps details[open] .cp-steps-toggle::before { content: '收起 ▴'; }
.cp-agent-steps details[open] .cp-steps-toggle { font-size: 0; }
.cp-agent-steps details[open] .cp-steps-toggle::before { font-size: 11px; }
/* 失败状态：summary 醒目红色 */
.cp-agent-steps.is-error summary {
  background: #fef2f2; border-color: #fecaca; color: #991b1b;
}
.cp-agent-steps.is-error summary:hover { background: #fee2e2; }
.cp-agent-steps.is-error .cp-steps-title { color: #991b1b; }
.cp-agent-steps summary .cp-adopt-pill {
  display: inline-block; padding: 1px 8px; font-size: 10.5px; font-weight: 600;
  background: linear-gradient(135deg, #f97316, #ea580c); color: #fff;
  border-radius: 10px;
}
/* 展开后的详情区底色弱化，与 summary 区分 */
.cp-agent-steps details[open] {
  background: #f8fafc; border-radius: 8px; padding: 4px 0 6px;
  margin-top: 4px;
}
.cp-agent-steps details[open] summary { background: #fff; border-bottom: 1px dashed #e2e8f0; border-radius: 8px 8px 0 0; }
.cp-agent-steps.is-error details[open] summary { background: #fff5f5; }
.cp-agent-step {
  display: flex; flex-direction: column; gap: 4px; padding: 4px 8px;
  font-size: 11px; color: #909399; border-left: 2px solid #ebeef5; margin-left: 8px;
}
.cp-agent-step.is-adoptable { border-left-color: #f97316; background: #fffbeb; }
.cp-agent-step.is-adopted { border-left-color: #10b981; background: #f0fdf4; }
.cp-step-row { display: flex; gap: 8px; align-items: center; }
.cp-agent-step .cp-step-kind {
  display: inline-block; padding: 1px 5px; background: #f5f7fa; border-radius: 3px;
  font-family: monospace; color: #606266;
}
.cp-agent-step .cp-step-kind.kind-tool_call { background: #dbeafe; color: #1e40af; }
.cp-agent-step .cp-step-kind.kind-tool_result { background: #d1fae5; color: #065f46; }
.cp-agent-step .cp-step-kind.kind-plan { background: #f3e8ff; color: #6b21a8; }
.cp-agent-step code {
  color: #409eff; font-family: monospace; background: transparent;
}
.cp-adopt-inline {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; margin: 2px 0 4px;
  font-size: 11.5px; color: #7c2d12;
  background: #fef3c7; border: 1px solid #fde68a; border-radius: 6px;
}
.cp-adopt-inline.adopted { background: #d1fae5; border-color: #6ee7b7; color: #065f46; }
.cp-adopt-inline > span { flex: 1; }
.cp-adopt-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; font-size: 11.5px; font-weight: 600;
  background: #f97316; color: #fff; border: none; border-radius: 5px;
  cursor: pointer;
}
.cp-adopt-btn:hover:not([disabled]) { background: #ea580c; }
.cp-adopt-btn[disabled] { opacity: 0.55; cursor: wait; }

/* ============ v2.3-p21 LLM 真实思考过程折叠卡（仿 Claude / Cursor）============ */
.cp-reasoning {
  margin: 0 0 8px;
  background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 6px;
  font-size: 12px;
}
.cp-reasoning summary {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 10px; cursor: pointer; user-select: none;
  color: #64748b; font-weight: 500;
  list-style: none;
  border-radius: 6px;
  transition: background .15s;
}
.cp-reasoning summary:hover { background: #f1f5f9; color: #334155; }
.cp-reasoning summary::-webkit-details-marker { display: none; }
.cp-reasoning summary .el-icon { font-size: 13px; color: #94a3b8; }
.cp-reasoning .cp-reasoning-len { color: #94a3b8; font-weight: 400; }
.cp-reasoning .cp-reasoning-toggle {
  margin-left: auto; color: #94a3b8; font-size: 11px;
}
.cp-reasoning[open] summary { border-bottom: 1px dashed #e2e8f0; border-radius: 6px 6px 0 0; }
.cp-reasoning[open] .cp-reasoning-toggle::before { content: '▴'; }
.cp-reasoning[open] .cp-reasoning-toggle { font-size: 0; }
.cp-reasoning[open] .cp-reasoning-toggle::before { font-size: 11px; }
.cp-reasoning-body {
  padding: 8px 12px; color: #475569;
  white-space: pre-wrap; line-height: 1.65;
  font-size: 12.5px;
  /* v2.3-p24 用回跟主体一致的 sans-serif（之前 Georgia serif 字体与回答不统一） */
  font-family: inherit;
  max-height: 320px; overflow-y: auto;
}

/* ============ v2.3-p16 业界 agent 风格步骤展示（Cursor / Claude Code 风）============ */
.cp-agent-steps .cp-steps-meta {
  flex: 1; font-weight: 500; color: #475569; font-size: 12.5px;
}
.cp-agent-steps .cp-steps-meta b { color: #0f172a; font-weight: 600; }
.cp-agent-steps .cp-steps-elapsed { color: #94a3b8; font-weight: 400; }
.cp-steps-list {
  padding: 4px 0 4px 16px; display: flex; flex-direction: column; gap: 2px;
}
.cp-step-item {
  display: grid;
  grid-template-columns: 18px 1fr auto;
  align-items: center;
  gap: 8px; padding: 4px 8px;
  border-radius: 5px; font-size: 12.5px; color: #334155;
  transition: background 0.1s;
}
.cp-step-item:hover { background: #f1f5f9; }
.cp-step-item .cp-step-icon {
  font-size: 13px; line-height: 1; text-align: center;
  font-family: 'SF Mono', Menlo, Consolas, monospace;
  display: inline-flex; align-items: center; justify-content: center;
}
.cp-step-item .cp-step-label {
  color: #1e293b; font-weight: 500;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cp-step-item .cp-step-time {
  color: #94a3b8; font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.cp-step-item .cp-step-err {
  color: #ef4444; font-size: 11.5px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.cp-step-item.st-running { color: #2563eb; }
.cp-step-item.st-running .cp-step-label { color: #2563eb; }
.cp-step-item.st-failed { color: #ef4444; }
.cp-step-item.st-failed .cp-step-label { color: #ef4444; }
.cp-step-item.st-plan .cp-step-label { color: #6b7280; font-weight: 400; font-style: italic; }
.cp-step-item.is-adoptable { background: linear-gradient(90deg, #fffbeb 0%, #fef3c7 100%); }
.cp-step-item.is-adopted   { background: #f0fdf4; }
/* adopt 行（跨 3 列）*/
.cp-step-adopt, .cp-step-adopted {
  grid-column: 1 / -1; margin-top: 4px;
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; font-size: 11.5px;
  border-radius: 4px;
}
.cp-step-adopt { background: #fef3c7; color: #92400e; }
.cp-step-adopt .cp-step-adopt-meta { flex: 1; }
.cp-step-adopt .cp-step-adopt-meta b { color: #7c2d12; }
.cp-step-adopted { background: #d1fae5; color: #065f46; }
/* 旋转动画给 running 状态 */
.cp-spin {
  display: inline-block;
  animation: cp-spin 1s linear infinite;
}
@keyframes cp-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* ----- 消息流 ----- */
.cp-messages {
  flex: 1; overflow-y: auto; padding: 16px;
  background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
}
.cp-empty { text-align: center; padding: 32px 12px; color: #64748b; }
.cp-empty-title { font-size: 15px; font-weight: 600; color: #334155; margin-bottom: 6px; }
.cp-empty-desc { font-size: 12.5px; color: #64748b; line-height: 1.6; padding: 0 12px; }
.cp-presets { margin-top: 18px; display: flex; flex-direction: column; gap: 8px; }
.cp-preset {
  text-align: left; padding: 9px 14px; font-size: 12.5px; color: #334155;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 10px;
  cursor: pointer; transition: all .15s;
}
.cp-preset:hover {
  background: linear-gradient(135deg, #eff6ff 0%, #ecfeff 100%);
  border-color: #93c5fd; color: #0c4a6e;
  transform: translateX(2px);
}

.cp-msg { display: flex; gap: 10px; margin-bottom: 14px; align-items: flex-start; }
.cp-msg-user { flex-direction: row-reverse; }
.cp-msg-avatar {
  width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700; color: #fff;
  background: linear-gradient(135deg, #475569, #64748b);
}
.cp-msg-user .cp-msg-avatar { background: linear-gradient(135deg, #2563eb, #06b6d4); }
.cp-msg-bubble {
  max-width: calc(100% - 44px);
  background: #fff; border: 1px solid #e2e8f0; border-radius: 12px;
  padding: 10px 14px; font-size: 13.5px; line-height: 1.7;
  color: #1f2937; box-shadow: 0 1px 2px rgba(15,23,42,0.04);
}
.cp-msg-user .cp-msg-bubble {
  background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
  color: #fff; border-color: #1e40af;
}
.cp-msg-bubble.streaming { border-color: #06b6d4; box-shadow: 0 0 0 3px rgba(6,182,212,0.08); }
.cp-msg-bubble.error { border-color: #fca5a5; background: #fef2f2; color: #991b1b; }
.cp-msg-bubble.error .cp-md { color: #991b1b; }

/* v2.3 P2：Agent 暂停卡片 + 暂停按钮 */
.cp-paused-card {
  margin-top: 10px;
  padding: 12px;
  background: linear-gradient(180deg, #fff7ed 0%, #ffedd5 100%);
  border: 1px solid #fed7aa;
  border-left: 3px solid #ea580c;
  border-radius: 8px;
}
.cp-paused-head {
  display: flex; align-items: center; gap: 6px;
  font-size: 13.5px; color: #9a3412;
  margin-bottom: 4px;
}
.cp-paused-head .el-icon { font-size: 16px; color: #ea580c; }
.cp-paused-meta { color: #c2410c; font-size: 11.5px; margin-left: auto; }
.cp-paused-hint { font-size: 12px; color: #b45309; margin-bottom: 8px; }
.cp-paused-actions {
  display: flex; gap: 8px; flex-wrap: wrap;
  margin-top: 8px;
}
.cp-paused-actions .el-button { font-size: 12px; }

.cp-pause {
  display: inline-flex; align-items: center; gap: 4px;
  background: #fed7aa; color: #9a3412;
  border: 1px solid #fdba74; border-radius: 6px;
  padding: 4px 10px; font-size: 12px; cursor: pointer;
  margin-right: 4px;
  transition: all .12s;
}
.cp-pause:hover:not(:disabled) {
  background: #fdba74; color: #7c2d12;
  transform: translateY(-1px);
}
.cp-pause:disabled { opacity: 0.6; cursor: wait; }

/* v2.3-p1：user msg 顶部的附件 chips（promote 进来的） */
.cp-msg-attaches {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin: 0 0 6px 0; padding: 2px 0 6px;
  border-bottom: 1px solid rgba(255,255,255,0.18);
}
.cp-msg-attach-chip {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(255,255,255,0.18); color: #fff;
  border: 1px solid rgba(255,255,255,0.28);
  border-radius: 999px;
  padding: 2px 10px; font-size: 12px; line-height: 1.4;
  max-width: 240px;
}
.cp-msg-attach-chip .el-icon { font-size: 12px; }
.cp-msg-attach-name {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  max-width: 200px;
}
/* 仅 user msg 走渐变蓝底，attaches chip 用上面那套半透白；
   非 user (assistant) 不会带 attachments，保险给个稳健配色 */
.cp-msg:not(.cp-msg-user) .cp-msg-attaches {
  border-bottom-color: #e2e8f0;
}
.cp-msg:not(.cp-msg-user) .cp-msg-attach-chip {
  background: #f1f5f9; color: #475569;
  border-color: #cbd5e1;
}

.cp-thinking { display: inline-flex; gap: 4px; padding: 4px 2px; }
.cp-thinking-dot {
  width: 7px; height: 7px; border-radius: 50%; background: #94a3b8;
  animation: cp-bounce 1.2s ease-in-out infinite;
}
.cp-thinking-dot:nth-child(2) { animation-delay: .15s; }
.cp-thinking-dot:nth-child(3) { animation-delay: .3s; }
@keyframes cp-bounce {
  0%,80%,100% { transform: scale(0.6); opacity: 0.4; }
  40%         { transform: scale(1);   opacity: 1;   }
}

/* v2.2 progress 卡片：附件处理实时进度（todo list） */
.cp-msg-bubble.progress {
  background: linear-gradient(180deg, #f0f9ff 0%, #eff6ff 100%);
  border: 1px solid #93c5fd;
  border-left: 3px solid #2563eb;
}
.cp-progress-card { font-size: 13px; line-height: 1.55; }
.cp-progress-head {
  display: flex; align-items: center; gap: 8px;
  font-weight: 600; color: #1e3a8a; margin-bottom: 8px;
  padding-bottom: 6px; border-bottom: 1px dashed #bfdbfe;
}
.cp-progress-head-text { flex: 1; }
.cp-progress-elapsed {
  font-family: ui-monospace, Menlo, monospace;
  font-size: 11px; color: #64748b; font-weight: normal;
}
.cp-spin { animation: cp-spin-rot 1s linear infinite; color: #2563eb; }
@keyframes cp-spin-rot { from { transform: rotate(0); } to { transform: rotate(360deg); } }

.cp-todo-list { list-style: none; padding: 0; margin: 0; }
.cp-todo-list li {
  display: flex; align-items: baseline; gap: 8px;
  padding: 3px 0; transition: opacity .25s, transform .25s;
}
.cp-todo-mark {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; font-size: 12px; flex-shrink: 0;
}
.cp-todo-label { color: #334155; font-weight: 500; }
.cp-todo-detail { color: #64748b; font-size: 12px; font-variant-numeric: tabular-nums; }
.cp-todo-list li.st-pending { opacity: 0.45; }
.cp-todo-list li.st-pending .cp-todo-mark { color: #cbd5e1; }
.cp-todo-list li.st-doing .cp-todo-mark { color: #2563eb; }
.cp-todo-list li.st-doing .cp-todo-label { color: #1e40af; font-weight: 600; }
.cp-todo-list li.st-done .cp-todo-mark { color: #10b981; font-weight: bold; }
.cp-todo-list li.st-done .cp-todo-label { color: #064e3b; }
.cp-todo-list li.st-failed { background: #fef2f2; border-radius: 4px; padding: 4px 6px; }
.cp-todo-list li.st-failed .cp-todo-mark { color: #ef4444; font-weight: bold; }
.cp-todo-list li.st-failed .cp-todo-label { color: #991b1b; font-weight: 600; }
.cp-todo-list li.st-skipped { opacity: 0.55; }
.cp-todo-list li.st-skipped .cp-todo-mark { color: #94a3b8; }
.cp-todo-list li.st-skipped .cp-todo-label { color: #64748b; text-decoration: line-through; }
.cp-progress-err {
  margin-top: 8px; padding: 6px 10px;
  background: #fef2f2; border-radius: 6px;
  color: #991b1b; font-size: 12px;
}

/* v2.3: clarify 卡片 — 意图分析发现缺资源时的友好提示 */
.cp-msg-bubble:has(.cp-clarify-card) {
  background: linear-gradient(180deg, #fffbeb 0%, #fef3c7 100%);
  border: 1px solid #fcd34d; border-left: 3px solid #f59e0b;
}
.cp-clarify-card { font-size: 13.5px; line-height: 1.6; }
.cp-clarify-head {
  display: flex; align-items: center; gap: 6px;
  font-weight: 600; color: #92400e; margin-bottom: 6px;
  padding-bottom: 5px; border-bottom: 1px dashed #fcd34d;
  font-size: 13px;
}
.cp-clarify-card .cp-md { color: #78350f; }
.cp-clarify-card .cp-md strong { color: #92400e; }
.cp-clarify-card .cp-md ul { padding-left: 20px; margin: 4px 0; }

/* v2.3.2 反馈按钮（点赞 / 踩） */
.cp-fb-btn {
  border: 1px solid #e2e8f0; background: #fff;
  border-radius: 6px; padding: 2px 7px; cursor: pointer;
  font-size: 13px; color: #64748b;
  transition: all 0.15s; line-height: 1;
}
.cp-fb-btn:hover { background: #f1f5f9; transform: scale(1.1); }
.cp-fb-btn.active { background: #dbeafe; border-color: #3b82f6; color: #1e40af; }
/* v2.3-p15 clarify 卡片底部"继续追问"提示 */
.cp-clarify-foot {
  margin-top: 8px; padding-top: 6px;
  border-top: 1px dashed #fcd34d;
  font-size: 12px; color: #92400e; opacity: 0.9;
}
.cp-clarify-foot i { color: #b45309; font-style: italic; font-weight: 500; }

/* ---- markdown body ---- */
.cp-md p { margin: 0 0 6px; }
.cp-md p:last-child { margin-bottom: 0; }
.cp-md ul { margin: 4px 0 6px; padding-left: 22px; }
.cp-md li { margin-bottom: 3px; }
.cp-md code {
  background: #f1f5f9; color: #be185d; padding: 1px 5px;
  border-radius: 4px; font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
  font-size: 0.92em;
}
.cp-md pre {
  background: #0f172a; color: #e2e8f0; padding: 10px 12px;
  border-radius: 8px; overflow-x: auto; margin: 6px 0;
}
.cp-md pre code { background: transparent; color: #e2e8f0; padding: 0; }
.cp-md h3 { font-size: 14px; margin: 8px 0 4px; color: #0c4a6e; }
.cp-md h4 { font-size: 13px; margin: 6px 0 3px; color: #1e40af; }
.cp-md strong { color: #1e40af; font-weight: 600; }
.cp-msg-user .cp-md strong { color: #fde68a; }

/* v2.1.4 思路注解：助手回答开头那段 `_..._` 渲染的 em 显示为浅灰小字，
   让"我准备做啥"的思路与正式答案视觉上区分开。 */
.cp-msg-assistant .cp-md em {
  color: #94a3b8;
  font-style: normal;
  font-size: 12.5px;
  font-weight: 400;
  display: inline-block;
  padding-left: 8px;
  border-left: 2px solid #cbd5e1;
  margin: 0 0 2px;
  line-height: 1.55;
}
.cp-msg-assistant .cp-md p:has(> em:only-child) {
  margin-bottom: 8px;
}
.cp-table { width: 100%; border-collapse: collapse; font-size: 12.5px; margin: 6px 0; background: #fff; }
.cp-table th, .cp-table td { border: 1px solid #e2e8f0; padding: 4px 8px; text-align: left; }
.cp-table th { background: #f1f5f9; color: #0c4a6e; font-weight: 600; }

.cp-msg-toolbar {
  margin-top: 6px; padding-top: 6px; border-top: 1px dashed #e2e8f0;
  display: flex; gap: 4px;
}
.cp-msg-toolbar button {
  display: inline-flex; align-items: center; gap: 3px;
  padding: 2px 8px; font-size: 11.5px; color: #475569;
  background: transparent; border: 1px solid #e2e8f0; border-radius: 6px;
  cursor: pointer; transition: all .12s;
}
.cp-msg-toolbar button:hover { background: #f1f5f9; color: #1e40af; border-color: #93c5fd; }

/* v2.1.5 token 用量小标：助手消息工具栏右侧 */
.cp-token-tag {
  display: inline-flex; align-items: center; gap: 4px;
  margin-left: auto;
  padding: 2px 8px; font-size: 11px; font-weight: 500;
  color: #475569; background: #f1f5f9;
  border: 1px solid #e2e8f0; border-radius: 6px;
  cursor: help; white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.cp-token-tag:hover { background: #e0f2fe; color: #0c4a6e; border-color: #7dd3fc; }
.cp-token-tag.is-est {
  color: #92400e; background: #fffbeb; border-color: #fde68a;
}
.cp-token-tag.is-est:hover {
  color: #78350f; background: #fef3c7; border-color: #fcd34d;
}
.cp-token-est {
  font-size: 10px; opacity: 0.75;
  padding-left: 2px;
}
.cp-route-tag {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; font-size: 11px; font-weight: 500;
  border-radius: 6px; margin-left: auto;
  cursor: default;
}
.cp-route-tag .el-icon { font-size: 11px; }
.cp-route-primary {
  background: linear-gradient(135deg, #dbeafe, #e0e7ff);
  color: #1e40af; border: 1px solid #93c5fd;
}
.cp-route-fast {
  background: linear-gradient(135deg, #d1fae5, #ccfbf1);
  color: #065f46; border: 1px solid #6ee7b7;
}
.cp-route-model { color: #64748b; font-size: 10.5px; }

/* ----- 输入区 ----- */
/* v1.40.3 Cursor 风格的对话框：浮起一格，圆角+阴影；整体压扁到 ~50px */
.cp-input-bar {
  margin: 6px 12px 10px;
  padding: 6px 10px 4px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  position: relative;
  transition: box-shadow 0.2s, border-color 0.2s, transform 0.2s;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 6px 18px rgba(15, 23, 42, 0.08),
    0 14px 36px rgba(15, 23, 42, 0.05);
}
.cp-input-bar:focus-within {
  border-color: #93c5fd;
  box-shadow:
    0 0 0 3px rgba(59, 130, 246, 0.12),
    0 1px 2px rgba(15, 23, 42, 0.04),
    0 12px 32px rgba(15, 23, 42, 0.10),
    0 22px 56px rgba(15, 23, 42, 0.08);
  transform: translateY(-1px);
}
/* v1.39.4 文件拖放高亮 */
.cp-input-bar:has(.cp-attach-drop-hint) {
  background: linear-gradient(135deg, #eff6ff, #f0fdf4);
  border-color: #60a5fa;
  box-shadow:
    0 0 0 3px rgba(37, 99, 235, 0.20),
    0 12px 32px rgba(37, 99, 235, 0.18);
}
.cp-attachments {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 8px;
}
.cp-attach-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 8px;
  background: #f1f5f9; border: 1px solid #cbd5e1; border-radius: 16px;
  font-size: 12px; color: #334155;
  transition: all .15s;
}
.cp-attach-chip .cp-attach-name {
  max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-weight: 500;
}
.cp-attach-chip .cp-attach-size { font-size: 10px; color: #94a3b8; }
.cp-attach-chip.uploading { background: #fef3c7; border-color: #fcd34d; color: #92400e; }
.cp-attach-chip.uploading .cp-attach-spin { animation: cp-spin 1s linear infinite; }
.cp-attach-chip.error { background: #fee2e2; border-color: #fca5a5; color: #991b1b; }
.cp-attach-chip:not(.uploading):not(.error) .el-icon:last-of-type {
  color: #10b981;
}
.cp-attach-rm {
  margin-left: 2px; padding: 0 4px;
  background: none; border: none; cursor: pointer;
  color: #94a3b8; font-size: 14px; line-height: 1;
  border-radius: 4px;
}
.cp-attach-rm:hover:not(:disabled) { color: #ef4444; background: rgba(239,68,68,0.10); }
.cp-attach-rm:disabled { opacity: 0.4; cursor: not-allowed; }
@keyframes cp-spin { to { transform: rotate(360deg); } }
.cp-attach-drop-hint {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  background: linear-gradient(135deg, #dbeafe, #bbf7d0);
  border: 2px dashed #2563eb;
  border-radius: 8px;
  color: #1e40af; font-size: 12.5px; font-weight: 600;
  animation: cp-pulse 1.2s ease-in-out infinite;
}
@keyframes cp-pulse {
  0%, 100% { opacity: 0.85; }
  50% { opacity: 1; }
}
/* v1.40.0 Copilot 高级菜单 popover */
.cp-adv { padding: 4px 2px; }
.cp-adv-row {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
}
.cp-adv-k {
  font-size: 12.5px; color: #475569; font-weight: 500;
}
.cp-adv-divider {
  height: 1px; background: #e5e7eb; margin: 6px 0 10px;
}
.cp-adv-btn {
  display: flex; align-items: center; gap: 8px;
  width: 100%; padding: 7px 10px; margin-bottom: 4px;
  background: #f8fafc; border: 1px solid #e2e8f0;
  border-radius: 6px; cursor: pointer;
  font-size: 12.5px; color: #334155;
  text-align: left;
}
.cp-adv-btn:hover { background: #e0f2fe; border-color: #93c5fd; color: #0c4a6e; }
.cp-adv-btn .el-icon { font-size: 13px; }
.cp-adv-tip {
  font-size: 11px; color: #64748b; line-height: 1.55;
  padding: 6px 4px 2px;
}
.cp-adv-pop {
  border-radius: 10px !important;
  box-shadow: 0 10px 32px rgba(15, 23, 42, 0.16) !important;
}
/* v1.40.0 自动路由 tag — 显示在 assistant 气泡顶部 */
.cp-route-hint {
  display: inline-flex; align-items: center; gap: 5px;
  margin-bottom: 6px;
  padding: 2px 8px;
  background: linear-gradient(135deg, #f0f9ff, #ecfeff);
  border: 1px solid #bae6fd;
  border-radius: 12px;
  font-size: 11px; color: #0369a1;
}
.cp-route-hint .el-icon { font-size: 11px; }
.cp-route-hint b { color: #075985; font-weight: 600; }
.cp-route-hint .cp-route-by {
  display: inline-flex; padding: 0 5px;
  font-size: 10px; font-weight: 600;
  background: rgba(2, 132, 199, 0.12); color: #0369a1;
  border-radius: 8px; letter-spacing: 0.2px;
}
.cp-route-hint.by-llm .cp-route-by { background: rgba(2, 132, 199, 0.18); color: #075985; }
.cp-route-hint.by-regex { background: linear-gradient(135deg, #f8fafc, #f1f5f9); border-color: #cbd5e1; color: #475569; }
.cp-route-hint.by-regex b { color: #334155; }
.cp-route-hint.by-regex .cp-route-by { background: rgba(71, 85, 105, 0.15); color: #334155; }
.cp-route-hint.by-fallback {
  background: linear-gradient(135deg, #fff7ed, #fef3c7);
  border-color: #fcd34d; color: #92400e;
}
.cp-route-hint.by-fallback b { color: #78350f; }
.cp-route-hint.by-fallback .cp-route-by { background: rgba(217, 119, 6, 0.18); color: #78350f; }
/* v1.40.1 附件场景：直接 project，绿底（已跑完 pipeline） */
.cp-route-hint.by-attach,
.cp-route-hint[class*="by-attach"] {
  background: linear-gradient(135deg, #f0fdf4, #ecfeff);
  border-color: #86efac; color: #15803d;
}
.cp-route-hint.by-attach b,
.cp-route-hint[class*="by-attach"] b { color: #14532d; }
.cp-route-hint.by-attach .cp-route-by,
.cp-route-hint[class*="by-attach"] .cp-route-by { background: rgba(22, 163, 74, 0.18); color: #14532d; }
/* v1.40.1 手动选 mode：紫底 */
.cp-route-hint.by-manual {
  background: linear-gradient(135deg, #faf5ff, #f5f3ff);
  border-color: #c4b5fd; color: #6d28d9;
}
.cp-route-hint.by-manual b { color: #5b21b6; }
.cp-route-hint.by-manual .cp-route-by { background: rgba(124, 58, 237, 0.18); color: #5b21b6; }
/* v1.40.0 项目缺失警告条（替代旧 cp-project-bar） */
.cp-project-bar.warn {
  display: flex; align-items: center; gap: 6px;
  margin: 8px 12px 0;
  padding: 6px 10px;
  background: linear-gradient(135deg, #fef3c7, #fef9c3);
  border: 1px solid #fbbf24;
  border-radius: 8px;
  font-size: 12px; color: #92400e;
}
.cp-project-bar.warn .el-icon { font-size: 13px; color: #d97706; }
.cp-project-bar.warn b { color: #78350f; }

/* v1.39.5 Copilot 缺企业身份信息补填表单 */
.cp-meta-form {
  margin-bottom: 8px; padding: 10px 12px;
  background: linear-gradient(135deg, #fff7ed, #fefce8);
  border: 1px solid #fed7aa; border-radius: 8px;
}
.cp-meta-form-head {
  display: flex; align-items: center; gap: 6px;
  font-size: 12.5px; color: #9a3412; margin-bottom: 6px;
}
.cp-meta-form-head b { color: #7c2d12; }
.cp-meta-form-sub {
  color: #92400e; font-weight: 400; margin-left: 4px;
  font-size: 11.5px;
}
.cp-meta-form-row {
  display: flex; gap: 8px; flex-wrap: wrap;
}

/* ============ v2.1.3 项目归属确认对话框 ============ */
.cp-scope-dlg { font-size: 13px; color: #1f2937; }
.cp-scope-fileinfo {
  padding: 10px 12px; margin-bottom: 12px;
  background: linear-gradient(135deg, #eff6ff, #f0f9ff);
  border: 1px solid #bfdbfe; border-radius: 8px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  color: #1e40af; font-size: 12.5px;
}
.cp-scope-fileinfo b { color: #1d4ed8; }
.cp-scope-meta {
  flex-basis: 100%; margin-top: 4px;
  color: #475569; font-size: 12px;
}
.cp-scope-meta b { color: #0f172a; }
.cp-scope-meta.dim { color: #94a3b8; font-style: italic; }

.cp-scope-options {
  display: flex; flex-direction: column; gap: 10px; width: 100%;
}
.cp-scope-opt {
  padding: 12px 14px; border-radius: 10px;
  border: 1.5px solid #e5e7eb; background: #fafafa;
  transition: all 0.15s ease;
}
.cp-scope-opt:hover { border-color: #cbd5e1; background: #f8fafc; }
.cp-scope-opt.active {
  border-color: #2563eb; background: #eff6ff;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.08);
}
.cp-scope-opt.warn { border-color: #f59e0b; background: #fffbeb; }
.cp-scope-opt.active.warn {
  border-color: #d97706; background: #fef3c7;
  box-shadow: 0 0 0 3px rgba(217,119,6,0.12);
}
.cp-scope-opt .el-radio { align-items: flex-start; height: auto; width: 100%; }
.cp-scope-opt .el-radio__label { padding-left: 8px; flex: 1; white-space: normal; }
.cp-scope-opt-body { line-height: 1.5; }
.cp-scope-opt-title {
  font-size: 13.5px; font-weight: 600; color: #111827;
  display: flex; align-items: center; gap: 6px;
}
.cp-scope-opt-sub {
  font-size: 12px; color: #64748b; margin-top: 2px; font-weight: 400;
}
.cp-scope-warn {
  margin-top: 6px; padding: 6px 8px;
  background: #fef3c7; color: #92400e;
  border-left: 3px solid #f59e0b;
  border-radius: 4px; font-size: 12px; font-weight: 400;
  line-height: 1.5;
}
.cp-scope-warn b { color: #78350f; }
.cp-scope-form {
  margin-top: 10px; margin-left: 24px;
  display: flex; flex-direction: column; gap: 8px;
}
.cp-scope-form-row {
  display: flex; gap: 8px; align-items: center;
}
.cp-scope-hint {
  margin-top: 6px; font-size: 11.5px; color: #64748b;
}

.cp-attach-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 24px;
  background: rgba(37,99,235,0.08); color: #2563eb;
  border-radius: 6px; cursor: pointer;
  transition: all .15s;
}
.cp-attach-btn:hover { background: rgba(37,99,235,0.18); }
.cp-attach-btn .el-icon { font-size: 14px; }
/* v2.3.6: AI 未启用时灰；streaming 期间不灰（允许加附件，跟队列机制对齐）*/
.cp-attach-btn.disabled { opacity: 0.4; cursor: not-allowed; }
/* v1.40.3 textarea 单行起步，自适应增长；高度从 ~44px → ~24px
   Chrome 123+/Firefox 144+/Safari 17.4+ 支持 field-sizing 自适应；
   不支持的浏览器靠 rows=1 + max-height 兜底（用户写长会内部滚）*/
.cp-input-bar textarea {
  width: 100%; box-sizing: border-box; resize: none;
  field-sizing: content;            /* 内容自适应高度 */
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 13.5px; line-height: 1.55;
  min-height: 24px;
  max-height: 160px;
  padding: 2px 2px 2px;
  border: none; border-radius: 0;
  background: transparent; color: #0f172a; outline: none;
  transition: none;
  overflow-y: auto;
}
.cp-input-bar textarea::placeholder {
  color: #94a3b8; font-weight: 400;
}
.cp-input-bar textarea:disabled { color: #94a3b8; cursor: not-allowed; }

.cp-input-bottom {
  display: flex; align-items: center; gap: 6px;
  margin-top: 0; padding-top: 4px;
  border-top: 1px dashed #f1f5f9;
  font-size: 11px; color: #94a3b8;
}
.cp-tips { display: inline-flex; align-items: center; gap: 4px; max-width: 60%; }
.cp-tips .el-icon { font-size: 12px; }
.cp-send, .cp-stop {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; font-size: 12px; font-weight: 600;
  border: none; border-radius: 6px; cursor: pointer;
  transition: all .15s;
}
.cp-send {
  background: linear-gradient(135deg, #2563eb, #0ea5e9);
  color: #fff; box-shadow: 0 2px 6px rgba(37,99,235,0.25);
}
.cp-send:hover:not(:disabled) { filter: brightness(1.08); transform: translateY(-1px); }
.cp-send:disabled { opacity: 0.45; cursor: not-allowed; box-shadow: none; }
.cp-stop {
  background: #fee2e2; color: #b91c1c; border: 1px solid #fca5a5;
}
.cp-stop:hover { background: #fecaca; }

/* 滚动条美化 */
.cp-messages::-webkit-scrollbar { width: 6px; }
.cp-messages::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }
.cp-messages::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

/* 小屏适配 */
@media (max-width: 720px) {
  .copilot-drawer, .copilot-drawer.wide { width: 100vw; }
  .copilot-fab { right: 14px; bottom: 14px; padding: 8px 14px; font-size: 12px; }
}

/* 豆包候选接入点 chip 列表 */
.ep-chip-list { display: flex; flex-wrap: wrap; gap: 8px; padding: 4px 0; }
.ep-chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 5px 10px 5px 12px;
  background: linear-gradient(135deg, #f8fafc, #f1f5f9);
  border: 1px solid #cbd5e1; border-radius: 999px;
  font-size: 12px; cursor: pointer;
  transition: all .15s;
}
.ep-chip:hover { background: linear-gradient(135deg, #eff6ff, #e0f2fe);
                 border-color: #93c5fd; transform: translateY(-1px); }
.ep-chip.active {
  background: linear-gradient(135deg, #dbeafe, #cffafe);
  border-color: #2563eb; color: #0c4a6e;
  box-shadow: 0 0 0 3px rgba(37,99,235,0.12);
}
.ep-chip-label { font-weight: 600; color: #1e40af; }
.ep-chip.active .ep-chip-label { color: #1e3a8a; }
.ep-chip-id {
  font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
  font-size: 11px; color: #64748b; padding-left: 6px;
  border-left: 1px solid #cbd5e1;
}
.ep-chip-x {
  font-size: 12px; color: #94a3b8; padding: 2px;
  border-radius: 50%; transition: all .12s;
}
.ep-chip-x:hover { color: #dc2626; background: rgba(220,38,38,0.1); }

/* AI 测试结果 banner */
.ai-test-result {
  margin-top: 10px; padding: 8px 12px; border-radius: 6px;
  font-size: 12.5px; line-height: 1.6;
  display: flex; flex-direction: column; gap: 4px;
}
.ai-test-result.ok   { background: #f0fdf4; color: #166534; border: 1px solid #bbf7d0; }
.ai-test-result.fail { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.ai-test-result code {
  background: rgba(255,255,255,0.6); color: inherit;
  padding: 0 4px; border-radius: 3px; font-size: 12px;
}
.ai-test-reply {
  color: #475569; font-size: 12px;
  padding-left: 22px; margin-top: 2px;
}


/* ---------- v2.6 财务报表附注：文档式三栏布局 ---------- */
/* 区域立体悬浮 + 区分度：四块卡片统一描边 + 阴影 */
.notes-wrap .ndoc-toolbar,
.notes-wrap .ndoc-outline,
.notes-wrap .ndoc-main,
.notes-wrap .ndoc-aside {
  border: 1px solid #e9eef5;
  box-shadow: 0 2px 10px rgba(15, 23, 42, 0.06);
  border-radius: 10px;
}
.ndoc-toolbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 7px 16px; gap: 12px;
}
.ndoc-title {
  display: flex; align-items: center; gap: 7px;
  font-size: 18.5px; font-weight: 800; color: #1f2d3d; margin-right: 10px; line-height: 1.1;
}
.ndoc-title .el-icon { color: #2563eb; font-size: 20px; }
.ndoc-tb-left { display: flex; align-items: center; gap: 10px; }
.ndoc-tb-right { display: flex; align-items: center; gap: 8px; }
.ndoc-prog { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #64748b; margin-right: 6px; }
/* 年份框：与按钮同高、加宽，像一个选择框 */
.ndoc-year {
  display: inline-flex; align-items: center; height: 32px; padding: 0 14px;
  border: 1px solid #dcdfe6; border-radius: 6px; background: #fff;
  font-size: 13px; color: #475569; white-space: nowrap;
}
/* 工具条按钮/分段统一加长（min-width）显得舒展 */
.ndoc-toolbar .ndoc-tb-right .el-button { min-width: 96px; }
.ndoc-body { display: flex; gap: 10px; align-items: stretch; }
.ndoc-outline { flex: 0 0 238px; padding: 10px; max-height: calc(100vh - 196px); overflow-y: auto; }
.ndoc-search { margin-bottom: 4px; }
.ndoc-onlydata { margin: 3px 0 6px 2px; }
.ndoc-tree { font-size: 13px; }
.ndoc-grp { font-size: 11px; font-weight: 700; color: #64748b; letter-spacing: 1px;
  padding: 8px 4px 4px; margin-top: 4px; border-top: 1px solid #eef2f7; }
.ndoc-grp:first-child { border-top: none; margin-top: 0; }
.ndoc-item { display: flex; align-items: center; gap: 6px; padding: 5px 8px; margin: 1px 0;
  border-radius: 6px; cursor: pointer; color: #475569; line-height: 1.4; }
.ndoc-item:hover { background: #f1f5f9; }
.ndoc-item.active { background: #e6effe; color: #2563eb; font-weight: 600;
  box-shadow: inset 3px 0 0 #2563eb; }
.ndoc-child { padding-left: 14px; }
.ndoc-dot { flex: 0 0 7px; width: 7px; height: 7px; border-radius: 50%; }
.ndoc-itemname { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ndoc-amt { flex: 0 0 auto; font-size: 11.5px; color: #94a3b8; font-variant-numeric: tabular-nums; }
.ndoc-todo { flex: 0 0 auto; font-size: 10px; color: #cbd5e1; border: 1px solid #e2e8f0;
  border-radius: 3px; padding: 0 4px; }
.ndoc-main { flex: 1 1 auto; min-width: 0; padding: 16px 20px; max-height: calc(100vh - 196px); overflow-y: auto; }
.ndoc-doc-title { font-size: 17px; font-weight: 700; color: #1f2d3d; text-align: center; margin-bottom: 12px;
  padding-bottom: 8px; border-bottom: 2px solid #e6effe; letter-spacing: 0.5px; }
.ndoc-narr-bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.ndoc-narr-ref { font-size: 12px; color: #94a3b8; }
.ndoc-aside { flex: 0 0 286px; padding: 0; max-height: calc(100vh - 196px); display: flex; flex-direction: column; }
.ndoc-tabs { display: flex; border-bottom: 1px solid #eef2f7; }
.ndoc-tabs span { flex: 1; text-align: center; padding: 9px 0; font-size: 12.5px; color: #64748b;
  cursor: pointer; border-bottom: 2px solid transparent; }
.ndoc-tabs span:hover { color: #2563eb; }
.ndoc-tabs span.active { color: #2563eb; font-weight: 600; border-bottom-color: #2563eb; }
.ndoc-aside-body { padding: 12px 14px; overflow-y: auto; }
/* 紧凑文档头：标题 + 角标同行，提示信息收成小角标 */
.ndoc-main .nd-head2 { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.ndoc-main .nd-title2 { font-size: 16px; font-weight: 700; color: #1f2d3d; }
.ndoc-main .nd-badges { display: inline-flex; align-items: center; gap: 6px; }
.ndoc-main .nd-chip { display: inline-flex; align-items: center; gap: 3px; height: 20px; padding: 0 7px;
  background: #f1f5f9; border-radius: 4px; font-size: 11.5px; color: #64748b; cursor: default; }
.ndoc-main .nd-chip .el-icon { font-size: 12px; }
/* 深层子表（固定资产分类滚动表等） */
.nd-subtable { margin-top: 16px; }
.nd-subtable-title { font-size: 13.5px; font-weight: 700; color: #1f2d3d; margin-bottom: 6px; }
.nd-subtable-note { font-size: 11.5px; color: #94a3b8; margin-top: 5px; }
.nd-subtable .row-total { font-weight: 700; color: #1f2d3d; }
/* v2.6 P1：附注量化分表 可编辑数值 */
.nd-edit-bar { display: flex; align-items: center; gap: 8px; margin: 0 0 8px; }
.nd-ov-input { width: 130px; }
.nd-ov-input :deep(.el-input__inner), .nd-ov-input .el-input__inner { text-align: right; }
.nd-ov-row td.el-table__cell { background: #fffbeb !important; }
.nd-cell-note { color: #64748b; font-size: 12.5px; }
.nd-hist-link { margin-left: 6px; color: #2563eb; cursor: pointer; font-size: 12px; }
.nd-hist-link:hover { text-decoration: underline; }
.ndoc-aside-h { font-size: 12px; font-weight: 700; color: #475569; margin-bottom: 8px; }
.ndoc-aside-empty { font-size: 12.5px; color: #94a3b8; line-height: 1.7; }
.ndoc-src { font-size: 12.5px; color: #475569; line-height: 1.9; }
.ndoc-chk { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: #334155;
  padding: 6px 0; line-height: 1.4; cursor: default; }
.ndoc-chk .el-icon { flex: 0 0 auto; color: #16a34a; }
.ndoc-chk.bad { color: #b45309; }
.ndoc-chk.bad .el-icon { color: #e6a23c; }
.ndoc-chk.opt { color: #94a3b8; }
.ndoc-chk.opt .el-icon { color: #cbd5e1; }
.ndoc-chk-lbl { flex: 1 1 auto; min-width: 0; }
.ndoc-req { flex: 0 0 auto; font-size: 10px; color: #dc2626; border: 1px solid #fecaca;
  border-radius: 3px; padding: 0 3px; line-height: 14px; }
.ndoc-chk-tag { flex: 0 0 auto; font-size: 10.5px; color: #b45309; }
.ndoc-chk.opt .ndoc-chk-tag { color: #94a3b8; }
.ndoc-ev { border: 1px solid #eef2f7; border-radius: 6px; padding: 7px 9px; margin-bottom: 7px; }
.ndoc-ev-r1 { display: flex; justify-content: space-between; font-size: 12.5px; }
.ndoc-ev-amt { color: #2563eb; font-variant-numeric: tabular-nums; }
.ndoc-ev-r2 { font-size: 11px; color: #94a3b8; margin-top: 2px; }
.ndoc-ev-r3 { font-size: 11.5px; color: #64748b; margin-top: 3px; }
/* 左栏稍带底色与中栏区分；子表表头浅灰（不要蓝色） */
.ndoc-outline { background: #fbfcfe; }
.ndoc-main .el-table th.el-table__cell {
  background: #f5f7fa !important; color: #374151 !important; font-weight: 600;
}
.ndoc-main .el-table { --el-table-border-color: #eef2f7; }
.ndoc-main .el-table td.el-table__cell { color: #334155; }

/* ---------- v1.33 财务报表附注 ---------- */
.notes-wrap { display: flex; flex-direction: column; gap: 8px; }
.notes-legend {
  padding: 10px 16px; display: flex; align-items: center; gap: 18px;
  font-size: 13px; color: #475569;
}
.notes-legend .legend-item { display: inline-flex; align-items: center; gap: 6px; }
.notes-legend .legend-dot {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%;
}
.notes-legend b { color: #0f172a; }

.notes-split {
  display: grid; grid-template-columns: 320px 1fr; gap: 12px;
  min-height: calc(100vh - 280px);
}

.notes-tree { padding: 12px 0; max-height: calc(100vh - 230px); overflow-y: auto; }
.notes-tree-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0 16px 10px; font-size: 13px; color: #64748b;
  border-bottom: 1px solid #f1f5f9;
}
.notes-tree-item {
  display: flex; align-items: center; gap: 8px; padding: 9px 16px;
  cursor: pointer; font-size: 13px;
  border-left: 3px solid transparent; transition: background 0.15s;
}
.notes-tree-item:hover { background: #f8fafc; }
.notes-tree-item.active {
  background: #eff6ff; border-left-color: #3b82f6;
}
.notes-tree-item .nti-dot {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.notes-tree-item .nti-name { flex: 1; color: #0f172a; }
.notes-tree-item .nti-amount {
  font-family: ui-monospace, monospace; font-size: 12px; color: #475569;
}
.notes-tree-item .nti-amount.nti-empty { color: #cbd5e1; }

.notes-detail { padding: 18px 22px; }
.nd-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid #f1f5f9;
}
.nd-head .nd-title { font-size: 18px; font-weight: 600; color: #0f172a; }
.nd-head .nd-sub { margin-top: 6px; display: flex; gap: 6px; }
.nd-validation {
  display: flex; align-items: center; gap: 6px;
  background: #fef3c7; border-left: 3px solid #f59e0b;
  color: #92400e; padding: 8px 12px; font-size: 12px;
  border-radius: 4px; margin-bottom: 12px;
}
.nd-policy {
  margin-top: 14px; padding: 8px 12px;
  background: #f8fafc; border-radius: 4px;
  font-size: 11px; color: #64748b; font-style: italic;
  display: flex; align-items: center; gap: 6px;
}

.row-total { font-weight: 600; color: #0f172a; }
.cell-with-evidence {
  cursor: help;
  border-bottom: 1px dotted #94a3b8;
  display: inline-flex; align-items: center; gap: 4px;
}
.cell-with-evidence .el-icon { font-size: 11px; color: #64748b; }

.evidence-popover { font-size: 12px; }
.evidence-popover .ep-title {
  font-weight: 600; color: #0f172a; margin-bottom: 8px;
  padding-bottom: 6px; border-bottom: 1px solid #f1f5f9;
}
.evidence-popover .ep-item {
  padding: 6px 0; border-bottom: 1px dashed #f1f5f9;
}
.evidence-popover .ep-item:last-child { border-bottom: none; }
.evidence-popover .ep-row1 {
  display: flex; justify-content: space-between; align-items: center;
}
.evidence-popover .ep-row1 b { color: #1e40af; }
.evidence-popover .ep-amt { font-family: ui-monospace, monospace; color: #c0392b; }
.evidence-popover .ep-row2 { color: #64748b; font-size: 11px; margin-top: 2px; }
.evidence-popover .ep-summary { color: #475569; margin-top: 3px; font-size: 11px; }

/* v1.33 底稿详情 → 对应附注抽屉 */
.wp-note-drawer { padding: 4px 8px; }
.wnd-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 14px; padding-bottom: 10px;
  border-bottom: 1px solid #f1f5f9;
}
.wnd-title {
  display: flex; align-items: center; gap: 8px;
  font-size: 16px; font-weight: 600; color: #0f172a;
}
.wnd-sub {
  display: flex; align-items: center; gap: 4px;
  margin-top: 6px; font-size: 12px; color: #92400e;
  background: #fef3c7; padding: 4px 8px; border-radius: 4px;
  border-left: 3px solid #f59e0b;
}
.wnd-policy {
  margin-top: 14px; padding: 8px 12px;
  background: #f8fafc; border-radius: 4px;
  font-size: 11px; color: #64748b; font-style: italic;
}

/* v1.34 公共导入组件 <import-panel> */
.import-panel { padding: 4px 0; }
.import-panel.is-slim { padding: 0; }
.import-panel .ip-title {
  margin: 0 0 14px; font-size: 16px; font-weight: 600; color: #0f172a;
}
.import-panel .el-steps { margin: 4px 0 18px; }
.import-panel .ip-desc {
  margin: 0 0 12px; color: #6b7280; font-size: 13px; line-height: 1.7;
}
.import-panel .ip-files { margin-top: 10px; }
.import-panel .ip-actions {
  margin-top: 18px; display: flex; gap: 8px; justify-content: flex-end;
}
.import-panel .ip-ent { margin-bottom: 12px; }
.import-panel .ip-ent .el-card__header { padding: 10px 14px; background: #f9fafb; }
.import-panel .ip-sheets .el-card__header { padding: 10px 14px; background: #f9fafb; }
.import-panel .ip-loading {
  padding: 36px 24px; text-align: center;
}
.import-panel .ip-loading p {
  margin: 14px 0 0; color: #475569; font-size: 13px;
}
.import-panel .ip-result-list {
  text-align: left; max-width: 520px; margin: 0 auto;
  background: #f8fafc; padding: 14px 18px; border-radius: 6px;
  font-size: 13px; line-height: 1.9; color: #334155;
}
.import-panel .ip-result-list > div { padding: 2px 0; }
.import-panel.is-slim .el-upload-dragger { padding: 28px 18px; }
.import-panel.is-slim .ip-actions { margin-top: 12px; }

/* ============ v1.40.0 logs.js · Agent trace 视图 ============ */
.trace-goal {
  margin: 12px 0; padding: 10px 14px;
  background: linear-gradient(135deg, #eff6ff 0%, #ecfeff 100%);
  border: 1px solid #93c5fd; border-radius: 8px;
}
.trace-goal-label { font-size: 12px; color: #1e40af; font-weight: 600; margin-bottom: 4px; }
.trace-goal-text { font-size: 13.5px; color: #0c4a6e; line-height: 1.6; }

.trace-final {
  margin: 12px 0; padding: 10px 14px;
  background: #f0fdf4; border: 1px solid #6ee7b7; border-radius: 8px;
}
.trace-final-label { font-size: 12px; color: #065f46; font-weight: 600; margin-bottom: 4px; }
.trace-final pre {
  margin: 0; padding: 0; background: transparent; color: #065f46;
  white-space: pre-wrap; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  font-size: 13px; line-height: 1.7;
}

.trace-steps { margin-top: 16px; }
.trace-steps-title { font-size: 13px; font-weight: 600; color: #334155; margin-bottom: 8px; }
.trace-step {
  margin-bottom: 8px; padding: 10px 14px;
  background: #fff; border: 1px solid #e2e8f0; border-radius: 8px;
  font-size: 12.5px;
}
.trace-step.kind-error { border-color: #fca5a5; background: #fef2f2; }
.trace-step.kind-final { border-color: #6ee7b7; background: #f0fdf4; }
.trace-step.kind-adopt { border-color: #f97316; background: #fff7ed; }
.trace-step.kind-tool_call { border-color: #93c5fd; }
.trace-step.kind-tool_result { border-color: #6ee7b7; }
.trace-step-head {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.trace-step-no {
  display: inline-block; padding: 1px 7px; background: #f1f5f9;
  border-radius: 10px; font-family: monospace; color: #475569; font-size: 11px;
}
.trace-step-head code {
  color: #1e40af; background: #f1f5f9; padding: 1px 6px;
  border-radius: 4px; font-family: ui-monospace, "Cascadia Mono", monospace;
}
.trace-latency { color: #909399; font-size: 11px; }
.trace-thought {
  margin-top: 6px; padding: 6px 10px; background: #f8fafc;
  border-left: 3px solid #cbd5e1; border-radius: 4px;
  color: #475569; font-size: 12px; line-height: 1.6;
}
.trace-step details {
  margin-top: 6px;
}
.trace-step details > summary {
  cursor: pointer; font-size: 11.5px; color: #64748b; user-select: none;
}
.trace-json {
  margin: 6px 0 0; padding: 8px 10px;
  background: #0f172a; color: #e2e8f0; border-radius: 6px;
  font-family: ui-monospace, "Cascadia Mono", monospace; font-size: 11.5px;
  overflow-x: auto; white-space: pre-wrap; word-break: break-all;
  line-height: 1.5; max-height: 320px; overflow-y: auto;
}
.trace-error {
  margin-top: 6px; padding: 6px 10px; background: #fef2f2;
  color: #991b1b; border-radius: 4px; font-size: 12px;
}

/* ========== v2.1.1 Phase 4 — Evidence 溯源徽章 ========== */
.ev-text { white-space: normal; }
.ev-text.is-block { display: block; line-height: 1.7; }
.ev-text .ev-plain { white-space: inherit; }
.ev-text .ev-empty { color: #9ca3af; }
.ev-link {
  display: inline-flex; align-items: center;
  margin: 0 2px; padding: 0 6px; height: 18px;
  font-size: 11px; font-weight: 600;
  color: #2563eb; background: #eef2ff;
  border: 1px solid #c7d2fe; border-radius: 4px;
  cursor: pointer; text-decoration: none;
  font-family: ui-monospace, "Cascadia Mono", "Menlo", monospace;
  transition: all 0.15s ease;
  user-select: none; vertical-align: baseline;
  line-height: 1;
}
.ev-link:hover {
  background: #dbeafe; border-color: #93c5fd; color: #1d4ed8;
  transform: translateY(-1px); box-shadow: 0 1px 3px rgba(37, 99, 235, 0.2);
}
.ev-link:active { transform: translateY(0); }
/* 嵌在 el-tag / 警告行里时强化可读性 */
.row-warn .ev-link { background: #fff7ed; border-color: #fdba74; color: #c2410c; }
.row-warn .ev-link:hover { background: #fed7aa; color: #9a3412; }
.row-err  .ev-link { background: #fef2f2; border-color: #fca5a5; color: #b91c1c; }
.row-err  .ev-link:hover { background: #fee2e2; color: #991b1b; }

/* Popover 内容 */
.ev-pop-wrap.el-popover { padding: 0 !important; }
.ev-pop {
  font-size: 12px; line-height: 1.55; color: #1f2937;
  padding: 12px 14px;
}
.ev-pop-h {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px;
  padding-bottom: 8px; margin-bottom: 8px;
  border-bottom: 1px solid #f1f5f9;
}
.ev-pop-num { font-weight: 600; color: #2563eb; }
.ev-pop-kind { flex-shrink: 0; }
.ev-pop-snippet {
  padding: 8px 10px; margin-bottom: 8px;
  background: #f8fafc; border-left: 3px solid #60a5fa; border-radius: 3px;
  color: #334155; word-break: break-word; white-space: pre-wrap;
}
.ev-pop-fields {
  max-height: 260px; overflow-y: auto;
  margin-bottom: 8px;
}
.ev-pop-field {
  display: grid; grid-template-columns: 96px 1fr; gap: 8px;
  padding: 4px 0; border-bottom: 1px dashed #f1f5f9;
}
.ev-pop-field:last-child { border-bottom: none; }
.ev-pop-fk { color: #6b7280; font-size: 11.5px; }
.ev-pop-fv { color: #111827; word-break: break-all; }
.ev-pop-meta {
  margin-top: 6px; color: #9ca3af; font-size: 11px;
  font-family: ui-monospace, "Cascadia Mono", monospace;
}
.ev-pop-actions {
  margin-top: 8px; padding-top: 8px;
  border-top: 1px solid #f1f5f9;
  display: flex; justify-content: flex-end;
}
.ev-pop-loading, .ev-pop-err {
  display: flex; align-items: center; gap: 6px;
  padding: 16px 8px; justify-content: center;
  color: #6b7280; font-size: 12px;
}
.ev-pop-err { color: #b91c1c; }

/* ===== v2.2 P-A: 审计调整 AJE 页面 =====
   v2.3.5 紧凑化：page-header 改用全局规则，本页只保留页面级 padding 和空态 */
.page-aje { padding: 0; }
.page-aje .empty-tip { padding: 80px 0; }
.page-aje .page-header .hdr-sub {
  font-size: var(--fs-small); color: var(--c-text-muted); font-weight: 400;
  margin-left: 4px;
}
.aje-summary {
  display: flex; gap: 10px; margin-bottom: 14px;
}
.aje-summary .sum-card {
  flex: 1; padding: 10px 14px;
  background: #fff; border: 1px solid #e2e8f0;
  border-radius: 8px; cursor: pointer;
  transition: all 0.15s;
}
.aje-summary .sum-card:hover {
  border-color: #93c5fd;
  box-shadow: 0 4px 12px rgba(15,23,42,0.06);
  transform: translateY(-1px);
}
.aje-summary .sum-card.active {
  border-color: #2563eb;
  background: linear-gradient(135deg, #eff6ff, #dbeafe);
}
.aje-summary .sum-label {
  font-size: 11.5px; color: #64748b; margin-bottom: 4px;
}
.aje-summary .sum-value {
  font-size: 18px; font-weight: 700; color: #1e293b;
}
.aje-summary .sum-value .sum-amt {
  display: block; font-size: 11px; color: #94a3b8;
  font-weight: 400; margin-top: 2px;
}
.aje-summary .sum-card.status-posted .sum-value { color: #15803d; }
.aje-summary .sum-card.status-proposed .sum-value { color: #d97706; }
.aje-summary .sum-card.status-rejected .sum-value,
.aje-summary .sum-card.status-voided .sum-value { color: #94a3b8; }
.page-aje .acct-cell { display: flex; flex-direction: column; line-height: 1.3; }
.page-aje .acct-cell .acct-code {
  font-family: 'SF Mono', Menlo, monospace; font-size: 11.5px; color: #475569;
}
.page-aje .acct-cell .acct-name { font-size: 12px; color: #1e293b; }
.page-aje .dr-cr-row {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.page-aje .aje-trace {
  background: #f8fafc; padding: 10px 14px; border-radius: 6px;
  font-size: 12.5px; line-height: 1.8; color: #475569;
}
.page-aje .aje-trace b { color: #1e293b; margin-right: 4px; }
.page-aje .aje-trace a { color: #2563eb; }

/* v2.3.4 B: AJE 抽屉里的前车之鉴卡片 */
.pitfall-card {
  margin-top: 18px;
  padding: 14px 16px;
  background: linear-gradient(135deg, #fef3c7 0%, #fffbeb 100%);
  border: 1px solid #fcd34d;
  border-radius: 10px;
  box-shadow: 0 2px 8px rgba(251, 191, 36, 0.15);
}
.pitfall-head {
  font-size: 14px; font-weight: 600; color: #92400e;
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 10px;
}
.pitfall-head .el-icon { color: #d97706; font-size: 18px; }
.pitfall-head .muted { color: #a16207; font-weight: 400; margin-left: auto; }
.pitfall-list { display: flex; flex-direction: column; gap: 8px; }
.pitfall-item {
  background: #ffffff;
  border-left: 3px solid #f59e0b;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.6;
}
.pitfall-item.sev-high { border-left-color: #dc2626; background: #fef2f2; }
.pitfall-item.sev-medium { border-left-color: #f59e0b; background: #fffbeb; }
.pitfall-item.sev-low { border-left-color: #10b981; background: #f0fdf4; }
.pf-head {
  display: flex; align-items: center; gap: 8px; margin-bottom: 4px;
  font-weight: 500; color: #1e293b;
}
.pf-subj { font-size: 13px; }
.pf-hit { font-size: 11px; }
.pf-body { color: #475569; }
.pf-correct {
  margin-top: 6px; padding: 6px 8px;
  background: rgba(16, 185, 129, 0.08); border-radius: 4px;
  color: #047857; font-size: 12.5px;
}
.pf-correct strong { color: #065f46; margin-right: 2px; }
.pf-law { margin-top: 4px; font-style: italic; }

/* AJE 新建/编辑：居中 + 无遮挡幕布 + 紧凑布局
   无 modal 蒙层 → 用更强的投影/描边把浮层从页面里"托"出来。 */
.aje-edit-dialog {
  box-shadow: 0 16px 48px rgba(15, 23, 42, 0.28);
  border: 1px solid #e2e8f0;
  border-radius: 12px;
}
.aje-edit-dialog .el-dialog__header { padding-bottom: 10px; margin-right: 0; }
.aje-edit-dialog .el-dialog__body {
  padding: 12px 20px;
  max-height: 70vh;
  overflow-y: auto;
}
.aje-edit-dialog .el-dialog__footer { padding-top: 10px; }
/* 表单项紧凑：缩小行间距 */
.aje-edit-dialog .el-form-item { margin-bottom: 10px; }
.aje-edit-dialog .dr-cr-row { gap: 8px; margin-bottom: 0; }
.aje-edit-dialog .el-divider--horizontal { margin: 10px 0; }
.aje-edit-dialog .aje-trace { padding: 8px 12px; line-height: 1.7; }
.aje-edit-dialog .pitfall-card { margin-top: 10px; padding: 10px 12px; }
.aje-edit-dialog .pitfall-head { margin-bottom: 8px; }

/* 无遮挡幕布的浮层：去掉 :modal 蒙层后，用更强投影+描边把对话框从页面里"托"出来。
   可复用——任意 el-dialog 加 class="no-mask-dialog" + :modal="false" 即可。 */
.no-mask-dialog {
  box-shadow: 0 16px 48px rgba(15, 23, 42, 0.28);
  border: 1px solid #e2e8f0;
  border-radius: 12px;
}
.pitfall-foot {
  margin-top: 10px; font-size: 11.5px; color: #a16207;
  display: flex; justify-content: space-between; align-items: center;
}
.pitfall-foot a { color: #b45309; text-decoration: underline; margin-left: auto; }

/* v2.3.4 错题本页面 / 风险扫描页面 */
/* v2.3.5 错题本/风险扫描页面：page-head 复用全局 page-header 风格（紧凑化） */
.lessons-page, .risk-page { padding: 0; }
.lessons-page .page-head, .risk-page .page-head {
  display: flex; justify-content: space-between; align-items: center;
  /* v2.3.8: sticky 标题，与 .page-header 一致 */
  padding: 14px 0;
  margin-bottom: 0;
  border-bottom: 1px solid rgba(15, 23, 42, 0.06);
  position: sticky; top: 0; z-index: 5; background: #f4f6fa;
  gap: 14px; flex-wrap: wrap;
}
.lessons-page .page-head::after, .risk-page .page-head::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(42,82,152,0.18) 12%,
    rgba(95,225,255,0.20) 50%, rgba(42,82,152,0.10) 88%, transparent);
  opacity: 0.6; pointer-events: none;
}
.lessons-page h2, .risk-page h2 {
  margin: 0; display: inline-flex; align-items: center; gap: 6px;
  font-size: var(--fs-page-title); font-weight: 600;
  color: var(--c-text-primary); letter-spacing: 0.2px;
}
.lessons-page h2 .el-icon, .risk-page h2 .el-icon {
  width: 22px; height: 22px;
  border-radius: 6px;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--c-brand) 0%, var(--c-brand-light) 100%);
  color: #fff; font-size: 12px;
  box-shadow: 0 1px 3px rgba(42,82,152,0.18);
}
.lessons-page h2 .muted, .risk-page h2 .muted {
  font-size: var(--fs-small); color: var(--c-text-muted); font-weight: 400;
  padding-left: 10px; position: relative;
}
.lessons-page h2 .muted::before, .risk-page h2 .muted::before {
  content: ""; position: absolute; left: 0; top: 50%;
  width: 3px; height: 3px; background: var(--c-text-faint);
  border-radius: 50%; transform: translateY(-50%); opacity: 0.6;
}
@media (max-width: 1100px) {
  .lessons-page h2 .muted, .risk-page h2 .muted { display: none; }
}
.lessons-page .head-tools, .risk-page .head-tools {
  display: flex; gap: 6px; align-items: center;
}

.lesson-stats, .risk-summary {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}
.stat-card, .sum-card {
  background: #ffffff;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 14px 18px;
  text-align: center;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}
.stat-card .num, .sum-card .num {
  font-size: 24px; font-weight: 700; color: #1e293b;
  margin-bottom: 4px;
}
.stat-card .lbl, .sum-card .lbl { font-size: 12px; color: #64748b; }
.stat-card.sev-high, .sum-card.sev-high {
  border-color: #fca5a5; background: #fef2f2;
}
.stat-card.sev-high .num, .sum-card.sev-high .num { color: #dc2626; }
.stat-card.sev-medium, .sum-card.sev-medium {
  border-color: #fcd34d; background: #fffbeb;
}
.stat-card.sev-medium .num, .sum-card.sev-medium .num { color: #d97706; }
.stat-card.sev-low, .sum-card.sev-low {
  border-color: #6ee7b7; background: #f0fdf4;
}
.stat-card.sev-low .num, .sum-card.sev-low .num { color: #059669; }
.stat-card.muted-card, .sum-card.muted-card {
  opacity: 0.7;
}

.lesson-filters, .risk-filters {
  display: flex; gap: 10px; align-items: center;
  margin-bottom: 14px; flex-wrap: wrap;
}
.lesson-expand, .risk-expand {
  padding: 10px 16px;
  font-size: 13px; line-height: 1.8; color: #475569;
}
.lesson-expand strong, .risk-expand strong { color: #1e293b; margin-right: 4px; }
.lesson-expand .meta-row, .rf-meta {
  margin-top: 8px; padding-top: 8px; border-top: 1px dashed #e5e7eb;
  font-size: 11.5px;
}
.cell-2line { line-height: 1.5; }
.cell-2line .small { font-size: 11.5px; }
.lesson-pattern, .rf-title {
  color: #1e293b; line-height: 1.5; max-width: 480px;
}
.hit-hot { color: #ea580c; font-weight: 600; }
.lesson-page-bar { margin-top: 14px; padding: 8px 0; }
.lesson-form { padding: 0 16px; }
.rf-section { margin-bottom: 10px; }
.rf-section strong { display: inline-block; margin-bottom: 2px; }

/* v2.2 P-D: 审定值分解 explain 抽屉 */
.exp-head {
  display: flex; align-items: center; gap: 10px; margin-bottom: 16px;
}
.exp-head .exp-code {
  font-family: 'SF Mono', Menlo, monospace; font-size: 16px; font-weight: 600;
  color: #1e293b;
}
.exp-formula {
  background: #f8fafc; padding: 12px 16px; border-radius: 8px;
  border: 1px solid #e2e8f0;
}
.exp-formula .exp-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 0; font-size: 13px;
}
.exp-formula .exp-row.exp-impact { color: #0369a1; }
.exp-formula .exp-row.exp-total {
  font-size: 14px; padding-top: 8px;
}
.exp-formula .exp-row.exp-total b { color: #0c4a6e; }
.exp-formula .exp-divider {
  height: 1px; background: #cbd5e1; margin: 4px 0;
}
.exp-formula .exp-lbl { color: #475569; }
.exp-formula .exp-val { color: #1e293b; font-weight: 500; }

.exp-aje {
  background: #fffbeb; border-left: 3px solid #f59e0b;
  padding: 8px 12px; margin-bottom: 8px; border-radius: 4px;
  font-size: 12.5px;
}
.exp-aje-head {
  display: flex; justify-content: space-between;
  margin-bottom: 4px;
}
.exp-aje-head b { color: #92400e; }
.exp-aje-desc { color: #475569; margin-bottom: 4px; }
.exp-aje-row {
  font-family: 'SF Mono', Menlo, monospace;
  font-size: 11.5px; color: #6b7280;
}

/* v2.2 P-D.3: 申报表"看公式"小图标 + explain 抽屉 */
.rt-row-no {
  display: inline-flex; align-items: center; gap: 4px;
  cursor: pointer; color: #475569;
}
.rt-row-no:hover { color: #2563eb; }
.rt-row-no .rt-explain-icon {
  opacity: 0; transition: opacity 0.15s;
  font-size: 12px; color: #94a3b8;
}
.rt-row-no:hover .rt-explain-icon { opacity: 1; color: #2563eb; }

/* v2.3.8 页面标题旁"圆圈 i"信息角标（hover 看数据来源等次要信息，省版面） */
.ph-info-i {
  display: inline-flex; align-items: center; justify-content: center;
  width: 15px; height: 15px; border-radius: 50%;
  border: 1px solid #94a3b8; color: #64748b;
  font-size: 10px; font-weight: 700; font-style: italic;
  font-family: Georgia, "Times New Roman", serif;
  cursor: help; vertical-align: middle; margin-left: 2px;
}
.ph-info-i:hover { border-color: #2563eb; color: #2563eb; }

/* v2.3.8 文档式表头（仿官方申报表本身：标号左上 + 居中标题，无外层蓝条） */
.rt-doc-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 10px; padding: 2px 0 0;
}
.rt-doc-code {
  position: relative; display: inline-flex; align-items: flex-start; gap: 1px;
  font-size: 19px; font-weight: 800; letter-spacing: 0.6px;
  font-family: ui-monospace, Menlo, monospace; color: #1f2d3d;
}
.rt-gap-badge {
  font-size: 13px; color: #e6a23c; cursor: help;
  margin-top: -3px;   /* 顶到标号右上角，像上标 */
  animation: rtGapPulse 1.6s ease-in-out infinite;
}
@keyframes rtGapPulse { 0%, 100% { opacity: .5; } 50% { opacity: 1; } }
.rt-doc-tools { display: flex; gap: 8px; align-items: center; flex: 0 0 auto; }
.rt-doc-title {
  text-align: center; font-size: 20px; font-weight: 700; color: #1f2d3d;
  letter-spacing: 2px; line-height: 1.2;
  margin: -22px 0 6px;   /* 与标号(A100000)同处一带、居中坐在表格正上方（仿 PDF 抬头） */
  pointer-events: none;  /* 避免覆盖右侧缩放/标签的点击 */
}
.rt-gap-pop .rt-gap-pop-title {
  font-size: 13px; color: #b45309; font-weight: 600; line-height: 1.6;
  display: flex; gap: 5px; align-items: flex-start;
}
.rt-gap-pop .rt-gap-pop-title .el-icon { color: #e6a23c; margin-top: 2px; flex: 0 0 auto; }
.rt-gap-pop .rt-gap-pop-row { font-size: 12.5px; color: #6b7280; line-height: 1.7; margin-top: 2px; }
.rt-gap-pop .rt-gap-pop-row .muted { color: #9ca3af; }

/* v2.3.8 申报表单层简洁表头（去掉冗余 A/B/C 字母行后，表头更紧凑） */
.wp-detail .el-table__header-wrapper th.el-table__cell {
  background: #eef2f7; color: #1f2d3d; font-weight: 700;
  padding: 7px 0; font-size: 13px;
}
/* v2.6.x 表头按列宽自动换行（>4字不再单行撑宽列），正文式申报表更紧凑 */
.rt-zoom-wrap .el-table__header-wrapper th.el-table__cell .cell {
  white-space: normal; word-break: break-word; line-height: 1.25;
  padding-left: 6px; padding-right: 6px;
}

/* v2.3.8 A100000 主表官方版式：类别合并列 / 节次行 / 跨表引用 */
.rt-cat-label {
  display: block; width: 100%; text-align: center;
  font-weight: 700; color: #1e3a5f; font-size: 12.5px;
  line-height: 1.35; letter-spacing: 1px;
  word-break: break-all;   /* 中文按列宽（≈"类别"两字）横排自然换行：利润/总额/计算 */
}
/* 项目列：按层级缩进（一、二、三 顶格；（一）/减:/加: 一级；1./其中: 二级），仿官方申报表 */
.rt-item-cell { line-height: 1.55; display: inline-block; }
/* v2.6.x 温和阶梯：L1=（一）；L2=1. 让"1"顶在上行（一）的"一"尾部(+2字宽)；L3=其中: 让"其"对齐上行"1.□"后的正文首字"销"(+序号前缀宽≈1.3字) */
.rt-item-cell.rt-indent-0 { padding-left: 0; }
.rt-item-cell.rt-indent-1 { padding-left: 1.6em; }
.rt-item-cell.rt-indent-2 { padding-left: 3.6em; }
.rt-item-cell.rt-indent-3 { padding-left: 4.9em; }
.rt-item-cell.rt-indent-4 { padding-left: 6.9em; }
.rt-item-section { font-weight: 700; color: #0f172a; }
/* 附列资料"其中:"之后无前缀行：等宽隐形"其中："占位，让正文与"其中:"正文严格对齐 */
.rt-fulie-pad { visibility: hidden; }
.el-table .rt-section-row > td { background: #eef4fb !important; }
.rt-form-ref {
  color: #2563eb; cursor: pointer; font-weight: 600;
  text-decoration: none; padding: 0 1px;
  border-bottom: 1px dashed #93c5fd;
}
.rt-form-ref:hover { color: #1d4ed8; border-bottom-color: #1d4ed8; }
.rt-fm-desc {
  padding: 10px 12px; background: #f0f9ff; border-radius: 6px;
  font-size: 13px; color: #075985; margin-bottom: 12px;
}
.rt-fm-code {
  padding: 10px 14px; background: #1e293b; color: #e2e8f0;
  border-radius: 6px; margin-bottom: 12px;
  font-family: 'SF Mono', Menlo, monospace; font-size: 12.5px;
  overflow-x: auto;
}
.rt-fm-code .rt-fm-lbl {
  display: block; font-size: 11px; color: #94a3b8; margin-bottom: 4px;
  font-family: -apple-system, sans-serif;
}
.rt-fm-result h4 {
  margin: 16px 0 8px; font-size: 13px; color: #334155;
}
.rt-fm-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 12px; background: #ecfeff; border-radius: 6px;
  font-size: 14px; color: #155e75;
}
.rt-fm-row b { color: #0c4a6e; font-size: 16px; }
.rt-fm-step {
  display: grid; grid-template-columns: 24px 1fr auto auto; gap: 8px;
  padding: 6px 0; border-bottom: 1px solid #f1f5f9;
  font-size: 12px; align-items: center;
}
.rt-fm-step:last-child { border-bottom: none; }
.rt-fm-step-i { color: #94a3b8; }
.rt-fm-step code {
  background: #f1f5f9; padding: 2px 6px; border-radius: 4px;
  color: #0f172a; font-family: 'SF Mono', Menlo, monospace; font-size: 11.5px;
}
.rt-fm-step-from { color: #64748b; font-size: 11.5px; }
.rt-fm-step b { color: #1e293b; }
.rt-fm-aje {
  display: inline-block; padding: 3px 8px; margin-right: 6px;
  background: #fffbeb; border: 1px solid #fcd34d; border-radius: 4px;
  font-size: 11.5px;
}
.rt-fm-aje a { color: #92400e; }
.rt-fm-tb { display: flex; gap: 4px; flex-wrap: wrap; }

/* v2.2 P-D.1：底稿关联 AJE 区块 */
/* v2.3.5 pass7 AJE 区块字号统一 12.5px */
.wp-aje-section { margin-top: 10px; }
.wp-aje-head {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 6px;
}
.wp-aje-head .wp-aje-title {
  font-size: 12.5px; font-weight: 600; color: #1e293b;
}
.wp-aje-hint {
  font-size: 11px; color: #94a3b8;
}
.wp-aje-list {
  display: flex; flex-direction: column; gap: 8px;
}
.wp-aje-item {
  padding: 10px 14px; background: linear-gradient(135deg, #fffbeb, #fef3c7);
  border-left: 3px solid #f59e0b; border-radius: 4px;
  font-size: 13px;
}
.wp-aje-row1 {
  display: flex; align-items: center; gap: 10px; margin-bottom: 4px;
}
.wp-aje-row1 b { color: #78350f; }
.wp-aje-amt {
  margin-left: auto; font-weight: 600; color: #92400e;
}
.wp-aje-desc { color: #475569; margin-bottom: 4px; }
.wp-aje-acct {
  font-family: 'SF Mono', Menlo, monospace; font-size: 11.5px; color: #64748b;
}
.wp-aje-acct code {
  background: #fef3c7; padding: 1px 4px; border-radius: 3px;
  color: #92400e;
}

/* v2.2 D.2: AJE 批量操作工具栏 */
.aje-batch-bar {
  margin-bottom: 12px;
  background: linear-gradient(135deg, #eff6ff, #dbeafe);
  border: 1px solid #93c5fd;
}
.aje-batch-bar :deep(.el-card__body),
.aje-batch-bar .el-card__body {
  padding: 10px 16px !important;
  display: flex; align-items: center; gap: 12px;
  flex-wrap: wrap;
}
.aje-batch-bar b { color: #1e40af; }

/* v2.2 跨年滚动对话框 */
.rollover-preview {
  margin-top: 14px; padding: 10px;
  background: #f8fafc; border-radius: 6px;
}
.rollover-preview code {
  font-family: 'SF Mono', Menlo, monospace; font-size: 11.5px;
  background: #e2e8f0; padding: 1px 4px; border-radius: 3px;
}

/* v2.1.1-p7：补充上传弹框里"将继承的元数据"预览块 */
.ev-inherit-preview {
  background: #f9fafb;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 10px 14px;
  font-size: 13px;
}
.ev-inherit-preview .row {
  display: flex;
  align-items: baseline;
  padding: 6px 0;
  border-bottom: 1px dashed #e5e7eb;
}
.ev-inherit-preview .row:last-child { border-bottom: none; }
.ev-inherit-preview .k {
  width: 70px;
  color: #6b7280;
  flex-shrink: 0;
  font-size: 12px;
}
.ev-inherit-preview .v {
  color: #111827;
  font-weight: 500;
  word-break: break-all;
  flex: 1;
}

/* ===== v2.1.1-p23：Copilot 消息队列（Cursor 风格非阻塞输入） ===== */
.cp-queue {
  margin: 6px 12px 4px;
  background: linear-gradient(135deg, #eff6ff 0%, #faf5ff 100%);
  border: 1px solid #c7d2fe;
  border-radius: 8px;
  padding: 6px 10px;
  animation: cp-queue-in .18s ease;
  box-shadow: 0 2px 6px rgba(99,102,241,.08);
}
@keyframes cp-queue-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: none; }
}
.cp-queue-head {
  display: flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: #4338ca;
  padding-bottom: 6px;
  margin-bottom: 4px;
  border-bottom: 1px dashed #c7d2fe;
}
.cp-queue-title { font-weight: 600; }
.cp-queue-hint { color: #6b7280; font-weight: normal; flex: 1; }
.cp-queue-hint b { color: #2563eb; font-weight: 700; font-style: normal; }
.cp-queue-clear {
  background: transparent; border: none; cursor: pointer;
  color: #6b7280; font-size: 11px; padding: 2px 8px; border-radius: 4px;
  transition: all .12s;
}
.cp-queue-clear:hover { color: #ef4444; background: #fee2e2; }

.cp-queue-item {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 4px;
  font-size: 12.5px; color: #374151;
}
.cp-queue-item + .cp-queue-item { border-top: 1px dotted #e0e7ff; }
.cp-queue-idx {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border-radius: 50%;
  background: #c7d2fe; color: #4338ca;
  font-size: 10.5px; font-weight: 700;
  flex-shrink: 0;
}
.cp-queue-text {
  flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* v2.3.6 队列项附件指示器 */
.cp-queue-att {
  display: inline-flex; align-items: center; gap: 2px;
  padding: 2px 6px; border-radius: 10px;
  background: rgba(99, 102, 241, 0.12); color: #4338ca;
  font-size: 10.5px; font-weight: 600;
  flex-shrink: 0; cursor: help;
}
.cp-queue-att .el-icon { font-size: 11px; }
.cp-queue-jump, .cp-queue-remove,
.cp-queue-edit, .cp-queue-save, .cp-queue-cancel {
  background: transparent; border: none; cursor: pointer;
  width: 26px; height: 26px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 4px; transition: all .12s;
  flex-shrink: 0;
}
.cp-queue-jump .el-icon, .cp-queue-remove .el-icon,
.cp-queue-edit .el-icon, .cp-queue-save .el-icon, .cp-queue-cancel .el-icon {
  font-size: 15px;
}
.cp-queue-jump { color: #2563eb; }
.cp-queue-jump:hover {
  background: #dbeafe; color: #1e40af;
  transform: translateY(-1px);   /* 向上箭头配向上微移，强化"插队上去"的隐喻 */
}
.cp-queue-remove { color: #9ca3af; }
.cp-queue-remove:hover { background: #fee2e2; color: #dc2626; }

/* v2.2.1 队列项 inline 编辑 — 编辑/保存/取消按钮 + 编辑态文本框 */
.cp-queue-edit { color: #6b7280; }
.cp-queue-edit:hover { background: #fef3c7; color: #b45309; }
.cp-queue-save { color: #16a34a; }
.cp-queue-save:hover { background: #dcfce7; color: #15803d; }
.cp-queue-cancel { color: #9ca3af; }
.cp-queue-cancel:hover { background: #f3f4f6; color: #4b5563; }
.cp-queue-item.is-editing {
  background: linear-gradient(90deg, #fffbeb 0%, #fef9c3 100%);
  border-radius: 6px;
  padding: 6px 8px;
  margin: 2px 0;
}
.cp-queue-item.is-editing + .cp-queue-item { border-top-color: transparent; }
.cp-queue-edit-input {
  flex: 1; min-width: 0;
  padding: 6px 10px;
  font-size: 12.5px; font-family: inherit; line-height: 1.5;
  color: #111827; background: #fff;
  border: 1px solid #fcd34d; border-radius: 6px;
  outline: none; resize: none;
  min-height: 28px; max-height: 120px;
  overflow-y: auto;
}
.cp-queue-edit-input:focus {
  border-color: #f59e0b;
  box-shadow: 0 0 0 2px rgba(245,158,11,0.18);
}

/* hint 里的小图标对齐微调 */
.cp-queue-hint-icon {
  vertical-align: -2px;
  font-size: 12px;
  color: #2563eb;
  margin: 0 1px;
}

/* 发送按钮在 streaming 中（变成"加入队列"按钮）的视觉提示 */
.cp-send.cp-send-queue {
  background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%) !important;
  box-shadow: 0 2px 8px rgba(99,102,241,.35) !important;
}
.cp-send.cp-send-queue:hover {
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%) !important;
}

/* ============================================================ */
/* v2.4 — KB 法规角标 cite-popover                             */
/* ============================================================ */
.cite-wrap { display: inline-flex; align-items: baseline; gap: 4px; vertical-align: baseline; }

/* 角标本体：彩色高亮 [N]，比 [E#N] 更显眼 */
.cite-badge {
  display: inline-block;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1;
  padding: 2px 6px;
  border-radius: 9px;
  cursor: pointer;
  text-decoration: none !important;
  border: 1px solid;
  vertical-align: super;
  margin: 0 2px;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
  user-select: none;
}
.cite-badge:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 6px rgba(0,0,0,.18);
}
.cite-badge:active { transform: translateY(0); }

/* 三色：primary 蓝 (常规法规)、warning 橙 (注意)、danger 红 (不合格依据) */
.cite-badge--primary {
  background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  border-color: #60a5fa;
  color: #1e40af;
}
.cite-badge--primary:hover {
  background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%);
  color: #1e3a8a;
}
.cite-badge--warning {
  background: linear-gradient(135deg, #ffedd5 0%, #fed7aa 100%);
  border-color: #fb923c;
  color: #9a3412;
}
.cite-badge--warning:hover {
  background: linear-gradient(135deg, #fed7aa 0%, #fdba74 100%);
  color: #7c2d12;
}
.cite-badge--danger {
  background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
  border-color: #f87171;
  color: #991b1b;
}
.cite-badge--danger:hover {
  background: linear-gradient(135deg, #fecaca 0%, #fca5a5 100%);
  color: #7f1d1d;
}

/* fallback 纯文本（旧 policy_ref 字符串）灰色小字 */
.cite-fallback,
.cite-fallback-only {
  font-size: 12px;
  color: #64748b;
  margin-left: 4px;
}
.cite-fallback.has-badge { margin-left: 2px; }

/* popover 卡片 */
.cite-pop-wrap { padding: 0 !important; min-width: 320px; }
.cite-pop { padding: 10px 12px; min-width: 300px; min-height: 40px; }
.cite-pop-loading,
.cite-pop-err {
  display: flex; align-items: center; gap: 6px;
  color: #94a3b8; font-size: 13px; padding: 6px 0;
}
.cite-pop-err { color: #b91c1c; }
.cite-pop-h {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 6px;
  font-weight: 600; font-size: 13.5px; color: #0f172a;
}
.cite-pop-doc {
  display: inline-flex; align-items: center; gap: 4px;
  color: #1e40af;
}
.cite-pop-meta {
  font-size: 11.5px; color: #64748b;
  margin-bottom: 6px;
  display: flex; gap: 6px; flex-wrap: wrap;
}
.cite-pop-breadcrumb {
  font-size: 11.5px; color: #475569;
  margin-bottom: 8px;
  display: inline-flex; align-items: center; gap: 4px;
}
.cite-pop-content {
  font-size: 13px; line-height: 1.65; color: #1e293b;
  background: #f8fafc; border-left: 3px solid #60a5fa;
  padding: 8px 10px; border-radius: 4px;
  max-height: 200px; overflow-y: auto;
  white-space: pre-wrap; word-wrap: break-word;
}
.cite-pop-actions {
  margin-top: 8px;
  display: flex; gap: 12px;
  border-top: 1px dashed #e2e8f0;
  padding-top: 6px;
}

/* v2.4 法规条款弹窗（cite-popover 点击跳转后的 MessageBox） */
.cite-detail-box { width: 560px !important; max-width: 90vw; }
.cite-detail-box .el-message-box__header { padding: 14px 16px 6px; }
.cite-detail-box .el-message-box__title { font-size: 15px; color: #1e40af; font-weight: 600; }
.cite-detail-box .el-message-box__content { padding: 6px 16px 14px; }

/* v2.4 底稿详情页 法规依据区块 */
.wp-policy-cite {
  margin-top: 12px;
  padding: 8px 12px;
  background: #f8fafc;
  border-left: 3px solid #60a5fa;
  border-radius: 4px;
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.wp-policy-cite-label { font-weight: 600; color: #1e40af; }

/* ============================================================ */
/* v2.5 Phase-B 区域切换对话框 — 多 target checkbox             */
/* ============================================================ */
.region-target-item {
  padding: 8px 10px;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  background: #fafafa;
  transition: background .15s ease, border-color .15s ease;
}
.region-target-item.is-on {
  background: #eff6ff;
  border-color: #93c5fd;
}
.region-target-label { font-weight: 600; color: #1e293b; }
.region-target-desc {
  margin-left: 24px;
  font-size: 12px;
  color: #64748b;
  line-height: 1.55;
  margin-top: 2px;
}
.region-target-warn {
  margin-left: 24px;
  margin-top: 4px;
  font-size: 12px;
  color: #b45309;
  background: #fffbeb;
  padding: 4px 8px;
  border-radius: 4px;
  border-left: 3px solid #fcd34d;
}

.region-result-notify .el-notification__content {
  white-space: pre-line;
  font-size: 13px;
  line-height: 1.7;
}

/* ============================================================ */
/* v2.3.8 工作台风险评分 7 维度贡献排名                          */
/* ============================================================ */
.risk-dims { margin-top: 4px; }
.risk-dims-head {
  font-size: 13px; font-weight: 600; color: #374151;
  margin-bottom: 8px; display: flex; align-items: baseline; gap: 8px;
}
.risk-dims-head .rd-sub { font-size: 11.5px; font-weight: 400; color: #9ca3af; }

.risk-dim-row {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 0; border-bottom: 1px dashed #eef0f3;
}
.risk-dim-row:last-child { border-bottom: none; }
.risk-dim-row.rd-zero { opacity: 0.5; }

.risk-dim-row .rd-rank {
  flex: none; width: 18px; height: 18px; border-radius: 5px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; color: #fff;
}
.risk-dim-row .rd-rank.rk-top  { background: linear-gradient(135deg,#ef4444,#dc2626); }
.risk-dim-row .rd-rank.rk-norm { background: #cbd5e1; }

.risk-dim-row .rd-icon { flex: none; color: #6b7280; font-size: 14px; }

.risk-dim-row .rd-label {
  flex: none; width: 150px; font-size: 13px; color: #374151;
  display: inline-flex; align-items: center; gap: 5px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.risk-dim-row .rd-value { color: #9ca3af; font-size: 11px; }
.risk-dim-row .rd-info { color: #60a5fa; cursor: help; font-size: 13px; }

.risk-dim-row .rd-bar {
  flex: 1; height: 8px; background: #f1f5f9; border-radius: 5px;
  overflow: hidden; min-width: 40px;
}
.risk-dim-row .rd-bar-fill {
  display: block; height: 100%; border-radius: 5px;
  transition: width .4s ease;
}
.risk-dim-row .rd-score {
  flex: none; width: 56px; text-align: right;
  font-size: 13px; font-weight: 600; color: #dc2626;
}
.risk-dim-row .rd-score.rd-ok { color: #16a34a; font-weight: 400; font-size: 12px; }
.risk-dim-row .rd-go { flex: none; }

/* ============================================================ */
/* v2.3.8 底稿深链定位高亮闪烁（从工作台风险维度下钻而来）         */
/* ============================================================ */
@keyframes wpFlashBg {
  0%, 100% { background: transparent; }
  25%, 70% { background: rgba(245, 158, 11, 0.22); }
}
.wp-cat-block.wp-flash {
  animation: wpFlashBg 0.75s ease-in-out 3;
  border-radius: 6px;
  box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.35);
}
/* v2.3.8 单底稿闪烁：用独立 keyframe 同时脉冲 背景+内描边环，并以高优先级 + !important
   压过 .wp-item.active(选中态)的背景渐变与蓝色描边，否则深链选中后闪烁被盖看不见 */
@keyframes wpItemFlash {
  0%, 100% { background: transparent; box-shadow: inset 0 0 0 2px rgba(245,158,11,0); }
  25%, 70% { background: rgba(245,158,11,0.30); box-shadow: inset 0 0 0 2px rgba(245,158,11,0.95); }
}
.wp-tree .wp-item.wp-flash {
  animation: wpItemFlash 0.7s ease-in-out 3 !important;
  border-radius: 5px;
}

/* v2.3.8 校验深钻定位:目标级别行闪烁(叠加在 row-err/row-warn 之上)
   注意:row-err/row-warn 的 td 背景是 !important，动画的 background 会被它压制（keyframe 里
   的 !important 又被规范忽略）。故改用 box-shadow inset 满铺做"覆盖式高亮"，不受背景 !important 影响。 */
@keyframes chkFlashBg {
  0%, 100% { box-shadow: inset 0 0 0 9999px rgba(245, 158, 11, 0); }
  30%, 65% { box-shadow: inset 0 0 0 9999px rgba(245, 158, 11, 0.42); }
}
.el-table .chk-flash > td { animation: chkFlashBg 0.8s ease-in-out 3; }
.el-table .chk-flash > td:first-child { box-shadow: inset 3px 0 0 0 #ef4444; }

/* v2.3.8 非经营性支出深钻定位:明细账命中凭证行闪烁高亮 */
@keyframes subFlashBg {
  0%, 100% { background: transparent; }
  25%, 70% { background: rgba(239, 68, 68, 0.26); }
}
.el-table .sub-row-flash > td { animation: subFlashBg 0.8s ease-in-out 4; }
.el-table .sub-row-flash td:first-child { border-left: 3px solid #ef4444; }
