/* ============== 基础 ============== */
* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif;
  background: #f5f6f8;
  color: #222;
  font-size: 14px;
}
.container { max-width: 1400px; margin: 0 auto; padding: 0 20px; }

/* ============== 顶栏 ============== */
header {
  background: linear-gradient(135deg, #1f3a5f 0%, #2d5788 100%);
  color: #fff;
  padding: 16px 0;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.title-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
header h1 { margin: 0; font-size: 22px; font-weight: 600; }
.meta { display: flex; gap: 14px; align-items: center; font-size: 13px; }
.user-chip {
  background: rgba(255,255,255,0.15);
  padding: 4px 12px;
  border-radius: 4px;
  font-size: 12.5px;
}
.scope-chip {
  display: inline-block;
  margin-left: 8px;
  padding: 1px 8px;
  background: rgba(255,255,255,0.12);
  border-radius: 3px;
  font-size: 11.5px;
  color: #cde;
}
.logout-link {
  color: #bcd;
  text-decoration: none;
  font-size: 13px;
}
.logout-link:hover { color: #fff; }
#clock { font-family: Consolas, monospace; opacity: 0.9; }

/* ============== 统计卡片 ============== */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(11, minmax(0, 1fr));
  gap: 6px;
  margin: 20px 0;
}
@media (max-width: 1400px) {
  .stats-grid { grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); }
}
.stat-card {
  background: #fff;
  padding: 10px 12px;
  border-radius: 6px;
  border-left: 3px solid #ccc;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  min-width: 0;
}
.stat-label {
  font-size: 12px;
  color: #888;
  margin-bottom: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.stat-value { font-size: 24px; font-weight: 600; line-height: 1; color: #222; }
.stat-new       { border-left-color: #3498db; }
.stat-uploading { border-left-color: #16a085; }
.stat-queued    { border-left-color: #95a5a6; }
.stat-running { border-left-color: #2980b9; }
.stat-done    { border-left-color: #27ae60; }
.stat-rectify { border-left-color: #f39c12; }
.stat-major   { border-left-color: #e74c3c; }
.stat-failed  { border-left-color: #c0392b; }
.stat-quota   { border-left-color: #9b59b6; }
.sub-warn { color: #e67e22; font-size: 11px; font-weight: 600; margin-left: 4px; }

/* ============== 配额面板 ============== */
.quota-panel {
  background: #fff;
  padding: 18px 20px;
  border-radius: 6px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  margin-bottom: 20px;
}
.quota-header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
}
.quota-title { font-weight: 600; font-size: 15px; }
.quota-pct { font-size: 18px; font-weight: 600; color: #2980b9; font-family: Consolas, monospace; }
.progress-bar {
  height: 12px;
  background: #ecf0f1;
  border-radius: 6px;
  overflow: hidden;
}
.progress-fill {
  height: 100%;
  background: linear-gradient(90deg, #3498db, #5dade2);
  transition: width 0.6s ease;
}
.progress-fill.warn   { background: linear-gradient(90deg, #f39c12, #f1c40f); }
.progress-fill.danger { background: linear-gradient(90deg, #c0392b, #e74c3c); }
.quota-footnote { margin-top: 8px; font-size: 12px; color: #666; }
.tag-ok     { color: #27ae60; font-weight: 600; }
.tag-warn   { color: #f39c12; font-weight: 600; }
.tag-danger { color: #c0392b; font-weight: 600; }

/* ============== 上传中面板 ============== */
.uploading-panel {
  background: #fff;
  border-radius: 6px;
  padding: 16px 18px;
  margin-bottom: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  border-left: 4px solid #16a085;
}
.uploading-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 10px;
}
.panel-title { font-weight: 600; font-size: 15px; }
.panel-meta  { font-size: 12px; color: #666; }
.text-warn   { color: #e67e22; font-weight: 600; }

.upload-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.upload-table th, .upload-table td {
  padding: 8px 10px;
  text-align: left;
  border-bottom: 1px solid #eef0f3;
}
.upload-table th {
  background: #f8f9fa;
  font-weight: 600;
  color: #555;
  font-size: 12px;
}
.upload-table tr:hover { background: #f9fafb; }
.row-upload-overdue { background: #fff7ed; }
.row-upload-overdue:hover { background: #fff1e3; }
.td-folder { font-family: Consolas, monospace; font-size: 12px; }
.td-hours { font-family: Consolas, monospace; color: #666; }

.badge-uploading {
  background: #d1f2eb;
  color: #0e7461;
}
.badge-overdue {
  background: #fee2e2;
  color: #991b1b;
  font-weight: 600;
}

.uploading-hint {
  margin-top: 10px;
  padding: 8px 12px;
  background: #f5f6f8;
  border-radius: 4px;
  font-size: 12px;
  color: #666;
  line-height: 1.6;
}
.uploading-hint code {
  background: #e8eef7;
  padding: 1px 5px;
  border-radius: 3px;
  color: #2980b9;
  font-family: Consolas, monospace;
}

/* ============== 筛选器 ============== */
.filter-bar {
  background: #fff;
  padding: 14px 18px;
  border-radius: 6px;
  margin-bottom: 16px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.filter-bar form { display: flex; gap: 10px 14px; align-items: center; flex-wrap: wrap; }
.filter-bar label { font-size: 13px; color: #555; display: flex; align-items: center; gap: 6px; }
.filter-bar select,
.filter-bar input[type="text"],
.filter-bar input[type="date"] {
  padding: 6px 10px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 13px;
  background: #fff;
}
.filter-bar select { min-width: 110px; }
.filter-bar input[type="text"] { min-width: 160px; }
.filter-bar input[type="date"] { min-width: 130px; font-family: inherit; }
.filter-bar input:focus,
.filter-bar select:focus { outline: none; border-color: #2980b9;
                            box-shadow: 0 0 0 3px rgba(41,128,185,0.12); }
/* 筛选/重置 按钮成组，与前面 label 之间用 margin-left:auto 右对齐靠一起；
   wrap 后这一组作为整体换到下一行，不会被拆散 */
.filter-actions { display: flex; gap: 8px; margin-left: auto; }
.filter-bar button, .btn-reset {
  padding: 6px 18px;
  border: 1px solid #2980b9;
  background: #2980b9;
  color: #fff;
  border-radius: 4px;
  font-size: 13px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}
.btn-reset {
  background: #fff;
  color: #666;
  border-color: #ddd;
}

/* ============== 任务表 ============== */
.task-table-wrap {
  background: #fff;
  border-radius: 6px;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
}
.task-table {
  width: 100%;
  border-collapse: collapse;
}
.task-table th, .task-table td {
  padding: 11px 10px;
  text-align: left;
  border-bottom: 1px solid #eef0f3;
  font-size: 13px;
}
.task-table th {
  background: #f8f9fa;
  font-weight: 600;
  color: #555;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.task-table tr:hover { background: #f9fafb; }
.row-running { background: #eff6ff; }
.row-running:hover { background: #e0f2fe; }
.row-failed { background: #fef2f2; }
.row-queued { background: #fefef7; }
.row-error-detail td { background: #fef2f2 !important; border: none !important; }
.error-detail {
  padding: 4px 12px !important;
  font-size: 12px !important;
  color: #c0392b;
  font-family: Consolas, monospace;
}

.td-id { font-family: Consolas, monospace; color: #999; font-size: 12px; }
.td-project { font-weight: 500; }
.td-score { font-weight: 600; font-family: Consolas, monospace; font-size: 15px; }
.td-time { font-size: 12px; color: #666; }
.sub-director { color: #999; font-size: 11px; }

/* 状态徽章 */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 500;
}
.badge-queued { background: #ecf0f1; color: #7f8c8d; }
.badge-running {
  background: #dbeafe;
  color: #1e40af;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.dot-pulse {
  width: 6px; height: 6px;
  background: #1e40af;
  border-radius: 50%;
  animation: pulse 1.2s infinite;
}
@keyframes pulse {
  0%, 100% { opacity: 0.3; }
  50%      { opacity: 1; }
}
.badge-done { background: #d1fae5; color: #065f46; }
.badge-failed { background: #fee2e2; color: #991b1b; }
.badge-quota { background: #ede9fe; color: #5b21b6; }
.badge-withdrawn { background: #e5e7eb; color: #4b5563; }
.badge-aborted   { background: #fee2e2; color: #7f1d1d; }
.badge-pending-qc { background: #fef3c7; color: #92400e; }

/* 操作按钮 — 紧凑 icon 风格 */
.td-actions { white-space: nowrap; text-align: center; }
.action-form { display: inline-block; margin: 0 1px; }
.btn-icon {
  width: 22px;
  height: 22px;
  padding: 0;
  font-size: 11px;
  line-height: 20px;
  border: 1px solid transparent;
  border-radius: 3px;
  background: transparent;
  color: #95a5a6;
  cursor: pointer;
  transition: all 0.15s;
  font-family: Consolas, monospace;
}
.btn-icon:hover { background: #f0f4f8; color: #2d3748; }
.btn-prio:hover { background: #fef2f2; color: #c0392b; border-color: #fca5a5; }
.btn-deg:hover  { background: #eff6ff; color: #2563eb; border-color: #93c5fd; }
.btn-wd:hover   { background: #f3f4f6; color: #4b5563; border-color: #9ca3af; font-weight: 600; }
.btn-re:hover   { background: #f0fdf4; color: #059669; border-color: #86efac; }
.btn-del:hover  { background: #fef2f2; color: #b91c1c; border-color: #fca5a5; font-weight: 600; }
.btn-view       { color: #2563eb; text-decoration: none; display: inline-block; }
.btn-view:hover { background: #eff6ff; color: #1e40af; border-color: #93c5fd; }
.btn-abort:hover{ background: #fef2f2; color: #dc2626; border-color: #f87171; font-weight: 600; }
.btn-console    { text-decoration: none; color: #6b7280; display: inline-block; }
.btn-console:hover { background: #1f2937; color: #fbbf24; border-color: #4b5563; }
.btn-resub:hover { background: #f0fdf4; color: #059669; border-color: #86efac; }
.btn-cmp        { color: #7c3aed; text-decoration: none; display: inline-block; }
.btn-cmp:hover  { background: #f5f3ff; color: #5b21b6; border-color: #c4b5fd; }
.btn-pi         { color: #d97706; text-decoration: none; display: inline-block; }
.btn-pi:hover   { background: #fff7ed; color: #b45309; border-color: #fdba74; }

/* 再审行内下拉 + 按钮紧贴 */
.reaudit-form { display: inline-flex; align-items: center; gap: 2px; }
.reaudit-form select {
  height: 22px; padding: 0 4px; font-size: 10px; line-height: 20px;
  border: 1px solid #d4dae3; border-radius: 3px; background: #fff;
  color: #333; max-width: 92px; cursor: pointer;
}
.reaudit-form select:hover { border-color: #86efac; }

/* 任务行内的大小小字（紧跟项目名）— 点击进文件清单页 */
.project-size { color: #95a5a6; font-size: 11px; margin-left: 6px;
                text-decoration: none; cursor: pointer; }
.project-size:hover { color: #2d6cdf; text-decoration: underline; }

/* 待补声明行的在线补交按钮 */
.btn-upload {
  display: inline-block; padding: 4px 10px; border-radius: 4px;
  font-size: 12px; text-decoration: none; background: #2d6cdf;
  color: #fff; border: 1px solid #2d6cdf;
}
.btn-upload:hover { background: #1b57c8; }

.btn-missing-wd {
  display: inline-block; padding: 4px 10px; border-radius: 4px;
  font-size: 12px; margin-left: 4px; cursor: pointer;
  background: #fff; color: #6b7280; border: 1px solid #d4dae3;
}
.btn-missing-wd:hover { background: #f3f4f6; color: #4b5563;
                        border-color: #9ca3af; }

/* 上传中行：「急」复选框 + 「✓ 标为已传完」按钮，一行排布 */
.ready-form {
  display: inline-flex; align-items: center; gap: 6px;
}
.ready-urgent-toggle {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 11px; color: #c0392b; cursor: pointer;
  padding: 2px 6px; border-radius: 3px; border: 1px solid #fca5a5;
  background: #fff; white-space: nowrap; user-select: none;
}
.ready-urgent-toggle:hover { background: #fef2f2; }
.ready-urgent-toggle input { margin: 0; cursor: pointer; }
.btn-ready {
  display: inline-block; padding: 4px 10px; border-radius: 4px;
  font-size: 12px; cursor: pointer; white-space: nowrap;
  background: #059669; color: #fff; border: 1px solid #059669;
}
.btn-ready:hover { background: #047857; }

/* 错误行内的"清除"按钮 */
.clear-err-form { display: inline; margin-left: 10px; }
.btn-clear-err {
  border: 1px solid #fca5a5; background: #fff; color: #b91c1c;
  padding: 1px 8px; border-radius: 3px; font-size: 11px; cursor: pointer;
}
.btn-clear-err:hover { background: #fef2f2; }

/* 顶栏右上角的配额小字；仅 >80% 时渲染 */
.quota-chip {
  display: inline-block; padding: 2px 8px; border-radius: 10px;
  font-size: 11px; margin-left: 8px; font-weight: 500;
  background: #fff7e6; color: #d4841a; border: 1px solid #ffd59a;
}
.quota-chip.hold   { background: #fff1f0; color: #cf1322; border-color: #ffa39e; }
.quota-chip.danger { background: #a8071a; color: #fff; border-color: #a8071a;
                     animation: quota-blink 1.5s ease-in-out infinite; }
@keyframes quota-blink {
  50% { background: #cf1322; }
}

/* 评分颜色 */
.score-good { color: #27ae60; }
.score-mid  { color: #f39c12; }
.score-low  { color: #c0392b; }

/* 结论标签 */
.level {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 3px;
  font-size: 12px;
  font-weight: 500;
}
.level-pass    { background: #d1fae5; color: #065f46; }
.level-rectify { background: #fef3c7; color: #92400e; }
.level-major   { background: #fee2e2; color: #991b1b; }

/* 凌晨 2026-05-29 list 页质量修复：审核结论列改造（问题 2） */
/* 第一行结论大字：让 PM 一眼看清通过/待整改/重大问题 */
.conclusion-level {
    display: block;
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 2px;
    letter-spacing: 0.5px;
}
.conclusion-pass    { color: #16a34a; }
.conclusion-rectify { color: #ca8a04; }
.conclusion-major   { color: #dc2626; }
.conclusion-manual  { color: #5b21b6; }
/* 已裁决最终结论块：覆盖 LLM 初判的醒目展示（问题 2） */
.decision-final {
    display: block;
    margin-top: 4px;
    padding: 3px 6px;
    background: #f0f9ff;
    border-left: 3px solid #0369a1;
    font-size: 12px;
    color: #1f2937;
    border-radius: 2px;
    line-height: 1.5;
}
.decision-final strong {
    font-weight: 700;
    margin: 0 2px;
}
.decision-meta {
    color: #6b7280;
    font-size: 11px;
    margin-left: 4px;
}
/* 整列收紧空间避免高度暴涨 */
.td-conclusion { line-height: 1.5; }
/* 凌晨 2026-05-29 list 页质量修复：failed badge 加边框使其更明显（问题 1） */
.badge-failed { border: 1px solid #fca5a5; }
/* failed 行底色已存在 row-failed（line 261），结合 badge 边框 + tooltip 让失败一眼可辨 */

/* 2026-05-21 反馈 G1：risk_flags badge —— 列表页结论列后红/黄/灰小标 */
.risk-badge {
    display: inline-block;
    padding: 1px 6px;
    margin-left: 4px;
    border-radius: 8px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    vertical-align: middle;
    cursor: help;
}
.risk-high    { background: #fee2e2; color: #991b1b; border: 1px solid #fca5a5; }
.risk-medium  { background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; }
.risk-low     { background: #e5e7eb; color: #374151; border: 1px solid #d1d5db; }
.risk-unknown { background: #f3f4f6; color: #6b7280; border: 1px dashed #9ca3af; }

/* 版本列整格不换行，保证 v2 和 再审/整改 badge 同一行显示 */
.td-version { white-space: nowrap; }

/* 版本类型小标签 */
.tag-reaudit {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 5px;
  background: #d1fae5;
  color: #065f46;
  border-radius: 2px;
  font-size: 10px;
  white-space: nowrap;
}
.tag-rectify {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 5px;
  background: #fef3c7;
  color: #92400e;
  border-radius: 2px;
  font-size: 10px;
  white-space: nowrap;
}

/* LLM 后端徽章 */
.tag-be {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 11px;
  white-space: nowrap;
  cursor: help;
}
.tag-be-claude { background: #dbeafe; color: #1e40af; }
.tag-be-cn     { background: #d1fae5; color: #065f46; }
.tag-be-local  { background: #fef3c7; color: #92400e; }

/* 预拉状态角标（仅 admin 可见） */
.prefetch-badge {
  display: inline-block;
  margin-left: 4px;
  font-size: 12px;
  cursor: help;
  opacity: 0.85;
}

/* 加急标签 */
.tag-urgent {
  background: #e74c3c;
  color: #fff;
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 600;
  margin-right: 6px;
}

.empty { text-align: center; padding: 40px !important; color: #999; }

/* ============== 登录页 ============== */
.login-body {
  background: linear-gradient(135deg, #1f3a5f 0%, #2d5788 100%);
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.login-wrap { width: 100%; max-width: 400px; padding: 20px; }
.login-card {
  background: #fff;
  padding: 36px 32px;
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0,0,0,0.2);
}
.login-card h1 {
  margin: 0 0 4px;
  font-size: 20px;
  color: #1f3a5f;
  text-align: center;
}
.login-sub {
  text-align: center;
  color: #888;
  font-size: 13px;
  margin: 0 0 24px;
}
.login-error {
  background: #fee2e2;
  color: #991b1b;
  padding: 8px 12px;
  border-radius: 4px;
  font-size: 13px;
  margin-bottom: 14px;
  text-align: center;
}
.login-form label {
  display: block;
  margin-bottom: 14px;
}
.login-form span {
  display: block;
  margin-bottom: 5px;
  font-size: 13px;
  color: #555;
}
.login-form input {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #ddd;
  border-radius: 4px;
  font-size: 14px;
  box-sizing: border-box;
}
.login-form input:focus {
  outline: none;
  border-color: #2980b9;
  box-shadow: 0 0 0 3px rgba(41,128,185,0.1);
}
.login-form button {
  width: 100%;
  padding: 11px;
  background: #2980b9;
  color: #fff;
  border: none;
  border-radius: 4px;
  font-size: 14px;
  cursor: pointer;
  margin-top: 6px;
}
.login-form button:hover { background: #216a95; }
.login-foot {
  text-align: center;
  margin-top: 20px;
  font-size: 12px;
  color: #999;
}
.login-icp {
  text-align: center;
  margin-top: 22px;
  font-size: 12px;
}
.login-icp a {
  color: rgba(255,255,255,0.55);
  text-decoration: none;
  letter-spacing: 0.3px;
}
.login-icp a:hover { color: rgba(255,255,255,0.9); }

/* ============== 分页 ============== */
.pagination {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  background: #fff;
  padding: 12px 16px;
  margin-top: 12px;
  border-radius: 6px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.06);
  font-size: 13px;
}
.page-info { color: #555; }
.page-info b { color: #1f3a5f; font-weight: 600; }
.page-nav { display: flex; gap: 4px; align-items: center; }
.page-nav a {
  color: #2980b9;
  text-decoration: none;
  padding: 3px 9px;
  border: 1px solid #ddd;
  border-radius: 3px;
}
.page-nav a:hover { background: #f0f4f8; }
.page-num.current {
  padding: 3px 9px;
  background: #2980b9;
  color: #fff;
  border-radius: 3px;
  font-weight: 600;
}
/* 每页数量选择器 */
.page-size-picker { color: #666; display: flex; gap: 4px; align-items: center; }
.page-size-picker .ps-num {
  display: inline-block; padding: 2px 8px; border-radius: 3px;
  border: 1px solid #ddd; color: #2980b9; text-decoration: none;
  min-width: 22px; text-align: center;
}
.page-size-picker .ps-num:hover { background: #f0f4f8; }
.page-size-picker .ps-num.current {
  background: #2980b9; color: #fff; border-color: #2980b9; font-weight: 600;
}

/* ============== 页脚 ============== */
footer {
  margin: 30px 0 20px;
  text-align: center;
  color: #999;
  font-size: 12px;
}

/* 窄屏适配 */
@media (max-width: 1400px) {
  .stats-grid { grid-template-columns: repeat(5, 1fr); }
}
@media (max-width: 1100px) {
  .stats-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 700px) {
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
  .task-table { font-size: 12px; }
}

/* === 申诉置顶面板（QC/管理员/合伙人 可见） === */
.appeal-pin-panel {
  margin: 14px 0 18px;
  background: #fff5f5;
  border: 1px solid #ffccc7;
  border-left: 4px solid #cf1322;
  border-radius: 6px;
  padding: 12px 16px;
}
.appeal-pin-header {
  display: flex; align-items: center; gap: 10px;
  font-size: 14px; font-weight: 600; color: #cf1322;
  margin-bottom: 10px;
}
.appeal-pin-count { font-weight: 400; color: #666; font-size: 12px; }
.appeal-pin-more { margin-left: auto; font-size: 12px;
                   color: #cf1322; text-decoration: none; }
.appeal-pin-more:hover { text-decoration: underline; }
.appeal-pin-table { width: 100%; border-collapse: collapse;
                    background: #fff; border-radius: 4px; overflow: hidden;
                    font-size: 13px; }
.appeal-pin-table th { background: #fafafa; color: #555; font-weight: 500;
                       padding: 6px 10px; text-align: left;
                       border-bottom: 1px solid #eee; font-size: 12px; }
.appeal-pin-table td { padding: 8px 10px; border-bottom: 1px solid #f5f5f5;
                       vertical-align: middle; }
.appeal-pin-table tr:last-child td { border-bottom: none; }
.appeal-pin-table tr:hover { background: #fffafa; }
.appeal-chip { display: inline-block; padding: 2px 8px; border-radius: 10px;
               font-size: 11px; font-weight: 600; }
.appeal-chip.ap-pending { background: #fff1f0; color: #cf1322; }
.appeal-chip.ap-running { background: #fff7e0; color: #c07600; }
.appeal-pin-readonly-note {
  margin-top: 10px; padding: 6px 10px; background: #f0f6ff;
  border-left: 3px solid #93c5fd; border-radius: 3px;
  font-size: 12px; color: #1f4fa3;
}
.btn-decide { background: #fff1f0; color: #cf1322; border-color: #ffccc7; }
.btn-decide:hover { background: #ffccc7; }

/* 详情页 risk-panel —— 按 category 分组折叠 */
.risk-panel {
    margin: 14px 0;
    padding: 14px 18px;
    background: #fff8e6;
    border-left: 4px solid #d97706;
    border-radius: 4px;
}
.risk-panel-title {
    margin: 0 0 10px 0;
    font-size: 15px;
    color: #92400e;
}
.risk-group {
    margin: 8px 0;
    padding: 8px 12px;
    background: #fff;
    border: 1px solid #fcd34d;
    border-radius: 3px;
}
.risk-group > summary {
    cursor: pointer;
    user-select: none;
    font-size: 14px;
    color: #374151;
}
.risk-group-count {
    margin-left: 8px;
    padding: 1px 6px;
    background: #f3f4f6;
    border-radius: 8px;
    font-size: 11px;
    color: #6b7280;
}
.risk-list {
    list-style: none;
    padding: 8px 0 0 0;
    margin: 0;
}
.risk-item {
    padding: 8px 10px;
    margin: 6px 0;
    background: #fafafa;
    border-left: 3px solid #d1d5db;
    border-radius: 2px;
    font-size: 13px;
    line-height: 1.6;
}
.risk-item-high   { border-left-color: #dc2626; background: #fef2f2; }
.risk-item-medium { border-left-color: #d97706; background: #fffbeb; }
.risk-item-low    { border-left-color: #6b7280; background: #f9fafb; }
.risk-sev-tag {
    display: inline-block;
    padding: 0 6px;
    margin-right: 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    vertical-align: middle;
}
.risk-desc { color: #1f2937; }
.risk-refs { margin-top: 6px; font-size: 12px; color: #6b7280; }
.risk-ref {
    display: inline-block;
    padding: 1px 6px;
    margin: 0 4px 0 0;
    background: #eef2ff;
    color: #4338ca;
    border-radius: 8px;
    font-size: 11px;
}
