/* A single map shell; palette and type remain owned by tokens.css. */
body { margin: 0; }
[hidden] { display: none !important; }
button, summary, a, input { touch-action: manipulation; }
button, summary { cursor: pointer; }
button, select, input { font: inherit; }
button, summary, a { overflow-wrap: anywhere; }
a { color: var(--u-accent); text-underline-offset: 3px; }
button, summary { color: var(--u-ink); }
button {
  background: var(--u-surface);
  border: 1px solid var(--u-line-strong);
  border-radius: var(--u-radius-control);
  padding: var(--u-space-2) var(--u-space-3);
  white-space: normal;
}
button:hover, a[aria-current] { background: var(--u-accent-tint); }
button[aria-pressed="true"] { outline: var(--u-focus-ring); }
button:disabled { color: var(--u-ink-faint); cursor: default; }
.surface-header {
  display: flex;
  align-items: center;
  gap: var(--u-space-3);
  padding: var(--u-space-2) var(--u-space-4);
  line-height: var(--u-leading-snug);
  border-bottom: 1px solid var(--u-line-strong);
  background: var(--u-paper);
}
.surface-header .verification-scope { font-size: var(--u-text-2xs); white-space: nowrap; }
.surface-header .brand {
  font-family: var(--u-font-serif);
  font-size: var(--u-text-2xl);
  line-height: var(--u-leading-tight);
  text-decoration: none;
  flex: 0 0 auto;
}
.surface-nav, .surface-tools, .surface-time { display: flex; align-items: center; gap: var(--u-space-2); }
.surface-nav a, .surface-tools > a { padding: var(--u-space-2); text-decoration: none; white-space: nowrap; }
.surface-header .locale-control { margin: 0; flex-wrap: nowrap; font-size: var(--u-text-xs); }
.surface-header select { padding: var(--u-space-1); }
.surface-time { flex: 1; min-width: 0; }
.surface-time output { font-family: var(--u-font-mono); font-size: var(--u-text-lg); white-space: nowrap; }
.surface-time input { min-width: 32px; width: 100%; flex: 1; accent-color: var(--u-accent); }
.surface-time button { flex: 0 0 auto; font-size: var(--u-text-xs); padding: var(--u-space-2); }
.surface-menu { display: none; }
#workspace { padding: var(--u-space-4); max-width: 100%; }
.map-caption { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--u-space-4); }
.map-caption h1 { font-family: var(--u-font-serif); font-size: var(--u-text-xl); margin: 0; }
.map-caption p, .boundary { color: var(--u-ink-muted); font-size: var(--u-text-sm); }
.surface-options { display: flex; align-items: start; flex-wrap: wrap; gap: var(--u-space-4); }
fieldset { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--u-space-3); }
legend { font-size: var(--u-text-xs); color: var(--u-ink-faint); }
fieldset label { display: flex; gap: var(--u-space-1); align-items: center; font-size: var(--u-text-sm); }
summary { padding: var(--u-space-2) 0; }
.surface-options > details { flex: 1; min-width: 0; }
#search-results { display: flex; flex-wrap: wrap; gap: var(--u-space-2); }
.time-context { display: flex; flex-wrap: wrap; gap: var(--u-space-2); margin-block: var(--u-space-4); }
.time-context button { font-size: var(--u-text-xs); }
#growth-map { overflow-x: auto; border-block: 1px solid var(--u-line); padding: var(--u-space-5) 0; }
.timeline-scene {
  display: grid;
  grid-template-columns: repeat(var(--timeline-columns), minmax(18rem, 21rem));
  gap: var(--u-space-6) var(--u-space-7);
  width: max-content;
  min-width: 100%;
  position: relative;
  align-items: start;
  padding: var(--u-space-3);
}
.timeline-cell { display: flex; flex-direction: column; gap: var(--u-space-4); min-width: 0; }
.timeline-wires { position: absolute; inset: 0; pointer-events: none; z-index: var(--u-z-base); }
.timeline-wires path { fill: none; stroke: var(--u-line-strong); stroke-width: 2; }
.map-mark {
  display: flex;
  flex-direction: column;
  gap: var(--u-space-2);
  text-align: start;
  min-width: 0;
  width: 100%;
  position: relative;
  z-index: var(--u-z-raised);
  padding: var(--u-space-4);
  color: var(--u-ink);
  box-shadow: var(--u-shadow-raised);
  align-items: stretch;
}
.map-mark.is-arriving { animation: material-arrive var(--u-dur-reveal) var(--u-ease) both; }
.map-mark strong { font-family: var(--u-font-serif); font-size: var(--u-text-lg); }
.map-mark small { color: var(--u-ink-muted); font-size: var(--u-text-xs); }
.map-mark p { margin: 0; }
.growth-node { border-inline-start: var(--u-space-1) solid var(--u-accent); }
.cluster-scene, .works-scene, .stage-grid { display: grid; gap: var(--u-space-4); align-items: start; }
.cluster-scene, .works-scene { grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }
.researcher-cluster { padding-inline-start: var(--u-space-7); }
.researcher-cluster::before {
  content: '';
  position: absolute;
  left: var(--u-space-3);
  top: var(--u-space-4);
  width: var(--u-space-4);
  height: var(--u-space-4);
  border: calc(var(--cluster-weight) * 1px) solid var(--u-accent);
  border-radius: var(--u-radius-pill);
}
.atlas-work { border-style: double; border-width: 4px; }
#topic-panel { margin-block: var(--u-space-5); }

/* 阅读区必须和地图同屏。此前它是地图下方的兄弟块，地图一高就被挤到
 * 折叠线以下（实测 y=776 而视口 768），点节点看上去像「没反应」。 */
/* 地图优先：标题、状态与说明入口压成一条带，不各占一行。
 * 改前实测地图前有 284px 壳（视口 37%），其中 128px 是纯间距。 */
#map-workspace { display: grid; gap: var(--u-space-3) var(--u-space-5); align-items: start; }
#map-workspace > .map-caption {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--u-space-2) var(--u-space-4);
  margin: 0;
}
#map-workspace > .map-caption h1 { margin: 0; font-size: var(--u-text-lg); }
#map-workspace > .map-caption #surface-status { margin: 0; font-size: var(--u-text-xs); }
#map-workspace > #surface-controls { margin: 0; }
#map-workspace > #surface-controls > summary { font-size: var(--u-text-sm); }
#map-workspace > .map-caption,
#map-workspace > #surface-controls { grid-column: 1 / -1; }

