/* 令牌正本（代码）：《Molly 设计规范 v1.1》第 2 章——主绿操作＋绿调纸白＋文档区深蓝/深绿；
 * 主蓝、青、米白已按 2.8 退役，本文件样式层零出现（退役值见规范 2.8 表）。 */
:root {
  --color-primary: #0f9374;
  --color-primary-light: #eaf6f1;
  --color-deep-green: #3f7458;
  --color-doc-navy: #16324f;
  --color-doc-navy-d: #0e2236;
  --color-background: #f7f8f6;
  --color-surface: #ffffff;
  --color-surface-alt: #f5f7f6;
  --color-border: #e3e9e6;
  --color-btn-line: #d3dcd6;
  --color-line-doc: #e3e8ec;
  --color-text-primary: #17212b;
  --color-text-secondary: #5d6b78;
  --color-text-muted: #68767d;
  --color-note: #68767d;
  /* 三栏分区定版（2026-11-03，数值对照已验收原型取齐）：外框空带＋三栏各自地面＋右栏标题带 */
  --color-frame: #eceee9;
  --color-ground-rail: #e9f3ec;
  --color-ground-stage: #e6ede4;
  --color-stage-band: #dbe6d8;
  --color-success: #3f7458;
  --color-warning: #8b744e;
  --color-danger: #b15d5d;
  --tone-green-bg: #fafcfa; --tone-green-bd: #d8e6dc;
  --tone-blue: #4e729a; --tone-blue-bg: #fafcfe; --tone-blue-bd: #d9e4f0;
  --tone-gold-bg: #fdfbf7; --tone-gold-bd: #e7dfd1;
  --tone-red-bg: #fffcfc; --tone-red-bd: #ecd8d8;
  --color-navy: rgba(22, 50, 79, 0.96);
  --p05: rgba(15, 147, 116, 0.05);
  --p12: rgba(15, 147, 116, 0.12);
  --shadow-shell: 0 16px 40px rgba(15, 23, 42, 0.06);
  --shadow-mini: 0 6px 20px rgba(15, 23, 42, 0.04);
  --shadow: 0 8px 30px rgba(20, 37, 38, 0.035);
  --space-xs: 4px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; --space-xl: 48px;
  --radius-sm: 8px; --radius-md: 12px; --radius-lg: 18px; --radius-full: 999px;
  --radius-card: 18px; --radius-ctrl: 12px;
  --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Microsoft YaHei", Helvetica, Arial, sans-serif;
  --font-serif: "Noto Serif", "Noto Serif SC", Georgia, "Times New Roman", "Songti SC", "STSong", serif;
}
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; height: 100%; }
body { background: var(--color-frame); color: var(--color-text-primary); font-family: var(--font-sans); font-size: 14px; font-variant-numeric: tabular-nums; }
button { font-family: inherit; cursor: pointer; }
.hidden { display: none !important; }

/* 山东关联工作表：沿用交付板块令牌与文档卡，服务端开关确认后才出现入口。 */
#view-datasubmission .dsw-toolbar, #view-datasubmission .dsw-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 12px 0; }
#view-datasubmission .dsw-toolbar { justify-content: space-between; font-size: 12.5px; color: var(--color-text-secondary); }
#view-datasubmission .dsw-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0; }
#view-datasubmission .dsw-tabs [aria-current="page"] { color: var(--color-deep-green); border-color: var(--color-deep-green); background: var(--color-surface); }
#view-datasubmission .dsw-note { font-size: 12.5px; line-height: 1.65; color: var(--color-text-secondary); margin: 8px 0; }
#view-datasubmission .dsw-field { display: flex; flex-direction: column; gap: 8px; font-size: 12.5px; margin: 16px 0; }
#view-datasubmission .dsw input, #view-datasubmission .dsw select, #view-datasubmission .dsw textarea { font: inherit; padding: 8px 12px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text-primary); max-width: 100%; }
#view-datasubmission .dsw input { width: 120px; }
#view-datasubmission .dsw textarea { min-height: 72px; resize: vertical; }
#view-datasubmission .dsw-status { font-size: 12.5px; line-height: 1.65; color: var(--color-deep-green); padding: 12px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); }
#view-datasubmission .dsw-research, #view-datasubmission .dsw-record { padding: 16px 0; border-bottom: 1px solid var(--color-border); }
#view-datasubmission .dsw h2 { margin-bottom: 12px; }
#view-datasubmission .dsw h3 { font-size: 14px; line-height: 1.5; margin: 0 0 8px; }
#view-datasubmission .dsw p { margin-top: 8px; }
#view-datasubmission .dsw details { margin: 12px 0; }
#view-datasubmission .dsw summary { cursor: pointer; color: var(--color-deep-green); font-size: 12.5px; }
#view-datasubmission .dsw button:disabled { opacity: .5; cursor: not-allowed; }
#view-datasubmission .dsw button, #view-datasubmission [data-ws-entry] { font: inherit; font-size: 12.5px; padding: 8px 12px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-sm); color: var(--color-deep-green); background: var(--color-surface); }
#view-datasubmission .dsw .dsv-clock-bar { position: sticky; top: 0; z-index: 4; }
#view-datasubmission .dsw a { color: var(--color-deep-green); text-underline-offset: 3px; }
#view-datasubmission .dsw-subtotal { color: var(--color-doc-navy); font-size: 20px; line-height: 1.1; margin: 16px 0; }
#view-datasubmission .dsw-note { overflow-wrap: anywhere; }

/* 三栏分区：栏间不用细线，靠 22px 空带＋各自地面分开（原型分区版数值） */
#app { display: flex; height: 100vh; height: 100dvh; overflow: hidden; background: var(--color-frame); padding: 22px; gap: 22px; }

/* ---------- 左导航（母版 v1.1：150px 横排文字导航） ---------- */
#rail { width: 150px; flex: 0 0 150px; background: var(--color-ground-rail); border-radius: var(--radius-md); display: flex; flex-direction: column; align-items: stretch; padding: 20px 10px 16px; gap: 8px; }
.rail-logo { display: flex; flex-direction: row; align-items: center; gap: 8px; padding: 2px 8px 12px; }
.rail-logo .mark { flex: 0 0 auto; width: 32px; height: 32px; border-radius: 10px; background: var(--color-primary); display: flex; align-items: center; justify-content: center; }
.rail-logo .mark svg { width: 20px; height: 20px; }
.rail-logo-name { font-size: 15px; font-weight: 600; color: var(--color-text-primary); }
.rail-sep { border-top: 1px solid var(--color-border); margin: 12px 6px; }
.rail-item { border: 0; background: transparent; color: var(--color-text-secondary); display: flex; flex-direction: row; align-items: center; gap: 10px; padding: 10px; border-radius: var(--radius-md); font-size: 14px; text-align: left; }
.rail-item svg { width: 20px; height: 20px; flex: 0 0 auto; }
.rail-beta { font-size: 11px; font-weight: 400; color: var(--color-text-muted); margin-left: 5px; letter-spacing: .02em; white-space: nowrap; }
.rail-item:hover { background: var(--color-surface-alt); }
/* 绿地面上的选中态：白片＋深绿字（与分段切换器选中段同语言） */
.rail-item.active { background: var(--color-surface); color: var(--color-deep-green); font-weight: 600; }
.rail-spacer { flex: 1; }
/* 身份条（2026-11-05，规范 3.16）：左栏底部——飞书认人状态／手动身份兜底 */
.auth-bar { padding: 10px; border-top: 1px solid var(--color-border); font-size: 12px; color: var(--color-text-secondary); display: flex; flex-direction: column; gap: 6px; }
.auth-bar .auth-who { color: var(--color-text-primary); font-size: 13px; font-weight: 600; line-height: 1.5; }
.auth-bar .auth-note { line-height: 1.5; }
.auth-bar .auth-login-btn, .auth-lock .auth-login-btn { font: inherit; font-size: 13px; padding: 6px 10px; border: 0; border-radius: var(--radius-ctrl); background: var(--color-primary); color: #fff; cursor: pointer; text-align: center; }
.auth-bar select { font: inherit; font-size: 13px; padding: 5px 9px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-ctrl); background: var(--color-surface); color: var(--color-text-primary); width: 100%; }
.auth-bar .auth-link { font: inherit; font-size: 12px; padding: 0; border: 0; background: transparent; color: var(--color-text-muted); cursor: pointer; text-align: left; text-decoration: underline; }
.auth-bar .auth-verify { color: var(--color-primary); font-size: 13px; font-weight: 600; line-height: 1.5; }
/* 锁定态（规范 3.16.5）：无会话时对话栏与各板块视图一律不露，只放行锁定页 */
body.auth-locked #chat { display: none; }
body.auth-locked #stage .view { display: none !important; }
body.auth-locked #stage #view-locked { display: block !important; }
.auth-lock .auth-lock-error { color: var(--color-danger); line-height: 1.7; margin: 0 0 10px; }
.auth-lock .auth-login-btn { padding: 9px 22px; }

/* ---------- 对话栏 ---------- */
/* 中间对话区：纯纸白（surface）作舞台，无分隔线，圆角独立成栏 */
#chat { min-width: 320px; flex: 45 1 0; display: flex; flex-direction: column; background: var(--color-surface); border-radius: var(--radius-md); overflow: hidden; }
.chat-head { padding: 16px 24px 12px; border-bottom: 1px solid var(--color-border); display: flex; justify-content: flex-start; gap: 8px; }
.chat-title { font-family: var(--font-serif); font-size: 19px; word-break: break-word; }
.chat-sub { color: var(--color-text-muted); font-size: 12px; margin-top: 3px; line-height: 1.5; }
/* （五期已移除常驻连接状态标：健康时不显示，故障时用 .conn-banner 提示） */
.chat-log { flex: 1; overflow-y: auto; padding: 20px 24px; display: flex; flex-direction: column; gap: 24px; }
/* 答案排版修订（2026-11-02，母版 02 §3.5 附记）：行距/段距/列表间距/气泡内边距各松一档，字号不动 */
.msg { max-width: 92%; min-width: 0; line-height: 1.75; white-space: pre-wrap; word-break: break-word; }
.msg .who { font-size: 11px; color: var(--color-text-muted); margin-bottom: 4px; }
.msg.user { align-self: flex-end; }
/* 用户气泡（2026-11-03 降噪定版）：浅绿底＋墨字；深绿（主绿）只留给发送钮、选中态等主操作 */
.msg.user .bubble { background: var(--color-primary-light); color: var(--color-text-primary); border-radius: var(--radius-lg); padding: 12px 16px; }
.msg.bot .bubble { background: var(--color-surface-alt); border-radius: var(--radius-lg); padding: 12px 16px; }
.msg .quote-in { display: block; border-left: 3px solid var(--p12); background: var(--p05); color: var(--color-text-secondary); font-size: 12px; padding: 7px 11px; margin-bottom: 9px; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; }
.msg.bot .quote-in { border-left-color: var(--color-primary); }
.thinking { display: inline-flex; align-items: center; gap: 7px; color: var(--color-text-muted); }
.thinking .dots i { display: inline-block; width: 5px; height: 5px; margin-right: 3px; border-radius: 50%; background: var(--color-primary); animation: blink 1.2s infinite; }
.thinking .dots i:nth-child(2) { animation-delay: .2s; } .thinking .dots i:nth-child(3) { animation-delay: .4s; }
@keyframes blink { 0%, 80%, 100% { opacity: .25; } 40% { opacity: 1; } }
.chat-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 5px 11px; font-size: 12px; }
.chip:hover { border-color: var(--color-primary); color: var(--color-primary); }
.quote-bar { margin: 0 24px; }
/* 引用折叠卡（规范 3.8：tone-green 浅底＋主绿 3px 左边线＋定位眉题行）；引用条与消息内卡片同款 */
.quote-card { background: var(--tone-green-bg); border-left: 3px solid var(--color-primary); border-radius: 0 var(--radius-md) var(--radius-md) 0; padding: 9px 12px; margin-bottom: 9px; color: var(--color-text-primary); font-size: 12.5px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; text-align: left; max-width: 100%; min-width: 0; box-sizing: border-box; }
.qc-loc { font-size: 11px; color: var(--color-text-muted); margin-bottom: 3px; word-break: break-word; }
/* 引用正文（2026-11-03 终验修复）：此前 .qc-body 无专属规则、全靠继承，
 * 窄栏下长串数字/英文可能溢出被裁；钉死折行与断词，不许静默裁字
 * （超过 80 字的折叠由组件显式计数＋展开钮承担，非静默截断）。 */
