/* A1034 Demo 页面样式：在 Tabler 1.6.1（static/vendor/tabler）之上的覆盖层。
   中文排版：系统字体栈、不加 letter-spacing、不用 uppercase、不用斜体。 */
:root {
  --tblr-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial,
    "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", "Source Han Sans SC", sans-serif;
  --tblr-body-font-family: var(--tblr-font-sans-serif);
  --tblr-font-monospace: "SF Mono", Menlo, Consolas, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", monospace;
  --tblr-body-font-size: 0.9375rem;
  --tblr-body-line-height: 1.65;
  /* app.js 与模板里用到的旧变量，映射到 Tabler 色板 */
  --ok: var(--tblr-success); --bad: var(--tblr-danger); --warn: var(--tblr-warning);
  --muted: var(--tblr-secondary); --line: var(--tblr-border-color); --chip: var(--tblr-bg-surface-tertiary);
  --num-font: var(--tblr-font-sans-serif);
}
body { background: var(--tblr-bg-body); letter-spacing: normal; }

/* 中文：复位 Tabler 为拉丁文设计的大写与字距 */
.badge, .table thead th, .ribbon, .status, .subheader, .page-pretitle, .dropdown-header, .hr-text, .datagrid-title {
  letter-spacing: normal; text-transform: none;
}
em { font-style: normal; font-weight: 600; }
.muted { color: var(--tblr-secondary); }
.small { font-size: 0.8125rem; }
.err { color: var(--tblr-danger); }
.prose { max-width: 46em; }
[hidden] { display: none !important; }

/* 顶栏 */
.topbar { background: var(--tblr-bg-surface); border-bottom: 1px solid var(--tblr-border-color); min-height: 3.5rem; }
.topbar-in { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding-top: 8px; padding-bottom: 8px; }
.brand { display: inline-flex; align-items: center; gap: 8px; font-size: 1.0625rem; font-weight: 700; margin: 0; padding: 0; color: var(--tblr-body-color); }
.brand-mark { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 7px; background: var(--tblr-primary); color: #fff; font-size: 0.875rem; font-weight: 700; }
.topbar .tag { font-size: 0.75rem; font-weight: 500; }
.topbar-sub { flex: 1 1 260px; }
.page-body { margin-top: 1rem; margin-bottom: 2.5rem; }

/* 步骤指示 */
.flow-steps .step-item { padding-top: calc(var(--tblr-steps-dot-size) + 6px); padding-inline: 4px; line-height: 1.4; }
.flow-t { display: block; font-size: 0.875rem; }
.flow-d { display: block; font-size: 0.75rem; color: var(--tblr-secondary); font-weight: 400; margin-top: 2px; }
.flow-steps .step-item.active .flow-t { color: var(--tblr-primary); }
.flow-steps .step-item.active ~ .step-item .flow-d { color: var(--tblr-disabled-color); }
@media (max-width: 767.98px) {
  .flow-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 12px; overflow: visible; }
  .flow-steps .step-item::after { display: none; }
  .flow-d { display: none; }
}

/* 访问码页 */
.gate { max-width: 26rem; margin: 3rem auto; }

