/**
 * BastionLog pages — 页面级组件层(TASK-147 UI P3;消费 tokens.css 的 var(--bv-*))。
 * 分层:tokens(vendored 令牌)→ app-shell(外壳+通用件)→ 本表(逐页区块)。
 * 色彩法则(ADR-025):常态中性;amber/red 仅有源注意;任何绿色禁止。
 */

/* ---- Audit dossier page primitives (TASK-330 UI-W2) ---- */
.dossier-panel {
  padding: 40px 44px;
  border: 1px solid var(--hairline);
  background: var(--panel);
  box-shadow: none;
}

.dossier-panel--lift {
  transition: all 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.dossier-panel--lift:hover {
  transform: translateY(-4px);
  border-color: var(--hairline-strong);
  box-shadow: 0 14px 32px -14px rgba(23, 24, 26, 0.16),
    0 2px 6px rgba(23, 24, 26, 0.05);
}

@media (max-width: 620px) {
  .dossier-panel {
    padding: var(--bv-space-6);
  }
}

/* ---- Page 1: Landing ---- */
.lp-band {
  padding: var(--bv-space-12) 0;
}
.lp-band--alt {
  background: var(--bv-color-surface);
  border-top: 1px solid var(--bv-color-border);
  border-bottom: 1px solid var(--bv-color-border);
}
.lp-band--hero {
  padding: var(--bv-space-12) 0 var(--bv-space-16);
}
.lp-band__kicker {
  text-align: center;
}
.lp-band__title {
  margin: var(--bv-space-2) 0 var(--bv-space-6);
  text-align: center;
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-lg);
  font-weight: var(--bv-weight-bold);
  letter-spacing: -0.01em;
  line-height: 1.4;
  color: var(--bv-color-title);
  text-wrap: balance;
}

/* Hero:46/900 serif title + joined 54px lookup console. */
.lp-hero {
  text-align: center;
}
.lp-hero__title {
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-2xl);
  line-height: var(--heading-leading);
  font-weight: var(--bv-weight-extrabold);
  letter-spacing: -0.02em;
  color: var(--bv-color-title);
  margin: var(--bv-space-3) 0 0;
  text-wrap: balance;
}
@media (max-width: 560px) {
  .lp-hero__title {
    font-size: 2.25rem;
  }
}
.lp-hero__lead {
  max-width: 42rem;
  margin: var(--bv-space-4) auto 0;
}
/* TASK-266:双线定位一句话(主线+跟踪 / 副线工具阵列)*/
.lp-hero__dual {
  max-width: 44rem;
  margin: var(--bv-space-3) auto 0;
  font-size: var(--bv-text-md);
  font-weight: var(--bv-weight-medium);
  color: var(--bv-color-ink-2);
}
/* TASK-266:landing 贸易工具 teaser 网格(副线露出) */
.lp-toolgrid {
  list-style: none;
  margin: var(--bv-space-6) 0 0;
  padding: 0;
  display: grid;
  gap: 20px;
}
@media (min-width: 640px) {
  .lp-toolgrid {
    grid-template-columns: 1fr 1fr;
  }
}
.lp-toolgrid__item {
  display: flex;
  flex-direction: column;
  gap: var(--bv-space-1);
}
.lp-toolgrid__name {
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-title);
}
.lp-toolgrid__desc {
  font-size: var(--bv-text-sm);
  line-height: var(--bv-leading-normal);
}
.lp-lookup {
  max-width: 46rem;
  margin: var(--bv-space-10) auto 0; /* U4-④ 与主标题拉大间距 */
  text-align: left;
}
.lp-lookup__title {
  margin: 0 0 var(--bv-space-2);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-title);
}
.lp-lookup__bar {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(12rem, 1fr) auto;
  align-items: stretch;
  gap: 0;
  padding: 0;
  background: var(--panel);
  border: 1px solid var(--hairline-strong);
  border-radius: 0;
  box-shadow: none;
  transition: border-color 0.2s ease;
}
.lp-lookup__bar:focus-within {
  border-color: var(--bv-color-action);
  outline: 2px solid var(--navy);
  outline-offset: 1px;
}
.lp-lookup__bar .app-field {
  min-height: 54px;
  padding: 0 var(--bv-space-4);
  border: 0;
  background: var(--panel);
}
.lp-lookup__bar .app-field:focus {
  outline: none; /* 外框 focus-within 承担焦点指示 */
}
.lp-lookup__input {
  min-width: 0;
  font-size: var(--bv-text-base);
}
.lp-lookup__select {
  min-width: 0;
  border-left: 1px solid var(--hairline) !important;
  border-radius: 0;
}
.lp-lookup__btn {
  min-height: 54px;
  padding: 0 var(--bv-space-5);
  border-width: 0 0 0 1px;
  font-size: var(--bv-text-base);
}
@media (max-width: 720px) {
  .lp-lookup__bar {
    grid-template-columns: 1fr;
  }
  .lp-lookup__select {
    border-top: 1px solid var(--hairline) !important;
    border-left: 0 !important;
  }
  .lp-lookup__btn {
    width: 100%;
    border-width: 1px 0 0;
    justify-content: center;
  }
}
.lp-lookup__hint {
  margin: var(--bv-space-2) 0 0;
  font-size: var(--bv-text-xs);
  text-align: center;
}
.lp-lookup__result {
  margin-top: var(--bv-space-4);
}

