/* 管理后台 · 业务样式层。设计系统三层（tokens/base/glass）与各插件逐字节一致，
   加载顺序 tokens → base → styles → glass；本层只写后台专属样式且只引用令牌变量，
   禁止硬编码颜色/间距/圆角/阴影（AGENTS 3.1b）。玻璃质感变量（--glass-*）由
   glass.css 提供，此处引用时一律带实色回退。 */

[hidden] {
  display: none !important;
}
body {
  padding: 0;
}

/* ── 布局骨架：品牌栏（全宽玻璃条）+ 内容 shell ── */
.shell {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 var(--space-6);
}
.brandbar {
  position: sticky;
  top: 0;
  z-index: 20;
  background: var(--glass-card, var(--card));
  -webkit-backdrop-filter: blur(var(--glass-blur-strong, 22px)) saturate(180%);
  backdrop-filter: blur(var(--glass-blur-strong, 22px)) saturate(180%);
  border-bottom: 1px solid var(--glass-border, var(--border-light));
  /* 玻璃上缘镜面高光（Liquid Glass 质感关键） */
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.brandbar-in {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  min-height: 60px;
}
.brand {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}
.brand-logo {
  flex-shrink: 0;
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  background: var(--primary);
  color: var(--on-primary);
  font-size: 17px;
  font-weight: 700;
  box-shadow: var(--shadow-sm);
}
.brand-text h1,
.brandbar h1 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.3;
}
.brand-text .sub {
  margin: 0;
  font-size: 12px;
}
.sub {
  color: var(--muted);
  font-size: 13px;
  margin: 4px 0 0;
}
.hdr-actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.who {
  color: var(--muted);
  font-size: 13px;
  margin-right: var(--space-1);
}
.btn-ghost {
  background: transparent;
  color: var(--text);
  border-color: transparent;
}
.btn-ghost:hover:not(:disabled) {
  border-color: var(--border);
  background: var(--glass-soft, var(--bg));
}

/* ── 导航（#nav 走 glass 胶囊 Tab；.fb-bar 内的筛选 tab 用独立胶囊样式）── */
main.shell {
  padding-top: var(--space-5);
  padding-bottom: 64px;
}
.tab {
  border: 1px solid transparent;
  background: none;
  border-radius: 999px;
  padding: 7px 16px;
  font-size: 13px;
  color: var(--muted);
  cursor: pointer;
}
.fb-bar .tab {
  border-color: var(--border);
  background: var(--card);
}
.fb-bar .tab-on {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--on-primary);
  font-weight: 600;
}

/* ── 通用提示条 ── */
.banner {
  margin: var(--space-4) 0;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  max-width: 720px;
}
.banner.error {
  background: var(--danger-soft);
  color: var(--danger);
}
.banner.ok,
.banner.success {
  background: var(--ok-soft);
  color: var(--ok);
}

/* ── KPI 卡 ── */
.kpis {
  display: flex;
  gap: var(--space-4);
  margin: var(--space-5) 0;
  flex-wrap: wrap;
}
.kpi {
  flex: 1;
  min-width: 180px;
  background: var(--glass-card, var(--card));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius);
  padding: var(--space-5);
  box-shadow: var(--glass-shadow, var(--shadow-sm));
  border-top: 3px solid var(--primary);
}
.kpi-val {
  font-size: 30px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.kpi-label {
  color: var(--muted);
  font-size: 13px;
  margin-top: var(--space-1);
}
.sec-title {
  font-size: 15px;
  font-weight: 600;
  margin: var(--space-6) 0 var(--space-3);
}

/* ── 数据表（卡片化）── */
table.data {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--glass-card, var(--card));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius);
  overflow: hidden;
  font-size: 13px;
  box-shadow: var(--glass-shadow, var(--shadow-sm));
}
table.data th,
table.data td {
  text-align: left;
  padding: 11px var(--space-4);
  border-bottom: 1px solid var(--border-light);
  vertical-align: top;
}
table.data th {
  background: var(--glass-th, var(--bg));
  color: var(--muted);
  font-weight: 600;
  font-size: 12px;
  white-space: nowrap;
}
table.data tbody tr:last-child > td {
  border-bottom: none;
}
table.data tbody tr:hover > td {
  background: var(--primary-soft);
}
table.data tbody tr.detail:hover > td,
tr.detail > td {
  background: var(--glass-soft, var(--bg));
}
.mono {
  font-family: ui-monospace, Menlo, monospace;
}
.link {
  color: var(--primary-strong);
  cursor: pointer;
  text-decoration: none;
}
.link:hover {
  text-decoration: underline;
}

