.view-switch{display:inline-flex;border:1px solid #d9d1dc;border-radius:7px;background:#fff;padding:2px;flex:none}
.view-switch button{border:0;border-radius:5px;padding:7px 10px;white-space:nowrap}
.view-switch button[aria-pressed=true]{background:#eee5f5;color:#50316f;font-weight:700}
.view-switch button:focus-visible{outline:2px solid #74529a;outline-offset:1px}
.nav-actions{display:contents}
#topic-select{width:145px}
.viewport.galaxy-viewport{display:grid;place-items:safe center;grid-template-columns:minmax(0,1fr);background:#060a18;border-color:#2c3853}
.stage.galaxy-view{grid-area:1/1;min-height:0;background:transparent;box-shadow:none}
.stage.galaxy-view .publisher-background-watermark{opacity:calc(.1 * var(--galaxy-detail-scale,1))}
.stage.galaxy-view :is(.galaxy-system-label,.galaxy-system-count,.galaxy-person-label,.galaxy-hover-portrait text){
 transform-box:fill-box;transform-origin:center;transform:scale(var(--galaxy-detail-scale,1))
}
.map-tools{position:sticky;top:8px;left:0;z-index:2;display:flex;justify-content:flex-end;align-items:flex-start;gap:6px;height:0;padding:0 8px;pointer-events:none}
.viewport:not(.galaxy-viewport) .map-tools{--tools-top:48px;top:var(--tools-top);margin-top:var(--tools-top);margin-bottom:calc(0px - var(--tools-top))}
.galaxy-viewport .map-tools{grid-area:1/1;align-self:start;justify-self:stretch;margin-top:8px}
.map-tools button{pointer-events:auto;min-height:36px;padding:6px 10px;font-size:12px;font-weight:650;white-space:nowrap}
.galaxy-viewport .map-tools button{border-color:#627292;background:#121e36;color:#edf2ff}
.galaxy-viewport .map-tools button:is(:hover,:focus-visible){border-color:#e0cbff;color:#fff;outline-offset:2px}
#galaxy-motion::before{content:'▶';display:inline-block;width:13px;margin-right:5px;color:#d7c6fb}
#galaxy-motion[data-motion=playing]::before{content:'Ⅱ'}
body.map-fullscreen{position:fixed;inset:0;height:100dvh;overflow:hidden}
.map-fullscreen .masthead,.map-fullscreen .footer{display:none}
.map-fullscreen header{max-width:none;margin:0;padding:6px 8px}
.map-fullscreen header nav{margin:0}
.map-fullscreen .workspace{flex:1;min-height:0;max-width:none;margin:0;padding:0;grid-template-rows:minmax(0,1fr)}
.map-fullscreen .workspace .viewport{height:auto;min-height:0;border-radius:0}
@media(max-width:900px){
 .map-fullscreen .workspace.inspector-open{grid-template-rows:minmax(0,1fr) auto}
 .map-fullscreen .workspace.inspector-open .inspector{min-height:0;max-height:36dvh}
}
@media(max-width:650px){
 .viewport:not(.galaxy-viewport) .map-tools{--tools-top:18px}
 .map-fullscreen nav>select{display:none}
 .map-fullscreen nav .nav-actions{display:flex;align-items:center;overflow-x:auto;scrollbar-width:none}
 .map-fullscreen nav .nav-actions>*{flex:none}
 .map-fullscreen nav .nav-actions>:is(button,a.download){width:auto;padding-inline:8px}
 .map-fullscreen nav :is(#minus,#plus){min-width:34px}
}
@media(min-width:1050px) and (any-hover:hover){
 .map-fullscreen .workspace.galaxy-reading:not(.inspector-open){grid-template-columns:minmax(0,1fr)}
 .map-fullscreen .workspace:not(.inspector-open)>.galaxy-reader{display:none}
 .map-fullscreen .workspace:not(.inspector-open)>.galaxy-reader[data-hovering]:not([hidden]){
  display:block;position:absolute;top:52px;right:16px;width:min(340px,35%);pointer-events:none
 }
 .map-fullscreen .workspace:not(.inspector-open)>.galaxy-reader[data-side=left]{left:16px;right:auto}
}
.galaxy-reader{display:none;min-width:0;align-self:start;z-index:3;padding:17px 19px;border:1px solid #e7dfe8;border-radius:10px;background:#fffdf9;color:var(--ink)}
.galaxy-reader-kicker{margin-bottom:11px;color:#674886;font-size:12px;font-weight:700;letter-spacing:.09em}
.galaxy-reader h2{margin:12px 0 14px;font-size:24px;line-height:1.2;overflow-wrap:anywhere}
.galaxy-reader dl{margin:0}
.galaxy-reader dt{margin-top:12px;color:#674886;font-size:12px;font-weight:700}
.galaxy-reader dd{margin:4px 0 0;color:#342d3b;font-size:15px;line-height:1.55;overflow-wrap:anywhere}
.galaxy-reader-frame{display:grid;place-items:center;width:148px;aspect-ratio:1;border:1px solid #e7dfe8;border-radius:9px;background:#f1ebf4;color:#624c70;font-size:12px;overflow:hidden}
.galaxy-reader-frame img{width:100%;height:100%;object-fit:cover}
.galaxy-reader-note{margin-top:13px;color:#6c6272;font-size:12px}
@media(min-width:1050px) and (any-hover:hover){
 .workspace.galaxy-reading{grid-template-columns:minmax(0,1fr) clamp(270px,25vw,340px);gap:14px}
 .workspace.galaxy-reading>.viewport{grid-area:1/1}
 .workspace.galaxy-reading>:is(.galaxy-reader,.inspector){grid-area:1/2}
 .galaxy-reader:not([hidden]){display:block;max-height:100%;overflow:auto}
 .workspace.inspector-open .galaxy-reader:not([data-hovering]){visibility:hidden}
 .workspace.inspector-open .galaxy-reader{pointer-events:none}
}
@media(min-width:651px) and (max-width:1049px) and (any-hover:hover){
 .galaxy-reader[data-hovering]:not([hidden]){display:block;position:absolute;top:52px;right:28px;width:min(280px,calc(50% - 38px));pointer-events:none;box-shadow:0 8px 28px #17102235}
 .galaxy-reader[data-side=left]{left:28px;right:auto}
 .galaxy-reader-frame{width:110px}
}
.stage.galaxy-view .person-link{stroke-width:1.25px}
.stage.galaxy-view .person-link[data-scope=within]{stroke-width:1.65px}
.stage.galaxy-view .org-link{stroke-width:1px}
.stage.galaxy-view .person-link.highlighted,.stage.galaxy-view .org-link.highlighted{opacity:1;stroke-width:2px}
.stage.galaxy-view:not(.focused) .galaxy-map[data-edge-preview] :is(.person-link,.org-link):not(.edge-preview){opacity:.13}
.stage.galaxy-view:not(.focused) .galaxy-map[data-edge-preview] .edge-preview{opacity:1;stroke-width:2.2px}
.stage.galaxy-view:not(.focused) .galaxy-map[data-edge-preview] .galaxy-person:not(.edge-endpoint){opacity:.56}
.stage.galaxy-view:not(.focused) .galaxy-person.edge-endpoint .galaxy-star-ring{visibility:visible}
.stage.galaxy-view.focused .galaxy-person:not(.related){opacity:.22}
.stage.galaxy-view.focused .person-link:not(.highlighted),.stage.galaxy-view.focused .org-link:not(.highlighted){opacity:.09}
.stage.galaxy-view[data-focus-kind=person] :is(.person-link,.org-link).highlighted{stroke-width:2.5px}
.stage.galaxy-view[data-focus-kind=person] .galaxy-person.related .galaxy-star-ring{visibility:visible;stroke-width:1.5px}
.stage.galaxy-view[data-focus-kind=person] .galaxy-person.primary .galaxy-person-label{visibility:visible}
.stage.galaxy-view[data-focus-kind=person] .galaxy-hover-portrait{visibility:hidden}
.stage.galaxy-view .galaxy-person:focus{outline:none}
.stage.galaxy-view .galaxy-person:focus-visible .galaxy-star-ring{visibility:visible;stroke-width:2px}
.stage.galaxy-view .galaxy-organization.highlighted .galaxy-org-label{visibility:hidden}
.stage.galaxy-view[data-focus-kind=organization] .galaxy-organization.highlighted .galaxy-org-label,
.stage.galaxy-view .galaxy-organization:is(:hover,:focus-visible) .galaxy-org-label{visibility:visible}
.stage.galaxy-view .galaxy-organization rect{filter:none}
.stage.galaxy-view .galaxy-org-label{pointer-events:none}
@media(min-width:1200px){
 nav{gap:6px}
 nav .search{min-width:168px}
 nav #org-select{width:146px}
 nav #dept-select{width:124px}
 nav #route-select,nav #topic-select{width:121px}
 nav button,nav a.download{padding:9px 8px}
 nav .view-switch button{padding:7px 8px}
}
@media(max-width:650px){
 nav #org-select,nav #dept-select,nav #route-select,nav #topic-select{grid-column:span 3;width:100%}
 nav .nav-actions{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
 nav .view-switch{grid-column:span 2}
 nav .view-switch button{min-width:0;min-height:28px;font-size:11px}
 nav .nav-actions>:is(button,a.download){grid-column:auto;white-space:nowrap}
}

/* 300+ 条同栏连接：仅名录长图淡显；星系图的星网要保持参考站那种可见密度 */
.stage:not(.galaxy-view) svg .person-link{opacity:.22}
.stage:not(.galaxy-view).show-all svg .person-link{opacity:.3}
.stage:not(.galaxy-view).focused svg .person-link{opacity:.09}
.stage:not(.galaxy-view).focused svg .person-link.highlighted{opacity:1;stroke-width:4px}


/* ===== 北大人文宇宙 · 编辑部式版式 ===== */
:root{
  --paper:#fafaf7; --paper-deep:#f4f1e8; --ink:#1c1917;
  --ink-soft:#4a453d; --ink-mute:#6e6a62; --ink-faint:#8a857b;
  --rule:#e3ded2; --red:#9b1e26;
  --serif:"Songti SC","STSong","Noto Serif CJK SC","SimSun",serif;
  --mono:"JetBrains Mono","SFMono-Regular",Menlo,Consolas,monospace;
}
body{background:#f6f2ea;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
header,.footer{background:transparent}
.masthead h1{font-family:var(--serif);font-weight:500;font-size:30px;letter-spacing:.03em;color:var(--ink)}
.titleline small{font-family:var(--mono);font-size:10px;letter-spacing:.26em;color:var(--ink-faint);font-weight:400}
.masthead p{color:var(--ink-mute);font-size:13px;letter-spacing:.015em;line-height:1.6}
.masthead p #people-count{font-family:var(--mono);font-weight:500;color:var(--red)}
.article-backlink{border:1px solid var(--rule);border-radius:4px;background:var(--paper)}
.article-backlink-label{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-faint)}
.article-backlink-title{font-size:12px;color:var(--ink-soft)}
.account-trigger{border:1px solid var(--rule);border-radius:4px;background:var(--paper);font-weight:400;color:var(--ink-soft)}
.account-card{border:1px solid var(--rule);border-radius:4px;box-shadow:none;background:var(--paper)}
nav input,nav select,nav button,nav a.download{
  border:1px solid var(--rule)!important;border-radius:4px!important;
  background:var(--paper)!important;color:var(--ink-soft)!important;
  font-weight:400;box-shadow:none!important;letter-spacing:.01em;
}
nav input::placeholder{color:var(--ink-faint)}
nav button:hover,nav a.download:hover,nav select:hover{border-color:#c9c0ae!important;background:#fffdf8!important}
/* 只允许一个实心按钮（适合宽度）。视图切换与连接开关用淡底 / 描边，
   否则 320px 屏上会出现三块并排的深红方块，比参考站重得多。 */
button.primary{
  background:var(--red)!important;border-color:var(--red)!important;color:#fafaf7!important;font-weight:500;
}
.view-switch button[aria-pressed="true"]{
  background:#f7ece9!important;border-color:#dcc2bd!important;color:var(--red)!important;font-weight:500;
}
button.active{
  background:var(--paper)!important;border-color:#dcc2bd!important;color:var(--red)!important;font-weight:500;
}
.article-backlink{white-space:nowrap;overflow:hidden}
.article-backlink-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#info a.source-url{
  display:block;font-family:var(--mono);font-size:10px;letter-spacing:0;line-height:1.7;
  color:var(--ink-mute);border:0;text-decoration:underline;text-decoration-color:var(--rule);
  text-underline-offset:3px;overflow-wrap:anywhere;margin:2px 0;
}
#info a.source-ref{font-size:12px}
#topic-select{border-color:#d8cfbc!important}
.results{border:1px solid var(--rule);border-radius:4px;background:var(--paper);box-shadow:none}
.results button{font-family:var(--serif);font-size:15px;color:var(--ink)}
.viewport{background:var(--paper);border:1px solid var(--rule);border-radius:4px}
.status{color:var(--ink-faint);font-family:var(--mono);font-size:10px;letter-spacing:.12em}
.inspector{background:var(--paper);border-left:1px solid var(--rule);box-shadow:none}
.inspector h2{font-family:var(--serif);font-weight:500;font-size:25px;color:var(--ink);letter-spacing:.02em}
.inspector h3{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-faint);font-weight:400}
.inspector p,.inspector dd{color:var(--ink-soft);line-height:1.8;font-size:13px}
.inspector dt{color:var(--ink-faint);font-size:11px;letter-spacing:.08em}
.inspector a{color:var(--red);text-decoration:none;border-bottom:1px solid #e6cfd0}
.inspector .member{border:1px solid var(--rule);border-radius:4px;background:#fffdf8;font-family:var(--serif)}
.close{border:1px solid var(--rule);border-radius:4px;background:var(--paper)}
.galaxy-reader{background:var(--paper);border:1px solid var(--rule);border-radius:4px;box-shadow:none}
.galaxy-reader h2{font-family:var(--serif);font-weight:500;color:var(--ink)}
.galaxy-reader dt{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-faint)}
.galaxy-reader dd{color:var(--ink-soft)}
.footer{font-size:11px;color:var(--ink-faint);border-top:1px solid var(--rule)}
.footer a{color:var(--ink-mute);text-decoration:none}
.footer-label,.graph-hint{color:var(--ink-faint)}
.footer-date{font-family:var(--mono);letter-spacing:.06em}
.footer .drift-link strong{font-weight:400;color:var(--ink-mute)}
.footer .drift-brand img{opacity:.72}
/* 机构标签由上游 JS 依据碰撞检测生成，统一改成暖纸细框小字 */
.org-marker text{fill:var(--ink-mute)!important;font-size:14px!important;font-weight:400!important;
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif!important;letter-spacing:.01em}
.org-caption rect{fill:#fafaf7!important;stroke-opacity:.55!important;stroke-width:1px!important;rx:4px}
.stage.galaxy-view svg .galaxy-system-label{font-family:var(--serif)!important;font-weight:600;font-size:22px;letter-spacing:.045em;filter:brightness(1.16) saturate(1.08)}
.stage.galaxy-view svg .galaxy-system-count{font-family:var(--mono)!important;font-size:13px;fill:#c6d0e3}
.stage.galaxy-view svg .org-link{opacity:.62!important;stroke-width:1.2px!important;stroke-dasharray:2 4!important}
.stage.galaxy-view svg .person-link[data-scope=within]{opacity:1!important;stroke-width:1.8px!important}
.stage.galaxy-view svg .galaxy-person-label{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif}
.stage.galaxy-view svg .galaxy-monogram{font-family:var(--serif);pointer-events:none;opacity:.92}
.galaxy-viewport .map-tools button{background:rgba(14,22,42,.86)!important;color:#eef2fb!important;border-color:#3b4a68!important}
@media(max-width:650px){
  .masthead h1{font-size:23px}
  nav input,nav select,nav button,nav a.download{font-size:12px}
  .footer{font-size:10px}
  header{padding-top:14px;padding-bottom:8px}
}
@media(max-width:355px){
  .masthead h1{font-size:21px}
  .article-backlink-label{font-size:9px}
  .article-backlink-title{font-size:11px}
  .masthead p{font-size:11px}
}
