
  :root{--blue:#2563EB;--ink:#1d2129;--bg:#f5f7fb;--card:#fff;--line:#e5e9f2;--ink-2:#2e3742;--ink-3:#1d2129;}   /* v14：--up/--down 只保留 v14 层的唯一真源；--blue 改为中性深蓝(#2563EB)，与 --down 绿(#0AA35A) 三色分离，消除"品牌强调=资金流出"误读 */
  *{box-sizing:border-box;margin:0;padding:0}
  html{--wp:url('/static/img/wallpaper_hero_v2.webp');}
  body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);font-size:14px;
    background:var(--wp) center center / cover no-repeat fixed;background-color:var(--bg)}
  body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
    background:linear-gradient(165deg,rgba(245,247,251,.52) 0%,rgba(238,243,253,.58) 45%,rgba(245,247,251,.66) 100%)}
  .layout{position:relative;z-index:1;display:flex;align-items:flex-start;min-height:100vh}
  .side{width:248px;background:linear-gradient(180deg,rgba(8,38,36,.95),rgba(11,55,52,.92));backdrop-filter:blur(10px);color:#e8fbf7;position:sticky;top:0;height:100vh;overflow-y:auto;padding:18px 12px}
  .side h1{font-size:15px;font-weight:700;margin-bottom:4px;letter-spacing:1px}
  .side .sub{font-size:11px;color:#9fd8cf;margin-bottom:10px}
  /* 侧栏「自动定时运行」状态区（v20：替代已移除的 run-mini2 手动按钮） */
  .auto-box{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);border-radius:11px;padding:10px 12px;margin-bottom:10px}
  .auto-box .auto-h{font-size:12px;font-weight:700;color:#fff;margin-bottom:6px;letter-spacing:.5px}
  .auto-box .auto-r{font-size:12px;color:#cdeee8;line-height:1.6}
  .auto-box .auto-r b{color:#FFD591}
  .auto-box .muted{color:#9fd8cf}
  .auto-box .auto-tip{font-size:10.5px;color:#9fd8cf;margin-top:7px;border-top:1px solid rgba(255,255,255,.12);padding-top:7px;line-height:1.5}
  .nav-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;color:#cdeee8;cursor:pointer;font-size:13px;margin-bottom:2px;transition:.15s}
  .nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
  .nav-item.active{background:var(--blue);color:#fff}
  .dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
  .nav-sep{height:1px;background:rgba(255,255,255,.12);margin:10px 4px}
  .nav-group{margin:3px 0}
  .nav-group>summary{list-style:none;cursor:pointer;padding:10px 10px 5px;font-size:11px;font-weight:700;letter-spacing:.06em;color:#8fb0a8;user-select:none}
  .nav-group>summary::-webkit-details-marker{display:none}
  .nav-group>summary::before{content:"\25B8";display:inline-block;margin-right:7px;color:#6f8e87;transition:transform .15s}
  .nav-group[open]>summary::before{content:"\25BE"}
  .nav-group-body{display:flex;flex-direction:column}
  .main{flex:1;display:flex;flex-direction:column;min-width:0}
  .content{padding:20px;overflow-y:auto}
  .page{animation:fade .25s}
  @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  .card{background:rgba(255,255,255,.80);backdrop-filter:blur(10px) saturate(1.1);border:1px solid rgba(229,233,242,.9);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 2px 10px rgba(20,40,90,.06)}
  .card h3{font-size:14px;margin:14px 0 8px;color:var(--blue)}
  .card h3:first-child{margin-top:0}
  .card h3 .live-dot{color:#52c41a;font-size:10px;margin-left:6px}
  .card h4{font-size:13px;margin-bottom:8px;color:var(--ink)}
  .muted{color:#1d2129;font-size:12px;font-weight:500}
  /* 首屏：仙逆壁纸为底，数据直接压在其上，无需滚动即可同时可见 */
  .hero{position:relative;border-radius:18px;overflow:visible;margin-bottom:16px;
    min-height:calc(100vh - 118px);display:flex;flex-direction:column;justify-content:center;gap:14px;padding:26px 28px}
  .hero::before{content:"";position:absolute;inset:0;background:var(--wp) center/cover no-repeat;transition:background-image .3s;opacity:.5}
  .hero::after{content:"";position:absolute;inset:0;
    background:linear-gradient(118deg,rgba(6,30,28,.86) 0%,rgba(9,44,42,.72) 46%,rgba(12,60,57,.58) 100%)}

  .hero>*{position:relative;z-index:2}
  .hero-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
  .gcard{background:rgba(255,255,255,.70);backdrop-filter:blur(14px) saturate(1.15);border:1px solid rgba(255,255,255,.55);
    border-radius:13px;padding:13px 14px;box-shadow:0 6px 22px rgba(7,38,36,.18)}
  .gcard h4{font-size:12.5px;margin-bottom:8px;color:var(--blue);font-weight:700}
  .hero-foot{display:flex;flex-wrap:wrap;gap:10px;align-items:center;color:#e8fbf7;font-size:12px}
  .hero-foot .chip{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);border-radius:20px;padding:4px 11px;backdrop-filter:blur(6px)}
  .p1-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
  .p1-card{background:var(--card,#fff);border:1px solid var(--line,#e5e9f2);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:3px}
  .p1-card b{font-size:26px;font-weight:800;color:var(--ink,#1d2129);line-height:1.15;font-variant-numeric:tabular-nums}
  .p1-card span{font-size:12.5px;font-weight:600;color:var(--ink-2,#2e3742)}
  .p1-card i{font-style:normal;font-size:11px;color:var(--ink-3,#86909c)}
  .hero-txt{position:relative;z-index:2;padding:0;color:#fff}
  .hero-txt h1{font-size:22px;font-weight:800;letter-spacing:1px;text-shadow:0 2px 8px rgba(0,0,0,.4)}
  .hero-txt p{font-size:12.5px;color:#d6f0ea;margin:8px 0 16px;max-width:680px}
  .mini{padding:14px}
  .grid-exp{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;margin-top:10px}
  .exp-card{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:12px;cursor:pointer;transition:.15s;position:relative}
  .exp-card:hover{border-color:var(--blue);background:#f0f5ff}
  .exp-card.has-out{border-color:#52c41a}
  .exp-card b{font-size:13px}.exp-card .muted{font-size:11px;display:block}
  .expert-head{display:flex;gap:16px;align-items:center;background:rgba(255,255,255,.70);backdrop-filter:blur(14px) saturate(1.15);border:1px solid rgba(229,233,242,.9);border-radius:14px;padding:18px;margin-bottom:16px}
  .avatar{flex:0 0 auto}
  .avatar-img{border-radius:50%;object-fit:cover;display:block;box-shadow:0 2px 10px rgba(37,99,235,.18);border:2px solid #fff}
  .expert-head h2{font-size:18px}
  .tags{margin:6px 0}
  .tag{display:inline-block;border:1px solid;padding:2px 9px;border-radius:20px;font-size:11px;margin-right:6px}
  .fit{font-size:12.5px;color:#2e3742;font-weight:500;margin-top:6px;max-width:760px}
  .out-card{background:linear-gradient(180deg,rgba(255,255,255,.74),rgba(255,255,255,.70))}
  .out-wrap{margin-top:8px}
  .agent-panel{margin-top:10px;padding:12px 14px;border:1px solid rgba(37,99,235,.16);border-radius:10px;background:linear-gradient(135deg,rgba(37,99,235,.05),rgba(37,99,235,.05))}
  .agent-title{font-size:12px;font-weight:600;color:#2563EB;margin-bottom:6px;display:flex;align-items:center;gap:6px}
  .agent-src{font-weight:400;color:var(--ink-3);font-size:11px}
  .agent-body{font-size:13px;line-height:1.75;color:var(--ink)}
  .agent-body .agent-h{color:#2563EB;font-weight:600}
  /* ★ P1-15（2026-10-22）：决策来源徽章——让用户一眼看清结论来自哪套逻辑，
     纠正"AI 选股"叙事错位（LLM 实为影子模式、不参与决策）。 */
  .src-badge{display:inline-block;font-size:11px;font-weight:600;line-height:1;padding:3px 8px;border-radius:10px;margin:0 0 6px;vertical-align:middle}
  .src-badge.rule{background:#e8f0ff;color:#1d4ed8;border:1px solid #c7d8ff}
  .src-badge.llm{background:#eafaf6;color:#0b7d6f;border:1px solid #bfe6df}
  .src-badge.warn{background:#fff4e6;color:#b25e09;border:1px solid #ffd8a8}
  .disc-panel{margin-top:14px;padding:14px;border:1px solid rgba(37,99,235,.16);border-radius:12px;background:linear-gradient(135deg,rgba(37,99,235,.04),rgba(37,99,235,.04))}
  .disc-head h3{margin:0 0 10px;font-size:15px}
  .disc-input{display:flex;gap:8px;flex-wrap:wrap}
  .disc-input input{flex:1;min-width:200px;padding:8px 12px;border:1px solid rgba(37,99,235,.25);border-radius:8px;background:rgba(255,255,255,.72);font-size:13px;color:var(--ink)}
  .disc-input input:focus{outline:none;border-color:#2563EB}
  .disc-body{margin-top:10px;max-height:480px;overflow:auto}
  .disc-empty{color:var(--ink-3);font-size:13px;padding:10px 0}
  .disc-round-tag{margin:10px 0 4px;font-size:11px;font-weight:600;color:#2563EB}
  .disc-msg{display:flex;gap:8px;padding:7px 0;border-bottom:1px dashed rgba(0,0,0,.06)}
  .disc-msg .dm-name{font-weight:600;color:#2563EB;font-size:12px;white-space:nowrap}
  .disc-msg .dm-content{margin-top:1px;font-size:13px;line-height:1.6;color:var(--ink)}
  .disc-conclusion{margin-top:10px;padding:10px 12px;background:rgba(37,99,235,.07);border-radius:8px;font-size:13px}
  .disc-conclusion b{color:#2563EB}
  .disc-task{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;margin-top:6px;background:rgba(255,255,255,.68);border-radius:8px;border:1px solid rgba(0,0,0,.04)}
  .disc-task .dt-main{flex:1}
  .disc-task .dt-name{font-size:12px;font-weight:600;color:var(--ink)}
  .disc-task .dt-action{font-size:12px;color:var(--ink-2)}
  .disc-task .dt-result{font-size:12px;color:var(--ink);margin-top:3px;line-height:1.5}
  .dt-status{font-size:11px;padding:2px 8px;border-radius:10px;white-space:nowrap;flex:0 0 auto}
  .dt-status.pending{background:#f0f0f0;color:#888}
  .dt-status.running{background:#fff7e6;color:#fa8c16}
  .dt-status.done{background:#f6ffed;color:#52c41a}
  .dt-status.failed{background:#fff1f0;color:#ff4d4f}
  /* ★ 智能体协商会议页（2026-10-18）：样式与 disc-panel 同族（蓝紫渐变语言），
     但结构是「状态看板 + 会议实录 + 权重表」三件套，不用 disc-* 的聊天气泡。 */
  .council-agents{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 4px}
  .ca-card{border:1px solid rgba(37,99,235,.16);border-radius:11px;padding:10px 12px;background:linear-gradient(135deg,rgba(37,99,235,.05),rgba(37,99,235,.05))}
  .ca-card .ca-name{font-size:13px;font-weight:700;color:var(--blue)}
  .ca-card .ca-desc{font-size:12px;color:var(--ink-3);line-height:1.55;margin:3px 0 6px}
  .ca-card .ca-meta{font-size:11px;color:var(--flat);display:flex;justify-content:space-between;gap:8px}
  .ca-card .ca-meta b{color:var(--ink-2)}
  .ca-card .ca-sum{font-size:12px;color:var(--ink-2);margin-top:5px;line-height:1.5;border-top:1px dashed rgba(0,0,0,.08);padding-top:5px}
  .council-meetings{display:flex;flex-direction:column;gap:12px}
  .cm-block{border:1px solid rgba(37,99,235,.18);border-radius:12px;overflow:hidden}
  .cm-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 12px;background:linear-gradient(135deg,rgba(37,99,235,.08),rgba(37,99,235,.08))}
  .cm-head .cm-agenda{font-size:13px;font-weight:700;color:var(--blue)}
  .cm-dir{font-size:11px;font-weight:700;padding:2px 10px;border-radius:10px;white-space:nowrap}
  .cm-dir.tighten{background:#fff1f0;color:#cf1322}
  .cm-dir.loosen{background:#f6ffed;color:#389e0d}
  .cm-dir.hold{background:#f2f3f5;color:#2e3742}
  .cm-head .cm-adopt{font-size:12px;color:var(--ink-2)}
  .cm-head .cm-adopt b{color:var(--ink)}
  .cm-head .cm-from{font-size:11px;color:var(--flat);margin-left:auto}
  .cm-veto{padding:7px 12px;background:#fff7e6;border-bottom:1px solid rgba(255,214,145,.5);font-size:12px;color:#ad6800}
  .cm-ops{padding:4px 12px 10px}
  .cm-op{display:flex;gap:9px;padding:7px 0;border-bottom:1px dashed rgba(0,0,0,.07);align-items:flex-start}
  .cm-op:last-child{border-bottom:none}
  .cm-op .co-agent{flex:0 0 92px;font-size:12px;font-weight:700;color:var(--blue);padding-top:1px}
  .cm-op .co-main{flex:1;min-width:0}
  .cm-op .co-reason{font-size:12.5px;line-height:1.6;color:var(--ink)}
  .cm-op .co-meta{font-size:11px;color:var(--flat);margin-top:2px;display:flex;gap:10px;flex-wrap:wrap}
  .cm-op .co-meta .co-dir{font-weight:700}
  .cm-op .co-dir.tighten{color:#cf1322}.cm-op .co-dir.loosen{color:#389e0d}.cm-op .co-dir.hold{color:#2e3742}
  .cm-op .co-prop{font-size:11px;color:var(--ink-3);margin-top:2px;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  /* ★ N2（复审批次 R2）：正文 clamp 折叠（**禁止** slice 硬切半句）+ 原始发言折叠层 */
  .co-reason.clamp3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .co-reason.clamp3.is-open{display:block;-webkit-line-clamp:unset;overflow:visible}
  .clamp-toggle{display:inline-block;margin-top:2px;font-size:12px;padding:0;background:none;border:0;
    color:var(--brand);cursor:pointer;text-decoration:underline;outline-offset:2px}
  .clamp-toggle:focus-visible{outline:2px solid var(--focus)}
  .co-raw{margin-top:4px;font-size:12px;color:var(--ink-3)}
  .co-raw summary{cursor:pointer;color:var(--ink-3);outline-offset:2px}
  .co-raw summary:focus-visible{outline:2px solid var(--focus);border-radius:4px}
  .co-raw pre{margin:6px 0 0;padding:8px;background:#F7F9FC;border:1px solid var(--line);border-radius:6px;
    white-space:pre-wrap;word-break:break-word;font-size:12px;color:var(--ink-2);max-height:180px;overflow:auto}
  .council-weights{overflow:auto}
  .council-weights table,.sim-tbl{width:100%;border-collapse:collapse;font-size:12.5px}
  .council-weights th,.council-weights td,.sim-tbl th,.sim-tbl td{border:1px solid var(--line);padding:6px 9px;text-align:left;white-space:nowrap}
  .council-weights th,.sim-tbl th{background:#f0f5ff;color:var(--blue);font-weight:600}
  .council-weights td.num,.sim-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
  .council-events{max-height:220px;overflow:auto;font-size:12px;line-height:1.7;color:var(--ink-2)}
  .council-events .ce-item{padding:5px 0;border-bottom:1px dashed rgba(0,0,0,.07)}
  /* ★ LLM 圆桌会议（2026-10-19）：复用 cm-* 骨架，追加席位/专家徽章与影子对照条 */
  .clm-mode{font-size:11px;font-weight:700;padding:2px 10px;border-radius:10px;background:#fff7e6;color:#ad6800;vertical-align:middle;margin-left:6px}
  .clm-note{font-size:12px;color:var(--ink-2);line-height:1.7;padding:9px 12px;border:1px dashed rgba(37,99,235,.25);border-radius:10px;background:rgba(37,99,235,.04);margin:4px 0 8px}
  .clm-block .cm-head{background:linear-gradient(135deg,rgba(37,99,235,.07),rgba(37,99,235,.07))}
  .clm-badge{font-size:11px;font-weight:700;padding:2px 9px;border-radius:9px;white-space:nowrap}
  .clm-badge.match{background:#f6ffed;color:#389e0d}
  .clm-badge.diff{background:#fff1f0;color:#cf1322}
  .clm-badge.degraded{background:#fff7e6;color:#ad6800}
  .clm-badge.cache{background:#e6fffb;color:#006d75}
  .clm-experts{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
  .clm-expert{font-size:11px;padding:1px 8px;border-radius:8px;background:rgba(37,99,235,.07);color:var(--ink-2)}
  .clm-expert.abstain{background:#f2f3f5;color:#1d2129;font-weight:500}
  .clm-expert.failed{background:#fff1f0;color:#cf1322}
  .clm-expert.cache{background:#e6fffb;color:#006d75}
  .clm-expert b{font-weight:700}
  .clm-absent{font-size:12px;color:#ad6800;padding:5px 12px;background:#fffdf5;border-top:1px dashed rgba(255,214,145,.5)}
  .clm-shadow{font-size:12.5px;line-height:1.8;color:var(--ink-2)}
  .clm-shadow .cs-row{display:flex;gap:10px;flex-wrap:wrap;padding:6px 0;border-bottom:1px dashed rgba(0,0,0,.07)}
  .clm-shadow .cs-row:last-child{border-bottom:none}
  .clm-cost{font-size:12.5px;color:var(--ink-2);line-height:1.8}
  .clm-cost b{color:var(--ink)}
  .council-events .ce-item:last-child{border-bottom:none}
  .council-history{max-height:200px;overflow:auto;font-size:12px;color:var(--ink-2);line-height:1.8}
  /* ★ 研判分歧圆桌共识卡（自我进化闭环 · 步骤3） */
  .rt-tally{margin:6px 0 10px}
  .rt-bar{display:flex;height:30px;border-radius:8px;overflow:hidden;border:1px solid var(--line)}
  .rt-seg{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .rt-seg.bull{background:#cf1322}  /* 看多=红（红涨绿跌） */
  .rt-seg.bear{background:#389e0d}  /* 看空=绿 */
  .rt-seg.neu{background:#8c8c8c}    /* 中性=灰 */
  .rt-legend{font-size:12px;color:var(--ink-3);margin-top:5px}
  .rt-topic{font-size:12.5px;color:var(--ink-2);margin-top:5px;line-height:1.7}
  .rt-cons{font-size:13.5px;color:var(--ink);line-height:1.85;background:#f7faff;border-left:3px solid #2563EB;padding:8px 12px;border-radius:0 8px 8px 0}
  /* ★ 模拟盘页（2026-10-18） */
  .sim-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:6px 0 10px}
  .sim-stat{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:rgba(255,255,255,.6)}
  .sim-stat b{display:block;font-size:24px;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums}
  .sim-stat span{font-size:12px;color:var(--ink-3)}
  .sim-stat i{display:block;font-size:11px;color:var(--flat);font-style:normal;margin-top:2px}
  .sim-rows{overflow:auto}
  .sim-tbl td.wrap{white-space:normal;min-width:180px}
  .sim-tag{display:inline-block;padding:2px 9px;border-radius:9px;font-size:11px;font-weight:600;white-space:nowrap}
  .sim-tag.closed{background:#f2f3f5;color:#2e3742}
  .sim-tag.open{background:#e8f0ff;color:#2563EB}
  .sim-tag.pending{background:#fff7e6;color:#ad6800}
  .sim-params{display:flex;flex-wrap:wrap;gap:8px}
  .sim-params span{font-size:12px;background:#f2f5fb;border-radius:8px;padding:5px 11px;color:#2e3742}
  .sim-params span b{color:var(--ink)}
  .sim-history{font-size:12px;color:var(--ink-2);line-height:1.9}
  .sim-history .sh-item{display:flex;gap:10px;flex-wrap:wrap;padding:4px 0;border-bottom:1px dashed rgba(0,0,0,.06)}
  .sim-history .sh-item:last-child{border-bottom:none}
  @media (max-width:1100px){.council-agents{grid-template-columns:repeat(2,1fr)}.sim-stats{grid-template-columns:repeat(2,1fr)}}
  @media (max-width:680px){.council-agents{grid-template-columns:1fr}.sim-stats{grid-template-columns:1fr}}
  .out-chart{margin:6px 0 10px}
  .out-detail .kv{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}
  .out-detail .kv span{font-size:12px;background:#f2f5fb;border-radius:8px;padding:4px 10px;color:#2e3742}
  .out-detail .kv span.tag2,.tag2{font-size:11px;border-radius:8px;padding:3px 8px;color:#fff}
  .t-主线{background:#cf1322}.t-支线{background:#2563EB}.t-冷门{background:#5c6675}
  .badge{display:inline-block;padding:5px 12px;border-radius:10px;font-size:12px;font-weight:600;margin:4px 0}
  .b-blue{background:#e8f0ff;color:#2563EB}.b-red{background:#fff1f0;color:#cf1322}.b-grey{background:#f2f3f5;color:#2e3742}
  .out-detail .ok{color:#389e0d}.out-detail .warn{color:#d4380d}
  .out-t{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:6px}
  .out-t th,.out-t td{border:1px solid var(--line);padding:6px 8px;text-align:left}
  .out-t th{background:#f0f5ff;color:var(--blue);font-weight:600}
  .out-ul{margin-left:18px;font-size:13px;line-height:1.8;color:#2e3742}.sec-t{font-size:13px;font-weight:600;color:var(--blue);margin:8px 0 4px}
  .out-empty{padding:16px;background:#fff7e6;border:1px dashed #ffd591;border-radius:10px;color:#ad6800;font-size:13px}
  /* ★ 2026-09-26：主区「即刻运行状态条」已整行移除（就绪 / 上次运行 / 后端自动运行三枚芯片）——
     用户要求取消；这三条信息在侧栏「自动定时运行」框里已有（槽位 / 下次运行 / 上次运行），属重复。*/
  /* ★ 协同运行拓扑（2026-09-26：取代原「立即运行」按钮所在的流程条）
     布局：JS 按计划的 layers 计算坐标（**不依赖 getBoundingClientRect** —— 该页默认 hidden，
     量不到尺寸），节点是绝对定位的 HTML 卡片、边是同一坐标系里的 SVG，故隐藏状态下也画得对。*/
  .topo-head{display:flex;align-items:baseline;gap:10px;margin:12px 0 6px}
  .topo-head b{font-size:14px;color:var(--blue)}
  .topo-meta{font-size:12px;color:#1d2129;font-weight:500}
  .topo{position:relative;margin:4px 0 6px;border:1px solid var(--line);border-radius:12px;background:#fbfcff;overflow-x:auto;overflow-y:hidden}
  .topo svg.topo-edges{position:absolute;left:0;top:0;pointer-events:none}
  .topo-node{position:absolute;border:1.5px solid #c9d4ee;background:#fff;border-radius:11px;padding:7px 10px;cursor:pointer;transition:.15s;overflow:hidden}
  .topo-node:hover{border-color:var(--blue);box-shadow:0 2px 10px rgba(37,99,235,.16)}
  .topo-node .tn-p{position:absolute;left:0;top:0;bottom:0;width:4px}
  .topo-node b{display:block;font-size:12.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:118px}
  .topo-node .tn-code{display:block;font-size:10.5px;color:#2e3742;margin-top:2px}
  .topo-node .tn-xj{display:block;font-size:9.5px;color:#1d2129;margin-top:1px;font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:500}
  .topo-node .fn-status{position:absolute;right:8px;top:6px;font-size:9.5px;font-style:normal;color:#1d2129;font-weight:500}
  .topo-node.done{border-color:#52c41a;background:#f4fff8}.topo-node.done .fn-status{color:#52c41a}
  .topo-node.运行中{border-color:var(--blue);background:#eef4ff;animation:pulse 1s infinite}
  @keyframes pulse{0%{box-shadow:0 0 0 0 rgba(37,99,235,.4)}70%{box-shadow:0 0 0 8px rgba(37,99,235,0)}100%{box-shadow:0 0 0 0 rgba(37,99,235,0)}}
  .topo-node.invalid{border-color:#ff4d4f;background:#fff1f0}.topo-node.invalid .fn-status{color:#ff4d4f}
  .topo-node.cp{border-width:2.5px;border-color:#fa8c16}
  .topo-lane{position:absolute;border:1px dashed #d3bbff;border-radius:12px;background:#faf7ff;pointer-events:none}
  .topo-lane-h{position:absolute;font-size:11px;color:#2563EB;font-weight:600}
  .topo-cap{position:absolute;font-size:11px;color:#1d2129;font-weight:600}
  .topo-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:#2e3742;margin:2px 0 4px}
  .topo-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:middle}
  .topo-empty{padding:16px;font-size:13px;color:#1d2129}
  .run-log{font-size:13px;color:#2e3742;background:#f7faff;border-radius:10px;padding:12px 14px;margin-top:8px}
  .kpi-live{margin-top:6px}.kpi-tools{margin-bottom:10px}
  .kpi-table-wrap{max-height:360px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;background:#fff}
  .kpi-table thead th{position:sticky;top:0;z-index:1;background:#F2F5FB}
  .kpi-table{width:100%;border-collapse:collapse;font-size:12.5px}
  .kpi-table th,.kpi-table td{border:1px solid var(--line);padding:7px 9px;text-align:left}
  .kpi-table th{background:#f0f5ff;color:var(--blue);font-weight:600}
  .kpi-table td.ops button{margin-right:6px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:3px 9px;cursor:pointer;font-size:12px}
  .kpi-table td.ops button.del{color:#d4380d;border-color:#ffccc7}
  .modal{position:fixed;inset:0;background:rgba(8,38,36,.55);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:50}
  body.modal-open{overflow:hidden}
  .modal[hidden]{display:none}
  .modal-box{background:#fff;border-radius:14px;padding:22px;width:380px;max-width:92vw;box-shadow:0 12px 40px rgba(20,40,90,.25)}
  .modal-box h3{margin-bottom:14px;color:var(--blue)}
  .form-row{margin-bottom:11px}
  .form-row label{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:#2e3742}
  .form-row input,.form-row select{border:1px solid var(--line);border-radius:9px;padding:8px 11px;font-size:14px;outline:none}
  .form-row input:focus,.form-row select:focus{border-color:var(--blue)}
  .modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}
  details summary{cursor:pointer;color:var(--blue);font-size:13px;margin-top:6px}
  .run-log .lg-row{display:flex;gap:8px;padding:3px 0;border-bottom:1px dashed rgba(201,212,238,.5);font-size:12.5px;align-items:baseline}
  .run-log .lg-row:last-child{border-bottom:none}
  .run-log .lg-t{color:#86909c;flex:0 0 auto;font-variant-numeric:tabular-nums}
  .run-log .lg-n{color:var(--ink);font-weight:600;flex:0 0 auto}
  .run-log .lg-m{color:#2e3742;word-break:break-all}
  .run-log .lg-ok .lg-m{color:#389e0d}.run-log .lg-warn .lg-m{color:#d46b08}.run-log .lg-err .lg-m{color:#cf1322}
  @media(max-width:900px){.side{display:none}}
  @media(max-width:900px){.hero-cards{grid-template-columns:repeat(2,1fr)}.p1-stats{grid-template-columns:repeat(2,1fr)}.us2col{grid-template-columns:1fr}}
  @media(max-width:560px){.hero{min-height:auto;padding:20px}.hero-cards{grid-template-columns:1fr}.p1-stats{grid-template-columns:1fr}}

  /* ================= v14 设计系统（覆盖层：token / 12 栅格 / 对比度 / 可读性） ================= */
  :root{
    --up:#E5352B;--down:#0A7350;--flat:#86909C;
    --risk-hi:#D4380D;--risk-mid:#FA8C16;--risk-lo:#2E9E5B;
    --ink:#111826;--ink-2:#4E5969;--ink-3:#86909C;
    --brand:#2563EB;--brand-weak:#EAF1FF;--line:#E3E8F0;
    --surface:rgba(255,255,255,.88);--surface-strong:rgba(255,255,255,.94);
    --r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;
    --sh-1:0 1px 2px rgba(16,24,40,.05);--sh-2:0 4px 12px rgba(16,24,40,.08);
    --fs-h1:22px;--fs-h2:18px;--fs-h3:15px;--fs-body:13px;--fs-cap:12px;
  }
  body{font-size:var(--fs-body);color:var(--ink);background-color:#F2F5FA}
  /* 壁纸只压一层，压暗但不糊字 */
  body::before{background:rgba(242,245,250,.30)}
  /* 等宽数字：涨跌数值列不再因字宽抖动 */
  .out-t td,.kpi-table td,.kpi-tile b,.run-log .lg-t{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
  /* 卡片：高不透明底 + 统一阴影，取消多卡叠加毛玻璃（性能与可读性双赢） */
  .card{background:var(--surface);backdrop-filter:none;border:1px solid var(--line);
    border-radius:var(--r-md);padding:16px;margin-bottom:16px;box-shadow:var(--sh-1)}
  .card h3{font-size:var(--fs-h3);color:var(--ink);font-weight:600;margin:0 0 8px}
  .card h4{font-size:var(--fs-cap);color:var(--ink-3);font-weight:600;margin:10px 0 4px}
  .card-sub{font-size:var(--fs-cap);color:var(--ink-3);line-height:1.6;margin-bottom:12px}
  .fit{font-size:var(--fs-body);color:var(--ink-2);line-height:1.65}
  /* 首屏：12 栅格 = 左 8（主图）+ 右 4（KPI 大数字），总高扣掉 48px 顶栏，保证首屏不滚动 */
  .hero{min-height:calc(100vh - 48px - 32px);padding:24px;gap:16px;border-radius:var(--r-lg)}
  .hero::after{background:linear-gradient(115deg,rgba(8,18,44,.84) 0%,rgba(12,28,70,.62) 48%,rgba(16,38,92,.46) 100%)}
  .hero-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;align-items:stretch;width:100%}
  .hero-main{grid-column:span 8;display:flex;flex-direction:column;justify-content:center;gap:14px;min-width:0}
  .hero-side{grid-column:span 4;display:grid;grid-template-columns:1fr 1fr;gap:8px;align-content:center}
  .kpi-tile{background:rgba(8,18,44,.44);border:1px solid rgba(255,255,255,.20);border-radius:var(--r-sm);padding:10px 12px;backdrop-filter:blur(8px) saturate(1.1)}
  .kpi-tile b{display:block;font-size:22px;font-weight:700;color:#fff;line-height:1.25;text-shadow:0 1px 3px rgba(0,0,0,.45)}
  .kpi-tile span{display:block;font-size:var(--fs-cap);color:#D3DDF2;margin-top:2px;text-shadow:0 1px 2px rgba(0,0,0,.45)}
  .hero-txt h1{font-size:var(--fs-h1);font-weight:700}
  .hero-txt p{font-size:var(--fs-cap);color:#D6E0F5;margin:6px 0 0;max-width:720px}
  .hero-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .gcard{background:var(--surface-strong);border:1px solid rgba(255,255,255,.75);
    border-radius:var(--r-md);padding:12px;box-shadow:var(--sh-2);backdrop-filter:none}
  .gcard h4{font-size:var(--fs-cap);color:var(--ink-2);margin:0 0 6px;font-weight:600}
  .hero-foot .chip{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.30);
    border-radius:var(--r-pill);padding:4px 11px;font-size:var(--fs-cap);color:#E7EEFF}
  /* 专家总览：6 列，去掉与 has-out 重复的角标 */
  .grid-exp{grid-template-columns:repeat(6,1fr);gap:8px}
  .exp-card{padding:8px 10px;border-radius:var(--r-sm);background:rgba(255,255,255,.78);gap:8px}
  .exp-card b{font-size:var(--fs-body)}
  .exp-card .muted{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .exp-card .chip-mini{font-size:11px;padding:1px 7px;border-radius:var(--r-pill);background:#F2F3F5;color:var(--ink-3);margin-left:auto;flex:0 0 auto}
  .exp-card.has-out .chip-mini{background:#EAF7EF;color:var(--risk-lo)}
  /* 专家页头：头像缩小 + 结论条前移（动态信息进首屏） */
  .expert-head{background:var(--surface);backdrop-filter:none;border:1px solid var(--line);
    border-radius:var(--r-md);padding:16px;gap:16px;margin-bottom:16px;align-items:flex-start}
  .expert-head h2{font-size:var(--fs-h2);font-weight:600}
  .eh-info{min-width:0;flex:1 1 auto}
  .expert-concl{margin-left:auto;text-align:right;flex:0 1 42%;min-width:0}
  .expert-concl .t{font-size:var(--fs-h2);font-weight:600;color:var(--ink);line-height:1.35;word-break:break-word}
  .expert-concl .s{font-size:var(--fs-cap);color:var(--ink-3);margin-top:4px}
  /* 专家页 12 栅格：动态产出占 8 列（原静态文案反超动态，此处纠正） */
  .grid-main{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}
  .span12{grid-column:span 12}
  .out-card{background:var(--surface)}
  .out-chart{min-height:180px;margin:8px 0 12px;overflow:visible}
  /* v20 图表自适应：SVG 以 viewBox 等比缩放，height:auto 防止浏览器回退 150px 默认高度导致被父容器裁切 */
  .gcard,.out-chart{overflow:visible}
  .gcard svg,.out-chart svg{width:100%;height:auto;max-width:100%;display:block}
  /* v26：专家页全屏布局后卡片超宽，固定 viewBox 图表被放大 3 倍+ 导致文字巨大变形；设 460px 上限保持清晰 */
  .out-chart svg{max-width:460px}
  /* ★ 2026-09-26：按**真实列宽**设计的图（viewBox ≥ 1000）不受 460 上限约束 ——
     460 那条上限治的是「300 宽的图被放大 3 倍」，而这类图本来是 1:1 渲染的。
     实测：专家页列宽 1317px，300 宽的直方图只占 460px ⇒ 65% 横向空间空着（用户反馈"那么多空余的地方"）。 */
  .out-chart svg.chart-wide{max-width:100%}
  /* 窄屏：宁可横向滚动，也不把宽图缩成 4px 的字（.out-wrap 在 ≤900px 已有 overflow-x:auto） */
  @media(max-width:900px){.out-chart svg.chart-wide{min-width:820px}}
  .out-detail .kv span{font-size:var(--fs-cap);background:#F2F5FB;border-radius:var(--r-sm);padding:4px 10px;color:var(--ink-2)}
  .funnel{display:flex;flex-direction:column;gap:6px;margin:8px 0}
  .fun-row{display:flex;align-items:center;gap:8px;background:#F2F5FB;border-radius:8px;padding:7px 12px}
  .fun-row span{font-size:var(--fs-cap);color:var(--ink-2);flex:1}
  .fun-row b{font-size:var(--fs-body);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
  .fun-row i{font-style:normal;font-size:var(--fs-cap);color:var(--ink-3);min-width:48px;text-align:right;font-variant-numeric:tabular-nums}
  .us2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:8px 0}
  .us-col{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#FAFBFE}
  .us-col h4{font-size:var(--fs-cap);font-weight:700;color:var(--ink);margin:0 0 6px}
  .us-col .out-t td,.us-col .out-t th{font-size:12px;padding:5px 6px}
  /* 表格：去掉竖网格线与蓝底表头（Tufte「避免重网格」） */
  .out-t th,.out-t td,.kpi-table th,.kpi-table td{border:none;border-bottom:1px solid var(--line);padding:6px 8px;word-break:break-word}
  .out-t th,.kpi-table th{background:transparent;color:var(--ink-3);font-size:var(--fs-cap);font-weight:600}
  .out-t td:first-child,.kpi-table td:first-child{color:var(--ink-2)}
  .out-ul{font-size:var(--fs-body);line-height:1.8;color:var(--ink-2);margin:6px 0 2px 20px;padding-left:0}
  .muted{color:var(--ink-3);font-size:var(--fs-cap)}
  .t-主线{background:#E5352B}.t-支线{background:#2563EB}.t-冷门{background:#86909C}
  details.fold{margin-top:8px}
  details.fold>summary{font-size:var(--fs-body);font-weight:600;color:var(--brand);cursor:pointer;padding:6px 0}
  .chip-info{font-size:var(--fs-cap);color:var(--ink-3);background:#F2F5FB;border-radius:var(--r-pill);padding:4px 11px}
  .run-log .lg-row{font-size:var(--fs-cap)}
  .out-err{background:#FFF7E6;border:1px solid #FFD591;border-radius:var(--r-sm);
    padding:8px 12px;color:#AD6800;font-size:var(--fs-cap);margin-bottom:10px}
  @media(max-width:1280px){
    .hero-main,.hero-side{grid-column:span 12}
    .grid-exp{grid-template-columns:repeat(3,1fr)}
    .hero{min-height:auto}
  }
  @media(max-width:900px){.hero-cards{grid-template-columns:1fr}.grid-exp{grid-template-columns:repeat(2,1fr)}.expert-head{flex-wrap:wrap}.expert-concl{flex:1 1 100%;text-align:left;margin-left:0}
    .out-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
    .out-wrap .out-t{min-width:560px}}
  /* 王林页 · 行业板块动态热力图控件 */
  .sec-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 2px}
  .sec-ctl-label{font-size:12px;color:var(--ink-3)}
  .sec-dim{font:inherit;font-size:12px;padding:4px 12px;border:1px solid var(--line);border-radius:14px;
    background:var(--surface);color:var(--ink-2);cursor:pointer;transition:.15s}
  .sec-dim:hover{border-color:var(--brand)}
  .sec-dim.active{background:var(--brand);border-color:var(--brand);color:#fff}
  .sec-legend{font-size:11px;color:var(--ink-3);margin-left:6px}
  .sec-rt-title{font-size:13px;font-weight:600;margin:16px 0 4px;color:var(--ink-2)}

  /* ================= v27 UI 修复层（task-33，2026-10-18） =================
     目标（对齐 docs/UI_REVIEW_20261018.md）：可读性（对比度/字号）、
     内容区不透壁纸、首屏封顶、1440/1100 版心、移动端抽屉导航、
     表格/按钮/空态/数据状态组件统一。全部为本层覆盖，不动既有语义规则。 */
  :root{
    --ink:#111826;--ink-2:#4E5969;--ink-3:#6B7280;
    --brand:#2563EB;--brand-weak:#EAF1FF;
    --up-text:#C81E1E;--down-text:#0A7350;   /* 文本用深一档（≥4.5:1） */
    --ok:#0A7A43;--warn:#B45309;--err:#C81E1E;   /* 状态文字 ≥4.5:1 */
    --risk-hi:#B4230D;--risk-mid:#B45309;--risk-lo:#0A7A43;
    --bg:#F2F5FA;--surface:#FFFFFF;--surface-strong:#FFFFFF;
    --fs-h1:24px;--fs-h2:18px;--fs-h3:16px;--fs-body:14px;--fs-cap:13px;
    --content-max:1440px;--expert-max:1100px;
    --r-sm:8px;--r-md:12px;--r-lg:16px;--r-pill:999px;
    --sh-1:0 1px 2px rgba(16,24,40,.06);--sh-2:0 4px 14px rgba(16,24,40,.10);
    --focus:#2563EB;
  }
  /* 内容区不再透壁纸：壁纸只出现在 hero（CSS）与专家页头（<img> 装饰层） */
  body{background:#F2F5FA !important;font-size:14px;line-height:1.6;color:var(--ink)}
  body::before{display:none !important}
  .skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:#fff;color:var(--brand);
    padding:10px 16px;border-radius:0 0 10px 0;font-size:14px;box-shadow:var(--sh-2)}
  .skip-link:focus{left:0}
  .side-h{font-size:15px;font-weight:800;color:var(--ink);margin:0 0 2px}
  .site-footer{border-top:1px solid var(--line);margin-top:24px;padding:16px 20px;background:rgba(255,255,255,.72);color:var(--ink-2);font-size:12px;line-height:1.7}
  .site-footer .ft-line{margin-bottom:4px}
  .site-footer .ft-line a{color:var(--blue);text-decoration:none}
  .site-footer .ft-beian-ico{height:14px;width:auto;vertical-align:-2px;margin-right:4px;border:0}
  .site-footer .ft-disc{color:var(--ink-3)}
  .sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
    clip:rect(0,0,0,0);white-space:nowrap;border:0}
  /* ---------- 版心与栅格 ---------- */
  .content{max-width:var(--content-max);margin:0 auto;padding:24px 28px 56px}
  .page-page-expert{max-width:var(--expert-max);margin:0 auto}
  .page-expert{max-width:var(--expert-max);margin:0 auto}
  .grid-main{gap:0}
  .grid-main>.card{margin-bottom:0}
  .card{background:#FFFFFF;border:1px solid var(--line);border-radius:var(--r-md);
    padding:18px;margin-bottom:16px;box-shadow:var(--sh-1);backdrop-filter:none}
  .card h3{font-size:var(--fs-h3);color:var(--ink);font-weight:700;margin:0 0 10px}
  .card h4{font-size:var(--fs-cap);color:var(--ink-3);font-weight:600}
  .card-sub{font-size:13px;color:var(--ink-3);line-height:1.7;margin-bottom:12px}
  .muted{font-size:13px;color:var(--ink-3)}
  /* ---------- 侧栏 / 导航 / 移动端抽屉 ---------- */
  .side{width:248px;padding:18px 12px}
  .side h1{font-size:16px}
  .side .sub{font-size:12px;color:#C3D2F2}
  .auto-box .auto-h{font-size:13px}
  .auto-box .auto-r{font-size:12px;line-height:1.7}
  .auto-box .auto-tip{font-size:12px;line-height:1.6}
  .nav-item{font-size:13px;min-height:36px;text-decoration:none}
  /* ★ #8：侧栏历史日期切换器（深色侧栏内） */
  .date-box{margin-top:14px;padding:10px 12px;background:rgba(255,255,255,.08);border-radius:10px}
  .date-box[hidden]{display:none}
  .date-lb{display:block;font-size:12px;color:#C3D2F2;margin-bottom:6px}
  .date-sel{width:100%;padding:6px 8px;border-radius:8px;border:1px solid rgba(255,255,255,.25);
    background:#fff;color:var(--ink);font-size:13px}
  .date-sel:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .date-note{margin-top:6px;font-size:12px;line-height:1.5;color:#C3D2F2}
  .nav-item:focus-visible,.side h1:focus-visible{outline:2px solid #fff;outline-offset:2px}
  .nav-item.active{background:var(--brand);color:#fff}
  .mobile-bar{display:none}
  .side-scrim{position:fixed;inset:0;background:rgba(15,23,42,.42);z-index:55}
  .side-scrim[hidden]{display:none}
  /* ---------- hero：首屏封顶，KPI 进首屏 ---------- */
  /* ★ #11（复审批次 R2）：640px 占 900px 视口的 71%（审计实测"喧宾夺主"）。
     压到 320px——min-height 只是下限，内容更高时仍按内容撑开，不会裁切。 */
  .hero{min-height:320px;min-height:min(320px, calc(100vh - 64px));
    padding:14px 20px;gap:10px;border-radius:var(--r-lg);overflow:hidden}
  .hero::after{background:linear-gradient(115deg,rgba(8,18,44,.86) 0%,rgba(12,28,70,.64) 48%,rgba(16,38,92,.48) 100%)}
  .hero-txt h1{font-size:var(--fs-h1);letter-spacing:.5px}
  .hero-txt p{font-size:13px;color:#E2EAF9;margin:4px 0 0;max-width:760px}
  .hero-cards{gap:10px}
  /* ★ N5（复审批次 R2）：首屏原来并存**三种卡片语言**——hero 内白色实心卡、右侧深色玻璃 KPI、
     hero 外白色描边卡，同类指标三种待遇。现统一为两套「表面令牌」：
       Hero 内（压在壁纸上）＝浅色玻璃卡（半透明白 + 模糊 + 深色字）
       Hero 外（页面流）  ＝白卡（.p1-card/.card 保持）
     品牌强调色只用于主指标，不再用于卡片底色。 */
  .gcard{background:rgba(255,255,255,.93);border:1px solid rgba(255,255,255,.9);border-radius:10px;
    padding:9px 12px;backdrop-filter:blur(6px)}
  .gcard h4{font-size:13px;color:var(--ink-2)}
  .kpi-tile{background:rgba(255,255,255,.93);border:1px solid rgba(255,255,255,.9);backdrop-filter:blur(6px)}
  .kpi-tile b{font-size:24px;color:var(--ink)}
  .kpi-tile span{font-size:13px;color:var(--ink-2)}
  .hero-foot{font-size:13px;color:#EEF3FF}
  .hero-foot .chip{font-size:13px}
  .p1-card{padding:12px 14px;background:#fff}
  /* ★ N6（复审批次 R2）：删掉静态「—」占位。数据未到时渲染骨架块，
     有值填数字，字段缺失写「未取到」，漏斗整块缺失则隐藏整卡（见 setP1v）。 */
  .p1-card b:empty{display:block;width:56px;height:26px;border-radius:6px;
    background:linear-gradient(90deg,#eef1f6 25%,#e2e7f0 37%,#eef1f6 63%);
    background-size:400% 100%;animation:sk-shimmer 1.2s ease-in-out infinite}
  .p1-card[hidden]{display:none}
  .p1-card b{font-size:26px}
  .p1-card span{font-size:13px}
  .p1-card i{font-size:12px;color:var(--ink-3)}
  /* ---------- 专家页头 ---------- */
  .expert-head{position:relative;overflow:hidden;background:#fff;border:1px solid var(--line);
    border-radius:var(--r-md);padding:18px;gap:18px;margin-bottom:12px;align-items:flex-start}
  .expert-head-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.10;
    pointer-events:none;filter:saturate(.9)}
  .expert-head>*:not(.expert-head-bg){position:relative;z-index:1}
  .expert-head h2{font-size:var(--fs-h2);font-weight:700}
  .avatar-img{box-shadow:0 2px 10px rgba(37,99,235,.16)}
  .tags{margin:6px 0}
  .tag{font-size:12px;padding:2px 9px;border-radius:var(--r-pill)}
  .fit{font-size:13px;color:var(--ink-2);line-height:1.65;max-width:760px}
  .expert-concl{flex:0 1 42%;min-width:0}
  .expert-concl .t{font-size:16px;font-weight:700;line-height:1.45;color:var(--ink);
    display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
    cursor:pointer;word-break:break-word}
  .expert-concl .t.is-open{display:block;-webkit-line-clamp:unset}
  .expert-concl .t:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}
  .expert-concl .s{font-size:13px;color:var(--ink-3);margin-top:4px}
  .expert-concl .s span{color:var(--ink-2);font-weight:600}
  .link-btn{background:none;border:none;color:var(--brand);font-size:13px;cursor:pointer;
    padding:2px 4px;text-decoration:underline;text-underline-offset:2px}
  .link-btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}
  .expert-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0 0 10px;
    font-size:13px;color:var(--ink-3)}
  .expert-note-h{font-weight:600;color:var(--ink-2)}
  details.fold.fold-inline{display:inline;margin:0}
  details.fold.fold-inline>summary{display:inline;font-size:13px;padding:0;color:var(--brand)}
  /* ---------- 数据状态组件（DataFreshness） ---------- */
  .data-freshness{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;min-height:0}
  .data-freshness:empty{display:none}
  .df-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--r-pill);
    border:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:13px;line-height:1.4}
  .df-chip b{color:var(--ink);font-weight:700}
  .df-strong{border-color:#B9CDFB;background:#F2F6FF;color:#0E3FA8}
  .df-ok{border-color:#A7D9BE;background:#EAF7EF;color:var(--ok)}
  .df-warn{border-color:#F0C27B;background:#FFF7E6;color:var(--warn)}
  .df-bad{border-color:#F3A9A0;background:#FFF1F0;color:var(--err)}
  /* ---------- 表格 ---------- */
  .out-t{width:100%;border-collapse:collapse;font-size:13px}
  .out-t th,.out-t td{border:none;border-bottom:1px solid var(--line);padding:8px 10px;
    text-align:left;vertical-align:top;word-break:break-word}
  .out-t th{position:sticky;top:0;z-index:2;background:#F7F9FC;color:var(--ink-3);
    font-size:13px;font-weight:600}
  .out-t tbody tr:nth-child(even){background:#FBFCFE}
  .out-t td:first-child,.out-t th:first-child{color:var(--ink-2)}
  .out-t td.num,.out-t th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
  .out-t td.na{color:var(--ink-3);text-align:right}
  .up-text{color:var(--up-text)}.down-text{color:var(--down-text)}.flat-text{color:var(--ink-3)}
  .kpi-table{font-size:13px}
  .kpi-table th,.kpi-table td{padding:8px 10px}
  .table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .tbl-narrow{max-width:620px}
  .tbl-mid{max-width:860px}
  .sample-t{table-layout:fixed}
  .sample-t td{width:12.5%}
  .sample-t td:nth-child(odd){text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sample-t td:nth-child(even){text-align:right}
  /* ---------- 图表容器 ---------- */
  .out-chart{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:16px;
    min-height:0;margin:8px 0 14px;overflow:visible}
  .out-chart:empty{display:none}
  .out-chart svg{max-width:460px}
  .out-chart svg.chart-wide{max-width:100%;flex:1 1 100%}
  .chart-legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;width:100%;
    font-size:13px;color:var(--ink-2)}
  .chart-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
  .kv{gap:8px}
  .out-detail .kv span{font-size:13px;background:#F2F5FB;border-radius:var(--r-sm);
    padding:4px 10px;color:var(--ink-2)}
  .funnel{gap:6px}
  .fun-row span{font-size:13px}.fun-row b{font-size:13px}.fun-row i{font-size:13px}
  .sec-t{font-size:14px;font-weight:700;color:var(--brand);margin:14px 0 6px}
  /* ---------- 组件：按钮 / 徽章 / 空态 / 卡片网格 ---------- */
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;
    padding:7px 14px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);
    font-size:13px;font-weight:600;cursor:pointer;transition:.15s;text-decoration:none}
  .btn:hover{border-color:#B9CDFB;background:#F5F9FF}
  .btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}
  .btn-primary:hover{background:#0E4FD8;border-color:#0E4FD8;color:#fff}
  .btn-ghost{background:#fff}
  .btn-sm{min-height:30px;padding:4px 10px;font-size:12px}
  .btn:disabled,.btn[disabled]{opacity:.55;cursor:not-allowed}
  .tagbtn{display:inline-flex;align-items:center;min-height:36px;padding:7px 14px;border-radius:8px;
    border:1px solid var(--brand);background:var(--brand);color:#fff;font-size:13px;font-weight:600;cursor:pointer}
  .sec-dim{min-height:32px;font-size:13px}
  .sec-dim:disabled{opacity:.5;cursor:not-allowed}
  .sec-ctl-label,.sec-legend{font-size:12px}
  a:focus-visible,button:focus-visible,[tabindex]:focus-visible,summary:focus-visible,
  input:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}
  .disc-input input:focus-visible{outline:2px solid var(--focus)}
  .disc-input input{font-size:14px;min-height:38px}
  .badge{font-size:13px;padding:5px 12px}
  .tag2{font-size:12px}
  /* 兜底：内容区既有 <12px 规则统一提升到 12px（UI 审查：禁用小于 12px 的字号） */
  .agent-src,.disc-round-tag,.disc-msg .dm-name,.disc-task .dt-name,.disc-task .dt-action,
  .disc-task .dt-result,.topo-lane-h,.topo-cap,.run-log .lg-t,.run-log .lg-row,
  .kpi-table td.ops button,.chip-info,.sec-dim,.sec-legend,.sec-ctl-label,
  .out-detail .kv span.tag2,.exp-card .chip-mini{font-size:12px}
  .out-detail .kv span.tag2,.out-t .tag2{color:#fff;padding:3px 9px;border-radius:8px}
  .out-detail .kv span.t-主线,.tag2.t-主线{background:#C81E1E;color:#fff}
  .out-detail .kv span.t-支线,.tag2.t-支线{background:#2563EB;color:#fff}
  .out-detail .kv span.t-冷门,.tag2.t-冷门{background:#6B7280;color:#fff}
  .out-err{background:#FFF7E6;border:1px solid #F0C27B;border-radius:var(--r-sm);padding:10px 12px;
    color:#8A4B00;font-size:13px;margin-bottom:10px}
  .out-empty{background:#FFF7E6;border:1px dashed #E9B96B;border-radius:var(--r-sm);padding:14px;
    color:#8A4B00;font-size:13px}
  .empty-state{border:1px solid var(--line);background:#FBFCFE;border-radius:10px;padding:18px;
    text-align:left;color:var(--ink-2);font-size:13px}
  .empty-state b{display:block;color:var(--ink);font-size:14px;margin-bottom:4px}
  .empty-state .es-next{margin-top:6px;color:var(--ink-3)}
  /* P1-14 三态骨架屏：加载态只出灰块微动效，绝不输出"不可用"文字（避免把"未加载完"误报成"数据缺失"） */
  .out-wrap{min-height:260px}
  .skeleton{display:flex;flex-direction:column;gap:10px;padding:14px 2px}
  .sk-bar{height:14px;border-radius:7px;background:linear-gradient(90deg,#eef1f6 25%,#e2e7f0 37%,#eef1f6 63%);background-size:400% 100%;animation:sk-shimmer 1.2s ease-in-out infinite}
  .sk-bar.w40{width:40%}.sk-bar.w60{width:60%}.sk-bar.w80{width:80%}.sk-bar.w100{width:100%}
  @keyframes sk-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
  .state-msg{padding:14px 2px;color:var(--ink-3);font-size:13px;line-height:1.7}
  .state-msg b{color:var(--ink)}
  .state-retry{margin-top:10px}
  .state-missing{border-left:3px solid #94A3B8;padding-left:12px}
  .state-limited{border-left:3px solid #D97706;background:#FFFBEB;padding-left:12px;border-radius:6px}
  .state-error{border-left:3px solid #DC2626;background:#FEF2F2;padding-left:12px;border-radius:6px}
  .alert{display:flex;flex-wrap:wrap;align-items:center;gap:8px;border-radius:10px;padding:10px 12px;
    font-size:13px;line-height:1.6;margin:0 0 12px;border:1px solid}
  .alert b{font-weight:700;margin-right:4px}
  .alert-warn{background:#FFF7E6;border-color:#F0C27B;color:#8A4B00}
  .alert-err{background:#FFF1F0;border-color:#F3A9A0;color:#9F1D12}
  .alert-info{background:#F2F6FF;border-color:#B9CDFB;color:#0E3FA8}
  .topo-inner{transition:transform .15s ease}
  .ok,.out-detail .ok{color:var(--ok)}
  .warn,.out-detail .warn{color:var(--warn)}
  .dt-status{font-size:12px}
  .dt-status.pending{background:#F2F3F5;color:#4E5969}
  .dt-status.running{background:#FFF7E6;color:var(--warn)}
  .dt-status.done{background:#EAF7EF;color:var(--ok)}
  .dt-status.failed{background:#FFF1F0;color:var(--err)}
  .b-blue{background:#E8F0FF;color:#0E3FA8}
  .b-red{background:#FFF1F0;color:var(--err)}
  .b-grey{background:#F2F3F5;color:#4E5969}
  /* ---------- 总览专家卡 ---------- */
  .grid-exp{grid-template-columns:repeat(auto-fill,minmax(252px,1fr));gap:10px;margin-top:10px}
  .exp-card{display:flex;align-items:center;gap:10px;min-height:62px;padding:8px 10px;
    background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);text-decoration:none;
    color:inherit;overflow:hidden}
  .exp-card:hover{border-color:var(--brand);background:#F5F9FF}
  .exp-card:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
  .exp-card .exp-av img{width:40px;height:40px;border-radius:50%;object-fit:cover;display:block}
  .exp-card b{font-size:14px}
  .exp-card .muted{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
  .exp-card .chip-mini{font-size:12px;padding:2px 8px;flex:0 0 auto;margin-left:auto;
    border-radius:var(--r-pill);background:#F2F3F5;color:var(--ink-3)}
  .exp-card.has-out .chip-mini{background:#EAF7EF;color:var(--ok)}
  /* ---------- 拓扑 ---------- */
  .topo-head{flex-wrap:wrap;gap:10px}
  .topo-tools{margin-left:auto;display:flex;gap:6px}
  .topo{overflow:auto;background:#FBFCFF}
  .topo-inner{position:relative;margin:0 auto;transform-origin:top center}
  .topo-node b{font-size:13px;max-width:120px}
  .topo-node .tn-code{font-size:12px;color:#4E5969}
  .topo-node .tn-xj{font-size:12px;color:#6B7280}
  .topo-node .fn-status{font-size:12px}
  .topo-cap,.topo-lane-h,.topo-legend{font-size:12px}
  .topo-legend{color:var(--ink-2)}
  /* ---------- 两栏 / KPI 网格 / 案例卡 ---------- */
  .tech2col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:16px;align-items:start}
  .kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:8px 0 12px}
  .kpi-grid .k{background:#F7F9FC;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
  .kpi-grid .k span{display:block;font-size:12px;color:var(--ink-3)}
  .kpi-grid .k b{display:block;font-size:18px;margin-top:2px;font-variant-numeric:tabular-nums}
  .case-tags{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 12px}
  .case-tag{border:1px solid var(--line);background:#F7F9FC;color:var(--ink-2);border-radius:var(--r-pill);
    padding:4px 12px;font-size:13px;cursor:pointer}
  .case-tag.active{background:var(--brand);border-color:var(--brand);color:#fff}
  .case-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
  .case-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff}
  .case-card .cc-type{display:inline-block;font-size:12px;font-weight:700;border-radius:var(--r-pill);
    padding:2px 8px;color:#fff;margin-bottom:6px}
  .case-card p{font-size:13px;color:var(--ink-2);line-height:1.6}
  @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
  /* ---------- 响应式 ---------- */
  @media(max-width:1280px){
    .content{padding:20px 18px 48px}
    .hero{min-height:auto}
    .tech2col{grid-template-columns:1fr}
  }
  @media(max-width:900px){
    .layout{display:block}
    .side{display:block;position:fixed;left:0;top:0;bottom:0;width:282px;height:100vh;z-index:60;
      transform:translateX(-104%);transition:transform .2s ease;box-shadow:0 12px 40px rgba(15,23,42,.25)}
    body.nav-open .side{transform:translateX(0)}
    .mobile-bar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:50;
      min-height:52px;padding:8px 12px;background:rgba(255,255,255,.97);
      border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
    .side-toggle{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:6px 12px;
      border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-size:13px;font-weight:600}
    .burger{display:inline-block;width:16px;height:2px;background:var(--ink);position:relative}
    .burger::before,.burger::after{content:"";position:absolute;left:0;width:16px;height:2px;background:var(--ink)}
    .burger::before{top:-5px}.burger::after{top:5px}
    .mobile-title{font-size:14px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .content{padding:14px 14px 40px}
    .hero{padding:18px;gap:12px;overflow:visible}
    .hero-cards{grid-template-columns:1fr}
    .p1-stats{grid-template-columns:1fr 1fr}
    .grid-exp{grid-template-columns:1fr 1fr}
    .page-expert{max-width:none}
    .expert-head{flex-wrap:wrap;gap:12px;padding:14px}
    .expert-concl{flex:1 1 100%;text-align:left;margin-left:0}
    .expert-concl .t{-webkit-line-clamp:2}
    .out-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
    .out-wrap .out-t{min-width:640px}
    .out-t th{top:52px}
    .data-freshness{gap:6px}
    .df-chip{font-size:12px;padding:3px 9px}
    .side .nav-item{font-size:14px;min-height:42px}
  }
  @media(max-width:560px){
    .hero{padding:14px}
    .p1-stats{grid-template-columns:1fr}
    .grid-exp{grid-template-columns:1fr}
    .content{padding:12px 10px 36px}
    .card{padding:14px}
  }
  /* P1-9 历史日期回溯 */
  .df-date{cursor:pointer;text-decoration:underline dotted;user-select:none}
  .df-date:hover{filter:brightness(1.12)}
  #hist-picker{position:fixed;z-index:96;right:18px;top:60px;width:330px;max-height:72vh;overflow:auto;background:#0c2c2a;color:#e8f3ef;border:1px solid #1d5b54;border-radius:12px;box-shadow:0 12px 40px rgba(0,0,0,.45);padding:12px 14px;font-size:13px}
  #hist-picker[hidden]{display:none}
  .hp-head{font-weight:700;font-size:14px;display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
  .hp-close{cursor:pointer;font-size:18px;line-height:1;padding:0 4px}
  .hp-tip{font-size:11px;color:#9fc7bf;margin-bottom:8px;line-height:1.5}
  .hp-sec{font-size:12px;color:#7fd3c4;margin:8px 0 4px;font-weight:600}
  .hp-list{display:flex;flex-wrap:wrap;gap:6px}
  .hp-item{cursor:pointer;background:#103a37;border:1px solid #1d5b54;color:#e8f3ef;border-radius:8px;padding:5px 9px;font-size:12px;display:inline-flex;align-items:center;gap:6px}
  .hp-item:hover{background:#15514c}
  .hp-tag{font-size:10px;background:#0b7d6f;color:#fff;border-radius:6px;padding:1px 5px}
  .hp-tag-d{background:#b25e09}
  .hp-empty{font-size:12px;color:#9fc7bf}
  #replay-bar{position:fixed;z-index:95;left:0;right:0;top:0;background:#b25e09;color:#fff;padding:8px 16px;font-size:13px;display:flex;align-items:center;gap:12px;box-shadow:0 2px 10px rgba(0,0,0,.3)}
  #replay-bar[hidden]{display:none}
  body.hist-on{padding-top:38px}
  .rb-exit{margin-left:auto;background:#fff;color:#b25e09;border:none;border-radius:6px;padding:3px 10px;font-size:12px;cursor:pointer;font-weight:600}
  /* P1-13 三段式结论 */
  .judge-block{margin:10px 0 4px;padding:10px 12px;border:1px solid #1d5b54;border-radius:10px;background:rgba(11,125,111,.08);font-size:13px}
  .jb-row{display:flex;gap:10px;padding:3px 0;line-height:1.55}
  /* ★ N1（复审批次 R2）：原 #7fd3c4 / #e8f3ef 是**深色主题**的字色，压到浅薄荷底
     rgba(11,125,111,.08)（合成后 ≈ #EBF5F4）上实测 1.02:1 —— 34 处「判定/推翻条件」
     实质不可见（审计 P0）。改为浅底配套的正文/标签色：#1F3A35 ≈ 11.4:1、#0B5F55 ≈ 7.2:1。 */
  .jb-k{flex:0 0 64px;color:#0B5F55;font-weight:600;text-align:right;white-space:nowrap}
  .jb-v{flex:1;color:#1F3A35}
  /* P2-19：图标装饰统一 aria-hidden，读屏跳过；保留视觉间距 */
  .ico{display:inline-block;margin-right:3px;font-style:normal}
  /* ===== P1-8 专家协同矩阵（13 页合并为 1 屏纵览 + 侧抽屉）===== */
  .matrix-wrap{max-width:1180px;margin:0 auto;padding:4px 2px 28px}
  .matrix-head h2{font-size:19px;margin:0 0 6px;color:var(--ink)}
  .matrix-sub{margin:0 0 16px;font-size:13px;color:var(--ink-3);line-height:1.7}
  .matrix-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .matrix-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:12px}
  .mx-card{position:relative;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:13px 14px 12px;cursor:pointer;font:inherit;color:inherit;transition:box-shadow .16s,border-color .16s,transform .16s;display:flex;flex-direction:column;gap:7px}
  .mx-card:hover{border-color:var(--brand);box-shadow:0 4px 16px rgba(37,99,235,.14);transform:translateY(-1px)}
  .mx-card:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
  .mx-top{display:flex;align-items:center;gap:8px}
  .mx-dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px}
  .mx-name{font-weight:700;font-size:14px;color:var(--ink)}
  .mx-title{font-size:12px;color:var(--ink-3);margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46%}
  .mx-line{font-size:12.5px;line-height:1.65;color:var(--ink-2);min-height:38px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .mx-foot{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:12px;color:var(--ink-3)}
  .mx-chip{border-radius:6px;padding:1px 6px;background:#f2f5fa;color:var(--ink-2)}
  .mx-chip.ok{background:#e8f7ef;color:#0a7d45}
  .mx-chip.warn{background:#fff4e5;color:#b25e09}
  .mx-chip.none{background:#f2f5fa;color:#86909C}
  .mx-go{margin-left:auto;color:var(--brand);font-weight:600}
  /* 抽屉 */
  body.drawer-open{overflow:hidden}
  .drawer-backdrop{position:fixed;inset:0;background:rgba(10,17,26,.42);backdrop-filter:blur(2px);z-index:120}
  .drawer-backdrop[hidden]{display:none}
  .drawer{position:fixed;top:0;right:0;bottom:0;width:min(760px,94vw);background:var(--surface);z-index:121;display:flex;flex-direction:column;box-shadow:-8px 0 32px rgba(10,17,26,.22);animation:drawer-in .18s ease-out}
  .drawer[hidden]{display:none}
  @keyframes drawer-in{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
  .drawer-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);flex:0 0 auto}
  .drawer-head h2{font-size:16px;margin:0;color:var(--ink);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .drawer-close{border:1px solid var(--line);background:#fff;color:var(--ink-2);width:30px;height:30px;border-radius:8px;font-size:18px;line-height:1;cursor:pointer}
  .drawer-close:hover{border-color:var(--brand);color:var(--brand)}
  .drawer-body{flex:1 1 auto;overflow-y:auto;padding:14px 16px 28px;-webkit-overflow-scrolling:touch}
  .drawer-body .page{display:block!important;max-width:none;padding:0}
  @media (max-width:720px){
    .drawer{width:100vw;top:0;bottom:0;border-radius:0}
    .matrix-grid{grid-template-columns:1fr}
    .mx-title{max-width:52%}
    /* ★ N12（复审批次 R2）：12 列宽表在手机上降级为「卡片行」（每行一条记录、
       左标签右值），不再让用户横向滑 9 屏去对一行数字。 */
    .sim-tbl,.sim-tbl tbody,.sim-tbl tr,.sim-tbl td{display:block;width:auto}
    .sim-tbl thead{display:none}
    .sim-tbl tr{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin-bottom:10px;background:#fff}
    .sim-tbl td{display:flex;justify-content:space-between;gap:14px;padding:3px 0;border:0;text-align:right}
    .sim-tbl td::before{content:attr(data-label);color:var(--ink-3);font-size:12px;text-align:left;flex:0 0 68px}
    .sim-tbl td.wrap{display:block;text-align:left;color:var(--ink-3);font-size:12px}
    .sim-tbl td.wrap::before{display:block;margin-bottom:2px}
    .table-wrap{overflow-x:visible}
  }
  /* ===== 首次访问风险揭示（审计 08 节）===== */
  #risk-modal{z-index:200}
  /* ★ N12：原 width:440px 在 390px 视口下溢出（页面级横向滚动）⇒ 取视口与 440 的较小值 */
  #risk-modal .modal-box{width:min(440px, calc(100vw - 32px))}
  #risk-modal h3{margin:0 0 10px;font-size:16px;color:var(--ink)}
  .risk-body{font-size:13px;line-height:1.75;color:var(--ink-2)}
  .risk-body b{color:var(--ink)}
  .risk-act{margin-top:16px;text-align:right}