/* Function path: numbered dossier panels, no decorative iconography. */
.lp-flow {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 20px;
}
@media (min-width: 820px) {
  .lp-flow {
    grid-template-columns: repeat(3, 1fr);
  }
}
.lp-flow__node {
  position: relative;
  text-align: left;
}
.lp-flow__step {
  display: block;
  color: var(--navy);
  font-size: 11px;
  font-weight: var(--bv-weight-semibold);
  letter-spacing: 0.14em;
}
.lp-flow__name {
  margin: var(--bv-space-3) 0 0;
  font-family: var(--font-serif);
  font-size: var(--bv-text-lg);
  font-weight: var(--bv-weight-bold);
  letter-spacing: -0.01em;
  line-height: 1.4;
  color: var(--bv-color-title);
}
.lp-flow__desc {
  margin: var(--bv-space-2) 0 0;
  max-width: 20rem;
  font-size: var(--bv-text-sm);
  color: var(--bv-color-ink-2);
}

.lp-section {
  margin-top: var(--bv-space-8);
}
.lp-prose {
  max-width: 46rem;
  color: var(--bv-color-ink-2);
}
.lp-prose p {
  margin: 0 0 var(--bv-space-3);
}
.lp-compare-wrap {
  overflow-x: auto;
  border: 0;
  background: transparent;
}
.lp-compare {
  min-width: 640px;
}
.lp-compare th[scope="row"] {
  color: var(--bv-color-ink-3);
  font-weight: var(--bv-weight-semibold);
  font-size: var(--bv-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  white-space: nowrap;
}
/* U5-⑤:交替淡蓝清洗为纯白;BL 列强调改走表头蓝字 + 行内 medium 字重 */
.lp-compare td.lp-compare__bl {
  background: transparent;
  color: var(--bv-color-ink);
  font-weight: var(--bv-weight-medium);
}
.lp-compare thead th {
  background: var(--bv-color-surface);
}
.lp-compare td {
  padding-top: var(--bv-space-4);
  padding-bottom: var(--bv-space-4);
  line-height: 1.7; /* leading-relaxed */
}
.lp-compare thead th.lp-compare__bl {
  color: var(--bv-color-brand);
}
/* Four coverage layers use the same top-rule/row-rule ledger rhythm. */
.lp-tiers {
  list-style: none;
  margin: var(--bv-space-4) 0 0;
  padding: 0;
  border-top: 2px solid var(--ink);
  background: transparent;
}
.lp-tiers__row {
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-4);
  padding: var(--bv-space-4) 0;
  border-bottom: 1px solid var(--bv-color-border);
}
.lp-tiers__row:last-child {
  border-bottom: 0;
}
.lp-tiers__num {
  font-size: var(--bv-text-lg);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-brand);
}
.lp-tiers__text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.lp-tiers__text strong {
  color: var(--bv-color-title);
}
.lp-tiers__text span {
  color: var(--bv-color-ink-3);
  font-size: var(--bv-text-sm);
}
.lp-tiers__closing {
  margin-top: var(--bv-space-3);
  color: var(--bv-color-ink-2);
  font-size: var(--bv-text-sm);
}
.lp-icp {
  margin-bottom: var(--bv-space-6);
}
.lp-icp__inner {
  max-width: 56rem;
}
.lp-icp__inner p {
  margin: var(--bv-space-3) 0 0;
}