.qc-body { display: block; white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; max-width: 100%; min-width: 0; }
.qc-head { display: flex; align-items: center; gap: 8px; margin-bottom: 3px; }
.quote-label { color: var(--color-primary); font-size: 11px; font-weight: 700; letter-spacing: .04em; }
.qc-toggle { border: 0; background: transparent; color: var(--color-primary); font-size: 11.5px; cursor: pointer; padding: 0; margin-left: auto; }
.qc-toggle:hover { text-decoration: underline; }
.quote-clear { border: 0; background: transparent; font-size: 15px; color: var(--color-text-muted); cursor: pointer; padding: 0 2px; line-height: 1; }
.msg.user .quote-card { margin-bottom: 8px; }
/* 四期：研究徽章（已联网快研／研究存档） */
.research-badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: var(--radius-full); margin-bottom: 9px; }
.rb-quick { background: var(--tone-blue-bg); color: var(--tone-blue); border: 1px solid var(--tone-blue-bd); }
.rb-archive { background: var(--tone-green-bg); color: var(--color-deep-green); border: 1px solid var(--tone-green-bd); }
/* 四期追加项 2：markdown 真渲染排版 */
.msg .txt.md { display: block; white-space: normal; }
.md-p { margin: 0 0 10px; }
.md-p:last-child { margin-bottom: 0; }
.md-h { margin: 13px 0 7px; font-size: 14.5px; line-height: 1.45; }
.md-h:first-child { margin-top: 0; }
.md-list { margin: 5px 0 11px; padding-left: 20px; }
.md-list li { margin-bottom: 6px; }
.md-q { margin: 9px 0; padding: 7px 12px; border-left: 3px solid var(--color-border); color: var(--color-text-secondary); }
.md-hr { border: 0; border-top: 1px solid var(--color-border); margin: 13px 0; }
.md-table-wrap { overflow-x: auto; margin: 10px 0; }
.md-table { border-collapse: collapse; width: 100%; font-size: 12.5px; line-height: 1.65; }
.md-table th, .md-table td { border: 1px solid var(--color-border); padding: 7px 10px; text-align: left; vertical-align: top; }
.md-table th { background: var(--color-primary-light); font-weight: 600; white-space: nowrap; }
.md-table td { background: var(--color-surface); }
.txt.md code, .rs-body code { background: var(--p05); border-radius: 4px; padding: 0 4px; font-size: .92em; }
/* 契约第二层：「展开细讲」折叠区 */
.deep-fold { margin-top: 12px; border-top: 1px dashed var(--color-border); }
.deep-fold > summary { cursor: pointer; color: var(--color-primary); font-size: 12.5px; font-weight: 600; padding-top: 9px; list-style: none; }
.deep-fold > summary::-webkit-details-marker { display: none; }
.deep-fold > summary::before { content: "▸ "; }
.deep-fold[open ] > summary::before { content: "▾ "; }
.deep-body { margin-top: 9px; }
/* 确定性走势小图（[chart:code] 标记，前端按查库原值渲染） */
.chat-chart { margin: 10px 0; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 10px 12px 8px; }
.chat-chart svg { width: 100%; height: auto; display: block; }
.chat-chart text { paint-order: stroke; stroke: #ffffff; stroke-width: 3px; stroke-linejoin: round; }
.cc-cap { font-size: 11px; color: var(--color-text-muted); margin-top: 5px; line-height: 1.6; }
.cc-loading { font-size: 12px; color: var(--color-text-muted); padding: 6px 0; }
/* 深研开关（五期：ChatGPT 式开关，取代单独面板） */
.chat-tools { display: flex; align-items: center; gap: 8px; padding: 10px 24px 0; }
.btn-mini { font-size: 12px; padding: 3px 11px; }
.ct-hint { font-size: 11px; color: var(--color-text-muted); line-height: 1.45; }
.deep-switch { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 4px 12px 4px 9px; font-size: 12.5px; font-family: inherit; cursor: pointer; flex: 0 0 auto; }
.deep-switch .ds-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-border); }
.deep-switch.on { background: var(--color-primary); border-color: var(--color-primary); color: #fff; font-weight: 600; }
.deep-switch.on .ds-dot { background: #fff; }
/* 连接故障提示（五期：只在连不上时出现，替代常驻状态标） */
.conn-banner { margin: 8px 24px 0; background: var(--tone-red-bg); color: var(--color-danger); border: 1px solid var(--tone-red-bd); border-radius: var(--radius-md); padding: 7px 11px; font-size: 12.5px; }
/* Briefing 研究补充 */
.rs-item { border-top: 1px dashed var(--color-border); padding: 11px 0 4px; }
.rs-item:first-of-type { border-top: 0; }
.rs-head { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 5px; }
.rs-q { font-weight: 600; font-size: 13px; }
.rs-body { font-size: 13px; }
.rs-body .md-p { margin-bottom: 5px; }
.chat-input-row { display: flex; gap: 8px; padding: 12px 24px 18px; }
#chat-input { flex: 1; resize: none; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 9px 11px; font-family: inherit; font-size: 14px; background: var(--color-surface); color: inherit; }
#chat-input:focus { outline: 2px solid var(--p12); border-color: var(--color-primary); }
.bf-gen-row input, .bf-person-row input, .sim-controls select, .sim-controls input, .sim-input-row textarea { border-color: var(--color-btn-line); }
#chat-send { border: 0; background: var(--color-primary); color: #fff; border-radius: var(--radius-ctrl); padding: 0 18px; font-size: 14px; font-weight: 600; }
#chat-send:disabled { opacity: .5; cursor: default; }
/* 流式生成中的「停止」态（规范 3.9.2）：次钮形态（白底边线），点按中止 */
#chat-send.stop-mode, .btn-primary-sm.stop-mode { background: var(--color-surface); color: var(--color-danger); border: 1px solid var(--tone-red-bd); opacity: 1; cursor: pointer; }
/* 问答面第二层小字注脚（渐进披露：口径说明降层，只随空对话欢迎语出现） */
.chat-foot-note { font-size: 11.5px; color: var(--color-text-muted); line-height: 1.6; padding: 0 2px; }

/* ---------- 右展示区 ---------- */
/* 右栏：独立的略深地面；栏顶标题带（h1＋lede 连成带，负边距吃到栏内边距） */
#stage { flex: 55 1 0; overflow-y: auto; padding: 22px 24px 60px; background: var(--color-ground-stage); border-radius: var(--radius-md); container-type: inline-size; container-name: stage; }
.view { max-width: 900px; margin: 0; }
.view h1 { font-family: var(--font-serif); font-weight: 600; font-size: 20px; margin: 0 0 6px; }
.view .lede { color: var(--color-text-secondary); line-height: 1.7; margin: 0 0 20px; }
.view > h1 { margin: -22px -24px 0; padding: 22px 24px 4px; background: var(--color-stage-band); border-radius: var(--radius-md) var(--radius-md) 0 0; }
.view > .lede { margin: 0 -24px 24px; padding: 2px 24px 18px; background: var(--color-stage-band); }
.card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 16px 18px; margin-bottom: 14px; }
.note-box { background: var(--color-primary-light); border-radius: var(--radius-lg); padding: 13px 16px; line-height: 1.7; color: var(--color-text-secondary); margin-bottom: 16px; font-size: 13px; }

/* 地图 */
.stage-band { display: flex; align-items: baseline; gap: 10px; margin: 30px 0 14px; }
.stage-band:first-child { margin-top: 4px; }
.stage-band .stage-name { font-family: var(--font-serif); font-size: 17px; }
.stage-band .stage-sub { color: var(--color-text-muted); font-size: 12px; }
.stage-band .line { flex: 1; border-top: 1px solid var(--color-border); transform: translateY(-3px); }
.milestone { display: flex; align-items: center; gap: 9px; margin: 16px 2px 6px; color: var(--color-navy); font-size: 13px; }
.milestone .diamond { color: var(--color-warning); font-size: 13px; }
.milestone .mline { flex: 1; border-top: 1px dashed var(--color-border); }
.node { background: var(--color-surface); border: 1px solid transparent; border-radius: var(--radius-lg); margin-bottom: 14px; overflow: hidden; box-shadow: 0 1px 2px rgba(30, 50, 35, .06); }
.node-head { width: 100%; border: 0; background: transparent; display: flex; align-items: center; gap: 12px; padding: 16px 18px; text-align: left; }
.node-num { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; background: var(--color-primary-light); color: var(--color-deep-green); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.node-title { font-size: 15px; color: var(--color-text-primary); min-width: 0; word-break: break-word; overflow-wrap: anywhere; }
.node-purpose { color: var(--color-text-muted); font-size: 12.5px; margin: 0 0 10px; }
.node-caret { margin-left: auto; color: var(--color-text-muted); transition: transform .15s; }
.node.open .node-caret { transform: rotate(180deg); }
.node-body { display: none; padding: 4px 18px 18px 56px; }
.node.open .node-body { display: block; }
.node-points { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.node-points span { background: var(--color-surface-alt); border-radius: var(--radius-full); padding: 4px 10px; font-size: 12px; color: var(--color-text-secondary); }
.node-link { display: inline-block; color: var(--color-primary); text-decoration: none; font-size: 13px; margin-bottom: 10px; }
.node-link:hover { text-decoration: underline; }
.faq-item { border-top: 1px solid var(--color-border); padding: 9px 0 2px; }
.faq-q { width: 100%; border: 0; background: transparent; text-align: left; padding: 2px 0 7px; font-size: 13.5px; color: var(--color-text-primary); display: flex; justify-content: space-between; gap: 8px; }
.faq-q::after { content: "＋"; color: var(--color-text-muted); }
.faq-item.open .faq-q::after { content: "－"; }
.faq-a { display: none; color: var(--color-text-secondary); line-height: 1.7; font-size: 13px; padding-bottom: 8px; white-space: pre-wrap; }
.faq-item.open .faq-a { display: block; }
.node-more { border: 0; background: transparent; color: var(--color-primary); font-size: 12.5px; padding: 6px 0 2px; }
.node-detail { display: none; margin-top: 8px; background: var(--p05); border-radius: var(--radius-md); padding: 11px 13px; line-height: 1.75; font-size: 13px; color: var(--color-text-secondary); white-space: pre-wrap; }
.node-detail.show { display: block; }
.fork { border: 1px dashed var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-lg); padding: 16px 18px; margin: 0 0 14px 0; }
.fork-head { width: 100%; border: 0; background: transparent; display: flex; align-items: center; gap: 10px; padding: 0; text-align: left; font-size: 14px; font-weight: 600; color: var(--color-text-primary); }
.fork-head .node-caret { margin-left: auto; }
.fork.open .node-caret { transform: rotate(180deg); }
.fork-body { display: none; margin-top: 8px; }
.fork.open .fork-body { display: block; }
.fork .fork-sub { color: var(--color-text-muted); font-size: 12px; margin-bottom: 8px; }
.fork .faq-item { border-top-color: var(--tone-gold-bd); }
.map-rules-wrap { margin-top: 30px; }
.map-rules-head { width: 100%; border: 0; background: transparent; display: flex; align-items: center; gap: 10px; padding: 0; text-align: left; font-size: 13px; font-weight: 600; color: var(--color-navy); }
.map-rules-head .node-caret { margin-left: auto; }
.map-rules-wrap.open .node-caret { transform: rotate(180deg); }
.map-rules { display: none; margin-top: 8px; color: var(--color-text-muted); font-size: 12.5px; line-height: 1.8; }
.map-rules-wrap.open .map-rules { display: block; }

/* Briefing / 教练 / 问答 / 设置 */
.brief-sec { margin-bottom: 10px; }
.brief-sec h3 { margin: 0 0 5px; font-size: 15px; font-weight: 600; }
.brief-sec p { margin: 0; color: var(--color-text-secondary); line-height: 1.7; font-size: 13px; }
.brief-sec .src { color: var(--color-text-muted); font-size: 12px; margin-top: 4px; }
.sample-tag { display: inline-block; font-size: 11px; color: var(--color-warning); border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-full); padding: 2px 9px; margin-bottom: 8px; }
.sample-line { color: var(--color-text-muted); line-height: 1.8; font-size: 13px; }
/* 六期教练：目录卡＋授课大纲清单（旧题库样式已下线） */
.coach-card-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
/* 卡头眉题（规范 3.2：应用区眉题用主绿） */
.coach-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .18em; color: var(--color-primary); }
.coach-card-head h3 { margin: 0; font-size: 15.5px; font-weight: 600; }
.coach-card-head .goal { color: var(--color-text-muted); font-size: 12.5px; }
.coach-prog { margin-left: auto; font-size: 12.5px; color: var(--color-text-secondary); }
.coach-prog b { color: var(--color-primary); font-size: 14px; }
.coach-bar { height: 6px; background: var(--color-surface-alt); border-radius: var(--radius-full); margin: 10px 0 12px; overflow: hidden; }
.coach-bar i { display: block; height: 100%; background: var(--color-primary); border-radius: var(--radius-full); }
.coach-done-banner { background: var(--tone-green-bg); border: 1px solid var(--tone-green-bd); color: var(--color-text-primary); border-radius: var(--radius-lg); padding: 13px 16px; line-height: 1.7; margin-bottom: 12px; font-size: 13.5px; }
.lesson-points { list-style: none; margin: 6px 0 0; padding: 0; }
.lesson-points li { display: flex; align-items: center; gap: 9px; padding: 8px 2px; border-top: 1px solid var(--color-border); font-size: 13.5px; color: var(--color-text-secondary); }
.lesson-points li:first-child { border-top: 0; }
.lp-ic { flex: 0 0 20px; width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid var(--color-border); display: inline-flex; align-items: center; justify-content: center; font-size: 11px; color: transparent; background: var(--color-surface); }
.lesson-points li.passed { color: var(--color-text-primary); }
.lesson-points li.passed .lp-ic { background: var(--color-success); border-color: var(--color-success); color: #fff; }
.lesson-points li.now { color: var(--color-text-primary); font-weight: 600; }
.lesson-points li.now .lp-ic { border-color: var(--color-primary); color: var(--color-primary); }
.lp-tag { margin-left: auto; font-size: 11.5px; color: var(--color-text-muted); font-weight: 400; }
.lesson-points li.now .lp-tag { color: var(--color-primary); }
/* 对话内检查题卡（老师出题，前端渲染可点选） */
.check-card { margin-top: 12px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 13px 15px; }
.check-tag { font-size: 11px; font-weight: 700; letter-spacing: .04em; color: var(--color-primary); margin-bottom: 6px; }
.check-q { font-size: 13.5px; line-height: 1.7; color: var(--color-text-primary); margin-bottom: 10px; word-break: break-word; overflow-wrap: anywhere; }
/* 选项钮（规范 3.1.3）：虚线描边圆角胶囊，文案即点下发出的回复原文；选中＝主绿实线＋浅绿底＋深绿字 */
.check-opt { display: block; width: 100%; text-align: left; border: 1.5px dashed var(--color-btn-line); background: var(--color-surface); border-radius: var(--radius-full); padding: 9px 16px; margin-bottom: 6px; font-size: 13px; color: var(--color-text-primary); cursor: pointer; font-family: inherit; word-break: break-word; overflow-wrap: anywhere; }
.check-opt:hover:not(:disabled) { border-color: var(--color-primary); color: var(--color-deep-green); }
.check-opt:disabled { cursor: default; opacity: .75; }
.check-opt.chosen { border: 1.5px solid var(--color-primary); background: var(--color-primary-light); color: var(--color-deep-green); opacity: 1; font-weight: 600; }
.check-hint { font-size: 12px; color: var(--color-text-muted); line-height: 1.6; }
.sys-line { text-align: center; color: var(--color-text-muted); font-size: 12px; margin: 10px 0 2px; }
.exit-course { border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 4px 12px; font-size: 12.5px; font-family: inherit; cursor: pointer; flex: 0 0 auto; }
.exit-course:hover { border-color: var(--color-primary); color: var(--color-primary); }
/* 六期贴图：待发缩略条＋消息内图 */
.attach-bar { display: flex; gap: 8px; flex-wrap: wrap; padding: 8px 24px 0; }
.att-item { position: relative; width: 56px; height: 56px; }
.att-item img { width: 56px; height: 56px; object-fit: cover; border-radius: var(--radius-md); border: 1px solid var(--color-border); display: block; }
.att-del { position: absolute; top: -7px; right: -7px; width: 18px; height: 18px; border-radius: 50%; border: 0; background: var(--color-navy); color: #fff; font-size: 12px; line-height: 1; cursor: pointer; padding: 0; }
.attach-btn { border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-md); padding: 0 11px; cursor: pointer; display: inline-flex; align-items: center; }
.attach-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
#chat.drag-over #chat-log { outline: 2px dashed var(--color-primary); outline-offset: -6px; }
.msg-imgs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 9px; }
.msg-imgs img { max-width: 210px; max-height: 160px; border-radius: var(--radius-md); border: 1px solid var(--color-border); display: block; }
.qa-item .qa-q { font-weight: 600; margin-bottom: 4px; word-break: break-word; overflow-wrap: anywhere; }
.qa-item .qa-a { color: var(--color-text-secondary); line-height: 1.7; white-space: pre-wrap; display: none; margin-top: 6px; }
.qa-item.open .qa-a { display: block; }
.qa-item .qa-t { color: var(--color-text-muted); font-size: 11.5px; }
.empty { color: var(--color-text-muted); padding: 26px 0; text-align: left; }
.btn-ghost { border: 1px solid var(--color-btn-line); background: var(--color-surface); border-radius: var(--radius-ctrl); padding: 6px 14px; font-size: 12.5px; color: var(--color-text-primary); }
.btn-ghost:hover { border-color: var(--color-primary); color: var(--color-primary); }

/* 选中浮出 */
.ask-pop { position: fixed; z-index: 50; display: flex; gap: 4px; background: var(--color-navy); border-radius: var(--radius-md); padding: 4px; box-shadow: var(--shadow-shell); }
.ask-pop button { border: 0; background: transparent; color: #fff; font-size: 12.5px; padding: 5px 10px; border-radius: var(--radius-sm); }
.ask-pop button:hover { background: rgba(255,255,255,.14); }

/* 窄屏：只有真手机（≤640px）才堆叠 */
@media (max-width: 640px) {
  #app { flex-direction: column; padding: 12px; gap: 14px; }
  #rail { width: 100%; flex: 0 0 auto; flex-direction: row; justify-content: space-around; padding: 6px 4px; border-right: 0; }
  .rail-logo { flex-direction: row; padding: 0; } .rail-sep, .rail-spacer { display: none; }
  .rail-item { width: auto; padding: 6px 8px; font-size: 13px; }
  #chat { width: 100%; min-width: 0; max-width: none; flex: 1 1 auto; border-right: 0; }
  #stage { display: none; }
  body.show-stage #chat { display: none; }
  body.show-stage #stage { display: block; }
  /* 标题左对齐规矩的手机边距（规范 3.17.3）：内容左边距收窄到 16px，竖线不变 */
  #stage { padding: 18px 16px 48px; }
  .view > h1 { margin: -18px -16px 0; padding: 18px 16px 4px; }
  .view > .lede { margin: 0 -16px 20px; padding: 2px 16px 16px; }
  .chat-head { padding: 14px 16px 10px; }
  .chat-log { padding: 16px; }
  .chat-tools { padding: 10px 16px 0; }
  .chat-input-row { padding: 12px 16px 16px; }
  .conn-banner { margin: 8px 16px 0; }
  .chat-stub { padding: 16px; }
}

/* 二期：回答下方出处小字 */
.msg .src-line { margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--color-border); color: var(--color-text-muted); font-size: 12px; line-height: 1.65; }


