:root{--ink:#243d38;--muted:#657b70;--forest:#315e50;--border:#d9e2d9;--paper:#f5f5ee;--orange:#b86746}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font:14px/1.5 "PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:#e9eee7}.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:#f9faf5;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-weight:700;font-size:15px}.brand-mark{display:grid;place-items:center;background:#234b3e;color:#fff;width:29px;height:29px;border-radius:7px;font-family:serif}.brand small{color:#8a9a8f;font-weight:400}.top-actions{display:flex;gap:18px;align-items:center}.top-actions a,.top-actions button{color:#5c7368;font:inherit;font-size:12px;background:none;border:0;text-decoration:none;cursor:pointer}.shell{height:calc(100% - 56px);display:grid;grid-template-columns:250px 1fr}.sidebar{background:#fafbf7;border-right:1px solid var(--border);padding:24px 18px 16px;overflow-y:auto}.eyebrow{font:700 10px/1.4 Georgia,serif;letter-spacing:.17em;color:#b36d4d}.intro h1{font:600 25px/1.35 "Songti SC",serif;margin:10px 0 8px;letter-spacing:.04em}.intro h1 span{color:#bc7653}.intro p,.source-note{color:#7b8c80;font-size:12px;margin:0}.search-wrap{position:relative;margin:23px 0}.search-wrap label,.side-title{display:block;font-size:11px;font-weight:700;color:#6f8176;margin-bottom:7px}.search-wrap input{border:1px solid #d7e0d8;background:#fff;width:100%;padding:10px;border-radius:5px;font:inherit;font-size:12px;outline-color:#699080}.search-results{position:absolute;z-index:5;top:64px;left:0;right:0;max-height:330px;overflow:auto;background:white;border:1px solid #cedbd0;box-shadow:0 8px 20px #17372a1c}.search-results button{display:block;border:0;border-bottom:1px solid #edf1ec;background:white;text-align:left;padding:9px;width:100%;color:var(--ink);cursor:pointer}.search-results button:hover{background:#edf4ed}.search-results small{display:block;color:#809185}.side-title{display:flex;justify-content:space-between;align-items:center}.side-title button{border:0;background:none;color:#739084;font-size:11px;cursor:pointer}.book-list{display:grid;gap:5px}.book-list button{display:flex;align-items:center;gap:9px;border:0;background:none;color:#50685a;border-radius:5px;text-align:left;padding:9px 8px;font:inherit;cursor:pointer}.book-list button.active{background:#e8f0e7;color:#254c3e;font-weight:700}.book-list button i{width:8px;height:8px;background:var(--color);border-radius:50%}.book-list small{margin-left:auto;color:#9aaba0;font-weight:400}.legend{display:grid;gap:7px;border-top:1px solid #e5ebe4;padding-top:16px;margin-top:20px;font-size:11px;color:#7b8d80}.legend b{color:#526b5d}.line{display:inline-block;vertical-align:middle;width:22px;border-top:2px solid #809a8b;margin-right:7px}.line.dashed{border-top:2px dashed #b77656}.source-note{font-size:11px;line-height:1.7;margin-top:20px}.workspace{min-width:0;min-height:0;display:flex;flex-direction:column}.workspace-head{background:#f9faf5;padding:17px 26px 14px;display:flex;justify-content:space-between;align-items:center}.crumb{font-size:11px;color:#89998d}.crumb span{padding:0 5px;color:#bcc7bc}.workspace-head h2{font:600 22px/1.4 "Songti SC",serif;margin:4px 0 2px}.workspace-head p{margin:0;font-size:12px;color:#839387}.back{border:1px solid #d5e0d6;background:white;border-radius:4px;padding:8px 12px;color:#4a6b59;cursor:pointer}.canvas-wrap{position:relative;flex:1;min-height:0;overflow:hidden;background:#f1f4ed}#map{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#map.dragging{cursor:grabbing}.canvas-hint{position:absolute;left:18px;top:14px;background:#fbfcf6de;color:#839487;font-size:11px;padding:6px 9px;border-radius:3px;pointer-events:none}.zoom{position:absolute;right:17px;bottom:16px;display:flex;gap:1px;box-shadow:0 3px 12px #3453441a}.zoom button{border:1px solid #d5e0d5;background:#fff;color:#4c6d5b;height:32px;min-width:33px;cursor:pointer}.zoom button:last-child{font-size:11px}.bottom-bar{background:#f9faf5;border-top:1px solid #dbe4da;padding:8px 23px;display:flex;justify-content:space-between;font-size:11px;color:#829287}.detail{position:absolute;right:16px;top:16px;width:min(300px,calc(100% - 32px));max-height:calc(100% - 75px);overflow:auto;background:#fffffb;border:1px solid #d9e4d9;box-shadow:0 12px 35px #2b493723;border-radius:7px;padding:17px;z-index:2}.detail .close{float:right;border:0;background:none;font-size:20px;color:#94a499;cursor:pointer}.detail .tag{font-size:10px;color:#ab6e50;letter-spacing:.08em}.detail h3{font-size:17px;margin:8px 0}.detail p,.detail li{font-size:12px;color:#64796c;line-height:1.7}.detail ul{padding-left:18px}.detail a,.detail button.nav{display:inline-block;color:#305f4a;background:#edf3eb;border:0;padding:7px 10px;text-decoration:none;border-radius:3px;cursor:pointer;font-size:12px}.detail .related{border-top:1px solid #e5ede3;padding-top:10px}.detail .related button{display:block;text-align:left;margin:5px 0}.dialog{position:fixed;inset:0;background:#1e392e88;z-index:10;display:grid;place-items:center;padding:20px}.dialog[hidden],.detail[hidden]{display:none}.dialog-card{position:relative;background:#fffef9;max-width:480px;padding:25px;border-radius:6px}.dialog-card h2{font-family:serif}.dialog-card p{font-size:13px;line-height:1.8;color:#63776a}.dialog-card>button{float:right;border:0;background:none;font-size:22px;cursor:pointer}.node{cursor:pointer;outline:none}.node rect{transition:stroke .15s,filter .15s}.node:hover rect,.node:focus rect{stroke:#4d8067;stroke-width:2;filter:drop-shadow(0 3px 5px #31513b25)}.node text{pointer-events:none}.edge{fill:none;stroke:#a7bcae;stroke-width:2}.relation{fill:none;stroke:#c58567;stroke-width:2;stroke-dasharray:7 6}.edge-label{font:11px "PingFang SC",sans-serif;fill:#a0654b;paint-order:stroke;stroke:#f1f4ed;stroke-width:5;stroke-linejoin:round}.book-label{font:700 12px "PingFang SC",sans-serif;letter-spacing:.08em}.chapter-text{font:600 15px "PingFang SC",sans-serif;fill:#294c3e}.chapter-meta{font:11px "PingFang SC",sans-serif;fill:#8b9e90}.section-text{font:600 14px "PingFang SC",sans-serif;fill:#2f5142}.point-text{font:12px "PingFang SC",sans-serif;fill:#526b5e}.node-small{font:10px "PingFang SC",sans-serif;fill:#91a294}@media(max-width:750px){.shell{display:flex;flex-direction:column}.sidebar{padding:10px 14px;overflow:visible}.intro,.legend,.source-note,.side-title{display:none}.search-wrap{margin:0 0 7px}.search-wrap label{display:none}.search-results{top:37px}.book-list{display:flex;overflow-x:auto;gap:4px}.book-list button{white-space:nowrap;font-size:11px;padding:5px 8px}.book-list small{display:none}.workspace{flex:1}.workspace-head{padding:10px 15px}.workspace-head h2{font-size:18px}.workspace-head p{display:none}.bottom-bar span:last-child{display:none}.topbar{height:48px;padding:0 14px}.shell{height:calc(100% - 48px)}.canvas-hint{top:8px;left:8px;font-size:10px}.detail{top:9px;right:9px}.zoom{right:9px;bottom:9px}}
.view-actions{display:flex;gap:8px}.all-books{display:none!important}@media(max-width:750px){.all-books{display:flex!important}.detail{top:auto;bottom:52px;max-height:55%;width:calc(100% - 18px)}}
.relation-group{cursor:pointer}.relation-group:hover .relation,.relation-group:focus .relation{stroke:#8e432b;stroke-width:4}.relation-group .edge-label{font-size:13px;pointer-events:all}
.function-entry{width:100%;display:grid;text-align:left;border:1px solid #b7d0bc;border-left:3px solid #b86746;background:#eef5ed;color:#315e50;padding:10px 11px;margin:-6px 0 20px;border-radius:4px;cursor:pointer}.function-entry strong{font-size:13px}.function-entry small{font-size:11px;color:#758b7c;margin-top:2px}.function-entry:hover,.function-entry:focus{background:#e3efe1}.function-column{font:700 12px "PingFang SC",sans-serif;letter-spacing:.04em;fill:#6f8678}.function-node rect{fill:#fffef9;stroke:#b4caba;stroke-width:1.5}.function-node.selected rect{fill:#315e50;stroke:#315e50}.function-node.selected .function-title{fill:#fff}.function-node.selected .function-meta{fill:#c1d8c9}.function-node.muted{opacity:.48}.function-title{font:600 15px "PingFang SC",sans-serif;fill:#294c3e}.function-meta{font:10px "PingFang SC",sans-serif;fill:#829688}.function-edge{cursor:pointer}.function-edge path{fill:none;stroke:#b67555;stroke-width:2.3}.function-edge:hover path,.function-edge:focus path{stroke:#803d26;stroke-width:4}.function-edge text{font:11px "PingFang SC",sans-serif;fill:#925c40;text-anchor:middle;paint-order:stroke;stroke:#f1f4ed;stroke-width:6;stroke-linejoin:round}.function-edge path{pointer-events:stroke}@media(max-width:750px){.function-entry{display:flex;gap:8px;align-items:center;margin:0 0 7px;padding:5px 8px}.function-entry small{margin:0}.function-column{font-size:13px}}
.function-edge path{marker-end:url(#arrow)}
