/* ============================================================
   组件层：按钮语义、表格、状态标签、角标、空态
   只提供 class，不改 Element Plus 组件默认样式；
   新页面用这些 class，老页面改造时逐步替换。
   ============================================================ */

/* ---- 按钮语义（按后果选类型） ----
   primary  : 页面主操作，每屏最多 1 个
   default  : 次操作（重置、取消、返回、导出）
   danger   : 删除 / 清空 / 反结账等不可逆操作
   confirm  : 流程性确认（打印完成、结账完成、确认入账）
   text     : 表格行内操作 */
.btn-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sp-2);
}

.btn-row {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}

.btn-actions .danger-confirm {
  /* 危险操作统一加二次确认（确认文案由 JS 提供） */
  border-color: var(--c-danger);
  color: var(--c-danger);
}

/* ---- 表格 ---- */
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--fs-sm);
}

.data-table th {
  height: var(--h-thead);
  padding: 0 10px;
  background: var(--c-table-head);
  color: var(--c-text-2);
  font-weight: 600;
  text-align: left;
  white-space: nowrap;
  border-bottom: 1px solid var(--c-border-light);
}

.data-table td {
  height: var(--h-row);      /* 紧凑 36px（已确认） */
  padding: 0 10px;
  border-bottom: 1px solid var(--c-border-lighter);
  color: var(--c-text);
  overflow: hidden;
  text-overflow: ellipsis;
}

.data-table tbody tr:hover td {
  background: var(--c-row-hover);
}

/* 对齐规则：文本左、金额/数量右、日期与状态居中 */
.data-table .col-text { text-align: left; }
.data-table .col-num { text-align: right; font-variant-numeric: tabular-nums; }
.data-table .col-center { text-align: center; }

/* 公司列默认显示简称，悬浮显示全称（全称由 title 属性承载） */
.cell-company {
  cursor: default;
}

.cell-company .short-name {
  color: var(--c-text);
}

/* ---- 状态（三色 + 角标） ---- */
.status-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-sm);
  white-space: nowrap;
}

.status-tag .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex: none;
}

.status-tag.is-unprocessed { color: var(--c-zone-unprocessed); }
.status-tag.is-unprocessed .dot { background: var(--c-zone-unprocessed); }

.status-tag.is-processed { color: var(--c-zone-processed); }
.status-tag.is-processed .dot { background: var(--c-zone-processed); }

.status-tag.is-exempt { color: var(--c-zone-exempt); }
.status-tag.is-exempt .dot { background: var(--c-zone-exempt); }

/* ---- Element Plus 标签的状态三色（模板用 :class="statusTagClass(...)"） ----
   灰=未处理、绿=处理完成、黑=无需处理；中间态与失败态同样是灰，
   具体原因用 title（悬浮）或角标文字表达。高特异性覆盖 el-tag 默认配色。 */
.el-tag.status-unprocessed {
  background: var(--c-bg-page);
  border-color: var(--c-border-light);
  color: var(--c-zone-unprocessed);
}

.el-tag.status-processed {
  background: var(--c-success-light);
  border-color: var(--c-success-tint-2);
  color: var(--c-zone-processed);
}

.el-tag.status-exempt {
  background: var(--c-zone-exempt);
  border-color: var(--c-zone-exempt);
  color: var(--c-white);
}

/* 保留 plain 效果下的可读性（台账单元格使用 effect="plain"） */
.el-tag.status-exempt.el-tag--plain,
.el-tag.status-processed.el-tag--plain,
.el-tag.status-unprocessed.el-tag--plain {
  background: transparent;
}

.el-tag.status-exempt.el-tag--plain {
  color: var(--c-zone-exempt);
  border-color: var(--c-border);
}

/* 角标：中间态 / 失败原因 / 数量 / 反结账留痕 */
.status-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 18px;
  padding: 0 6px;
  font-size: var(--fs-xs);
  color: var(--c-text-3);
  background: var(--c-bg-page);
  border: 1px solid var(--c-border-light);
  border-radius: var(--radius-sm);
  white-space: nowrap;
}

.status-badge.is-failed {
  cursor: help;              /* 悬浮显示失败原因全文 */
}

/* 分类标签（只表达分类，不表达状态） */
.tag-category {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 8px;
  font-size: var(--fs-xs);
  color: var(--c-text-2);
  background: var(--c-bg-page);
  border: 1px solid var(--c-border-light);
  border-radius: var(--radius-sm);
}

/* ---- 空态 / 加载 ---- */
.empty-state {
  padding: 48px 0;
  text-align: center;
  color: var(--c-text-3);
  font-size: var(--fs-sm);
}

.empty-state .hint {
  margin-top: var(--sp-1);
  font-size: var(--fs-xs);
  color: var(--c-text-4);
}

/* ---- 二次确认弹窗（统一宽度两档） ---- */
.confirm-dialog-md { width: 520px; }
.confirm-dialog-lg { width: 720px; }

/* ---- 统计卡片（AI 管理中心等概览区） ---- */
.stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}

.stat-card {
  background: var(--c-white);
  border: 1px solid var(--c-border-light);
  border-radius: var(--radius-base);
  padding: var(--sp-3) var(--sp-4);
}

.stat-card .k { font-size: var(--fs-xs); color: var(--c-text-3); }
.stat-card .v {
  margin-top: 2px;
  font-size: var(--fs-title);
  font-weight: 600;
  line-height: 1.3;
}
.stat-card .hint { margin-top: 2px; font-size: var(--fs-xs); color: var(--c-text-4); }

/* ---- 页内说明行 ---- */
.inline-note {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin-bottom: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--c-text-2);
}

/* 预算输入框（AI 管理中心） */
.budget-input { width: 110px; }
.budget-input-sm { width: 80px; }

/* ---- 左侧导航项的状态圆点（资料类别用） ---- */
.side-nav .nav-item .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex: none;
}

.side-nav .nav-item .nav-count {
  font-size: var(--fs-xs);
  color: var(--c-text-4);
}

/* ---- 保留 el-tabs 的数据逻辑，只隐藏它的表头（改用左侧导航切换） ---- */
.el-tabs.hide-header > .el-tabs__header {
  display: none;
}

/* ---- Element Plus 表格：紧凑 36px + 表头底色 ---- */
.el-table.table-compact .el-table__cell { padding: 6px 0; }
.el-table.table-compact .cell { font-size: var(--fs-sm); line-height: 22px; }
.el-table.table-compact th.el-table__cell { background: var(--c-bg-hover); }

/* ---- 面板头 / 面板说明 / 表单旁注（样板页统一用法） ----
   一个面板 = 标题 + 右侧操作 + 说明 + 内容；标题层级用 panel-title，
   避免页面里再出现裸写的加粗小标题。 */
.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}

.panel-head .panel-title { margin-bottom: 0; }

.panel-hint {
  margin-bottom: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--c-text-3);
  line-height: 1.7;
}

/* AI 管理中心：OCR 引擎下拉宽度 */
.ocr-engine-sel { width: 240px; }

/* AI 管理中心：腾讯 OCR 日/月用量上限输入框宽度 */
.ocr-limit-num { width: 130px; }