/* ---- Page 1: TASK-151 信任堆叠(数据源徽标墙 + 数字条)---- */
.lp-sourcewall__lede {
  margin: var(--bv-space-2) 0 var(--bv-space-4);
  max-width: 46rem;
}
.lp-sourcewall__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 20px;
}
.lp-sourcewall__chip {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--bv-space-2);
  padding: var(--bv-space-2) var(--bv-space-3);
  border: 1px solid var(--bv-color-border);
  background: var(--bv-color-surface);
  font-size: var(--bv-text-sm);
}
.lp-sourcewall__name {
  color: var(--bv-color-title);
  font-weight: var(--bv-weight-medium);
}
.lp-sourcewall__code {
  color: var(--bv-color-ink-3);
  font-size: var(--bv-text-xs);
}

.lp-stats__row {
  display: grid;
  gap: 20px;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  margin-top: var(--bv-space-4);
}
.lp-stat {
  display: flex;
  flex-direction: column;
  gap: var(--bv-space-1);
}
.lp-stat__big {
  font-family: var(--bv-font-mono);
  font-size: var(--bv-text-xl);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-title);
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
  word-break: break-word;
}
.lp-stat__big.app-mono {
  font-family: var(--bv-font-mono);
  font-size: var(--bv-text-sm);
  font-weight: var(--bv-weight-medium);
}
.lp-stat__label {
  color: var(--bv-color-ink);
  font-weight: var(--bv-weight-medium);
  font-size: var(--bv-text-sm);
}
.lp-stat__sub {
  font-size: var(--bv-text-xs);
}

/* ---- Page 8: Auth(register / login / verify-email)---- */
/* U2a(TASK-174):冰川全宽底 + 中央悬浮纯白卡;输入框聚焦平滑过渡行动蓝 */
.auth-band {
  background: var(--bv-color-surface);
  border-bottom: 1px solid var(--bv-color-border);
  padding: var(--bv-space-12) 0 var(--bv-space-16);
}
/* auth 页:冰川带直贴 footer,消除中间白条 */
main:has(.auth-band) + .app-footer {
  margin-top: 0;
  border-top: 0;
}
.auth {
  max-width: 26rem;
  margin: 0 auto;
}
.auth .auth__card {
  background: var(--bv-color-canvas); /* 悬浮纯白卡 */
  border-color: var(--bv-color-border);
  box-shadow: none;
}
.auth .app-field {
  border-color: var(--bv-color-border);
  transition: border-color 0.2s ease;
}
.auth .app-field:focus {
  border-color: var(--bv-color-action);
  outline: 2px solid var(--navy);
  outline-offset: 1px;
}
.auth__brand {
  text-align: center;
  margin-bottom: var(--bv-space-5);
}
/* TASK-425:auth 页大 logo 派生(logo-auth.png 106×128,显示 ~53×64;宽高比 928:1120≈0.829)
   高度锁定 4rem,width:auto 保比,避免拉伸。浅色/纸白底用正相;藏青底大 logo 用反相母图
   src/logo/logo_invert.png 出派生(母图不进 static,见 ui-spec §3.1)。 */
.auth__logo-img {
  height: 4rem;
  width: auto;
  display: block;
  margin: 0 auto var(--bv-space-3);
}
.auth__logo {
  margin: 0;
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-xl);
  font-weight: var(--bv-weight-bold);
  color: var(--bv-color-title);
  letter-spacing: -0.01em;
}
.auth__sub {
  margin: var(--bv-space-1) 0 0;
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-sm);
  color: var(--bv-color-ink-3);
}
.auth__card {
  padding: var(--bv-space-6) var(--bv-space-5);
}
.auth__card--center {
  text-align: center;
}
.auth__title {
  margin: 0 0 var(--bv-space-2);
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-xl);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-title);
}
.auth__alt {
  margin: var(--bv-space-4) 0 0;
}
.auth__icon {
  width: 48px;
  height: 48px;
  color: var(--bv-color-ink-3);
  margin: 0 auto var(--bv-space-3);
  display: block;
}

