/* =====================================================================
 * PMS 属地个性化原型 · T2 组件兜底样式
 * 作用：定义审查中发现的「全仓未定义」组件类（共 71 个），消除浏览器默认裸渲染。
 * 原则：
 *   1) 全部走设计系统令牌 var(--c-*)，双主题（light/dark）自动适配；
 *   2) 类选择器优先级低于页面内联 style，已带 inline 的元素不被破坏，本文件仅做「加法/兜底」；
 *   3) 不引入新文字色对比度风险（文字色只用语义令牌或 --c-text-*）。
 * 加载：由 shared/shell.js 运行时按自身目录注入链接；4 个未加载 shell.js 的页手工挂 <link>。
 * ===================================================================== */

/* ---------- 1. 卡片 / 面板容器（缺背景/边框兜底） ---------- */
.resource-type-card {
  background: var(--c-bg-card);
  border-radius: var(--radius-card);
  transition: box-shadow .18s ease, transform .18s ease;
}
.resource-type-card:hover { box-shadow: var(--shadow-card); }

.info-card {
  background: var(--c-bg-card-alt);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-card);
}

.kauth-unit { overflow: hidden; border-radius: var(--radius-card); }

.wc-pane {
  padding: var(--sp-lg);
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-card);
  margin-bottom: var(--sp-lg);
}

.pm-appr-group { margin-bottom: var(--sp-md); }
.pm-deep-wh-table { width: 100%; }

.box {
  background: var(--c-bg-card);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-card);
  padding: var(--sp-md);
}

/* ---------- 2. 标签页 / 内联分组 ---------- */
.asset-detail-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--c-border);
  margin-bottom: var(--sp-md);
}
.tab-inline {
  display: flex;
  gap: var(--sp-xs);
  border-bottom: 1px solid var(--c-border);
  margin-bottom: var(--sp-md);
}
.risk-tab-content { display: block; }

.kpi-summary-group-child { cursor: pointer; }
.kpi-summary-group-child:hover { background: var(--c-bg-card-hover); }

/* ---------- 3. KPI 模块构建器片段 ---------- */
.kpi-preset-loading { display: flex; align-items: center; gap: 6px; font-size: var(--fs-caption); }
.kpi-query-hint { font-size: var(--fs-caption); }
.kpi-formula-fieldbar { font-size: var(--fs-caption); }
.kpi-formula-ops { display: flex; gap: 6px; flex-wrap: wrap; }

.kpi-modal-table { border-collapse: collapse; }
.kpi-modal-table th,
.kpi-modal-table td {
  padding: 6px 8px;
  border-bottom: 1px solid var(--c-border);
  text-align: left;
}

.kpi-fill-actions {
  display: flex;
  gap: var(--sp-sm);
  justify-content: flex-end;
  margin-top: var(--sp-md);
}
.kpi-quick-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: var(--sp-lg); }
.kpi-group-arrow { flex: none; color: var(--c-text-tertiary); }
.kpi-admin-dim-chips { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.link-danger { color: var(--c-error-text); }

/* ---------- 4. 项目看板 / 需求拆解（bd-* / tk-* / rf-*） ---------- */
.sub-bd {
  margin-top: 10px;
  padding-left: 12px;
  border-left: 2px solid var(--c-border);
}
.bd-no { color: var(--c-text-tertiary); font-size: var(--fs-caption); }

.tk-node { display: block; }
.tk-node:hover { background: var(--c-bg-card-hover); }

.rf-branch {
  border-radius: var(--radius-btn);
  font-weight: 500;
  transition: filter .15s ease;
}
.rf-branch:hover { filter: brightness(.95); }

.release-test-row:hover { background: var(--c-bg-card-hover); }

/* ---------- 5. 工作台（pm-* / tk-st-* / tk-pri-* / eh-empty） ---------- */
.tk-st- { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-caption); }
.tk-st-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; background: var(--c-text-tertiary); }
.tk-st-done .tk-st-dot { background: var(--c-success); }
.tk-st-in-progress .tk-st-dot { background: var(--c-warning); }
.tk-st-pending .tk-st-dot { background: var(--c-text-tertiary); }

.tk-pri-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; background: var(--c-text-tertiary); }
.tk-pri-high { background: var(--c-error); }

.eh-empty { display: inline-block; color: var(--c-text-tertiary); font-size: var(--fs-caption); }

/* ---------- 6. 移动端（m-* / ap-chip / legend-cell） ---------- */
.m-card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.m-wh-stats { display: flex; gap: 12px; flex-wrap: wrap; }

.legend-cell { display: inline-block; width: 12px; height: 12px; border-radius: 3px; vertical-align: middle; }
.legend-cell.fill-1 { background: var(--c-primary); }
.legend-cell.fill-2 { background: var(--c-accent); }
.legend-cell.fill-3 { background: var(--c-warning); }
.legend-cell.fill-4 { background: var(--c-success); }

