/* =========================================================
   速诉通 · 全局设计系统 v2 (UI Refresh 2026-08-09)
   说明：本文件为纯样式层，仅调整视觉，不改动任何 DOM 结构与 JS 逻辑。
   所有 class 名保持向后兼容；组件级内联样式（.rp-page / .ops-report）另行维护。
   ========================================================= */

/* ---------- 设计令牌 ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; }
.hidden { display: none !important; }
:root {
  /* 表面与边框 */
  --bg: #eef1f6;
  --surface: #ffffff;
  --surface-2: #f8fafc;
  --surface-3: #f1f5f9;
  --line: #e7ebf1;
  --line-strong: #d6dde7;

  /* 文本 */
  --text: #0f172a;
  --text-2: #334155;
  --muted: #64748b;
  --muted-2: #94a3b8;

  /* 主题色（深蓝导航 + 专业蓝强调） */
  --primary: #1e3a8a;
  --primary-600: #23489e;
  --primary-700: #1a2f6e;
  --primary-soft: #e8edfb;
  --primary-soft-2: #dbe4f7;

  /* 语义色 */
  --green: #16a34a;  --green-soft: #e7f6ec;  --green-700: #15803d;
  --amber: #d97706;  --amber-soft: #fdf2dc;  --amber-700: #b45309;
  --red: #dc2626;    --red-soft: #fdeaea;    --red-700: #b91c1c;
  --blue: #2563eb;   --blue-soft: #e6effe;   --blue-700: #1d4ed8;
  --purple: #7c3aed; --purple-soft: #efe9fd; --purple-700: #6d28d9;
  --teal: #0d9488;   --teal-soft: #d9f3f0;   --teal-700: #0f766e;

  /* 圆角 */
  --r-xs: 6px; --r-sm: 8px; --r: 12px; --r-lg: 16px; --r-xl: 20px; --r-pill: 999px;

  /* 分层阴影 */
  --sh-xs: 0 1px 2px rgba(15,23,42,.06);
  --sh-sm: 0 1px 3px rgba(15,23,42,.08), 0 1px 2px rgba(15,23,42,.04);
  --sh-md: 0 4px 14px rgba(15,23,42,.08), 0 2px 6px rgba(15,23,42,.05);
  --sh-lg: 0 18px 50px rgba(15,23,42,.18);
  --ring: 0 0 0 3px var(--primary-soft);

  --content-max: 1480px;
}