/* 三期：Briefing 存档 */
.bf-gen-row { display: flex; gap: 8px; }
.bf-gen-row input { flex: 1; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 9px 11px; font-family: inherit; font-size: 13.5px; background: var(--color-surface); color: inherit; }
.bf-gen-row input:focus { outline: 2px solid var(--p12); border-color: var(--color-primary); }
.bf-gen-row button, .btn-primary-sm { border: 0; background: var(--color-primary); color: #fff; border-radius: var(--radius-md); padding: 8px 16px; font-size: 13px; }
.bf-gen-row button:disabled, .btn-primary-sm:disabled { opacity: .5; cursor: default; }
.bf-gen-status { color: var(--color-text-muted); font-size: 12.5px; margin-top: 8px; min-height: 16px; }
/* 五期：校名联想下拉＋状态片＋生成进度 */
.ac-wrap { position: relative; flex: 1; display: flex; }
.ac-wrap input { flex: 1; }
.ac-list { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-mini); z-index: 30; overflow: hidden; }
.ac-item { display: flex; align-items: center; gap: 8px; width: 100%; border: 0; background: transparent; padding: 9px 12px; font-size: 13.5px; font-family: inherit; color: inherit; text-align: left; cursor: pointer; }
.ac-item:hover, .ac-item.active { background: var(--color-primary-light); }
.ac-tag { margin-left: auto; font-size: 11px; color: var(--color-text-muted); }
.chip-status { display: inline-block; font-size: 11px; border-radius: var(--radius-full); padding: 2px 9px; border: 1px solid var(--color-border); color: var(--color-text-secondary); }
.chip-ready { color: var(--color-deep-green); border-color: var(--tone-green-bd); background: var(--tone-green-bg); }
.chip-gen { color: var(--tone-blue); border-color: var(--tone-blue-bd); background: var(--tone-blue-bg); }
.chip-stale { color: var(--color-warning); border-color: var(--tone-gold-bd); background: var(--tone-gold-bg); }
.bf-banner { background: var(--color-primary-light); border-radius: var(--radius-md); padding: 9px 13px; font-size: 13px; color: var(--color-text-secondary); margin-bottom: 12px; line-height: 1.6; }
.bf-progress { margin-bottom: 14px; }
.bf-prog-title { font-weight: 600; font-size: 14.5px; margin-bottom: 8px; }
.bf-steps { list-style: none; margin: 0 0 10px; padding: 0; }
.bf-steps li { display: flex; align-items: center; gap: 8px; padding: 4px 0; color: var(--color-text-muted); font-size: 13.5px; }
.bf-steps li .st-ic { width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--color-border); display: inline-flex; align-items: center; justify-content: center; font-size: 11px; flex: 0 0 auto; }
.bf-steps li.done { color: var(--color-text-secondary); }
.bf-steps li.done .st-ic { background: var(--color-success); border-color: var(--color-success); color: #fff; }
.bf-steps li.now { color: var(--color-text-primary); font-weight: 600; }
.bf-steps li.now .st-ic { border-color: var(--color-primary); color: var(--color-primary); }
.bf-eta { font-size: 12.5px; color: var(--color-text-muted); }
.bf-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.bf-main { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.bf-name { font-size: 15px; font-weight: 600; }
.bf-date { color: var(--color-text-muted); font-size: 12px; }
.badge { display: inline-block; font-size: 11px; border-radius: var(--radius-full); padding: 2px 9px; border: 1px solid var(--color-border); color: var(--color-text-secondary); }
.badge-full { color: var(--color-deep-green); border-color: var(--tone-green-bd); background: var(--tone-green-bg); }
.badge-lite { color: var(--tone-blue); border-color: var(--tone-blue-bd); background: var(--tone-blue-bg); }
.badge-stale { color: var(--color-warning); border-color: var(--tone-gold-bd); background: var(--tone-gold-bg); }
.badge-pass { color: var(--color-deep-green); border-color: var(--tone-green-bd); background: var(--tone-green-bg); }
.badge-fail, .badge-veto { color: var(--color-danger); border-color: var(--tone-red-bd); background: var(--tone-red-bg); }
.bf-doc-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 22px 0 12px; }
.bf-doc-head h2 { font-family: var(--font-serif); font-size: 22px; margin: 0; }
.bf-head .bf-judge { font-size: 14px; color: var(--color-text-primary); font-weight: 600; margin-bottom: 6px; }
.bf-line { margin: 0 0 6px; color: var(--color-text-secondary); line-height: 1.75; font-size: 13px; }
.bf-line:last-child { margin-bottom: 0; }
.bf-pit { color: var(--color-doc-navy); font-weight: 600; }
.bf-dim { color: var(--color-text-muted); font-size: 12.5px; }
.bf-k { display: inline-block; font-size: 11px; color: var(--color-primary); border: 1px solid var(--p12); background: var(--p05); border-radius: var(--radius-sm); padding: 0 6px; margin-right: 7px; }
.bf-src { color: var(--color-text-muted); font-size: 12px; }
.bf-basis { color: var(--color-text-muted); font-size: 11.5px; margin-left: 7px; border: 1px solid var(--color-border); border-radius: var(--radius-full); padding: 0 7px; }
.bf-src-line { color: var(--color-text-muted); font-size: 12px; margin: 8px 0 0; line-height: 1.6; }
.bf-table { border-collapse: collapse; margin: 4px 0 10px; font-size: 12.5px; }
.bf-table th, .bf-table td { border: 1px solid var(--color-border); padding: 5px 9px; text-align: left; color: var(--color-text-secondary); }
.bf-table th { background: var(--color-surface-alt); color: var(--color-text-primary); font-weight: 600; }
.bf-fact { background: var(--p05); border-radius: var(--radius-md); padding: 7px 10px; }
.bf-peer { border-top: 1px solid var(--color-border); padding: 9px 0 4px; }
.bf-peer:first-of-type { border-top: 0; }
.bf-peer-name { font-weight: 600; font-size: 13.5px; margin-bottom: 3px; }
.bf-why { color: var(--color-text-muted); font-size: 12px; font-weight: 400; margin-left: 8px; }
.bf-steps { margin: 0 0 10px; padding-left: 19px; line-height: 1.8; color: var(--color-text-secondary); font-size: 13px; }
.bf-no { color: var(--color-doc-navy); font-weight: 600; }
.bf-yes { color: var(--color-success); }
.miss-line { border: 1px dashed var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); color: var(--color-text-secondary); font-size: 12.5px; line-height: 1.7; padding: 8px 11px; margin-top: 8px; }
/* 七期：拜访对象与关注点输入＋对象附页 */
.bf-person-row { display: flex; gap: 8px; margin-top: 8px; }
.bf-person-row input { flex: 1; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 9px 11px; font-family: inherit; font-size: 13.5px; background: var(--color-surface); color: inherit; min-width: 0; }
.bf-person-row input:focus { outline: 2px solid var(--p12); border-color: var(--color-primary); }
.bf-focus-chip { border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 3px 11px; font-size: 12.5px; font-family: inherit; cursor: pointer; margin: 0 2px 2px 0; }
.bf-focus-chip.on { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.bf-gen .bf-gen-row { margin-top: 8px; }
.bf-addenda-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 20px 0 10px; }
.bf-addenda-title { font-family: var(--font-serif); font-size: 16px; font-weight: 600; }
.add-chip { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 1px; border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-primary); border-radius: var(--radius-md); padding: 6px 12px; font-size: 13px; font-family: inherit; cursor: pointer; text-align: left; }
.add-chip.on { border-color: var(--color-primary); background: var(--color-primary-light); }
.add-chip:disabled { opacity: .65; cursor: default; }
.add-chip-sub { font-size: 11px; color: var(--color-text-muted); }
.bf-add-head { margin-top: 6px; }
.bf-add-focus { font-size: 13px; color: var(--color-text-secondary); margin-bottom: 10px; }
.bf-add-note { background: var(--tone-gold-bg); border: 1px dashed var(--tone-gold-bd); border-radius: var(--radius-md); padding: 8px 11px; }

/* 三期：场景模拟 */
.sim-controls { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.sim-controls select, .sim-controls input { border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 8px 10px; font-family: inherit; font-size: 13px; background: var(--color-surface); color: inherit; }
.sim-controls input { width: 150px; }
.sim-log { border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-background); padding: 13px 14px; max-height: 430px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }
.sim-scene { font-size: 12.5px; color: var(--color-text-muted); line-height: 1.7; border-bottom: 1px dashed var(--color-border); padding-bottom: 9px; }
.sim-msg { max-width: 88%; }
.sim-msg .sim-who { font-size: 11px; color: var(--color-text-muted); margin-bottom: 3px; }
.sim-msg.me { align-self: flex-end; }
.sim-msg.me .sim-bubble { background: var(--color-primary-light); color: var(--color-text-primary); }
.sim-msg.cust .sim-bubble { background: var(--color-surface); border: 1px solid var(--color-border); }
.sim-bubble { border-radius: var(--radius-lg); padding: 9px 13px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; font-size: 13.5px; }
.sim-input-row { display: flex; gap: 8px; margin-top: 10px; }
.sim-input-row textarea { flex: 1; resize: none; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 9px 11px; font-family: inherit; font-size: 13.5px; background: var(--color-surface); color: inherit; }
.sim-input-row textarea:focus { outline: 2px solid var(--p12); border-color: var(--color-primary); }
.score-card { margin-top: 14px; border-top: 1px solid var(--color-border); padding-top: 12px; }
.score-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.score-total { font-family: var(--font-serif); font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1.1; /* v1.6 §2.4.5 显示数字自带行高（2026-11-04 量测闸照出的既有欠账，期1 顺手修） */ }
.score-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 7px; font-size: 13px; }
.score-label { flex: 0 0 118px; color: var(--color-text-primary); }
.score-bar { flex: 0 0 130px; height: 7px; background: var(--color-surface-alt); border-radius: var(--radius-full); overflow: hidden; }
.score-bar i { display: block; height: 100%; background: var(--color-primary); }
.score-num { color: var(--color-text-secondary); font-size: 12.5px; }
.score-evi { flex: 1 1 100%; color: var(--color-text-muted); font-size: 12.5px; line-height: 1.6; padding-left: 128px; }
.score-red { border: 1px solid var(--tone-red-bd); background: var(--tone-red-bg); color: var(--color-danger); border-radius: var(--radius-md); padding: 8px 11px; font-size: 12.5px; line-height: 1.6; margin-bottom: 7px; }

/* 三期补充：第二节走势曲线图＋紧凑表＋提报原值小表 */
.bf-chart { margin: 6px 0 0; }
.bf-chart svg { width: 100%; height: auto; display: block; }
.bf-chart text { paint-order: stroke; stroke: #ffffff; stroke-width: 3px; stroke-linejoin: round; }
.bf-chart-legend { display: flex; gap: 18px; flex-wrap: wrap; font-size: 12px; color: var(--color-text-secondary); margin-bottom: 2px; }
.bf-chart-legend .sw { display: inline-block; width: 16px; border-top: 3px solid var(--color-navy); border-radius: 2px; margin-right: 5px; vertical-align: middle; }
.bf-chart-legend .sw-total { border-top-color: var(--color-primary); }
.bf-chart-sum { font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.6; margin: 0 0 8px; }
.bf-table-compact { font-size: 12px; margin-bottom: 8px; }
.bf-table-compact th, .bf-table-compact td { padding: 3px 8px; }
.bf-fact-table { width: 100%; }
.bf-fact-src { margin: 0 0 4px; }
@media (max-width: 640px) {
  .bf-chart .pt-label { font-size: 16px; }
  .bf-chart .ax-label { font-size: 13.5px; }
  .bf-chart .yr-label { font-size: 14.5px; }
  .bf-fact-table { font-size: 11.5px; }
  .bf-fact-table th, .bf-fact-table td { padding: 4px 6px; }
}


/* ---------- mission 切换器（分段式）／首次选择页／建设中空状态 ----------
 * 母版标准组件（冻结件 02 第 5 节）：2026-11-03 改版定案——下拉大面板退役，
 * 改左栏分段胶囊：轨道次面底、选中段白底＋轻阴影＋深绿字、滑块 150ms 过渡；
 * 只许现行 tokens，不引入新颜色。描述文案只留首次选择页（.chooser-card）。 */
#mission-switch { position: relative; margin: 8px 0 12px; }
.mission-seg { position: relative; display: flex; background: var(--color-surface-alt); border-radius: var(--radius-full); padding: 3px; }
.mission-seg-thumb { position: absolute; top: 3px; left: 3px; height: calc(100% - 6px); background: var(--color-surface); border-radius: var(--radius-full); box-shadow: var(--shadow-mini); transition: transform .15s ease; }
.mission-seg-btn { position: relative; z-index: 1; flex: 1 1 0; min-width: 0; border: 0; background: transparent; border-radius: var(--radius-full); padding: 5px 4px; font-family: inherit; font-size: 13px; font-weight: 600; line-height: 1.25; color: var(--color-text-secondary); white-space: nowrap; transition: color .15s ease; }
.mission-seg-btn:hover { color: var(--color-text-primary); }
.mission-seg-btn.on { color: var(--color-deep-green); }
.ms-badge { font-size: 11px; font-weight: 400; color: var(--color-warning); border: 1px solid var(--color-warning); border-radius: var(--radius-full); padding: 0 6px; white-space: nowrap; }
.chooser { position: fixed; inset: 0; background: var(--color-background); z-index: 80; display: flex; align-items: center; justify-content: center; padding: 24px; overflow: auto; }
.chooser-inner { width: 100%; max-width: 720px; }
.chooser-head { text-align: left; margin-bottom: 24px; }
.chooser-title { font-family: var(--font-serif); font-weight: 600; font-size: 22px; }
.chooser-sub { color: var(--color-text-muted); font-size: 13px; margin-top: 8px; }
.chooser-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.chooser-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 20px 18px; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; font-family: inherit; color: var(--color-text-primary); text-align: left; }
.chooser-card:hover { border-color: var(--color-primary); }
.cc-icon { display: flex; color: var(--color-primary); }
.cc-icon svg { width: 28px; height: 28px; }
.cc-name { font-size: 16px; font-weight: 700; }
.cc-blurb { font-size: 13px; color: var(--color-text-secondary); line-height: 1.5; }
.chat-stub { flex: 1; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 8px; padding: 24px; text-align: left; color: var(--color-text-secondary); }
.chat-stub p { font-size: 13px; line-height: 1.7; margin: 0; }
.stub-t { font-size: 15px; font-weight: 700; color: var(--color-text-primary); }
.stub-icon { display: flex; color: var(--color-primary); }
.chat-stub .stub-icon svg { width: 30px; height: 30px; }
.stub-wrap { max-width: 560px; margin: 8vh 0 0; padding: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; text-align: left; }
/* 锁定页是登录页例外（规范 3.17.4）：保持原居中构成，不随 stub 通则左移 */
.stub-wrap.auth-lock { margin: 8vh auto 0; padding: 0 24px; align-items: center; text-align: center; }
.stub-wrap .stub-icon svg { width: 36px; height: 36px; }
.stub-wrap h1 { margin-top: 6px; }
body.mission-stub #chat-log, body.mission-stub .chat-tools, body.mission-stub .chat-input-row, body.mission-stub #quote-bar, body.mission-stub #attach-bar, body.mission-stub #conn-banner, body.mission-stub #ask-pop { display: none !important; }
@media (max-width: 640px) {
  #mission-switch { width: auto; flex: 0 0 auto; }
  .mission-seg-btn { padding: 4px 12px; }
  .chooser-cards { grid-template-columns: 1fr; }
}