@media (min-width: 1000px) {
  #map-workspace { grid-template-columns: minmax(0, 1fr) minmax(20rem, 26rem); }
  #map-workspace > #growth-map { grid-column: 1; }
  #reader-dock {
    grid-column: 2;
    position: sticky;
    inset-block-start: var(--u-space-4);
    max-block-size: calc(100dvh - var(--u-space-8));
    overflow: auto;
    margin-block: 0;
    padding: var(--u-space-4);
    background: var(--u-surface);
    border: 1px solid var(--u-line);
    border-radius: var(--u-radius-surface);
  }
}

/* 窄屏：底部浮层，默认占不到一半高度，地图仍可见。 */
@media (max-width: 999px) {
  #reader-dock {
    position: fixed;
    inset-inline: 0;
    inset-block-end: 0;
    z-index: var(--u-z-overlay);
    max-block-size: 55dvh;
    overflow: auto;
    margin-block: 0;
    padding: var(--u-space-4);
    background: var(--u-surface);
    border-block-start: 1px solid var(--u-line-strong);
    box-shadow: var(--u-shadow-overlay);
  }
}
.detail-card { max-width: var(--u-measure); }
.detail-card h2 { font-family: var(--u-font-serif); }
.detail-card p, .detail-card h3, .detail-card a { overflow-wrap: anywhere; }
.detail-card .boundary { border-inline-start: 2px solid var(--u-line-strong); padding-inline-start: var(--u-space-3); }
.evidence, .researcher-period, .topic-chapter { border-top: 1px solid var(--u-line); margin-block: var(--u-space-4); }
.catalogue-record { border-block-start: 1px solid var(--u-line); padding-block: var(--u-space-4); }
.catalogue-record h3 { font-size: var(--u-text-base); }
.stage-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.stage-card { padding: var(--u-space-4); border: 1px solid var(--u-line); border-radius: var(--u-radius-surface); }
.stage-card h2 { font-family: var(--u-font-serif); font-size: var(--u-text-xl); }
.stage-card small, .stage-chips { font-size: var(--u-text-xs); color: var(--u-ink-muted); }
.stage-details:not([open]) > :not(summary) { display: none; }
#map-overview > h1, #map-overview > .overview-scope { display: none; }
.stage-chips span { display: block; }
.settings-main { margin: 0; padding: 0; max-width: var(--u-measure); }
.settings-main input, .settings-main textarea, .settings-main pre { max-width: 100%; }
.settings-main pre { white-space: pre-wrap; overflow-wrap: anywhere; }
#setup-panel { margin-block-start: var(--u-space-6); }
.skip { position: absolute; left: -9999px; }
.skip:focus { left: var(--u-space-3); background: var(--u-paper); z-index: var(--u-z-overlay); }
@keyframes material-arrive { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 1100px) {
  .surface-header { gap: var(--u-space-2); flex-wrap: nowrap; }
  .surface-nav, .surface-tools { gap: 0; }
  .surface-nav a, .surface-tools > a { padding-inline: var(--u-space-2); font-size: var(--u-text-xs); }
  .surface-header .locale-control { font-size: 0; }
  .surface-header .locale-control select { font-size: var(--u-text-xs); }
}
@media (max-width: 760px) {
  .surface-header { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; padding: var(--u-space-2); }
  .surface-header .brand { font-size: var(--u-text-xl); }
  .surface-time { grid-column: 1 / -1; grid-row: 2; gap: var(--u-space-2); }
  .surface-time input { min-width: 0; }
  .surface-nav { grid-row: 3; }
  .surface-tools { grid-row: 4; }
  .surface-time output { font-size: var(--u-text-sm); }
  .surface-time button { font-size: var(--u-text-2xs); padding: var(--u-space-1); }
  .surface-menu { display: block; grid-column: 3; grid-row: 1; font-size: var(--u-text-xs); }
  .surface-nav, .surface-tools { display: none; grid-column: 1 / -1; flex-wrap: wrap; }
  .menu-open .surface-nav, .menu-open .surface-tools { display: flex; }
  .surface-nav a, .surface-tools > a { padding: var(--u-space-2); font-size: var(--u-text-base); }
  #workspace { padding: var(--u-space-3); }
  .timeline-scene {
    grid-template-columns: repeat(var(--timeline-columns), calc(100vw - var(--u-space-6) - var(--u-space-4)));
  }
  .map-caption h1 { font-size: var(--u-text-lg); }
}
@media (prefers-reduced-motion: reduce) {
  .map-mark.is-arriving { animation: none; }
}
/* Analysis entry points share the shell and tokens with the narrative map. */
[data-surface="overview"] #growth-map, [data-surface="compare"] #growth-map {
  overflow: visible;
  padding: 0;
  border: 0;
}
.global-overview h2, .static-compare h2 { margin: 0; font-size: var(--u-text-lg); }
.analysis-note { font-size: var(--u-text-xs); margin-block: var(--u-space-2); max-inline-size: none; }
.overview-grid {
  display: grid;
  grid-template-columns: minmax(0, 12em) repeat(6, minmax(0, 1fr));
  gap: var(--u-space-1);
  font-size: var(--u-text-xs);
  line-height: var(--u-leading-tight);
  align-items: stretch;
}
.grid-heading { text-align: center; overflow-wrap: anywhere; padding-block: var(--u-space-2); }
.lane-heading { display: flex; align-items: center; gap: var(--u-space-2); padding-block: var(--u-space-2); }
.aggregate-cell {
  min-width: 0;
  padding: var(--u-space-2) var(--u-space-1);
  font-size: inherit;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--u-space-1);
  line-height: var(--u-leading-tight);
}
.aggregate-cell > span:first-child { overflow-wrap: anywhere; }
.density-bar { display: block; height: var(--u-space-1); background: var(--u-accent); }
.empty-cell { display: grid; place-items: center; border-bottom: 1px solid var(--u-line); }
.lane-legend { display: none; }
.compare-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--u-space-3); }
.compare-card { min-width: 0; border-top: 1px solid var(--u-line-strong); padding-block: var(--u-space-2); }
.compare-card h3 { font-size: var(--u-text-sm); margin: 0; }
.compare-card p { font-size: var(--u-text-xs); margin-block: var(--u-space-2); }
.compare-card svg { display: block; width: 100%; height: auto; }
.compare-card line { stroke: var(--u-line-strong); stroke-width: 1; }
.compare-card circle { fill: var(--u-accent); }
@media (max-width: 760px) {
  .overview-grid { grid-template-columns: minmax(0, 2em) repeat(6, minmax(0, 1fr)); }
  .lane-title { display: none; }
  .lane-heading { justify-content: center; }
  .lane-legend {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--u-space-1) var(--u-space-2);
    font-size: var(--u-text-xs);
    line-height: var(--u-leading-snug);
    margin-block: var(--u-space-2);
  }
  .aggregate-cell { padding-inline: 0; }
  .compare-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* Continuous camera and independent, spatially stable material bands. */