/* ── 状态徽章（覆盖 base 的极简点式：soft 底色胶囊，语义四色）── */
.badge {
  font-size: 12px;
  font-weight: 600;
  padding: 2px 9px;
  border-radius: 999px;
  white-space: nowrap;
}
.badge-ok {
  background: var(--ok-soft);
  color: var(--ok);
}
.badge-bad,
.badge-fail {
  background: var(--danger-soft);
  color: var(--danger);
}
.badge-warn {
  background: var(--warn-soft);
  color: var(--warn);
}
.badge-muted {
  background: var(--glass-soft, var(--bg));
  color: var(--muted);
  border: 1px solid var(--border-light);
}

/* ── 研发流水线 ── */
.table-pipeline td.cell-name {
  width: 190px;
}
.table-pipeline td.cell-env,
.table-pipeline td.cell-git,
.table-pipeline td.cell-db {
  white-space: nowrap;
  width: 1%;
}
.name-wrap {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  min-width: 0;
}
.pav {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  background: var(--primary-soft);
  color: var(--primary-strong);
  font-size: 14px;
  font-weight: 700;
}
.name-main {
  min-width: 0;
}
.name-main .link,
.name-main > span:first-child {
  font-weight: 600;
  color: var(--text);
}
.name-main .link:hover {
  color: var(--primary-strong);
}
.rowline {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  white-space: nowrap;
}
.rowline + .sub {
  margin-top: var(--space-1);
}
.table-pipeline td.cell-actions {
  width: auto;
}
/* flex 放内层容器不放 td（0.24.1 对齐修复）：flex 化的 td 不拉伸到行高，
   separate 边框模式下右列分隔线整列错位。 */
.cell-actions-flex {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 12px;
}
.cell-actions-flex > .sub {
  margin: 0;
}
.cell-actions-flex > .cell-block {
  flex: 0 1 auto;
  margin: 0;
}
.cell-actions-flex > .cell-block:empty {
  display: none;
}
.sla-strip {
  margin-bottom: var(--space-3);
}
.sla-bad {
  color: var(--danger);
  font-weight: 600;
}
.history-row {
  padding: 3px 0;
}
.history-row a {
  margin-left: 6px;
  color: var(--primary-strong);
}
.review-box {
  margin-top: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: var(--primary-soft);
  max-width: 560px;
}
.review-list {
  margin: 6px 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.review-actions {
  display: flex;
  gap: var(--space-2);
  flex-wrap: wrap;
}

/* ── 文字链接式操作 ── */
.lnk {
  border: none;
  background: none;
  padding: 0;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}
.lnk:hover {
  text-decoration: underline;
}
.lnk:disabled {
  color: var(--muted);
  cursor: default;
  text-decoration: none;
}
.lnk-primary {
  color: var(--primary-strong);
}
.lnk-warn {
  color: var(--warn);
}
.lnk-muted {
  color: var(--muted);
}

/* ── 行内「⋯」更多菜单（固定吸行尾右侧，不随左侧内容长短漂移）── */
.row-menu {
  position: relative;
  display: inline-flex;
  margin-left: auto;
}
.row-menu-btn {
  min-height: 26px;
  padding: 0 var(--space-2);
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--muted);
}
.row-menu-list {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  z-index: 30;
  min-width: 132px;
  display: flex;
  flex-direction: column;
  background: var(--glass-strong, var(--card));
  -webkit-backdrop-filter: blur(var(--glass-blur, 14px));
  backdrop-filter: blur(var(--glass-blur, 14px));
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-md);
  padding: var(--space-1);
}
.row-menu-item {
  border: none;
  background: none;
  text-align: left;
  font-size: 13px;
  padding: 7px 10px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  color: var(--text);
  white-space: nowrap;
}
.row-menu-item:hover:not(:disabled) {
  background: var(--primary-soft);
}
.row-menu-item:disabled {
  color: var(--muted);
  cursor: default;
}