/* 隐藏的原生文件选择框（补回单用） */
.file-input-hidden { display: none; }

.form-hint {
  margin-left: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--c-text-3);
}

.block-title {
  margin: var(--sp-3) 0 var(--sp-2);
  font-size: var(--fs-body);
  font-weight: 600;
}

/* ===== 账号公司名单变更（公司管理页） ===== */
.change-alert {
  margin-bottom: var(--sp-2);
}

.change-alert-actions {
  margin-top: var(--sp-1);
  display: flex;
  gap: var(--sp-2);
  align-items: center;
  flex-wrap: wrap;
}

.change-filter {
  width: 130px;
}

.change-dialog-note {
  margin-bottom: var(--sp-2);
}

.change-muted {
  color: var(--c-text-3);
}

.change-badge {
  margin-left: var(--sp-1);
}

.change-sms-input {
  width: 130px;
}

/* ============================================================
   2026-09-21 · 范围提示条与页面四态（从 index.html 内联样式收进组件层）
   ------------------------------------------------------------
   范围提示条：每个页面只出现一条，位置固定在「筛选行下方、工具行上方」。
   四态统一约定：
     加载中  <div class="page-state page-state-loading">加载中…</div>
             （表格优先直接用 v-loading，不再另加文字）
     无数据  表格 #empty 内：<el-empty :description="…"/> +
             <div class="empty-hint">说明当前公司 / 所属期范围</div>
     失败    <div class="page-state page-state-error">说明文案
             <el-button size="small" @click="重新加载">重试</el-button></div>
     无权限  <div class="page-state page-state-perm">没有该页面的查看权限，请联系管理员</div>
   ============================================================ */

/* ---- 范围提示条：当前公司 · 所属期 ---- */
.scope-bar {
  margin: 0 0 var(--sp-3);
  padding: var(--sp-2) var(--sp-3);
  background: var(--c-brand-light);
  border-left: 3px solid var(--c-brand);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  color: var(--c-text-2);
  font-size: var(--fs-sm);
}

.scope-bar .scope-strong { color: var(--c-brand); }
.scope-bar .scope-hint { color: var(--c-text-3); }

/* ---- 表格空态补充说明（保留表头的前提下解释当前范围） ---- */
/* 完税证明页（2026-09-27）：工具栏、税种胶囊、明细展开 */
.tax-cert-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.tax-cert-pills {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.tax-cert-pills .el-tag {
  cursor: pointer;
}

.tax-cert-stat {
  color: var(--c-text-3);
  font-size: 12px;
  margin-left: 4px;
}

.tax-cert-detail {
  padding: 8px 12px 12px 12px;
  background: var(--c-bg-subtle, #fafafa);
}

.tax-cert-detail-head {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--c-text-3);
  margin-bottom: 8px;
}

.tax-cert-diff {
  color: var(--c-danger);
}

.tax-cert-warn {
  color: var(--c-warning);
}

.tax-cert-hit {
  color: var(--c-text-3);
  font-size: 12px;
}

.tax-cert-taxes {
  color: var(--c-brand);
}


/* 完税证明复核/打印（2026-09-27 第二轮） */
.receipt-tax-block {
  margin: 10px 0;
}

.receipt-tax-title {
  font-weight: 600;
  margin: 6px 0;
  color: var(--c-text-2);
}


.tax-cert-select {
  width: 120px;
}

.tax-cert-select-lg {
  width: 130px;
}

.tax-cert-alert {
  margin-bottom: 10px;
}

.tax-cert-table {
  width: 100%;
}

.tax-cert-block {
  margin-top: 12px;
}

.tax-cert-basis {
  margin-top: 4px;
}

.tax-cert-subhead {
  margin-top: 10px;
}

.tax-cert-hint-alert {
  margin-top: 8px;
}

.tax-cert-tag-gap {
  margin-left: 4px;
}

.tax-cert-pager {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}

.tax-print-title {
  text-align: center;
}

.tax-print-num {
  text-align: right;
}


.tax-cert-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 4px 0 10px 0;
}

.tax-cert-columns {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.tax-cert-columns .el-checkbox {
  margin-right: 0;
}

.tax-print-area {
  display: none;
}

@media print {
  body * {
    visibility: hidden;
  }

  #tax-print-area,
  #tax-print-area * {
    visibility: visible;
  }

  #tax-print-area {
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    padding: 0 12mm;
    color: #000;
  }
}

.tax-print-meta {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  font-size: 12px;
  margin: 8px 0;
}

.tax-print-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.tax-print-table th,
.tax-print-table td {
  border: 1px solid #333;
  padding: 4px 6px;
}

.tax-print-total {
  margin-top: 8px;
  font-size: 12px;
  text-align: right;
}
.tax-cert-upload {
  font-size: 13px;
  color: var(--c-text-2);
}

.empty-hint {
  margin-top: 6px;
  color: var(--c-text-3);
  font-size: var(--fs-xs);
  line-height: 1.6;
}

/* ---- 页面状态条 ---- */
.page-state {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: var(--sp-2) var(--sp-3);
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
  margin-bottom: 10px;
}

.page-state-error {
  background: var(--c-danger-light);
  color: var(--c-danger);
  border-left: 3px solid var(--c-danger);
}

.page-state-loading {
  background: var(--c-bg-page);
  color: var(--c-text-2);
  border-left: 3px solid var(--c-border);
}

.page-state-perm {
  background: var(--c-bg-page);
  color: var(--c-text-2);
  border-left: 3px solid var(--c-text-4);
}

/* ============================================================
   2026-09-21 · 范围控制条（全胶囊）：公司 / 所属期 / 打印状态
   ------------------------------------------------------------
   规则：公司与所属期各有一颗胶囊，始终有具体值（没有「全部」）；
   打印状态四选一，有且只有一个选中（默认未打印），点另一个直接切换。
   ============================================================ */

.pillbar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin: 0 0 var(--sp-3);
}

.pillbar .pill-divider {
  width: 1px;
  height: 18px;
  background: var(--c-border-light);
  margin: 0 2px;
}

/* 公司 / 所属期：Element Plus 控件改成胶囊外观 */
.pillbar .pill-select .el-select__wrapper,
.pillbar .pill-select .el-input__wrapper {
  min-height: 30px;
  padding: 0 12px;
  border-radius: 999px;
  box-shadow: 0 0 0 1px var(--c-border-light) inset;
  background: var(--c-white);
  font-size: var(--fs-sm);
}

.pillbar .pill-select .el-select__wrapper:hover,
.pillbar .pill-select .el-input__wrapper:hover {
  box-shadow: 0 0 0 1px var(--c-brand-tint-4) inset;
}

.pillbar .pill-select .el-select__wrapper.is-focused,
.pillbar .pill-select .el-input__wrapper.is-focus {
  box-shadow: 0 0 0 1px var(--c-brand) inset, var(--shadow-focus);
}

.pillbar .pill-company { width: 260px; }
.pillbar .pill-month { width: 150px; }

