.page-graph{height:100vh;overflow:hidden}.graph-main{display:grid;grid-template-columns:220px 1fr 320px;height:calc(100vh - 64px);gap:0}.graph-controls{background:var(--bg-elev, #11141b);border-right:1px solid var(--border, #1f2937);overflow-y:auto;padding:16px;font-size:13px}.ctrl-block{margin-bottom:24px}.ctrl-block h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #98a0ad);margin:0 0 8px}.filter-list{list-style:none;padding:0;margin:0}.filter-list li{display:flex;align-items:center;gap:8px;padding:4px 0}.filter-list label{display:flex;align-items:center;gap:8px;cursor:pointer}.filter-list .swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.ctrl-block button{display:block;width:100%;padding:6px 10px;margin-top:8px;background:var(--bg, #0c0e13);border:1px solid var(--border, #1f2937);color:inherit;cursor:pointer;border-radius:4px}.ctrl-block button:hover{background:var(--surface-3, #1a1f2a)}.graph-canvas-wrap{position:relative;background:var(--bg, #0c0e13);overflow:hidden}.graph-canvas{width:100%;height:100%}.graph-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted, #98a0ad);font-size:14px;pointer-events:none;z-index:1}.graph-empty[hidden]{display:none!important}.graph-panel{background:var(--bg-elev, #11141b);border-left:1px solid var(--border, #1f2937);overflow-y:auto;padding:0}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border, #1f2937)}.panel-head h2{margin:0;font-size:14px;word-break:break-word}.panel-head button{background:transparent;border:0;color:inherit;cursor:pointer;font-size:22px;line-height:1;padding:0 4px}.panel-body{padding:16px}.panel-body h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #98a0ad);margin:16px 0 8px}.panel-props{margin:0;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:12px}.panel-props dt{color:var(--muted, #98a0ad)}.panel-props dd{margin:0;word-break:break-word}.panel-chip{display:inline-block;padding:1px 7px;margin:1px 0;background:#6aa1ff1f;color:var(--accent, #6aa1ff);border-radius:9999px;font-size:11px;line-height:1.5;border:1px solid rgba(106,161,255,.3)}.panel-metric{display:inline-block;padding:1px 7px;margin-right:6px;background:var(--surface-2, #131a26);color:var(--muted, #c4cad6);border-radius:9999px;font-size:11px;line-height:1.5;font-variant-numeric:tabular-nums}.panel-link{color:var(--accent, #6aa1ff);text-decoration:underline;text-underline-offset:2px;word-break:break-all}.panel-neighbours,.panel-edges{list-style:none;padding:0;margin:0;font-size:12px}.panel-neighbours li,.panel-edges li{padding:4px 0;border-bottom:1px dashed var(--border, #1f2937);cursor:pointer}.panel-neighbours li:hover{color:var(--accent, #6aa1ff)}.panel-post-body{margin:6px 0 12px}.panel-post-body-text{margin:0;padding:8px 12px;border-left:2px solid var(--border, #1f2937);background:var(--surface-2, #131a26);font-size:12px;line-height:1.45;color:var(--text, #e7eaf0);white-space:pre-wrap;word-break:break-word}.panel-comment{margin:6px 0 12px;border:1px solid var(--border, #1f2937);border-radius:6px;padding:8px 10px;background:var(--surface-2, #131a26)}.panel-comment-head{display:flex;gap:8px;align-items:center;margin-bottom:6px;font-size:11px}.panel-comment-author{font-weight:600;color:var(--accent, #6aa1ff)}.panel-comment-ts{color:var(--muted, #98a0ad);font-variant-numeric:tabular-nums}.panel-comment-body{margin:0;font-size:12px;line-height:1.45;color:var(--text, #e7eaf0);white-space:pre-wrap;word-break:break-word}.panel-comment-truncated{color:var(--muted, #98a0ad);font-style:italic}