/* ---- Page 6: Pricing ---- */
.pr-balance {
  margin-top: var(--bv-space-6);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--bv-space-4);
}
.pr-balance__num {
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-2);
}
.pr-balance__credits {
  font-family: var(--bv-font-mono);
  font-size: var(--bv-text-2xl);
  font-weight: var(--bv-weight-bold);
  color: var(--bv-color-title);
  font-variant-numeric: tabular-nums;
}
/* Stripe HOLD:buttons remain disabled; the three packages read as a ledger. */
.pr-tier__buy--ghost {
  border: 1px solid var(--bv-color-action);
  color: var(--bv-color-action);
  background: var(--bv-color-canvas);
}
.pr-tier__name {
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-md);
  font-weight: var(--bv-weight-bold);
  color: var(--bv-color-title);
}
.pr-tier__price {
  font-family: var(--bv-font-mono);
  font-size: var(--bv-text-md);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-title);
  font-variant-numeric: tabular-nums;
}
.pr-tier__buy {
  min-width: 10rem;
  justify-content: center;
}
.pr-tier__buy:disabled {
  cursor: not-allowed;
  opacity: 0.65;
}
.pr-tier__action {
  text-align: right;
}
.pr-table-wrap {
  margin-top: var(--bv-space-4);
  border: 1px solid var(--bv-color-border);
  border-radius: var(--bv-radius-md);
  background: var(--bv-color-surface);
  overflow-x: auto;
}
.pr-ledger {
  border: 0;
  background: transparent;
}
.pr-table-wrap .app-table th {
  letter-spacing: 0.08em;
  font-weight: var(--bv-weight-bold);
}
.pr-table-wrap .app-table td {
  padding-top: var(--bv-space-4);
  padding-bottom: var(--bv-space-4);
  border-bottom-color: var(--hairline);
  vertical-align: baseline;
}
.pr-num {
  font-family: var(--bv-font-mono);
  font-variant-numeric: tabular-nums;
  text-align: right;
  white-space: nowrap;
}
th.pr-num {
  text-align: right;
}
.pr-strike {
  color: var(--bv-color-ink-3);
}
.pr-principles {
  background: var(--panel-alt);
}

/* ---- Compare pages trio (TASK-150): BL column brand-soft highlight (no green) ---- */
.cmp-bl {
  background: var(--bv-color-brand-soft);
  font-weight: var(--bv-weight-medium, 500);
}
.cmp-see-also {
  list-style: disc;
}
.cmp-see-also a {
  color: var(--bv-color-brand);
  text-decoration: none;
}
.cmp-see-also a:hover {
  text-decoration: underline;
}

/* ---- Page 3/7: Query form · wait state · upload · entity selection ---- */
.q-form {
  background: var(--panel);
}
.q-form .app-btn--action {
  font-size: var(--bv-text-base);
  padding: var(--bv-space-3) var(--bv-space-6);
}
.q-form .app-field {
  border-color: var(--bv-color-border);
  transition: border-color 0.2s ease;
}
.q-form .app-field:focus {
  border-color: var(--bv-color-action);
  outline: 2px solid var(--navy);
  outline-offset: 1px;
}
.q-mono-field {
  font-family: var(--bv-font-mono);
  font-size: var(--bv-text-sm);
}
.q-monitor {
  display: flex;
  align-items: flex-start;
  gap: var(--bv-space-3);
  border: 1px solid var(--bv-color-border);
  border-radius: var(--bv-radius-sm);
  background: var(--bv-color-surface-sunken);
  padding: var(--bv-space-3);
  cursor: pointer;
}
.q-overlay {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(23, 24, 26, 0.45);
  padding: var(--bv-space-5);
}
.q-overlay[hidden] {
  display: none;
}
.q-overlay__card {
  width: 100%;
  max-width: 24rem;
  text-align: center;
}
.q-overlay__title {
  margin: 0 0 var(--bv-space-2);
  font-family: var(--bv-font-serif);
  font-size: var(--bv-text-lg);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-title);
}
.q-overlay__step {
  margin: 0 0 var(--bv-space-2);
  color: var(--bv-color-ink-3);
  white-space: normal;
}
/* TASK-320: elapsed timer — neutral mono, never green */
.q-overlay__timer {
  margin: 0 0 var(--bv-space-3);
  font-size: var(--bv-text-base);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.04em;
  color: var(--bv-color-ink-2);
}
/* TASK-320: long-wait expectation copy — muted ink, not success/green */
.q-overlay__hint {
  margin: 0 0 var(--bv-space-4);
  font-size: var(--bv-text-xs);
  line-height: 1.5;
  color: var(--bv-color-ink-3);
  text-align: center;
}
.q-overlay__bar {
  height: 3px;
  border-radius: 0;
  background: var(--bv-color-border);
  overflow: hidden;
}
.q-overlay__bar span {
  display: block;
  height: 100%;
  width: 40%;
  border-radius: 0;
  background: var(--bv-color-action);
  animation: q-indeterminate 1.6s ease-in-out infinite;
}
@keyframes q-indeterminate {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(350%);
  }
}
.up-dropzone {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--bv-space-2);
  padding: var(--bv-space-6) var(--bv-space-5);
  border: 1px solid var(--bv-color-border-strong);
  background: var(--bv-color-surface-sunken);
  text-align: left;
  cursor: pointer;
}
.up-dropzone--over {
  border-color: var(--bv-color-action);
  background: var(--panel);
}
.up-dropzone__hint {
  font-weight: var(--bv-weight-medium);
  color: var(--bv-color-ink);
}
.up-dropzone__files {
  white-space: normal;
  word-break: break-all;
}
.up-dropzone__input {
  margin-top: var(--bv-space-2);
  font-size: var(--bv-text-xs);
  color: var(--bv-color-ink-3);
  max-width: 100%;
}
.sel-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 2px solid var(--ink);
}
.sel-list__row {
  border-bottom: 1px solid var(--bv-color-border);
}
.sel-list__row:last-child {
  border-bottom: 0;
}
.sel-list__label {
  display: flex;
  gap: var(--bv-space-3);
  align-items: baseline;
  padding: var(--bv-space-4) var(--bv-space-5);
  cursor: pointer;
}
.sel-list__row:has(input:checked) {
  background: var(--panel-alt);
}
.sel-list__label:hover {
  background: var(--panel-alt);
}
.sel-list__text {
  display: flex;
  gap: var(--bv-space-2);
  align-items: baseline;
  flex-wrap: wrap;
}
.sel-gate {
  align-items: flex-start;
  gap: var(--bv-space-2);
  flex-wrap: nowrap;
  margin-top: var(--bv-space-4);
  padding-top: var(--bv-space-3);
  border-top: 1px solid var(--bv-color-border);
  cursor: pointer;
}