#growth-map {
  position: relative;
  overflow: hidden;
  padding: 0;
  height: min(68vh, 42rem);
  min-height: 20rem;
  touch-action: none;
  overflow-anchor: none;
  contain: layout paint;
}
.camera-scene { position: absolute; inset: 0 auto auto 0; transform-origin: 0 0; transition-property: none; }
.camera-scene > section { position: absolute; left: 0; top: 0; width: max-content; min-width: 20rem; }
.camera-scene > .researchers-layer { top: -32rem; }
.camera-scene > .works-layer { top: -70rem; }
.camera-scene > .topics-layer { top: -110rem; width: 65rem; }
.camera-scene .cluster-scene, .camera-scene .works-scene {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: 22rem;
  grid-template-columns: none;
  gap: var(--u-space-4);
}
.camera-scene .timeline-scene { grid-template-columns: repeat(var(--timeline-columns), 22rem); }
.camera-scene[data-level="works"] .node-question,
.camera-scene[data-level="works"] .node-claim,
.camera-scene[data-level="works"] .map-mark .boundary { display: none; }
.camera-scene .global-overview { width: 110rem; padding: var(--u-space-4); }
.camera-scene .overview-grid { grid-template-columns: 12em repeat(6, minmax(0, 1fr)); }
.camera-scene .lane-title { display: inline; }
.camera-scene .lane-legend { display: none; }
#camera-notice { min-height: 1lh; margin-block: var(--u-space-2); font-size: var(--u-text-xs); }
.surface-header { gap: var(--u-space-2); flex-wrap: nowrap; position: relative; z-index: var(--u-z-overlay); }
.surface-header > * { flex-shrink: 0; }
#journey-save-status {
  flex-shrink: 1;
  min-inline-size: 0;
  max-inline-size: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}
.surface-header .surface-time { flex: 1 1 auto; }
.surface-header button, .surface-header select, .surface-header summary { font-size: var(--u-text-xs); }
.surface-header button { padding: var(--u-space-2); }
.surface-header .brand { font-size: var(--u-text-xl); }
.surface-header .surface-time output { font-size: var(--u-text-sm); }
.surface-header .surface-time input { width: 5rem; min-width: 2rem; }
.surface-zoom { display: flex; gap: var(--u-space-1); align-items: center; }
.surface-zoom output { font-family: var(--u-font-mono); font-size: var(--u-text-xs); min-width: 4ch; text-align: center; }
.header-popover summary { list-style: none; padding: var(--u-space-2); white-space: nowrap; }
.header-popover summary::-webkit-details-marker { display: none; }
.header-popover > fieldset, .header-popover > .search-box {
  position: absolute;
  top: 100%;
  left: var(--u-space-3);
  width: min(30rem, calc(100vw - 2rem));
  max-height: 65vh;
  overflow: auto;
  padding: var(--u-space-3);
  background: var(--u-paper);
  border: 1px solid var(--u-line-strong);
  box-shadow: var(--u-shadow-raised);
}
.header-popover:not([open]) > :not(summary) { display: none; }
.header-popover fieldset { flex-direction: column; }
.header-popover input[type="search"] { width: 100%; min-width: 0; }
#search-results { margin-top: var(--u-space-2); }
#search-results button { width: 100%; text-align: start; }
.compare-overlay {
  position: fixed;
  inset: 5rem 1rem auto;
  width: auto;
  max-width: none;
  max-height: calc(100dvh - 7rem);
  overflow: auto;
  margin: 0;
  padding: var(--u-space-4);
  border: 1px solid var(--u-line-strong);
  background: var(--u-paper);
  color: var(--u-ink);
  box-shadow: var(--u-shadow-raised);
  z-index: var(--u-z-overlay);
}
#close-compare { margin-bottom: var(--u-space-3); }
@media (max-width: 760px) {
  .surface-header {
    display: flex;
    flex-wrap: wrap;
    gap: var(--u-space-1);
    padding: var(--u-space-2);
  }
  .surface-header .brand { font-size: var(--u-text-lg); }
  .surface-header .surface-time { order: 2; flex-basis: 100%; }
  .surface-header .surface-time input { flex: 1; }
  .surface-header button, .surface-header select, .surface-header summary { font-size: var(--u-text-2xs); }
  .surface-header button, .surface-header summary { padding: var(--u-space-1); }
  .surface-header .surface-zoom { margin-left: auto; }
  .header-search { margin-left: auto; }
  .camera-scene .overview-grid { grid-template-columns: 12em repeat(6, minmax(0, 1fr)); }
}
@media (prefers-reduced-motion: reduce) {
  .camera-scene, .camera-scene * { animation: none; transition: none; scroll-behavior: auto; }
}

/* Keep card typography readable and within the camera on narrow screens. */
.camera-scene .map-mark {
  max-width: var(--card-max-width);
  padding: calc(var(--u-space-4) / var(--camera-scale));
  gap: calc(var(--u-space-2) / var(--camera-scale));
  font-size: calc(var(--u-text-base) / var(--camera-scale));
}
.camera-scene .map-mark strong { font-size: calc(var(--u-text-lg) / var(--camera-scale)); }
.camera-scene .map-mark small { font-size: calc(var(--u-text-xs) / var(--camera-scale)); }
.camera-scene .map-mark .boundary { font-size: inherit; }
.camera-scene .researcher-cluster { padding-left: calc(var(--u-space-7) / var(--camera-scale)); }
@keyframes material-arrive { from { opacity: 0; } to { opacity: 1; } }

