/* ===== 基础样式(变量 / 重置 / 通用组件)===== */
:root {
  --bg: #f4f6fa;
  --card: #ffffff;
  --ink: #1c2333;
  --ink-2: #6b7385;
  --line: #e4e8f0;
  --brand: #3b6ef5;
  --brand-dark: #2b55c4;
  --ok: #1fa860;
  --warn: #e08a00;
  --err: #d64545;
  --sidebar-bg: #171e2e;
  --sidebar-ink: #aab3c7;
  --radius: 10px;
  --shadow: 0 1px 3px rgba(23, 30, 46, .08);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--ink); font-size: 14px;
}
a { color: var(--brand); text-decoration: none; }
a.link { font-size: 12px; font-weight: 400; }

/* 按钮 */
.btn {
  display: inline-block; border: 1px solid var(--line); background: #fff; color: var(--ink);
  padding: 8px 14px; border-radius: 8px; cursor: pointer; font-size: 13px;
  transition: all .15s;
}
.btn:hover { border-color: var(--brand); color: var(--brand); }
.btn-primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-primary:hover { background: var(--brand-dark); color: #fff; }
.btn-danger  { color: var(--err); }
.btn-danger:hover { border-color: var(--err); background: #fdf1f1; }
.btn-sm { padding: 5px 10px; font-size: 12px; }
.btn-ghost { background: transparent; border-color: #3a4358; color: var(--sidebar-ink); }
.btn-block { width: 100%; }
.btn-ghost:hover { border-color: var(--sidebar-ink); color: #fff; }

/* 徽章 */
.badge {
  display: inline-block; padding: 2px 10px; border-radius: 20px;
  font-size: 12px; font-weight: 500;
}
.badge-pending  { background: #fdf3e2; color: var(--warn); }
.badge-read     { background: #e9effc; color: var(--brand); }
.badge-adopted  { background: #e5f6ed; color: var(--ok); }
.badge-rejected { background: #fbeaea; color: var(--err); }
.badge-active   { background: #e5f6ed; color: var(--ok); }

/* 表单 */
label { display: block; font-size: 13px; color: var(--ink-2); margin: 12px 0 6px; }
input[type=text], input[type=password], input[type=search], select, textarea {
  width: 100%; padding: 9px 12px; border: 1px solid var(--line); border-radius: 8px;
  font-size: 14px; background: #fff; color: var(--ink); outline: none;
}
input:focus, select:focus, textarea:focus { border-color: var(--brand); }

/* 提示条 */
.flashes { margin-bottom: 16px; }
.flash { padding: 10px 14px; border-radius: 8px; margin-bottom: 8px; font-size: 13px; }
.flash-ok  { background: #e5f6ed; color: var(--ok); }
.flash-err { background: #fbeaea; color: var(--err); }

/* 表格 */
.table { width: 100%; border-collapse: collapse; }
.table th, .table td { text-align: left; padding: 9px 12px; border-bottom: 1px solid var(--line); }
.table th { color: var(--ink-2); font-weight: 500; font-size: 12px; }

/* 进度条 */
.meter { height: 10px; background: var(--line); border-radius: 6px; overflow: hidden; margin: 10px 0 6px; }
.meter-fill { height: 100%; background: var(--brand); border-radius: 6px; transition: width .4s; }
.meter-fill.warn { background: var(--err); }

.empty { color: var(--ink-2); text-align: center; padding: 12px; }
.muted { color: var(--ink-2); font-weight: 400; font-size: 13px; }
.meta { color: var(--ink-2); font-size: 12px; }
