/* Shared readability across the portal and its report controls. */
html { -webkit-text-size-adjust: 100%; }
::selection { background: #f8d9bd; color: #492a15; }
table { font-variant-numeric: tabular-nums; }
input, select, textarea { accent-color: #b85718; }
@media (max-width: 639px) {
  input:not([type='checkbox']):not([type='radio']), select, textarea { font-size: 16px !important; min-height: 44px; }
  textarea { line-height: 1.65; }
}

/* S1 组学分析与报告平台 V2 — 暖橙设计系统 */
:root {
  --ink: #2e2117;
  --ink-2: #5d4a38;
  --ink-3: #76634f;
  --bg: #fdf8f2;
  --bg-soft: #f7ecdf;
  --card: #ffffff;
  --line: #efdfcd;
  --orange: #e8762b;
  --orange-deep: #9a4a08;
  --action-orange: #bd560c;
  --orange-soft: #fceedd;
  --amber: #d97706;
  --violet: #c66a2b;
  --violet-soft: #fff0e4;
  --warn: #a85d08;
  --warn-bg: #fff4df;
  --ok: #9a4a08;
  --ok-bg: #fcecdf;
  --err: #b3372f;
  --err-bg: #fbeaea;
  --radius: 14px;
  --radius-sm: 10px;
  --radius-lg: 14px;
  --control-h: 40px;
  --surface-tint: #fffaf5;
  --surface-muted: #f9f1e7;
  --surface-2: #fffaf5;
  --font-xs: 12px;
  --font-sm: 13px;
  --font-md: 14px;
  --font-lg: 18px;
  --font-title: 24px;
  --shadow: 0 1px 3px rgba(80, 45, 18, .05), 0 3px 12px rgba(80, 45, 18, .025);
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--ink); line-height: 1.55; font-size: var(--font-md);
  -webkit-font-smoothing: antialiased;
  overflow-wrap: anywhere;
}
#app { min-height: 100vh; display: flex; flex-direction: column; }
a { color: var(--orange-deep); text-decoration: none; }
a:hover { text-decoration: underline; }
button { font-family: inherit; cursor: pointer; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid #a44712; outline-offset: 3px;
}
h1, h2, h3, h4 { margin: 0; font-weight: 650; }
.page-title, .page > h2 { margin: 0; color: var(--orange-deep); font-size: var(--font-title); line-height: 1.35; letter-spacing: -.2px; }
.page > .meta { margin: 5px 0 20px; color: var(--ink-3); font-size: var(--font-sm); }
.page > .card + .btn { margin-top: 18px; }
.page-title:focus { outline: none; }
code, .mono { font-family: SFMono-Regular, Menlo, Consolas, monospace; font-size: .92em; }

/* ---------- 顶栏 ---------- */
.topbar {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 28px; background: rgba(255, 252, 247, .88);
  backdrop-filter: blur(10px); border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 50;
}
.topbar .brand { display: flex; align-items: center; gap: 10px; font-weight: 700; color: var(--orange-deep); font-size: 15px; }
.topbar .brand svg { width: 30px; height: 30px; }
.topbar .crumb { color: var(--ink-3); font-size: var(--font-sm); }
.topbar .spacer { flex: 1; }
.topbar .who { font-size: 13px; color: var(--ink-3); }
.top-actions { display: flex; align-items: center; gap: 10px; }
.brand-title { white-space: nowrap; }
.environment-badge {
  display: inline-flex; align-items: center; width: max-content;
  border-radius: 999px; padding: 4px 9px; font-size: var(--font-xs); font-weight: 700;
  letter-spacing: .3px; border: 1px solid transparent;
}
.environment-badge.test { color: #9b3411; background: #fff0e8; border-color: #f3b69b; }
.environment-badge.production { color: #7a3803; background: #f7e3d0; border-color: #d9ad82; }
.entry-hero > .environment-badge { margin: 0 auto 14px; position: relative; z-index: 2; }

/* ---------- 通用布局 ---------- */
.page { flex: 1; width: 100%; max-width: 1180px; margin: 0 auto; padding: 24px 24px 48px; }
.page-wide { max-width: 1180px; }
.card {
  background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius-lg); box-shadow: var(--shadow); padding: 20px 22px;
  min-width: 0; overflow: visible;
}
.card h3 { color: var(--orange-deep); font-size: 16px; line-height: 1.5; }
.table-scroll { width: 100%; min-width: 0; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.table-scroll > table { margin: 0; }
.grid2 { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items: start; gap: 16px; }
.grid2 > * { min-width: 0; }
@media (max-width: 860px) { .grid2 { grid-template-columns: minmax(0,1fr); } }
.muted { color: var(--ink-3); font-size: var(--font-sm); }
.small { font-size: var(--font-xs); }

input:not([type]), input[type=text], input[type=password], input[type=number], input[type=search], select, textarea {
  min-height: var(--control-h); border: 1.5px solid var(--line); border-radius: var(--radius-sm);
  padding: 8px 12px; background: #fff; color: var(--ink); font-family: inherit; font-size: var(--font-md);
  transition: border-color .15s, box-shadow .15s, background .15s;
}
input:focus, select:focus, textarea:focus { border-color: var(--orange-deep); box-shadow: 0 0 0 3px rgba(232,118,43,.10); }
input:disabled, select:disabled, textarea:disabled { background: var(--surface-muted); color: var(--ink-3); cursor: not-allowed; }
textarea { resize: vertical; }

/* ---------- 按钮 ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 8px;
  border: 1px solid transparent; border-radius: 10px;
  min-height: var(--control-h); padding: 8px 14px; font-size: var(--font-sm); font-weight: 600; line-height: 1.5; text-align: center; justify-content: center;
  background: var(--action-orange); color: #fff; transition: transform .12s ease, box-shadow .12s ease;
}
.btn:hover { box-shadow: 0 4px 14px rgba(189, 86, 12, .28); transform: translateY(-1px); }
.btn:disabled { opacity: .45; cursor: not-allowed; transform: none; box-shadow: none; }
.btn-ghost { background: transparent; color: var(--orange-deep); border-color: var(--line); }
.btn-ghost:hover { box-shadow: none; border-color: var(--orange); }
.btn-violet { background: var(--action-orange); }
.btn svg { width: 17px; height: 17px; }
.btn-sm { min-height: 32px; padding: 5px 10px; border-radius: 8px; font-size: 12px; }

/* ---------- 标签 / 徽章 ---------- */
.tag {
  display: inline-flex; align-items: center; gap: 5px;
  background: var(--orange-soft); color: var(--orange-deep);
  max-width: 100%; border-radius: 999px; padding: 3px 10px; font-size: var(--font-xs); font-weight: 600; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; text-align: center;
}
.tag.violet { background: var(--violet-soft); color: #914308; }
.tag.warn { background: var(--warn-bg); color: var(--warn); }
.tag.running { background: #e8f6ec; color: #2f6f45; }
.tag.ok { background: var(--ok-bg); color: var(--ok); }
.tag.err { background: var(--err-bg); color: var(--err); }
.tag.gray { background: var(--bg-soft); color: var(--ink-3); }
.tag.internal { background: #f1e8de; color: #765b43; }
.tag.project-test { background: #f1e8de; color: #765b43; }
.tag.project-production { background: #f9dfca; color: var(--orange-deep); }
.tag.project-unclassified { background: var(--bg-soft); color: var(--ink-3); }
.st { display: inline-flex; align-items: center; width: max-content; max-width: 100%; border-radius: 999px; padding: 3px 9px; font-size: 12px; font-weight: 650; line-height: 1.45; white-space: normal; text-align: center; }
.st.ok { color: var(--ok); background: var(--ok-bg); }
.st.err { color: var(--err); background: var(--err-bg); }
.st.gray { color: var(--ink-3); background: var(--bg-soft); }
.st.warn { color: var(--warn); background: var(--warn-bg); }
.st.violet { color: var(--warn); background: var(--warn-bg); }

/* ---------- 入口页 ---------- */
.entry-wrap { flex: 1; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); min-height: 100vh; }
@media (max-width: 900px) { .entry-wrap { grid-template-columns: 1fr; } }
.entry-hero {
  position: relative; overflow: hidden; padding: 64px 56px;
  background: linear-gradient(150deg, #5c2e04 0%, #9a4a08 45%, #e8762b 100%);
  color: #fdf1e3; display: flex; flex-direction: column; justify-content: center;
  --ink-3: #f7d9b8;
  --hero-parallax-x: 0px; --hero-parallax-y: 0px;
}
.entry-hero::before {
  content: ""; position: absolute; inset: -5%; z-index: 0;
  background: url("/rna/static/ev-cell-communication-hero-v2.png") center 48% / cover no-repeat;
  filter: blur(.8px) saturate(.90) contrast(1.02);
  opacity: .94;
  transform: translate3d(var(--hero-parallax-x), var(--hero-parallax-y), 0) scale(1.08);
  transition: transform .32s ease-out;
  will-change: transform;
}
.entry-hero::after {
  content: ""; position: absolute; inset: 0; z-index: 0;
  background:
    linear-gradient(90deg, rgba(43,16,2,.55) 0%, rgba(83,31,2,.36) 48%, rgba(120,46,4,.18) 100%),
    linear-gradient(180deg, rgba(48,17,1,.12), rgba(132,50,4,.18));
}
.entry-hero-content { width: 100%; max-width: 560px; margin: 0 auto; }
.entry-hero h1 { margin: 0; font-size: clamp(28px, 2.8vw, 38px); line-height: 1.32; letter-spacing: .4px; }
.entry-hero-subtitle { margin: 10px 0 0; color: #efd2b2; font-size: 13px; line-height: 1.65; letter-spacing: .4px; }
.entry-hero p.lead { margin: 22px 0 0; color: #f3d7ba; font-size: 15px; line-height: 1.85; max-width: 500px; }
.hero-workflow { --flow-link: 26px; --flow-gap: 6px; --flow-icon: 44px; --branch-top: 30px; --primer-width: 184px; --primer-height: 64px; width: 100%; max-width: 420px; margin-top: 32px; }
.hero-flow, .hero-primer-branch { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr) var(--flow-link)) minmax(0, 1fr); column-gap: var(--flow-gap); align-items: center; }
.hero-workflow .node { display: flex; flex-direction: column; align-items: center; gap: 8px; min-width: 0; color: #fce8cf; font-size: 12px; letter-spacing: .4px; white-space: nowrap; }
.hero-workflow .node svg { width: var(--flow-icon); height: var(--flow-icon); filter: drop-shadow(0 3px 8px rgba(0,0,0,.25)); }
.hero-flow .link { align-self: start; margin-top: calc(var(--flow-icon) / 2 - 1px); height: 2px; background: linear-gradient(90deg, rgba(255,255,255,.15), rgba(255,255,255,.55)); border-radius: 2px; }
.hero-primer-branch { position: relative; padding-top: var(--branch-top); }
.hero-primer-connector { position: absolute; top: 4px; left: calc(50% + var(--primer-width) / 2 + 12px); right: calc((100% - var(--flow-link) * 4 - var(--flow-gap) * 8) / 10); height: calc(var(--branch-top) + var(--flow-icon) / 2 - 4px); border: solid rgba(252,232,207,.4); border-width: 0 1.5px 1.5px 0; border-radius: 0 0 16px 0; pointer-events: none; }
.hero-primer-connector::after { content: ""; position: absolute; left: 0; bottom: -3.75px; width: 6px; height: 6px; border: solid rgba(252,232,207,.6); border-width: 0 0 1.5px 1.5px; transform: rotate(45deg); }
.hero-primer-node {
  position: relative; grid-column: 5; grid-row: 1; justify-self: center;
  display: flex; align-items: center; gap: 12px;
  width: var(--primer-width); height: var(--primer-height);
  margin: calc(var(--flow-icon) / 2 - var(--primer-height) / 2) 0 0;
  padding: 10px 12px; border: 1px solid rgba(255,255,255,.21); border-radius: 18px;
  background: rgba(255,255,255,.02);
  -webkit-backdrop-filter: blur(6px) saturate(100%);
  backdrop-filter: blur(6px) saturate(100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.04);
  color: #f6dfc6; font-size: 14px; font-weight: 500; letter-spacing: .1px;
  text-decoration: none; cursor: pointer; -webkit-font-smoothing: antialiased;
  transition: background .2s ease, border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.hero-primer-icon { display: grid; place-items: center; flex: none; width: 36px; height: 36px; }
.hero-primer-icon svg { width: 26px; height: 26px; }
.hero-primer-label { flex: 1; white-space: nowrap; line-height: 1.3; }
.hero-primer-open { display: grid; place-items: center; flex: none; width: 22px; height: 22px; border: 1px solid rgba(255,255,255,.12); border-radius: 50%; background: rgba(255,255,255,.03); color: #f6dfc6; }
.hero-primer-open svg { width: 14px; height: 14px; }
.hero-primer-node:hover {
  color: #fff4e7; border-color: rgba(255,255,255,.34); background: rgba(255,255,255,.055);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
  transform: translateY(-1px); text-decoration: none;
}
.hero-primer-node:active { transform: scale(.985); }
.hero-primer-node:focus-visible { outline: 2px solid #ffe8cc; outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) { .hero-primer-node { transition: none; } .hero-primer-node:hover, .hero-primer-node:active { transform: none; } }
.entry-hero > :not(.hero-bubbles) { position: relative; z-index: 2; }
.hero-bubbles { position: absolute; inset: 0; pointer-events: none; z-index: 1; }
.hero-bubbles .b {
  position: absolute; opacity: .42;
  border: 1px solid rgba(255, 238, 219, .58); border-radius: 50%;
  background:
    radial-gradient(circle at 34% 28%, rgba(255,255,255,.62), rgba(255,226,193,.15) 36%, rgba(88,31,2,.14) 70%, rgba(255,225,193,.25));
  box-shadow: inset 2px 2px 6px rgba(255,255,255,.18), 0 0 9px rgba(255,211,169,.18);
  animation: vesicle-drift 9s ease-in-out infinite;
  transform-origin: 50% 50%;
}
.hero-bubbles .b::before {
  content: ""; position: absolute; inset: 2.5px; border-radius: 50%;
  border: .8px solid rgba(255,230,203,.42);
  box-shadow: inset 0 0 3px rgba(255,241,225,.13);
}
.hero-bubbles .b::after {
  content: ""; position: absolute; width: 3px; height: 3px; left: 28%; top: 47%;
  border-radius: 50%; background: rgba(255,241,221,.68);
  box-shadow: 7px -5px 0 -1px rgba(255,221,188,.58), 11px 4px 0 -1px rgba(255,237,216,.46);
}
.hero-bubbles .vesicle-1 { animation-duration: 11s; }
.hero-bubbles .vesicle-2 { animation-duration: 13s; }
.remember-login { display: inline-flex; align-items: center; gap: 8px; margin: 2px 0 16px; color: var(--ink-3); font-size: var(--font-sm); cursor: pointer; }
.remember-login input { width: 16px; height: 16px; accent-color: var(--orange); }
@keyframes vesicle-drift {
  0%,100% { transform: translate3d(-3px,7px,0) scale(.94); }
  50% { transform: translate3d(10px,-12px,0) scale(1.05); }
}
@media (prefers-reduced-motion: reduce) {
  .entry-hero::before { transition: none; transform: scale(1.08); }
  .hero-bubbles .b { animation: none; }
}
.entry-panel { display: flex; flex-direction: column; justify-content: center; padding: 48px 56px; background: linear-gradient(145deg,#fffaf4,#fbf4eb); }
.entry-panel-content { width: 100%; max-width: 400px; margin: 0 auto; }
.entry-panel h2 { margin: 0; font-size: 26px; line-height: 1.4; color: var(--orange-deep); letter-spacing: .3px; }
.entry-panel .hint { margin: 8px 0 28px; color: var(--ink-3); font-size: var(--font-sm); line-height: 1.75; }
.entry-panel .field { margin-bottom: 20px; }
.entry-panel .field label { margin-bottom: 8px; }
.entry-panel .field input[type=text], .entry-panel .field input[type=password] { min-height: 48px; border-width: 1px; border-radius: 12px; box-shadow: 0 1px 2px rgba(76,40,14,.025); }
.entry-panel .field input:focus { box-shadow: 0 0 0 3px rgba(194,87,15,.1); }
.entry-options { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 2px 0 20px; }
.entry-options .remember-login { margin: 0; }
.entry-preview { font-size: 13px; white-space: nowrap; }
.entry-submit { width: 100%; min-height: 46px; justify-content: center; border-radius: 12px; box-shadow: 0 5px 16px rgba(151,67,13,.12); }
.entry-contact { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 28px; padding-top: 20px; border-top: 1px solid var(--line); }
.entry-contact b,.entry-contact span { display: block; }
.entry-contact b { color: var(--ink-2); font-size: 12px; line-height: 1.7; font-weight: 500; }
.entry-contact span { margin-top: 5px; color: var(--ink-3); font-size: 12px; }
.entry-contact a { color: var(--orange-deep); font-weight: 600; }
.entry-contact img { width: 78px; height: 78px; flex: none; border-radius: 10px; object-fit: contain; background: #fff; border: 1px solid var(--line); }
.field { margin-bottom: 18px; }
.field label { display: block; font-size: 13px; font-weight: 600; color: var(--ink-2); margin-bottom: 6px; }
.field input[type=text], .field input[type=password], .field input[type=number], .field select, .field textarea {
  width: 100%; padding: 11px 14px; border: 1.5px solid var(--line); border-radius: 10px;
  font-size: var(--font-md); font-family: inherit; background: #fff; color: var(--ink);
  transition: border-color .15s;
}
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--orange); }
.form-err { background: var(--err-bg); color: var(--err); border-radius: 10px; padding: 10px 14px; font-size: var(--font-sm); margin-bottom: 16px; }

/* ---------- 项目总览 ---------- */
.proj-head { display: flex; align-items: flex-start; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.proj-head .title { font-size: var(--font-title); line-height: 1.35; color: var(--orange-deep); letter-spacing: -.2px; }
.project-title-line { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.project-scope-filters { display: inline-flex; align-items: center; gap: 6px; }
.project-scope-filters button {
  min-height: 28px; padding: 4px 10px; border: 1px solid var(--line);
  border-radius: 999px; background: #fff; color: var(--ink-3);
  font: inherit; font-size: 12px; line-height: 1; cursor: pointer;
}
.project-scope-filters button span { color: inherit; font-variant-numeric: tabular-nums; }
.project-scope-filters button:hover { border-color: var(--orange); color: var(--orange-deep); }
.project-scope-filters button.active {
  border-color: var(--orange); background: var(--orange-soft);
  color: var(--orange-deep); font-weight: 650;
}

.classification-review-list { display: grid; gap: 8px; margin-top: 12px; }
.classification-review-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-tint); }
.classification-review-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
@media (max-width: 720px) {
  .classification-review-row { align-items: flex-start; flex-direction: column; }
  .classification-review-actions { width: 100%; justify-content: flex-start; }
  .classification-review-actions .btn { flex: 1; }
}
.proj-head .meta { color: var(--ink-3); font-size: var(--font-sm); margin-top: 5px; }
.proj-head .project-meta-line { display: flex; flex-wrap: wrap; gap: 5px 20px; margin-top: 8px; }
.proj-head .project-meta-line b { color: var(--ink-2); font-weight: 600; }

/* ---------- 管理员项目生产跟进 ---------- */
.monitor-summary-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px;
  margin-bottom: 16px;
}
.monitor-ops-section { margin-bottom: 18px; }
.ops-page { display: grid; gap: 16px; }
.ops-page > .proj-head { margin-bottom: 0; }
.ops-summary-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.ops-summary-card { min-height: 116px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.ops-summary-card span, .ops-summary-card small { display: block; color: var(--ink-3); font-size: var(--font-xs); }
.ops-summary-card b { display: block; margin: 3px 0 1px; color: var(--orange-deep); font-size: 28px; line-height: 1.25; }
.ops-summary-card b em { color: var(--ink-3); font-size: 15px; font-style: normal; font-weight: 550; }
.ops-summary-card.attention { border-color: #e8b18a; background: #fff5eb; }
.ops-attention-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
.ops-attention-card { padding: 19px 21px; box-shadow: none; }
.ops-section { margin: 0; padding: 20px 22px; box-shadow: none; }
.ops-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.ops-section-head h2, .ops-section-head h3 { margin: 0; color: var(--orange-deep); font-size: var(--font-lg); }
.ops-section-head p { margin: 3px 0 0; color: var(--ink-3); font-size: var(--font-xs); }
.ops-section-tools { display: flex; align-items: center; gap: 9px; color: var(--ink-3); font-size: var(--font-xs); }
.ops-filter-pills { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.ops-filter-pills button { min-height: 34px; padding: 5px 12px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--ink-3); font: inherit; font-size: var(--font-xs); }
.ops-filter-pills button.active { border-color: var(--orange); background: var(--orange-soft); color: var(--orange-deep); font-weight: 650; }
.ops-filter-pills button.status-running { border-color: #cce7d3; background: #f1faf3; color: #2f7d4a; }
.ops-filter-pills button.status-attention { border-color: #ebc8c5; background: #fdf0ef; color: #a3433d; }
.ops-filter-pills button.status-pending { border-color: #efd9ae; background: #fff8e9; color: #8c5b12; }
.ops-filter-pills button.status-ready { border-color: #edc9a9; background: #fff3e8; color: var(--orange-deep); }
.ops-filter-pills button[class^="status-"][class*=" active"], .ops-filter-pills button.status-running.active,
.ops-filter-pills button.status-attention.active, .ops-filter-pills button.status-pending.active,
.ops-filter-pills button.status-ready.active { box-shadow: inset 0 0 0 1px currentColor; font-weight: 700; }
.ops-empty-state { padding: 14px; border-radius: 10px; background: var(--surface-muted); color: var(--ink-3); font-size: var(--font-sm); text-align: center; }
.ops-empty-state.ok { background: var(--orange-soft); color: var(--orange-deep); }
.ops-approval-list, .ops-lock-list { display: grid; gap: 8px; }
.ops-approval-item { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 12px; padding: 10px 11px; border: 1px solid var(--line); border-radius: 10px; background: #fff; color: var(--ink); }
.ops-approval-item:hover { border-color: #e7bd94; text-decoration: none; background: #fffaf5; }
.ops-approval-item > div { display: grid; gap: 2px; min-width: 0; }
.ops-approval-item b { color: var(--ink-2); font-size: var(--font-sm); }
.ops-approval-item span { color: var(--ink-3); font-size: var(--font-xs); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ops-approval-item em { color: var(--orange-deep); font-size: var(--font-xs); font-style: normal; font-weight: 650; }
.ops-lock-list > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 42px; padding: 8px 10px; border: 1px solid #efc4ad; border-radius: 9px; background: #fff8f4; color: var(--ink-2); font-size: var(--font-xs); }
.ops-register-panel { margin-bottom: 14px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface-tint); }
.ops-register-panel summary { padding: 10px 13px; color: var(--orange-deep); font-size: var(--font-sm); font-weight: 650; cursor: pointer; }
.ops-create-row { display: grid; grid-template-columns: minmax(180px,1fr) minmax(220px,1.2fr) auto; gap: 9px; padding: 0 13px 10px; }
.ops-register-panel p { margin: 0; padding: 0 13px 11px; color: var(--ink-3); font-size: var(--font-xs); }
.ops-readonly-note { margin-bottom: 12px; color: var(--ink-3); font-size: var(--font-xs); }
.ops-node-note { margin-bottom: 12px; padding: 9px 11px; border: 1px solid #ead8c4; border-radius: 9px; background: #fbf6ef; color: #77624c; font-size: var(--font-xs); line-height: 1.5; }
.ops-discovery-item { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.ops-discovery-item .ops-row-actions { flex:none; justify-content:flex-end; }
.ops-row-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.ops-table { width: 100%; border-collapse: collapse; font-size: var(--font-md); }
.ops-table th, .ops-table td { padding: 10px 11px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.ops-table th { color: var(--orange-deep); background: var(--surface-tint); font-weight: 650; white-space: nowrap; }
.ops-worker-table th:nth-child(1) { width: 25%; }.ops-worker-table th:nth-child(2) { width: 27%; }.ops-worker-table th:nth-child(3) { width: 13%; }.ops-worker-table th:nth-child(4) { width: 16%; }.ops-worker-table th:nth-child(5) { width: 220px; }
.ops-queue-project, .ops-queue-content { display: grid; gap: 3px; min-width: 0; }
.ops-queue-project > .mono { color: var(--orange-deep); font-size: var(--font-xs); }
.ops-queue-project > b { color: var(--ink-2); font-size: var(--font-sm); line-height: 1.45; overflow-wrap: anywhere; }
.ops-queue-project > span:not(.mono) { color: var(--ink-3); font-size: var(--font-xs); line-height: 1.4; overflow-wrap: anywhere; }
.ops-queue-content { align-content: start; gap: 6px; }
.ops-queue-content > .tag { justify-self: start; }
.ops-queue-content > p { margin: 0; color: var(--ink-2); font-size: var(--font-xs); line-height: 1.55; overflow-wrap: anywhere; }
.ops-queue-content > div { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.ops-queue-content a { flex: none; font-size: var(--font-xs); }
.ops-queue-content .mono { min-width: 0; color: var(--ink-3); font-size: var(--font-xs); overflow-wrap: anywhere; }
.ops-queue-state { text-align: center !important; }
.ops-queue-state small { display:block; margin-top:5px; color:var(--ink-3); line-height:1.45; }
.ops-queue-node { color: var(--ink-2); font-size: var(--font-xs); line-height: 1.45; overflow-wrap: anywhere; }
.ops-queue-time { color: var(--ink-2); font-size: var(--font-xs); white-space: nowrap; }
.ops-queue-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 11px; color: var(--ink-3); font-size: var(--font-xs); }
.ops-queue-toolbar .project-search-wrap { flex: 1; max-width: 700px; }
.ops-queue-toolbar .project-search { width: 100%; }
.ops-queue-project-list { display: grid; gap: 9px; }
.ops-queue-project-group { overflow: hidden; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.ops-queue-project-group[hidden] { display: none !important; }
.ops-queue-project-group > summary { display: grid; grid-template-columns: minmax(0,1fr) auto 18px; align-items: center; gap: 18px; min-height: 96px; padding: 13px 15px; list-style: none; cursor: pointer; background: var(--surface-tint); }
.ops-queue-project-group > summary::-webkit-details-marker { display: none; }
.ops-queue-project-group > summary::after { content: "⌄"; color: var(--orange-deep); font-size: 17px; transition: transform .16s; }
.ops-queue-project-group[open] > summary { border-bottom: 1px solid var(--line); background: #fff9f3; }
.ops-queue-project-group[open] > summary::after { transform: rotate(180deg); }
.ops-queue-group-summary { display: grid; justify-items: end; gap: 4px; min-width: 120px; }
.ops-queue-group-summary b { color: var(--ink-2); font-size: var(--font-xs); }
.ops-queue-group-summary small { color: var(--ink-3); font-size: var(--font-xs); white-space: nowrap; }
.ops-queue-task-head, .ops-queue-task-row { display: grid; grid-template-columns: minmax(0,1.8fr) 100px minmax(130px,.65fr) 128px; align-items: center; gap: 14px; }
.ops-queue-task-head { padding: 8px 14px; background: #fcf8f3; color: var(--orange-deep); font-size: var(--font-xs); font-weight: 650; }
.ops-queue-task-head > span:nth-child(2) { text-align: center; }
.ops-queue-task-row { min-height: 88px; padding: 11px 14px; border-top: 1px solid #f1e5d9; }
.ops-queue-task-row:first-child { border-top: 0; }
.ops-queue-pagination { margin-bottom: -6px; }
.ops-mobile-list { display: none; }
.ops-mobile-item { padding: 13px 14px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.ops-mobile-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.ops-mobile-head > div { display: grid; gap: 2px; flex: 1; min-width: 0; }
.ops-mobile-head > .tag { flex: none; }
.ops-mobile-head b { color: var(--ink-2); font-size: var(--font-sm); }
.ops-mobile-head .mono { color: var(--ink-3); font-size: var(--font-xs); overflow: hidden; text-overflow: ellipsis; }
.ops-mobile-meta { display: grid; gap: 3px; margin: 9px 0; color: var(--ink-3); font-size: var(--font-xs); }
.ops-mobile-meta em.tag { font-style: normal; }
.ops-mobile-meta > a.mono { margin-top: 3px; overflow-wrap: anywhere; }
.ops-audit-panel { padding: 0; overflow: hidden; }
.ops-audit-panel > summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 68px; padding: 15px 21px; list-style: none; cursor: pointer; }
.ops-audit-panel > summary::-webkit-details-marker { display: none; }
.ops-audit-panel > summary > span:first-child { display: grid; gap: 2px; }
.ops-audit-panel > summary b { color: var(--orange-deep); font-size: var(--font-lg); }
.ops-audit-panel > summary small { color: var(--ink-3); font-size: var(--font-xs); }
.ops-audit-panel[open] > summary { border-bottom: 1px solid var(--line); }
.ops-audit-panel .table-scroll { padding: 0 20px 16px; }
.ops-collapsible-section { padding: 0; overflow: hidden; }
.ops-collapsible-summary { display: grid; grid-template-columns: minmax(0,1fr) auto 22px; align-items: center; gap: 16px; min-height: 70px; padding: 14px 21px; list-style: none; cursor: pointer; }
.ops-collapsible-summary::-webkit-details-marker { display: none; }
.ops-collapsible-summary > span:first-child { display: grid; gap: 2px; }
.ops-collapsible-summary b { color: var(--orange-deep); font-size: var(--font-lg); }
.ops-collapsible-summary small, .ops-collapsible-summary > span:last-child { color: var(--ink-3); font-size: var(--font-xs); }
.ops-collapsible-summary::after { content: "⌄"; color: var(--orange-deep); font-size: 18px; transition: transform .18s; }
.ops-collapsible-section[open] > .ops-collapsible-summary { border-bottom: 1px solid var(--line); }
.ops-collapsible-section[open] > .ops-collapsible-summary::after { transform: rotate(180deg); }
.ops-collapsible-body { padding: 14px 20px 18px; }
.ops-monitor-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.ops-monitor-toolbar .ops-filter-pills { margin-bottom: 0; }
.monitor-location-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; margin-bottom: 12px; }
.monitor-location-card { min-height:190px; display: grid; grid-template-columns: minmax(0,1fr) auto; grid-template-rows: auto auto minmax(0,1fr) auto; align-items: start; gap: 8px 12px; padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-tint); }
.monitor-location-head { display: grid; gap: 3px; min-width: 0; align-self: start; }
.monitor-location-head > span { line-height: 1.5; }
.monitor-location-count { display: flex; align-items: baseline; justify-content: flex-end; gap: 4px; align-self: start; white-space: nowrap; }
.monitor-location-count strong { color: var(--orange-deep); font-size: 22px; font-weight: 650; line-height: 1.15; font-variant-numeric: tabular-nums; }
.monitor-location-count > span { color: var(--ink-3); font-size: var(--font-xs); font-weight: 400; line-height: 1.4; }
.monitor-location-state { grid-column: 1 / -1; justify-self: start; }
.monitor-location-meta { grid-column: 1 / -1; grid-row: 4; display: grid; align-self: end; gap: 5px; padding-top: 8px; border-top: 1px solid var(--line); font-size: var(--font-xs); line-height: 1.45; }
.monitor-node-meta-row { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: baseline; gap: 8px; }
.monitor-node-meta-row > span { color: var(--ink-3); font-weight: 400; }
.monitor-node-meta-row > b { color: var(--ink-2); font-size: inherit; font-weight: 500; text-align: right; }
.monitor-location-notes { grid-column: 1 / -1; grid-row: 3; display: grid; gap: 4px; color: var(--ink-3); font-size: var(--font-xs); line-height: 1.45; }
.monitor-location-notes:empty { display: none; }
.monitor-location-notes small { overflow-wrap: anywhere; }
.monitor-location-notes > small, .monitor-location-audit > summary { display: block; font: inherit; color: inherit; }
.monitor-location-audit > summary { cursor: pointer; }
.monitor-location-audit[open] > summary { margin-bottom: 4px; }
.monitor-location-card > div:first-child b { color: var(--orange-deep); font-size: var(--font-sm); }
.monitor-location-card > div:first-child span { color: var(--ink-3); font-size: var(--font-xs); }

.monitor-location-card em { font-style: normal; }

.monitor-project-tile[data-monitor-visual="paused"], .monitor-project-tile[data-monitor-visual="report"] { border-color: #ecd6ad; border-left-color: #a85d08; background: #fff9ed; }
.monitor-project-tile[data-monitor-visual="paused"] .monitor-project-status-line > strong, .monitor-project-tile[data-monitor-visual="report"] .monitor-project-status-line > strong { background: #f8eacb; color: #8c5b12; }
.monitor-project-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 10px; }
.monitor-project-tile { display: flex; min-width: 0; padding: 12px 13px; border: 1px solid var(--line); border-left: 3px solid #b66a08; border-radius: 10px; background: var(--surface-tint); color: var(--ink-2); font: inherit; text-align: left; flex-direction: column; gap: 5px; cursor: pointer; transition: transform .15s,border-color .15s,box-shadow .15s; }
.monitor-project-tile:hover { transform: translateY(-1px); border-color: #dfa96f; box-shadow: 0 8px 18px rgba(95,52,15,.08); }
.monitor-project-tile[aria-pressed="true"] { border-color: #dc924b; box-shadow: 0 0 0 2px rgba(232,118,43,.14); }
.monitor-project-tile[data-monitor-visual="running"] { border-color: #b9ddc2; border-left-color: #2c8b50; background: #f4fbf6; }
.monitor-project-tile[data-monitor-visual="attention"] { border-color: #e8c1ba; border-left-color: var(--err); background: #fff8f6; }
.monitor-project-tile[data-monitor-visual="pending"] { border-color: #ecd6ad; border-left-color: #a85d08; background: #fff9ed; }
.monitor-project-tile[data-monitor-visual="ready"] { border-color: #edc9a9; border-left-color: var(--orange); background: #fff3e8; }
.monitor-project-tile[data-monitor-visual="stable"], .monitor-project-tile[data-monitor-visual="unmonitored"] { border-color: var(--line); border-left-color: #b7a28c; background: var(--surface-tint); }
.monitor-project-tile-top { display: flex; justify-content: space-between; align-items: start; gap: 8px; margin-bottom: 3px; width:100%; }
.monitor-project-tile-top b { color: var(--ink); font-size: var(--font-sm); line-height: 1.35; overflow-wrap: anywhere; }
.monitor-project-tile-top em { font-style: normal; white-space: nowrap; }
.monitor-project-status-line { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-bottom: 2px; }
.monitor-project-status-line > strong { display: inline-flex; padding: 3px 8px; border-radius: 999px; background: var(--bg-soft); color: var(--ink-2); font-size: var(--font-xs); }
.monitor-project-tile[data-monitor-visual="running"] .monitor-project-status-line > strong { background: #dff3e5; color: #2f7d4a; }
.monitor-project-tile[data-monitor-visual="attention"] .monitor-project-status-line > strong { background: #f8dfdc; color: #a3433d; }
.monitor-project-tile[data-monitor-visual="pending"] .monitor-project-status-line > strong { background: #f8eacb; color: #8c5b12; }
.monitor-project-tile[data-monitor-visual="ready"] .monitor-project-status-line > strong { background: #f9dfca; color: var(--orange-deep); }
.monitor-project-tile[data-monitor-visual="stable"] .monitor-project-status-line > strong, .monitor-project-tile[data-monitor-visual="unmonitored"] .monitor-project-status-line > strong { background: var(--bg-soft); color: var(--ink-3); }
.monitor-project-tile > span:not(.monitor-project-tile-top) { color: var(--ink-3); font-size: var(--font-xs); line-height: 1.45; overflow-wrap: anywhere; }
.monitor-project-status-line > .monitor-project-origin { display: inline-flex; padding: 2px 7px; border-radius: 999px; font-size: var(--font-xs); font-weight: 650; }
.monitor-project-origin.direct { background: #f1e8de; color: #76583c; }
.monitor-project-origin.system { background: #f9dfca; color: var(--orange-deep); }
.monitor-project-origin.unknown { background: var(--bg-soft); color: var(--ink-3); }
.monitor-project-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin: 2px 0 10px; color: var(--ink-3); font-size: var(--font-xs); }
.monitor-project-toolbar .project-search-wrap { flex: 1; max-width: 620px; }
.monitor-project-toolbar .project-search { width: 100%; }
.monitor-project-pagination { display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 46px; margin-top: 9px; }
.monitor-project-pagination > span { min-width: 86px; color: var(--ink-3); font-size: var(--font-xs); text-align: center; }
.monitor-project-pagination .btn:disabled { opacity: .45; cursor: not-allowed; }
.monitor-internal-legend { display: flex; align-items: center; justify-content: flex-end; gap: 7px; margin-top: 4px; color: var(--ink-3); font-size: var(--font-xs); }
.monitor-internal-legend i { width: 10px; height: 10px; border: 1px solid #ddcdbd; border-radius: 3px; background: #f1e8de; }
.monitor-project-details { margin-top: 15px; padding-top: 15px; border-top: 1px solid var(--line); }
.monitor-project-detail[hidden], .monitor-project-details[hidden] { display: none !important; }
.monitor-project-detail { padding: 0 1px; }
.monitor-project-detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 11px; }
.monitor-project-detail-head > div { display: grid; gap: 3px; }
.monitor-project-detail-head h3 { margin: 0; color: var(--orange-deep); font-size: var(--font-lg); }
.monitor-project-detail-head .mono { color: var(--ink-3); font-size: var(--font-xs); }
.monitor-project-detail-meta { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 9px; margin-bottom: 12px; }
.monitor-project-detail-meta > div { display: grid; align-content: center; gap: 4px; min-height: 64px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-tint); }
.monitor-project-detail-meta small { color: var(--ink-3); font-size: var(--font-xs); }
.monitor-project-detail-meta b { color: var(--ink-2); font-size: var(--font-xs); overflow-wrap: anywhere; }
.monitor-runtime-note, .monitor-runtime-queue { margin: 0 15px 10px; padding: 8px 10px; border-radius: 8px; background: var(--surface-muted); color: var(--ink-3); font-size: var(--font-xs); line-height: 1.5; }
.monitor-runtime-queue { background: var(--orange-soft); color: var(--orange-deep); }
.monitor-runtime-queue > span { display:block; margin-top:3px; color:var(--ink-3); }







.monitor-ai-assist-note { display: grid; gap: 3px; margin: 0 0 10px; padding: 9px 11px; border: 1px solid #e4d2bf; border-radius: 9px; background: #fbf6ef; }
.monitor-ai-assist-note b { color: #765b43; font-size: var(--font-xs); }
.monitor-ai-assist-note span { color: var(--ink-2); font-size: var(--font-xs); }
.monitor-ai-assist-note small { color: var(--ink-3); font-size: var(--font-xs); }
.monitor-assay-runtime-list { display: grid; gap: 8px; padding: 0 15px 14px; }
.monitor-project-detail > .monitor-runtime-note, .monitor-project-detail > .monitor-runtime-queue { margin-inline: 0; }
.monitor-project-detail > .monitor-assay-runtime-list { padding-inline: 0; }
.monitor-assay-runtime { overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: #fffdfb; }
.monitor-assay-runtime > summary { display: grid; grid-template-columns: minmax(0,1fr) minmax(250px,.8fr) 18px; align-items: center; gap: 14px; min-height: 58px; padding: 9px 12px; list-style: none; cursor: pointer; }
.monitor-assay-runtime > summary::-webkit-details-marker { display: none; }
.monitor-assay-runtime > summary::after { content: "⌄"; color: var(--orange-deep); font-size: 16px; transition: transform .16s; }
.monitor-assay-runtime[open] > summary::after { transform: rotate(180deg); }
.monitor-assay-runtime > summary > span { display: grid; gap: 2px; min-width: 0; }
.monitor-assay-runtime > summary > span:last-of-type { text-align: right; }
.monitor-assay-runtime > summary b { color: var(--ink-2); font-size: var(--font-xs); }
.monitor-assay-runtime > summary small { overflow: hidden; color: var(--ink-3); font-size: var(--font-xs); text-overflow: ellipsis; white-space: nowrap; }
.monitor-progress-track { height: 5px; margin: 0 12px 10px; overflow: hidden; border-radius: 999px; background: #f0e5da; }
.monitor-progress-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,var(--orange),#e6a066); }
.monitor-assay-runtime.is-historical .monitor-progress-track i { background: #b9a38b; }
.monitor-step-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(218px,100%),1fr)); gap: 6px; padding: 0 12px 10px; }
.monitor-step-row { display: grid; grid-template-columns: 20px minmax(0,1fr) auto; grid-template-rows: auto auto; align-items: start; gap: 4px 6px; padding: 8px 9px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.monitor-step-row.active { border-color: #d9b28d; background: var(--surface-tint); }
.monitor-step-index { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--orange-soft); color: var(--orange-deep); font-size: var(--font-xs); font-weight: 600; }
.monitor-step-row > div { display: grid; gap: 1px; min-width: 0; }
.monitor-step-row > div b { color: var(--ink-2); font-size: var(--font-xs); }
.monitor-step-row > div small { color: var(--ink-3); font-size: var(--font-xs); }
.monitor-step-row > .tag { grid-column: 3; grid-row: 1; justify-self: end; padding: 2px 6px; line-height: 1.3; white-space: nowrap; }
.monitor-step-duration { grid-column: 2 / -1; color: var(--ink-3); font-size: var(--font-xs); text-align: left; }
/* 分支并列视图：同一项目多节点/多谱系并列，互不覆盖；此前无样式，退化为无间距内联流 */
.monitor-branch-list { display: grid; gap: 7px; margin: 0 0 12px; padding: 11px 12px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-tint); }
.monitor-branch-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 9px; }
.monitor-branch-head b { color: var(--orange-deep); font-size: var(--font-sm); }
.monitor-branch-head small { color: var(--ink-3); font-size: var(--font-xs); }
.monitor-branch-row { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 5px 12px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 9px; background: #fffdfb; }
.monitor-branch-row > span:first-child { display: grid; gap: 2px; min-width: 0; }
.monitor-branch-row > span:first-child b { color: var(--ink-2); font-size: var(--font-xs); }
.monitor-branch-row > span:first-child small { color: var(--ink-3); font-size: var(--font-xs); overflow-wrap: anywhere; }
.monitor-branch-row > .tag { grid-column: 2; grid-row: 1; justify-self: end; white-space: nowrap; }
.monitor-branch-row > small { grid-column: 1 / -1; grid-row: 2; color: var(--ink-3); font-size: var(--font-xs); line-height: 1.55; }
/* 采集过期时的“上次观测”证据：当前状态仍显示过期/待确认，历史运行不计入运行数 */
.monitor-last-observed { color: var(--orange-deep); font-size: var(--font-xs); font-style: normal; font-weight: 600; }

/* 五阶段标签：等宽小卡，标签/状态/说明各自成行；此前无样式，五组挤成一行 */
.monitor-stage-chips { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 7px; margin: 0 12px 10px; }
.monitor-stage-chip { display: grid; align-content: start; gap: 3px; padding: 8px 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-tint); }
.monitor-stage-chip > b { color: var(--ink-2); font-size: var(--font-xs); }
.monitor-stage-chip > em.tag { justify-self: start; padding: 2px 9px; font-style: normal; }
.monitor-stage-chip > small { color: var(--ink-3); font-size: var(--font-xs); line-height: 1.45; }
.monitor-step-list > .muted { grid-column: 1 / -1; }
.monitor-project-detail > .monitor-branch-list { margin-inline: 0; }
.monitor-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 12px; }
.monitor-section-head > div { flex: 1; min-width: 0; }
.monitor-section-head > .tag { flex: none; white-space: nowrap; }
.monitor-section-head h2, .monitor-section-head h3 { color: var(--orange-deep); margin: 0; }
.monitor-section-head p { margin: 4px 0 0; }
.project-monitor-rna-list { display: grid; gap: 8px; }
.project-monitor-rna { display: grid; grid-template-columns: 80px 180px minmax(0, 1fr); align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-tint); }
.project-monitor-rna > span:last-child { color: var(--ink-2); font-size: var(--font-sm); }
.project-monitor-updated { margin-top: 10px; }
.monitor-summary {
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--card);
  color: var(--ink-2); padding: 15px 17px; text-align: left; box-shadow: var(--shadow);
  transition: border-color .15s, transform .15s, background .15s;
}
.monitor-summary:hover { border-color: var(--orange); transform: translateY(-1px); }
.monitor-summary.active { border-color: var(--orange); background: var(--orange-soft); }
.monitor-summary span { display: block; color: var(--ink-3); font-size: var(--font-sm); }
.monitor-summary b { display: block; color: var(--orange-deep); font-size: 28px; margin-top: 3px; }
.monitor-table-card { padding: 7px 18px; }
.monitor-table { min-width: 1080px; table-layout: fixed; }
.monitor-table .monitor-col-id { width: 10%; }
.monitor-table .monitor-col-project { width: 43%; }
.monitor-table .monitor-col-customer { width: 20%; }
.monitor-table .monitor-col-status { width: 9%; }
.monitor-table .monitor-col-progress { width: 18%; }
.monitor-table thead th, .monitor-table tbody td { text-align: center; }
.monitor-table tbody td:nth-child(2), .monitor-table tbody td:nth-child(5) { text-align: left; }
.monitor-table td { padding: 14px 12px; vertical-align: middle; }
.monitor-progress { color: var(--ink-2); font-size: var(--font-sm); line-height: 1.55; }
.monitor-progress-time { margin-top: 5px; font-weight: 400; }
.monitor-mobile-list { display: none; }
.monitor-filter-empty { margin: 18px 0; }
.monitor-row[hidden] { display: none !important; }
.monitor-table tbody tr[data-monitor-state="RUNNING"] td { background: #f3faf5; }
.monitor-table tbody tr[data-monitor-state="ERROR"] td { background: #fdf1f0; }
.monitor-table tbody tr[data-monitor-state="TEST_ATTENTION"] td,
.monitor-table tbody tr[data-monitor-state="CHECK_REQUIRED"] td { background: #fff8e9; }
@media (max-width: 920px) {
  .monitor-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .monitor-desktop { display: none; }
  .monitor-table-card { padding: 0; border: 0; box-shadow: none; background: transparent; }
  .monitor-mobile-list { display: grid; gap: 12px; }
  .monitor-mobile-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow); padding: 17px; }
  .monitor-mobile-card[data-monitor-state="RUNNING"] { background: #f3faf5; border-color: #cce7d3; }
  .monitor-mobile-card[data-monitor-state="ERROR"] { background: #fdf1f0; border-color: #ebc8c5; }
  .monitor-mobile-card[data-monitor-state="TEST_ATTENTION"],
  .monitor-mobile-card[data-monitor-state="CHECK_REQUIRED"] { background: #fff8e9; border-color: #efd9ae; }
  .monitor-mobile-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
  .monitor-mobile-card h3 { margin: 10px 0 3px; color: var(--orange-deep); font-size: 18px; }
  .monitor-customer { color: var(--ink-2); margin-bottom: 8px; }
  .monitor-mobile-card .monitor-progress { margin-top: 11px; padding-top: 10px; border-top: 1px solid var(--line); }
  .project-monitor-rna { grid-template-columns: 64px minmax(0, 1fr); }
  .project-monitor-rna > span:last-child { grid-column: 1 / -1; }
  .monitor-location-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .monitor-project-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .monitor-project-detail-meta { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .monitor-stage-chips { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .monitor-assay-runtime > summary { grid-template-columns: minmax(0,1fr) minmax(220px,.8fr) 18px; }
}
@media (max-width: 520px) {
  .monitor-summary-grid { grid-template-columns: 1fr 1fr; gap: 9px; }
  .monitor-summary { padding: 12px 13px; }
  .monitor-project-detail-meta { grid-template-columns: 1fr; }
}
@media (min-width: 1100px) {
  .proj-head { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: end; gap: 24px; }
  .proj-head-tools { align-self: end; }
}
.pipeline-line { display: flex; align-items: stretch; margin: 10px 0 4px; overflow-x: auto; padding: 6px 2px 14px; }
.pl-node { flex: 1; min-width: 130px; position: relative; text-align: center; padding: 14px 10px 10px; }
.pl-node .ico { width: 46px; height: 46px; margin: 0 auto 8px; border-radius: 50%; background: var(--orange-soft); display: flex; align-items: center; justify-content: center; }
.pl-node .ico svg { width: 30px; height: 30px; }
.pl-node .name { font-size: 13px; font-weight: 600; color: var(--orange-deep); }
.pl-node .st { font-size: var(--font-xs); margin-top: 2px; }
.pl-node .st.ok { color: var(--ok); }
.pl-node .st.pending { color: var(--warn); }
.pl-node .st.no { color: var(--ink-3); }
.pl-node:not(:last-child)::after {
  content: ""; position: absolute; top: 36px; right: -8px; width: 16px; height: 2px; background: var(--line);
}
.kv { display: grid; grid-template-columns: 130px 1fr; gap: 6px 14px; font-size: var(--font-sm); }
.kv dt { color: var(--ink-3); } .kv dd { margin: 0; color: var(--ink); }

/* ---------- 样本表 ---------- */
.sample-table { width: 100%; border-collapse: collapse; font-size: var(--font-md); }
.sample-table th, .sample-table td { border-bottom: 1px solid var(--line); padding: 10px 10px; text-align: left; vertical-align: middle; }
.sample-table th { color: var(--orange-deep); background: var(--surface-tint); font-size: var(--font-sm); font-weight: 650; }
.sample-table input[type=text] { padding: 7px 10px; border: 1.5px solid var(--line); border-radius: var(--radius-sm); font-size: var(--font-sm); width: 150px; }
.sample-table select { padding: 7px 10px; border: 1.5px solid var(--line); border-radius: var(--radius-sm); font-size: var(--font-sm); background: #fff; }
.sample-table input[type=checkbox] { width: 17px; height: 17px; accent-color: var(--orange); }
.sample-table tr.excluded td { opacity: .45; }
/* 项目详情的样本概览为只读信息表，各列统一居中；编辑向导保留原有对齐方式。 */
.project-sample-table th, .project-sample-table td { text-align: center; }
.project-sample-table { table-layout: auto; min-width: 360px; }
.project-sample-table .sample-id, .project-sample-table .sample-display-name,
.sample-id, .scheme-assignment-table td:first-child { white-space: nowrap; overflow-wrap: normal; word-break: normal; }
.wizard-sample-table th:first-child, .wizard-sample-table td:first-child {
  width: 88px; min-width: 88px; text-align: center; white-space: nowrap;
}
.wizard-hints { display: flex; flex-wrap: wrap; gap: 7px 10px; margin: 0 0 14px; }
.wizard-hints span { display: inline-flex; align-items: center; min-height: 30px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface-tint); color: var(--ink-3); font-size: var(--font-xs); }
.wizard-hints span::before { content: ""; width: 5px; height: 5px; margin-right: 7px; border-radius: 50%; background: var(--orange); }
.wizard-submit-summary { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin: 2px 0 10px; color: var(--ink-3); font-size: var(--font-sm); }
.wizard-sample-scroll { max-height: 620px; overflow-y: auto; border: 1px solid var(--line); border-radius: 12px; }
.wizard-sample-table { table-layout: fixed; }
.wizard-sample-table .wizard-col-include { width: 88px; }
.wizard-sample-table .wizard-col-id { width: 20%; }
.wizard-sample-table .wizard-col-name { width: 40%; }
.wizard-sample-table .wizard-col-group { width: 28%; }
.wizard-sample-table thead th { position: sticky; top: 0; z-index: 2; text-align: center; }
.wizard-sample-table tbody td { padding: 13px 12px; text-align: center; }
.wizard-sample-table tbody tr:hover td { background: #fffaf5; }
.wizard-sample-table input[type=text] { display: block; width: min(100%, 270px); margin: 0 auto; text-align: center; }

/* ---------- 五步向导 ---------- */
.steps-bar { display: flex; gap: 6px; margin-bottom: 22px; flex-wrap: wrap; }
.steps-bar .step {
  flex: 1; min-width: 120px; padding: 10px 14px; border-radius: 10px; border: 1.5px solid var(--line);
  background: #fff; font-size: 13px; color: var(--ink-3); display: flex; align-items: center; gap: 8px;
}
.steps-bar .step .n {
  width: 22px; height: 22px; border-radius: 50%; background: var(--bg-soft); color: var(--ink-3);
  display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; flex: none;
}
.steps-bar .step.active { border-color: var(--orange); color: var(--orange-deep); font-weight: 600; }
.steps-bar .step.active .n { background: var(--orange); color: #fff; }
.steps-bar .step.done { color: var(--ok); }
.steps-bar .step.done .n { background: var(--ok-bg); color: var(--ok); }

.module-cards { display: grid; grid-template-columns: 1fr; gap: 16px; }
.module-card { border: 1.5px solid var(--line); border-radius: var(--radius); padding: 18px 20px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.module-card.on { border-color: var(--line); border-left: 3px solid var(--orange); background: var(--surface-tint); box-shadow: inset 0 0 0 1px rgba(232,118,43,.025); }
.module-card .m-head { display: flex; align-items: center; gap: 10px; font-weight: 650; font-size: 16px; color: var(--ink); }
.module-card .m-head svg { width: 22px; height: 22px; }
.module-card .m-desc { font-size: 13px; color: var(--ink-3); margin: 9px 0 12px; line-height: 1.7; }
.module-rna-scope { display:flex; align-items:center; gap:10px; margin:10px 0 2px; }
.module-rna-scope > span { flex:none; color:var(--ink-3); font-size:var(--font-xs); font-weight:650; }
.module-rna-scope .choice-row { margin:0; }
.module-card .m-toggle { margin-left: auto; }
.module-params { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--line); }
.module-params .param-row { padding: 8px 0; }
.diff-module-card { padding: 20px 22px; }
.diff-module-card .m-head { min-height: 32px; }
.diff-module-card .m-head > span:first-of-type { line-height: 1.35; }
.diff-module-intro { max-width: 920px; margin-bottom: 14px !important; }
.diff-rna-scope { max-width: 840px; margin: 0; padding: 11px 13px; border: 1px solid var(--line); border-radius: 11px; background: #fff; }
.diff-rna-scope > span { color: var(--ink-3); font-size: var(--font-xs); font-weight: 650; }
.diff-params { display: grid; gap: 12px; margin-top: 16px; padding-top: 16px; }
.diff-param-section { padding: 15px 16px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.diff-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 11px; }
.diff-section-head > div { display: grid; gap: 3px; }
.diff-section-head .p-label { color: var(--ink); font-size: var(--font-sm); font-weight: 650; }
.diff-section-head .p-help { margin: 0; color: var(--ink-3); font-size: var(--font-xs); }
.diff-preset-grid { grid-template-columns: repeat(auto-fit,minmax(150px,1fr)); max-width: 840px; }
.diff-preset-grid .choice { min-height: 48px; }
.diff-section-note, .diff-recompute-note { margin: 8px 0 0; color: var(--ink-3); font-size: var(--font-xs); line-height: 1.65; }
.metric-choice-card { min-height: 58px; flex-direction: column; gap: 2px; }
.metric-choice-card b { color: inherit; font-size: var(--font-sm); font-weight: 650; }
.metric-choice-card span { color: var(--ink-3); font-size: 11px; font-weight: 450; }
.metric-choice-card.on span { color: #9a5b2b; }
.diff-threshold-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; max-width: 760px; }
.diff-number-card { display: grid; gap: 7px; min-width: 0; padding: 12px 13px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-tint); }
.diff-number-card > span { color: var(--ink-2); font-size: var(--font-xs); font-weight: 650; }
.diff-number-card input { width: 100%; min-width: 0; text-align: center; font-variant-numeric: tabular-nums; }
.diff-number-card small { color: var(--ink-3); font-size: 11px; font-weight: 450; }
.diff-param-footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 14px; border: 1px solid #ecc69f; border-radius: 11px; background: var(--orange-soft); }
.diff-param-footer > div { display: grid; gap: 2px; }
.diff-param-footer b { color: var(--orange-deep); font-size: var(--font-xs); }
.diff-param-footer span { color: var(--ink-2); font-size: var(--font-xs); }
.diff-param-footer .btn { flex: none; background: #fff; }
.diff-recompute-note { margin: -3px 2px 0; }
.enrichment-metric-grid { max-width: 720px; margin-top: 10px; }
.enrichment-cutoff-row { margin-top: 10px; }
.switch { position: relative; width: 40px; height: 22px; border-radius: 999px; background: #e5d7c6; border: none; transition: background .15s; flex: none; }
.switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: left .15s; }
.switch.on { background: var(--orange); }
.switch.on::after { left: 21px; }
.switch:disabled { opacity: .4; cursor: not-allowed; }

/* 高级设置折叠 */
details.adv { border: 1.5px solid var(--line); border-radius: 12px; background: #fff; margin-top: 18px; }
details.adv summary { padding: 13px 18px; font-weight: 600; font-size: 14px; color: var(--orange-deep); cursor: pointer; list-style: none; }
details.adv summary::before { content: "▸ "; }
details.adv[open] summary::before { content: "▾ "; }
details.adv .adv-body { padding: 4px 18px 18px; }

.param-row { padding: 13px 0; border-bottom: 1px dashed var(--line); }
.param-row:last-child { border-bottom: none; }
.param-row .p-head { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.param-row .p-label { font-weight: 650; font-size: 14px; color: var(--ink); }
.param-row .p-cur { font-size: 12px; color: var(--ink-3); }
.param-row .p-help { font-size: var(--font-xs); color: var(--ink-3); margin: 5px 0 9px; max-width: 600px; }
.choice-row { display: flex; gap: 8px; flex-wrap: wrap; }
.segmented-grid { display: grid; width: 100%; max-width: 840px; gap: 9px; }
.segmented-grid .choice { width: 100%; display: flex; align-items: center; justify-content: center; text-align: center; }
.segmented-2 { grid-template-columns: repeat(2, minmax(0,1fr)); max-width: 700px; }
.segmented-3 { grid-template-columns: repeat(3, minmax(0,1fr)); max-width: 840px; }
.segmented-4 { grid-template-columns: repeat(4, minmax(0,1fr)); max-width: 960px; }
.compact-segments { max-width: 420px; }
.target-mode-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin-top: 12px; max-width: 700px; }
.target-mode-grid .choice { width: 100%; min-height: 44px; display: flex; align-items: center; justify-content: center; text-align: center; line-height: 1.35; }
.target-mode-grid .choice:last-child:nth-child(odd) { grid-column: 1 / -1; }
.target-family-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 9px; margin-top: 12px; max-width: 840px; }
.target-family-card { min-height: 44px; display: flex; align-items: center; justify-content: center; text-align: center; }
.target-mode-options { margin-top: 12px; padding: 15px 16px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); }
.target-option-title { margin-bottom: 9px; color: var(--ink-2); font-size: var(--font-xs); font-weight: 650; }
.target-option-title span { margin-left: 5px; color: var(--ink-3); font-weight: 500; }
.target-count-options .choice { min-width: 96px; }
.target-balance-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 180px)); gap: 10px 12px; align-items: end; }
.target-balance-grid label { display: grid; gap: 5px; color: var(--ink-3); font-size: 12px; }
.target-balance-grid input { width: 100%; }
.target-balance-note { grid-column: 1 / -1; }
.target-selection-note { color: var(--ink-3); font-size: var(--font-xs); line-height: 1.65; }
.target-result-summary { margin-bottom: 12px; padding: 10px 12px; border-radius: 9px; background: var(--orange-soft); color: var(--ink-2); font-size: var(--font-xs); }
.target-diff-options { margin-bottom: 10px; }
.target-load-summary { display: flex; justify-content: flex-start; align-items: center; gap: 10px; margin-top: 13px; padding-top: 11px; border-top: 1px dashed var(--line); color: var(--ink-3); font-size: var(--font-xs); }
.target-load-summary b { color: var(--orange-deep); white-space: nowrap; }
.target-mode-options textarea { width: 100%; min-height: 104px; }
.group-scheme-card { margin-top: 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; overflow: hidden; box-shadow: 0 1px 2px rgba(84,50,20,.025); }
.group-scheme-summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 58px; padding: 14px 17px; color: var(--ink-2); background: linear-gradient(100deg,var(--surface-tint),#fff); font-size: 14px; }
.group-scheme-summary b { color: var(--orange-deep); font-size: 15px; }
.group-scheme-summary::-webkit-details-marker { display: none; }
.group-scheme-summary::after { content: "⌄"; color: var(--orange-deep); font-size: 18px; transition: transform .18s ease; }
.group-scheme-card[open] > .group-scheme-summary::after { transform: rotate(180deg); }
.group-scheme-card[open] > .group-scheme-summary { border-bottom: 1px solid var(--line); }
.scheme-summary-badges { margin-left: auto; display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.scheme-summary-badges i { padding: 4px 8px; border-radius: 999px; background: #fff; border: 1px solid var(--line); color: var(--ink-3); font-size: 11px; font-style: normal; white-space: nowrap; }
.group-scheme-body { background: #fff; }
.group-scheme-head { display: grid; grid-template-columns: 92px minmax(180px,1fr) auto; gap: 12px; align-items: center; padding: 15px 18px; background: var(--surface-tint); border-bottom: 1px solid var(--line); }
.scheme-number { color: var(--ink-2); font-size: 13px; font-weight: 650; white-space: nowrap; }
.group-scheme-head input, .group-scheme-group-row input, .scheme-contrast-row input { min-width: 0; height: var(--control-h); padding: 8px 12px; }
.group-scheme-section { padding: 18px; border-bottom: 1px dashed var(--line); }
.group-scheme-section:last-child { border-bottom: 0; }
.group-scheme-section > b { display: inline-block; margin: 0 10px 10px 0; color: var(--ink); font-size: 14px; }
.group-scheme-group-row { display: grid; grid-template-columns: 100px minmax(140px,1fr) 100px auto; gap: 10px; align-items: center; margin-bottom: 9px; }
.group-scheme-group-row .btn, .scheme-contrast-row .btn, .group-scheme-head .btn { padding: 6px 11px; font-size: 12px; }
.scheme-assignment-table { margin: 6px 0 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); border-collapse: separate; border-spacing: 0; overflow: hidden; }
.scheme-assignment-table th { background: var(--surface-tint); }
.scheme-assignment-table select { width: 100%; min-width: 150px; }
.scheme-contrast-row { display: grid; grid-template-columns: minmax(150px,1fr) minmax(120px,1fr) auto minmax(120px,1fr) auto; gap: 8px; align-items: center; margin-bottom: 8px; }
.choice { min-height: 44px; border: 1.5px solid var(--line); background: #fff; border-radius: var(--radius-sm); padding: 8px 15px; display: inline-flex; align-items: center; justify-content: center; text-align: center; font-size: var(--font-sm); font-weight: 500; line-height: 1.35; color: var(--ink-2); }
.choice.on { border-color: var(--orange); background: var(--orange-soft); color: var(--orange-deep); font-weight: 650; }
.choice:disabled { opacity: .42; cursor: not-allowed; }
.choice-native-input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.theme-choice-row { gap: 9px; }
.theme-choice { min-width: 150px; flex-direction: column; gap: 6px; padding: 10px 14px; }
.theme-swatch { display: flex; width: 86px; height: 9px; overflow: hidden; border: 1px solid rgba(121,77,38,.16); border-radius: 999px; }
.theme-swatch i { flex: 1; height: 100%; }
.num-inline { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.num-inline input[type=number] { width: 130px; height: var(--control-h); padding: 8px 12px; font-size: var(--font-md); }
.num-inline select { height: var(--control-h); padding: 8px 34px 8px 12px; font-size: var(--font-md); }
.num-inline .btn { min-height: var(--control-h); }
.scheme-contrast-row select, .scheme-assignment-table select { height: var(--control-h); padding: 8px 34px 8px 12px; }
.warn-inline { background: var(--warn-bg); border: 1px solid #eeda9f; color: var(--warn); border-radius: 10px; padding: 9px 13px; font-size: var(--font-xs); margin-top: 8px; max-width: 600px; }
.disabled-note { background: var(--bg-soft); border-radius: 10px; padding: 10px 14px; font-size: 13px; color: var(--ink-3); }

/* 影响面板 */
.impact h4 { font-size: 14px; color: var(--orange-deep); margin-bottom: 12px; }
.plan-group { margin-bottom: 14px; }
.plan-group .pg-title { font-size: var(--font-xs); font-weight: 700; margin-bottom: 6px; }
.plan-item { font-size: 13px; padding: 8px 12px; border-radius: 9px; border: 1px solid var(--line); background: #fff; margin-bottom: 7px; }
.plan-item .d { color: var(--ink-3); font-size: 12px; }
.plan-item.reuse { border-left: 3px solid #dfaa75; }
.plan-item.rerun { border-left: 3px solid var(--orange); }
.plan-item.report { border-left: 3px solid var(--amber); }
.plan-item.manual { border-left: 3px solid var(--violet); }
.plan-item.blocked { border-left: 3px solid var(--err); background: #fffafa; }
.plan-item.server { border-left: 3px solid var(--violet); background: #fff8f1; }

/* ---------- 任务状态 ---------- */
.status-hero { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.status-pill { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; font-size: var(--font-sm); font-weight: 650; line-height: 1.5; padding: 5px 12px; border-radius: 999px; white-space: normal; text-align: center; }
.status-pill.running { background: #e8f6ec; color: #2f6f45; }
.status-pill.done, .status-pill.ok { background: var(--ok-bg); color: var(--ok); }
.status-pill.failed, .status-pill.err { background: var(--err-bg); color: var(--err); }
.status-pill.gray { background: var(--bg-soft); color: var(--ink-3); }
.status-pill.warn, .status-pill.violet { background: var(--warn-bg); color: var(--warn); }
.status-pill.blocked { background: var(--violet-soft); color: #914308; }
.spinner { width: 18px; height: 18px; border: 2.5px solid var(--orange-soft); border-top-color: var(--orange); border-radius: 50%; animation: spin 0.9s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.job-row { display: flex; align-items: center; gap: 14px; padding: 13px 4px; border-bottom: 1px solid var(--line); font-size: var(--font-sm); flex-wrap: wrap; }
.job-row:last-child { border-bottom: none; }
.job-row .mono { color: var(--orange-deep); font-weight: 600; }
.analysis-record-list { display: grid; gap: 10px; margin-top: 14px; }
.analysis-record {
  position: relative; display: grid;
  grid-template-columns: 32px minmax(0, 1fr) minmax(100px, .45fr) 126px minmax(120px, auto);
  align-items: center; column-gap: 14px;
  padding: 12px 14px;
  border: 1px solid var(--line); border-radius: 12px;
  background: linear-gradient(100deg, #fff 0%, #fffdf9 100%);
}
.analysis-record.initial { background: linear-gradient(100deg, #fffaf4 0%, #fff 70%); }
.analysis-record-index {
  width: 32px; height: 32px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--orange-soft); color: var(--orange-deep);
  border: 1px solid #f2d1ae; font-weight: 750; font-size: 13px;
}
.analysis-record:not(:last-child)::after {
  content: ""; position: absolute; left: 31px; bottom: -11px;
  width: 1px; height: 10px; background: #e8c9a7;
}
.analysis-record-main { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.analysis-record-main b { font-size: var(--font-md); color: var(--ink); }
.analysis-record-main span { color: var(--ink-3); font-size: var(--font-xs); line-height: 1.55; }
.analysis-record-status { display: flex; justify-content: flex-start; min-width: 0; }
.analysis-record-status .status-pill { font-size: var(--font-xs); padding: 4px 10px; }
.analysis-record-time { display: flex; flex-direction: column; gap: 1px; color: var(--ink-3); }
.analysis-record-time span { font-size: var(--font-xs); }
.analysis-record-time b { color: var(--ink-2); font-size: var(--font-xs); font-weight: 550; white-space: nowrap; }
.analysis-record-action { display: flex; justify-content: flex-end; }
.analysis-record-action .btn { min-width: 120px; justify-content: center; padding: 7px 11px; font-size: var(--font-xs); white-space: normal; }
.analysis-summary-row { align-items: flex-start; flex-wrap: nowrap; padding: 9px 12px; gap: 12px; }
.analysis-summary-key {
  flex: 0 0 140px; white-space: normal; padding-right: 0; color: var(--ink-3);
  /* All summary labels use one weight, including labels above block tables. */
  font-weight: 400;
}
.analysis-summary-row.is-block { display:block; padding-top:12px; padding-bottom:14px; }
.analysis-summary-row.is-block .analysis-summary-key { display:block; width:100%; padding:0; margin-bottom:10px; color:var(--ink-3); font-weight:400; }
.analysis-summary-row.is-block .analysis-summary-value { display:block; width:100%; }
.rna-summary-groups { display:grid; gap:14px; margin-top:14px; }
.rna-summary-group { overflow:hidden; border:1px solid var(--line); border-radius:12px; background:#fff; }
.rna-summary-group > h4 { margin:0; padding:10px 14px; color:var(--orange-deep); background:var(--surface-tint); border-bottom:1px solid var(--line); font-size:var(--font-sm); }
.rna-summary-rows { margin:0 !important; border:0 !important; border-radius:0 !important; }
.rna-summary-rows .job-row:last-child { border-bottom:0; }
.analysis-summary-key, .analysis-summary-value { font-size: var(--font-sm); line-height: 1.6; }
.analysis-summary-value { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; word-break: normal; color: var(--ink-2); }
.target-species-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(155px, 1fr)); gap: 9px; width: 100%; }
.target-species-card { padding: 10px 11px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-tint); }
.target-species-card:last-child:nth-child(odd) { grid-column: 1 / -1; }
.target-species-card > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; gap: 12px; padding: 3px 0; color: var(--ink-3); font-size: var(--font-xs); }
.target-species-card > div > span,
.target-species-card > div > b { text-align: center; }
.target-species-card .target-species-heading { grid-template-columns: minmax(72px, .85fr) minmax(0, 1.15fr); margin-bottom: 5px; padding-bottom: 7px; border-bottom: 1px solid var(--line); color: var(--orange-deep); font-weight: 700; font-size: var(--font-xs); line-height: 1.45; }
.target-species-card .target-species-heading > span,
.target-species-card .target-species-heading > b { color: inherit; font-size: inherit; font-weight: inherit; white-space: normal; overflow-wrap: anywhere; }
.target-matrix-scroll { width: 100%; overflow-x: auto; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-tint); }
.target-matrix { display: grid; width: 100%; gap: 1px; background: var(--line); }
.target-matrix-cell { min-width: 0; padding: 10px 14px; text-align: center; background: var(--surface-tint); font-size: var(--font-sm); line-height: 1.5; }
.target-matrix-corner, .target-matrix-species { color: var(--orange-deep); font-weight: 700; background: #fff5e8; }
.target-matrix-label { color: var(--ink-3); font-weight: 550; }
.target-matrix-value { color: var(--ink-2); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.target-species-card b { color: var(--ink-2); font-weight: 650; white-space: nowrap; }

@media (min-width: 641px) and (max-width: 900px) {
  .analysis-record {
    grid-template-columns: 38px minmax(220px, 1fr) 100px 150px;
    row-gap: 10px;
  }
  .analysis-record-action { grid-column: 2 / -1; justify-content: flex-start; }
}

@media (min-width: 901px) and (max-width: 1150px) {
  .analysis-record {
    grid-template-columns: 38px minmax(220px, 1fr) minmax(190px, max-content) 150px;
    row-gap: 10px;
  }
  .analysis-record-action { grid-column: 2 / -1; justify-content: flex-start; }
}

/* ---------- 结果页 ---------- */
.cmp-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--font-md); }
.cmp-table th, .cmp-table td { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 10px 13px; text-align: left; vertical-align: top; }
.cmp-table thead th { background: var(--bg-soft); color: var(--orange-deep); border-top: 1px solid var(--line); }
.cmp-table th:first-child, .cmp-table td:first-child { border-left: 1px solid var(--line); }
.cmp-table thead th:first-child { border-top-left-radius: 10px; }
.cmp-table thead th:last-child { border-top-right-radius: 10px; }
.cmp-table tbody > tr:not(.cmp-section) > th { background: #fffdfa; color: var(--ink-2); font-weight: 620; }
.cmp-table .cmp-section th { padding: 9px 13px; background: #f9efe2; color: var(--orange-deep); font-size: var(--font-sm); letter-spacing: .02em; border-left: 1px solid var(--line); }
.cmp-version { display: block; font-size: 14px; margin-bottom: 7px; }
.cmp-version a { color: var(--orange-deep); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.cmp-report-time { display: block; color: var(--ink-3); font-size: var(--font-xs); font-weight: 450; line-height: 1.55; }
.cmp-report-time b { color: var(--ink-2); font-size: var(--font-xs); font-weight: 600; white-space: nowrap; }
.cmp-table td.diff { background: #fdf0da; font-weight: 650; color: var(--orange-deep); }
.cmp-table td.dim { color: var(--ink-3); }
.dl-list { display: flex; flex-direction: column; gap: 8px; }
.dl-item { display: flex; align-items: center; gap: 10px; font-size: var(--font-sm); padding: 9px 13px; border: 1px solid var(--line); border-radius: 9px; background: #fff; flex-wrap: wrap; }
.dl-item .sz { color: var(--ink-3); font-size: 12px; margin-left: auto; }
.report-frame { width: 100%; height: 72vh; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }

.section-title { display: flex; align-items: center; gap: 10px; margin: 26px 0 12px; font-size: 17px; color: var(--orange-deep); }
.section-title svg { width: 22px; height: 22px; }
.empty { text-align: center; color: var(--ink-3); padding: 44px 0; font-size: 14px; }
.footer { padding: 22px 28px; text-align: center; color: var(--ink-3); font-size: 12px; border-top: 1px solid var(--line); }

/* ---------- 分享 ---------- */
.share-link-box { display: flex; gap: 10px; align-items: center; background: var(--bg-soft); border-radius: 10px; padding: 10px 14px; font-size: 13px; margin: 8px 0; word-break: break-all; }
.share-link-box .mono { flex: 1; }
.checkline { display: flex; align-items: flex-start; gap: 10px; margin: 18px 0; font-size: var(--font-md); font-weight: 600; color: var(--ink); }
.checkline input { width: 18px; height: 18px; accent-color: var(--orange); margin-top: 3px; }
.confirm-banner { background: var(--warn-bg); border: 1px solid #eeda9f; border-radius: var(--radius); padding: 16px 20px; display: flex; gap: 12px; align-items: flex-start; font-size: var(--font-sm); color: #6d5312; }

/* ---------- 项目列表与用户管理 ---------- */
.proj-table { table-layout: fixed; }
.proj-table .col-project-id { width: 11%; }
.proj-table .col-project { width: 37%; }
.proj-table .col-customer { width: 20%; }
.proj-table .col-task { width: 12%; }
.proj-table .col-progress { width: 20%; }
.proj-table thead th, .proj-table tbody td { text-align: center; }
.proj-table thead th { white-space: nowrap; }
.proj-table tbody td:nth-child(2) { text-align: left; }
.proj-table tbody tr.proj-row:hover td { background: var(--surface-tint); }
.proj-table th, .proj-table td { min-width: 0; overflow-wrap: anywhere; }
.proj-table td { vertical-align: top; padding: 13px 10px; line-height: 1.5; }
.proj-table tbody td:last-child { text-align: center; }
.proj-table td .muted.small { display: block; margin-top: 2px; }
.proj-table tbody td:first-child { white-space: nowrap; }
.proj-table .task-sum { max-width: 100%; white-space: normal; margin: 0 auto; text-align: center; }
.project-task-count { display: block; color: var(--ink-2); font-size: var(--font-sm); }
.project-task-note, .project-runtime-note { display: block; margin-top: 4px; color: var(--ink-3); font-size: var(--font-xs); line-height: 1.5; }
.proj-table .ev-text { max-width: 100%; margin: 0 auto; text-align: center; white-space: normal; overflow-wrap: anywhere; line-height: 1.45; }
.proj-table .project-name { color: var(--ink-2); font-size: var(--font-md); font-weight: 650; line-height: 1.5; }
.project-summary-line { margin-top: 3px; line-height: 1.6; }
.proj-table .project-secondary,
.proj-table .progress-label { color: var(--ink-3); font-size: var(--font-sm); font-weight: 400; }
.proj-table .progress-tag { max-width: 100%; overflow: visible; text-overflow: clip; white-space: normal; line-height: 1.4; }
.mobile-project-progress .progress-tag { justify-self: start; min-width: 0; white-space: normal; line-height: 1.4; }
.proj-table .progress-time { margin-top: 5px; font-size: var(--font-xs); font-variant-numeric: tabular-nums; }
.proj-table.monitor-table tbody td:nth-child(5) { text-align: left; }
.proj-table.monitor-table .monitor-progress-time { color: var(--ink-3); font-size: var(--font-xs); }
.users-page { max-width: 1180px; font-size: var(--font-md); }
.users-page h2, .users-page h3 { color: var(--orange-deep); margin: 0; line-height: 1.35; }
.users-page h2 { font-size: 21px; }
.users-page h3 { font-size: 16px; }
.users-page p { line-height: 1.65; }
.user-create-panel summary, .admin-directory summary {
  display: flex; align-items: center; gap: 10px; cursor: pointer; list-style-position: inside; font-size: 15px;
}
.user-create-panel summary .muted, .admin-directory summary .muted { margin-left: auto; }
.user-create-body, .admin-directory-body { margin-top: 18px; }
.user-create-grid { display: grid; grid-template-columns: 1.1fr 1.35fr .8fr 1.15fr 1.1fr auto; gap: 10px; align-items: center; }
.user-create-grid input, .user-create-grid select,
.access-controls input, .access-controls select, .user-directory-head input {
  width: 100%; min-width: 0; padding: 10px 12px; border: 1.5px solid var(--line);
  border-radius: var(--radius-sm); background: #fff; color: var(--ink); font: inherit; font-size: 14px;
}
.access-manager, .user-directory, .admin-directory { margin-top: 18px; }
.access-manager-head, .user-directory-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.access-manager-head p, .user-directory-head p { margin: 5px 0 0; font-size: var(--font-sm); }
.access-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 18px; }
.access-controls label { display: grid; gap: 6px; color: var(--ink-2); font-size: var(--font-sm); font-weight: 600; }
.customer-picker { position: relative; display: grid; gap: 6px; color: var(--ink-2); font-size: var(--font-sm); font-weight: 600; }
.customer-suggestions {
  position: absolute; z-index: 40; top: calc(100% + 7px); left: 0;
  width: min(650px, calc(100vw - 48px)); max-height: 330px; overflow: auto;
  padding: 8px; border: 1px solid #edcfad; border-radius: 15px;
  background: #fffaf4; box-shadow: 0 16px 34px rgba(111, 68, 30, .18); color: var(--ink);
}
.customer-picker:nth-child(2) .customer-suggestions { left: auto; right: 0; }
.customer-suggestion {
  display: flex; align-items: center; width: 100%; padding: 11px 14px; border: 0; border-radius: 10px;
  background: transparent; color: var(--ink); font: inherit; font-size: var(--font-sm);
  line-height: 1.45; text-align: left; white-space: nowrap; cursor: pointer;
}
.customer-suggestion:hover, .customer-suggestion:focus {
  background: linear-gradient(90deg, #fff0e3, #fff7ef); color: var(--orange-deep); outline: none;
}
.customer-choice-unit { font-weight: 650; }
.customer-choice-name { font-weight: 650; }
.customer-choice-code { color: #7c6a58; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; }
.customer-choice-sep { margin: 0 7px; color: #c9a887; }
.customer-suggestions-empty { padding: 18px 14px; color: var(--ink-3); font-size: 13px; }
.access-project-toolbar { display: flex; justify-content: space-between; gap: 12px; margin: 16px 0 8px; }
.access-project-list { max-height: 330px; overflow: auto; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.access-project-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 11px 13px; border-bottom: 1px solid var(--line); cursor: pointer; font-size: var(--font-sm); }
.access-project-item:last-child { border-bottom: 0; }
.access-project-item:hover { background: var(--bg-soft); }
.access-project-item input { width: 17px; height: 17px; accent-color: var(--orange); }
.access-project-main { display: grid; grid-template-columns: 110px minmax(0,1fr); align-items: start; gap: 12px; min-width: 0; }
.access-project-id { padding-top: 2px; color: var(--ink-3); }
.access-project-content { min-width: 0; }
.access-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.access-actions .btn { font-size: var(--font-sm); }
.btn-danger { color: #9f2f26; border-color: #e4aaa4; background: #fff7f6; }
.btn-danger:hover { background: #fdeae8; }
.user-directory-head input { width: min(390px, 44vw); }
.user-group { margin-top: 20px; }
.user-group > h3 { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 16px; }
.test-user-group { padding-top: 18px; border-top: 1px solid var(--line); }
.user-compact-row { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 12px; min-height: 62px; padding: 10px 4px; border-bottom: 1px solid var(--line); }
.client-user-row { grid-template-columns: minmax(0,1fr) auto auto; }
.user-compact-row:last-child { border-bottom: 0; }
.client-user-main { flex: 1; min-width: 0; }
.user-row-actions { display: flex; gap: 7px; flex-wrap: wrap; }
.user-row-actions .btn, .u-manage-projects { padding: 5px 10px; font-size: 12px; min-height: 32px; }
.user-pager { display: flex; align-items: center; justify-content: center; gap: 12px; min-height: 42px; margin-top: 8px; color: var(--ink-3); font-size: 13px; }
.user-pager button:disabled { opacity: .42; cursor: default; }
.proj-head-tools { display: flex; flex-direction: row; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 10px 12px; margin-left: auto; }
.project-search-wrap { display: flex; align-items: center; gap: 10px; }
.project-search {
  width: min(360px, 34vw); min-width: 260px; height: var(--control-h); padding: 9px 38px 9px 14px;
  border: 1.5px solid var(--line); border-radius: var(--radius-sm); background: #fff;
  color: var(--ink); font: inherit; font-size: var(--font-sm); box-shadow: var(--shadow);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%238a7763' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
}
.project-search:focus { outline: none; border-color: var(--orange); box-shadow: 0 0 0 3px rgba(232,118,43,.12); }
.project-search::placeholder { color: var(--ink-3); }
.project-search-count { color: var(--ink-3); font-size: 12px; white-space: nowrap; }
.proj-head-actions { display: flex; align-items: center; gap: 10px; }
.analysis-entry-card { margin: 0 0 18px; }
.analysis-entry-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.analysis-entry-head h3 { color: var(--orange-deep); font-size: var(--font-lg); }
.analysis-entry-head p { margin: 5px 0 0; }
.analysis-entry-head .tag { flex: none; font-style: normal; }
.analysis-entry-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 14px; }
.analysis-entry-note { margin-top: 12px; }
/* 管理员候选报告入口：只读预览，不改变发布状态 */
.candidate-report-card { margin: 0 0 18px; }
.candidate-report-meta { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(250px,100%),1fr)); gap: 10px 16px; margin: 14px 0 0; padding-top: 12px; border-top: 1px solid var(--line); color: var(--ink-2); font-size: var(--font-sm); }
.candidate-report-meta b { overflow-wrap: anywhere; }
.candidate-report-note { margin: 10px 0 0; }
.project-search-empty { padding: 30px 12px; }
.proj-row[hidden] { display: none !important; }
.mobile-project-list { display: none; }
.mobile-project-card {
  display: block; color: var(--ink); background: var(--card); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow); padding: 15px 16px;
}
.mobile-project-card:hover { text-decoration: none; border-color: #e7c6a3; }
.mobile-project-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.mobile-project-title { margin-top: 10px; font-size: 15px; font-weight: 700; color: var(--ink); }
.mobile-project-summary { margin-top: 3px; color: var(--ink-3); font-size: var(--font-xs); }
.mobile-project-meta { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px 14px; margin-top: 10px; }
.mobile-project-meta span { font-size: var(--font-xs); color: var(--ink-2); }
.mobile-project-progress { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 5px 8px; margin-top: 10px; padding-top: 9px; border-top: 1px solid var(--line); font-size: var(--font-xs); }
.mobile-project-progress .progress-time { grid-column: 2; grid-row: 1; color: var(--ink-3); white-space: nowrap; }
.mobile-project-progress .project-runtime-note { grid-column: 1 / -1; margin: 0; }
.combined-card, .combined-result { margin-top: 18px; }
.combined-result[hidden] { display: none; }
.combined-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.combined-section-head h3 { color: var(--orange-deep); font-size: var(--font-lg); }
.combined-section-head p { margin: 5px 0 0; }
.combined-search-wrap { display: flex; align-items: center; gap: 10px; margin-top: 18px; }
.combined-search-wrap .project-search { width: min(540px, 100%); }
.combined-project-list { display: grid; gap: 9px; margin-top: 14px; overflow-x: auto; }
.combined-project-grid { display: grid; grid-template-columns: 34px 100px minmax(480px,3fr) minmax(190px,1.2fr) 150px; gap: 11px; min-width: 1040px; }
.combined-project-header { align-items: center; padding: 0 15px 2px; color: var(--orange-deep); font-size: var(--font-sm); font-weight: 650; text-align: center; }
.combined-project-item { align-items: center; min-height: 78px; padding: 13px 15px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-tint); cursor: pointer; }
.combined-project-item:hover { border-color: #e6bd94; background: #fff7ef; }
.combined-project-item:has(input:checked) { border-color: var(--orange); box-shadow: inset 3px 0 0 var(--orange); background: var(--orange-soft); }
.combined-project-item.is-incomplete { background: var(--surface-muted); }
.combined-project-item input { width: 18px; height: 18px; accent-color: var(--orange); }
.combined-project-item[hidden] { display: none; }
.combined-cell { min-width: 0; color: var(--ink-2); font-size: var(--font-sm); line-height: 1.55; text-align: center; }
.combined-number { color: var(--ink-3); }
.combined-rna { color: var(--orange-deep); overflow-wrap: anywhere; }
.combined-sample-count { text-align: center; }
.combined-project-main, .combined-customer { display: grid; gap: 3px; min-width: 0; justify-items: center; }
.combined-project-main { text-align: left; justify-items: start; }
.combined-project-title { color: var(--orange-deep); font-weight: 700; }
.combined-search-empty { grid-column: 1 / -1; padding: 28px 10px; }
.combined-actions { display: flex; justify-content: flex-end; margin-top: 18px; }
.combined-check-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; margin-top: 18px; }
.combined-check-row { display: grid; grid-template-columns: 24px minmax(0,1fr); align-items: center; gap: 8px; padding: 10px 12px; border-radius: var(--radius-sm); font-size: var(--font-sm); }
.combined-check-row > span:first-child { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; font-weight: 700; }
.combined-check-row.pass { color: var(--ok); background: var(--ok-bg); }
.combined-check-row.pass > span:first-child { background: #f4d6bb; }
.combined-check-row.fail { color: var(--warn); background: var(--warn-bg); }
.combined-check-row.fail > span:first-child { background: #f8e5ad; }
.combined-subtitle { margin-top: 22px; color: var(--ink-2); font-size: var(--font-md); }
.combined-mode-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; margin-top: 9px; }
.combined-mode { min-height: 78px; padding: 13px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.combined-mode > div:first-child { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.combined-mode.available { border-color: #e4b786; background: #fffaf5; }
.combined-mode.unavailable { opacity: .72; background: var(--surface-muted); }
.combined-blockers { margin-top: 14px; padding: 13px 15px; border: 1px solid #efd698; border-radius: var(--radius); background: var(--warn-bg); color: var(--warn); }
.combined-blockers ul { margin: 6px 0 0; padding-left: 20px; }
.combined-batch-note { display: grid; grid-template-columns: auto minmax(0,1fr); gap: 10px 16px; margin-top: 14px; padding: 13px 15px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-tint); }
.combined-next { display: flex; justify-content: space-between; align-items: center; gap: 14px; margin-top: 18px; padding-top: 16px; border-top: 1px dashed var(--line); }
.bind-list { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.bind-item { display: flex; align-items: center; gap: 6px; font-size: 13px; padding: 5px 10px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.bind-item input { accent-color: var(--orange); }

/* ---------- 参数帮助（? 圆点 + 弹层） ---------- */
.help-dot { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px;
  border-radius: 50%; border: 1.2px solid var(--ink-3); background: transparent; color: var(--ink-3);
  font-size: 11px; font-weight: 700; line-height: 1; cursor: pointer; vertical-align: middle;
  margin-left: 6px; transition: all .15s; flex: none; padding: 0; }
.help-dot:hover { border-color: var(--orange); color: var(--orange); background: var(--orange-soft); }
.help-overlay { position: fixed; inset: 0; background: rgba(58, 34, 8, .35); z-index: 200;
  display: flex; align-items: center; justify-content: center; padding: 24px;
  opacity: 0; transition: opacity .16s; }
.help-overlay.show { opacity: 1; }
.help-modal { background: #fff; border-radius: 14px; max-width: 520px; width: 100%;
  box-shadow: 0 18px 50px rgba(90, 50, 10, .25); overflow: hidden;
  transform: translateY(8px); transition: transform .16s; }
.help-overlay.show .help-modal { transform: translateY(0); }
.help-modal-head { display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px 12px; border-bottom: 1px dashed var(--line); }
.help-modal-head span { font-weight: 700; font-size: 15px; color: var(--orange-deep); }
.help-close { border: none; background: transparent; font-size: 22px; line-height: 1;
  color: var(--ink-3); cursor: pointer; padding: 2px 8px; border-radius: 8px; }
.help-close:hover { background: var(--bg-soft); color: var(--ink); }
.help-modal-body { padding: 16px 22px; font-size: var(--font-sm); line-height: 1.8; color: var(--ink-2);
  max-height: 72vh; overflow-y: auto; }
.help-modal-body p { margin: 0 0 10px; }
.help-modal-body p:last-child { margin-bottom: 0; }
.help-img-wrap { margin-top: 18px; }
.help-img-wrap img { width: 100%; border-radius: 10px; border: 1px solid var(--line);
  box-shadow: 0 6px 18px rgba(90, 50, 10, .10); }
.help-img-cap { margin: 8px 0 0; font-size: var(--font-xs); color: var(--ink-3); text-align: center; }
.help-modal.wide { max-width: 820px; }
.help-modal-foot { padding: 10px 20px 16px; text-align: right; }
.report-preview-launch { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 18px; padding: 13px 15px; border: 1px dashed #e5b98d; border-radius: 12px; background: var(--surface-tint); }
.report-preview-launch div { display: grid; gap: 2px; }
.report-preview-launch b { color: var(--orange-deep); font-size: var(--font-sm); }
.report-preview-launch span { color: var(--ink-3); font-size: var(--font-xs); }
.report-shell-pickers { display:grid; gap:12px; margin-top:12px; }
.report-shell-picker { padding:14px; border:1px solid var(--line); border-radius:12px; background:#fffdfb; }
.report-shell-picker-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.report-shell-picker-head b { color:var(--orange-deep); font-size:var(--font-sm); }
.report-shell-picker-head span { color:var(--ink-3); font-size:var(--font-xs); }
.report-preview-modal { max-width: 1220px; }
.report-preview-body { padding: 16px; background: #f4eee7; max-height: 80vh; }
.demo-report-switcher { display: flex; justify-content: center; gap: 9px; margin: 0 auto 12px; }
.demo-report-switcher .choice { min-width: 150px; background: #fff; }
.demo-report-document[hidden] { display: none !important; }
.report-template-document[hidden] { display: none !important; }
.report-template-meta { display:flex; align-items:center; justify-content:space-between; gap:12px; max-width:1160px; margin:0 auto 8px; color:var(--ink-3); font-size:var(--font-xs); }
.report-template-meta b { color:var(--orange-deep); font-size:var(--font-sm); }
.report-template-frame-wrap { max-width:1160px; margin:0 auto; overflow:hidden; border:1px solid #d7c7b7; border-radius:12px; background:#fff; box-shadow:0 12px 30px rgba(69,35,9,.13); }
.report-template-frame { display:block; width:100%; height:70vh; min-height:620px; border:0; background:#fff; }
.report-template-note { max-width:1160px; margin:0 auto 10px !important; padding:9px 12px; border:1px solid #e5c394; border-radius:9px; color:#805718; background:#fff7e8; text-align:center; }
.demo-report { max-width: 850px; margin: 0 auto; background: #fff; border: 1px solid #e8d8c8; border-radius: 15px; box-shadow: 0 15px 38px rgba(74,39,12,.12); overflow: hidden; }
.demo-report-cover { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; padding: 28px 30px; color: #fff; background: linear-gradient(135deg,#6b3107,#9a4a08 56%,#d46b20); }
.demo-report-cover small { opacity: .68; letter-spacing: .12em; text-transform: uppercase; }
.demo-report-cover h3 { margin: 5px 0 2px; font-size: 25px; color: #fff; }
.demo-report-cover p { margin: 0; font-size: var(--font-xs); color: #f7d9b8; }
.demo-report-cover > span { padding: 5px 11px; border: 1px solid rgba(255,255,255,.36); border-radius: 999px; font-size: var(--font-xs); white-space: nowrap; }
.demo-preview-note { padding: 9px 18px; text-align: center; background: #fff5e8; color: #8a5a35; font-size: var(--font-xs); border-bottom: 1px solid var(--line); }
.demo-toc { display: grid; grid-template-columns: repeat(auto-fit,minmax(150px,1fr)); gap: 7px; padding: 18px 24px; border-bottom: 1px solid var(--line); }
.demo-toc span { display: flex; align-items: center; gap: 7px; color: var(--ink-3); font-size: var(--font-xs); }
.demo-toc b { color: var(--orange); font-size: 10px; }
.demo-report-section { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 12px; padding: 22px 26px; border-bottom: 1px solid var(--line); }
.demo-report-section:last-child { border-bottom: 0; }
.demo-section-number { color: #d8b28e; font-size: 12px; font-weight: 700; letter-spacing: .08em; padding-top: 2px; }
.demo-section-content h4 { margin: 0 0 8px; color: var(--orange-deep); font-size: 15px; }
.demo-copy,.demo-method { margin: 0 0 12px; color: var(--ink-3); font-size: var(--font-xs); }
.demo-info-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 9px; }
.demo-info-grid span { display: grid; gap: 2px; padding: 10px; text-align: center; border-radius: 9px; background: #fff7ed; color: var(--ink-3); font-size: 11px; }
.demo-info-grid b { color: var(--orange-deep); font-size: 14px; }
.demo-table { width: 100%; border-collapse: collapse; font-size: 11px; }
.demo-table th,.demo-table td { padding: 7px 9px; border-bottom: 1px solid #eee2d6; text-align: left; }
.demo-table th { color: var(--orange-deep); background: #fff8f0; }
.demo-bars { display: grid; gap: 7px; margin: 8px 0 13px; }
.demo-bars div { display: grid; grid-template-columns: 66px minmax(0,1fr); align-items: center; gap: 8px; font-size: 10px; color: var(--ink-3); }
.demo-bars div::after { content:""; grid-column: 2; grid-row: 1; width: 100%; height: 7px; border-radius: 99px; background: #f1e4d6; }
.demo-bars i { z-index: 1; grid-column: 2; grid-row: 1; height: 7px; border-radius: 99px; background: linear-gradient(90deg,var(--orange),#f0a363); }
.demo-volcano,.demo-pca { position: relative; height: 126px; margin: 8px 0 13px; border-left: 1px solid #d9c6b3; border-bottom: 1px solid #d9c6b3; background: radial-gradient(circle at center,rgba(232,118,43,.05),transparent 62%); }
.demo-volcano i { position: absolute; left: var(--x); top: var(--y); width: 5px; height: 5px; border-radius: 50%; background: var(--tone); }
.demo-pca span { position: absolute; width: 11px; height: 11px; border-radius: 50%; box-shadow: 0 0 0 3px rgba(255,255,255,.8); }
.demo-pca .group-a { background: var(--orange); }.demo-pca .group-b { background: #b67b43; }
.demo-network { display: flex; align-items: center; justify-content: center; gap: 11px; min-height: 110px; margin-bottom: 12px; background: radial-gradient(circle,#fff6eb,transparent 68%); }
.demo-network b,.demo-network span { display: grid; place-items: center; min-width: 58px; height: 34px; padding: 0 8px; border-radius: 999px; background: #fff; border: 1px solid #e6c6a7; color: var(--orange-deep); font-size: 10px; }
.demo-network b { background: var(--orange); border-color: var(--orange); color: #fff; }
.demo-network i { width: 24px; height: 1px; background: #d9ad84; }
.demo-files { display: grid; gap: 6px; }.demo-files span { padding: 8px 10px; border: 1px solid #eadbcf; border-radius: 8px; color: var(--ink-3); font-size: 11px; background: #fffaf5; }
.demo-browser { border: 1px solid #d8c7b7; border-radius: 13px; overflow: hidden; background: #ece4dc; box-shadow: 0 12px 32px rgba(69,35,9,.13); }
.demo-browser-bar { display: flex; align-items: center; gap: 6px; min-height: 34px; padding: 7px 12px; background: #eee7df; border-bottom: 1px solid #d8c7b7; }
.demo-browser-bar i { width: 9px; height: 9px; border-radius: 50%; background: #d9b28e; }.demo-browser-bar i:nth-child(2){background:#e7cba8}.demo-browser-bar i:nth-child(3){background:#cda374}
.demo-browser-bar span { margin-left: 8px; color: #735c48; font-size: 10px; }
.demo-browser .demo-report { max-width: none; margin: 0; border: 0; border-radius: 0; box-shadow: none; background: #fdf8f2; }
.vendor-report-shell { display: grid; grid-template-columns: 170px minmax(0,1fr); align-items: start; background: #fff !important; }
.demo-report-toc { position: sticky; top: 0; display: flex; flex-direction: column; gap: 2px; min-height: 560px; padding: 18px 11px; border-right: 1px solid #dce5eb; background: #f7fafb; }
.demo-report-toc > b { padding: 5px 10px 10px; color: #276d91; font-size: 12px; }
.demo-report-toc span { display: flex; align-items: center; gap: 7px; padding: 6px 9px; border-radius: 5px; color: #526b79; font-size: 10px; line-height: 1.35; }
.demo-report-toc span:first-of-type,.demo-report-toc span:hover { background: #e8f4f7; color: #177d9f; }
.demo-report-toc em { display: grid; place-items: center; flex: none; width: 17px; height: 17px; border-radius: 50%; background: #dceff3; color: #248aa5; font-size: 9px; font-style: normal; }
.demo-report-main { min-width: 0; background: #fff; padding-bottom: 12px; }
.demo-browser .demo-report-cover { min-height: 92px; padding: 22px 5%; align-items: center; background: linear-gradient(90deg,#2274cc 0%,#26c5d3 46%,#61bf61 100%); }
.demo-browser .demo-report-cover h3 { font-size: 21px; text-align: center; }.demo-browser .demo-report-cover p { color: rgba(255,255,255,.84); text-align:center; }
.demo-report-notice { margin: 13px 20px 0; padding: 9px 12px; border: 1px solid #ecd1a8; border-radius: 9px; color: #805718; background: #fdf3e3; font-size: 11px; }
.demo-vendor-limit { margin: 8px 20px 0; color: #657986; font-size: 10px; }
.demo-browser .demo-report-section { display: block; margin: 0 22px; padding: 19px 4px; border: 0; border-bottom: 1px solid #e6edf1; border-radius: 0; background: #fff; box-shadow: none; }
.demo-browser .demo-section-content h4 { margin: 0 0 11px; padding: 0; border: 0; color: #173f82; font-size: 16px; }
.demo-browser .demo-table th { color: #184d83; background: #eaf3f8; border-color: #d9e5ec; }.demo-browser .demo-table td { border-color: #d9e5ec; }
.demo-browser .demo-rna-tabs span { color: #19758e; background: #e3f3f5; }
.demo-browser .demo-bars i { background: linear-gradient(90deg,#2a83bd,#31bfc5,#65b964); }
.demo-rna-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.demo-rna-tabs span { padding: 2px 9px; border-radius: 999px; color: var(--orange-deep); background: var(--orange-soft); font-size: 10px; font-weight: 650; }
.delivery-preview-modal { max-width: 980px; }
.delivery-preview-body { padding: 18px; background: #f2ede7; max-height: 76vh; }
.delivery-report-switcher { display:flex; justify-content:center; gap:9px; margin:0 auto 12px; }
.delivery-report-switcher .choice { min-width:150px; background:#fff; }
.delivery-shell-document[hidden] { display:none !important; }
.delivery-window { overflow: hidden; border: 1px solid #d6c8ba; border-radius: 13px; background: #fff; box-shadow: 0 13px 34px rgba(62,35,12,.12); }
.delivery-window-bar { display: flex; align-items: center; gap: 8px; min-height: 47px; padding: 10px 16px; border-bottom: 1px solid #ddd2c6; background: linear-gradient(#faf8f5,#eee9e3); font-size: 12px; }
.delivery-window-bar span { color: var(--ink-3); }.delivery-window-bar b { color: var(--ink-2); }.delivery-window-bar em { margin-left: auto; color: var(--orange-deep); font-style: normal; font-size: 11px; }
.delivery-window-content { display: grid; grid-template-columns: 165px minmax(0,1fr); min-height: 430px; }
.delivery-window-content aside { display: flex; flex-direction: column; gap: 2px; padding: 15px 10px; border-right: 1px solid #e2d8ce; background: #f7f3ef; }
.delivery-window-content aside b { padding: 7px 9px; color: var(--orange-deep); font-size: 12px; }.delivery-window-content aside span { padding: 6px 12px; color: var(--ink-3); font-size: 11px; border-radius: 7px; }.delivery-window-content aside span:hover { background: #eee5dc; }
.delivery-window-content main { padding: 12px 16px 18px; min-width: 0; }
.delivery-folder { border-bottom: 1px solid #eee5dc; padding: 4px 0 9px; }.delivery-folder:last-child{border-bottom:0}
.delivery-folder summary { display: flex; align-items: center; gap: 8px; min-height: 34px; cursor: pointer; list-style: none; color: var(--ink-2); font-size: 12px; }.delivery-folder summary::-webkit-details-marker{display:none}
.folder-icon { position: relative; width: 20px; height: 14px; border-radius: 3px; background: #e8a350; }.folder-icon::before{content:"";position:absolute;left:2px;top:-4px;width:9px;height:5px;border-radius:3px 3px 0 0;background:#e8a350}
.delivery-folder summary em { margin-left: auto; color: var(--ink-3); font-style: normal; font-size: 10px; }.delivery-folder > p { margin: 0 0 8px 28px; color: var(--ink-3); font-size: 10px; }
.delivery-folder > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px 12px; padding-left: 27px; }
.delivery-file { display: grid; grid-template-columns: 24px minmax(0,1fr); grid-template-rows: auto auto; column-gap: 7px; align-items: center; min-width: 0; padding: 6px 7px; border-radius: 7px; }
.delivery-file:hover { background: #fff6ec; }.delivery-file > i { grid-row: 1 / 3; width: 21px; height: 27px; border: 1px solid #ddc5ac; border-radius: 3px; background: #fff; position: relative; }.delivery-file > i::after{content:"";position:absolute;left:4px;right:4px;top:7px;height:2px;background:#e9b27c;box-shadow:0 5px #e7d4c1,0 10px #e7d4c1}
.delivery-file b { overflow: hidden; color: var(--ink-2); font-size: 10px; font-weight: 550; white-space: nowrap; text-overflow: ellipsis; }.delivery-file small { color: var(--ink-3); font-size: 9px; }
.delivery-file .file-html{border-color:#e29b55;background:#fff4e8}.delivery-file .file-png{border-color:#c99b6e;background:#fff8ef}.delivery-file .file-pdf{border-color:#c8896e;background:#fff0ea}.delivery-file .file-csv{border-color:#bca17f;background:#fbf8f2}.delivery-file .file-pptx{border-color:#d19b62;background:#fff4e6}
.delivery-preview-note { margin: 10px 2px 0; text-align: center; color: var(--ink-3); font-size: var(--font-xs); }

/* ---------- 向导流程引导卡 ---------- */
.guide-card { background: linear-gradient(135deg, var(--surface-tint) 0%, var(--surface-muted) 100%);
  border: 1px solid #efd2b2; border-radius: var(--radius);
  padding: 14px 18px; margin-bottom: 18px; }
.guide-card summary { font-weight: 650; font-size: var(--font-sm); color: var(--orange-deep);
  cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; }
.guide-card summary::before { content: "i"; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--orange-soft); border: 1px solid #efc89d; color: var(--orange-deep); font-size: 12px; font-weight: 750; font-style: normal; }
.guide-card summary::-webkit-details-marker { display: none; }
.guide-toggle-hint { margin-left: auto; color: var(--ink-3); font-size: 12px; font-weight: 500; white-space: nowrap; }
.guide-card[open] .guide-toggle-hint { visibility: hidden; }
.guide-body { margin-top: 10px; font-size: var(--font-sm); color: var(--ink-2); line-height: 1.7; }
.guide-body table { width: 100%; border-collapse: collapse; }
.guide-body th { text-align: left; font-size: 12px; color: var(--ink-3); font-weight: 700;
  padding: 6px 8px; border-bottom: 1px solid var(--line); }
.guide-body td { padding: 7px 8px; border-bottom: 1px dashed var(--line); vertical-align: top; }
.guide-body tr:last-child td { border-bottom: none; }
.guide-step-tag { display: inline-block; background: var(--orange-soft); color: var(--orange-deep);
  border-radius: 6px; padding: 1px 8px; font-size: var(--font-xs); font-weight: 650; white-space: nowrap; }

/* ---------- 初始报告结果摘要 ---------- */
.fact-grid { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.fact { flex: 1; min-width: 90px; background: var(--surface-tint); border: 1px solid var(--line);
  border-radius: 10px; padding: 10px; text-align: center; display: flex; flex-direction: column; justify-content: center; min-height: 86px; }
.fact-title { display: block; margin-bottom: 5px; color: var(--orange-deep); font-size: var(--font-xs); font-weight: 650; }
.fact-value { display: block; color: var(--ink-2); font-size: var(--font-sm); font-weight: 600; line-height: 1.6; overflow-wrap: anywhere; }
.project-overview-grid { align-items: start; }
.project-sample-card { display: flex; flex-direction: column; }
.project-sample-empty { margin-top: 8px; padding: 18px 14px; border: 1px dashed var(--line); border-radius: var(--radius-sm); background: var(--surface-tint); color: var(--ink-3); font-size: var(--font-sm); }
.project-sample-scroll.expanded { max-height: none; border-bottom: 1px solid var(--line); }
.project-sample-toggle { align-self: center; margin-top: 14px; }
.sample-group-summary { display: flex; flex-wrap: wrap; justify-content: center; gap: 7px; margin: 2px 0 12px; }
.sample-group-chip { display: inline-flex; align-items: center; justify-content: center; min-height: 27px; padding: 3px 10px; border-radius: 999px; border: 1px solid transparent; font-size: var(--font-xs); font-weight: 650; white-space: nowrap; }
.group-tone-0 { color: #8a4510; background: #fff0df; border-color: #efc99e; }
.group-tone-1 { color: #9a4a08; background: #fbe6d2; border-color: #e7b37d; }
.group-tone-2 { color: #713814; background: #f4dfcc; border-color: #d8aa7e; }
.group-tone-3 { color: #a85b16; background: #fff4e9; border-color: #efc59b; }
.group-tone-4 { color: #8a5a05; background: #fff1cf; border-color: #e5c777; }
.group-tone-5 { color: #6f3b1c; background: #f2e3d6; border-color: #d3ad8d; }

@media (min-width: 641px) and (max-width: 900px) {
  .desktop-project-table, .projects-card { display: none; }
  .mobile-project-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; }
  .proj-head-tools { width: 100%; margin-left: 0; justify-content: flex-start; }
  .project-search { width: min(420px,55vw); }
}

@media (max-width: 640px) {
  .users-page { padding-inline: 12px; }
  .user-create-grid, .access-controls { grid-template-columns: 1fr; }
  .user-create-panel summary, .admin-directory summary { align-items: flex-start; flex-wrap: wrap; }
  .user-create-panel summary .muted, .admin-directory summary .muted { width: 100%; margin-left: 20px; }
  .access-manager-head, .user-directory-head { display: grid; grid-template-columns: 1fr; }
  .user-directory-head input { width: 100%; font-size: 16px; min-height: 46px; }
  .user-compact-row, .client-user-row { display: flex; align-items: flex-start; flex-wrap: wrap; }
  .client-user-main { width: 100%; flex-basis: 100%; }
  .user-row-actions { width: 100%; }
  .access-actions { display: grid; grid-template-columns: 1fr; }
  .access-actions .btn { width: 100%; }
  .access-project-item { align-items: flex-start; }
  .access-project-main { grid-template-columns: 1fr; gap: 2px; }
  .ops-summary-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
  .ops-summary-card { min-height: 96px; padding: 13px 14px; }
  .ops-summary-card b { font-size: 24px; }
  .ops-attention-grid { grid-template-columns: 1fr; gap: 11px; }
  .ops-section, .ops-attention-card { padding: 16px 14px; }
  .ops-section-head { align-items: flex-start; }
  .ops-monitor-head { flex-direction: column; }
  .ops-section-tools { width: 100%; justify-content: space-between; }
  .ops-filter-pills { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; }
  .ops-filter-pills button { flex: none; }
  .ops-approval-item { grid-template-columns: 1fr; }
  .ops-approval-item > div:last-child { grid-template-columns: 1fr auto; }
  .ops-lock-list > div { align-items: flex-start; flex-direction: column; }
  .ops-create-row { grid-template-columns: 1fr; }
  .ops-desktop-table { display: none; }
  .ops-mobile-list { display: grid; gap: 9px; }
  .ops-mobile-item .ops-row-actions { margin-top: 10px; }
  .ops-mobile-item .ops-row-actions .btn { flex: 1; }
  .ops-discovery-item { align-items:stretch; flex-direction:column; }
  .ops-discovery-item .ops-row-actions { justify-content:flex-start; }
  .ops-audit-panel > summary { padding: 14px; }
  .ops-audit-panel .table-scroll { padding: 0 12px 12px; }
  .ops-collapsible-summary { grid-template-columns: minmax(0,1fr) auto 18px; align-items: start; gap: 9px; padding: 14px; }
  .ops-collapsible-body { padding: 12px; }
  .ops-monitor-toolbar { align-items: stretch; flex-direction: column; }
  .ops-monitor-toolbar > .btn { align-self: flex-end; }
  .ops-queue-toolbar { align-items: stretch; flex-direction: column; }
  .ops-queue-toolbar .project-search-wrap { width: 100%; max-width: none; }
  .ops-queue-project-group > summary { grid-template-columns: minmax(0,1fr) 18px; gap: 10px; }
  .ops-queue-group-summary { grid-column: 1; grid-row: 2; justify-items: start; }
  .ops-queue-project-group > summary::after { grid-column: 2; grid-row: 1 / 3; }
  .ops-queue-task-head { display: none; }
  .ops-queue-task-row { grid-template-columns: 1fr; gap: 7px; }
  .ops-queue-task-row .ops-queue-state { text-align: left !important; }
  .ops-queue-task-row .ops-queue-node::before { content: "执行节点："; color: var(--ink-3); }
  .ops-queue-task-row .ops-queue-time::before { content: "创建时间："; color: var(--ink-3); }
  .monitor-location-card { align-items: flex-start; }
  .monitor-location-grid { grid-template-columns: 1fr; grid-template-rows: none; }
  .monitor-project-grid { grid-template-columns: 1fr; }
  .monitor-project-tile { padding: 12px 13px; }
  .monitor-project-toolbar { align-items: stretch; flex-direction: column; }
  .monitor-project-toolbar .project-search-wrap { max-width: none; width: 100%; }
  .monitor-project-detail-head { flex-direction: column; }
  .monitor-project-detail-meta { grid-template-columns: 1fr 1fr; }
  .monitor-assay-runtime > summary { grid-template-columns: minmax(0,1fr) 18px; gap: 8px; }
  .monitor-assay-runtime > summary > span:last-of-type { grid-column: 1; grid-row: 2; text-align: left; }
  .monitor-assay-runtime > summary::after { grid-column: 2; grid-row: 1 / 3; }
  .monitor-step-list { grid-template-columns: 1fr; }
  .monitor-stage-chips { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; }
  .monitor-stage-chip:last-child:nth-child(odd) { grid-column: 1 / -1; }

  .monitor-branch-row { grid-template-columns: minmax(0,1fr); }
  .monitor-branch-row > .tag { grid-column: 1; grid-row: auto; justify-self: start; }
  .monitor-branch-row > small { grid-column: 1; grid-row: auto; }
  
  .customer-suggestion { flex-wrap: wrap; white-space: normal; row-gap: 2px; font-size: 13px; }
  .customer-choice-code { font-size: var(--font-xs); }
  body { line-height: 1.55; }
  button, input, select, textarea { font-size: 16px; }
  .topbar {
    padding: max(8px, env(safe-area-inset-top)) 12px 9px;
    flex-wrap: wrap; gap: 7px 9px;
  }
  .topbar .brand { font-size: 13px; gap: 7px; }
  .topbar .brand svg { width: 24px; height: 24px; }
  .brand-title { max-width:150px; overflow:hidden; text-overflow:ellipsis; }
  .topbar .crumb { display: none; }
  .topbar .spacer { display: none; }
  .topbar .environment-badge { margin-left: auto; padding: 3px 7px; font-size: 10.5px; }
  .top-actions { order: 3; width: 100%; gap: 7px; border-top: 1px solid var(--line); padding-top: 7px; }
  .top-actions .who { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .top-actions .btn { min-height: 38px; padding: 7px 11px !important; font-size: var(--font-xs); }
  .top-actions .tag { padding: 2px 8px; font-size: 11px; }
  .analysis-entry-head { flex-direction: column; }
  .analysis-entry-actions { display: grid; grid-template-columns: 1fr; }
  .analysis-entry-actions .btn { width: 100%; }
  .page { padding: 16px 12px calc(40px + env(safe-area-inset-bottom)); }
  .card { padding: 16px 14px; }
  .grid2 { gap: 14px; }
  .entry-wrap { min-height: auto; }
  .entry-hero { padding: 30px 20px 24px; min-height: auto; }
  .entry-panel { padding: 28px 20px calc(34px + env(safe-area-inset-bottom)); }
  .entry-contact { align-items: flex-start; }
  .entry-contact { margin-top: 24px; padding-top: 18px; }
  .entry-contact img { width: 72px; height: 72px; }
  .entry-hero h1 { font-size: 25px; }
  .entry-hero-subtitle { margin-top: 8px; font-size: 12px; }
  .entry-hero p.lead { font-size: 14px; line-height: 1.75; margin: 18px 0 0; }
  .entry-panel h2 { font-size: 24px; }
  .hero-workflow { --flow-link: 14px; --flow-gap: 4px; --flow-icon: 34px; --branch-top: 24px; --primer-width: 168px; --primer-height: 60px; margin-top: 22px; }
  .hero-workflow .node { gap: 5px; font-size: 10px; }
  .hero-flow .link { height: 1px; margin-top: calc(var(--flow-icon) / 2 - .5px); }
  .entry-panel .hint { margin-bottom: 20px; }
  .field { margin-bottom: 15px; }
  .field input[type=text], .field input[type=password], .field input[type=number], .field select, .field textarea { min-height: 46px; font-size: 16px; }
  .btn { min-height: 42px; padding: 9px 14px; justify-content: center; }
  .proj-head { gap: 12px; margin-bottom: 16px; }
  .proj-head > div:first-child { min-width: 0 !important; width: 100%; }
  .page-title, .proj-head .title { font-size: 20px; line-height: 1.4; }
  .proj-head-tools { width: 100%; align-items: stretch; margin-left: 0; }
  .project-search-wrap { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
  .project-search { width: 100%; min-width: 0; height: 46px; font-size: 16px; }
  .project-search-count { text-align: right; }
  .proj-head-actions { width: 100%; display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .proj-head-actions .btn:only-child { grid-column: 1 / -1; }
  .desktop-project-table { display: none; }
  .projects-card { display: none; }
  .mobile-project-list { display: grid; gap: 11px; }
  .combined-section-head, .combined-next { align-items: stretch; flex-direction: column; }
  .combined-check-grid, .combined-mode-grid { grid-template-columns: 1fr; }
  .combined-batch-note { grid-template-columns: 1fr; gap: 3px; }
  .combined-actions .btn, .combined-next .btn { width: 100%; }
  .combined-search-wrap { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; }
  .combined-search-wrap .project-search { width: 100%; }
  .combined-project-list { overflow: visible; }
  .combined-project-header { display: none; }
  .combined-project-item.combined-project-grid { grid-template-columns: 28px minmax(0,1fr); gap: 7px 10px; min-width: 0; align-items: start; }
  .combined-project-item > input { grid-column: 1; grid-row: 1 / span 5; margin-top: 3px; }
  .combined-project-item .combined-cell { grid-column: 2; display: grid; grid-template-columns: 64px minmax(0,1fr); gap: 7px; text-align: left; justify-items: stretch; }
  .combined-project-item .combined-cell::before { content: attr(data-label); color: var(--ink-3); font-size: var(--font-xs); font-weight: 650; }
  .combined-project-item .combined-project-main { display: grid; }
  .combined-project-item .combined-project-main::before { grid-row: 1 / span 4; }
  .combined-project-item .combined-customer::before { grid-row: 1 / span 2; }
  .fact-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fact { min-width: 0; }
  .target-species-grid { grid-template-columns: 1fr; }
  .target-species-card { grid-column: 1 !important; }
  .pipeline-line { margin-inline: -14px; padding-inline: 12px; }
  .pl-node { min-width: 112px; padding-inline: 6px; }
  .kv { grid-template-columns: 105px minmax(0, 1fr); gap: 7px 10px; }
  .steps-bar { gap: 3px; flex-wrap: nowrap; margin: 0 -2px 16px; }
  .steps-bar .step { min-width: 0; padding: 7px 2px; justify-content: center; gap: 4px; border-radius: 8px; font-size: 10px; text-align: center; }
  .steps-bar .step .n { width: 21px; height: 21px; }
  .steps-bar .step-label { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
  .guide-card { padding: 12px 13px; }
  .guide-card summary { align-items: flex-start; font-size: 13px; }
  .guide-body table, .guide-body tbody, .guide-body tr, .guide-body td { display: block; width: 100%; }
  .guide-body tr:first-child { display: none; }
  .guide-body tr { padding: 8px 0; border-bottom: 1px dashed var(--line); }
  .guide-body tr:last-of-type { border-bottom: none; }
  .guide-body td { padding: 3px 0; border: 0; }
  .guide-body td:nth-child(2)::before { content: "可调整："; color: var(--ink-3); font-weight: 600; }
  .guide-body td:nth-child(3)::before { content: "影响："; color: var(--ink-3); font-weight: 600; }
  .wizard-nav { position: static; margin: 18px -14px -16px !important; padding: 11px 14px calc(11px + env(safe-area-inset-bottom)); background: var(--surface-tint); border-top: 1px solid var(--line); }
  .page > .wizard-nav { margin-inline: -12px !important; padding-inline: 12px; }
  .wizard-nav > span:empty { display: none; }
  .wizard-nav .btn { flex: 1; }
  .module-card { padding: 14px; }
  .module-card .m-head { align-items: flex-start; }
  .diff-module-card { padding: 15px 14px; }
  .diff-rna-scope { align-items: flex-start; }
  .diff-section-head, .diff-param-footer { align-items: stretch; flex-direction: column; }
  .diff-threshold-grid { grid-template-columns: 1fr; }
  .diff-param-footer .btn { width: auto; align-self: flex-start; }
  .choice { min-height: 40px; padding: 8px 12px; }
  .choice-row { gap: 7px; }
  .segmented-2, .segmented-3, .segmented-4 { grid-template-columns: repeat(2, minmax(0,1fr)); max-width: none; }
  .diff-preset-grid { grid-template-columns: repeat(2, minmax(0,1fr)); max-width: none; }
  .segmented-3 .choice:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .segmented-4 .choice { min-height: 52px; }
  .segmented-grid .choice { min-width: 0; }
  .target-mode-grid { grid-template-columns: 1fr; gap: 8px; }
  .target-family-grid { grid-template-columns: 1fr; gap: 8px; }
  .target-mode-grid .choice:last-child:nth-child(odd) { grid-column: auto; }
  .target-mode-options { padding: 12px; }
  .target-balance-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .target-count-options .choice { flex: 1; min-width: 0; }
  .target-load-summary { align-items: flex-start; flex-direction: column; }
  .group-scheme-head { grid-template-columns: minmax(0,1fr) auto; }
  .group-scheme-head .scheme-number { grid-column: 1 / -1; }
  .group-scheme-summary { align-items: flex-start; flex-wrap: wrap; padding: 13px 14px; }
  .scheme-summary-badges { width: calc(100% - 28px); margin-left: 0; justify-content: flex-start; }
  .group-scheme-head .btn { justify-self: end; }
  .group-scheme-group-row { grid-template-columns: 52px minmax(0,1fr) auto; grid-template-areas: "gid gname gname" ". gcount gaction"; }
  .group-scheme-group-row > :nth-child(1) { grid-area: gid; }
  .group-scheme-group-row > :nth-child(2) { grid-area: gname; }
  .group-scheme-group-row > :nth-child(3) { grid-area: gcount; }
  .group-scheme-group-row > :nth-child(4) { grid-area: gaction; }
  .scheme-contrast-row { grid-template-columns: 1fr; }
  .scheme-contrast-row > .muted { text-align: center; }
  .group-scheme-card .scheme-assignment-table { min-width: 0 !important; width: 100%; display: block; border: 0; }
  .scheme-assignment-table thead { display: none; }
  .scheme-assignment-table tbody { display: grid; gap: 8px; width: 100%; }
  .scheme-assignment-table tr { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 5px 10px; width: 100%; padding: 10px 11px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-tint); }
  .scheme-assignment-table td { display: grid; gap: 2px; padding: 0; border: 0; min-width: 0; }
  .scheme-assignment-table td::before { color: var(--ink-3); font-size: 11px; font-family: inherit; }
  .scheme-assignment-table td:nth-child(1)::before { content: "样本 ID"; }
  .scheme-assignment-table td:nth-child(2)::before { content: "显示名"; }
  .scheme-assignment-table td:nth-child(3) { grid-column: 1 / -1; margin-top: 4px; }
  .scheme-assignment-table td:nth-child(3)::before { content: "本方案分组"; }
  .scheme-assignment-table select { min-width: 0; width: 100%; }
  .num-inline { align-items: stretch; }
  .num-inline > input, .num-inline > select, .num-inline > button { width: 100% !important; max-width: none !important; }
  .num-inline input[type=number] { width: 100%; }
  .config-row { align-items: stretch; }
  .config-row > input, .config-row > select { width: 100% !important; min-height: 42px; }
  .config-row > .btn { margin-left: 0 !important; }
  .sample-table:not(.wizard-sample-table):not(.scheme-assignment-table):not(.project-sample-table), .cmp-table, .ops-table { min-width: 680px; }
  .project-sample-table { table-layout: auto; font-size: var(--font-md); }
  .project-sample-table th, .project-sample-table td { padding: 10px 12px; }
  .project-sample-table th { font-size: var(--font-sm); white-space: nowrap; }
  .project-sample-table .sample-group-chip { padding-inline: 8px; white-space: nowrap; }
  .wizard-sample-table { min-width: 0; }
  .wizard-sample-scroll { max-height: none; overflow: visible; border: 0; border-radius: 0; }
  .wizard-sample-table colgroup { display: none; }
  .wizard-sample-table, .wizard-sample-table tbody, .wizard-sample-table tr, .wizard-sample-table td { display: block; width: 100%; }
  .wizard-sample-table thead { display: none; }
  .wizard-sample-table tr { padding: 12px 0; border-bottom: 1px solid var(--line); }
  .wizard-sample-table tr:last-child { border-bottom: none; }
  .wizard-sample-table td { display: grid; grid-template-columns: 82px minmax(0, 1fr); align-items: center; gap: 8px; padding: 5px 0; border: 0; }
  .wizard-sample-table td:first-child { width: 100%; min-width: 0; white-space: normal; }
  .wizard-hints { display: grid; gap: 6px; }
  .wizard-hints span { border-radius: 9px; }
  .wizard-sample-table td::before { content: attr(data-label); color: var(--ink-3); font-size: 12px; }
  .wizard-sample-table input[type=text], .wizard-sample-table select { width: 100%; min-height: 40px; font-size: 16px; }
  .wizard-sample-table input[type=checkbox] { width: 22px; height: 22px; }
  .help-dot { width: 28px; height: 28px; font-size: 12px; margin-left: 3px; }
  .ops-create-row > input { width: 100%; max-width: none !important; min-height: 42px; padding: 8px 10px; border: 1.5px solid var(--line); border-radius: var(--radius-sm); }
  .ops-create-row > .btn { width: 100%; }
  .job-row { align-items: flex-start; gap: 9px; }
  .job-row > [style*="margin-left:auto"] { margin-left: 0 !important; }
  .analysis-record {
    grid-template-columns: 34px minmax(0, 1fr);
    grid-template-areas:
      "index main"
      "index status"
      "index time"
      "index action";
    align-items: start; gap: 9px 11px; padding: 14px 12px;
  }
  .analysis-record-index { grid-area: index; width: 30px; height: 30px; }
  .analysis-record:not(:last-child)::after { left: 27px; }
  .analysis-record-main { grid-area: main; }
  .analysis-record-status { grid-area: status; justify-content: flex-start; }
  .analysis-record-time { grid-area: time; }
  .analysis-record-time span, .analysis-record-time b { display: inline; }
  .analysis-record-time { display: block; }
  .analysis-record-time span::after { content: "："; }
  .analysis-record-action { grid-area: action; justify-content: flex-start; width: 100%; }
  .analysis-record-action .btn { width: 100%; min-width: 0; }
  .status-hero > div[style*="min-width:240px"] { min-width: 0 !important; width: 100%; }
  .status-pill { padding: 5px 12px; }
  .report-frame { height: 62vh; }
  .dl-item .sz { width: 100%; margin-left: 0; }
  .share-link-box { align-items: stretch; flex-direction: column; }
  .confirm-banner { padding: 13px 14px; }
  .help-overlay { align-items: flex-end; padding: 0; }
  .help-modal, .help-modal.wide { max-width: none; border-radius: 16px 16px 0 0; max-height: 88vh; }
  .help-modal-body { max-height: 68vh; padding: 14px 17px; }
  .report-preview-launch { align-items: flex-start; flex-direction: column; }
  .report-preview-launch .btn { width: 100%; justify-content: center; }
  .report-preview-body { padding: 10px; }
  .demo-report-switcher { justify-content:flex-start; overflow-x:auto; }
  .demo-report-switcher .choice { flex:0 0 auto; min-width:142px; }
  .report-template-meta { align-items:flex-start; flex-direction:column; gap:2px; }
  .report-template-frame { height:64vh; min-height:520px; }
  .demo-report-cover { align-items: flex-start; flex-direction: column; padding: 21px 20px; }
  .demo-report-section { grid-template-columns: 30px minmax(0,1fr); padding: 18px 15px; gap: 7px; }
  .demo-info-grid { grid-template-columns: 1fr; }
  .demo-browser .demo-report-section { margin: 10px; padding: 15px; }
  .vendor-report-shell { grid-template-columns: 1fr; }
  .demo-report-toc { position: static; min-height: 0; display: flex; flex-direction: row; overflow-x: auto; border-right: 0; border-bottom: 1px solid #dce5eb; padding: 8px; }
  .demo-report-toc > b { display: none; }.demo-report-toc span { white-space: nowrap; }
  .delivery-report-switcher { justify-content:flex-start; overflow-x:auto; }
  .delivery-report-switcher .choice { flex:0 0 auto; min-width:138px; }
  .delivery-window-content { grid-template-columns: 1fr; }
  .delivery-window-content aside { display: none; }
  .delivery-folder > div { grid-template-columns: 1fr; padding-left: 10px; }
  .delivery-window-bar { align-items: flex-start; flex-wrap: wrap; }.delivery-window-bar em { width: 100%; margin-left: 0; }
  .footer { padding: 18px 16px calc(18px + env(safe-area-inset-bottom)); }
}

/* Initial intake, matching the existing project cards and parameter rows. */
.initial-entry-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; margin-bottom: 22px; }
.initial-entry-card { display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 16px; padding: 18px 20px; }
.initial-entry-copy { min-width: 0; }
.initial-entry-grid h3 { margin: 0; font-size: 16px; }
.initial-entry-grid p { margin: 5px 0 0; font-size: var(--font-sm); line-height: 1.55; }
.initial-entry-action.btn { min-width: 104px; background: var(--orange-soft); border-color: #edcbaa; color: var(--orange-deep); }
.initial-entry-action.btn:hover { background: #f9e3cc; border-color: #d59e69; }
.initial-steps { display: flex; gap: 16px; flex-wrap: wrap; margin: 20px 0; color: var(--ink-3); }
.initial-steps .active { color: var(--orange-deep); font-weight: 600; }
.initial-lookup { display: flex; align-items: end; gap: 14px; margin: 20px 0; }
.initial-lookup label { display: grid; gap: 8px; flex: 1; max-width: 440px; }
.initial-lookup input { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); font: inherit; }
.initial-customer { margin: 18px 0; }
.initial-fact { display: grid; grid-template-columns: minmax(100px,180px) minmax(0,1fr); gap: 16px; padding: 9px 0; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
.initial-fact b { font-weight: 500; }
.initial-value-item + .initial-value-item { margin-top: 10px; }
.initial-record { margin: 16px 0; }
.initial-record summary { cursor: pointer; font-weight: 600; }
.initial-record-scroll { max-height: 440px; overflow: auto; overscroll-behavior: contain; margin-top: 12px; padding-right: 12px; }
.initial-record-scroll .initial-fact .initial-fact { grid-template-columns: minmax(80px,130px) minmax(0,1fr); }
.initial-module-record > summary, .monitor-branch-audit > summary { color: var(--ink-3); font-size: var(--font-sm); cursor: pointer; }
.monitor-branch-audit { grid-column: 1 / -1; }
.monitor-branch-audit p { margin: 6px 0 0; color: var(--ink-3); font-size: var(--font-xs); }
@media (max-width: 700px) {
  .initial-entry-grid { grid-template-columns: minmax(0,1fr); gap: 10px; margin-bottom: 18px; }
  .initial-entry-card { padding: 15px 16px; gap: 12px; }
  .initial-entry-action.btn { min-width: 98px; padding-inline: 10px; }
  .initial-lookup { align-items: stretch; flex-direction: column; }
  .initial-fact { grid-template-columns: 100px minmax(0,1fr); gap: 12px; }
  .initial-record-scroll { max-height: 55vh; }
  .initial-record-scroll .initial-fact .initial-fact { display: block; }
}
/* Method evidence stays readable inside its own keyboard-scrollable pane. */
.semantic-table-scroll {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
}
.semantic-table-scroll:focus-visible {
  outline: 2px solid #b45309;
  outline-offset: 2px;
}

.project-overview-card h2 { font-size: 16px; line-height: 1.5; margin: 0 0 6px; color: var(--orange-deep); }
.project-overview-card { margin-bottom: 18px; }
.historical-registration { margin: 18px 0; }
.historical-registration > summary { cursor: pointer; font-size: 16px; font-weight: 600; color: var(--ink-2); }
.historical-registration > .analysis-entry-card { margin-top: 18px; }
.historical-registration .card { box-shadow: none; }
.project-overview-card p { margin: 0; }
.project-gap-list { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 16px; color: var(--ink-3); font-size: 14px; }
.project-gap-list span { padding-left: 10px; border-left: 2px solid var(--line); }
.candidate-sample-details { margin: 10px 0; border: 1px solid var(--line); border-radius: 10px; padding: 12px; }
.candidate-sample-details summary { cursor: pointer; font-size: 14px; font-weight: 600; }
.candidate-sample-details .table-scroll { margin-top: 12px; }
@media (max-width: 640px) {
  .analysis-summary-row { padding: 10px 11px; }
  .analysis-summary-key { flex-basis: 105px; }
}

/* Extracted parameters share the same compact rows as the reference project. */
.project-parameters-card > h3 { margin-bottom: 6px; }
.delivery-note { margin: 5px 0 14px; line-height: 1.65; }
.parameter-scope { margin-left: auto; color: var(--ink-3); font-size: var(--font-xs); font-weight: 400; }
.rna-summary-group > h4 { display: flex; align-items: baseline; gap: 12px; }
.parameter-sample > summary { display: flex; align-items: center; gap: 12px; padding: 10px 14px; cursor: pointer; color: var(--orange-deep); background: var(--surface-tint); font-size: var(--font-md); font-weight: 600; list-style: none; }
.parameter-sample > summary::-webkit-details-marker { display: none; }
.parameter-sample > summary::after { content: "⌄"; color: var(--ink-3); margin-left: auto; }
.parameter-sample[open] > summary { border-bottom: 1px solid var(--line); }
.parameter-sample[open] > summary::after { transform: rotate(180deg); }
.parameter-value { font-variant-numeric: tabular-nums; }
.parameter-detail { margin-top: 4px; color: var(--ink-3); font-size: var(--font-sm); }
.parameter-detail > summary, .parameter-quality > summary { cursor: pointer; color: var(--ink-3); font-size: var(--font-sm); }
.parameter-detail p { margin: 7px 0 0; line-height: 1.65; }
.parameter-long-value { margin-top: 0; }
.parameter-long-value > summary, .parameter-long-value > p { font-size: var(--font-md); }
.parameter-library-table { min-width: 280px; }
.sample-registration-note { margin: 0 0 12px; text-align: center; }
.sample-scope-label { white-space: nowrap; overflow-wrap: normal; }
.parameter-quality { border-top: 1px solid var(--line); }
.parameter-quality > summary { padding: 10px 12px; }
.parameter-audit { margin-top: 18px; }
.parameter-audit > summary { cursor: pointer; color: var(--orange-deep); font-size: 14px; font-weight: 600; }
.parameter-audit > summary > .muted { margin-left: 10px; font-size: var(--font-xs); font-weight: 400; }
.parameter-audit > .rna-summary-group { margin-top: 14px; }
.parameter-audit > .rna-summary-rows { margin-top: 12px !important; }
.parameter-audit .analysis-summary-row { padding-inline: 0; }
.parameter-audit .analysis-summary-value { font-size: var(--font-sm); }

/* Initial configuration lives in the portal; checks do not gate editing. */
.initial-config-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:18px;align-items:start}
.initial-planning fieldset{border:0;margin:0;padding:0;min-width:0}
.initial-planning label:not(.initial-choice){display:block;font-size:13px;font-weight:500;margin-top:12px}
.initial-planning label input:not([type=checkbox]),.initial-planning label select,.initial-planning textarea{display:block;width:100%;margin-top:6px;box-sizing:border-box;font-size:14px}
.initial-planning textarea{resize:vertical;min-height:70px;padding:10px 12px;line-height:1.65;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}
.initial-two-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.initial-two-fields[hidden]{display:none}
.initial-inline-actions{margin-top:10px}
.initial-choices{display:flex;flex-wrap:wrap;gap:8px 16px;margin:10px 0}
.initial-choice{display:flex;align-items:center;gap:6px;font-size:13px;line-height:1.5;font-weight:400}
.initial-choice input{width:15px;height:15px;accent-color:#b65a0b;margin:0}
.initial-module-group{border-top:1px solid var(--line);padding-top:10px;margin-top:12px}
.initial-module-group h4{font-size:14px;margin:0}
.initial-destination,.initial-check-result{padding:12px 0;border-top:1px solid var(--line);margin-top:16px}
.initial-destination b{font-size:13px}.initial-destination p{overflow-wrap:anywhere}
.initial-plan-preview{margin-top:18px}.initial-flow-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.initial-flow-chips span{font-size:12px;background:var(--surface-tint);border:1px solid var(--line);padding:6px 10px;border-radius:8px}
.initial-config-actions{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0 8px}.initial-save-note{font-size:13px;margin-top:12px;color:var(--ink-3)}
@media(max-width:760px){.initial-config-grid{grid-template-columns:1fr}.initial-two-fields{grid-template-columns:1fr}.initial-config-actions .btn{flex:1 1 42%;font-size:13px}.initial-plan-preview .analysis-entry-head{align-items:flex-start;gap:10px}}
.initial-node-section{margin-top:18px}.initial-node-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.initial-planning .initial-node-card{display:block;margin:0;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface-tint);font-weight:400;cursor:pointer}
.initial-planning .initial-node-card.selected{border-color:#bc650f;box-shadow:inset 0 0 0 1px #bc650f}
.initial-node-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.initial-node-head b{font-size:14px}.initial-node-head input[type=radio]{display:inline-block!important;width:15px!important;height:15px;margin:0 6px 0 0!important;accent-color:#b65a0b}
.initial-node-metrics{margin:12px 0 0;font-size:12px;line-height:1.6}.initial-node-metrics>div{display:grid;grid-template-columns:70px minmax(0,1fr);gap:8px;padding:4px 0}.initial-node-metrics dt{color:var(--ink-3)}.initial-node-metrics dd{margin:0;overflow-wrap:anywhere}.initial-resource-request{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.initial-node-advice{margin:14px 0}
@media(max-width:760px){.initial-node-grid{grid-template-columns:1fr}.initial-resource-request{grid-template-columns:1fr}.initial-node-head{align-items:flex-start;flex-wrap:wrap}}
@media(min-width:1101px){.initial-node-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.initial-node-section .analysis-entry-actions{display:flex;flex-flow:row wrap;gap:8px}

.monitor-node-details{grid-column:1/-1;grid-row:4;margin-top:8px;border-top:1px solid var(--line);padding-top:10px;font-size:12px}
.monitor-node-details summary,.initial-node-details summary{cursor:pointer;color:var(--orange-deep);font-size:12px;line-height:1.6}
.monitor-node-details .monitor-location-meta{border-top:0;padding-top:10px}.initial-node-details{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.initial-planning label.initial-node-select{display:flex;gap:6px;align-items:center;margin:0;font-size:14px;cursor:pointer}

.monitor-additional-info summary{cursor:pointer;color:var(--ink-3)}
.monitor-additional-info{margin:8px 0;font-size:12px}.monitor-additional-info p{margin:8px 0;line-height:1.6}
.monitor-node-details .monitor-location-notes{display:block;margin:8px 0}

.monitor-project-title{display:block;width:100%;font-size:14px;line-height:1.45;color:var(--ink);overflow-wrap:anywhere;margin-bottom:3px}
.monitor-project-tile-top .tag{font-size:11px;padding:3px 8px}.monitor-project-tile-top .monitor-project-status-line{justify-content:flex-end;margin:0}.monitor-project-tile-top .monitor-project-status-line strong{font-size:11px;font-weight:600;line-height:1.5;text-align:right}
.monitor-project-current{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.monitor-project-tile{align-self:stretch}.monitor-location-grid{align-items:stretch}

/* Equal visible cards, sized by the largest content rather than a fixed height. */
.monitor-project-grid,.monitor-location-grid,.initial-node-grid{grid-auto-rows:1fr;align-items:stretch}
.monitor-project-tile,.monitor-location-card,.initial-node-card{align-self:stretch}

/* Compact provenance follows the same parameter-table language as the overview. */
.project-report-registration { margin-top: 14px; }
.project-report-registration > summary { padding-inline: 0; color: var(--ink-3); }
.project-report-registration-body { padding-bottom: 4px; }
.project-report-registration-body .analysis-summary-row { padding-inline: 0; }
.project-report-registration-body .btn { margin-top: 9px; }
.monitor-step-progress { display: flex; align-items: center; gap: 7px; color: var(--ink-3); font-size: var(--font-xs); }
.monitor-step-progress-track { height: 4px; flex: 1; min-width: 36px; max-width: 84px; overflow: hidden; border-radius: 4px; background: var(--surface-muted); }
.monitor-step-progress-track > i { display: block; height: 100%; background: var(--orange); border-radius: inherit; }
.monitor-step-context { display: flex; flex-wrap: wrap; gap: 5px 14px; padding: 8px 11px; color: var(--ink-3); font-size: var(--font-xs); border-top: 1px solid var(--line); }
.monitor-step-context > span { overflow-wrap: anywhere; }
.monitor-step-row .monitor-step-extra { grid-column: 2 / -1; display: flex; flex-wrap: wrap; gap: 4px 12px; }
.monitor-step-state-counts { display: flex; flex-wrap: wrap; gap: 5px 12px; margin: 0 0 7px; color: var(--ink-3); font-size: var(--font-xs); }
.functional-library-name { white-space: nowrap; }
.project-overview-grid .fact-value { line-height: 1.5; }
.monitor-assay-runtime > summary { align-items: start; }
.monitor-assay-runtime > summary > span { min-width: 0; }
.monitor-assay-runtime > summary small { white-space: normal; overflow: visible; text-overflow: clip; }
.monitor-step-state-counts { grid-column: 1 / -1; margin-bottom: 0; }
.project-report-registration-body > .analysis-summary-row:first-child { border-top: 0; }
.project-result-sources { margin-top: 16px; }
.project-result-sources > summary { color: var(--orange-deep); font-size: var(--font-sm); font-weight: 600; cursor: pointer; }
.project-result-sources > div { margin-top: 12px; }
.project-result-sources > div > .card { border: 0; box-shadow: none; padding: 0; margin-top: 0 !important; background: transparent; }
.project-result-sources > div > .card > h3 { display: none; }

.monitor-project-detail { scroll-margin-top: 88px; }
.monitor-step-duration { font-size: 11px; line-height: 1.6; overflow-wrap: anywhere; }

/* Four-node raw intake: compact title action and explicit per-node evidence. */
.initial-page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
.initial-page-heading .page-title{margin:0}.initial-page-heading .btn{flex-shrink:0}
.initial-planning .initial-config-grid>.card{padding:24px 26px}.initial-config-grid h3{margin-top:0;margin-bottom:14px}
#ip-raw-results{margin-bottom:20px;padding:20px;border:1px solid var(--line);border-radius:16px;background:#fff}

.initial-raw-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.initial-raw-heading b{font-size:14px}.initial-raw-project{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.initial-raw-project ul{font-size:13px;padding-left:18px;line-height:1.7}.initial-raw-path{font-size:12px;color:var(--ink-3);overflow-wrap:anywhere}.initial-raw-project summary{cursor:pointer;color:var(--orange-deep);font-size:12px}
@media(max-width:760px){.initial-raw-grid{grid-template-columns:1fr}.initial-page-heading{gap:10px;margin-bottom:16px}.initial-page-heading .btn{padding:9px 12px}.initial-planning .initial-config-grid>.card{padding:20px}}

#ip-raw-results .monitor-project-grid{grid-auto-rows:1fr}
#ip-raw-results .initial-raw-heading{margin-bottom:14px}

/* Registration reuses the monitor cards and existing configuration layout. */
.initial-batch-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 16px}.initial-batch-bar label{display:flex;align-items:center;gap:10px;white-space:nowrap}.initial-batch-bar select{width:auto;min-width:170px}.initial-storage{margin-bottom:24px}.initial-storage .monitor-project-toolbar{margin-top:18px}.initial-storage .monitor-project-title{overflow-wrap:anywhere}
.initial-planning label[hidden]{display:none}
.initial-planning label input:not([type=checkbox]):not([type=radio]),.initial-planning label select{height:var(--control-h)}
.initial-planning .initial-batch-bar label{display:flex;align-items:center;gap:10px;margin:0}
.initial-planning .initial-batch-bar label select{width:170px;margin:0}
.initial-storage .monitor-location-card{min-height:136px}
@media(max-width:680px){.initial-batch-bar{align-items:stretch;flex-direction:column}.initial-batch-bar select{width:100%}}
@media(max-width:680px){.initial-planning .initial-batch-bar label{align-items:stretch;flex-direction:column}.initial-planning .initial-batch-bar label select{width:100%}}
/* LIFEINT_LOCALE_SHARED_START */
#lifeint-language-tools{position:static;display:inline-flex;flex:none;align-items:center;gap:0;padding:0;margin:0 0 0 12px;height:auto;min-height:44px;width:auto;max-width:none;box-shadow:none;transform:none;border:1px solid #dec9b6;border-radius:12px;background:rgba(255,251,246,.96);color:#8d4615;font:13px/1.2 system-ui,sans-serif;white-space:nowrap;z-index:45;box-sizing:border-box}
#lifeint-language-tools button,#lifeint-language-tools a{display:inline-flex;align-items:center;justify-content:center;flex:none;min-height:42px;min-width:42px;box-sizing:border-box;border:0;background:transparent;border-radius:10px;padding:8px;color:inherit;font:inherit;cursor:pointer;text-decoration:none;white-space:nowrap}
#lifeint-language-tools button[aria-pressed=true]{color:#a54d0a;background:#fce9d6;font-weight:700}
#lifeint-language-tools a{border-left:1px solid #e9d5c1;border-radius:0 10px 10px 0}
#lifeint-language-tools :focus-visible{outline:2px solid #e8762b;outline-offset:3px}
#lifeint-language-tools.lifeint-tools-fallback{position:absolute;top:14px;right:18px}
html[lang=en-US] button,html[lang=en-US] a,html[lang=en-US] th{word-break:normal;overflow-wrap:normal}
html[lang=en-US] .li-svc-card{height:100%;min-height:290px;display:flex;flex-direction:column}
html[lang=en-US] .li-svc-card h3{line-height:1.4;font-size:19px}
html[lang=en-US] .li-svc-card>p{display:block!important;-webkit-line-clamp:unset!important;overflow:visible!important;height:auto!important;max-height:none!important;flex:1;line-height:1.7}
html[lang=en-US] .li-svc-meta{gap:10px;flex-wrap:wrap;margin-top:20px}
html[lang=en-US] .li-hero-inner{padding-top:174px;padding-bottom:120px}
html[lang=en-US] .li-hero h1{font-size:clamp(36px,3.6vw,58px);line-height:1.17;max-width:990px;letter-spacing:-.025em;overflow-wrap:normal}
html[lang=en-US] .li-hero h1 .li-accent{white-space:nowrap}
html[lang=en-US] .li-hero-sub{max-width:820px;font-size:17px;line-height:1.8}
html[lang=en-US] .li-hero-eyebrow{letter-spacing:.16em}
html[lang=en-US] .li-hero-eyebrow,html[lang=en-US] .li-hero h1,html[lang=en-US] .li-hero-sub,html[lang=en-US] .li-hero-cta,html[lang=en-US] .li-hero-chips{animation:none;opacity:1;transform:none}
html[lang=en-US] .li-hero-cta{flex-wrap:wrap;gap:14px}
html[lang=en-US] .li-hero-cta .li-btn{font-size:15px;letter-spacing:0;padding-left:25px;padding-right:25px;white-space:nowrap}
/* Legacy CMS navigation must size to its words, never to a fixed Chinese character count. */
@media(min-width:768px){
 #header{height:96px!important;padding-top:0!important;display:flex;align-items:center}
 #header>.container{width:100%!important;max-width:1600px!important;height:96px;display:flex;align-items:center;justify-content:flex-end;gap:18px;padding:0 24px 0 190px!important}
 #header .menu{order:1;float:none!important;margin:0!important;flex:0 1 auto;min-width:0}
 #header .menu>ul{display:flex;align-items:center;flex-wrap:nowrap;gap:4px}
 #header .menu>ul>li{float:none!important;width:auto!important;margin:0!important;flex:none}
 #header .menu>ul>li>a{float:none!important;width:auto!important;line-height:1.3!important;font-size:15px!important;white-space:nowrap!important;padding:22px 9px;letter-spacing:0!important}
 #header .sousuo10{order:2;float:none!important;margin:0!important;width:205px!important;flex:0 1 205px;min-width:120px}
 #header .sousuo10 .form-control{width:100%;min-width:0}
 #header #lifeint-language-tools{order:3;margin-left:0}
 body:has(#header) .logo-box{left:28px!important;top:24px!important;width:132px!important}
 body:has(#header) .logo-box img{max-width:132px!important}
}
@media(min-width:768px) and (max-width:1279px){#header .sousuo10{display:none!important}#header>.container{gap:10px;padding-left:170px!important}#header .menu>ul>li>a{padding:20px 7px;font-size:14px!important}body:has(#header) .logo-box{left:22px!important;width:120px!important}}
@media(min-width:768px) and (max-width:900px){#header>.container{gap:6px;padding-left:150px!important;padding-right:12px!important}#header .menu>ul>li>a{padding:20px 5px;font-size:13px!important}#header #lifeint-language-tools a{display:none}}
#header #lifeint-language-tools,html[data-lifeint-port="7500"] #lifeint-language-tools,html[data-lifeint-port="7600"] #lifeint-language-tools,html[data-lifeint-port="7700"] #lifeint-language-tools,html[data-lifeint-port="7400"] #lifeint-language-tools{background:#ffffff0c;border-color:#ffffff35;color:#f6dfc6}
#header #lifeint-language-tools button[aria-pressed=true],html[data-lifeint-port="7500"] #lifeint-language-tools button[aria-pressed=true],html[data-lifeint-port="7600"] #lifeint-language-tools button[aria-pressed=true],html[data-lifeint-port="7700"] #lifeint-language-tools button[aria-pressed=true],html[data-lifeint-port="7400"] #lifeint-language-tools button[aria-pressed=true]{background:#e8762b24;color:#ffc58e}
#header #lifeint-language-tools a,html[data-lifeint-port="7400"] #lifeint-language-tools a{border-left-color:#ffffff30}
html[data-lifeint-port="7400"] .lifeint-entry-header{position:relative;display:grid!important;grid-template-columns:auto minmax(0,1fr);max-width:1740px!important;height:auto!important;min-height:76px;padding:12px 24px;gap:20px}
html[data-lifeint-port="7400"] main>header{background:rgba(32,23,16,.97)!important;border-bottom:1px solid #ffffff20}
html[data-lifeint-port="7400"] .lifeint-entry-header>div{min-width:0;flex-shrink:1;justify-content:flex-end;flex-wrap:wrap}
html[data-lifeint-port="7400"] .lifeint-entry-header nav{flex-shrink:1;flex-wrap:wrap;gap:8px 14px}
html[data-lifeint-port="7500"] #lifeint-language-tools{position:absolute;top:10px;right:56px;margin:0}
html[data-lifeint-port="7600"] .nav-menu{gap:18px}
html[data-lifeint-port="7600"] .nav-inner{gap:12px}
html[data-lifeint-port="7600"] .nav-menu a{white-space:nowrap;font-size:14px}
html[data-lifeint-port="7700"] body>nav{gap:16px}
html[data-lifeint-port="7700"] .insight-nav-links{gap:16px}
html[data-lifeint-port="7700"] .insight-nav-links a{white-space:nowrap;font-size:13px}
@media(max-width:1100px){html[data-lifeint-port="7600"] .nav-menu,html[data-lifeint-port="7600"] .nav .btn-nav{display:none}html[data-lifeint-port="7600"] .nav-toggle{display:block}html[data-lifeint-port="7600"] .nav.open .nav-menu{display:flex;position:absolute;top:68px;left:0;right:0;flex-direction:column;background:#10141b;padding:20px 28px}}
@media(max-width:767px){
 #lifeint-language-tools{margin-left:auto;border-radius:10px}
 #lifeint-language-tools button,#lifeint-language-tools a{min-width:40px;min-height:44px;padding:7px}
 body:has(#header) .navbar-header{padding-right:134px}
 body:has(#header) .navbar-brand img{max-width:118px}
 body:has(#header) #lifeint-language-tools{position:fixed;right:12px;top:6px;background:#181b20;border-color:#ffffff35;color:#f6dfc6}
 html[lang=en-US] .li-hero-inner{padding:122px 22px 90px}
 html[lang=en-US] .li-hero h1{font-size:34px;line-height:1.2}
 html[lang=en-US] .li-hero-sub{font-size:15px;line-height:1.8}
 html[lang=en-US] .li-hero-eyebrow{font-size:10px;letter-spacing:.12em}
 html[lang=en-US] .li-hero-cta .li-btn{white-space:normal}
 html[data-lifeint-port="7100"] .quote-header>div{flex-wrap:wrap;gap:8px}
 html[data-lifeint-port="7100"] .quote-header>div>a[data-testid="standalone-sample-entry"]{min-height:40px;padding:7px 12px;font-size:12px}
 html[data-lifeint-port="7100"] .quote-header>div>div:first-child{flex:1;min-width:105px}
 html[data-lifeint-port="7100"] #lifeint-language-tools{margin-left:0}
 html[data-lifeint-port="7400"] .lifeint-entry-header{grid-template-columns:minmax(0,1fr) auto;padding:10px 16px;gap:10px;min-height:72px}
 html[data-lifeint-port="7400"] .lifeint-entry-header>a:first-child{max-width:155px;min-height:44px}
 html[data-lifeint-port="7400"] .lifeint-entry-header>a:first-child img{max-width:62px;height:28px;object-fit:contain}
 html[data-lifeint-port="7600"] .logo-module{display:none}
 html[data-lifeint-port="7600"] .nav-inner{gap:8px;padding:0 16px}
 html[data-lifeint-port="7600"] #lifeint-language-tools{margin-left:0}
 html[data-lifeint-port="7700"] body>nav{flex-wrap:wrap;padding:10px 14px;gap:8px}
 html[data-lifeint-port="7700"] .nav-cta{display:none!important}
 html[data-lifeint-port="7700"] #lifeint-language-tools{margin-left:0}
 html[data-lifeint-port="7200"] .topbar{flex-wrap:wrap;gap:10px}
}
@media print{#lifeint-language-tools{display:none!important}}

/* Compact portal search, with a real accessible icon on every header variant. */
#header .sousuo10{min-width:190px!important;flex:0 0 205px}
#header .sousuo10 .input-group{display:flex;width:100%;height:40px;border:1px solid rgba(255,255,255,.4);border-radius:24px;overflow:hidden;background:rgba(255,255,255,.12)}
#header .sousuo10 .form-control{flex:1;width:0!important;min-width:0;height:40px;line-height:normal;border:0!important;box-shadow:none;border-radius:0;background:transparent;color:inherit;padding:8px 12px;font-size:13px}
#header .sousuo10 .input-group-btn{display:flex;width:42px;flex:0 0 42px}
#header .sousuo10 .lifeint-search-submit{display:flex;align-items:center;justify-content:center;width:42px;height:40px;padding:0;border:0;border-left:1px solid rgba(255,255,255,.35);border-radius:0;background:none!important;color:inherit;text-indent:0!important;line-height:normal}
#header.li-solid .sousuo10{color:#fff}
#header .sousuo10 input::placeholder{color:inherit;opacity:.8}
html[lang="en-US"] #main h1,html[lang="en-US"] #main h2,html[lang="en-US"] #main h3{height:auto;line-height:1.35;overflow-wrap:break-word}
html[lang="en-US"] #main table th,html[lang="en-US"] #main table td{white-space:normal;overflow-wrap:break-word}
@media(min-width:768px){#header.li-solid .menu{margin:0!important}#header.li-solid{position:relative!important;min-height:88px;padding:16px 0!important}#header.li-solid>.container{min-height:56px;height:auto}body:has(#header.li-solid) #main{padding-top:24px!important}}

/* Interior templates carry more specific legacy widths; reset those too. */
@media(min-width:768px){
 #header.li-solid .menu{width:auto!important;min-width:0!important;flex:0 1 auto!important}
 #header.li-solid .menu>ul{width:max-content;max-width:100%;margin:0!important;padding:0!important;display:flex!important;align-items:center}
 #header.li-solid .menu>ul>li{width:auto!important;margin:0!important;float:none!important;flex:none!important}
 #header.li-solid .menu>ul>li>a{display:block!important;width:auto!important;min-width:0!important;white-space:nowrap!important;line-height:1.3!important;padding:22px 9px!important;font-size:15px!important}
}
@media(min-width:768px) and (max-width:1279px){#header.li-solid .menu>ul>li>a{padding:20px 7px!important;font-size:14px!important}}
@media(min-width:768px) and (max-width:900px){#header.li-solid .menu>ul>li>a{padding:20px 5px!important;font-size:13px!important}}

/* LIFEINT_LOCALE_SHARED_END */

/* English entry labels wrap within their own workflow columns. */
html[lang^="en"] .hero-flow { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; align-items:start; max-width:600px; }
html[lang^="en"] .hero-flow .node { min-width:0; white-space:normal; text-align:center; line-height:1.35; letter-spacing:0; }
html[lang^="en"] .hero-flow .link { display:none; }

.analysis-entry-head .initial-config-actions { margin: 0; }

/* Fixed comparison structure inside the original RNA summary card. */
.master-comparison > h5 { margin:0; padding:10px 14px; color:var(--orange-deep); background:var(--surface-tint); border-block:1px solid var(--line); font-size:var(--font-sm); }
.master-stat-label { padding:9px 14px; color:var(--orange-deep); background:var(--surface-tint); border-top:1px solid var(--line); font-size:var(--font-sm); font-weight:600; }

/* Enrichment uses the same key/value summary rows as other parameters. */
[data-analysis-master] [data-master-field^="enrichment."] .analysis-summary-value { white-space:pre-line; line-height:1.8; }