.camera-scene .global-overview { width: min(110rem, var(--overview-max-width)); }
.camera-scene[data-level="detail"] .growth-node > strong,
.camera-scene[data-level="detail"] .growth-node > small:last-child { display: none; }
.camera-scene[data-level="detail"] .node-label {
  font-family: var(--u-font-serif);
  font-size: calc(var(--u-text-lg) / var(--camera-scale));
}
@media (max-width: 760px) {
  .map-caption { display: block; }
  .map-caption h1 { font-size: var(--u-text-base); }
  .map-caption p { margin-block: var(--u-space-2); font-size: var(--u-text-xs); }
  #surface-controls > summary { font-size: var(--u-text-xs); }
  .camera-scene .overview-grid { grid-template-columns: 2em repeat(6, minmax(0, 1fr)); }
  .camera-scene .lane-title { display: none; }
  .camera-scene .lane-legend { display: grid; }
}

/* 前进路径属于内容，不该只存在于工具条。 */
.lead-ahead { border-top: 1px solid var(--u-line); margin-block-start: var(--u-space-4); padding-block-start: var(--u-space-3); }
.lead-ahead h3 { margin: 0 0 var(--u-space-2); font-size: var(--u-text-sm); color: var(--u-ink-muted); }
.lead-ahead .lead-link { display: block; inline-size: 100%; margin-block-end: var(--u-space-2); text-align: start; }
.lead-ahead .boundary { font-size: var(--u-text-xs); }

/* 提示区没有内容时不占位。它是 aria-live 区域，故保留在布局树中而非 display:none，
 * 以免有话要说时朗读器错过更新。 */
/* 原规则用 min-height: 1lh 预留一行防跳动，代价是沉默时也永久占位。
 * 这里一并清掉 min-block-size：提示出现时会有一行的位移，但那一刻布局本就在变
 * （阅读区同时打开），而空占一行是每一屏都付的成本。 */
#camera-notice.is-quiet {
  block-size: 0;
  min-block-size: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

/* 一屏装下：外壳只有 header，画布与阅读区分摊剩余高度，页面本身不滚动。
 * 改前实测页面 904/768 外加阅读区内部 753/702，两层滚动同时存在；
 * 成因是阅读区的 max-block-size 用了 100dvh 却没减去自身距顶的 184px。 */
body.single-surface { block-size: 100dvh; overflow: hidden; display: flex; flex-direction: column; }
body.single-surface > #header-host { flex: none; }
body.single-surface > #workspace { flex: 1 1 auto; min-block-size: 0; display: flex; flex-direction: column; padding: 0; }
body.single-surface #map-workspace { flex: 1 1 auto; min-block-size: 0; position: relative; gap: 0; }
body.single-surface #growth-map { block-size: 100%; min-block-size: 0; }

/* HUD：浮在画布上的说明层，本身不拦截指针，只有其中的控件可点。 */
/* HUD 移到左下：画布顶部与中心留给内容，镜头居中时不会被压住。 */
.map-hud {
  position: absolute;
  inset-block-end: var(--u-space-3);
  inset-inline-start: var(--u-space-4);
  z-index: var(--u-z-raised);
  display: flex;
  flex-direction: column;
  align-items: start;
  gap: var(--u-space-1);
  max-inline-size: min(100%, 44rem);
  pointer-events: none;
}
.map-hud > * { pointer-events: auto; }
.map-hud #return-research[data-compact="true"],
.map-hud #parent-network-scope { white-space: nowrap; min-inline-size: max-content; }
.map-hud .map-caption,
.map-hud #surface-controls,
.map-hud #camera-notice {
  padding: var(--u-space-1) var(--u-space-3);
  border-radius: var(--u-radius-control);
  background: color-mix(in srgb, var(--u-paper) 86%, transparent);
}
.map-hud #camera-notice.is-quiet { padding: 0; }

@media (min-width: 1000px) {
  body.single-surface #map-workspace { display: grid; grid-template-columns: minmax(0, 1fr) minmax(20rem, 26rem); }
  body.single-surface #reader-dock {
    position: static;
    block-size: 100%;
    padding-block: var(--u-space-3);
    max-block-size: none;
    min-block-size: 0;
    overflow: auto;
    margin: 0;
    border-radius: var(--u-radius-flush);
    border-block: 0;
    border-inline-end: 0;
  }
}

/* 收起按钮不再独占一行，收到面板右上角。 */
#reader-dock { position: relative; }
#close-reading {
  position: absolute;
  inset-block-start: var(--u-space-2);
  inset-inline-end: var(--u-space-2);
  z-index: var(--u-z-raised);
  padding: var(--u-space-1) var(--u-space-2);
  font-size: var(--u-text-2xs);
}
#growth-reading { padding-block-start: var(--u-space-3); }

/* 标题不再绘制，但保留在无障碍树中。 */
body.single-surface .map-caption h1 {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
body.single-surface header #surface-status {
  margin: 0;
  color: var(--u-ink-faint);
  font-size: var(--u-text-2xs);
  white-space: nowrap;
}
/* The card already names the study; keep the time control usable in dense headers. */
@media (max-width: 1350px) {
  body.single-surface header #surface-status { display: none; }
}

/* Original titles remain complete, but secondary to the reading question. */
.detail-card .source-title { font-size: var(--u-text-sm); line-height: var(--u-leading-snug); margin-block: var(--u-space-2); }
#return-research { font-size: var(--u-text-xs); margin-block-end: var(--u-space-2); }

#return-research { position: sticky; top: 0; z-index: var(--u-z-raised); background: var(--u-paper); max-width: calc(100% - 5rem); }

.connection-context { font-size: var(--u-text-sm); line-height: var(--u-leading-snug); color: var(--u-ink-muted); }
.timeline-wires path[data-active="true"] { stroke: var(--u-accent); stroke-width: 4; }