/* 首页 */
.start-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 1rem; align-items: start; }
@media (max-width: 991.98px) { .start-grid { grid-template-columns: minmax(0, 1fr); } }
.scen-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; }
.scen-grid .form-selectgroup-item { margin: 0; }
.form-selectgroup-boxes .scen { display: flex; align-items: flex-start; gap: 10px; height: 100%; text-align: left; padding: 10px 12px; }
.scen-c { flex: none; padding-top: 3px; }
.scen-b { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.scen-t { color: var(--tblr-body-color); font-weight: 500; line-height: 1.4; }
.scen-k { font-size: 0.75rem; color: var(--tblr-secondary); }
.start-act { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 14px; }
.n-badge { font-variant-numeric: tabular-nums; }
.date-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.tpl-list .list-group-item { padding-left: 0; padding-right: 0; }

/* 报告页：批次 */
.batch-top { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px; }
.batch-id { min-width: 0; flex: 1 1 420px; }
.batch-title { font-size: 1.25rem; margin: 2px 0 4px; }
.batch-st { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 8px; font-weight: 500; }
.batch-st-i { display: inline-flex; align-items: center; gap: 6px; }
.batch-act { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; }
details.inputs > summary { cursor: pointer; color: var(--tblr-primary); font-size: 0.875rem; }

/* 正式稿 / 诊断稿 状态色 */
.st-badge { font-size: 0.75rem; font-weight: 600; padding: 3px 8px; border-radius: 999px; margin: 0; }
.st-pass { background: var(--tblr-success); color: #fff; }
.st-diag { background: var(--tblr-danger); color: #fff; }
.st-ask { background: var(--tblr-primary-lt); color: var(--tblr-primary); }
.rp { border-left: 4px solid transparent; border-bottom-left-radius: var(--tblr-card-inner-border-radius, 6px); }
.rp .tbl-wrap { max-width: 860px; }
.rp-pass { border-left-color: var(--tblr-success); }
.rp-diag { border-left-color: var(--tblr-danger); background: linear-gradient(180deg, rgba(214, 57, 57, .045), transparent 220px); }
.banner-h { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-weight: 600; }
.banner ul { padding-left: 1.25rem; }

/* 标签页（由 app.js 切换 aria-selected） */
.tabs .nav-link { display: inline-flex; align-items: center; gap: 8px; font-size: 0.9375rem; padding: 10px 14px; color: var(--tblr-secondary); }
.tabs .nav-link[aria-selected="true"] { color: var(--tblr-body-color); font-weight: 600; border-color: var(--tblr-border-color) var(--tblr-border-color) var(--tblr-bg-surface); background: var(--tblr-bg-surface); box-shadow: inset 0 3px 0 var(--tblr-primary); }
@media (max-width: 575.98px) {
  .tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .tabs .nav-link { flex-direction: column; gap: 4px; padding: 8px 4px; font-size: 0.8125rem; text-align: center; line-height: 1.3; }
}

/* 章节标题 */
.sec-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin: 22px 0 8px; }
.sec-h:first-of-type { margin-top: 6px; }
.sec-h h3 { font-size: 1rem; margin: 0; }

/* 指标卡（button.card，data-ev 由 app.js 读取） */
.metric-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
.metric { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; margin: 0; padding: 12px 14px; text-align: left; font: inherit; color: var(--tblr-body-color); cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .15s; }
.metric:hover, .metric:focus-visible { border-color: var(--tblr-primary); box-shadow: 0 4px 14px rgba(32, 107, 196, .14); outline: none; transform: translateY(-1px); }
.metric .k { font-size: 0.8125rem; color: var(--tblr-secondary); line-height: 1.4; }
.metric .v { font-size: 1.625rem; font-weight: 700; line-height: 1.25; font-variant-numeric: tabular-nums; }
.metric .u { font-size: 0.8125rem; font-weight: 400; color: var(--tblr-secondary); }
.metric .ev-hint { font-size: 0.75rem; color: var(--tblr-primary); margin-top: 4px; }
@media (max-width: 575.98px) {
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .metric .v { font-size: 1.375rem; }
}

/* 表格 */
.tbl-wrap { overflow-x: auto; border: 1px solid var(--tblr-border-color); border-radius: var(--tblr-border-radius); }
.tbl-wrap .table { margin: 0; }
.table th, .table td { white-space: nowrap; }
.table thead th { font-size: 0.75rem; font-weight: 600; color: var(--tblr-secondary); background: var(--tblr-bg-surface-tertiary); }
td.n, th.n { text-align: right; font-variant-numeric: tabular-nums; }
tr.click { cursor: pointer; }
tr.diff-row td { background: rgba(214, 57, 57, .07); font-weight: 600; }
.hash { font-family: var(--tblr-font-monospace); font-size: 0.75rem; overflow-wrap: anywhere; }
code.n { font-family: var(--num-font); font-variant-numeric: tabular-nums; white-space: nowrap; background: var(--chip); color: inherit; padding: 0 3px; border-radius: 3px; font-size: 0.8125rem; }
.plain-list { padding-left: 1.25rem; margin-bottom: 0.5rem; }

/* 空态 */
.empty-mini { display: flex; align-items: center; gap: 8px; padding: 12px 14px; border: 1px dashed var(--tblr-border-color); border-radius: var(--tblr-border-radius); color: var(--tblr-secondary); background: var(--tblr-bg-surface-secondary); }
.empty-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--tblr-border-color-dark, #c5ccd6); flex: none; }
.sentences:empty::before { content: "尚未生成摘要。点「生成摘要」后，这里逐句显示核验结果。"; display: block; padding: 12px 14px; border: 1px dashed var(--tblr-border-color); border-radius: var(--tblr-border-radius); color: var(--tblr-secondary); background: var(--tblr-bg-surface-secondary); font-size: 0.8125rem; }
.asklist:empty::before { content: "还没有提问。输入问题或点上方示例，再点「问数」。"; display: block; margin-top: 14px; padding: 12px 14px; border: 1px dashed var(--tblr-border-color); border-radius: var(--tblr-border-radius); color: var(--tblr-secondary); background: var(--tblr-bg-surface-secondary); font-size: 0.8125rem; }

/* 加载态：按钮禁用时转圈（app.js 在调用期间禁用 .gen / .go），状态行前加指示点 */
.btn.gen:disabled, .btn.go:disabled { position: relative; color: transparent !important; opacity: .85; }
.btn.gen:disabled::after, .btn.go:disabled::after { content: ""; position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border: 2px solid rgba(255, 255, 255, .5); border-top-color: #fff; border-radius: 50%; animation: spin .7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.status-line { margin: 10px 0 6px; font-size: 0.875rem; }
.status-line:empty { display: none; }
.status-line.muted:not(:empty)::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 8px; border-radius: 50%; background: var(--tblr-primary); vertical-align: 1px; animation: pulse 1s ease-in-out infinite; }
@keyframes pulse { 50% { opacity: .25; } }

/* 子卡片与表单行 */
.sub-card .card-header { flex-wrap: wrap; row-gap: 2px; }
.sub-card .card-title { font-size: 1rem; }
.ctl-row { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; }
.ctl-row.visitor { margin-top: 10px; }
label.ctl { display: flex; flex-direction: column; gap: 4px; font-size: 0.8125rem; color: var(--tblr-secondary); min-width: 0; }
.rv-grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1rem; }
@media (max-width: 767.98px) { .rv-grid { grid-template-columns: minmax(0, 1fr); } }
.dl { white-space: normal; }

/* AI 摘要逐句 */
.sentences { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.sent { position: relative; padding: 8px 12px 8px 34px; border-radius: var(--tblr-border-radius); line-height: 1.7; }
.sent .mark { position: absolute; left: 10px; top: 8px; font-weight: 700; }
.sent.ok { background: rgba(47, 179, 68, .07); }
.sent.ok .mark { color: var(--tblr-success); }
.sent.bad { background: rgba(214, 57, 57, .08); box-shadow: inset 3px 0 0 var(--tblr-danger); }
.sent.bad .mark { color: var(--tblr-danger); }
.sent .why { color: var(--tblr-danger); font-size: 0.8125rem; }
.chip { display: inline-block; background: var(--chip); border: 1px solid var(--tblr-border-color); border-radius: 4px; padding: 0 5px; margin-left: 4px; font-size: 0.75rem; line-height: 1.6; color: var(--tblr-secondary); cursor: pointer; font-family: var(--tblr-font-sans-serif); vertical-align: 1px; }
.chip:hover { border-color: var(--tblr-primary); color: var(--tblr-primary); }

/* 问数 */
.ask-intro { color: var(--tblr-body-color); }
.ask-row { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: flex-end; }
.ask-q { flex: 1 1 320px; }
.ask-q .aq { font-size: 1rem; padding-top: 8px; padding-bottom: 8px; }
.ex-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.chip.ex { margin: 0; font-size: 0.8125rem; padding: 3px 10px; border-radius: 999px; color: var(--tblr-body-color); background: var(--tblr-bg-surface); }
.askitem { border: 1px solid var(--tblr-border-color); border-radius: var(--tblr-border-radius-lg, 8px); padding: 12px 14px; margin-top: 12px; background: var(--tblr-bg-surface); }
/* app.js 生成的 .row 不是 Bootstrap 栅格：复位栅格的负边距与子元素满宽 */
.askitem .row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0; --tblr-gutter-x: 0; --tblr-gutter-y: 0; }
.askitem .row > * { width: auto; max-width: 100%; padding: 0; margin: 0; flex: 0 1 auto; }
.askitem .ans { margin: 10px 0 6px; padding: 10px 12px; border-radius: var(--tblr-border-radius); background: var(--tblr-bg-surface-secondary); }
.askitem .ans .k { font-size: 0.8125rem; color: var(--tblr-secondary); }
.askitem .ans .v { font-size: 1.375rem; font-weight: 700; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.askitem .ans .tbl-wrap { margin: 6px 0; background: var(--tblr-bg-surface); }
.askitem table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.askitem th, .askitem td { padding: 4px 10px; border-bottom: 1px solid var(--tblr-border-color); white-space: nowrap; }
.askitem pre { background: var(--chip); padding: 6px 8px; border-radius: 6px; overflow-x: auto; font-size: 0.75rem; margin: 6px 0; }
.askitem details summary { cursor: pointer; color: var(--tblr-secondary); }
.badge.ok, .badge.warn, .badge.bad { font-size: 0.75rem; font-weight: 600; padding: 3px 8px; border-radius: 999px; }
.badge.ok { background: var(--tblr-success-lt); color: var(--tblr-success); }
.badge.warn { background: var(--tblr-warning-lt); color: #9a5b00; }
.badge.bad { background: var(--tblr-danger-lt); color: var(--tblr-danger); }
.btn.ghost { background: transparent; color: var(--tblr-primary); border-color: var(--tblr-primary); }
.btn.ghost:hover { background: var(--tblr-primary); color: #fff; }
.btn.sm { padding: 1px 8px; font-size: 0.75rem; min-height: 0; line-height: 1.6; }

/* 证据抽屉：app.js 切换 .open */
.ev-drawer { --tblr-offcanvas-width: min(560px, 100vw); }
#drawer.open { visibility: visible; transform: none; box-shadow: -12px 0 32px rgba(15, 23, 42, .18); }
.ev-drawer .offcanvas-header { border-bottom: 1px solid var(--tblr-border-color); }
.ev-drawer .d-title { font-size: 1.0625rem; margin: 0; }
.ev-drawer .d-body h3 { font-size: 0.875rem; margin: 16px 0 6px; }
.ev-drawer .tbl-wrap table { width: 100%; border-collapse: collapse; font-size: 0.8125rem; }
.ev-drawer .tbl-wrap th { text-align: left; font-weight: 600; color: var(--tblr-secondary); background: var(--tblr-bg-surface-tertiary); }
.ev-drawer .tbl-wrap th, .ev-drawer .tbl-wrap td { padding: 5px 8px; border-bottom: 1px solid var(--tblr-border-color); white-space: nowrap; }
dl.kv { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 6px 12px; font-size: 0.875rem; margin: 0 0 8px; padding: 12px; border-radius: var(--tblr-border-radius); background: var(--tblr-bg-surface-secondary); }
dl.kv dt { color: var(--tblr-secondary); font-weight: 400; }
dl.kv dd { margin: 0; overflow-wrap: anywhere; }
@media (max-width: 575.98px) { dl.kv { grid-template-columns: minmax(0, 1fr); gap: 0 0; } dl.kv dd { margin-bottom: 6px; } }
@media (max-width: 575.98px) {
  .scen-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
  .form-selectgroup-boxes .scen { padding: 8px 8px; gap: 6px; }
  .scen-t { font-size: 0.8125rem; }
}

/* 日期、版本号、证据编号不断行（cjk 规则：数字断开） */
.nw, .chip, .scen-k { white-space: nowrap; }
