*{box-sizing:border-box}body{margin:0;background:#070e16;color:#dce9f2;font:16px/1.65 system-ui,"Microsoft JhengHei",sans-serif}button,input,select{font:inherit}button,a,input,select{outline-offset:4px}button{cursor:pointer;color:#dce9f2;border:1px solid #29424f;background:#11202b;padding:8px 12px;border-radius:6px}button:hover,button[aria-pressed=true],button[aria-selected=true]{border-color:#67e8f9;color:#8cf1fa;background:#163443}button:disabled{opacity:.35;cursor:default}a{color:#9ee9f4}header{display:flex;justify-content:space-between;align-items:center;padding:18px 3vw;border-bottom:1px solid #213540;gap:16px}header a:first-child{font-size:22px;letter-spacing:.15em;text-decoration:none;color:#f4eee1}header span{color:#7e9aac;font-size:13px}main{padding:24px 2vw}.masthead{display:flex;align-items:center;justify-content:space-between;gap:25px;margin:0 0 24px}.masthead small{color:#58cedd;letter-spacing:.16em}h1{font-size:clamp(23px,2.4vw,36px);margin:5px 0;letter-spacing:.06em}.masthead p{font-size:13px;color:#8da5b6;max-width:400px}h2{font-size:18px;margin:0 0 12px}h3{font-size:17px;margin:5px 0}h4{font-size:16px}.workspace{display:grid;grid-template-columns:230px minmax(420px,1fr) 340px;border:1px solid #263d49;border-radius:12px;overflow:hidden;min-height:760px}.directory,.dossier{padding:20px;background:#0c1722;min-width:0}.directory{border-right:1px solid #263d49}.dossier{border-left:1px solid #263d49}.directory label,.filters label{display:block;font-size:12px;color:#91adbf;margin:8px 0}input,select{width:100%;background:#09131d;color:#deedf5;border:1px solid #345262;border-radius:5px;padding:10px;min-width:0}.person-item{display:block;text-align:left;width:100%;margin:6px 0;font-size:17px;border-color:transparent;background:transparent}.person-item small{display:block;color:#8fa6b6;font-size:11px}#people{max-height:650px;overflow:auto}#index-status,#graph-status{color:#91acbd;font-size:12px}.network{padding:20px;min-width:0;background:radial-gradient(ellipse at 50% 55%,#0d2835 0,#08131e 60%)}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px}.toolbar h2{margin:0}.toolbar button{font-size:12px;padding:7px}.filters{display:grid;grid-template-columns:auto minmax(140px,1fr);gap:5px 12px;align-items:center;margin-top:18px}.filters select,.filters input{font-size:13px}#graph{position:relative}#graph svg{width:100%;display:block;min-height:460px;overflow:visible}.orbit{fill:none;stroke:#224551;stroke-width:1;stroke-dasharray:3 8}.edge{stroke:#5ebbc9;stroke-width:1.5}.edge.research{stroke:#869096;stroke-dasharray:4 5}.edge-label rect{fill:#0c1d28;stroke:#335865}.edge-label text{fill:#b3e6ed;font-size:14px}.edge-label,.node{cursor:pointer}.edge-label:hover rect,.edge-label:focus rect{stroke:#fff}.node circle{fill:#0e2838;stroke:#6cb9cb;stroke-width:2}.node text{fill:#e7f5fc;font-size:22px}.node.center circle{fill:#174452;stroke:#90eff3;stroke-width:3;filter:drop-shadow(0 0 12px #47b4c855)}.node:hover circle,.node:focus circle{stroke:#fff;fill:#214e5f}.empty{fill:#b7cad5;font-size:17px}.graph-hint{text-align:center;color:#7493a4;font-size:12px}.pager{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:14px;font-size:12px}.pager button{font-size:12px}.tabs{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid #29434f;padding-bottom:14px}.tabs button{font-size:12px;padding:6px 8px}#person-name{font-size:28px;margin-bottom:0}#person-meta{font-size:12px;color:#84a6ba;margin-top:4px}#detail{max-height:760px;overflow:auto;padding-top:12px;scrollbar-width:thin}#detail p{font-size:14px;line-height:1.9}small{color:#91aabc}.relation-card{border-bottom:1px solid #28414e;padding:14px 0;margin-bottom:6px}.relation-card>button{margin:3px}details{font-size:12px;margin:12px 0;background:#07121b;padding:9px;border-radius:5px}summary{cursor:pointer;color:#8ddde7}blockquote{white-space:pre-wrap;margin:10px 0;padding-left:10px;border-left:2px solid #315c6e;line-height:1.8}.boundary{color:#728fa2;font-size:12px}#relation-list{max-height:670px;overflow:auto}#relation-list p{font-size:14px}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #efcf94}[hidden]{display:none!important}@media(min-width:1600px){.workspace{grid-template-columns:250px minmax(620px,1fr) 400px}}@media(max-width:1150px){.workspace{grid-template-columns:200px minmax(350px,1fr)}.dossier{grid-column:1/-1;border-left:0;border-top:1px solid #29434f}#detail{max-height:500px}.masthead p{max-width:240px}}@media(max-width:650px){header{padding:12px;font-size:12px}header span{display:none}main{padding:16px 10px}.masthead{display:block}.masthead p{max-width:none}.workspace{display:flex;flex-direction:column}.directory{border-right:0;border-bottom:1px solid #29434f;padding:15px}#people{display:grid;grid-template-columns:1fr 1fr;max-height:200px;gap:4px}.person-item{margin:0;padding:7px}.directory>label[for=person-type],#person-type{display:none}.network,.dossier{padding:15px}.toolbar{align-items:flex-start}.toolbar h2{font-size:17px}.filters{grid-template-columns:1fr}.filters label{margin-bottom:0}#graph{overflow:auto}#graph svg{min-width:660px;height:610px;min-height:0}.graph-hint{text-align:left}.dossier{border-top:1px solid #29434f}.tabs{position:sticky;top:0;background:#0c1722;z-index:1}.node text{font-size:23px}#detail{max-height:none}.boundary{line-height:1.8}}
/* Keep edge labels legible after the SVG scales to a laptop panel. */
.edge-label text{font-size:21px}
.zoom-bar{display:flex;gap:6px;justify-content:flex-end}.zoom-bar button{font-size:12px;padding:5px 9px}#graph svg{touch-action:none}.directory>label[for=person-type],#person-type{display:block}

/* R14: event-driven true XYZ projection, no perpetual animation or GPU model. */
#graph{border:1px solid #286170;border-radius:12px;background:radial-gradient(ellipse at center,#123343aa,transparent 70%),linear-gradient(90deg,#37606b12 1px,transparent 1px),linear-gradient(#37606b12 1px,transparent 1px);background-size:auto,40px 40px,40px 40px;overflow:hidden}.spatial-orbit{stroke:#59c8dc;stroke-width:1.3;opacity:.55;stroke-dasharray:none}.hud{fill:#88f5fa;font-size:15px;letter-spacing:3px}#graph svg[data-mode=spatial]{cursor:grab}#graph svg:active{cursor:grabbing}.toolbar>div{display:flex;gap:4px;flex-wrap:wrap}.zoom-bar{padding:8px}.node:focus{outline:none}.node:focus-visible circle{stroke:#ffe4a3;stroke-width:5}@media(max-width:650px){#graph svg{min-width:0;width:100%;height:auto;min-height:350px}.network{padding:10px}.toolbar{flex-wrap:wrap}.graph-hint{padding:0 10px}.zoom-bar button{min-height:40px}}

/* Isolated paper-board surface; original 3D styling and projection remain intact. */
header a:first-child,.masthead small,h1,.hud{letter-spacing:0}
h1{font-size:32px}
.toolbar{flex-wrap:wrap}
.toolbar h2{overflow-wrap:anywhere}
.graph-tool{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;padding:9px!important;flex:0 0 42px}
#graph .graph-tool svg{width:22px;height:22px;min-height:0;min-width:0;overflow:hidden}
#graph[data-mode=graph]{background:#e8ebea;border-color:#bac4c0;border-radius:6px;color:#253c37}
#graph[data-mode=graph]>.zoom-bar{background:#e8ebea;border-bottom:1px solid #ccd3cf}
#graph[data-mode=graph]>.zoom-bar button,#graph[data-mode=graph] .board-selection button{color:#253c37;background:#f6f8f7;border-color:#a4b7ad}
#graph>svg[data-mode=graph]{height:620px;min-height:0;min-width:0;width:100%;background:#e8ebea;cursor:grab;overflow:hidden}
.workspace:has(#graph[data-mode=graph]){grid-template-columns:200px minmax(0,1fr)}
.workspace:has(#graph[data-mode=graph])>.dossier{grid-column:1/-1;border-left:0;border-top:1px solid #29434f}
.workspace:has(#graph[data-mode=graph]) #detail{max-height:460px}
#graph[data-mode=graph] .zoom-bar{justify-content:flex-start;flex-wrap:wrap;align-items:center}
.board-group-nav{max-width:260px;width:auto;min-width:140px;margin-left:auto;height:42px;font-size:14px;padding:6px 10px;color:#253c37;background:#f6f8f7;border-color:#a4b7ad}
#graph>svg[data-mode=graph]:active{cursor:grabbing}
#graph>svg[data-mode=graph]:focus-visible{outline:3px solid #b27623;outline-offset:-3px}
.detective-group{font-size:19px;font-weight:650;letter-spacing:0}
.detective-line{stroke:#626a71}
.detective-node,.detective-label{cursor:pointer}
.detective-frame{fill:#fff;stroke-width:3}
.detective-initial{font-size:22px;fill:#3b5550;font-weight:600}
.detective-name rect{fill:#f9fbfbe6;stroke:#a4b0ac;stroke-width:1}
.detective-name text{fill:#25332f;letter-spacing:0}
.detective-small{fill:#556661;font-size:12px}
.detective-label rect{fill:#fbfcfbeF;stroke:#8d9c95;stroke-width:1}
.detective-label text{fill:#39473f;font-size:14px;letter-spacing:0}
.detective-leader{stroke:#7e8a83;stroke-width:.75;stroke-dasharray:3 3;opacity:.4}
.detective-node:focus-visible,.detective-label:focus-visible{outline:none}
.detective-node:focus-visible .detective-frame,.detective-node[data-selected=true] .detective-frame{stroke:#a66d1e;stroke-width:5}
.detective-label:focus-visible rect,.detective-label:hover rect{stroke:#a66d1e;stroke-width:3}
#graph[data-mode=graph] .graph-hint{color:#51635a;text-align:left;font-size:12px;line-height:1.5;padding:0 12px;margin:10px 0;overflow-wrap:anywhere}
.board-inspector{height:148px;border-top:1px solid #bcc8c0;padding:10px 12px;background:#f3f5f4;overflow:hidden}
.board-selection{display:flex;align-items:center;gap:8px;height:42px;min-width:0}
.board-selection strong{margin-right:auto;font-size:15px;overflow-wrap:anywhere;min-width:0}
.board-selection>button:not(.graph-tool){font-size:12px;flex-shrink:0}
.board-relations{display:flex;gap:6px;flex-wrap:wrap;align-content:flex-start;overflow:auto;max-height:76px;padding:7px 0 3px}
.board-relations button{font-size:12px;line-height:1.5;padding:5px 8px;max-width:100%;white-space:normal;overflow-wrap:anywhere;color:#33473e;background:#fff;border-color:#b0c1b7}
@media(max-width:650px){h1{font-size:23px}#graph>svg[data-mode=graph]{height:480px}.board-inspector{height:156px}.board-relations{max-height:84px}.zoom-bar{justify-content:flex-end;gap:6px}.toolbar>div{width:100%}.toolbar>div button{flex:1 1 auto}.graph-hint{font-size:12px}}
@media(prefers-reduced-motion:reduce){.detective-node,.detective-edge,.detective-label{transition:none;animation:none}}