/* Semantic network lens and inquiry routes. */
.network-overview { width: var(--overview-max-width); padding: var(--u-space-3); }
.network-overview h2 { font-size: calc(var(--u-text-base) / var(--camera-scale)); margin: 0; }
.network-caption { font-size: calc(var(--u-text-xs) / var(--camera-scale)); line-height: var(--u-leading-snug); margin-block: var(--u-space-2); }
.research-network { display: block; width: 100%; height: var(--network-height); overflow: visible; }
.network-edge { fill: none; stroke: var(--u-line-strong); stroke-width: 2; cursor: pointer; }
.network-edge[data-type="reference"], .network-edge[data-type="context"] { stroke-dasharray: 7 6; }
.network-edge[data-type="critique"] { stroke: var(--u-critique); stroke-dasharray: 3 3; }
.network-edge:hover, .network-edge:focus, .network-edge[data-active="true"] { stroke-width: 6; outline: none; }
.network-edge[data-related="true"] { stroke: var(--u-accent); stroke-width: 4; }
.network-edge[data-type="critique"][data-related="true"] { stroke: var(--u-critique); }
.network-point { cursor: pointer; }
.network-point .network-label { pointer-events: all; }
.network-point:hover .network-label, .network-point:focus .network-label { text-decoration: underline; }
.network-point .network-symbol { fill: var(--u-paper); stroke: var(--u-accent); stroke-width: 3; }
.network-point .network-hit { fill: transparent; stroke: none; }
.network-point[data-visited="true"] .network-symbol { fill: var(--u-accent-tint); stroke-width: 5; }
.network-point[aria-pressed="true"] .network-symbol, .network-point:focus .network-symbol { fill: var(--u-accent); stroke-width: 6; }
.network-point[data-neighbor="true"] .network-symbol { stroke-width: 5; }
.network-label { font-size: calc(var(--u-text-base) / var(--camera-scale)); fill: var(--u-accent); paint-order: stroke; stroke: var(--u-paper); stroke-width: 4; display: none; pointer-events: visiblePainted; cursor: pointer; }
.network-label[data-prominent="true"], .network-point:hover .network-label, .network-point:focus .network-label, .network-point[aria-pressed="true"] .network-label { display: block; }
.exploration-menu { position: absolute; top: 100%; inset-inline-start: 0; width: min(32rem, calc(100vw - 2rem)); max-height: 70dvh; overflow: auto; padding: var(--u-space-4); background: var(--u-paper); border: 1px solid var(--u-line-strong); box-shadow: var(--u-shadow-overlay); }
.exploration-menu h2 { font-size: var(--u-text-lg); }
.exploration-menu p, .exploration-menu button, .route-context { font-size: var(--u-text-sm); }
.exploration-menu > .translation-note { display: block; color: var(--u-ink-muted); }
.exploration-menu details[open] > p { display: block; }
.exploration-menu summary { white-space: normal; overflow-wrap: anywhere; }
.coverage-candidates { list-style: none; padding: 0; font-size: var(--u-text-sm); }
.coverage-candidates > li { padding-block: var(--u-space-3); border-block-start: 1px solid var(--u-line); overflow-wrap: anywhere; }
.coverage-cross-checks small { display: block; color: var(--u-ink-muted); }
.coverage-candidates button { white-space: normal; text-align: start; }
.coverage-candidates p { display: block; }
.coverage-candidate-name { font-weight: 600; color: var(--u-ink); }
.exploration-menu section, .route-context { border-block-end: 1px solid var(--u-line); padding-block: var(--u-space-3); }
.route-context small { display: block; color: var(--u-ink-muted); }
.case-evidence-step { border-block-start: 1px solid var(--u-line); padding-block: var(--u-space-3); }
@media (min-width: 1000px) {
  body.single-surface #map-workspace:has(#reader-dock[hidden]) { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 999px) {
  body.single-surface #map-workspace { display: block; }
  body.single-surface #reader-dock { position: absolute; inset-block-start: auto; inset-block-end: 0; block-size: 55%; max-block-size: 55%; min-block-size: 0; overflow: auto; }
  body.single-surface #growth-map { flex: none; }
}
@media (max-width: 599px) {
  .network-caption:not(.network-progress) { display: none; }
}
.network-point.is-arriving { animation: material-arrive var(--u-dur-reveal) var(--u-ease) both; }
.network-point[data-clustered="true"], .network-edge[data-clustered="true"] { display: none; }
.network-cluster { cursor: pointer; }
.network-region-symbol { fill: var(--u-paper); stroke: var(--u-accent); stroke-width: 2; vector-effect: non-scaling-stroke; }
.network-cluster:hover .network-region-symbol, .network-cluster:focus .network-region-symbol { fill: var(--u-accent-tint); stroke-width: 3; }
.network-region-count { fill: var(--u-accent); pointer-events: none; }
.network-cluster .network-hit { fill: transparent; }
.network-bundle { fill: none; stroke: var(--u-line-strong); stroke-width: 1; opacity: .5; pointer-events: none; }
.network-bundle[data-type="critique"] { stroke: var(--u-critique); stroke-dasharray: 3 3; }
.network-bundle[data-type="context"], .network-bundle[data-type="reference"] { stroke-dasharray: 6 5; }
.network-label[data-revealed="true"] { display: block; }
.network-resolution { color: var(--u-ink-muted); }
.network-caption.network-resolution, .network-caption.network-guide, .network-caption.network-translation { display: block; }
.network-overview > h2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.network-year-axis { pointer-events: none; }
.network-year-axis rect { fill: var(--u-paper); opacity: .96; }
.network-year-label { fill: var(--u-ink-muted); }
.network-scope-boundary { fill: none; stroke: var(--u-line-strong); stroke-width: 1; stroke-dasharray: 6 5; opacity: .3; }
.network-scope-boundary[data-current="true"] { opacity: .65; }
.network-scope-key { fill: var(--u-ink-muted); }
.network-point[data-in-scope="true"] .network-symbol { stroke-width: 2.3; }
.research-network[data-scoped="true"] .network-bundle[data-in-scope="false"] { opacity: .08; }
.research-network[data-scoped="true"] .network-edge[data-in-scope="false"]:not([data-related="true"]):not([data-active="true"]):not(:hover):not(:focus) { opacity: .06; }
.network-edge { vector-effect: non-scaling-stroke; stroke-width: 1.2; opacity: .25; }
.network-edge[data-type="critique"] { opacity: .5; }
.network-edge:hover, .network-edge:focus, .network-edge[data-active="true"], .network-edge[data-related="true"] { stroke-width: 2; opacity: 1; }
.network-arrow-use { fill: var(--u-line-strong); }
.network-arrow-critique { fill: var(--u-critique); }
.network-point .network-symbol { vector-effect: non-scaling-stroke; stroke-width: 1.5; }
.network-point[data-visited="true"] .network-symbol, .network-point[data-neighbor="true"] .network-symbol { stroke-width: 2; }
.network-point[aria-pressed="true"] .network-symbol, .network-point:focus .network-symbol { stroke-width: 3; }
@media (prefers-reduced-motion: reduce) { .network-point.is-arriving { animation: none; } }