/* ---- Protected workspace primitives (TASK-332 UI-W4) ---- */
.ap-band.workspace-band--alt {
  background: var(--panel-alt);
}

.workspace-grid {
  gap: 20px;
}

.workspace-band--alt .dossier-panel {
  background: var(--panel);
}

.ap-band.workspace-band--alt .app-section-title,
.ap-band .dossier-panel .app-section-title {
  font-size: var(--bv-text-lg);
}

.workspace-ledger {
  overflow-x: auto;
}

.workspace-table th,
.workspace-table td {
  vertical-align: baseline;
}

.workspace-table__id,
.workspace-table__date,
.workspace-table__status {
  color: var(--ink-secondary);
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
  font-variant-numeric: tabular-nums;
}

.workspace-table__id {
  width: 11rem;
  max-width: 11rem;
  overflow-wrap: anywhere;
}

.workspace-table__date,
.workspace-table__status {
  white-space: nowrap;
}

.workspace-status {
  display: inline-flex;
  align-items: baseline;
  padding: 1px var(--bv-space-2);
  border: 1px solid var(--hairline);
  background: var(--panel-alt);
  color: var(--ink-secondary);
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
  font-weight: var(--bv-weight-medium);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.workspace-meta {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(8rem, 0.7fr) minmax(9rem, 0.8fr);
  margin: var(--bv-space-5) 0 0;
  border-top: 2px solid var(--rule-heavy);
}

.workspace-meta > div {
  min-width: 0;
  padding: var(--bv-space-3) var(--bv-space-4) var(--bv-space-3) 0;
  border-bottom: 1px solid var(--hairline);
}

.workspace-meta dt,
.workspace-meta dd {
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
  font-variant-numeric: tabular-nums;
}

.workspace-meta dt {
  margin-bottom: var(--bv-space-1);
  color: var(--ink-secondary);
  font-weight: var(--bv-weight-semibold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.workspace-meta dd {
  margin: 0;
  color: var(--ink);
  overflow-wrap: anywhere;
}

.tickets-grid {
  align-items: start;
}

.ticket-message {
  margin-bottom: 20px;
}

.ticket-message__meta {
  margin: 0 0 var(--bv-space-3);
  color: var(--ink-secondary);
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
}

.ticket-message__body {
  color: var(--ink);
  font-family: var(--font-sans);
  white-space: pre-wrap;
}

@media (max-width: 720px) {
  .workspace-meta {
    grid-template-columns: 1fr;
  }
}

/* ---- Page 2: Dashboard ---- */
.db-stat,
.db-action,
.db-snap {
  box-shadow: none;
}

.db-stat {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--bv-space-3);
  align-items: start;
}
.db-stat > .app-kicker {
  grid-column: 1;
  align-self: center;
}
.db-stat__num {
  grid-column: 2;
  grid-row: 1;
  justify-self: end;
}
.db-stat > .app-muted,
.db-stat > .db-stat__alert,
.db-stat > .app-row {
  grid-column: 1 / -1;
}
.db-stat__num {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-2);
  flex-wrap: wrap;
}
.db-stat__big {
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: var(--bv-weight-semibold);
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}

.db-stat--alert {
  border-color: var(--hairline);
  background: var(--panel-alt);
}
.db-stat--alert .db-stat__big {
  color: var(--ink);
}
.db-stat__alert {
  margin: 0;
  color: var(--ink);
  font-size: var(--bv-text-sm);
}
.db-action {
  display: flex;
  flex-direction: column;
  gap: var(--bv-space-1);
  text-decoration: none;
}
.db-action__title {
  color: var(--ink);
  font-family: var(--font-serif);
  font-size: var(--bv-text-lg);
  font-weight: var(--bv-weight-bold);
  letter-spacing: -0.01em;
  line-height: 1.4;
}

/* ---- U2b(TASK-175): app 页全宽 banding ----
 * 与 landing 的 lp-band 同语汇,app 页节奏稍紧(space-10);交替 白/冰川 + 1px 边界。
 * R2a 数据装置内容不动,只升版式(大字号/留白/横向长条带)。 */
.ap-band {
  padding: var(--bv-space-10) 0;
}
.ap-band--alt {
  background: var(--bv-color-surface);
  border-top: 1px solid var(--bv-color-border);
  border-bottom: 1px solid var(--bv-color-border);
}
.ap-band--head {
  padding-bottom: var(--bv-space-8);
}
.ap-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--bv-space-4);
  flex-wrap: wrap;
}
.ap-head__sub {
  margin: 0;
  color: var(--bv-color-ink-3);
}
/* 大字号升级:band 内区块标题升一档 */
.ap-band .app-section-title {
  font-size: var(--bv-text-xl);
}
/* app 页 banding 后 footer 直贴(最后一条 band 自带节奏) */
main:has(.ap-band) + .app-footer {
  margin-top: 0;
}