/* ── 展开区 / 最近列表 ── */
.detail-panel {
  padding: 2px 0;
}
.detail-head {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 6px;
}
.detail-panel .review-box,
.detail-panel .prompt-box {
  max-width: 760px;
}
.recent {
  background: var(--glass-card, var(--card));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius);
  box-shadow: var(--glass-shadow, var(--shadow-sm));
  padding: var(--space-2) 0;
}
.recent-row {
  display: flex;
  gap: var(--space-3);
  padding: var(--space-2) var(--space-4);
  border-bottom: 1px solid var(--border-light);
  font-size: 13px;
  align-items: center;
}
.recent-row:last-child {
  border-bottom: none;
}
.recent-meta {
  color: var(--muted);
  white-space: nowrap;
}
.fb-bar {
  display: flex;
  gap: var(--space-2);
  margin: var(--space-4) 0;
  flex-wrap: wrap;
}
/* .input 类全量样式（0.24.1）：admin 视图用 createElement('input') 建框、从不设
   type 属性，base.css 的 input[type='text'] 属性选择器不命中——按类兜底，输入框/
   下拉不再落回浏览器默认黑边直角。 */
.input {
  width: 100%;
  min-height: var(--control-h);
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font-size: var(--field-fs);
  color: var(--text);
  background: var(--glass-strong, var(--card));
  outline: none;
  transition:
    border-color 0.15s,
    box-shadow 0.15s;
}
.input:focus {
  border-color: var(--primary-strong);
  box-shadow: 0 0 0 3px var(--primary-soft);
}
.input:disabled {
  background: var(--bg);
  color: var(--muted);
  cursor: not-allowed;
}
.sel {
  margin-bottom: 6px;
}
td .btn {
  margin-top: 6px;
}

/* ── 登录 ── */
.login {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.login-card {
  background: var(--glass-strong, var(--card));
  -webkit-backdrop-filter: blur(var(--glass-blur, 14px));
  backdrop-filter: blur(var(--glass-blur, 14px));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: var(--space-6) 32px;
  width: 340px;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.login-brand {
  gap: var(--space-2);
}
.login-card h1 {
  margin: 0;
  font-size: 20px;
}
.login-card .sub {
  margin: 0 0 var(--space-2);
}
.lg-error {
  color: var(--danger);
  font-size: 13px;
}

/* ── 新增插件 ── */
.create-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  max-width: 460px;
  margin: var(--space-3) 0 var(--space-5);
}
.create-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  font-size: 13px;
  color: var(--muted);
}
.create-hint {
  margin: -8px 0 0;
  font-size: 12px;
  line-height: 1.6;
}
.create-hint a {
  color: var(--primary-strong);
}
.create-check {
  display: flex;
  gap: var(--space-2);
  align-items: flex-start;
  font-size: 13px;
  color: var(--muted);
}
.create-check input {
  margin-top: 2px;
  width: auto;
  min-height: 0;
}
.create-result {
  border-top: 1px solid var(--border-light);
  padding-top: var(--space-4);
}
.create-meta {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-2);
  line-height: 1.9;
}
.prompt-box {
  width: 100%;
  box-sizing: border-box;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: var(--space-3);
  margin-bottom: var(--space-2);
  resize: vertical;
  background: var(--card);
}

/* ── 本地 AI 客服 + 新手引导 ── */
.assistant-fab {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 50;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: none;
  background: var(--primary);
  color: var(--on-primary);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  box-shadow: var(--shadow-md);
}
.assistant-fab:hover {
  filter: brightness(0.96);
}
.assistant-fab-open {
  opacity: 0.6;
}
.assistant-panel {
  position: fixed;
  right: 20px;
  bottom: 86px;
  z-index: 50;
  width: 340px;
  max-width: calc(100vw - 40px);
  max-height: min(560px, calc(100vh - 120px));
  background: var(--glass-strong, var(--card));
  -webkit-backdrop-filter: blur(var(--glass-blur-strong, 22px));
  backdrop-filter: blur(var(--glass-blur-strong, 22px));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.assistant-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) 14px;
  border-bottom: 1px solid var(--border-light);
}
.assistant-title {
  font-weight: 600;
  flex: 1;
}
.assistant-link {
  border: none;
  background: none;
  color: var(--muted);
  font-size: 13px;
  cursor: pointer;
  padding: 2px 4px;
}
.assistant-link:hover {
  color: var(--text);
}
.assistant-msgs {
  flex: 1;
  overflow-y: auto;
  padding: var(--space-3) 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.assistant-msg {
  font-size: 13px;
  line-height: 1.6;
  padding: 9px 11px;
  border-radius: var(--radius);
  max-width: 88%;
  white-space: pre-wrap;
  word-break: break-word;
}
.assistant-msg-bot {
  background: var(--bg);
  color: var(--text);
  align-self: flex-start;
  border-bottom-left-radius: 3px;
}
.assistant-msg-user {
  background: var(--primary);
  color: var(--on-primary);
  align-self: flex-end;
  border-bottom-right-radius: 3px;
}
.assistant-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: var(--space-2);
}
.assistant-action {
  border: 1px solid var(--primary);
  background: var(--card);
  color: var(--text);
  border-radius: 14px;
  padding: 4px 12px;
  font-size: 12px;
  cursor: pointer;
}
.assistant-action:hover {
  background: var(--primary-soft);
}
.assistant-action:disabled {
  opacity: 0.5;
  cursor: default;
}
.assistant-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: var(--space-2) 14px;
  border-top: 1px solid var(--border-light);
}
.assistant-chip {
  border: 1px solid var(--border);
  background: var(--card);
  border-radius: 14px;
  padding: 4px 11px;
  font-size: 12px;
  cursor: pointer;
}
.assistant-chip:hover {
  border-color: var(--primary);
}
.assistant-input-row {
  display: flex;
  gap: var(--space-2);
  padding: 10px 14px 12px;
  border-top: 1px solid var(--border-light);
}
.assistant-input-row .assistant-input {
  flex: 1;
}
.assistant-send {
  flex-shrink: 0;
}