/* Argument children share the same pan/zoom scene and saved history lens. */
.evidence-scene { position: relative; }
.evidence-point { position: absolute; width: 340px; padding: var(--u-space-4); background: var(--u-surface); border: 1px solid var(--u-line-strong); border-radius: var(--u-radius-surface); overflow-wrap: anywhere; font-size: calc(var(--u-text-sm) / var(--camera-scale)); }
.evidence-point h3, .evidence-point p { margin: var(--u-space-2) 0; }
.evidence-point small { display: block; color: var(--u-ink-muted); font-size: calc(var(--u-text-2xs) / var(--camera-scale)); }
.evidence-point button { white-space: normal; text-align: start; font-size: inherit; }
.evidence-point .evidence-toggle { font-family: var(--u-font-serif); }
.evidence-wires { position: absolute; inset: 0; overflow: visible; pointer-events: none; }
.evidence-wires path { fill: none; stroke: var(--u-line-strong); stroke-width: 2; }
.argument-link-label { pointer-events: none; }
.argument-link-label rect { fill: var(--u-paper); }
.argument-link-label text { fill: var(--u-ink-muted); }
.map-hud[data-evidence="true"] #surface-controls { display: none; }
.exploration-search-result { inline-size: 100%; display: grid; gap: var(--u-space-1); border-block-end: 1px solid var(--u-line); padding-block-end: var(--u-space-2); }
.exploration-search-result small { color: var(--u-ink-muted); }
.catalogue-record[data-selected="true"] { border-inline-start: 3px solid var(--u-accent); padding-inline-start: var(--u-space-3); }
.map-notebook { margin-block: var(--u-space-3); border-block: 1px solid var(--u-line); padding-block: var(--u-space-2); }
.notebook-form { display: grid; gap: var(--u-space-3); }
.notebook-form label { display: grid; gap: var(--u-space-1); }
.notebook-form input, .notebook-form textarea { inline-size: 100%; box-sizing: border-box; }
.notebook-form textarea { min-block-size: 7em; resize: vertical; }
.notebook-entry { padding-block: var(--u-space-3); border-block-start: 1px solid var(--u-line); }
.notebook-entry p, .notebook-entry blockquote { white-space: pre-wrap; overflow-wrap: anywhere; }
.notebook-status { color: var(--u-ink-muted); }
.personal-reading-item { padding-block: var(--u-space-3); border-block-start: 1px solid var(--u-line); }
.personal-reading-item > small { display: block; color: var(--u-ink-muted); }

#map-loading{position:fixed;z-index:90;top:1rem;left:1rem;max-width:32rem;padding:1rem;background:var(--u-surface);border:1px solid var(--u-line-strong)}
#map-loading[hidden]{display:none}
#error:not([hidden]){position:fixed;z-index:91;left:1rem;bottom:1rem;max-width:85vw;padding:1rem;background:var(--u-surface)}

.network-label-leader { display:none; stroke:var(--u-ink-muted); stroke-width:1; opacity:.55; pointer-events:none; }

/* A focused combination has no side ancestry columns; use that room for reading. */
.evidence-scene.is-combination .evidence-point { width: min(520px, var(--card-max-width, 520px)); }

/* Wider prose stays centred below its parent, inside the existing 440px lane. */
.evidence-point.evidence-reading { width: min(440px, var(--card-max-width, 440px)); }

/* Argument vertices live at subdivisions of the native history world. Readable
   annotations may move around them; published research coordinates never move. */
