:root {
  --bg: #f3f1ea;
  --paper: #fffdf8;
  --ink: #1c2430;
  --muted: #5f6b78;
  --line: #e4ddd0;
  --brand: #c45c26;
  --brand-dark: #8f3d14;
  --navy: #1e3a4c;
  --ok: #1f7a4d;
  --warn: #b45309;
  --err: #b42318;
  --shadow: 0 10px 30px rgba(28, 36, 48, 0.08);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body {
  font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  color: var(--ink);
  background: var(--bg);
}

a { color: var(--brand-dark); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3 { margin: 0 0 0.6rem; font-weight: 650; }
.muted { color: var(--muted); font-size: 0.9rem; }

.login-wrap {
  min-height: 100vh;
  display: grid;
  place-items: center;
  background: linear-gradient(160deg, #1e3a4c 0%, #3a2a22 70%);
}
.login-card {
  width: min(420px, 92vw);
  background: var(--paper);
  padding: 2rem 1.8rem 1.6rem;
  border-radius: 16px;
  box-shadow: var(--shadow);
}
.login-card .brand { font-size: 0.85rem; letter-spacing: 0.12em; color: var(--brand); }
.login-card h1 { font-size: 1.45rem; margin-top: 0.35rem; }
.login-card label { display: block; font-size: 0.85rem; margin: 0.8rem 0 0.3rem; }
.login-card input {
  width: 100%;
  padding: 0.65rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  font-size: 1rem;
}
.hint { margin-top: 1rem; font-size: 0.8rem; color: var(--muted); }
.ding-scan-btn {
  display: block;
  text-align: center;
  padding: 0.75rem 1rem;
  border-radius: 10px;
  background: #1677ff;
  color: #fff !important;
  text-decoration: none !important;
  font-weight: 600;
}
.ding-scan-btn:hover { filter: brightness(1.05); }
.pwd-fallback { margin-top: 1.1rem; }
.pwd-fallback summary { cursor: pointer; color: var(--muted); font-size: 0.9rem; }
.login-card .btn-link {
  display: inline;
  padding: 0;
  border: 0;
  background: none;
  color: var(--brand);
  font: inherit;
  cursor: pointer;
  text-decoration: underline;
}

.app { display: grid; grid-template-columns: 228px 1fr; min-height: 100vh; }
.side {
  position: sticky;
  top: 0;
  align-self: start;
  height: 100vh;
  max-height: 100vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--navy);
  color: #e8eef2;
  padding: 1.2rem 0.9rem;
}
.side .logo { flex: none; padding: 0 0.6rem 1.1rem; border-bottom: 1px solid rgba(255,255,255,0.08); }
.side .logo small { opacity: 0.65; letter-spacing: 0.08em; }
.side .logo strong { display: block; font-size: 1.05rem; margin-top: 0.2rem; }
.side nav {
  margin-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
}
.side a {
  color: #d5dee6;
  text-decoration: none;
  padding: 0.5rem 0.7rem;
  border-radius: 8px;
  font-size: 0.92rem;
}
.side a:hover, .side a.active { background: rgba(255,255,255,0.08); color: #fff; }
.side .nav-group {
  margin-top: 0.85rem;
  padding-top: 0.85rem;
  border-top: 1px solid rgba(255,255,255,0.08);
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.side .nav-label {
  padding: 0.15rem 0.7rem 0.4rem;
  font-size: 0.75rem;
  letter-spacing: 0.14em;
  color: #e2b36a;
}
.side .nav-group a { padding-left: 1.05rem; }
.side a.nav-mod {
  margin-top: 0.85rem;
  font-weight: 650;
}
.side a.nav-mod + a.nav-mod { margin-top: 0.15rem; }
.side a.nav-mod + a:not(.nav-mod) { margin-top: 0.85rem; }
.side .who {
  margin-top: 0.8rem;
  flex: none;
  padding: 0.7rem;
  background: rgba(0,0,0,0.18);
  border-radius: 10px;
  font-size: 0.82rem;
}

.main { padding: 1.4rem 1.8rem 3rem; }
.top {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 1rem;
  margin-bottom: 1.1rem;
}
.actions { display: flex; gap: 0.5rem; flex-wrap: wrap; }

.btn, button, input[type=submit] {
  border: 0;
  background: var(--brand);
  color: #fff;
  padding: 0.48rem 0.9rem;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.9rem;
}
.btn.ghost, button.ghost {
  background: transparent;
  color: var(--navy);
  border: 1px solid var(--line);
}
.btn.ok { background: var(--ok); }
.btn.warn { background: var(--warn); }
.btn.err, button.err { background: var(--err); color: #fff; }
button.ghost.err, .btn.ghost.err {
  background: transparent;
  color: var(--err);
  border-color: #ead0cc;
}

.card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 1rem 1.1rem;
  box-shadow: var(--shadow);
  margin-bottom: 1rem;
}
.grid { display: grid; gap: 1rem; }
.grid.kpis { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.kpi { padding: 0.9rem 1rem; }
.kpi b { display: block; font-size: 1.45rem; margin-top: 0.2rem; }
.kpi span { font-size: 0.82rem; color: var(--muted); }
.grid.kpis .kpi small { display: block; color: var(--muted); font-size: 0.75rem; margin-top: 0.15rem; }
.grid.kpis .kpi b.err { color: var(--err); }
.pnl-board { margin-bottom: 1rem; padding: 1.15rem 1.2rem 1.25rem; }
.pnl-eyebrow {
  margin: 0 0 0.2rem;
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: none;
  color: var(--brand);
  font-weight: 650;
}
.pnl-head { display: flex; flex-wrap: wrap; gap: 0.85rem 1.2rem; align-items: flex-start; justify-content: space-between; margin-bottom: 1rem; }
.pnl-head h2 { margin: 0 0 0.25rem; font-size: 1.35rem; color: var(--navy); }
.pnl-lead { margin: 0; max-width: 36rem; line-height: 1.45; }
.pnl-filter { margin: 0; }
.pnl-hero {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.6rem 1.2rem;
  margin: 0 0 1.15rem;
  padding: 1rem 1.15rem;
  border-radius: 12px;
  border: 1px solid #e6d2c4;
  background: linear-gradient(135deg, #fff8f2 0%, #f7ebe3 55%, #efe4d8 100%);
  color: inherit;
  text-decoration: none !important;
  transition: border-color 0.15s ease, transform 0.15s ease;
}
.pnl-hero:hover { border-color: var(--brand); transform: translateY(-1px); }
.pnl-hero.is-neg {
  border-color: #ead0cc;
  background: linear-gradient(135deg, #fff6f5 0%, #f8e8e6 100%);
}
.pnl-hero-meta { display: flex; flex-direction: column; gap: 0.2rem; min-width: 0; }
.pnl-hero-meta span { font-size: 0.86rem; font-weight: 650; color: var(--navy); }
.pnl-hero-meta small { color: var(--muted); font-size: 0.78rem; }
.pnl-hero-num {
  font-size: clamp(1.7rem, 2.4vw, 2.15rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--brand-dark);
  line-height: 1;
}
.pnl-hero.is-neg .pnl-hero-num { color: var(--err); }
.pnl-sec { margin: 0 0 1.05rem; }
.pnl-sec-bar {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.6rem;
  margin: 0 0 0.5rem;
  padding-bottom: 0.35rem;
  border-bottom: 1px solid var(--line);
}
.pnl-sec-title { margin: 0; font-size: 0.95rem; font-weight: 650; color: var(--navy); }
.pnl-kpis { margin: 0; gap: 0.75rem; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); }
.pnl-kpis .kpi {
  background: #fbf8f2;
  box-shadow: none;
  border: 1px solid var(--line);
  border-radius: 12px;
  margin: 0;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.pnl-kpis .kpi:hover { background: #fff; border-color: #d7c8b4; text-decoration: none; }
.pnl-kpis .kpi b {
  font-size: 1.35rem;
  letter-spacing: -0.02em;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
}
.pnl-kpis .kpi b.err { color: var(--err); }
.pnl-kpis-pipe .kpi { background: #f6f4ef; }
.pnl-report { margin-top: 0.15rem; }
.pnl-report h2 { margin-top: 0; font-size: 1rem; }
.pnl-report .err { color: var(--err); }
.pnl-report .num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pnl-meter { height: 5px; background: #ebe4d8; border-radius: 99px; margin-top: 0.55rem; overflow: hidden; }
.pnl-meter i { display: block; height: 100%; max-width: 100%; background: linear-gradient(90deg, var(--brand), #d4783a); border-radius: 99px; }
.pnl-tgt { margin: 0 0 1rem; align-items: end; padding: 0.75rem 0.85rem; border: 1px dashed var(--line); border-radius: 10px; background: #fbf8f2; }
.pnl-tgt .form-actions { margin: 0; align-self: end; }
.pnl-tgt-tip { margin: 0 0 0.9rem; }
.pnl-pipe-fold { border: 0; }
.pnl-pipe-fold > summary { list-style: none; cursor: pointer; }
.pnl-pipe-fold > summary::-webkit-details-marker { display: none; }
.pnl-sec-summary { margin-bottom: 0.55rem; }
.pnl-pipe-fold[open] .pnl-sec-summary { margin-bottom: 0.55rem; }
.pnl-pipe-fold > summary .muted::after { content: ""; }
.pnl-kinds a.on { background: var(--navy); color: #fff; }
.pnl-kinds a.on b { color: #fff; }
.kpi-link { text-decoration: none; color: inherit; }
.kpi-link:hover { background: #eef4fa; }
.desk-pipe-wrap { margin: 0 0 0.75rem; }
.desk-pipe {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
  margin: 0;
}
.desk-pipe > strong {
  font-size: 0.78rem;
  color: var(--muted);
  margin-right: 0.15rem;
}
.desk-pipe a {
  display: inline-flex;
  align-items: baseline;
  gap: 0.25rem;
  padding: 0.22rem 0.5rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: inherit;
  text-decoration: none;
  font-size: 0.78rem;
}
.desk-pipe a b { font-size: 0.82rem; }
.desk-pipe a:hover { border-color: var(--brand); color: var(--brand-dark); text-decoration: none; }
.desk-pipe a.dim { opacity: 0.5; }
.desk-top-acts { align-self: flex-start; }
.top:has(.desk-top-acts) { align-items: flex-start; }
.desk-card-h { margin-bottom: 0.65rem; }
.desk-card-h h2 { margin-bottom: 0.2rem; }
.desk-card-h h2 em {
  display: inline-block;
  min-width: 1.2rem;
  padding: 0 0.35rem;
  margin-left: 0.15rem;
  border-radius: 8px;
  background: var(--brand);
  color: #fff;
  font-style: normal;
  font-size: 0.78rem;
  line-height: 1.25rem;
  text-align: center;
  vertical-align: middle;
}
.desk-todo { list-style: none; margin: 0; padding: 0; }
.desk-todo li { margin: 0 0 0.4rem; }
.desk-todo-row {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  color: inherit;
  text-decoration: none;
}
.desk-todo-row:hover {
  border-color: var(--brand);
  background: #fff8f3;
  text-decoration: none;
}
.desk-todo-main { flex: 1; min-width: 0; }
.desk-todo-main b {
  display: block;
  font-size: 0.9rem;
  font-weight: 650;
  line-height: 1.35;
}
.desk-todo-main small {
  display: block;
  margin-top: 0.12rem;
  color: var(--muted);
  font-size: 0.75rem;
}
.desk-todo-go {
  flex: 0 0 auto;
  color: var(--brand-dark);
  font-size: 0.8rem;
  font-weight: 650;
}
.desk-empty { margin: 0; font-size: 0.9rem; }
.desk-more { margin: 0.45rem 0 0; }
.desk-table { width: 100%; }
.sched-add-hint { margin: 0 0 0.65rem; }
.sched-allday { justify-content: flex-end; padding-top: 1.4rem; }
.sched-allday input { width: auto; }
.ov-proj { margin: 0 0 1rem; }
.ov-proj-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.55rem;
}
.ov-proj-head h2 { margin: 0; }
.desk-split {
  display: grid;
  grid-template-columns: 1.45fr 0.75fr;
  gap: 0.75rem;
  align-items: start;
  margin-bottom: 0.75rem;
}
.desk-split .card { margin-bottom: 0; }
.desk-side {
  display: grid;
  gap: 0.75rem;
  min-width: 0;
}
.desk-todo-card { min-height: 12rem; }
.desk-msg-fold { padding-bottom: 0.55rem; }
.desk-msg-fold > summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
}
.desk-msg-fold > summary::-webkit-details-marker { display: none; }
.desk-msg-sum {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0;
}
.desk-msg-fold[open] .desk-msg-sum { margin-bottom: 0.55rem; }
.desk-msg-hint { font-size: 0.75rem; white-space: nowrap; }
.desk-follow-groups { display: grid; gap: 0.65rem; }
.desk-follow-who {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin: 0 0 0.35rem;
  padding-bottom: 0.2rem;
  border-bottom: 1px dashed #eadfce;
}
.desk-follow-who b { font-size: 0.92rem; color: var(--navy); }
.desk-day-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin: 0 0 0.55rem;
}
.desk-day-pick { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0.45rem 0.75rem; }
.desk-day-hint { font-size: 0.78rem; }
.desk-range-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.65rem;
  font-size: 0.84rem;
}
.desk-range-nav a { color: var(--brand-dark); }
.desk-range-nav b { color: var(--navy); font-weight: 650; }
.desk-day-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.35rem;
  margin: 0 0 0.75rem;
}
.desk-day-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.1rem;
  padding: 0.35rem 0.2rem;
  border: 1px solid #e0d4c3;
  border-radius: 8px;
  background: #fffaf3;
  text-decoration: none;
  color: inherit;
  position: relative;
  font-size: 0.78rem;
}
.desk-day-chip.desk-day-week2 { background: #f4f7fb; border-color: #d5dde8; }
.desk-day-chip:hover { border-color: #c45c28; }
.desk-day-chip.on {
  border-color: #c45c26;
  background: #fff1e6;
  box-shadow: inset 0 0 0 1px #c45c26;
}
.desk-day-w { color: var(--muted); font-size: 0.7rem; }
.desk-day-chip strong { font-size: 0.82rem; font-weight: 700; }
.desk-day-chip em {
  position: absolute;
  top: 2px;
  right: 4px;
  font-style: normal;
  font-size: 0.68rem;
  color: #c45c26;
  font-weight: 700;
}
.list-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.85rem;
  margin: 0.65rem 0 0.2rem;
  font-size: 0.84rem;
}
.list-pager a { color: var(--brand-dark); }
.proj-list-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.45rem 0.85rem;
}
.proj-sort-group {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem 0.45rem;
}
.proj-sort-btn {
  appearance: none;
  border: 1px solid #e0d4c3;
  background: #fff;
  color: var(--navy);
  border-radius: 999px;
  padding: 0.16rem 0.55rem;
  font: inherit;
  font-size: 0.76rem;
  text-decoration: none;
}
.proj-sort-btn.on,
.proj-sort-btn:hover {
  border-color: #c45c26;
  color: #c45c26;
  background: #fff7ef;
}
.proj-hub-list-wrap { overflow-x: auto; }
.proj-hub-list th.num,
.proj-hub-list td.num { text-align: right; white-space: nowrap; }
.proj-hub-list tr.is-stale td { background: #fff6f2; }
.proj-hub-list.is-compact .proj-col-extra { display: none; }
.proj-compact-sub { font-size: 0.78rem; margin-top: 0.15rem; }
.proj-cols-toggle { margin-left: auto; }
.proj-list-toolbar { display: flex; flex-wrap: wrap; gap: 0.5rem 0.8rem; align-items: center; }
.desk-todo-filter {
  margin: 0 0 0.55rem;
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0;
  padding: 0.15rem;
  border-radius: 10px;
  background: #eef1f4;
  border: 1px solid #dde3ea;
  width: fit-content;
  max-width: 100%;
}
.desk-todo-filter button {
  appearance: none;
  border: 0;
  background: transparent;
  border-radius: 8px;
  padding: 0.28rem 0.7rem;
  font: inherit;
  font-size: 0.84rem;
  cursor: pointer;
  color: #5b6773;
}
.desk-todo-filter button.on {
  background: #fff;
  color: var(--navy);
  font-weight: 700;
  box-shadow: 0 1px 2px rgba(30, 40, 50, 0.08);
}
.desk-todo-break { margin: 0 0 0.45rem; font-size: 0.82rem; }
.desk-todo-more-row.is-hidden { display: none; }
.finance-page details.fin-tip-lg > summary { cursor: pointer; list-style: none; }
.finance-page details.fin-tip-lg > summary::-webkit-details-marker { display: none; }
.finance-page details.fin-tip-lg[open] > summary { margin-bottom: 0.35rem; }
.catalog-st-chips { margin: 0.4rem 0 0.7rem; flex-wrap: wrap; }
.series-maintain-fold { margin-top: 0.65rem; border-top: 1px solid var(--line); padding-top: 0.45rem; }
.series-maintain-fold > summary { cursor: pointer; color: var(--muted); font-size: 0.86rem; }
.sol-pub-chips { margin: 0 0 0.75rem; }
.wh-todo-toggle { margin: 0 0 0.55rem; }
.rd-top-actions { margin: 0 0 0.75rem; }
.proj-hub-acts {
  white-space: nowrap;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.4rem;
  justify-content: flex-end;
}
.client-pick-acts {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.desk-board-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.45rem 0.85rem;
  margin: 0 0 0.55rem;
  font-size: 0.82rem;
}
.desk-page-must {
  margin: 0 0 0.85rem;
  padding: 0.75rem 0.9rem;
  border-radius: 12px;
  background: linear-gradient(135deg, #fff8f0 0%, #f3f7fb 100%);
  border: 1px solid #ecd9c4;
}
.desk-must-h {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 0.75rem;
  margin-bottom: 0.55rem;
}
.desk-must-h strong { font-size: 1.05rem; color: var(--navy); }
.desk-must-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.desk-must-chip {
  display: flex;
  flex-direction: column;
  min-width: 5.8rem;
  padding: 0.5rem 0.75rem;
  border-radius: 10px;
  background: #fff;
  border: 1px solid #e5ddd0;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.12s ease, box-shadow 0.12s ease, transform 0.12s ease;
}
.desk-must-chip em {
  font-style: normal;
  font-size: 1.45rem;
  font-weight: 700;
  line-height: 1.1;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
}
.desk-must-chip span { font-size: 0.76rem; color: #6b7280; margin-top: 0.12rem; }
.desk-must-chip.has { border-color: #c45c26; box-shadow: 0 0 0 1px rgba(196,92,38,0.14); }
.desk-must-chip.has em { color: #c45c26; }
.desk-must-chip.overdue { border-color: #e8a39a; background: #fff8f7; }
.desk-must-chip.overdue em { color: #b42318; }
.desk-must-chip.unread em { color: #b42318; }
.desk-must-chip:hover {
  border-color: #c45c26;
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(30, 40, 50, 0.06);
}
.desk-layout-fold {
  margin: 0 0 0.4rem;
  border: none;
  background: transparent;
}
.desk-layout-fold > summary {
  cursor: pointer;
  color: #6b7280;
  font-size: 0.82rem;
  list-style: none;
  user-select: none;
}
.desk-layout-fold > summary::-webkit-details-marker { display: none; }
.desk-layout-fold > summary::before {
  content: "▸ ";
  color: #9ca3af;
}
.desk-layout-fold[open] > summary::before { content: "▾ "; }
.desk-layout-fold[open] .desk-board-bar { margin-top: 0.45rem; }
#desk-board:not(.is-layout-on) .desk-tile-drag,
#desk-board:not(.is-layout-on) .desk-tile-span {
  display: none;
}
.desk-tiles {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  align-items: start;
}
.desk-tile {
  min-width: 0;
  margin-bottom: 0 !important;
  transition: box-shadow 0.15s ease, outline-color 0.15s ease;
}
.desk-tile[data-span="2"],
.desk-tile.is-full {
  grid-column: 1 / -1;
}
.desk-tile-h {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
}
.desk-tile-h > div { flex: 1 1 auto; min-width: 8rem; }
.desk-tile-drag {
  appearance: none;
  border: 1px solid #e0d4c3;
  background: #fffaf3;
  color: #8a7358;
  width: 1.7rem;
  height: 1.7rem;
  border-radius: 7px;
  cursor: grab;
  font: inherit;
  font-size: 0.85rem;
  line-height: 1;
  padding: 0;
  flex: 0 0 auto;
  letter-spacing: -0.08em;
}
.desk-tile-drag:active { cursor: grabbing; }
.desk-tile-span {
  appearance: none;
  border: 1px solid #e0d4c3;
  background: #fff;
  color: var(--navy);
  border-radius: 999px;
  padding: 0.18rem 0.55rem;
  font: inherit;
  font-size: 0.74rem;
  cursor: pointer;
  flex: 0 0 auto;
}
.desk-tile-span:hover,
.desk-tile-drag:hover {
  border-color: #c45c26;
  color: #c45c26;
}
.desk-tile.is-dragging {
  opacity: 0.55;
  outline: 2px dashed #c45c26;
}
.desk-tile.is-over {
  box-shadow: inset 0 0 0 2px #c45c26;
}
.desk-todo-stack {
  display: grid;
  gap: 0.65rem;
}
.desk-today-bar {
  display: grid;
  gap: 0.55rem;
}
.desk-today-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.55rem;
}
.desk-today-date {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 8rem;
  padding: 0.45rem 0.7rem;
  border-radius: 10px;
  background: #fff4ea;
  border: 1px solid #f0d4bc;
}
.desk-today-date strong { font-size: 1.05rem; color: var(--navy); }
.desk-today-date span { color: var(--muted); font-size: 0.82rem; }
.desk-today-stat {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 6.2rem;
  padding: 0.45rem 0.7rem;
  border-radius: 10px;
  border: 1px solid #e6dccf;
  background: #fcfaf6;
  text-decoration: none;
  color: inherit;
}
.desk-today-stat em {
  font-style: normal;
  font-size: 1.25rem;
  font-weight: 750;
  color: var(--navy);
  line-height: 1.1;
}
.desk-today-stat span { font-size: 0.78rem; color: var(--muted); }
.desk-today-stat.has { border-color: #e8b48a; background: #fff7ef; }
.desk-today-stat.has em { color: #c45c26; }
.desk-today-stat.unread { box-shadow: inset 0 0 0 1px #c45c26; }
.desk-today-slots {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
}
.desk-today-col {
  padding: 0.45rem 0.55rem;
  border: 1px solid #eee3d4;
  border-radius: 10px;
  background: #fff;
}
.desk-today-follows { min-width: 0; }
.desk-today-follows {
  margin-top: 0.35rem;
  padding-top: 0.75rem;
  border-top: 1px dashed #eadfce;
}
.desk-today-follows .desk-card-h { margin-bottom: 0.3rem; }
.desk-today-follows .desk-card-h h2 { font-size: 0.9rem; }
.desk-follow-compact {
  gap: 0.45rem;
  max-height: 28rem;
  overflow: auto;
  padding-right: 0.15rem;
}
.desk-follow-compact .desk-follow-who {
  margin: 0 0 0.18rem;
  padding-bottom: 0.12rem;
}
.desk-follow-compact .desk-follow-who b { font-size: 0.82rem; }
.desk-follow-compact .desk-todo li { margin: 0 0 0.22rem; }
.desk-follow-compact .desk-follow-row {
  align-items: flex-start;
  padding: 0.32rem 0.4rem;
  gap: 0.35rem;
}
.desk-follow-compact .desk-todo-main b {
  font-size: 0.82rem;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.desk-follow-compact .desk-follow-meta {
  display: block;
  margin-top: 0.08rem;
  font-size: 0.7rem;
  color: var(--muted);
}
.desk-follow-compact .desk-follow-body {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin-top: 0.12rem;
  font-size: 0.74rem;
  color: #4a5560;
  white-space: normal;
}
.desk-follow-compact .tag { font-size: 0.68rem; padding: 0.04rem 0.3rem; flex: 0 0 auto; }
.desk-today-follows .desk-card-h span { display: block; margin-top: 0.12rem; }
.desk-follow-sub {
  margin: 0.4rem 0 0.15rem;
  font-size: 0.72rem;
  color: var(--muted);
}
.desk-quote-row .tag { min-width: 3.4rem; text-align: center; }
.desk-cal-more { margin: 0.25rem 0 0; font-size: 0.78rem; }
.desk-cal-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  margin: 0 0 0.35rem;
}
.desk-cal-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
}
.desk-cal-arrow {
  min-width: 2rem;
  padding-left: 0.45rem;
  padding-right: 0.45rem;
  font-size: 1.15rem;
  line-height: 1;
}
.desk-cal-range {
  margin-left: 0.25rem;
  font-size: 0.92rem;
  color: var(--navy);
}
.desk-day-focus-bar { margin-bottom: 0.45rem; }
.desk-week-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.28rem;
  margin: 0 0 0.35rem;
}
.desk-month-fold {
  margin: 0 0 0.65rem;
}
.desk-month-fold > summary {
  cursor: pointer;
  color: #6b7280;
  font-size: 0.86rem;
}
.desk-month-fold-nav { margin: 0.4rem 0 0.35rem; }
.desk-month-fold-grid .desk-month-cell { min-height: 3.4rem; }
.desk-from-obj-fold,
.desk-day-summary-fold {
  margin-top: 0.65rem;
  border-top: 1px solid #efe6d8;
  padding-top: 0.35rem;
}
.desk-summary-ops {
  margin: 0.25rem 0 0.45rem;
  font-size: 0.8rem;
}
.desk-plan-tip {
  line-height: 1.35;
}
.desk-gtd-guide {
  margin: 0 0 0.65rem;
  padding: 0.45rem 0.7rem 0.55rem;
  border: 1px dashed #e0d4c3;
  border-radius: 10px;
  background: #fffdf9;
}
.desk-gtd-guide > summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--navy);
  list-style: none;
}
.desk-gtd-guide > summary::-webkit-details-marker { display: none; }
.desk-gtd-steps {
  margin: 0.45rem 0 0.5rem;
  padding-left: 1.2rem;
  font-size: 0.86rem;
  line-height: 1.55;
  color: #4b5563;
}
.desk-gtd-steps li { margin: 0.2rem 0; }
.desk-gtd-hide { margin-top: 0.15rem; }
.desk-capture-lite {
  position: sticky;
  top: 0.35rem;
  z-index: 4;
  background: #fffaf4;
  padding: 0.15rem 0 0.2rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.5rem;
}
.desk-capture-lite > input[name="title"] {
  flex: 1 1 14rem;
  min-width: 10rem;
}
.desk-link-search {
  flex: 1 1 100%;
  position: relative;
}
.desk-link-search input[type="search"] { width: 100%; }
.desk-link-hits {
  position: absolute;
  z-index: 6;
  left: 0;
  right: 0;
  top: 100%;
  margin-top: 0.15rem;
  background: #fff;
  border: 1px solid #eadfce;
  border-radius: 8px;
  box-shadow: 0 6px 18px rgba(30, 40, 50, 0.08);
  max-height: 11rem;
  overflow: auto;
}
.desk-link-hit {
  display: flex;
  gap: 0.45rem;
  align-items: baseline;
  width: 100%;
  text-align: left;
  border: 0;
  background: #fff;
  color: #14202c;
  padding: 0.4rem 0.6rem;
  font: inherit;
  cursor: pointer;
}
.desk-link-hit:hover,
.desk-link-hit:focus {
  background: #fff7ed;
  color: #14202c;
}
.desk-link-hit b {
  flex: 1 1 auto;
  min-width: 0;
  font-weight: 650;
  color: #14202c;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.desk-link-hit .muted {
  flex: 0 0 auto;
  color: #5a6a7a;
  font-size: 0.82rem;
}
.desk-link-hit .tag {
  flex: 0 0 auto;
  color: #5c4030;
  background: #f0e6d8;
}
.desk-link-picked { flex: 1 1 100%; margin: 0; }
.desk-capture-more {
  flex: 1 1 100%;
  margin: 0;
}
.desk-capture-more > summary {
  cursor: pointer;
  font-size: 0.84rem;
  color: #6b7280;
  list-style: none;
}
.desk-capture-more > summary::-webkit-details-marker { display: none; }
.desk-capture-more-body {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.5rem;
  margin-top: 0.4rem;
  align-items: center;
}
.desk-ctx-chips {
  flex: 1 1 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.desk-ctx-label { font-size: 0.78rem; margin-right: 0.15rem; }
.desk-ctx-chip {
  border: 1px solid #e0d4c3;
  background: #fff;
  color: #4b5563;
  border-radius: 999px;
  padding: 0.18rem 0.65rem;
  font-size: 0.78rem;
  cursor: pointer;
}
.desk-ctx-chip:hover { border-color: #c45c26; color: #c45c26; }
.desk-ctx-chip.is-on {
  border-color: #c45c26;
  background: #fff7ef;
  color: #c45c26;
  font-weight: 700;
}
.desk-ctx-hint { flex: 1 1 100%; margin: 0; font-size: 0.78rem; }
.desk-capture-quick {
  flex: 1 1 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.desk-due-chip {
  border: 1px solid #e0d4c3;
  background: #fff;
  color: #4b5563;
  border-radius: 999px;
  padding: 0.18rem 0.65rem;
  font-size: 0.78rem;
  cursor: pointer;
}
.desk-due-chip:hover { border-color: #c45c26; color: #c45c26; }
.desk-due-chip.is-on {
  border-color: #2f7d4a;
  background: #eef8f1;
  color: #1f5c36;
  font-weight: 700;
}
.desk-due-date {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.78rem;
}
.desk-due-date-inp {
  border: 1px solid #e0d4c3;
  border-radius: 8px;
  padding: 0.12rem 0.35rem;
  font-size: 0.78rem;
  width: 8.6rem;
  max-width: 11rem;
  background: #fff;
}
.desk-day-pick input.date-ymd {
  width: 8.6rem;
}
.opex-filter-bar input[type="search"] {
  width: 7.2rem;
  min-width: 0;
}
.desk-due-date-inp:focus {
  outline: none;
  border-color: #c45c26;
}
.desk-recur-check { white-space: nowrap; }
.desk-recur-tag {
  background: #eef4ff;
  color: #2a4a7a;
  border: 1px solid #c8d6ef;
}
.desk-capture-list-inline {
  min-width: 7.5rem;
  max-width: 10rem;
  font-size: 0.82rem;
}
.desk-day-guide {
  border: 1px solid #e8b86d;
  background: linear-gradient(180deg, #fffbf5 0%, #fff 100%);
  border-radius: 12px;
  padding: 0.45rem 0.75rem 0.5rem;
  margin: 0 0 0.55rem;
}
.desk-day-guide > summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.65rem;
}
.desk-day-guide > summary::-webkit-details-marker { display: none; }
.desk-day-guide > summary b { color: var(--navy); font-size: 0.92rem; }
.desk-day-guide[open] > summary { margin-bottom: 0.35rem; }
.desk-day-guide-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0.35rem;
}
.desk-day-guide-list li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.55rem;
  padding: 0.4rem 0.5rem;
  border-radius: 8px;
  background: #fff;
  border: 1px solid #f0e6d8;
}
.desk-day-guide-main {
  flex: 1 1 12rem;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
}
.desk-day-guide-main b { font-size: 0.88rem; font-weight: 600; }
.desk-day-guide-go { flex: 0 0 auto; }
.desk-capture-opts {
  flex: 1 1 100%;
  margin: 0;
  border: 0;
  padding: 0;
}
.desk-capture-opts > summary {
  cursor: pointer;
  font-size: 0.82rem;
  color: #6b7280;
  list-style: none;
  padding: 0.1rem 0;
}
.desk-capture-opts > summary::-webkit-details-marker { display: none; }
.desk-capture-opts[open] > summary { margin-bottom: 0.35rem; }
.desk-capture-opts .desk-ctx-chips,
.desk-capture-opts .desk-capture-quick { margin-top: 0.25rem; }
.desk-today-meta-lite { margin-bottom: 0.25rem; }
.desk-today-meta-lite .desk-today-date strong { display: none; }
.desk-myday-done-fold { margin-top: 0.35rem; }
.desk-myday-done-fold .desk-plan-item { opacity: 0.72; }
.desk-task-organize {
  margin: 0;
  flex: 0 0 auto;
}
.desk-task-organize > summary {
  cursor: pointer;
  font-size: 0.78rem;
  color: #6b7280;
  list-style: none;
  padding: 0.15rem 0.4rem;
  border-radius: 6px;
}
.desk-task-organize > summary::-webkit-details-marker { display: none; }
.desk-task-organize > summary:hover { color: #c45c26; background: #fff7ef; }
.desk-task-organize-body {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  align-items: center;
  padding: 0.35rem 0 0.15rem;
  max-width: 18rem;
}
.desk-task-organize-list select { font-size: 0.8rem; max-width: 8rem; }
.tag.desk-mod-go {
  background: #eef6ff;
  color: #1d4ed8;
  border: 1px solid #bfdbfe;
  text-decoration: none;
}
.tag.desk-mod-go:hover { background: #dbeafe; }
.desk-week-day {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.15rem;
  padding: 0.28rem 0.15rem 0.22rem;
  border: 1px solid #e0d4c3;
  border-radius: 10px;
  background: #fff;
  text-decoration: none;
  color: inherit;
  min-height: 3.05rem;
  transition: border-color .15s, background .15s, box-shadow .15s, transform .12s;
}
.desk-week-day:hover {
  border-color: #c45c26;
  background: #fff4ea;
  transform: translateY(-1px);
}
.desk-week-day.is-weekend { background: #f6f7f9; border-color: #dde3ea; }
.desk-week-day.is-today { background: #fff6ee; }
.desk-week-day.is-today .desk-week-wd { color: #c45c26; font-weight: 700; }
.desk-week-day.is-on {
  border-color: #c45c26;
  box-shadow: 0 0 0 2px rgba(196, 92, 38, 0.18);
  background: #fff;
}
.desk-week-wd {
  font-size: 0.72rem;
  color: var(--muted);
}
.desk-week-day strong {
  font-size: 1.05rem;
  line-height: 1.1;
  color: var(--navy);
}
.desk-cal-legend {
  margin: 0 0 0.35rem;
  font-size: 0.78rem;
}
.desk-week-marks {
  display: inline-flex;
  align-items: center;
  gap: 0.18rem;
  min-height: 1.15rem;
}
.desk-week-day em {
  font-style: normal;
  min-width: 1.15rem;
  height: 1.15rem;
  padding: 0 0.28rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.desk-week-day em.is-due {
  background: #c45c26;
  color: #fff;
}
.desk-week-day em.is-day {
  background: #fff;
  color: #2f7d4a;
  border: 1.5px solid #2f7d4a;
}
.desk-week-day i {
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  background: transparent;
  display: block;
}
/* 月历网格 */
.desk-month-wrap {
  margin: 0 0 0.85rem;
  border: 1px solid #e0d4c3;
  border-radius: 12px;
  background: #fff;
  overflow: hidden;
}
.desk-month-head {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0;
  background: #f7f4ef;
  border-bottom: 1px solid #efe6d8;
}
.desk-month-head span {
  padding: 0.4rem 0.2rem;
  text-align: center;
  font-size: 0.72rem;
  color: var(--muted);
  font-weight: 600;
}
.desk-month-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0;
}
.desk-month-cell {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-height: 4.6rem;
  padding: 0.35rem 0.35rem 0.4rem;
  border-right: 1px solid #f0e8dc;
  border-bottom: 1px solid #f0e8dc;
  text-decoration: none;
  color: inherit;
  background: #fff;
  transition: background .12s, box-shadow .12s;
}
.desk-month-cell:nth-child(7n) { border-right: 0; }
.desk-month-cell:hover { background: #fff8f1; }
.desk-month-cell.is-other {
  background: #f7f8fa;
  color: #9aa3ad;
}
.desk-month-cell.is-other strong { color: #9aa3ad; }
.desk-month-cell.is-weekend:not(.is-other) { background: #fafbfc; }
.desk-month-cell.is-today { background: #fff6ee; }
.desk-month-cell.is-on {
  background: #fff;
  box-shadow: inset 0 0 0 2px #c45c26;
  z-index: 1;
}
.desk-month-cell-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.2rem;
}
.desk-month-cell-h strong {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--navy);
  line-height: 1.2;
}
.desk-month-cell.is-today .desk-month-cell-h strong {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.45rem;
  height: 1.45rem;
  border-radius: 50%;
  background: #c45c26;
  color: #fff;
  font-size: 0.78rem;
}
.desk-month-cell-h em.is-due {
  background: #c45c26;
  color: #fff;
}
.desk-month-cell-h em.is-day {
  background: #fff;
  color: #2f7d4a;
  border: 1.5px solid #2f7d4a;
  box-sizing: border-box;
}
.desk-month-dot.is-due { background: #c45c26; }
.desk-month-dot.is-day {
  background: transparent;
  border: 1.5px solid #2f7d4a;
  box-sizing: border-box;
}
.desk-month-cell-h em {
  font-style: normal;
  min-width: 1rem;
  height: 1rem;
  padding: 0 0.22rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-size: 0.62rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.desk-month-names {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
  min-width: 0;
}
.desk-month-names li {
  margin: 0;
  padding: 0.08rem 0.28rem;
  border-radius: 4px;
  background: #fff1e6;
  color: #8a3d12;
  font-size: 0.68rem;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.desk-month-cell.is-other .desk-month-names li {
  background: #eef1f4;
  color: #7a8490;
}
.desk-month-dot {
  width: 0.35rem;
  height: 0.35rem;
  border-radius: 50%;
  background: #c45c26;
  margin-top: 0.15rem;
  align-self: flex-start;
}
@media (max-width: 720px) {
  .desk-month-cell { min-height: 3.2rem; padding: 0.28rem 0.2rem; }
  .desk-month-names { display: none; }
  .desk-month-cell.has-items:not(:has(.desk-month-dot))::after {
    content: "";
    width: 0.35rem;
    height: 0.35rem;
    border-radius: 50%;
    background: #c45c26;
    margin-top: 0.1rem;
  }
}
.desk-agenda {
  border: 1px solid #e0d4c3;
  border-radius: 12px;
  background: #fff;
  padding: 0.75rem 0.85rem 0.9rem;
}
.desk-agenda-h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem;
  margin-bottom: 0.7rem;
  padding-bottom: 0.55rem;
  border-bottom: 1px solid #efe6d8;
}
.desk-agenda-h b {
  display: block;
  font-size: 1.05rem;
  color: var(--navy);
}
.desk-agenda-h span {
  font-size: 0.85rem;
  color: var(--muted);
}
.desk-agenda-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.desk-agenda-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  align-items: start;
}
.desk-agenda-block {
  min-width: 0;
  padding: 0.55rem 0.6rem 0.65rem;
  border-radius: 10px;
  background: #fbf8f3;
  border: 1px solid #efe6d8;
}
.desk-agenda-block-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  margin-bottom: 0.45rem;
}
.desk-agenda-block-h h2 {
  margin: 0;
  font-size: 0.92rem;
  color: var(--navy);
}
.desk-agenda-block-h em {
  font-style: normal;
  font-size: 0.78rem;
  color: #c45c26;
  font-weight: 700;
}
.desk-agenda-add {
  appearance: none;
  border: 0;
  background: transparent;
  color: #c45c26;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  padding: 0.15rem 0.35rem;
  border-radius: 6px;
}
.desk-agenda-add:hover { background: #fff1e6; }
.desk-agenda-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.3rem;
}
.desk-agenda-item {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.45rem 0.5rem;
  border: 1px solid transparent;
  border-radius: 8px;
  background: #fff;
  transition: border-color 0.12s, box-shadow 0.12s;
}
.desk-agenda-item:hover {
  border-color: #eadfce;
  box-shadow: 0 1px 3px rgba(30, 40, 50, 0.04);
}
.desk-agenda-item:hover .desk-plan-del { opacity: 1; }
.desk-agenda-dot {
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: #c45c26;
  flex: 0 0 auto;
}
.desk-agenda-main {
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: inherit;
  display: grid;
  gap: 0.08rem;
}
.desk-agenda-main b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.9rem;
}
.desk-agenda-main small {
  color: var(--muted);
  font-size: 0.76rem;
}
.desk-agenda-main:hover b { color: #c45c26; }
.desk-agenda-empty {
  appearance: none;
  width: 100%;
  margin: 0;
  padding: 1.25rem 0.75rem;
  border: 1px dashed #d7c4a8;
  border-radius: 8px;
  background: #fffdf9;
  color: var(--muted);
  font-size: 0.86rem;
  cursor: pointer;
  text-align: center;
  min-height: 4.5rem;
}
.desk-agenda-empty:hover {
  border-color: #c45c26;
  color: #c45c26;
  background: #fff1e6;
}
@media (max-width: 900px) {
  .desk-agenda-cols { grid-template-columns: 1fr; }
}
.desk-slot-seg {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.35rem;
  margin: 0 0 0.75rem;
}
.desk-slot-seg-btn {
  appearance: none;
  border: 1px solid #e0c4a8;
  background: #fff;
  border-radius: 8px;
  padding: 0.55rem 0.75rem;
  cursor: pointer;
  font-weight: 600;
  color: var(--navy);
}
.desk-slot-seg-btn.on {
  border-color: #c45c26;
  background: #fff1e6;
  color: #c45c26;
  box-shadow: inset 0 0 0 1px #c45c26;
}
@media (max-width: 720px) {
  .desk-week-strip { gap: 0.25rem; }
  .desk-week-day { min-height: 3.15rem; padding: 0.28rem 0.08rem; }
  .desk-week-day strong { font-size: 1.05rem; }
  .desk-agenda-acts { width: 100%; }
  .desk-agenda-acts .btn { flex: 1; }
}
.desk-day-edit-label {
  margin: 0 0 0.45rem;
  font-size: 0.88rem;
  color: var(--muted);
}
.desk-day-edit-label b { color: var(--navy); }
.desk-cal-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(16rem, 1fr);
  gap: 0.75rem;
  align-items: start;
}
.desk-cal-scroll { overflow-x: auto; margin: 0; }
.desk-cal { min-width: 32rem; }
.desk-cal-week { width: 100%; min-width: 36rem; }
.desk-cal-head,
.desk-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.4rem;
}
.desk-cal-head {
  margin-bottom: 0.35rem;
  font-size: 0.78rem;
  color: var(--muted);
  text-align: center;
  font-weight: 600;
}
.desk-cal-cell {
  min-height: 8.5rem;
  padding: 0.4rem 0.4rem 0.5rem;
  border: 1px solid #e0d4c3;
  border-radius: 10px;
  background: #fffaf3;
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
}
.desk-cal-cell.is-week2 { background: #f4f7fb; border-color: #d5dde8; }
.desk-cal-cell.is-weekend { background: #f3f5f8; border-color: #dde3ea; }
.desk-cal-cell.is-today { background: #fff1e6; }
.desk-cal-cell.is-on {
  border-color: #c45c26;
  box-shadow: inset 0 0 0 1px #c45c26;
}
.desk-cal-cell-h {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}
.desk-cal-cell-h a {
  flex: 1;
  min-width: 0;
  text-decoration: none;
  color: inherit;
  display: flex;
  align-items: baseline;
  gap: 0.25rem;
}
.desk-cal-cell-h strong { font-size: 0.86rem; }
.desk-cal-cell-h i {
  font-style: normal;
  font-size: 0.68rem;
  color: #c45c26;
  font-weight: 700;
}
.desk-cal-cell-h em {
  font-style: normal;
  font-size: 0.68rem;
  color: #c45c26;
  font-weight: 700;
}
.desk-cal-slot-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.2rem;
  margin-bottom: 0.12rem;
}
.desk-cal-plus {
  appearance: none;
  border: 1px solid #e0c4a8;
  background: #fff;
  color: #c45c26;
  width: 1.2rem;
  height: 1.2rem;
  border-radius: 5px;
  line-height: 1;
  padding: 0;
  cursor: pointer;
  font-weight: 700;
  flex: 0 0 auto;
  font-size: 0.85rem;
}
.desk-cal-plus:hover { border-color: #c45c26; background: #fff1e6; }
.desk-cal-slot {
  font-size: 0.72rem;
  line-height: 1.35;
  min-width: 0;
  flex: 1;
  padding: 0.2rem 0.25rem 0.3rem;
  border-radius: 6px;
  background: rgba(255,255,255,0.55);
}
.desk-cal-slot > .desk-cal-slot-h > span,
.desk-cal-slot > span {
  display: block;
  color: var(--muted);
  font-size: 0.68rem;
}
.desk-cal-chip,
.desk-cal-name {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--navy);
  text-decoration: none;
  background: #fff;
  border: 1px solid #ead9c6;
  border-radius: 4px;
  padding: 0.08rem 0.28rem;
  margin-top: 0.12rem;
  font-size: 0.7rem;
}
.desk-cal-chip:hover,
.desk-cal-name:hover { color: #c45c26; border-color: #c45c26; }
.desk-cal-more-n {
  display: block;
  margin-top: 0.1rem;
  color: #c45c26;
  font-weight: 600;
}
.desk-cal-empty { display: block; margin-top: 0.1rem; }
.desk-day-panel {
  border: 1px solid #e0d4c3;
  border-radius: 10px;
  background: #fff;
  padding: 0.65rem 0.75rem 0.8rem;
  min-height: 12rem;
}
.desk-day-panel-h {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.55rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid #efe6d8;
}
.desk-day-panel-h b {
  display: block;
  font-size: 0.95rem;
  color: var(--navy);
}
.desk-day-panel-h span {
  font-size: 0.82rem;
  color: var(--muted);
}
.desk-day-panel .desk-slot-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.65rem;
}
.desk-day-panel .desk-slot-col {
  border: 1px solid #efe6d8;
  border-radius: 8px;
  padding: 0.45rem 0.55rem;
  background: #fffaf3;
}
.desk-gold-badge {
  display: inline-block;
  font-style: normal;
  font-size: 0.66rem;
  font-weight: 700;
  color: #8a5a00;
  background: linear-gradient(180deg, #fff8df, #ffe9a8);
  border: 1px solid #e0c56a;
  border-radius: 4px;
  padding: 0.02rem 0.32rem;
  margin-left: 0.25rem;
  vertical-align: middle;
  letter-spacing: 0.02em;
}
.desk-pick-search {
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 0.35rem;
  padding: 0.35rem 0.5rem;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 0.88rem;
}
@media (max-width: 1100px) {
  .desk-cal-layout { grid-template-columns: 1fr; }
}
.desk-msg-fold.has-unread {
  border-color: #c45c26;
  box-shadow: inset 0 0 0 1px #c45c26;
}
@media (max-width: 980px) {
  .desk-tiles { grid-template-columns: 1fr; }
  .desk-tile[data-span="2"],
  .desk-tile.is-full { grid-column: auto; }
  .desk-tile-drag { display: none; }
}
.desk-trip-check {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin: 0.35rem 0 0.55rem;
  font-size: 0.9rem;
}
.desk-trip-geo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem;
  margin: 0 0 0.65rem;
}
.desk-pick-wrap { margin: 0 0 0.65rem; }
.desk-pick-label {
  display: block;
  margin-bottom: 0.3rem;
  font-size: 0.88rem;
  font-weight: 600;
}
.desk-pick-list {
  max-height: 11rem;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.35rem 0.45rem;
  background: #fff;
  display: grid;
  gap: 0.2rem;
}
.desk-pick-item {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  margin: 0;
  padding: 0.2rem 0.15rem;
  font-size: 0.88rem;
  cursor: pointer;
}
.desk-pick-item[hidden] { display: none !important; }
.desk-focus-merged { padding-top: 0.55rem; }
.desk-focus-tabs {
  margin: 0 0 0.65rem;
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0;
  padding: 0.18rem;
  border-radius: 10px;
  background: #f3ebe0;
  border: 1px solid #eadfce;
  width: fit-content;
  max-width: 100%;
}
.desk-focus-tabs button {
  appearance: none;
  border: 0;
  background: transparent;
  color: #6b7280;
  border-radius: 8px;
  padding: 0.35rem 0.9rem;
  font: inherit;
  font-size: 0.9rem;
  font-weight: 600;
  min-height: 2.1rem;
  cursor: pointer;
}
.desk-focus-tabs button.on {
  background: #fff;
  color: #c45c26;
  font-weight: 700;
  box-shadow: 0 1px 2px rgba(30, 40, 50, 0.08);
}
.desk-focus-more {
  margin: -0.35rem 0 0.55rem;
  text-align: right;
}
.desk-focus-more a { font-size: 0.82rem; }
.desk-focus-merged .desk-card-h {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.45rem;
}
.desk-focus-merged .desk-card-h h2 { margin: 0; }
.desk-page .hub-band { margin-bottom: 0.75rem; }
.desk-page .desk-todo li { margin: 0 0 0.3rem; }
.desk-page .desk-todo-row { padding: 0.4rem 0.5rem; }
.desk-page .card { padding: 0.75rem 0.85rem; }
.desk-focus-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0;
}
.desk-focus-card .desk-card-h {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
}
.desk-focus-card .desk-card-h h2 { margin: 0; }
.desk-focus-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.3rem;
}
.desk-focus-list a {
  display: block;
  padding: 0.42rem 0.55rem;
  border-radius: 8px;
  border: 1px solid transparent;
  background: #f8f4ee;
  text-decoration: none;
  color: inherit;
  transition: background 0.12s, border-color 0.12s;
}
.desk-focus-list a:hover { border-color: #eadfce; background: #fff; }
.desk-focus-list b {
  display: block;
  font-size: 0.88rem;
  color: var(--navy);
  line-height: 1.35;
}
.desk-focus-list small {
  display: block;
  margin-top: 0.15rem;
  color: var(--muted);
  font-size: 0.75rem;
}
.hosp-proj-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.28rem;
}
.hosp-proj-list li {
  display: grid;
  gap: 0.05rem;
  line-height: 1.35;
}
.hosp-proj-list a { font-weight: 650; }
.hosp-kind-cell {
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem 0.4rem;
  align-items: center;
}
.kind-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  padding: 0.08rem 0.4rem;
  border-radius: 999px;
  background: #f4f0e8;
  font-size: 0.78rem;
  white-space: nowrap;
}
.kind-chip form { margin: 0; display: inline; }
.kind-chip button.linkish {
  border: 0;
  background: none;
  padding: 0;
  color: var(--muted);
  font-size: 0.72rem;
  cursor: pointer;
}
.proj-with-hosp a { font-weight: 700; }
.proj-with-hosp .muted a { font-weight: 600; color: var(--muted); }
.agent-proj-kpis {
  margin: 0 0 0.75rem;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.hosp-prov-bar {
  display: flex;
  align-items: end;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0 0 0.65rem;
}
.hosp-prov-bar .field { margin: 0; min-width: 12rem; }
.hosp-prov-bar select { min-width: 12rem; }
.agent-hosp-row[hidden],
.agent-hosp-empty[hidden] { display: none !important; }
.agent-page .sec-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
}
@media (max-width: 900px) {
  .agent-proj-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.inline-focus { display: inline; margin: 0; }
.focus-star.on { color: #c45c28; border-color: #c45c28; }
@media (max-width: 980px) {
  .desk-focus-grid { grid-template-columns: 1fr; }
}
.desk-page table,
.desk-split table { min-width: 0; }
.pnl-kinds { margin-bottom: 1rem; }
@media (max-width: 980px) {
  .desk-split { grid-template-columns: 1fr; }
}

form.stack { display: grid; gap: 0.75rem; max-width: 920px; }
.row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.7rem; }
label.field { display: flex; flex-direction: column; gap: 0.28rem; font-size: 0.82rem; color: var(--muted); }
label.is-need,
.field.is-need,
.need-lab {
  position: relative;
}
label.is-need::before,
.field.is-need::before,
.need-lab::before { content: none; }
.need-tag {
  position: absolute;
  right: 0;
  top: 0;
  display: inline-block;
  padding: 0.02rem 0.38rem;
  border-radius: 4px;
  background: #c45c26;
  color: #fff;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 750;
  letter-spacing: 0.04em;
  line-height: 1.35;
}
label.is-need > input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),
label.is-need > select,
label.is-need > textarea,
label.is-need .name-search input,
.need-lab > input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]),
.need-lab > select,
.need-lab > textarea,
.need-lab .name-search input {
  border: 2px solid #c45c26;
  background: #fff6ee;
  box-shadow: inset 0 0 0 1px rgba(196, 92, 38, 0.12);
}
.need-lab .party-lines {
  padding: 0.4rem 0.55rem;
  border: 2px solid #c45c26;
  border-radius: 8px;
  background: #fff6ee;
}
input.is-short {
  border-color: #c62828 !important;
  background: #fff1f1 !important;
}
.credit-len {
  margin: 0.15rem 0 0;
  font-size: 0.75rem;
  color: var(--muted);
  font-weight: 650;
}
.credit-len.is-bad { color: #c62828; }
input, select, textarea {
  font: inherit;
  padding: 0.5rem 0.6rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
}
input[type="radio"],
input[type="checkbox"] {
  width: 1.1rem;
  height: 1.1rem;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: none;
  box-shadow: none;
  flex: none;
  accent-color: #2f6fed;
}
textarea { min-height: 80px; resize: vertical; }
.pay-terms-area {
  min-height: 9rem;
  width: 100%;
  line-height: 1.55;
  font-size: 0.95rem;
}
.pay-clause { grid-column: 1 / -1; }
form.stack.contract-form { max-width: none; gap: 0; padding: 0 0 0.2rem; }
.ct-page { max-width: 1180px; }
.ct-page .top { margin-bottom: 0.65rem; }
.ct-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.7rem;
  margin: 0 0 0.85rem;
  padding: 0;
}
.ct-steps span {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--muted);
  font-size: 0.86rem;
  font-weight: 650;
}
.ct-steps span.done { color: #3d6b52; }
.ct-steps span.now { color: #1e3a4c; }
.ct-steps i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 999px;
  background: #e8e0d4;
  color: #5a6570;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 800;
}
.ct-steps span.done i { background: #3d6b52; color: #fff; }
.ct-steps span.now i { background: #c45c26; color: #fff; }
.ct-sec {
  padding: 1.05rem 1.2rem 1.2rem;
}
.ct-sec + .ct-sec { border-top: 1px solid #eadfd0; }
.ct-sec-h { margin: 0 0 0.85rem; }
.ct-sec-h h2 {
  margin: 0 0 0.2rem;
  font-size: 1.08rem;
  color: #1e3a4c;
}
.ct-sec-h p {
  margin: 0;
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.45;
}
.ct-info-row { grid-template-columns: 11rem minmax(12rem, 2fr) 10rem 10rem 10rem; }
.ct-work-bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.75rem 1.2rem;
  align-items: flex-start;
  margin: 0 0 0.85rem;
}
.ct-work-bar h2 { margin: 0 0 0.28rem; font-size: 1.08rem; }
.ct-work-bar .quote-sheet-acts { justify-content: flex-end; }
.ct-sec-h h2 i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.2rem;
  height: 1.2rem;
  margin-right: 0.25rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 800;
  vertical-align: 0.08em;
}
.ct-date-row { grid-template-columns: repeat(3, minmax(9rem, 1fr)); max-width: 42rem; }
.ct-pay { background: #fff8f0; }
.ct-pay-hl {
  border: 2px solid #e07a2f;
  border-radius: 12px;
  background: #fff4e8;
  box-shadow: 0 0 0 3px rgba(224, 122, 47, 0.14);
  margin-top: 0.35rem;
}
.ct-pay-hl .ct-sec-h h2 {
  color: #c45c26;
  display: flex;
  align-items: center;
  gap: 0.4rem;
  flex-wrap: wrap;
}
.ct-pay-mark {
  display: inline-block;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 700;
  color: #fff;
  background: #c45c26;
  border-radius: 4px;
  padding: 0.12rem 0.4rem;
  letter-spacing: 0.02em;
}
dialog.proj-edit-dlg.dlg-pay { max-width: 56rem; }
dialog.proj-edit-dlg.dlg-deal { max-width: 56rem; position: relative; }
dialog.proj-edit-dlg.dlg-deal.has-pay { overflow: hidden; }
.deal-bar-l {
  display: flex;
  align-items: flex-start;
  gap: 0.55rem;
  min-width: 0;
}
.deal-back { flex: none; margin-top: 0.1rem; }
.deal-pane[hidden],
.deal-pay-mask[hidden] { display: none !important; }
.deal-one-card {
  padding: 0.85rem 1rem;
  border: 1px solid #ead7c2;
  border-radius: 10px;
  background: #fffaf4;
}
.deal-one-h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  margin: 0 0 0.35rem;
}
.deal-one-h b { font-size: 1.05rem; color: var(--navy); }
.deal-one-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.75rem;
}
.deal-pay-mask {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding: 0.7rem 0.65rem 1rem;
  overflow: auto;
  background: rgba(28, 22, 16, 0.42);
}
.deal-pay-box {
  width: min(52rem, 100%);
  margin: 0 auto;
  padding: 0.7rem 0.85rem 0.9rem;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 16px 40px rgba(20, 16, 10, 0.28);
}
.deal-pay-bar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.6rem;
  margin-bottom: 0.55rem;
}
.deal-pay-bar strong { font-size: 1.02rem; }
.ct-open-pay { margin: 0.7rem 0 0; }
.sum-cat.sum-pay-focus {
  outline: 2px solid #e07a2f;
  box-shadow: 0 0 0 3px rgba(224, 122, 47, 0.16);
}
tr.is-pay-need td { background: #fff4e8; }
.pay-need-btn { font-weight: 700; }
.ct-pay-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(16rem, 0.9fr);
  gap: 1rem 1.4rem;
  align-items: start;
}
.ct-schemes { position: relative; margin: 0 0 0.75rem; padding-right: 2.4rem; }
.ct-schemes-k {
  display: block;
  margin: 0 0 0.4rem;
  font-size: 0.82rem;
  color: var(--muted);
}
.ct-scheme-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
}
.ct-scheme {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: 0;
  padding: 0.55rem 0.65rem;
  border: 1px solid #e0d4c4;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  color: var(--ink);
}
.ct-scheme input { position: absolute; opacity: 0; pointer-events: none; }
.ct-scheme b {
  display: block;
  font-size: 0.88rem;
  font-weight: 700;
}
.ct-scheme small {
  display: block;
  margin-top: 0.12rem;
  color: var(--muted);
  font-size: 0.74rem;
  line-height: 1.35;
  font-weight: 400;
}
.ct-scheme em {
  display: inline-block;
  margin-left: 0.2rem;
  padding: 0.02rem 0.32rem;
  border-radius: 4px;
  background: #c45c26;
  color: #fff;
  font-size: 0.66rem;
  font-style: normal;
  font-weight: 750;
  vertical-align: 0.08em;
}
.ct-scheme:hover { border-color: #c45c26; }
.ct-scheme.on,
.ct-scheme:has(input:checked) {
  border: 2px solid #c45c26;
  background: #fff6ee;
  box-shadow: inset 0 0 0 1px rgba(196, 92, 38, 0.12);
}
.ct-pay-extra,
.ct-ship-row { margin-top: 0.15rem; }
.ct-ship-row .field.grow { flex: 1 1 100%; min-width: 12rem; }
.ct-pay-extra { grid-template-columns: repeat(auto-fit, minmax(9.2rem, 1fr)); }
.ct-page label.field[hidden],
.ct-pay-hl label.field[hidden] { display: none !important; }
.ct-clause .pay-terms-area { min-height: 11rem; background: #fff; }
.ct-pay-tip {
  margin: 0.35rem 0 0.15rem;
  color: #5a4a3a;
  font-size: 0.8rem;
  line-height: 1.45;
}
.ct-acts {
  margin: 0.7rem 0 0;
  padding: 0.15rem 0 0;
}
.ct-acts button { width: auto; }
.ct-next, .ct-collect { margin-top: 0.85rem; padding: 1.05rem 1.2rem; }
.ct-next-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}
.ct-next-acts form { margin: 0; }
.ct-collect-row { max-width: 44rem; grid-template-columns: 10rem 11rem minmax(10rem, 1fr); }
@media (max-width: 980px) {
  .ct-pay-grid,
  .ct-info-row,
  .ct-date-row,
  .ct-collect-row { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .ct-scheme-list,
  .ct-pay-grid,
  .ct-info-row,
  .ct-date-row,
  .ct-collect-row { grid-template-columns: 1fr; }
}
.contract-form .pay-terms-area {
  min-height: 8.5rem;
  background: #fff;
}

.card { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; min-width: 720px; }
th, td { text-align: left; padding: 0.55rem 0.45rem; border-bottom: 1px solid var(--line); vertical-align: top; }
th { font-size: 0.78rem; color: var(--muted); font-weight: 600; }
.tag {
  display: inline-block;
  padding: 0.12rem 0.45rem;
  border-radius: 999px;
  font-size: 0.75rem;
  background: #efe6d8;
}
.tag.ok { background: #d8efe4; color: var(--ok); }
.tag.warn { background: #fde8c8; color: var(--warn); }
.tag.err { background: #f8d7d4; color: var(--err); }
.tag.mute { background: #eceff3; color: #6b7584; }

.flash { padding: 0.65rem 0.8rem; border-radius: 10px; margin-bottom: 0.8rem; }
.flash.ok { background: #e8f6ee; }
  .flash.err { background: #fdecea; }
  .flash.warn { background: #fde8c8; }

.profit {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 0.6rem;
  background: #1e3a4c;
  color: #fff;
  padding: 1rem;
  border-radius: 12px;
}
.profit span { opacity: 0.75; font-size: 0.78rem; }
.profit b { display: block; font-size: 1.15rem; margin-top: 0.15rem; }

.name-search { display: flex; gap: 0.4rem; align-items: stretch; }
.name-search input { flex: 1; min-width: 0; }
.name-search button { white-space: nowrap; }
.field:has(#hospital-q),
.field:has(.name-search) { position: relative; }
.lookup-hits {
  list-style: none;
  margin: 0.35rem 0 0;
  padding: 0;
  border: 2px solid #1e3a4c;
  border-radius: 8px;
  background: #fffdf8;
  max-height: min(48vh, 26rem);
  overflow: auto;
  position: absolute;
  left: 0;
  right: 0;
  z-index: 40;
  box-shadow: 0 10px 24px rgba(20, 32, 44, 0.22);
}
.lookup-hits li { margin: 0; }
.lookup-hits button {
  display: block;
  width: 100%;
  text-align: left;
  background: #fffdf8;
  color: #14202c;
  border: 0;
  border-bottom: 1px solid #d8c9b4;
  padding: 0.55rem 0.7rem;
  cursor: pointer;
  font: inherit;
  font-size: 0.92rem;
  font-weight: 700;
  line-height: 1.4;
}
.lookup-hits button strong { color: inherit; font-weight: 800; }
.lookup-hits button .muted,
.lookup-hits button div.muted {
  color: #3d4a58;
  background: transparent;
  padding: 0.15rem 0 0;
  font-size: 0.8rem;
  font-weight: 600;
}
.lookup-hits button:hover,
.lookup-hits button:focus {
  background: #1e3a4c;
  color: #fff;
}
.lookup-hits button:hover .muted,
.lookup-hits button:focus .muted { color: #d5e0e8; }
.lookup-hits.is-hint {
  position: static;
  max-height: none;
  overflow: visible;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  margin: 0.2rem 0 0;
}
.lookup-hits.is-hint li.muted {
  padding: 0.15rem 0;
  background: transparent;
  color: var(--muted);
  font-weight: 500;
  font-size: 0.78rem;
  line-height: 1.4;
}
.inline { display: flex; gap: 0.4rem; align-items: center; flex-wrap: wrap; }
.inline input { width: 90px; }
.search { display: flex; gap: 0.5rem; margin-bottom: 0.8rem; flex-wrap: wrap; align-items: center; }
.list-pager { margin: 0.6rem 0 0; }
.list-pager a { margin-left: 0.6rem; }
.search input, .search select { min-width: 160px; }
.nowrap { white-space: nowrap; }
.nowrap a { margin-right: 0.45rem; }

.tabs {
  display: flex;
  gap: 0.4rem;
  flex-wrap: wrap;
  margin: 0 0 1rem;
  padding: 0.4rem;
  background: #efe6d6;
  border: 1px solid #e0d3bc;
  border-radius: 12px;
}
.tabs a {
  display: inline-flex;
  align-items: center;
  min-height: 2.45rem;
  padding: 0.45rem 1.05rem;
  border-radius: 9px;
  color: #2c3d4d;
  font-size: 1.02rem;
  font-weight: 700;
  text-decoration: none;
}
.tabs a:hover { text-decoration: none; background: rgba(255,255,255,0.55); color: #1d3344; }
.tabs a.on { background: var(--brand); color: #fff; border-bottom: 0; }
tr.picked td { background: #f8efe4; }
fieldset.card { border: 1px solid var(--line); }
fieldset.dim { opacity: 0.72; }
.select-steps { margin: 0 0 0.85rem; }
.select-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 0.8rem;
  flex-wrap: wrap;
  margin: 0 0 0.75rem;
  padding: 0.85rem 1rem;
}
.select-toolbar strong { display: block; margin-bottom: 0.15rem; }
.select-toolbar > div:first-child { min-width: 12rem; }
.select-tools {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
}
.select-tools input[type="search"] {
  width: 10.5rem;
  min-width: 8rem;
}
.select-count {
  font-weight: 650;
  color: var(--brand-dark);
  min-width: 3.6rem;
}
.sys-pick {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.7rem;
  margin: 0 0 1rem;
}
.sys-pick .sys-card {
  display: grid;
  grid-template-columns: auto 1fr;
  grid-template-rows: auto auto auto auto;
  column-gap: 0.65rem;
  row-gap: 0.12rem;
  align-items: start;
  padding: 0.8rem 0.85rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  cursor: pointer;
  min-height: 6.2rem;
}
.sys-pick .sys-card input {
  grid-row: 1 / span 4;
  margin: 0.2rem 0 0;
  width: auto;
  accent-color: var(--brand);
}
.sys-pick .sys-card .sys-chip {
  grid-column: 2;
  justify-self: start;
}
.sys-pick .sys-card strong {
  grid-column: 2;
  font-size: 0.95rem;
  line-height: 1.3;
}
.sys-pick .sys-card .muted,
.sys-pick .sys-card .sys-meta { grid-column: 2; }
.sys-pick .sys-card .sys-meta { font-size: 0.76rem; color: var(--muted); }
.sys-chip {
  display: inline-block;
  padding: 0.08rem 0.42rem;
  border-radius: 999px;
  background: #f3ebe0;
  color: var(--brand-dark);
  font-size: 0.72rem;
  font-weight: 650;
  letter-spacing: 0.02em;
}
.sys-pick .sys-card:has(input:checked) {
  border-color: var(--brand);
  background: #faf6f0;
  box-shadow: inset 0 0 0 1px var(--brand);
}
.sys-pick .sys-card:hover { border-color: #d4c4ae; }
.select-foot {
  position: sticky;
  bottom: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.8rem;
  padding: 0.7rem 0 0.2rem;
  background: linear-gradient(180deg, transparent, var(--paper) 28%);
}
.select-sku-lead { margin: 0 0 0.75rem; }
.sku-block legend {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  font-weight: 650;
}
.sku-block .sys-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.4rem;
  padding: 0.12rem 0.4rem;
  border-radius: 4px;
  font-size: 0.82rem;
  font-weight: 800;
  line-height: 1.2;
}
.sku-block .sys-chip.tone-0 { color: #fff; background: #2a7a6e; }
.sku-block .sys-chip.tone-1 { color: #fff; background: #3d4fa3; }
.sku-block .sys-chip.tone-2 { color: #fff; background: #8a6d1a; }
.sku-block .sys-chip.tone-3 { color: #fff; background: #c45c28; }
.sku-block .sys-chip.tone-4 { color: #fff; background: #7a4d96; }
.sku-block .sys-chip.tone-5 { color: #fff; background: #3d7a42; }
.sku-block .sys-chip.tone-6 { color: #fff; background: #2a6a96; }
.sku-block .sys-chip.tone-7 { color: #fff; background: #a04a5c; }
.sku-table { width: 100%; }
@media (max-width: 980px) {
  .sys-pick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .sys-pick { grid-template-columns: 1fr; }
  .select-toolbar { align-items: stretch; }
  .select-tools { width: 100%; }
  .select-tools input[type="search"] { flex: 1; }
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.clients-page { margin-top: 0.15rem; }
.hub-page { margin: 0; }
.hub-band {
  margin: 0 0 0.55rem;
  padding: 0.4rem 0.55rem 0.5rem;
  border-radius: 10px;
  border: 1px solid var(--line);
}
.hub-band.is-watch {
  background: #eef3f6;
  border-color: #c5d3dc;
  border-left: 4px solid #1e3a4c;
}
.hub-band.is-do {
  background: #fffaf4;
  border-color: #ead7c2;
  border-left: 4px solid #c45c26;
}
.hub-band-h {
  display: flex;
  align-items: baseline;
  gap: 0.45rem 0.65rem;
  margin: 0 0 0.4rem;
  flex-wrap: wrap;
}
.client-apply-bar {
  margin-left: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
}
.client-apply-bar .btn,
.client-apply-bar .ghost {
  font-size: 0.8rem;
  padding: 0.35rem 0.7rem;
}
.hub-band-h i {
  font-style: normal;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  padding: 0.12rem 0.4rem;
  border-radius: 4px;
  color: #fff;
}
.hub-band.is-watch .hub-band-h i { background: #1e3a4c; }
.hub-band.is-do .hub-band-h i { background: #c45c26; }
.hub-band-h b { font-size: 0.88rem; color: var(--navy); }
.hub-band-h span { font-size: 0.75rem; color: var(--muted); }
.hub-page .work-zone {
  margin: 0 0 0.45rem;
  padding: 0.4rem 0.55rem 0.5rem;
  border-radius: 8px;
}
.hub-page .work-zone:last-child { margin-bottom: 0; }
.hub-page .work-zone-h {
  margin: 0 0 0.35rem;
  padding: 0 0 0.25rem;
  border-bottom-width: 1px;
}
.hub-page .work-zone-h b { font-size: 0.86rem; }
.hub-page .work-zone-h span { font-size: 0.72rem; }
.hub-page .desk-now { margin: 0 0 0.45rem; gap: 0.45rem; }
.hub-page .desk-split { margin: 0; }
.hub-page .client-vias { gap: 0.4rem; margin: 0; }
.hub-page .client-via { padding: 0.45rem 0.65rem; border-radius: 8px; }
.hub-page .client-via b { font-size: 1rem; }
.hub-page .client-via span { font-size: 0.72rem; margin-top: 0.08rem; }
.hub-page .work-guide {
  margin: 0;
  gap: 0.4rem;
  grid-template-columns: minmax(12rem, 16rem) 1fr;
}
.hub-page .work-guide-now { padding: 0.45rem 0.55rem; border-radius: 8px; }
.hub-page .work-guide-now strong { font-size: 0.92rem; margin: 0.1rem 0 0.15rem; }
.hub-page .work-guide-now p { font-size: 0.74rem; line-height: 1.35; }
.hub-page .client-steps { gap: 0.3rem; margin: 0; }
.hub-page .client-steps li { padding: 0.28rem 0.4rem; flex: 1 1 6.5rem; }
.hub-page .client-steps li b { font-size: 0.8rem; }
.hub-page .client-steps li span { font-size: 0.68rem; }
.hub-page .top { margin-bottom: 0.35rem; }
.clients-page.hub-page, .hub-page { margin-top: 0; }
.work-zone {
  margin: 0 0 0.85rem;
  padding: 0.7rem 0.85rem 0.8rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.work-zone-h {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.65rem;
  margin: 0 0 0.6rem;
  padding: 0 0 0.45rem;
  border-bottom: 2px solid #eadfd0;
}
.work-zone-h b {
  font-size: 0.98rem;
  color: var(--navy);
}
.work-zone-h span {
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.4;
}
.work-zone.is-path { background: #f7f4ee; }
.work-zone.is-guide { background: #fff8f0; border-color: #e8c9a8; }
.work-zone.is-tasks { background: #f4f7f8; border-color: #cfd8dd; }
.work-zone.is-find { background: #fff; }
.work-zone.is-pick { background: #eef6ef; border-color: #cfe3d6; padding-top: 0.65rem; }
.work-zone.is-board { background: #fff; }
.work-zone.is-board .proj-map-page { margin: 0; }
.work-zone.is-tasks .task-board,
.work-zone.is-tasks .client-tasks {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
.work-zone.is-tasks .task-board-h h3 { display: none; }
.desk-now {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin: 0 0 0.85rem;
}
.desk-now .work-zone { margin: 0; min-width: 0; }
@media (max-width: 980px) {
  .desk-now { grid-template-columns: 1fr; }
}
.work-zone .client-vias { margin: 0; }
.work-zone .proj-filter { margin-bottom: 0.45rem; }
.work-zone .proj-kpis { margin-bottom: 0; }
.work-zone.is-find .client-search {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0;
}
.work-zone.is-find .client-search-lab { display: none; }
.work-zone.is-pick .client-now {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
.client-vias {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.7rem;
  margin: 0 0 0.85rem;
}
.client-via {
  display: block;
  padding: 0.75rem 0.95rem;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  text-decoration: none;
  color: inherit;
}
.client-via:hover { border-color: var(--brand); text-decoration: none; background: #f8efe4; }
.client-via.on {
  border-color: var(--brand);
  background: #f8efe4;
  box-shadow: 0 1px 4px rgba(28, 36, 48, 0.06);
}
.client-via i { display: block; font-style: normal; font-size: 0.72rem; color: var(--muted); letter-spacing: 0.04em; }
.client-via b { display: block; font-size: 1.2rem; }
.client-via span { display: block; margin-top: 0.2rem; font-size: 0.78rem; color: var(--muted); }
.client-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  list-style: none;
  margin: 0 0 0.85rem;
  padding: 0;
}
.client-steps li {
  flex: 1 1 8.5rem;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0.5rem;
  min-width: 0;
  padding: 0.5rem 0.65rem 0.5rem 0.5rem;
  border-radius: 12px;
  background: #efe8dc;
  color: var(--navy);
  font-size: 0.82rem;
  font-weight: 650;
  border: 1px solid #e2d3c0;
}
.client-steps li em,
.client-steps .step-n {
  flex: 0 0 1.9rem;
  width: 1.9rem;
  height: 1.9rem;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: #fff;
  color: var(--navy);
  font-style: normal;
  font-size: 1.05rem;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 0 0 2px #c45c26;
}
.client-steps li > div { min-width: 0; display: flex; flex-direction: column; gap: 0.08rem; }
.client-steps li b { font-size: 0.88rem; line-height: 1.25; }
.client-steps li span {
  font-weight: 400;
  font-size: 0.72rem;
  line-height: 1.3;
  color: inherit;
  opacity: 0.8;
}
.client-steps li.on {
  background: var(--brand);
  color: #fff;
  border-color: var(--brand-dark);
}
.client-steps li.on em,
.client-steps li.on .step-n {
  background: #fff;
  color: var(--brand-dark);
  box-shadow: 0 0 0 2px #fff;
}
.client-steps li.done { background: #d8eee0; color: #145c38; border-color: #b7d4c2; }
.client-steps li.done em,
.client-steps li.done .step-n {
  background: #1f7a4d;
  color: #fff;
  box-shadow: none;
}
.client-flow-hint {
  margin: -0.2rem 0 0.7rem;
  padding: 0.55rem 0.8rem;
  border-radius: 10px;
  background: #fff6ea;
  border: 1px solid #ecd4b4;
  font-size: 0.84rem;
  line-height: 1.45;
}
.work-guide {
  display: grid;
  grid-template-columns: minmax(15rem, 20rem) 1fr;
  gap: 0.65rem;
  margin: 0 0 0.75rem;
  align-items: stretch;
}
.work-guide-now {
  padding: 0.7rem 0.85rem;
  border-radius: 10px;
  background: #1e3a4c;
  color: #fff;
}
.work-guide-k {
  display: block;
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  opacity: 0.72;
  font-weight: 700;
}
.work-guide-now strong {
  display: block;
  margin: 0.2rem 0 0.3rem;
  font-size: 1.02rem;
  line-height: 1.3;
}
.work-guide-now p {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.5;
  opacity: 0.92;
}
.work-guide .client-steps { margin: 0; }
@media (max-width: 860px) {
  .work-guide { grid-template-columns: 1fr; }
}
.task-banner {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.28rem;
  margin: 0 0 0.55rem;
  padding: 0.4rem 0.65rem;
  border-radius: 8px;
  border: 1px solid #e8c9a8;
  background: #fff8f0;
  font-size: 0.82rem;
  overflow: hidden;
}
.task-banner-row {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  min-width: 0;
}
.task-banner-next {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.4;
  color: #5a3d12;
  font-weight: 650;
}
.task-banner.done { border-color: #b7d4c2; background: #f3f8f4; }
.task-banner-tags { display: inline-flex; gap: 0.25rem; }
.task-banner .task-title,
.task-banner strong.task-title {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-size: 0.78rem;
  font-weight: 550;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-banner-tip { display: none; }
.task-banner-acts { margin-left: auto; }
.task-st, .task-kind {
  display: inline-block;
  font-size: 0.68rem;
  font-weight: 750;
  line-height: 1.15;
  padding: 0.08rem 0.32rem;
  border-radius: 4px;
  white-space: nowrap;
}
.task-kind { background: #efe8dc; color: var(--navy); }
.task-st.doing { background: #f4d7a8; color: #6a4308; }
.task-st.wait { background: #e6e2dc; color: #4d5560; }
.task-st.done { background: #cfe3d6; color: #1f6b3a; }
.task-who {
  flex: 0 0 auto;
  font-weight: 800;
  color: var(--navy);
  white-space: nowrap;
}
.task-obj {
  min-width: 0;
  max-width: 22rem;
  font-weight: 750;
  color: var(--brand-dark);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-region {
  flex: 0 0 auto;
  font-size: 0.72rem;
  font-weight: 750;
  color: #1f6b3a;
  background: #e7f3eb;
  padding: 0.06rem 0.36rem;
  border-radius: 4px;
  white-space: nowrap;
}
.task-when {
  flex: 0 0 auto;
  font-size: 0.74rem;
  font-weight: 700;
  color: #5a3d12;
  background: #f6ead4;
  padding: 0.06rem 0.36rem;
  border-radius: 4px;
  white-space: nowrap;
}
.btn.task-enter {
  flex: 0 0 auto;
  margin-left: auto;
  padding: 0.42rem 0.95rem;
  background: var(--brand);
  color: #fff;
  border: 1px solid var(--brand);
  border-radius: 8px;
  font-size: 0.86rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: 0 1px 0 rgba(142, 61, 20, 0.18);
}
a.btn.task-enter { pointer-events: auto; }
.task-hit .btn.task-enter { pointer-events: none; }
.btn.task-enter:hover,
.task-hit:hover .btn.task-enter {
  background: var(--brand-dark);
  border-color: var(--brand-dark);
  color: #fff;
  text-decoration: none;
}
.btn.task-enter.is-view {
  background: #5a6b78;
  border-color: #5a6b78;
  box-shadow: none;
}
.btn.task-enter.is-view:hover,
.task-hit:hover .btn.task-enter.is-view {
  background: #3d4a58;
  border-color: #3d4a58;
}
.btn.task-enter.is-go {
  background: #c45c28;
  border-color: #a84a1c;
}
.task-result {
  margin: 0.25rem 0 0;
  font-size: 0.76rem;
  line-height: 1.35;
  color: var(--navy);
}
.sched-run-head { padding: 1rem 1.1rem; margin-bottom: 0.85rem; border: 1px solid #e8c9a8; background: #fff8f0; }
.sched-run-head.done { border-color: #b7d4c2; background: #f3f8f4; }
.sched-run-head.need-bind { border-color: #e8a090; background: #fff5f0; }
.sched-run-head h2 { margin: 0.3rem 0 0.2rem; font-size: 1.15rem; }
.sched-run-head h2.is-miss { color: #c0392b; }
.sched-run { display: grid; gap: 0.85rem; }
.sched-bind-box { margin-top: 0.75rem; padding-top: 0.5rem; border-top: 1px dashed #e0c4a8; }
.sched-bind-form { max-width: 36rem; }
.sched-run h3 { margin: 0 0 0.25rem; }
.sched-run h4 { margin: 0.7rem 0 0.35rem; font-size: 0.88rem; }
.sched-targets, .sched-log { list-style: none; margin: 0; padding: 0; }
.sched-targets li, .sched-log li {
  display: flex;
  justify-content: space-between;
  gap: 0.7rem;
  align-items: center;
  padding: 0.55rem 0;
  border-top: 1px solid var(--line);
}
.sched-targets li:first-child, .sched-log li:first-child { border-top: 0; }
.sched-targets b, .sched-log p { display: block; margin: 0.1rem 0 0; }
.sched-target-acts { display: flex; gap: 0.35rem; flex-shrink: 0; }
@media (max-width: 720px) {
  .sched-targets li { flex-direction: column; align-items: stretch; }
  .task-row .task-hit {
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-areas:
      "st body"
      "enter enter";
  }
  .task-row .task-st { grid-area: st; }
  .task-row .task-body { grid-area: body; }
  .task-row .task-enter { grid-area: enter; width: 100%; text-align: center; margin-left: 0; }
  .task-banner, .task-banner-row { flex-wrap: wrap; }
}
.hosp-follow-steps { margin: 0 0 1rem; }
.hosp-follow-steps li { cursor: pointer; }
.agent-work-steps { margin-bottom: 0.7rem; }
.agent-work-steps li { flex: 1 1 8.6rem; padding: 0.42rem 0.5rem 0.42rem 0.42rem; }
.agent-page .hosp-jump.agent-flow {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.15rem;
  margin: 0 0 0.35rem;
  padding: 0;
}
.agent-page .agent-flow .agent-work-steps {
  display: flex;
  flex-wrap: nowrap;
  gap: 0.28rem;
  grid-template-columns: none;
}
.agent-page .agent-work-steps li {
  flex: 1 1 0;
  min-width: 0;
  padding: 0.18rem 0.32rem 0.18rem 0.22rem;
  gap: 0.28rem;
  border-radius: 8px;
}
.agent-page .client-steps .step-n,
.agent-page .agent-work-steps .step-n {
  flex: 0 0 1.35rem;
  width: 1.35rem;
  height: 1.35rem;
  font-size: 0.72rem;
  box-shadow: 0 0 0 1px #c45c26;
}
.agent-page .client-steps li b {
  font-size: 0.78rem;
  font-weight: 700;
}
.agent-page .client-steps li span { display: none; }
.agent-page .agent-flow-now {
  margin: 0;
  padding: 0 0.1rem;
  border: 0;
  background: transparent;
  font-size: 0.75rem;
  line-height: 1.35;
  color: var(--muted);
  border-radius: 0;
}
.agent-page .party-pane { padding: 0.65rem 0.8rem 0.75rem; }
.agent-page .party-block {
  padding: 0.5rem 0.65rem;
  margin: 0 0 0.55rem;
  border-radius: 8px;
  overflow: visible;
}
.agent-page .party-block .subh { margin: 0 0 0.3rem; font-size: 0.82rem; }
.agent-page .party-block .row { margin: 0 0 0.38rem; }
.agent-page .sec-head { margin-bottom: 0.4rem; }
.agent-page .sec-head h2 { margin: 0; font-size: 1rem; }
.agent-page .sec-head h3.subh { margin: 0; }
.agent-page .sec-head p { margin: 0.12rem 0 0; font-size: 0.78rem; }
.agent-page .form-actions { margin: 0.3rem 0 0; gap: 0.4rem; }
.agent-page .party-table { margin: 0 0 0.5rem; }
.agent-page .follow-list { margin: 0.35rem 0 0; }
.agent-page .follow-list li { padding: 0.32rem 0; }
.agent-page .party-more { margin: 0.35rem 0 0; }
.agent-page .party-more summary {
  cursor: pointer;
  font-weight: 650;
  font-size: 0.86rem;
  padding: 0.2rem 0;
}
.agent-page .party-more .muted { margin: 0.2rem 0 0.4rem; font-size: 0.78rem; }
.agent-page .party-row-acts .ghost { padding: 0.15rem 0.45rem; font-size: 0.78rem; }
.agent-page .party-map {
  height: clamp(320px, 48vh, 560px);
  min-height: 320px;
  margin: 0.45rem 0 0.7rem;
  border-radius: 12px;
  border: 1px solid var(--line);
  overflow: hidden;
}
.agent-hosp-split {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.95fr);
  gap: 0.75rem;
  align-items: stretch;
  margin: 0 0 0.35rem;
}
.agent-hosp-list {
  min-width: 0;
  max-height: clamp(320px, 48vh, 560px);
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fff;
  display: flex;
  flex-direction: column;
}
.agent-hosp-list .party-table {
  margin: 0;
  flex: 1 1 auto;
}
.agent-hosp-list .party-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #fff8f0;
  box-shadow: 0 1px 0 var(--line);
}
.agent-hosp-pager {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
  padding: 0.45rem 0.55rem;
  border-top: 1px solid var(--line);
  background: #fffaf4;
  position: sticky;
  bottom: 0;
  z-index: 1;
}
.agent-hosp-pager[hidden] { display: none !important; }
.agent-hosp-pager span { flex: 1 1 auto; font-size: 0.78rem; }
.agent-hosp-pager .ghost.slim {
  padding: 0.2rem 0.55rem;
  font-size: 0.78rem;
}
.agent-hosp-pager .ghost.slim:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.agent-hosp-map {
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.agent-page #sec-hospital .agent-hosp-map .party-map {
  flex: 1 1 auto;
  height: clamp(320px, 48vh, 560px);
  min-height: 320px;
  margin: 0;
}
.agent-page #sec-hospital .agent-proj-kpis {
  margin: 0.75rem 0 0.35rem;
  gap: 0.55rem;
}
.agent-page #sec-hospital .agent-proj-kpis .kpi {
  padding: 0.65rem 0.75rem;
}
.agent-page #sec-hospital .agent-proj-kpis .kpi b {
  font-size: 1.25rem;
}
.agent-page #sec-hospital .hosp-prov-bar {
  margin: 0.15rem 0 0.55rem;
  padding: 0.45rem 0.55rem;
  border-radius: 10px;
  background: #fff8f0;
  border: 1px solid #f0ddc8;
}
.agent-page #sec-hospital .hosp-prov-bar .field {
  font-weight: 650;
  color: #6a4308;
}
.agent-page #sec-hospital .party-table {
  margin-top: 0.15rem;
}
@media (max-width: 980px) {
  .agent-hosp-split {
    grid-template-columns: 1fr;
  }
  .agent-hosp-list {
    max-height: 280px;
  }
  .agent-page #sec-hospital .agent-hosp-map .party-map {
    height: clamp(280px, 42vh, 420px);
    min-height: 280px;
  }
}
.agent-page .hosp-link-row {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.55rem;
  position: relative;
  z-index: 5;
  overflow: visible;
}
.agent-page .hosp-link-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem 0.85rem;
  align-items: end;
}
.agent-page .hosp-link-q {
  flex: 1 1 16rem;
  min-width: 12rem;
  position: relative;
}
.agent-page .hosp-link-kind {
  flex: 0 0 7.5rem;
  min-width: 6.5rem;
}
.agent-page .hosp-link-q .name-search input,
.agent-page #hospital-q {
  min-height: 2.7rem;
  font-size: 1.02rem;
  font-weight: 650;
  padding: 0.55rem 0.8rem;
  line-height: 1.35;
}
.agent-page .hosp-link-controls > button {
  min-height: 2.7rem;
  padding: 0.55rem 1.15rem;
  font-size: 0.95rem;
  font-weight: 800;
  margin-bottom: 0.05rem;
}
/* 结果列表跟在输入行下面展开，不再浮层挡住输入/业务/关联 */
.agent-page .hosp-lookup-hits {
  position: static;
  left: auto;
  right: auto;
  width: 100%;
  max-height: min(42vh, 22rem);
  margin: 0;
  z-index: 1;
  box-shadow: inset 0 0 0 1px #1e3a4c;
}
.agent-page .hosp-lookup-hits button {
  padding: 0.7rem 0.85rem;
  font-size: 0.98rem;
  line-height: 1.35;
}
.agent-page .hosp-lookup-hits button strong {
  display: block;
  font-size: 1rem;
}
.agent-page .hosp-lookup-hits button .muted {
  margin-top: 0.18rem;
  font-size: 0.82rem;
}
@media (min-width: 820px) {
  .agent-page .hosp-link-q { flex: 1 1 22rem; }
}
.party-docs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
  gap: 0.45rem 0.7rem;
  align-items: end;
}
.party-doc {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 0;
}
.party-doc-lab {
  font-size: 0.78rem;
  font-weight: 650;
  color: var(--ink);
}
.party-doc-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.55rem;
  font-size: 0.8rem;
}
.party-doc-file {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  cursor: pointer;
  color: var(--brand-dark);
  font-weight: 650;
}
.party-doc-file input[type=file] {
  width: 7.5rem;
  max-width: 100%;
  font-size: 0.72rem;
  padding: 0.1rem 0;
}
.party-doc-no { margin: 0; }
.license-hint { margin: 0 0 0.55rem; font-size: 0.82rem; line-height: 1.4; padding: 0.4rem 0.65rem; }
.agent-page .qp-gp-box .license-hint { margin: 0 0 0.4rem; }
.doc-view-dialog {
  width: min(92vw, 920px);
  height: min(88vh, 820px);
  max-width: none;
  max-height: none;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.doc-view-dialog::backdrop { background: rgba(20, 30, 40, 0.45); }
.doc-view-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.45rem 0.7rem;
  background: #f6f3ee;
  border-bottom: 1px solid var(--line);
}
.doc-view-acts { display: flex; align-items: center; gap: 0.55rem; }
.doc-view-dialog iframe {
  display: block;
  width: 100%;
  height: calc(100% - 2.6rem);
  border: 0;
  background: #fff;
}
.agent-flow-now {
  margin: 0;
  padding: 0.5rem 0.75rem;
  border-radius: 10px;
  background: #fff6ea;
  border: 1px solid #ecd4b4;
  font-size: 0.84rem;
  line-height: 1.45;
  color: var(--navy);
}
.agent-page .agent-flow-now {
  padding: 0.22rem 0.55rem;
  font-size: 0.78rem;
  line-height: 1.3;
  border-radius: 8px;
}
.agent-flow-now strong { font-weight: 750; }
.agent-direct-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin: 0.45rem 0 0.7rem;
}
.agent-direct-hints {
  margin: 0;
  padding-left: 1.15rem;
  line-height: 1.55;
}
.agent-direct-hints b { font-weight: 700; }
.agent-flow .agent-work-steps {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.4rem, 1fr));
}
.agent-work-steps li.is-extra {
  background: #f4f2ef;
  border-style: dashed;
  color: #4a5560;
}
.agent-work-steps li.is-extra .step-n {
  box-shadow: 0 0 0 2px #9aa4ad;
  font-size: 0.78rem;
}
.agent-work-steps li.is-extra.on {
  background: var(--brand);
  color: #fff;
  border-style: solid;
}
.coop-price-table .coop-price-in.is-filled {
  outline: 2px solid var(--brand);
  background: #fff7f0;
}
.coop-price-form .form-actions { margin: 0.55rem 0 0; }
.coop-guide {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.7rem;
  margin: 0 0 0.7rem;
  padding: 0;
  list-style: none;
}
.coop-guide li {
  flex: 1 1 11rem;
  margin: 0;
  padding: 0.45rem 0.6rem;
  border-radius: 8px;
  background: #fff6ea;
  border: 1px solid #ecd4b4;
  font-size: 0.8rem;
  line-height: 1.4;
  color: var(--navy);
}
.coop-guide li b {
  display: block;
  margin: 0 0 0.12rem;
  font-size: 0.82rem;
}
.coop-toolbar {
  display: grid;
  grid-template-columns: minmax(11rem, 1fr) minmax(16rem, 1.4fr) minmax(12rem, 1fr);
  gap: 0.55rem;
  margin: 0 0 0.55rem;
}
.coop-box {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.4rem 0.5rem;
  padding: 0.55rem 0.65rem 0.6rem;
  border: 1px solid #e2d3c0;
  border-radius: 8px;
  background: #faf7f2;
}
.coop-box .coop-k {
  flex: 1 1 100%;
  font-size: 0.72rem;
  font-weight: 750;
  color: var(--brand-dark);
  letter-spacing: 0.04em;
}
.coop-box .field { flex: 1 1 7rem; margin: 0; }
.coop-term {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.coop-term label {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  margin: 0;
  padding: 0.32rem 0.7rem;
  border: 1px solid #d4c0a8;
  border-radius: 999px;
  background: #fff;
  font-size: 0.86rem;
  cursor: pointer;
}
.coop-term label:has(input:checked) {
  background: var(--brand-dark, #6b3e26);
  border-color: var(--brand-dark, #6b3e26);
  color: #fff;
}
.coop-term input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.coop-term-range {
  flex: 1 1 100%;
  margin: 0.1rem 0 0;
  font-size: 0.78rem;
}
.coop-hint {
  margin: 0 0 0.55rem;
  padding: 0.45rem 0.65rem;
  border-radius: 8px;
  background: #eef6f8;
  border: 1px solid #c5dbe3;
  font-size: 0.82rem;
  line-height: 1.4;
  color: #1e3a4c;
}
.coop-hint.is-bad {
  background: #fff1ea;
  border-color: #e8b49a;
  color: #8a2f12;
}
@media (max-width: 960px) {
  .coop-toolbar { grid-template-columns: 1fr; }
  .agent-page .agent-flow .agent-work-steps { flex-wrap: wrap; }
}
.agent-run-guide { margin-bottom: 0.85rem; }
.party-now {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.85rem;
  margin: 0 0 0.75rem;
  padding: 0.7rem 0.9rem;
  border-radius: 12px;
  background: #1e3a4c;
  color: #fff;
}
.party-now.is-ready { background: #1f4a38; }
.party-now-txt { min-width: 0; }
.party-now .work-guide-k { color: rgba(255,255,255,0.7); }
.party-now strong {
  display: block;
  margin: 0.12rem 0 0.2rem;
  font-size: 1.05rem;
  line-height: 1.3;
}
.party-now p {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.45;
  opacity: 0.9;
}
.party-now > .btn {
  flex: 0 0 auto;
  background: #fff;
  color: var(--brand-dark);
  border-color: #fff;
}
.party-now > .btn.ghost {
  background: transparent;
  color: #fff;
  border-color: rgba(255,255,255,0.45);
}
.party-sign {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.75rem 1.2rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  background: #f6f3ee;
  border: 1px solid var(--line);
}
.party-sign-id { min-width: 10rem; }
.party-sign-id em {
  display: block;
  font-style: normal;
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.party-sign-id strong {
  display: block;
  font-size: 1.35rem;
  letter-spacing: 0.04em;
  margin: 0.1rem 0;
}
.party-sign-id span { font-size: 0.82rem; color: var(--muted); }
.party-sign-tags { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.party-sign .form-actions { margin: 0; margin-left: auto; }
.party-add-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  align-items: end;
  margin: 0;
}
.party-add-row .field { flex: 0 1 11rem; min-width: 8rem; }
.party-add-row .field.grow { flex: 1 1 16rem; min-width: 12rem; }
.party-add-row button { margin-bottom: 0.05rem; }
.party-pane { padding: 1rem 1.1rem 1.2rem; }
.party-block {
  padding: 0.85rem 0.95rem;
  margin: 0 0 1rem;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #f7f4ee;
  overflow: visible;
}
.party-block .subh { margin: 0 0 0.55rem; font-size: 0.88rem; }
.party-block .row { margin: 0 0 0.7rem; }
.party-block .row:last-child { margin-bottom: 0; }
.party-block .form-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem;
  margin: 0.15rem 0 0;
}
.party-lines {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 1rem;
  margin-top: 0.2rem;
  color: var(--ink);
  font-size: 0.88rem;
}
.party-lines label {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.party-table { min-width: 0; }
.party-map { height: 220px; margin: 0 0 0.85rem; border-radius: 10px; }
.party-empty {
  list-style: none;
  padding: 0.9rem 0.2rem;
  color: var(--muted);
}
.party-current { margin: 0 0 0.55rem; }
.party-row-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.party-row-acts form.inline { margin: 0; display: inline; }
.party-row-acts .btn.err { color: #b42318; }
dialog.crm-confirm-dlg {
  width: min(28rem, 92vw);
  padding: 1.1rem 1.2rem 1rem;
  border: 1px solid #e6d4c2;
  border-radius: 10px;
  background: #fffaf4;
  box-shadow: 0 12px 36px rgba(70, 40, 16, 0.18);
}
dialog.crm-confirm-dlg::backdrop { background: rgba(32, 24, 16, 0.45); }
dialog.crm-confirm-dlg h3 { margin: 0 0 0.55rem; font-size: 1.05rem; }
dialog.crm-confirm-dlg .crm-confirm-msg { margin: 0 0 0.85rem; line-height: 1.55; }
dialog.crm-confirm-dlg .form-actions { margin: 0; justify-content: flex-end; gap: 0.5rem; }
.crm-confirm-page { max-width: 36rem; }
.party-table input[type="text"],
.party-table input:not([type]),
.party-table input[type="tel"] {
  width: 100%;
  min-width: 4.5rem;
  padding: 0.28rem 0.4rem;
}
.party-add-line td {
  background: #faf7f2;
  vertical-align: middle;
}
.contact-add-form {
  margin: 0.15rem 0 0.85rem;
  padding: 0.65rem 0.7rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #faf7f2;
}
.contact-add-form .party-check {
  display: flex;
  flex-direction: column;
  justify-content: end;
  gap: 0.35rem;
  min-width: 4.5rem;
}
.party-add-geo {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  align-items: center;
}
.party-add-geo select {
  width: auto;
  min-width: 4.2rem;
  max-width: 6.5rem;
  padding: 0.28rem 0.3rem;
  font-size: 0.82rem;
}
.party-proj-go {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
}
.agent-page .hosp-split {
  grid-template-columns: minmax(0, 1fr) minmax(260px, 18rem);
}
.agent-page table { min-width: 0; }
.gold-steps-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem;
}
@media (max-width: 860px) {
  .gold-steps-grid { grid-template-columns: 1fr; }
  .agent-page .hosp-split { grid-template-columns: 1fr; }
}
.party-check {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-size: 0.82rem;
  color: var(--muted);
  white-space: nowrap;
}
.pane-empty { color: var(--muted); }
.agent-side h2 { margin: 0 0 0.4rem; font-size: 0.95rem; }
.agent-side h2 + .hospital-map { margin-top: 0.15rem; }
.agent-side-now {
  margin: 0 0 0.65rem;
  padding: 0.45rem 0.6rem;
  border-radius: 8px;
  background: #fff4e8;
  color: #6a4308;
  font-size: 0.82rem;
  font-weight: 650;
  line-height: 1.4;
}
.party-stat {
  list-style: none;
  margin: 0 0 0.85rem;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.4rem;
}
.party-stat li {
  padding: 0.4rem 0.5rem;
  border-radius: 8px;
  background: #f6f3ee;
}
.party-stat b { display: block; font-size: 0.95rem; }
.party-stat span { font-size: 0.72rem; color: var(--muted); }
.agent-recent-follows {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.55rem;
}
.agent-recent-follows li {
  border: 1px solid #e6e0d6;
  border-radius: 8px;
  padding: 0.45rem 0.55rem;
  background: #fff;
}
.agent-recent-follows .party-follow-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.55rem;
  align-items: center;
  margin-bottom: 0.2rem;
}
.agent-recent-follows p {
  margin: 0;
  white-space: pre-wrap;
  line-height: 1.45;
  font-size: 0.9rem;
}
.agent-open-projs { margin: 0.4rem 0 0.6rem; }
.agent-page #sec-projects .agent-proj-kpis {
  margin: 0 0 0.55rem;
  gap: 0.45rem;
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.agent-page #sec-projects .agent-proj-kpis .kpi {
  padding: 0.55rem 0.65rem;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #fffefb 0%, #fff 100%);
  box-shadow: 0 1px 0 rgba(28, 36, 48, 0.03);
}
.agent-page #sec-projects .agent-proj-kpis .kpi span {
  color: var(--muted);
  letter-spacing: 0.04em;
}
.agent-page #sec-projects .agent-proj-kpis .kpi b {
  font-size: 1.28rem;
  color: var(--navy);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}
.agent-page #sec-projects .agent-proj-kpis .kpi b.err { color: var(--err); }
.agent-page #sec-projects .agent-proj-kpis .kpi small {
  font-size: 0.72rem;
  line-height: 1.35;
}
.agent-open-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.65rem;
  margin: 0 0 0.5rem;
  padding: 0.35rem 0.55rem;
  border-radius: 8px;
  background: #f7f3ec;
  border: 1px solid #ebe3d6;
  font-size: 0.82rem;
  color: var(--muted);
}
.agent-open-count b { color: var(--navy); font-weight: 750; }
.agent-open-stale-tip { color: var(--err); font-weight: 650; }
.agent-open-stale-tip b { color: var(--err); }
.agent-open-ok-tip { color: var(--ok); font-weight: 650; }
.agent-open-sort-tip { margin-left: auto; font-size: 0.76rem; }
.agent-open-lanes {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  align-items: center;
}
.agent-open-lane-btn {
  border: 1px solid #e0d6c8;
  background: #fff;
  color: var(--muted);
  border-radius: 999px;
  padding: 0.22rem 0.7rem;
  font-size: 0.8rem;
  font-weight: 650;
  cursor: pointer;
  line-height: 1.4;
}
.agent-open-lane-btn b { color: var(--navy); font-weight: 750; }
.agent-open-lane-btn.on {
  background: var(--navy);
  border-color: var(--navy);
  color: #fff;
}
.agent-open-lane-btn.on b { color: #fff; }
.agent-open-lane-panel { margin-top: 0.15rem; }
.agent-open-lane-empty { margin: 0.6rem 0 0.2rem; }
.agent-open-card.is-fulfill {
  border-color: #c9ddd0;
  background: linear-gradient(180deg, #f7fcf8 0%, #fff 48%);
}
.agent-open-cards {
  display: grid;
  gap: 0.55rem;
}
.agent-open-card {
  display: grid;
  grid-template-columns: 1.6rem 1fr;
  gap: 0.35rem 0.55rem;
  align-items: start;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--paper);
  padding: 0.55rem 0.7rem 0.5rem 0.45rem;
  box-shadow: 0 1px 2px rgba(28, 36, 48, 0.04);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.agent-open-card:hover {
  border-color: #d5cbb8;
  box-shadow: 0 4px 14px rgba(28, 36, 48, 0.07);
}
.agent-open-card.is-stale {
  border-color: #e7b6a6;
  background: linear-gradient(90deg, #fff4ef 0, #fff4ef 1.6rem, #fffdfb 1.6rem);
}
.agent-open-rank {
  display: grid;
  place-items: center;
  width: 1.55rem;
  height: 1.55rem;
  margin-top: 0.1rem;
  border-radius: 999px;
  background: var(--navy);
  color: #f5f8fa;
  font-size: 0.72rem;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}
.agent-open-card.is-stale .agent-open-rank {
  background: var(--brand);
}
.agent-open-body { min-width: 0; }
.agent-open-card-h {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.35rem 0.75rem;
  margin-bottom: 0.4rem;
}
.agent-open-main { min-width: 0; flex: 1 1 12rem; }
.agent-open-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0.4rem;
}
.agent-open-title {
  font-weight: 750;
  font-size: 0.98rem;
  color: var(--ink);
  text-decoration: none;
}
.agent-open-title:hover {
  color: var(--brand-dark);
  text-decoration: underline;
}
.agent-open-where {
  margin: 0.18rem 0 0;
  font-size: 0.78rem;
  color: var(--muted);
}
.agent-open-idle {
  flex: 0 0 auto;
  text-align: right;
  min-width: 6.2rem;
  padding: 0.28rem 0.5rem;
  border-radius: 8px;
  background: #f3f0ea;
  border: 1px solid #e7e0d4;
  line-height: 1.25;
}
.agent-open-idle b {
  display: block;
  font-size: 0.82rem;
  font-weight: 750;
  color: var(--navy);
}
.agent-open-idle.warn {
  background: #fff1ec;
  border-color: #efc2b4;
}
.agent-open-idle.warn b { color: var(--err); }
.agent-open-idle.ok {
  background: #eef7f1;
  border-color: #c7dfd0;
}
.agent-open-idle.ok b { color: var(--ok); }
.agent-open-idle small {
  display: block;
  color: var(--muted);
  font-size: 0.7rem;
  margin-top: 0.08rem;
}
.agent-open-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0;
  margin: 0 0 0.4rem;
  border: 1px solid #ebe4d8;
  border-radius: 8px;
  background: #faf7f1;
  overflow: hidden;
}
.agent-open-metric {
  display: flex;
  flex-direction: column;
  gap: 0.08rem;
  padding: 0.35rem 0.45rem;
  border-right: 1px solid #ebe4d8;
  min-width: 0;
}
.agent-open-metric:last-child { border-right: 0; }
.agent-open-metric span {
  font-size: 0.68rem;
  color: var(--muted);
  letter-spacing: 0.04em;
}
.agent-open-metric b {
  font-size: 0.92rem;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
  line-height: 1.15;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.agent-open-metric.is-share b { color: var(--brand-dark); }
.agent-open-metric.is-profit {
  background: rgba(30, 58, 76, 0.06);
}
.agent-open-metric.is-profit b { color: var(--navy); }
.agent-open-rate {
  font-style: normal;
  font-size: 0.68rem;
  color: var(--muted);
  font-weight: 650;
  line-height: 1.1;
}
.agent-open-metric .err { color: var(--err); }
.open-board-band { margin-top: 0.15rem; }
.open-board-filter {
  margin: 0 0 0.55rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}
.open-board-filter input[type="search"] { flex: 1; min-width: 14rem; }
.open-board-kpis { margin-bottom: 0.55rem; }
.open-client-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.open-client-note {
  margin: 0 0 0.35rem;
  font-size: 0.82rem;
  line-height: 1.4;
  color: #4a5560;
  white-space: pre-wrap;
}
.hub-page .hub-pane-seg a { white-space: nowrap; }
.agent-open-team {
  list-style: none;
  margin: 0 0 0.35rem;
  padding: 0;
  display: grid;
  gap: 0.2rem;
}
.agent-open-team li {
  display: grid;
  grid-template-columns: 1.35rem auto auto minmax(0, 1fr);
  align-items: center;
  gap: 0.3rem 0.4rem;
  padding: 0.22rem 0.4rem;
  border-radius: 7px;
  background: #fff;
  border: 1px solid #ebe5db;
  font-size: 0.78rem;
  line-height: 1.3;
}
.agent-open-team li.is-stale {
  border-color: #e7b6a6;
  background: #fff6f2;
}
.agent-open-avatar {
  display: grid;
  place-items: center;
  width: 1.35rem;
  height: 1.35rem;
  border-radius: 999px;
  background: #dfe8ee;
  color: var(--navy);
  font-style: normal;
  font-size: 0.7rem;
  font-weight: 750;
}
.agent-open-team li.is-stale .agent-open-avatar {
  background: #f3d4c8;
  color: var(--brand-dark);
}
.agent-open-who {
  display: inline-flex;
  align-items: baseline;
  gap: 0.28rem;
  white-space: nowrap;
}
.agent-open-who b { font-weight: 700; color: var(--ink); }
.agent-open-who em {
  font-style: normal;
  font-size: 0.7rem;
  color: var(--muted);
  padding: 0.02rem 0.28rem;
  border-radius: 999px;
  background: #f0ebe3;
}
.agent-open-team-idle {
  color: var(--muted);
  white-space: nowrap;
  font-size: 0.74rem;
}
.agent-open-team-idle.warn {
  color: var(--err);
  font-weight: 700;
}
.agent-open-team-note {
  min-width: 0;
  color: #5a6570;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.agent-open-team-note.muted { color: var(--muted); }
.agent-open-bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem 0.75rem;
  padding-top: 0.3rem;
  border-top: 1px solid #efe9df;
}
.agent-open-follows {
  flex: 1 1 12rem;
  margin: 0;
  border: 0;
  background: transparent;
  min-width: 0;
}
.agent-open-follows > summary {
  cursor: pointer;
  list-style: none;
  padding: 0.1rem 0;
  font-size: 0.76rem;
  color: var(--muted);
  font-weight: 650;
  user-select: none;
}
.agent-open-follows > summary::-webkit-details-marker { display: none; }
.agent-open-follows > summary::before {
  content: "▸ ";
  color: #9a9080;
}
.agent-open-follows[open] > summary::before { content: "▾ "; }
.agent-open-follows ul {
  list-style: none;
  margin: 0.25rem 0 0;
  padding: 0.35rem 0.45rem;
  display: grid;
  gap: 0.25rem;
  border-radius: 7px;
  background: #faf7f1;
  border: 1px solid #ebe4d8;
}
.agent-open-follows > p.muted {
  margin: 0.2rem 0 0;
  font-size: 0.76rem;
}
.agent-open-follows li { font-size: 0.76rem; }
.agent-open-follows li p {
  margin: 0.05rem 0 0;
  white-space: pre-wrap;
  line-height: 1.35;
  font-size: 0.82rem;
  color: var(--ink);
}
.agent-open-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0;
  padding: 0;
  border: 0;
}
.agent-open-acts .btn {
  padding: 0.22rem 0.55rem;
  font-size: 0.78rem;
}
.agent-open-empty {
  padding: 1rem 0.5rem 0.4rem;
  text-align: center;
}
.agent-open-empty > p:first-child {
  margin: 0 0 0.2rem;
  font-weight: 650;
  font-size: 0.98rem;
}
@media (max-width: 720px) {
  .agent-open-card {
    grid-template-columns: 1.4rem 1fr;
  }
  .agent-open-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .agent-open-metric:nth-child(3n) { border-right: 0; }
  .agent-open-metric:nth-child(n + 4) {
    border-top: 1px solid #ebe4d8;
  }
  .agent-open-idle {
    text-align: left;
    width: 100%;
  }
  .agent-open-team li {
    grid-template-columns: 1.35rem minmax(0, 1fr) auto;
  }
  .agent-open-team-note {
    grid-column: 1 / -1;
    white-space: normal;
  }
  .agent-open-sort-tip { margin-left: 0; width: 100%; }
}
.party-stat a {
  display: block;
  color: inherit;
  text-decoration: none;
}
.party-stat a:hover b { color: var(--accent, #1e4a6c); }
.agent-page .hosp-side-map { height: min(36vh, 300px); min-height: 200px; }
.agent-side-steps {
  list-style: none;
  margin: 0 0 1rem;
  padding: 0;
}
.agent-side-steps li {
  position: relative;
  padding: 0.38rem 0.5rem 0.38rem 1.45rem;
  margin: 0 0 0.3rem;
  border-radius: 8px;
  background: #f6f3ee;
  font-size: 0.78rem;
  line-height: 1.4;
  color: #3d4a58;
}
.agent-side-steps li::before {
  content: "";
  position: absolute;
  left: 0.5rem;
  top: 0.62rem;
  width: 0.45rem;
  height: 0.45rem;
  border-radius: 50%;
  background: #c9bfb0;
}
.agent-side-steps li.on {
  background: #fff4e8;
  color: #6a4308;
  font-weight: 650;
}
.agent-side-steps li.on::before { background: var(--brand); }
.agent-side-steps li.need { background: #fff8ee; }
.agent-side-steps li.need::before { background: #d89a3a; }
.agent-follow-form .form-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
@media (max-width: 720px) {
  .party-now { flex-direction: column; align-items: stretch; }
  .party-sign .form-actions { margin-left: 0; }
}
.hosp-bid-form { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0.4rem 0 0.8rem; }
.hosp-bid-form input, .hosp-bid-form select { width: auto; min-width: 7rem; margin: 0; }
.follow-list { list-style: none; margin: 0.8rem 0 0; padding: 0; }
.follow-list li { padding: 0.55rem 0; border-top: 1px solid var(--line); }
.follow-list p { margin: 0.2rem 0 0; }
.sched-jump { display: flex; flex-wrap: wrap; gap: 0.45rem; align-items: center; }
.sched-modes {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.sched-mode {
  display: inline-flex;
  align-items: center;
  padding: 0.22rem 0.65rem;
  border: 1px solid #1e3a4c;
  border-radius: 999px;
  background: #1e3a4c;
  color: #fff;
  font-size: 0.8rem;
  font-weight: 700;
  text-decoration: none;
}
.sched-mode:hover { background: #c45c28; border-color: #c45c28; color: #fff; text-decoration: none; }
.sched-mode b { font-size: 0.8rem; }
.sched-mode em { display: none; }
.task-board, .client-tasks {
  margin: 0 0 0.55rem;
  padding: 0.5rem 0.65rem 0.55rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.task-board-h {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 0.25rem 0.7rem;
}
.task-board-h h3 { margin: 0; font-size: 0.86rem; }
.task-board-h p { display: none; }
.task-tabs { display: flex; align-items: center; gap: 0.2rem; }
.task-tabs input { position: absolute; opacity: 0; width: 0; height: 0; pointer-events: none; }
.task-tabs label {
  padding: 0.16rem 0.62rem;
  border-radius: 999px;
  background: #efe8dc;
  color: var(--ink);
  font-size: 0.76rem;
  font-weight: 700;
  cursor: pointer;
}
.task-tabs input:focus-visible + label { outline: 2px solid var(--brand); outline-offset: 2px; }
.task-tabs input:checked + label { background: var(--brand); color: #fff; }
.task-who-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  margin: 0.4rem 0 0;
}
.task-who-bar button {
  padding: 0.16rem 0.62rem;
  border: 0;
  border-radius: 999px;
  background: #efe8dc;
  color: #14202c;
  font-size: 0.76rem;
  font-weight: 700;
  cursor: pointer;
}
.task-who-bar button.on { background: #1e3a4c; color: #fff; }
.task-rows {
  list-style: none;
  margin: 0.4rem 0 0;
  padding: 0;
  max-height: min(52vh, 28rem);
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.task-row {
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 10px;
  background: transparent;
}
.task-row .task-hit {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 0.45rem 0.65rem;
  align-items: center;
  padding: 0.55rem 0.65rem 0.55rem 0.55rem;
  border: 1px solid #e6ddd0;
  border-radius: 10px;
  border-left: 4px solid #c8c0b4;
  background: #fff;
  text-decoration: none;
  color: inherit;
  transition: border-color 0.12s ease, background 0.12s ease, box-shadow 0.12s ease;
}
.task-row .task-hit:hover {
  border-color: #e0a06a;
  background: #fff8f0;
  box-shadow: 0 1px 0 rgba(196, 92, 40, 0.12);
  text-decoration: none;
  color: inherit;
}
.task-row .task-hit:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}
.task-row.is-wait .task-hit { border-left-color: #9aa3ad; }
.task-row.is-doing .task-hit {
  border-left-color: #c45c28;
  background: #fffaf4;
}
.task-row.is-done .task-hit {
  border-left-color: #7fb892;
  opacity: 0.82;
}
.task-row.is-mine .task-hit {
  box-shadow: inset 0 0 0 1px rgba(196, 92, 40, 0.22);
}
.task-row.is-doing.is-mine .task-hit {
  background: #fff3e6;
}
.task-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.22rem;
}
.task-line1 {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 0.55rem;
  min-width: 0;
}
.task-line2 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.25rem 0.4rem;
  min-width: 0;
}
.task-row .task-obj {
  max-width: none;
  font-size: 0.92rem;
  font-weight: 800;
  color: var(--navy);
  line-height: 1.25;
}
.task-row .task-title {
  min-width: 0;
  flex: 1 1 8rem;
  font-weight: 500;
  font-size: 0.8rem;
  color: #5a6570;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-row .task-who {
  font-size: 0.78rem;
  font-weight: 750;
}
.task-row .task-region,
.task-row .task-when {
  font-size: 0.72rem;
}
.task-main { min-width: 0; }
.task-meta {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.72rem !important;
}
.task-banner .task-meta { flex: 0 1 auto; max-width: 18rem; }
.task-go {
  margin-left: auto;
  font-size: 0.78rem;
  font-weight: 700;
  white-space: nowrap;
  color: var(--brand-dark);
}
.task-empty { display: none; margin: 0.35rem 0 0; font-size: 0.78rem; }
.task-board:has(.tf-open:checked) .task-row.is-done { display: none; }
.task-board:has(.tf-done:checked) .task-row:not(.is-done) { display: none; }
.task-board:has(.tf-open:checked) .task-empty-open { display: block; }
.task-board:has(.tf-done:checked) .task-empty-done { display: block; }
.desk-schedule .task-board {
  margin: 0.55rem 0 0;
  padding: 0.45rem 0 0;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
}
.desk-schedule .task-rows { max-height: min(40vh, 22rem); }
.impl-task-list.task-board { margin: 0 0 0.85rem; }
.client-search {
  margin: 0 0 0.85rem;
  padding: 0.85rem 1rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.client-search-lab {
  display: block;
  margin: 0 0 0.45rem;
  font-weight: 750;
  font-size: 0.95rem;
}
.client-lines {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 0.65rem;
}
.client-lines a {
  padding: 0.28rem 0.7rem;
  border-radius: 999px;
  background: #efe8dc;
  color: var(--ink);
  font-size: 0.82rem;
  font-weight: 650;
  text-decoration: none;
}
.client-lines a:hover { background: #ead6bf; text-decoration: none; }
.client-lines a.on { background: var(--brand); color: #fff; }
.client-search-row {
  display: flex;
  gap: 0.5rem;
  align-items: stretch;
}
.client-search-row input[type="search"] {
  flex: 1;
  min-width: 0;
  margin: 0;
  padding: 0.65rem 0.8rem;
  font-size: 1rem;
}
.client-search-row .btn { min-width: 5.5rem; }
.client-search-extra {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin-top: 0.55rem;
}
.client-search-extra select { width: auto; min-width: 7rem; margin: 0; }
.bare-tog {
  padding: 0.22rem 0.55rem;
  border-radius: 999px;
  background: #efe8dc;
  color: var(--ink);
  font-size: 0.78rem;
  text-decoration: none;
}
.bare-tog.on { background: #f3e6d6; font-weight: 650; }
.client-now {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  margin: 0 0 0.85rem;
  padding: 0.7rem 0.9rem;
  background: #eef6ef;
  border: 1px solid #cfe3d6;
  border-radius: 12px;
}
.client-now.catalog-now {
  background: linear-gradient(135deg, #e8f5ea 0%, #f0f7f2 100%);
  border: 2px solid #3d8f52;
  box-shadow: 0 2px 10px rgba(45, 120, 70, 0.12);
  padding: 0.85rem 1rem;
}
.client-now small { display: block; font-size: 0.72rem; color: var(--ok); }
.client-now strong { font-size: 1.02rem; }
.client-now-acts { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.btn.catalog-dispatch-btn,
a.btn.catalog-dispatch-btn,
button.catalog-dispatch-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.55rem;
  padding: 0.55rem 1.35rem;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #fff !important;
  background: linear-gradient(180deg, #3d9a55 0%, #2d7a42 100%) !important;
  border: 1px solid #246636 !important;
  border-radius: 10px;
  box-shadow: 0 3px 0 #1e5530, 0 4px 12px rgba(36, 102, 54, 0.28);
  text-decoration: none;
  white-space: nowrap;
}
.btn.catalog-dispatch-btn:hover,
a.btn.catalog-dispatch-btn:hover,
button.catalog-dispatch-btn:hover {
  background: linear-gradient(180deg, #48a85f 0%, #348a4a 100%) !important;
  filter: none;
}
.btn.catalog-dispatch-btn.ok,
button.catalog-dispatch-btn.ok {
  background: linear-gradient(180deg, #3d9a55 0%, #2d7a42 100%) !important;
}
.catalog-dispatch-card {
  border: 2px solid #3d8f52;
  background: #f7fcf8;
  box-shadow: 0 4px 16px rgba(45, 120, 70, 0.1);
  margin-bottom: 0.85rem;
}
.catalog-dispatch-card .client-plan-h h3 {
  font-size: 1.15rem;
  color: #1e5530;
}
.catalog-dispatch-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  align-items: center;
}
.catalog-dispatch-card .form-actions button.catalog-dispatch-btn {
  width: auto;
  min-width: 12rem;
  flex: 0 0 auto;
}
.client-region {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.65rem;
}
.client-region label { font-weight: 650; font-size: 0.86rem; }
.client-region select { width: auto; min-width: 8rem; margin: 0; }
.client-plan { padding: 0.85rem 0.95rem 0.55rem; }
.client-plan .field { margin-bottom: 0.7rem; }
.client-plan .form-actions { margin: 0.15rem 0 0.35rem; }
.client-plan .form-actions button { width: 100%; }
.client-plan-tip { padding: 0 0.95rem 0.85rem; font-size: 0.78rem; line-height: 1.45; }
dialog.plan-dlg { max-width: 34rem; }
dialog.plan-dlg .dlg-bar { align-items: flex-start; }
dialog.plan-dlg .dlg-bar .muted { margin: 0.2rem 0 0; font-size: 0.8rem; line-height: 1.4; }
dialog.plan-dlg .client-plan { padding: 0; }
dialog.plan-dlg .client-plan .form-actions button { width: auto; min-width: 8rem; }
dialog.plan-dlg .client-plan-tip { padding: 0.15rem 0 0; }
.catalog-page .client-flow-hint,
.sol-page .client-flow-hint { margin-top: 0.35rem; }
.catalog-page .client-steps,
.sol-page .client-steps { margin-bottom: 0.35rem; }
.catalog-flow-chart {
  margin: 0.35rem 0 0.5rem;
  padding: 0.4rem 0.7rem;
}
.catalog-flow-chart.is-collapsed { padding-bottom: 0.35rem; }
.catalog-flow-h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem 0.75rem;
  margin-bottom: 0;
}
.catalog-flow-title {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 0.65rem;
  min-width: 0;
}
.catalog-flow-h strong { font-size: 0.92rem; color: #3d3228; }
.catalog-flow-h .muted { font-size: 0.8rem; }
.catalog-flow-tog {
  flex: 0 0 auto;
  padding: 0.15rem 0.55rem;
  font-size: 0.8rem;
}
.catalog-flow-body { margin-top: 0.55rem; padding-top: 0.15rem; }
.catalog-flow-steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.35rem 0;
}
.catalog-flow-steps li {
  display: flex;
  align-items: center;
  margin: 0;
}
.catalog-flow-steps li span {
  display: inline-block;
  padding: 0.35rem 0.65rem;
  border: 1px solid #d4c4b0;
  border-radius: 6px;
  background: #faf6f0;
  color: #3d3228;
  font-size: 0.82rem;
  white-space: nowrap;
}
.catalog-flow-steps li:not(:last-child)::after {
  content: "→";
  margin: 0 0.35rem;
  color: #a89078;
  font-size: 0.85rem;
}
.catalog-flow-note { margin: 0.55rem 0 0.15rem; font-size: 0.8rem; }
tr.js-prod.is-locked td { color: #7a6e62; }
tr.js-prod.is-locked td.col-img { opacity: 0.85; }
tr.js-prod.is-maint td:first-child { box-shadow: inset 3px 0 0 #c47a3a; }
tr.js-prod.is-maint { background: #fff8f0; }
.tag.prod-task-mark {
  background: #c47a3a;
  color: #fff;
  border: none;
  font-weight: 600;
}
.catalog-task-scope {
  display: inline-flex;
  gap: 0.25rem;
  margin: 0 0.35rem 0 0.5rem;
  vertical-align: middle;
}
.catalog-task-scope a {
  display: inline-flex;
  align-items: center;
  min-height: 2.2rem;
  padding: 0.35rem 0.85rem;
  border-radius: 8px;
  border: 1px solid #e0d2c0;
  background: #fff;
  color: #5c534a;
  text-decoration: none;
  font-size: 0.98rem;
  font-weight: 700;
}
.catalog-task-scope a.on {
  background: #c47a3a;
  border-color: #c47a3a;
  color: #fff;
}
.catalog-task-prods {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
  margin: 0 0 0.65rem;
}
.catalog-task-prods .js-prod-jump {
  cursor: pointer;
  max-width: 18rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
button.linkish {
  background: none;
  border: none;
  padding: 0;
  color: #8a5a2b;
  cursor: pointer;
  text-decoration: underline;
  font: inherit;
}
#prod-form.is-doc-locked { position: relative; }
#prod-form.is-doc-locked input:disabled,
#prod-form.is-doc-locked textarea:disabled,
#prod-form.is-doc-locked select:disabled {
  background: #f3eee7;
  color: #6b635a;
  cursor: not-allowed;
  opacity: 1;
}
.catalog-task-panel {
  margin: 0.5rem 0 0.75rem;
  padding: 0.75rem 1rem 1rem;
  border: 2px solid #d4a574;
  background: linear-gradient(180deg, #fffaf4 0%, #fff 55%);
  border-radius: 12px;
  box-shadow: 0 3px 12px rgba(120, 80, 40, 0.08);
}
.catalog-task-panel-h {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin-bottom: 0.35rem;
}
.catalog-task-panel-h strong { margin-right: 0.4rem; font-size: 1.05rem; }
.catalog-task-panel-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.catalog-task-panel-tip { margin: 0 0 0.55rem; font-size: 0.82rem; }
.catalog-task-ops {
  margin-top: 0.55rem;
  padding: 0.75rem 0.9rem;
  background: #f0f7f2;
  border: 1px solid #b8dcc4;
  border-radius: 10px;
}
.catalog-task-ops-lab {
  margin: 0 0 0.55rem;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #2d7a42;
  text-transform: none;
}
.catalog-task-ops .form-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
  margin: 0.35rem 0 0;
}
.catalog-task-ops .form-actions button {
  width: auto;
  min-width: 10rem;
}
.catalog-task-approve { gap: 0.55rem; }
.sol-progress { margin: 0.6rem 0 0.85rem; padding: 0.65rem 0.85rem; }
.sol-progress-h {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.75rem;
  margin-bottom: 0.45rem;
}
.sol-progress-checks {
  display: flex; flex-wrap: wrap; gap: 0.45rem 0.85rem;
}
.sol-progress-item {
  display: inline-flex; align-items: center; gap: 0.3rem;
  font-size: 0.9rem;
}
.sol-progress-item.on { color: #2f6b3a; font-weight: 600; }
.sol-progress-form .form-actions { margin-top: 0.45rem; }
.catalog-wf {
  margin: 0;
  padding: 0.2rem 0 0.1rem;
  min-height: 0;
}
.catalog-wf svg { max-width: 100%; height: auto; }
.catalog-list-sec { margin-top: 0.5rem; }
.catalog-list-h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.45rem 0.75rem;
  margin: 0 0 0.4rem;
}
.catalog-list-title {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 0.55rem;
}
.catalog-list-h strong { font-size: 0.98rem; color: #3d3228; }
.catalog-list-h .muted { font-size: 0.8rem; }
.catalog-list-acts {
  margin: 0;
  flex: 1 1 auto;
  justify-content: flex-end;
}
.catalog-acts-split {
  width: 1px;
  height: 1.35rem;
  background: #dfd2c0;
  margin: 0 0.15rem;
}
.sol-page.catalog-page .sol-toolbar {
  margin-bottom: 0.75rem;
}
.sol-page .catalog-filter-inline {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0;
  flex: 1;
}
.sol-page .catalog-filter-inline input[name="q"] {
  min-width: 10rem;
  flex: 1;
}
.sol-page .sol-new { margin: 0 0 0.85rem; }
.sol-page .sol-empty { margin: 0.5rem 0 1rem; }
.sol-page .sol-pick {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.84rem;
  color: #5a4630;
  margin: 0 0 0.35rem;
}
.catalog-plan-box { margin: 0 0 0.85rem; }
.catalog-task-follow { margin: 0 0 0.85rem; }
.catalog-task-follow h3 { margin: 0 0 0.25rem; font-size: 0.95rem; }
.catalog-wrap tr.js-prod.on-focus td { background: #fff4dc; }
.sol-pick {
  display: block;
  padding: 0.45rem 0.75rem 0;
  font-size: 0.78rem;
  color: var(--muted, #667);
}
.sol-pick input { margin-right: 0.3rem; }
.impl-page .impl-steps { margin: 0.6rem 0 0.85rem; }
.impl-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.85rem;
}
.impl-grid .card h2 { margin: 0 0 0.35rem; font-size: 1.05rem; }
.impl-step-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 0.65rem;
}
.impl-step-acts form { margin: 0; }
.impl-task-list { margin-bottom: 0.85rem; }
@media (max-width: 900px) {
  .impl-grid { grid-template-columns: 1fr; }
}
.plan-who {
  margin: 0 0 0.75rem;
  padding: 0.5rem 0.65rem;
  border-radius: 10px;
  background: #f7f1e8;
  font-size: 0.82rem;
  line-height: 1.45;
  color: var(--navy);
}
.plan-dates {
  margin: 0 0 0.75rem;
  padding: 0.65rem 0.7rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: #fffdf9;
}
.plan-date-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.55rem;
  margin-bottom: 0.55rem;
}
.plan-date-head b { font-size: 0.86rem; }
.plan-date-head .muted { font-size: 0.72rem; }
.plan-chips { display: flex; gap: 0.3rem; margin-left: auto; }
.plan-chips button {
  margin: 0;
  padding: 0.18rem 0.55rem;
  border-radius: 999px;
  border: 1px solid #e2d3c0;
  background: #fff;
  color: var(--navy);
  font-size: 0.75rem;
  font-weight: 650;
  cursor: pointer;
}
.plan-chips button:hover,
.plan-chips button.on { background: var(--brand); color: #fff; border-color: var(--brand-dark); }
.plan-date-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem;
}
.plan-date-row .field { margin: 0; }
.plan-date-row input[type="date"] {
  width: 100%;
  min-height: 2.4rem;
}
.plan-kinds {
  display: flex;
  gap: 0.4rem;
  margin: 0 0 0.75rem;
}
.plan-kinds label {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 2.2rem;
  margin: 0;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: #fff;
  font-size: 0.84rem;
  font-weight: 650;
  cursor: pointer;
}
.plan-kinds label input { position: absolute; opacity: 0; pointer-events: none; }
.plan-kinds label:has(input:checked),
.plan-kinds label.on {
  background: #f8efe4;
  border-color: var(--brand);
  color: var(--brand-dark);
}
.side-next { padding: 0.2rem 0.9rem 0.85rem; font-weight: 650; }
.client-webhits { margin: 0 0 0.85rem; }
.clients-work { align-items: stretch; }
select[multiple] { min-height: 8.5rem; }
.client-pick-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 0.9rem;
  background: #eef6ef;
  border-bottom: 1px solid #cfe3d6;
  font-size: 0.86rem;
}
.client-pick-bar.dim { background: #f7f1e8; }
.client-pick-bar.catalog-pick-bar {
  position: sticky;
  bottom: 0;
  z-index: 40;
  margin: 0.75rem -0.15rem 0;
  padding: 0.85rem 1.1rem;
  background: linear-gradient(135deg, #1e5530 0%, #2d7a42 100%);
  border: none;
  border-radius: 12px 12px 0 0;
  box-shadow: 0 -6px 24px rgba(30, 85, 48, 0.28);
  color: #fff;
  font-size: 0.95rem;
}
.client-pick-bar.catalog-pick-bar .catalog-pick-sum b {
  color: #ffe08a;
  font-size: 1.15rem;
}
.client-pick-bar.catalog-pick-bar.dim {
  background: linear-gradient(135deg, #5a6b5e 0%, #6a7d6e 100%);
  box-shadow: none;
  opacity: 0.92;
}
.client-pick-bar.catalog-pick-bar .client-pick-acts {
  display: flex;
  gap: 0.45rem;
  align-items: center;
}
.client-pick-bar.catalog-pick-bar .catalog-dispatch-btn {
  box-shadow: 0 3px 0 #c9a227, 0 4px 14px rgba(0, 0, 0, 0.22);
  background: linear-gradient(180deg, #ffd666 0%, #f0b429 100%) !important;
  border-color: #d49a14 !important;
  color: #3d2e08 !important;
}
.client-pick-bar.catalog-pick-bar .catalog-dispatch-btn:hover {
  background: linear-gradient(180deg, #ffe08a 0%, #f5c242 100%) !important;
}
.agent-pick-lab {
  display: flex;
  gap: 0.5rem;
  align-items: flex-start;
  grid-column: 1;
  grid-row: 1 / span 2;
  min-width: 0;
  cursor: pointer;
}
.agent-pick-lab input { margin-top: 0.25rem; }
.client-hits li.on { background: #1e3a4c; color: #fff; }
.client-hits li.on span { color: #d5e0e8; }
.client-side { padding: 0; overflow: hidden; }
.client-side-h { padding: 0.8rem 0.9rem 0.55rem; border-bottom: 1px solid var(--line); background: #f7f1e8; }
.client-side-h h3 { margin: 0; font-size: 1rem; }
.client-side-h p { margin: 0.25rem 0 0; font-size: 0.78rem; color: var(--muted); }
/* 客户中心：我的代理商 / 医院列表可滚动、可拉高 */
#client-mine-board .client-list-card {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  min-height: 0;
}
#client-mine-board .client-list-scroll {
  height: 280px;
  max-height: 70vh;
  min-height: 160px;
  overflow-x: hidden;
  overflow-y: auto;
  resize: vertical;
  border: 1px solid #eadfce;
  border-radius: 10px;
  background: #fffdf9;
  padding: 0.25rem 0.35rem;
  box-sizing: border-box;
}
#client-mine-board .client-list-scroll::-webkit-scrollbar {
  width: 8px;
}
#client-mine-board .client-list-scroll::-webkit-scrollbar-thumb {
  background: #d4c4ae;
  border-radius: 999px;
}
#client-mine-board .client-hits li.is-pinned {
  background: #fff6eb;
  border-color: #f0d4b0;
}
#client-mine-board .client-pin-mark {
  color: #c45c26;
  font-style: normal;
  margin-right: 0.1rem;
}
.client-hits { list-style: none; margin: 0; padding: 0; }
.client-hits li {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;
  gap: 0.15rem 0.55rem;
  padding: 0.7rem 0.9rem;
  border-bottom: 1px solid var(--line);
  align-items: center;
}
.client-hits li.need { background: #e8f3ef; color: #14202c; }
.client-hits li > div { grid-row: 1 / span 2; min-width: 0; }
.client-hits b {
  display: block;
  font-size: 0.92rem;
  word-break: keep-all;
  overflow-wrap: break-word;
  line-break: strict;
}
.client-hits span { display: block; margin-top: 0.15rem; font-size: 0.75rem; color: var(--muted); line-height: 1.4; }
.client-hits .btn {
  grid-column: 2;
  min-width: 6.2rem;
  justify-content: center;
  text-decoration: none;
}
.client-hits .quiet {
  grid-column: 2;
  font-size: 0.75rem;
  color: var(--muted);
  text-align: center;
}
.gold-entry { margin: 0; padding: 0.65rem 0.9rem; border-top: 1px dashed var(--line); font-size: 0.75rem; }
.leaflet-popup-content .map-act { display: inline-block; margin-top: 0.35rem; font-weight: 750; }
.leaflet-popup-content a.map-file {
  display: inline-block;
  margin-top: 0.45rem;
  padding: 0.32rem 0.75rem;
  background: #1e3a4c;
  color: #fff !important;
  border-radius: 8px;
  font-weight: 800;
  text-decoration: none;
}
.client-hits a.btn.proj-file-btn,
a.btn.proj-file-btn {
  background: #1e3a4c;
  border: 1px solid #1e3a4c;
  color: #fff !important;
  font-weight: 800;
  min-width: 6.6rem;
  justify-content: center;
  padding: 0.4rem 0.75rem;
  border-radius: 8px;
  text-decoration: none;
}
.client-hits a.btn.proj-file-btn:hover,
a.btn.proj-file-btn:hover {
  background: #2a5168;
  border-color: #2a5168;
  color: #fff !important;
}
.proj-list-table a.btn.proj-file-btn {
  display: inline-block;
  margin-right: 0.4rem;
  min-width: auto;
}
@media (max-width: 960px) {
  .clients-work { grid-template-columns: 1fr; }
  .plan-date-row { grid-template-columns: 1fr; }
  .plan-chips { margin-left: 0; width: 100%; }
  .sched-modes { display: flex; }
}
@media (max-width: 720px) {
  .client-vias { grid-template-columns: 1fr; }
}
.clients-bar { margin-bottom: 0.7rem; }
.clients-bar input[name="q"] { min-width: 200px; flex: 1; }
.clients-jump { margin: 0 0 0.85rem; }
.clients-mods {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  align-items: stretch;
}
.clients-mod {
  display: flex;
  flex-direction: column;
  min-width: 0;
  margin: 0;
  padding: 0;
  max-height: calc(100vh - 250px);
  overflow: hidden;
}
.clients-mod .pane {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.clients-mod .list-pager { padding: 0.55rem 0.9rem 0.8rem; }
.clients-mod-title { flex: 1 1 100%; }
.clients-mod-title h2 { margin: 0 0 0.15rem; font-size: 1.05rem; }
.clients-mod-title p { margin: 0; font-size: 0.78rem; }
.clients-mod-tools {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.client-row .row-sub { margin-top: 0.1rem; font-size: 0.8rem; }
.client-row .row-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.7rem;
  margin-top: 0.45rem;
  font-size: 0.8rem;
  font-weight: 650;
}
.client-row .row-acts a { text-decoration: none; }
.client-row .row-acts a:hover { text-decoration: underline; }
.gold-chips { display: flex; flex-wrap: wrap; gap: 0.28rem; margin-top: 0.35rem; }
.gold-chip {
  font-size: 0.7rem;
  padding: 0.08rem 0.38rem;
  border-radius: 999px;
  background: #efe8dc;
  color: var(--muted);
}
.gold-chip.on { background: #d8eee0; color: var(--ok); font-weight: 650; }
.scope-bar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0 0 0.75rem;
  padding: 0.55rem 0.8rem;
  background: #f8efe4;
  border: 1px solid #ead9c4;
  border-radius: 10px;
  font-size: 0.9rem;
}
.scope-bar a { margin-left: auto; }
.clients-split {
  display: grid;
  gap: 1rem;
  align-items: stretch;
}
.clients-map-col { min-width: 0; display: flex; flex-direction: column; }
.map-caption { margin: 0.45rem 0 0; font-size: 0.8rem; }
.clients-list-col {
  min-width: 0;
  margin-bottom: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  max-height: calc(100vh - 210px);
  overflow: hidden;
}
.clients-list-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  flex-wrap: wrap;
  padding: 0.7rem 0.85rem 0.55rem;
  border-bottom: 1px solid var(--line);
}
.clients-stack {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.client-block + .client-block { border-top: 1px solid var(--line); }
.client-block-h {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
  gap: 0.45rem 0.55rem;
  padding: 0.7rem 0.85rem 0.65rem;
  background: #f7f1e8;
  border-bottom: 1px solid var(--line);
}
.client-block-h h2 {
  margin: 0;
  font-size: 0.95rem;
  flex: 1 1 6rem;
}
.client-block-h h2 b { font-weight: 800; margin-left: 0.2rem; }
.client-block-h select {
  width: auto;
  min-width: 6.5rem;
  max-width: 9.5rem;
  margin: 0;
  padding: 0.22rem 0.4rem;
  font-size: 0.78rem;
}
.client-block-h .btn { min-width: 3.4rem; justify-content: center; }
.seg {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  padding: 0.4rem;
  background: #efe6d6;
  border: 1px solid #e0d3bc;
  border-radius: 12px;
}
.seg:not(.catalog-seg) a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 2.45rem;
  padding: 0.45rem 1.05rem;
  border-radius: 9px;
  font-size: 1.02rem;
  font-weight: 700;
  line-height: 1.2;
}
.seg a {
  color: var(--muted);
  text-decoration: none;
  padding: 0.45rem 1.05rem;
  border-radius: 9px;
  font-size: 1.02rem;
  font-weight: 700;
}
.seg a:hover { text-decoration: none; color: var(--ink); background: rgba(255,255,255,0.45); }
.seg a.on {
  background: #fff;
  color: var(--brand-dark);
  font-weight: 650;
  box-shadow: 0 1px 3px rgba(28, 36, 48, 0.08);
  border-bottom: 0;
}
.seg a b { font-weight: 700; margin-left: 0.15rem; }
.clients-list-actions { display: flex; gap: 0.4rem; }
.clients-panes { flex: 1; min-height: 0; overflow: auto; }
.clients-panes .pane { padding: 0; }
.clients-list-col table { min-width: 0; }
.clients-list-col table.compact { font-size: 0.86rem; }
.clients-list-col thead th {
  position: sticky;
  top: 0;
  background: var(--paper);
  z-index: 1;
}
.sys-mini { display: flex; flex-direction: column; gap: 0.12rem; font-size: 0.78rem; color: var(--muted); }
.sys-mini span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 16rem; }
.client-rows { margin: 0; }
.client-row {
  display: block;
  padding: 0.75rem 0.9rem;
  border-bottom: 1px solid var(--line);
}
.client-row:hover { background: #f8efe4; }
.client-row.picked { background: #f3e6d6; }
.client-row .row-title {
  display: inline;
  font-weight: 650;
  color: var(--ink);
  text-decoration: none;
}
.client-row .row-title:hover { color: var(--brand-dark); text-decoration: underline; }
.client-row .row-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.22rem 0.45rem;
  align-items: center;
  margin-top: 0.22rem;
}
.client-row .row-meta.sys-mini { flex-direction: row; }
.client-row .row-side {
  text-align: right;
  font-size: 0.82rem;
  color: var(--muted);
  white-space: nowrap;
  padding-top: 0.15rem;
}
.client-row .row-side b { display: block; color: var(--ink); font-size: 1.05rem; }
.clients-empty { margin: 0; padding: 1.6rem 1rem; text-align: center; }
.won-star { color: #c45c26; font-size: 0.92em; }
.clients-bar .mod-filter { max-width: 10.5rem; }
.gold-dots { display: inline-flex; gap: 0.28rem; margin-top: 0.28rem; }
.gold-dot {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: #e4ddd0;
}
.gold-dot.on { background: #1f7a4d; }
.gold-dot.warn { background: #c45c26; }
.gold-steps { display: flex; flex-direction: column; gap: 0.55rem; }
.gold-step {
  padding: 0.7rem 0.8rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}
.gold-step.done { border-color: #cfe3d6; background: #f4faf6; }
.gold-step-top {
  display: flex;
  justify-content: space-between;
  gap: 0.6rem;
  align-items: center;
}
.gold-step-top strong { font-size: 0.95rem; }
.gold-step-body { margin-top: 0.45rem; }
.gold-step-body .row { margin: 0; align-items: end; }
.gold-side-steps { list-style: none; margin: 0.4rem 0 0; padding: 0; }
.gold-side-steps li {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.28rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.86rem;
}
.gold-side-steps li:last-child { border-bottom: 0; }

@media (max-width: 1280px) {
  .clients-mods { grid-template-columns: 1fr; }
  .clients-mod { max-height: none; }
  .clients-list-col { max-height: none; }
}

.hospital-map {
  height: 480px;
  margin: 0 0 1rem;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--line);
  background: #dce6ee;
}
.proj-modes { margin: 0; }
.proj-kpis { margin: 0 0 1rem; }
.proj-kpis .kpi-split { font-size: 1rem; font-weight: 600; color: var(--muted); }
.proj-chip-clear { background: transparent; border: 1px dashed var(--line); }
.proj-kpis .kpi-link.on {
  border-color: var(--brand);
  background: #f8efe4;
}
.proj-map-kpis { margin-bottom: 0.85rem; }
.proj-map-work {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 1rem;
  align-items: stretch;
}
.proj-map-work.clients-work {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.85rem;
}
.proj-map-work.clients-work > .client-side,
.proj-map-work.clients-work > .proj-map-box {
  min-width: 0;
  max-width: none;
  height: min(72vh, 760px);
}
.proj-map-work.clients-work .hospital-map-mode {
  height: 100%;
  min-height: 0;
}
.proj-map-work.clients-work .client-side { overflow: auto; }
.proj-map-box-wide { position: relative; min-width: 0; }
.hospital-map-mode {
  height: min(68vh, 620px);
  margin: 0;
  border-radius: 12px;
}
.proj-map-side { margin: 0; padding: 0.85rem; }
.proj-map-side h3 { margin: 0.75rem 0 0.45rem; font-size: 0.95rem; }
.proj-map-side .map-legend { margin: 0; }
.proj-map-hits { list-style: none; margin: 0; padding: 0; }
.proj-map-hits li {
  padding: 0.4rem 0;
  border-bottom: 1px solid var(--line);
}
.proj-map-hits li:last-child { border-bottom: 0; }
.proj-map-hits a { display: block; font-weight: 650; }
.proj-map-hits span { display: block; font-size: 0.75rem; }
@media (max-width: 960px) {
  .proj-map-work { grid-template-columns: 1fr; }
  .hospital-map-mode { height: 52vh; }
}
.proj-need-prov {
  padding: 1.4rem 1.2rem;
  margin: 0.4rem 0 1rem;
}
.proj-need-prov h2 { margin-bottom: 0.35rem; }
.proj-dev-task {
  padding: 0.85rem 1rem 0.9rem;
  margin: 0 0 0.9rem;
  border: 1px solid #e8c9a8;
  background: #fff8f0;
  border-radius: 12px;
}
.proj-dev-task.done { border-color: #b7d4c2; background: #f3f8f4; }
.proj-dev-h { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.proj-dev-h h2 { margin: 0.25rem 0 0.2rem; font-size: 1.05rem; }
.proj-dev-result { margin-top: 0.55rem; padding: 0.55rem 0.7rem; background: #f3f8f4; border-radius: 8px; }
.proj-dev-finish textarea { width: 100%; }
.desk-dev-tasks { margin-top: 1.1rem; padding-top: 0.8rem; border-top: 1px solid var(--line); }
.desk-dev-tasks h3 { margin-bottom: 0.2rem; }
.sched-result { margin: 0.2rem 0 0; font-size: 0.78rem; }
.proj-filter { margin-bottom: 0.55rem; align-items: center; }
.proj-filter-lab { font-size: 0.78rem; font-weight: 750; color: var(--navy); white-space: nowrap; }
.proj-filter input[type="search"] { min-width: 220px; flex: 1; }
.proj-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0 0 0.75rem;
}
.proj-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  background: #f3e6d6;
  color: var(--navy);
  font-size: 0.78rem;
  text-decoration: none;
}
.proj-chip:hover { background: #ead6bf; text-decoration: none; }
.proj-overview {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 260px;
  gap: 0.85rem 1rem;
  align-items: start;
  margin-bottom: 1rem;
}
.proj-summary { min-width: 0; }
.proj-stages {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 0.7rem;
}
.proj-stage {
  display: inline-flex;
  align-items: baseline;
  gap: 0.3rem;
  padding: 0.32rem 0.6rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--paper);
  color: inherit;
  text-decoration: none;
  font-size: 0.8rem;
}
.proj-stage b { font-size: 0.88rem; }
.proj-stage:hover { border-color: var(--brand); color: var(--brand-dark); text-decoration: none; }
.proj-stage.on {
  border-color: var(--brand);
  background: #f8efe4;
  color: var(--brand-dark);
  font-weight: 650;
}
.proj-stage.dim { opacity: 0.5; }
.proj-open {
  display: block;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
  color: inherit;
  text-decoration: none;
  box-shadow: var(--shadow);
}
.proj-open:hover { border-color: var(--brand); text-decoration: none; }
.proj-open.on { border-color: var(--brand); background: #f8efe4; }
.proj-open > div {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.6rem;
}
.proj-open span { font-size: 0.82rem; color: var(--muted); }
.proj-open b { font-size: 1.35rem; }
.proj-open small { display: block; margin-top: 0.28rem; color: var(--muted); font-size: 0.75rem; }
.proj-open em {
  display: block;
  margin-top: 0.35rem;
  font-style: normal;
  font-size: 0.75rem;
  font-weight: 650;
  color: var(--brand-dark);
}
.proj-map-box { position: relative; min-width: 0; }
body.map-fs-lock { overflow: hidden; }
.map-fs-hit {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 6;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: transparent;
  cursor: zoom-in;
  font: inherit;
}
.map-fs-hit:hover { background: rgba(30, 58, 76, 0.08); }
.map-fs-close {
  display: none;
}
.proj-map-box.is-fs {
  position: fixed;
  inset: 0;
  z-index: 240;
  max-width: none;
  background: #0e1c24;
  padding: 0;
}
.proj-map-box.is-fs .hospital-map-proj {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  aspect-ratio: auto;
  border-radius: 0;
  border: 0;
}
.proj-map-box.is-fs .map-fs-hit { display: none; }
.proj-map-box.is-fs .map-fs-close {
  display: block;
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 12;
  background: #fff;
  color: var(--navy);
  border: 0;
  border-radius: 8px;
  padding: 0.45rem 0.85rem;
  font-weight: 650;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.22);
}
.proj-map-box.is-fs .map-legend {
  position: absolute;
  left: 12px;
  bottom: 12px;
  z-index: 12;
  max-width: 280px;
  margin: 0;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28);
}
.proj-map-box.is-fs .map-caption { display: none; }
.hospital-map-proj {
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  margin: 0;
  border-radius: 10px;
}
.proj-map-box .map-caption { margin: 0.35rem 0 0; font-size: 0.75rem; line-height: 1.4; }
.map-legend {
  list-style: none;
  margin: 0.5rem 0 0;
  padding: 0.5rem 0.55rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fffdf8;
}
.map-legend li {
  display: flex;
  align-items: flex-start;
  gap: 0.45rem;
  margin: 0 0 0.4rem;
}
.map-legend li:last-child { margin: 0; }
.map-legend b { display: block; font-size: 0.78rem; }
.map-legend span { display: block; font-size: 0.7rem; color: var(--muted); line-height: 1.35; }
.map-leg-star {
  flex: 0 0 1.1rem;
  width: 1.1rem;
  color: #d4a017;
  font-size: 1.05rem;
  line-height: 1.1;
  text-align: center;
  text-shadow: 0 0 0 #8a5a00;
}
.map-leg-dot {
  flex: 0 0 0.7rem;
  width: 0.7rem;
  height: 0.7rem;
  margin-top: 0.2rem;
  border-radius: 50%;
  background: #c45c26;
  border: 1px solid #8f3d14;
}
.map-leg-proj {
  background: rgba(67, 160, 71, 0.45);
  border: 2px solid #1b5e20;
}
.map-leg-agent {
  background: #1a8a9a;
  border: 1px solid #0b5d6b;
}
.map-leg-gold {
  background: #d4a017;
  border: 1px solid #8a6a12;
}
.proj-map-hits .hit-acts {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.75rem;
  font-weight: 650;
}
@media (max-width: 960px) {
  .proj-overview { grid-template-columns: 1fr; }
  .proj-map-box { max-width: 260px; }
  .proj-map-work.clients-work .proj-map-box { max-width: none; }
  .proj-map-work.clients-work > .client-side,
  .proj-map-work.clients-work > .proj-map-box { height: auto; min-height: 320px; }
}
.bound-tip {
  background: rgba(30, 58, 76, 0.92) !important;
  color: #fff !important;
  border: 0 !important;
  border-radius: 6px !important;
  padding: 0.2rem 0.45rem !important;
  font-size: 0.78rem !important;
  box-shadow: none !important;
}
.bound-tip::before { display: none !important; }
.leaflet-control-layers {
  font: inherit;
  border-radius: 8px !important;
  box-shadow: 0 1px 6px rgba(20, 30, 40, 0.18) !important;
}
legend { padding: 0 0.4rem; font-weight: 650; }

[hidden] { display: none !important; }
.hosp-page form.stack { max-width: none; }
.hosp-meta { display: flex; flex-wrap: wrap; gap: 0.4rem 0.65rem; align-items: center; margin: 0.35rem 0 0; }
.hosp-jump { margin: 0 0 0.85rem; display: inline-flex; flex-wrap: wrap; }
.agent-page .hosp-jump {
  position: sticky;
  top: 0;
  z-index: 4;
  background: var(--bg);
  padding: 0.2rem 0;
  display: flex;
}
.gold-page .hosp-jump,
.hosp-page:not(.agent-page) .hosp-jump {
  position: sticky;
  top: 0;
  z-index: 4;
  background: var(--paper);
  padding: 0.35rem 0;
}
.gold-page .pane,
.hosp-page:not(.agent-page) .hosp-main > .pane { margin-bottom: 1rem; }
.hosp-page:not(.agent-page) .hosp-main > .pane { scroll-margin-top: 3.2rem; }
.hosp-split {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(300px, 0.85fr);
  gap: 1rem;
  align-items: start;
}
.hosp-main { min-width: 0; }
.hosp-page.agent-page .hosp-main .pane.card { margin-bottom: 0; }
.hosp-map-col { position: sticky; top: 0.8rem; margin-bottom: 0; }
.hosp-side-map { height: min(52vh, 460px); min-height: 320px; margin: 0.4rem 0 0.7rem; }
.sec-head { margin-bottom: 0.75rem; }
.sec-head h2 { margin-bottom: 0.2rem; }
.subh { margin: 0.4rem 0 0; font-size: 0.95rem; color: var(--ink); }
.money-board { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; }
.ops-board { display: flex; flex-direction: column; gap: 1rem; }
.ops-board .unread td { background: #f8efe4; }
.ops-page {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  min-width: 0;
}
.ops-page .hosp-jump { margin-bottom: 0.35rem; }
.ops-page .hosp-jump a b {
  display: inline-block;
  min-width: 1.1rem;
  padding: 0 0.28rem;
  margin-left: 0.15rem;
  border-radius: 8px;
  background: #c45c26;
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2rem;
  text-align: center;
}
.ops-kpis { margin: 0 0 0.25rem; }
.ops-kpis .kpi {
  background: #f7f9fb;
  box-shadow: none;
  transition: background 0.12s ease;
}
.ops-kpis .kpi small {
  display: block;
  margin-top: 0.3rem;
  font-size: 0.72rem;
  color: var(--muted);
  font-weight: normal;
}
.ops-page .unread td { background: #f8efe4; }
.ops-page table.compact { min-width: 0; }
.ops-page .job-assign {
  margin-top: 0.35rem;
  max-width: 320px;
}
.center-page {
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  min-width: 0;
}
nav.center-tabs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  width: 100%;
  margin: 0 0 0.35rem;
  padding: 0.4rem;
  background: #efe6d6;
  border: 1px solid #e0d3bc;
  border-radius: 12px;
}
nav.center-tabs a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  min-height: 2.45rem;
  padding: 0.45rem 1.05rem;
  border-radius: 9px;
  border-bottom: 0;
  background: transparent;
  color: #2c3d4d;
  font-size: 1.02rem;
  font-weight: 700;
  text-decoration: none;
  line-height: 1.2;
}
nav.center-tabs a:hover {
  text-decoration: none;
  background: rgba(255, 255, 255, 0.55);
  color: #1d3344;
}
nav.center-tabs a.on {
  background: var(--brand);
  color: #fff;
  box-shadow: 0 2px 6px rgba(40, 28, 16, 0.18);
}
.ops-page nav.center-tabs a b,
nav.center-tabs a b {
  display: inline-block;
  min-width: 1.25rem;
  margin-left: 0.15rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.35rem;
  text-align: center;
}
nav.center-tabs a.on b {
  background: #fff;
  color: #9a3d12;
}
.po-row-badge,
.wh-sum-name .po-row-badge,
.po-sum-name .po-row-badge {
  display: inline-block;
  min-width: 1.25rem;
  margin-left: 0.35rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-size: 0.78rem;
  font-weight: 700;
  line-height: 1.35rem;
  text-align: center;
  vertical-align: middle;
}
.po-row-badge.tone-mute {
  background: #a07858;
}
nav.center-tabs.sub {
  background: transparent;
  border: 0;
  padding: 0;
}
nav.center-tabs.sub a {
  min-height: 2.2rem;
  background: #fff;
  border: 1px solid #e0d3bc;
  font-size: 0.98rem;
}
nav.center-tabs.sub a.on {
  background: #2a5168;
  border-color: #2a5168;
  color: #fff;
}
.center-page table button:not(.linkish),
.center-page table .btn,
.finance-page table button:not(.linkish),
.finance-page table .btn,
.finance-page .fin-acts button,
.warehouse-page .wh-row-ops button,
.purchase-page .po-acts .btn,
.purchase-page .po-acts a.btn {
  padding: 0.42rem 0.85rem;
  font-size: 0.95rem;
  min-height: 2.15rem;
  line-height: 1.2;
}
.purchase-page .po-acts .btn,
.purchase-page .po-acts a.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 0.35rem;
}
.prod-plan-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.55rem 0.9rem;
  margin: 0.2rem 0 0.75rem;
}
.prod-plan-bar .field { margin: 0; min-width: 9rem; }
.prod-pick-col { width: 4.2rem; white-space: nowrap; }
.prod-pick {
  position: relative;
  width: 100%;
  min-width: 12rem;
}
.prod-pick .js-prod-pick-q {
  width: 100%;
  box-sizing: border-box;
}
.prod-pick-list {
  position: absolute;
  z-index: 40;
  left: 0;
  right: 0;
  top: calc(100% + 2px);
  max-height: 14rem;
  overflow: auto;
  background: #fff;
  border: 1px solid #c5d0da;
  border-radius: 6px;
  box-shadow: 0 6px 18px rgba(20, 40, 60, 0.12);
}
.prod-pick-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
  width: 100%;
  padding: 0.45rem 0.65rem;
  border: 0;
  border-bottom: 1px solid #eef2f5;
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
}
.prod-pick-item:last-child { border-bottom: 0; }
.prod-pick-item:hover,
.prod-pick-item:focus {
  background: #f3f7fb;
  outline: none;
}
.prod-pick-item strong { font-weight: 600; color: #1a2b3c; }
.prod-pick-empty { padding: 0.55rem 0.65rem; }
.prod-all { display: inline-flex; align-items: center; gap: 0.25rem; font-weight: 600; }
button.linkish {
  display: inline;
  margin-left: 0.35rem;
  padding: 0;
  border: 0;
  background: none;
  color: var(--brand-dark);
  font: inherit;
  cursor: pointer;
}
button.linkish:hover { text-decoration: underline; }
.center-kpis { margin: 0 0 0.25rem; }
.center-kpis .kpi {
  background: #f7f9fb;
  box-shadow: none;
}
.center-kpis .kpi b.warn { color: #c45c26; }
.center-kpis .kpi b.ok { color: var(--ok); }
.purchase-page .po-lead { margin: 0; }
.purchase-page .po-board {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.purchase-page .po-proj-card { padding: 0.8rem 0.95rem 0.7rem; }
.purchase-page .po-proj-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.8rem 1.2rem;
  flex-wrap: wrap;
  margin-bottom: 0.45rem;
}
.purchase-page .po-proj-head b { font-size: 1.02rem; }
.purchase-page .po-proj-head > div:first-child .muted { margin-left: 0.45rem; }
.purchase-page .po-proj-sum {
  display: flex;
  gap: 0.75rem;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.purchase-page .po-vendor { width: 100%; }
.purchase-page .po-vendor .po-code {
  display: block;
  font-size: 0.78rem;
}
.purchase-page .po-vendor tr.po-open td,
.purchase-page .po-vendor tr.po-wait td { background: #f8efe4; }
.purchase-page .po-vendor tr.po-bought td { background: #e8f5ec; }
.purchase-page .po-vendor tr.po-done td {
  background: #f3f5f7;
  color: #5c6b78;
}
.purchase-page .po-leg {
  margin: 0 0 0.45rem;
  font-size: 0.82rem;
}
.purchase-page .po-leg-wait,
.purchase-page .po-leg-bought,
.purchase-page .po-leg-done {
  display: inline-block;
  padding: 0.05rem 0.4rem;
  border-radius: 3px;
  font-weight: 600;
}
.purchase-page .po-leg-wait { background: #f8efe4; color: #9a4e1a; }
.purchase-page .po-leg-bought { background: #e8f5ec; color: #1f6b3a; }
.purchase-page .po-leg-done { background: #f3f5f7; color: #5c6b78; }
.purchase-page .po-acts { text-align: right; }
.purchase-page .po-extra {
  margin-top: 0.55rem;
  font-weight: 400;
}
.purchase-page .po-extra summary {
  cursor: pointer;
  color: var(--accent, #c45c26);
  width: fit-content;
}
.purchase-page .po-extra-form {
  margin-top: 0.55rem;
  align-items: flex-end;
}
.po-talk th,
.po-talk td {
  padding: 0.16rem 0.28rem;
  vertical-align: middle;
}
.po-talk input[type=number],
.po-talk select {
  width: 5.2rem;
  max-width: 100%;
  padding: 0.16rem 0.28rem;
  font-size: 0.82rem;
}
.po-talk .po-qty-lab { margin: 0; min-width: 0; padding-top: 0; }
.po-talk .po-qty-lab .need-tag {
  top: 0;
  right: 0.12rem;
  z-index: 1;
  font-size: 0.58rem;
  line-height: 1.05;
  padding: 0 0.16rem;
  pointer-events: none;
}
.po-page > .top { margin-bottom: 0.45rem; align-items: center; }
.po-page > .top h1 { font-size: 1.22rem; margin-bottom: 0.1rem; }
.po-page > .top .muted { margin: 0; }
.po-page > .top .actions { gap: 0.3rem; }
.po-page > .top .btn,
.po-page > .top a.ghost,
.po-page > .top button {
  padding: 0.26rem 0.55rem;
  font-size: 0.82rem;
}
.po-page .card {
  padding: 0.55rem 0.7rem;
  margin-bottom: 0.55rem;
}
.po-page .card h2 { margin: 0 0 0.28rem; font-size: 1rem; }
.po-page > .sys-split { gap: 0.55rem; }
.po-flow-h {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.25rem 0.8rem;
  margin-bottom: 0.35rem;
}
.po-flow-h h2 { margin: 0; font-size: 1rem; }
.po-flow-h .muted { margin: 0; font-size: 0.82rem; }
.po-flow {
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem;
  list-style: none;
  margin: 0;
  padding: 0;
}
.po-flow li {
  background: #eef2f5;
  border-radius: 999px;
  padding: 0.1rem 0.55rem;
  font-size: 0.78rem;
  color: #3d4a58;
}
.po-flow li.done { background: #dceee3; color: #1f5a32; }
.po-flow li.on { background: #1e3a4c; color: #fff; font-weight: 650; }
.po-actions { display: grid; gap: 0.4rem; }
.po-actions-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin: 0;
}
.po-actions-h h2 { margin: 0; font-size: 1rem; }
.po-actions > .muted { margin: 0; font-size: 0.8rem; }
.po-talk-form.stack { max-width: none; gap: 0.35rem; }
.po-actions h3 { margin: 0; font-size: 0.92rem; }
.po-meta {
  display: grid;
  grid-template-columns: minmax(9rem, 1.05fr) minmax(9rem, 1.15fr) minmax(7.5rem, 0.75fr) auto minmax(10rem, 1.2fr);
  gap: 0.35rem 0.5rem;
  align-items: end;
}
.po-meta .field { margin: 0; gap: 0.1rem; }
.po-deliver {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.65rem;
  align-items: center;
  min-height: 1.85rem;
  font-size: 0.84rem;
  color: var(--ink);
}
.po-deliver label { display: inline-flex; align-items: center; gap: 0.22rem; white-space: nowrap; }
.po-hint { margin: 0; font-size: 0.78rem; }
.po-actions input:not([type=radio]):not([type=checkbox]):not([type=hidden]),
.po-actions select,
.po-page .card input:not([type=radio]):not([type=checkbox]):not([type=hidden]),
.po-page .card select {
  padding: 0.26rem 0.42rem;
}
.po-later {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
  gap: 0.4rem 0.65rem;
  align-items: start;
}
.po-step {
  display: grid;
  gap: 0.35rem;
  margin: 0;
  padding: 0.4rem 0.5rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #faf8f4;
}
.po-step-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(7.2rem, 1fr));
  gap: 0.3rem 0.45rem;
  align-items: end;
}
.po-step .field { margin: 0; gap: 0.1rem; }
.po-step .form-actions { margin: 0; }
.po-actions .inline { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
.po-actions .inline form { margin: 0; }
.po-actions .form-actions { margin: 0; }
@media (max-width: 1100px) {
  .po-meta { grid-template-columns: 1fr 1fr; }
}
.po-actions .po-talk input[type=number],
.po-actions .po-talk select {
  width: 5.2rem;
  padding: 0.16rem 0.28rem;
  font-size: 0.82rem;
}
.po-talk .num.err { color: #c45c26; }
.po-talk .num.ok { color: var(--ok); }
.po-talk-form .table-wrap { overflow-x: auto; }
.center-page .unread td { background: #f8efe4; }
.center-page table.compact { min-width: 0; }
.production-page .prod-make-form .field { margin: 0; }
.production-page .prod-make-form input[name="qty"] { width: 5.6rem; max-width: 100%; }
.rd-flow {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  list-style: none;
  margin: 0.4rem 0 0.55rem;
  padding: 0;
}
.rd-flow li {
  background: #eef2f5;
  border-radius: 999px;
  padding: 0.22rem 0.65rem;
  font-size: 0.78rem;
  color: #3d4a58;
}
.rd-flow li.done { background: #dceee3; color: #1f5a32; }
.rd-flow li.on { background: #1e3a4c; color: #fff; font-weight: 650; }
.rd-board {
  display: flex;
  gap: 0.55rem;
  overflow-x: auto;
  padding-bottom: 0.35rem;
}
.rd-col {
  min-width: 188px;
  max-width: 220px;
  flex: 1 0 188px;
  background: #f4f6f8;
  border-radius: 8px;
  padding: 0.5rem 0.5rem 0.35rem;
}
.rd-col h3 {
  margin: 0 0 0.4rem;
  font-size: 0.82rem;
}
.rd-card {
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
  background: #fff;
  border: 1px solid #e2e6ea;
  border-radius: 6px;
  padding: 0.45rem 0.55rem;
  margin-bottom: 0.4rem;
  color: inherit;
  text-decoration: none;
}
.rd-card:hover { border-color: #1e3a4c; }
.rd-card strong { font-size: 0.86rem; }
.rd-gate {
  border: 1px solid #e6ebe8;
  border-radius: 8px;
  padding: 0.7rem 0.85rem 0.35rem;
  margin-bottom: 0.65rem;
  background: #fbfcfd;
}
.rd-gate.on { border-color: #1e3a4c; background: #fff; }
.rd-gate h3 { margin: 0 0 0.45rem; font-size: 0.95rem; }
.rd-gate-items {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 1rem;
  margin-bottom: 0.35rem;
}
.rd-gate-items label { font-size: 0.88rem; }
.rd-lead { margin: 0 0 0.75rem; }
button.card.kpi { font: inherit; color: inherit; text-align: left; cursor: pointer; width: 100%; }
button.rd-kpi.on { outline: 2px solid #1e3a4c; }
.rd-filters { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; margin: 0 0 0.65rem; }
.rd-filters button {
  border: 1px solid #d5dde3;
  background: #fff;
  border-radius: 999px;
  padding: 0.22rem 0.7rem;
  cursor: pointer;
  font: inherit;
}
.rd-filters button.on { background: #1e3a4c; color: #fff; border-color: #1e3a4c; }
.rd-filters input[type="search"] { flex: 1; min-width: 12rem; }
.rd-now-line { margin: 0.35rem 0 0.15rem; }
.rd-now-line a { margin-left: 0.35rem; }
.rd-advance-row { display: flex; flex-wrap: wrap; gap: 0.45rem; align-items: center; margin: 0; }
.rd-advance-row input[name="note"] { flex: 1; min-width: 12rem; }
.rd-gate-now { margin-top: 0.65rem; }
.rd-file-pick { position: relative; display: flex; align-items: center; gap: 0.45rem; flex-wrap: wrap; cursor: pointer; }
.rd-file-pick.is-need .btn { box-shadow: 0 0 0 2px #e8a04a; }
.rd-file-pick input[type="file"] {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.rd-file-name { color: #667; font-size: 0.86rem; }
details.rd-node .rd-node-head strong { display: none; }
tr[hidden] { display: none; }
.rd-miss { color: #c45c26; }
.rd-soon { display: flex; flex-wrap: wrap; gap: 0.4rem; list-style: none; margin: 0; padding: 0; }
.rd-soon a {
  display: inline-block;
  background: #f4f6f8;
  border-radius: 999px;
  padding: 0.28rem 0.7rem;
  text-decoration: none;
  color: inherit;
}
.rd-soon a.is-late { background: #f8d7d4; color: #8d2f2f; }
.rd-soon a.is-today { background: #fde8c8; }
.rd-goal, .rd-node {
  border: 1px solid #e6ebe8;
  border-radius: 8px;
  padding: 0.65rem 0.8rem;
  margin: 0 0 0.55rem;
  background: #fbfcfd;
}
.rd-goal { display: flex; justify-content: space-between; gap: 0.75rem; flex-wrap: wrap; align-items: center; }
.rd-goal.done strong { color: #1f5a32; }
.rd-goal p { margin: 0.15rem 0 0; }
.rd-node.on { border-color: #1e3a4c; background: #fff; }
.rd-node summary { cursor: pointer; font-weight: 650; }
.rd-node-head { display: flex; flex-wrap: wrap; gap: 0.35rem 0.55rem; align-items: center; margin-bottom: 0.45rem; }
.rd-docs { list-style: none; margin: 0.15rem 0 0.45rem; padding: 0; }
.rd-docs li { display: flex; flex-wrap: wrap; gap: 0.35rem 0.7rem; align-items: center; padding: 0.12rem 0; }
.rd-docs form, .rd-goal form, .rd-node > form.js-need-confirm { margin: 0; }
.rd-add { margin-top: 0.75rem; align-items: end; }
.rd-doc-empty { margin: 0.1rem 0 0.45rem; }
.tag.now { background: #1e3a4c; color: #fff; }
#goals textarea { white-space: pre-wrap; }
.center-foot { margin: 0; font-size: 0.88rem; }
.stock-adj { margin-bottom: 0.75rem; align-items: end; }
.wh-pick { margin: 0 0 0.65rem; }
.wh-pick-bar { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; margin: 0 0 0.35rem; }
.wh-pick-bar input[type="search"] { flex: 1; min-width: 14rem; }
.wh-pick-hint { margin: 0 0 0.4rem; }
.wh-pick-scroll { max-height: 36rem; overflow: auto; border: 1px solid #e4d8c4; background: #fff; }
.wh-pick-scroll table { margin: 0; }
.wh-pick tr.js-wh-row { cursor: default; }
.wh-row-ops { width: auto; min-width: 5rem; vertical-align: middle; }
.wh-op-forms { display: flex; flex-direction: column; gap: 1rem; }
.wh-op-forms h3 { margin: 0 0 0.35rem; font-size: 1rem; }
.wh-op-forms form.stack { margin: 0; padding-top: 0.15rem; border-top: 1px solid var(--line); }
.wh-op-forms form.stack:first-child { border-top: 0; padding-top: 0; }
.wh-pick tr.js-wh-row:hover td { background: #d4e4ef; }
.wh-pick tr.js-wh-row.is-low td { background: #f8e6e2; }
.wh-pick tr.js-wh-row.is-low:hover td { background: #f0d0c8; }
.wh-pick tr.js-wh-row.on td,
.wh-pick tr.js-wh-row.on:hover td { background: #f3e2c8; }
.wh-pick .js-wh-label[readonly],
.wh-pick-page .js-wh-loc[readonly],
.stock-adj .js-wh-loc[readonly] { background: #fff; cursor: default; }
.wh-only-low { display: inline-flex; align-items: center; gap: 0.3rem; white-space: nowrap; }
.wh-gap { color: #9a3412; font-weight: 650; }
.wh-order { margin: 0 0 0.75rem; }
.wh-order-h { display: flex; justify-content: space-between; gap: 0.75rem; align-items: baseline; flex-wrap: wrap; margin: 0 0 0.45rem; }
.wh-order.is-due { background: #fff6f3; }
.wh-proj-meta { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
.wh-progress { display: flex; align-items: center; gap: 0.75rem; margin: 0 0 0.55rem; }
.wh-progress-bar { flex: 1; min-width: 8rem; height: 0.55rem; background: #e8eef3; border-radius: 99px; overflow: hidden; }
.wh-progress-bar > i { display: block; height: 100%; background: #2f6fed; border-radius: 99px; }
.warehouse-page .wh-sum-card { padding: 0.55rem 0.7rem 0.45rem; }
.warehouse-page .wh-sum-table { width: 100%; }
.warehouse-page .wh-sum-name {
  font-size: 1.02rem;
  font-weight: 650;
  line-height: 1.35;
}
.warehouse-page .wh-sum-name a { color: inherit; text-decoration: none; }
.warehouse-page .wh-sum-name a:hover { color: var(--accent, #c45c26); text-decoration: underline; }
.warehouse-page .wh-sum-meta { font-size: 0.86rem; line-height: 1.35; }
.warehouse-page .wh-sum-prog {
  margin-top: 0.28rem;
  max-width: 12rem;
}
.warehouse-page .wh-sum-table tr.unread td { background: #f8efe4; }
.warehouse-page #dlg-wh-handle { max-width: min(96vw, 56rem); }
.warehouse-page .wh-dlg-body { max-height: min(70vh, 34rem); overflow: auto; }
.warehouse-page .wh-dlg-body .wh-progress { margin-top: 0.2rem; }
.warehouse-page .wh-dlg-src { display: none; }
.wh-batch-lines { max-height: min(42vh, 22rem); overflow: auto; margin: 0.4rem 0; }
.wh-batch-files .row { margin-bottom: 0.35rem; }
dialog#dlg-wh-batch {
  max-width: min(96vw, 72rem);
  width: calc(100vw - 2rem);
  max-height: 94vh;
}
dialog#dlg-wh-batch .wh-batch-files { margin-top: 0.5rem; }
dialog#dlg-wh-batch table.compact td input[type=number] { min-width: 5.5rem; }
.prod-detail-h { margin-top: 1.25rem; font-size: 1rem; color: #5a6a78; }
.purchase-page .po-proj-card.is-open { border-color: #c9d8f0; }
tr.group.is-oem td { padding-left: 1.4rem; background: #f4f7fb; font-weight: 600; }
tr.group.js-acct-sys td { background: #e8eef6; font-size: 1.02rem; }
.wh-due { color: #9a3412; font-weight: 650; }
.wh-hint { margin: 0 0 0.85rem; }
.desk-page .top .muted { font-size: 0.86rem; }
.desk-page .desk-pipe-wrap { margin: 0 0 0.55rem; }
.desk-page .desk-pipe a { background: #fff; color: #14202c; font-weight: 650; }
.desk-page .desk-pipe a b { color: #1e3a4c; }
.desk-schedule { margin-bottom: 0.75rem; padding: 0.85rem 1rem 0.95rem; background: #fff; border: 1px solid #d8c9b4; }
.desk-schedule .sched-title-row .muted { margin: 0.1rem 0 0; font-size: 0.78rem; color: #3d4a58; }
.sched-bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.7rem 1.2rem;
  margin-bottom: 0.65rem;
}
.sched-bar h2 { margin: 0; font-size: 1.12rem; color: #1e3a4c; }
.sched-bar .muted { margin: 0.15rem 0 0; }
.sched-bar-r { display: flex; flex-direction: column; gap: 0.4rem; align-items: flex-end; }
.sched-week-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.7rem;
  font-size: 0.86rem;
}
.sched-week-nav b { color: #14202c; }
.sched-week-nav a { color: #1e3a4c; font-weight: 700; text-decoration: none; }
.sched-week-nav a:hover { color: #c45c28; }
.sched-people {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 0.28rem;
}
.sched-people a {
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  padding: 0.18rem 0.6rem;
  border-radius: 999px;
  background: color-mix(in srgb, var(--chip, #1e3a4c) 14%, #fff);
  border: 1px solid color-mix(in srgb, var(--chip, #1e3a4c) 35%, #e8eef4);
  color: #14202c;
  font-size: 0.78rem;
  font-weight: 700;
  text-decoration: none;
}
.sched-people a.sched-chip::before {
  content: "";
  width: 0.52rem;
  height: 0.52rem;
  border-radius: 50%;
  background: var(--chip, #c45c28);
}
.sched-people a.on { background: var(--chip, #1e3a4c); color: #fff; border-color: var(--chip, #1e3a4c); }
.sched-people a.on::before { background: #fff; }
.sched-people a:hover { filter: brightness(0.96); }
.desk-schedule .sched-modes { margin: 0 0 0.75rem; }
.desk-schedule .sched-mode {
  background: #fff;
  color: #1e3a4c;
  border: 1px solid #c5d0da;
}
.desk-schedule .sched-mode:hover { background: #1e3a4c; color: #fff; border-color: #1e3a4c; }
.sched-agenda {
  border: 1px solid #e4d8c8;
  border-radius: 10px;
  overflow: hidden;
  background: #fffdf8;
}
.sched-agenda-day {
  display: grid;
  grid-template-columns: 5.4rem minmax(0, 1fr);
  border-top: 1px solid #efe4d4;
}
.sched-agenda-day:first-child { border-top: 0; }
.sched-agenda-day.today { background: #fff4ea; }
.sched-agenda-day.is-empty header,
.sched-agenda-day.is-empty p { color: #8a8176; }
.sched-agenda-day header {
  padding: 0.7rem 0.75rem;
  background: #f4efe6;
  border-right: 1px solid #efe4d4;
}
.sched-agenda-day.today header { background: #f8e0cc; }
.sched-agenda-day header b { display: block; color: #1e3a4c; font-size: 0.92rem; }
.sched-agenda-day header span { font-size: 0.76rem; font-weight: 650; }
.sched-agenda-day ul { list-style: none; margin: 0; padding: 0.25rem 0; }
.sched-agenda-day li a {
  display: grid;
  grid-template-columns: 3.2rem auto minmax(0, 1fr) auto auto;
  gap: 0.35rem 0.5rem;
  align-items: center;
  padding: 0.48rem 0.7rem;
  color: #14202c;
  text-decoration: none;
  border-left: 4px solid var(--chip, #c45c28);
  border-radius: 0 8px 8px 0;
}
.sched-agenda-day li a:hover { background: #fff8f0; }
.sched-agenda-day li.is-doing a { background: #fffaf4; }
.sched-agenda-day li.is-wait a { background: #faf9f7; }
.sched-agenda-day li time {
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  color: #1e3a4c;
  font-size: 0.82rem;
}
.sched-agenda-day li .tag {
  justify-self: start;
  background: #1e3a4c;
  color: #fff;
  font-size: 0.7rem;
}
.sched-agenda-day li.src-job .tag { background: #c45c28; }
.sched-agenda-day li.src-follow .tag { background: #2a7a6e; }
.sched-agenda-day li strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.9rem;
}
.sched-agenda-day li em {
  font-style: normal;
  color: var(--chip, #3d4a58);
  font-size: 0.78rem;
  font-weight: 750;
  white-space: nowrap;
}
.sched-agenda-day li .sched-go {
  justify-self: end;
  padding: 0.22rem 0.55rem;
  border-radius: 6px;
  background: var(--brand);
  color: #fff;
  font-size: 0.74rem;
  font-weight: 800;
  white-space: nowrap;
}
.sched-agenda-day li a:hover .sched-go { background: var(--brand-dark); }
.sched-agenda-day > p {
  margin: 0;
  padding: 0.7rem 0.8rem;
  font-size: 0.82rem;
}
@media (max-width: 720px) {
  .sched-agenda-day { grid-template-columns: 1fr; }
  .sched-agenda-day header { border-right: 0; border-bottom: 1px solid #efe4d4; }
  .sched-agenda-day li a {
    grid-template-columns: 3rem auto minmax(0, 1fr) auto;
    grid-template-areas:
      "time tag title go"
      "who who who who";
  }
  .sched-agenda-day li time { grid-area: time; }
  .sched-agenda-day li .tag { grid-area: tag; }
  .sched-agenda-day li strong { grid-area: title; }
  .sched-agenda-day li .sched-go { grid-area: go; }
  .sched-agenda-day li em { grid-area: who; padding-left: 0.1rem; }
}
.sched-when {
  flex: 0 0 2.4rem;
  color: #1e3a4c;
  font-weight: 750;
  font-size: 0.72rem;
}
.sched-more { margin: 0.15rem 0 0; font-size: 0.72rem; color: #3d4a58; }
.sched-toolbar { margin-bottom: 0.7rem; }
.sched-title-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 0.45rem 0.8rem;
  margin-bottom: 0.55rem;
}
.sched-title-row h2 { margin: 0; font-size: 1.05rem; }
.sched-head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.65rem 1rem;
  align-items: flex-start;
  margin-bottom: 0.75rem;
}
.sched-head h2 { margin-bottom: 0.15rem; }
.sched-nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  margin: 0;
}
.sched-range {
  font-size: 0.88rem;
  font-weight: 650;
  padding: 0 0.25rem;
}
.sched-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.45rem;
  margin-bottom: 0.65rem;
}
.sched-day {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fafbfc;
  padding: 0.35rem 0.4rem 0.5rem;
}
.sched-day.today {
  border-color: #c45c28;
  background: #fff6ee;
}
.sched-day-h {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.35rem;
  margin-bottom: 0.35rem;
  padding-bottom: 0.25rem;
  border-bottom: 1px solid var(--line);
  font-size: 0.78rem;
}
.sched-day-h b { font-size: 0.88rem; }
.sched-day-h small {
  margin-left: auto;
  background: #e8eef5;
  border-radius: 999px;
  padding: 0 0.35rem;
  font-size: 0.72rem;
}
.sched-item {
  display: flex;
  align-items: baseline;
  gap: 0.28rem;
  background: #fff;
  border: 1px solid #d8c9b4;
  border-radius: 6px;
  padding: 0.28rem 0.4rem;
  margin-bottom: 0.28rem;
  font-size: 0.78rem;
  color: #14202c;
  text-decoration: none;
}
.sched-item:hover { background: #e8eef4; text-decoration: none; color: #14202c; }
.sched-item .sched-title {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 700;
}
.sched-item.kind-job { border-left: 3px solid #c45c26; }
.sched-item.kind-follow { border-left: 3px solid #2a9d6a; }
.sched-item.is-done { opacity: 0.72; }
.sched-item-top {
  display: flex;
  justify-content: space-between;
  gap: 0.25rem;
  margin-bottom: 0.15rem;
}
.sched-who { font-size: 0.72rem; color: var(--muted); }
.sched-title { font-weight: 600; line-height: 1.35; }
.sched-title a { text-decoration: none; }
.sched-time { font-size: 0.72rem; margin-top: 0.1rem; }
.sched-empty { margin: 0.35rem 0 0; font-size: 0.75rem; text-align: center; }
.sched-del { position: absolute; top: 0.15rem; right: 0.1rem; margin: 0; }
.sched-del button {
  font-size: 0.85rem;
  line-height: 1;
  padding: 0.1rem 0.35rem;
  border: 0;
  background: transparent;
  color: var(--muted);
}
.sched-add summary {
  cursor: pointer;
  font-weight: 650;
  margin-bottom: 0.5rem;
}
@media (max-width: 1100px) {
  .sched-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .sched-grid { grid-template-columns: 1fr 1fr; }
}
.side nav a b {
  display: inline-block;
  min-width: 1.1rem;
  padding: 0 0.28rem;
  margin-left: 0.2rem;
  border-radius: 8px;
  background: #c45c26;
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2rem;
  text-align: center;
}
.form-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
.form-actions form { margin: 0; }
.sys-pills { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.82rem; color: var(--muted); }
.campus-legend {
  list-style: none;
  margin: 0.55rem 0 0;
  padding: 0;
  display: grid;
  gap: 0.28rem;
}
.campus-legend li {
  display: flex;
  align-items: baseline;
  gap: 0.4rem;
  font-size: 0.82rem;
  color: var(--muted);
}
.campus-legend .dot {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  background: #3b82c4;
  flex: 0 0 auto;
}
.campus-legend li.main { color: var(--ink); }
.campus-legend li.main .dot { background: var(--brand); }
.campus-list { display: grid; gap: 0.55rem; margin-top: 0.85rem; }
.campus-item {
  position: relative;
  padding: 0.7rem 2.6rem 0.65rem 0.8rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}
.campus-item.main { border-color: #e0c4a8; background: #fffaf4; }
.campus-line {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.75rem;
  align-items: end;
}
.campus-line .field { min-width: 8rem; flex: 1; }
.campus-line .beds { max-width: 6.5rem; flex: 0 0 6.5rem; }
.campus-line button { margin-bottom: 0.05rem; }
.campus-addr { margin: 0.4rem 0 0; }
.campus-check {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.85rem;
  color: var(--muted);
  padding-bottom: 0.35rem;
}
.campus-del { position: absolute; top: 0.55rem; right: 0.55rem; margin: 0; }
.campus-search {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  flex-wrap: wrap;
  padding: 0.55rem 0.65rem;
  background: #f8efe4;
  border: 1px solid #ead9c4;
  border-radius: 10px;
}
.campus-search input[type="search"] { flex: 1; min-width: 220px; }
.map-search {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  margin: 0.45rem 0 0.35rem;
}
.map-search input[type="search"] { flex: 1; min-width: 0; }
.map-pin-hint { margin: 0 0 0.45rem; font-size: 0.8rem; }
#map-pin-hits { margin: 0 0 0.45rem; max-height: 9rem; overflow: auto; }
.map-pin-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.25rem; }
.map-pin-list li { display: flex; flex-direction: column; gap: 0.05rem; }
.map-pin-list button {
  background: #fff;
  color: var(--ink);
  border: 1px solid var(--line);
  text-align: left;
  padding: 0.32rem 0.5rem;
  font-size: 0.82rem;
}
.map-pin-list button:hover { border-color: var(--brand); }
.map-pin-save {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  margin: 0.55rem 0 0.35rem;
}
.map-pin-save select { flex: 1; min-width: 0; }
.map-pin-save button:disabled { opacity: 0.45; cursor: not-allowed; }
#campus-hits { margin-top: 0.75rem; }
.campus-hit-add {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  flex-wrap: wrap;
  margin: 0;
}
.campus-hit-add input[type="number"] { width: 5rem; }
.hist-add {
  margin-top: 0.85rem;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 0.45rem;
  align-items: center;
}
.hist-add button { justify-self: start; }
.agent-app {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(7rem, 0.7fr) auto;
  gap: 0.45rem 0.6rem;
  align-items: end;
  margin-top: 0.75rem;
}
.agent-app .field { margin: 0; }
.agent-app .form-actions { margin: 0; padding-bottom: 0.15rem; }
.agent-pick { position: relative; }
.agent-pick .agent-q { width: 100%; }
.agent-pick .lookup-hits {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 40;
  margin-top: 0.2rem;
}
.agent-pick.is-miss .agent-q {
  border-color: #c45c28;
  background: #fff8f0;
}
.agent-miss {
  margin: 0.35rem 0 0;
  padding: 0.4rem 0.55rem;
  border-radius: 8px;
  border: 1px solid #e8c9a8;
  background: #fff4ea;
  color: #8a3b12;
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1.4;
}
.agent-miss[hidden] { display: none !important; }
.agent-miss .master-import-btn,
.master-miss-wrap .master-import-btn {
  margin-left: 0.35rem;
  display: inline-flex;
  align-items: center;
  height: 1.7rem;
  padding: 0 0.65rem;
  border-radius: 7px;
  border: 1px solid #c45c28;
  background: #c45c28;
  color: #fff;
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
}
.agent-miss .master-import-btn:hover,
.master-miss-wrap .master-import-btn:hover { filter: brightness(1.05); }
.master-miss-wrap {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  padding: 0.25rem 0.1rem;
}
.master-import-dlg { max-width: 28rem; }
.master-import-dlg .dlg-bar .muted { margin: 0.25rem 0 0; font-size: 0.82rem; line-height: 1.4; }
.master-import-form { display: grid; gap: 0.7rem; padding: 0.2rem 0 0.4rem; }
.master-import-msg {
  margin: 0;
  padding: 0.4rem 0.55rem;
  border-radius: 8px;
  font-size: 0.84rem;
  font-weight: 700;
  line-height: 1.4;
}
.master-import-msg.is-err {
  border: 1px solid #e8b4b4;
  background: #fff1f1;
  color: #8a1f1f;
}
.master-import-msg.is-ok {
  border: 1px solid #b7d9c3;
  background: #eef8f1;
  color: #1f6b43;
}
.master-import-msg[hidden] { display: none !important; }
.cust-pick { position: relative; }
.cust-pick .cust-q { width: 100%; }
.cust-pick .lookup-hits {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 40;
  margin-top: 0.2rem;
}
.agent-pick-filter { min-width: 13.5rem; flex: 1 1 13.5rem; max-width: 22rem; }
.search .agent-pick-filter .agent-q { min-width: 9rem; }
.sys-now { margin-top: 1rem; }
.sys-block { margin: 0.85rem 0 1rem; }
.sys-block h4 { margin: 0 0 0.45rem; font-size: 0.95rem; }
.sys-card {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 0.7rem 0.8rem 0.8rem;
  margin-bottom: 0.55rem;
  background: #fff;
}
.sys-card-head {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem 0.7rem;
  align-items: center;
}
.sys-card-head .sys-del { margin-left: auto; }
.sys-contacts { margin-top: 0.55rem; }
.sys-contact {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  align-items: center;
  font-size: 0.9rem;
  padding: 0.2rem 0;
}
.sys-contact-add {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: 0.45rem;
  align-items: center;
}
.sys-contact-add input { min-width: 7rem; flex: 1; }
.sys-search {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
  margin-top: 0.75rem;
}
.sys-search input[type="search"] { flex: 1; min-width: 200px; }
.sys-search select { min-width: 8rem; }
#sys-hits {
  margin-top: 0.65rem;
  padding: 0.7rem 0.85rem;
  border: 2px solid #1e3a4c;
  border-radius: 8px;
  background: #fffdf8;
  color: #14202c;
}
#sys-hits .subh { color: #1e3a4c; }
#sys-hits table td { color: #14202c; background: #fffdf8; font-weight: 600; }
#sys-hits table tr:nth-child(even) td { background: #e8eef4; }
#sys-hits .muted { color: #3d4a58; }
.sys-hit-add {
  display: flex;
  gap: 0.4rem;
  align-items: center;
  flex-wrap: wrap;
  margin: 0;
}
.hosp-two {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.hosp-two .card { margin-bottom: 0; }
.hosp-page table.compact { min-width: 0; }
.hosp-page table { min-width: 0; }
.proj-app {
  margin-top: 0.35rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.proj-app select { min-width: 7.5rem; }
.proj-simple { max-width: 760px; }
.proj-simple .scope-bar { margin-bottom: 0.9rem; }
.proj-simple .form-actions { align-items: center; margin-top: 0.2rem; }
.survey-page { max-width: 820px; }
.survey-page .form-actions { align-items: center; margin-top: 0.15rem; }
.survey-page .scope-bar { margin-bottom: 0.85rem; }
.proj-page .survey-page { max-width: none; }
.proj-split {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(240px, 0.72fr);
  gap: 1rem;
  align-items: start;
}
.proj-main { min-width: 0; }
.proj-main .pane.card { margin-bottom: 0; }
.proj-side {
  position: sticky;
  top: 0.8rem;
  margin-bottom: 0;
}
.proj-side h2 { margin-bottom: 0.35rem; }
.proj-side .side-block + .side-block {
  margin-top: 0.85rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--line);
}
.proj-side .side-block p { margin: 0.35rem 0 0; font-size: 0.9rem; }
.vendor-tools { display: flex; flex-wrap: wrap; gap: 0.6rem 1rem; align-items: center; margin-bottom: 0.6rem; }
.vendor-tools h2 { margin: 0; }
.vendor-tools input[type="search"] { flex: 1; min-width: 14rem; }
.sys-split {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(300px, 0.82fr);
  gap: 1rem;
  align-items: start;
}
@media (max-width: 980px) {
  .sys-split { grid-template-columns: 1fr; }
}
.sys-user-tools {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
}
.sys-tool-block {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 0.7rem;
  align-items: center;
  margin: 0;
}
.sys-tool-block p { margin: 0.15rem 0 0; }
.sys-handover select { min-width: 7.5rem; }
.sys-list-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.65rem;
}
.sys-list-head h2 { margin: 0; }
.sys-table-wrap { overflow-x: auto; }
.sys-user-table { width: 100%; }
.sys-user-table td { vertical-align: top; }
.sys-role-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}
.sys-role-tags .tag {
  font-size: 0.75rem;
  padding: 0.08rem 0.4rem;
}
.sys-user-row { cursor: pointer; }
.sys-user-row.on td { background: rgba(47, 111, 237, 0.08); }
.sys-user-row:hover td { background: rgba(47, 111, 237, 0.05); }
.sys-user-act { white-space: nowrap; width: 1%; }
.sys-user-form { scroll-margin-top: 1rem; }
@media (min-width: 981px) {
  .sys-user-form { position: sticky; top: 0.75rem; }
}
.wf-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}
.wf-card .wf-desc { min-height: 0; font-size: 0.88rem; margin: 0.25rem 0 0.4rem; }
.wf-card-head { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.wf-card-head h3 { margin: 0; }
.wf-diagram {
  overflow: auto;
  padding: 0.5rem 0;
  min-height: 120px;
}
.wf-diagram svg { max-width: 100%; height: auto; }
.wf-overview { margin-top: 0.5rem; }
.wf-edit-table input, .wf-edit-table select { width: 100%; min-width: 0; }
.wf-edit-table td { vertical-align: middle; }
.wf-edit-form h3 { margin: 1rem 0 0.35rem; font-size: 0.95rem; }
.dict-nav { list-style: none; margin: 0; padding: 0; }
.dict-nav li { margin: 0 0 0.65rem; padding: 0.45rem 0.55rem; border-radius: 8px; border: 1px solid transparent; }
.dict-nav li.on { border-color: var(--line); background: rgba(47, 111, 237, 0.06); }
.dict-nav a { display: flex; justify-content: space-between; font-weight: 650; text-decoration: none; }
.dict-nav .muted { font-size: 0.82rem; margin-top: 0.15rem; font-weight: 400; }
.sys-config-form h3 { margin: 1.1rem 0 0.5rem; font-size: 0.95rem; }
.sys-config-form h3:first-child { margin-top: 0; }
.sys-roles {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.45rem 0.7rem 0.55rem;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.1rem 0.65rem;
}
.sys-roles legend { font-weight: 650; grid-column: 1 / -1; }
.sys-roles label { display: block; margin: 0.28rem 0; cursor: pointer; }
.sys-roles input { margin-right: 0.35rem; }
.sys-org-grid,
.sys-role-grid,
.sys-config-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 0.75rem;
}
.sys-config-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.sys-org-card,
.sys-role-card {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
  background: rgba(255, 255, 255, 0.45);
}
.sys-org-card:hover,
.sys-role-card:hover {
  border-color: rgba(47, 111, 237, 0.35);
  background: rgba(47, 111, 237, 0.04);
}
.sys-org-card.dim { opacity: 0.78; }
.sys-role-card .sys-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin: 0;
  padding: 0;
  border: 0;
}
.sys-role-card p { margin: 0; font-size: 0.86rem; }
.sys-role-card .tag { text-decoration: none; }
.sys-role-guide { margin-bottom: 0.85rem; }
.sys-main-flow h3 {
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
}
.sys-main-flow-steps {
  margin: 0 0 0.55rem;
  padding-left: 1.2rem;
  line-height: 1.55;
  font-size: 0.88rem;
}
.sys-main-flow-notes {
  margin: 0;
  padding-left: 1.2rem;
  color: var(--muted);
  font-size: 0.84rem;
  line-height: 1.5;
}
.sys-role-grid {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  margin-bottom: 1rem;
}
.sys-role-summary {
  color: #3a4550;
  font-size: 0.86rem !important;
  line-height: 1.45;
}
.sys-role-section { margin-top: 0.2rem; }
.sys-role-k {
  display: block;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--muted);
  margin-bottom: 0.18rem;
}
.sys-role-duties {
  margin: 0;
  padding-left: 1.05rem;
  font-size: 0.82rem;
  line-height: 1.45;
  color: #44505a;
}
.sys-role-limits {
  margin: 0.25rem 0 0 !important;
  font-size: 0.8rem !important;
  color: #8a5a2b;
  line-height: 1.4;
}
.sys-role-limits .sys-role-k {
  display: inline;
  margin-right: 0.35rem;
  color: #8a5a2b;
}
.sys-role-matrix-wrap { margin-top: 0.5rem; }
.sys-role-matrix th,
.sys-role-matrix td {
  text-align: center;
  white-space: nowrap;
  font-size: 0.8rem;
}
.sys-role-matrix th[scope="row"] {
  text-align: left;
  font-weight: 650;
}
.sys-role-matrix td.ok { color: var(--ok); font-weight: 650; }
.sys-role-matrix td.err { color: var(--err); font-weight: 650; }
.sys-roles label {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.15rem 0.45rem;
}
.sys-role-pick-hint {
  flex: 1 1 12rem;
  font-size: 0.78rem;
  line-height: 1.35;
}
.sys-dict-split {
  grid-template-columns: minmax(220px, 0.72fr) minmax(0, 1.5fr);
}
.sys-config-form .sys-list-head { margin-bottom: 1rem; }
.sys-config-card { margin: 0; }
.sys-config-card h3 { margin: 0 0 0.65rem; font-size: 0.95rem; }
.sys-config-card .stack { display: grid; gap: 0.65rem; }
.sys-log-table td:last-child {
  max-width: 36rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.nowrap { white-space: nowrap; }
a.wf-card {
  text-decoration: none;
  color: inherit;
  display: block;
}
a.wf-card:hover { box-shadow: 0 4px 16px rgba(20, 36, 68, 0.08); }

.sys-page { color: #14202c; }
.sys-page .sys-tabs {
  gap: 0.4rem;
  margin: 0 0 1rem;
  padding: 0.4rem;
  background: #1e3a4c;
  border-radius: 12px;
}
.sys-page .sys-tabs a {
  min-height: 2.45rem;
  padding: 0.45rem 1.05rem;
  border-radius: 9px;
  color: #d5e0e8;
  font-size: 1.02rem;
  font-weight: 700;
  text-decoration: none;
}
.sys-page .sys-tabs a:hover { color: #fff; background: #2a5168; }
.sys-page .sys-tabs a.on { color: #fff; background: #c45c28; }
.sys-page > .card,
.sys-page .card {
  border: 1px solid #d4c4ae;
  background: #fffdf8;
  box-shadow: 0 1px 0 #fff inset;
}
.sys-page h2 { color: #1e3a4c; }
.sys-page h3 { color: #1e3a4c; }
.sys-page .muted { color: #3d4a58; }
.sys-page table { width: 100%; }
.sys-page th {
  color: #1e3a4c;
  background: #e8eef4;
  font-weight: 750;
  border-bottom: 1px solid #c5d0da;
}
.sys-page td { color: #14202c; background: #fffdf8; }
.sys-page tr:nth-child(even) td { background: #f3f7fa; }
.sys-page .sys-user-row:hover td { background: #d4e4ef; }
.sys-page .sys-user-row.on td { background: #1e3a4c; color: #fff; }
.sys-page .sys-user-row.on .muted,
.sys-page .sys-user-row.on a { color: #d5e0e8; }
.sys-page .sys-user-tools {
  padding: 0.85rem 1rem;
  border: 1px solid #d4c4ae;
  border-radius: 10px;
  background: #e8eef4;
}
.sys-page .sys-tool-block strong { color: #1e3a4c; }
.sys-page .sys-org-card,
.sys-page .sys-role-card,
.sys-page a.wf-card {
  background: #fff;
  border: 1px solid #c9b8a0;
  color: #14202c;
}
.sys-page .sys-org-card:hover,
.sys-page .sys-role-card:hover,
.sys-page a.wf-card:hover {
  border-color: #1e3a4c;
  background: #e8eef4;
  box-shadow: 0 6px 16px rgba(20, 32, 44, 0.1);
}
.sys-page .sys-org-card.dim { opacity: 1; background: #f4f1ea; }
.sys-page .sys-org-card strong,
.sys-page .sys-role-card strong,
.sys-page .wf-card-head h3 { color: #1e3a4c; font-size: 1.02rem; }
.sys-page .sys-role-tags .tag,
.sys-page .tag {
  background: #1e3a4c;
  color: #fff;
  border: 0;
  font-weight: 650;
}
.sys-page .tag.ok { background: #2a7a6e; }
.sys-page .tag.warn { background: #c45c28; }
.sys-page .tag.err { background: #a04a5c; }
.sys-page .wf-desc { color: #2a3340; font-weight: 600; }
.sys-page .wf-diagram {
  margin-top: 0.45rem;
  padding: 0.7rem 0.75rem;
  border: 1px solid #c5d0da;
  border-radius: 8px;
  background: #fff;
}
.sys-page .wf-overview { padding: 0.9rem; }
.sys-page .wf-diagram svg { font-weight: 650; }
.sys-page .dict-nav li {
  margin: 0 0 0.4rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid #e0d2be;
  background: #fff;
}
.sys-page .dict-nav li.on {
  border-color: #1e3a4c;
  background: #1e3a4c;
}
.sys-page .dict-nav li.on a,
.sys-page .dict-nav li.on .muted { color: #fff; }
.sys-page .dict-nav a { color: #1e3a4c; }
.sys-page .sys-config-card {
  border: 1px solid #c9b8a0;
  background: #fff;
}
.sys-page .sys-config-card h3 {
  padding-bottom: 0.45rem;
  border-bottom: 2px solid #1e3a4c;
}
.sys-page .sys-config-card .field { color: #1e3a4c; font-weight: 700; }
.sys-page .sys-config-card input,
.sys-page .sys-config-card select,
.sys-page .sys-config-card textarea {
  color: #14202c;
  background: #fffdf8;
  border: 1px solid #c5d0da;
  font-weight: 650;
}
.sys-page .sys-roles {
  background: #e8eef4;
  border-color: #c5d0da;
}
.sys-page .sys-roles label { color: #14202c; font-weight: 650; }
.sys-page .sys-user-form input,
.sys-page .sys-user-form select,
.sys-page .wf-edit-table input,
.sys-page .wf-edit-table select {
  color: #14202c;
  background: #fff;
  border: 1px solid #c5d0da;
  font-weight: 650;
}
.sys-page .sys-log-table td { font-size: 0.86rem; }
.sys-page .sys-log-table td:last-child { color: #2a3340; white-space: normal; }
.wf-role-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.2rem 0 0.85rem;
}
.wf-role-jump a {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  background: #1e3a4c;
  color: #fff;
  font-weight: 700;
  text-decoration: none;
  font-size: 0.86rem;
}
.wf-role-jump a b {
  min-width: 1.3rem;
  padding: 0.02rem 0.35rem;
  border-radius: 999px;
  background: #c45c28;
  text-align: center;
}
.wf-role-jump a:hover { background: #2a5168; }
.wf-role-block { margin: 1.1rem 0 1.4rem; scroll-margin-top: 0.8rem; }
.wf-role-h {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.4rem 1rem;
  margin: 0 0 0.65rem;
  padding: 0.45rem 0.2rem 0.5rem;
  border-bottom: 3px solid #1e3a4c;
}
.wf-role-h h2 { margin: 0; font-size: 1.12rem; }
.wf-view-head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.8rem;
  margin: 0 0 0.9rem;
}
.wf-view-head h2 { margin: 0 0 0.25rem; }
.wf-view-head .sys-role-tags { margin-top: 0.4rem; }
.job-apply { margin: 0 0 0.9rem; }
.job-apply .job-time-fields {
  grid-template-columns: minmax(6.5rem, 0.9fr) minmax(7rem, 1.1fr) repeat(4, minmax(7.2rem, 1fr));
  align-items: end;
}
@media (max-width: 1100px) {
  .job-apply .job-time-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.job-apply input[type="date"],
.job-apply input[type="time"] {
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
}
.job-type-picks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
.job-type-picks strong { font-size: 0.82rem; color: var(--muted); margin-right: 0.2rem; }
button.job-type-btn {
  min-width: 4.5rem;
  padding: 0.5rem 1rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font: inherit;
  cursor: pointer;
}
button.job-type-btn:hover { border-color: #2f6fed; color: #2f6fed; }
button.job-type-btn.on {
  background: #2f6fed;
  border-color: #2f6fed;
  color: #fff;
}
.job-hours-out { margin: 0.15rem 0 0.55rem; font-size: 0.82rem; }
.job-manage { margin-top: 0.45rem; }
.job-manage details { margin: 0.3rem 0 0; }
.job-manage summary { cursor: pointer; color: var(--accent, #2f6fed); font-size: 0.88rem; }
.job-manage .job-time-fields {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.35rem;
}
.job-adjust input, .job-adjust select { width: 100%; }
.follow-add { margin-bottom: 0.7rem; }
.proj-follow-jobs { margin-top: 1rem; }
.proj-follow-jobs h2 { margin-top: 0; }
.proj-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.6rem;
}
.proj-kpis > div {
  background: #faf7f2;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 0.65rem 0.7rem;
}
.proj-kpis span { display: block; font-size: 0.78rem; color: var(--muted); }
.proj-kpis b { display: block; font-size: 1.12rem; margin: 0.18rem 0 0.12rem; letter-spacing: 0.01em; }
.proj-kpis small { display: block; color: var(--muted); font-size: 0.75rem; line-height: 1.35; }
.proj-sum { padding: 0.65rem 0.8rem 0.55rem; }
.proj-now-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem 0.85rem;
  margin: 0 0 0.75rem;
  padding: 0.65rem 0.8rem;
  border-radius: 10px;
  background: #f7fafc;
  border: 1px solid #e2e8f0;
}
.proj-now-main {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.65rem;
  min-width: 0;
}
.proj-now-main strong { color: var(--navy); font-size: 0.98rem; }
.proj-home-tabs { margin: 0 0 0.75rem; }
.proj-home-panel[hidden] { display: none !important; }
.sum-band + .sum-band {
  margin-top: 0.7rem;
  padding-top: 0.55rem;
  border-top: 1px solid var(--line);
}
.sum-band-h { margin: 0 0 0.4rem; }
.sum-band-h h2 {
  margin: 0 0 0.1rem;
  font-size: 0.95rem;
}
.sum-band-h p {
  margin: 0;
  color: var(--muted);
  font-size: 0.76rem;
  line-height: 1.3;
}
.proj-sum-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0.4rem;
}
.proj-sum-grid.sum-band-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.proj-sum-grid.sum-band-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.proj-sum-grid.sum-band-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.proj-sum-grid.sum-proc { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.proj-sum-grid.sum-flow { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fulfill-board { display: grid; grid-template-columns: 1.15fr 0.85fr; gap: 0.7rem; }
.fulfill-cell, .fulfill-side { border: 1px solid #e6e1d6; border-radius: 10px; padding: 0.7rem 0.8rem; background: #fff; }
.fulfill-cell.need { border-color: #e0a15a; background: #fff8ef; }
.fulfill-cell h3 { margin: 0 0 0.45rem; font-size: 0.95rem; }
.fulfill-side { display: flex; flex-direction: column; gap: 0.45rem; background: transparent; border: 0; padding: 0; }
.fulfill-mini { display: block; width: 100%; text-align: left; border: 1px solid #e6e1d6; border-radius: 10px; background: #fff; padding: 0.65rem 0.75rem; color: inherit; text-decoration: none; cursor: pointer; }
.fulfill-mini b { display: block; margin-bottom: 0.15rem; }
.fulfill-mini span { color: #6b6560; font-size: 0.86rem; }
.fulfill-more { margin-top: 0.7rem; }
.proj-expect { display: flex; flex-wrap: wrap; gap: 0.45rem 0.75rem; align-items: flex-end; margin: 0 0 0.35rem; }
.proj-expect form { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: flex-end; margin: 0; }
.proj-expect .field { margin: 0; min-width: 12rem; }
.sum-n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  margin-right: 0.28rem;
  border-radius: 999px;
  background: #8a6a48;
  color: #fff;
  font-size: 0.68rem;
  font-weight: 700;
  vertical-align: 0.05em;
}
.sum-edits { display: inline-flex; flex-wrap: wrap; gap: 0.25rem; }
.hosp-page .hosp-sum-cats {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}
.hosp-page .hosp-sum-cats .sum-cat {
  padding: 1.05rem 1.1rem 1.15rem;
  min-height: 9.4rem;
}
.hosp-page .hosp-sum-cats .sum-cat header > div span { font-size: 1.05rem; }
.hosp-page .hosp-sum-cats .sum-cat header em { font-size: 0.92rem; }
.hosp-page .hosp-sum-cats .sum-cat b { font-size: 1.42rem; margin-top: 0.55rem; }
.hosp-page .hosp-sum-cats .sum-cat small { font-size: 0.95rem; line-height: 1.45; -webkit-line-clamp: 3; }
.hosp-page .hosp-sum-cats .sum-edit {
  font-size: 0.98rem;
  padding: 0.38rem 0.95rem;
  border-width: 1.5px;
}
.ph-tag {
  display: inline-block !important;
  margin-top: 0.12rem;
  padding: 0 0.35rem;
  border-radius: 999px;
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em;
  color: #fff !important;
  background: #8a8070;
}
.ph-tag.pre { background: #2a7a6e; }
.ph-tag.mid { background: #3d4fa3; }
.ph-tag.after { background: #8a6d1a; }
.proj-sum-cats .sum-cat.dim { cursor: default; opacity: 0.78; }
.proj-sum-cats #sum-scale { cursor: pointer; }
.proj-sum-cats .sum-cat.dim:hover { border-color: var(--line); }
.proj-sum-grid > div,
.proj-sum-cats .sum-cat {
  background: #faf7f2;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.32rem 0.55rem;
  min-width: 0;
}
.proj-sum-cats .sum-cat {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
  min-height: 2.15rem;
}
.proj-sum-cats .sum-cat:hover { border-color: var(--brand); }
.proj-sum-cats .sum-cat header {
  display: contents;
}
.proj-sum-cats .sum-cat header > div {
  flex: 0 0 auto;
  max-width: 9.5rem;
  min-width: 0;
}
.proj-sum-cats .sum-cat header > div span {
  font-size: 0.76rem;
  font-weight: 650;
  color: var(--ink);
  white-space: nowrap;
}
.proj-page .proj-sum-cats .sum-cat {
  flex-wrap: wrap;
  align-items: flex-start;
  align-content: flex-start;
  min-height: 6.6rem;
  padding: 0.6rem 0.7rem 0.65rem;
  gap: 0.2rem 0.5rem;
}
.proj-page .proj-sum-cats .sum-cat header {
  display: flex;
  width: 100%;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.45rem;
}
.proj-page .proj-sum-cats .sum-cat header > div {
  flex: 1 1 auto;
  max-width: none;
}
.proj-page .proj-sum-cats .sum-cat header > div span {
  font-size: 0.95rem;
  white-space: normal;
}
.proj-page .proj-sum-cats .sum-cat header em {
  display: block;
  margin-top: 0.15rem;
  font-style: normal;
  font-size: 0.75rem;
  font-weight: 500;
  color: #5c6570;
  white-space: normal;
  line-height: 1.35;
}
.proj-page .proj-sum-cats .sum-edit {
  width: 2.9rem;
  height: 2.9rem;
  min-width: 2.9rem;
  margin: 0;
  padding: 0.12rem;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-size: 0.8rem;
  line-height: 1.15;
  white-space: normal;
}
.proj-page .proj-sum-cats .sum-cat > b {
  font-size: 0.98rem;
  white-space: normal;
}
.proj-page .proj-sum-cats .sum-cat > small {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  flex: 1 1 100%;
  width: 100%;
  margin: 0.1rem 0 0;
  font-size: 0.78rem;
  line-height: 1.4;
  color: #4e5964;
  white-space: normal;
  overflow: hidden;
}
.proj-sum-cats .sum-edit {
  flex: none;
  order: 5;
  margin: 0 0 0 auto;
  padding: 0.1rem 0.45rem;
  border: 1px solid var(--brand);
  border-radius: 999px;
  background: #fff;
  color: var(--brand);
  font: inherit;
  font-size: 0.72rem;
  font-weight: 650;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
}
.proj-sum-grid span { display: block; font-size: 0.75rem; color: var(--muted); }
.proj-sum-grid b,
.proj-sum-cats .sum-cat > b {
  display: block;
  flex: 1 1 auto;
  order: 2;
  min-width: 0;
  font-size: 0.88rem;
  margin: 0;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.proj-sum-grid small,
.proj-sum-cats .sum-cat > small {
  display: none;
}
.chan-app-more {
  margin-top: 0.75rem;
  padding-top: 0.55rem;
  border-top: 1px dashed var(--line);
}
.chan-app-more > summary {
  cursor: pointer;
  font-size: 0.82rem;
  font-weight: 650;
  color: #5c4630;
}
.chan-app-more .agent-app { margin-top: 0.55rem; }
.chan-agent-row { align-items: end; }
#dlg-channel .agent-pick-row .agent-kind,
#dlg-quote-channel .agent-pick-row .agent-kind {
  width: 7.2rem;
  min-width: 7.2rem;
  pointer-events: auto;
  position: relative;
  z-index: 2;
}
.proj-sum-grid > div.warn b,
.proj-sum-cats .sum-cat.warn b { color: var(--err); }
.proj-sum-grid > div.need b,
.proj-sum-cats .sum-cat.need b { color: var(--warn); }
.proj-sum-cats .sum-cat.need {
  background: #fff8ef;
  border-color: #efd2a4;
}
.proj-sum-cats .sum-cat.ok {
  background: #e8f6ee;
  border-color: #b7ddc6;
}
.proj-sum-cats .sum-cat.ok b { color: var(--ok); }
.proj-sum-cats .sum-cat.ok header > div span { color: var(--ok); }
.proj-sum-cats .sum-cat.ok .sum-n { background: var(--ok); }
.proj-sum-cats .sum-cat.todo {
  background: #e8f2fc;
  border-color: #8bb8e8;
}
.proj-sum-cats .sum-cat.todo b { color: #1d4f91; }
.proj-sum-cats .sum-cat.todo header > div span { color: #1d4f91; }
.proj-sum-cats .sum-cat.todo .sum-n { background: #2b6cb0; }
.proj-sum-cats .sum-todo {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0 0.38rem;
  border-radius: 4px;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 700;
  color: #fff;
  background: #2b6cb0;
  vertical-align: 0.08em;
}
dialog.proj-edit-dlg {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 0.9rem 1.1rem 1rem;
  max-width: 40rem;
  width: calc(100vw - 2rem);
  max-height: 88vh;
  overflow: auto;
  color: var(--ink);
  background: var(--paper);
  box-shadow: 0 18px 48px rgba(40, 28, 16, 0.22);
}
dialog.proj-edit-dlg.dlg-wide { max-width: 52rem; }
dialog.proj-edit-dlg.dlg-margin { max-width: min(96vw, 72rem); }
dialog.proj-edit-dlg .dlg-bar-acts {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  margin-left: auto;
}
dialog.proj-edit-dlg::backdrop { background: rgba(32, 24, 16, 0.45); }
dialog.proj-edit-dlg .dlg-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  margin-bottom: 0.75rem;
}
dialog.proj-edit-dlg .dlg-bar strong { font-size: 1.08rem; }
dialog.proj-edit-dlg .proj-follow-jobs { margin: 0; box-shadow: none; border: 0; padding: 0; }
.chan-list { margin: 0 0 0.65rem; padding-left: 1.1rem; }
.chan-list li { margin: 0.15rem 0; }
.chan-edit select { min-width: 7rem; }
.proj-edit-fold > summary {
  cursor: pointer;
  font-weight: 650;
  font-size: 1.05rem;
  list-style: none;
}
.proj-edit-fold > summary::-webkit-details-marker { display: none; }
.proj-edit-fold > summary::before { content: "▸ "; color: var(--brand); }
.proj-edit-fold[open] > summary { margin-bottom: 0.7rem; }
.proj-edit-fold[open] > summary::before { content: "▾ "; }
.proj-page .survey-hero .field input { font-size: 1.08rem; padding: 0.4rem 0.4rem; }
.proj-page .survey-hint { font-size: 0.82rem; }
.proj-sum-follow .proj-follow-jobs { margin-top: 0.35rem; }
.follow-next {
  margin: 0 0 0.65rem;
  padding: 0.4rem 0.6rem;
  border-radius: 8px;
  background: #f4eee4;
  font-size: 0.86rem;
}
.follow-next.overdue { background: #f8e8e4; color: var(--err); }
.follow-kinds {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.55rem;
}
.follow-kind {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.86rem;
}
.follow-tl {
  list-style: none;
  margin: 0.7rem 0 0;
  padding: 0;
  border-left: 2px solid #eadfce;
}
.follow-tl li {
  position: relative;
  margin: 0 0 0.85rem 0.85rem;
  padding: 0 0 0.15rem;
}
.follow-tl li::before {
  content: "";
  position: absolute;
  left: -1.05rem;
  top: 0.35rem;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 50%;
  background: var(--brand);
}
.follow-tl-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 0.55rem;
  font-size: 0.8rem;
}
.follow-tl-meta time { color: var(--muted); }
.follow-tl p { margin: 0.28rem 0 0; line-height: 1.45; white-space: pre-wrap; }
.follow-edit { margin-top: 0.35rem; }
.follow-edit > summary { cursor: pointer; color: var(--brand); font-size: 0.8rem; }
.follow-edit[open] { margin-top: 0.45rem; padding: 0.55rem; background: #faf7f2; border-radius: 8px; }
.closeout-view {
  margin: 0 0 0.7rem;
  padding: 0.7rem 0.8rem;
  background: #faf7f2;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.closeout-view p { margin: 0.28rem 0; line-height: 1.45; }
.rival-list { list-style: none; margin: 0 0 1rem; padding: 0; }
.rival-item {
  margin: 0 0 0.7rem;
  padding: 0.65rem 0.75rem;
  background: #faf7f2;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.rival-item header { display: flex; align-items: center; gap: 0.45rem; margin-bottom: 0.2rem; }
.rival-item p { margin: 0.22rem 0; line-height: 1.4; }
.proj-sum-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  margin-top: 0.7rem;
  padding-top: 0.65rem;
  border-top: 1px solid var(--line);
}
.proj-sum-acts form { margin: 0; display: inline-flex; gap: 0.35rem; align-items: center; }
.proj-sum-acts input { max-width: 9rem; }
.proj-profile-body {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(16rem, 0.75fr);
  gap: 0.75rem;
  align-items: start;
}
@media (max-width: 1100px) {
  .proj-sum-grid,
  .proj-sum-grid.sum-band-4,
  .proj-sum-grid.sum-band-3,
  .proj-sum-grid.sum-band-2,
  .proj-sum-grid.sum-proc,
  .proj-sum-grid.sum-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fulfill-board { grid-template-columns: 1fr; }
  .proj-profile-body { grid-template-columns: 1fr; }
}
.proj-next {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem 1rem;
  align-items: center;
  margin-top: 0.85rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--line);
}
.proj-next > p { margin: 0; flex: 1 1 16rem; color: var(--ink); }
.proj-next .form-actions { flex: 1 1 100%; }
.field.need-attn select,
.field.need-attn input {
  border-color: var(--warn);
  background: #fff8ef;
}
.deal-gen { align-items: center; margin: 0 0 0.85rem; }
.deal-gen button { width: auto; }
.scale-mini {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.45rem;
  text-align: center;
  margin: 0.35rem 0 0.55rem;
}
.scale-mini span { display: block; font-size: 0.78rem; color: var(--muted); }
.scale-mini b { display: block; font-size: 1.45rem; font-weight: 650; letter-spacing: 0.02em; }
.proj-page .hosp-jump { margin-bottom: 1rem; }
#sec-profile, #sec-deal, #sec-progress, #channel { scroll-margin-top: 0.75rem; }

@media (max-width: 1100px) {
  .proj-split { grid-template-columns: 1fr; }
  .proj-side { position: static; }
  .proj-kpis { grid-template-columns: 1fr 1fr; }
}
.campus-picks {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.7rem;
  margin: 0 0 0.65rem;
}
.campus-picks-lab {
  font-size: 0.9rem;
  color: var(--muted);
  margin-right: 0.15rem;
}
.campus-pick {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0;
  padding: 0.28rem 0.55rem;
  background: #f4eee4;
  border-radius: 8px;
  font-size: 0.9rem;
}
.campus-pick input { margin: 0; }
.campus-extra { flex: 1 1 10rem; min-width: 8rem; margin: 0; }
.survey-hero {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0.15rem 0 0.15rem;
}
.survey-hero .field { font-size: 0.92rem; }
.survey-hero .field input {
  font-size: 1.28rem;
  font-weight: 650;
  text-align: center;
  padding: 0.5rem 0.45rem;
  letter-spacing: 0.02em;
}
.survey-dates { margin: 0.35rem 0 0.15rem; }
.survey-hint { margin: 0.1rem 0 0.55rem; }
.survey-more {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 0.5rem 0.85rem 0.55rem;
  background: #faf7f2;
}
.survey-more + .survey-more { margin-top: 0.15rem; }
.survey-more summary {
  cursor: pointer;
  color: var(--muted);
  font-size: 0.9rem;
  list-style: none;
}
.survey-more summary::-webkit-details-marker { display: none; }
.survey-more summary::before {
  content: "▸ ";
  color: var(--brand);
}
.survey-more[open] summary { margin-bottom: 0.65rem; color: var(--ink); }
.survey-more[open] summary::before { content: "▾ "; }
.survey-fold { padding: 0.7rem 1rem 0.85rem; }
.survey-fold summary {
  cursor: pointer;
  font-weight: 650;
  font-size: 1.05rem;
  list-style: none;
}
.survey-fold summary::-webkit-details-marker { display: none; }
.survey-fold[open] summary { margin-bottom: 0.7rem; }
@media (max-width: 640px) {
  .survey-hero { grid-template-columns: 1fr; }
}
#sec-profile, #sec-campus, #sec-history, #sec-channel, #sec-project { scroll-margin-top: 0.75rem; }

@media (max-width: 1100px) {
  .hosp-split, .hosp-two { grid-template-columns: 1fr; }
  .hosp-map-col { position: static; }
  .agent-app { grid-template-columns: 1fr; }
}
body:has(.catalog-page) .main { padding: 0.65rem 1.05rem 0.85rem; }
.catalog-page {
  display: flex;
  flex-direction: column;
  min-height: calc(100vh - 2.2rem);
  gap: 0.4rem;
}
.proj-page .catalog-page {
  min-height: 0;
  margin: 0 0 0.75rem;
}
.catalog-page .top { margin-bottom: 0; align-items: center; }
.catalog-page .top h1 { margin: 0; font-size: 1.12rem; }
.catalog-page .top .muted { margin: 0.06rem 0 0; font-size: 0.82rem; }
.catalog-page .seg.catalog-seg {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(4.2rem, 1fr));
  flex-wrap: unset;
  gap: 0.3rem;
  margin: 0;
  padding: 0.3rem;
  background: #e9e0d2;
  border: 1px solid #d9ccb8;
  border-radius: 10px;
}
.catalog-page .catalog-seg .sys-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  width: auto;
  height: auto;
  min-height: 3.6rem;
  aspect-ratio: 1;
  padding: 0.22rem 0.15rem 0.18rem;
  white-space: normal;
  text-align: center;
  font-size: 0.92rem;
  font-weight: 800;
  line-height: 1.2;
  border-radius: 4px;
  border: 1px solid transparent;
  box-shadow: none;
  position: relative;
}
.catalog-page .catalog-seg .sys-chip .sys-chip-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-height: 2.4em;
  word-break: break-word;
  font-size: 0.78rem;
  line-height: 1.15;
  letter-spacing: 0;
}
.catalog-page .catalog-seg .sys-chip b {
  display: block;
  margin: 0.15rem 0 0;
  min-width: 1.4em;
  padding: 0.02rem 0.28rem;
  border-radius: 3px;
  background: rgba(255,255,255,0.55);
  font-size: 0.72rem;
  font-weight: 800;
}
.catalog-page .catalog-seg .tone-all { color: #7a2f1f; background: #f3ddd3; }
.catalog-page .catalog-seg .tone-0 { color: #1f5f56; background: #d7ebe6; }
.catalog-page .catalog-seg .tone-1 { color: #3a4a8a; background: #dde3f5; }
.catalog-page .catalog-seg .tone-2 { color: #5a4a12; background: #efe4c4; }
.catalog-page .catalog-seg .tone-3 { color: #7a3a18; background: #f3ddcc; }
.catalog-page .catalog-seg .tone-4 { color: #5b3a6e; background: #eadff0; }
.catalog-page .catalog-seg .tone-5 { color: #2c5a2f; background: #dcead8; }
.catalog-page .catalog-seg .tone-6 { color: #1f4f73; background: #d7e6f2; }
.catalog-page .catalog-seg .tone-7 { color: #7a3d4a; background: #f3dce1; }
.catalog-page .catalog-seg .tone-none { color: #5a5348; background: #e6e1d8; }
.catalog-page .catalog-seg .sys-chip:not(.on) {
  opacity: 0.78;
  filter: saturate(0.72);
}
.catalog-page .catalog-seg .sys-chip:hover {
  filter: brightness(0.97);
  color: inherit;
  opacity: 1;
}
.catalog-page .seg.catalog-seg a.sys-chip.on,
.catalog-page .catalog-seg .sys-chip.on {
  color: #fff;
  opacity: 1;
  filter: none;
  border-color: rgba(20, 14, 8, 0.22);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.38), 0 3px 10px rgba(40, 28, 16, 0.22);
  font-weight: 800;
}
.catalog-page .catalog-seg .sys-chip.on::after {
  content: "✓";
  position: absolute;
  top: 0.2rem;
  right: 0.2rem;
  width: 1.05rem;
  height: 1.05rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #fff;
  color: #1a1510;
  font-size: 0.72rem;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 1px 2px rgba(20, 14, 8, 0.2);
}
.catalog-page .catalog-seg .sys-chip.on b { background: rgba(255,255,255,0.22); color: #fff; }
.catalog-page .catalog-seg .tone-all.on { background: #b4532a; }
.catalog-page .catalog-seg .tone-0.on { background: #2a7a6e; }
.catalog-page .catalog-seg .tone-1.on { background: #3d4fa3; }
.catalog-page .catalog-seg .tone-2.on { background: #8a6d1a; }
.catalog-page .catalog-seg .tone-3.on { background: #c45c28; }
.catalog-page .catalog-seg .tone-4.on { background: #7a4d96; }
.catalog-page .catalog-seg .tone-5.on { background: #3d7a42; }
.catalog-page .catalog-seg .tone-6.on { background: #2a6a96; }
.catalog-page .catalog-seg .tone-7.on { background: #a04a5c; }
.catalog-page .catalog-seg .tone-none.on { background: #6a6358; }
.catalog-page .catalog-seg label.sys-chip { cursor: pointer; margin: 0; }
.catalog-page .catalog-seg button.sys-chip {
  font: inherit;
  border: 0;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}
.catalog-page .catalog-seg .catalog-sys-add {
  color: #5a4630;
  background: #fff;
  border: 1px dashed #cbb89a !important;
  box-shadow: none;
}
.catalog-page .catalog-seg .catalog-sys-add:hover {
  background: #f7f0e6;
  border-color: #b4532a !important;
  color: #7a2f1f;
}
.catalog-page .catalog-seg .catalog-sys-add .sys-chip-name {
  font-weight: 650;
}
.catalog-list-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.65rem;
}
.catalog-list-toolbar .btn { min-width: 4.4rem; justify-content: center; }
.catalog-list-toolbar .btn.ghost {
  background: #fff;
  border: 1px solid #d7c7b0;
  color: #5a4630;
  box-shadow: none;
}
.catalog-list-toolbar .btn.ghost:hover {
  background: #f7f0e6;
  border-color: #cbb89a;
}
.series-tile.tone-0 { color: #1f5f56; background: #d7ebe6; }
.series-tile.tone-1 { color: #3a4a8a; background: #dde3f5; }
.series-tile.tone-2 { color: #5a4a12; background: #efe4c4; }
.series-tile.tone-3 { color: #7a3a18; background: #f3ddcc; }
.series-tile.tone-4 { color: #5b3a6e; background: #eadff0; }
.series-tile.tone-5 { color: #2c5a2f; background: #dcead8; }
.series-tile.tone-6 { color: #1f4f73; background: #d7e6f2; }
.series-tile.tone-7 { color: #7a3d4a; background: #f3dce1; }
.series-tile.tone-0.on { background: #2a7a6e; }
.series-tile.tone-1.on { background: #3d4fa3; }
.series-tile.tone-2.on { background: #8a6d1a; }
.series-tile.tone-3.on { background: #c45c28; }
.series-tile.tone-4.on { background: #7a4d96; }
.series-tile.tone-5.on { background: #3d7a42; }
.series-tile.tone-6.on { background: #2a6a96; }
.series-tile.tone-7.on { background: #a04a5c; }
.catalog-batch .batch-tier-right {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-left: auto;
}
.catalog-batch .batch-tier-inline {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.86rem;
  font-weight: 650;
  color: var(--navy);
}
.catalog-batch .batch-tier-inline select { min-width: 8.5rem; }
.catalog-filter { margin: 0; }
.catalog-filter input[name="q"] { flex: 1; min-width: 12rem; }
.catalog-page .task-board,
.catalog-page .client-tasks {
  margin: 0;
  padding: 0.4rem 0.55rem 0.45rem;
}
.catalog-page .task-board-tip { display: none; }
.catalog-page .search.catalog-filter {
  margin: 0;
  gap: 0.35rem;
}
.catalog-page .search.catalog-filter select { min-width: 7.2rem; }
.catalog-list-acts .btn { min-width: 3.8rem; justify-content: center; padding-left: 0.5rem; padding-right: 0.5rem; }
.catalog-list-acts .btn.ghost {
  background: #fff;
  border: 1px solid #d7c7b0;
  color: #5a4630;
  box-shadow: none;
}
.catalog-list-acts .btn.ghost:hover {
  background: #f7f0e6;
  border-color: #cbb89a;
}
.catalog-import { margin: 0; }
.catalog-import .btn { cursor: pointer; margin: 0; display: inline-flex; align-items: center; }
.catalog-page .top .actions .btn { min-width: 4.4rem; justify-content: center; }
.catalog-fold {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.35rem 0.7rem 0.45rem;
  background: rgba(255,255,255,0.4);
}
.catalog-fold + .catalog-fold { margin-top: 0.45rem; }
.catalog-fold summary {
  cursor: pointer;
  font-weight: 650;
  font-size: 0.88rem;
  padding: 0.25rem 0;
  color: var(--navy);
}
.catalog-fold[open] summary { margin-bottom: 0.45rem; }
.catalog-price { display: flex; flex-direction: column; align-items: flex-end; gap: 0.1rem; }
.catalog-price strong { font-weight: 650; }
.catalog-batch {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.65rem;
}
.catalog-batch .btn { min-width: 4.2rem; justify-content: center; padding-left: 0.55rem; padding-right: 0.55rem; }
.catalog-batch .btn.ghost {
  background: #fff;
  border: 1px solid #d7c7b0;
  color: #5a4630;
  box-shadow: none;
}
.catalog-batch .btn.ghost:hover {
  background: #f7f0e6;
  border-color: #cbb89a;
}
.catalog-batch-edit {
  width: 100%;
  margin: 0.15rem 0 0.35rem;
  padding: 0.75rem 0.85rem;
}
.catalog-batch-edit .row { margin-top: 0.45rem; }
.catalog-export {
  margin: 0 0 0.85rem;
  padding: 0.85rem 1rem;
}
.catalog-export .export-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.5rem 0.85rem;
  margin-bottom: 0.55rem;
}
.catalog-export .export-scope,
.catalog-export .export-presets {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.85rem;
  margin: 0 0 0.55rem;
}
.catalog-export .export-group {
  margin: 0 0 0.55rem;
  padding: 0.45rem 0 0;
  border-top: 1px solid #ead9c4;
}
.catalog-export .export-group-title {
  font-weight: 650;
  margin: 0 0 0.35rem;
}
.catalog-export .export-cols {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
  gap: 0.25rem 0.75rem;
}
.catalog-export .export-cols label,
.catalog-export .export-scope label,
.catalog-export .export-img {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  font-weight: 400;
}
.catalog-export .export-img { margin: 0.35rem 0 0.55rem; }
.catalog-systems {
  margin: 0 0 0.85rem;
  padding: 0.85rem 1rem;
}
.catalog-systems .catalog-table { margin: 0.2rem 0 0.75rem; width: 100%; }
.catalog-systems .sys-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
}
.catalog-systems #sys-code[readonly] { background: #f4efe6; }
.catalog-sys-dialog-panel {
  width: min(960px, calc(100vw - 1.2rem));
  max-height: 92vh;
  overflow: hidden;
  padding-bottom: 0.85rem;
}
.catalog-sys-dialog-body {
  overflow: auto;
  max-height: calc(92vh - 4.5rem);
  padding-right: 0.15rem;
}
.catalog-sys-dialog-panel .catalog-table { margin: 0.35rem 0 0.85rem; width: 100%; }
.catalog-sys-dialog-panel .sys-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.3rem;
}
.catalog-sys-dialog-panel #sys-code[readonly] { background: #f4efe6; }
.catalog-sys-edit-form {
  margin-top: 0.35rem;
  padding-top: 0.75rem;
  border-top: 1px solid #eadcc8;
}
.catalog-sys-edit-title {
  display: block;
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
}
.catalog-table .check { width: 2.2rem; text-align: center; padding-left: 0.3rem; padding-right: 0.3rem; }
.catalog-table .check input { cursor: pointer; }
.catalog-list {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 16rem;
}
.catalog-wrap {
  padding: 0;
  overflow: auto;
  border-radius: 10px;
  flex: 1;
  min-height: 16rem;
  max-height: none;
}
.catalog-wrap > .muted { padding: 0.85rem 1rem; }
.catalog-wrap .catalog-batch {
  position: sticky;
  top: 0;
  z-index: 5;
  padding: 0.55rem 0.75rem 0.5rem;
  margin: 0;
  border-bottom: 1px solid #e6d8c6;
  background: #fffdf8;
}
.catalog-wrap .catalog-batch-edit {
  margin: 0;
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid #e6d8c6;
}
.purchase-acct-page tr.js-acct.is-edit { cursor: pointer; }
.purchase-acct-page tr.js-acct.is-edit:hover { background: #f7f1e6; }
.purchase-acct-panel { width: min(920px, calc(100vw - 1.2rem)) !important; max-height: 86vh; }
.purchase-acct-page .catalog-sheet,
.purchase-acct-page .acct-sheet,
.purchase-acct-page .catalog-table {
  width: max-content;
  max-width: 100%;
  min-width: 0;
  table-layout: auto;
}
.purchase-acct-page .catalog-sheet th,
.purchase-acct-page .catalog-sheet td {
  padding: 0.22rem 0.32rem;
}
.purchase-acct-page .catalog-sheet .col-name {
  width: 12.5rem;
  max-width: 12.5rem;
}
.purchase-acct-page .acct-sheet .col-model {
  width: 7.5rem;
  max-width: 7.5rem;
  text-align: left;
  font-weight: 650;
  color: #2a3340;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 横向滚动时冻结：勾选 / 图片 / 产品（型号随表滚动） */
.purchase-acct-page .acct-qtab-box .acct-sheet th.check,
.purchase-acct-page .acct-qtab-box .acct-sheet td.check,
.purchase-acct-page .acct-qtab-box .acct-sheet th.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet td.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet th.col-name,
.purchase-acct-page .acct-qtab-box .acct-sheet td.col-name {
  position: sticky;
  z-index: 3;
  background: #fffdf8;
  box-shadow: 1px 0 0 #e6d8c6;
}
.purchase-acct-page .acct-qtab-box .acct-sheet thead th.check,
.purchase-acct-page .acct-qtab-box .acct-sheet thead th.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet thead th.col-name {
  z-index: 5;
  background: #f7f1e6;
}
.purchase-acct-page.is-editor .acct-qtab-box .acct-sheet th.check,
.purchase-acct-page.is-editor .acct-qtab-box .acct-sheet td.check { left: 0; }
.purchase-acct-page.is-editor .acct-qtab-box .acct-sheet th.col-img,
.purchase-acct-page.is-editor .acct-qtab-box .acct-sheet td.col-img { left: 42px; }
.purchase-acct-page.is-editor .acct-qtab-box .acct-sheet th.col-name,
.purchase-acct-page.is-editor .acct-qtab-box .acct-sheet td.col-name { left: 94px; }
.purchase-acct-page:not(.is-editor) .acct-qtab-box .acct-sheet th.col-img,
.purchase-acct-page:not(.is-editor) .acct-qtab-box .acct-sheet td.col-img { left: 0; }
.purchase-acct-page:not(.is-editor) .acct-qtab-box .acct-sheet th.col-name,
.purchase-acct-page:not(.is-editor) .acct-qtab-box .acct-sheet td.col-name { left: 52px; }
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct:nth-child(even) td.check,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct:nth-child(even) td.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct:nth-child(even) td.col-name {
  background: #f7f3ea;
}
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct:hover td.check,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct:hover td.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct:hover td.col-name {
  background: #f0e6d6;
}
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct.is-editing td.check,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct.is-editing td.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct.is-editing td.col-name {
  background: #fff4e5;
}
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct.dim td.check,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct.dim td.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet tr.js-acct.dim td.col-name {
  background: #f3efe6;
}
.purchase-acct-page .acct-qtab-box .acct-sheet th.col-name,
.purchase-acct-page .acct-qtab-box .acct-sheet td.col-name {
  box-shadow: 2px 0 4px rgba(60, 40, 20, 0.08);
}
.purchase-acct-page .acct-in {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  padding: 0.18rem 0.28rem;
  text-align: right;
  font: inherit;
  font-variant-numeric: tabular-nums;
  background: #f4f1ea;
  border-color: transparent;
}
.purchase-acct-page .acct-in.acct-money {
  min-width: 6.5rem;
  letter-spacing: 0;
  padding-left: 0.2rem;
  padding-right: 0.35rem;
}
.purchase-acct-page .acct-in.acct-rate {
  min-width: 3.2rem;
  width: 100%;
}
.purchase-acct-page .acct-in.acct-text {
  width: 100%;
  min-width: 0;
  text-align: left;
}
.purchase-acct-page .acct-in.acct-sel {
  width: 100%;
  text-align: left;
}
.purchase-acct-page .acct-sheet .col-st { width: 4.4rem; text-align: center; white-space: nowrap; }
.purchase-acct-page .acct-sheet .col-st .tag { font-size: 0.75rem; }
.purchase-acct-page .acct-sheet .col-src { width: 4.6rem; text-align: center; }
.purchase-acct-page .acct-sheet .col-brand,
.purchase-acct-page .acct-sheet .col-vendor,
.purchase-acct-page .acct-sheet .col-oem,
.purchase-acct-page .acct-sheet .col-vsku {
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.purchase-acct-page .acct-sheet .col-brand { width: 5.4rem; }
.purchase-acct-page .acct-sheet .col-vendor { width: 6.2rem; }
.purchase-acct-page .acct-sheet .col-oem { width: 6.2rem; }
.purchase-acct-page .acct-sheet .col-vsku { width: 6.4rem; }
.purchase-acct-page .acct-sheet .col-cycle,
.purchase-acct-page .acct-sheet .col-pay { width: 6.4rem; text-align: left; }
.purchase-acct-page .acct-sheet .num,
.purchase-acct-page .acct-sheet .col-bom,
.purchase-acct-page .acct-sheet .col-cost,
.purchase-acct-page .acct-sheet .col-ext,
.purchase-acct-page .acct-sheet .col-agent,
.purchase-acct-page .acct-sheet .col-list {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.purchase-acct-page .acct-sheet .col-rate { white-space: nowrap; }
.purchase-acct-page .acct-sheet .col-stock { width: 3.6rem; }
.purchase-acct-page .catalog-table .num { font-variant-numeric: tabular-nums; }
.purchase-acct-page .acct-qtab-box .acct-sheet {
  table-layout: fixed;
}
.purchase-acct-page .acct-qtab-box .acct-sheet th,
.purchase-acct-page .acct-qtab-box .acct-sheet td {
  overflow: hidden;
}
.purchase-acct-page .acct-qtab-box .acct-sheet td.num {
  overflow: visible;
}
.purchase-acct-page .acct-pct {
  display: inline-flex;
  align-items: center;
  gap: 0.12rem;
  width: 100%;
}
.purchase-acct-page .acct-pct .acct-in {
  flex: 1 1 auto;
}
.purchase-acct-page .acct-toolbar {
  align-items: center;
  gap: 0.55rem 0.75rem;
}
.purchase-acct-page .acct-tool-main,
.purchase-acct-page .acct-tool-rates {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.5rem;
}
.purchase-acct-page .acct-tool-rates {
  padding: 0.2rem 0.55rem;
  background: #f3ebe0;
  border: 1px solid #ead9c4;
  border-radius: 8px;
}
.purchase-acct-page .acct-tool-rates-label {
  font-size: 0.78rem;
  font-weight: 650;
  color: #6a5644;
  margin-right: 0.15rem;
}
.purchase-acct-page .acct-pct {
  display: inline-flex;
  align-items: center;
  gap: 0.12rem;
  width: 100%;
}
.purchase-acct-page .acct-pct .acct-in {
  flex: 1 1 auto;
}
.purchase-acct-page .acct-pct i { font-style: normal; color: var(--muted); font-size: 0.78rem; }
.purchase-acct-page .acct-in.acct-sel { width: 100%; text-align: left; }
.purchase-acct-page tr.js-acct.is-picked td { background: #f7f1e6; }
.purchase-acct-page tr.js-acct.is-editing td { background: #fff8ef; }
.purchase-acct-page tr.js-acct.is-editing td.check {
  box-shadow: inset 4px 0 0 #e67a22;
  background: #ffe8d2;
}
.purchase-acct-page tr.js-acct.is-editing {
  outline: 2px solid #e67a22;
  outline-offset: -2px;
  position: relative;
  z-index: 1;
}
.purchase-acct-page .acct-edit-mark {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.05rem 0.4rem;
  border-radius: 4px;
  font-size: 0.72rem;
  font-weight: 700;
  color: #fff;
  background: #e67a22;
  vertical-align: middle;
  white-space: nowrap;
}
.purchase-acct-page tr.js-acct.is-folded { display: none; }
.purchase-acct-page tr.js-acct-group.is-oem td {
  padding: 0.55rem 0.7rem;
  vertical-align: middle;
}
.purchase-acct-page tr.js-acct-group .group-fold {
  font-size: 1.2rem;
  min-width: 2.1rem;
  min-height: 2.1rem;
  padding: 0.35rem 0.45rem;
  margin: 0 0.35rem 0 0.1rem;
  border-radius: 6px;
  line-height: 1;
  vertical-align: middle;
}
.purchase-acct-page tr.js-acct-group .group-fold:hover,
.purchase-acct-page tr.js-acct-group .group-fold:focus-visible {
  background: #e8e0d2;
  outline: none;
}
.purchase-acct-page a.acct-oem-link {
  color: inherit;
  font-weight: 700;
  font-size: 0.98rem;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.purchase-acct-page a.acct-oem-link:hover { color: var(--accent, #c45c26); }
.purchase-acct-page .acct-oem-rfq {
  margin-left: 0.55rem;
  font-size: 0.86rem;
  padding: 0.28rem 0.7rem;
  min-height: 2rem;
  vertical-align: middle;
}
.purchase-acct-page .acct-src-tag { display: inline-block; padding: 0.05rem 0.4rem; border-radius: 4px; font-size: 0.75rem; }
.purchase-acct-page .acct-src-tag.is-buy { background: #f3ddd3; color: #7a2f1f; }
.purchase-acct-page .acct-src-tag.is-self { background: #dcead8; color: #2c5a2f; }
.purchase-acct-page .acct-src-tag.is-make { background: #d7e6f2; color: #1f4f73; }
.purchase-acct-page.is-editor .catalog-table thead th { top: 3.35rem; }
/* 表头锁定：盖过 .catalog-qtab-box 里的 position:relative；双行表头分层粘顶 */
.purchase-acct-page .catalog-wrap.card {
  overflow: visible;
}
.purchase-acct-page .acct-qtab-box .catalog-qtab-wrap {
  overflow: auto;
  max-width: 100%;
  max-height: calc(100vh - 13.5rem);
}
.purchase-acct-page.is-editor .acct-qtab-box .catalog-table thead th,
.purchase-acct-page .acct-qtab-box .catalog-table thead th {
  position: sticky !important;
  top: 0 !important;
  z-index: 4;
  box-shadow: inset 0 -1px 0 #d8c7b0;
}
.purchase-acct-page .acct-qtab-box .catalog-table thead tr.acct-group-row th {
  top: 0 !important;
  z-index: 6;
  background: #efe4d3;
}
.purchase-acct-page .acct-qtab-box .catalog-table thead tr:not(.acct-group-row) th {
  top: var(--acct-head1, 2.1rem) !important;
  z-index: 5;
  background: #f7f1e6;
}
.purchase-acct-page .acct-qtab-box .catalog-table thead th.acct-blk-bom { background: #f7e6b8; }
.purchase-acct-page .acct-qtab-box .catalog-table thead th.acct-blk-cost { background: #f3e0c4; }
.purchase-acct-page .acct-qtab-box .catalog-table thead th.acct-blk-agent { background: #d7e6f2; }
.purchase-acct-page .acct-qtab-box .catalog-table thead th.acct-blk-list { background: #dcead8; }
.purchase-acct-page .acct-qtab-box .acct-sheet thead th.check,
.purchase-acct-page .acct-qtab-box .acct-sheet thead th.col-img,
.purchase-acct-page .acct-qtab-box .acct-sheet thead th.col-name {
  z-index: 7;
}
.purchase-acct-page .acct-qtab-box .acct-sheet.is-locked {
  table-layout: fixed;
}
.purchase-acct-page .acct-qtab-box .qtab-col-grip {
  z-index: 6;
}
.purchase-acct-page .acct-batch-field {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.82rem;
  color: var(--muted);
}
.purchase-acct-page .acct-batch-field select {
  width: 7.6rem;
  padding: 0.15rem 0.3rem;
}
.purchase-acct-page .acct-sheet .col-ext-mode { width: 6.4rem; text-align: center; }
.purchase-acct-page .acct-sheet .col-ext-mode .acct-in { min-width: 6.2rem; }
.purchase-acct-page .acct-batch-field input {
  width: 5.2rem;
  padding: 0.18rem 0.35rem;
}
.purchase-acct-page tr.is-editing .acct-in:not(.acct-ro) {
  background: #fff !important;
  border: 1.5px solid #e67a22 !important;
  box-shadow: 0 0 0 1px rgba(230, 122, 34, 0.15);
  color: #2a2118;
  cursor: text;
}
.purchase-acct-page tr.is-editing select.acct-in:not(.acct-ro) {
  cursor: pointer;
}
.purchase-acct-page tr.is-editing .acct-in.acct-ro,
.purchase-acct-page .acct-in.acct-ro {
  background: rgba(255, 255, 255, 0.35) !important;
  border: 1px dashed rgba(0, 0, 0, 0.12) !important;
  color: #6b635a;
  box-shadow: none;
  cursor: default;
}
.purchase-acct-page tr.js-acct:not(.is-editing) .acct-in {
  pointer-events: none;
  opacity: 0.92;
}
.purchase-acct-page tr.js-acct:not(.is-editing) td.check .acct-row-check {
  pointer-events: auto;
  opacity: 1;
}
.purchase-acct-page .acct-cost { font-variant-numeric: tabular-nums; }
.purchase-acct-page .acct-sheet thead tr.acct-group-row th {
  text-align: center;
  font-size: 0.82rem;
  letter-spacing: 0.04em;
  border-bottom: 1px solid rgba(0,0,0,0.06);
}
.purchase-acct-page .acct-sheet th.acct-blk-bom,
.purchase-acct-page .acct-sheet td.acct-blk-bom,
.purchase-acct-page .acct-sheet th.acct-blk-bom .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-bom .acct-in {
  background: #f7e6b8;
  color: #6b4a08;
}
.purchase-acct-page .acct-sheet th.acct-blk-cost,
.purchase-acct-page .acct-sheet td.acct-blk-cost,
.purchase-acct-page .acct-sheet th.acct-blk-cost .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-cost .acct-in {
  background: #f3e0c4;
  color: #7a3410;
}
.purchase-acct-page .acct-sheet th.acct-blk-agent,
.purchase-acct-page .acct-sheet td.acct-blk-agent,
.purchase-acct-page .acct-sheet th.acct-blk-agent .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-agent .acct-in {
  background: #d7e6f2;
  color: #1f4f73;
}
.purchase-acct-page .acct-sheet th.acct-blk-list,
.purchase-acct-page .acct-sheet td.acct-blk-list,
.purchase-acct-page .acct-sheet th.acct-blk-list .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-list .acct-in {
  background: #dcead8;
  color: #2c5a2f;
}
.purchase-acct-page .acct-sheet td.acct-blk-bom .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-cost .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-agent .acct-in,
.purchase-acct-page .acct-sheet td.acct-blk-list .acct-in {
  background: transparent;
  font-weight: 700;
  color: inherit;
}
.purchase-acct-page .acct-sheet th.col-bom,
.purchase-acct-page .acct-sheet td.acct-bom {
  font-weight: 750;
}
.purchase-acct-page .acct-th-note {
  display: block;
  font-size: 0.68rem;
  font-weight: 550;
  letter-spacing: 0;
  color: inherit;
  opacity: 0.78;
  margin-top: 0.08rem;
}
.purchase-acct-page .acct-sheet th.col-cost,
.purchase-acct-page .acct-sheet td.acct-cost {
  font-weight: 750;
}
.purchase-acct-page .acct-sheet th.col-ext,
.purchase-acct-page .acct-sheet td.acct-ext {
  font-weight: 650;
}
.purchase-acct-page tr.js-acct.is-picked td.acct-blk-bom,
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-bom { background: #efd68a; }
.purchase-acct-page tr.js-acct.is-picked td.acct-blk-cost,
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-cost { background: #edcfab; }
.purchase-acct-page tr.js-acct.is-picked td.acct-blk-agent,
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-agent { background: #c5daf0; }
.purchase-acct-page tr.js-acct.is-picked td.acct-blk-list,
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-list { background: #c8e2d6; }
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-bom .acct-in:not(.acct-ro),
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-cost .acct-in:not(.acct-ro),
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-agent .acct-in:not(.acct-ro),
.purchase-acct-page tr.js-acct.is-editing td.acct-blk-list .acct-in:not(.acct-ro) {
  background: #fffef8 !important;
}
.rfq-link-box { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.6rem; margin-bottom: 0.85rem; }
.rfq-link-box .field { flex: 1; min-width: 16rem; }
.rfq-link-box input { width: 100%; }
.rfq-public { background: #f6f1e8; margin: 0; }
.rfq-public .rfq-wrap { max-width: 1100px; margin: 0 auto; padding: 1.2rem 1rem 2rem; }
.rfq-public .rfq-head { margin-bottom: 0.9rem; }
.rfq-public .rfq-head small { letter-spacing: 0.12em; color: #8a7a68; }
.rfq-public .rfq-head h1 { margin: 0.15rem 0 0.35rem; font-size: 1.35rem; }
.rfq-public .rfq-vendor { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: 0.6rem; }
.rfq-public .rfq-table-wrap { overflow: auto; margin: 0.7rem 0; }
.rfq-public table input { width: 7rem; max-width: 100%; padding: 0.2rem 0.3rem; }
.rfq-public .btn { margin-top: 0.4rem; }
body.catalog-dialog-open { overflow: hidden; }
.catalog-dialog {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: stretch;
  justify-content: center;
  padding: 2vh 0.7rem 1.2vh;
}
.catalog-dialog[hidden] { display: none; }
.catalog-dialog-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(32, 24, 16, 0.45);
}
.catalog-dialog-panel {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  width: min(1320px, calc(100vw - 1.2rem));
  max-height: 96vh;
  overflow: hidden;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(40, 28, 16, 0.22);
  padding: 0.7rem 0.95rem 0;
}
.catalog-dialog-x {
  position: sticky;
  top: 0;
  float: right;
  z-index: 3;
  width: 2rem;
  height: 2rem;
  margin: -0.2rem -0.2rem 0 0.4rem;
  border: 0;
  border-radius: 8px;
  background: transparent;
  font-size: 1.4rem;
  line-height: 1;
  cursor: pointer;
  color: var(--muted);
}
.catalog-dialog-x:hover { background: #f4eee4; color: var(--navy); }
.catalog-sheet {
  table-layout: fixed;
  width: 100%;
  min-width: 1180px;
  font-size: 0.8rem;
  border-collapse: collapse;
  border-spacing: 0;
}
.catalog-sheet th,
.catalog-sheet td {
  vertical-align: middle;
  padding: 0.38rem 0.55rem;
  border: 1px solid #eadcc8;
  background: #fff;
}
.catalog-sheet thead th {
  white-space: nowrap;
  letter-spacing: 0.02em;
  font-size: 0.75rem;
  font-weight: 700;
  color: #5a4a3a;
  text-align: center;
  background: #f3eadc;
}
.catalog-sheet .col-img { width: 52px; text-align: center; padding: 0.22rem; }
.catalog-sheet .col-ord {
  width: 3.4rem;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  color: #8a7460;
  font-variant-numeric: tabular-nums;
}
.catalog-sheet .prod-drag {
  display: inline-block;
  cursor: grab;
  touch-action: none;
  user-select: none;
  padding: 0.35rem 0.1rem;
  color: #9a8168;
  vertical-align: middle;
}
.catalog-sheet .prod-drag:active { cursor: grabbing; }
.catalog-sheet .prod-ord-n {
  display: inline-block;
  min-width: 1.1rem;
  font-size: 0.72rem;
  vertical-align: middle;
}
.catalog-sheet tbody.is-row-sorting {
  user-select: none;
  cursor: grabbing;
}
.catalog-sheet tr.js-prod.is-dragging td {
  opacity: 0.5;
  background: #f3ebe0;
}
.catalog-ord-hint {
  margin-left: 0.6rem;
  font-size: 0.72rem;
}
.catalog-sheet .col-img .catalog-thumb {
  width: 40px;
  height: 40px;
  object-fit: contain;
  display: block;
  margin: 0 auto;
  background: #fff;
  border: 1px solid #eadcc8;
  border-radius: 4px;
}
.catalog-sheet .col-img .catalog-thumb-empty {
  display: block;
  width: 40px;
  height: 40px;
  margin: 0 auto;
  background: #f6f0e6;
  border: 1px dashed #e0d2be;
  border-radius: 4px;
}
.catalog-sheet .col-name { width: 16%; text-align: left; }
.catalog-sheet .col-st {
  width: 5.2rem;
  min-width: 5.2rem;
  text-align: center;
  white-space: nowrap;
}
.catalog-sheet .col-st .tag,
.catalog-name .tag.prod-st {
  font-size: 0.72rem;
  vertical-align: middle;
  margin-left: 0.35rem;
  font-weight: 650;
}
.catalog-name .tag.prod-st { display: inline-block; }
.catalog-sheet .col-tier { width: 7.5%; }
.catalog-sheet .col-brief { width: 20%; min-width: 12rem; max-width: 28rem; }
.catalog-sheet .col-detail { width: 22%; }
.catalog-sheet .col-brand { width: 7%; }
.catalog-sheet .col-model { width: 9%; }
.catalog-sheet .col-unit { width: 3.4rem; text-align: center; white-space: nowrap; }
.catalog-sheet .col-price { width: 6.2rem; }
.catalog-sheet .col-bom { width: 5.5rem; font-variant-numeric: tabular-nums; }
.catalog-qtab-box {
  position: relative;
  margin: 0;
}
.catalog-qtab-wrap {
  overflow: auto;
  max-width: 100%;
}
.catalog-qtab-box .catalog-sheet {
  min-width: 0;
  width: max-content;
}
.catalog-qtab-box .qtab-col-grip {
  position: absolute;
  top: 0;
  right: -4px;
  width: 8px;
  height: 100%;
  cursor: col-resize;
  z-index: 5;
}
.catalog-qtab-box .catalog-sheet thead th {
  position: relative;
}
.catalog-qtab-box.is-resizing {
  user-select: none;
}
.catalog-sheet .col-brief,
.catalog-sheet .col-detail,
.catalog-sheet .col-brand,
.catalog-sheet .col-model {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #2a3340;
  font-weight: 600;
}
.catalog-sheet .col-name .catalog-name {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 650;
  line-height: 1.3;
  color: var(--navy);
}
.catalog-sheet .nowrap { font-variant-numeric: tabular-nums; }
.catalog-table { min-width: 0; width: 100%; }
.catalog-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  box-shadow: inset 0 -1px 0 #d8c7b0;
}
.catalog-table tr.group td {
  background: #efe4d3;
  font-weight: 700;
  color: var(--navy);
  padding: 0.4rem 0.55rem;
  border-color: #e0d0ba;
  cursor: pointer;
  user-select: none;
  text-align: left;
}
.catalog-table .group-fold {
  border: 0;
  background: transparent;
  padding: 0 0.2rem;
  margin: 0 0.15rem 0 0;
  color: inherit;
  cursor: pointer;
  font-size: 0.85rem;
  line-height: 1;
  display: inline-block;
  transition: transform 0.15s ease;
}
.catalog-table tr.group.is-closed .group-fold { transform: rotate(-90deg); }
.catalog-table tr.js-prod.is-folded { display: none; }
.catalog-table tr.js-prod { cursor: pointer; }
.catalog-table tr.js-prod:nth-child(even) td { background: #e8eef4; color: #14202c; }
.catalog-table tr.js-prod:hover td { background: #d4e4ef; color: #14202c; }
.catalog-table tr.js-prod.on td { background: #1e3a4c; color: #fff; }
.catalog-table tr.js-prod.on .catalog-name,
.catalog-table tr.js-prod.on a { color: #fff; }
.catalog-table tr.js-prod.dim td { color: #3d4654; background: #f3efe6; }
.tier-mini {
  display: inline-block;
  margin: 0.08rem 0.12rem 0.08rem 0;
  padding: 0.04rem 0.32rem;
  border-radius: 3px;
  background: #efe4d2;
  color: #6a4e2e;
  font-size: 0.72rem;
  font-weight: 650;
  line-height: 1.35;
  white-space: nowrap;
}
.catalog-sku { font-size: 0.72rem; display: block; margin-top: 0.06rem; color: #8a7b6a; }
.catalog-spec {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-size: 0.78rem;
  line-height: 1.35;
  margin-top: 0.12rem;
  font-weight: 400;
}
.catalog-param {
  max-width: none;
  font-size: 0.8rem;
  line-height: 1.4;
  color: #5c5348;
  white-space: pre-wrap;
  word-break: break-word;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.catalog-detail { max-width: none; }
.catalog-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  font-weight: 650;
  line-height: 1.3;
}
.catalog-cell {
  display: grid;
  grid-template-columns: 36px minmax(0, 1fr);
  gap: 0.45rem;
  align-items: center;
}
.catalog-thumb-slot {
  width: 36px;
  height: 36px;
  margin: 0;
  border-radius: 6px;
  background: #f4eee4;
  border: 1px solid var(--line);
  overflow: hidden;
  display: block;
  flex-shrink: 0;
}
.catalog-thumb {
  width: 36px;
  height: 36px;
  object-fit: contain;
  background: #fff;
  display: block;
}
.catalog-cell-txt { min-width: 0; }
.catalog-price-col, .catalog-table .num { width: 6.2rem; }
.catalog-table .num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  font-weight: 650;
}
.catalog-side {
  position: static;
  max-height: none;
  overflow: visible;
  padding: 0;
}
form.stack.catalog-side {
  display: flex;
  flex-direction: column;
  max-width: none;
  gap: 0.4rem;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.prod-form-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding-right: 0.15rem;
}
.catalog-side h2 { font-size: 1.12rem; margin: 0; }
.catalog-side .row { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.catalog-side .row.prod-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.catalog-side .row.prod-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.catalog-side .row.prod-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.catalog-side .prod-span-2 { grid-column: span 2; }
.catalog-side .prod-span-full { display: block; margin: 0.15rem 0 0.45rem; }
.catalog-side .field input,
.catalog-side .field select,
.catalog-side .field textarea { font-size: 0.92rem; }
.catalog-side input[name="cost"][readonly],
.catalog-side input[readonly] {
  background: #f4efe6;
  cursor: default;
}
.catalog-side textarea { min-height: 3.2rem; resize: vertical; }
.prod-edit-bar {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 2.2rem 0.35rem 0;
}
.prod-edit-bar .muted { margin: 0.15rem 0 0; }
.prod-sec {
  margin: 0 0 0.45rem;
  padding: 0.5rem 0.65rem 0.55rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}
.prod-sec h3 {
  margin: 0 0 0.35rem;
  font-size: 0.8rem;
  font-weight: 650;
  color: var(--navy);
}
.prod-sec h3.prod-sec-sub {
  margin: 0.55rem 0 0.3rem;
  padding-top: 0.45rem;
  border-top: 1px dashed #e6d8c6;
}
.prod-sec .field { margin-top: 0.4rem; }
.prod-sec .row + .field { margin-top: 0.4rem; }
.prod-margin-line {
  align-self: end;
  margin: 0 0 0.15rem;
  padding-bottom: 0.35rem;
}
.tier-picks {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  margin: 0.2rem 0 0.35rem;
}
.link-sys-picks { margin-top: 0.15rem; }
.field-lab { display: block; font-size: 0.86rem; font-weight: 650; color: #4a3f34; margin-bottom: 0.15rem; }
.catalog-batch .batch-link-sys {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  font-size: 0.86rem;
}
.catalog-batch .batch-link-sys select { max-width: 9rem; }
.tier-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  font-weight: 500;
  font-size: 0.88rem;
  cursor: pointer;
}
.prod-edit-bar-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.25rem;
}
.prod-enable { margin: 0; }
.file-btn.slim {
  padding: 0.22rem 0.6rem;
  font-size: 0.8rem;
}
button.ghost.slim { padding: 0.18rem 0.55rem; font-size: 0.8rem; }
.file-slot-list { display: flex; flex-direction: column; gap: 0.35rem; margin: 0.25rem 0; }
.file-slot-row {
  display: grid;
  grid-template-columns: 7.2rem minmax(0, 1fr) auto;
  gap: 0.4rem;
  align-items: center;
}
.file-slot-lab { font-size: 0.86rem; color: #4a3f34; font-weight: 650; }
.file-slot-row .catalog-files { margin: 0; min-height: 1.6rem; }
.prod-head {
  display: grid;
  grid-template-columns: 100px minmax(0, 1fr);
  gap: 0.85rem;
  align-items: start;
  margin: 0;
}
.prod-head-fields .row { margin-top: 0.55rem; }
.prod-head-fields .row:first-child { margin-top: 0; }
.prod-photo { margin: 0; }
.prod-photo-card { display: block; cursor: pointer; margin: 0; }
.prod-photo-frame {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100px;
  height: 100px;
  background: #faf7f2;
  border: 1px dashed #d7ccbb;
  border-radius: 10px;
  overflow: hidden;
}
.prod-photo-frame img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  background: #fff;
}
.prod-photo-empty { color: var(--muted); font-size: 0.78rem; text-align: center; padding: 0.3rem; }
.prod-photo #prod-photo-hint { margin: 0.3rem 0 0; font-size: 0.72rem; line-height: 1.3; }
.prod-photo-btn {
  display: block;
  width: 100px;
  margin-top: 0.4rem;
  padding: 0.28rem 0.4rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  font-size: 0.8rem;
  font-weight: 650;
  cursor: pointer;
}
.prod-photo-card:hover .prod-photo-frame,
.prod-photo-btn:hover { border-color: var(--brand); color: var(--brand-dark); }
.prod-view-head { margin: 0 0 0.75rem; }
.prod-photo-view-wrap {
  width: 140px;
  height: 140px;
  margin: 0;
  background: #faf7f2;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}
.prod-photo-view {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  background: #fff;
}
.file-btns {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr));
  gap: 0.45rem 0.7rem;
  margin: 0.45rem 0 0.25rem;
}
.file-slot {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.18rem;
  min-width: 0;
}
.file-remark {
  margin: 0.15rem 0 0;
  font-size: 0.75rem;
  line-height: 1.4;
}
.prod-file-group .file-remark { color: #6b6258; }
.prod-sec-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin: 0 2.2rem 0.4rem 0;
  padding-bottom: 0.35rem;
  border-bottom: 1px solid var(--line);
}
.prod-sec-nav a {
  display: inline-flex;
  align-items: center;
  min-height: 2.35rem;
  padding: 0.4rem 0.95rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  color: var(--navy);
  text-decoration: none;
  font-size: 1rem;
  font-weight: 700;
  background: #fff;
}
.prod-sec-nav a.on,
.prod-sec-nav a:hover { background: #f4eee4; border-color: #e0a06a; }
.prod-sec { scroll-margin-top: 0.4rem; }
.prod-file-wrap {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.5rem;
}
@media (max-width: 900px) {
  .prod-file-wrap { grid-template-columns: 1fr; }
}
.file-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.15rem;
  padding: 0.12rem 0.2rem 0.12rem 0.15rem;
  border: 1px solid #cfe3d6;
  border-radius: 8px;
  background: #f4faf6;
}
.file-chip-name {
  display: inline-block;
  padding: 0.22rem 0.55rem;
  border: 0;
  background: transparent;
  color: var(--navy);
  font-weight: 650;
  font-size: 0.86rem;
  text-decoration: none;
  cursor: pointer;
}
.file-chip-name:hover { color: var(--brand-dark); }
.file-chip-x {
  width: 1.45rem;
  height: 1.45rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #8a6a58;
  font-size: 1.05rem;
  line-height: 1;
  cursor: pointer;
}
.file-chip-x:hover { background: #f8e8e4; color: var(--err); }
.doc-add-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: 0.3rem 0;
}
.doc-add-row input[name="doc_title"] { min-width: 12rem; flex: 1; }
.file-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.38rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  font-size: 0.86rem;
  font-weight: 650;
}
.file-btn:hover { border-color: var(--brand); color: var(--brand-dark); }
.file-btn.has-file { border-color: #cfe3d6; background: #f4faf6; }
.file-btn .file-name {
  font-weight: 400;
  color: var(--muted);
  max-width: 9rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.catalog-side .form-actions {
  flex: 0 0 auto;
  background: var(--paper);
  padding: 0.55rem 0 0.7rem;
  margin-top: 0;
  border-top: 1px solid var(--line);
  z-index: 2;
}
.catalog-pending { padding: 0.55rem 0.85rem; margin: 0 0 0.75rem; }
.catalog-sec {
  margin: 0.35rem 0 0;
  padding-top: 0.45rem;
  border-top: 1px solid var(--line);
  font-size: 0.82rem;
  color: var(--navy);
}
.catalog-view-empty { margin: 0; }
.catalog-kv {
  display: grid;
  grid-template-columns: 6.2rem minmax(0, 1fr);
  gap: 0.35rem 1rem;
  font-size: 0.98rem;
}
.catalog-kv dt { color: var(--muted, #7a6a58); }
.catalog-kv dd { margin: 0; word-break: break-word; }
.catalog-pre { white-space: pre-wrap; margin: 0.2rem 0 0.5rem; font-size: 0.88rem; }
.catalog-files { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.quote-spec {
  max-width: 22rem;
  font-size: 0.8rem;
  color: var(--muted);
  white-space: pre-wrap;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.qty-in { width: 5.6rem; }
.quote-terms .row { align-items: end; }
.quote-term-grid { display: flex; flex-wrap: wrap; gap: 0.75rem 1rem; align-items: end; }
.quote-term-grid .field { min-width: 8.5rem; }
.quote-term-grid .field input,
.quote-term-grid .field select { width: 100%; }
.field-agent {
  padding: 0.35rem 0.55rem 0.45rem;
  border: 1.5px solid #c45c26;
  border-radius: 10px;
  background: #fff6ea;
  color: #8a3d12;
  font-weight: 700;
}
.field-agent input {
  border-color: #e0a06a;
  background: #fff;
  font-weight: 700;
  color: #9a3412;
}
.field-agent input:focus {
  outline: 2px solid #c45c26;
  outline-offset: 1px;
}
.quote-table th.col-agent,
.quote-sum th.col-agent {
  background: #f8e6d2;
  color: #8a3d12;
}
.quote-table td.col-agent,
.quote-sum td.col-agent {
  background: #fff8f0;
  font-weight: 650;
  color: #9a3412;
}
.quote-sheet { overflow-x: auto; }
.quote-table { width: 100%; }
.quote-table th.num, .quote-table td.num { text-align: right; white-space: nowrap; }
.quote-table td .qty-in { width: 6rem; }
.quote-sum th, .quote-sum td { padding: 0.4rem 0.7rem; }
.margin-split {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: 0.85rem;
  margin: 0.6rem 0 0.2rem;
}
.margin-card h2 { margin: 0 0 0.25rem; font-size: 1.05rem; }
.margin-card .muted { margin: 0 0 0.55rem; }
.margin-card.margin-agent {
  padding: 0.7rem 0.8rem;
  border: 1.5px solid #e0a06a;
  border-radius: 10px;
  background: #fff8f0;
}
.margin-card.dim { opacity: 0.62; }
.profit-agent {
  background: #fff8f0;
  border-color: #e0a06a;
}
.payroll-table input[type="number"] {
  width: 8.5rem;
  text-align: right;
}
.payroll-table .js-pay-rate { color: #9a3412; }
.hand { font-style: normal; font-size: 0.7rem; color: #b45309; margin-left: 0.2rem; }
.nowrap { white-space: nowrap; }
.quote-add { margin-top: 0.8rem; align-items: end; }
.quote-add select { min-width: 16rem; max-width: 28rem; }
@media (max-width: 1100px) {
  .catalog-side { position: static; }
  .catalog-wrap { max-height: none; }
  .prod-head { grid-template-columns: 100px 1fr; }
  .catalog-dialog { padding: 1vh 0.35rem 0.6vh; }
  .catalog-dialog-panel { max-height: 98vh; padding: 0.55rem 0.6rem 0; }
  .catalog-side .row.prod-grid-4,
  .catalog-side .row.prod-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-side .prod-span-2 { grid-column: span 2; }
}
.series-box { margin: 0; padding: 0.4rem 0.55rem 0.45rem; }
.series-box-head {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.35rem 0.65rem;
  margin-bottom: 0.45rem;
}
.series-box-head strong { font-size: 0.95rem; }
.series-box-head .ghost { margin-left: auto; }
.series-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(6.6rem, 1fr));
  gap: 0.4rem;
}
.series-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  min-height: 5.1rem;
  aspect-ratio: 1;
  padding: 0.28rem 0.2rem 0.22rem;
  border: 1px solid transparent;
  border-radius: 4px;
  cursor: pointer;
  font-size: 1.02rem;
  font-weight: 800;
  line-height: 1.2;
  text-align: center;
  color: inherit;
  text-decoration: none;
}
a.series-tile:hover { color: inherit; text-decoration: none; }
.series-tile .sys-chip-name {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  max-height: 2.6em;
  word-break: keep-all;
  overflow-wrap: break-word;
  line-break: strict;
  font-size: 0.92rem;
}
.series-tile b {
  display: block;
  margin: 0.18rem 0 0;
  min-width: 1.4em;
  padding: 0.02rem 0.28rem;
  border-radius: 3px;
  background: rgba(255,255,255,0.55);
  font-size: 0.76rem;
  font-weight: 800;
}
.series-tile { position: relative; }
.series-tile:not(.on) { opacity: 0.78; filter: saturate(0.72); }
.series-tile:hover { filter: brightness(0.97); opacity: 1; }
.series-tile.on {
  color: #fff;
  opacity: 1;
  filter: none;
  border-color: rgba(20, 14, 8, 0.22);
  box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.38), 0 3px 10px rgba(40, 28, 16, 0.22);
}
.series-tile.on::after {
  content: "✓";
  position: absolute;
  top: 0.2rem;
  right: 0.2rem;
  width: 1.05rem;
  height: 1.05rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: #fff;
  color: #1a1510;
  font-size: 0.72rem;
  font-weight: 900;
  line-height: 1;
  box-shadow: 0 1px 2px rgba(20, 14, 8, 0.2);
}
.series-tile.on b { background: rgba(255,255,255,0.22); color: #fff; }
.series-tile.draft { opacity: 0.78; box-shadow: inset 0 0 0 1px #c9a06a; }
.series-tile.draft b { color: #8a5a2b; background: #f6ead6; }
.series-empty { margin: 0.15rem 0; }
.series-dialog-panel { width: min(1100px, calc(100vw - 1.2rem)); }
.series-prod-scroll { overflow: auto; max-height: 36vh; }
.series-prod-table { min-width: 920px; }
.series-prod-table .col-name {
  width: 26%;
  min-width: 14rem;
  max-width: none;
  white-space: normal;
}
.series-prod-table .col-name .catalog-name {
  display: block;
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
  word-break: break-word;
  line-height: 1.35;
}
.series-prod-table tbody td {
  color: #14202c;
  background: #fffdf8;
  font-weight: 600;
}
.series-prod-table tbody tr:nth-child(even) td { background: #e8eef4; }
.series-prod-table tbody tr:hover td { background: #d4e4ef; }
.series-prod-table tbody tr.dim td { color: #3d4654; background: #f3efe6; }
.series-form { margin: 0; }
.series-pool-bar {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0 0 0.45rem;
}
.series-pool-bar input[type="search"] {
  flex: 1;
  min-width: 12rem;
}
.series-pool-bar .btn { flex: 0 0 auto; }
.series-del {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem 1rem;
  margin-top: 0.45rem;
  padding-top: 0.4rem;
  border-top: 1px dashed #e6d8c6;
}
.series-del-opt {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-size: 0.82rem;
  color: #7a4a28;
}
@media (max-width: 720px) {
  .series-tiles { grid-template-columns: repeat(auto-fill, minmax(4.6rem, 1fr)); }
}
.series-tags {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  margin-left: 0.5rem;
  font-weight: 400;
}
.series-tags a { text-decoration: none; }
.sol-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 0.9rem;
  margin-top: 0.9rem;
}
.sol-card {
  position: relative;
  display: flex;
  flex-direction: column;
  padding: 0;
  border: 1px solid #e8dcc8;
  border-radius: 12px;
  background: #fff;
  overflow: hidden;
  border-left: 4px solid #d9cbb6;
}
.sol-card.sol-st-pub { border-left-color: #3d9b6e; }
.sol-card.sol-st-wait { border-left-color: #c48a2a; }
.sol-card.sol-st-rev { border-left-color: #c45a2a; }
.sol-card.sol-st-draft { border-left-color: #b8aea0; }
.sol-card:hover { border-color: #c9a882; box-shadow: 0 6px 18px rgba(90, 70, 40, 0.06); }
.sol-card a {
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
  text-decoration: none;
  color: inherit;
  flex: 1;
  padding: 0.85rem 1rem 0.7rem;
}
.sol-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.sol-code {
  font-family: ui-monospace, Consolas, monospace;
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #6b4a28;
}
.sol-card strong { font-size: 1.02rem; line-height: 1.35; }
.sol-hosp { font-size: 0.78rem; color: #8a7048; letter-spacing: 0.02em; }
.sol-remark { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sol-scale { font-size: 0.82rem; color: #6b5a48; }
.sol-sys { display: flex; flex-wrap: wrap; gap: 0.28rem; margin-top: 0.2rem; }
.sol-sys i {
  font-style: normal;
  font-size: 0.72rem;
  background: #f6efe4;
  color: #6b5a48;
  padding: 0.12rem 0.4rem;
  border-radius: 999px;
}
.sol-card-ops {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.15rem 0.75rem;
  padding: 0.45rem 1rem 0.55rem;
  border-top: 1px solid #f0e8dc;
  background: #fbf8f3;
  font-size: 0.82rem;
}
.sol-card-ops a { color: #6b4a28; text-decoration: none; }
.sol-ops-group { color: var(--muted); }
.sol-ops-group a { margin-left: 0.25rem; }
.sol-docs {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 0.85rem;
  margin: 0 0 1rem;
}
.sol-doc {
  background: #fff;
  border: 1px solid #e8dcc8;
  border-radius: 12px;
  padding: 1rem 1.05rem 0.9rem;
}
.sol-doc.off { opacity: 0.72; background: #fbf8f3; }
.sol-doc h3 { margin: 0 0 0.35rem; }
.sol-doc p { margin: 0 0 0.7rem; color: var(--muted); font-size: 0.86rem; }
.sol-doc-ops { display: flex; gap: 0.7rem; }
.sol-doc-ops a { font-weight: 650; text-decoration: none; }
.sol-doc-ops a:hover { text-decoration: underline; }
.sol-upload { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.75rem; }
.sol-filebtn {
  position: relative;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  margin: 0;
}
.sol-filebtn input[type=file] {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
  font-size: 0;
}
.sol-docs-hint { margin-top: 0.2rem; }
.sol-doc-group { margin-bottom: 1.15rem; }
.sol-doc-group header {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0 0 0.55rem;
}
.sol-doc-group h2 { margin: 0; font-size: 1.02rem; }
.sol-doc-group header p { margin: 0; color: var(--muted); font-size: 0.86rem; }
.sol-media { padding: 0.6rem; background: #2a2e33; }
.sol-media video, .sol-media img { display: block; width: 100%; max-height: min(80vh, 52rem); object-fit: contain; background: #111; }
.sol-preview-doc { line-height: 1.65; }
.sol-preview-doc h3 { margin: 1rem 0 0.4rem; }
.sol-preview-doc p { margin: 0.35rem 0; }
.sol-preview-table { width: 100%; margin: 0.6rem 0 1rem; }
.sol-viewer {
  background: #3d4248;
  border: 1px solid #2f3338;
  border-radius: 12px;
  overflow: hidden;
  margin-bottom: 1rem;
}
.sol-viewer:fullscreen { background: #1c1f22; border-radius: 0; }
.sol-viewer-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.45rem;
  padding: 0.5rem 0.7rem;
  background: #2a2e33;
  color: #e8eef2;
}
.sol-viewer-bar button {
  background: #3f4650;
  color: #fff;
  padding: 0.32rem 0.65rem;
  font-size: 0.82rem;
}
.sol-viewer-bar button:hover { background: #516070; }
.sol-viewer-page { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.85rem; }
.sol-viewer-page input {
  width: 3.2rem;
  padding: 0.28rem 0.35rem;
  text-align: center;
  background: #1f2328;
  color: #fff;
  border-color: #4a515a;
}
.sol-viewer-sep { width: 1px; height: 1.1rem; background: #555c64; margin: 0 0.25rem; }
.sol-viewer-bar [data-zoom] { min-width: 3rem; text-align: center; font-size: 0.82rem; color: #c9d4dc; }
.sol-viewer[data-kind="docx"] .sol-page-only { display: none; }
.sol-viewer-stage {
  min-height: 28rem;
  max-height: min(82vh, 58rem);
  overflow: auto;
  display: flex;
  justify-content: center;
  padding: 0.85rem;
}
.sol-viewer:fullscreen .sol-viewer-stage { max-height: none; height: calc(100vh - 3rem); }
.sol-pdf-wrap { position: relative; display: inline-block; line-height: 0; }
.sol-pdf-wrap.pin-on { cursor: crosshair; }
.sol-pins { position: absolute; inset: 0; }
.sol-pin {
  position: absolute;
  width: 1.4rem;
  height: 1.4rem;
  border: 0;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  background: #c45c26;
  color: #fff;
  font-size: 0.72rem;
  padding: 0;
  line-height: 1.4rem;
  box-shadow: 0 2px 8px rgba(0,0,0,0.25);
  z-index: 2;
}
.sol-read {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 20.5rem;
  gap: 1rem;
  align-items: start;
}
.sol-notes {
  background: #fff;
  border: 1px solid #e8dcc8;
  border-radius: 12px;
  padding: 0.85rem 0.9rem;
  position: sticky;
  top: 0.7rem;
  max-height: calc(100vh - 5.5rem);
  overflow: auto;
}
.sol-notes header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.5rem;
  margin-bottom: 0.35rem;
}
.sol-notes h2 { margin: 0; font-size: 1rem; }
.sol-notes-tip { font-size: 0.8rem; margin: 0 0 0.55rem; }
.sol-notes-list { display: grid; gap: 0.55rem; margin-bottom: 0.75rem; }
.sol-note-item, .sol-note-card {
  border: 1px solid #eee4d4;
  border-radius: 8px;
  padding: 0.55rem 0.65rem;
  background: #fbf8f3;
}
.sol-note-item.st-待改, .sol-note-card.st-待改 { border-color: #e8c48a; }
.sol-note-item.st-已改, .sol-note-card.st-已改 { opacity: 0.72; }
.sol-note-meta { margin: 0 0 0.3rem; font-size: 0.78rem; color: var(--muted); display: flex; flex-wrap: wrap; gap: 0.35rem 0.7rem; }
.sol-note-quote {
  margin: 0 0 0.35rem;
  padding: 0.25rem 0.4rem;
  background: #fff;
  border-left: 3px solid #c45c26;
  font-size: 0.82rem;
  color: var(--muted);
}
.sol-note-ops { display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0.4rem 0 0; }
.sol-note-ops button { padding: 0.18rem 0.45rem; font-size: 0.75rem; }
.sol-notes-form textarea { width: 100%; min-height: 5.5rem; }
.sol-notes [data-pin-toggle].on { background: #c45c26; color: #fff; border-color: #c45c26; }
.sol-note-board { display: grid; gap: 0.65rem; }
.sol-note-st { margin: 0.35rem 0 0; font-size: 0.78rem; color: #8a5a12; }
@media (max-width: 980px) {
  .sol-read { grid-template-columns: 1fr; }
  .sol-notes { position: static; max-height: none; }
}
.sol-pdf-canvas { display: block; box-shadow: 0 8px 28px rgba(0,0,0,0.35); background: #fff; }
.sol-docx-host { width: 100%; }
.sol-docx-host .docx-wrapper {
  background: transparent !important;
  padding: 0 !important;
}
.sol-docx-host .docx-wrapper > section.docx {
  box-shadow: 0 8px 28px rgba(0,0,0,0.28);
  margin: 0 auto 1rem !important;
}
.sol-viewer-err { color: #f3d2c7; padding: 2rem 1rem; }
.sol-slides { display: grid; gap: 0.75rem; }
.sol-slide h3 { margin: 0 0 0.45rem; font-size: 0.95rem; color: #8a7048; }
.sol-slide p { margin: 0.2rem 0; }
.sol-card .sol-del { margin: 0; margin-left: auto; position: relative; z-index: 2; }
.sol-card .sol-del button { padding: 0.18rem 0.45rem; font-size: 0.78rem; }
.sol-toolbar { align-items: end; }
.sol-toolbar .form-actions { margin: 0; }
.sol-toolbar .field.grow { flex: 1 1 16rem; min-width: 12rem; }
.sol-page .sol-search { margin: 0; }
.sol-page .top { align-items: flex-start; }
.sol-ident h1 { margin: 0.15rem 0 0.25rem; }
.sol-ident-row { display: flex; align-items: center; gap: 0.5rem; margin: 0; }
.sol-meta { display: flex; flex-wrap: wrap; gap: 0.2rem 0.85rem; margin: 0; color: var(--muted); font-size: 0.86rem; }
.sol-acts { justify-content: flex-end; max-width: 28rem; }
.sol-acts-export {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  padding: 0.1rem;
}
.sol-note {
  margin: 0 0 0.85rem;
  padding: 0.5rem 0.75rem;
  border-radius: 8px;
  font-size: 0.86rem;
}
.sol-note.ok { background: #e8f6ee; color: #1f6b43; }
.sol-note.warn { background: #fff6e5; color: #8a5a12; }
.sol-note.gold, .quote-gold-tip {
  background: #f6ebdf;
  color: #5a3214;
  border: 1px solid #d7b08a;
  font-weight: 650;
}
.sol-note.gold b { margin-right: 0.35rem; }
.sol-new summary, .sol-fold summary {
  cursor: pointer;
  font-weight: 650;
  list-style: none;
}
.sol-new summary::-webkit-details-marker,
.sol-fold summary::-webkit-details-marker { display: none; }
.sol-new[open] summary, .sol-fold[open] summary { margin-bottom: 0.75rem; }
.sol-terms-sum {
  display: flex;
  align-items: baseline;
  gap: 0.75rem 1.1rem;
  flex-wrap: wrap;
  cursor: pointer;
  list-style: none;
}
.sol-terms-sum::-webkit-details-marker { display: none; }
.sol-terms-sum strong { font-size: 1.05rem; }
.sol-terms-sum .muted { flex: 1 1 16rem; margin: 0; }
.sol-terms-sum i { font-style: normal; font-size: 0.8rem; color: var(--muted); }
.sol-terms[open] .sol-terms-sum { margin-bottom: 0.75rem; }
.sol-terms[open] .sol-terms-sum i { display: none; }
.sol-empty-quote { text-align: center; padding: 1.4rem 1rem; }
.sol-empty-quote p { margin: 0 0 0.45rem; }
.sol-qspec { max-width: 16rem; font-size: 0.8rem; }
.sol-qspec .spec-link { -webkit-line-clamp: 2; }
.sol-sub td {
  background: #faf6ef;
  font-size: 0.8rem;
  color: #6b4a28;
  font-weight: 650;
}
.sol-quote-bar {
  position: sticky;
  top: 0;
  z-index: 6;
}
.sol-quote-foot {
  position: sticky;
  bottom: 0;
  z-index: 5;
  background: #fffdf8;
  box-shadow: 0 -6px 16px rgba(40, 30, 16, 0.06);
}
.sol-terms-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}
.sol-terms-head h2 { margin: 0; font-size: 1.05rem; }
.sol-terms-head .muted { margin: 0; }
.sol-terms-form { display: grid; gap: 0.85rem; }
.sol-terms-sec {
  margin: 0;
  padding: 0.7rem 0.85rem 0.85rem;
  border: 1px solid #eee4d4;
  border-radius: 10px;
  background: #fbf8f3;
}
.sol-terms-sec legend {
  padding: 0 0.35rem;
  font-size: 0.78rem;
  font-weight: 650;
  letter-spacing: 0.06em;
  color: #6b4a28;
}
.sol-terms-grid {
  display: grid;
  gap: 0.7rem 0.85rem;
  align-items: end;
}
.sol-terms-info { grid-template-columns: minmax(9rem, 1fr) minmax(12rem, 1.4fr) minmax(12rem, 2fr); }
.sol-terms-scale { grid-template-columns: repeat(3, minmax(6.5rem, 10rem)); }
.sol-terms-deal { grid-template-columns: repeat(5, minmax(7.5rem, 1fr)); }
.sol-terms-form .field input,
.sol-terms-form .field select { width: 100%; }
.sol-check {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 2.35rem;
  padding: 0 0.65rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  font-size: 0.9rem;
}
.sol-terms-save { margin: 0; }
@media (max-width: 900px) {
  .sol-terms-info,
  .sol-terms-deal { grid-template-columns: 1fr 1fr; }
  .sol-terms-wide { grid-column: 1 / -1; }
  .sol-terms-scale { grid-template-columns: repeat(3, 1fr); }
}
.sol-scale-row { align-items: end; }
.sol-scale-row .form-actions { margin: 0; }
.sol-empty { margin-top: 1rem; }
.sol-sku-block { padding: 0.7rem 0.85rem 0.85rem; }
.sol-sku-block legend { font-size: 0.95rem; padding: 0 0.25rem; }
.sol-sku-bar { gap: 0.6rem 0.8rem; align-items: end; margin: 0 0 0.45rem; }
.sol-sku-bar .field { min-width: 8rem; }
.sol-spare { max-width: 6.5rem; }
.sol-sku-table { width: 100%; border-collapse: collapse; }
.sol-sku-table th, .sol-sku-table td { padding: 0.22rem 0.35rem; vertical-align: middle; font-size: 0.86rem; }
.sol-sku-table th { color: var(--muted); font-weight: 600; }
.sol-role { white-space: nowrap; }
.sol-role i { font-style: normal; font-size: 0.72rem; }
.sku-combo { position: relative; }
.sku-combo input.js-sku-q,
.sku-combo input.js-add-q {
  width: 100%;
  min-width: 14rem;
  padding: 0.28rem 0.45rem;
  border: 1px solid var(--line);
  border-radius: 6px;
  font-size: 0.86rem;
}
.sku-suggest {
  position: absolute;
  left: 0; right: 0; top: 100%;
  z-index: 30;
  max-height: 14rem;
  overflow: auto;
  background: #fff;
  border: 1px solid #e8dcc8;
  border-radius: 8px;
  box-shadow: 0 8px 20px rgba(40, 30, 20, 0.08);
}
.sku-suggest button {
  display: block;
  width: 100%;
  text-align: left;
  background: #fff;
  color: #111;
  border: 0;
  padding: 0.35rem 0.55rem;
  font-size: 0.8rem;
  cursor: pointer;
  border-radius: 0;
}
.sku-suggest button:hover { background: #f3eee6; color: #111; }
.sol-spec-1 {
  display: block;
  max-width: 22rem;
  width: 100%;
  border: 0;
  background: none;
  padding: 0;
  text-align: left;
  color: var(--muted);
  font-size: 0.8rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
}
.sol-spec-1:hover { color: var(--brand-dark); text-decoration: underline; }
.sol-add-row { margin-top: 0.45rem; max-width: 28rem; }
.sol-sku-table .js-drop { padding: 0.15rem 0.4rem; font-size: 0.78rem; }
.sol-ord { display: inline-flex; gap: 0.15rem; white-space: nowrap; }
.sol-ord button { padding: 0.12rem 0.38rem; font-size: 0.75rem; }
.spec-dlg {
  border: 1px solid #e8dcc8;
  border-radius: 12px;
  padding: 1rem 1.1rem;
  max-width: min(52rem, 94vw);
}
button.spec-link {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  overflow: hidden;
  width: 100%;
  text-align: left;
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  white-space: pre-wrap;
}
button.spec-link:hover { color: var(--navy); }
.spec-dlg::backdrop { background: rgba(30, 24, 16, 0.35); }
.spec-dlg h3 { margin: 0 0 0.5rem; font-size: 1rem; }
.spec-dlg pre {
  white-space: pre-wrap;
  word-break: break-word;
  font-family: inherit;
  font-size: 0.86rem;
  max-height: 60vh;
  overflow: auto;
  margin: 0 0 0.8rem;
}
.sol-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 0.7rem;
  margin: 0 0 0.85rem;
}
.sol-kpis .kpi small { display: block; color: var(--muted); font-size: 0.75rem; margin-top: 0.15rem; }
.sol-quote-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 0.55rem;
}
.sol-quote-head h2 { margin: 0; }
.sol-attach { align-items: start; }
.sol-attach .muted { display: block; margin-top: 0.25rem; }
.sol-quote-bar {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
  gap: 0.65rem 1rem;
  align-items: center;
  margin: 0 0 0.85rem;
  padding: 0.75rem 1rem;
  background: #fff;
  border: 1px solid #e8dcc8;
  border-radius: 12px;
}
.sol-qb span { display: block; font-size: 0.78rem; color: var(--muted); }
.sol-qb b { display: block; font-size: 1.25rem; margin: 0.1rem 0 0.08rem; letter-spacing: 0.01em; }
.sol-qb small { color: var(--muted); font-size: 0.75rem; }
.sol-qb-ops { display: flex; flex-wrap: wrap; gap: 0.45rem; justify-content: flex-end; }
.sol-quote-wrap { overflow-x: auto; margin: 0 -0.15rem; }
.sol-quote-wrap .quote-table { min-width: 68rem; }
.sol-qtab td, .sol-qtab th { padding: 0.38rem 0.55rem; }
.sol-qtab .sol-model { color: var(--muted); font-size: 0.86rem; white-space: nowrap; }
.sol-g td {
  background: #f4eee4;
  font-weight: 700;
  font-size: 0.82rem;
  color: #6b4a28;
  padding: 0.42rem 0.55rem;
  letter-spacing: 0.04em;
}
.sol-quote-foot {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
  gap: 1.2rem;
  flex-wrap: wrap;
  margin-top: 0.85rem;
  padding-top: 0.7rem;
  border-top: 1px solid #eee4d4;
}
.sol-quote .quote-sum { margin: 0; min-width: 18rem; }
.sol-sum-grand td, .sol-sum-grand th { font-size: 1.02rem; }
.sol-qty-acts { margin: 0; }
.sol-quote .qty-in { width: 4.4rem; text-align: right; }
.sol-quote td.num .hand { display: inline; margin-left: 0.15rem; }
.sol-quote-page .sol-qtab thead th {
  position: sticky;
  top: 0;
  background: #f7f1e8;
  z-index: 1;
}
@media (max-width: 1100px) {
  .proj-quote-page .quote-sides { grid-template-columns: 1fr; }
  .proj-quote-page .quote-fields-agent {
    grid-template-columns: minmax(8rem, 1fr) minmax(8rem, 1fr);
  }
}
@media (max-width: 900px) {
  .sol-quote-bar { grid-template-columns: 1fr 1fr; }
  .proj-quote-page .sol-quote-bar { grid-template-columns: 1fr; }
  .proj-quote-page .quote-step-row,
  .proj-quote-page .quote-cols,
  .proj-quote-page .quote-steps-grid,
  .proj-quote-page .quote-submit-row { grid-template-columns: 1fr; }
  .proj-quote-page .quote-flow { flex-wrap: wrap; }
  .proj-quote-page .quote-step header small { white-space: normal; }
  .proj-quote-page .quote-step-lines header { flex-wrap: wrap; }
  .proj-quote-page .quote-fields-deal,
  .proj-quote-page .quote-fields-warr,
  .proj-quote-page .quote-fields-labor { grid-template-columns: 1fr 1fr; }
  .sol-qb-ops { grid-column: 1 / -1; justify-content: flex-start; }
}
body:has(.proj-quote-page) .main { padding-left: 1.1rem; padding-right: 1.1rem; }
.proj-quote-page > .top { margin-bottom: 0.35rem; }
.proj-quote-page > .top h1 { font-size: 1.25rem; margin: 0 0 0.2rem; }
.proj-quote-page > .top .actions { gap: 0.3rem; }
.proj-quote-page .hosp-jump { margin-bottom: 0.85rem; }
.proj-quote-page .sol-note { margin-bottom: 0.55rem; }
.proj-quote-page .sol-quote-bar {
  margin: 0 0 0.55rem;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(8.5rem, auto);
  gap: 0.5rem 0.7rem;
  padding: 0.55rem 0.7rem;
  border-radius: 10px;
  box-shadow: 0 1px 0 rgba(40, 30, 16, 0.04);
}
.proj-quote-page .sol-quote-pnl { align-items: stretch; }
.proj-quote-page .quote-cols {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.65rem;
  margin: 0 0 0.65rem;
  align-items: stretch;
}
.proj-quote-page .quote-col {
  min-width: 0;
  padding: 0.55rem 0.7rem 0.65rem;
  border-radius: 12px;
  border: 1.5px solid;
}
.proj-quote-page .quote-col-agent {
  background: #fff8f0;
  border-color: #e0a06a;
}
.proj-quote-page .quote-col-us {
  background: #f3f8f4;
  border-color: #b7d4c2;
}
.proj-quote-page .quote-col .sol-pnl {
  background: transparent;
  border: none;
  border-radius: 0;
  padding: 0 0 0.5rem;
  margin: 0 0 0.5rem;
}
.proj-quote-page .quote-col-agent .sol-pnl { border-bottom: 1px solid #edc8a0; }
.proj-quote-page .quote-col-us .sol-pnl { border-bottom: 1px solid #c5ddce; }
.proj-quote-page .quote-col .quote-step {
  background: transparent;
  border: none;
  margin: 0;
  padding: 0;
}
.proj-quote-page .quote-col-us .sol-qb-ops {
  justify-content: flex-start;
  margin: 0 0 0.55rem;
}
.proj-quote-page .quote-side-us .field-agent,
.proj-quote-page .quote-side-us .field-agent input {
  border-color: #7eb89a;
  color: #146c3a;
  background: #fff;
}
.proj-quote-page .sol-pnl {
  min-width: 0;
  padding: 0.45rem 0.7rem 0.5rem;
  border-radius: 10px;
  border: 1px solid #e8dcc8;
}
.proj-quote-page .sol-pnl > span {
  display: block;
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.proj-quote-page .sol-pnl-k {
  display: flex;
  align-items: baseline;
  gap: 0.55rem;
  margin: 0.12rem 0 0.2rem;
}
.proj-quote-page .sol-pnl-k b {
  font-size: 1.45rem;
  letter-spacing: 0.01em;
  line-height: 1.15;
}
.proj-quote-page .sol-pnl-k em {
  font-style: normal;
  font-size: 1.05rem;
  font-weight: 700;
}
.proj-quote-page .sol-pnl small {
  display: block;
  color: #6b4a28;
  font-size: 0.78rem;
  line-height: 1.45;
}
.proj-quote-page .sol-pnl-us {
  background: #f3f8f4;
  border-color: #b7d4c2;
}
.proj-quote-page .sol-pnl-us > span,
.proj-quote-page .sol-pnl-us .sol-pnl-k b,
.proj-quote-page .sol-pnl-us .sol-pnl-k em { color: #1f6b43; }
.proj-quote-page .sol-pnl-agent {
  background: #fff8f0;
  border-color: #e0a06a;
}
.proj-quote-page .sol-pnl-agent > span,
.proj-quote-page .sol-pnl-agent .sol-pnl-k b,
.proj-quote-page .sol-pnl-agent .sol-pnl-k em { color: #9a3412; }
.proj-quote-page .sol-pnl-agent.dim { opacity: 0.55; }
.proj-quote-page .sol-qb-ops { min-width: 8.5rem; align-items: center; }
.proj-quote-page .sol-qb-ops .btn { white-space: nowrap; }
.proj-quote-page .quote-work {
  background: #fff;
  border: 1px solid #e8dcc8;
  border-radius: 12px;
  padding: 0.7rem 0.85rem 0.85rem;
  margin-bottom: 0.7rem;
}
.proj-quote-page .quote-flow {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  list-style: none;
  margin: 0 0 0.7rem;
  padding: 0;
}
.proj-quote-page .quote-flow li {
  flex: 1 1 5.2rem;
  min-width: 0;
  text-align: center;
  padding: 0.38rem 0.15rem;
  border-radius: 7px;
  background: #f4efe6;
  color: #6b4a28;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0;
  white-space: nowrap;
  border: 1px solid transparent;
}
.proj-quote-page .quote-flow li.side-agent { background: #fff1e4; color: #9a3412; border-color: #e0a06a; }
.proj-quote-page .quote-flow li.side-us { background: #e4f3ea; color: #146c3a; border-color: #7eb89a; }
.proj-quote-page .quote-flow li:first-child { background: #f7f1e8; color: #6b4a28; border-color: #c4b194; }
.proj-quote-page .quote-sides {
  display: grid;
  grid-template-columns: minmax(15.5rem, 0.72fr) minmax(28rem, 1.28fr);
  gap: 0.7rem;
  margin: 0 0 0.75rem;
  align-items: start;
}
.proj-quote-page .quote-side {
  min-width: 0;
  height: auto;
  padding: 0.5rem 0.65rem 0.55rem;
  border-radius: 12px;
  border: 1.5px solid;
}
.proj-quote-page .quote-side-agent {
  background: #fff8f0;
  border-color: #e0a06a;
}
.proj-quote-page .quote-side-us {
  background: #f3f8f4;
  border-color: #b7d4c2;
}
.proj-quote-page .quote-side-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.7rem;
  margin: 0 0 0.55rem;
  padding-bottom: 0.45rem;
}
.proj-quote-page .quote-side-agent .quote-side-head { border-bottom: 1px solid #edc8a0; }
.proj-quote-page .quote-side-us .quote-side-head { border-bottom: 1px solid #c5ddce; }
.proj-quote-page .quote-side-head strong {
  font-size: 1.02rem;
  letter-spacing: 0.04em;
}
.proj-quote-page .quote-side-agent .quote-side-head strong { color: #9a3412; }
.proj-quote-page .quote-side-us .quote-side-head strong { color: #146c3a; }
.proj-quote-page .quote-side-head > small {
  margin-left: auto;
  font-size: 0.78rem;
  color: #2f7a52;
  white-space: nowrap;
}
.proj-quote-page .quote-side-head .sol-pnl {
  background: transparent;
  border: none;
  padding: 0;
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 0.55rem;
}
.proj-quote-page .quote-side-head .sol-pnl > span { margin: 0; font-size: 0.74rem; }
.proj-quote-page .quote-side-head .sol-pnl-k { margin: 0; gap: 0.4rem; }
.proj-quote-page .quote-side-head .sol-pnl-k b { font-size: 1.2rem; }
.proj-quote-page .quote-side-head .sol-pnl-k em { font-size: 0.92rem; }
.proj-quote-page .quote-side .quote-step {
  background: #fff;
  margin: 0 0 0.5rem;
  padding: 0.5rem 0.55rem 0.55rem;
  box-shadow: 0 1px 0 rgba(40, 30, 16, 0.03);
}
.proj-quote-page .quote-side .quote-step:last-child { margin-bottom: 0; }
.proj-quote-page .quote-side-agent .quote-step { border-color: #f0d3b0; }
.proj-quote-page .quote-side-us .quote-step { border-color: #c5ddce; }
.proj-quote-page .quote-side-agent .quote-step header b,
.proj-quote-page .quote-side-agent .quote-step header small { color: #9a3412; }
.proj-quote-page .quote-side-agent .quote-step header b i { background: #9a3412; color: #fff; }
.proj-quote-page .quote-side-agent .field { color: #8a3d12; }
.proj-quote-page .quote-side-agent .field input,
.proj-quote-page .quote-side-agent .field select {
  color: #9a3412;
  border-color: #e0a06a;
}
.proj-quote-page .quote-side-us .quote-step header b,
.proj-quote-page .quote-side-us .quote-step header small { color: #146c3a; }
.proj-quote-page .quote-side-us .quote-step header b i { background: #146c3a; color: #fff; }
.proj-quote-page .quote-side-us .field { color: #1f6b43; }
.proj-quote-page .quote-side-us .field input,
.proj-quote-page .quote-side-us .field select {
  color: #146c3a;
  border-color: #7eb89a;
}
.proj-quote-page .quote-step header b i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  margin-right: 0.28rem;
  border-radius: 50%;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 700;
  background: #c45c26;
  color: #fff;
}
.proj-quote-page .quote-step-submit header {
  align-items: flex-start;
  justify-content: space-between;
}
.proj-quote-page .quote-step-submit header > div:first-child { min-width: 0; }
.proj-quote-page .ct-info-fields {
  grid-template-columns: repeat(auto-fill, minmax(10.5rem, 1fr));
}
.proj-quote-page .quote-step .ct-pay {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.proj-quote-page .quote-step header .ct-pay-mark { margin-left: 0.15rem; }
.ct-page .work-zone { margin: 0 0 0.7rem; }
.proj-quote-page .quote-s5 header b,
.proj-quote-page .quote-step-lines header b { color: #3d2a18; }
.proj-quote-page .quote-s5 header b i,
.proj-quote-page .quote-step-lines header b i { background: #8a6a48; color: #fff; }
.proj-quote-page .quote-top-bar {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 0.45rem 0.7rem;
  margin: 0 0 0.5rem;
  padding: 0.28rem 0;
  border: none;
  background: transparent;
  border-radius: 0;
}
.proj-quote-page .quote-top-acts { justify-content: flex-end; }
.proj-quote-page .quote-board {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
  margin: 0 0 0.5rem;
  width: 100%;
}
.proj-quote-page .quote-board > .quote-step-lines,
.proj-quote-page .quote-board > .quote-step-pack {
  margin-bottom: 0;
  min-width: 0;
  width: 100%;
  box-sizing: border-box;
}
.proj-quote-page .quote-step-pack {
  padding: 0.45rem;
  overflow: visible;
  border: 1px solid #cbb89a;
  border-radius: 8px;
  background: #fff;
}
.proj-quote-page .quote-board > .sol-empty-quote { min-width: 0; }
.proj-quote-page .quote-pack {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr) minmax(0, 0.8fr) minmax(0, 1.55fr) minmax(0, 1.1fr) minmax(0, 1.45fr);
  gap: 0.4rem;
  margin: 0;
  width: 100%;
}
.proj-quote-page .quote-pack > .qp { grid-area: auto; min-width: 0; }
.proj-quote-page .qp-hosp,
.proj-quote-page .qp-agent-disc.qp-gold {
  background: #f8efe4;
  border-color: #d4a574;
  border-left-color: #8a4b1f;
}
.proj-quote-page .qx-agent-unit .tag {
  margin-left: 0.2rem;
  font-size: 0.72rem;
}
.proj-quote-page .qp-labor,
.proj-quote-page .qp-travel,
.proj-quote-page .qp-profit { grid-column: auto; }
.proj-quote-page .qp {
  min-width: 0;
  padding: 0.42rem 0.5rem 0.48rem;
  border-radius: 8px;
  border: 1px solid #d8cbb8;
  border-left-width: 4px;
  background: #fffdf8;
}
.proj-quote-page .qp-agent {
  background: #fff8f0;
  border-color: #edc8a0;
  border-left-color: #c05621;
}
.proj-quote-page .qp-us {
  background: #f3f8f4;
  border-color: #b7d4c2;
  border-left-color: #146c3a;
}
.proj-quote-page .qp-profit {
  background: #e8f6ee;
  border-color: #7eb89a;
  border-left-color: #0f5c32;
}
.proj-quote-page .qp-hint {
  display: block;
  margin: 0 0 0.32rem;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 650;
  line-height: 1.35;
  color: inherit;
  opacity: 0.88;
}
.proj-quote-page .qp > b,
.proj-quote-page .qp-profit-head b {
  display: flex;
  align-items: center;
  gap: 0.28rem;
  margin: 0 0 0.12rem;
  font-size: 0.86rem;
  line-height: 1.2;
  white-space: nowrap;
}
.proj-quote-page .qp-agent > b { color: #9a3412; }
.proj-quote-page .qp-us > b { color: #146c3a; }
.proj-quote-page .qp > b i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.05rem;
  height: 1.05rem;
  border-radius: 50%;
  font-style: normal;
  font-size: 0.68rem;
  font-weight: 700;
  color: #fff;
}
.proj-quote-page .qp-agent > b i { background: #9a3412; }
.proj-quote-page .qp-us > b i { background: #146c3a; }
.proj-quote-page .qp-row {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 0.3rem 0.4rem;
}
.proj-quote-page .qp-row label {
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
  margin: 0;
  min-width: 0;
  font-size: 0.7rem;
  font-weight: 650;
  color: #5c4630;
}
.proj-quote-page .qp-agent .qp-row label { color: #8a3d12; }
.proj-quote-page .qp-us .qp-row label { color: #1f6b43; }
.proj-quote-page .qp-row input,
.proj-quote-page .qp-row select {
  width: 4.6rem;
  height: 1.7rem;
  box-sizing: border-box;
  padding: 0 0.28rem;
  font-size: 0.82rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.proj-quote-page .qp-row select { width: 7.4rem; text-align: left; }
.proj-quote-page .qp-agent .qp-row input,
.proj-quote-page .qp-agent .qp-row select { color: #9a3412; border-color: #e0a06a; }
.proj-quote-page .qp-us .qp-row input,
.proj-quote-page .qp-us .qp-row select { color: #146c3a; border-color: #7eb89a; }
.proj-quote-page .qp-install span,
.proj-quote-page .qp-ro span {
  display: flex;
  align-items: center;
  gap: 0.22rem;
  min-height: 1.7rem;
  flex-wrap: wrap;
}
.proj-quote-page .qp-gift {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  font-weight: 500;
  white-space: nowrap;
  margin: 0;
}
.proj-quote-page .qp-gift input[type="checkbox"] {
  width: auto;
  height: auto;
  margin: 0;
}
.proj-quote-page .qp-install input[type="checkbox"] {
  width: auto;
  height: auto;
  margin: 0;
}
.proj-quote-page .qp-install input[type="number"] { width: 3.2rem; }
.proj-quote-page .qp-ops {
  flex: 1 1 16rem;
}
.proj-quote-page .qp-ops span {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
  min-height: 1.7rem;
}
.proj-quote-page .qp-ops input[type="checkbox"] {
  width: auto;
  height: auto;
  margin: 0;
}
.proj-quote-page .qp-ops em {
  font-style: normal;
  font-weight: 700;
  font-size: 0.78rem;
  color: #146c3a;
}
.proj-quote-page .qp-labor small.js-ops-after {
  display: block;
  font-size: 0.68rem;
  font-weight: 700;
  color: #146c3a;
  min-height: 0.9rem;
}
.proj-quote-page .qp-install em,
.proj-quote-page .qp-ro span {
  font-style: normal;
  font-size: 0.78rem;
  font-weight: 700;
}
.proj-quote-page .qp-profit-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem 0.6rem;
  margin: 0 0 0.2rem;
}
.proj-quote-page .qp-profit-head > b { margin: 0; }
.proj-quote-page .qp-profit .quote-sheet-acts {
  margin: 0;
  padding: 0;
  border: none;
  gap: 0.3rem;
}
.proj-quote-page .qp-gp {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  margin: 0.15rem 0 0.1rem;
}
.proj-quote-page .qp-gp > span { font-size: 0.82rem; font-weight: 650; color: #3d2a18; }
.proj-quote-page .qp-gp strong {
  font-size: 1.45rem;
  color: #146c3a;
  font-variant-numeric: tabular-nums;
}
.proj-quote-page .qp-gp em {
  font-size: 1rem;
  font-style: normal;
  font-weight: 700;
  color: #146c3a;
}
.proj-quote-page .qp-profit-k {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
}
.proj-quote-page .qp-profit-k strong {
  font-size: 1.25rem;
  color: #146c3a;
  font-variant-numeric: tabular-nums;
}
.proj-quote-page .qp-profit-k em {
  font-size: 0.95rem;
  font-style: normal;
  font-weight: 700;
  color: #146c3a;
}
.proj-quote-page .qp-profit > small,
.proj-quote-page .qp-gp-box > small {
  display: block;
  margin-top: 0.12rem;
  font-size: 0.7rem;
  color: #2f7a52;
  white-space: normal;
  line-height: 1.35;
}
.proj-quote-page .qp-gp-box {
  grid-column: 1 / -1;
}
.proj-quote-page .qp-margin-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0.35rem 0 0;
}
.dlg-margin .qp-cost-wrap {
  margin: 0.35rem 0 0;
  overflow: auto;
  max-height: min(70vh, 36rem);
  border: 1px solid #eadfce;
  border-radius: 8px;
  background: #fff;
}
.dlg-margin .qp-cost-table {
  width: 100%;
  margin: 0;
  border: 0;
}
.dlg-margin .qp-cost-table .qty-in {
  width: 5.6rem;
  text-align: right;
}
.dlg-margin .qp-cost-table .qty-in.is-manual {
  border-color: #e67e22;
}
.dlg-margin .qp-cost-table .js-bom-auto,
.dlg-margin .qp-cost-table .js-cost-auto {
  margin-left: 0.2rem;
  padding: 0 0.35rem;
  font-size: 0.75rem;
}
.dlg-margin .qp-cost-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #faf6ef;
  white-space: nowrap;
}
.dlg-margin .qp-cost-table tfoot .qp-cost-sum th,
.dlg-margin .qp-cost-table tfoot .qp-cost-sum td {
  background: #f4f7fb;
}
.dlg-margin .qp-cost-table tfoot .qp-cost-gp th,
.dlg-margin .qp-cost-table tfoot .qp-cost-gp td {
  background: #1f4e79;
  color: #fff;
}
.dlg-margin .qp-cost-table tfoot .qp-cost-gp em {
  font-style: normal;
  font-weight: 700;
  margin-left: 0.35rem;
}
.proj-quote-page .qp-gp-detail {
  margin: 0.28rem 0 0;
  padding: 0.35rem 0.45rem;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.72);
  border: 1px solid #c5ddce;
}
.proj-quote-page .qp-gp-detail > summary {
  cursor: pointer;
  list-style: none;
  font-size: 0.78rem;
  font-weight: 700;
  color: #146c3a;
  user-select: none;
}
.proj-quote-page .qp-gp-detail > summary::-webkit-details-marker { display: none; }
.proj-quote-page .qp-gp-detail > summary::before {
  content: "▸ ";
  color: #146c3a;
}
.proj-quote-page .qp-gp-detail[open] > summary::before { content: "▾ "; }
.proj-quote-page .qp-gp-detail[open] > summary { margin-bottom: 0.28rem; }
.proj-quote-page .qp-gp-rows {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.2rem 0.75rem;
}
.proj-quote-page .qp-gp-rows li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.45rem;
  margin: 0;
  padding: 0.12rem 0;
  border-bottom: 1px dashed #d7eadc;
  font-size: 0.76rem;
  color: #2f7a52;
}
.proj-quote-page .qp-gp-rows li span { font-weight: 650; }
.proj-quote-page .qp-gp-rows li b {
  font-variant-numeric: tabular-nums;
  font-weight: 750;
  color: #146c3a;
}
.proj-quote-page .qp-gp-sub {
  margin: 0.35rem 0 0;
  font-size: 0.72rem;
  line-height: 1.4;
}
.proj-quote-page .qp-agent-gp {
  display: inline-flex;
  align-items: baseline;
  gap: 0.3rem;
  margin-top: 0.12rem;
  font-size: 0.72rem;
  color: #9a3412;
  font-weight: 650;
}
.proj-quote-page .qp-agent-gp b { font-size: 0.88rem; }
.proj-quote-page .qp-agent-gp em { font-style: normal; font-weight: 700; }
.proj-quote-page .qp-agent-gp.dim { opacity: 0.5; }
.proj-quote-page .qp-agent-split {
  display: block;
  margin-top: 0.2rem;
  font-size: 0.72rem;
  color: #7c5a32;
}
.proj-quote-page .qp-agent-split b { font-weight: 750; color: #9a3412; }
.proj-quote-page .qp-agent-split a { margin-left: 0.35rem; }
.proj-quote-page .qp-profit.qp-need-sign {
  background: #fff6e8;
  border-color: #e0b06a;
  border-left-color: #c2410c;
}
.proj-quote-page .qp-sign-miss {
  margin: 0.35rem 0 0.55rem;
  padding: 0.55rem 0.65rem;
  border: 1px solid #e8b86a;
  border-radius: 8px;
  background: #fff8ee;
}
.proj-quote-page .qp-sign-miss strong {
  display: block;
  font-size: 0.86rem;
  color: #9a3412;
}
.proj-quote-page .qp-sign-miss p {
  margin: 0.28rem 0 0.5rem;
  font-size: 0.76rem;
  line-height: 1.45;
  color: #7c4a1a;
  font-weight: 650;
}
.proj-quote-page a.btn.qp-sign-go {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #c2410c;
  border: 1px solid #c2410c;
  color: #fff !important;
  font-weight: 800;
  padding: 0.4rem 0.85rem;
  border-radius: 8px;
  text-decoration: none;
  white-space: nowrap;
}
.proj-quote-page a.btn.qp-sign-go:hover,
.proj-quote-page button.btn.qp-sign-go:hover {
  background: #9a3412;
  border-color: #9a3412;
  color: #fff !important;
}
.proj-quote-page button.btn.qp-sign-go {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #c2410c;
  border: 1px solid #c2410c;
  color: #fff !important;
  font-weight: 800;
  padding: 0.4rem 0.85rem;
  border-radius: 8px;
  cursor: pointer;
}
.proj-quote-page button.linkish {
  border: 0;
  background: none;
  padding: 0;
  color: #9a3412;
  font-weight: 750;
  cursor: pointer;
  text-decoration: underline;
}
.agent-pick-row {
  display: flex;
  gap: 0.35rem;
  align-items: center;
}
.agent-pick-row .agent-q { flex: 1; min-width: 0; }
.agent-pick-row .agent-kind {
  width: 6.6rem;
  flex: 0 0 auto;
}
.agent-pick-row .agent-clear { flex: 0 0 auto; }
.chan-share {
  margin: 0.7rem 0 0.4rem;
  padding: 0.65rem 0.75rem;
  border: 1px solid #e0b06a;
  border-radius: 10px;
  background: #fff8ee;
}
.chan-share > strong {
  display: block;
  font-size: 0.95rem;
  color: #9a3412;
}
.chan-share > p {
  margin: 0.28rem 0 0.5rem;
  font-size: 0.76rem;
  line-height: 1.45;
  color: #7c4a1a;
}
.chan-share-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.7rem 1rem;
}
.chan-share-row label {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  font-size: 0.78rem;
  font-weight: 750;
  color: #9a3412;
}
.chan-share-row input {
  width: 6.5rem;
  height: 2rem;
  font-size: 1rem;
  font-weight: 800;
  text-align: right;
}
.chan-share-row input[readonly] {
  background: #f4eee4;
  color: #5c4630;
}
.chan-share .js-share-hint {
  display: block;
  margin-top: 0.4rem;
  font-size: 0.78rem;
  font-weight: 750;
  color: #9a3412;
}
.chan-quick-lab {
  margin: 0.55rem 0 0.25rem;
  font-size: 0.78rem;
  font-weight: 750;
  color: #5c4630;
}
.chan-quick {
  list-style: none;
  margin: 0 0 0.6rem;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.28rem;
}
.chan-quick li {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  flex-wrap: wrap;
  padding: 0.28rem 0.4rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fffaf3;
}
.chan-quick span { flex: 1; min-width: 8rem; font-size: 0.82rem; }
#dlg-quote-channel .agent-pick .lookup-hits,
#dlg-channel .agent-pick .lookup-hits {
  position: static;
  z-index: 1;
  max-height: min(36vh, 16rem);
  overflow: auto;
  margin-top: 0.35rem;
  box-shadow: none;
}
.proj-quote-page .qp-travel-box {
  display: flex;
  align-items: end;
  gap: 0.55rem;
}
.proj-quote-page .qp-travel-box label { flex: 0 0 auto; }
.proj-quote-page .qp-travel-box input {
  width: 7.2rem;
  height: 2rem;
  font-size: 1rem;
  font-weight: 700;
}
.proj-quote-page .qp-travel-meta {
  display: flex;
  flex-direction: column;
  gap: 0.08rem;
  min-width: 0;
  line-height: 1.25;
  color: #1f6b43;
}
.proj-quote-page .qp-travel-meta span { font-size: 0.7rem; font-weight: 650; opacity: 0.85; }
.proj-quote-page .qp-travel-meta b {
  font-size: 1.05rem;
  font-variant-numeric: tabular-nums;
  color: #0f5c32;
}
.proj-quote-page .qp-travel-meta small { font-size: 0.7rem; color: #2f7a52; }
.proj-quote-page .qp-travel-bar {
  height: 0.32rem;
  margin-top: 0.4rem;
  border-radius: 99px;
  background: #d7eadc;
  overflow: hidden;
}
.proj-quote-page .qp-travel-bar i {
  display: block;
  height: 100%;
  background: #146c3a;
  border-radius: 99px;
}
.proj-quote-page .qp-travel-bar i.over { background: #b42318; }
@media (max-width: 1200px) {
  .proj-quote-page .quote-pack {
    grid-template-columns: 1fr 1fr;
  }
}
.proj-quote-page .quote-top-bar .sol-pnl-us {
  flex: 1;
  min-width: 16rem;
  background: transparent;
  border: none;
  padding: 0;
}
.proj-quote-page .quote-top-bar .sol-pnl-us > span {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
}
.proj-quote-page .quote-top-bar .sol-pnl-us > span i {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15rem;
  height: 1.15rem;
  border-radius: 50%;
  background: #146c3a;
  color: #fff;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 700;
}
.proj-quote-page .quote-top-bar .sol-pnl-k b { font-size: 1.4rem; color: #146c3a; }
.proj-quote-page .quote-top-bar .sol-pnl-k em { font-size: 1.05rem; color: #146c3a; }
.proj-quote-page .quote-top-bar .sol-pnl small {
  font-size: 0.76rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.proj-quote-page .quote-top-bar .quote-sheet-acts {
  margin: 0;
  padding: 0;
  border: none;
  justify-content: flex-end;
}
.proj-quote-page .quote-step {
  margin: 0 0 0.55rem;
  padding: 0.5rem 0.6rem 0.55rem;
  border: 1px solid #eee4d4;
  border-radius: 10px;
  background: #fffdf8;
}
.proj-quote-page .select-scale { padding-bottom: 0.75rem; }
.proj-quote-page .select-scale .survey-hero { margin-top: 0.35rem; }
.proj-quote-page .select-scale .survey-hint { margin-bottom: 0.15rem; }
.proj-quote-page .quote-step header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.2rem 0.55rem;
  margin: 0 0 0.4rem;
}
.proj-quote-page .quote-step header b { font-size: 0.92rem; color: #3d2a18; line-height: 1.3; }
.proj-quote-page .quote-step header small { color: #8a6a48; font-size: 0.8rem; line-height: 1.3; font-weight: 600; white-space: nowrap; }
.proj-quote-page .quote-s2 header small { font-size: 0.8rem; }
.proj-quote-page .quote-step-fields {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(7.2rem, 1fr));
  align-items: start;
  gap: 0.45rem 0.5rem;
}
.proj-quote-page .quote-fields-agent {
  grid-template-columns: 1fr;
}
.proj-quote-page .quote-fields-deal,
.proj-quote-page .quote-fields-agent-disc {
  grid-template-columns: minmax(8rem, 12rem);
}
.proj-quote-page .quote-fields-warr {
  grid-template-columns: minmax(8.2rem, 12rem) minmax(5.2rem, 8rem);
}
.proj-quote-page .quote-fields-labor {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.proj-quote-page .quote-fields-labor .field-install { grid-column: 1 / -1; }
.proj-quote-page .quote-fields-exp {
  grid-template-columns: minmax(10rem, 14rem);
}
.proj-quote-page .quote-step-fields .field {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-end;
  width: auto;
  min-width: 0;
  margin: 0;
  gap: 0.22rem;
  font-size: 0.8rem;
  font-weight: 650;
  line-height: 1.25;
  color: #5c4630;
}
.proj-quote-page .quote-step-fields .field-warr { min-width: 0; }
.proj-quote-page .quote-step-fields .field-sales { min-width: 0; }
.proj-quote-page .quote-step-fields .field-tick,
.proj-quote-page .quote-step-fields .field-ro { width: auto; }
.proj-quote-page .quote-step-fields .tick {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  min-height: 2.05rem;
  font-size: 0.82rem;
  font-weight: 600;
}
.proj-quote-page .quote-step-fields .tick input { width: auto; height: auto; margin: 0; }
.proj-quote-page .quote-step-fields .field-install { min-width: 0; }
.proj-quote-page .quote-step-fields .install-line {
  display: flex;
  align-items: center;
  gap: 0.3rem;
  min-height: 2.05rem;
}
.proj-quote-page .quote-step-fields .install-line input[type="checkbox"] {
  width: auto;
  height: auto;
  margin: 0;
  flex: none;
}
.proj-quote-page .quote-step-fields .install-line input[type="number"] {
  width: 3.6rem;
  flex: none;
  text-align: right;
}
.proj-quote-page .quote-step-fields .install-line i {
  font-style: normal;
  font-size: 0.82rem;
  font-weight: 650;
}
.proj-quote-page .quote-step-fields .ro-val {
  display: flex;
  align-items: center;
  min-height: 2.05rem;
  font-size: 0.9rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.proj-quote-page .quote-cost-sub {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.28rem 0.7rem;
  margin: 0.7rem 0 0.4rem;
  padding-top: 0.5rem;
  border-top: 1px solid #c5ddce;
}
.proj-quote-page .quote-cost-fields { align-items: flex-end; }
.proj-quote-page .quote-step-fields .field-agent {
  width: auto;
  padding: 0.1rem 0.3rem 0.2rem;
}
.proj-quote-page .quote-step-fields .field input,
.proj-quote-page .quote-step-fields .field select {
  width: 100%;
  min-width: 0;
  height: 2.05rem;
  box-sizing: border-box;
  font-size: 0.9rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
  padding: 0 0.4rem;
}
.proj-quote-page .quote-step-fields .field select { text-align: left; padding-right: 0.2rem; }
.proj-quote-page .quote-step-fields .field em {
  display: block;
  margin: 0.1rem 0 0;
  font-style: normal;
  font-size: 0.78rem;
  line-height: 1.4;
  color: #8a6a48;
  font-weight: 600;
}
.proj-quote-page .quote-side-us .quote-step-fields .field em { color: #2f7a52; }
.proj-quote-page .quote-side-agent .quote-step-fields .field em { color: #9a3412; }
.proj-quote-page .quote-fx-list em { color: #9a3412; }
.proj-quote-page .quote-step-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.55rem;
  margin: 0 0 0.55rem;
  align-items: stretch;
}
.proj-quote-page .quote-step-row .quote-step { margin-bottom: 0; min-width: 0; }
.proj-quote-page .quote-step-deal header b,
.proj-quote-page .quote-col-agent .quote-step header b,
.proj-quote-page .quote-col-agent .quote-step header small { color: #9a3412; }
.proj-quote-page .quote-step-cost header b,
.proj-quote-page .quote-col-us .quote-step header b,
.proj-quote-page .quote-col-us .quote-step header small { color: #1f6b43; }
.proj-quote-page .quote-col-agent .quote-step-fields .field em { color: #9a3412; }
.proj-quote-page .quote-col-us .quote-step-fields .field em { color: #2f7a52; }
.proj-quote-page .quote-step-lines {
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  border: 1px solid #cbb89a;
  border-radius: 8px;
  background: #fff;
  margin-bottom: 0.75rem;
}
.proj-quote-page .quote-step-lines header {
  flex: none;
  align-items: center;
  flex-wrap: wrap;
  margin: 0;
  padding: 0.45rem 0.6rem;
  border-bottom: 1px solid #e0d4c2;
  background: #f7f1e8;
  gap: 0.35rem 0.55rem;
}
.proj-quote-page .quote-step-lines header .quote-head-acts {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  margin-left: auto;
  flex-wrap: wrap;
}
.proj-quote-page .quote-step-lines header .quote-head-acts .btn {
  white-space: nowrap;
}
.proj-quote-page .quote-save-btn,
.proj-quote-page button.quote-save-btn {
  background: #e06712 !important;
  border: 2px solid #c4550a !important;
  color: #fff !important;
  font-weight: 800 !important;
  font-size: 0.95rem !important;
  padding: 0.45rem 1.05rem !important;
  border-radius: 8px !important;
  box-shadow: 0 2px 0 #9a4208, 0 4px 12px rgba(192, 85, 10, 0.28);
  letter-spacing: 0.02em;
}
.proj-quote-page .quote-save-btn:hover,
.proj-quote-page button.quote-save-btn:hover {
  background: #c4550a !important;
  border-color: #a34608 !important;
  color: #fff !important;
}
.proj-quote-page .quote-save-btn.is-need-save,
.proj-quote-page button.quote-save-btn.is-need-save {
  animation: quote-save-pulse 1.4s ease-in-out infinite;
  box-shadow: 0 2px 0 #9a4208, 0 0 0 3px rgba(224, 103, 18, 0.35), 0 6px 16px rgba(192, 85, 10, 0.35);
}
@keyframes quote-save-pulse {
  0%, 100% { transform: scale(1); filter: brightness(1); }
  50% { transform: scale(1.04); filter: brightness(1.08); }
}
.proj-quote-page .quote-submit-btn,
.proj-quote-page button.quote-submit-btn {
  background: #1f5f9a !important;
  border: 2px solid #174a78 !important;
  color: #fff !important;
  font-weight: 750 !important;
  font-size: 0.92rem !important;
  padding: 0.42rem 0.95rem !important;
  border-radius: 8px !important;
}
.proj-quote-page .quote-submit-btn:hover,
.proj-quote-page button.quote-submit-btn:hover {
  background: #174a78 !important;
  color: #fff !important;
}
.proj-quote-page .quote-sticky-acts {
  position: fixed;
  right: 1.1rem;
  bottom: 1.1rem;
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.65rem 0.8rem;
  border-radius: 14px;
  border: 2px solid #e0a060;
  background: rgba(255, 248, 235, 0.98);
  box-shadow: 0 10px 28px rgba(120, 60, 10, 0.22);
}
.proj-quote-page .quote-sticky-acts .quote-saved {
  margin-right: 0.2rem;
  font-size: 0.85rem;
  font-weight: 700;
}
.proj-quote-page .quote-sticky-acts .btn {
  white-space: nowrap;
}
.proj-quote-page .quote-sticky-acts .quote-save-btn {
  font-size: 1rem !important;
  padding: 0.55rem 1.2rem !important;
}
@media (max-width: 720px) {
  .proj-quote-page .quote-sticky-acts {
    left: 0.65rem;
    right: 0.65rem;
    bottom: 0.65rem;
    justify-content: flex-end;
  }
}
.proj-quote-page .quote-step-lines header .qp-hint {
  margin: 0 auto 0 0;
  color: #8a3d12;
}
.proj-quote-page .qx-sheet {
  padding: 0.7rem 0.75rem 0.55rem;
  background: #f4f7fb;
}
.proj-quote-page .qx-title {
  text-align: center;
  font-size: 1.15rem;
  font-weight: 750;
  color: #1f4e79;
  letter-spacing: 0.04em;
  margin: 0.1rem 0 0.45rem;
}
.proj-quote-page .qx-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.28rem 1.1rem;
  padding: 0.38rem 0.55rem;
  background: #eef3f8;
  border: 1px solid #b4c6e7;
  border-bottom: 0;
  font-size: 0.78rem;
}
.proj-quote-page .qx-meta span { display: inline-flex; align-items: baseline; gap: 0.35rem; }
.proj-quote-page .qx-meta b { color: #1f4e79; font-weight: 700; }
.proj-quote-page .qx-meta em { font-style: normal; }
.proj-quote-page .qx-hint,
.proj-quote-page .qx-foot {
  margin: 0;
  padding: 0.32rem 0.1rem;
  color: #666;
  font-size: 0.74rem;
  line-height: 1.45;
}
.proj-quote-page .qx-foot { padding-top: 0.5rem; }
.proj-quote-page .qx-table { background: #fff; }
.proj-quote-page .qx-table thead th {
  background: #1f4e79 !important;
  color: #fff !important;
  border-color: #1f4e79;
}
.proj-quote-page .qx-table thead th.col-qty { background: #c47a22 !important; color: #fff !important; }
.proj-quote-page .qx-table tfoot .qx-sum td { background: #fff3cd; font-weight: 650; }
.proj-quote-page .qx-table tfoot .qx-grand td { background: #e8f5e9; color: #c0392b; }
.proj-quote-page .qx-table tfoot .qx-final td { background: #fff3cd; }
.proj-quote-page .qx-table tfoot .qx-final input.qty-in {
  width: 7.5rem;
  text-align: right;
  font-weight: 700;
}
.proj-quote-page .qx-flab { text-align: right; }
.proj-quote-page .qx-empty td { text-align: center; padding: 1.2rem; color: #666; }
.proj-quote-page .qx-qty { display: flex; flex-direction: column; align-items: stretch; gap: 0.18rem; }
.proj-quote-page .qx-spare {
  display: flex;
  align-items: center;
  gap: 0.18rem;
  font-size: 0.68rem;
  color: #8a3d12;
  font-weight: 650;
}
.proj-quote-page .qx-spare input {
  width: 3.2rem;
  padding: 0.05rem 0.2rem;
  border: 1px solid #f0c27a;
  border-radius: 4px;
  background: #fff8eb;
}
.proj-quote-page .qx-rule { font-size: 0.72rem; color: #555; }
.proj-quote-page .quote-terms-chips {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.32rem;
  margin-left: auto;
}
.proj-quote-page .quote-terms-chips i {
  display: inline-block;
  font-style: normal;
  padding: 0.12rem 0.42rem;
  border-radius: 999px;
  background: #eef6f1;
  border: 1px solid #b7d4c2;
  color: #146c3a;
  font-size: 0.74rem;
  font-weight: 700;
  white-space: nowrap;
}
.proj-quote-page .quote-qty-alert {
  display: inline-block;
  padding: 0.18rem 0.5rem;
  border-radius: 6px;
  background: #fff3d6;
  border: 1px solid #e0a06a;
  color: #9a3412;
  font-size: 0.82rem;
  font-weight: 700;
}
.proj-quote-page .sol-qtab th.col-qty,
.proj-quote-page .sol-qtab td.qty-cell {
  background: #ffe4b5;
  box-shadow: inset 0 0 0 2px #c05621;
}
.proj-quote-page .sol-qtab th.col-qty { color: #9a3412; }
.proj-quote-page .sol-qtab td.qty-cell.qty-lock,
.proj-quote-page .sol-qtab td.col-ro {
  box-shadow: none;
}
.proj-quote-page .sol-qtab td.qty-cell.qty-lock { background: #f3eee6; }
.proj-quote-page .sol-qtab th.col-ro { font-weight: 650; }
.proj-quote-page .sol-qtab .col-unit {
  white-space: nowrap;
  width: 1%;
  text-align: center;
}
.proj-quote-page .quote-step-start .quote-step-fields {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  grid-template-columns: none;
}
.proj-quote-page .quote-step-start select { min-width: 12rem; max-width: 28rem; flex: 1 1 16rem; }
.proj-quote-page .quote-step-fields .sol-check {
  display: inline-flex;
  align-items: center;
  min-height: 0;
  padding: 0;
  border: 0;
  background: none;
  font-size: 0.82rem;
}
.proj-quote-page .sol-quote-wrap {
  position: relative;
  margin: 0;
  overflow: auto;
  max-height: min(70vh, 40rem);
}
.proj-quote-page .sol-quote-wrap.is-sized { max-height: none; }
.proj-quote-page .sol-quote-wrap .quote-table {
  width: max-content;
  min-width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  border-spacing: 0;
}
.proj-quote-page .quote-step-lines.is-resizing {
  user-select: none;
}
.proj-quote-page .quote-step-lines.is-resizing .qty-in { pointer-events: none; }
.proj-quote-page .qtab-col-grip {
  position: absolute;
  top: 0;
  right: -4px;
  width: 8px;
  height: 100%;
  cursor: col-resize;
  z-index: 5;
}
.proj-quote-page .qtab-row-grip {
  position: absolute;
  left: 0;
  right: 0;
  bottom: -4px;
  height: 8px;
  cursor: row-resize;
  z-index: 4;
}
.proj-quote-page .sol-qtab tbody tr[data-row] { position: relative; }
.proj-quote-page .qtab-v-grip {
  flex: none;
  height: 8px;
  cursor: ns-resize;
  background: #efe6d8;
  border-top: 1px solid #d8cbb8;
}
.proj-quote-page .qtab-v-grip:hover,
.proj-quote-page .qtab-v-grip:active { background: #f6c47a; }
.proj-quote-page .quote-table { width: 100%; }
.proj-quote-page .sol-qspec {
  white-space: nowrap;
}
.proj-quote-page .sol-qspec .spec-link {
  display: block;
  max-width: 100%;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.15;
  text-align: left;
  max-height: none;
}
.proj-quote-page .sol-qtab th,
.proj-quote-page .sol-qtab td {
  padding: 0.06rem 0.28rem;
  border: 1px solid #d8cbb8;
  vertical-align: middle;
  font-size: 0.76rem;
  line-height: 1.15;
  overflow: hidden;
  height: 1.55rem;
  max-height: 1.55rem;
}
.proj-quote-page .sol-qtab th.num,
.proj-quote-page .sol-qtab td.num { width: 1%; }
.proj-quote-page .sol-qtab td .qty-in,
.proj-quote-page .sol-qtab td.qty-cell .qty-in {
  width: 100%;
  min-width: 2.6rem;
  max-width: 4.6rem;
  height: 1.35rem;
  border: 1.5px solid #c05621;
  background: #fff;
  border-radius: 3px;
  padding: 0 0.15rem;
  font-size: 0.76rem;
  font-weight: 700;
  color: #9a3412;
}
.proj-quote-page .qx-agent-unit {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.28rem 0.32rem;
  min-width: 7.5rem;
}
.proj-quote-page .sol-qtab td .qty-in.js-agent-price,
.proj-quote-page .sol-qtab td .qty-in.js-list-price {
  max-width: 5.6rem;
}
.proj-quote-page .sol-qtab td .qty-in.js-agent-price {
  border-color: #2f7a52;
  color: #146c3a;
}
.proj-quote-page .sol-qtab td .qty-in.js-agent-price.is-manual,
.proj-quote-page .sol-qtab td .qty-in.js-list-price.is-manual {
  border-color: #c05621;
  background: #fff8ee;
  color: #9a3412;
}
.proj-quote-page .qx-agent-unit .qx-price-reset {
  padding: 0.14rem 0.42rem;
  font-size: 0.72rem;
  font-weight: 750;
  white-space: nowrap;
  color: #9a3412;
  border: 1px solid #e2a06a;
  background: #fff7ed;
  border-radius: 4px;
  line-height: 1.2;
}
.proj-quote-page .qx-agent-unit .qx-price-reset:hover {
  background: #ffedd5;
  border-color: #c05621;
}
.proj-quote-page .sol-qtab td .qty-in-ro {
  border: 0;
  background: transparent;
  border-radius: 0;
  font-weight: 650;
  color: inherit;
  pointer-events: none;
  box-shadow: none;
}
.proj-quote-page .sol-qtab thead th {
  position: sticky;
  top: 0;
  background: #efe6d8;
  z-index: 1;
  white-space: nowrap;
  line-height: 1.25;
  font-size: 0.78rem;
  font-weight: 700;
  vertical-align: middle;
  border-bottom: 1.5px solid #c4b194;
}
.proj-quote-page .sol-qtab thead th.num { white-space: nowrap; }
.proj-quote-page .sol-qtab thead th.col-qty { background: #f6c47a; }
.proj-quote-page .sol-qtab.is-locked thead th.col-name,
.proj-quote-page .sol-qtab.is-locked thead th.col-model,
.proj-quote-page .sol-qtab.is-locked thead th.col-spec,
.proj-quote-page .sol-qtab.is-locked thead th.col-img,
.proj-quote-page .sol-qtab.is-locked thead th.col-qty,
.proj-quote-page .sol-qtab.is-locked td.col-img { width: auto; min-width: 0; }
.proj-quote-page .sol-qtab .col-no {
  width: 4.2rem;
  min-width: 3.6rem;
  white-space: nowrap;
  text-align: center;
  vertical-align: middle;
}
.proj-quote-page .sol-qtab td.col-no {
  padding-left: 0.2rem;
  padding-right: 0.2rem;
}
.proj-quote-page .sol-qtab tbody.is-row-sorting {
  user-select: none;
  cursor: grabbing;
}
.proj-quote-page .sol-qtab tbody.is-row-sorting .js-line-no {
  pointer-events: none;
}
.proj-quote-page .quote-drag {
  display: inline-block;
  width: 1.1rem;
  cursor: grab;
  color: #9a8168;
  font-size: 0.85rem;
  line-height: 1;
  user-select: none;
  vertical-align: middle;
  touch-action: none;
  padding: 0.35rem 0.15rem;
}
.proj-quote-page .quote-drag:active { cursor: grabbing; }
.proj-quote-page .sol-qtab tr.qx-sys-head td {
  background: #f3ebe0;
  font-weight: 600;
  padding: 0.45rem 0.55rem;
  border-top: 1px solid #e2d4c4;
  vertical-align: middle;
}
.proj-quote-page .sol-qtab tr.qx-sys-head .group-fold,
.proj-quote-page .sol-qtab tr.qx-sys-head .js-sys-fold {
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 0 0.25rem;
  color: #6b5542;
  font-size: 0.85rem;
  line-height: 1;
  vertical-align: middle;
}
.proj-quote-page .sol-qtab tr.qx-sys-head.is-closed .js-sys-fold {
  transform: rotate(-90deg);
  display: inline-block;
}
.proj-quote-page .sol-qtab tr[data-line-key].is-sys-folded {
  display: none;
}
.proj-quote-page .sol-qtab .js-line-no {
  width: 2.4rem;
  min-width: 2.4rem;
  padding: 0.12rem 0.15rem;
  text-align: center;
  vertical-align: middle;
}
.proj-quote-page .sol-qtab tr.is-dragging td {
  opacity: 0.45;
  background: #f3ebe0;
}
.proj-quote-page .sol-qtab tr.is-drag-over td {
  box-shadow: inset 0 2px 0 #c47a2c;
}
.proj-quote-page .sol-qtab thead th.col-name { width: 16%; min-width: 7rem; text-align: left; }
.proj-quote-page .sol-qtab thead th.col-model { width: 10%; min-width: 4rem; text-align: left; }
.proj-quote-page .sol-qtab thead th.col-brand { width: 7%; min-width: 3.2rem; text-align: left; }
.proj-quote-page .sol-qtab td.col-brand {
  color: var(--muted);
  font-size: 0.86rem;
  white-space: nowrap;
  max-width: 6.5rem;
  overflow: hidden;
  text-overflow: ellipsis;
}
.proj-quote-page .sol-qtab thead th.col-spec { width: 22%; min-width: 6rem; text-align: left; }
.proj-quote-page .sol-qtab thead th.col-img,
.proj-quote-page .sol-qtab td.col-img {
  width: 2.4rem;
  text-align: center;
  vertical-align: middle;
}
.proj-quote-page .quote-thumb {
  width: 28px;
  height: 28px;
  object-fit: contain;
  background: #fff;
  display: block;
  margin: 0 auto;
  border: 1px solid #e0d4c2;
  border-radius: 3px;
}
.proj-quote-page .quote-thumb-btn {
  display: block;
  margin: 0 auto;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
}
.proj-quote-page .quote-thumb-btn:hover .quote-thumb {
  border-color: var(--brand);
  box-shadow: 0 0 0 1px var(--brand);
}
.proj-quote-page .quote-thumb-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin: 0 auto;
  background: #f4eee6;
  border: 1px dashed #d8cbb8;
  border-radius: 3px;
  color: #8a6a48;
  font-size: 0.62rem;
  font-weight: 700;
}
.img-dlg {
  border: 1px solid #d8cbb8;
  border-radius: 10px;
  padding: 0.8rem 1rem 0.9rem;
  max-width: min(56rem, 96vw);
}
.img-dlg::backdrop { background: rgba(30, 24, 16, 0.55); }
.img-dlg h3 { margin: 0 0 0.5rem; font-size: 1rem; }
.img-dlg img {
  display: block;
  max-width: min(52rem, 92vw);
  max-height: 80vh;
  object-fit: contain;
  margin: 0 auto 0.7rem;
  background: #fff;
}
.proj-quote-page .sol-qtab thead th.col-qty { width: 4.8rem; }
.proj-quote-page .sol-qtab thead th.col-term { width: 1%; }
.proj-quote-page .sol-qtab thead .quote-ctrl-row th { top: 0; z-index: 2; }
.proj-quote-page .sol-qtab .catalog-name {
  font-size: 0.76rem;
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.proj-quote-page .sol-qtab .catalog-sku {
  display: inline;
  font-size: 0.68rem;
  margin-left: 0.25rem;
  white-space: nowrap;
}
.proj-quote-page .sol-qtab td.col-ro .catalog-name,
.proj-quote-page .sol-qtab td.col-ro .catalog-sku {
  vertical-align: baseline;
}
.proj-quote-page .sol-qtab .sol-model {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.proj-quote-page .sol-qtab .sol-g td {
  padding: 0.22rem 0.35rem;
  background: #efe8dc;
  border-color: #d8cbb8;
  letter-spacing: 0.02em;
}
.proj-quote-page .sol-qtab tfoot td {
  background: #f4eee4;
  font-weight: 650;
  border-top: 1.5px solid #c4b194;
}
.proj-quote-page .sol-qtab tfoot .quote-install-row td {
  background: #fff6ea;
  color: #8a3d12;
}
.proj-quote-page .sol-qtab tfoot .sol-sum-grand td,
.proj-quote-page .sol-qtab tfoot .qx-grand td {
  background: #e8f5e9;
  color: #c0392b;
  font-size: 1.02rem;
}
.proj-quote-page .sol-qtab tfoot .qx-final td {
  background: #fff3cd;
}
.proj-quote-page .sol-qtab tfoot .qx-final input.qty-in {
  width: 7.5rem;
  text-align: right;
  font-weight: 700;
}
.proj-quote-page .sol-qtab tfoot .qx-flab {
  text-align: right;
  font-weight: 700;
}
.proj-quote-page .sol-qtab th.col-list,
.proj-quote-page .sol-qtab td.col-list {
  background: #fff8f0;
  color: #9a3412;
}
.proj-quote-page .sol-qtab th.col-us,
.proj-quote-page .sol-qtab td.col-us {
  background: #eef6f1;
  color: #1f6b43;
}
.proj-quote-page .sol-qtab td.js-amt-list,
.proj-quote-page .sol-qtab tfoot .js-sum-list-grand {
  color: #9a3412;
  font-weight: 700;
}
.proj-quote-page .sol-qtab td.js-amt-agent,
.proj-quote-page .sol-qtab tfoot td.col-us,
.proj-quote-page .sol-qtab tfoot .js-sum-agent-grand {
  color: #1f6b43;
  font-weight: 700;
}
.proj-quote-page .sol-qtab th.col-term,
.proj-quote-page .sol-qtab td.col-term {
  min-width: 0;
  text-align: center;
  vertical-align: middle;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.proj-quote-page .sol-qtab th.col-term {
  font-weight: 650;
  padding: 0.28rem 0.35rem;
}
.proj-quote-page .sol-qtab th.col-term .term-lab {
  display: inline;
  font-size: 0.78rem;
  margin: 0 0.28rem 0 0;
}
.proj-quote-page .sol-qtab th.col-term select,
.proj-quote-page .sol-qtab th.col-term input[type="number"] {
  display: inline-block;
  vertical-align: middle;
  height: 1.7rem;
  box-sizing: border-box;
  margin: 0;
  font-size: 0.76rem;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
  color: #1f6b43;
  border-color: #7eb89a;
  text-align: right;
}
.proj-quote-page .sol-qtab th.col-term select {
  width: 4.2rem;
  text-align: left;
}
.proj-quote-page .sol-qtab th.col-term .term-days,
.proj-quote-page .sol-qtab th.col-term .term-rate,
.proj-quote-page .sol-qtab th.col-term .term-check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.15rem;
  margin: 0;
  vertical-align: middle;
}
.proj-quote-page .sol-qtab th.col-term .term-days input { width: 2.7rem; }
.proj-quote-page .sol-qtab th.col-term .term-rate input { width: 2.8rem; }
.proj-quote-page .sol-qtab th.col-term i {
  font-style: normal;
  font-weight: 500;
  font-size: 0.7rem;
  color: #2f7a52;
}
.proj-quote-page .sol-qtab th.col-term .term-check {
  font-size: 0.74rem;
  font-weight: 600;
}
.proj-quote-page .sol-qtab td.col-term {
  font-size: 0.76rem;
  color: #2f7a52;
}
.proj-quote-page .sol-qtab td.col-spare .term-rate {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.12rem;
  margin: 0;
}
.proj-quote-page .sol-qtab td.col-spare input {
  width: 3rem;
  height: 1.7rem;
  margin: 0;
  padding: 0.1rem 0.2rem;
  text-align: right;
  font-size: 0.76rem;
  font-weight: 650;
  color: #1f6b43;
  border-color: #7eb89a;
}
.proj-quote-page .sol-qtab td.col-spare i {
  font-style: normal;
  font-size: 0.7rem;
  color: #2f7a52;
}
.proj-quote-page .sol-qtab td.col-term-span,
.proj-quote-page .sol-qtab th.col-term-span {
  font-size: 0.74rem;
  font-weight: 500;
  text-align: left;
}
.proj-quote-page .quote-shared header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.45rem 0.75rem;
  margin: 0 0 0.4rem;
}
.proj-quote-page .quote-shared header b { font-size: 0.95rem; color: #3d2a18; }
.proj-quote-page .quote-shared header small { color: #6b4a28; font-size: 0.78rem; }
.proj-quote-page .quote-shared .quote-step-fields .field em { color: #6b4a28; }
.proj-quote-page .quote-svc-th {
  background: #fff6ea !important;
  border-bottom: 1.5px solid #e0a06a;
  text-align: left;
  vertical-align: middle;
  padding: 0.42rem 0.5rem !important;
}
.proj-quote-page .quote-sheet-title {
  font-size: 1rem;
  font-weight: 700;
  margin-right: 0.85rem;
  color: #3d2a18;
}
.proj-quote-page .quote-sheet-title i {
  font-style: normal;
  font-weight: 500;
  font-size: 0.78rem;
  color: #8a6a48;
}
.proj-quote-page .quote-ctrl {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  margin: 0 0.55rem 0 0;
  font-weight: 700;
  color: #8a3d12;
  white-space: nowrap;
}
.proj-quote-page .quote-ctrl input[type="number"] { width: 4.4rem; font-weight: 700; color: #9a3412; border-color: #e0a06a; }
.proj-quote-page .quote-ctrl select { width: 8rem; font-weight: 700; color: #9a3412; border-color: #e0a06a; }
.proj-quote-page .quote-ctrl-agent {
  padding: 0.15rem 0.4rem;
  border: 1.5px solid #c45c26;
  border-radius: 8px;
  background: #fff;
}
.proj-quote-page .qty-cell { white-space: nowrap; }
.proj-quote-page .quote-deal-th { text-align: center; vertical-align: middle; }
.proj-quote-page .quote-deal-th label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.35rem;
  margin: 0 auto;
  font-weight: 650;
  white-space: nowrap;
}
.proj-quote-page .quote-deal-th input {
  width: 5.2rem;
  font-weight: 700;
}
.proj-quote-page .quote-deal-th .field-agent {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: auto;
  padding: 0.2rem 0.4rem;
}
.proj-quote-page .quote-sheet-acts {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 0.4rem;
  margin: 0.55rem 0 0;
  padding-top: 0.5rem;
  border-top: 1px solid #eee4d4;
}
.proj-quote-page .quote-hist {
  padding: 0.45rem 0.75rem 0.55rem;
}
.proj-quote-page .quote-hist summary {
  cursor: pointer;
  font-weight: 700;
  list-style: none;
}
.proj-quote-page .quote-hist summary::-webkit-details-marker { display: none; }
.proj-quote-page .quote-hist summary i {
  font-style: normal;
  font-weight: 500;
  color: #8a6a48;
  font-size: 0.82rem;
}
.proj-quote-page .quote-hist[open] summary { margin-bottom: 0.45rem; }
.proj-quote-page .quote-hist td form.inline {
  display: inline;
  margin: 0;
}
.proj-quote-page .quote-hist td form.inline button.linkish {
  padding: 0;
  border: 0;
  background: none;
  color: var(--link, #1a5fb4);
  cursor: pointer;
  font: inherit;
}
.proj-quote-page .quote-add { margin-top: 0.55rem; }

.ct-sheet {
  background: #fff;
  color: #222;
  max-width: 210mm;
  margin: 0 auto 2rem;
  padding: 16mm 18mm;
  box-shadow: var(--shadow);
  font-family: "宋体", SimSun, "Songti SC", "NSimSun", serif;
  font-size: 10.5pt;
  line-height: 1.15;
}
.ct-sheet, .ct-sheet p, .ct-sheet td, .ct-sheet th, .ct-sheet h1, .ct-sheet h2 {
  font-family: "宋体", SimSun, "Songti SC", "NSimSun", serif;
  color: #222;
}
.ct-sheet h1 {
  text-align: center;
  font-size: 18pt;
  font-weight: 700;
  margin: 0 0 10pt;
  letter-spacing: 0.2em;
}
.ct-sheet h2 { font-size: 12pt; font-weight: 700; margin: 8pt 0 4pt; }
.ct-sheet p { margin: 0 0 4pt; }
.ct-lead { margin-bottom: 6pt; }
.ct-head {
  width: 100%;
  border: 0;
  border-collapse: collapse;
  margin: 0 0 6pt;
  font-size: 11pt;
  min-width: 0 !important;
}
.ct-head td { border: 0; padding: 1pt 0; }
.ct-head .right { text-align: right; white-space: nowrap; width: 42%; }
.ct-bom, .ct-sign {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  margin: 4pt 0 8pt;
  font-size: 9pt;
  min-width: 0 !important;
}
.ct-bom th, .ct-bom td, .ct-sign td {
  border: 1px solid #222;
  padding: 3pt 4pt;
  text-align: center;
  vertical-align: middle;
}
.ct-bom .left, .ct-sign td { text-align: left; }
.ct-bom .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct-note { font-size: 8pt; line-height: 1.45; white-space: normal; }
.ct-sign-tip { margin: 10pt 0 8pt; }
.ct-sign td { width: 50%; font-size: 10pt; padding: 6pt 8pt; }
.ct-sign tr.ct-seal td { height: 28mm; vertical-align: top; }
.ct-stamp-page {
  page-break-before: always;
  break-before: page;
  page-break-inside: avoid;
  break-inside: avoid;
}
dialog.owner-lead-dlg {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 1.15rem 1.25rem 1rem;
  max-width: 28rem;
  width: calc(100vw - 2rem);
  color: var(--ink);
  background: var(--paper);
  box-shadow: 0 18px 48px rgba(40, 28, 16, 0.22);
}
dialog.owner-lead-dlg::backdrop { background: rgba(32, 24, 16, 0.45); }
dialog.owner-lead-dlg h3 { margin: 0 0 0.5rem; }
dialog.owner-lead-dlg ul { margin: 0.4rem 0 0.7rem; padding-left: 1.1rem; }
dialog.owner-lead-dlg li { margin: 0.2rem 0; }

.tender-page .tender-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
  flex-wrap: wrap;
}
.tender-page .tender-toolbar h2 { margin: 0 0 0.25rem; }
.tender-page .tender-toolbar .actions { display: flex; flex-wrap: wrap; gap: 0.4rem; align-items: center; }
.tender-sheet-wrap { overflow-x: auto; }
.tender-sheet { min-width: 960px; }
.tender-sheet th { white-space: nowrap; }
.tender-sheet td { vertical-align: top; }
.tender-sheet .tender-param {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 0.82rem;
  line-height: 1.45;
  max-width: 22rem;
}
.proposal-preview .sol-preview-body {
  max-height: 70vh;
  overflow: auto;
  padding: 0.4rem 0.2rem;
  line-height: 1.55;
}
.proposal-preview .sol-preview-body h3 { margin: 1rem 0 0.4rem; font-size: 1rem; }
.proposal-preview .sol-preview-body p { margin: 0.25rem 0; }

.param-export-bar h3 { margin: 0 0 0.25rem; font-size: 1rem; }
.param-field-picks {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 1rem;
  align-items: center;
  margin-top: 0.55rem;
  font-size: 0.86rem;
}
.param-field-picks > span { color: var(--muted); }
.param-field-picks label { display: inline-flex; gap: 0.3rem; align-items: center; cursor: pointer; }
.param-preview-card { padding: 1rem 1.1rem 1.2rem; }
.param-preview-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  margin-bottom: 0.7rem;
}
.param-preview-head h3 { margin: 0; }
.param-paper {
  background: #fff;
  border: 1px solid #e8dcc8;
  border-radius: 8px;
  padding: 1.4rem 1.6rem 2rem;
  max-width: 52rem;
}
.param-paper-title { text-align: center; margin-bottom: 1.2rem; }
.param-brand { color: #1f4e79; font-weight: 700; letter-spacing: 0.04em; }
.param-paper-title h2 { margin: 0.35rem 0 0.4rem; font-size: 1.25rem; }
.param-card {
  border-top: 1px solid #efe4d2;
  padding: 1rem 0 0.4rem;
  margin-top: 0.6rem;
}
.param-card.off { display: none; }
.param-card h3 { margin: 0 0 0.25rem; color: #1f4e79; font-size: 1.05rem; }
.param-meta { margin: 0 0 0.6rem; color: var(--muted); font-size: 0.82rem; }
.param-pick { display: inline-flex; gap: 0.3rem; align-items: center; font-size: 0.8rem; margin-bottom: 0.35rem; color: var(--muted); }
.param-sec { margin: 0.55rem 0 0.8rem; }
.param-sec.off { display: none; }
.param-sec h4 { margin: 0 0 0.3rem; font-size: 0.92rem; }
.param-sec textarea {
  width: 100%;
  min-height: 5.5rem;
  resize: vertical;
  font: inherit;
  line-height: 1.55;
  padding: 0.5rem 0.6rem;
  border: 1px solid #e4d6c0;
  border-radius: 6px;
  background: #fffdf8;
  box-sizing: border-box;
}
.param-sheet-form .param-export-bar { align-items: center; }

.qt-page > .top { align-items: flex-start; }
.qt-page > .top .actions { display: flex; gap: 0.45rem; align-items: center; flex-wrap: wrap; }
.qt-page > .top .actions form { margin: 0; }
.qt-grid {
  display: grid;
  grid-template-columns: minmax(280px, 380px) minmax(0, 1fr);
  gap: 0.85rem;
  align-items: start;
}
.qt-edit h2, .qt-preview-wrap h2 {
  display: flex;
  align-items: baseline;
  gap: 0.45rem;
  font-size: 0.98rem;
  margin: 1rem 0 0.45rem;
}
.qt-edit h2:first-child, .qt-preview-wrap h2:first-child { margin-top: 0; }
.qt-edit h2 small, .qt-preview-wrap h2 small { font-weight: 400; color: var(--muted); font-size: 0.78rem; }
.qt-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.5rem 0.65rem;
}
.qt-fields .qt-span { grid-column: 1 / -1; }
.qt-fields label, .qt-check {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 0.78rem;
  color: var(--muted);
}
.qt-check { flex-direction: row; align-items: center; align-self: end; padding-bottom: 0.35rem; }
.qt-fields input, .qt-fields textarea {
  font: inherit;
  color: var(--ink);
  border: 1px solid var(--line);
  border-radius: 6px;
  padding: 0.38rem 0.5rem;
  background: #fff;
}
.qt-sort { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.35rem; }
.qt-cols { display: flex; flex-direction: row; flex-wrap: wrap; }
.qt-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.28rem 0.35rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
}
.qt-item.off { opacity: 0.45; }
.qt-item.drag { opacity: 0.35; }
.qt-item.over { outline: 2px dashed var(--brand); }
.qt-grip {
  cursor: grab;
  color: #9aa3ad;
  font-size: 0.85rem;
  letter-spacing: -0.15em;
  user-select: none;
}
.qt-item input {
  flex: 1;
  min-width: 5rem;
  border: 0;
  background: transparent;
  font: inherit;
  padding: 0.15rem 0;
}
.qt-k { font-size: 0.72rem; color: var(--muted); min-width: 3.4rem; }
.qt-eye {
  border: 0;
  background: #eef2f6;
  color: var(--navy);
  border-radius: 999px;
  width: 1.7rem;
  height: 1.5rem;
  font-size: 0.7rem;
  cursor: pointer;
}
.qt-item.off .qt-eye { background: #f3e8e4; color: #9a3412; }
.qt-preview-wrap { overflow: hidden; }
.qt-sheet {
  overflow: auto;
  background: #f7f4ee;
  border: 1px solid #e6ddd0;
  border-radius: 8px;
  padding: 0.75rem;
}
.qt-sheet .qt-title {
  text-align: center;
  color: #1f4e79;
  font-size: 1.15rem;
  font-weight: 700;
  margin-bottom: 0.55rem;
}
.qt-sheet .qt-meta {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.35rem 1.15rem;
  margin-bottom: 0.45rem;
  padding: 0.32rem 0.5rem;
  background: #f4f7fb;
  font-size: 0.78rem;
  overflow-x: auto;
  white-space: nowrap;
}
.qt-sheet .qt-meta span { display: inline-flex; align-items: baseline; gap: 0.35rem; }
.qt-sheet .qt-meta b { color: #1f4e79; font-weight: 650; }
.qt-hint, .qt-foot { color: #666; font-size: 0.75rem; margin: 0.35rem 0; white-space: pre-wrap; }
.qt-table-wrap { overflow: auto; }
.qt-sheet table { border-collapse: collapse; min-width: 100%; font-size: 0.72rem; background: #fff; }
.qt-sheet th {
  background: #1f4e79;
  color: #fff;
  padding: 0.35rem 0.4rem;
  white-space: nowrap;
}
.qt-sheet td { border: 1px solid #b4c6e7; padding: 0.28rem 0.35rem; }
.qt-sheet td.num { text-align: right; }
.qt-sheet tr.qt-sum td { background: #fff3cd; font-weight: 650; }
.qt-sheet tr.qt-sum:nth-last-child(2) td { background: #e8f5e9; color: #c0392b; }
@media (max-width: 1100px) {
  .qt-grid { grid-template-columns: 1fr; }
}

body:has(.proj-page) .main { padding-left: 1.1rem; padding-right: 1.1rem; }
.proj-page > .top {
  align-items: flex-start;
  gap: 0.55rem 1rem;
  margin-bottom: 0.5rem;
}
.proj-page > .top h1 { font-size: 1.28rem; margin: 0 0 0.22rem; }
.proj-page > .top h1 a { color: inherit; text-decoration: none; }
.proj-page > .top h1 a:hover { color: var(--brand); }
.proj-page > .top .actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
  position: sticky;
  top: 0.55rem;
  z-index: 8;
}
.btn.proj-home-btn,
a.btn.proj-home-btn {
  background: #1e3a4c;
  border: 1px solid #1e3a4c;
  color: #fff !important;
  font-weight: 700;
  padding: 0.42rem 0.95rem;
  border-radius: 8px;
  white-space: nowrap;
  box-shadow: 0 1px 0 rgba(255,255,255,0.12) inset;
}
.btn.proj-home-btn:hover,
a.btn.proj-home-btn:hover {
  background: #2a5168;
  border-color: #2a5168;
  color: #fff !important;
}
.btn.proj-prev-btn,
a.btn.proj-prev-btn {
  font-weight: 700;
  white-space: nowrap;
}
.tag.proj-stage-tag {
  background: #fff4e8;
  color: #8f3d14;
  border: 1px solid #e7c4a4;
}
.proj-page > .top .actions form { margin: 0; }
.proj-page .hosp-meta { gap: 0.28rem 0.45rem; margin-top: 0.2rem; }
.proj-page .hosp-meta .tag { font-size: 0.74rem; }
.proj-flow.hosp-jump {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0 0 1rem;
  padding: 0.45rem 0.5rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.proj-flow:not(.has-tender) .proj-phases {
  grid-template-columns: 1fr 2fr 1fr 1fr;
}
.proj-flow.has-tender .proj-phases,
.proj-phases {
  display: grid;
  grid-template-columns: 1fr 2fr 2fr 1fr;
  gap: 0.35rem;
  margin: 0 0 0.28rem;
  padding: 0 0.1rem;
}
.proj-phases .ph {
  text-align: center;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.25;
  color: var(--muted);
}
.proj-phases .ph-pre { color: #2a7a6e; }
.proj-phases .ph-mid { color: #3d4fa3; }
.proj-phases .ph-after { color: #8a6d1a; }
.proj-steps {
  display: flex;
  align-items: stretch;
  list-style: none;
  margin: 0;
  padding: 0;
  width: 100%;
}
.proj-steps li {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
}
.proj-steps a {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.12rem;
  min-height: 3.9rem;
  padding: 0.4rem 1.25rem 0.4rem 1.45rem;
  margin-right: -12px;
  background: #f4eee4;
  color: #4a4338;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.15;
  text-decoration: none;
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 50%, calc(100% - 16px) 100%, 0 100%, 16px 50%);
}
.proj-steps li:first-child a {
  padding-left: 0.75rem;
  clip-path: polygon(0 0, calc(100% - 16px) 0, 100% 50%, calc(100% - 16px) 100%, 0 100%);
  border-radius: 10px 0 0 10px;
}
.proj-steps li:last-child a {
  margin-right: 0;
  padding-right: 0.75rem;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 16px 50%);
  border-radius: 0 10px 10px 0;
}
.proj-steps a:hover {
  text-decoration: none;
  color: var(--ink);
  background: #eadfce;
}
.proj-steps a.on {
  background: var(--brand);
  color: #fff;
  font-weight: 700;
  box-shadow: none;
  border-bottom: 0;
}
.proj-steps a.on:hover { color: #fff; background: var(--brand-dark); }
.proj-steps a .n {
  display: block;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  opacity: 0.7;
}
.proj-steps a small {
  display: block;
  font-size: 0.68rem;
  font-weight: 600;
  opacity: 0.65;
}
.exp-travel { margin: 0 0 0.7rem; color: var(--muted); }
.exp-travel.warn { color: var(--err); font-weight: 650; }
.stage-acts { margin: 0.35rem 0 0.85rem; }
.proj-steps a b {
  font-weight: 700;
  margin-left: 0.15rem;
  font-size: 0.78rem;
}
.proj-flow-more {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.proj-flow-more a {
  padding: 0.42rem 0.95rem;
  border-radius: 8px;
  background: #f4eee4;
  color: var(--muted);
  font-size: 0.95rem;
  font-weight: 650;
  text-decoration: none;
}
.proj-flow-more a:hover {
  text-decoration: none;
  color: var(--ink);
  background: #eadfce;
}
.proj-flow-more a.on {
  background: var(--brand);
  color: #fff;
  box-shadow: none;
}
@media (max-width: 900px) {
  .proj-phases { display: none; }
  .proj-steps { flex-wrap: wrap; gap: 0.35rem; }
  .proj-steps li { flex: 1 1 calc(33.33% - 0.35rem); }
  .proj-steps a,
  .proj-steps li:first-child a,
  .proj-steps li:last-child a {
    margin-right: 0;
    padding: 0.5rem 0.45rem;
    min-height: 3.4rem;
    clip-path: none;
    border-radius: 9px;
  }
}
.proj-page .select-steps {
  width: 100%;
  box-sizing: border-box;
  margin: -0.25rem 0 0.7rem;
}
.proj-page .card { margin-bottom: 0.7rem; }
.proj-page .tender-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.proj-page .tender-toolbar h2 { margin: 0 0 0.25rem; font-size: 1.05rem; }
.proj-page .tender-toolbar .muted { margin: 0; }
.proj-page .sol-toolbar { padding: 0.7rem 0.85rem; }
.proj-page .select-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 0.7rem;
  flex-wrap: wrap;
  margin-bottom: 0.55rem;
}
.proj-page table.compact th,
.proj-page table.compact td {
  padding: 0.38rem 0.5rem;
  font-size: 0.86rem;
}
.proj-list-page .search {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0 0 0.55rem;
}
.proj-list-page .hospital-map {
  height: 280px;
  margin: 0 0 0.7rem;
  border-radius: 10px;
  border: 1px solid var(--line);
}
.proj-list-card { padding: 0; overflow: hidden; }
.proj-list-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.4rem 1rem;
  padding: 0.75rem 1rem 0.55rem;
  border-bottom: 1px solid var(--line);
}
.proj-list-head h2 { margin: 0; }
.proj-list-head p { margin: 0; }
.proj-list-table { margin: 0; }
.proj-list-table th {
  background: #f7f1e8;
  font-size: 0.78rem;
  white-space: nowrap;
}
.proj-list-table td { vertical-align: middle; }
.proj-list-table .nowrap { white-space: nowrap; }
.proj-list-table .nowrap a { margin-right: 0.4rem; }
.proj-page .proj-overview { padding: 0.85rem; }
.proj-page .proj-kpis > div { padding: 0.55rem 0.65rem; }
.proj-page .sku-block { margin-bottom: 0.65rem; }
.proj-page .sku-block legend { display: flex; align-items: center; gap: 0.4rem; }
.quote-tabs {
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 0.75rem;
}
.scheme-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem 0.85rem;
  margin: 0 0 0.55rem;
  padding: 0.5rem 0.7rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
}
.scheme-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  flex: 2 1 16rem;
}
.scheme-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.08rem;
  padding: 0.4rem 0.7rem;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #faf7f2;
  color: inherit;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.scheme-chip small { font-weight: 600; color: var(--muted); }
.scheme-chip.on {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
}
.scheme-chip.on small { color: rgba(255,255,255,0.8); }
.scheme-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
}
.scheme-lock-note {
  display: grid;
  gap: 0.65rem;
}
.scheme-lock-note p { margin: 0; }
.scheme-lock-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
}
.scheme-new-dlg { max-width: 26rem; }
.scheme-new-dlg .dlg-bar .muted { margin: 0.25rem 0 0; font-size: 0.82rem; line-height: 1.4; }
.scheme-new-form { display: grid; gap: 0.75rem; padding: 0.2rem 0 0.3rem; }
.scheme-new-mode {
  margin: 0;
  padding: 0.55rem 0.7rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  display: grid;
  gap: 0.45rem;
}
.scheme-new-mode legend {
  padding: 0 0.25rem;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--muted);
}
.scheme-new-opt {
  display: flex;
  gap: 0.55rem;
  align-items: flex-start;
  cursor: pointer;
}
.scheme-new-opt input { margin-top: 0.2rem; }
.scheme-new-opt span { display: grid; gap: 0.1rem; }
.scheme-new-opt b { font-size: 0.9rem; }
.scheme-new-opt small { color: var(--muted); font-size: 0.78rem; line-height: 1.35; }
.quote-pane-seg {
  margin: 0 0 0.7rem;
  width: fit-content;
}
a.btn.quote-back-select {
  background: #8a3a2a;
  border-color: #8a3a2a;
  color: #fff !important;
  font-weight: 700;
  white-space: nowrap;
}
a.btn.quote-back-select:hover {
  background: #6f2e22;
  border-color: #6f2e22;
  color: #fff !important;
}
.quote-step-lines header a.btn.quote-back-select.ghost {
  background: #fff;
  border: 1px solid #8a3a2a;
  color: #8a3a2a !important;
  padding: 0.28rem 0.7rem;
  font-size: 0.82rem;
}
.quote-step-lines header a.btn.quote-back-select.ghost:hover {
  background: #f8efe4;
}
.quote-select {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
}
.quote-select .quote-board { width: 100%; }
.quote-select .select-unified-toolbar {
  display: flex;
  flex-direction: column;
  gap: 0.45rem;
  margin: 0 0 0.55rem;
}
.quote-select .select-sys-chips {
  flex-wrap: wrap;
  gap: 0.35rem;
}
/* 选型系统芯片：外观对齐产品中心 */
.quote-select.catalog-page .catalog-seg .sys-chip.is-cur {
  outline: 2px solid rgba(196, 122, 44, 0.85);
  outline-offset: 2px;
}
.quote-select .select-prod-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  margin: 0 0 0.45rem;
  padding: 0.4rem 0.55rem;
  background: #faf6f0;
  border: 1px solid #efe4d4;
  border-radius: 6px;
}
.quote-select .select-prod-toolbar .js-cur-sys-name {
  font-size: 0.92rem;
  color: #2c241c;
  min-width: 5rem;
}
.quote-select .select-prod-toolbar input[type="search"] {
  min-width: 12rem;
  flex: 1 1 10rem;
}
.quote-select .select-prod-toolbar select {
  max-width: 8.5rem;
}
.quote-select .select-foot-sticky {
  position: sticky;
  bottom: 0;
  z-index: 4;
  background: rgba(255, 252, 247, 0.96);
  border-top: 1px solid #e8dccb;
  margin-top: 0.6rem;
  padding: 0.55rem 0.2rem;
  backdrop-filter: blur(4px);
}
.quote-select .js-select-saved {
  color: #2f6b3a;
  font-size: 0.78rem;
}
.quote-select .sel-sys-block.is-pane[hidden] {
  display: none !important;
}
.catalog-page .catalog-sheet tr.is-acc td.col-name,
.catalog-page .catalog-sheet tr.is-acc td.col-ord {
  padding-left: 0.35rem;
}
.catalog-page .catalog-sheet tr.is-acc {
  background: #fbf8f3;
}
.catalog-page .catalog-sheet tr.is-acc .prod-acc-mark {
  display: inline-block;
  width: 1.1rem;
  color: #9a7b55;
  font-size: 0.85rem;
  text-align: center;
}
.catalog-page .catalog-sheet tr.is-acc .catalog-name {
  font-weight: 500;
}
.quote-select .select-sys-form,
.quote-select .select-sku-form { margin: 0; }
.quote-select .quote-step header .select-tools {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.quote-select .quote-step header .select-tools input[type="search"] {
  width: 9.5rem;
  margin: 0;
}
.quote-select .catalog-page { margin: 0; }
.quote-select .sku-ghead {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.7rem;
}
.quote-select .sku-ghead strong { font-size: 0.92rem; }
.quote-select .sku-ghead label {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin: 0;
  font-size: 0.78rem;
  color: #8a6a48;
  font-weight: 650;
}
.quote-select .sku-ghead select,
.quote-select .sku-ghead input[type="number"] {
  width: auto;
  min-width: 6.5rem;
  max-width: 12rem;
  margin: 0;
  padding: 0.18rem 0.35rem;
}
.quote-select .sku-ghead input[type="number"] { max-width: 4.5rem; }
.quote-select .sku-tick { font-weight: 600; }
.quote-select .sku-qtab td select { width: 100%; max-width: none; }
.quote-select .sku-model-cell {
  min-width: 16rem;
  max-width: 34rem;
  vertical-align: top;
}
.quote-select .sku-full {
  margin: 0.28rem 0 0;
  padding: 0.28rem 0.4rem;
  border-radius: 6px;
  background: #fff8ef;
  border: 1px solid #edd9c0;
  color: #1f2a36;
  font-size: 0.78rem;
  font-weight: 650;
  line-height: 1.4;
  white-space: normal;
  word-break: break-word;
}
.quote-select .sku-full[hidden] { display: none !important; }
.quote-select .sku-pick-col,
.sku-table .sku-pick-col { width: 3.2rem; text-align: center; }
.quote-select tr.sku-line.off td,
.sku-table tr.sku-line.off td { opacity: 0.45; }
.quote-select tr.sku-line.off select { pointer-events: none; }
.quote-select tr.sku-line.acc td:nth-child(2) { padding-left: 1.15rem; color: #6b5340; font-weight: 650; }
.catalog-name.qx-acc { padding-left: 0.7rem; color: #6b5340; }
.acc-pick { position: relative; margin: 0.4rem 0 0.55rem; max-width: 28rem; }
.acc-table { width: 100%; margin-top: 0.35rem; }
.acc-table input.acc-ratio { width: 4.5rem; }
.quote-select .select-foot {
  position: static;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.7rem;
  margin-top: 0.55rem;
  padding: 0.15rem 0 0;
  background: none;
}
/* 选型：按系统产品清单（紧凑） */
.quote-select .select-prod-compact > header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.65rem;
  margin-bottom: 0.4rem;
}
.quote-select .select-prod-compact > header .qp-hint {
  flex: 1 1 12rem;
  font-size: 0.78rem;
  color: #8a7460;
}
.quote-select .sel-sys-block {
  margin: 0 0 0.5rem;
  border: 1px solid #e8dcc8;
  border-radius: 8px;
  background: #fffdf9;
  overflow: hidden;
}
.quote-select .sel-sys-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.55rem;
  padding: 0.35rem 0.5rem;
  background: #f7f0e6;
  border-bottom: 1px solid #eadfce;
}
.quote-select .sel-sys-bar > strong,
.quote-select .sel-sys-bar .js-sys-toggle {
  font-size: 0.88rem;
  color: #3d2f22;
}
.quote-select .sel-sys-block.can-fold .js-sys-toggle {
  cursor: pointer;
  user-select: none;
}
.quote-select .sel-sys-bar .js-sys-fold {
  flex: 0 0 auto;
  width: 1.5rem;
  height: 1.5rem;
  padding: 0;
  border: 1px solid #d7c7b0;
  border-radius: 4px;
  background: #fff;
  color: #5a4630;
  font-size: 0.85rem;
  line-height: 1;
  cursor: pointer;
}
.quote-select .sel-sys-block.is-closed .js-sys-fold {
  transform: rotate(-90deg);
}
.quote-select .sel-sys-block.is-closed .sel-prod-wrap {
  display: none;
}
.quote-select .sel-sys-block.is-closed .sel-sys-bar {
  border-bottom: none;
}
.quote-select .sel-sys-bar .muted {
  font-size: 0.78rem;
}
.quote-select .sel-sys-bar .sel-sys-save {
  flex: 0 0 auto;
  margin: 0;
  padding: 0.28rem 0.85rem;
  font-size: 0.82rem;
  font-weight: 700;
  min-width: 3.6rem;
}
/* 选型：系列色块筛选 */
.select-series-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.45rem 0.65rem;
  margin: 0.35rem 0 0.55rem;
  padding: 0 0.15rem;
}
.select-series-bar .series-tiles {
  flex: 1 1 12rem;
  min-width: 0;
  grid-template-columns: repeat(auto-fill, minmax(6.2rem, 1fr));
}
.select-series-bar .series-tile {
  min-height: 3.8rem;
  aspect-ratio: auto;
  padding: 0.28rem 0.18rem;
  font-size: 0.92rem;
}
.select-series-bar .js-series-check-all {
  flex: 0 0 auto;
  margin-bottom: 0.15rem;
}
@media (max-width: 720px) {
  .select-series-bar .series-tiles {
    grid-template-columns: repeat(auto-fill, minmax(3.8rem, 1fr));
  }
}
.quote-select .sel-mini {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.78rem;
  font-weight: 600;
}
.quote-select .sel-mini input {
  width: 3.6rem;
  padding: 0.15rem 0.3rem;
  font-size: 0.78rem;
}
.quote-select .sel-prod-qtab {
  position: relative;
  margin: 0;
}
.quote-select .sel-prod-wrap {
  max-height: min(48vh, 26rem);
  overflow: auto;
}
.quote-select .sel-prod-qtab.is-resizing {
  user-select: none;
}
.quote-select .sel-prod-qtab .qtab-col-grip {
  position: absolute;
  top: 0;
  right: -4px;
  width: 8px;
  height: 100%;
  cursor: col-resize;
  z-index: 5;
}
.quote-select .sel-prod-table {
  width: max-content;
  min-width: 100%;
  table-layout: fixed;
  font-size: 0.8rem;
  border-collapse: collapse;
}
.quote-select .sel-prod-table th,
.quote-select .sel-prod-table td {
  padding: 0.22rem 0.4rem;
  border-bottom: 1px solid #f0e6d8;
  vertical-align: middle;
}
.quote-select .sel-prod-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #faf6f0;
  font-weight: 650;
  color: #5c4a3a;
  font-size: 0.74rem;
}
.quote-select .sel-prod-table .col-name { text-align: left; }
.quote-select .sel-prod-table .col-brand,
.quote-select .sel-prod-table .col-model,
.quote-select .sel-prod-table .col-brief {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.quote-select .sel-prod-table .col-price { text-align: right; font-variant-numeric: tabular-nums; }
.quote-select .sel-prod-table .catalog-name {
  font-size: 0.82rem;
  font-weight: 650;
  color: #2c241c;
}
.quote-select .sel-prod-table .catalog-sku {
  font-size: 0.72rem;
}
.quote-select .sel-prod-table tr.is-acc td.col-name .catalog-name {
  padding-left: 0.6rem;
  font-weight: 550;
}
.quote-select .sel-prod-table tr.is-acc {
  background: #fbf8f4;
}
.quote-select .sel-prod-table tr.is-acc.off {
  opacity: 0.55;
}
  color: #8a7460;
}
.quote-select .sel-prod-table tr.group td {
  padding: 0.18rem 0.4rem;
  background: #f3ebe0;
  color: #6b5340;
  font-size: 0.74rem;
  font-weight: 650;
}
.quote-select .sel-prod-table tr.js-prod {
  cursor: default;
}
.quote-select .sel-prod-table tr.js-prod:nth-child(even) td {
  background: #fff;
  color: inherit;
}
.quote-select .sel-prod-table tr.js-prod:hover td {
  background: #f5efe6;
  color: inherit;
}
.quote-select .sel-prod-table tr.js-prod.off td {
  opacity: 0.42;
}
.quote-select .sel-prod-table .tag.mute {
  font-size: 0.68rem;
  font-weight: 600;
  color: #8a7460;
  background: #efe6d8;
  border-radius: 3px;
  padding: 0.05rem 0.28rem;
}
.select-foot-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem;
  flex-shrink: 0;
}
a.btn.select-to-quote {
  background: #1e3a4c;
  border: 1px solid #1e3a4c;
  color: #fff !important;
  font-weight: 800;
  font-size: 0.95rem;
  padding: 0.48rem 1.15rem;
  border-radius: 8px;
  white-space: nowrap;
  box-shadow: 0 2px 0 #142833;
}
a.btn.select-to-quote:hover {
  background: #2a5168;
  border-color: #2a5168;
  color: #fff !important;
}
.quote-saved {
  color: #146c3a !important;
  font-weight: 700;
}
.quote-saved.is-dirty {
  color: #b35a00 !important;
}
.quote-step-lines header a.btn.select-to-quote {
  margin-left: auto;
}
.proj-quote-page .quote-saved {
  color: #146c3a !important;
  font-weight: 700;
}
.proj-quote-page .quote-saved.is-dirty {
  color: #b35a00 !important;
}

@media print {
  .no-print, header, nav, aside.side, .flash, .crumb { display: none !important; }
  body, .app, .app main, .app .body, .main { background: #fff !important; padding: 0 !important; }
  .ct-sheet { box-shadow: none; margin: 0; max-width: none; padding: 0; }
  .tender-page .hosp-jump,
  .tender-page .select-steps,
  .tender-page .tender-toolbar .actions,
  .tender-page .top .actions { display: none !important; }
  .tender-sheet { min-width: 0; }
  .tender-sheet .tender-param { max-width: none; }
  .tender-sheet-wrap { display: none !important; }
  .param-export-bar, .param-pick { display: none !important; }
  .param-paper { border: 0; padding: 0; max-width: none; }
  .param-sec textarea {
    border: 0;
    padding: 0;
    background: transparent;
    overflow: hidden;
  }
}
.file-view {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.2rem;
}
.file-view[hidden] { display: none; }
.file-view-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(18, 28, 45, 0.62);
}
.file-view-panel {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  width: min(96vw, 1100px);
  height: min(92vh, 860px);
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 18px 48px rgba(12, 20, 36, 0.28);
  overflow: hidden;
}
.file-view-bar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.55rem 0.75rem;
  border-bottom: 1px solid #eadfce;
  background: #faf6ef;
}
.file-view-bar strong { flex: 1; color: var(--navy); }
.file-view-bar a { font-size: 0.88rem; }
.file-view-panel iframe,
.file-view-panel img {
  flex: 1;
  width: 100%;
  height: 100%;
  border: 0;
  background: #2b3340;
  object-fit: contain;
}
.file-view-panel #file-view-fallback { margin: 1.2rem; }
.file-view-docx-err { margin: 0.75rem 1rem 0; color: #a33; }
.file-view-docx {
  flex: 1;
  overflow: auto;
  background: #e8eaed;
  padding: 1rem 0.75rem 1.2rem;
}
.file-view-docx .docx-wrapper {
  background: transparent !important;
  padding: 0 !important;
}
.file-view-docx .docx-wrapper > section.docx {
  box-shadow: 0 8px 24px rgba(12, 20, 36, 0.16);
  margin: 0 auto 1rem !important;
  background: #fff;
}
.docx-page {
  max-width: 1100px;
  margin: 0 auto 2rem;
  background: #fff;
  border: 1px solid #eadfce;
  border-radius: 10px;
  overflow: hidden;
  min-height: 70vh;
  display: flex;
  flex-direction: column;
}
.docx-page .file-view-bar { position: sticky; top: 0; z-index: 2; }
.docx-page .file-view-docx { min-height: 60vh; }
.prod-photo-view-wrap { cursor: zoom-in; }
.prod-file-group {
  margin: 0.55rem 0 0.2rem;
  padding: 0.5rem 0.65rem 0.45rem;
  border: 1px solid #eadfce;
  border-radius: 8px;
  background: #fffdf9;
}
.prod-file-group h4 {
  margin: 0 0 0.3rem;
  font-size: 0.88rem;
  color: var(--navy);
}
.prod-file-group .catalog-files { margin-bottom: 0.2rem; }
.prod-file-groups .prod-file-group { background: #fff; }

.proj-quote-page.ct-page { max-width: 1240px; }
.ct-top-bar {
  margin: 0 0 0.5rem;
  padding: 0.32rem 0.55rem 0.42rem;
  border: 2px solid #e07a2f;
  border-radius: 8px;
  background: #fff6ec;
  box-shadow: 0 0 0 3px rgba(224, 122, 47, 0.14);
}
.ct-top-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.5rem;
  margin: 0 0 0.32rem;
}
.ct-top-head > b {
  color: #c45c26;
  font-size: 0.9rem;
  line-height: 1.2;
}
.ct-top-acts { margin-left: auto; }
.ct-top-fields {
  display: grid;
  grid-template-columns: 8.2rem minmax(9rem, 1.5fr) 8.4rem 9.2rem 7.2rem 7.6rem;
  gap: 0.22rem 0.38rem;
  margin: 0 0 0.32rem;
}
.ct-top-fields .field {
  margin: 0;
  font-size: 0.76rem;
  font-weight: 700;
  color: #8a4b00;
}
.ct-top-fields .field input,
.ct-top-fields .field select {
  width: 100%;
  margin-top: 0.08rem;
  padding: 0.2rem 0.38rem;
  background: #fff;
  border: 2px solid #e0b000;
  border-radius: 5px;
  font-weight: 650;
}
.ct-top-bar .ct-pay-compact {
  padding: 0;
  margin: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.ct-top-bar .ct-pay-compact .ct-pay-grid {
  grid-template-columns: minmax(0, 1.25fr) minmax(15rem, 0.75fr);
  gap: 0.28rem 0.7rem;
  align-items: start;
}
.ct-top-bar .ct-schemes {
  margin: 0;
  padding-right: 2.1rem;
}
.ct-top-bar .ct-schemes-k {
  margin: 0 0 0.12rem;
  font-size: 0.76rem;
  font-weight: 700;
  color: #c45c26;
}
.ct-top-bar .ct-scheme-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}
.ct-top-bar .ct-scheme {
  padding: 0.16rem 0.52rem;
  border-radius: 999px;
  align-items: center;
  background: #fff;
}
.ct-top-bar .ct-scheme b { font-size: 0.78rem; }
.ct-top-bar .ct-scheme small,
.ct-top-bar .ct-scheme em { display: none; }
.ct-top-bar .ct-scheme.on,
.ct-top-bar .ct-scheme:has(input:checked) {
  border: 2px solid #c45c26;
  background: #ffe8d2;
  box-shadow: 0 0 0 2px rgba(196, 92, 38, 0.2);
}
.ct-top-refill { margin: 0.18rem 0 0; }
.ct-top-refill .pay-refill { padding: 0.12rem 0.5rem; font-size: 0.76rem; }
.ct-top-bar .ct-pay-extra,
.ct-top-bar .ct-ship-row {
  margin-top: 0.18rem;
  gap: 0.28rem 0.4rem;
}
.ct-top-bar .ct-pay-extra { grid-template-columns: repeat(auto-fit, minmax(6.8rem, 1fr)); }
.ct-top-bar .ct-ship-row { grid-template-columns: repeat(3, minmax(6.5rem, 1fr)); }
.ct-top-bar .ct-pay-compact .field { font-size: 0.76rem; }
.ct-top-bar .ct-pay-compact .field input {
  padding: 0.18rem 0.35rem;
  border: 2px solid #e07a2f;
  background: #fff;
}
.ct-top-bar .ct-clause .pay-clause { font-size: 0.76rem; font-weight: 700; color: #c45c26; }
.ct-top-bar .ct-clause .pay-terms-area {
  min-height: 4rem;
  margin-top: 0.08rem;
  padding: 0.3rem 0.4rem;
  background: #fff;
  border: 2px solid #e07a2f;
  font-size: 0.8rem;
  line-height: 1.35;
}
.ct-top-bar .ct-pay-compact .muted { margin: 0.15rem 0 0; font-size: 0.76rem; }
.ct-zone {
  margin: 0 0 0.35rem;
  padding: 0.28rem 0.4rem 0.4rem;
  border: 1px solid #ead7c0;
  border-radius: 7px;
  background: #fffdf9;
}
.ct-zone.is-now {
  border-color: #e07a2f;
  background: #fff8f0;
  box-shadow: 0 0 0 2px rgba(224, 122, 47, 0.12);
}
.ct-zone-h {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.28rem 0.4rem;
  margin: 0 0 0.28rem;
}
.ct-zone-h b {
  font-size: 0.84rem;
  color: #8a4b00;
  line-height: 1.2;
}
.ct-zone-h small {
  color: #9a7a55;
  font-size: 0.72rem;
}
.ct-zone-n,
.ct-preview-step header .ct-zone-n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.2rem;
  height: 1.2rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 800;
  flex: none;
}
.ct-zone.is-now .ct-zone-n,
.ct-preview-step.is-now header .ct-zone-n {
  background: #c45c26;
  box-shadow: 0 0 0 3px rgba(196, 92, 38, 0.22);
}
.ct-top-bar .ct-zone-info {
  margin-bottom: 0.4rem;
  border-color: #e0b000;
  background: #fff8e4;
}
.ct-top-bar .ct-pay-zones {
  padding: 0;
  margin: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.ct-pay-zones-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(11rem, 0.7fr) minmax(14rem, 0.9fr);
  gap: 0.35rem;
  align-items: stretch;
}
.ct-zone-scheme { border-color: #e07a2f; background: #fff4e8; }
.ct-zone-ship { border-color: #7a9bb8; background: #f3f7fb; }
.ct-zone-ship .ct-zone-h b { color: #1e4a6c; }
.ct-zone-ship .ct-zone-n { background: #3d6b8a; }
.ct-zone-clause { border-color: #e07a2f; background: #fff4e8; }
.ct-counterpart {
  margin: 0.75rem 0 0;
  border: 1px solid #c5d4c8;
  background: #f4f8f5;
  border-radius: 8px;
  padding: 0.55rem 0.7rem 0.7rem;
}
.ct-counterpart .ct-zone-n { background: #3d6b52; }
.ct-counterpart-body { margin-top: 0.35rem; }
.ct-counterpart-file {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  margin: 0 0 0.45rem;
  flex-wrap: wrap;
}
.ct-counterpart-acts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.7rem;
}
.ct-counterpart-up {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.8rem;
  margin-top: 0.35rem;
}
.ct-filebtn { cursor: pointer; margin: 0; }
.ct-filebtn input[type=file] { display: none; }
.ct-zone-clause .pay-clause { margin: 0; }
.ct-zone-clause .pay-terms-area {
  min-height: 4.2rem;
  margin: 0;
  padding: 0.3rem 0.4rem;
  background: #fff;
  border: 2px solid #e07a2f;
  font-size: 0.8rem;
  line-height: 1.35;
}
.ct-preview-step header b {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
}
.ct-zone-steps li { flex: 1 1 7rem; }
@media (max-width: 1100px) {
  .ct-pay-zones-grid { grid-template-columns: 1fr 1fr; }
  .ct-zone-clause { grid-column: 1 / -1; }
}
@media (max-width: 980px) {
  .ct-top-fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ct-top-bar .ct-pay-compact .ct-pay-grid { grid-template-columns: 1fr; }
  .ct-pay-zones-grid { grid-template-columns: 1fr; }
}
.ct-preview-wrap {
  overflow: auto;
  max-height: min(78vh, 980px);
  background: #d8d2c6;
  padding: 10px 8px 16px;
}
.ct-preview {
  zoom: 0.78;
}
.ct-paper {
  position: relative;
  width: 210mm;
  min-height: 297mm;
  margin: 0 auto 14px;
  background: #fff;
  color: #222;
  padding: 16mm 18mm 18mm;
  box-shadow: 0 10px 28px rgba(40, 30, 16, .14);
}
.ct-preview .ct-main,
.ct-preview .ct-stamp-page,
.ct-preview .ct-main p,
.ct-preview .ct-stamp-page p,
.ct-preview .ct-main td,
.ct-preview .ct-stamp-page td,
.ct-preview .ct-main th,
.ct-preview .ct-stamp-page th,
.ct-preview .ct-main h1,
.ct-preview .ct-stamp-page h1,
.ct-preview .ct-main h2 {
  font-family: "宋体", SimSun, "Songti SC", "NSimSun", serif;
  color: #222;
}
.ct-preview h1 {
  text-align: center;
  font-size: 18pt;
  font-weight: 700;
  margin: 0 0 10pt;
  letter-spacing: 0.28em;
}
.ct-preview h2 { font-size: 12pt; font-weight: 700; margin: 8pt 0 4pt; }
.ct-preview p { margin: 0 0 4pt; font-size: 10.5pt; line-height: 1.22; text-align: justify; }
.ct-preview .ct-lead { margin-bottom: 6pt; }
.ct-preview .ct-stamp-sub { text-align: center; font-size: 11pt; margin: 0 0 14pt; letter-spacing: 0.04em; }
.ct-preview .ct-sign-tip { text-align: center; margin: 0 0 12pt; color: #444; }
.ct-preview .ct-head { width: 100%; border: 0; border-collapse: collapse; margin: 0 0 6pt; font-size: 11pt; }
.ct-preview .ct-head td { border: 0; padding: 1.5pt 0; vertical-align: top; }
.ct-preview .ct-head .right { text-align: right; white-space: nowrap; width: 38%; }
.ct-preview .ct-bom,
.ct-preview .ct-sign {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  margin: 4pt 0 8pt;
  font-size: 9pt;
}
.ct-preview .ct-bom th,
.ct-preview .ct-bom td,
.ct-preview .ct-sign td {
  border: 1px solid #222;
  padding: 3.5pt 4pt;
  text-align: center;
  vertical-align: middle;
  overflow-wrap: break-word;
}
.ct-preview .ct-bom thead th { font-weight: 700; background: #f6f4ef; }
.ct-preview .ct-bom .left,
.ct-preview .ct-sign td { text-align: left; }
.ct-preview .ct-bom .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct-preview .ct-note { font-size: 8pt; line-height: 1.4; }
.ct-preview .c-kind { width: 9%; }
.ct-preview .c-name { width: 22%; }
.ct-preview .c-model { width: 14%; }
.ct-preview .c-qty { width: 8%; }
.ct-preview .c-unit { width: 7%; }
.ct-preview .c-price { width: 13%; }
.ct-preview .c-amt { width: 14%; }
.ct-preview .c-note { width: 13%; }
.ct-preview .ct-sign { margin-top: 6pt; }
.ct-preview .ct-sign td { width: 50%; font-size: 10.5pt; padding: 7pt 8pt; }
.ct-preview .ct-sign tr.ct-seal td { height: 42mm; vertical-align: top; }
.ct-preview .ct-stamp-page { min-height: 250mm; }
.ct-preview .ct-k {
  background: #fff3b0;
  box-shadow: 0 0 0 2px #fff3b0;
  padding: 0 0.08em;
}
.ct-preview .ct-k-block {
  background: #fff8d6;
  box-shadow: inset 0 0 0 2px #e6c84a;
}
.proj-quote-page .ct-check-pack {
  grid-template-columns: minmax(16rem, 0.85fr) minmax(0, 1.55fr);
  margin-bottom: 0.55rem;
}
.proj-quote-page .ct-check-pack .qp-info {
  background: #fff8e4;
  border-color: #e0b000;
  border-left-color: #c9a000;
  box-shadow: 0 0 0 3px rgba(224, 176, 0, 0.18);
}
.proj-quote-page .ct-check-pack .qp-pay {
  background: #fff4e8;
  border-color: #e07a2f;
  border-left-color: #c45c26;
  box-shadow: 0 0 0 3px rgba(224, 122, 47, 0.16);
}
.proj-quote-page .qp-pay > b { color: #c45c26; }
.proj-quote-page .qp-info > b { color: #8a4b00; }
.proj-quote-page .qp-pay .quote-sheet-acts { margin: 0 0 0.35rem; }
.proj-quote-page .qp-pay .ct-sec {
  padding: 0;
  border: 0;
  background: transparent;
}
.proj-quote-page .qp-pay .ct-pay { background: transparent; }
.proj-quote-page .qp-pay .ct-clause .pay-terms-area {
  min-height: 7.5rem;
  background: #fff;
  border: 2px solid #e07a2f;
}
.proj-quote-page .qp-pay .ct-scheme.on,
.proj-quote-page .qp-pay .ct-scheme:has(input:checked) {
  border: 2px solid #c45c26;
  background: #ffe8d2;
  box-shadow: 0 0 0 3px rgba(196, 92, 38, 0.22);
}
.proj-quote-page .ct-info-fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr));
  gap: 0.35rem 0.45rem;
}
.proj-quote-page .ct-info-fields .field input,
.proj-quote-page .ct-info-fields .field select {
  background: #fff;
  border: 2px solid #e0b000;
}
.proj-quote-page .ct-submit-box {
  margin: 0 0 0.4rem;
  padding: 0.5rem 0.65rem;
  border-radius: 8px;
}
.proj-quote-page .ct-submit-acts {
  padding: 0.35rem 0.2rem 0.8rem;
}
.hub-pane-seg {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 0.65rem;
}
.hub-pane-seg a {
  min-height: 2.45rem;
  padding: 0.45rem 1.05rem;
  border-radius: 999px;
  border: 1px solid #d8cbb8;
  background: #fff;
  color: #5a4a3a;
  font-size: 1.02rem;
  font-weight: 700;
  text-decoration: none;
}
.hub-pane-seg a.on {
  background: #c45c26;
  border-color: #c45c26;
  color: #fff;
}
.desk-slot-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
@media (max-width: 800px) {
  .desk-slot-grid { grid-template-columns: 1fr; }
}
.desk-slot-item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.5rem;
}
.desk-slot-item form.inline { margin: 0; flex: 0 0 auto; }
.desk-day-pick { margin: 0; }
@media (max-width: 720px) {
  .desk-trip-geo { grid-template-columns: 1fr; }
}
.entity-collab {
  margin: 0.75rem 0 0;
  padding: 0.65rem 0.75rem;
  border: 1px solid #e6dccf;
  border-radius: 10px;
  background: #fcfaf6;
}
.entity-collab-h {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  align-items: baseline;
  margin-bottom: 0.45rem;
}
.entity-collab-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}
.entity-collab-list li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0.25rem 0;
  border-bottom: 1px dashed #eadfce;
}
.entity-collab-list li:last-child { border-bottom: 0; }
.entity-collab-empty { margin: 0.2rem 0 0.45rem; }
.entity-collab-add {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.45rem;
  margin-top: 0.45rem;
}
.entity-collab-add .field { margin: 0; min-width: 12rem; flex: 1; }
.entity-collab-picks {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.75rem;
  max-height: 9rem;
  overflow: auto;
  padding: 0.35rem 0.15rem;
}
.entity-collab-chip { font-size: 0.88rem; }
.entity-collab.compact { margin-top: 0.35rem; }
.tasks-page .desk-now { margin-bottom: 0.5rem; }
.ct-preview-step header { padding: 0.28rem 0.55rem; }
@media (max-width: 980px) {
  .ct-top-fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ct-top-bar .ct-pay-compact .ct-pay-grid { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .ct-top-fields { grid-template-columns: 1fr 1fr; }
  .ct-preview { zoom: 0.58; }
}
body:has(.finance-page) .main { padding-top: 1rem; }
.finance-page .fin-page-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.8rem;
}
.finance-page .fin-page-head h1 { margin: 0 0 0.2rem; }
.finance-page .fin-page-head p { margin: 0; max-width: 52rem; }
.finance-page .fin-page-head-sm {
  margin: 0 0 0.15rem;
  align-items: center;
}
.finance-page .fin-page-head-sm h1 { margin: 0; font-size: 1.25rem; }
.finance-page .fin-tip {
  display: flex;
  gap: 0.45rem 0.65rem;
  align-items: flex-start;
  margin: 0 0 0.55rem;
  padding: 0.45rem 0.7rem;
  background: #fff8f0;
  border: 1px solid #f0c9a0;
  border-radius: 8px;
  font-size: 0.86rem;
  line-height: 1.45;
  color: #5c4030;
}
.finance-page .fin-tip-lg {
  padding: 0.75rem 0.95rem;
  font-size: 0.98rem;
  border-width: 1.5px;
  gap: 0.65rem 0.85rem;
}
.finance-page .fin-tip-lg strong {
  font-size: 1.05rem;
  padding-top: 0.1rem;
}
.finance-page .fin-tip-lg p { margin: 0 0 0.25rem; }
.finance-page .fin-tip-lg p:last-child { margin-bottom: 0; }
.finance-page .fin-tip strong {
  flex: 0 0 auto;
  color: #c45c26;
  font-weight: 700;
}
.finance-page .fin-tip span,
.finance-page .fin-tip > div { flex: 1 1 auto; }
.finance-page .fin-ov-duo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
  margin: 0 0 0.65rem;
}
.finance-page .fin-ov-panel {
  padding: 0.55rem 0.7rem 0.65rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-ov-hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.45rem;
  margin: 0 0 0.45rem;
}
.finance-page .fin-ov-hero > div {
  padding: 0.45rem 0.55rem;
  background: #f4f8fb;
  border-radius: 8px;
  border: 1px solid #e2ebf3;
}
.finance-page .fin-ov-hero span {
  display: block;
  font-size: 0.75rem;
  color: var(--muted);
}
.finance-page .fin-ov-hero b {
  display: block;
  font-size: 1.35rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
  margin: 0.1rem 0;
}
.finance-page .fin-ov-hero small {
  font-size: 0.72rem;
  color: var(--muted);
}
.finance-page .fin-ov-kpis-sm {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
}
.finance-page .fin-cash-sub {
  margin: 0;
  font-size: 0.82rem;
}
.finance-page .fin-cash-duo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
}
.finance-page .fin-cash-panel {
  padding: 0.55rem 0.7rem 0.7rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-cash-flow {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.finance-page .fin-cash-lane {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: stretch;
  padding: 0.45rem;
  border-radius: 8px;
  background: #f7f9fb;
  border: 1px dashed #dbe3eb;
}
.finance-page .fin-cash-lane.is-in { background: #f3f8f5; border-color: #cfe0d4; }
.finance-page .fin-cash-lane.is-out { background: #fbf6f2; border-color: #ead9cb; }
.finance-page .fin-cash-lane-lab {
  flex: 0 0 2.4rem;
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--muted);
  writing-mode: vertical-rl;
  text-orientation: mixed;
  letter-spacing: 0.12em;
  display: flex;
  align-items: center;
  justify-content: center;
}
.finance-page .fin-cash-node {
  flex: 1 1 7.5rem;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.08rem;
  padding: 0.45rem 0.55rem 0.55rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
  text-align: left;
  font: inherit;
  color: inherit;
  min-width: 0;
}
button.fin-cash-node {
  cursor: pointer;
}
button.fin-cash-node.is-act:hover {
  border-color: #c45c26;
  box-shadow: 0 0 0 2px rgba(196, 92, 38, 0.12);
}
.finance-page .fin-cash-node span {
  font-size: 0.75rem;
  color: var(--muted);
}
.finance-page .fin-cash-node b {
  font-size: 1.2rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}
.finance-page .fin-cash-node small {
  font-size: 0.7rem;
  color: var(--muted);
}
.finance-page .fin-cash-bar {
  display: block;
  height: 5px;
  margin: 0.2rem 0 0.1rem;
  border-radius: 99px;
  background: #2f6fed;
  max-width: 100%;
}
.finance-page .fin-cash-bar.is-warn { background: #c45c26; }
.finance-page .fin-cash-bar.is-out { background: #b35a00; }
.finance-page .fin-cash-arrow {
  align-self: center;
  color: var(--muted);
  font-size: 1.1rem;
  padding: 0 0.1rem;
}
.finance-page .fin-cash-net {
  padding: 0.55rem 0.7rem;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: #f4f8fb;
}
.finance-page .fin-cash-net.is-pos { background: #eef8f1; border-color: #b7dcc4; }
.finance-page .fin-cash-net.is-neg { background: #fdf0ee; border-color: #efc4bc; }
.finance-page .fin-cash-net span {
  display: block;
  font-size: 0.78rem;
  color: var(--muted);
}
.finance-page .fin-cash-net b {
  display: block;
  font-size: 1.45rem;
  font-variant-numeric: tabular-nums;
  margin: 0.1rem 0;
}
.finance-page .fin-cash-net small {
  font-size: 0.72rem;
  color: var(--muted);
}
.finance-page .fin-cash-meter {
  height: 8px;
  margin-top: 0.35rem;
  background: #e4eaef;
  border-radius: 99px;
  overflow: hidden;
}
.finance-page .fin-cash-meter i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #2f6fed, #3d8b6e);
  border-radius: 99px;
}
.finance-page .fin-cash-side {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.5rem;
}
.finance-page .fin-cash-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.28rem 0.65rem;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: #fff;
  font: inherit;
  font-size: 0.82rem;
  color: inherit;
  text-decoration: none;
  cursor: pointer;
}
.finance-page .fin-cash-chip.is-static { cursor: default; color: var(--muted); }
button.fin-cash-chip:hover,
a.fin-cash-chip:hover { border-color: #c45c26; color: #c45c26; }

.finance-page .fin-rpt-whole {
  display: grid;
  grid-template-columns: minmax(12rem, 16rem) 1fr minmax(12rem, 16rem);
  gap: 0.75rem;
  margin: 0 0 0.85rem;
  padding: 0.75rem 0.9rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-rpt-whole .fin-rpt-kpi {
  border: 0;
  padding: 0.25rem 0.35rem 0;
  background: transparent;
}
.finance-page .fin-rpt-whole-bars {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  justify-content: center;
}
.finance-page .fin-rpt-whole-split {
  margin: 0.25rem 0 0;
  font-size: 0.78rem;
}
.finance-page .fin-rpt-whole-with-pie .fin-rpt-mini-pie {
  border: 0;
  padding: 0;
  background: transparent;
}
.finance-page .fin-rpt-whole-with-pie .opex-pie-svg {
  width: min(11rem, 42vw);
  height: min(11rem, 42vw);
}
.finance-page .fin-rpt-pane-pie {
  max-width: 22rem;
  margin: 0 0 0.75rem;
}
.finance-page .fin-rpt-pane-pie .opex-pie-svg {
  width: min(12rem, 50vw);
  height: min(12rem, 50vw);
}
.finance-page .opex-leg-btn.is-static {
  cursor: default;
  pointer-events: none;
}
.finance-page a.opex-leg-btn {
  text-decoration: none;
  color: inherit;
}
.finance-page a.opex-leg-btn.is-on {
  background: #eef5fb;
}
.finance-page .fin-cash-side-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 1rem;
}
.finance-page .fin-cash-pies {
  margin-bottom: 0.65rem;
}
.finance-page .fin-bk-quad {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.55rem;
  margin: 0 0 1rem;
}
.finance-page a.fin-bk-quad-card {
  display: block;
  padding: 0.65rem 0.75rem 0.75rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
}
.finance-page a.fin-bk-quad-card:hover { border-color: #c45c26; }
.finance-page a.fin-bk-quad-card.is-on {
  border-color: #2f6f9f;
  box-shadow: 0 0 0 2px rgba(47, 111, 159, 0.15);
}
.finance-page .fin-bk-quad-card h3 {
  margin: 0 0 0.15rem;
  font-size: 0.95rem;
}
.finance-page .fin-bk-quad-card > .muted {
  margin: 0 0 0.45rem;
  font-size: 0.75rem;
}
.finance-page .fin-bk-zone-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.5rem;
}
.finance-page .fin-bk-zone-h .fin-ov-h { margin: 0; }
.finance-page .fin-bk-detail-kpis {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin: 0 0 0.75rem;
}
.finance-page .fin-bk-detail-kpis > div {
  min-width: 6.5rem;
  padding: 0.45rem 0.65rem;
  background: #f7f9fb;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.finance-page .fin-bk-detail-kpis span {
  display: block;
  font-size: 0.75rem;
  color: var(--muted);
}
.finance-page .fin-bk-detail-kpis b {
  font-size: 1.15rem;
  font-variant-numeric: tabular-nums;
}
@media (max-width: 960px) {
  .finance-page .fin-rpt-whole,
  .finance-page .fin-bk-quad { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .finance-page .fin-bk-quad { grid-template-columns: 1fr; }
}

.finance-page .fin-bk-cmp {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
}
.finance-page .fin-bk-cmp-card {
  padding: 0.65rem 0.75rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-bk-cmp-card h3 {
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
}
.finance-page .fin-bk-bars { display: flex; flex-direction: column; gap: 0.35rem; }
.finance-page .fin-bk-bar-row,
.finance-page .fin-rpt-io-row {
  display: grid;
  grid-template-columns: 2.6rem 1fr 5.2rem;
  gap: 0.4rem;
  align-items: center;
  font-size: 0.85rem;
}
.finance-page .fin-bk-track {
  height: 0.55rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .fin-bk-track-lg { height: 0.7rem; margin: 0.25rem 0; }
.finance-page .fin-bk-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: #2f6fed;
}
.finance-page .fin-bk-track i.is-in { background: #2f6fed; }
.finance-page .fin-bk-track i.is-out { background: #c45c26; }
.finance-page .fin-bk-track i.is-ok { background: #2a8f5b; }
.finance-page .fin-bk-track i.is-warn { background: #d97706; }
.finance-page .fin-bk-track i.is-fut { background: #6b7c93; }
.finance-page .fin-bk-track i.is-labor { background: #3d8b6e; }
.finance-page .fin-bk-bar-row b,
.finance-page .fin-rpt-io-row b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-bk-net {
  margin: 0.45rem 0;
  font-size: 0.9rem;
}
.finance-page .fin-bk-net.is-neg strong { color: #b42318; }
.finance-page .fin-bk-pie-row {
  display: grid;
  grid-template-columns: 7rem 1fr;
  gap: 0.65rem;
  align-items: center;
  margin-top: 0.35rem;
}
.finance-page .fin-bk-pie {
  width: 7rem;
  height: 7rem;
  border-radius: 50%;
  border: 1px solid #e2ebf3;
}
.finance-page .fin-bk-legend {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.82rem;
}
.finance-page .fin-bk-legend li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.25rem 0.4rem;
  margin: 0 0 0.25rem;
}
.finance-page .fin-bk-legend i {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  display: inline-block;
}
.finance-page .fin-bk-legend b { font-variant-numeric: tabular-nums; margin-left: auto; }
.finance-page .fin-bk-legend small { color: var(--muted); }
.finance-page .fin-bk-legend-plain li { display: block; color: var(--muted); font-size: 0.8rem; }
.finance-page .fin-bk-people {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
  gap: 0.5rem;
}
.finance-page .fin-bk-person {
  padding: 0.55rem 0.65rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-bk-person header {
  display: flex;
  justify-content: space-between;
  gap: 0.35rem;
  margin-bottom: 0.25rem;
}
.finance-page .fin-bk-person-amt b {
  font-size: 1.15rem;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-bk-person-amt small { color: var(--muted); margin-left: 0.35rem; }
.finance-page .fin-bk-roles { margin: 0.2rem 0 0; font-size: 0.75rem; }
.finance-page .fin-bk-mini-bars {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.finance-page .fin-bk-mini-bars > div {
  display: grid;
  grid-template-columns: 2.2rem 1fr 4.5rem;
  gap: 0.3rem;
  align-items: center;
  font-size: 0.78rem;
}
.finance-page .fin-bk-mini-bars b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.finance-page .fin-rpt-people {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(22rem, 1fr));
  gap: 0.65rem;
}
.finance-page .fin-rpt-person {
  padding: 0.65rem 0.75rem 0.7rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-rpt-person-h {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.45rem;
  align-items: flex-start;
}
.finance-page .fin-rpt-person-h strong { font-size: 1.02rem; }
.finance-page .fin-rpt-person-gp {
  text-align: right;
  padding: 0.25rem 0.45rem;
  border-radius: 8px;
  background: #fff7ee;
  border: 1px solid #f0c9a0;
}
.finance-page .fin-rpt-person-gp.is-neg {
  background: #fdf0ee;
  border-color: #efc4bc;
}
.finance-page .fin-rpt-person-gp span {
  display: block;
  font-size: 0.7rem;
  color: var(--muted);
}
.finance-page .fin-rpt-person-gp b {
  display: block;
  font-size: 1.2rem;
  color: #c45c26;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-rpt-person-gp.is-neg b { color: #b42318; }
.finance-page .fin-rpt-person-gp small { color: var(--muted); font-size: 0.72rem; }
.finance-page .fin-rpt-io {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem;
}
.finance-page .fin-rpt-io-col h4 {
  margin: 0 0 0.3rem;
  font-size: 0.8rem;
  color: var(--muted);
}
.finance-page .fin-rpt-io-col.is-in h4 { color: #2f6f9f; }
.finance-page .fin-rpt-io-col.is-out h4 { color: #c45c26; }
.finance-page .fin-rpt-io-row {
  grid-template-columns: 2.8rem 1fr 4.2rem;
  margin-bottom: 0.22rem;
  font-size: 0.78rem;
}
.finance-page .fin-rpt-person-f {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 0.45rem;
  padding-top: 0.4rem;
  border-top: 1px dashed var(--line);
  font-size: 0.78rem;
  color: var(--muted);
}
.finance-page .fin-rpt-person-f b { color: inherit; }

.finance-page .fin-ov-compare { margin-top: 0; }
.finance-page .fin-cmp-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem;
}
.finance-page .fin-cmp-card {
  padding: 0.55rem 0.65rem 0.65rem;
  background: #fafbfd;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.finance-page .fin-cmp-card h4 {
  margin: 0 0 0.45rem;
  font-size: 0.92rem;
}
.finance-page .fin-cmp-row {
  display: grid;
  grid-template-columns: 2.4rem 1fr 5.5rem;
  gap: 0.4rem;
  align-items: center;
  margin: 0 0 0.35rem;
  font-size: 0.85rem;
}
.finance-page .fin-cmp-track {
  height: 0.55rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .fin-cmp-track i {
  display: block;
  height: 100%;
  background: #2f6f9f;
  border-radius: 999px;
}
.finance-page .fin-cmp-row.is-cost .fin-cmp-track i { background: #c45c26; }
.finance-page .fin-cmp-row b {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-cmp-net {
  margin: 0.35rem 0 0.45rem;
  font-size: 1.05rem;
  font-weight: 700;
}
.finance-page .fin-cmp-net small {
  display: block;
  font-weight: 400;
  font-size: 0.75rem;
  color: var(--muted);
}
.finance-page .fin-cmp-parts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.75rem;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 0.78rem;
  color: var(--muted);
}
.finance-page .fin-cmp-parts b {
  color: #334;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-cash-sec {
  margin: 1rem 0 0.45rem;
  font-size: 0.95rem;
}
.finance-page .fin-cash-h4 {
  margin: 0 0 0.45rem;
  font-size: 0.9rem;
  font-weight: 700;
}
.finance-page .fin-cash-h4 .muted { font-weight: 500; font-size: 0.8rem; }
.finance-page .fin-cash-panel-wide { margin-top: 0; }
.finance-page .fin-cash-flow-row {
  display: grid;
  grid-template-columns: 1fr 1.4fr minmax(9rem, 11rem);
  gap: 0.55rem;
  align-items: stretch;
}
.finance-page .fin-cash-node.is-future b { color: #5a6a7a; }
.finance-page .fin-ov-badge {
  display: inline-block;
  margin-left: 0.25rem;
  padding: 0.05rem 0.35rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 600;
}
.finance-page .fin-ov-badge.err { background: #fde8e4; color: #b42318; }
.finance-page .fin-ov-badge.warn { background: #fff4e5; color: #b54708; }

.finance-page .opex-board {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.finance-page .opex-hero-ring {
  margin: 0 0 0.85rem;
}
.finance-page .opex-pie-body {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.75rem 1rem;
  align-items: center;
}
.finance-page .opex-leg-lab {
  display: flex;
  flex-direction: column;
  gap: 0.1rem;
  align-items: flex-start;
  min-width: 0;
}
.finance-page .opex-by-person {
  margin: 0 0 0.75rem;
}
.finance-page .opex-filter-bar label + label {
  margin-left: 0.35rem;
}
.finance-page .opex-person-card {
  margin: 0 0 0.85rem;
  padding: 0.75rem 1rem;
}
.finance-page .opex-person-card-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.65rem;
  margin-bottom: 0.55rem;
}
.finance-page .opex-person-card-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
#dlg-opex-people tr.is-scope-hide { display: none !important; }
.finance-page .opex-person-sum {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0.4rem;
}
.finance-page .opex-person-sum li {
  background: #f7f9fc;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.4rem 0.5rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}
.finance-page .opex-person-sum span {
  font-size: 0.75rem;
  color: var(--muted);
}
.finance-page .opex-person-sum b {
  font-variant-numeric: tabular-nums;
}
@media (max-width: 860px) {
  .finance-page .opex-pie-body {
    grid-template-columns: 1fr;
    justify-items: center;
  }
  .finance-page .opex-person-sum {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
.finance-page .fin-ring-hero {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 0 0 0.85rem;
  padding: 0.75rem 1rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-ring {
  --pct: 0;
  flex: 0 0 4.5rem;
  width: 4.5rem;
  height: 4.5rem;
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(#fff 58%, transparent 59%),
    conic-gradient(#2f6f9f calc(var(--pct) * 1%), #e8eef4 0);
}
.finance-page .fin-ring b {
  font-size: 1rem;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-ring span {
  font-size: 0.65rem;
  color: var(--muted);
}
.finance-page .fin-ring-meta { flex: 1; min-width: 0; }
.finance-page .fin-ring-meta p { margin: 0 0 0.2rem; }
.finance-page .fin-ring-meta .ok { color: #3a9a6a; font-style: normal; margin-left: 0.35rem; }
.finance-page .fin-wf-duo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin: 0 0 0.75rem;
}
.finance-page .fin-wf-card {
  padding: 0.75rem 0.85rem 0.9rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-wf-h {
  margin: 0 0 0.55rem;
  font-size: 0.95rem;
  text-align: center;
}
.finance-page .fin-waterfall {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.finance-page .fin-wf-hit {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;
  gap: 0.2rem 0.55rem;
  width: 100%;
  text-align: left;
  padding: 0.55rem 0.6rem;
  border: 1px solid transparent;
  border-radius: 8px;
  background: #fafbfd;
  font: inherit;
  color: inherit;
  cursor: pointer;
  min-height: 2.75rem;
  align-items: center;
}
.finance-page .fin-wf-hit.is-static { cursor: default; }
.finance-page button.fin-wf-hit:hover { border-color: #c9d4e0; background: #f2f6fa; }
.finance-page .fin-wf-row.is-result .fin-wf-hit { background: #eef6fb; border-color: #c5d8e8; }
.finance-page .fin-wf-row.is-neg .fin-wf-amt { color: #c0392b; }
.finance-page .fin-wf-lab {
  font-weight: 600;
  font-size: 0.92rem;
  display: inline-flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.finance-page .fin-wf-badge {
  display: inline-block;
  min-width: 1.35rem;
  padding: 0 0.38rem;
  border-radius: 9px;
  background: #c45c26;
  color: #fff !important;
  font-size: 0.82rem;
  font-weight: 700;
  line-height: 1.35rem;
  text-align: center;
  font-style: normal;
}
.finance-page .fin-wf-amt {
  font-variant-numeric: tabular-nums;
  font-size: 1.15rem;
  font-weight: 700;
  justify-self: end;
}
.finance-page .fin-dlg-lg .fin-dlg-shell {
  max-width: min(1280px, 98vw);
}
dialog.fin-dlg.fin-dlg-lg {
  width: min(98vw, 1280px);
}
.finance-page .fin-dlg-bar-sticky {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #fff;
  border-bottom: 1px solid #e8eef4;
}
.finance-page .fin-dlg .fin-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.finance-page .fin-dlg .fin-acts .btn {
  padding: 0.4rem 0.75rem;
  font-size: 0.88rem;
  white-space: nowrap;
}
.finance-page .fin-pay-inline {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  align-items: center;
}
.finance-page .fin-pay-inline input[type="number"],
.finance-page .fin-pay-inline input[type="date"],
.finance-page .fin-pay-inline input[type="text"] {
  min-height: 2rem;
}
.finance-page .fin-pay-inline .btn {
  padding: 0.4rem 0.7rem;
}
.finance-page .fin-wf-track {
  grid-column: 1 / -1;
  height: 0.45rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .fin-wf-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
  min-width: 2px;
}
.finance-page .fin-rank-block { margin: 0 0 0.85rem; }
.finance-page .fin-rank-h {
  margin: 0 0 0.4rem;
  font-size: 0.92rem;
}
.finance-page .fin-rank {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}
.finance-page .fin-rank-row {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;
  gap: 0.1rem 0.5rem;
  padding: 0.35rem 0.45rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.finance-page .fin-rank-lab {
  font-weight: 600;
  font-size: 0.88rem;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.finance-page button.fin-rank-lab {
  border: 0;
  background: transparent;
  padding: 0;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
  font-weight: 600;
}
.finance-page button.fin-rank-lab:hover { color: #2f6f9f; }
.finance-page .fin-viz-chart .fin-rank {
  max-height: 22rem;
  overflow: auto;
  padding-right: 0.15rem;
}
.finance-page .fin-rank-amt { font-variant-numeric: tabular-nums; }
.finance-page .fin-rank-row.is-neg .fin-rank-amt { color: #c0392b; }
.finance-page .fin-rank-track {
  grid-column: 1 / -1;
  height: 0.4rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .fin-rank-track i {
  display: block;
  height: 100%;
  background: #2f6f9f;
  border-radius: 999px;
}
.finance-page .fin-rank-row.is-neg .fin-rank-track i { background: #c0392b; }
.finance-page .fin-bk-io-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.55rem;
  margin: 0 0 1rem;
}
.finance-page a.fin-bk-io-card {
  display: block;
  padding: 0.65rem 0.75rem 0.75rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  text-decoration: none;
  color: inherit;
}
.finance-page a.fin-bk-io-card.is-on {
  border-color: #2f6f9f;
  box-shadow: 0 0 0 2px rgba(47, 111, 159, 0.15);
}
.finance-page a.fin-bk-io-card header {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.5rem;
  align-items: baseline;
  margin-bottom: 0.4rem;
}
.finance-page .opex-exec {
  display: block;
  font-weight: 500;
  color: var(--muted);
  font-size: 0.72rem;
}
.finance-page .opex-exec-bar {
  grid-column: 1 / -1;
  display: block;
  height: 0.42rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .opex-exec-bar > i {
  display: block;
  height: 100%;
  background: #3a9a6a;
}
.finance-page .opex-exec-bar > i.is-over { background: #c2410c; }
.finance-page .opex-leg-btn {
  grid-template-columns: 0.7rem 1fr auto 2.6rem;
}
  grid-template-columns: minmax(14rem, 18rem) 1fr;
  gap: 0.75rem;
  align-items: start;
  margin: 0 0 1rem;
}
.finance-page .opex-dual {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  margin: 0 0 1rem;
}
.finance-page .opex-pie-card {
  padding: 0.75rem 0.85rem 0.9rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .opex-pie-h {
  margin: 0 0 0.5rem;
  font-size: 0.95rem;
  text-align: center;
}
.finance-page .opex-pie-svg-wrap {
  display: flex;
  justify-content: center;
}
.finance-page .opex-pie-svg {
  width: min(15rem, 72vw);
  height: min(15rem, 72vw);
}
.finance-page .opex-slice {
  cursor: pointer;
  stroke: #fff;
  stroke-width: 0.6;
  transition: opacity 0.15s;
}
.finance-page .opex-slice:hover { opacity: 0.85; }
.finance-page .opex-pie-sum-lab {
  font-size: 3.2px;
  fill: #6b7c93;
}
.finance-page .opex-pie-sum-val {
  font-size: 4.2px;
  font-weight: 700;
  fill: #1f2a37;
}
.finance-page .opex-pie-legend {
  list-style: none;
  margin: 0.55rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.finance-page .opex-leg-btn {
  display: grid;
  grid-template-columns: 0.7rem 1fr auto 2.6rem;
  gap: 0.4rem;
  align-items: center;
  width: 100%;
  text-align: left;
  padding: 0.3rem 0.4rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  font: inherit;
  color: inherit;
  cursor: pointer;
}
.finance-page .opex-leg-btn:hover { background: #f2f6fa; }
.finance-page .opex-leg-btn b {
  font-variant-numeric: tabular-nums;
  font-size: 0.9rem;
}
.finance-page .opex-leg-btn em {
  font-style: normal;
  color: var(--muted);
  font-size: 0.78rem;
  text-align: right;
}
.finance-page .opex-trend {
  padding: 0.75rem 0.9rem 1rem;
  margin: 0 0 1rem;
}
.finance-page .opex-trend-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.55rem;
}
.finance-page .opex-trend-head h3 {
  margin: 0;
  font-size: 0.98rem;
}
.finance-page .opex-trend-chart {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 0.35rem;
  align-items: end;
  height: 10rem;
  padding: 0.35rem 0.15rem 0;
  border-top: 1px solid #e8eef4;
}
.finance-page .opex-bar {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
  height: 100%;
  gap: 0.25rem;
  min-width: 0;
}
.finance-page .opex-bar i {
  display: block;
  width: 70%;
  max-width: 1.6rem;
  border-radius: 4px 4px 0 0;
  min-height: 2px;
}
.finance-page .opex-bar.is-future i { opacity: 0.35; }
.finance-page .opex-bar span {
  font-size: 0.68rem;
  color: var(--muted);
  white-space: nowrap;
}
.finance-page .opex-pie-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.65rem;
  padding: 1rem 0.85rem;
}
.finance-page .opex-pie {
  width: min(14rem, 70vw);
  height: min(14rem, 70vw);
  border-radius: 50%;
  box-shadow: inset 0 0 0 18px #fff, 0 0 0 1px var(--line);
}
.finance-page .opex-pie-total {
  margin: 0;
  text-align: center;
}
.finance-page .opex-pie-total span {
  display: block;
  font-size: 0.78rem;
  color: var(--muted);
}
.finance-page .opex-pie-total b {
  font-size: 1.35rem;
  font-variant-numeric: tabular-nums;
}
.finance-page .opex-sum { padding: 0.65rem 0.75rem 0.75rem; }
.finance-page .opex-sum h3 {
  margin: 0 0 0.45rem;
  font-size: 0.98rem;
}
.finance-page .opex-sum-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.finance-page .opex-sum-item {
  display: grid;
  grid-template-columns: 0.7rem 4.5rem 3rem 1fr;
  grid-template-rows: auto auto;
  column-gap: 0.45rem;
  row-gap: 0.05rem;
  width: 100%;
  text-align: left;
  padding: 0.55rem 0.5rem;
  margin: 0 0 0.35rem;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fafbfd;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.finance-page .opex-sum-item:hover {
  border-color: #c9d4e0;
  background: #f2f6fa;
}
.finance-page .opex-dot {
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 50%;
  grid-row: 1 / span 2;
  align-self: center;
}
.finance-page .opex-lab { font-weight: 600; }
.finance-page .opex-pct { color: var(--muted); font-size: 0.85rem; }
.finance-page .opex-amt {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-size: 1.05rem;
}
.finance-page .opex-sum-item small {
  grid-column: 2 / -1;
  font-size: 0.75rem;
}
.finance-page .fin-rpt-hero {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 0.45rem;
  margin: 0 0 0.65rem;
}
.finance-page .fin-rpt-kpi {
  padding: 0.55rem 0.7rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-rpt-kpi.is-main {
  background: #fff7ee;
  border-color: #f0c9a0;
}
.finance-page .fin-rpt-kpi span {
  display: block;
  font-size: 0.75rem;
  color: var(--muted);
}
.finance-page .fin-rpt-kpi b {
  display: block;
  font-size: 1.35rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
  margin: 0.1rem 0;
}
.finance-page .fin-rpt-kpi.is-main b { font-size: 1.55rem; color: #c45c26; }
.finance-page .fin-rpt-kpi small {
  font-size: 0.72rem;
  color: var(--muted);
}
.finance-page .fin-rpt-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 0.45rem;
}
.finance-page .fin-rpt-tabs button {
  padding: 0.35rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  color: #2c3d4d;
  font: inherit;
  cursor: pointer;
}
.finance-page .fin-rpt-tabs button.on {
  background: #2f6f9f;
  border-color: #2f6f9f;
  color: #fff;
}
.finance-page .fin-rpt-pane { margin: 0; }
@media (max-width: 960px) {
  .finance-page .fin-ov-duo,
  .finance-page .fin-cash-duo,
  .finance-page .fin-cash-flow-row,
  .finance-page .fin-wf-duo,
  .finance-page .fin-cmp-grid,
  .finance-page .fin-bk-cmp,
  .finance-page .opex-board,
  .finance-page .opex-dual,
  .finance-page .fin-bk-io-list,
  .finance-page .fin-rpt-hero,
  .finance-page .fin-rpt-io,
  .finance-page .fin-rpt-whole,
  .finance-page .fin-rpt-whole-with-pie,
  .finance-page .fin-bk-pie-row { grid-template-columns: 1fr; }
  .finance-page .fin-ov-hero { grid-template-columns: 1fr 1fr; }
  .finance-page .fin-cash-lane-lab { writing-mode: horizontal-tb; flex: 0 0 100%; }
}
.finance-page .fin-quick-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.finance-page .fin-act {
  padding: 0.28rem 0.7rem;
  min-height: 1.9rem;
  font-size: 0.86rem;
}
.finance-page .fin-act b { font-weight: 700; margin-left: 0.15rem; }
.finance-page .fin-act .warn { color: #b35a00; }
.finance-page .fin-head-compact {
  margin: 0 0 0.45rem;
  align-items: center;
}
.finance-page .fin-head-compact h2 { margin: 0; font-size: 1.05rem; }
.finance-page .fin-fold {
  margin: 0.35rem 0 0;
  border-top: 1px dashed var(--line, #e5ebf1);
  padding-top: 0.3rem;
}
.finance-page .fin-fold > summary {
  cursor: pointer;
  list-style: none;
  font-size: 0.88rem;
  font-weight: 600;
  color: #334;
  padding: 0.15rem 0;
  user-select: none;
}
.finance-page .fin-fold > summary::-webkit-details-marker { display: none; }
.finance-page .fin-fold > summary::before {
  content: "▸ ";
  color: var(--muted, #889);
  font-weight: 400;
}
.finance-page .fin-fold[open] > summary::before { content: "▾ "; }
.finance-page .fin-fold > summary .muted { font-weight: 400; margin-left: 0.35rem; }
.finance-page .fin-empty-line { margin: 0.25rem 0 0; font-size: 0.85rem; }
.finance-page .fin-ov-table-sm { max-height: 11.5rem; }
.finance-page .fin-toolbar-sm {
  margin-bottom: 0.55rem;
  padding: 0.4rem 0.6rem;
}
.finance-page .fin-toolbar-note { font-size: 0.8rem; align-self: center; }
.finance-page .fin-kpis-dense {
  gap: 0.4rem;
  margin-bottom: 0.55rem;
}
.finance-page .fin-kpis-dense .kpi {
  padding: 0.4rem 0.55rem;
}
.finance-page .fin-kpis-dense .kpi b { font-size: 1.05rem; }
.finance-page .fin-opex-card { padding: 0.65rem 0.75rem 0.35rem; }
.finance-page .fin-opex-rent {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.4rem 0.65rem;
  margin: 0 0 0.55rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--line, #eef2f6);
}
.finance-page .fin-opex-rent .field { margin: 0; }
.finance-page .fin-nav { margin-bottom: 0.15rem; }
.finance-page .fin-toolbar,
.finance-page .fin-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.45rem 0.65rem;
  margin: 0 0 0.75rem;
  padding: 0.55rem 0.7rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  position: sticky;
  top: 0;
  z-index: 6;
}
.finance-page .fin-toolbar-in {
  position: static;
  border: 0;
  padding: 0 0 0.7rem;
  margin: 0 0 0.7rem;
  background: none;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
}
.finance-page .fin-toolbar label,
.finance-page .fin-filter label {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  margin: 0;
  font-size: 0.78rem;
  color: var(--muted);
}
.finance-page .fin-toolbar select,
.finance-page .fin-filter select { min-width: 8.2rem; }
.finance-page .fin-q-lab { min-width: 14rem; }
.finance-page .fin-q-lab.grow { flex: 1 1 16rem; }
.finance-page .fin-toolbar input[type="search"] {
  width: 100%;
  min-width: 12rem;
}
.finance-page .fin-scope-hint { align-self: center; }
.finance-page .fin-kpis {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.5rem;
  margin-bottom: 0.15rem;
}
.finance-page .fin-kpis .kpi { padding: 0.55rem 0.75rem; }
.finance-page .fin-kpis .kpi b { font-size: 1.2rem; }
.finance-page .fin-kpis .kpi small {
  font-size: 0.7rem;
  line-height: 1.35;
}
.finance-page .fin-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.8rem;
  margin: 0 0 0.65rem;
}
.finance-page .fin-head h2 { margin: 0 0 0.15rem; }
.finance-page .fin-head p { margin: 0; }
.finance-page .fin-head-sub {
  margin-top: 1.15rem;
  padding-top: 0.95rem;
  border-top: 1px solid var(--line);
}
.finance-page .fin-bars {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem;
  margin: 0 0 0.85rem;
}
.finance-page .fin-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.65rem;
  align-items: flex-end;
  margin: 0 0 0.85rem;
  padding: 0.65rem 0.75rem;
  background: #f7f9fb;
  border-radius: 12px;
}
.finance-page .fin-bars .fin-bar { margin: 0; }
.finance-page .fin-bar .field { margin: 0; min-width: 7.2rem; }
.finance-page .fin-bar .field.grow { flex: 1 1 14rem; min-width: 11rem; }
.finance-page .fin-bar .field.amt { flex: 0 1 10.5rem; min-width: 9rem; }
.finance-page .fin-exp-fields .field.amt input.js-exp-amt,
#dlg-expense-edit .field.amt input.js-exp-amt {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-exp-fields .field.amt input.js-exp-amt::-webkit-outer-spin-button,
.finance-page .fin-exp-fields .field.amt input.js-exp-amt::-webkit-inner-spin-button,
#dlg-expense-edit .field.amt input.js-exp-amt::-webkit-outer-spin-button,
#dlg-expense-edit .field.amt input.js-exp-amt::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.finance-page .fin-bar .field.day { flex: 0 1 9.4rem; }
.finance-page .fin-bar .field.note { flex: 1 1 8rem; min-width: 7rem; }
.finance-page .fin-bar .form-actions { margin: 0; }
.finance-page .fin-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem 0.8rem;
  margin: 0 0 0.75rem;
}
.finance-page .fin-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.finance-page .fin-chips button {
  margin: 0;
  padding: 0.42rem 0.9rem;
  min-height: 2.15rem;
  border: 1px solid #e0d3bc;
  background: #fff;
  border-radius: 9px;
  font: inherit;
  font-size: 0.95rem;
  font-weight: 650;
  color: #2c3d4d;
  cursor: pointer;
}
.finance-page .fin-chips button.on {
  border-color: var(--brand);
  background: var(--brand);
  color: #fff;
  font-weight: 700;
}
.finance-page .fin-scroll {
  overflow: auto;
  max-width: 100%;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}
.finance-page .fin-scroll table { margin: 0; }
.finance-page .fin-collect { min-width: 1680px; }
.finance-page .fin-snug {
  width: max-content;
  min-width: 100%;
}
.finance-page .fin-table td.num,
.finance-page .fin-table th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.finance-page .fin-table .fin-zero { color: #b7c0c8; font-weight: 400; }
.finance-page .fin-table .fin-note {
  white-space: normal;
  max-width: 16rem;
  color: var(--muted);
}
.finance-page .fin-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #f4f7fb;
  box-shadow: 0 1px 0 var(--line);
}
.finance-page .fin-table tr.fin-grp th {
  text-align: center;
  font-weight: 600;
  background: #eef3f8;
  border-bottom: 1px solid var(--line);
}
.finance-page .fin-collect th.fin-pin-1,
.finance-page .fin-collect td.fin-pin-1 {
  position: sticky;
  left: 0;
  z-index: 1;
  min-width: 7.2rem;
  background: #fff;
}
.finance-page .fin-collect th.fin-pin-2,
.finance-page .fin-collect td.fin-pin-2 {
  position: sticky;
  left: 7.2rem;
  z-index: 1;
  min-width: 14rem;
  max-width: 18rem;
  background: #fff;
  box-shadow: 1px 0 0 var(--line);
}
.finance-page .fin-proj-name {
  font-size: 1.05rem;
  font-weight: 650;
  line-height: 1.35;
}
.finance-page .fin-proj-name a { color: inherit; text-decoration: none; }
.finance-page .fin-proj-name a:hover { color: var(--accent, #c45c26); text-decoration: underline; }
.finance-page .fin-party {
  margin-top: 0.18rem;
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.35;
}
.finance-page .fin-cost-link {
  appearance: none;
  border: 0;
  background: none;
  padding: 0;
  margin: 0;
  color: var(--accent, #c45c26);
  cursor: pointer;
  font: inherit;
  font-variant-numeric: tabular-nums;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.finance-page table button.fin-cost-link {
  padding: 0;
  min-height: 0;
  font-size: inherit;
  line-height: inherit;
}
.finance-page .fin-cost-mount { max-height: min(70vh, 36rem); overflow: auto; }
.finance-page .fin-cost-body { margin: 0; }
.finance-page .fin-cost-po {
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 0.55rem 0.7rem 0.65rem;
  margin: 0 0 0.65rem;
  background: #fff;
}
.finance-page .fin-cost-po header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.65rem;
  margin-bottom: 0.4rem;
}
.finance-page .fin-cost-po header .num {
  margin-left: auto;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}
.purchase-page .po-sum-card { padding: 0.55rem 0.7rem 0.45rem; }
.purchase-page .po-sum-table { width: 100%; }
.purchase-page .po-sum-name {
  font-size: 1.02rem;
  font-weight: 650;
  line-height: 1.35;
}
.purchase-page .po-sum-name a { color: inherit; text-decoration: none; }
.purchase-page .po-sum-name a:hover { color: var(--accent, #c45c26); text-decoration: underline; }
.purchase-page .po-sum-meta { font-size: 0.86rem; line-height: 1.35; }
.purchase-page .po-sum-prog {
  margin-top: 0.28rem;
  max-width: 12rem;
}
.purchase-page .po-sum-table tr.po-open td { background: #f8efe4; }
.purchase-page .po-handle-dlg {
  width: min(98vw, 92rem);
  max-width: min(98vw, 92rem);
  max-height: min(94vh, 56rem);
  padding: 0.85rem 1rem 1rem;
}
.purchase-page .po-dlg-hint {
  margin: 0 0 0.55rem;
  font-size: 0.86rem;
}
.purchase-page .po-dlg-body {
  max-height: min(78vh, 46rem);
  overflow: auto;
  padding-right: 0.15rem;
}
.purchase-page .po-dlg-body .po-vendor { width: 100%; }
.purchase-page .po-dlg-body .po-vendor th,
.purchase-page .po-dlg-body .po-vendor td {
  padding: 0.45rem 0.55rem;
  vertical-align: top;
}
.purchase-page .po-dlg-body .po-acts {
  white-space: nowrap;
  min-width: 10rem;
}
.purchase-page .po-dlg-body .po-acts .btn {
  margin: 0.1rem 0.15rem 0.1rem 0;
}
.finance-page .fin-collect thead th.fin-pin-1,
.finance-page .fin-collect thead th.fin-pin-2 {
  z-index: 3;
  background: #eef3f8;
}
.finance-page .fin-collect tfoot td.fin-pin-1 {
  position: sticky;
  left: 0;
  z-index: 2;
  background: #f4f7fb;
}
.finance-page tr.unread td.fin-pin-1,
.finance-page tr.unread td.fin-pin-2 { background: #f8efe4; }
.finance-page tr.is-done td.fin-pin-1,
.finance-page tr.is-done td.fin-pin-2 { background: #f4faf6; }
.finance-page .fin-meter {
  height: 4px;
  background: #e4eaef;
  border-radius: 99px;
  margin-top: 0.28rem;
  overflow: hidden;
}
.finance-page .fin-meter i {
  display: block;
  height: 100%;
  background: #2f6fed;
  border-radius: 99px;
}
.finance-page .fin-meter-lg {
  height: 8px;
  margin-top: 0.2rem;
}
.finance-page .fin-pay-prog {
  min-width: 9.5rem;
  max-width: 14rem;
}
.finance-page .fin-pay-prog-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.35rem;
  margin-bottom: 0.05rem;
}
.finance-page .fin-pay-prog-top b {
  font-variant-numeric: tabular-nums;
  font-size: 0.95rem;
}
.finance-page .fin-pay-prog-sub {
  font-size: 0.72rem;
  margin-top: 0.15rem;
}
.finance-page .fin-collect-lite {
  width: max-content;
  min-width: 100%;
  table-layout: auto;
}
.finance-page .fin-collect-lite th,
.finance-page .fin-collect-lite td {
  vertical-align: top;
}
.finance-page .fin-collect-lite th.fin-col-proj,
.finance-page .fin-collect-lite td.fin-col-proj {
  min-width: 15rem;
  max-width: 22rem;
  width: 18rem;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
  line-height: 1.4;
}
.finance-page .fin-collect-lite .fin-proj-name {
  display: block;
  font-size: 0.95rem;
  font-weight: 650;
  line-height: 1.4;
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.finance-page .fin-collect-lite .fin-party {
  margin-top: 0.2rem;
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.35;
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.finance-page .fin-collect-lite .fin-pay-prog {
  min-width: 8.5rem;
  max-width: 11rem;
  white-space: normal;
}
.finance-page .fin-collect-lite th.num,
.finance-page .fin-collect-lite td.num {
  min-width: 5.2rem;
}
.finance-page .fin-collect-lite th.fin-col-due,
.finance-page .fin-collect-lite td.fin-col-due {
  min-width: 5.5rem;
  white-space: nowrap;
}
.finance-page .fin-collect-lite td.fin-acts {
  min-width: 5.5rem;
}
#dlg-collect .fin-dlg-ops .fin-dlg-q {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0 0 0.4rem;
  box-sizing: border-box;
}
#dlg-collect .fin-dlg-ops .fin-bar {
  margin: 0;
}
#dlg-collect .fin-scroll {
  max-height: min(42vh, 380px);
}
#dlg-collect .fin-pay-recent th.fin-col-proj,
#dlg-collect .fin-pay-recent td.fin-col-proj {
  min-width: 12rem;
  max-width: 20rem;
  white-space: normal;
  word-break: keep-all;
  overflow-wrap: anywhere;
}
#dlg-collect .fin-pay-recent .fin-party {
  word-break: keep-all;
  overflow-wrap: anywhere;
}
.finance-page tr.unread .fin-meter i { background: #c45c26; }
.finance-page tr.is-done .fin-meter i { background: #2a8f5b; }
.finance-page .fin-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  justify-content: flex-end;
  align-items: center;
  min-width: 10rem;
  white-space: nowrap;
}
.finance-page .fin-acts .inline { margin: 0; }
.exp-pay {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.3rem;
  align-items: center;
}
.exp-pay input[type="date"] { width: 9.2rem; }
.exp-pay input[name="note"] { width: 7.5rem; min-width: 6rem; }
.dlg-wide .fin-acts,
.card .fin-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  align-items: center;
}
.pay-rec .pay-edit { display: none; }
.pay-rec tr.is-edit .pay-view { display: none; }
.pay-rec tr.is-edit .pay-edit { display: inline-flex; }
.pay-rec tr.is-edit input.pay-edit {
  display: block;
  width: 100%;
  min-width: 6.5rem;
  box-sizing: border-box;
}
.pay-rec tr.is-edit input[name="amount"] { width: 7.6rem; min-width: 7.6rem; }
.pay-rec tr.is-edit input[type="date"] { width: 9.4rem; min-width: 9.4rem; }
.pay-rec tr.fin-sum td { font-weight: 700; }
.finance-page .fin-table tr.fin-sum td {
  font-weight: 700;
  background: #f4f7fb;
  border-top: 1px solid var(--line);
}
.finance-page .fin-table tr.fin-sum td.err { color: var(--err); }
.finance-page .fin-pay-sum {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.4rem;
  margin: 0 0 0.65rem;
}
.finance-page .fin-pay-sum-item {
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
  padding: 0.45rem 0.65rem;
  background: #f7f9fb;
  border: 1px solid var(--line);
  border-radius: 8px;
}
.finance-page .fin-pay-sum-item span {
  font-size: 0.72rem;
  color: var(--muted);
}
.finance-page .fin-pay-sum-item b {
  font-size: 1.05rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}
.finance-page .fin-pay-sum-item.is-total {
  background: #fff7ee;
  border-color: #f0c9a0;
}
.finance-page .fin-pay-sum-item.is-total b { color: var(--warn, #c45c26); }
.finance-page .fin-ov { margin: 0 0 0.65rem; }
.finance-page .fin-ov-zone {
  margin: 0 0 0.65rem;
  padding: 0.5rem 0.65rem 0.55rem;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.finance-page .fin-ov-h {
  margin: 0 0 0.4rem;
  font-size: 0.92rem;
}
.finance-page .fin-ov-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.35rem;
  margin: 0 0 0.35rem;
}
.finance-page .fin-ov-kpis-7 {
  grid-template-columns: repeat(7, minmax(0, 1fr));
}
.finance-page .fin-ov-card {
  display: flex;
  flex-direction: column;
  gap: 0.08rem;
  padding: 0.4rem 0.5rem;
  background: #f7f9fb;
  border: 1px solid var(--line);
  border-radius: 8px;
  text-decoration: none;
  color: inherit;
}
.finance-page .fin-ov-card.is-act {
  border-color: #d8e4f0;
  background: #f3f7fb;
  box-shadow: inset 0 0 0 1px rgba(45, 110, 180, 0.06);
}
.finance-page .fin-ov-card.is-mute { opacity: 0.95; }
a.fin-ov-card:hover,
button.fin-ov-card.is-act:hover { border-color: #c9d4e0; background: #eef4fa; }
.finance-page .fin-ov-card span {
  font-size: 0.7rem;
  color: var(--muted);
}
.finance-page .fin-ov-card b {
  font-size: 1.05rem;
  font-variant-numeric: tabular-nums;
  line-height: 1.15;
}
.finance-page .fin-ov-card small {
  font-size: 0.68rem;
  color: var(--muted);
  line-height: 1.3;
}
.finance-page .fin-ov-card.is-total {
  background: #fff7ee;
  border-color: #f0c9a0;
}
.finance-page .fin-ov-card.is-total b { color: var(--warn, #c45c26); }
.finance-page .fin-ov-table { margin-top: 0.25rem; }
.finance-page .fin-ov-people-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem;
}
.finance-page .fin-ov-people-grid .subh { margin: 0 0 0.2rem; font-size: 0.92rem; }
@media (max-width: 1100px) {
  .finance-page .fin-ov-kpis-7 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 960px) {
  .finance-page .fin-ov-kpis,
  .finance-page .fin-ov-kpis-7 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .finance-page .fin-ov-people-grid { grid-template-columns: 1fr; }
}
button.fin-ov-card {
  cursor: pointer;
  text-align: left;
  font: inherit;
  width: 100%;
}
.finance-page .fin-ov-badge {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.05rem 0.35rem;
  border-radius: 999px;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 600;
  vertical-align: middle;
}
.finance-page .fin-ov-badge.warn { background: #fff3e0; color: #b35a00; }
.finance-page .fin-ov-badge.err { background: #fdecea; color: #b42318; }
dialog.fin-dlg {
  width: min(96vw, 1080px);
  max-height: min(92vh, 860px);
  padding: 0;
  border: 1px solid var(--line, #d5dde6);
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(20, 30, 40, 0.22);
  overflow: hidden;
}
dialog.fin-dlg::backdrop { background: rgba(32, 24, 16, 0.45); }
dialog.fin-dlg .fin-dlg-shell {
  display: flex;
  flex-direction: column;
  max-height: min(92vh, 860px);
  padding: 0;
}
dialog.fin-dlg .fin-dlg-bar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  margin: 0;
  padding: 0.55rem 0.75rem 0.45rem;
  border-bottom: 1px solid var(--line, #e5ebf1);
  background: #fafbfd;
  flex: 0 0 auto;
  position: sticky;
  top: 0;
  z-index: 3;
}
dialog.fin-dlg .fin-dlg-bar strong { font-size: 1.02rem; }
dialog.fin-dlg .fin-dlg-bar .muted { margin: 0.1rem 0 0; font-size: 0.82rem; }
dialog.fin-dlg .fin-dlg-bar-acts {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  flex: 0 0 auto;
}
dialog.fin-dlg .fin-dlg-esc { font-size: 0.75rem; white-space: nowrap; }
dialog.fin-dlg .fin-dlg-hint {
  margin: 0;
  padding: 0.35rem 0.75rem;
  font-size: 0.82rem;
  color: #5c4030;
  background: #fff8f0;
  border-bottom: 1px solid #f0e0d0;
  flex: 0 0 auto;
}
dialog.fin-dlg .fin-dlg-ops {
  flex: 0 0 auto;
  padding: 0.45rem 0.75rem;
  background: #fff;
  border-bottom: 1px solid var(--line, #eef2f6);
  position: sticky;
  top: 0;
  z-index: 2;
}
dialog.fin-dlg .fin-dlg-ops-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.55rem;
  margin-bottom: 0.35rem;
}
dialog.fin-dlg .fin-dlg-ops-tools:last-child { margin-bottom: 0; }
dialog.fin-dlg .fin-dlg-q {
  flex: 1 1 10rem;
  min-width: 8rem;
  max-width: 16rem;
  padding: 0.28rem 0.5rem;
  font-size: 0.86rem;
  border: 1px solid var(--line);
  border-radius: 6px;
}
dialog.fin-dlg .fin-dlg-body {
  flex: 1 1 auto;
  overflow: auto;
  padding: 0.45rem 0.75rem 0.75rem;
  min-height: 0;
}
dialog.fin-dlg .fin-dlg-body > .fin-scroll {
  max-height: none;
}
dialog.fin-dlg .fin-scroll { max-height: min(48vh, 420px); }
dialog.fin-dlg .fin-bar-tight { margin: 0; }
dialog.fin-dlg .fin-wait-sm {
  margin: 0 0 0.55rem;
  padding: 0.5rem 0.65rem;
}
.finance-page .fin-pay-sum-sm {
  margin: 0 0 0.4rem;
  gap: 0.35rem;
}
.finance-page .fin-pay-sum-sm .fin-pay-sum-item {
  padding: 0.35rem 0.5rem;
}
.finance-page .fin-bar-tight {
  margin-bottom: 0.55rem;
  padding: 0.45rem 0.55rem;
  gap: 0.35rem 0.5rem;
}
.finance-page .fin-exp-form {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.45rem;
  padding: 0.55rem 0.65rem;
}
.finance-page .fin-exp-form.is-bf {
  border: 1px solid #f0c9a0;
  background: #fff8f0;
}
.finance-page .fin-exp-mode {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.85rem;
  padding: 0.15rem 0 0.35rem;
  border-bottom: 1px dashed #e6ddd0;
}
.finance-page .fin-exp-mode.is-bf {
  border-bottom-color: #e8c49a;
}
.finance-page .fin-exp-mode-toggle {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  font-weight: 650;
  color: #3a4a5a;
  cursor: pointer;
  white-space: nowrap;
}
.finance-page .fin-exp-mode.is-bf .fin-exp-mode-toggle {
  color: #9a5b12;
}
.finance-page .fin-exp-mode-hint {
  margin: 0;
  flex: 1 1 14rem;
  font-size: 0.82rem;
  line-height: 1.35;
}
.finance-page .fin-exp-fields {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 0.35rem 0.5rem;
}
.finance-page .fin-exp-form .fin-exp-fields .field {
  margin: 0;
}
.finance-page .fin-exp-form #fin-exp-user-wrap {
  flex: 0 1 11rem;
  min-width: 9.5rem;
  order: -1;
}
.finance-page .fin-exp-form #fin-exp-user-wrap select {
  border-color: #e09a4a;
}
.finance-page .fin-exp-form .fin-exp-paid {
  flex: 0 0 auto;
  align-self: end;
  padding-bottom: 0.35rem;
}
.finance-page .fin-exp-foot {
  margin: 0.2rem 0 0;
  font-size: 0.82rem;
}
#dlg-expense-edit.fin-dlg {
  width: min(720px, calc(100vw - 2rem));
  max-width: min(720px, calc(100vw - 2rem));
}
#dlg-expense-edit .fin-exp-edit-form {
  margin: 0.75rem 0.85rem 1rem;
  border: 1px solid #e8e0d4;
  background: #fafbfc;
}
#dlg-expense-edit .fin-exp-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.55rem 0.75rem;
  align-items: end;
}
#dlg-expense-edit .fin-exp-fields .field.note,
#dlg-expense-edit .fin-exp-fields .form-actions {
  grid-column: 1 / -1;
}
#dlg-expense-edit .fin-exp-fields .field > input,
#dlg-expense-edit .fin-exp-fields .field > select {
  width: 100%;
  box-sizing: border-box;
}
#dlg-expense-edit .fin-dlg-shell {
  min-height: auto;
}
.fin-acts [data-exp-edit] {
  margin-right: 0.15rem;
}
.finance-page .fin-subh-tight {
  margin: 0.35rem 0 0.35rem;
  font-size: 0.92rem;
}
.finance-page .fin-po-pay .fin-proj-sm {
  font-size: 0.9rem;
  font-weight: 600;
  line-height: 1.3;
}
.finance-page .fin-po-st {
  margin-top: 0.08rem;
  font-size: 0.72rem;
}
.finance-page .fin-pay-inline {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.28rem;
  margin: 0;
}
.finance-page .fin-pay-inline input[type="number"] {
  width: 6.2rem;
  min-width: 5.5rem;
  padding: 0.28rem 0.35rem;
  font-size: 0.82rem;
}
.finance-page .fin-pay-inline input[type="date"] {
  width: 8.2rem;
  min-width: 7.5rem;
  padding: 0.28rem 0.3rem;
  font-size: 0.82rem;
}
.finance-page .fin-pay-inline input[name="note"] {
  width: 6.5rem;
  min-width: 5rem;
  flex: 1 1 5rem;
  padding: 0.28rem 0.35rem;
  font-size: 0.82rem;
}
.finance-page .fin-pay-inline button {
  margin: 0;
  padding: 0.28rem 0.65rem;
  min-height: 1.85rem;
  white-space: nowrap;
  font-size: 0.82rem;
}
@media (max-width: 720px) {
  .finance-page .fin-pay-sum { grid-template-columns: 1fr; }
  .finance-page .fin-pay-inline { flex-wrap: wrap; }
}
.finance-page .fin-wait,
dialog.proj-edit-dlg .fin-wait {
  margin: 0 0 1rem;
  padding: 0.85rem 0.95rem;
  border: 1px solid #f0c9a0;
  background: #fff7ee;
  border-radius: 10px;
}
.finance-page .fin-wait h3,
dialog.proj-edit-dlg .fin-wait h3 {
  margin: 0 0 0.55rem;
  font-size: 0.95rem;
}
.finance-page .fin-table tr.is-focus td,
dialog.proj-edit-dlg .fin-wait tr.unread td {
  background: #fff1e4;
}
.finance-page .fin-empty { margin: 0.55rem 0 0; }
.finance-page .fin-sticky-save {
  position: sticky;
  bottom: 0;
  margin: 0.8rem 0 0;
  padding: 0.65rem 0 0.15rem;
  background: linear-gradient(#fffcf800, #fffdf8 28%);
}
.finance-page .payroll-card { padding-bottom: 0.4rem; }
.opex-people-tabs {
  display: flex;
  gap: 0.35rem;
  padding: 0.55rem 0.85rem 0;
  border-bottom: 1px solid #eee5d8;
  background: #fafbfc;
  flex: 0 0 auto;
}
.opex-people-tabs button {
  margin: 0 0 -1px;
  padding: 0.55rem 1rem;
  border: 1px solid transparent;
  border-bottom: none;
  border-radius: 10px 10px 0 0;
  background: transparent;
  font: inherit;
  font-weight: 650;
  color: #5a6a7a;
  cursor: pointer;
}
.opex-people-tabs button.on {
  background: #fff;
  border-color: #eee5d8;
  color: #1f4e79;
}
/* 人员弹窗：加宽 + 内容可滚动，月薪表可横滑 */
#dlg-opex-people.fin-dlg {
  width: min(1120px, 98vw);
  max-width: 98vw;
  height: min(92vh, 900px);
  max-height: min(92vh, 900px);
}
#dlg-opex-people.fin-dlg[open] {
  display: flex;
  flex-direction: column;
}
#dlg-opex-people .fin-dlg-shell {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  max-height: none;
  overflow: hidden;
}
#dlg-opex-people .opex-people-tabs { flex: 0 0 auto; }
#dlg-opex-people .opex-cfg-extra { display: none; }
#dlg-opex-people .opex-people-pane {
  flex: 0 0 auto;
  min-height: 0;
  overflow: visible;
  padding: 0.45rem 0.75rem 0.2rem;
}
#dlg-opex-people .opex-people-pane[data-opex-pane-body="cfg"] {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-top: 0.25rem;
  padding-bottom: 0.55rem;
}
#dlg-opex-people .opex-pane-cfg,
#dlg-opex-people .opex-cfg-form {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
#dlg-opex-people .opex-cfg-form { padding: 0.1rem 0 0; }
#dlg-opex-people .opex-wage-chip {
  flex-direction: row;
  align-items: baseline;
  gap: 0.35rem;
  min-width: 0;
  padding: 0.28rem 0.55rem;
}
#dlg-opex-people .opex-subh { margin: 0.15rem 0 0.3rem; }
#dlg-opex-people .opex-people-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.85rem;
  margin: 0 0 0.55rem;
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 0.35rem 0;
  background: linear-gradient(#fff9f2 70%, transparent);
}
#dlg-opex-people .opex-people-tools .opex-dlg-q { margin: 0; }
#dlg-opex-people .opex-people-tools-hint { font-size: 0.78rem; }
#dlg-opex-people .opex-cfg-toolbar {
  flex: 0 0 auto;
  position: sticky;
  top: 0;
  z-index: 3;
  background: #f5f9fc;
  padding: 0.35rem 0.15rem 0.45rem;
  margin-bottom: 0.35rem;
  border-bottom: 1px solid #d5e3ef;
}
#dlg-opex-people .opex-pane-done {
  max-height: none;
  overflow: visible;
  padding: 0.45rem 0.65rem 0.2rem;
}
#dlg-opex-people .opex-pane-cfg { padding: 0.45rem 0.65rem 0.35rem; }
#dlg-opex-people .opex-cfg-scroll {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
  border: 1px solid #d5e3ef;
  border-radius: 8px;
  background: #fff;
  -webkit-overflow-scrolling: touch;
}
#dlg-opex-people .payroll-table {
  width: 100%;
  min-width: 0;
  margin: 0;
}
#dlg-opex-people .payroll-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #eef4f9;
  box-shadow: 0 1px 0 #d5e3ef;
}
#dlg-opex-people .opex-cfg-col-name { min-width: 6.5rem; }
#dlg-opex-people .opex-cfg-col-dept { min-width: 8rem; }
#dlg-opex-people .opex-cfg-col-leader { min-width: 7rem; }
#dlg-opex-people .opex-cfg-col-date { min-width: 6.4rem; }
#dlg-opex-people .opex-cfg-col-amt { min-width: 5.4rem; }
#dlg-opex-people .opex-cfg-col-rate { min-width: 5rem; }
#dlg-opex-people .opex-cfg-col-act { min-width: 3.5rem; }
#dlg-opex-people .payroll-table input.date-ymd {
  width: 6.5rem;
  min-width: 0;
  box-sizing: border-box;
}
#dlg-opex-people .payroll-table input[type="number"].js-pay {
  width: 5.6rem;
  min-width: 0;
  box-sizing: border-box;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#dlg-opex-people .opex-cfg-form .fin-sticky-save {
  position: sticky;
  bottom: 0;
  z-index: 2;
  margin-top: 0.55rem;
  padding: 0.55rem 0.25rem 0.15rem;
  background: linear-gradient(transparent, #f5f9fc 35%);
}
.opex-people-pane {
  padding: 0.75rem 0.85rem 1rem;
}
.opex-pane-card {
  border-radius: 12px;
  padding: 0.75rem 0.85rem;
}
.opex-pane-done {
  border: 1px solid #f0c9a0;
  background: #fff9f2;
}
.opex-pane-cfg {
  border: 1px solid #d5e3ef;
  background: #f5f9fc;
}
.opex-pane-head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin-bottom: 0.65rem;
}
.opex-wage-people {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0 0 0.85rem;
}
.opex-wage-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.1rem;
  margin: 0;
  padding: 0.45rem 0.7rem;
  min-width: 6.5rem;
  border: 1px solid #e0d3bc;
  border-radius: 10px;
  background: #fff;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.opex-wage-chip:hover { border-color: #c45c26; }
.opex-wage-chip.need {
  border-color: #e09a4a;
  box-shadow: inset 3px 0 0 #e09a4a;
}
.opex-wage-chip strong { font-size: 0.95rem; color: #2c3d4d; }
.opex-wage-chip span { font-size: 0.78rem; color: #6a7a8a; }
.opex-wage-chip em {
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 650;
  color: #9a5b12;
}
.opex-wage-chip em.ok { color: #3a9a6a; }
.opex-wage-chip.opex-wage-add {
  border-style: dashed;
  border-color: #c45c26;
  background: #fff8f0;
  color: #c45c26;
}
.opex-wage-chip.opex-wage-add strong { color: #c45c26; }
.opex-wage-chip.is-os {
  border-color: #b8a0d0;
  box-shadow: inset 3px 0 0 #8b6bb5;
}
.opex-wage-outsource { margin-top: 0.15rem; }
.opex-subh {
  margin: 0.75rem 0 0.35rem;
  font-size: 0.9rem;
  font-weight: 650;
  color: #3a4a5a;
}
.finance-page .opex-dlg b.warn,
.finance-page .fin-dlg b.warn { color: #b35a00; font-weight: 650; }
.finance-page #rent-bf-form .wage-bf-list tr td:last-child { white-space: nowrap; }
.opex-wage-sum { max-height: 11rem; margin-bottom: 0.5rem; }
.opex-wage-detail {
  max-height: min(42vh, 24rem);
  min-height: 12rem;
}
#dlg-opex-people .opex-wage-detail {
  max-height: min(55vh, 28rem);
  min-height: 12rem;
}
#dlg-opex-people .opex-wage-detail table {
  width: 100%;
}
.opex-wage-fold {
  margin: 0.65rem 0 0.35rem;
  border: 1px solid #f0dfc8;
  border-radius: 8px;
  background: #fff;
  padding: 0.25rem 0.55rem 0.45rem;
}
.opex-wage-fold > summary {
  cursor: pointer;
  font-weight: 650;
  font-size: 0.9rem;
  color: #3a4a5a;
  padding: 0.35rem 0;
  list-style: none;
}
.opex-wage-fold > summary::-webkit-details-marker { display: none; }
.opex-wage-fold > summary::before {
  content: "▸ ";
  color: #c45c26;
}
.opex-wage-fold[open] > summary::before { content: "▾ "; }

/* 按人维护：贴着内容，不撑满整屏留白 */
#dlg-wage-bf.fin-dlg.fin-dlg-full {
  width: min(960px, calc(100vw - 2rem));
  max-width: min(960px, calc(100vw - 2rem));
  height: fit-content;
  max-height: calc(100vh - 2rem);
  margin: auto;
  border-radius: 12px;
  border: none;
}
#dlg-wage-bf .wage-bf-shell,
#dlg-wage-bf .fin-dlg-shell {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  max-width: none;
  width: 100%;
  height: auto;
  max-height: calc(100vh - 2rem);
}
#dlg-wage-bf .wage-bf-main {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 0.65rem 1rem 1rem;
  -webkit-overflow-scrolling: touch;
}
#dlg-wage-bf .wage-bf-foot {
  flex: 0 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem 1rem;
  padding: 0.65rem 1rem;
  border-top: 1px solid #e5ebf1;
  background: #fffaf4;
  box-shadow: 0 -6px 18px rgba(40, 30, 20, 0.06);
  z-index: 4;
}
#dlg-wage-bf .wage-bf-foot-hint {
  margin: 0;
  font-size: 0.86rem;
  color: #5c4030;
}
#dlg-wage-bf .wage-bf-foot-acts {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin-left: auto;
}
#dlg-wage-bf .wage-bf-foot-acts .ok {
  min-width: 9.5rem;
  font-weight: 650;
  padding: 0.45rem 1.1rem;
}
#dlg-wage-bf .wage-bf-fill-hint {
  margin: 0.35rem 0 0;
  border-radius: 8px;
}
.wage-bf-shell { max-width: none; }
.wage-bf-list input.wage-bf-amt {
  width: 6.2rem;
  text-align: right;
}
.wage-bf-biz { max-height: none; }
.wage-bf-list input.wage-bf-wage,
.wage-bf-list input.wage-bf-bonus {
  width: 7.5rem;
  text-align: right;
}
.wage-bf-exist {
  margin-top: 0.85rem;
  padding-top: 0.75rem;
  border-top: 1px solid #e8e2d8;
}
.wage-bf-exist-scroll {
  max-height: none;
}
.wage-bf-exist .fin-acts {
  white-space: nowrap;
}
/* 人员与月薪配置：网格排布，避免一行挤裁切 */
#dlg-wage-bf .wage-bf-top {
  display: grid;
  grid-template-columns: minmax(7.5rem, 1.1fr) minmax(7rem, 0.9fr) repeat(2, minmax(8.5rem, 1fr)) repeat(2, minmax(8.2rem, 0.95fr));
  gap: 0.55rem 0.75rem;
  align-items: end;
}
#dlg-wage-bf .wage-bf-top .field {
  margin: 0;
  min-width: 0;
  padding-top: 0.15rem;
}
#dlg-wage-bf .wage-bf-top .field > input,
#dlg-wage-bf .wage-bf-top .field > select {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
#dlg-wage-bf .wage-bf-f-amt input {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-size: 1rem;
  font-weight: 600;
  padding: 0.4rem 0.55rem;
}
#dlg-wage-bf .wage-bf-fy-cap {
  margin: 0.35rem 0 0;
  font-size: 0.8rem;
}
/* 入职/转正：文本年-月-日 */
#dlg-wage-bf input.date-ymd,
#dlg-opex-people input.date-ymd {
  min-width: 0;
  width: 100%;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
#dlg-wage-bf input.date-ymd::placeholder,
#dlg-opex-people input.date-ymd::placeholder {
  color: #9aa8b5;
  letter-spacing: 0;
}
#dlg-wage-bf .wage-bf-table-scroll {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin-top: 0.35rem;
  border: 1px solid #e8eef3;
  border-radius: 8px;
  background: #fff;
}
#dlg-wage-bf .wage-bf-table-scroll .wage-bf-list {
  min-width: 0;
  width: 100%;
  margin: 0;
}
#dlg-wage-bf .wage-bf-list td:last-child {
  white-space: normal;
}
#dlg-wage-bf .wage-bf-foot-acts button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.wage-bf-have {
  display: inline-block;
  padding: 0.08rem 0.4rem;
  font-size: 0.78rem;
  font-weight: 650;
  color: #1f6b45;
  background: #e5f5ec;
  border-radius: 4px;
}
.wage-bf-future {
  margin: 0.15rem 0 0.65rem;
  padding: 0.55rem 0.75rem;
  background: #fffbf3;
  border: 1px dashed #e6d3b0;
  border-radius: 8px;
  color: #6a5230;
  font-size: 0.88rem;
  line-height: 1.5;
}
.wage-bf-future b { color: #8a5a12; }
.wage-bf-none {
  margin: 0.15rem 0 0.65rem;
  padding: 0.6rem 0.75rem;
  background: #f3faf6;
  border-radius: 8px;
  color: #1f6b45;
  line-height: 1.45;
}
.wage-bf-fee-h {
  margin: 1rem 0 0.45rem;
  padding-top: 0.85rem;
  border-top: 1px solid #e6ebf0;
}
.wage-bf-fee-list {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  margin: 0 0 0.55rem;
}
.wage-bf-fee-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.75rem;
  padding: 0.28rem 0.15rem;
  border-bottom: 1px solid #f0f3f6;
}
.wage-bf-fee-item b { min-width: 7rem; }
.wage-bf-fee-add {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
}
.wage-bf-fee-add select,
.wage-bf-fee-add input {
  min-height: 2rem;
}
.wage-bf-fee-add input[type="number"] { width: 7rem; text-align: right; }
.wage-bf-fee-add input[type="text"] { width: 8rem; }
.wage-bf-fee-pend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.45rem;
}
.wage-bf-fee-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.12rem 0.4rem;
  background: #fff8f0;
  border-radius: 6px;
  font-size: 0.84rem;
}
#dlg-wage-bf .wage-bf-led td { font-variant-numeric: tabular-nums; }
#wage-bf-pend-wrap { margin-bottom: 0.75rem; }
.wage-bf-payline {
  margin: 0.45rem 0 0;
  font-size: 0.9rem;
  line-height: 1.45;
  color: #2c3d4d;
}
#dlg-wage-bf .wage-bf-who-bar {
  grid-template-columns: minmax(10rem, 1.4fr) minmax(9rem, 1fr) minmax(8rem, 0.8fr);
}
#dlg-wage-bf .wage-bf-rec {
  white-space: normal;
}
#dlg-wage-bf .wage-bf-rec b {
  display: inline-block;
  margin-right: 0.25rem;
  font-variant-numeric: tabular-nums;
}
#dlg-wage-bf .wage-bf-rec .ghost,
#dlg-wage-bf .wage-bf-mini {
  margin: 0 0.15rem 0 0;
  padding: 0.02rem 0.35rem;
  min-height: 0;
  font-size: 0.75rem;
  line-height: 1.4;
}
#dlg-wage-bf .wage-bf-months input.wage-bf-amt {
  min-width: 4.4rem;
  max-width: 6.2rem;
  font-size: 0.88rem;
  font-weight: 600;
}
#dlg-wage-bf .wage-bf-list th,
#dlg-wage-bf .wage-bf-list td {
  white-space: nowrap;
  vertical-align: middle;
}
#dlg-wage-bf .wage-bf-col-ck { width: 3rem; }
#dlg-wage-bf .wage-bf-col-mon { min-width: 7.5rem; }
#dlg-wage-bf .wage-bf-col-amt { min-width: 5rem; }
#dlg-wage-bf .wage-bf-col-note { min-width: 8rem; }
#dlg-wage-bf .wage-bf-col-st { min-width: 7rem; }
#dlg-wage-bf .wage-bf-months input.wage-bf-amt {
  width: 100%;
  min-width: 6.5rem;
  max-width: 9rem;
  box-sizing: border-box;
  padding: 0.35rem 0.45rem;
  font-size: 0.95rem;
  font-variant-numeric: tabular-nums;
}
@media (max-width: 1100px) {
  #dlg-wage-bf .wage-bf-top {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 720px) {
  #dlg-wage-bf .wage-bf-top {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #dlg-wage-bf .wage-bf-f-name {
    grid-column: 1 / -1;
  }
}
.wage-bf-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.55rem 1rem;
  margin: 0.55rem 0 0.45rem;
  padding: 0.45rem 0.55rem;
  border: 1px solid #e8eef3;
  border-radius: 8px;
  background: #f7fafc;
}
#dlg-wage-bf .wage-bf-tools:has(.wage-bf-tools-btns[hidden]) {
  border: none;
  background: transparent;
  padding: 0;
  margin: 0.15rem 0 0.35rem;
  justify-content: flex-start;
}
#dlg-wage-bf .wage-bf-list th.num,
#dlg-wage-bf .wage-bf-list td.num {
  text-align: right;
}
.wage-bf-tools-btns,
.wage-bf-tools-opts {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45rem 0.75rem;
}
.wage-bf-tools .ghost,
.wage-bf-tools .ok {
  font-size: 0.86rem;
  min-height: 2rem;
  padding: 0.28rem 0.75rem;
}
.wage-bf-tools .ok { font-weight: 650; }
#dlg-wage-bf .wage-bf-months input.wage-bf-amt {
  min-width: 4.6rem;
  max-width: 6.2rem;
  font-size: 0.88rem;
  font-weight: 600;
}
#dlg-opex-biz .opex-wage-people {
  max-height: min(22vh, 168px);
}
/* 全屏补录：不透明底，避免背后饼图透出干扰 */
#dlg-wage-bf {
  background: #f4f6f8;
}
#dlg-wage-bf::backdrop {
  background: rgba(20, 28, 36, 0.55);
}
.wage-bf-months { max-height: none; margin-top: 0.35rem; overflow: visible; }
.wage-bf-months input.wage-bf-amt {
  width: 8.5rem;
  text-align: right;
}
.wage-bf-months tr.is-have { opacity: 1; }
.wage-bf-months tr.is-miss {
  background: #fff8f0;
}
.wage-bf-months tr.is-miss td:nth-child(2) strong { color: #c45c26; }
.wage-bf-months tr.is-before-hire,
.wage-bf-biz tr.is-before-hire {
  opacity: 0.42;
  background: #f3f5f7;
}
.wage-bf-months tr.is-before-hire td:last-child {
  color: #9a6a3a;
  font-size: 0.78rem;
}
.wage-bf-months tr.is-before-hire input[type="checkbox"],
.wage-bf-months tr.is-before-hire input.wage-bf-amt,
.wage-bf-biz tr.is-before-hire input.wage-bf-amt {
  cursor: not-allowed;
}
.wage-bf-months input.wage-bf-note,
.wage-bf-biz input.wage-bf-note {
  width: 9.5rem;
  min-width: 7rem;
  max-width: 14rem;
  font-size: 0.82rem;
}
/* 个人费用维护：分区卡片 + 未来预算态 */
.wage-bf-card {
  margin: 0 0 0.85rem;
  padding: 0.75rem 0.9rem 0.85rem;
  border: 1px solid #e6ebf0;
  border-radius: 10px;
  background: #fff;
}
.wage-bf-card-h {
  margin: 0 0 0.55rem;
  font-size: 0.95rem;
  font-weight: 650;
  color: #2c3d4d;
}
.wage-bf-card-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.5rem 1rem;
  margin-bottom: 0.35rem;
}
.wage-bf-card-bar .wage-bf-card-h { margin: 0; }
.wage-bf-range {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem 0.75rem;
}
.wage-bf-range .field { margin: 0; min-width: 6.5rem; }
.wage-bf-rule {
  margin: 0.55rem 0 0;
  padding: 0.45rem 0.65rem;
  font-size: 0.84rem;
  line-height: 1.45;
  color: #4a5a6a;
  background: #f6f8fa;
  border-radius: 8px;
}
.wage-bf-tag {
  display: inline-block;
  margin-right: 0.25rem;
  padding: 0.05rem 0.4rem;
  font-size: 0.72rem;
  font-weight: 650;
  border-radius: 4px;
  vertical-align: middle;
}
.wage-bf-tag.done {
  color: #1f6b45;
  background: #e5f5ec;
}
.wage-bf-tag.fut {
  color: #8a5a12;
  background: #fff3df;
}
.wage-bf-sum {
  margin: 0.35rem 0 0.55rem;
  font-size: 0.86rem;
  color: #4a5a6a;
}
.wage-bf-sum b.warn { color: #c45c26; }
.wage-bf-fold {
  margin-top: 0.75rem;
  border-top: 1px dashed #e5ebf1;
  padding-top: 0.45rem;
}
.wage-bf-fold > summary {
  cursor: pointer;
  font-weight: 600;
  color: #3a4a5a;
  padding: 0.35rem 0;
  list-style: none;
}
.wage-bf-fold > summary::-webkit-details-marker { display: none; }
.wage-bf-fold > summary::before { content: "▸ "; color: #8a9aaa; }
.wage-bf-fold[open] > summary::before { content: "▾ "; }
.wage-bf-months tr.is-future {
  background: #fffbf3;
  opacity: 0.92;
}
.wage-bf-months tr.is-future td:last-child {
  color: #8a5a12;
  font-size: 0.78rem;
}
.wage-bf-fut-mark {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0.02rem 0.35rem;
  font-size: 0.68rem;
  font-style: normal;
  font-weight: 650;
  color: #8a5a12;
  background: #fff3df;
  border-radius: 3px;
  vertical-align: middle;
}
.wage-bf-months input.wage-bf-amt.is-preview {
  background: #faf6ee;
  color: #6a5a40;
  border-style: dashed;
}
.wage-bf-months td.need-lab { position: relative; }
.wage-bf-months td.need-lab .need-tag {
  position: absolute;
  top: 0.15rem;
  right: 0.35rem;
  font-size: 0.65rem;
}
@media (max-width: 720px) {
  #dlg-wage-bf .wage-bf-foot {
    flex-direction: column;
    align-items: stretch;
  }
  #dlg-wage-bf .wage-bf-foot-acts {
    margin-left: 0;
    width: 100%;
  }
  #dlg-wage-bf .wage-bf-foot-acts .ok,
  #dlg-wage-bf .wage-bf-foot-acts .ghost {
    flex: 1 1 auto;
  }
}
.opex-pane-cfg .payroll-card {
  background: transparent;
  padding: 0;
}
.finance-page .payroll-table input[type="number"] {
  width: 7.6rem;
  text-align: right;
}
@media (max-width: 1100px) {
  .finance-page .fin-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .finance-page .fin-bars { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
  .finance-page .fin-bar .field.grow,
  .finance-page .fin-bar .field.note { flex: 1 1 100%; }
  .finance-page .fin-kpis { grid-template-columns: 1fr; }
}

/* 财务六问：付款页签 / 回款确认 / 利润折叠 */
.finance-page .fin-pay-tabs {
  display: flex;
  gap: 0.35rem;
  padding: 0.55rem 1rem 0;
  border-bottom: 1px solid #eadfce;
}
.finance-page .fin-pay-tabs button {
  border: 0;
  background: transparent;
  padding: 0.45rem 0.85rem;
  border-radius: 8px 8px 0 0;
  color: #6b5e4e;
  cursor: pointer;
  font: inherit;
}
.finance-page .fin-pay-tabs button.on {
  background: #fff;
  color: #2c2418;
  font-weight: 600;
  box-shadow: inset 0 -2px 0 #c45c26;
}
.finance-page .fin-confirm-dl {
  margin: 0 0 1rem;
  display: grid;
  gap: 0.55rem;
}
.finance-page .fin-confirm-dl > div {
  display: grid;
  grid-template-columns: 4rem 1fr;
  gap: 0.5rem;
  align-items: baseline;
}
.finance-page .fin-confirm-dl dt {
  margin: 0;
  color: #8a7b68;
  font-size: 0.85rem;
}
.finance-page .fin-confirm-dl dd {
  margin: 0;
  font-weight: 600;
}
.finance-page .fin-rpt-person.is-collapsed .fin-rpt-person-body {
  display: none;
}
.finance-page .fin-rpt-person-h[data-rpt-toggle] {
  cursor: pointer;
}
.finance-page .fin-rpt-person-h[data-rpt-toggle]::after {
  content: "展开明细";
  font-size: 0.75rem;
  color: #8a7b68;
  font-weight: 400;
  margin-left: auto;
  padding-left: 0.75rem;
}
.finance-page .fin-rpt-person:not(.is-collapsed) .fin-rpt-person-h[data-rpt-toggle]::after {
  content: "收起";
}
.finance-page .fin-tip-more {
  margin-top: 0.35rem;
}
.finance-page .fin-tip-more summary {
  cursor: pointer;
  color: #6b5e4e;
  font-size: 0.88rem;
}
.finance-page dialog.fin-dlg-sm {
  max-width: 26rem;
  width: calc(100% - 2rem);
}
.catalog-lite-hint { margin: 0 0 0.55rem; font-size: 0.82rem; }
.catalog-page .catalog-lite .catalog-sheet td.col-name .catalog-name {
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--navy);
}
.catalog-page .catalog-lite .catalog-sheet td.col-model {
  font-size: 1.02rem;
  font-weight: 700;
  line-height: 1.35;
  color: #1f2937;
  word-break: break-word;
}
.catalog-page .catalog-lite .catalog-sheet td.col-brand {
  font-size: 1.02rem;
  font-weight: 700;
  line-height: 1.35;
  color: #1f2937;
  word-break: break-word;
}
.catalog-page .catalog-lite .catalog-sheet thead th.col-name,
.catalog-page .catalog-lite .catalog-sheet thead th.col-brand,
.catalog-page .catalog-lite .catalog-sheet thead th.col-model {
  font-size: 0.92rem;
  font-weight: 700;
}
.sol-flow-fold { margin: 0 0 0.75rem; }
.sol-flow-fold > summary { cursor: pointer; font-weight: 600; }
.rd-empty-hero h2 { margin: 0 0 0.35rem; }
.rd-flow-compact { margin: 0.75rem 0 0; }
.desk-todo-more { margin-top: 0.65rem; border-top: 1px solid #eee5d8; padding-top: 0.45rem; }
.desk-todo-more > summary {
  cursor: pointer;
  color: #6b7280;
  font-size: 0.82rem;
  list-style: none;
}
.desk-todo-more > summary::-webkit-details-marker { display: none; }
.fin-scope-note { margin: 0.2rem 0 0; font-size: 0.82rem; }

/* 财务总览六块（已拆签，保留样式以免旧缓存） */
.finance-page .fin-six-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 0 0 1rem;
}
.finance-page .fin-six-card {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid #e8dfd2;
  border-radius: 10px;
  background: #fffdf9;
  text-decoration: none;
  color: inherit;
  min-height: 5.2rem;
}
.finance-page .fin-six-card:hover { border-color: #c45c26; }
.finance-page .fin-six-lab {
  font-size: 0.78rem;
  color: #6b7280;
  font-weight: 600;
}
.finance-page .fin-six-n {
  font-size: 1.35rem;
  font-weight: 750;
  line-height: 1.2;
}
.finance-page .fin-six-duo {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem 1rem;
  font-size: 0.92rem;
}
.finance-page .fin-six-duo b { font-size: 1.15rem; }
.finance-page .fin-cash-kpi-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.65rem;
  margin: 0 0 1rem;
}
.finance-page .fin-cash-kpi {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.75rem 0.85rem;
  border: 1px solid #e8dfd2;
  border-radius: 10px;
  background: #fffdf9;
}
.finance-page .fin-cash-kpi > span {
  font-size: 0.78rem;
  color: #6b7280;
  font-weight: 600;
}
.finance-page .fin-cash-kpi > b {
  font-size: 1.35rem;
  font-weight: 750;
  line-height: 1.2;
}
.finance-page .fin-ov-tables.is-open-static {
  margin: 0.85rem 0 0;
  border: 1px solid #eee5d8;
  border-radius: 10px;
  padding: 0.55rem 0.75rem 0.75rem;
  background: #fff;
}
.finance-page .fin-sales-by-person {
  margin: 0.75rem 0 0;
}
.finance-page .fin-sales-by-person .card {
  overflow-x: auto;
}
.finance-page .fin-sales-io-table {
  min-width: 78rem;
}
.finance-page .fin-sales-io-table tbody td:first-child,
.finance-page .fin-sales-io-table thead tr:first-child th:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: #fff;
  box-shadow: 1px 0 0 #e6edf3;
}
.finance-page .fin-sales-io-table thead tr:first-child th:first-child {
  z-index: 4;
  background: #eef3f8;
  text-align: left;
}
.finance-page .fin-sales-io-table thead tr:nth-child(2) th {
  top: 1.85rem;
}
.finance-page .fin-sales-io-table tr.fin-grp th {
  white-space: nowrap;
}
.finance-page .fin-table th.is-net,
.finance-page .fin-table td.is-net {
  background: #fff7ee;
}
.finance-page .fin-sales-io-table thead th.is-net {
  background: #fff1e0;
}
.finance-page .fin-tip-one {
  margin: 0.35rem 0 0.65rem;
  font-size: 0.86rem;
  line-height: 1.45;
}
.finance-page .fin-sales-pick {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 9.5rem;
}
.finance-page .fin-sales-pick .fin-sales-q,
.fin-proj-pick .fin-sales-q,
.open-uid-pick .fin-sales-q {
  font-size: 0.82rem;
  padding: 0.28rem 0.45rem;
}
.fin-proj-pick,
.open-uid-pick {
  display: flex;
  flex-direction: column;
  gap: 0.22rem;
  min-width: 9rem;
}
.fin-proj-pick select,
.open-uid-pick select {
  min-width: 100%;
}
.open-board-filter .open-uid-pick {
  display: inline-flex;
  vertical-align: top;
}
.search .open-uid-pick,
.search .fin-proj-pick {
  display: inline-flex;
  vertical-align: middle;
}
.finance-page .fin-proj-pick {
  min-width: 12rem;
  flex: 1 1 14rem;
}
.finance-page .fin-rpt-summary-lite {
  grid-template-columns: minmax(7.5rem, 0.85fr) minmax(7.5rem, 0.85fr) minmax(7.5rem, 0.85fr) minmax(12rem, 1.4fr);
}
  gap: 0.75rem 1rem;
  align-items: center;
  margin: 0.65rem 0 0.85rem;
  padding: 0.65rem 0.8rem;
  border: 1px solid #eee5d8;
  border-radius: 10px;
  background: #fff;
}
.finance-page .fin-rpt-summary .fin-rpt-collect {
  margin: 0;
}
.finance-page .fin-rpt-summary .fin-rpt-kpi {
  margin: 0;
}
.finance-page .fin-rpt-summary-bars {
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  min-width: 0;
}
.finance-page .fin-rpt-summary .fin-rpt-mini-pie {
  margin: 0;
}
.finance-page .fin-viz-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 0.85rem;
  margin: 0.55rem 0 0.75rem;
  align-items: start;
}
.finance-page .fin-viz-project {
  grid-template-columns: 1fr;
}
.finance-page .fin-viz-person {
  grid-template-columns: 1fr;
}
.finance-page .fin-viz-dual-rank {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.85rem;
  align-items: start;
}
.finance-page .fin-viz-dual-rank .fin-rank-block {
  margin: 0;
}
.finance-page .fin-viz-chart {
  padding: 0.65rem 0.8rem 0.85rem;
  min-width: 0;
}
.finance-page .fin-viz-h {
  margin: 0 0 0.45rem;
  font-size: 0.95rem;
}
.finance-page .fin-viz-h .muted {
  font-weight: 400;
  font-size: 0.78rem;
}
.finance-page .fin-io-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 0.65rem;
  font-size: 0.78rem;
  color: var(--muted);
  margin: 0 0 0.5rem;
}
.finance-page .fin-io-legend i {
  display: inline-block;
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 2px;
  margin-right: 0.25rem;
  vertical-align: -0.05rem;
}
.finance-page .fin-io-legend i.is-in,
.finance-page .fin-io-legend i.is-proj { background: #2f6f9f; }
.finance-page .fin-io-legend i.is-out,
.finance-page .fin-io-legend i.is-prod { background: #c45c26; }
.finance-page .fin-io-legend i.is-net { background: #3a9a6a; }
.finance-page .fin-toolbar .agent-pick-filter {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 12rem;
}
.finance-page .fin-toolbar .agent-pick-filter::before {
  content: "代理商";
  font-size: 0.78rem;
  color: var(--muted);
}
.finance-page .fin-tip-fold > summary {
  font-size: 0.86rem;
  color: var(--muted);
}
.finance-page .fin-drill-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  margin: -0.25rem 0 0.65rem;
}
.finance-page .fin-drill-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
  margin: 0;
  padding: 0.22rem 0.65rem;
  border: 1px solid #f0c9a0;
  border-radius: 999px;
  background: #fff7ee;
  color: #8a4b16;
  font: inherit;
  font-size: 0.82rem;
  cursor: pointer;
  text-decoration: none;
}
.finance-page .fin-drill-chip b { font-weight: 700; }
.finance-page .fin-drill-chip:hover { border-color: #c45c26; color: #c45c26; }
.finance-page .fin-table tr.is-flash td { background: #fff3e0; }
.finance-page .fin-person-cols {
  display: grid;
  grid-template-columns: 6.2rem repeat(6, minmax(0, 1fr));
  gap: 0.35rem 0.5rem;
  padding: 0 0.5rem 0.35rem;
  font-size: 0.72rem;
  color: var(--muted);
}
.finance-page .fin-person-cols span:not(:first-child) { text-align: right; }
.finance-page .fin-io-formula {
  margin: 0 0 0.4rem;
  font-size: 0.82rem;
}
.finance-page .fin-io-legend i.is-out-bar { background: #2f6f9f; }
.finance-page .fin-io-legend i.is-person-in { background: #c45c26; }
.finance-page .fin-io-legend i.is-proj-in { background: #8a4b16; }
.finance-page .fin-person-profit { padding: 0.7rem 0.85rem 0.85rem; }
.finance-page .fin-person-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  max-height: 38rem;
  overflow: auto;
}
.finance-page .fin-person-card {
  border: 1px solid #eee5d8;
  border-radius: 8px;
  background: #fff;
}
.finance-page .fin-person-card.is-open { border-color: #f0c9a0; background: #fffdf8; }
.finance-page .fin-person-sum {
  display: grid;
  grid-template-columns: 6.2rem repeat(6, minmax(0, 1fr));
  gap: 0.35rem 0.5rem;
  align-items: center;
  padding: 0.45rem 0.5rem;
  cursor: pointer;
}
.finance-page .fin-book-wrap {
  margin: 0.35rem 0 0.7rem;
}
.finance-page .fin-book-tot th,
.finance-page .fin-person-table th,
.finance-page .fin-ov-tables th {
  white-space: nowrap;
  font-size: 0.78rem;
  position: sticky;
  top: 0;
  z-index: 2;
  background: #fffaf3;
}
.finance-page .fin-person-table td.fin-person-name-cell,
.finance-page .fin-person-table thead th:first-child {
  position: sticky;
  left: 0;
  z-index: 1;
  background: #fff;
  box-shadow: 1px 0 0 #eee5d8;
  vertical-align: middle;
}
.finance-page .fin-person-table thead th:first-child { z-index: 3; background: #fffaf3; }
.finance-page .fin-person-table tr.is-book-prod td {
  background: #faf7f2;
}
.finance-page .fin-person-table .fin-person-name {
  text-align: left;
}
.finance-page .fin-table td.num .fin-cost-link {
  display: block;
  width: 100%;
  text-align: right;
  padding: 0.22rem 0.1rem;
  box-sizing: border-box;
}
.finance-page .fin-person-books {
  display: grid;
  gap: 0.18rem;
  min-width: 0;
}
.finance-page .fin-person-book-head,
.finance-page .fin-person-book-row {
  display: grid;
  grid-template-columns: 4.4rem minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.15fr);
  gap: 0.25rem 0.35rem;
  align-items: center;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.finance-page .fin-person-book-head {
  color: var(--muted);
  font-size: 0.68rem;
  padding: 0 0.35rem;
}
.finance-page .fin-person-book-head span:first-child,
.finance-page .fin-person-book-row > span {
  text-align: left;
  font-weight: 650;
  color: #5c6b7a;
}
.finance-page .fin-person-book-row {
  margin: 0;
  padding: 0.28rem 0.35rem;
  border: 1px solid #eadfce;
  border-radius: 8px;
  background: #fff;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.finance-page .fin-person-book-row:hover {
  border-color: #e0a060;
  background: #fff8ef;
}
.finance-page .fin-person-book-row b {
  font-weight: 650;
  font-size: 0.82rem;
  color: #243140;
}
.finance-page .fin-person-book-row b.err { color: #b42318; }
.finance-page .fin-person-book-row b.is-net {
  font-weight: 800;
  color: #2f6f4f;
}
.finance-page .fin-person-book-row b.is-net.err { color: #b42318; }
.finance-page .fin-person-kpis.is-four {
  grid-template-columns: auto auto;
  gap: 0.08rem 0.4rem;
}
.finance-page .fin-person-kpis.is-four span { font-size: 0.7rem; }
.finance-page .fin-person-kpis .fin-cost-link {
  font-weight: 700;
  font-size: inherit;
}
.finance-page .fin-wf-trio {
  grid-template-columns: 1fr 1fr 1fr;
}
.finance-page .fin-person-bars {
  display: flex;
  flex-direction: column;
  gap: 0.22rem;
  min-width: 0;
}
.finance-page .fin-person-kpis {
  display: grid;
  grid-template-columns: auto auto;
  gap: 0.1rem 0.45rem;
  justify-content: end;
  font-size: 0.72rem;
  color: var(--muted);
  text-align: right;
}
.finance-page .fin-person-kpis b {
  font-size: 0.95rem;
  font-variant-numeric: tabular-nums;
  color: #2f6f4f;
}
.finance-page .fin-person-kpis b.err { color: #b42318; }
.finance-page .fin-wf-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem 1.1rem;
  margin-top: 0.45rem;
}
.finance-page .fin-wf-col h4 {
  margin: 0 0 0.35rem;
  font-size: 0.84rem;
}
.finance-page .fin-wf {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.22rem;
}
.finance-page .fin-wf li {
  display: grid;
  grid-template-columns: 5.6rem minmax(0, 1fr) 5rem;
  gap: 0.35rem;
  align-items: center;
  font-size: 0.78rem;
  color: #5c6b7a;
}
.finance-page .fin-wf li.is-res {
  margin-top: 0.2rem;
  padding-top: 0.25rem;
  border-top: 1px dashed #eee5d8;
  font-weight: 700;
  color: #243140;
}
.finance-page .fin-wf-track {
  height: 0.45rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .fin-wf-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
  min-width: 0;
  max-width: 100%;
}
.finance-page .fin-wf b {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-style: normal;
}
.finance-page .fin-person-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  max-height: 38rem;
  overflow: auto;
}
.finance-page .fin-person-card {
  border: 1px solid #eee5d8;
  border-radius: 8px;
  background: #fff;
}
.finance-page .fin-person-card.is-open { border-color: #f0c9a0; background: #fffdf8; }
.finance-page .fin-person-sum {
  display: grid;
  grid-template-columns: 6.2rem repeat(6, minmax(0, 1fr));
  gap: 0.35rem 0.5rem;
  align-items: center;
  padding: 0.45rem 0.5rem;
  cursor: pointer;
}
.finance-page .fin-person-name {
  justify-self: start;
  font-weight: 700;
  font-size: 0.92rem;
  color: #2f6f9f;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  text-align: left;
}
.finance-page .fin-person-name:hover { text-decoration: underline; }
.finance-page .fin-person-cell {
  margin: 0;
  text-align: right;
  font-style: normal;
  font-variant-numeric: tabular-nums;
  font-weight: 650;
  color: #243140;
  font-size: 0.88rem;
}
.finance-page span.fin-person-cell { font-weight: 500; color: #5c6b7a; }
.finance-page .fin-person-cell.is-net { color: #2f6f4f; }
.finance-page .fin-person-cell.err { color: #b42318; }
.finance-page .fin-person-more {
  padding: 0 0.65rem 0.55rem 0.65rem;
  border-top: 1px dashed #eee5d8;
  background: #faf7f2;
  border-radius: 0 0 8px 8px;
}
.finance-page .fin-person-fees,
.finance-page .fin-person-cash,
.finance-page .fin-person-gap {
  margin: 0.4rem 0 0;
  font-size: 0.78rem;
  color: #5c6b7a;
}
.finance-page .fin-person-gap { color: #8a7560; }
.finance-page .fin-person-line {
  display: grid;
  grid-template-columns: 2.4rem minmax(4rem, 1fr) 5.4rem 6.2rem;
  gap: 0.35rem;
  align-items: center;
  font-size: 0.8rem;
  color: #5c6b7a;
}
.finance-page .fin-person-track {
  height: 0.55rem;
  background: #e8eef4;
  border-radius: 999px;
  overflow: hidden;
}
.finance-page .fin-person-track i {
  display: block;
  height: 100%;
  border-radius: 999px;
  min-width: 0;
  max-width: 100%;
}
.finance-page .fin-person-track i.is-out-bar { background: #2f6f9f; }
.finance-page .fin-person-track i.is-person-in { background: #c45c26; }
.finance-page .fin-person-track i.is-proj-in { background: #8a4b16; }
.finance-page .fin-wf-track i.is-out-bar { background: #2f6f9f; }
.finance-page .fin-wf-track i.is-person-in { background: #c45c26; }
.finance-page .fin-wf-track i.is-proj-in { background: #8a4b16; }
.finance-page .fin-person-track i.is-proj { background: #2f6f9f; }
.finance-page .fin-person-track i.is-prod { background: #c45c26; }
.finance-page .fin-person-track i.is-neg { background: #c0392b; }
.finance-page .fin-person-amt,
.finance-page .fin-person-net {
  text-align: right;
  font-style: normal;
  font-variant-numeric: tabular-nums;
  color: #243140;
}
.finance-page .fin-person-amt { font-weight: 750; }
.finance-page .fin-person-net { color: #2f6f4f; }
.finance-page .fin-person-amt.err,
.finance-page .fin-person-net.err { color: #b42318; }
.finance-page .fin-io-compare {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  max-height: 18rem;
  overflow: auto;
}
.finance-page .fin-io-compare > li {
  display: grid;
  grid-template-columns: 5.5rem 1fr 4.5rem;
  gap: 0.45rem;
  align-items: center;
}
.finance-page .fin-io-name {
  font-size: 0.86rem;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.finance-page .fin-io-bars {
  display: flex;
  flex-direction: column;
  gap: 0.18rem;
  min-width: 0;
}
.finance-page .fin-io-bar {
  height: 0.55rem;
  border-radius: 3px;
  min-width: 0;
  max-width: 100%;
}
.finance-page .fin-io-bar.is-in { background: #2f6f9f; }
.finance-page .fin-io-bar.is-out { background: #c45c26; }
.finance-page .fin-io-net {
  text-align: right;
  font-size: 0.9rem;
  color: #3a9a6a;
}
.finance-page .fin-io-net.err { color: #b42318; }
.finance-page .fin-viz-pie-wrap .opex-pie-card {
  border: 0;
  padding: 0;
  box-shadow: none;
}
.finance-page .fin-viz-rank-wide .fin-rank-block {
  margin: 0;
}
@media (max-width: 1280px) {
  .finance-page .fin-rpt-summary,
  .finance-page .fin-rpt-summary-lite {
    grid-template-columns: 1fr 1fr;
  }
  .finance-page .fin-rpt-summary .fin-rpt-mini-pie {
    grid-column: 1 / -1;
  }
}
@media (max-width: 980px) {
  .finance-page .fin-rpt-summary {
    grid-template-columns: 1fr 1fr;
  }
  .finance-page .fin-viz-grid,
  .finance-page .fin-viz-dual-rank {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .finance-page .fin-rpt-summary {
    grid-template-columns: 1fr;
  }
  .finance-page .fin-io-compare > li {
    grid-template-columns: 4.2rem 1fr 3.6rem;
  }
  .finance-page .fin-person-row { grid-template-columns: 1fr; }
  .finance-page .fin-person-line {
    grid-template-columns: 2.2rem minmax(3rem, 1fr) 4.4rem 5rem;
  }
  .finance-page .fin-person-cols { display: none; }
  .finance-page .fin-person-sum,
  .finance-page .fin-person-sum-io {
    grid-template-columns: 1fr;
    cursor: pointer;
  }
  .finance-page .fin-person-name { grid-column: auto; }
  .finance-page .fin-person-kpis { justify-content: start; }
  .finance-page .fin-person-books { width: 100%; }
  .finance-page .fin-wf-pair,
  .finance-page .fin-wf-trio { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .finance-page .fin-cash-kpi-row { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .finance-page .fin-cash-kpi-row { grid-template-columns: 1fr; }
}
.finance-page .fin-ov-tables {
  margin: 0.85rem 0 0;
  border: 1px solid #eee5d8;
  border-radius: 10px;
  padding: 0.55rem 0.75rem 0.75rem;
  background: #fff;
}
.finance-page .fin-ov-tables > summary {
  cursor: pointer;
  font-weight: 650;
  list-style: none;
}
.finance-page .fin-ov-tables > summary::-webkit-details-marker { display: none; }
@media (max-width: 900px) {
  .finance-page .fin-six-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .finance-page .fin-six-grid { grid-template-columns: 1fr; }
}

/* 工作台当天 To Do（旧日/周/月分栏已收） */
.desk-plan-box { gap: 0.7rem; }
.desk-plan-pane { display: none; gap: 0.55rem; }
.desk-plan-pane.is-on { display: grid; }
.desk-work-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.85rem 1rem;
  align-items: start;
}
.desk-work-col {
  min-width: 0;
  display: grid;
  gap: 0.5rem;
  padding: 0.65rem 0.75rem 0.75rem;
  border: 1px solid #e0d4c3;
  border-radius: 12px;
  background: #fff;
}
.desk-work-split-month {
  grid-template-columns: minmax(0, 1.35fr) minmax(16rem, 0.9fr);
}
.desk-work-cal-col {
  padding: 0.45rem;
  background: transparent;
  border: 0;
}
.desk-month-compact .desk-month-cell { min-height: 3.6rem; }
.desk-month-compact .desk-month-names li { font-size: 0.64rem; }
.desk-agenda-stack { grid-template-columns: 1fr !important; }
.desk-week-agenda {
  display: grid;
  gap: 0.55rem;
}
.desk-week-agenda-day {
  border: 1px solid #efe6d8;
  border-radius: 10px;
  padding: 0.45rem 0.55rem 0.5rem;
  background: #fcfaf7;
}
.desk-week-agenda-h {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem;
  text-decoration: none;
  color: inherit;
  margin-bottom: 0.3rem;
}
.desk-week-agenda-h b { color: var(--navy); font-size: 0.88rem; }
.desk-week-agenda-h span { font-size: 0.75rem; color: var(--muted); }
.desk-week-agenda-h:hover b { color: #c45c26; }
.desk-week-agenda-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.25rem;
}
.desk-week-agenda-list li {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  min-width: 0;
  font-size: 0.82rem;
}
.desk-week-agenda-list a {
  text-decoration: none;
  color: inherit;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.desk-week-agenda-list a:hover b { color: #c45c26; }
@media (max-width: 900px) {
  .desk-work-split,
  .desk-work-split-month { grid-template-columns: 1fr; }
}
.desk-plan-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem 0.55rem;
}
.desk-plan-head b { color: var(--navy); font-size: 0.95rem; }
.desk-plan-tip { font-size: 0.78rem; }
.desk-plan-prog {
  display: inline-flex;
  align-items: center;
  min-height: 1.3rem;
  padding: 0 0.45rem;
  border-radius: 999px;
  background: #fff1e6;
  border: 1px solid #e8b48a;
  color: #c45c26;
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.desk-plan-bar {
  height: 4px;
  border-radius: 999px;
  background: #efe6d8;
  overflow: hidden;
}
.desk-plan-bar i {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #e08a4c, #c45c26);
  border-radius: inherit;
  min-width: 0;
  transition: width 0.25s ease;
}
.desk-plan-hint {
  display: inline-block;
  margin-left: 0.3rem;
  padding: 0.06rem 0.38rem;
  border-radius: 4px;
  background: #eef3f8;
  color: #4a6070;
  font-size: 0.7rem;
  font-weight: 600;
  vertical-align: middle;
}
.desk-plan-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.22rem;
}
.desk-plan-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.28rem 0.4rem;
  border: 1px solid transparent;
  border-radius: 8px;
  background: #f8f4ee;
  transition: background 0.12s ease, border-color 0.12s ease;
}
.desk-plan-item:hover {
  background: #fff;
  border-color: #eadfce;
}
.desk-plan-item.is-done {
  opacity: 0.68;
  background: #f1f4f0;
}
.desk-plan-item.is-blocked {
  border-color: #e8b86d;
  background: #fff8ee;
}
.desk-plan-today-form .desk-plan-today-sec {
  margin: 0.35rem 0 0.55rem;
}
.desk-plan-today-form .desk-plan-today-check {
  display: flex;
  align-items: flex-start;
  gap: 0.4rem;
  width: 100%;
  cursor: pointer;
}
.desk-plan-today-form .desk-plan-today-check input {
  margin-top: 0.25rem;
  flex: 0 0 auto;
}
.desk-plan-today-form .desk-plan-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.35rem;
}
#desk-plan-today-fold:target {
  outline: 2px solid #e8b86d;
  outline-offset: 2px;
  border-radius: 8px;
}
.desk-day-review-form .field,
.desk-week-focus-form .field {
  display: block;
  margin: 0.45rem 0;
}
.desk-day-review-form textarea,
.desk-week-focus-form textarea {
  width: 100%;
  min-height: 3.2rem;
}
.desk-plan-item.is-done .desk-plan-main b {
  text-decoration: line-through;
  color: var(--muted);
  font-weight: 500;
}
.desk-plan-check { margin: 0; flex: 0 0 auto; }
.desk-plan-check-btn {
  width: 1.45rem;
  height: 1.45rem;
  border-radius: 50%;
  border: 1.5px solid #c9b8a2;
  background: #fff;
  color: #fff;
  cursor: pointer;
  line-height: 1;
  padding: 0;
  font-size: 0.78rem;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.12s, border-color 0.12s;
}
.desk-plan-check-btn:hover { border-color: #c45c26; }
.desk-plan-check-btn.is-on {
  background: #2f7d4a;
  border-color: #2f7d4a;
  color: #fff;
}
.desk-plan-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.15rem 0.2rem;
}
.desk-plan-main b { font-size: 0.92rem; font-weight: 600; }
.desk-plan-main a { text-decoration: none; color: inherit; }
.desk-plan-main a:hover b { color: #c45c26; }
.desk-plan-del-form { margin: 0; flex: 0 0 auto; }
.desk-plan-del {
  appearance: none;
  width: 1.45rem;
  height: 1.45rem;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #b0a090;
  cursor: pointer;
  font-size: 1.1rem;
  line-height: 1;
  padding: 0;
  opacity: 0.35;
  transition: opacity 0.12s, background 0.12s, color 0.12s;
}
.desk-plan-item:hover .desk-plan-del,
.desk-plan-del:focus-visible {
  opacity: 1;
  background: #fdecea;
  color: #b42318;
}
.desk-plan-add {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  padding-top: 0.15rem;
}
.desk-plan-add input[type="text"] {
  flex: 1 1 10rem;
  min-width: 8rem;
  padding: 0.42rem 0.65rem;
  border-radius: 8px;
  border: 1px solid #e0d4c3;
  background: #fff;
}
.desk-plan-add input[type="text"]:focus {
  outline: none;
  border-color: #c45c26;
  box-shadow: 0 0 0 2px rgba(196, 92, 38, 0.12);
}
.desk-plan-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  padding-top: 0.1rem;
}
.desk-plan-report {
  padding: 0.6rem 0.75rem;
  border-radius: 10px;
  border: 1px solid #ebe0d0;
  background: #fffdf9;
}
.desk-plan-report-h {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
  margin-bottom: 0.2rem;
}
.desk-plan-report p { margin: 0.12rem 0; font-size: 0.9rem; color: #3d4a56; }
.desk-report-metrics {
  list-style: none;
  margin: 0.4rem 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.desk-report-metrics li {
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  padding: 0.18rem 0.5rem;
  border-radius: 999px;
  background: #f3ebe0;
  border: 1px solid #eadfce;
  font-size: 0.76rem;
  color: var(--muted);
}
.desk-report-metrics em {
  font-style: normal;
  font-weight: 700;
  color: #c45c26;
}
.desk-plan-status {
  display: inline-flex;
  align-items: center;
  padding: 0.08rem 0.45rem;
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
}
.desk-plan-status.is-draft {
  background: #fff1e6;
  color: #c45c26;
  border: 1px solid #e8b48a;
}
.desk-plan-status.is-ok {
  background: #e8f5ec;
  color: #1f6b3a;
  border: 1px solid #b7dfc3;
}

/* To Do：我的一天布局 */
.desk-todo-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(240px, 0.9fr);
  gap: 0.85rem;
  align-items: start;
}
.desk-todo-main-col,
.desk-todo-side-col {
  display: grid;
  gap: 0.55rem;
  min-width: 0;
}
.desk-todo-fold {
  border: 1px solid #eadfce;
  border-radius: 10px;
  background: #fffdf9;
  padding: 0.45rem 0.65rem 0.55rem;
}
.desk-todo-fold > summary {
  cursor: pointer;
  font-weight: 700;
  color: var(--navy);
  list-style: none;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.desk-todo-fold > summary::-webkit-details-marker { display: none; }
.desk-todo-fold > summary em {
  font-style: normal;
  font-size: 0.75rem;
  font-weight: 700;
  color: #c45c26;
  background: #fff1e6;
  border-radius: 999px;
  padding: 0.05rem 0.4rem;
}
.desk-todo-fold[open] > summary { margin-bottom: 0.45rem; }
.desk-plan-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.3rem 0.5rem;
  margin-top: 0.15rem;
  font-size: 0.78rem;
}
.desk-task-add {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  align-items: center;
}
.desk-task-add input[type="text"] { flex: 1 1 10rem; min-width: 8rem; }
.desk-task-add input[type="date"] { width: auto; }
.desk-plan-report-lite { margin-top: 0.25rem; }
.desk-suggest-list .desk-plan-item { align-items: center; }

/* 团队 To Do：左栏导航 */
.desk-team-layout {
  grid-template-columns: minmax(132px, 168px) minmax(0, 1fr);
}
.desk-team-layout:has(.desk-todo-side-col) {
  grid-template-columns: minmax(132px, 168px) minmax(0, 1.45fr) minmax(220px, 0.72fr);
}
.desk-team-layout.is-inbox-like,
.desk-team-layout.is-team {
  grid-template-columns: minmax(132px, 168px) minmax(0, 1fr);
}
.desk-team-layout.is-inbox-like:has(.desk-todo-side-col),
.desk-team-layout.is-team:has(.desk-todo-side-col) {
  grid-template-columns: minmax(132px, 168px) minmax(0, 1.6fr) minmax(200px, 0.62fr);
}
.desk-nav-fold > summary {
  font-size: 0.78rem;
  color: #8a7a68;
  letter-spacing: 0.04em;
}
.desk-nav-fold .desk-nav-group { margin-top: 0.3rem; }
.desk-nav-fold .desk-nav-add { margin-top: 0.35rem; border-style: solid; }
.desk-side-hint {
  padding: 0.65rem 0.75rem;
  border: 1px solid #eadfce;
  border-radius: 10px;
  background: #fffdf9;
  display: grid;
  gap: 0.35rem;
  align-content: start;
}
.desk-side-hint b {
  color: var(--navy);
  font-size: 0.9rem;
}
.desk-side-hint .btn { justify-self: start; }
.desk-todo-nav {
  display: grid;
  gap: 0.45rem;
  align-content: start;
  min-width: 0;
  position: sticky;
  top: 0.4rem;
  max-height: calc(100vh - 1.4rem);
  overflow: auto;
}
.desk-nav-group {
  display: grid;
  gap: 0.15rem;
}
.desk-nav-label {
  font-size: 0.72rem;
  font-weight: 700;
  color: #8a7a68;
  letter-spacing: 0.04em;
  padding: 0.15rem 0.35rem;
}
.desk-nav-item {
  display: flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.28rem 0.45rem;
  border-radius: 8px;
  color: var(--navy);
  text-decoration: none;
  font-weight: 600;
  font-size: 0.86rem;
}
.desk-nav-item:hover { background: #f6f0e6; }
.desk-nav-item.is-on {
  background: #fff1e6;
  color: #c45c26;
  box-shadow: inset 3px 0 0 #e07a3a;
}
.desk-nav-item em {
  font-style: normal;
  font-size: 0.7rem;
  font-weight: 700;
  color: #1f6b3a;
  background: #e8f5ec;
  border-radius: 4px;
  padding: 0.05rem 0.3rem;
  margin-left: auto;
  flex-shrink: 0;
  min-width: 1.25rem;
  text-align: center;
}
.desk-nav-item .desk-nav-share {
  font-size: 0.68rem;
  font-weight: 600;
  color: #8a7355;
  margin-left: 0.15rem;
}
.desk-nav-add {
  border: 1px dashed #e0d2bc;
  border-radius: 8px;
  padding: 0.35rem 0.5rem;
  background: #fffdf9;
}
.desk-nav-add > summary {
  cursor: pointer;
  font-weight: 700;
  font-size: 0.85rem;
  color: var(--navy);
  list-style: none;
  display: flex;
  align-items: center;
  gap: 0.35rem;
}
.desk-nav-add > summary::-webkit-details-marker { display: none; }
.desk-nav-add > summary em,
.desk-nav-biz > summary em {
  font-style: normal;
  font-size: 0.7rem;
  font-weight: 700;
  color: #c45c26;
  background: #fff1e6;
  border-radius: 999px;
  padding: 0.05rem 0.4rem;
}
.desk-nav-biz-body {
  margin-top: 0.35rem;
}
.desk-nav-biz {
  border-color: #e8b86d;
  background: linear-gradient(180deg, #fffbf5 0%, #fffdf9 100%);
}
.desk-nav-biz-tip {
  margin: 0 0 0.35rem;
  font-size: 0.72rem;
  line-height: 1.35;
}
.desk-empty-due {
  text-align: left;
  padding: 0.65rem 0.75rem;
  border: 1px dashed #e0d4c3;
  border-radius: 10px;
  background: #fffdf9;
}
.desk-empty-due > p { margin: 0 0 0.45rem; }
.desk-due-only-list { margin: 0.25rem 0 0.5rem; }
.desk-list-create {
  display: grid;
  gap: 0.4rem;
  margin-top: 0.45rem;
}
.desk-list-create select[multiple] { min-height: 5rem; }
.desk-check {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.85rem;
  white-space: nowrap;
}
.desk-star-form { margin: 0; }
.desk-star-btn {
  border: none;
  background: transparent;
  color: #cfc3b2;
  font-size: 1.05rem;
  cursor: pointer;
  padding: 0 0.1rem;
  line-height: 1;
}
.desk-star-btn.is-on,
.desk-plan-item.is-important .desk-star-btn { color: #d4a017; }
.desk-assign-form select {
  max-width: 6.5rem;
  font-size: 0.78rem;
  padding: 0.15rem 0.25rem;
}
.desk-capture {
  flex-wrap: wrap;
  align-items: center;
}
.desk-capture select { max-width: 8rem; }
.tag.is-shared {
  background: #e8f5ec;
  color: #1f6b3a;
  border-color: #b7dfc3;
}
.tag.desk-assignee {
  background: #eef3fb;
  color: #2a4d7a;
  border-color: #c5d4ea;
}
.desk-todo-main-col .desk-focus-merged {
  border: 1px solid #eadfce;
  border-radius: 10px;
  background: #fffdf9;
  padding: 0.55rem 0.7rem 0.7rem;
}
.desk-todo-main-col .desk-focus-tabs {
  margin-bottom: 0.55rem;
}
.desk-todo-main-col .desk-todo-filter {
  margin: 0.25rem 0 0.55rem;
}
.desk-todo-main-col .desk-todo {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 0.35rem;
}
@media (max-width: 1100px) {
  .desk-team-layout,
  .desk-team-layout.is-exec,
  .desk-team-layout.is-inbox-like,
  .desk-team-layout.is-team {
    grid-template-columns: minmax(130px, 0.7fr) minmax(0, 1fr);
  }
  .desk-team-layout:has(.desk-todo-side-col),
  .desk-team-layout.is-exec:has(.desk-todo-side-col),
  .desk-team-layout.is-inbox-like:has(.desk-todo-side-col),
  .desk-team-layout.is-team:has(.desk-todo-side-col) {
    grid-template-columns: minmax(130px, 0.55fr) minmax(0, 1.4fr) minmax(200px, 0.7fr);
  }
  .desk-todo-side-col { grid-column: auto; }
}
@media (max-width: 900px) {
  .desk-todo-layout { grid-template-columns: 1fr; }
  .desk-team-layout,
  .desk-team-layout:has(.desk-todo-side-col) { grid-template-columns: 1fr; }
  .desk-todo-nav {
    position: static;
    max-height: none;
    overflow: visible;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
  }
  .desk-nav-group { display: contents; }
  .desk-nav-label { width: 100%; margin-top: 0.25rem; }
  .desk-capture-lite { position: static; }
  .desk-todo-side-col { grid-column: 1 / -1; }
}

.desk-task-group-h {
  margin: 1rem 0 0.4rem;
  font-size: 0.85rem;
  font-weight: 700;
  color: #5a4a3a;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.desk-task-group-h:first-child { margin-top: 0.35rem; }
.desk-task-group-h em {
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 700;
  color: #8a7a68;
  background: #f3eee6;
  border-radius: 4px;
  padding: 0.05rem 0.35rem;
}
.desk-task-group-h.is-overdue { color: #b42318; }
.desk-task-group-h.is-overdue em { color: #b42318; background: #fde8e6; }
.desk-myday-out { color: #c45c26 !important; }
.desk-capture.is-secondary { opacity: 0.92; }
.desk-pending-batch-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  margin: 0.35rem 0 0.6rem;
}
.desk-todo li {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.35rem;
}
.desk-pending-pick {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  margin: 0;
  cursor: pointer;
}
.desk-pending-pick input { width: 1rem; height: 1rem; }
.desk-plan-item.is-important .desk-star-btn.is-on { color: #c45c26; }

/* 费用管理：预算余量 */
.opex-budget-remain {
  font-variant-numeric: tabular-nums;
  font-weight: 650;
}
.opex-budget-remain.is-low { color: var(--warn, #b45309); }
.opex-budget-remain.is-over { color: var(--err, #b42318); }
.finance-page .wage-bf-list tr.is-fut td { opacity: 0.72; }
.finance-page .wage-bf-list tr.is-fut .muted { color: #8a7a68; }

/* 工作台：当日小结系统留痕 */
.desk-day-traces {
  margin: 0.45rem 0 0.65rem;
  padding: 0.5rem 0.65rem;
  background: #f7f4ef;
  border-radius: 8px;
  border: 1px solid #ebe4d8;
}
.desk-day-review-form textarea {
  max-height: 6.5rem;
  overflow: auto;
}
.desk-day-traces-h { margin: 0 0 0.35rem; font-size: 0.78rem; }
.desk-day-trace-list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: 12rem;
  overflow: auto;
}
.desk-day-trace {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.5rem;
  padding: 0.22rem 0;
  font-size: 0.84rem;
  border-top: 1px solid #efe8dc;
}
.desk-day-trace:first-child { border-top: 0; }
.desk-day-trace time {
  font-variant-numeric: tabular-nums;
  color: #8a7a68;
  min-width: 2.4rem;
}
.desk-day-trace-act {
  font-size: 0.72rem;
  font-weight: 700;
  padding: 0.05rem 0.35rem;
  border-radius: 4px;
  background: #e8eef5;
  color: #2f6f9f;
}
.desk-day-trace-done .desk-day-trace-act,
.desk-day-trace-auto_done .desk-day-trace-act {
  background: #e5f3ea;
  color: #1f7a45;
}
.desk-day-trace-open .desk-day-trace-act {
  background: #fff4e5;
  color: #b54708;
}
.desk-day-trace-undo .desk-day-trace-act {
  background: #f0eeea;
  color: #6b6358;
}
.desk-day-trace-title { font-weight: 600; }
.desk-task-q {
  margin-left: auto;
  min-width: 8rem;
  max-width: 14rem;
  flex: 1 1 8rem;
}
.desk-todo-filter .desk-task-q { margin-left: 0.4rem; }
.opex-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 0 0 0.75rem;
}
.opex-jump button {
  border: 1px solid #eadfce;
  background: #fff;
  border-radius: 999px;
  padding: 0.28rem 0.75rem;
  cursor: pointer;
  font: inherit;
}
.opex-jump button:hover { background: #fff7ed; border-color: #e2a15a; }
.opex-dlg-q {
  width: min(18rem, 100%);
  margin: 0 0 0.55rem;
}

/* 费用管理：操作入口卡片 + 查看看板分区 */
.finance-page .opex-tip { margin-bottom: 0.65rem; }
.finance-page .opex-ops-block,
.finance-page .opex-view-block {
  margin: 0 0 1rem;
}
.finance-page .opex-ops-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.75rem;
  margin: 0 0 0.55rem;
}
.finance-page .opex-ops-title {
  margin: 0;
  font-size: 0.95rem;
  font-weight: 700;
  color: #2c3d4d;
}
.finance-page .opex-ops-head .muted {
  margin: 0;
  font-size: 0.82rem;
}
.finance-page .opex-cat-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0.5rem;
  margin: 0;
}
.finance-page .opex-cat {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.2rem;
  margin: 0;
  padding: 0.65rem 0.7rem 0.55rem;
  border: 1px solid #e5ebf1;
  border-radius: 12px;
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
  box-shadow: 0 1px 0 rgba(20, 40, 60, 0.03);
  transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
}
.finance-page .opex-cat:hover {
  border-color: #e2a15a;
  background: #fffaf3;
  box-shadow: 0 2px 8px rgba(196, 92, 38, 0.08);
}
.finance-page .opex-cat.is-on {
  border-color: #c45c26;
  background: #fff7ed;
  box-shadow: inset 3px 0 0 #c45c26;
}
.finance-page .opex-cat-lab {
  font-size: 0.78rem;
  font-weight: 650;
  color: #5a6a7a;
}
.finance-page .opex-cat-amt {
  font-size: 1.05rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: #1f2d3d;
  line-height: 1.2;
}
.finance-page .opex-cat-sub {
  font-style: normal;
  font-size: 0.72rem;
  color: #8a9aaa;
  line-height: 1.3;
}
.finance-page .opex-cat-badge {
  display: inline-block;
  margin-top: 0.15rem;
  padding: 0.1rem 0.4rem;
  border-radius: 999px;
  font-style: normal;
  font-size: 0.68rem;
  font-weight: 650;
  background: #eef2f6;
  color: #5a6a7a;
}
.finance-page .opex-cat-badge.warn {
  background: #fff4e5;
  color: #b54708;
}
.finance-page .opex-cat-badge.ok {
  background: #e8f6ef;
  color: #2f7a52;
}
.finance-page .opex-view-block .opex-hero-ring { margin-top: 0; }
.finance-page .opex-sec {
  margin: 0 0 0.85rem;
  padding: 0.65rem 0.75rem 0.75rem;
  border-radius: 10px;
  border: 1px solid var(--line, #e5ebf1);
  background: #fff;
}
.finance-page .opex-sec-ops {
  border-color: #f0c9a0;
  background: #fffaf4;
}
.finance-page .opex-sec-view {
  border-color: #d5e3ef;
  background: #f8fafc;
}
/* 分类操作弹窗：加宽、操作表单网格、明细横滑 */
dialog.opex-dlg.fin-dlg {
  width: min(960px, 96vw);
  max-height: min(92vh, 880px);
}
dialog.opex-dlg .fin-dlg-shell {
  max-height: min(92vh, 880px);
}
dialog.opex-dlg .opex-sec-form {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 0.65rem;
  align-items: flex-end;
}
dialog.opex-dlg .opex-sec-form .field {
  margin: 0;
  min-width: 7.5rem;
}
dialog.opex-dlg .opex-sec-form .field.grow { flex: 1 1 12rem; min-width: 10rem; }
dialog.opex-dlg .opex-sec-form .field.amt { flex: 0 1 9rem; min-width: 8rem; }
dialog.opex-dlg .opex-sec-form .field.amt input {
  width: 100%;
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  box-sizing: border-box;
}
dialog.opex-dlg .opex-sec-form .field.day { flex: 0 1 9.5rem; min-width: 8.5rem; }
dialog.opex-dlg .opex-sec-form .field.day input,
dialog.opex-dlg .opex-sec-form .field.day select {
  width: 100%;
  box-sizing: border-box;
}
dialog.opex-dlg .opex-sec-view .fin-scroll,
dialog.opex-dlg .opex-budget-box {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border: 1px solid #e5ebf1;
  border-radius: 8px;
  background: #fff;
}
dialog.opex-dlg .opex-sec-view .fin-scroll > table,
dialog.opex-dlg .opex-budget-box > table {
  min-width: 40rem;
  margin: 0;
}
dialog.opex-dlg .opex-sec-head {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #f8fafc;
  padding: 0.15rem 0 0.35rem;
}
#dlg-opex-rent .wage-bf-months,
#dlg-opex-rent .fin-scroll {
  overflow-x: auto;
  border: 1px solid #e8eef3;
  border-radius: 8px;
  background: #fff;
}
#dlg-opex-rent .wage-bf-list {
  min-width: 28rem;
  margin: 0;
}
#dlg-opex-rent .wage-bf-list input.wage-bf-amt {
  width: 8.5rem;
  min-width: 7.5rem;
  text-align: right;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  box-sizing: border-box;
}
#dlg-opex-biz .opex-biz-grid input[type="number"] {
  width: 6.4rem;
  min-width: 0;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
#dlg-opex-biz .opex-biz-used {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.72rem;
  color: #6a7a8a;
  font-weight: 400;
}
#dlg-opex-biz .opex-wage-people {
  max-height: min(28vh, 220px);
  overflow: auto;
  padding: 0.15rem 0.1rem 0.35rem;
  border: 1px dashed #eadfce;
  border-radius: 8px;
  background: #fff;
}
#dlg-opex-people .opex-wage-people {
  max-height: none;
  overflow: visible;
  padding: 0;
  margin: 0 0 0.35rem;
  border: none;
  border-radius: 0;
  background: transparent;
}
dialog.opex-dlg .opex-sec-view .fin-scroll table.opex-detail thead th,
#dlg-opex-people .opex-cfg-scroll thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #eef3f7;
}
#dlg-wage-bf .wage-bf-exist-scroll {
  max-height: min(36vh, 280px);
  overflow: auto;
}
#dlg-wage-bf .wage-bf-exist-scroll table {
  min-width: 36rem;
}
#dlg-opex-vendor .opex-sec-form .field.amt input,
#dlg-opex-office .opex-sec-form .field.amt input {
  min-width: 8rem;
}
.finance-page .opex-sec-h {
  margin: 0 0 0.45rem;
  font-size: 0.92rem;
  font-weight: 700;
  color: #2c3d4d;
}
.finance-page .opex-sec-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.4rem 0.75rem;
  margin-bottom: 0.35rem;
}
.finance-page .opex-sec-head .opex-sec-h { margin: 0; }
.finance-page .opex-sec-head .opex-dlg-q {
  margin: 0;
  width: min(16rem, 100%);
}
.finance-page .opex-sec-form {
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-bottom: 0.35rem;
}
.finance-page .opex-budget-box { margin: 0.45rem 0 0.15rem; }
.finance-page .opex-act-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 0.35rem;
}
.finance-page .opex-act-note { margin: 0.15rem 0 0.35rem; font-size: 0.82rem; }
.finance-page .opex-act-steps {
  margin: 0.25rem 0 0;
  padding: 0 0 0 1.15rem;
  font-size: 0.82rem;
  color: #5a6a7a;
  line-height: 1.55;
}
.finance-page .opex-empty { margin: 0.35rem 0 0; }
dialog.opex-dlg .fin-dlg-bar-acts {
  flex-wrap: wrap;
  justify-content: flex-end;
  max-width: min(100%, 28rem);
}
dialog.opex-dlg .fin-dlg-bar-acts .btn,
dialog.opex-dlg .fin-dlg-bar-acts .ghost {
  white-space: nowrap;
}
dialog.opex-dlg .fin-dlg-body {
  padding-bottom: 1rem;
}
dialog.opex-dlg .opex-act-tabs { padding: 0 0.85rem; }
.opex-act-pane[hidden],
.wage-bf-led-bar[hidden] { display: none !important; }
.opex-q-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 0.55rem;
}
.opex-q-chips button {
  margin: 0;
  padding: 0.2rem 0.65rem;
  border: 1px solid #e2d8c8;
  border-radius: 999px;
  background: #fff;
  color: #5a6a7a;
  font: inherit;
  font-size: 0.82rem;
  cursor: pointer;
}
.opex-q-chips button.on {
  background: #1f4e79;
  border-color: #1f4e79;
  color: #fff;
}
button.opex-inline-link {
  background: none;
  border: 0;
  padding: 0;
  color: #1f4e79;
  font: inherit;
  text-decoration: underline;
  cursor: pointer;
}
.wage-bf-led-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}
.wage-bf-led-bar .opex-subh { margin: 0.35rem 0; }
.wage-bf-led-bar .opex-dlg-q { width: min(14rem, 48%); margin: 0; }
/* 外包登记：金额框醒目 */
#dlg-opex-vendor .opex-sec-ops {
  position: relative;
}
#dlg-opex-vendor .opex-sec-form .field.amt input:focus,
#dlg-opex-office .opex-sec-form .field.amt input:focus,
#dlg-opex-biz .opex-sec-form .field.amt input:focus {
  outline: 2px solid rgba(196, 92, 38, 0.35);
  outline-offset: 1px;
}
@media (max-width: 1100px) {
  .finance-page .opex-cat-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  .finance-page .opex-cat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* 销售利润：总额/当期分组、净利强调、口径角标 */
.finance-page .fin-th-full {
  background: #f3f7fb !important;
  color: #3a5166;
}
.finance-page .fin-th-now {
  background: #fff6ee !important;
  color: #8a4b16;
}
.finance-page td.fin-th-full { background: #f7fafc; }
.finance-page tr.is-book-prod td.fin-th-full { background: #eef3f8; }
.finance-page td.fin-th-now { background: #fffaf4; }
.finance-page tr.is-book-prod td.fin-th-now { background: #fff3e8; }
.finance-page .fin-col-net {
  background: #eef8f1 !important;
  font-weight: 700;
}
.finance-page .fin-col-net.err,
.finance-page td.err.fin-col-net { background: #fdecea !important; }
.finance-page .fin-kind {
  display: inline-block;
  font-size: 0.72rem;
  padding: 0.08rem 0.42rem;
  border-radius: 999px;
  font-weight: 650;
  white-space: nowrap;
}
.finance-page .fin-kind.is-proj { background: #e8f1f8; color: #2f6f9f; }
.finance-page .fin-kind.is-prod { background: #f8eadc; color: #c45c26; }
.finance-page .fin-pane-hint { margin: 0 0 0.4rem; font-size: 0.8rem; }
.finance-page .fin-person-profit { padding: 0; }
.finance-page .fin-rpt-tabs button small {
  margin-left: 0.15rem;
  opacity: 0.7;
  font-weight: 500;
  font-size: 0.75rem;
}
.finance-page .fin-rpt-tabs button.on small { opacity: 0.9; }
.finance-page .fin-ov-tables.is-open-static {
  margin: 0;
  border: 0;
  padding: 0;
  background: transparent;
}
.finance-page .fin-rpt-pane .fin-scroll {
  max-height: min(70vh, 42rem);
}
.finance-page .fin-table td.num .fin-cost-link:hover {
  background: #fff1e3;
  border-radius: 4px;
  text-decoration-color: #c45c26;
}
.finance-page .fin-person-table .fin-person-name {
  display: block;
  width: 100%;
  padding: 0.4rem 0.25rem;
  font: inherit;
  font-weight: 700;
  color: #2f6f9f;
  background: none;
  border: 0;
  cursor: pointer;
  text-align: left;
}
.finance-page .fin-person-table .fin-person-name:hover { text-decoration: underline; }
#dlg-person-profit .fin-wf {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin: 0 0 0.7rem;
  padding: 0.45rem 0.5rem;
  background: #fffaf3;
  border-radius: 8px;
}
#dlg-person-profit .fin-wf li {
  display: flex;
  align-items: baseline;
  gap: 0.35rem;
  grid-template-columns: none;
  margin: 0;
  padding: 0.18rem 0.55rem;
  background: #fff;
  border: 1px solid #eee5d8;
  border-radius: 999px;
  font-size: 0.8rem;
}
#dlg-person-profit .fin-wf li.is-res {
  margin: 0;
  padding: 0.18rem 0.55rem;
  border-color: #c45c26;
  border-top: 1px solid #c45c26;
  font-weight: 700;
  color: #243140;
}
.finance-page .fin-col-unpaid,
.finance-page .fin-col-unpaid .fin-cost-link { color: #9a3412; }
.finance-page .fin-pct {
  display: inline-block;
  min-width: 2.4rem;
  padding: 0.08rem 0.42rem;
  border-radius: 999px;
  background: #eef4f8;
  font-variant-numeric: tabular-nums;
  font-weight: 650;
  text-align: center;
}
.finance-page .fin-person-table tbody tr.is-book-proj:hover td,
.finance-page .fin-person-table tbody tr.is-book-proj:hover + tr.is-book-prod td,
.finance-page .fin-person-table tbody tr.is-book-prod:hover td,
.finance-page .fin-person-table tbody tr.is-book-proj:has(+ tr.is-book-prod:hover) td {
  outline: 1px solid #f0c9a0;
  outline-offset: -1px;
}
.finance-page #fin-report-items tbody tr:nth-child(even) td:not(.fin-col-net):not(.fin-th-full):not(.fin-th-now) {
  background: #fafcfd;
}
#dlg-person-profit #pp-rows button,
#dlg-person-profit #pp-rows .fin-cost-link {
  appearance: none;
  background: none !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  color: #c45c26 !important;
  padding: 0 !important;
  min-height: 0 !important;
  min-width: 0 !important;
  height: auto !important;
  border-radius: 0 !important;
  font: inherit !important;
  font-variant-numeric: tabular-nums;
  font-weight: 650;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
#dlg-person-profit .fin-dlg-num {
  font-variant-numeric: tabular-nums;
}
#dlg-person-profit .fin-wf:empty {
  display: none;
  margin: 0;
  padding: 0;
}
#dlg-person-profit .fin-scroll {
  max-height: min(62vh, 36rem);
}
#dlg-person-profit thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #fffaf3;
}
#dlg-person-profit tfoot th,
#dlg-person-profit tfoot td {
  position: sticky;
  bottom: 0;
  background: #fff7ee;
  font-weight: 700;
  border-top: 1px solid #f0c9a0;
}
#dlg-person-profit td:first-child,
#dlg-person-profit th:first-child {
  max-width: 18rem;
}
#dlg-person-profit .dlg-bar-acts { gap: 0.4rem; }

.desk-todo-nav .desk-nav-item.is-warn em {
  background: #c45c26;
  color: #fff;
}
.desk-report-miss {
  margin: 0 0 0.85rem;
  padding: 0.65rem 0.75rem;
  border: 1px solid #f0c9a0;
  border-radius: 8px;
  background: #fffaf3;
}
.desk-report-miss.is-ok {
  border-color: #d5e8dc;
  background: #f4faf6;
}
.desk-report-miss .desk-nav-label {
  margin: 0 0 0.35rem;
  display: flex;
  align-items: center;
  gap: 0.35rem;
}
.desk-report-miss .desk-nav-label em {
  display: inline-block;
  min-width: 1.2rem;
  padding: 0.05rem 0.4rem;
  border-radius: 999px;
  background: #c45c26;
  color: #fff;
  font-style: normal;
  font-size: 0.78rem;
  font-weight: 700;
  text-align: center;
}
.desk-report-miss-tip { margin: 0 0 0.45rem; font-size: 0.82rem; }
.desk-report-miss-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 0.55rem;
  margin: 0;
  padding: 0;
  list-style: none;
}
.desk-report-miss-list a {
  display: inline-block;
  padding: 0.2rem 0.55rem;
  border-radius: 999px;
  background: #fff;
  border: 1px solid #f0c9a0;
  color: #9a3412;
  font-weight: 650;
  text-decoration: none;
}
.desk-report-miss-list a:hover {
  background: #fff1e3;
  text-decoration: underline;
}


/* 运营管理中心：侧栏折叠 */
.side .nav-fold {
  margin-top: 0.85rem;
}
.side .nav-fold[open] {
  display: flex;
  flex-direction: column;
  gap: 0.12rem;
}
.side .nav-fold > summary::marker { content: none; }
.side .nav-fold > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  color: #d5dee6;
  padding: 0.5rem 0.7rem;
  border-radius: 8px;
  font-size: 0.92rem;
  font-weight: 650;
  user-select: none;
}
.side .nav-fold > summary::-webkit-details-marker { display: none; }
.side .nav-fold > summary:hover { background: rgba(255,255,255,0.08); color: #fff; }
.side .nav-fold.on > summary { color: #fff; }
.side .nav-fold-name { min-width: 0; }
.side .nav-fold-chev {
  margin-left: auto;
  width: 0.42rem;
  height: 0.42rem;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translateY(-1px);
  opacity: 0.75;
  flex: none;
}
.side .nav-fold[open] .nav-fold-chev {
  transform: rotate(-135deg) translateY(1px);
}
.side .nav-fold > summary b {
  display: inline-block;
  min-width: 1.1rem;
  padding: 0 0.28rem;
  border-radius: 8px;
  background: #c45c26;
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2rem;
  text-align: center;
  font-weight: 650;
}
.side .nav-fold[open] > summary b { display: none; }
.side .nav-fold a.nav-sub {
  padding: 0.42rem 0.7rem 0.42rem 1.45rem;
  font-weight: 500;
}
.side .nav-fold a.nav-sub + a.nav-sub { margin-top: 0.12rem; }

/* 侧栏一行一个中心；产品中心系列框缩小、色块可拖 */
.side .nav-fold > summary { white-space: nowrap; }
.side .nav-fold > a.nav-sub {
  display: flex;
  align-items: center;
  width: 100%;
  box-sizing: border-box;
  white-space: nowrap;
}
.side .nav-fold > a.nav-sub b { flex: none; margin-left: 0.35rem; }
.catalog-page .series-box { padding: 0.28rem 0.4rem 0.32rem; }
.catalog-page .series-box-head { margin-bottom: 0.28rem; gap: 0.2rem 0.45rem; }
.catalog-page .series-box-head strong { font-size: 0.82rem; }
.catalog-page .series-tiles {
  grid-template-columns: repeat(auto-fill, minmax(4.4rem, 1fr));
  gap: 0.28rem;
}
.catalog-page .series-tile {
  min-height: 3.35rem;
  padding: 0.16rem 0.12rem 0.12rem;
  font-size: 0.82rem;
}
.catalog-page .series-tile .sys-chip-name { font-size: 0.74rem; max-height: 2.3em; }
.catalog-page .series-tile b { font-size: 0.68rem; margin-top: 0.08rem; }
.catalog-page .series-tile.on::after {
  top: 0.12rem;
  right: 0.12rem;
  width: 0.85rem;
  height: 0.85rem;
  font-size: 0.62rem;
}
.catalog-page .chip-drag {
  position: absolute;
  z-index: 2;
  font-size: 0.62rem;
  line-height: 1;
  letter-spacing: -0.14em;
  cursor: grab;
  opacity: 0.42;
  user-select: none;
}
.catalog-page .chip-drag:hover { opacity: 0.9; }
.catalog-page .catalog-seg .chip-drag { top: 0.06rem; right: 0.1rem; }
.catalog-page .series-tile .chip-drag { top: 0.06rem; left: 0.1rem; }
.catalog-page .sys-chip.is-sorting,
.catalog-page .series-tile.is-sorting { outline: 1px dashed currentColor; outline-offset: -2px; }

/* 色块排序手柄更好按 */
.catalog-page .chip-drag {
  width: 1.15rem;
  height: 0.95rem;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.8;
  touch-action: none;
}
.catalog-page .is-sorting { cursor: grabbing; }

.catalog-list-acts .batch-review-note { display: inline-flex; align-items: center; margin: 0; }
.catalog-list-acts .batch-review-note input {
  height: 2rem;
  width: 16rem;
  max-width: 36vw;
  box-sizing: border-box;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.28);
  padding: 0 0.6rem;
  font-size: 0.86rem;
  background: rgba(255,255,255,0.96);
  color: #1a1510;
}

/* 系统维护短名 */
.catalog-sys-edit-form .row {
  grid-template-columns: 8.2rem minmax(8rem, 1.25fr) 6.8rem minmax(9rem, 1.45fr) minmax(7.2rem, 0.9fr);
  align-items: end;
}
.catalog-sys-table .col-short {
  width: 4.8rem;
  white-space: nowrap;
}
@media (max-width: 760px) {
  .catalog-sys-edit-form .row {
    grid-template-columns: 1fr 1fr;
  }
}

/* 未分系列色块：四个字保持一行 */
.series-tile.series-unassigned {
  min-width: 5.8rem;
}
.series-tile.series-unassigned .sys-chip-name {
  white-space: nowrap;
  -webkit-line-clamp: 1;
  max-height: none;
}

/* 系列色块按名字加宽，一行写全，排不下换行 */
.catalog-page .series-tiles,
.select-series-bar .series-tiles {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 0.32rem;
}
.catalog-page .series-tile,
.select-series-bar .series-tile {
  flex: 0 0 auto;
  width: max-content;
  max-width: 100%;
  min-width: 4.6rem;
  min-height: 3.15rem;
  aspect-ratio: auto;
  padding: 0.32rem 0.62rem 0.26rem;
  justify-content: center;
}
.catalog-page .series-tile .sys-chip-name,
.select-series-bar .series-tile .sys-chip-name {
  display: block;
  white-space: nowrap;
  overflow: visible;
  text-overflow: clip;
  max-height: none;
  -webkit-line-clamp: unset;
  -webkit-box-orient: unset;
  word-break: keep-all;
  font-size: 0.8rem;
  line-height: 1.25;
}
.catalog-page .series-tile b,
.select-series-bar .series-tile b {
  margin-top: 0.12rem;
  font-size: 0.72rem;
}
.catalog-page .series-tile.on,
.select-series-bar .series-tile.on {
  padding-right: 1.35rem;
}
.catalog-page .series-tile:has(.chip-drag),
.select-series-bar .series-tile:has(.chip-drag) {
  padding-left: 1.28rem;
}

/* 系统色块显示负责人 */
.catalog-page .catalog-seg.sys-owner-row {
  align-items: stretch;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip {
  aspect-ratio: auto;
  min-height: 4.45rem;
  justify-content: flex-start;
  padding: 0.42rem 0.22rem 0.2rem;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip .sys-chip-who {
  display: block;
  margin-top: 0.08rem;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 0.68rem;
  font-weight: 650;
  line-height: 1.15;
  letter-spacing: 0;
  opacity: 0.78;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip .sys-chip-who.is-empty {
  opacity: 0.46;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip.on .sys-chip-who {
  color: #fff;
  opacity: 0.92;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip.on .sys-chip-who.is-empty {
  opacity: 0.62;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip b {
  margin-top: auto;
}
.catalog-page .catalog-seg.sys-owner-row .sys-chip.on {
  padding-right: 1.2rem;
}

/* 宣传视频在查阅框里播放 */
.file-view-panel video {
  width: 100%;
  max-height: 70vh;
  background: #111;
}

/* 交付单独成模块，招标参数归到参数 */
.prod-sub {
  margin-top: 0.65rem;
  padding-top: 0.55rem;
  border-top: 1px solid var(--line);
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.prod-sub h4 {
  margin: 0;
  font-size: 0.92rem;
  font-weight: 650;
  color: #4a3f34;
}
.prod-sub .row,
.prod-deliver .row { margin: 0; }
.prod-deliver {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
}
.prod-deliver textarea,
.prod-sub textarea {
  width: 100%;
  min-height: 4.4rem;
  line-height: 1.45;
}

/* 未维护提示，长文本加高，选择图片深色字 */
.catalog-dialog .prod-photo-btn {
  color: #3d342c;
  background: #fff;
}
.catalog-dialog .prod-photo-btn:hover { color: var(--brand-dark); }
#prod-form textarea[name="spec_brief"],
#prod-form textarea[name="detail"] { min-height: 11rem; }
#prod-form textarea[name="bid_public"],
#prod-form textarea[name="bid_control"],
#prod-form textarea[name="bid_hidden"],
#prod-form textarea[name="env_deps"],
#prod-form textarea[name="install_note"] { min-height: 7.2rem; }
label.field.is-unkept input,
label.field.is-unkept textarea,
label.field.is-unkept select,
.catalog-side label.field.is-unkept input[readonly] {
  background: #fff8f2;
  border-color: #e3b48a;
}
.unkept-tag,
label.field.is-unkept::after,
.file-slot-row.is-unkept .file-slot-lab::after,
.prod-file-group.is-unkept::before {
  display: inline-block;
  align-self: flex-start;
  margin: 0 0 0 0.35rem;
  padding: 0 0.42rem;
  border-radius: 999px;
  background: #fff1e4;
  color: #9a4208;
  font-style: normal;
  font-size: 0.72rem;
  font-weight: 650;
  line-height: 1.45;
  vertical-align: 1px;
}
label.field { position: relative; }
label.field.is-unkept::after {
  content: "未维护";
  position: absolute;
  top: 0;
  right: 0;
  margin: 0;
}
.file-slot-row.is-unkept .file-slot-lab::after { content: "未上传"; }
.prod-file-group.is-unkept::before { content: "未上传"; margin: 0 0 0.35rem; }
.file-slot-row.is-unkept,
.prod-file-group.is-unkept {
  background: #fff8f2;
  border-radius: 8px;
}
dd.is-unkept,
p.is-unkept { color: #9a4208; font-weight: 650; }
.keep-block { white-space: pre-wrap; }

/* 待办消息：标为已读 */
.desk-todo li > .desk-todo-row { flex: 1 1 12rem; min-width: 0; }
.desk-todo-acts {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 0.85rem;
}
.desk-todo-acts button.desk-todo-read {
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: #8a7564;
  font-size: 0.8rem;
  font-weight: 650;
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
}
.desk-todo-acts button.desk-todo-read:hover { color: var(--brand-dark); }

/* 报价：配置原则在数量左侧 */
.proj-quote-page .sol-qtab thead th.col-rule {
  width: 1%;
  white-space: nowrap;
  text-align: left;
}
.proj-quote-page .sol-qtab td.qx-rule {
  white-space: nowrap;
  text-align: left;
  font-size: 0.78rem;
  color: #3d342c;
}

/* 工作台：先看今天要办的 */
.desk-plan-pane > .desk-cal-toolbar.desk-day-focus-bar {
  margin-top: 0.75rem;
  padding-top: 0.55rem;
  border-top: 1px solid rgba(61, 52, 44, 0.08);
}
.desk-plan-pane .desk-week-strip {
  gap: 0.35rem;
}
.desk-plan-pane .desk-week-day {
  min-height: 0;
  height: auto;
  padding: 0.28rem 0.35rem;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 0.05rem;
}
.desk-plan-pane .desk-week-wd {
  font-size: 0.78rem;
  font-weight: 650;
  line-height: 1.2;
}
.desk-plan-pane .desk-week-count {
  font-size: 0.68rem;
  line-height: 1.25;
  color: #8a7564;
  white-space: nowrap;
}
.desk-plan-pane .desk-week-day.is-today .desk-week-count,
.desk-plan-pane .desk-week-day.is-on .desk-week-count {
  color: #9a4208;
  font-weight: 650;
}
.desk-todo-layout .desk-nav-fold > summary em,
.desk-todo-layout .desk-nav-fold .desk-nav-item em {
  background: transparent;
  color: #8a7564;
  font-weight: 600;
  min-width: 0;
  padding: 0 0.15rem;
  box-shadow: none;
}
.desk-plan-list .desk-plan-item {
  align-items: center;
}
.desk-plan-list .desk-row-more {
  position: relative;
  margin-left: auto;
  flex: 0 0 auto;
}
.desk-plan-list .desk-row-more > summary {
  list-style: none;
  cursor: pointer;
  font-size: 0.78rem;
  font-weight: 650;
  color: #8a7564;
  padding: 0.12rem 0.4rem;
  border-radius: 6px;
}
.desk-plan-list .desk-row-more > summary::-webkit-details-marker { display: none; }
.desk-plan-list .desk-row-more[open] > summary { color: #9a4208; }
.desk-plan-list .desk-row-more-body {
  position: absolute;
  right: 0;
  top: calc(100% + 2px);
  z-index: 8;
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  min-width: 7.2rem;
  padding: 0.35rem;
  background: #fffdf9;
  border: 1px solid rgba(61, 52, 44, 0.12);
  border-radius: 8px;
  box-shadow: 0 8px 22px rgba(61, 52, 44, 0.12);
}
.desk-plan-list .desk-row-more-body .btn {
  width: 100%;
  justify-content: flex-start;
  background: transparent;
  color: #3d342c;
  border: 0;
  box-shadow: none;
  font-size: 0.78rem;
  padding: 0.28rem 0.45rem;
}
.desk-plan-list .desk-star-mark {
  color: #c47a12;
  font-style: normal;
  margin-right: 0.15rem;
  font-size: 0.85em;
}