/* ── AI 工作台 ── */
.ws-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--space-3);
  margin: var(--space-4) 0 var(--space-3);
}
.ws-field {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.ws-select {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 6px 9px;
  font-size: 13px;
  background: var(--card);
  min-width: 160px;
}
.ws-more {
  align-self: flex-end;
}
.ws-modes {
  display: flex;
  gap: 6px;
}
.ws-mode {
  border: 1px solid var(--border);
  background: var(--card);
  border-radius: 999px;
  padding: 6px 12px;
  font-size: 13px;
  cursor: pointer;
}
.ws-mode-on {
  background: var(--primary);
  border-color: var(--primary);
  color: var(--on-primary);
  font-weight: 600;
}
.ws-msgs {
  background: var(--glass-card, var(--card));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius);
  padding: var(--space-4);
  height: min(56vh, 560px);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}
.wsm {
  display: flex;
  max-width: 88%;
}
.wsm-user {
  align-self: flex-end;
}
.wsm-bot,
.wsm-sys {
  align-self: flex-start;
}
.wsm-body {
  font-size: 13px;
  line-height: 1.7;
  padding: 10px 12px;
  border-radius: var(--radius);
  white-space: pre-wrap;
  word-break: break-word;
  background: var(--bg);
}
.wsm-user .wsm-body {
  background: var(--primary);
  color: var(--on-primary);
  border-bottom-right-radius: 3px;
}
.wsm-bot .wsm-body {
  border-bottom-left-radius: 3px;
}
.wsm-sys .wsm-body {
  background: transparent;
  color: var(--muted);
  padding: 2px 0;
  font-size: 12px;
}
.wsm-streaming::after {
  content: '▋';
  animation: ws-blink 1s steps(1) infinite;
  color: var(--muted);
}
@keyframes ws-blink {
  50% {
    opacity: 0;
  }
}
.wsm-imgs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: var(--space-2);
}
.wsm-imgs img {
  max-width: 120px;
  max-height: 120px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
}
.ws-input {
  margin-top: var(--space-3);
}
.ws-strip {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  margin-bottom: var(--space-2);
}
.ws-thumb {
  position: relative;
  display: inline-flex;
}
.ws-thumb img {
  width: 56px;
  height: 56px;
  object-fit: cover;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
}
.ws-thumb-x {
  position: absolute;
  top: -6px;
  right: -6px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: none;
  background: var(--text);
  color: var(--text-invert);
  font-size: 11px;
  line-height: 18px;
  cursor: pointer;
  padding: 0;
}
.ws-text {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 10px 12px;
  font-size: 13px;
  resize: vertical;
}
.ws-text:disabled {
  background: var(--bg);
  color: var(--muted);
}
.ws-bar {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin-top: var(--space-2);
}
.ws-spacer {
  flex: 1;
}
.ws-link {
  color: var(--primary-strong);
}
.ws-modelpanel {
  background: var(--glass-card, var(--card));
  border: 1px solid var(--glass-border, var(--border));
  border-radius: var(--radius);
  padding: 14px var(--space-4);
  margin-bottom: var(--space-3);
}
.ws-modellist {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) 18px;
  margin: 10px 0;
}
.ws-check {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  font-size: 13px;
  min-width: 200px;
}
.ws-check input {
  width: auto;
  min-height: 0;
}