.world-evidence-foreign, .world-evidence-host { overflow: visible; }
.evidence-scene.is-world { pointer-events: none; }
.evidence-scene.is-world .evidence-point { pointer-events: auto; width: min(420px, var(--card-max-width, 420px)); }
.evidence-scene.is-world .evidence-point[aria-hidden="true"] { pointer-events: none; }
.world-point {
  position: absolute;
  inline-size: calc(44px / var(--world-actual-scale, .8));
  block-size: calc(44px / var(--world-actual-scale, .8));
  padding: 0;
  transform: translate(-50%, -50%);
  border: 0;
  background: transparent;
  pointer-events: auto;
  z-index: var(--u-z-overlay);
}
.world-node-dot {
  position: absolute;
  inset-inline-start: 50%;
  inset-block-start: 50%;
  inline-size: calc(14px / var(--world-actual-scale, .8));
  block-size: calc(14px / var(--world-actual-scale, .8));
  transform: translate(-50%, -50%);
  border: 1px solid var(--u-accent);
  border-radius: var(--u-radius-pill);
  background: var(--u-paper);
}
.world-point[data-material-kind="book"] .world-node-dot,
.world-point[data-material-kind="thesis"] .world-node-dot {
  border-radius: var(--u-radius-flush);
  transform: translate(-50%, -50%) rotate(45deg);
}
.world-point[data-material-kind="game"] .world-node-dot,
.world-point[data-material-kind="simulation"] .world-node-dot,
.world-point[data-material-kind="work"] .world-node-dot { border-radius: var(--u-radius-flush); }
.world-point[data-editorial="true"] .world-node-dot { border-style: dashed; }
.world-node-label {
  position: absolute;
  inset-inline-start: calc(50% + 14px / var(--world-actual-scale, .8));
  inset-block-start: 50%;
  transform: translateY(-50%);
  inline-size: max-content;
  max-inline-size: calc(170px / var(--world-actual-scale, .8));
  font-size: calc(var(--u-text-xs) / var(--world-actual-scale, .8));
  line-height: var(--u-leading-snug);
  text-align: start;
  color: var(--u-accent);
  background: var(--u-paper);
}
.world-point[data-has-body="true"]:not([data-world-evidence="root"]) .world-node-label { display: none; }
.evidence-scene.argument-merged .evidence-point[data-evidence="root"] { width: min(520px, var(--card-max-width, 520px)); }
.evidence-scene.is-world .evidence-point.world-reading-wide { width: min(var(--wide-reading-width), var(--reading-max-width)); }
.evidence-scene.is-world .evidence-point.world-reading-wide p { max-inline-size: none; }
.argument-claim { font-weight: 500; color: var(--u-ink); }
.argument-boundary, .argument-sample { font-size: var(--u-text-xs); color: var(--u-ink-muted); }
.argument-inline-details { margin-block-start: var(--u-space-2); border-block-start: 1px solid var(--u-line); padding-block-start: var(--u-space-2); }
.argument-inline-details > summary { color: var(--u-accent); cursor: pointer; }
.argument-inline-section { margin-block: var(--u-space-3); }
.argument-inline-section h4 { font-size: var(--u-text-sm); margin-block: var(--u-space-1); }
.argument-inline-section p, .argument-reading p { margin-block: var(--u-space-2); }
.argument-inline-details a { display: inline-block; margin-inline-end: var(--u-space-2); }
.argument-section-navigation { display: flex; flex-wrap: wrap; gap: var(--u-space-2); margin-block: var(--u-space-2); }
.argument-section-navigation label { display: block; flex: 1 1 8rem; min-inline-size: 0; }
.argument-section-navigation select { inline-size: 100%; min-inline-size: 0; max-inline-size: 100%; font: inherit; color: var(--u-ink); background: var(--u-paper); }
.argument-section-navigation select, .argument-section-navigation button { min-block-size: calc(32px / var(--world-actual-scale, .8)); font-size: calc(var(--u-text-sm) / var(--world-actual-scale, .8)); }
.argument-section-navigation button { flex: 0 0 auto; }
.argument-section-source { margin-block-start: var(--u-space-3); border-block-start: 1px solid var(--u-line); padding-block-start: var(--u-space-2); font-size: var(--u-text-xs); }
.argument-material-reference { margin-block: var(--u-space-2); font-size: var(--u-text-xs); }
.argument-material-reference > small { display: block; color: var(--u-ink-muted); }
.argument-merged .world-point[data-has-body="true"] .world-node-label { display: none; }
.narration-beats { display: grid; margin-block: var(--u-space-3); }
.narration-beat { grid-area: 1 / 1; visibility: hidden; border-inline-start: 2px solid var(--u-accent); padding-inline-start: var(--u-space-3); }
.narration-beat[data-active="true"] { visibility: visible; }
.narration-beat-label, .narration-sequence { color: var(--u-ink-muted); }
.narration-response { margin-block: var(--u-space-3); font-size: var(--u-text-xs); }
.narration-response button { font-size: inherit; }
.guided-narration { padding: var(--u-space-2); background: var(--u-paper); border-block-start: 1px solid var(--u-line); pointer-events: auto; max-inline-size: min(100%, 48rem); }
.guided-narration-status { margin: 0 0 var(--u-space-2); color: var(--u-ink-muted); font-size: var(--u-text-xs); }
.guided-narration-actions { display: flex; flex-wrap: wrap; gap: var(--u-space-2); }
.guided-narration-actions button { font-size: var(--u-text-xs); }
.world-point:hover .world-node-label, .world-point:focus .world-node-label { text-decoration: underline; }
.world-relation-control {
  position: absolute;
  transform: translate(-50%, -50%);
  inline-size: max-content;
  max-inline-size: calc(190px / var(--world-actual-scale, .8));
  font-size: calc(var(--u-text-2xs) / var(--world-actual-scale, .8));
  padding: calc(var(--u-space-1) / var(--world-actual-scale, .8));
  background: var(--u-paper);
  pointer-events: auto;
  z-index: var(--u-z-overlay);
}
.world-annotation-tether { stroke-dasharray: 2 3; opacity: .5; }
.world-endpoint-portal {
  box-sizing: border-box;
  position: absolute;
  display: flex;
  align-items: start;
  gap: calc(6px / var(--world-actual-scale, .8));
  min-block-size: calc(44px / var(--world-actual-scale, .8));
  padding: calc(6px / var(--world-actual-scale, .8));
  font-size: calc(var(--u-text-xs) / var(--world-actual-scale, .8));
  line-height: var(--u-leading-snug);
  text-align: start;
  white-space: normal;
  background: var(--u-paper);
  pointer-events: auto;
  z-index: var(--u-z-overlay);
}
.world-endpoint-portal[data-current="true"] { border-width: 2px; }
.world-endpoint-portal[data-future="true"] { border-style: dashed; }
.portal-arrow { flex: 0 0 auto; }
.portal-copy { display: block; min-inline-size: 0; overflow-wrap: anywhere; }
.portal-meta, .portal-label { display: block; }
.portal-meta { color: var(--u-ink); font-weight: 600; }
.portal-label { margin-block-start: calc(3px / var(--world-actual-scale, .8)); }
.portal-label::before { content: '○ '; }
.world-endpoint-portal[data-material-kind="book"] .portal-label::before { content: '◇ '; }
.world-endpoint-portal[data-material-kind="game"] .portal-label::before,
.world-endpoint-portal[data-material-kind="simulation"] .portal-label::before,
.world-endpoint-portal[data-material-kind="work"] .portal-label::before { content: '■ '; }
.portal-year { display: none; }
.world-endpoint-portal.is-compact { align-items: center; justify-content: center; flex-direction: column; gap: 0; line-height: var(--u-leading-tight); padding: calc(2px / var(--world-actual-scale, .8)); }
.world-endpoint-portal.is-compact .portal-copy { display: none; }
.world-endpoint-portal.is-compact .portal-arrow::after { content: ' ○'; }
.world-endpoint-portal.is-compact[data-material-kind="book"] .portal-arrow::after { content: ' ◇'; }
.world-endpoint-portal.is-compact[data-material-kind="game"] .portal-arrow::after,
.world-endpoint-portal.is-compact[data-material-kind="simulation"] .portal-arrow::after,
.world-endpoint-portal.is-compact[data-material-kind="work"] .portal-arrow::after { content: ' ■'; }
.world-endpoint-portal.is-compact .portal-year { display: block; }
.world-endpoint-portal.is-compact .portal-year::after { content: attr(data-outside); display: block; white-space: nowrap; font-size: calc(var(--u-text-2xs) / var(--world-actual-scale, .8)); }
.world-portal-tether { fill: none; stroke: var(--u-line-strong); stroke-width: 1; stroke-dasharray: 2 6; opacity: .5; pointer-events: none; }
.world-argument-wire.is-comparison { stroke-dasharray: 7 6; }
.world-argument-wire[data-type="critique"] { stroke: var(--u-critique); stroke-dasharray: 3 3; }
.world-argument-wire[data-type="reference"], .world-argument-wire[data-type="context"], .world-argument-wire[data-type="background"] { stroke-dasharray: 7 6; }
.research-network[data-world-focused="true"] .network-point:not([data-neighbor="true"]):not([aria-pressed="true"]) { opacity: .3; }
.research-network[data-world-focused="true"] .network-point:hover,
.research-network[data-world-focused="true"] .network-point:focus { opacity: 1; }
.research-network[data-world-context="true"] .network-regions .network-label { display: none; }
.research-network[data-world-context="true"] .network-cluster:hover .network-label,
.research-network[data-world-context="true"] .network-cluster:focus .network-label { display: block; }
.research-network .network-point[data-world-substitute="true"] { display: none; }
.research-network[data-world-focused="true"] .network-edge:not([data-related="true"]):not([data-active="true"]):not(:hover):not(:focus) { opacity: .08; }
.research-network[data-world-focused="true"] .network-edge { stroke-width: calc(1.2px / var(--camera-scale)); }
.research-network[data-world-focused="true"] .network-edge[data-related="true"],
.research-network[data-world-focused="true"] .network-edge:hover,
.research-network[data-world-focused="true"] .network-edge:focus { stroke-width: calc(2px / var(--camera-scale)); }