html { color-scheme: light; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;
  background: var(--bg);
  color: var(--text);
  font-size: 14px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.muted { color: var(--muted); font-size: 12px; }

/* ---------- 按钮 ---------- */
.btn-primary { background: var(--primary); color: #fff; border: none; padding: 10px 18px; border-radius: var(--r-sm); cursor: pointer; font-size: 14px; font-weight: 600; box-shadow: var(--sh-xs); transition: background .15s, box-shadow .15s, transform .1s; }
.btn-primary:hover { background: var(--primary-600); box-shadow: var(--sh-sm); }
.btn-primary:active { transform: translateY(1px); }
.btn-secondary { background: var(--surface); color: var(--text-2); border: 1px solid var(--line-strong); padding: 9px 16px; border-radius: var(--r-sm); cursor: pointer; font-size: 14px; font-weight: 600; transition: background .15s, border-color .15s; }
.btn-secondary:hover { background: var(--surface-2); border-color: var(--muted-2); }
.btn-danger { background: var(--red); color: #fff; border: none; padding: 9px 16px; border-radius: var(--r-sm); cursor: pointer; font-size: 14px; font-weight: 600; box-shadow: var(--sh-xs); transition: background .15s; }
.btn-danger:hover { background: var(--red-700); }
.btn-ghost { background: transparent; border: 1px solid var(--line); color: var(--muted); padding: 7px 13px; border-radius: var(--r-sm); cursor: pointer; font-size: 13px; transition: background .15s, color .15s, border-color .15s; }
.btn-ghost:hover { background: var(--surface-2); color: var(--text-2); border-color: var(--line-strong); }
.btn-sm { padding: 6px 12px; font-size: 13px; border-radius: var(--r-xs); }

/* ---------- 登录 ---------- */
.login-view { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(1200px 600px at 70% -10%, #2c4ba8 0%, transparent 60%), linear-gradient(135deg,#1e3a8a,#274fb0 55%,#1b2c66); padding: 20px; position: relative; overflow: hidden; }
.login-view::before { content: ''; position: absolute; inset: 0; background-image: radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px); background-size: 22px 22px; opacity: .5; }
.login-card { position: relative; z-index: 1; background: rgba(255,255,255,.98); width: 100%; max-width: 420px; border-radius: var(--r-lg); padding: 30px 30px 26px; box-shadow: 0 24px 70px rgba(8,15,40,.38); }
.login-brand { display: flex; flex-direction: column; align-items: center; gap: 10px; margin-bottom: 22px; text-align: center; }
.login-logo { width: 62px; height: 62px; border-radius: var(--r); overflow: hidden; box-shadow: 0 8px 22px rgba(30,58,138,.4); }
.login-brand .brand-title { font-size: 19px; font-weight: 800; letter-spacing: 1px; color: var(--primary); }
.login-brand .brand-slogan { font-family: 'Noto Serif SC', serif; font-size: 12px; color: var(--muted); letter-spacing: 3px; }
.tabs { display: flex; gap: 8px; margin-bottom: 16px; background: var(--surface-3); padding: 4px; border-radius: var(--r-sm); }
.tab { flex: 1; padding: 9px; border: none; background: transparent; border-radius: 6px; cursor: pointer; color: var(--muted); font-size: 14px; font-weight: 600; transition: all .15s; }
.tab.active { background: #fff; color: var(--primary); box-shadow: var(--sh-xs); }
.auth-form { display: flex; flex-direction: column; gap: 11px; }
.auth-form input, .auth-form select { padding: 12px 13px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); font-size: 14px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.auth-form input:focus, .auth-form select:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
.login-seal { position: fixed; right: 7%; bottom: 12%; animation: sealFloat 4s ease-in-out infinite; pointer-events: none; opacity: .95; z-index: 0; }
@keyframes sealFloat { 0%,100% { transform: translateY(0) rotate(-8deg); } 50% { transform: translateY(-12px) rotate(-8deg); } }
@media (max-width: 900px) { .login-seal { display: none; } }
.msg { font-size: 13px; min-height: 18px; }
.msg.error { color: var(--red); } .msg.ok { color: var(--green); }

/* ---------- 主布局：侧边栏 + 顶栏 ---------- */
.app-view { display: flex; min-height: 100vh; }
.sidebar {
  width: 232px; flex: none; background: linear-gradient(180deg,#22357e 0%, #1b2c66 100%);
  color: #fff; display: flex; flex-direction: column; padding: 18px 14px; position: sticky; top: 0; height: 100vh;
  box-shadow: 2px 0 18px rgba(15,23,42,.18); z-index: 8;
}
.side-logo { font-size: 19px; font-weight: 800; text-align: center; padding: 6px 0 6px; letter-spacing: 3px; display: flex; align-items: center; justify-content: center; gap: 8px; }
.side-logo::before { content: ''; width: 22px; height: 22px; border-radius: 7px; background: linear-gradient(135deg,#3b82f6,#1e3a8a); box-shadow: 0 3px 10px rgba(59,130,246,.5); }
.sidebar nav { display: flex; flex-direction: column; gap: 3px; flex: 1; margin-top: 14px; overflow-y: auto; }
.nav-item { display: flex; align-items: center; gap: 12px; padding: 11px 13px; border-radius: var(--r-sm); cursor: pointer; color: #c3cde6; font-size: 14px; font-weight: 500; position: relative; transition: background .15s, color .15s; }
.nav-item svg { width: 19px; height: 19px; flex: none; opacity: .9; }
.nav-item:hover { background: rgba(255,255,255,.1); color: #fff; }
.nav-item.active { background: #fff; color: var(--primary); font-weight: 700; box-shadow: var(--sh-sm); }
.nav-item.active::before { content: ''; position: absolute; left: 0; top: 9px; bottom: 9px; width: 4px; border-radius: 0 4px 4px 0; background: var(--primary); }
.side-user { border-top: 1px solid rgba(255,255,255,.14); padding-top: 13px; margin-top: 8px; }
#side-user-name { font-weight: 700; font-size: 14px; } #side-user-role { margin: 2px 0 9px; color: #aeb9d6; }
.side-user .btn-ghost { color: #c3cde6; border-color: rgba(255,255,255,.22); width: 100%; background: rgba(255,255,255,.06); }
.side-user .btn-ghost:hover { background: rgba(255,255,255,.16); color: #fff; border-color: rgba(255,255,255,.35); }

.main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.topbar {
  height: 62px; background: #fff;
  border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between;
  padding: 0 24px; position: sticky; top: 0; z-index: 5; box-shadow: 0 1px 0 rgba(15,23,42,.03);
}
.topbar::after { content: ''; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: linear-gradient(90deg, transparent, rgba(30,58,138,.12), transparent); }
#page-title { font-size: 17px; font-weight: 700; color: var(--text); letter-spacing: .2px; }
.topbar-right { display: flex; align-items: center; gap: 12px; }
.search-wrap { position: relative; }
.search-wrap::before { content: ''; position: absolute; left: 11px; top: 50%; width: 15px; height: 15px; transform: translateY(-50%); background: var(--muted-2); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4-4'/%3E%3C/svg%3E") center/contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4-4'/%3E%3C/svg%3E") center/contain no-repeat; }
#global-search { padding: 9px 12px 9px 34px; border: 1px solid var(--line-strong); border-radius: var(--r-pill); width: 264px; font-size: 13px; background: var(--surface-2); transition: border-color .15s, box-shadow .15s, background .15s; }
#global-search:focus { outline: none; background: #fff; border-color: var(--primary); box-shadow: var(--ring); }
.noti-btn { position: relative; width: 38px; height: 38px; display: inline-flex; align-items: center; justify-content: center; background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-pill); cursor: pointer; font-size: 17px; transition: background .15s, border-color .15s, transform .1s; }
.noti-btn:hover { background: var(--primary-soft); border-color: var(--primary-soft-2); transform: translateY(-1px); }
.badge { position: absolute; top: -5px; right: -5px; background: var(--red); color: #fff; border-radius: var(--r-pill); font-size: 11px; padding: 1px 6px; min-width: 18px; text-align: center; box-shadow: 0 0 0 2px #fff; }

.view { padding: 22px 24px 28px; max-width: var(--content-max); width: 100%; margin: 0 auto; }

/* ---------- 页面标题区（可选，组件级可选用） ---------- */
.page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.page-head .ph-title { font-size: 19px; font-weight: 800; color: var(--text); letter-spacing: .2px; }
.page-head .ph-sub { font-size: 12.5px; color: var(--muted); margin-top: 4px; }
.page-head .ph-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }

/* ---------- 面板 / 卡片 / 区块 ---------- */
.section-title { font-size: 12.5px; font-weight: 700; color: #334155; margin: 2px 0 10px; letter-spacing: .04em; display: flex; align-items: center; gap: 8px; }
.section-title::before { content: ''; width: 3px; height: 13px; background: var(--primary); border-radius: 2px; }
.func-assign { margin-top: 8px; padding: 18px 20px; border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); box-shadow: var(--sh-xs); }
.func-assign .form-grid { gap: 14px 18px; }
/* 开庭负责人可多选（复选框组） */
.hm-multi { display: flex; flex-wrap: wrap; gap: 7px 16px; padding: 9px 11px; border: 1px solid var(--line); border-radius: var(--r-sm); background: #fff; }
.hm-item { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: #334155; cursor: pointer; user-select: none; }
.hm-item input[type=checkbox] { width: 15px; height: 15px; accent-color: var(--primary); cursor: pointer; }
.sub-box { padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--r); background: var(--surface); box-shadow: var(--sh-xs); }
.sub-box + .sub-box { margin-top: 14px; }
.sub-box-title { font-size: 12.5px; font-weight: 700; color: #475569; margin: 0 0 12px; letter-spacing: .04em; display: flex; align-items: center; gap: 8px; }
.sub-box-title::before { content: ''; width: 3px; height: 14px; background: var(--primary); border-radius: 2px; }
.panel { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 20px; margin-bottom: 18px; box-shadow: var(--sh-sm); }
.panel h3 { font-size: 15px; margin-bottom: 14px; color: var(--text); font-weight: 700; }
.row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.toolbar { display: flex; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; align-items: center; }
.panel > .toolbar { margin: -4px 0 16px 0; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.panel-hr { border: none; border-top: 1px solid var(--line); margin: 0 0 14px 0; }
.paste-hint { margin: 10px 0; padding: 13px 15px; border: 1.5px dashed var(--line-strong); border-radius: var(--r-sm); background: var(--surface-2); color: var(--muted); font-size: 13px; line-height: 1.7; }
.paste-hint b { color: var(--text); }
td[data-voucher-cell]:focus { outline: 2px solid #3b82f6; outline-offset: 2px; border-radius: 6px; }
.toolbar input, .toolbar select { padding: 9px 11px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); font-size: 13px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.toolbar input:focus, .toolbar select:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
.toolbar .plaintiff-select { min-width: 140px; }
.toolbar #rp-defendant, .toolbar #rp-plaintiff { min-width: 150px; max-width: 220px; }
.toolbar-sep { width: 1px; height: 24px; background: var(--line); margin: 0 2px; }
.spacer { flex: 1; }

/* ---------- 指标卡 / KPI ---------- */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px,1fr)); gap: 12px; margin-bottom: 18px; }
.stat { position: relative; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); padding: 15px 16px 14px; min-height: 0; display: flex; flex-direction: column; gap: 6px; box-shadow: var(--sh-sm); transition: transform .15s ease, box-shadow .15s ease; overflow: hidden; }
.stat::after { content: ''; position: absolute; left: 0; top: 0; right: 0; height: 3px; background: var(--line); }
.stat:hover { transform: translateY(-2px); box-shadow: var(--sh-md); }
.stat .num { font-size: 22px; font-weight: 800; line-height: 1.1; letter-spacing: -.01em; color: #0f172a; white-space: nowrap; font-variant-numeric: tabular-nums; }
.stat .lbl { display: flex; align-items: center; gap: 6px; color: #64748b; font-size: 11.5px; font-weight: 600; letter-spacing: .02em; }
.stat .lbl::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--line); flex: none; }
.stat.blue::after { background: var(--blue); } .stat.blue .lbl::before { background: var(--blue); } .stat.blue .num { color: var(--blue-700); }
.stat.green::after { background: var(--green); } .stat.green .lbl::before { background: var(--green); } .stat.green .num { color: var(--green-700); }
.stat.amber::after { background: var(--amber); } .stat.amber .lbl::before { background: var(--amber); } .stat.amber .num { color: var(--amber-700); }
.stat.red::after { background: var(--red); } .stat.red .lbl::before { background: var(--red); } .stat.red .num { color: var(--red); }
.stat.purple::after { background: var(--purple); } .stat.purple .lbl::before { background: var(--purple); } .stat.purple .num { color: var(--purple-700); }
.stat.teal::after { background: var(--teal); } .stat.teal .lbl::before { background: var(--teal); } .stat.teal .num { color: var(--teal-700); }
.stat.overdue-card { background: #fff5f5; } .stat.overdue-card::after { background: var(--red); } .stat.overdue-card .lbl::before { background: var(--red); } .stat.overdue-card .num { color: var(--red); }
.stat.seg-fs { background: linear-gradient(180deg,#f3f7ff,#ffffff); } .stat.seg-fs::after { background: var(--blue); } .stat.seg-fs .lbl::before { background: var(--blue); } .stat.seg-fs .num { color: var(--blue-700); }
.stat.seg-jz { background: linear-gradient(180deg,#f6f3ff,#ffffff); } .stat.seg-jz::after { background: var(--purple); } .stat.seg-jz .lbl::before { background: var(--purple); } .stat.seg-jz .num { color: var(--purple-700); }
.stat.seg-st { background: linear-gradient(180deg,#eefbfa,#ffffff); } .stat.seg-st::after { background: var(--teal); } .stat.seg-st .lbl::before { background: var(--teal); } .stat.seg-st .num { color: var(--teal-700); }
.stat.seg-fs, .stat.seg-jz, .stat.seg-st { justify-content: space-between; }
.seg-top { flex: 1; }
.seg-sub { color: var(--muted-2); font-size: 11.5px; line-height: 1.45; margin-top: 5px; }
.seg-mom-text { font-weight: 600; }
.seg-mom-text.up { color: var(--red-700); }
.seg-mom-text.down { color: var(--green-700); }
.seg-mom-text.flat { color: var(--muted); }
.seg-footer { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--line); }
.seg-fil-corner { font-size: 11.5px; font-weight: 600; color: var(--muted-2); background: rgba(255,255,255,.75); padding: 3px 9px; border-radius: var(--r-pill); border: 1px solid var(--line); text-align: right; line-height: 1.4; }
.seg-fil-corner .seg-mom-text { display: block; margin-top: 2px; font-size: 10px; font-weight: 600; }

.kpi-grid { margin-bottom: 16px; }
.stat.kpi { border-radius: var(--r); padding: 15px 16px 14px; box-shadow: var(--sh-sm); }
.stat.kpi::after { background: var(--primary); }
.stat.kpi .num { font-size: 23px; }
.stat.kpi .lbl { margin-top: 1px; }
.kpi-mom { display: inline-block; align-self: flex-start; margin-top: 4px; padding: 2px 9px; border-radius: var(--r-pill); font-size: 11px; font-weight: 600; line-height: 1.5; background: var(--surface-3); color: var(--text-2); }
.kpi-mom.up { background: var(--red-soft); color: var(--red-700); }
.kpi-mom.down { background: var(--green-soft); color: var(--green-700); }
.kpi-mom.flat { background: var(--surface-3); color: var(--muted); }
.kpi-sub { color: var(--muted-2); font-size: 10.5px; margin-top: 2px; }
.kpi-sub .ks-plan { color: var(--muted); }
.kpi-sub .ks-done { color: var(--green); font-weight: 600; }
.kpi-sub .ks-inst { color: var(--primary); font-weight: 600; }
.kpi-sub .ks-ovd { color: #dc2626; font-weight: 600; }
.kpi-sub .ks-fut { color: var(--primary); font-weight: 600; }
.kpi-sub .kpi-mom { margin-top: 0; margin-left: 6px; align-self: auto; vertical-align: middle; }
.kpi-sub-line { display: block; margin-top: 3px; color: #b45309; font-size: 11px; font-weight: 500; }
.kpi-sub-line b { color: #92400e; font-weight: 700; font-size: 12px; }

/* 经营指标统一布局：分区标题 + 行内网格 + 卡片内部统一结构 */
.kpi-section { margin-bottom: 14px; }
.kpi-section:last-child { margin-bottom: 0; }
.kpi-section-title { font-size: 12px; font-weight: 700; color: var(--muted-2); letter-spacing: .04em; margin: 2px 2px 9px; }
.kpi-section > .kpi-grid { margin-bottom: 0; }
.kpi-grid-2 { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.kpi-grid-3 { grid-template-columns: repeat(auto-fit, minmax(248px, 1fr)); }
.stat.kpi.kpi-tile { gap: 6px; }
.kpi-tile .lbl { margin-top: 0; }
.kpi-tile .num { margin: 1px 0; }
.kpi-tile > .kpi-mom { align-self: flex-start; margin-top: 0; }
.kpi-rows { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); display: flex; flex-direction: column; gap: 8px; }
.kpi-row { display: flex; align-items: center; gap: 8px; font-size: 12px; }
.kpi-row .kr-label { color: var(--muted-2); flex: 1; min-width: 0; }
.kpi-row .kr-val { font-weight: 700; color: #0f172a; font-variant-numeric: tabular-nums; }
.kpi-row .kpi-mom { margin: 0; padding: 1px 7px; font-size: 10.5px; align-self: auto; }
.kpi-foot { margin-top: 8px; color: var(--muted-2); font-size: 11px; }

/* ---------- 表格 ---------- */
.table-scroll { overflow: auto; max-height: calc(100vh - 180px); border-radius: var(--r); border: 1px solid var(--line); background: #fff; box-shadow: var(--sh-sm); }
.table-scroll table { border-collapse: collapse; }
@media (max-width: 768px) { .table-scroll { max-height: calc(100vh - 140px); } }
.table-scroll::-webkit-scrollbar { height: 9px; width: 9px; }
.table-scroll::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: var(--r-pill); }
.table-scroll::-webkit-scrollbar-track { background: var(--surface-3); }
.table-scroll th { position: sticky; top: 0; z-index: 10; background: #f8fafc; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { text-align: left; padding: 11px 9px; border-bottom: 1px solid var(--line); }
.cell-input { width: 86px; padding: 6px 8px; border: 1px solid var(--line-strong); border-radius: var(--r-xs); font-size: 12px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.cell-input[type="date"], .inst-due, .inst-paid { width: 132px; }
.cell-input:disabled { background: var(--surface-2); color: var(--muted); }
.cell-input:focus, .cell-input:not(:disabled):hover { outline: none; border-color: var(--primary); }
.cell-input:focus { box-shadow: var(--ring); }
.cell-select { width: 100%; max-width: 150px; padding: 6px 8px; font-size: 12px; border: 1px solid var(--line-strong); border-radius: var(--r-xs); background: #fff; color: var(--text); cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.cell-select:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
.cell-textarea { width: 100%; padding: 8px; border: 1px solid var(--line-strong); border-radius: var(--r-xs); font-size: 13px; resize: vertical; box-sizing: border-box; }
.cell-textarea:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
th { color: var(--muted); font-weight: 600; background: linear-gradient(180deg,#f8fafc,#eef2f7); border-bottom: 2px solid var(--line-strong) !important; }
tbody tr { transition: background .12s; }
tbody tr:hover { background: #f5f8ff; cursor: pointer; }
tbody tr:nth-child(even) { background: #fbfcfe; }
tbody tr:nth-child(even):hover { background: #eef3ff; }
tbody tr.rp-target-row { background: #fef9c3; }
tbody tr.rp-target-row:hover { background: #fde047; }
.num-col, td.num-col { text-align: right; font-variant-numeric: tabular-nums; }
.tag { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: var(--r-pill); font-size: 12px; font-weight: 600; line-height: 1.5; }
.tag.blue { background: var(--blue-soft); color: var(--blue-700); }
.tag.green { background: var(--green-soft); color: var(--green-700); }
.tag.amber { background: var(--amber-soft); color: var(--amber-700); }
.tag.red { background: var(--red-soft); color: var(--red-700); }
.tag.gray { background: var(--surface-3); color: #475569; }
.tag.sm { padding: 1px 8px; font-size: 11px; font-weight: 600; }
.nowrap { white-space: nowrap; }
.compact-table th, .compact-table td { white-space: nowrap; }
.compact-table td { max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.compact-table .plaintiff-cell { max-width: 200px; }
.compact-table th { font-size: 12px; padding: 9px 7px; }
.compact-table td { padding: 9px 7px; }
/* 统计月报「当月回款 / 历史逾期」表格：整行可点击跳转到该案件还款方案 */
.compact-table tbody tr.ops-jump { cursor: pointer; transition: background .12s; }
.compact-table tbody tr.ops-jump:hover { background: #eef2ff; }
#settle-table th { white-space: nowrap; font-size: 12px; padding: 9px 5px; min-width: 64px; }
#settle-table td { white-space: nowrap; }

/* ---------- 立案记录表格 ---------- */
.filing-table th, .filing-table td { padding: 10px 9px; }
.filing-table tbody tr.clickable { cursor: pointer; transition: background .12s; }
.filing-table tbody tr.clickable:hover { background: #eef3ff; }
.pager { display: flex; align-items: center; gap: 12px; justify-content: flex-end; margin-top: 14px; }
.pager .pill-btn:disabled { opacity: .45; cursor: not-allowed; }

/* ---------- 详情 / 表单 ---------- */
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 24px; }
.detail-grid-lg { grid-template-columns: repeat(3, 1fr); gap: 12px 28px; }
.detail-grid .field { padding: 9px 0; border-bottom: 1px dashed var(--line); min-width: 0; }
.detail-grid .field .k { color: var(--muted); font-size: 12px; } .detail-grid .field .v { font-weight: 600; word-break: break-all; overflow-wrap: break-word; }
.form-grid textarea { width: 100%; padding: 10px 11px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); resize: vertical; font-family: inherit; transition: border-color .15s, box-shadow .15s; }
.form-grid textarea:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
.drawer { position: fixed; top: 0; right: 0; width: 360px; max-width: 92vw; height: 100vh; background: #fff; box-shadow: -8px 0 30px rgba(15,23,42,.16); z-index: 30; display: flex; flex-direction: column; }
.drawer-head { padding: 16px 18px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; font-weight: 700; font-size: 15px; }
.drawer-body { padding: 14px 16px; overflow-y: auto; }
.noti-item { padding: 13px; border: 1px solid var(--line); border-radius: var(--r-sm); margin-bottom: 10px; cursor: pointer; transition: background .15s, border-color .15s; }
.noti-item:hover { background: var(--surface-2); border-color: var(--line-strong); }
/* 开庭提醒：仅显示约 4 条，超出部分用纵向滚动条查看 */
.hearing-panel #hearing-list { max-height: 360px; overflow-y: auto; padding-right: 4px; }
.hearing-panel #hearing-list::-webkit-scrollbar { width: 6px; }
.hearing-panel #hearing-list::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 3px; }
/* 还款方案提醒：标签组（已调解天数 / 调解书 / 待录入方案）统一为 .tag 样式并右对齐 */
.rpp-tags { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex: 0 0 auto; }
.rpp-tags .tag { align-self: flex-end; }
.tag.purple { background: var(--purple-soft); color: var(--purple-700); }
.tag.remind { background: #cffafe; color: #0e7490; }
.ew-tags { display: inline-flex; align-items: center; gap: 6px; }
.cm-tags { display: inline-flex; align-items: center; gap: 6px; }
.di-filter { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 12px; }
.di-btn { font-size: 12px; font-weight: 500; color: var(--muted); background: var(--surface-2); border: 1px solid var(--line); padding: 4px 10px; border-radius: var(--r-pill); cursor: pointer; transition: background .15s, border-color .15s, color .15s; }
.di-btn:hover { border-color: var(--line-strong); color: var(--text); }
.di-btn.active { color: #fff; background: var(--primary); border-color: var(--primary); }
.di-badge { display: inline-block; margin-left: 2px; font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums; opacity: .9; }
.di-week { display: flex; gap: 6px; margin: 0 0 12px; }
.di-day { flex: 1; min-width: 0; text-align: center; padding: 8px 2px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface-2); cursor: pointer; transition: background .15s, border-color .15s, color .15s; }
.di-day:hover { border-color: var(--line-strong); background: var(--surface-3); }
.di-day.active { color: #fff; background: var(--primary); border-color: var(--primary); }
.di-day.today:not(.active) { border-color: var(--primary); background: var(--primary-soft); }
.di-day .dow { font-size: 11px; color: var(--muted); margin-bottom: 2px; }
.di-day.active .dow { color: rgba(255,255,255,.85); }
.di-day .dd { font-size: 13px; font-weight: 700; line-height: 1.2; }
.di-day .cnt { font-size: 11px; margin-top: 2px; font-variant-numeric: tabular-nums; }
.di-day.active .cnt { color: rgba(255,255,255,.9); }
#mediator-call-list { max-height: 372px; overflow-y: auto; padding-right: 3px; } /* 同时显示约 4 条，其余滚动 */
#mediator-call-list .mc-item:last-child { margin-bottom: 0; }
#court-mediation-list { max-height: 372px; overflow-y: auto; padding-right: 3px; } /* 同时显示约 4 条，其余滚动 */
#court-mediation-list .cm-item:last-child { margin-bottom: 0; }
#preservation-list { max-height: 372px; overflow-y: auto; padding-right: 3px; } /* 同时显示约 4 条，其余滚动 */
#preservation-list .pr-item:last-child { margin-bottom: 0; }
#repayment-plan-list { max-height: 372px; overflow-y: auto; padding-right: 3px; } /* 同时显示约 4 条，其余滚动 */
#repayment-plan-list .rpp-item:last-child { margin-bottom: 0; }
/* 还款方案待录入：名称单独一行，调解书状态在上、待录入方案在其下方竖排 */
.ov-amt-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 10px; flex-wrap: nowrap; }
.ov-amt-row .ov-amt { flex: 1 1 auto; min-width: 0; }
#entry-work-list { max-height: 372px; overflow-y: auto; padding-right: 3px; } /* 同时显示约 4 条，其余滚动 */
#entry-work-list .ew-item:last-child { margin-bottom: 0; }
#docissue-list { max-height: 380px; overflow-y: auto; padding-right: 4px; }
#docissue-list .di-item { padding: 10px 12px; margin-bottom: 8px; }
#docissue-list .di-item:last-child { margin-bottom: 0; }
#docissue-list .di-item .ov-sub { margin-top: 2px; }
#docissue-list .di-item .ov-amt { margin-top: 2px; }
.di-right { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.pr-right { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.pr-hearing { font-size: 12px; color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.cm-right { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.cm-doc-status { font-size: 12px; color: var(--muted); white-space: nowrap; }
.di-read-btn { font-size: 12px; font-weight: 500; padding: 3px 10px; border-radius: var(--r-pill); border: 1px solid var(--line); background: #fff7ed; color: #9a3412; cursor: pointer; transition: background .15s, border-color .15s, color .15s; line-height: 1.3; }
.di-read-btn:hover { border-color: #fdba74; }
.di-read-btn.read { background: #dcfce7; border-color: #22c55e; color: #15803d; }
.di-read-btn.read:hover { border-color: #16a34a; }
.ov-item { cursor: pointer; transition: border-color .15s, box-shadow .15s, transform .1s; }
.ov-item:hover { border-color: var(--primary); box-shadow: 0 2px 10px rgba(37,99,235,.14); transform: translateY(-1px); }
.ov-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ov-name { font-weight: 600; color: var(--text); }
.ov-sub { font-size: 12px; color: var(--muted); margin-top: 4px; }
.ov-amt { font-size: 12px; color: var(--muted); margin-top: 3px; font-variant-numeric: tabular-nums; }
.ov-hearing { font-size: 12px; font-weight: 700; color: var(--primary); margin-top: 5px; display: flex; align-items: center; gap: 5px; }
.ov-hearing::before { content: '●'; font-size: 8px; color: var(--primary); }
.tag-todo { display: inline-block; background: #eef2ff; color: #3b5bdb; border: 1px solid #c7d2fe; border-radius: 6px; font-size: 11px; padding: 1px 6px; margin-right: 6px; vertical-align: middle; }

.modal { position: fixed; inset: 0; background: rgba(15,23,42,.55); display: flex; align-items: center; justify-content: center; z-index: 40; padding: 16px; }
.modal-card { background: #fff; width: 100%; max-width: min(1420px, calc(100vw - 24px)); border-radius: var(--r-lg); max-height: 92vh; display: flex; flex-direction: column; box-sizing: border-box; box-shadow: var(--sh-lg); overflow: hidden; }
.modal-head { padding: 17px 20px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; font-weight: 700; font-size: 15px; }
.modal-body { padding: 20px; overflow-y: auto; overflow-x: auto; flex: 1; min-height: 0; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px 16px; align-items: start; }
.form-grid label { font-size: 12px; color: var(--muted); display: block; margin-bottom: 5px; font-weight: 600; }
.form-grid input, .form-grid select { width: 100%; padding: 10px 11px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); font-size: 13px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.form-grid input:focus, .form-grid select:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }

/* 成本费用：每行三列（费用 / 承担 / 缴费时间），等宽 */
.cost-grid { display: flex; flex-direction: column; gap: 12px; }
.cost-row { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 12px; align-items: start; }
.cost-row label { font-size: 12px; color: var(--muted); display: block; margin-bottom: 5px; font-weight: 600; }
.cost-row input, .cost-row select { width: 100%; padding: 10px 11px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); font-size: 13px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.cost-row input:focus, .cost-row select:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
.form-full { grid-column: 1 / -1; }
.blocks-2col { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.blocks-2col > .func-assign { margin-top: 0; }
.perm-grid { display: flex; flex-wrap: wrap; gap: 10px 18px; }
.perm-item { font-size: 13px; color: var(--text); display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.perm-item input { width: auto; margin: 0; accent-color: var(--primary); }
.form-actions { display: flex; justify-content: flex-end; align-items: center; gap: 10px; margin-top: 4px; }
.form-actions .btn-primary { min-width: 200px; }

/* ---------- 分期表格行 ---------- */
.inst-row td { padding: 7px 6px; vertical-align: middle; }
.inst-row td > * { vertical-align: middle; }
.inst-row td { white-space: nowrap; }
.inst-row td > .pill-btn, .inst-row td > a.pill-btn { display: inline-flex; align-items: center; margin: 0 2px; }
.inst-row td:has(> .pill-btn), .inst-row td:has(> a.pill-btn) { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; }

.toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%); background: #0f172a; color: #fff; padding: 11px 20px; border-radius: var(--r-pill); z-index: 50; font-size: 13px; box-shadow: var(--sh-md); }

.pill-btn { padding: 7px 13px; border-radius: var(--r-sm); border: 1px solid var(--line-strong); background: #fff; cursor: pointer; font-size: 13px; font-weight: 500; transition: background .15s, border-color .15s, color .15s; }
.pill-btn:hover { background: var(--surface-2); border-color: var(--muted-2); }
.pill-danger { color: var(--red); border-color: #fecaca; }
.pill-danger:hover { background: var(--red-soft); border-color: #fca5a5; }

/* ---------- 法院联想下拉 ---------- */
.autocomplete-list { display:none; position:absolute; top:100%; left:0; right:0; z-index:999; max-height:200px; overflow-y:auto; background:#fff; border:1px solid var(--line-strong); border-radius: var(--r-sm); box-shadow: var(--sh-md); margin-top:3px; }
.autocomplete-item { height:38px; padding:0 12px; cursor:pointer; font-size:13px; border-bottom:1px solid #f0f0f0; display:flex; align-items:center; justify-content:space-between; gap:10px; box-sizing:border-box; }
.autocomplete-item .ac-name { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.autocomplete-item .ac-sub { flex:none; font-size:11px; color:#8a94a6; }
.autocomplete-item.active .ac-sub, .autocomplete-item:hover .ac-sub { color:#5b7cc4; }
.autocomplete-item:last-child { border-bottom:none; }
.autocomplete-item:hover, .autocomplete-item.active { background:#e8f0fe; color:#1a56db; }
.ocr-box { background: var(--surface-2); border: 1px dashed var(--line-strong); border-radius: var(--r); padding: 14px; text-align: center; margin-bottom: 14px; }

/* ---------- 上传区 ---------- */
.upload-zone { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding: 20px; border: 2px dashed var(--line-strong); border-radius: var(--r); background: var(--surface-2); }
.upload-zone .muted { width: 100%; }

/* ---------- 进度条 ---------- */
.bar { background: var(--surface-3); border-radius: var(--r-pill); height: 9px; width: 92px; overflow: hidden; display: inline-block; vertical-align: middle; box-shadow: inset 0 1px 2px rgba(15,23,42,.08); }
.bar-fill { background: linear-gradient(90deg,var(--green),#22c55e); height: 100%; }

/* ---------- AI 助手 ---------- */
.ai-messages { flex: 1; display: flex; flex-direction: column; gap: 10px; }
.ai-msg { padding: 11px 13px; border-radius: 12px; font-size: 13px; line-height: 1.65; white-space: pre-wrap; box-shadow: var(--sh-xs); }
.ai-msg.user { background: var(--primary); color: #fff; align-self: flex-end; max-width: 85%; border-bottom-right-radius: 4px; }
.ai-msg.bot { background: var(--surface-2); color: var(--text); align-self: flex-start; max-width: 85%; border-bottom-left-radius: 4px; }
.ai-input-row { display: flex; gap: 8px; padding: 12px; border-top: 1px solid var(--line); }
.ai-input-row textarea { flex: 1; resize: none; height: 48px; padding: 9px 11px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); font-family: inherit; transition: border-color .15s, box-shadow .15s; }
.ai-input-row textarea:focus { outline: none; border-color: var(--primary); box-shadow: var(--ring); }
.ai-input-row .btn-primary { align-self: flex-end; }

/* ---------- 工作台日历 + 待办 ---------- */
.dash-right { display: grid; grid-template-rows: auto auto; gap: 18px; align-items: start; }
.overdue-panel #overdue-list { max-height: 380px; overflow-y: auto; padding-right: 3px; }
.todo-panel { min-height: 260px; }
.cal-header { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.cal-header select { padding: 5px 7px; border: 1px solid var(--line-strong); border-radius: var(--r-xs); font-size: 12px; background: #fff; }
.cal-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; color: var(--muted); font-size: 11px; margin-bottom: 4px; }
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-cell { min-height: 36px; aspect-ratio: 1.35/1; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: var(--r-xs); cursor: pointer; font-size: 12px; border: 1px solid transparent; position: relative; transition: background .12s; }
.cal-cell:hover { background: var(--surface-2); }
.cal-other { color: var(--muted-2); }
.cal-today { background: var(--primary-soft); color: var(--primary); font-weight: 700; }
.cal-selected { border-color: var(--primary); background: #eff6ff; }
.cal-dot { width: 4px; height: 4px; background: var(--amber); border-radius: 50%; margin-top: 2px; }
.cal-dot.due { background: var(--amber); }
.cal-dot.paid { background: #16a34a; }
.cal-dot.overdue { background: var(--red); }
.todo-section { margin-bottom: 14px; }
.todo-section-title { font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.todo-item { padding: 11px 13px; border: 1px solid var(--line); border-radius: var(--r-sm); margin-bottom: 8px; cursor: pointer; background: #fff; transition: background .15s, border-color .15s, transform .1s; }
.todo-item:hover { background: var(--surface-2); border-color: var(--line-strong); transform: translateY(-1px); }
.todo-item.todo-overdue { border-left: 3px solid var(--red); }
.todo-item.todo-due { border-left: 3px solid var(--amber); }
.todo-item.todo-paid { border-left: 3px solid #16a34a; }
.todo-item.todo-info { border-left: 3px solid var(--blue); }
.todo-top { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 4px; }
.todo-right { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.todo-case { font-weight: 600; font-size: 13px; }
.todo-title { font-size: 12px; color: var(--text); line-height: 1.5; }
.todo-amount-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 4px; }
.todo-amount { font-size: 13px; color: var(--red); font-weight: 700; }
.todo-enf { flex: 0 0 auto; }
.todo-ovd-flag { margin: 2px 0 2px; }
.todo-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--muted); padding: 30px 0; }
.empty-box { font-size: 42px; margin-bottom: 8px; }

/* 逾期提醒 · 可编辑「逾期原因」备注 */
.ov-remark { margin-top: 6px; border-top: 1px dashed var(--line); padding-top: 6px; }
.ov-remark-input { width: 100%; box-sizing: border-box; resize: vertical; font: inherit; font-size: 12px; line-height: 1.5; color: var(--text); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 6px 8px; background: var(--surface-2); }
.ov-remark-input:focus { outline: none; border-color: var(--primary); background: #fff; }
.ov-remark-bar { display: flex; align-items: center; justify-content: flex-end; gap: 8px; margin-top: 4px; }
.ov-remark-msg { font-size: 11px; }
.ov-remark-msg.ok { color: #16a34a; }
.ov-remark-msg.err { color: var(--red); }
/* 保全提醒行内「备注」放右侧并排时用（20260917prremark）：去掉顶部虚线分隔与外边距 */
.ov-remark-side { margin-top: 0; border-top: none; padding-top: 0; }
.ov-remark-side .ov-remark-input { background: #fff; }
.btn-xs { font-size: 12px; line-height: 1; padding: 4px 10px; border: 1px solid var(--line-strong); border-radius: var(--r-sm); background: #fff; color: var(--text); cursor: pointer; }
.btn-xs:hover { border-color: var(--primary); color: var(--primary); }

/* 逾期提醒面板：行距收紧 + 左侧红条强调，整体更紧凑精致 */
.overdue-panel .noti-item { padding: 9px 11px; margin-bottom: 7px; box-shadow: inset 3px 0 0 0 var(--red); }
.overdue-panel .noti-item:hover { background: var(--red-soft); }
.overdue-panel .ov-top { gap: 8px; }
.overdue-panel .ov-name { font-size: 13px; }
.overdue-panel .ov-sub { font-size: 11.5px; margin-top: 3px; color: var(--muted); }
.overdue-panel .ov-amt { font-size: 11.5px; margin-top: 2px; }
.overdue-panel .ov-enf { margin-top: 3px; display: flex; justify-content: flex-end; }
.overdue-panel .ov-remark { margin-top: 6px; padding-top: 5px; }
.overdue-panel .ov-remark-input { padding: 5px 7px; font-size: 11.5px; }
.overdue-panel .ov-remark-bar { margin-top: 3px; }

@media (max-width: 900px) { .overdue-panel { margin-bottom: 14px; } }

/* ---------- 工作台 · 当日收款汇总 ---------- */
.today-collect h3 { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; }
.tc-date { font-size: 11.5px; font-weight: 500; color: var(--muted); background: var(--surface-2); border: 1px solid var(--line); padding: 2px 8px; border-radius: var(--r-xs); font-variant-numeric: tabular-nums; }
.tc-month-btn { margin-left: auto; font-size: 11.5px; font-weight: 600; color: var(--primary); background: var(--primary-soft); border: 1px solid transparent; padding: 4px 11px; border-radius: var(--r-pill); cursor: pointer; transition: background .15s, border-color .15s; white-space: nowrap; }
.tc-month-btn:hover { background: var(--primary-soft-2); border-color: #c7d2fe; }
.tc-week-sum { margin-top: 10px; padding-top: 9px; border-top: 1px dashed var(--line); text-align: right; }
.tc-week-link { display: inline-block; font-size: 12px; font-weight: 600; color: var(--primary); cursor: pointer; }
.tc-week-link:hover { text-decoration: underline; }
.tc-head { display: flex; align-items: center; justify-content: space-between; padding: 11px 15px; background: linear-gradient(90deg, #fff7ed, #ffffff); border: 1px solid #fed7aa; border-radius: var(--r-sm); margin-bottom: 10px; }
.tc-cnt { font-size: 12.5px; color: #9a3412; font-weight: 600; }
.tc-cnt b { font-size: 15px; }
.tc-total { font-size: 20px; font-weight: 800; color: var(--red); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.tc-cols { display: grid; grid-template-columns: 1fr 1.1fr 82px 72px; gap: 10px; padding: 0 12px 6px; font-size: 11px; color: #94a3b8; font-weight: 600; letter-spacing: .03em; }
.tc-cols span:last-child { text-align: right; }
.tc-list { max-height: 330px; overflow-y: auto; padding-right: 3px; }
.tc-item { display: grid; grid-template-columns: 1fr 1.1fr 82px 72px; gap: 10px; align-items: center; padding: 10px 13px; border: 1px solid var(--line); border-radius: var(--r-sm); margin-bottom: 7px; cursor: pointer; transition: background .15s, border-color .15s, transform .15s; background: #fff; }
.tc-item:hover { background: #fff7ed; border-color: #fdba74; transform: translateX(2px); }
.tc-def { font-weight: 600; color: #0f172a; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-pla { color: #475569; font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tc-amt { text-align: right; font-weight: 700; color: var(--red); font-size: 13.5px; font-variant-numeric: tabular-nums; }
.tc-pdate { text-align: right; color: #64748b; font-size: 12px; font-variant-numeric: tabular-nums; }
.tc-empty { padding: 20px; text-align: center; color: #94a3b8; font-size: 12.5px; }

/* ---------- 缴费提醒：紧凑三列表 ---------- */
.fee-head { padding: 9px 12px; background: linear-gradient(90deg, #f0f9ff, #ffffff); border-color: #bae6fd; }
.fee-head .tc-cnt { color: #075985; }
.fee-head .tc-total { color: var(--primary); font-size: 18px; }
.fee-cols { grid-template-columns: 0.85fr 1fr 0.95fr 100px; gap: 8px; padding: 0 10px 4px; }
.fee-list .tc-item { grid-template-columns: 0.85fr 1fr 0.95fr 100px; gap: 8px; padding: 8px 11px; margin-bottom: 6px; }
.fee-list .tc-item:hover { background: #f0f9ff; border-color: #7dd3fc; }
.tc-court { color: #475569; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- 当月法院已调解 KPI 钻取 ---------- */
.kpi-clickable { cursor: pointer; position: relative; transition: box-shadow .15s, transform .15s; }
.kpi-clickable:hover { box-shadow: 0 6px 18px rgba(30,58,138,.16); transform: translateY(-1px); }
.kpi-drill { position: absolute; right: 12px; bottom: 10px; font-size: 11px; font-weight: 600; color: var(--primary); opacity: .75; }
.kpi-clickable:hover .kpi-drill { opacity: 1; }
.md-wrap { max-height: 68vh; overflow-y: auto; padding-right: 4px; }
.md-day { margin-bottom: 16px; }
.md-day:last-child { margin-bottom: 0; }
.md-day-hd { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 14px; color: var(--text); padding: 8px 12px; background: var(--surface-3); border-radius: var(--r-sm); margin-bottom: 8px; position: sticky; top: 0; z-index: 1; }
.md-day-cnt { font-size: 12px; font-weight: 600; color: var(--primary); background: var(--primary-soft); padding: 1px 10px; border-radius: 999px; }
.md-cols { display: grid; grid-template-columns: 1.1fr 0.8fr 0.85fr 1fr 1.4fr; gap: 10px; padding: 0 12px 6px; font-size: 11px; color: var(--muted-2); font-weight: 600; letter-spacing: .03em; }
.md-item { display: grid; grid-template-columns: 1.1fr 0.8fr 0.85fr 1fr 1.4fr; gap: 10px; align-items: center; padding: 10px 13px; border: 1px solid var(--line); border-radius: var(--r-sm); margin-bottom: 7px; cursor: pointer; background: #fff; transition: background .15s, border-color .15s, transform .15s; }
.md-item:hover { background: var(--primary-soft); border-color: var(--primary-soft-2); transform: translateX(2px); }
.md-def { font-weight: 600; color: var(--text); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-med, .md-court, .md-lawyer { color: #475569; font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-cat { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.md-filter { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; padding: 10px 12px; background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r-sm); margin-bottom: 8px; }
.md-filter-lbl { display: flex; flex-direction: column; gap: 4px; font-size: 11px; font-weight: 600; color: var(--muted-2); }
.md-filter-sel { min-width: 110px; max-width: 170px; font-size: 12px; padding: 5px 8px; border: 1px solid var(--line); border-radius: var(--r-sm); background: #fff; color: var(--text); cursor: pointer; }
.md-filter-reset { margin-left: auto; font-size: 12px; padding: 5px 12px; border: 1px solid var(--line); background: #fff; border-radius: var(--r-sm); cursor: pointer; color: var(--muted); transition: background .15s, border-color .15s, color .15s; }
.md-filter-reset:hover { border-color: var(--primary); color: var(--primary); }
.md-summary { font-size: 12px; color: var(--muted); padding: 0 12px 10px; }
.fee-amt { color: var(--primary); font-size: 12.5px; text-align: right; display: flex; flex-direction: column; align-items: flex-end; line-height: 1.35; }
.fee-amt b { font-size: 13.5px; }
.fee-detail { font-weight: 400; color: var(--muted); font-size: 11px; margin-top: 2px; max-width: 130px; word-break: break-all; }
.fee-multi { display: inline-block; background: #fff7ed; color: #c2410c; font-size: 10px; line-height: 1.5; padding: 0 5px; border-radius: 8px; margin-bottom: 2px; }

/* ---------- 工作台左右分栏 ---------- */
.dash-duo { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; margin-bottom: 18px; }
.dash-duo > .panel { margin-bottom: 0; }
.dash-left { display: grid; grid-template-rows: auto auto; gap: 18px; align-items: start; }
.todo-panel h3 { display: flex; align-items: center; gap: 9px; margin-bottom: 12px; }
.tc-date-today { color: var(--primary); background: var(--primary-soft); border-color: transparent; font-weight: 600; }
#dash-todo { max-height: 392px; overflow-y: auto; padding-right: 3px; }
.todo-section-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; position: sticky; top: 0; background: var(--bg); z-index: 2; padding: 6px 0; margin-bottom: 6px; }
.todo-title-right { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.todo-cnt { font-size: 11.5px; font-weight: 600; color: var(--amber-700); background: var(--amber-soft); border: 1px solid #fde68a; padding: 1px 7px; border-radius: var(--r-pill); font-variant-numeric: tabular-nums; }
.todo-cnt.red { color: var(--red-700); background: var(--red-soft); border-color: #fecaca; }
.todo-cnt.green { color: var(--green-700); background: var(--green-soft); border-color: #bbf7d0; }
.todo-empty-sm { padding: 14px 0; }
.todo-empty-sm .empty-box { font-size: 26px; margin-bottom: 4px; }
.todo-empty-sm > div:last-child { font-size: 12px; }
.todo-next { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 0; }
/* 新增法院立案：近 7 天日期 tab —— pill chip */
.nc-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; padding: 2px 0; }
.nc-tab {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 500;
  color: var(--muted);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 5px 12px;
  cursor: pointer;
  transition: color .18s, background .18s, border-color .18s, box-shadow .18s;
  font-variant-numeric: tabular-nums;
  box-shadow: 0 1px 2px rgba(15,23,42,.04);
}
.nc-tab:hover {
  color: var(--text);
  border-color: var(--line-strong);
  background: var(--surface-2);
  box-shadow: 0 2px 6px rgba(15,23,42,.07);
}
.nc-tab:focus { outline: none; }
.nc-tab:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.nc-tab.active {
  color: #fff;
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-700, var(--primary)) 100%);
  border-color: transparent;
  font-weight: 600;
  box-shadow: 0 2px 10px rgba(99,102,241,.28), inset 0 1px 0 rgba(255,255,255,.18);
}
.nc-tab-cnt {
  font-size: 11px; font-weight: 700;
  min-width: 18px; height: 18px;
  line-height: 16px;
  text-align: center;
  padding: 0 5px;
  border-radius: 999px;
  background: #fff7ed;
  color: var(--amber-700);
  border: 1px solid #fde68a;
  box-shadow: 0 1px 2px rgba(217,119,6,.10);
}
.nc-tab.active .nc-tab-cnt {
  background: #fff;
  color: var(--primary-700, var(--primary));
  border-color: transparent;
  box-shadow: 0 1px 3px rgba(15,23,42,.18);
}

/* 新增法院立案：空状态柔和卡片 */
.new-court-panel .todo-empty-sm {
  background: linear-gradient(180deg, var(--surface-2) 0%, transparent 100%);
  border-radius: 10px;
  padding: 22px 14px;
  margin: 2px 0 0;
}
.new-court-panel .todo-empty-sm .empty-box {
  width: 52px; height: 52px;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--primary-soft) 0%, #fff 100%);
  border-radius: 50%;
  font-size: 26px;
  margin-bottom: 8px;
  box-shadow: 0 2px 8px rgba(99,102,241,.10), inset 0 0 0 1px rgba(99,102,241,.08);
}
.todo-next-lbl { font-size: 11px; color: var(--muted); }
.todo-next-chip { font-size: 11.5px; color: var(--primary); background: var(--primary-soft); border-radius: var(--r-xs); padding: 3px 9px; cursor: pointer; font-variant-numeric: tabular-nums; transition: background .15s; }
.todo-next-chip:hover { background: var(--primary-soft-2); }
.todo-next-chip.active { background: var(--primary); color: #fff; font-weight: 600; }
.todo-next-chip.today { background: var(--green-soft); color: var(--green-700); font-weight: 600; }
.todo-name { font-weight: 700; }

/* ---------- 立案法院名录维度切换 ---------- */
.court-dim-tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 16px 0 20px; }
.court-dim-tab { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 16px 12px; background: var(--surface-2); border: 1px solid var(--line); border-radius: var(--r); cursor: pointer; transition: background .15s, border-color .15s, box-shadow .15s, transform .1s; }
.court-dim-tab:hover { background: var(--primary-soft); border-color: var(--primary-soft-2); }
.court-dim-tab.active { background: var(--primary); color: #fff; border-color: var(--primary); box-shadow: var(--sh-sm); }
.court-dim-tab .num { font-size: 22px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; }
.court-dim-tab .label { font-size: 14px; font-weight: 600; }
.court-dim-tab.active .label { color: rgba(255,255,255,.92); }

/* ---------- 弹窗关闭交互 ---------- */
@keyframes modalShake { 0%,100% { transform: translateX(0); } 20% { transform: translateX(-7px); } 40% { transform: translateX(6px); } 60% { transform: translateX(-4px); } 80% { transform: translateX(2px); } }
.modal-shake { animation: modalShake .32s ease; }
@keyframes hintPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(220,38,38,0); } 35% { box-shadow: 0 0 0 6px rgba(220,38,38,.22); } }
.modal-x { background: transparent; border: 1px solid var(--line); color: var(--muted); width: 30px; height: 30px; line-height: 1; border-radius: var(--r-sm); cursor: pointer; font-size: 15px; display: inline-flex; align-items: center; justify-content: center; flex: none; transition: background .15s, color .15s, border-color .15s; }
.modal-x:hover { background: var(--red-soft); border-color: #fca5a5; color: var(--red); }
.modal-x.hint-pulse { animation: hintPulse .6s ease; background: var(--red-soft); border-color: #fca5a5; color: var(--red); }

/* ---------- 还款计划拖拽排序 ---------- */
.drag-handle { cursor: grab; user-select: none; font-size: 13px; line-height: 1; color: #38bdf8; margin-right: 5px; vertical-align: middle; transition: color .15s, transform .15s; }
.drag-handle:hover { color: #0ea5e9; transform: scale(1.15); }
.drag-handle:active { cursor: grabbing; }
tr.inst-row.dragging { opacity: .45; background: #e0f2fe; }
tr.inst-row.flash { animation: flashRow .9s ease; }
@keyframes flashRow { 0% { background: #fef9c3; } 100% { background: transparent; } }
tr.drop-indicator td { padding: 0 !important; border: none !important; }
tr.drop-indicator .drop-line { height: 4px; background: linear-gradient(90deg, #0ea5e9, #2563eb); border-radius: 3px; position: relative; margin: 2px 0; box-shadow: 0 0 8px rgba(37,99,235,.55); }
tr.drop-indicator .drop-badge { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); background: #2563eb; color: #fff; font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: var(--r-pill); white-space: nowrap; box-shadow: 0 2px 6px rgba(37,99,235,.4); }
.drag-tooltip { position: fixed; z-index: 9999; background: #2563eb; color: #fff; font-size: 13px; font-weight: 700; padding: 4px 10px; border-radius: var(--r-sm); pointer-events: none; box-shadow: var(--sh-md); white-space: nowrap; }

/* ---------- 空状态 ---------- */
.empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 52px 20px; color: var(--muted); text-align: center; gap: 10px; }
.empty-state .es-icon { font-size: 42px; opacity: .45; }
.empty-state .es-title { font-size: 14px; font-weight: 600; color: var(--text-2); }
.empty-state .es-text { font-size: 12.5px; max-width: 360px; line-height: 1.6; }
.empty-state .es-action { margin-top: 6px; }

/* ---------- 骨架屏 ---------- */
.skeleton { background: linear-gradient(90deg,#eef2f7 25%,#e2e8f0 37%,#eef2f7 63%); background-size: 400% 100%; animation: sk 1.4s ease infinite; border-radius: var(--r-xs); }
@keyframes sk { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* ---------- 全局滚动条 ---------- */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #cdd5e0; border-radius: var(--r-pill); border: 2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background: #b4bfce; }
::-webkit-scrollbar-track { background: transparent; }

/* ---------- 移动端 ---------- */
@media (max-width: 760px) {
  .sidebar { position: fixed; bottom: 0; top: auto; left: 0; right: 0; width: 100%; height: auto; flex-direction: row; padding: 6px; z-index: 20; }
  .side-logo, .side-user { display: none; }
  .sidebar nav { flex-direction: row; overflow-x: auto; margin-top: 0; }
  .nav-item { white-space: nowrap; padding: 9px 11px; }
  .nav-item span:last-child { display: none; }
  .nav-item.active::before { display: none; }
  .main { padding-bottom: 60px; }
  .topbar { padding: 0 12px; }
  #global-search { width: 140px; }
  .detail-grid, .form-grid, .blocks-2col { grid-template-columns: 1fr; }
  .detail-grid-lg { grid-template-columns: 1fr 1fr; }
  .drawer { width: 100%; }
  .view { padding: 14px; }
  table { font-size: 12px; }
}

/* ===== 团队架构卡片 ===== */
.team-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; }
.team-card { background: var(--surface, #fff); border: 1px solid var(--line, #e6e8ef); border-radius: var(--r, 10px); padding: 14px; box-shadow: 0 1px 3px rgba(15,23,42,.04); }
.team-card .tc-name { font-weight: 600; font-size: 15px; color: var(--text, #1f2937); }
.team-card .tc-count { color: var(--muted, #94a3b8); font-size: 13px; margin: 4px 0 10px; }
.team-card .tc-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.member-check-list { max-height: 320px; overflow: auto; display: grid; grid-template-columns: 1fr 1fr; gap: 4px 16px; padding: 6px 0; }
.member-check-list .check-row { display: flex; align-items: center; gap: 6px; font-size: 13px; padding: 3px 0; cursor: pointer; }
.member-check-list .check-row .muted { font-size: 12px; }

/* ---------- 操作记录（审计） ---------- */
.log-op { color: var(--blue-700); font-size: 12px; margin-left: 4px; white-space: nowrap; }
.op-page .toolbar-card { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; margin-bottom: 16px; box-shadow: 0 1px 2px rgba(15,23,42,.04); }
.op-page .filters { display: flex; flex-wrap: wrap; gap: 14px 16px; align-items: flex-end; }
.op-page .field { display: flex; flex-direction: column; gap: 5px; }
.op-page .field > label { font-size: 11.5px; font-weight: 600; color: var(--muted); letter-spacing: .02em; }
.op-page .field input, .op-page .field select { padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; font-size: 13px; background: #fff; color: var(--text); min-width: 160px; height: 38px; box-sizing: border-box; }
.op-page .field input:focus, .op-page .field select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-soft); }
.op-page .actions { display: flex; gap: 10px; align-items: center; margin-left: auto; }
.op-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 13px; }
.op-table thead th { position: sticky; top: 0; z-index: 10; background: linear-gradient(180deg,#f8fafc,#eef2f7); color: #475569; font-weight: 700; font-size: 12px; text-align: left; padding: 12px 12px; border-bottom: 2px solid var(--line); white-space: nowrap; }
.op-table tbody td { padding: 11px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
.op-table tbody tr:nth-child(even) { background: #fafcff; }
.op-table tbody tr:hover { background: #eef2ff; }
.op-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; flex-wrap: wrap; }
.op-pager-btns { display: flex; gap: 8px; }

/* ---------- 本地文书同步进度条 ---------- */
.ldoc-prog { position: fixed; right: 22px; bottom: 22px; width: 320px; max-width: calc(100vw - 44px); background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); box-shadow: var(--sh-lg); z-index: 60; padding: 16px 18px; font-size: 13px; }
.ldoc-prog-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; gap: 10px; }
.ldoc-prog-title { font-weight: 700; color: var(--text); font-size: 14px; }
.ldoc-prog-x { background: transparent; border: 1px solid var(--line); color: var(--muted); width: 26px; height: 26px; line-height: 1; border-radius: var(--r-sm); cursor: pointer; font-size: 16px; display: inline-flex; align-items: center; justify-content: center; flex: none; transition: background .15s, color .15s, border-color .15s; }
.ldoc-prog-x:hover { background: var(--red-soft); border-color: #fca5a5; color: var(--red); }
.ldoc-prog-bar { height: 9px; background: var(--surface-3); border-radius: var(--r-pill); overflow: hidden; }
.ldoc-prog-fill { height: 100%; width: 0%; background: linear-gradient(90deg, var(--primary), var(--primary-600)); border-radius: var(--r-pill); transition: width .2s ease; }
.ldoc-prog-meta { display: flex; align-items: baseline; justify-content: space-between; margin-top: 9px; gap: 8px; }
.ldoc-prog-pct { font-size: 18px; font-weight: 700; color: var(--primary); font-variant-numeric: tabular-nums; }
.ldoc-prog-count { font-size: 12px; color: var(--muted); white-space: nowrap; }
.ldoc-prog-sub { margin-top: 4px; font-size: 12px; color: var(--muted-2); }
.ldoc-prog.done .ldoc-prog-fill { background: linear-gradient(90deg, var(--green), var(--green-700)); }
.ldoc-prog.done .ldoc-prog-pct { color: var(--green-700); }
.ldoc-prog-fails { margin-top: 12px; border-top: 1px dashed var(--line); padding-top: 10px; display: none; }
.ldoc-prog-fails-hd { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; font-size: 12px; color: var(--muted); }
.ldoc-prog-fail { display: flex; align-items: center; gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--surface-3); }
.ldoc-prog-fail:last-child { border-bottom: none; }
.ldoc-prog-fail-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: var(--text); }
.ldoc-prog-fail.busy .ldoc-prog-fail-name { color: var(--muted); }
.ldoc-prog-fail.err .ldoc-prog-fail-name { color: var(--red); }
.ldoc-prog-retry { flex: none; background: var(--primary-soft); color: var(--primary); border: 1px solid transparent; border-radius: var(--r-sm); padding: 3px 10px; font-size: 12px; cursor: pointer; transition: background .15s, color .15s; }
.ldoc-prog-retry:hover { background: var(--primary); color: #fff; }
.ldoc-prog-fail.busy .ldoc-prog-retry { opacity: .5; cursor: default; }
.ldoc-prog-fail.err .ldoc-prog-retry { background: var(--red-soft); color: var(--red); }

/* ===== 重复案件查重 ===== */
.dup-hint { margin-top: 6px; padding: 6px 10px; border-radius: var(--r-sm); font-size: 12.5px; line-height: 1.4; }
.dup-hint.has-weak { background: #fff7e6; color: #b26a00; border: 1px solid #ffe0a3; }
.dup-hint.has-strong { background: #fff1f0; color: #cf1322; border: 1px solid #ffccc7; }
.dup-badge { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; margin-right: 6px; }
.dup-badge.strong { background: #fff1f0; color: #cf1322; border: 1px solid #ffccc7; }
.dup-badge.weak { background: #fff7e6; color: #b26a00; border: 1px solid #ffe0a3; }
.dup-modal { max-width: 720px; }
.dup-modal h3 { margin-top: 0; }
.dup-list { list-style: none; margin: 0; padding: 0; max-height: 46vh; overflow: auto; border: 1px solid var(--border); border-radius: var(--r-sm); }
.dup-item { padding: 8px 10px; border-bottom: 1px solid var(--border); font-size: 13px; display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.dup-item:last-child { border-bottom: none; }
.dup-item.strong { background: #fff7f6; }
.dup-item .dup-open { font-weight: 700; color: var(--primary); cursor: pointer; margin-right: 4px; }
.dup-item span { color: var(--text); }
.dup-group { margin-bottom: 16px; border: 1px solid var(--border); border-radius: var(--r-sm); overflow: hidden; }
.dup-group-key { padding: 8px 12px; background: var(--bg-soft); font-weight: 600; font-size: 13px; border-bottom: 1px solid var(--border); }
.danger-text { color: #cf1322; }
/* ===== 立案日历（精致版 · fcal 作用域，不影响工作台日历） ===== */
.cal-wrap { margin-top: 10px; }
.fcal { font-size: 12px; max-width: 360px; margin: 0 auto; }
.fcal .cal-head { display: flex; align-items: center; justify-content: center; gap: 12px; margin-bottom: 12px; }
.fcal .cal-title { font-size: 14px; font-weight: 600; letter-spacing: .4px; min-width: 96px; text-align: center; color: var(--text-2); }
.fcal .cal-nav { width: 26px; height: 26px; padding: 0; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 16px; line-height: 1; color: var(--muted); background: var(--surface-2); border: 1px solid var(--line); }
.fcal .cal-nav:hover { background: var(--primary-soft); color: var(--primary); border-color: var(--primary-soft); }
.fcal .cal-today { margin-left: 2px; font-size: 12px; padding: 4px 12px; border-radius: 999px; color: var(--primary); border: 1px solid var(--primary-soft-2); background: #fff; }
.fcal .cal-today:hover { background: var(--primary-soft); }
.fcal .cal-weekdays { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; color: var(--muted); font-size: 11px; margin-bottom: 6px; }
.fcal .cal-wk { padding: 2px 0; }
.fcal .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.fcal .cal-cell { position: relative; aspect-ratio: 1 / 1; min-height: 48px; border-radius: 10px; cursor: pointer; border: 1px solid var(--line); color: var(--text); background: var(--surface); transition: background .15s ease, border-color .15s ease, transform .08s ease, box-shadow .15s ease; }
.fcal .cal-cell:hover { background: var(--primary-soft); border-color: var(--primary-soft-2); transform: translateY(-1px); }
.fcal .cal-cell.cal-blank { background: transparent; border: none; cursor: default; }
.fcal .cal-cell.cal-blank:hover { transform: none; background: transparent; border: none; }
.fcal .cal-day { position: absolute; top: 5px; left: 7px; font-size: 13px; font-variant-numeric: tabular-nums; line-height: 1; }
.fcal .cal-cell.has { background: #f4f8ff; border-color: #dbe7ff; }
.fcal .cal-cell.has:hover { background: #e9f1ff; }
.fcal .cal-cell.has .cal-day { font-weight: 600; color: var(--primary-600); }
.fcal .cal-badge { position: absolute; bottom: 5px; right: 5px; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 999px; background: var(--primary); color: #fff; font-size: 10px; font-weight: 600; line-height: 16px; text-align: center; font-variant-numeric: tabular-nums; box-shadow: 0 1px 2px rgba(30,58,138,.25); }
.fcal .cal-cell.today { background: var(--primary-soft); border-color: var(--primary); }
.fcal .cal-cell.today .cal-day { color: var(--primary); font-weight: 700; }
.fcal .cal-cell.selected { border-color: var(--primary); background: #e9f1ff; box-shadow: 0 0 0 3px var(--primary-soft); }
/* 当天明细标题 + 表格 */
#filing-day-detail { margin-top: 14px; }
#filing-day-detail .cal-day-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--text); padding: 9px 12px; background: var(--surface-2); border-radius: 8px; border-left: 3px solid var(--primary); margin-bottom: 8px; }
#filing-day-detail .filing-day-table { font-size: 12.5px; }
#filing-day-detail .filing-day-table th { background: var(--surface-2); font-weight: 600; color: var(--text-2); }
#filing-day-detail .filing-day-table tbody tr:hover { background: var(--primary-soft); }
#filing-day-detail .filing-day-table td { padding: 7px 10px; }

/* 提醒中心大 tab：每类一个专属配色（dot + 边框色，选中填色） */
#rm-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 14px; }
#rm-tabs .pill-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: var(--r-pill); border: 1px solid var(--line-strong); background: #fff; cursor: pointer; font-size: 13px; font-weight: 600; transition: background .15s, border-color .15s, color .15s, box-shadow .15s; }
#rm-tabs .pill-btn:hover { box-shadow: 0 1px 6px rgba(0,0,0,.08); }
#rm-tabs .pill-btn.active { box-shadow: 0 2px 8px rgba(0,0,0,.12); }
.rm-tab-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
.rm-tab-cnt { font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; opacity: .85; }