/* 打印状态胶囊 */
.pill-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 12px;
  border-radius: 999px;
  border: 1px solid var(--c-border-light);
  background: var(--c-white);
  color: var(--c-text-2);
  font-size: var(--fs-sm);
  line-height: 1;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  transition: background .15s ease, border-color .15s ease, color .15s ease;
}

.pill-status:hover { border-color: var(--c-brand-tint-4); color: var(--c-brand); }

.pill-status b {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--c-text);
}

.pill-status .dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex: none;
  background: var(--c-zone-unprocessed);
}

.pill-status[data-status="printed"] .dot { background: var(--c-zone-processed); }
.pill-status[data-status="no_print"] .dot { background: var(--c-zone-exempt); }
.pill-status[data-status="recycle"] .dot { background: var(--c-zone-recycle); }

/* 选中态：该状态语义色填充 + 白字（白字对比度均 ≥ 4.5:1） */
.pill-status.is-on { border-color: transparent; color: var(--c-white); }
.pill-status.is-on b { color: var(--c-white); }
.pill-status.is-on .dot { background: var(--c-white); }
.pill-status.is-on[data-status="unprinted"] { background: var(--c-zone-unprocessed-strong); }
.pill-status.is-on[data-status="printed"] { background: var(--c-zone-processed); }
.pill-status.is-on[data-status="no_print"] { background: var(--c-zone-exempt); }
.pill-status.is-on[data-status="recycle"] { background: var(--c-zone-recycle); }
/* 「全部」：选中时也要有底色，否则白字白底看不到文字 */
.pill-status.is-on[data-status=""] { background: var(--c-brand); }

/* 模块页（资产 / 工资）在胶囊条右侧的小字说明 */
.pillbar .pill-note {
  color: var(--c-text-3);
  font-size: var(--fs-xs);
}



/* ============================================================
   2026-09-21 配色方案 A · 第一批：组件外观统一
   —— 表格表头与行高、标签形状、按钮与输入圆角、弹窗留白。
      状态三色语义（灰=未处理 / 绿=处理完成 / 黑=无需处理）不变。
   ============================================================ */

/* ---- Element Plus 表格：表头加底、行高 42px、悬浮高亮 ---- */
.el-table th.el-table__cell {
  background: var(--c-table-head);
  color: var(--c-text-2);
  font-weight: 600;
  height: var(--h-thead);
}

.el-table td.el-table__cell {
  border-bottom: 1px solid var(--c-border-lighter);
}

.el-table .el-table__row:hover > td.el-table__cell {
  background: var(--c-row-hover);
}

.el-table.table-compact .el-table__cell { padding: 7px 0; }
.el-table.table-compact th.el-table__cell { background: var(--c-table-head); }

/* ---- 标签：统一胶囊形（颜色语义沿用三色，不新增语义） ---- */
.el-tag {
  border-width: 1px;
  border-radius: 999px;
  font-weight: 500;
  padding: 0 9px;
}

/* ---- 按钮与输入：圆角跟随令牌，次级按钮悬停用品牌浅底 ---- */
.el-button { font-weight: 500; }

.el-button--default:hover {
  border-color: var(--c-brand-tint-4);
  color: var(--c-brand);
  background: var(--c-brand-light);
}

.el-input__wrapper.is-focus,
.el-select__wrapper.is-focused,
.el-textarea__inner:focus {
  box-shadow: 0 0 0 1px var(--c-brand) inset, var(--shadow-focus);
}

/* ---- 弹窗与抽屉：留白与标题字重统一 ---- */
.el-dialog__header {
  margin-right: 0;
  padding: 16px 20px 12px;
  border-bottom: 1px solid var(--c-border-lighter);
}

.el-dialog__title { font-size: var(--fs-section); font-weight: 600; }
.el-dialog__body { padding: 16px 20px; }
.el-dialog__footer { padding: 12px 20px 16px; }

/* ---- 回单匹配状态胶囊（与打印状态胶囊同一套外观） ---- */
.pill-status[data-match="total"] .dot { background: var(--c-brand); }
.pill-status[data-match="matched"] .dot { background: var(--c-zone-processed); }
.pill-status[data-match="multi"] .dot { background: var(--c-warning); }
.pill-status[data-match="unmatched"] .dot { background: var(--c-danger); }
.pill-status[data-match="none"] .dot { background: var(--c-zone-unprocessed); }

.pill-status.is-on[data-match="total"] { background: var(--c-brand); }
.pill-status.is-on[data-match="matched"] { background: var(--c-zone-processed); }
.pill-status.is-on[data-match="multi"] { background: var(--c-warning); }
.pill-status.is-on[data-match="unmatched"] { background: var(--c-danger); }
.pill-status.is-on[data-match="none"] { background: var(--c-zone-unprocessed-strong); }

/* ---- 小工具类（新代码用它替代内联样式） ----
   状态列附件标签 / 次要说明文字：顺延标签、上传人、原因等 */
.tag-gap { margin-left: 4px; }
.tag-gap-click { margin-left: 4px; cursor: pointer; }
.muted-text { color: var(--c-text-3); }


