/* css/views/keys.css — 视图私有样式,owner: keys 视图 agent。
 * 只许本视图 agent 写;全部选择器前缀 .v-keys;颜色/间距用 var(--*)。 */

/* 过滤行控件宽度(8px 网格取整) */
.v-keys-search { width: 256px; }
.v-keys-status { width: 144px; }

/* 表格行内操作按钮组(td 内右对齐,不换行) */
.v-keys-actions {
  display: flex;
  gap: var(--space-2);
  justify-content: flex-end;
  white-space: nowrap;
}

/* 列表底部统计行 */
.v-keys-count { margin-top: var(--space-2); }

/* upsert 表单:modal 内可滚动,避免长表单顶掉操作按钮 */
.v-keys-form {
  max-height: 60vh;
  overflow-y: auto;
  padding-right: var(--space-1);
}

/* FULL-ROW REPLACE 语义提示(警示信号:amber tint 底 + 左缘信号条) */
.v-keys-replace-note {
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-warning);
  background: var(--color-warning-tint);
  border-left: 3px solid var(--color-warning);
  border-radius: var(--radius-control);
  padding: var(--space-2) var(--space-3);
}

/* 表单级错误(后端 message + trace_id;:empty 时不占位) */
.v-keys-form-error {
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-danger);
}
.v-keys-form-error:empty { display: none; }
.v-keys-trace {
  display: block;
  margin-top: var(--space-1);
  font-family: var(--font-mono);
  font-size: 12px;
  color: var(--color-text-muted);
}

/* ---- 轮换 token 源(W-KS-4)---- */
/* 编辑态入口卡:与 ref 登记表单区隔(§4 Card:surface/hairline/radius-surface) */
.v-keys-rotate-intro {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  background: var(--color-bg);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-surface);
  padding: var(--space-3);
}
.v-keys-rotate-intro-text {
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-text-secondary);
}
.v-keys-rotate-intro .btn { align-self: flex-start; }

/* 轮换 modal 顶部说明 */
.v-keys-rotate-head {
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-text-secondary);
  margin-bottom: var(--space-2);
}

/* 验证状态行:标签 + 静态 pill + 备注(无 spinner) */
.v-keys-rotate-pill-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-top: var(--space-1);
}
.v-keys-rotate-pill-label {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-secondary);
}
.v-keys-rotate-pill-note {
  font-size: 12px;
  line-height: 1.4;
  color: var(--color-text-muted);
}

/* 强制提交勾选行 */
.v-keys-rotate-force {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-text-secondary);
}
.v-keys-rotate-force-box { margin-top: var(--space-1); }

/* 第二步确认 danger 提示(crimson tint 底 + 左缘信号条;未激活不占位) */
.v-keys-rotate-danger {
  font-size: 13px;
  line-height: 1.5;
  color: var(--color-danger);
  background: var(--color-danger-tint);
  border-left: 3px solid var(--color-danger);
  border-radius: var(--radius-control);
  padding: var(--space-2) var(--space-3);
}
.v-keys-rotate-danger:not(.is-on) { display: none; }

/* 422 等针对性提示(附在表单错误下) */
.v-keys-rotate-hint {
  display: block;
  margin-top: var(--space-1);
  font-size: 12px;
  line-height: 1.4;
  color: var(--color-text-secondary);
}

/* ---- 白画布区块容器(§9g 三层法第一层,2026-07-14 冲刺):列表整区一张画布,
 * 「登记上游 Key」上区块版头(表格屏配方;页头槽退役) ---- */
.v-keys-canvas {
  background: var(--color-surface);
  border-radius: 24px;
  padding: var(--space-6);
  margin-bottom: var(--space-6);
}
.v-keys-canvas .section { margin-bottom: 0; }
.v-keys-sub { font-size: 12px; font-weight: 400; color: var(--color-text-muted); margin-left: var(--space-2); }
.v-keys-sec-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  flex-wrap: wrap;
  margin-bottom: var(--space-3);
}
.v-keys-sec-head .section-title { margin-bottom: 0; }
.v-keys-filters { margin-bottom: var(--space-3); }
.v-keys-canvas .table th,
.v-keys-canvas .table td { white-space: nowrap; } /* 基础排版:不竖排 */
