/* 演练只读表达：沿用项目token；说明原文不截断。原型复用本样式。 */
.source-info { padding: 16px 0; border-block: 1px solid var(--border-soft); }
.source-info h4 { margin: 0 0 8px; font-size: var(--text-body); }
.source-info dl { margin: 0; }
.source-info .dt-row { align-items: start; }
.source-info dd { min-width: 0; margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.source-info dt { flex-shrink: 0; }
.source-short-refs { overflow-wrap: anywhere; }
.rehearsal-banner { margin: 0; padding: 6px 10px; color: var(--fg); background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: var(--text-caption); }
.map-page > .rehearsal-banner { position: absolute; z-index: 8; top: 66px; left: var(--float-left); pointer-events: none; }
.shell > .rehearsal-banner { position: fixed; z-index: 50; top: 12px; right: 12px; }
.m-top > .rehearsal-banner { align-self: start; }
.plot-candidates { position: absolute; z-index: 20; top: 100px; left: 12px; right: 12px; max-width: 360px; max-height: min(55%, 420px); overflow: auto; padding: 12px; border-radius: var(--radius-lg); }
.plot-candidates h3 { margin: 0; font-size: var(--text-body); }
.plot-candidates .res-item { width: 100%; min-height: 44px; text-align: left; white-space: normal; overflow-wrap: anywhere; }
.plot-candidates small { display: block; }