/* 十期 · QS Briefing（候选卡/内部备注/对客版） */
.bf-focus-row select { font: inherit; padding: 4px 8px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-sm); background: var(--color-surface); color: inherit; }
.qbf-cand-card { margin: 14px 0; }
.qbf-cand-title { font-weight: 600; font-size: 16px; margin-bottom: 8px; }
.qbf-evidence { background: var(--color-surface-alt); border-radius: var(--radius-md); padding: 10px 14px; margin-bottom: 12px; }
.qbf-ev-title { font-weight: 600; margin-bottom: 6px; }
.qbf-evidence ul { margin: 0; padding-left: 18px; }
.qbf-evidence li { margin: 3px 0; }
.qbf-cand-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.qbf-cand-item { display: flex; gap: 8px; align-items: flex-start; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 10px 12px; cursor: pointer; }
.qbf-cand-item:has(input:checked) { border-color: var(--color-primary); background: var(--color-primary-light); }
.qbf-cand-text { flex: 1; }
.qbf-cand-basis { color: var(--color-text-muted); font-size: 12px; white-space: nowrap; }
.qbf-cand-actions { display: flex; gap: 12px; align-items: center; margin-top: 10px; }
.qbf-cand-note { color: var(--color-text-muted); font-size: 12px; }
.qbf-doc-actions { margin-top: 10px; display: flex; gap: 8px; }
.qbf-internal { border: 1.5px dashed #b7c5cf; background: #fcfcfd; }
.qbf-internal-banner { display: inline-block; background: var(--color-doc-navy); color: #fff; border-radius: 6px; padding: 2px 10px; font-size: 12px; margin-bottom: 8px; }
.qbf-ob { margin: 6px 0; }
.qbf-ob-q { font-weight: 600; }
.qbf-ob-a { color: var(--color-text-secondary); }
.bf-src-line { color: var(--color-text-secondary); font-size: 13px; }
.bf-src { padding-left: 18px; }
.bf-snapshot { color: var(--color-text-secondary); }

/* QS 学校机会 · 第三批（2026-11-03，规范 v1.2 令牌，.opp-* 自包含） */
.opp-note { color: var(--color-text-secondary); line-height: 1.7; margin: 4px 0; font-size: 13px; }
.opp-actor-bar { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin: 0 0 12px; color: var(--color-text-secondary); }
.opp-actor-bar select, .opp-filters select, .opp-inline-form select, .opp-modal-fields select { font: inherit; padding: 5px 9px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-ctrl); background: var(--color-surface); color: var(--color-text-primary); }
.opp-inline-form input, .opp-toolbar input { font: inherit; padding: 5px 9px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-ctrl); background: var(--color-surface); color: var(--color-text-primary); }
.opp-notice { border-radius: var(--radius-ctrl); padding: 9px 13px; margin: 0 0 12px; font-size: 13px; line-height: 1.6; }
.opp-notice.ok { background: var(--tone-green-bg); border: 1px solid var(--tone-green-bd); color: var(--color-deep-green); }
.opp-notice.warn { background: var(--tone-gold-bg); border: 1px solid var(--tone-gold-bd); color: var(--color-warning); }
.opp-card-t { font-size: 15px; font-weight: 600; margin-bottom: 8px; }
.opp-sub-t { margin-top: 14px; }
.opp-rem-row { display: flex; align-items: center; gap: 9px; padding: 5px 0; border-top: 1px solid var(--color-border); font-size: 13px; }
.opp-rem-row:first-of-type { border-top: 0; }
.opp-rem-school { border: 0; background: transparent; padding: 0; font-size: 13.5px; font-weight: 600; color: var(--color-deep-green); text-align: left; }
.opp-rem-detail { color: var(--color-text-secondary); flex: 1; min-width: 0; }
.opp-overdue { color: var(--color-warning); font-weight: 600; }
.opp-funnel { display: flex; flex-wrap: wrap; gap: 8px; }
.opp-funnel-cell { background: var(--color-surface-alt); border-radius: var(--radius-full); padding: 4px 12px; font-size: 12.5px; color: var(--color-text-secondary); }
.opp-funnel-cell b { color: var(--color-text-primary); }
.opp-toolbar { display: flex; flex-direction: column; gap: 10px; margin: 4px 0 10px; }
.opp-toolbar input { width: 100%; padding: 8px 12px; }
.opp-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.opp-chip { border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 5px 12px; font-size: 12.5px; }
.opp-chip:hover { border-color: var(--color-primary); color: var(--color-primary); }
.opp-chip.on { background: var(--color-primary-light); border-color: var(--color-primary); color: var(--color-deep-green); font-weight: 600; }
.opp-chip:disabled { opacity: .45; cursor: not-allowed; }
.opp-filters { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; margin: 0 0 12px; color: var(--color-text-secondary); }
.opp-scope { display: inline-flex; gap: 6px; }
.opp-count { color: var(--color-text-muted); font-size: 12.5px; }
.opp-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; }
.opp-row { display: flex; align-items: center; gap: 9px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-ctrl); padding: 6px 14px; min-height: 37px; }
.opp-row-name { font-size: 14px; font-weight: 600; color: var(--color-text-primary); white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.opp-row-en { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--color-text-muted); font-size: 12px; }
.opp-row-owner { color: var(--color-text-secondary); font-size: 12.5px; white-space: nowrap; }
.opp-row-date { color: var(--color-text-muted); font-size: 12.5px; white-space: nowrap; }
.opp-badge { display: inline-block; font-size: 11px; font-weight: 600; border-radius: var(--radius-full); padding: 2px 9px; border: 1px solid var(--color-border); color: var(--color-text-secondary); background: var(--color-surface); white-space: nowrap; }
.opp-badge.tone-green { color: var(--color-deep-green); border-color: var(--tone-green-bd); background: var(--tone-green-bg); }
.opp-badge.tone-blue { color: var(--tone-blue); border-color: var(--tone-blue-bd); background: var(--tone-blue-bg); }
.opp-badge.tone-gold { color: var(--color-warning); border-color: var(--tone-gold-bd); background: var(--tone-gold-bg); }
.opp-badge.tone-red { color: var(--color-danger); border-color: var(--tone-red-bd); background: var(--tone-red-bg); }
.opp-badge.tone-neutral { color: var(--color-text-secondary); border-color: var(--color-border); background: var(--color-surface-alt); }
.opp-btn-ghost { border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-primary); border-radius: var(--radius-ctrl); padding: 3px 12px; font-size: 12.5px; flex: none; }
.opp-btn-ghost:hover { border-color: var(--color-primary); color: var(--color-primary); }
.opp-btn-more { width: 100%; border: 1px dashed var(--color-btn-line); background: var(--color-surface); color: var(--color-deep-green); border-radius: var(--radius-ctrl); padding: 8px 0; font-size: 13px; margin-bottom: 14px; }
.opp-btn-more:hover { border-color: var(--color-primary); }
.opp-empty { border: 1px dashed var(--color-btn-line); border-radius: var(--radius-ctrl); padding: 16px; color: var(--color-text-secondary); display: flex; gap: 10px; align-items: center; }
.opp-detail { margin-top: 12px; }
.opp-d-title { font-family: var(--font-serif); font-size: 20px; font-weight: 700; }
.opp-d-en { color: var(--color-text-muted); font-size: 13px; margin-top: 2px; }
.opp-kv { display: flex; gap: 10px; padding: 3px 0; font-size: 13.5px; }
.opp-kv span { width: 128px; flex: none; color: var(--color-text-muted); }
.opp-kv b { font-weight: 500; }
.opp-sec-t { font-weight: 600; font-size: 15px; margin: 16px 0 6px; }
.opp-inline-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 6px 0 2px; }
.opp-table { border-collapse: collapse; width: 100%; font-size: 13px; }
.opp-table th, .opp-table td { border: 1px solid var(--color-border); padding: 5px 9px; text-align: left; vertical-align: top; }
.opp-table th { background: var(--color-surface-alt); font-weight: 600; }
.opp-copy { border: 1px solid var(--color-btn-line); background: var(--color-surface); border-radius: var(--radius-sm); font-size: 11px; padding: 1px 7px; color: var(--color-deep-green); }
.opp-link { color: var(--color-deep-green); }
.opp-sig { color: var(--color-text-secondary); padding: 3px 0; font-size: 13px; border-top: 1px dashed var(--color-border); }
.opp-sig span { color: var(--color-text-muted); margin-right: 10px; }
.opp-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.opp-btn { border: 1px solid var(--color-btn-line); background: var(--color-surface); color: var(--color-text-primary); border-radius: var(--radius-ctrl); padding: 7px 14px; font-size: 13px; }
.opp-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.opp-btn-danger { color: var(--color-danger); }
.opp-btn-primary { border: 0; background: var(--color-primary); color: #fff; border-radius: var(--radius-ctrl); padding: 7px 18px; font-size: 13px; font-weight: 600; }
.opp-btn-danger-solid { border: 0; background: var(--color-danger); color: #fff; border-radius: var(--radius-ctrl); padding: 7px 18px; font-size: 13px; font-weight: 600; }
.opp-modal-mask { position: fixed; inset: 0; background: var(--color-navy); display: flex; align-items: center; justify-content: center; z-index: 60; }
.opp-modal { background: var(--color-surface); border-radius: var(--radius-card); padding: 20px 22px; max-width: 440px; width: calc(100% - 48px); }
.opp-modal-t { font-size: 16px; font-weight: 600; margin-bottom: 8px; }
.opp-modal-summary { color: var(--color-text-secondary); line-height: 1.7; margin: 0 0 12px; font-size: 13.5px; }
.opp-modal-fields { margin-bottom: 12px; color: var(--color-text-secondary); }
.opp-modal-btns { display: flex; justify-content: flex-end; gap: 8px; }

/* 机会列表状态范式对齐（2026-11-03，state-model.md）：两行行结构、字形
 * 通道、分组与折叠区、成败三数条、内嵌轻确认（O-01）。 */
.opp-row { align-items: flex-start; padding: 8px 14px; min-height: 0; }
.opp-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.opp-row-l1 { display: flex; align-items: center; gap: 8px; }
.opp-row-l2 { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--color-text-secondary); }
.opp-row-time { margin-left: auto; color: var(--color-text-muted); font-size: 12.5px; white-space: nowrap; }
.opp-tier-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-deep-green); flex: none; }
.opp-glyph { flex: none; width: 20px; text-align: center; font-size: 13px; color: var(--color-text-muted); }
.opp-glyph.g-signed { background: var(--color-primary); color: #fff; border-radius: 50%; width: 19px; height: 19px; line-height: 19px; font-size: 11px; font-weight: 700; }
.opp-glyph.g-replied { color: var(--color-primary); font-weight: 700; font-size: 14px; }
.opp-glyph.g-closed { color: var(--color-text-muted); }
.opp-row-event { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.opp-row-next { color: var(--color-text-muted); white-space: nowrap; }
.opp-due-badge { background: var(--color-surface-alt); border: 1px solid var(--color-border); color: var(--color-text-secondary); border-radius: var(--radius-full); font-size: 11px; font-weight: 700; padding: 0 7px; line-height: 18px; flex: none; }
.opp-due-badge.over { background: var(--tone-red-bg); border-color: var(--tone-red-bd); color: var(--color-danger); }
.opp-warn-mark { color: var(--color-warning); font-weight: 700; }
.opp-group-t { font-weight: 600; font-size: 13.5px; margin: 12px 0 2px; color: var(--color-text-primary); }
.opp-group-t:first-child { margin-top: 0; }
.opp-fold-head { width: 100%; display: flex; justify-content: space-between; align-items: center; border: 1px dashed var(--color-btn-line); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-ctrl); padding: 8px 14px; font-size: 13px; margin: 4px 0 8px; }
.opp-fold-head:hover { border-color: var(--color-primary); color: var(--color-deep-green); }
#opp-fold .opp-row { margin-bottom: 6px; }
.opp-metrics-card { margin-bottom: 12px; }
.opp-metrics { display: flex; gap: 16px; flex-wrap: wrap; }
.opp-metric { flex: 1; min-width: 210px; display: flex; flex-direction: column; gap: 2px; }
.opp-metric span { color: var(--color-text-muted); font-size: 12.5px; }
.opp-metric b { font-size: 17px; font-weight: 700; color: var(--color-text-primary); }
.opp-metric i { font-style: normal; color: var(--color-text-secondary); font-size: 12px; line-height: 1.55; }
.opp-rem-basis { display: block; color: var(--color-text-muted); font-size: 12px; }
.opp-inline-confirm { border: 1.5px solid var(--color-primary); background: var(--color-surface); border-radius: var(--radius-card); padding: 14px 16px; margin-top: 12px; }
.opp-pin-row { margin-top: 10px; }

/* ---------- QS 初方案评审面（2026-11-03）：飞书组件嵌入＋图册兜底 ---------- */
.pp-actions { margin: 8px 0 10px; }
.pp-actions .btn-ghost { text-decoration: none; display: inline-block; }
.pp-mount { border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-surface); overflow: hidden; }
.pp-loading { color: var(--color-text-muted); text-align: left; padding: var(--space-xl) var(--space-md); }
.pp-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-md); margin-top: var(--space-sm); }
.pp-page { margin: 0; }
.pp-page img { width: 100%; display: block; background: #fff; border: 1px solid var(--color-border); border-radius: var(--radius-md); }
.pp-ph { color: var(--color-text-muted); font-size: 12.5px; text-align: left; padding: var(--space-lg) var(--space-md); border: 1px dashed var(--color-border); border-radius: var(--radius-md); }
.pp-page figcaption { color: var(--color-text-muted); font-size: 12px; text-align: center; margin-top: var(--space-xs); }

/* 备会卡（画布期内容层）：待补区、指向提示、红线行 */
.bf-gaps { border: 1.5px dashed var(--tone-gold-bd); background: var(--tone-gold-bg); }
.bf-gaps h3 { color: var(--color-warning); }
.bf-pointer { color: var(--color-warning); font-style: italic; }
.bf-redline { color: var(--color-doc-navy); font-weight: 600; }

/* 画布期第二步：画布三动作与对话内处理卡（评论改稿/补研/改写共用） */
/* 对话区选区模式（选区 Ask Molly）：只留 Ask Molly 单钮，补研/改写是文档画布的动作 */
.ask-pop.chat-only #cv-research, .ask-pop.chat-only #cv-rewrite { display: none; }
.ask-pop button:disabled { opacity: .45; cursor: default; }
.ask-pop button:disabled:hover { background: transparent; }
.cv-card { text-align: left; white-space: normal; } /* 卡内不继承 .msg 的 pre-wrap：模板空白文本节点不许渲成空白行（评论卡大留白元凶）；逐字文本块 .cv-orig/.cv-draft 自带 pre-wrap 不受影响 */
.cv-card-title { font-weight: 600; font-size: 13px; margin-bottom: 6px; color: var(--color-text-primary); }
.cv-sec { margin: 6px 0; }
.cv-card-body > .cv-sec:first-child { margin-top: 0; }
.cv-sec-t { font-size: 11.5px; color: var(--color-text-secondary); margin-bottom: 3px; }
.cv-restored-note { font-size: 11.5px; color: var(--color-text-secondary); margin: 2px 0 0; }
.cv-orig { background: var(--color-surface-alt); border-radius: var(--radius-sm); padding: 7px 10px; font-size: 12.5px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; max-width: 100%; min-width: 0; }
.cv-draft { background: #eef6f2; border-left: 3px solid var(--color-primary); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; padding: 7px 10px; font-size: 12.5px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; overflow-wrap: anywhere; max-width: 100%; min-width: 0; }
.cv-src { font-size: 11.5px; color: var(--color-text-secondary); margin-top: 6px; line-height: 1.6; }
.cv-actions { display: flex; gap: 8px; margin-top: 9px; align-items: center; flex-wrap: wrap; }
.cv-status { font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.6; }
.cv-err { color: var(--color-danger); }
.cv-done { font-size: 12.5px; color: var(--color-deep-green); }
.cv-dirs { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.cv-dir { border: 1px solid var(--color-btn-line); background: var(--color-surface); border-radius: var(--radius-full); padding: 5px 12px; font-size: 12.5px; cursor: pointer; }
.cv-dir:hover { border-color: var(--color-primary); color: var(--color-primary); }
.cmt-act.on { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.cmt-note { margin-top: 8px; }
.cmt-note-input { width: 100%; box-sizing: border-box; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 7px 10px; font-size: 12.5px; }
.pp-stale-line { margin-top: 6px; }
.cv-meta { margin-top: 6px; }

/* ================= 第一批改造 · 文档区（设计规范 v1.1 第 4 章，标杆＝briefing-visual-v3） =================
 * 文档区＝深蓝＋深绿的隆重版型：白纸面 .doc 承载文档，章节编号制、瓷砖、脚注标、
 * 提示条三级靠版式分级、禁红。BCUR 与 QS 全文版沿用既有 .card 段落结构，
 * 在 .doc 内统一收成纸面章节（内容与段落单位 data-cv-loc 不动）。 */
.doc { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); box-shadow: var(--shadow-shell); padding: 30px 36px 34px; margin-bottom: 16px; }
.doc .bf-doc-head { margin: 0 0 4px; }
.doc .bf-doc-head h2 { letter-spacing: .01em; }
.doc .card { border: 0; border-radius: 0; padding: 20px 0 8px; margin: 0; border-top: 1px solid var(--color-line-doc); background: transparent; }
.doc .card:first-of-type { border-top: 0; }
.doc .brief-sec h3 { font-size: 15px; font-weight: 700; color: var(--color-doc-navy); letter-spacing: .08em; margin: 0 0 10px; }
.doc .bf-table { font-size: 12.5px; }
.doc .bf-table th, .doc .bf-table td { border-color: var(--color-line-doc); }
.doc .bf-table th { background: var(--color-surface-alt); }
.bf-sub { font-size: 11.5px; font-weight: 700; letter-spacing: .2em; color: var(--color-doc-navy); margin: 16px 0 8px; }
.bf-sub:first-child { margin-top: 2px; }

/* 核心判断条（4.1.1：纯白底＋深蓝 3px 左边框；核心判断衬线 16/600，v1.1 定死） */
.doc .bf-head { background: #fff; border: 1px solid var(--color-line-doc); border-left: 3px solid var(--color-doc-navy); border-radius: var(--radius-ctrl); padding: 19px 22px 15px; margin-top: 18px; }
.doc .bf-head .bf-judge { font-family: var(--font-serif); font-size: 16px; font-weight: 600; line-height: 1.65; color: var(--color-text-primary); margin: 0 0 8px; }
.verdict { margin-top: 20px; background: #fff; border: 1px solid var(--color-line-doc); border-left: 3px solid var(--color-doc-navy); border-radius: var(--radius-ctrl); padding: 19px 22px 17px; }
.verdict .v-label { font-size: 11px; font-weight: 700; letter-spacing: .26em; color: var(--color-doc-navy); }
.verdict .v-text { margin: 9px 0 0; font-family: var(--font-serif); font-size: 16px; line-height: 1.65; font-weight: 600; color: var(--color-text-primary); }
.verdict .v-sub { margin-top: 11px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.verdict .v-sub .s { font-size: 13px; color: var(--color-text-secondary); }
.verdict .v-sub .sp { flex: 1; }

/* 章节头（眉题编号＋发丝线；编号色文档区深蓝，v1.1 分区域收敛） */
.sec-head { display: flex; align-items: baseline; gap: 12px; margin: 34px 0 15px; }
.sec-no { font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--color-doc-navy); }
.sec-title { font-size: 15px; font-weight: 700; color: var(--color-doc-navy); letter-spacing: .08em; }
.sec-note { font-size: 12px; color: var(--color-note); }
.sec-rule { flex: 1; height: 1px; background: var(--color-line-doc); transform: translateY(-3px); }

/* 关键数字瓷砖（3.3：三行式、无硬边框、底次面单值、主角砖只许一块） */
.tiles { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
.tile { background: var(--color-surface-alt); border-radius: var(--radius-ctrl); padding: 16px 15px 14px; min-height: 116px; display: flex; flex-direction: column; }
.tile .t-label { font-size: 11.5px; font-weight: 600; letter-spacing: .12em; color: var(--color-text-secondary); }
.tile .t-value { margin-top: 10px; font-size: 26px; line-height: 1.1; font-weight: 700; color: var(--color-doc-navy); font-variant-numeric: tabular-nums; letter-spacing: .01em; white-space: nowrap; }
.tile .t-value.long { font-size: 18px; line-height: 1.4; white-space: normal; }
.tile .t-note { margin-top: auto; padding-top: 9px; font-size: 11.5px; line-height: 1.5; color: var(--color-note); }
.tile .t-note b { font-weight: 600; color: var(--color-text-secondary); }
.tile.hero { background: var(--color-doc-navy); }
.tile.hero .t-label { color: #a7c9ba; }
.tile.hero .t-value { color: #fff; }
.tile.hero .t-note { color: #c9d8cf; }
.tile.hero .t-note b { color: #fff; }

/* 学校战略（序号圆标＋正文＋右列来源脚注标） */
.strat { border-top: 1px solid var(--color-line-doc); }
.strat-row { display: grid; grid-template-columns: 26px 1fr 238px; gap: 12px; padding: 14px 2px; border-bottom: 1px solid var(--color-line-doc); align-items: start; }
.strat-idx { width: 20px; height: 20px; border-radius: 50%; background: var(--color-surface-alt); color: var(--color-doc-navy); font-size: 11.5px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: 2px; }
.strat-text { font-size: 14.5px; line-height: 1.62; color: var(--color-text-primary); }
.strat-src { text-align: right; font-size: 11.5px; line-height: 1.55; color: var(--color-note); padding-top: 2px; }
.strat-src .src-name { font-family: var(--font-serif); font-style: italic; color: var(--color-text-secondary); }
.pill-standing { display: inline-block; font-size: 10.5px; font-weight: 600; color: var(--color-deep-green); background: var(--color-primary-light); border: 1px solid rgba(15, 147, 116, .5); border-radius: var(--radius-full); padding: 0 7px; margin-left: 6px; vertical-align: 1px; white-space: nowrap; }

/* 优势要点 */
.talks { border-top: 1px solid var(--color-line-doc); }
.talk-row { display: grid; grid-template-columns: 14px 1fr; gap: 10px; padding: 13px 2px; border-bottom: 1px solid var(--color-line-doc); }
.talk-mark { width: 7px; height: 7px; background: var(--color-deep-green); border-radius: 2px; margin-top: 7px; }
.talk-title { font-size: 14.5px; font-weight: 700; color: var(--color-text-primary); }
.talk-detail { margin-top: 3px; font-size: 13.5px; line-height: 1.6; color: var(--color-text-secondary); }
.talk-detail b { color: var(--color-doc-navy); font-weight: 700; }

/* 目标／红线提示条（3.5 三级：版式分级、禁红；签圆角 6px 收编） */
.callout { display: flex; gap: 14px; border-radius: var(--radius-ctrl); padding: 16px 18px; align-items: flex-start; }
.callout + .callout { margin-top: 12px; }
.callout .c-chip { flex: 0 0 auto; font-size: 11.5px; font-weight: 700; letter-spacing: .16em; color: #fff; border-radius: 6px; padding: 4px 10px; margin-top: 1px; }
.callout .c-text { font-size: 14px; line-height: 1.65; color: var(--color-text-primary); }
.callout.goal { background: var(--color-primary-light); border: 1px solid var(--tone-green-bd); border-left: 3px solid var(--color-deep-green); }
.callout.goal .c-chip { background: var(--color-deep-green); }
.callout.redline { background: #edf1f4; border: 1.5px solid var(--color-doc-navy); border-left: 5px solid var(--color-doc-navy-d); }
.callout.redline .c-chip { background: var(--color-doc-navy-d); letter-spacing: .2em; }
.callout.redline .c-text { font-weight: 600; }

/* 内部备注附页（4.2：灰蓝虚线框＋中性近白底＋深蓝徽章） */
.doc-internal { margin-top: 38px; border: 1.5px dashed #b7c5cf; background: #fcfcfd; border-radius: var(--radius-card); padding: 21px 24px 19px; }
.internal-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.internal-title { font-family: var(--font-serif); font-size: 16px; font-weight: 700; color: var(--color-text-primary); letter-spacing: .02em; }
.badge-internal { background: var(--color-doc-navy); color: #fff; font-size: 11px; font-weight: 600; border-radius: var(--radius-sm); padding: 3px 10px; letter-spacing: .06em; }
.in-sec { margin-top: 17px; }
.in-sec-title { font-size: 11.5px; font-weight: 700; letter-spacing: .2em; color: var(--color-doc-navy); margin-bottom: 8px; }
.in-line { font-size: 13.5px; line-height: 1.62; color: var(--color-text-secondary); }
.in-list { margin: 0; padding: 0; list-style: none; }
.in-list li { font-size: 13.5px; line-height: 1.62; color: var(--color-text-primary); padding: 4px 0 4px 16px; position: relative; }
.in-list li::before { content: ""; position: absolute; left: 2px; top: 12px; width: 6px; height: 6px; border-radius: 2px; background: var(--color-deep-green); opacity: .55; }
.doc-internal .qa { padding: 8px 0; border-top: 1px solid var(--color-line-doc); }
.doc-internal .qa:first-of-type { border-top: none; }
.doc-internal .qa .q { font-size: 13.5px; font-weight: 700; color: var(--color-text-primary); }
.doc-internal .qa .fork { display: inline-block; background: var(--color-doc-navy); color: #fff; font-size: 11px; font-weight: 700; border-radius: var(--radius-sm); padding: 1px 7px; margin-right: 8px; }
.doc-internal .qa .a { margin-top: 3px; font-size: 13.5px; line-height: 1.62; color: var(--color-text-secondary); padding-left: 30px; }
.rhythm { background: #fff; border: 1px solid var(--color-line-doc); border-radius: var(--radius-sm); padding: 11px 14px; font-size: 13.5px; line-height: 1.62; color: var(--color-text-primary); }
.rhythm .arr { color: var(--color-deep-green); font-weight: 700; margin: 0 4px; }
/* 全文版内部节在纸面内的附页化 */
.doc .qbf-internal { border: 1.5px dashed #b7c5cf; background: #fcfcfd; border-radius: var(--radius-card); padding: 20px 24px 16px; margin-top: 26px; }

/* 初方案卡（4.3：标题衬线 20px、一行附录、深蓝主钮＋描边次钮、图册关键页＋折叠） */
.proposal { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); box-shadow: var(--shadow-shell); padding: 25px 28px 23px; margin-bottom: 16px; }
.proposal-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.proposal-title { font-family: var(--font-serif); font-size: 20px; font-weight: 700; color: var(--color-text-primary); letter-spacing: .02em; }
.pill-final { font-size: 11px; font-weight: 700; color: var(--color-deep-green); background: var(--tone-green-bg); border: 1px solid var(--tone-green-bd); border-radius: var(--radius-full); padding: 2px 10px; letter-spacing: .1em; }
.appendix-line { margin-top: 9px; font-size: 12.5px; color: var(--color-note); line-height: 1.55; }
.proposal-btns { margin-top: 15px; display: flex; gap: 10px; flex-wrap: wrap; }
.btn-navy { font-family: inherit; font-size: 13.5px; font-weight: 600; color: #fff; background: var(--color-doc-navy); border: 1px solid var(--color-doc-navy); border-radius: var(--radius-ctrl); padding: 8px 18px; cursor: pointer; text-decoration: none; display: inline-block; }
.btn-outline { font-family: inherit; font-size: 13.5px; font-weight: 600; color: var(--color-text-primary); background: #fff; border: 1px solid var(--color-btn-line); border-radius: var(--radius-ctrl); padding: 8px 18px; cursor: pointer; }
.btn-outline:hover { border-color: var(--color-primary); color: var(--color-primary); }
.pp-gallery { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-md); margin-top: 19px; }
.pp-page figcaption { color: var(--color-text-secondary); font-size: 12px; }
.pp-page figcaption b { color: var(--color-doc-navy); }
.fold-bar { margin-top: 19px; width: 100%; background: var(--color-surface-alt); border: 1px solid var(--color-border); border-radius: var(--radius-ctrl); padding: 11px 16px; display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 600; color: var(--color-doc-navy); cursor: pointer; font-family: inherit; text-align: left; }
.fold-bar .f-sub { font-weight: 400; font-size: 12px; color: var(--color-note); }
.fold-bar .chev { margin-left: auto; color: var(--color-text-secondary); font-size: 15px; }
.badge-stale-chip { display: inline-block; font-size: 11px; font-weight: 700; color: var(--color-warning); background: var(--tone-gold-bg); border: 1px solid var(--tone-gold-bd); border-radius: var(--radius-full); padding: 2px 10px; letter-spacing: .06em; }

/* 文档区移动端（4.5.2） */
@media (max-width: 640px) {
  .doc { padding: 20px 16px 24px; }
  .tiles { grid-template-columns: repeat(2, 1fr); }
  .strat-row { grid-template-columns: 26px 1fr; }
  .strat-src { grid-column: 2; text-align: left; padding-top: 0; }
  .proposal { padding: 18px 16px; }
}
/* 待补区在纸面内保住金虚线框（覆盖 .doc .card 的去边规则）与首块间距 */
.doc .bf-gaps { border: 1.5px dashed var(--tone-gold-bd); border-radius: var(--radius-ctrl); padding: 16px 20px 10px; margin-top: 18px; background: var(--tone-gold-bg); }
.doc .bf-gaps h3 { color: var(--color-warning); letter-spacing: .04em; }

/* ---------- 列表页标准件（《Molly 设计规范 v1.2》3.12） ----------
 * 生成表单折叠区、列表工具条（搜索＋状态筛选）、紧凑行、展开更多。
 * Briefing 两线共用本组类名（bf-/qbf- 只差挂载 id），机会/教练目录照此套。 */
.bf-fold-toggle { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 2px 0; background: none; border: 0; font-size: 13px; color: var(--color-deep-green); }
.bf-fold-toggle .bf-fold-arrow { font-size: 11px; transition: transform .15s ease; }
.bf-fold-toggle[aria-expanded="true"] .bf-fold-arrow { transform: rotate(180deg); }
.bf-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 14px 0 8px; }
.bf-search { flex: 1; min-width: 180px; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 8px 11px; font-family: inherit; font-size: 13.5px; background: var(--color-surface); color: inherit; }
.bf-search:focus { outline: 2px solid var(--p12); border-color: var(--color-primary); }
.bf-filter { display: inline-flex; gap: 6px; }
.bf-filter button { border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 4px 13px; font-family: inherit; font-size: 12.5px; }
.bf-filter button.on { background: var(--color-primary-light); border-color: var(--color-primary); color: var(--color-deep-green); font-weight: 600; }
.bf-rows { display: flex; flex-direction: column; gap: 6px; }
.bf-row { display: flex; align-items: center; gap: 9px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 6px 14px; }
.bf-row .btn-ghost { padding: 2px 11px; font-size: 12px; }
.bf-row .bf-name { font-size: 14px; white-space: nowrap; }
.bf-row .bf-note { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--color-text-muted); font-size: 12px; }
.bf-row-btns { margin-left: auto; display: flex; gap: 6px; flex: none; }
.bf-more { text-align: center; margin-top: 10px; }
.bf-empty-act { margin-top: 10px; }

/* ---------- 表单展开区标准件（《Molly 设计规范 v1.3》3.13） ----------
 * 选填展开区内部形态：分组（眉题小标题）＋标签全外置＋次面面板底＋
 * 多选/单选同制式选择片＋列结构写死。Briefing 两线共用本组类名
 * （bf-/qbf- 只差挂载 id），后续带展开区的表单照此套。 */
.bf-fold { background: var(--color-surface-alt); border-radius: var(--radius-lg); padding: 14px 16px 16px; margin-top: 10px; }
.bf-group + .bf-group { margin-top: 16px; }
.bf-group-title { font-size: 11px; font-weight: 700; letter-spacing: .18em; color: var(--color-primary); margin-bottom: 9px; }
.bf-field { min-width: 0; }
.bf-field-label { display: block; font-size: 12.5px; color: var(--color-text-secondary); margin-bottom: 5px; }
.bf-field input { width: 100%; box-sizing: border-box; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 9px 11px; font-family: inherit; font-size: 13.5px; background: var(--color-surface); color: inherit; }
.bf-field input:focus { outline: 2px solid var(--p12); border-color: var(--color-primary); }
.bf-group > .bf-field + .bf-field { margin-top: 11px; }
.bf-fold .bf-person-row { display: flex; gap: 10px; margin-top: 0; }
.bf-fold .bf-person-row .bf-field { flex: 1; display: flex; flex-direction: column; }
.bf-fold .bf-person-row .bf-field input { margin-top: auto; }
.bf-chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.bf-choice-chip { border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-full); padding: 3px 11px; font-size: 12.5px; font-family: inherit; cursor: pointer; margin: 0 2px 2px 0; }
.bf-choice-chip.on { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
@media (max-width: 640px) {
  .bf-fold .bf-person-row { flex-direction: column; }
}

/* ---------------- 问答对话架构（主对话＋学校对话双层制，conv.js） ---------------- */
#chat { position: relative; }
.conv-btn { flex: 0 0 auto; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; margin-right: 10px; }
.conv-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.conv-head-right { flex: 0 0 auto; display: flex; align-items: center; gap: 10px; margin-left: auto; }
.conv-head-right .conv-btn { margin-right: 0; }
.conv-back { border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-md); padding: 5px 10px; font-size: 12.5px; cursor: pointer; white-space: nowrap; }
.conv-back:hover { border-color: var(--color-primary); color: var(--color-primary); }
.conv-actor-label { font-size: 12px; color: var(--color-text-muted); display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.conv-actor-label select { font-size: 12.5px; padding: 5px 6px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); color: var(--color-text-primary); max-width: 128px; }
.conv-drawer { position: absolute; top: 62px; left: 12px; width: 324px; max-width: calc(100% - 24px); max-height: calc(100% - 84px); overflow-y: auto; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: 0 14px 38px rgba(20, 40, 35, 0.18); z-index: 60; padding: 10px; }
.conv-drawer-head { display: flex; justify-content: space-between; align-items: center; font-family: var(--font-serif); font-size: 15px; padding: 2px 4px 8px; }
.conv-drawer-close { border: none; background: none; font-size: 18px; color: var(--color-text-muted); cursor: pointer; line-height: 1; padding: 2px 6px; }
.conv-drawer-list { display: flex; flex-direction: column; gap: 4px; }
.conv-drawer-sep { font-size: 11.5px; color: var(--color-text-muted); padding: 8px 4px 2px; }
.conv-drawer-empty { font-size: 12.5px; color: var(--color-text-muted); line-height: 1.7; padding: 6px 4px; }
.conv-row { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; border: 1px solid transparent; background: none; border-radius: var(--radius-md); padding: 8px 10px; cursor: pointer; }
.conv-row:hover { background: var(--color-primary-light); }
.conv-row.active { background: var(--color-primary-light); border-color: var(--color-primary); }
.conv-row-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.conv-row-name { font-size: 13.5px; color: var(--color-text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.conv-row-sub { font-size: 11.5px; color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.conv-row-time { flex: 0 0 auto; font-size: 11px; color: var(--color-text-muted); }
.conv-row-badge { flex: 0 0 auto; font-size: 11px; color: var(--color-primary); }
#conv-drawer-foot { padding-top: 8px; }
.conv-new-school { width: 100%; border: 1px dashed var(--color-border); background: none; border-radius: var(--radius-md); padding: 9px; font-size: 13px; color: var(--color-text-secondary); cursor: pointer; }
.conv-new-school:hover { border-color: var(--color-primary); color: var(--color-primary); }
.conv-picker { padding-top: 10px; }
.conv-picker input { width: 100%; box-sizing: border-box; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 8px 10px; font-size: 13px; }
.conv-picker-list { display: flex; flex-direction: column; gap: 2px; max-height: 300px; overflow-y: auto; padding-top: 6px; }
.conv-pick-row { display: flex; justify-content: space-between; gap: 8px; width: 100%; text-align: left; border: none; background: none; border-radius: var(--radius-md); padding: 7px 10px; font-size: 13px; color: var(--color-text-primary); cursor: pointer; }
.conv-pick-row:hover { background: var(--color-primary-light); }
.conv-pick-en { font-size: 11.5px; color: var(--color-text-muted); }
.conv-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; align-self: flex-end; max-width: 92%; margin-top: -12px; }
.conv-prop-text { font-size: 12.5px; color: var(--color-text-secondary); }
.conv-act-btn { border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-secondary); border-radius: var(--radius-md); padding: 4px 10px; font-size: 12px; cursor: pointer; }
.conv-act-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.conv-act-yes { border-color: var(--color-primary); color: var(--color-primary); }
.conv-act-quiet { border-color: transparent; background: none; color: var(--color-text-muted); }
.conv-tomb .bubble { background: var(--color-surface); border: 1px dashed var(--color-border); color: var(--color-text-muted); border-radius: var(--radius-lg); padding: 10px 14px; font-size: 12.5px; }
.conv-tomb-link { border: none; background: none; padding: 0; font-size: 12.5px; color: var(--color-primary); cursor: pointer; text-decoration: underline; }
.conv-other { align-self: flex-start; }
.conv-other .bubble { background: var(--color-surface); border: 1px solid var(--color-border); }
.conv-notice .bubble { border-left: 3px solid var(--color-primary); }
.conv-gate { border: 1px solid var(--color-primary); background: var(--color-primary-light); border-radius: var(--radius-lg); padding: 14px 16px; }
.conv-gate-t { font-size: 14px; color: var(--color-text-primary); margin-bottom: 6px; }
.conv-gate-b { font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.7; }
.conv-nudge { animation: conv-nudge-pulse 0.9s ease-in-out 2; }
@keyframes conv-nudge-pulse { 0%, 100% { box-shadow: 0 0 0 0 rgba(15, 147, 116, 0); } 50% { box-shadow: 0 0 0 5px rgba(15, 147, 116, 0.28); } }

/* ---------- QS 数据提交板块（期1 骨架，2026-11-04） ----------
 * 呈现基线＝定版原型 design-proto/qs-data-submission-proto-v3.1.html；
 * 瓷砖/卡/徽章/段带/折叠条用全站既有件（.tile/.card/.badge/.stage-band/
 * .fold-bar），本节只补该板块缺的件：选校框、紧凑行、表、情景卡。
 * 全部规则收在 #view-datasubmission 作用域内，数值与原型逐值一致、
 * 只用 :root 既有令牌，不新造令牌（规范 v1.6）。 */
#view-datasubmission .dsb-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--color-primary); margin-bottom: 4px; }
#view-datasubmission .dsb-h3 { font-size: 15.5px; margin: 0 0 4px; font-weight: 600; }
#view-datasubmission .dsb-sub { color: var(--color-text-secondary); font-size: 12.5px; margin: 0 0 12px; line-height: 1.65; }
#view-datasubmission .dsb-note { font-size: 11.5px; color: var(--color-note); line-height: 1.65; }
#view-datasubmission .dsb-foot { font-size: 11.5px; color: var(--color-note); line-height: 1.65; margin-top: 8px; }
#view-datasubmission .dsb-schoolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: 12px 16px; margin-bottom: 16px; }
#view-datasubmission .dsb-schoolbar select { border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 8px 12px; font-size: 14px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); max-width: 340px; min-width: 240px; }
#view-datasubmission .dsb-row { display: flex; align-items: center; gap: 10px; padding: 9px 2px; border-bottom: 1px solid var(--color-line-doc); min-height: 37px; }
#view-datasubmission .dsb-row:last-child { border-bottom: 0; }
#view-datasubmission .dsb-row .r-name { font-weight: 600; font-size: 13.5px; white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
#view-datasubmission .dsb-row .r-meta { color: var(--color-text-secondary); font-size: 12.5px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-datasubmission .dsb-tiles-card .tiles { margin-bottom: 0; }
#view-datasubmission .tile .t-value .unit { font-size: 13.5px; font-weight: 600; margin-left: 3px; }
#view-datasubmission .dsb-table { border-collapse: collapse; width: 100%; font-size: 13px; }
#view-datasubmission .dsb-table th, #view-datasubmission .dsb-table td { padding: 8px 10px; border-bottom: 1px solid var(--color-line-doc); text-align: left; vertical-align: middle; }
#view-datasubmission .dsb-table th { color: var(--color-text-secondary); font-weight: 600; font-size: 12.5px; }
#view-datasubmission .dsb-table td.num, #view-datasubmission .dsb-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
#view-datasubmission .dsb-table tr:last-child td { border-bottom: 0; }
#view-datasubmission .dsb-table tr.dsb-grouprow td { background: var(--color-surface-alt); font-weight: 600; font-size: 12.5px; color: var(--color-text-secondary); padding-top: 10px; }
#view-datasubmission .dsb-scn-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
#view-datasubmission .dsb-scn { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: 16px 18px; min-width: 0; }
#view-datasubmission .dsb-tablewrap { overflow-x: auto; }
#view-datasubmission .dsb-tablewrap.wide .dsb-table { min-width: 540px; }
#view-datasubmission .dsb-scn h4 { margin: 0 0 2px; font-size: 15px; }
#view-datasubmission .dsb-scn .s-approach { color: var(--color-text-secondary); font-size: 12.5px; line-height: 1.65; margin: 0 0 12px; }
#view-datasubmission .dsb-scn .dsb-table { font-size: 12.5px; }
#view-datasubmission .dsb-scn .dsb-table th, #view-datasubmission .dsb-scn .dsb-table td { padding: 6px 6px; }
#view-datasubmission .dsb-scn .s-total { display: flex; align-items: baseline; gap: 8px; margin-top: 12px; }
#view-datasubmission .dsb-scn .s-total .n { font-size: 26px; line-height: 1.1; font-weight: 600; font-variant-numeric: tabular-nums; }
#view-datasubmission .dsb-scn .s-total .u { color: var(--color-text-secondary); font-size: 12.5px; }
#view-datasubmission .dsb-scn .s-rank { font-size: 12.5px; margin-top: 2px; white-space: nowrap; }
#view-datasubmission .dsb-scn .s-rank b { font-variant-numeric: tabular-nums; }
#view-datasubmission .dsb-scn .s-damp { font-size: 11.5px; color: var(--color-note); line-height: 1.65; border-top: 1px dashed var(--color-border); margin-top: 12px; padding-top: 9px; }
/* 期6 对话迭代：指令输入/版本工具条/待确认变更单（金底提示形态沿期5 alert 令牌） */
#view-datasubmission .dsb-iter-text { width: 100%; box-sizing: border-box; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 9px 11px; font: inherit; font-size: 13px; line-height: 1.65; background: var(--color-surface); color: var(--color-text-primary); resize: vertical; min-height: 62px; }
#view-datasubmission .dsb-verbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin: 0 0 10px; }
#view-datasubmission .dsb-iter-sel { border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 6px 10px; font-size: 13px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); max-width: 100%; }
#view-datasubmission .dsb-iter-pending { border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 12px 14px; margin: 12px 0 0; min-width: 0; }
/* 期5 报告回看：节分隔/小标题/正文/提示框（红＝标红提示，金＝一般提示） */
#view-datasubmission .dsb-rep-sec { border-top: 1px solid var(--color-line-doc); padding-top: 14px; margin-top: 14px; }
#view-datasubmission .dsb-rep-h { font-size: 13.5px; font-weight: 600; margin: 14px 0 6px; }
#view-datasubmission .dsb-rep-p { font-size: 13px; line-height: 1.7; margin: 0 0 8px; }
#view-datasubmission .dsb-rep-alert { font-size: 12.5px; line-height: 1.65; border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 10px 12px; margin: 0 0 10px; }
#view-datasubmission .dsb-rep-alert.red { border-color: var(--tone-red-bd); background: var(--tone-red-bg); color: var(--color-danger); font-weight: 600; }
#view-datasubmission details.dsb-fold summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--color-text-secondary); }
/* 断点按容器宽（规范修订草案 2026-11-04 拟增 1.12–1.14，Rocky 已批准立项）：
 * 容器＝#stage（已设 container-type: inline-size; container-name: stage）。
 * 原窗口断点 1587/1183 按同壳实测换算为容器宽 695/497（与定版原型 v3.1
 * 容器版同值）；瓷砖断点与 Alumni 口径同值（≤600 三列、≤430 两列）。
 * 窗口 @media 不再作本板块布局断点依据。 */
@container stage (max-width: 695px) { #view-datasubmission .dsb-scn-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container stage (max-width: 600px) { #view-datasubmission .tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container stage (max-width: 497px) { #view-datasubmission .dsb-scn-grid { grid-template-columns: minmax(0, 1fr); } }
@container stage (max-width: 430px) { #view-datasubmission .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* ---------- QS 可持续发展板块（期2，2026-11-04） ----------
 * 呈现基线＝定版原型 prototype-v1/qs-sustainability-proto-v1.2.html；
 * 瓷砖/卡/徽章/段带用全站既有件（.tile/.card/.badge/.stage-band/.chip），
 * 本片段只补该板块缺的件：顶栏、页内切换、证据行、台账表、草稿行、
 * 占位横幅与提示框。全部规则收在 #view-sustainability 作用域内、
 * sus- 前缀，只用 :root 既有令牌，不新造令牌（规范 v1.7）。
 * 协调者收口时将本片段整段追加到 app/styles.css 尾部。 */
#view-sustainability .sus-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--color-primary); margin-bottom: 4px; }
#view-sustainability .sus-h3 { font-size: 15.5px; margin: 0 0 4px; font-weight: 600; }
#view-sustainability .sus-sub { color: var(--color-text-secondary); font-size: 12.5px; margin: 0 0 12px; line-height: 1.65; }
#view-sustainability .sus-note { font-size: 11.5px; color: var(--color-note); line-height: 1.65; }
#view-sustainability .sus-foot { font-size: 11.5px; color: var(--color-note); line-height: 1.65; margin-top: 8px; }
#view-sustainability .sus-foot p { margin: 0 0 6px; }
#view-sustainability .sus-foot p:last-child { margin-bottom: 0; }
#view-sustainability .sus-idname { white-space: nowrap; }

/* 顶栏：选校＋周期/倒计时（形态照 dsb-schoolbar） */
#view-sustainability .sus-topbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: 12px 16px; margin-bottom: 16px; }
#view-sustainability .sus-topbar select { border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 8px 12px; font-size: 14px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); max-width: 340px; min-width: 240px; }
#view-sustainability .sus-countdown { font-size: 13px; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
#view-sustainability .sus-countdown b { color: var(--color-doc-navy); font-size: 15px; }

/* 页内切换（分段胶囊，同规范 3.14 语言；照原型 v1.2 .page-switch） */
#view-sustainability .sus-pageswitch { display: flex; background: var(--color-surface-alt); border: 1px solid var(--color-border); border-radius: var(--radius-full); padding: 3px; margin: 16px 0 24px; max-width: 420px; }
#view-sustainability .sus-pageswitch button { flex: 1; border: 0; background: transparent; text-align: center; font-size: 13px; padding: 6px 0; border-radius: var(--radius-full); color: var(--color-text-secondary); font-family: inherit; cursor: pointer; }
#view-sustainability .sus-pageswitch button.on { background: var(--color-surface); box-shadow: var(--shadow-mini); color: var(--color-deep-green); font-weight: 600; }

/* 工作面内视图切换 chips（.chip 全局件＋选中态） */
#view-sustainability .sus-viewchips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
#view-sustainability .sus-viewchips .chip.on { background: var(--color-primary-light); border-color: var(--color-primary); color: var(--color-deep-green); font-weight: 600; }
#view-sustainability .sus-wfnote { font-size: 12.5px; line-height: 1.65; color: var(--color-text-secondary); margin: 0 0 16px; }

/* 瓷砖组收口（.tile 本体用全局件；此处只管组内边距与三列变体） */
#view-sustainability .sus-tiles-card .tiles { margin-bottom: 0; }
#view-sustainability .tiles.t3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
#view-sustainability .tile { min-width: 0; }
#view-sustainability .tile .t-value.long { white-space: normal; }

/* 证据行（规范 3.15.3：一行一件事＋明细第二层；照原型 v1.2 .ev-*） */
#view-sustainability .sus-evrow { padding: 13px 2px; border-bottom: 1px solid var(--color-line-doc); }
#view-sustainability .sus-evrow:last-child { border-bottom: 0; }
#view-sustainability .sus-evhead { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#view-sustainability .sus-evname { font-size: 14.5px; font-weight: 700; }
#view-sustainability .sus-evfact { margin-top: 3px; font-size: 13.5px; line-height: 1.65; color: var(--color-text-secondary); }
#view-sustainability .sus-evmeta { margin-top: 4px; font-size: 11.5px; line-height: 1.6; color: var(--color-note); word-break: break-all; }
#view-sustainability .sus-evmeta b { font-weight: 600; color: var(--color-text-secondary); }
#view-sustainability .sus-evtoggle { border: 0; background: transparent; color: var(--color-deep-green); font-size: 12px; font-weight: 600; padding: 0; margin-top: 5px; font-family: inherit; cursor: pointer; }
#view-sustainability .sus-evsum { font-size: 12px; color: var(--color-text-secondary); white-space: nowrap; }

/* 候选区（未落账：金底提示形态，沿 DS 期5 alert 令牌） */
#view-sustainability .sus-candzone { border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-card); padding: 16px 18px; margin-bottom: 14px; }
#view-sustainability .sus-candzone .sus-evrow { border-bottom-color: var(--tone-gold-bd); }
#view-sustainability .sus-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px; }

/* 台账表 / 通用表（照 dsb-table 写法） */
#view-sustainability .sus-tablewrap { overflow-x: auto; }
#view-sustainability .sus-tablewrap.wide .sus-table { min-width: 540px; }
#view-sustainability .sus-table { border-collapse: collapse; width: 100%; font-size: 13px; }
#view-sustainability .sus-table th, #view-sustainability .sus-table td { padding: 8px 10px; border-bottom: 1px solid var(--color-line-doc); text-align: left; vertical-align: middle; }
#view-sustainability .sus-table th { color: var(--color-text-secondary); font-weight: 600; font-size: 12.5px; }
#view-sustainability .sus-table tr:last-child td { border-bottom: 0; }
#view-sustainability .sus-due-red { color: var(--color-danger); font-weight: 600; }

/* 表单件（草稿出处位/回传粘贴/登记：照 dsb-iter-text 令牌口径） */
#view-sustainability .sus-text { width: 100%; box-sizing: border-box; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 9px 11px; font: inherit; font-size: 13px; line-height: 1.65; background: var(--color-surface); color: var(--color-text-primary); resize: vertical; min-height: 62px; }
#view-sustainability .sus-input { border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 6px 10px; font-size: 13px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); max-width: 100%; }
#view-sustainability .sus-claimrow { display: flex; gap: 8px; align-items: flex-start; flex-wrap: wrap; padding: 9px 2px; border-bottom: 1px solid var(--color-line-doc); }
#view-sustainability .sus-claimrow:last-child { border-bottom: 0; }
#view-sustainability .sus-claimrow .c-text { flex: 1 1 260px; min-width: 0; font-size: 13.5px; line-height: 1.65; }
#view-sustainability .sus-claimrow .c-src { flex: 1 1 200px; min-width: 0; font-size: 12px; color: var(--color-note); word-break: break-all; }
#view-sustainability .sus-src-missing { color: var(--color-danger); font-weight: 600; }

/* 提示框（金＝一般提示/示例横幅，红＝拦截与到期） */
#view-sustainability .sus-alert { font-size: 12.5px; line-height: 1.65; border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 10px 12px; margin: 0 0 12px; }
#view-sustainability .sus-alert.red { border-color: var(--tone-red-bd); background: var(--tone-red-bg); color: var(--color-danger); font-weight: 600; }
#view-sustainability .sus-banner { font-size: 13px; line-height: 1.65; border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 12px 14px; margin: 0 0 16px; font-weight: 600; color: var(--color-warning); }

/* 三大类轮廓行（照原型 v1.2 .profile-row） */
#view-sustainability .sus-profilerow { display: grid; grid-template-columns: 92px 110px minmax(0, 1fr); gap: 12px; padding: 13px 2px; border-bottom: 1px solid var(--color-line-doc); align-items: start; }
#view-sustainability .sus-profilerow > * { min-width: 0; }
#view-sustainability .sus-profilerow:last-child { border-bottom: 0; }
#view-sustainability .sus-profilerow .p-name { font-size: 14.5px; font-weight: 700; }
#view-sustainability .sus-profilerow .p-why { font-size: 13.5px; line-height: 1.65; color: var(--color-text-secondary); }
#view-sustainability .card p.sus-body { font-size: 13.5px; line-height: 1.7; margin: 0 0 8px; }
#view-sustainability .card p.sus-body:last-child { margin-bottom: 0; }

/* 断点按容器宽（容器＝#stage，container-name: stage，见 styles.css #stage）：
 * 瓷砖主断点与 DS 板块现行段同值（>600 五列／≤600 三列／≤430 两列）；
 * 三态 t3 的收列点照原型 v1.2 实测（≤565 两列、≤390 单列，长标签防折行）。
 * 窗口 @media 不作本板块布局断点依据。 */
@container stage (max-width: 600px) { #view-sustainability .tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container stage (max-width: 565px) { #view-sustainability .tiles.t3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container stage (max-width: 430px) { #view-sustainability .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@container stage (max-width: 390px) { #view-sustainability .tiles.t3 { grid-template-columns: repeat(1, minmax(0, 1fr)); } }
/* ---------- QS 校友成果板块（期2，2026-11-04） ----------
 * 呈现基线＝定版原型 design-proto/qs-alumni-outcome-proto-v2.html（工作台
 * 视图）；瓷砖/卡/徽章/段带用全站既有件（.tile/.card/.badge/.stage-band/
 * .chip），本片段只补该板块缺的件：顶栏、视图标签、紧凑行、表、回填区
 * 条与收单表单。全部规则收在 #view-alumnioutcome 作用域内、ao- 前缀，
 * 只用 :root 既有令牌，不新造令牌（规范 v1.7）。 */
#view-alumnioutcome .ao-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--color-primary); margin-bottom: 4px; }
#view-alumnioutcome .ao-h3 { font-size: 15.5px; margin: 0 0 4px; font-weight: 600; }
#view-alumnioutcome .ao-sub { color: var(--color-text-secondary); font-size: 12.5px; margin: 0 0 12px; line-height: 1.65; }
#view-alumnioutcome .ao-note { font-size: 11.5px; color: var(--color-note); line-height: 1.65; }
#view-alumnioutcome .ao-foot { font-size: 11.5px; color: var(--color-note); line-height: 1.65; margin-top: 8px; }
#view-alumnioutcome .ao-idname { white-space: nowrap; }

/* 顶栏：选校＋状态行（形态照 dsb-schoolbar） */
#view-alumnioutcome .ao-schoolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: 12px 16px; margin-bottom: 16px; }
#view-alumnioutcome .ao-schoolbar select { border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 8px 12px; font-size: 14px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); max-width: 340px; min-width: 240px; }
#view-alumnioutcome .ao-statusline { font-size: 12.5px; color: var(--color-text-secondary); flex: 1 1 220px; min-width: 0; }

/* 视图标签（描边矩形标签，与 mission 切换器分段胶囊明显区分，照原型
 * v2 .view-tabs；期2 只有工作台一签，体检签为期3 扩展位、先禁用占位） */
#view-alumnioutcome .ao-viewtabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 0 0 14px; }
#view-alumnioutcome .ao-viewtabs span { font-size: 13px; padding: 7px 14px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); background: var(--color-surface); color: var(--color-text-secondary); }
#view-alumnioutcome .ao-viewtabs span.on { border-color: var(--color-doc-navy); color: var(--color-doc-navy); font-weight: 600; box-shadow: inset 0 -2px 0 var(--color-doc-navy); }
#view-alumnioutcome .ao-viewtabs span.off { opacity: .55; }

/* 紧凑行（照 dsb-row：对象名＋状态徽章＋关键信息＋行尾动作） */
#view-alumnioutcome .ao-row { display: flex; align-items: center; gap: 10px; padding: 9px 2px; border-bottom: 1px solid var(--color-line-doc); min-height: 37px; }
#view-alumnioutcome .ao-row:last-child { border-bottom: 0; }
#view-alumnioutcome .ao-row .r-name { font-weight: 600; font-size: 13.5px; white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
#view-alumnioutcome .ao-row .r-meta { color: var(--color-text-secondary); font-size: 12.5px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-alumnioutcome .ao-row .r-act { font-size: 12.5px; color: var(--color-deep-green); white-space: nowrap; }

/* 瓷砖组收口（.tile 本体用全局件） */
#view-alumnioutcome .ao-tiles-card .tiles { margin-bottom: 0; }
#view-alumnioutcome .tile { min-width: 0; }
#view-alumnioutcome .tile .t-value .unit { font-size: 13.5px; font-weight: 600; margin-left: 3px; }

/* 表格（照 dsb-table 写法） */
#view-alumnioutcome .ao-tablewrap { overflow-x: auto; }
#view-alumnioutcome .ao-table { border-collapse: collapse; width: 100%; font-size: 13px; }
#view-alumnioutcome .ao-table th, #view-alumnioutcome .ao-table td { padding: 8px 10px; border-bottom: 1px solid var(--color-line-doc); text-align: left; vertical-align: middle; }
#view-alumnioutcome .ao-table th { color: var(--color-text-secondary); font-weight: 600; font-size: 12.5px; }
#view-alumnioutcome .ao-table td.num, #view-alumnioutcome .ao-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
#view-alumnioutcome .ao-table tr:last-child td { border-bottom: 0; }

/* 校方核验页回填区条（照原型 v2 .fold-bar 面板底形态） */
#view-alumnioutcome .ao-foldbar { display: flex; align-items: center; gap: 10px; background: var(--color-surface-alt); border-radius: var(--radius-md); padding: 11px 14px; margin-top: 8px; }
#view-alumnioutcome .ao-foldbar .f-title { font-weight: 600; font-size: 13px; white-space: nowrap; }
#view-alumnioutcome .ao-foldbar .f-meta { color: var(--color-text-secondary); font-size: 12.5px; flex: 1; min-width: 0; }
#view-alumnioutcome details.ao-fold summary { cursor: pointer; font-size: 12.5px; font-weight: 600; color: var(--color-text-secondary); }

/* 提示框与候选确认区（金＝一般提示/未落账，红＝拦截） */
#view-alumnioutcome .ao-alert { font-size: 12.5px; line-height: 1.65; border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 10px 12px; margin: 0 0 12px; }
#view-alumnioutcome .ao-alert.red { border-color: var(--tone-red-bd); background: var(--tone-red-bg); color: var(--color-danger); font-weight: 600; }
#view-alumnioutcome .ao-banner { font-size: 13px; line-height: 1.65; border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 12px 14px; margin: 0 0 16px; font-weight: 600; color: var(--color-warning); }
#view-alumnioutcome .ao-candzone { border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-card); padding: 16px 18px; margin-bottom: 14px; }
#view-alumnioutcome .ao-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 8px; }

/* 收单表单件（回传粘贴：照 sus-text/dsb-iter 令牌口径） */
#view-alumnioutcome .ao-text { width: 100%; box-sizing: border-box; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 9px 11px; font: inherit; font-size: 13px; line-height: 1.65; background: var(--color-surface); color: var(--color-text-primary); resize: vertical; min-height: 62px; }
#view-alumnioutcome .ao-input { border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); padding: 6px 10px; font-size: 13px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); max-width: 100%; }
#view-alumnioutcome .ao-dirlist { max-height: 320px; overflow-y: auto; margin-top: 8px; }

/* 断点按容器宽（容器＝#stage，container-name: stage）：瓷砖与 DS/SUS
 * 板块现行段同值（>600 五列／≤600 三列／≤430 两列）。 */
@container stage (max-width: 600px) { #view-alumnioutcome .tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container stage (max-width: 430px) { #view-alumnioutcome .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* 期2-T8a：目录卡评估行编辑控件（作用域仍限 #view-alumnioutcome，只用既有令牌）。 */
#view-alumnioutcome .ao-dirctl { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
#view-alumnioutcome .ao-dirctl .ao-input { padding: 4px 8px; font-size: 12.5px; }
#view-alumnioutcome .ao-dirctl .ao-reason { width: 150px; }
/* ---------- QS 可持续发展板块 · 期4 申诉助手（2026-11-04） ----------
 * 配合 appeal-frontend-fragment.js；卡/段带/徽章/按钮/输入件全用全站
 * 既有件，本片段只补申诉面板缺的件：要件行、反证红行、四格草稿
 * 网格、词数计数与版本行。全部规则收在 #view-sustainability 作用域
 * 内、sus- 前缀，只用 :root 既有令牌，不新造令牌（规范 v1.7）。
 * 协调者收口时将本片段整段追加到 app/styles.css 尾部（sus 片段之后）。 */

/* 要件行 / 缺口行（一行一条＋覆盖徽章同行，照 .sus-evrow 节奏） */
#view-sustainability .sus-appeal-req { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; padding: 7px 2px; border-bottom: 1px solid var(--color-line-doc); }
#view-sustainability .sus-appeal-req:last-child { border-bottom: 0; }
#view-sustainability .sus-appeal-req .sus-note { flex: 1 1 260px; min-width: 0; }

/* 反证行（红底提示形态，沿 sus-alert 红档令牌；反证证据整行示警） */
#view-sustainability .sus-appeal-counter { border: 1px solid var(--tone-red-bd); background: var(--tone-red-bg); border-radius: var(--radius-md); padding: 10px 12px; margin-top: 8px; }
#view-sustainability .sus-appeal-counter .sus-evfact { color: var(--color-danger); }

/* 四格草稿网格（邮件中英＋Hub 中英；窄容器收单列，断点按容器宽） */
#view-sustainability .sus-appeal-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 8px; }
#view-sustainability .sus-appeal-cell { display: block; min-width: 0; }
#view-sustainability .sus-appeal-cell .sus-text { margin-top: 4px; }
@container stage (max-width: 600px) { #view-sustainability .sus-appeal-grid { grid-template-columns: minmax(0, 1fr); } }

/* Hub 英文词数计数（超 200 标红，与落版硬校验同口径） */
#view-sustainability .sus-wordcount { font-variant-numeric: tabular-nums; }
#view-sustainability .sus-wordcount.over { color: var(--color-danger); font-weight: 600; }

/* 已落版版本行 */
#view-sustainability .sus-appeal-ver { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 7px 2px; border-bottom: 1px solid var(--color-line-doc); }
#view-sustainability .sus-appeal-ver:last-child { border-bottom: 0; }

/* ---------- QS 校友成果板块 · 期3 售前体检（2026-11-04） ----------
 * 配合 alumnioutcome.js 体检视图；卡/瓷砖/徽章/按钮/输入件全用既有
 * 件，本片段只补体检缺的件：可点视图签、三瓷砖收口、扫描进度条、
 * 轮廓行换行。全部规则收在 #view-alumnioutcome 作用域内、ao- 前缀，
 * 只用 :root 既有令牌，不新造令牌（规范 v1.7）。 */
#view-alumnioutcome .ao-viewtabs span[data-tab] { cursor: pointer; }
#view-alumnioutcome .tiles.t3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
#view-alumnioutcome .ao-ckbar { height: 8px; border-radius: var(--radius-md); background: var(--color-surface-alt); overflow: hidden; margin: 2px 0 8px; }
#view-alumnioutcome .ao-ckbar i { display: block; height: 100%; background: var(--color-doc-navy); }
#view-alumnioutcome .ao-row.wrap .r-meta { white-space: normal; overflow: visible; text-overflow: clip; }

/* Q23 文件上传控件（规范补条 file-upload-amendment-20261104）：原生框 hidden、次按钮触发、文件名呈现 */
#view-sustainability .sus-file-name { font-size: 12.5px; color: var(--color-text-secondary); max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- QS 数据提交板块 · 学校简阅面（正式施工，2026-11-04） ----------
 * 来源：定版原型 prototype-simplified-v2/index.html（原型 v2.1）CSS 逐值
 * 移植，类名统一加 dsv- 前缀、全部收在 #view-datasubmission 作用域内；
 * 色值与几何只用 :root 既有令牌 var()，不新造色值（规范 v1.7）。
 * 瓷砖标准件沿全站 .tile（本面未用瓷砖，量测闸对正本 styles.css 自查）。 */
#view-datasubmission .dsv-doc-head { background: var(--color-stage-band); border-radius: var(--radius-md); padding: 22px 28px 20px; margin-bottom: 12px; }
#view-datasubmission .dsv-head-row { display: flex; align-items: flex-end; gap: 16px; flex-wrap: wrap; }
#view-datasubmission .dsv-grow { flex: 1; min-width: 260px; }
#view-datasubmission .dsv-doc-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--color-deep-green); margin-bottom: 6px; }
#view-datasubmission .dsv-doc-head h1 { font-family: var(--font-serif); font-weight: 600; font-size: 22px; margin: 0; line-height: 1.35; background: transparent; padding: 0; }
#view-datasubmission .dsv-hen { font-size: 15px; color: var(--color-text-secondary); }
#view-datasubmission .dsv-lede { color: var(--color-text-secondary); line-height: 1.7; margin: 6px 0 0; font-size: 13.5px; background: transparent; padding: 0; }
#view-datasubmission .dsv-viewbar { flex: 0 0 auto; }
/* 页头选校入口槽位与未建档空态建档区（2026-11-04 两修 S1/S2；组件本体样式在文件后段 .school-add 全局段，本处只定位） */
#view-datasubmission .dsv-head-add { flex: 0 0 auto; }
#view-datasubmission .dsv-empty-add { margin: 14px 0 6px; }
#view-datasubmission .dsv-view-switch { display: flex; background: var(--color-surface-alt); border-radius: var(--radius-full); padding: 3px; }
#view-datasubmission .dsv-view-switch span, #view-datasubmission .dsv-view-switch button { flex: 1; text-align: center; font-size: 12.5px; padding: 5px 14px; border-radius: var(--radius-full); color: var(--color-text-secondary); border: 0; background: transparent; white-space: nowrap; font-family: inherit; }
#view-datasubmission .dsv-view-switch button { cursor: pointer; }
#view-datasubmission .dsv-view-switch .on { background: var(--color-surface); box-shadow: var(--shadow-mini); color: var(--color-deep-green); font-weight: 600; }
#view-datasubmission .dsv-alert { border: 1px solid var(--tone-gold-bd); background: var(--tone-gold-bg); border-radius: var(--radius-md); padding: 12px 14px; font-size: 13px; line-height: 1.65; margin-bottom: 16px; }
#view-datasubmission .dsv-alert-btn { border: 0; background: transparent; color: var(--color-deep-green); font-size: 13px; font-weight: 600; padding: 0; margin-left: 8px; }
#view-datasubmission .dsv-clock-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: var(--color-doc-navy); color: #fff; border-radius: var(--radius-md); padding: 10px 16px; margin-bottom: 20px; }
#view-datasubmission .dsv-clock-bar .c-big { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
#view-datasubmission .dsv-clock-bar .c-big b { font-size: 20px; }
#view-datasubmission .dsv-clock-bar .c-meta { font-size: 12.5px; color: #c9d8cf; flex: 1; min-width: 220px; line-height: 1.55; }
#view-datasubmission .dsv-clock-bar .c-next { font-size: 12.5px; background: rgba(255,255,255,.12); border-radius: var(--radius-sm); padding: 4px 10px; white-space: nowrap; }
#view-datasubmission .dsv-layout { display: flex; gap: 20px; align-items: flex-start; }
#view-datasubmission .dsv-sec-nav { flex: 0 0 216px; position: sticky; top: 20px; display: flex; flex-direction: column; gap: 4px; }
#view-datasubmission .dsv-sec-nav button { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; text-align: left; border: 1px solid transparent; background: transparent; border-radius: var(--radius-md); padding: 9px 12px; width: 100%; font-family: inherit; cursor: pointer; }
#view-datasubmission .dsv-sec-nav button .n-zh { font-size: 14px; color: var(--color-text-secondary); }
#view-datasubmission .dsv-sec-nav button .n-ms { font-size: 11.5px; color: var(--color-text-muted); margin-top: 2px; }
#view-datasubmission .dsv-sec-nav button:hover { background: var(--color-surface-alt); }
#view-datasubmission .dsv-sec-nav button.active { background: var(--color-surface); border-color: var(--color-border); box-shadow: var(--shadow-mini); }
#view-datasubmission .dsv-sec-nav button.active .n-zh { color: var(--color-deep-green); font-weight: 600; }
#view-datasubmission .dsv-sec-main { flex: 1; min-width: 0; }
#view-datasubmission .dsv-sec-panel { display: none; }
#view-datasubmission .dsv-sec-panel.active { display: block; }
#view-datasubmission .dsv-card { padding: 18px 20px; margin-bottom: 16px; }
#view-datasubmission .dsv-card h2 { font-family: var(--font-serif); font-size: 20px; font-weight: 600; margin: 0 0 6px; }
#view-datasubmission .dsv-card h3 { font-size: 15.5px; margin: 0 0 4px; font-weight: 600; }
#view-datasubmission .dsv-card-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .3em; color: var(--color-primary); margin-bottom: 4px; }
#view-datasubmission .dsv-mini-title { font-size: 13px; font-weight: 600; margin: 14px 0 6px; }
#view-datasubmission .dsv-mini-title:first-child { margin-top: 0; }
#view-datasubmission .dsv-body { font-size: 13.5px; line-height: 1.7; margin: 0 0 10px; }
#view-datasubmission .dsv-verdict { background: var(--color-surface); border-left: 3px solid var(--color-doc-navy); padding: 4px 0 4px 16px; margin: 4px 0 14px; }
#view-datasubmission .dsv-verdict p { font-family: var(--font-serif); font-size: 16px; font-weight: 600; line-height: 1.65; margin: 0; }
#view-datasubmission .dsv-verdict .v-note { font-family: var(--font-sans); font-size: 12.5px; font-weight: 400; color: var(--color-text-secondary); margin-top: 6px; line-height: 1.65; }
#view-datasubmission .dsv-badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: var(--radius-full); white-space: nowrap; }
#view-datasubmission .dsv-b-green { background: var(--tone-green-bg); color: var(--color-deep-green); border: 1px solid var(--tone-green-bd); }
#view-datasubmission .dsv-b-blue { background: var(--tone-blue-bg); color: var(--tone-blue); border: 1px solid var(--tone-blue-bd); }
#view-datasubmission .dsv-b-gold { background: var(--tone-gold-bg); color: var(--color-warning); border: 1px solid var(--tone-gold-bd); }
#view-datasubmission .dsv-b-navy { background: var(--color-doc-navy); color: #fff; border: 1px solid var(--color-doc-navy); }
#view-datasubmission .dsv-b-grey { background: var(--color-surface-alt); color: var(--color-text-muted); border: 1px solid var(--color-border); }
#view-datasubmission .dsv-row { display: flex; align-items: center; gap: 10px; padding: 9px 2px; border-bottom: 1px solid var(--color-line-doc); min-height: 37px; }
#view-datasubmission .dsv-row:last-child { border-bottom: 0; }
#view-datasubmission .dsv-row .r-name { font-weight: 600; font-size: 13.5px; white-space: nowrap; }
#view-datasubmission .dsv-row .r-meta { color: var(--color-text-secondary); font-size: 12.5px; flex: 1; min-width: 0; line-height: 1.55; }
#view-datasubmission .dsv-r-act { font-size: 12.5px; color: var(--color-deep-green); white-space: nowrap; text-decoration: none; border: 0; background: transparent; padding: 0; font-family: inherit; cursor: pointer; }
#view-datasubmission .dsv-tablewrap { overflow-x: auto; }
#view-datasubmission .dsv-table { border-collapse: collapse; width: 100%; font-size: 13px; }
#view-datasubmission .dsv-table th, #view-datasubmission .dsv-table td { padding: 8px 10px; border-bottom: 1px solid var(--color-line-doc); text-align: left; vertical-align: middle; }
#view-datasubmission .dsv-table th { color: var(--color-text-secondary); font-weight: 600; font-size: 12.5px; }
#view-datasubmission .dsv-table td.num, #view-datasubmission .dsv-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
#view-datasubmission .dsv-table tr:last-child td { border-bottom: 0; }
#view-datasubmission .dsv-table tr.self td { background: var(--tone-green-bg); font-weight: 600; }
#view-datasubmission .dsv-table tr.total td { border-top: 1.5px solid var(--color-doc-navy); border-bottom: 0; font-weight: 700; }
#view-datasubmission .dsv-t-foot { font-size: 11.5px; color: var(--color-note); line-height: 1.65; margin-top: 10px; }
#view-datasubmission details.dsv-fold { margin-top: 12px; }
#view-datasubmission details.dsv-fold > summary { list-style: none; display: flex; align-items: center; gap: 10px; background: var(--color-surface-alt); border-radius: var(--radius-md); padding: 11px 14px; cursor: pointer; }
#view-datasubmission details.dsv-fold > summary::-webkit-details-marker { display: none; }
#view-datasubmission details.dsv-fold > summary .f-title { font-weight: 600; font-size: 13px; }
#view-datasubmission details.dsv-fold > summary .f-meta { color: var(--color-text-secondary); font-size: 12.5px; flex: 1; }
#view-datasubmission details.dsv-fold > summary .f-arrow { color: var(--color-text-muted); font-size: 12.5px; }
#view-datasubmission details.dsv-fold .fold-body { padding: 14px 4px 2px; }
#view-datasubmission .dsv-status-line { display: flex; align-items: center; gap: 10px; padding: 10px 2px 2px; margin-top: 6px; border-top: 1px dashed var(--color-border); color: var(--color-text-muted); font-size: 12.5px; }
#view-datasubmission .dsv-status-line .dsv-s-act { margin-left: auto; color: var(--color-text-muted); white-space: nowrap; border: 0; background: transparent; padding: 0; font-size: 12.5px; font-family: inherit; cursor: pointer; }
#view-datasubmission .dsv-bar-gold { background: var(--tone-gold-bg); border: 1px solid var(--tone-gold-bd); border-radius: var(--radius-md); padding: 12px 14px; font-size: 13px; line-height: 1.65; margin-top: 12px; }
#view-datasubmission .dsv-bar-line { background: var(--tone-blue-bg); border: 1.5px solid var(--color-doc-navy); border-left: 6px solid var(--color-doc-navy); border-radius: var(--radius-md); padding: 12px 14px; font-size: 13px; line-height: 1.65; margin-top: 12px; }
#view-datasubmission .dsv-bar-line b.lead { font-weight: 700; }
#view-datasubmission .dsv-bar-note { background: var(--color-surface-alt); border: 1px dashed var(--color-btn-line); border-radius: var(--radius-md); padding: 10px 14px; font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.65; margin-top: 12px; }
#view-datasubmission .dsv-health-bar { background: var(--tone-gold-bg); border: 1px solid var(--tone-gold-bd); border-radius: var(--radius-md); padding: 12px 14px; margin-top: 6px; }
#view-datasubmission .dsv-health-bar .hb-title { display: flex; align-items: center; gap: 10px; }
#view-datasubmission .dsv-health-bar .hb-title .hb-t { flex: 1; font-size: 13.5px; font-weight: 600; line-height: 1.55; }
#view-datasubmission .dsv-health-bar .hb-items { margin-top: 6px; }
#view-datasubmission .dsv-health-bar .hb-items .dsv-row { border-bottom-color: var(--tone-gold-bd); }
#view-datasubmission .dsv-health-bar .dsv-t-foot { margin-top: 8px; }
#view-datasubmission .dsv-health-typical { border: 1.5px dashed var(--color-btn-line); border-radius: var(--radius-md); padding: 10px 14px; margin-top: 10px; font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.65; }
#view-datasubmission .dsv-tgt-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr 1fr; gap: 10px; margin-top: 10px; }
#view-datasubmission .dsv-tgt { background: var(--color-surface-alt); border-radius: var(--radius-ctrl); padding: 12px 14px; }
#view-datasubmission .dsv-tgt.main { background: var(--color-doc-navy); }
#view-datasubmission .dsv-tgt .g-label { font-size: 11.5px; font-weight: 600; letter-spacing: .1em; color: var(--color-text-secondary); }
#view-datasubmission .dsv-tgt.main .g-label { color: #a7c9ba; }
#view-datasubmission .dsv-tgt .g-flow { margin-top: 8px; font-size: 13px; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; line-height: 1.5; }
#view-datasubmission .dsv-tgt .g-flow b { font-size: 20px; line-height: 1.1; color: var(--color-doc-navy); font-weight: 700; }
#view-datasubmission .dsv-tgt.main .g-flow { color: #c9d8cf; }
#view-datasubmission .dsv-tgt.main .g-flow b { color: #fff; }
#view-datasubmission .dsv-tgt .g-note { margin-top: 6px; font-size: 11.5px; color: var(--color-note); line-height: 1.55; }
#view-datasubmission .dsv-tgt.main .g-note { color: #c9d8cf; }
#view-datasubmission .dsv-gap-head { display: flex; align-items: stretch; gap: 10px; flex-wrap: wrap; margin: 6px 0 14px; }
#view-datasubmission .dsv-gap-cell { flex: 1; min-width: 130px; background: var(--color-surface-alt); border-radius: var(--radius-ctrl); padding: 12px 14px; }
#view-datasubmission .dsv-gap-cell .g-label { font-size: 11.5px; font-weight: 600; letter-spacing: .1em; color: var(--color-text-secondary); }
#view-datasubmission .dsv-gap-cell .g-val { margin-top: 6px; font-size: 26px; line-height: 1.1; font-weight: 700; color: var(--color-doc-navy); font-variant-numeric: tabular-nums; }
#view-datasubmission .dsv-gap-cell .g-note { margin-top: 5px; font-size: 11.5px; color: var(--color-note); line-height: 1.55; }
#view-datasubmission .dsv-gap-cell.hero { background: var(--color-doc-navy); }
#view-datasubmission .dsv-gap-cell.hero .g-label { color: #a7c9ba; }
#view-datasubmission .dsv-gap-cell.hero .g-val { color: #fff; }
#view-datasubmission .dsv-gap-cell.hero .g-note { color: #c9d8cf; }
#view-datasubmission .dsv-gap-op { align-self: center; font-size: 18px; color: var(--color-text-muted); font-weight: 700; padding: 0 2px; }
#view-datasubmission .dsv-route-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
#view-datasubmission .dsv-route { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: 16px 18px; display: flex; flex-direction: column; }
#view-datasubmission .dsv-route .rt-name { font-size: 13px; font-weight: 700; color: var(--color-deep-green); letter-spacing: .04em; }
#view-datasubmission .dsv-route .rt-sum { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--color-line-doc); font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.6; }
#view-datasubmission .dsv-route ul { margin: 8px 0 4px; padding-left: 17px; font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.65; }
#view-datasubmission .dsv-route ul b { color: var(--color-text-primary); }
#view-datasubmission .dsv-scn-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
#view-datasubmission .dsv-scn { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-card); padding: 16px 18px; display: flex; flex-direction: column; }
#view-datasubmission .dsv-scn .s-name { font-size: 13px; font-weight: 600; color: var(--color-text-secondary); letter-spacing: .06em; }
#view-datasubmission .dsv-scn .s-rank { margin-top: 8px; font-size: 26px; line-height: 1.1; font-weight: 700; color: var(--color-doc-navy); font-variant-numeric: tabular-nums; white-space: nowrap; }
#view-datasubmission .dsv-scn .s-rank .unit { font-size: 13.5px; font-weight: 600; margin-left: 3px; }
#view-datasubmission .dsv-scn .s-sub { font-size: 13px; color: var(--color-text-secondary); margin-top: 4px; font-variant-numeric: tabular-nums; }
#view-datasubmission .dsv-scn .s-line { font-size: 12.5px; color: var(--color-text-secondary); line-height: 1.65; margin-top: 8px; }
#view-datasubmission .dsv-scn .s-scores { padding-top: 10px; font-size: 12.5px; color: var(--color-text-secondary); border-top: 1px solid var(--color-line-doc); margin-top: 12px; line-height: 1.7; }
#view-datasubmission .dsv-scn.hero { background: var(--color-doc-navy); border-color: var(--color-doc-navy); }
#view-datasubmission .dsv-scn.hero .s-name { color: #a7c9ba; }
#view-datasubmission .dsv-scn.hero .s-rank { color: #fff; }
#view-datasubmission .dsv-scn.hero .s-sub, #view-datasubmission .dsv-scn.hero .s-line, #view-datasubmission .dsv-scn.hero .s-scores { color: #c9d8cf; border-top-color: rgba(255,255,255,.18); }
#view-datasubmission .dsv-scn.picked { border: 1.5px solid var(--color-primary); }
#view-datasubmission .dsv-slider-row { display: flex; align-items: center; gap: 12px; padding: 8px 2px; border-bottom: 1px solid var(--color-line-doc); }
#view-datasubmission .dsv-slider-row:last-of-type { border-bottom: 0; }
#view-datasubmission .dsv-slider-row .sl-name { flex: 0 0 150px; font-size: 13px; font-weight: 600; }
#view-datasubmission .dsv-slider-row input[type="range"] { flex: 1; accent-color: var(--color-primary); }
#view-datasubmission .dsv-slider-row .sl-val { flex: 0 0 200px; text-align: right; font-size: 12.5px; color: var(--color-text-secondary); font-variant-numeric: tabular-nums; }
#view-datasubmission .dsv-card-dash { border: 1.5px dashed var(--color-btn-line); border-radius: var(--radius-card); padding: 16px 18px; background: var(--color-surface); }
#view-datasubmission .dsv-pick-chips { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 12px; }
#view-datasubmission .dsv-pick-chips .dsv-chip { border: 1px solid var(--color-btn-line); background: var(--color-surface); border-radius: var(--radius-full); padding: 6px 16px; font-size: 13px; color: var(--color-text-secondary); font-family: inherit; cursor: pointer; }
#view-datasubmission .dsv-pick-chips .dsv-chip.on { background: var(--color-primary-light); border-color: var(--color-primary); color: var(--color-deep-green); font-weight: 700; }
#view-datasubmission .dsv-pick-chips .dsv-chip:disabled { opacity: .5; cursor: default; }
#view-datasubmission .dsv-flow-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 10px; }
#view-datasubmission .dsv-flow-cell { background: var(--color-surface-alt); border-radius: var(--radius-ctrl); padding: 12px 14px; }
#view-datasubmission .dsv-flow-cell .f-step { font-size: 11.5px; font-weight: 700; letter-spacing: .1em; color: var(--color-text-secondary); }
#view-datasubmission .dsv-flow-cell .f-state { margin-top: 6px; font-size: 14px; font-weight: 700; color: var(--color-doc-navy); }
#view-datasubmission .dsv-flow-cell .f-note { margin-top: 4px; font-size: 11.5px; color: var(--color-note); line-height: 1.55; }
/* 工作面页头下的视角切换行（最小侵入：只占 lede 下一行） */
#view-datasubmission > .dsv-viewbar { margin: 0 0 16px; }
/* 断点按容器宽（容器＝#stage）：窄容器步目录横排、卡组单列、目标格与状态线两列 */
@container stage (max-width: 695px) {
  #view-datasubmission .dsv-layout { flex-direction: column; }
  #view-datasubmission .dsv-sec-nav { flex-direction: row; flex-wrap: wrap; position: static; flex: none; }
  #view-datasubmission .dsv-sec-nav button { width: auto; }
  #view-datasubmission .dsv-route-grid, #view-datasubmission .dsv-scn-grid { grid-template-columns: 1fr; }
  #view-datasubmission .dsv-tgt-grid { grid-template-columns: repeat(2, 1fr); }
  #view-datasubmission .dsv-flow-strip { grid-template-columns: repeat(2, 1fr); }
  #view-datasubmission .dsv-slider-row .sl-name { flex-basis: 110px; }
  #view-datasubmission .dsv-slider-row .sl-val { flex-basis: 150px; }
}

/* 可持续体检页：现状结论行与补法行（审计修复 G3，2026-11-04） */
.sus-conclusion { font-size: 15px; line-height: 1.65; font-weight: 600; margin: 0 0 10px; }
.sus-profilerow .p-fix { color: var(--color-primary); font-weight: 600; }

/* 可持续工作面：自动盘点状态区与结论卡（定案 Q31–Q34，2026-11-04） */
#view-sustainability .sus-inv-card { margin: 0 0 16px; }
#view-sustainability .sus-inv-bar { height: 8px; border-radius: var(--radius-full); background: var(--color-surface-alt); overflow: hidden; margin: 4px 0 12px; }
#view-sustainability .sus-inv-bar > span { display: block; height: 100%; background: var(--color-primary); border-radius: var(--radius-full); }
#view-sustainability .sus-inv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 8px; margin: 10px 0 4px; }
#view-sustainability .sus-inv-cell { min-width: 0; background: var(--color-surface-alt); border-radius: var(--radius-ctrl); padding: 10px 12px; }
#view-sustainability .sus-inv-name { font-size: 13px; font-weight: 600; line-height: 1.5; }
#view-sustainability .sus-inv-state { margin-top: 6px; }
#view-sustainability .sus-inv-detail { margin-top: 6px; font-size: 12px; line-height: 1.55; color: var(--color-text-secondary); }

/* 可持续工作面改版（2026-11-05）：常驻分数栏＋动作带、五步平铺、卡片墙 */
#view-sustainability .sus-topcard { position: sticky; top: 0; z-index: 5; }
#view-sustainability .sus-score-top { display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; }
#view-sustainability .sus-score-num .big { font-size: 30px; font-weight: 700; color: var(--color-full); }
#view-sustainability .sus-score-num .of { font-size: 14px; color: var(--color-text-secondary); margin-left: 4px; }
#view-sustainability .sus-score-legend { display: flex; gap: 16px; flex-wrap: wrap; font-size: 12.5px; color: var(--color-text-secondary); }
#view-sustainability .sus-score-legend .dot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; margin-right: 5px; }
#view-sustainability .sus-score-legend b { color: var(--color-text); }
#view-sustainability .sus-score-bar { display: flex; height: 10px; border-radius: var(--radius-full); overflow: hidden; background: var(--color-surface-alt); margin: 10px 0 8px; }
#view-sustainability .sus-score-bar .seg-a { background: var(--color-full); }
#view-sustainability .sus-score-bar .seg-b { background: var(--color-stale); }
#view-sustainability .sus-score-bar .seg-c { background: #c9d4e0; }
#view-sustainability .sus-note.score-note { margin: 0 0 10px; }
#view-sustainability .sus-actions.main-actions { margin-top: 2px; }
#view-sustainability .sus-step { border: 1px solid var(--color-border); border-radius: var(--radius-card); background: var(--color-surface); margin: 0 0 14px; overflow: hidden; }
#view-sustainability .sus-stephead { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; background: none; border: 0; padding: 13px 18px; cursor: pointer; font: inherit; }
#view-sustainability .sus-stephead:hover { background: var(--color-surface-alt); }
#view-sustainability .sus-stepno { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%; background: var(--color-primary); color: #fff; font-size: 12.5px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
#view-sustainability .sus-steptitle { font-size: 15px; font-weight: 600; }
#view-sustainability .sus-stepsum { flex: 1; min-width: 0; font-size: 12.5px; color: var(--color-text-secondary); text-align: right; }
#view-sustainability .sus-stephead .chev { flex: 0 0 auto; font-size: 12px; color: var(--color-note); }
#view-sustainability .sus-stepbody { border-top: 1px solid var(--color-border); padding: 16px 18px; }
#view-sustainability .sus-stepbody > .card, #view-sustainability .sus-subcard { box-shadow: none; border: 1px solid var(--color-border); }
#view-sustainability .sus-cardwall { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; margin: 0 0 6px; }
#view-sustainability .sus-indcard { border: 1px solid var(--color-border); border-radius: var(--radius-card); background: var(--color-surface); overflow: hidden; }
#view-sustainability .sus-indcard.open { grid-column: 1 / -1; }
#view-sustainability .sus-cardhead { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; background: none; border: 0; padding: 11px 13px; cursor: pointer; font: inherit; }
#view-sustainability .sus-cardhead:hover { background: var(--color-surface-alt); }
#view-sustainability .sus-cardname { font-size: 13.5px; font-weight: 600; flex: 1; min-width: 0; }
#view-sustainability .sus-cardmeta { font-size: 11.5px; color: var(--color-note); white-space: nowrap; }
#view-sustainability .sus-cardopen { border-top: 1px solid var(--color-border); padding: 12px 13px; }
#view-sustainability .sus-cand { border: 1px solid var(--color-border); border-radius: var(--radius-ctrl); padding: 11px 12px; margin: 0 0 10px; background: var(--color-surface-alt); }
#view-sustainability .sus-cand-title { font-size: 13.5px; font-weight: 600; margin-bottom: 4px; }
#view-sustainability .sus-cand-ex { font-size: 12.5px; line-height: 1.65; color: var(--color-text-secondary); margin: 0 0 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
#view-sustainability .sus-cand-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12px; margin-bottom: 8px; }
#view-sustainability .sus-cand-raw { font-size: 12.5px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-ctrl); padding: 10px 12px; margin: 0 0 10px; max-height: 320px; overflow: auto; }
#view-sustainability .sus-linkbtn { background: none; border: 0; padding: 0; font: inherit; font-size: 12.5px; color: var(--color-primary); cursor: pointer; }
#view-sustainability .sus-linkbtn:hover { text-decoration: underline; }
#view-sustainability .sus-manual { margin-top: 4px; }
#view-sustainability .sus-diff-after { background: #fdf6e0; font-weight: 600; }
#view-sustainability .sus-rawtoggle { text-align: right; margin: 2px 0 10px; }
#view-sustainability .sus-rawcard { opacity: .92; }

/* 共用「添加学校」组件（school-add.js，定案 Q27；三板块选校栏内挂载） */
.school-add { display: inline-flex; align-items: center; gap: 8px; }
.school-add-box { display: inline-flex; min-width: 250px; }
.school-add-box[hidden] { display: none; }
.school-add-input { width: 100%; border: 1px solid var(--color-btn-line); border-radius: var(--radius-ctrl); padding: 6px 10px; font-size: 13px; font-family: inherit; background: var(--color-surface); color: var(--color-text-primary); }
.school-add-input:focus { outline: none; border-color: var(--color-primary); }
.school-add-msg { font-size: 12.5px; color: var(--color-text-secondary); white-space: nowrap; }
.school-add-msg.err { color: var(--color-danger); }

/* 校友成果：候选行姓名门提示与登记控件（审计修复 W5，2026-11-04） */
#view-alumnioutcome .ao-namegate { margin-top: 4px; display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
#view-alumnioutcome .ao-namebtns { display: flex; gap: 6px; flex-wrap: wrap; }

/* 校友成果学校面（2026-11-05 改版，取代案二简阅层）：状态一行沿用
 * ao-sv-step 几何；名单平铺行、证据展开层、下载与回传常驻条、四列瓷砖
 * 新增于此。只用现行令牌与母版组件几何（视角签沿 .ao-viewtabs、行沿
 * .ao-row、卡沿 .card、瓷砖沿 .tile），规则收在 #view-alumnioutcome
 * 作用域内、ao- 前缀。 */
#view-alumnioutcome .ao-viewtabs span[data-sv-face] { cursor: pointer; }
#view-alumnioutcome .ao-sv-concl { font-size: 15px; line-height: 1.75; margin: 0; color: var(--color-text-primary); }
#view-alumnioutcome .ao-sv-steps { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
#view-alumnioutcome .ao-sv-step { font-size: 12.5px; padding: 5px 10px; border: 1px solid var(--color-btn-line); border-radius: var(--radius-md); background: var(--color-surface); color: var(--color-text-secondary); white-space: nowrap; }
#view-alumnioutcome .ao-sv-step.done { color: var(--color-deep-green); }
#view-alumnioutcome .ao-sv-step.on { border-color: var(--color-doc-navy); color: var(--color-doc-navy); font-weight: 600; box-shadow: inset 0 -2px 0 var(--color-doc-navy); }
#view-alumnioutcome .ao-sv-arrow { color: var(--color-note); font-size: 12px; }
#view-alumnioutcome .ao-row.wrap .r-name { white-space: normal; overflow: visible; text-overflow: clip; }
#view-alumnioutcome .tiles.t4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
#view-alumnioutcome .ao-sf-actions { position: sticky; top: 0; z-index: 6; }
#view-alumnioutcome .ao-sf-dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
#view-alumnioutcome .ao-sf-dlitem .ao-note { margin: 6px 0 0; }
#view-alumnioutcome .ao-sf-group { margin-top: 14px; }
#view-alumnioutcome .ao-sf-ghead { display: flex; align-items: baseline; gap: 10px; padding: 6px 2px; border-bottom: 2px solid var(--color-line-doc); }
#view-alumnioutcome .ao-sf-ghead .g-name { font-weight: 600; font-size: 14px; }
#view-alumnioutcome .ao-sf-ghead .g-count { font-size: 12.5px; color: var(--color-text-secondary); white-space: nowrap; }
#view-alumnioutcome .ao-sf-prow { display: flex; align-items: center; gap: 10px; padding: 9px 2px; border-bottom: 1px solid var(--color-line-doc); min-height: 37px; cursor: pointer; }
#view-alumnioutcome .ao-sf-prow .r-name { font-weight: 600; font-size: 13.5px; white-space: nowrap; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
#view-alumnioutcome .ao-sf-prow .r-meta { color: var(--color-text-secondary); font-size: 12.5px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#view-alumnioutcome .ao-sf-src { color: var(--color-note); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 300px; }
#view-alumnioutcome .ao-sf-det { display: none; padding: 8px 2px 10px 14px; border-bottom: 1px solid var(--color-line-doc); }
#view-alumnioutcome .ao-sf-person.open .ao-sf-det { display: block; }
#view-alumnioutcome .ao-sf-ev { display: flex; gap: 8px; align-items: baseline; padding: 3px 0; font-size: 12.5px; }
#view-alumnioutcome .ao-sf-evkind { flex: none; font-size: 11px; font-weight: 600; color: var(--color-deep-green); border: 1px solid var(--tone-green-bd); background: var(--tone-green-bg); border-radius: var(--radius-sm); padding: 1px 7px; }
#view-alumnioutcome .ao-sf-ev a { color: var(--color-deep-green); word-break: break-all; }
#view-alumnioutcome .ao-sf-gap { margin: 6px 0 0; font-size: 12.5px; color: var(--color-text-secondary); }
@container stage (max-width: 760px) {
  #view-alumnioutcome .tiles.t4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-alumnioutcome .ao-sf-dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-alumnioutcome .ao-sf-prow { flex-wrap: wrap; }
  #view-alumnioutcome .ao-sf-prow .r-meta { flex-basis: 100%; order: 3; white-space: normal; }
  #view-alumnioutcome .ao-sf-src { max-width: none; }
}