.ap-chip { cursor: pointer; }
.ap-chip.active { background: var(--c-primary); color: #fff; }

/* ---------- 7. 提示 Toast（p3-*） ---------- */
.p3-toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 240px;
  max-width: 380px;
  padding: 12px 16px;
  background: var(--c-bg-card);
  color: var(--c-text-primary);
  border: 1px solid var(--c-border);
  border-radius: 8px;
  box-shadow: var(--shadow-card);
  font-size: var(--fs-body);
}
.p3-toast[hidden] { display: none; }
.p3-toast-error { border-color: var(--c-error-text); }
.p3-toast-ico {
  display: inline-flex;
  width: 20px;
  height: 20px;
  flex: none;
  color: var(--c-primary-text);
}
.p3-toast-error .p3-toast-ico { color: var(--c-error-text); }

/* ---------- 8. 演示态切换按钮（ssb-*，.state-switch-btn 修饰） ---------- */
.ssb-p { color: var(--c-primary-text); border-color: var(--c-primary-text); }
.ssb-l { color: var(--c-info); border-color: var(--c-info); }
.ssb-err { color: var(--c-error-text); border-color: var(--c-error-text); }
.ssb-n { color: var(--c-success-text); border-color: var(--c-success-text); }
.ssb-e { color: var(--c-text-tertiary); border-color: var(--c-border); }

/* ---------- 9. 分页 / 导航（限定 .week-nav-btn 作用域，避免全局单字类名泄漏） ---------- */
.week-nav-btn.prev,
.week-nav-btn.next {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* ---------- 10. 杂项 ---------- */
.wk-proj-form-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-sm);
  flex-wrap: wrap;
  margin-top: var(--sp-lg);
  padding-top: var(--sp-md);
  border-top: 1px solid var(--c-border);
}
.ae-notice { color: var(--c-text-tertiary); font-size: var(--fs-caption); padding: 6px 0; }
.page-section { margin-top: var(--sp-md); }

.table { width: 100%; border-collapse: collapse; }
.table th,
.table td { padding: 10px 12px; border-bottom: 1px solid var(--c-border); text-align: left; }

.pa-filter { cursor: pointer; }
.empty-hint { color: var(--c-text-secondary); font-size: var(--fs-caption); padding: var(--sp-md); }

.flex-gap-md { display: flex; gap: var(--sp-md); align-items: center; flex-wrap: wrap; }
.expiry-reminder { display: flex; gap: var(--sp-md); margin-bottom: var(--sp-lg); flex-wrap: wrap; }

/* T1-5：孤儿类基础定义补全（原全站无共享基类，导致多页渲染不一致）。
   均为轻量、令牌化的标准样式；页级 .card-footer 定义（如 auth-forgot-password.css）加载顺序靠后，自然覆盖基类，无回归。 */
.form-aside { padding: var(--sp-lg); background: var(--c-surface-2); border-radius: var(--radius); border: 1px solid var(--c-border); font-size: var(--fs-caption); color: var(--c-text-secondary); line-height: 1.6; }
.card-footer { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-md); padding: var(--sp-md) var(--sp-lg); border-top: 1px solid var(--c-border); font-size: var(--fs-caption); }

.demo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.line { display: block; background: var(--c-bg-soft); border-radius: 4px; }
.stat { display: inline-flex; flex-direction: column; line-height: 1.3; }

/* ---------- 11. 扫描误判前缀产物的运行时真实变体（partner-icon.c1..c6 / tk-st-* 已在上方处理） ---------- */
.partner-icon.c1 { background: #2563EB; }
.partner-icon.c2 { background: #0F766E; }
.partner-icon.c3 { background: #B45309; }
.partner-icon.c4 { background: #047857; }
.partner-icon.c5 { background: #0369A1; }
.partner-icon.c6 { background: #7C3AED; }
.partner-icon.c1, .partner-icon.c2, .partner-icon.c3,
.partner-icon.c4, .partner-icon.c5, .partner-icon.c6 {
  color: #fff;
}
/* 扫描误判前缀产物 .c（运行时为 partner-icon.c1..cN）在此作用域定义，避免全局单字类名泄漏 */
.partner-icon.c { color: #fff; }

/* ---------- 12. 补充：首轮分组遗漏的孤儿类（确保 71 个全部定义） ---------- */
.btn-text {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--c-primary-text);
  cursor: pointer;
  font-size: var(--fs-body);
  background: none;
  border: none;
  padding: 4px 6px;
  border-radius: var(--radius-btn);
}
[data-theme="dark"] .btn-text { color: #60A5FA; }
.btn-text:hover { text-decoration: underline; }

.asset-pane { padding: var(--sp-md); }

.pg-info { color: var(--c-text-secondary); font-size: var(--fs-caption); }

.board-pg-prev,
.board-pg-next {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
}
.board-pg-btn:disabled { opacity: .5; cursor: not-allowed; }

.bd-name, .bd-start, .bd-end, .bd-parent, .bd-priority, .bd-assignee {
  box-sizing: border-box;
}
.bd-name { min-width: 0; }

.export-btns { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 12px; }

.pm-appr-group-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--c-text-secondary);
  margin: 10px 0 6px;
  padding-top: 8px;
  border-top: 1px dashed var(--c-border);
}

.kpi-query-section { margin-top: 20px; }
.kpi-headline-label { margin-bottom: var(--sp-sm); }

.mfa-policy-group {
  margin-top: var(--sp-md);
  padding: var(--sp-md);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-card);
  background: var(--c-bg-card);
}