/* ===== AI记账页面（2026-09-24）===== */
.vch-sel-company{width:280px}
.vch-file{font-size:12px;max-width:320px}
.vch-sel-doc{width:120px;margin-right:4px}
.vch-in-period{width:130px}
.vch-in-path{width:460px}
.vch-in-half{width:230px}   /* 凭证列表搜索框：比常规筛选框窄一半（2026-09-30） */
.vch-in-lemon{width:420px}
.vch-in-history{width:400px}
.vch-sel-standard{width:190px}
.vch-sel-taxpayer{width:150px}
.vch-num{width:120px}
.vch-mb{margin-bottom:12px}
.vch-mt{margin-top:10px}
.vch-mt-sm{margin-top:8px}
.vch-mt-xs{margin-top:6px}
.vch-hint{color:var(--c-text-3);font-size:12px}
.vch-ml-sm{margin-left:8px}
.vch-ok{color:var(--c-success,#2f9e44);font-size:12px}
.vch-bad{color:var(--c-danger,#d9480f);font-size:12px;font-weight:600}
.vch-warn-line{color:var(--c-warning,#b7791f);font-size:12px}
.vch-in-aux-code{width:96px;margin-right:4px}
.vch-in-aux-name{width:150px}

/* ===== AI记账 · 制单复核：凭证纸版式与资料组（2026-09-27 按批准预览 p2 落实） ===== */
.vch-paper{border:1px solid var(--c-border,#dcdfe6);border-radius:4px;padding:12px 14px;background:var(--c-bg,#fff)}
.vch-paper-head{text-align:center;border-bottom:1px dashed var(--c-border,#dcdfe6);padding-bottom:8px}
.vch-paper-company{font-size:13px;color:var(--c-text-2,#606266)}
.vch-paper-title{font-size:20px;font-weight:600;letter-spacing:6px;margin:4px 0 6px}
.vch-paper-meta{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--c-text-2,#606266)}
.vch-paper-in-date{width:118px}
.vch-paper-in-small{width:64px}
.vch-paper-summary{display:flex;align-items:center;gap:8px;margin-top:8px}
.vch-paper-label{font-size:12px;color:var(--c-text-3,#909399);white-space:nowrap}
.vch-paper-in-summary{flex:1}
.vch-paper-entries{margin-top:8px}
.vch-paper-in-account{width:200px}
.vch-paper-total{display:flex;align-items:center;gap:12px;margin-top:8px;padding-top:6px;border-top:1px solid var(--c-border,#dcdfe6)}
.vch-row-focus{background:var(--c-warning-bg,#fdf6ec)}
.vch-aux-cell{display:flex;gap:4px;align-items:center}
.vch-doc-groups{display:flex;flex-direction:column;gap:8px}
.vch-doc-group{border:1px solid var(--c-border,#dcdfe6);border-radius:4px;padding:6px 8px}
.vch-doc-group-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.vch-doc-group-no{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;
  border-radius:50%;background:var(--c-primary,#409eff);color:#fff;font-size:11px}
.vch-doc-group-title{font-size:13px;font-weight:600}
.vch-doc-row{display:flex;align-items:center;gap:8px;padding:4px 0 0 24px;font-size:12px}
.vch-doc-name{flex:0 1 auto;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ===== AI记账 · 生产凭证页按 p2 设计稿整改（2026-09-27） ===== */
.vch-flex-spacer{flex:1}
.vch-topbar{align-items:center;gap:8px}
.vch-stat-row{display:flex;gap:10px;margin:2px 0 10px;flex-wrap:wrap}
.vch-stat{flex:1 1 170px;min-width:150px;border:1px solid var(--c-border,#dcdfe6);border-radius:6px;
  padding:8px 12px;background:var(--c-bg,#fff)}
.vch-stat .k{font-size:12px;color:var(--c-text-3,#909399)}
.vch-stat .v{font-size:22px;font-weight:600;line-height:1.25;color:var(--c-text-1,#303133)}
.vch-stat .v .u{font-size:13px;font-weight:400;color:var(--c-text-3,#909399);margin-left:2px}
.vch-stat .s{font-size:11.5px;color:var(--c-text-3,#909399);margin-top:2px}
.vch-stat.brand{border-color:var(--c-primary,#409eff)}
.vch-stat.brand .v{color:var(--c-primary,#409eff)}
.vch-stat.ok{border-color:var(--c-success,#67c23a)}
.vch-stat.ok .v{color:var(--c-success,#67c23a)}
.vch-stat.warn{border-color:var(--c-warning,#e6a23c)}
.vch-stat.warn .v{color:var(--c-warning,#e6a23c)}
.vch-issue-box{border:1px solid var(--c-warning,#e6a23c);border-radius:6px;padding:8px 12px;
  background:var(--c-warning-bg,#fdf6ec);margin-bottom:10px}
.vch-issue-head{font-size:12px;color:var(--c-warning,#b7791f);font-weight:600;margin-bottom:4px}
.vch-panel .el-card__header{padding:10px 14px}
.vch-panel-title{font-size:14px;font-weight:600;color:var(--c-text-1,#303133)}
.vch-role-badge{margin-left:6px;height:16px;line-height:14px;padding:0 5px;font-size:11px}
.vch-panel-l{min-height:520px}
.vch-note{font-size:12px;color:var(--c-text-2,#606266);background:var(--c-fill,#f5f7fa);
  border-radius:4px;padding:6px 10px;margin-bottom:8px}
.vch-group-nav{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.vch-group-pick{width:220px}
.vch-groups{display:flex;flex-direction:column;gap:10px;max-height:560px;overflow:auto;padding-right:2px}
.vch-grp{border:1px solid var(--c-border,#dcdfe6);border-radius:6px;padding:6px 8px;background:var(--c-bg,#fff)}
.vch-grp{cursor:pointer}
.vch-grp-current{border-color:var(--c-primary,#409eff);box-shadow:0 0 0 1px var(--c-primary-bg,#ecf5ff) inset}
.vch-grp-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.vch-grp-no{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;
  border-radius:50%;background:var(--c-primary,#409eff);color:#ffffff;font-size:11px}
.vch-grp-title{font-size:13px;font-weight:600;color:var(--c-text-1,#303133)}
.vch-grp-meta{font-size:11.5px;color:var(--c-text-3,#909399)}
.vch-tag{display:inline-block;font-size:11.5px;line-height:18px;padding:0 6px;border-radius:3px;
  border:1px solid var(--c-border,#dcdfe6);color:var(--c-text-2,#606266);background:var(--c-bg,#fff)}
.vch-tag-ok{border-color:var(--c-success,#67c23a);color:var(--c-success,#67c23a);background:var(--c-success-bg,#f0f9eb)}
.vch-tag-warn{border-color:var(--c-warning,#e6a23c);color:var(--c-warning,#b7791f);background:var(--c-warning-bg,#fdf6ec)}
.vch-tag-brand{border-color:var(--c-primary,#409eff);color:var(--c-primary,#409eff);background:var(--c-primary-bg,#ecf5ff);
  font-size:11.5px;line-height:18px;padding:0 6px;border-radius:3px}
.vch-doc{display:flex;gap:8px;padding:6px 0 4px 22px;border-top:1px dashed var(--c-border,#e4e7ed)}
.vch-doc-alert{background:var(--c-warning-bg,#fdf6ec);border-radius:4px}
.vch-doc-pg{flex:0 0 62px;font-size:11.5px;color:var(--c-text-3,#909399);padding-top:2px}
.vch-doc-body{flex:1;min-width:0}
.vch-doc-l1{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12.5px}
.vch-doc-name{font-weight:600;color:var(--c-text-1,#303133);max-width:230px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.vch-doc-amt{margin-left:auto;font-weight:600;color:var(--c-text-1,#303133)}
.vch-doc-op{padding:0}
.vch-doc-l2{font-size:11.5px;color:var(--c-text-3,#909399);margin-top:2px}
/* 原始凭证直接内嵌常显：一组多张纵向排开、各自可滚动，点"打开"才放大 */
.vch-doc-pdf-wrap{margin-top:6px}
.vch-doc-pdf{width:100%;height:260px;border:1px solid var(--c-border,#dcdfe6);border-radius:4px;background:#fff}
.vch-doc-pdf-empty{height:64px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--c-text-3,#909399);border:1px dashed var(--c-border,#dcdfe6);border-radius:4px}
/* 原件区只留缩放按钮：PDF 默认尽量占满，长内容自动滚动 */
.vch-grp-zoom{margin-left:auto;display:flex;align-items:center}
.login-sep{margin:0 8px}
.login-code-box{text-align:center;padding:4px 0 12px}
.login-code-emoji{font-size:34px}
.login-trust{margin-bottom:14px}
.vch-grp-zoom .el-button{font-weight:700;line-height:1;padding:0 6px}
/* 预览高度在原基础上提高 1/3：(100vh-360px)*4/3 = 133vh-480px，并给上下限兜底 */
.vch-doc-pdf-wrap{height:clamp(360px, calc(133vh - 480px), 1200px);overflow:auto}
.vch-doc-pdf-stage{position:relative}
.vch-doc-pdf-frame{border:0;border-radius:0;display:block}
/* 顶部统一动作条：预览区只负责看与选，操作都在上面 */
.vch-desk-bar{position:sticky;top:0;z-index:3;background:#fff;border-bottom:1px solid var(--c-border,#ebeef5);padding:6px 0}
.vch-doc{cursor:pointer}
.vch-doc-sel{border-color:var(--c-primary,#409eff);box-shadow:0 0 0 1px var(--c-primary,#409eff) inset}
.vch-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--c-text-3,#909399);margin-top:8px}
.vch-lg-gray{color:var(--c-text-3,#909399)}
.vch-lg-ok{color:var(--c-success,#67c23a)}
.vch-lg-warn{color:var(--c-warning,#b7791f)}

.vs-sheet{border:1px solid var(--c-border,#dcdfe6);border-radius:4px;padding:10px 12px;background:var(--c-bg,#fff)}
.vs-title{text-align:center;font-size:19px;font-weight:600;letter-spacing:6px;margin-bottom:6px}
.vs-sub{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;
  color:var(--c-text-2,#606266);border-bottom:1px solid var(--c-border,#dcdfe6);padding-bottom:6px}
.vs-company{font-weight:600;color:var(--c-text-1,#303133)}
.vs-table{width:100%;border-collapse:collapse;margin-top:6px;table-layout:fixed}
.vs-col-no{width:6%}
.vs-col-summary{width:26%}
/* 柠檬云把科目与辅助放在同一列（asub）：这里同宽后再靠自动换行撑住长名字 */
.vs-col-account{width:44%}
.vs-col-amount{width:12%}
.vs-no{text-align:center;color:var(--c-text-3,#909399)}
.vs-aux-inline{margin-top:4px}
.vs-aux-inline .el-select{width:100%}
/* 长科目名/辅助名自动换行，不再截断或溢出 */
.vs-table td,.vs-table th{white-space:normal;word-break:break-word;overflow-wrap:anywhere}
.vs-table .el-select__placeholder,.vs-table .el-select__selected-item{white-space:normal}
.vs-table th,.vs-table td{border:1px solid var(--c-border,#dcdfe6);padding:4px 6px;font-size:12px;
  vertical-align:middle;word-break:break-all}
.vs-table th{background:var(--c-fill,#f5f7fa);font-weight:600;color:var(--c-text-2,#606266)}
.vs-table .vs-num{text-align:right}
.vs-account{width:100%}
.vs-code{font-size:11px;color:var(--c-text-3,#909399);margin-top:2px}
.vs-src{margin-left:6px;padding:0 4px;border:1px solid var(--c-border,#e4e7ed);border-radius:3px}
.vs-aux{font-size:11.5px;color:var(--c-text-2,#606266)}
.vs-amount{text-align:right}
.vs-total td{background:var(--c-fill,#f5f7fa);font-weight:600}
.vs-foot{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:12px;
  color:var(--c-text-2,#606266);margin-top:8px}
.vs-foot-note{margin-left:auto;font-size:11.5px;color:var(--c-text-3,#909399)}
.vch-aux-wrap{margin-top:8px}
.vch-desk-cols{display:flex;gap:12px;margin-top:12px;flex-wrap:wrap}
.vch-desk-box{flex:1 1 300px;min-width:280px;border:1px solid var(--c-border,#dcdfe6);
  border-radius:6px;padding:8px 10px;background:var(--c-bg,#fff)}
.vch-desk-box-head{display:flex;justify-content:space-between;align-items:center;font-size:13px;
  font-weight:600;color:var(--c-text-1,#303133);margin-bottom:6px}
.vch-chips{display:flex;gap:6px;flex-wrap:wrap}
.vch-chip{display:inline-block;font-size:11.5px;line-height:18px;padding:1px 7px;border-radius:3px;
  border:1px solid var(--c-primary,#409eff);color:var(--c-primary,#409eff);background:var(--c-primary-bg,#ecf5ff)}
.vch-chip-warn{border-color:var(--c-warning,#e6a23c);color:var(--c-warning,#b7791f);background:var(--c-warning-bg,#fdf6ec)}
.vch-checklist{display:flex;flex-direction:column;gap:4px;font-size:12px}
.vch-check{cursor:pointer}
.vch-check-ok{color:var(--c-success,#2f9e44)}
.vch-check-warn{color:var(--c-warning,#b7791f)}
.vch-check-bad{color:var(--c-danger,#d9480f);font-weight:600}
.vch-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
.vch-kv{font-size:12.5px;color:var(--c-text-2,#606266);display:flex;flex-direction:column;gap:4px}
.vch-steps{display:flex;flex-direction:column;gap:6px}
.vch-step{display:block;font-size:12px;padding:4px 8px;border-radius:4px;
  border:1px solid var(--c-border,#dcdfe6);color:var(--c-text-2,#606266)}
.vch-step.on{border-color:var(--c-primary,#409eff);color:var(--c-primary,#409eff);background:var(--c-primary-bg,#ecf5ff)}
.vch-mono{font-family:Consolas,Menlo,monospace;font-size:11.5px;word-break:break-all}
.vch-xl{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11.5px}
.vch-xl th,.vch-xl td{border:1px solid var(--c-border,#dcdfe6);padding:3px 5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vch-xl th{background:var(--c-fill,#f5f7fa);font-weight:600;color:var(--c-text-2,#606266)}
.vch-xl tbody tr:nth-child(even){background:var(--c-fill,#fafafa)}
.vch-xl-hide{display:none}
.vch-sheet-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.vch-sheet-tab{font-size:11.5px;padding:3px 9px;border:1px solid var(--c-border,#dcdfe6);
  border-radius:3px;cursor:pointer;color:var(--c-text-2,#606266);background:var(--c-bg,#fff)}
.vch-sheet-tab.on{border-color:var(--c-primary,#409eff);color:var(--c-primary,#409eff);
  background:var(--c-primary-bg,#ecf5ff);font-weight:600}
.vch-export-actions{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.vch-export-actions .el-button{margin-left:0}

/* ============================================================
   AI记账三页重设计（2026-09-28）：设置 / 记账复核 / 打印凭证
   全部选择器以 .aiacc-workspace 打头：只影响本模块，不动其他页面
   颜色只用 tokens.css 的设计令牌（主色 = 系统 primary 蓝）
   ============================================================ */
.aiacc-workspace .aiacc-spacer{flex:1 1 auto}
.aiacc-workspace .aiacc-muted{font-size:12px;color:var(--c-text-3,#909399)}
.aiacc-workspace .aiacc-hint{font-size:12px;color:var(--c-text-3,#909399);line-height:1.6}
.aiacc-workspace .aiacc-mt{margin-top:10px}
.aiacc-workspace .aiacc-mb{margin-bottom:10px}
.aiacc-workspace .aiacc-ml{margin-left:8px}

/* ---- 共用上下文（公司与所属期只有一套）---- */
.aiacc-workspace .aiacc-ctx{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;
  background:var(--c-white,#fff);border:1px solid var(--c-border-light,#e2e7f0);border-radius:6px;margin-bottom:10px}
.aiacc-workspace .aiacc-chips{display:flex;gap:6px;flex-wrap:wrap}
.aiacc-workspace .aiacc-chip{font-size:12px;padding:3px 10px;border-radius:12px;cursor:pointer;
  border:1px solid var(--c-border,#d3dae6);color:var(--c-text-2,#606266);background:var(--c-white,#fff)}
.aiacc-workspace .aiacc-chip.on{border-color:var(--c-brand,#1e5fd1);color:var(--c-brand,#1e5fd1);
  background:var(--c-brand-light,#eff4ff);font-weight:600}

/* ---- AI 记账页（原始凭证 → 一键生成 → 进度）：2026-09-29 ---- */
.aiacc-workspace .aiacc-home{display:flex;flex-direction:column;padding:12px 14px}
.aiacc-workspace .aiacc-home-title{font-size:16px;margin:0 10px 0 0;color:var(--c-text,#303133)}
.aiacc-workspace .aiacc-progress{display:flex;align-items:center;gap:10px}
.aiacc-workspace .aiacc-bar-track{flex:1 1 auto;min-width:220px;height:10px;border-radius:6px;
  background:var(--c-border-light,#e8eef2);overflow:hidden}
.aiacc-workspace .aiacc-bar-track > span{display:block;height:100%;
  background:linear-gradient(90deg,#1aa084,#43b79c);transition:width .25s}
.aiacc-workspace .aiacc-log{max-height:66px;overflow:auto;font-size:12px;line-height:1.8;
  color:var(--c-text-3,#7d8b95);background:var(--c-bg-page,#fafcfd);
  border:1px solid var(--c-border-lighter,#eef2f4);border-radius:6px;padding:8px 10px}

/* ---- 设置页 ---- */
.aiacc-workspace .aiacc-settings{max-width:1040px;margin:0 auto;display:flex;flex-direction:column;gap:12px}
.aiacc-workspace .aiacc-card .el-card__header{display:flex;align-items:center;gap:8px}
.aiacc-workspace .aiacc-card-title{font-weight:600;color:var(--c-text,#303133)}
.aiacc-workspace .aiacc-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px}
.aiacc-workspace .aiacc-field label{display:block;font-size:12px;color:var(--c-text-3,#909399);margin-bottom:6px}
.aiacc-workspace .aiacc-full{width:100%}
.aiacc-workspace .aiacc-tpl{display:flex;align-items:center;gap:12px}
.aiacc-workspace .aiacc-tpl-icon{width:44px;height:48px;border-radius:5px;background:var(--c-brand-light,#eff4ff);
  color:var(--c-brand,#1e5fd1);font-weight:700;display:flex;align-items:center;justify-content:center}
.aiacc-workspace .aiacc-tpl-upload{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}
/* 拖拽上传：只负责把文件放进待上传列表，仍由原按钮触发解析（2026-10-01） */
.aiacc-workspace .aiacc-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  min-height:88px;margin-top:10px;padding:12px;border:2px dashed var(--c-border-light);border-radius:8px;
  background:var(--c-bg-page);text-align:center;cursor:pointer}
.aiacc-workspace .aiacc-drop:hover,.aiacc-workspace .aiacc-drop.is-drag{border-color:var(--c-brand);
  background:var(--c-brand-light)}
.aiacc-workspace .aiacc-drop-t{font-size:13px;font-weight:600;color:var(--c-text)}
.aiacc-workspace .aiacc-drop-s{font-size:11.5px;color:var(--c-text-3)}
.aiacc-workspace .aiacc-drop > span{pointer-events:none}
.aiacc-workspace .vch-file-hidden{display:none}
.aiacc-workspace .aiacc-drive-row{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-top:10px}
.aiacc-workspace .aiacc-picked{display:flex;flex-direction:column;gap:4px;flex:1 1 320px;min-width:260px;
  padding:6px 10px;border:1px dashed var(--c-border-lighter);border-radius:6px;background:var(--c-bg-page)}
.aiacc-workspace .aiacc-picked-row{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--c-text)}
.aiacc-workspace .aiacc-sub{margin-top:10px;padding-top:10px;display:flex;flex-direction:column;gap:8px;
  border-top:1px dashed var(--c-border-light,#e2e7f0)}
.aiacc-workspace .aiacc-sub-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.aiacc-workspace .aiacc-rule{display:flex;align-items:center;gap:14px;padding:10px 0;
  border-bottom:1px solid var(--c-border-lighter,#edf1f7)}
.aiacc-workspace .aiacc-rule:last-child{border-bottom:0}
.aiacc-workspace .aiacc-stat-row{display:flex;gap:10px;flex-wrap:wrap}
.aiacc-workspace .aiacc-stat{flex:1 1 160px;border:1px solid var(--c-border-light,#e2e7f0);
  border-radius:6px;padding:8px 10px}
.aiacc-workspace .aiacc-stat .k{font-size:12px;color:var(--c-text-3,#909399)}
.aiacc-workspace .aiacc-stat .v{font-size:20px;font-weight:600;color:var(--c-text,#303133)}
.aiacc-workspace .aiacc-stat .s{font-size:11.5px;color:var(--c-text-3,#909399)}

/* ---- 记账复核页：左原件1/2 / 右凭证1/2 ---- */
.aiacc-workspace .aiacc-review{display:flex;flex-direction:column;gap:10px}
.aiacc-workspace .aiacc-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.aiacc-workspace .aiacc-split{display:grid;grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);gap:12px;align-items:stretch}
.aiacc-workspace .aiacc-pane{border:1px solid var(--c-border-light,#e2e7f0);border-radius:6px;
  background:var(--c-white,#fff);display:flex;flex-direction:column;min-width:0}
.aiacc-workspace .aiacc-pane-head{display:flex;align-items:center;gap:8px;padding:8px 10px;
  border-bottom:1px solid var(--c-border-lighter,#edf1f7);flex-wrap:wrap}
.aiacc-workspace .aiacc-doc-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:8px 10px 0}
.aiacc-workspace .aiacc-doc-tab{font-size:12px;padding:3px 9px;border-radius:4px;cursor:pointer;
  border:1px solid var(--c-border,#d3dae6);color:var(--c-text-2,#606266);background:var(--c-white,#fff)}
.aiacc-workspace .aiacc-doc-tab.on{border-color:var(--c-brand,#1e5fd1);color:var(--c-brand,#1e5fd1);
  background:var(--c-brand-light,#eff4ff);font-weight:600}
.aiacc-workspace .aiacc-pane-right{order:2}
.aiacc-workspace .aiacc-pane-left{order:1}
.aiacc-workspace .aiacc-split > .aiacc-pane{height:max(585px, calc(150vh - 495px))}
.aiacc-workspace .aiacc-doc-view{flex:1 1 0;min-height:0;overflow:auto;
  padding:10px;background:var(--c-bg-page,#f1f4f9)}
.aiacc-workspace .aiacc-doc-empty{display:flex;align-items:center;justify-content:center;height:100%}
.aiacc-workspace .aiacc-doc-foot{display:flex;align-items:center;gap:8px;padding:8px 10px;flex-wrap:wrap;
  border-top:1px solid var(--c-border-lighter,#edf1f7)}
.aiacc-workspace .aiacc-doc-sep{width:1px;height:18px;background:var(--c-border-light,#e2e7f0)}
.aiacc-workspace .aiacc-page-stage{display:flex;align-items:center;justify-content:center;min-width:100%;min-height:100%;width:max-content;height:max-content}
.aiacc-workspace .aiacc-page-image{display:block;flex:none;max-width:none;max-height:none;object-fit:contain;background:var(--c-white);box-shadow:0 0 0 1px var(--c-border)}
.aiacc-workspace .aiacc-paper-wrap{flex:1 1 0;min-height:0;overflow:auto;padding:10px}
.aiacc-workspace .aiacc-pane-empty{flex:1 1 auto;display:flex;align-items:center;justify-content:center;min-height:300px}
.aiacc-workspace .aiacc-paper-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.aiacc-workspace .aiacc-blank-hint{color:var(--c-text-4,#c0c4cc);font-size:11.5px;background:var(--c-bg-hover,#f7f9fd)}
.aiacc-workspace .vs-blank-row td{height:34px}
.aiacc-workspace .aiacc-foot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;
  border:1px solid var(--c-border-light,#e2e7f0);border-radius:6px;background:var(--c-white,#fff)}

/* ---- 柠檬云式大单元格：多行摘要 / 完整科目 / 整笔输入、按位显示 ---- */
.aiacc-workspace .aiacc-paper{padding:14px 10px}
.aiacc-workspace .aiacc-paper .vs-title{font-size:24px;font-weight:500;letter-spacing:6px;margin:2px 0 20px}
.aiacc-workspace .aiacc-paper .vs-sub{display:flex;justify-content:space-between;gap:10px;
  font-size:13px;color:var(--c-text);margin-bottom:12px;padding:0 2px}
.aiacc-workspace .vs-table-ly{border-collapse:collapse;table-layout:fixed}
.aiacc-workspace .vs-table-ly .vs-col-no{width:4%}
.aiacc-workspace .vs-table-ly .vs-col-account{width:32%}
.aiacc-workspace .vs-table-ly .vs-col-digit{width:1.65%}
.aiacc-workspace .vs-table-ly th{height:34px;padding:2px 0;font-weight:500;background:var(--c-table-head)}
.aiacc-workspace .vs-table-ly th.vs-unit{height:24px;padding:0;font-size:11px;font-weight:400;white-space:nowrap;color:var(--c-text-2)}
.aiacc-workspace .vs-table-ly td{height:34px;padding:0;vertical-align:middle;font-size:14px}
.aiacc-workspace .vs-table-ly tr.vs-blank-row td{height:34px}
.aiacc-workspace .vs-summary-input .el-textarea__inner,
.aiacc-workspace .vs-account .el-textarea__inner{min-height:34px!important;padding:6px 8px;resize:none;border:0;border-radius:0;box-shadow:none;background:transparent;font:inherit;line-height:22px;color:var(--c-text);overflow-wrap:anywhere}
.aiacc-workspace .vs-summary-input .el-textarea__inner:focus,
.aiacc-workspace .vs-account .el-textarea__inner:focus{box-shadow:inset 0 0 0 1px var(--c-brand)}
.aiacc-workspace .vs-table-ly .vs-aux-inline{font-size:12px;line-height:20px;padding:0 8px 4px;color:var(--c-text-3);white-space:pre-wrap;overflow-wrap:anywhere}
.aiacc-subject-popover .aiacc-subject-options{max-height:260px;overflow:auto}
.aiacc-subject-popover .aiacc-subject-options button{display:block;width:100%;border:0;background:var(--c-white);color:var(--c-text);text-align:left;white-space:normal;padding:9px 10px;line-height:22px;font:inherit;cursor:pointer}
.aiacc-subject-popover .aiacc-subject-options button[aria-selected="true"],
.aiacc-subject-popover .aiacc-subject-options button:hover{background:var(--c-brand-light);color:var(--c-brand)}
.aiacc-subject-popover .aiacc-subject-empty{padding:12px;color:var(--c-text-3)}
.aiacc-workspace .vs-table-ly .vs-amount-cell{position:relative;padding:0}
.aiacc-workspace .vs-amount-box{position:relative;min-height:34px;display:flex;align-items:center}
.aiacc-workspace .vs-amount-cell{background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 11 - 1px),var(--c-border-lighter) calc(100% / 11 - 1px),var(--c-border-lighter) calc(100% / 11))}
.aiacc-workspace .vs-amount-digits{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));width:100%;align-items:center}
.aiacc-workspace .vs-amount-digits .vs-amt-digit{text-align:center;min-width:0;font:16px Consolas,"Courier New",monospace;line-height:26px}
.aiacc-workspace .vs-amount-input{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0 8px;text-align:right;
  font:18px Consolas,"Courier New",monospace;background:var(--c-white);color:var(--c-text);opacity:0;cursor:text;box-sizing:border-box}
.aiacc-workspace .vs-amount-input:focus{opacity:1;outline:1px solid var(--c-brand);outline-offset:-1px}
.aiacc-workspace .vs-amount-box:focus-within .vs-amount-digits,.aiacc-workspace .vs-amount-box:focus-within .vs-amount-sign{visibility:hidden}
.aiacc-workspace .vs-amount-sign{position:absolute;left:2px;top:8px;color:var(--c-danger);font-size:14px}
.aiacc-workspace .vs-negative .vs-amt-digit{color:var(--c-danger)}
.aiacc-workspace .vs-amount-overflow{width:100%;overflow-wrap:anywhere;text-align:right;padding:4px;font:14px Consolas,monospace;background:var(--c-white)}
.aiacc-workspace .vs-table-ly td.vs-blank-hit{cursor:text}
.aiacc-workspace .vs-table-ly td.vs-blank-hit:hover{background:var(--c-row-hover)}
.aiacc-workspace .vs-table-ly tr.vs-total td{height:46px;font-weight:600;background-color:var(--c-table-head)}
.aiacc-workspace .vs-table-ly tr.vs-total td:first-child{padding:8px}
.aiacc-workspace .vs-table-ly .vs-amt-title{text-align:center}
.aiacc-workspace .vs-table-ly tr.vs-total td{position:sticky;bottom:0;z-index:2}
.aiacc-workspace .vs-table-ly .vs-total-amt{position:relative;padding:0;text-align:right}
.aiacc-workspace .aiacc-paper .vs-foot{display:flex;justify-content:space-between;align-items:center;margin-top:14px;font-size:12px;color:var(--c-text-2)}

/* ---- 打印凭证页：左清单 / 右成套预览 ---- */
.aiacc-workspace .aiacc-print{display:flex;flex-direction:column;gap:10px}
.aiacc-workspace .aiacc-print-split{display:grid;grid-template-columns:290px 1fr;gap:12px}
.aiacc-workspace .aiacc-kit-list{height:calc(100vh - 300px)}
.aiacc-workspace .aiacc-kits{flex:1 1 auto;overflow:auto}
.aiacc-workspace .aiacc-kit{display:flex;gap:8px;padding:9px 10px;cursor:pointer;
  border-bottom:1px solid var(--c-border-lighter,#edf1f7)}
.aiacc-workspace .aiacc-kit:hover{background:var(--c-bg-hover,#f7f9fd)}
.aiacc-workspace .aiacc-kit.on{background:var(--c-brand-light,#eff4ff);box-shadow:inset 3px 0 0 var(--c-brand,#1e5fd1)}
.aiacc-workspace .aiacc-kit.aiacc-kit-off{opacity:.72}
.aiacc-workspace .aiacc-kit-main{min-width:0;flex:1 1 auto}
.aiacc-workspace .aiacc-kit-top{display:flex;align-items:center;gap:8px;justify-content:space-between}
.aiacc-workspace .aiacc-kit-state{font-size:12px;color:var(--c-success,#387e00)}
.aiacc-workspace .aiacc-kit-state.warn{color:var(--c-warning,#9b6300)}
.aiacc-workspace .aiacc-kit-view{min-width:0;height:calc(100vh - 300px)}
.aiacc-workspace .aiacc-kit-canvas{flex:1 1 auto;overflow:auto;position:relative;
  display:flex;align-items:center;justify-content:center;background:var(--c-bg-page,#f1f4f9)}
.aiacc-workspace .aiacc-kit-frame{width:100%;height:100%;border:0;background:var(--c-white,#fff)}

/* ---- 1366 宽及以下：原件/凭证上下排，按钮不被挤压 ---- */
@media (max-width:1360px){
  .aiacc-workspace .aiacc-print-split{grid-template-columns:240px 1fr}
  .aiacc-workspace .aiacc-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .aiacc-workspace .aiacc-kit-list,
  .aiacc-workspace .aiacc-kit-view{height:420px}
}

@media (max-width:1100px){
  .aiacc-workspace .aiacc-split{grid-template-columns:1fr}
  .aiacc-workspace .aiacc-split > .aiacc-pane{height:900px}
}

/* 元 / 角之间的分界贯穿表头、分录、空行和合计，不改变金额格的宽度。 */
.aiacc-workspace .vs-table-ly .vs-decimal-start{border-left:1px solid var(--c-danger-tint-4)}
.aiacc-workspace .vs-amount-cell::after,.aiacc-workspace .vs-total-amt::after{content:"";position:absolute;left:calc(100% * 9 / 11);top:0;bottom:0;border-left:1px solid var(--c-danger-tint-4);pointer-events:none}
.sys-maintenance-banner{
  display:flex;align-items:center;gap:10px;margin-bottom:14px;padding:11px 14px;
  border:1px solid var(--c-warning-tint-4);border-radius:8px;
  background:var(--c-warning-light);color:var(--c-warning-strong);
  font-size:13px;line-height:1.6
}
.sys-maintenance-dot{
  width:8px;height:8px;border-radius:50%;background:var(--c-warning);
  box-shadow:0 0 0 4px var(--c-warning-tint-2);flex:0 0 auto
}
.sys-update-page .page-actions{align-items:center}
.sys-update-card{margin-bottom:14px}
.sys-update-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px
}
.sys-update-field{display:flex;flex-direction:column;gap:5px;min-width:0}
.sys-update-field span{font-size:12px;color:var(--c-text-3)}
.sys-update-field b{
  color:var(--c-text);font-size:14px;font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.sys-update-target{
  margin:2px 0 12px;padding:9px 12px;border-radius:7px;
  background:var(--c-brand-light);color:var(--c-text-2);font-size:13px
}
.sys-update-steps{display:flex;flex-direction:column;gap:9px;margin:10px 0 14px}
.sys-update-step{
  display:flex;align-items:center;gap:10px;min-height:28px;color:var(--c-text-3);
  font-size:13px
}
.sys-update-step.is-running{color:var(--c-brand);font-weight:600}
.sys-update-step.is-success{color:var(--c-text-2)}
.sys-update-step.is-failed{color:var(--c-danger)}
.sys-update-step-dot{
  width:21px;height:21px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--c-border);font-size:12px;flex:0 0 auto
}
.sys-update-step.is-success .sys-update-step-dot{
  color:var(--c-success);border-color:var(--c-success-tint-4);
  background:var(--c-success-light)
}
.sys-update-step.is-running .sys-update-step-dot{
  color:var(--c-brand);border-color:var(--c-brand-tint-3);
  background:var(--c-brand-light)
}
.sys-update-step.is-failed .sys-update-step-dot{
  color:var(--c-danger);border-color:var(--c-danger-tint-4);
  background:var(--c-danger-light)
}
.sys-update-step-label{min-width:180px}
.sys-update-step-detail{color:var(--c-text-3);font-size:12px}
.sys-update-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.sys-update-recover{justify-content:flex-start;margin-top:9px}
.sys-update-result{display:flex;gap:14px;align-items:flex-start;padding:8px 0 14px}
.sys-update-result-icon{
  width:44px;height:44px;border-radius:50%;display:grid;place-items:center;
  font-size:24px;font-weight:700;flex:0 0 auto
}
.sys-update-result.is-success .sys-update-result-icon{
  color:var(--c-success);background:var(--c-success-light)
}
.sys-update-result.is-failed .sys-update-result-icon{
  color:var(--c-danger);background:var(--c-danger-light)
}
.sys-update-error{
  margin-top:7px;padding:8px 10px;border-radius:6px;white-space:pre-wrap;
  background:var(--c-danger-light);color:var(--c-danger);font-size:12px
}
.sys-update-alert{margin-bottom:12px}
.sys-update-checking{padding:28px 0;text-align:center;color:var(--c-text-3)}
.sys-update-releases{display:flex;flex-direction:column;gap:10px}
.sys-update-release{
  display:flex;align-items:center;gap:16px;padding:12px 14px;
  border:1px solid var(--c-border-light);border-radius:8px;
  background:var(--c-brand-light)
}
.sys-update-release-main{flex:1;min-width:0}
.sys-update-release-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sys-update-release-title b{font-size:15px;color:var(--c-text)}
.sys-update-release-sub{
  margin-top:5px;color:var(--c-text-2);font-size:12.5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.sys-update-package{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px
}
.sys-update-package-name{
  max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--c-text-3);font-size:12px
}
.sys-update-sha{width:360px;max-width:100%}
.sys-file-input{display:none}
.sys-update-notice{margin-bottom:12px;line-height:1.75;color:var(--c-text-2)}
.sys-update-db-warning{
  margin-top:12px;padding:11px 12px;border:1px solid var(--c-warning-tint-4);
  border-radius:7px;background:var(--c-warning-light);color:var(--c-warning-strong);
  display:flex;flex-direction:column;gap:8px;font-size:13px
}
.sys-update-log{
  max-height:56vh;overflow:auto;margin:0;padding:12px;border-radius:7px;
  background:var(--c-bg-page);color:var(--c-text-2);font-size:12px;
  white-space:pre-wrap;word-break:break-all
}
@media (max-width:1100px){
  .sys-update-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
