/* Alpha Factory 控制台 · v2 设计系统 (2026-09-21)
 * 目标：统一字体阶梯/颜色语义/组件；把"实时主线"与"冻结的 legacy 数据"在视觉上分开。
 * 仅展示层。无研究逻辑、无写入。
 *
 * 术语：liveness = RUNNING 运行中 / WAITING 等待 / STALLED 停滞 / STOPPED 已停止。
 */

:root {
  /* 颜色 */
  --bg: #070a0d;
  --rail: #0a0e12;
  --panel: #0d1217;
  --panel-2: #111820;
  --line: #202a34;
  --line-soft: #172029;
  --text: #e6edf3;
  --muted: #7f8b98;
  --dim: #53606d;

  --cyan: #53d8e7;
  --green: #57d68d;
  --amber: #f0b45a;
  --red: #ff6b72;
  --blue: #6ca7ff;
  --violet: #ab83ff;
  --gray: #9aa0a6;

  /* 状态语义（唯一词表） */
  --run-fg: #57d68d; --run-bg: #0f5132;
  --wait-fg: #a08cf0; --wait-bg: #3a3350;
  --stall-fg: #f0c14b; --stall-bg: #5a4a12;
  --stop-fg: #9aa0a6; --stop-bg: #262b31;
  --danger-fg: #ff8f95; --danger-bg: #4a1a1f;

  /* 字体阶梯（7 档 + 英雄位） */
  --fs-1: 11px;
  --fs-2: 12px;
  --fs-3: 13px;
  --fs-4: 14px;
  --fs-5: 16px;
  --fs-6: 20px;
  --fs-7: 28px;
  --fs-hero: 40px;

  /* 间距 / 半径 */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 24px; --s6: 32px;
  --r: 2px;

  --mono: "Cascadia Mono", "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
  --sans: Inter, "Segoe UI", "Microsoft YaHei", "PingFang SC", "Noto Sans SC", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { background: var(--bg); color: var(--text); font: var(--fs-4)/1.55 var(--sans); }
body { margin: 0; min-width: 320px; background: radial-gradient(circle at 75% 0%, #10202a 0, transparent 31rem), var(--bg); }
button { font: inherit; color: inherit; }
h1, h2, h3, p { margin: 0; }

/* ---------- 布局骨架 ---------- */
.shell { min-height: 100vh; display: grid; grid-template-columns: 17rem minmax(0, 1fr); }
.rail { position: sticky; top: 0; height: 100vh; overflow-y: auto; padding: var(--s5) var(--s4); background: color-mix(in srgb, var(--rail) 96%, transparent); border-right: 1px solid var(--line); display: flex; flex-direction: column; }
.brand { display: flex; align-items: center; gap: var(--s3); padding: var(--s2) var(--s2) var(--s4); border-bottom: 1px solid var(--line-soft); }
.brand-mark { width: 2.5rem; height: 2.5rem; display: grid; place-items: center; border: 1px solid var(--cyan); color: var(--cyan); font: 700 var(--fs-2) var(--mono); box-shadow: inset 0 0 1.2rem #53d8e71b; }
.brand strong { display: block; font: 700 var(--fs-2) var(--mono); letter-spacing: .08em; }
.brand span { display: block; margin-top: var(--s1); color: var(--muted); font: var(--fs-1) var(--mono); letter-spacing: .08em; }

nav { display: grid; gap: var(--s1); margin-top: var(--s5); }
.nav-item { width: 100%; border: 0; border-left: 2px solid transparent; background: transparent; color: var(--muted); text-align: left; padding: 0.7rem; cursor: pointer; transition: .18s ease; font-size: var(--fs-3); }
.nav-item span { color: var(--dim); font: var(--fs-1) var(--mono); margin-right: .6rem; }
.nav-item:hover { color: var(--text); background: #ffffff05; }
.nav-item.active { color: var(--cyan); border-left-color: var(--cyan); background: linear-gradient(90deg, #53d8e712, transparent); }

/* 历史归档分组（legacy / 已冻结） */
.nav-group { margin-top: var(--s3); padding-top: var(--s3); border-top: 1px dashed var(--line); }
.nav-group-head { display: flex; align-items: center; gap: var(--s2); padding: var(--s1) .7rem var(--s2); color: var(--dim); font: var(--fs-1) var(--mono); letter-spacing: .1em; cursor: pointer; user-select: none; }
.nav-group-head:hover { color: var(--muted); }
.nav-group-head .chev { transition: transform .18s ease; }
.nav-group.collapsed .chev { transform: rotate(-90deg); }
.nav-group.collapsed .nav-group-body { display: none; }
.nav-group-body { display: grid; gap: var(--s1); }
.nav-group .nav-item { color: var(--dim); }
.nav-group .nav-item.active { color: var(--amber); border-left-color: var(--amber); background: linear-gradient(90deg, #f0b45a12, transparent); }

.rail-foot { margin-top: auto; border-top: 1px solid var(--line-soft); padding: var(--s4) var(--s2) 0; }
.rail-foot p { color: var(--dim); font-size: var(--fs-1); margin-top: var(--s3); line-height: 1.6; }
.readonly-badge { display: inline-block; color: var(--amber); border: 1px solid #f0b45a55; padding: .2rem .45rem; font: var(--fs-1) var(--mono); letter-spacing: .08em; }

main { min-width: 0; padding: 0 var(--s6) var(--s6); }
.topbar { min-height: 6rem; display: flex; align-items: center; justify-content: space-between; gap: var(--s4); border-bottom: 1px solid var(--line); margin-bottom: var(--s5); }
.eyebrow, .panel-kicker { color: var(--cyan); font: var(--fs-1) var(--mono); letter-spacing: .13em; margin-bottom: var(--s1); }
h1 { font-size: var(--fs-6); letter-spacing: -.01em; }
h2 { font-size: var(--fs-5); font-weight: 650; }
h3 { font-size: var(--fs-4); font-weight: 650; }

.status-cluster { display: flex; align-items: center; gap: var(--s3); }
.status-cluster > div:first-child { text-align: right; }
.status-cluster span { display: block; color: var(--dim); font: var(--fs-1) var(--mono); letter-spacing: .1em; }
.status-cluster strong { font: var(--fs-2) var(--mono); }
.health-pill { display: flex; align-items: center; gap: .5rem; border: 1px solid var(--line); background: var(--panel); padding: .5rem .7rem; font-size: var(--fs-2); }
.health-pill i { width: .5rem; height: .5rem; border-radius: 50%; background: var(--amber); box-shadow: 0 0 .8rem currentColor; }
.health-pill.ok i { background: var(--green); }
.health-pill.bad i { background: var(--red); }

/* ---------- 视图 ---------- */
.view { display: none; }
.view.active { display: block; animation: enter .2s ease-out; }
@keyframes enter { from { opacity: .45; transform: translateY(4px); } }
.section-label { display: flex; align-items: baseline; gap: .7rem; margin: var(--s5) 0 var(--s3); }
.section-label:first-child { margin-top: 0; }
.section-label span { font: var(--fs-2) var(--mono); letter-spacing: .14em; color: var(--muted); }
.section-label small { color: var(--dim); font-size: var(--fs-2); }

/* ---------- 顶部状态条（新） ---------- */
.statusbar { border: 1px solid var(--line); background: linear-gradient(145deg, var(--panel-2), var(--panel)); padding: var(--s5); display: grid; grid-template-columns: minmax(12rem, 18rem) minmax(0, 1fr); gap: var(--s4) var(--s5); align-items: center; }
.statusbar .kicker { color: var(--dim); font: var(--fs-1) var(--mono); letter-spacing: .12em; margin-bottom: var(--s2); }
.statusbar .headline { font-size: var(--fs-6); font-weight: 650; line-height: 1.3; }
.statusbar .headline.tone-RUNNING { color: var(--run-fg); }
.statusbar .headline.tone-WAITING { color: var(--wait-fg); }
.statusbar .headline.tone-STALLED { color: var(--stall-fg); }
.statusbar .headline.tone-STOPPED { color: var(--stop-fg); }
.statusbar .subline { color: var(--muted); font-size: var(--fs-3); margin-top: var(--s2); }
.statusbar .meta { display: flex; flex-wrap: wrap; gap: var(--s2) var(--s4); margin-top: var(--s3); color: var(--dim); font: var(--fs-2) var(--mono); }
.statusbar .meta b { color: var(--muted); font-weight: 600; }

/* ---------- 三区块 ---------- */
.blocks { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s3); margin-top: var(--s3); }
.block { border: 1px solid var(--line); background: #0a0f14e8; display: flex; flex-direction: column; min-width: 0; }
.block-head { padding: var(--s3) var(--s4); border-bottom: 1px solid var(--line-soft); display: flex; align-items: center; justify-content: space-between; gap: var(--s2); }
.block-head h3 { font-size: var(--fs-4); }
.block-head .tag { color: var(--dim); font: var(--fs-1) var(--mono); }
.block-body { padding: var(--s2) var(--s4) var(--s3); display: grid; gap: 0; }
.kv { display: grid; grid-template-columns: minmax(6rem, auto) minmax(0, 1fr); gap: var(--s2) var(--s3); align-items: baseline; padding: .55rem 0; border-top: 1px dashed var(--line-soft); }
.kv:first-child { border-top: 0; }
.kv .k { color: var(--dim); font: var(--fs-2) var(--mono); }
.kv .v { font-size: var(--fs-3); overflow-wrap: anywhere; }
.kv .v strong { font-size: var(--fs-4); }
.kv .v .note { display: block; color: var(--dim); font: var(--fs-1) var(--mono); margin-top: .15rem; }

/* ---------- 卡片 / 指标 ---------- */
.factory-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: var(--s3); }
.metric-strip { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--s2); }
.factory-card, .metric, .reason-card { border: 1px solid var(--line); background: linear-gradient(145deg, var(--panel-2), var(--panel)); padding: var(--s3); min-height: 5.2rem; }
.factory-card label, .metric label, .reason-card label { display: block; color: var(--muted); font: var(--fs-1) var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.factory-card strong, .metric strong { display: block; margin-top: var(--s2); font: var(--fs-6) var(--mono); }
.factory-card.primary strong { font-size: var(--fs-7); color: var(--green); }
.factory-card small { display: block; color: var(--dim); margin-top: var(--s1); font-size: var(--fs-2); }
.reason-card strong { display: block; margin-top: var(--s1); font: var(--fs-6) var(--mono); color: var(--red); }
.metric.good strong { color: var(--green); }
.metric.danger strong { color: var(--red); }

/* ---------- 面板 / 表格 ---------- */
.split-grid { display: grid; grid-template-columns: minmax(0, 1.22fr) minmax(20rem, .78fr); gap: var(--s3); }
.panel { border: 1px solid var(--line); background: #0a0f14e8; min-width: 0; }
.panel.full { width: 100%; }
.panel-head { min-height: 4.4rem; padding: var(--s3) var(--s4); display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--line-soft); gap: var(--s3); }
.source-tag, .live-tag { color: var(--muted); border: 1px solid var(--line); padding: .2rem .45rem; font: var(--fs-1) var(--mono); white-space: nowrap; }
.live-tag { color: var(--green); border-color: #57d68d44; }
.frozen-tag { color: var(--dim); border: 1px solid var(--line); padding: .2rem .45rem; font: var(--fs-1) var(--mono); white-space: nowrap; }

.table-wrap { overflow: auto; }
table { width: 100%; border-collapse: collapse; min-width: 52rem; }
th { color: var(--dim); font: var(--fs-2) var(--mono); letter-spacing: .06em; text-align: left; padding: .7rem var(--s4); border-bottom: 1px solid var(--line); white-space: nowrap; }
td { color: var(--muted); font-size: var(--fs-3); padding: .7rem var(--s4); border-bottom: 1px solid var(--line-soft); vertical-align: top; }
tr:last-child td { border-bottom: 0; }
tbody tr:hover td { background: #ffffff03; }
.id-link { border: 0; background: transparent; color: var(--cyan); padding: 0; cursor: pointer; font: var(--fs-2) var(--mono); }

/* ---------- 徽章 / 状态 ---------- */
.badge { display: inline-flex; align-items: center; border: 1px solid var(--line); padding: .15rem .4rem; font: var(--fs-2) var(--mono); white-space: nowrap; }
.badge.KILLED, .badge.FAILED { color: var(--red); border-color: #ff6b7244; }
.badge.ESCALATED, .badge.BLOCKED, .badge.APPROVAL_REQUIRED { color: var(--amber); border-color: #f0b45a44; }
.badge.COMPLETED, .badge.SURVIVED, .badge.VERIFIED { color: var(--green); border-color: #57d68d44; }
.badge.RUNNING, .badge.ACTIVE { color: var(--cyan); border-color: #53d8e744; }

.status-badge { display: inline-flex; align-items: center; gap: .35rem; padding: .2rem .55rem; border-radius: var(--r);
  border: 1px solid currentColor; font: 600 var(--fs-2) var(--mono); white-space: nowrap; }
.status-badge.tone-RUNNING { color: var(--run-fg); background: var(--run-bg); }
.status-badge.tone-WAITING { color: var(--wait-fg); background: var(--wait-bg); }
.status-badge.tone-STALLED { color: var(--stall-fg); background: var(--stall-bg); }
.status-badge.tone-STOPPED { color: var(--stop-fg); background: var(--stop-bg); }
.status-badge.tone-legacy { color: var(--stop-fg); background: var(--stop-bg); }
.status-badge.tone-DANGER { color: var(--danger-fg); background: var(--danger-bg); }

/* 新鲜度 */
.fresh { color: var(--dim); font: var(--fs-1) var(--mono); }
.fresh.stale { color: var(--amber); }
.fresh.dead { color: var(--red); }

/* ---------- 分层表（瘦身） ---------- */
.layers { padding: var(--s2) var(--s4) var(--s4); }
.layer-row { display: grid; grid-template-columns: minmax(9rem, 13rem) auto minmax(0, 1fr) auto; gap: var(--s3); align-items: center; padding: .7rem 0; border-top: 1px solid #ffffff12; }
.layer-row:first-child { border-top: 0; }
.layer-row .lname { font-size: var(--fs-3); font-weight: 600; }
.layer-row .lname em { display: block; font: var(--fs-1) var(--mono); color: var(--dim); font-style: normal; letter-spacing: .06em; }
.layer-row .ldetail { color: var(--muted); font-size: var(--fs-3); overflow-wrap: anywhere; }
.layer-row .lsource { color: var(--dim); font: var(--fs-1) var(--mono); }
.legend-row { display: flex; flex-wrap: wrap; gap: var(--s3); padding: var(--s2) var(--s4) var(--s3); border-bottom: 1px solid var(--line-soft); }
.legend-row span { display: inline-flex; align-items: center; gap: .3rem; color: var(--dim); font: var(--fs-1) var(--mono); }
.legend-row i { width: .5rem; height: .5rem; border-radius: 50%; display: inline-block; }

/* ---------- 冻结区（legacy） ---------- */
.frozen-banner { display: flex; align-items: center; gap: var(--s3); border: 1px solid #f0b45a44; background: linear-gradient(110deg, #21180b, #0b1116 60%); color: #e7c88a; padding: .7rem var(--s4); font-size: var(--fs-3); margin-bottom: var(--s3); }
.frozen-banner b { color: var(--amber); font-family: var(--mono); }
.legacy-zone { position: relative; }
.legacy-zone::after { content: ""; position: absolute; inset: 0; pointer-events: none; }

/* ---------- 活动 / 流水 ---------- */
.pipeline { padding: var(--s2) var(--s4) var(--s3); }
.pipe-row { display: grid; grid-template-columns: 10.5rem minmax(0, 1fr) 2rem; align-items: center; gap: var(--s3); min-height: 2rem; }
.pipe-row button { border: 0; padding: 0; background: transparent; color: var(--muted); text-align: left; cursor: pointer; font: var(--fs-2) var(--mono); }
.pipe-row button:hover { color: var(--cyan); }
.pipe-bar { height: 4px; background: var(--line-soft); overflow: hidden; }
.pipe-bar i { display: block; height: 100%; background: var(--blue); min-width: 0; }
.pipe-row strong { text-align: right; font: var(--fs-2) var(--mono); }
.activity-list { max-height: 31rem; overflow: auto; }
.activity { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr); gap: .7rem; padding: .7rem var(--s4); border-bottom: 1px solid var(--line-soft); }
.activity time { color: var(--dim); font: var(--fs-1) var(--mono); }
.activity strong { display: block; font-size: var(--fs-3); font-weight: 600; }
.activity p { color: var(--muted); font-size: var(--fs-2); margin-top: .18rem; overflow-wrap: anywhere; }

/* ---------- 详情抽屉 ---------- */
.detail-drawer { margin-top: var(--s3); border: 1px solid var(--cyan); background: #091219; box-shadow: 0 1.4rem 4rem #0007; }
.detail-head { display: flex; justify-content: space-between; gap: var(--s3); padding: var(--s4); border-bottom: 1px solid #53d8e72e; }
.detail-head h2 { font-size: var(--fs-5); }
.close-btn { border: 1px solid var(--line); background: transparent; color: var(--muted); width: 2rem; height: 2rem; cursor: pointer; }
.detail-grid { padding: var(--s4); display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: var(--s3) var(--s4); }
.detail-item label { display: block; color: var(--dim); font: var(--fs-1) var(--mono); text-transform: uppercase; margin-bottom: .22rem; }
.detail-item div { font-size: var(--fs-3); overflow-wrap: anywhere; }
.detail-item pre { color: var(--muted); font: var(--fs-2)/1.55 var(--mono); white-space: pre-wrap; max-height: 14rem; overflow: auto; }
.detail-item.wide { grid-column: 1 / -1; }
.timeline { border-top: 1px solid var(--line-soft); padding: var(--s4); }
.timeline h3 { margin-bottom: var(--s2); }
.timeline-row { display: grid; grid-template-columns: 10.5rem 9rem minmax(0, 1fr); gap: var(--s3); padding: .55rem 0; border-bottom: 1px dashed var(--line-soft); font-size: var(--fs-3); }
.timeline-row time { color: var(--dim); font-family: var(--mono); }

/* ---------- 墓地 ---------- */
.graveyard-hero { min-height: 9rem; padding: var(--s5); border: 1px solid #ff6b7235; background: linear-gradient(120deg, #1a0d11, #0b1015 62%); display: flex; justify-content: space-between; align-items: center; gap: var(--s4); margin-bottom: var(--s3); }
.graveyard-hero h2 { font-size: var(--fs-6); }
.graveyard-hero p:not(.eyebrow) { color: var(--muted); margin-top: .45rem; }
.grave-total { text-align: right; }
.grave-total span { display: block; color: var(--muted); font: var(--fs-2) var(--mono); }
.grave-total strong { display: block; color: var(--red); font: var(--fs-hero) var(--mono); line-height: 1; }
.reason-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); gap: var(--s2); margin-bottom: var(--s3); }
.card-list { padding: var(--s1) var(--s4) var(--s3); }
.list-card { padding: .85rem 0; border-bottom: 1px solid var(--line-soft); }
.list-card:last-child { border-bottom: 0; }
.list-card strong { font-size: var(--fs-3); }
.list-card p { color: var(--muted); margin-top: .25rem; font-size: var(--fs-2); }
.list-card small { color: var(--dim); font: var(--fs-1) var(--mono); }

/* ---------- 研究地图 ---------- */
.map-panel { min-height: 30rem; }
.legend { display: flex; gap: .65rem; flex-wrap: wrap; }
.legend span { font: var(--fs-1) var(--mono); color: var(--muted); }
.research-map { padding: var(--s4); display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: var(--s3); }
.map-category { border: 1px solid var(--line-soft); background: var(--panel); padding: var(--s3); }
.map-category h3 { margin-bottom: .7rem; font: var(--fs-3) var(--mono); letter-spacing: .06em; color: var(--cyan); }
.map-node { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--s3); align-items: center; padding: .5rem 0; border-top: 1px solid var(--line-soft); }
.map-node:first-of-type { border-top: 0; }
.map-node span { font-size: var(--fs-3); }
.map-node small { color: var(--dim); display: block; font-size: var(--fs-1); }

/* ---------- 决策 ---------- */
.decision-banner { display: flex; gap: var(--s3); align-items: center; padding: var(--s4); border: 1px solid #f0b45a66; background: linear-gradient(110deg, #21180b, #0b1116 60%); margin-bottom: var(--s3); }
.decision-banner h2 { font-size: var(--fs-5); }
.decision-banner p:not(.eyebrow) { margin-top: .4rem; color: var(--muted); }
.decision-icon { width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border: 1px solid var(--amber); color: var(--amber); font: var(--fs-5) var(--mono); flex: none; }
.decision-list { display: grid; gap: var(--s2); }
.decision-card { border: 1px solid var(--line); background: var(--panel); display: grid; grid-template-columns: 8rem minmax(0, 1fr) auto; gap: var(--s3); align-items: center; padding: var(--s4); }
.decision-card code { color: var(--cyan); font: var(--fs-2) var(--mono); overflow-wrap: anywhere; }
.decision-card p { margin-top: .25rem; color: var(--muted); font-size: var(--fs-3); }
.decision-card.enriched { display: block; }
.decision-card.enriched header { display: flex; align-items: center; gap: .7rem; flex-wrap: wrap; padding-bottom: var(--s2); border-bottom: 1px solid var(--line-soft); }
.decision-card.enriched header h3 { flex: 1 0 18rem; }
.decision-sections { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: var(--s3); padding: var(--s3) 0; }
.decision-sections section { border: 1px solid var(--line-soft); padding: var(--s3); min-width: 0; }
.decision-sections label { color: var(--cyan); font: var(--fs-2) var(--mono); }
.decision-sections p { font-size: var(--fs-3); color: var(--muted); margin-top: .25rem; }
.decision-sections pre { max-height: 14rem; overflow: auto; color: var(--muted); font: var(--fs-2)/1.55 var(--mono); white-space: pre-wrap; }
.budget-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr)); gap: var(--s2); margin-top: .45rem; }
.budget-grid .metric { min-height: 3.7rem; padding: .6rem; }
.budget-grid .metric strong { font-size: var(--fs-5); }
.engine-table { margin-top: var(--s3); }

/* ---------- 工具 ---------- */
.technical-line { display: block; margin-top: .18rem; color: var(--dim); font: var(--fs-1)/1.4 var(--mono); }
.notice { margin-bottom: var(--s4); border: 1px solid #ff6b7266; background: #2a0e14; color: #ffc2c5; padding: .7rem var(--s4); }
.hidden { display: none !important; }
.empty { color: var(--dim); padding: var(--s4); font-size: var(--fs-3); }
.mono { font-family: var(--mono); }
.hash { color: var(--dim); font: var(--fs-1) var(--mono); }
.muted { color: var(--muted); }
.dim { color: var(--dim); }

/* ---------- 响应式 ---------- */
@media (max-width: 1180px) {
  .blocks { grid-template-columns: 1fr; }
  .statusbar { grid-template-columns: 1fr; }
}
@media (max-width: 1050px) {
  .shell { grid-template-columns: 4.8rem minmax(0, 1fr); }
  .brand > div:last-child { display: none; }
  .nav-item { font-size: 0; text-align: center; padding: .8rem .2rem; }
  .nav-item span { font-size: var(--fs-2); margin: 0; }
  .nav-group-head { font-size: 0; justify-content: center; }
  .nav-group-head .chev { font-size: var(--fs-2); }
  .rail-foot { display: none; }
  .split-grid { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
  .shell { display: block; }
  .rail { position: static; width: 100%; height: auto; overflow: visible; padding: var(--s2); }
  .brand { padding: .2rem .2rem .7rem; }
  .brand > div:last-child { display: block; }
  nav { display: flex; flex-wrap: wrap; gap: var(--s1); margin-top: .7rem; }
  .nav-item, .nav-item span { font-size: var(--fs-3); }
  .nav-item { width: auto; white-space: nowrap; border-left: 0; border-bottom: 2px solid transparent; }
  .nav-item.active { border-bottom-color: var(--cyan); }
  .nav-group { border-top: 0; margin-top: 0; padding-top: 0; width: 100%; }
  .nav-group-body { display: flex; flex-wrap: wrap; gap: var(--s1); }
  .nav-group.collapsed .nav-group-body { display: none; }
  main { padding: 0 var(--s4) var(--s4); }
  .topbar { min-height: 5rem; }
  .status-cluster > div:first-child { display: none; }
  .layer-row { grid-template-columns: 1fr; gap: var(--s2); }
  .timeline-row { grid-template-columns: 1fr; gap: .2rem; }
  .decision-card { grid-template-columns: 1fr; }
  .graveyard-hero { align-items: flex-start; flex-direction: column; }
  .lbody .ldetail { display: block; }
}

/* ---------- v3：三维状态小样式（system / workflow / research） ---------- */
.statusbar .chips { display: flex; flex-wrap: wrap; gap: var(--s2); margin-top: var(--s3); }
.statusbar .headline.tone-DANGER { color: var(--danger-fg); }
.layer-row { grid-template-columns: minmax(9rem, 12rem) auto minmax(0, 1fr) minmax(0, 15rem); }
.lchips { display: flex; flex-wrap: wrap; gap: var(--s1); }
.lbody { display: grid; gap: .15rem; min-width: 0; }
.lbody strong { font-size: var(--fs-3); }
.lbody .ldetail { color: var(--muted); font-size: var(--fs-2); }
#factory-answers { margin-top: var(--s3); }
@media (max-width: 700px) {
  .layer-row { grid-template-columns: 1fr; }
}

/* ---- v4: Owner Status + freshness (display only) ---- */
.af-owner .panel-head h2 { font-size: 22px; margin: 2px 0; }
.af-freshness { font-size: 12px; color: var(--muted,#666); white-space: nowrap; }
.af-fresh { margin-left: 6px; padding: 1px 6px; border-radius: 8px; font-weight: 600; }
.af-stale { background: #fff3cd; color: #8a6d3b; }
.af-expired { background: #f8d7da; color: #a94442; }
.af-fresh-ok { color: #3c763d; }
.af-owner-line { font-size: 17px; font-weight: 600; line-height: 1.5; margin: 6px 0 10px; padding: 10px 12px; border-radius: 10px; background: #f5f7fa; border-left: 6px solid #999; }
.af-owner-line.tone-RUNNING { border-left-color: #3c9d5a; background: #eefaef; }
.af-owner-line.tone-WAITING { border-left-color: #2f6fb3; background: #eef5fd; }
.af-owner-line.tone-STALLED { border-left-color: #b98b00; background: #fff8e6; }
.af-owner-line.tone-DANGER { border-left-color: #c0392b; background: #fdeeec; }
.af-owner-line.tone-STOPPED { border-left-color: #8a8a8a; background: #f2f2f2; }
.af-owner-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px,1fr)); gap: 10px; margin: 6px 0; }
.af-owner-grid > div { background: #fafbfc; border: 1px solid #e3e6ea; border-radius: 8px; padding: 8px 10px; }
.af-owner-grid b { display: block; font-size: 12px; color: #6b7280; margin-bottom: 3px; }
.af-owner-grid span { font-size: 14px; }
.af-owner-meta { font-size: 13px; color: #444; margin-top: 8px; }
.af-advanced { margin-top: 14px; }
.af-advanced > summary { cursor: pointer; font-weight: 600; padding: 6px 0; color: #2f6fb3; }