/* ---- R2a(TASK-170): Dashboard 监控快照 + 覆盖能力速览 ---- */
.db-snap {
  display: flex;
  flex-direction: column;
  gap: var(--bv-space-3);
  align-items: flex-start;
}
.db-snap__stats {
  margin: 0;
  display: flex;
  gap: var(--bv-space-6);
  flex-wrap: wrap;
}
.db-snap__stat dt {
  font-size: var(--bv-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--bv-color-ink-3);
  margin-bottom: var(--bv-space-1);
}
.db-snap__stat dd {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-2);
}
.db-snap__num {
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: var(--bv-weight-semibold);
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.db-snap__note {
  margin: 0;
  font-size: var(--bv-text-xs);
}
.db-cov__chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--bv-space-2);
}
.db-cov__chip {
  display: inline-flex;
  align-items: baseline;
  gap: var(--bv-space-2);
  max-width: 100%;
  padding: 2px var(--bv-space-3);
  border: 1px solid var(--hairline);
  background: var(--panel-alt);
  font-size: var(--bv-text-xs);
}
.db-cov__code {
  font-family: var(--bv-font-mono);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-ink);
}
.db-cov__registry {
  color: var(--bv-color-ink-2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 16rem;
}
.db-empty {
  padding: var(--bv-space-4) 0;
}

/* ---- Page 5: Monitoring ---- */
.mo-grid {
  display: grid;
  gap: 20px;
  align-items: start;
}

/* ---- R2a(TASK-170): Monitoring 空态示例装置 + 字段级 delta 表 ---- */
.mo-example {
  margin-top: var(--bv-space-4);
  padding-top: var(--bv-space-3);
  border-top: 1px solid var(--hairline);
}
.mo-example__k {
  margin: 0 0 var(--bv-space-2);
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--ink-secondary);
}
.workspace-table--example {
  border-top-width: 2px;
}
/* delta 值:mono 中性呈现,旧值→新值只陈述不判定(162;零定性) */
.mo-delta__field {
  word-break: break-all;
}
.mo-delta__val {
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
  background: var(--panel-alt);
  border: 1px solid var(--hairline);
  padding: 0.1em 0.4em;
  word-break: break-all;
}
.mo-delta__arrow {
  color: var(--ink-secondary);
}

