/* finesse component · existing evergreen palette · orbital hierarchy canvas · feedback motion */
html,body{overflow-x:clip}
.relationship-explorer{--map-bg:#10281f;--map-ink:#e2eadd;--map-muted:#a5bda9;--map-line:#8cb49a;--map-accent:#d2e59c;position:relative;background:var(--map-bg);border:1px solid #345543;border-radius:18px;overflow:hidden;color:var(--map-ink);box-shadow:0 18px 44px -30px #173a2966;margin-top:25px;isolation:isolate}
.explorer-bar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 22px;border-bottom:1px solid #a6c8ad26;background:#163024}
.map-breadcrumbs{display:flex;align-items:center;gap:12px;min-width:0;overflow:auto;scrollbar-width:none;font-size:12px;align-self:auto}
.map-breadcrumbs a{color:#b3c8b5;padding:4px 0;display:block;white-space:nowrap;font-size:12px;min-height:24px}.map-breadcrumbs a[aria-current]{color:var(--map-accent);font-weight:600}.map-breadcrumbs a::after{display:none}.map-breadcrumbs>span{color:#668670}
.map-up{font-size:12px;color:var(--map-ink);white-space:nowrap;min-height:36px;display:flex;gap:7px;align-items:center}.map-up.is-disabled{visibility:hidden;pointer-events:none}
.explorer-tools{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:19px 23px 0}.map-scope{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:12px}.map-scope strong{font-weight:500}.map-scope small{font-size:11px;color:var(--map-muted)}.map-live{width:6px;height:6px;background:var(--map-accent);border-radius:50%;box-shadow:0 0 0 4px #d2e59c10}
.map-search{display:flex;align-items:center;gap:7px;background:#d6e7d508;border:1px solid #a6c8ad30;border-radius:9px;max-width:250px;padding:1px 7px;color:var(--map-muted)}.map-search input{min-width:0;width:155px;background:transparent;border:0;color:var(--map-ink);padding:9px 0;font-size:12px;outline-offset:0}.map-search input::placeholder{color:#a4b5a3}.map-search button{border:0;background:transparent;color:var(--map-muted);font-size:17px;width:29px;height:34px}
.map-stage{position:relative;height:620px;min-width:0;background-image:radial-gradient(ellipse at 50% 48%,#244d3633,transparent 57%),radial-gradient(#a9c6ad1a .65px,transparent .9px);background-size:auto,22px 22px;overflow:hidden;touch-action:none}.explorer-svg{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.is-dragging .explorer-svg{cursor:grabbing}.map-camera{will-change:transform}.map-orbits ellipse{fill:none;stroke:#a0c6aa12;stroke-dasharray:2 10;stroke-width:1}.map-links path{fill:none;stroke:var(--map-line);opacity:.23;stroke-width:1;vector-effect:non-scaling-stroke;transition:opacity .18s,stroke .18s}.map-links path.is-focused{opacity:.92;stroke:var(--map-accent);stroke-width:1.8}.map-node{outline:none;cursor:pointer}.node-hit{fill:transparent}.node-disc{fill:#244c38;stroke:#8fbe9a;stroke-width:1.2}.node-orbit{fill:#a9c5a608;stroke:#a9c5a626;stroke-width:1}.node-icon{fill:var(--map-accent);font-size:10px;pointer-events:none}.node-person .node-disc{fill:#284441;stroke:#94bbb0}.node-person .node-icon{fill:#b0cebf;font-size:7px}.node-name{fill:#d7e4d4;font-size:var(--node-font,12px);font-weight:450;paint-order:stroke;stroke:var(--map-bg);stroke-width:5px;stroke-linejoin:round;pointer-events:none}.node-body{transform-box:fill-box;transform-origin:center;transition:transform .22s}.map-node.is-focused .node-body,.map-node:focus-visible .node-body{transform:scale(1.14)}.map-node.is-focused .node-disc,.map-node:focus-visible .node-disc{fill:#47653d;stroke:var(--map-accent);stroke-width:2}.map-node.is-focused .node-name,.map-node:focus-visible .node-name{fill:#eff6df;font-weight:650}.has-focus .map-links path:not(.is-focused){opacity:.09}.has-focus .map-node:not(.is-focused){opacity:.6}.root-rim{fill:none;stroke:#b5cf9630;stroke-width:1;stroke-dasharray:2 7}.root-halo{fill:#d0e49a0b;stroke:#b5cf9633;stroke-width:1}.root-disc{fill:url(#map-root-fill);stroke:#ecf5caaa;stroke-width:1.4}.root-total{font:600 22px var(--mono);letter-spacing:-.04em;fill:#183c29}.root-name{font-size:16px;fill:#e4eedb;font-weight:600}.root-kind{font-size:10px;fill:#98b5a0;letter-spacing:.16em}.map-tooltip{position:absolute;z-index:5;pointer-events:none;width:228px;padding:15px 17px;border:1px solid #c3dab646;background:#213e2ff5;box-shadow:0 15px 35px #06170d55;border-radius:12px;color:#e9f0df}.map-tooltip[hidden]{display:none}.map-tooltip span{font-size:10px;color:#b8c7a8}.map-tooltip strong{display:block;font-size:16px;margin:5px 0;line-height:1.5}.map-tooltip small{display:block;font-size:11px;color:#bdcdb6;line-height:1.7}.map-tooltip b{display:block;font-size:10px;margin-top:11px;font-weight:500;color:var(--map-accent)}
.map-controls{position:absolute;bottom:18px;left:20px;display:flex;align-items:center;border:1px solid #95b5a442;border-radius:11px;padding:4px;background:#203e2ff0;box-shadow:0 6px 20px #041b0d44;z-index:3}.map-controls button{border:0;background:transparent;color:#e2ecd8;min-width:36px;height:36px;border-radius:7px;font-size:19px;display:grid;place-items:center}.map-controls button:hover{background:#e0edce18}.map-controls output{font:10px var(--mono);width:44px;text-align:center;color:#b9cdb3}.map-controls i{height:18px;width:1px;background:#b0cda833;margin:0 5px}.explorer-foot{display:flex;justify-content:space-between;align-items:center;gap:15px;min-height:51px;padding:10px 22px;border-top:1px solid #a6c8ad20;font-size:10px;color:#afc3ae}.map-page{display:flex;gap:13px;align-items:center;white-space:nowrap;font:11px var(--mono)}.map-page a{display:grid;place-items:center;width:30px;height:29px;background:#c0d8ad10;border-radius:6px;color:#d1e2c1}.map-page a[aria-disabled]{opacity:.3;pointer-events:none}.map-node-list{position:absolute;inset:12px 14px 70px auto;width:280px;max-width:calc(100% - 28px);background:#f1f4ec;color:#233f2c;border:1px solid #b7cbb3;border-radius:12px;overflow:auto;z-index:4;box-shadow:0 15px 45px #041b0d55}.map-node-list[hidden]{display:none}.map-node-list>div{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;position:sticky;top:0;background:#edf2e6;font-size:12px}.map-node-list button{background:transparent;border:0;color:#315940;font-size:21px;width:36px;height:36px}.map-node-list>a{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;border-top:1px solid #254f3220;font-size:13px;min-height:48px}.map-node-list>a:hover{background:#dee9d7}.map-node-list small{display:block;font-size:10px;color:#58715d;margin-top:4px;line-height:1.6}.map-empty{position:absolute;inset:60% 20px auto;text-align:center;color:#b6c9ae;font-size:12px;line-height:1.8;pointer-events:none}.map-empty a{display:block;pointer-events:auto;color:#d7e8b5;margin-top:8px}.map-empty[hidden]{display:none}.map-loading{display:grid;place-items:center;min-height:420px;color:#b9cfb3;font-size:13px}.relationship-explorer:fullscreen,.relationship-explorer.map-expanded{margin:0;border-radius:0;display:flex;flex-direction:column;background:var(--map-bg)}.relationship-explorer:fullscreen .map-stage,.map-expanded .map-stage{flex:1;height:auto;min-height:400px}.map-expanded{position:fixed;inset:0;z-index:80}
.library-filter{margin-top:23px}.library-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:26px}.library-card{display:flex;flex-direction:column;gap:10px;min-width:0;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;min-height:194px;transition:transform .18s,border-color .18s,background .18s;overflow-wrap:anywhere}.library-card:hover{transform:translateY(-2px);border-color:#9db295;background:#f1f4e9;box-shadow:0 5px 14px #29402b08}.library-card:active{transform:translateY(0)}.library-card-head{display:flex;align-items:center;gap:10px;min-width:0}.library-card-head>span:nth-child(2){min-width:0;flex:1}.library-card-head h2{font-family:inherit;font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.library-card-head small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;color:var(--muted);margin-top:4px}.library-card-head .academic-image{width:34px;height:34px;flex:none}.card-arrow{font-size:14px;color:#618260}.library-roles{display:flex;gap:5px;flex-wrap:wrap;min-height:18px}.library-roles span{font-size:10px;padding:2px 6px;border-radius:4px;background:#e8eee0;color:#436242}.library-organization{font-size:11px;line-height:1.6;color:#35533e;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;min-height:18px}.library-card .library-bio{-webkit-line-clamp:2;font-size:11px;line-height:1.75;margin:0}.library-filter select{min-width:120px}.library-card-head .academic-image span{font-size:13px}
@media(min-width:1600px){.map-stage{height:690px}}
@media(max-width:1100px){.library-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.relationship-explorer{border-radius:13px;margin-top:20px}.explorer-bar{padding:10px 13px;gap:9px}.map-breadcrumbs{gap:8px}.map-up{min-width:36px;font-size:18px;justify-content:center}.map-up>span{display:none}.explorer-tools{padding:13px 13px 0;gap:8px}.map-scope{gap:6px;font-size:11px}.map-scope small{font-size:9px}.map-search{max-width:175px}.map-search input{width:105px;font-size:11px;min-height:36px}.map-search button{width:25px;height:36px}.map-stage{height:540px}.map-controls{left:11px;bottom:14px}.map-controls button{width:39px;height:40px}.map-controls output{width:35px}.explorer-foot{padding:9px 12px;font-size:9px;gap:7px}.map-gesture{max-width:220px;line-height:1.8}.map-page{gap:8px;font-size:10px}.map-page a{width:36px;height:36px}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.library-card{padding:13px;gap:8px;min-height:182px}.library-card-head{gap:7px}.library-card-head h2{font-size:16px}.library-filter input{flex-basis:100%}.library-filter select{width:auto!important;flex:1!important;min-width:0}.library-filter button{flex:none}.map-breadcrumbs a{min-height:36px;display:flex;align-items:center}.map-search input{font-size:12px}}
@media(max-width:380px){.library-grid{grid-template-columns:1fr}.map-stage{height:500px}.map-scope small{display:none}.map-search{max-width:145px}.map-search input{width:85px}.map-controls button{min-width:34px;width:34px}.map-controls i{margin:0 3px}}
@media(prefers-reduced-motion:reduce){.relationship-explorer *,.library-card{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.map-camera{will-change:auto}}
/* finesse · register=product · evergreen · force network · evidence inspector · native interaction */
.network-workspace .explorer-bar{min-height:65px}.map-location{display:flex;align-items:center;gap:10px;min-width:0;font-size:13px}.map-location>span{color:var(--map-accent);font-size:20px}.map-location strong{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-location small{font-size:10px;color:#a7bfa8;border-left:1px solid #9dbca42e;padding-left:12px;white-space:nowrap}.network-history{display:flex;gap:8px;flex:none}.network-history button{background:#d5e8bf08;border:1px solid #b4cf9e26;border-radius:7px;color:#bdd0b3;padding:7px 11px;min-height:34px;font-size:11px}.network-history button:hover{background:#d5e8bf18}.network-history button:disabled{opacity:.35;cursor:default}.network-workspace .map-stage{height:660px}.network-search-wrap{position:relative;z-index:9;width:320px;max-width:55%}.network-search-wrap .map-search{max-width:none;width:100%}.network-search-wrap input{flex:1;width:100%}.network-search-results{position:absolute;top:calc(100% + 7px);right:0;width:420px;max-width:min(90vw,460px);max-height:420px;overflow:auto;border:1px solid #87a37b99;border-radius:11px;background:#f0f4e9;box-shadow:0 16px 38px #07180d55;color:#284531}.network-search-results[hidden]{display:none}.network-search-results>button{display:flex;align-items:center;gap:11px;padding:13px;width:100%;background:transparent;border:0;border-bottom:1px solid #315a3520;text-align:left;color:inherit;min-height:56px}.network-search-results>button:hover,.network-search-results>button:focus-visible{background:#dce7ce}.search-kind{font-size:9px;background:#dfe9d4;border-radius:5px;padding:5px;min-width:35px;text-align:center;color:#526c47}.network-search-results button>span:nth-child(2){min-width:0;flex:1}.network-search-results strong{font-size:13px;font-weight:600}.network-search-results small{display:block;font-size:10px;line-height:1.7;color:#65735a;margin-top:3px}.network-search-results b{font-size:10px;white-space:nowrap;font-weight:550;color:#456532}.network-search-results>p{padding:18px;font-size:12px}.network-workspace .map-links path{pointer-events:stroke;cursor:pointer;stroke-width:1.1}.network-workspace .map-links path:hover{stroke:#dcf0b9;stroke-width:3;opacity:1}.network-workspace .map-node{transition:opacity .18s}.network-workspace .has-focus .map-node.is-related{opacity:1}.network-origin{fill:url(#map-root-fill);stroke:#dbe9ba}.network-workspace .is-anchor .node-orbit{stroke:#c6d99f66;stroke-dasharray:2 4}.node-expander{font:600 13px var(--mono);fill:#cfe2b5;paint-order:stroke;stroke:#10281f;stroke-width:4px;stroke-linejoin:round}.network-workspace .node-person .node-disc{fill:#214846;stroke:#82beb4}.network-workspace .node-company .node-disc{fill:#48402a;stroke:#bca470}.network-workspace .node-project .node-disc{fill:#2d4050;stroke:#9bb9cb}.network-workspace .node-news .node-disc{fill:#43413a;stroke:#b7b29d}.network-workspace .node-fileperson .node-disc{fill:#384737;stroke:#9daa8a;stroke-dasharray:3 2}.network-workspace .is-expanded .node-orbit{stroke:#c2db8b66}.network-far .node-name{opacity:.45}.network-far .map-node.is-focused .node-name,.network-far .map-node.is-anchor .node-name{opacity:1}.network-hint{position:absolute;bottom:23px;right:19px;max-width:290px;font-size:10px;line-height:1.7;color:#98b1a0;pointer-events:none}.network-detail{position:absolute;z-index:6;right:13px;top:13px;bottom:73px;width:272px;max-width:calc(100% - 26px);overflow:auto;border:1px solid #b3cba452;background:#1d392af5;border-radius:12px;box-shadow:0 14px 35px #07190f55;padding:16px;color:#dbe8d0;scrollbar-width:thin}.network-detail[hidden]{display:none}.network-detail-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;color:#b5cba8;margin-bottom:12px}.network-detail-head button{height:30px;width:30px;font-size:20px;background:#b6cea913;border:0;border-radius:6px;color:#d3e1c7}.network-detail h3{font-size:21px;line-height:1.45;font-weight:550;margin:0 0 13px;overflow-wrap:anywhere}.network-detail>p{font-size:11px;line-height:1.85;color:#b8cdb0;overflow-wrap:anywhere}.network-detail-description{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:7;overflow:hidden}.network-detail-actions{display:flex;gap:7px;flex-wrap:wrap;margin:17px 0 12px}.network-detail-actions button,.network-load-more{padding:8px 10px;border:1px solid #c1da9f44;color:#dfebcf;background:#b7d29315;font-size:11px;border-radius:6px;min-height:34px}.network-detail-actions button:hover,.network-load-more:hover{background:#b7d29330}.network-detail-actions button:disabled{opacity:.5}.network-load-more{width:100%;margin-bottom:12px;border-style:dashed}.network-detail-links{display:flex;flex-wrap:wrap;gap:10px;margin:13px 0;padding-bottom:12px;border-bottom:1px solid #aec79c26}.network-detail a{font-size:11px;color:#d2e6ac;line-height:1.8}.network-detail a:hover{text-decoration:underline}.network-detail> a{display:inline-block;margin-top:15px}.network-relations h4{font-size:11px;font-weight:500;margin:13px 0 7px;color:#c3d6b4}.network-relations h4 small{margin-left:7px;color:#9bb18f}.network-relations>button{display:grid;grid-template-columns:1fr auto;gap:4px 8px;border:0;border-top:1px solid #b3cda31c;padding:10px 0;background:transparent;color:#d9e8cc;text-align:left;width:100%;min-height:45px}.network-relations button>span{font-size:9px;color:#9fb893}.network-relations button>strong{font-size:11px;font-weight:450;grid-column:1;line-height:1.6}.network-relations button>b{grid-row:1/3;grid-column:2;align-self:center;font-size:12px;font-weight:400;color:#bed899}.network-empty-relations{border:1px dashed #9bb78e40;padding:10px;border-radius:6px}.network-notice{position:absolute;bottom:76px;left:14px;z-index:7;padding:11px 15px;border:1px solid #bdd59f44;background:#294333;color:#dfebcc;border-radius:9px;font-size:11px;max-width:calc(100% - 28px)}.network-notice[hidden]{display:none}.network-legend{display:flex;gap:15px;flex-wrap:wrap}.network-legend span{font-size:10px;color:#abc2a4}.network-legend span:nth-child(2){color:#a0c9bf}.network-legend span:nth-child(3){color:#c6b48b}.network-legend span:nth-child(4){color:#b4c7d0}.network-workspace .map-node-list{z-index:8}.network-workspace:fullscreen .map-stage,.network-workspace.map-expanded .map-stage{height:auto;flex:1}
@media(max-width:760px){.network-workspace .map-stage{height:570px}.map-location small{display:none}.map-location{font-size:12px}.network-history button{padding:6px 9px;font-size:10px;min-height:38px}.network-history button>span{display:none}.network-search-wrap{width:250px;max-width:62%}.network-search-wrap .map-search input{width:100%;font-size:11px;min-height:39px}.network-search-wrap .map-search button{height:39px}.network-search-results{width:355px;max-height:350px}.network-workspace .map-scope>strong{display:none}.network-workspace .network-count{font-size:9px;display:block;max-width:110px;line-height:1.6}.network-detail{top:auto;bottom:74px;width:310px;max-height:250px;padding:13px}.network-detail h3{font-size:18px;margin-bottom:9px}.network-detail-head{margin-bottom:4px}.network-detail-description{-webkit-line-clamp:3}.network-detail-actions{margin:12px 0}.network-detail-actions button{min-height:40px}.network-detail-head button{height:36px;width:36px}.network-hint{max-width:135px;bottom:24px;font-size:9px;right:13px}.network-legend{gap:6px 10px}.network-legend span{font-size:9px}.network-workspace .explorer-foot>.map-gesture{font-size:9px;max-width:125px;text-align:right}.network-workspace .map-stage .map-tooltip{display:none}}
@media(max-width:380px){.network-workspace .map-stage{height:530px}.network-search-wrap{max-width:64%}.network-workspace .map-scope small{display:block}.network-hint{display:none}.network-location{max-width:150px}}
@media(prefers-reduced-motion:reduce){.network-workspace *{transition:none!important;animation:none!important}}
.network-workspace .explorer-tools{z-index:12}.network-workspace .explorer-bar{position:relative;z-index:13}
.network-compact-labels:not(.all-labels) .map-node.is-leaf:not(.is-focused):not(.is-selected):not(.is-label-priority) .node-name{opacity:0;pointer-events:none}.network-workspace .map-node.is-hub .node-name{font-weight:600}.network-workspace .map-node.is-hub .node-orbit{stroke-width:1.5}.map-controls [data-map-control="labels"]{font-size:13px}.map-controls [aria-pressed="true"]{background:#cce0ac28;color:#e5efce}.network-detail .network-detail-links a{min-height:28px;display:flex;align-items:center}
@media(max-width:760px){.network-workspace .map-controls{gap:0}.network-workspace .map-controls button{min-width:32px;width:32px}.network-workspace .map-controls output{width:31px}.network-hint{display:none}}
.network-compact-labels:not(.all-labels) .map-node.is-label-priority .node-name{opacity:1}