/* 「带你去」后的高亮脉冲 */
.feature-pulse {
  animation: feature-pulse 1.8s ease-out;
  border-radius: var(--radius-sm);
}
@keyframes feature-pulse {
  0%,
  100% {
    box-shadow: 0 0 0 0 transparent;
  }
  20% {
    box-shadow: 0 0 0 4px var(--primary);
  }
}

/* ═══ Liquid Glass 增强层（admin 专属）═══
   共用 glass.css 与 10 个前端字节锁定不可改，这里在其上把后台推向苹果液态玻璃
   质感：高饱和折射（saturate）+ 玻璃上缘镜面高光（inset 白）+ 悬浮 dock 导航 +
   光泽 FAB。仅引用 tokens / glass 变量；白/黑 alpha 高光沿用 glass.css 皮肤层
   惯例。 */

/* 冷暖双色柔光斑（叠在 glass.css 品牌辉光之下）：玻璃后面有东西可折射，
   模糊才有质感。 */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  background:
    radial-gradient(
      720px 420px at 84% 92%,
      rgba(64, 128, 255, 0.09),
      transparent 70%
    ),
    radial-gradient(
      520px 320px at 2% 55%,
      rgba(255, 198, 10, 0.08),
      transparent 72%
    );
}

/* 导航升级为悬浮 dock：吸顶跟随滚动、强磨砂高饱和、上缘高光（id 提优先级，
   压过后加载的 glass.css 同名 .tabs 规则）。 */
#nav.tabs {
  position: sticky;
  top: 68px;
  z-index: 15;
  -webkit-backdrop-filter: blur(var(--glass-blur-strong, 22px)) saturate(180%);
  backdrop-filter: blur(var(--glass-blur-strong, 22px)) saturate(180%);
  box-shadow:
    var(--glass-shadow, var(--shadow-sm)),
    inset 0 1px 0 rgba(255, 255, 255, 0.75);
}

/* 玻璃容器材质统一升级：高饱和折射 + 镜面高光 + 大圆角。 */
table.data,
.kpi,
.recent,
.ws-msgs,
.ws-modelpanel {
  border-radius: var(--radius-lg);
  -webkit-backdrop-filter: blur(var(--glass-blur, 14px)) saturate(170%);
  backdrop-filter: blur(var(--glass-blur, 14px)) saturate(170%);
  box-shadow:
    var(--glass-shadow, var(--shadow-sm)),
    inset 0 1px 0 rgba(255, 255, 255, 0.6);
}
.login-card,
.assistant-panel,
.row-menu-list {
  -webkit-backdrop-filter: blur(var(--glass-blur-strong, 22px)) saturate(180%);
  backdrop-filter: blur(var(--glass-blur-strong, 22px)) saturate(180%);
  box-shadow:
    var(--shadow-md),
    inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.kpi {
  transition:
    box-shadow 0.15s ease,
    transform 0.15s ease;
}
.kpi:hover {
  transform: translateY(-1px);
  box-shadow:
    var(--glass-shadow-hover, var(--shadow-md)),
    inset 0 1px 0 rgba(255, 255, 255, 0.6);
}

/* 徽章/表单按钮的玻璃细节：6% 描边环（同 glass chips 规则）；表单主按钮不再
   整列拉满。 */
.badge {
  border: 1px solid rgba(31, 35, 41, 0.06);
}
.create-form .btn {
  align-self: flex-start;
  min-width: 148px;
}

/* FAB 光泽渐变 + 外发光（渐变梯度与 glass.css 主按钮同款）。 */
.assistant-fab {
  background: linear-gradient(
    180deg,
    #ffd23e 0%,
    var(--primary) 60%,
    #f0b400 100%
  );
  box-shadow:
    0 6px 20px rgba(255, 198, 10, 0.5),
    inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

@media (prefers-reduced-motion: reduce) {
  .kpi,
  .kpi:hover {
    transition: none;
    transform: none;
  }
}

/* 玻璃不可用时的实色回退（自有容器不在 glass.css 守卫名单内，自管）。 */
@supports not (
  (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))
) {
  .brandbar,
  .login-card,
  .assistant-panel,
  .row-menu-list,
  table.data,
  .kpi,
  .recent,
  .ws-msgs,
  .ws-modelpanel,
  .input {
    background: var(--card);
  }
}