/* ---- R2a(TASK-170): Query 覆盖预告 + 采集维度预览 ---- */
.q-cov {
  margin: var(--bv-space-2) 0 0;
  font-size: var(--bv-text-xs);
  color: var(--bv-color-ink-2);
}
.q-cov__k {
  font-family: var(--bv-font-mono);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--bv-color-ink-3);
  margin-right: var(--bv-space-2);
}
.q-sources {
  padding: 0;
  border: 0;
  background: transparent;
}
.q-sources__title {
  margin: 0 0 var(--bv-space-3);
  font-size: var(--bv-text-sm);
  font-weight: var(--bv-weight-semibold);
  color: var(--bv-color-ink-2);
}
.q-sources__grid {
  margin: 0;
  display: grid;
  gap: 0;
  border-top: 2px solid var(--ink);
}
.q-sources__row {
  display: grid;
  grid-template-columns: 106px minmax(0, 1fr);
  align-items: baseline;
  gap: var(--bv-space-4);
  padding: var(--bv-space-3) 0;
  border-bottom: 1px solid var(--hairline);
  background: transparent;
}
.q-sources__row dt {
  font-family: var(--bv-font-mono);
  font-size: var(--bv-text-xs);
  font-weight: var(--bv-weight-semibold);
  color: var(--navy);
}
.q-sources__row dd {
  margin: 0;
  font-size: var(--bv-text-sm);
  color: var(--bv-color-ink);
}
@media (max-width: 560px) {
  .q-sources__row {
    grid-template-columns: 1fr;
    gap: 2px;
  }
}

/* ---- R2a(TASK-170): History 按月分组 ---- */
.hi-month {
  margin-top: var(--bv-space-6);
}
.ap-band .hi-month:first-of-type {
  margin-top: 0;
}
/* U2b:冰川带上的月分组卡走白底 */
.hi-month .app-card,
.hi-empty {
  background: var(--bv-color-canvas);
}
.hi-month__label {
  margin: 0 0 var(--bv-space-2);
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-2);
  font-size: var(--bv-text-sm);
}
.sel-list__regno {
  color: var(--bv-color-ink-3);
  font-size: var(--bv-text-xs);
}

/* ---- Page: Coverage Tool (TASK-149;U3 精细化:纯白卡 + 1px 描边 + 放大) ---- */
.cov-grid {
  display: grid;
  gap: var(--bv-space-5);
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
}
/* U3:paper panel with a 1px hairline border. */
.cov-card {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  overflow: hidden;
  background: var(--bv-color-canvas);
  border-color: var(--bv-color-border);
}
.cov-card__head strong,
.cov-card .cov-fact strong {
  font-size: var(--bv-text-md);
}
.cov-card__head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--bv-space-3);
  padding: var(--bv-space-3) var(--bv-space-4);
  border-bottom: 1px solid var(--bv-color-border);
}
.cov-card__body {
  padding: var(--bv-space-3) var(--bv-space-4);
  flex: 1;
}
.cov-card__foot {
  display: flex;
  align-items: center;
  gap: var(--bv-space-3);
  padding: var(--bv-space-3) var(--bv-space-4);
  border-top: 1px solid var(--bv-color-border);
  background: var(--bv-color-surface-sunken);
}
.cov-fact {
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-2);
  font-size: var(--bv-text-sm);
}
.cov-pillars {
  margin-top: var(--bv-space-2);
}
.cov-pillars__toggle {
  cursor: pointer;
  font-size: var(--bv-text-sm);
  color: var(--bv-color-ink-2);
  user-select: none;
}
.cov-pillars__list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.cov-pillar {
  display: flex;
  align-items: baseline;
  gap: var(--bv-space-2);
  padding: var(--bv-space-1) 0;
  font-size: var(--bv-text-sm);
  border-bottom: 1px solid var(--bv-color-border);
}
.cov-pillar:last-child {
  border-bottom: 0;
}
.cov-pillar__icon {
  width: 16px;
  text-align: center;
  font-size: var(--bv-text-xs);
  flex-shrink: 0;
}
.cov-pillar--on .cov-pillar__icon { color: var(--bv-color-ink); }
.cov-pillar--off .cov-pillar__icon { color: var(--bv-color-ink-3); }
.cov-pillar--off .cov-pillar__label { color: var(--bv-color-ink-3); }
.cov-pillar__label {
  font-weight: var(--bv-weight-medium);
  min-width: 0;
}
.cov-pillar__src {
  font-size: var(--bv-text-xs);
  margin-left: auto;
  text-align: right;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cov-states {
  margin-top: var(--bv-space-2);
}
.cov-states__toggle {
  cursor: pointer;
  font-size: var(--bv-text-sm);
  color: var(--bv-color-ink-2);
  user-select: none;
}
.cov-states__list {
  margin: 0;
  padding: 0;
  list-style: none;
}
.cov-states__list li {
  padding: var(--bv-space-1) 0;
  border-bottom: 1px solid var(--bv-color-border);
}
.cov-states__list li:last-child { border-bottom: 0; }
.cov-jump {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--bv-space-2);
  padding: var(--bv-space-2) 0;
  border-bottom: 1px solid var(--bv-color-border);
}