.evidence-scene.is-context .evidence-point { width: 300px; }
.evidence-scene.is-context [data-evidence="root"] { width: 340px; }

.evidence-scene.is-context.is-narrow .evidence-point:not([data-evidence="root"]) { width: calc((var(--card-max-width, 560px) - 20px) / 2); }
.evidence-scene.is-context.is-narrow .evidence-point:not([data-evidence="root"]) p { display: none; }

.evidence-scene.is-context.is-narrow [data-evidence="root"] { width: min(460px, var(--card-max-width, 460px)); }

.evidence-scene.is-context [data-evidence="root"] p { font-size: 16px; line-height: var(--u-leading-snug); }

.evidence-scene.is-context .context-proof { font-size: 14px; padding: 4px 7px; margin-top: 6px; }
.evidence-scene.is-context.is-narrow .evidence-point small { font-size: 14px; line-height: var(--u-leading-tight); }

.evidence-unavailable { max-inline-size: min(32rem, calc(100vw - 2rem)); padding: var(--u-space-3); background: var(--u-paper); border: 1px solid var(--u-line); border-radius: var(--u-radius-control); }
.evidence-unavailable p { margin-block: var(--u-space-2); }
.evidence-unavailable code { display: block; overflow-wrap: anywhere; margin-block-end: var(--u-space-2); }

.evidence-scene.is-context.is-narrow .evidence-point[data-context-detail] p { display: block; }

.evidence-scene.is-context:not(.is-narrow) [data-context-detail] { width: 420px; }
.map-hud[data-evidence="true"] > button { max-inline-size: min(20rem, calc(100vw - 2rem)); white-space: normal; text-align: start; }

.map-hud[data-context="true"] > button { max-inline-size: 10rem; }

.evidence-scene.is-context .is-selected-relation { border-inline-start: 3px solid var(--u-accent); }

.evidence-scene.is-context:not(.is-narrow) [data-context-proof] { width: 420px; }
.evidence-scene.is-context.is-narrow .evidence-point[data-context-proof] { width: min(460px, var(--card-max-width, 460px)); }
.evidence-scene.is-context.is-narrow .evidence-point[data-context-proof] p { display: block; }

/* Keep a narrow-screen route explanation in the current research lane. */
.evidence-scene.is-narrow.has-route-note:not(.is-context) [data-evidence="root"] { width: min(440px, var(--card-max-width, 440px)); }

@media (max-width: 599px) {
 .map-hud[data-evidence="true"] { flex-direction: row; align-items: stretch; inline-size: calc(100% - 2rem); }
 .map-hud[data-evidence="true"] > button { flex: 1 1 0; min-inline-size: 0; max-inline-size: none; font-size: 12px; line-height: var(--u-leading-tight); padding: 8px; min-block-size: 44px; }
 .map-hud[data-evidence="true"] #return-research { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

@media (max-width: 599px) {
 /* Transient navigation feedback must not consume the control row's width. */
 .map-hud[data-evidence="true"] #camera-notice {
   position: absolute;
   inset-inline-start: 0;
   inset-block-end: calc(100% + 8px);
   max-inline-size: 100%;
   box-sizing: border-box;
   margin: 0;
   pointer-events: none;
 }
}

/* Evidence navigation owns a row, so it never covers arguments while panning. */
body.single-surface #map-workspace:has(> .map-hud[data-evidence="true"]):has(#reader-dock[hidden]) {
  display: flex;
  flex-direction: column;
}
body.single-surface #map-workspace:has(#reader-dock[hidden]) > .map-hud[data-evidence="true"] {
  position: static;
  order: 2;
  flex: none;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  inline-size: 100%;
  max-inline-size: none;
  box-sizing: border-box;
  padding: 8px 12px;
  border-block-start: 1px solid var(--u-line);
  background: var(--u-paper);
}
body.single-surface #map-workspace:has(> .map-hud[data-evidence="true"]):has(#reader-dock[hidden]) > #growth-map {
  order: 1;
  flex: 1 1 0;
  inline-size: 100%;
  block-size: auto;
  min-block-size: 0;
}
body.single-surface #map-workspace:has(#reader-dock[hidden]) > .map-hud[data-evidence="true"] #return-research {
  position: static;
  margin: 0;
}
body.single-surface #map-workspace:has(#reader-dock[hidden]) > .map-hud[data-evidence="true"] #camera-notice {
  position: static;
  flex-basis: 100%;
  margin: 0;
}
body.single-surface #map-workspace:has(#reader-dock[hidden]) > .map-hud[data-evidence="true"] #camera-notice.is-quiet {
  flex-basis: 0;
}

/* The parent remains named while the camera follows evidence deeper into a study. */
.evidence-trail { display: flex; align-items: stretch; gap: 8px; order: -1; flex: 1 0 100%; inline-size: 100%; min-inline-size: 0; }
.evidence-trail[hidden] { display: none; }
.evidence-trail button { font-size: var(--u-text-xs); line-height: var(--u-leading-tight); padding: 6px 8px; white-space: normal; text-align: start; min-block-size: 40px; }
.evidence-trail-root { flex: 0 1 auto; max-inline-size: min(40%, 320px); min-inline-size: 0; }
.evidence-trail-chain { display: flex; align-items: stretch; gap: 6px; flex: 1 1 0; min-inline-size: 0; overflow-x: auto; overscroll-behavior-inline: contain; list-style: none; margin: 0; padding: 0 0 3px; }
.evidence-trail-chain li { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; }
.evidence-trail-chain li::before { content: '›'; color: var(--u-ink-muted); }
.evidence-trail-chain button { max-inline-size: 18rem; }
.evidence-trail-chain [aria-current="step"] { background: var(--u-accent-tint); border-color: var(--u-accent); }

/* Keep the complete original title legible without giving it the body prose rhythm. */
.evidence-scene [data-evidence="root"] > p.evidence-source-title {
  font-size: calc(var(--u-text-xs) / var(--camera-scale));
  line-height: var(--u-leading-snug);
}
