/* The graph shares the site's paper, ink and vermilion palette. */
.kg{background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:2px;overflow:hidden;min-width:0}
.kg-heading{padding:32px 30px 20px;display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.kg-eyebrow{font-size:10px;letter-spacing:2px;color:var(--green);font-weight:650}
.kg h2{font:600 34px/1.4 'Songti SC','Noto Serif CJK SC',serif;margin:14px 0 4px;color:var(--ink)}
.kg h2 span{display:block;font:400 13px/1.8 'DM Sans','Noto Sans SC',system-ui,sans-serif;color:var(--muted);margin-top:10px;letter-spacing:0}
.kg-badge{display:inline-block;border:1px solid var(--line);background:var(--cream);color:#655744;font-size:11px;padding:7px 10px;border-radius:2px;white-space:nowrap}
.kg-toolbar{display:flex;gap:14px;align-items:flex-end;padding:12px 30px 26px;flex-wrap:wrap}
.kg label{font-size:12px;color:var(--muted);display:block}
.kg select,.kg input{display:block;border:1px solid #bcb6a6;background:var(--card);color:var(--ink);border-radius:2px;padding:11px 12px;margin-top:8px;max-width:100%;font:inherit;font-size:13px;width:100%;box-sizing:border-box}
.kg-toolbar>label:first-child{flex:0 1 190px}.kg-search{flex:1 1 180px}
.kg button{cursor:pointer;font:inherit}
.kg-toolbar>button,.kg-controls button{border:1px solid #bcb6a6;border-radius:2px;color:#354236;background:var(--card);padding:11px 16px;font-size:13px}
.kg button:hover{background:#eee8da}.kg-layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;border-top:1px solid var(--line);min-width:0}
.kg-stage{position:relative;min-width:0;background:radial-gradient(#b9b09a55 .8px,transparent .8px) var(--cream);background-size:22px 22px;overflow:hidden;min-height:500px}
.kg-canvas{display:block;width:100%;height:560px;touch-action:none;cursor:grab}.kg-canvas:active{cursor:grabbing}
.kg-legend{position:absolute;top:20px;left:20px;display:flex;gap:16px;pointer-events:none;font-size:11px;color:#655f50}
.kg-legend span:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--dot);margin-right:6px}
.kg-edge{stroke:#798575;stroke-width:1;opacity:.35}.kg-edge.is-active{stroke:#b6412d;stroke-width:2;opacity:.8}.kg-edge.is-dimmed{opacity:.08}
.kg-node{cursor:pointer;outline:none;transition:opacity .15s}.kg-halo{fill:var(--node);opacity:.08}.kg-core{fill:var(--node);stroke:var(--card);stroke-width:2}
.kg-node text{font-size:14px;fill:#354236;paint-order:stroke;stroke:var(--cream);stroke-width:4px;stroke-linejoin:round;pointer-events:none}
.kg-work text{font:600 18px 'Songti SC','Noto Serif CJK SC',serif;fill:#344d41}
.kg-node:focus .kg-halo,.kg-node:hover .kg-halo,.kg-node.is-selected .kg-halo{opacity:.25;stroke:var(--node);stroke-width:1}
.kg-node.is-selected text{fill:#922f21;font-weight:700}.kg-node.is-dimmed{opacity:.23}
.kg-controls{position:absolute;bottom:18px;right:16px;display:flex;gap:6px}.kg-controls button{padding:9px 12px;min-width:38px;min-height:38px}
.kg-hint{position:absolute;bottom:25px;left:20px;font-size:11px;color:#706e61;margin:0;pointer-events:none}
.kg-detail{padding:26px 24px;border-left:1px solid var(--line);background:var(--card);min-width:0;max-height:560px;overflow:auto}
.kg-detail h3{font:600 25px/1.5 'Songti SC','Noto Serif CJK SC',serif;margin:12px 0;color:var(--ink);overflow-wrap:anywhere}
.kg-detail p{color:var(--muted);font-size:13px;line-height:1.9}.kg-detail h4{margin-top:26px;font-size:13px;color:#655744}
.kg-open{display:block;background:var(--green);color:#fffdf7!important;border-radius:2px;padding:13px 14px;margin-top:20px;font-size:13px;font-weight:600}.kg-open:hover{background:#943727}
.kg-neighbors{display:grid;gap:8px}.kg-neighbors button{padding:13px;border:1px solid var(--line);background:var(--cream);color:var(--ink);border-radius:2px;text-align:left;overflow-wrap:anywhere}
.kg-neighbors small{display:block;font-size:10px;color:var(--muted);margin-bottom:6px}.kg-neighbors span{font-size:13px}
.kg-key{border-top:1px solid var(--line);margin-top:26px;padding-top:20px;font-size:12px;color:#655744}.kg-picker{margin-top:25px}
.kg-foot{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 24px;font-size:11px;color:var(--muted)}
.kg-empty{position:absolute;top:45%;left:8%;right:8%;text-align:center;color:var(--muted);font-size:13px}.kg-empty[hidden]{display:none}
.kg :focus-visible{outline:2px solid var(--green);outline-offset:3px}.admin-layout>div{min-width:0}
.kg-canvas.is-dense .kg-node:not(.kg-work) text{opacity:0}.kg-canvas.is-dense .kg-node:hover text,.kg-canvas.is-dense .kg-node:focus text,.kg-canvas.is-dense .kg-node.is-selected text{opacity:1;font-size:17px}
@media(max-width:1000px){.kg-layout{grid-template-columns:minmax(0,1fr) 230px}.kg-detail{padding:24px 18px}.kg-hint{bottom:70px}}
@media(max-width:850px){.kg-layout{grid-template-columns:1fr}.kg-detail{border-left:0;border-top:1px solid var(--line);max-height:360px}.kg-canvas{height:460px}.kg-stage{min-height:460px}.kg-neighbors{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}
@media(max-width:480px){.kg-heading{padding:22px 20px;display:block}.kg h2{font-size:28px}.kg-heading>.kg-badge{margin-top:12px}.kg-toolbar{padding:0 20px 20px}.kg-canvas{height:390px}.kg-stage{min-height:390px}.kg-hint{font-size:10px;left:12px}.kg-legend{left:12px;gap:12px}.kg-foot{padding:14px}.kg-detail{padding:20px}.kg-toolbar>label:first-child{flex:1 1 100%}}
@media(max-width:480px){.kg-node text{font-size:32px;stroke-width:7px}.kg-work text{font-size:40px}.kg-article text{opacity:0}.kg-article:hover text,.kg-article:focus text,.kg-article.is-selected text{opacity:1}.kg-canvas.is-dense .kg-node:hover text,.kg-canvas.is-dense .kg-node:focus text,.kg-canvas.is-dense .kg-node.is-selected text{font-size:32px}.kg-node .kg-halo{r:42px}}
@media(prefers-reduced-motion:reduce){.kg-node{transition:none}}
.kg-search-results{padding:0 30px 22px}.kg-search-results[hidden]{display:none}.kg-search-results p{font-size:12px;color:var(--muted);margin-top:0}.kg-search-results>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-height:240px;overflow:auto}
.kg-search-results button{display:flex;flex-direction:column;gap:7px;text-align:left;border:1px solid var(--line);background:var(--cream);padding:13px;color:var(--ink);min-width:0}.kg-search-results small{font-size:11px;color:var(--muted)}.kg-search-results strong{font-size:14px;overflow-wrap:anywhere}
.kg-view-tools{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:0 30px 20px;font-size:12px;color:var(--muted)}.kg-view-tools>div{display:flex}.kg-view-tools button{padding:10px 14px;background:var(--card);border:1px solid var(--line);color:var(--ink);min-height:44px}.kg-view-tools button[aria-pressed=true]{background:#b6412d;color:#fffdf7;border-color:#b6412d}.kg-view-tools button:disabled{opacity:.55;cursor:default}
.kg-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:22px;max-height:560px;overflow:auto;min-height:200px;align-content:start}.kg-list button{display:flex;flex-direction:column;gap:8px;text-align:left;padding:18px;background:var(--card);border:1px solid var(--line);color:var(--ink);min-width:0}.kg-list button[aria-pressed=true]{border-color:#b6412d;background:#f4e8dc}.kg-list small,.kg-list span{font-size:12px}.kg-list span{color:var(--muted)}.kg-list strong{font:600 20px/1.5 'Songti SC',serif;overflow-wrap:anywhere}
.kg-canvas[hidden],.kg-list[hidden],.kg-controls[hidden],.kg-hint[hidden],.kg-legend[hidden]{display:none}.kg-canvas.is-focused:not(.is-dense) .kg-node text{opacity:1;font-size:19px}
@media(max-width:560px){.kg-search-results{padding:0 20px 20px}.kg-search-results>div{grid-template-columns:1fr;max-height:240px}.kg-view-tools{padding:0 20px 20px;gap:10px}.kg-view-tools>span{flex-basis:100%}.kg-list{grid-template-columns:1fr;padding:16px;max-height:390px}.kg-canvas.is-focused:not(.is-dense) .kg-node text{font-size:32px}.kg-canvas.is-focused .kg-article text{opacity:1}}
@media(max-width:560px){.kg-heading{padding:18px 20px}.kg h2{font-size:26px;margin:10px 0 4px}.kg h2 span{font-size:12px;margin-top:6px}.kg-toolbar{display:grid;grid-template-columns:105px minmax(0,1fr);gap:10px}.kg-toolbar>button{grid-column:1 / -1;justify-self:end;padding:8px 12px}.kg-search-results>div{grid-template-columns:repeat(2,minmax(0,1fr))}.kg-search-results button{padding:10px}.kg-search-results strong{font-size:13px}.kg-search-results small{font-size:10px}}