/* ── Landing Hero Demo Result ── */
.cov-mini {
  font-size: var(--bv-text-sm);
}
.cov-mini > div {
  margin-bottom: var(--bv-space-1);
}
.cov-mini > div:last-child {
  margin-bottom: 0;
}

/* =====================================================================
 * TASK-330 audit dossier — /tools 工具阵列 hub + /support 客服页
 * 工具 hub 无图标;绿禁;三态事实语汇。
 * ===================================================================== */
.tl-group__kicker {
  margin: 0 0 var(--bv-space-4);
}
.tl-feature {
  display: flex;
  flex-direction: column;
  gap: var(--bv-space-4);
}
.tl-feature + .tl-feature,
.tl-feature--scenario {
  margin-top: 20px;
}
.tl-feature__body {
  display: block;
}
.tl-feature__text {
  min-width: 0;
}
.tl-card__head {
  display: flex;
  align-items: center;
  gap: var(--bv-space-3);
  flex-wrap: wrap;
}
.tl-card__name {
  margin: 0;
  font-family: var(--font-serif);
  font-size: var(--bv-text-lg);
  font-weight: var(--bv-weight-bold);
  letter-spacing: -0.01em;
  line-height: 1.4;
  color: var(--bv-color-title);
}
.tl-card__value {
  margin: var(--bv-space-2) 0 0;
  font-weight: var(--bv-weight-medium);
  color: var(--bv-color-ink);
}
.tl-facts {
  margin: var(--bv-space-3) 0 0;
  border-top: 2px solid var(--ink);
}
.tl-facts__row {
  display: grid;
  grid-template-columns: 106px minmax(0, 1fr);
  align-items: baseline;
  gap: var(--bv-space-4);
  padding: var(--bv-space-3) 0;
  border-bottom: 1px solid var(--hairline);
}
@media (max-width: 560px) {
  .tl-facts__row {
    grid-template-columns: 1fr;
    gap: 2px;
  }
}
.tl-facts__row dt {
  font-family: var(--font-mono);
  font-size: var(--bv-text-xs);
  font-weight: var(--bv-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--bv-color-ink-3);
}
.tl-facts__row dd {
  margin: 0;
  color: var(--bv-color-ink-2);
  font-size: var(--bv-text-sm);
  line-height: var(--bv-leading-normal);
}
.tl-card__note {
  margin: var(--bv-space-3) 0 0;
  font-size: var(--bv-text-xs);
}
.tl-grid {
  display: grid;
  gap: 20px;
  margin-top: 20px;
}
@media (min-width: 760px) {
  .tl-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
.tl-card {
  display: flex;
  flex-direction: column;
}
.tl-card .tl-card__head {
  margin-bottom: var(--bv-space-1);
}
.tl-card .tl-card__name {
  font-size: var(--bv-text-md);
}
.mt-hub-head {
  margin-top: var(--bv-space-8);
  margin-bottom: var(--bv-space-4);
}
.tl-grid__note {
  margin: var(--bv-space-4) 0 0;
  font-size: var(--bv-text-xs);
}

/* ---- /support 客服页 ---- */
.sp-card {
  display: flex;
  flex-direction: column;
  gap: var(--bv-space-2);
}
.sp-card__lead {
  margin: var(--bv-space-1) 0;
}
.sp-card__email {
  font-size: var(--bv-text-md);
  color: var(--bv-color-action);
  word-break: break-all;
}
