:root{--paper:#f4efe6;--paper-deep:#ece6d8;--ink:#1a1814;--ink-soft:#4a463d;--ink-faint:#8a8478;--rule:#c8bfae;--rule-soft:#d8d0bf;--accent:#8b4513;--accent-soft:#c19a6b;--highlight:#ffd966;--serif:"Iowan Old Style", "Palatino Linotype", "Book Antiqua", Palatino, "URW Palladio L", "Liberation Serif", Georgia, serif;--mono:"JetBrains Mono", "SF Mono", "Menlo", "Consolas", "Liberation Mono", monospace;--sans:"Inter Tight", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif}*{box-sizing:border-box}html,body{background:var(--paper);height:100%;color:var(--ink);font-family:var(--serif);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;padding:0;font-size:16px;line-height:1.55;overflow:hidden}#app{width:100vw;height:100vh;position:relative}#map{cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}#map:active{cursor:grabbing}#header{background:linear-gradient(180deg, var(--paper) 60%, #f4efe600);pointer-events:none;z-index:10;padding:18px 24px 14px;position:absolute;top:0;left:0;right:0}#header h1{font-family:var(--serif);letter-spacing:.01em;color:var(--ink);margin:0;font-size:22px;font-style:italic;font-weight:400}#header .sub{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);margin-top:2px;font-size:11px}#search-wrap{z-index:20;pointer-events:auto;gap:0;display:flex;position:absolute;top:20px;right:24px}#search-field{position:relative}#search{border:1px solid var(--rule);background:var(--paper-deep);width:280px;color:var(--ink);font-family:var(--serif);border-radius:0;outline:none;padding:8px 32px 8px 12px;font-size:14px;transition:border-color .12s}#search:focus{border-color:var(--ink)}#search::placeholder{color:var(--ink-faint);font-style:italic}#search-clear{width:28px;color:var(--ink-faint);font-family:var(--mono);cursor:pointer;background:0 0;border:none;padding:0;font-size:18px;line-height:1;transition:color .12s;position:absolute;top:0;bottom:0;right:0}#search-clear:hover{color:var(--ink)}#search-clear.hidden{display:none}#focus-toggle{border:1px solid var(--rule);background:var(--paper-deep);color:var(--ink-faint);font-family:var(--mono);letter-spacing:.14em;cursor:pointer;border-left:none;padding:0 12px;font-size:10px;transition:all .12s}#focus-toggle:hover{color:var(--ink);border-color:var(--ink)}#focus-toggle.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.node.query-match circle{stroke:var(--accent);stroke-width:2.5px}.node.query-match text{opacity:1;fill:var(--accent)}.node.query-dim circle{opacity:.18}.node.query-dim text{opacity:0}.edge.query-dim{opacity:.04!important}#suggest{background:var(--paper);border:1px solid var(--rule);border-top:none;width:280px;max-height:320px;display:none;position:absolute;top:100%;left:0;overflow-y:auto}#suggest .row{cursor:pointer;border-bottom:1px solid var(--rule-soft);align-items:baseline;gap:8px;padding:6px 12px;font-size:14px;display:flex}#suggest .row:hover{background:var(--paper-deep)}#suggest .row .num{font-family:var(--mono);color:var(--ink-faint);min-width:32px;font-size:11px}#legend{z-index:10;pointer-events:auto;font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);gap:32px;font-size:10px;display:flex;position:absolute;bottom:20px;left:24px}#legend .group-label{color:var(--ink-soft);align-items:center;gap:8px;margin-bottom:4px;display:flex}#legend .row{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;margin-top:6px;display:flex}#legend .swatch{background:var(--ink);width:18px;height:2px}#legend .swatch.dot{border-radius:50%;width:8px;height:8px}#legend .swatch.inline{opacity:.25}#legend .swatch.mention{opacity:.12;border-top:1px dashed var(--ink);background:0 0;height:0}#legend .row.off .label{color:var(--ink-faint);text-decoration:line-through}#legend .row.off .swatch{opacity:.1}#legend .mode-toggle{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;background:var(--paper-deep);border:1px solid var(--rule);color:var(--ink-soft);cursor:pointer;padding:2px 6px;font-size:9px}#legend .mode-toggle:hover{border-color:var(--ink);color:var(--ink)}.hull-shape{fill:var(--ink);fill-opacity:.05;stroke:var(--ink-soft);stroke-width:.8px;stroke-opacity:.35;pointer-events:all;cursor:default;transition:fill-opacity 60ms,stroke-opacity 60ms,stroke-width 60ms}.hull:hover .hull-shape{fill-opacity:.11;stroke-opacity:.75;stroke-width:1.2px}.hull-label-halo{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;fill:none;stroke:var(--paper);stroke-width:4px;stroke-linejoin:round;paint-order:stroke;text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.95;font-size:9px}.hull-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;fill:var(--ink-faint);text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:9px;transition:fill 50ms,font-weight 50ms}.hull-label-group.active .hull-label{fill:var(--ink);font-weight:700}.hull-abstract{opacity:0;pointer-events:none;transition:opacity 50ms}.hull-label-group.active .hull-abstract{opacity:1;pointer-events:all}.hull-abstract-halo{font-family:var(--serif);fill:none;stroke:var(--paper);stroke-width:4px;stroke-linejoin:round;paint-order:stroke;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;font-style:italic;line-height:1.3}.hull-abstract-text{font-family:var(--serif);fill:var(--ink-soft);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:11px;font-style:italic;line-height:1.3}.section-label-group{cursor:default;pointer-events:all}.section-label-halo{font-family:var(--serif);fill:none;stroke:var(--paper);stroke-width:8px;stroke-linejoin:round;paint-order:stroke;text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:28px;font-style:italic;font-weight:400}.section-label{font-family:var(--serif);fill:var(--ink-soft);text-anchor:middle;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:28px;font-style:italic;font-weight:400;transition:fill 50ms}.section-label-group.active .section-label{fill:var(--ink)}.section-intro{opacity:0;pointer-events:none;transition:opacity 50ms}.section-label-group.active .section-intro{opacity:1;pointer-events:all}.section-intro-halo{font-family:var(--serif);fill:none;stroke:var(--paper);stroke-width:4px;stroke-linejoin:round;paint-order:stroke;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:12px;line-height:1.4}.section-intro-text{font-family:var(--serif);fill:var(--ink-soft);pointer-events:none;-webkit-user-select:none;user-select:none;font-size:12px;line-height:1.4}.edge{fill:none;pointer-events:none;transition:stroke .12s,stroke-width .12s,opacity .12s}.edge.trail{stroke:var(--ink-faint);stroke-width:.5px;opacity:.22}.edge.inline{stroke:var(--ink-faint);stroke-width:.4px;opacity:.06}.edge.mention{stroke:var(--ink-faint);stroke-width:.4px;opacity:.05;stroke-dasharray:2 2}.edge.hull-active{stroke:var(--ink-soft)!important;stroke-width:.9px!important;opacity:.55!important}.edge.hover-edge{stroke:var(--accent)!important;stroke-width:1.2px!important;opacity:.7!important;stroke-dasharray:none!important}.node circle{cursor:pointer;stroke:var(--paper);stroke-width:.5px;transition:r .1s}.node text{font-family:var(--mono);fill:var(--ink-faint);pointer-events:none;-webkit-user-select:none;user-select:none;text-anchor:middle;opacity:0;font-size:8px;transition:opacity .1s}.node:hover circle{stroke:var(--ink);stroke-width:1.5px}.node:hover text{opacity:1;fill:var(--ink)}.node.dimmed{opacity:.15}.node.selected text{opacity:1;fill:var(--ink);font-size:10px;font-weight:700}.node-halo{fill:none;stroke:var(--accent);stroke-width:2px;pointer-events:none;opacity:0;transition:opacity .12s}.node-halo.outer{stroke-width:1px;opacity:0}.node.selected .node-halo{opacity:1}.node.selected .node-halo.outer{opacity:.35}.node.neighbor circle{stroke:var(--ink);stroke-width:1.5px}.node.neighbor text{opacity:1;fill:var(--ink)}.node.tagged circle{stroke:var(--accent);stroke-width:2px}.node.selected.tagged .node-halo{stroke:var(--accent)}.edge.selected-edge{stroke:var(--accent)!important;stroke-width:1.6px!important;opacity:.9!important;stroke-dasharray:none!important}#panel{background:var(--paper);border-left:1px solid var(--rule);z-index:30;width:460px;padding:28px 32px 80px;transition:transform .18s;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-8px 0 24px #1a18140f}#panel.open{transform:translate(0)}#panel .close{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:11px;position:absolute;top:16px;right:20px}#panel .close:hover{color:var(--ink)}#panel .meta-strip{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);flex-wrap:wrap;align-items:baseline;gap:0 6px;margin-bottom:6px;font-size:11px;display:flex}#panel .meta-strip .confidence-stars{letter-spacing:.06em;text-transform:none;vertical-align:baseline;gap:1px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}#panel h2{font-family:var(--serif);color:var(--ink);margin:0 0 4px;font-size:30px;font-weight:400;line-height:1.15}#panel .number-mark{font-family:var(--mono);color:var(--ink-faint);vertical-align:4px;margin-right:8px;font-size:14px}#panel .section-path{font-family:var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint);border-top:1px solid var(--rule);margin:16px 0 20px;padding-top:12px;font-size:10px}#panel .confidence-star--filled{color:#b33a2a}#panel .confidence-star--empty{color:var(--rule)}#panel img{background:var(--paper-deep);max-width:100%;margin:18px 0;display:block}#panel img.diagram{max-width:80%}#panel .label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint);margin:28px 0 8px;font-size:10px}#panel .body{color:var(--ink);font-size:15px;line-height:1.6}#panel .body p{margin:0 0 .9em}#panel .body a.pattern-ref{color:var(--accent);text-underline-offset:2px;text-decoration:underline;-webkit-text-decoration-color:var(--accent-soft);text-decoration-color:var(--accent-soft)}#panel .body a.pattern-ref:hover{color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}#panel .neighbors{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}#panel .pill{font-family:var(--serif);border:1px solid var(--rule);background:var(--paper);color:var(--ink);cursor:pointer;padding:4px 10px;font-size:13px;transition:all .1s}#panel .pill:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}#panel .pill .num{font-family:var(--mono);color:var(--ink-faint);margin-right:6px;font-size:10px}#panel .pill:hover .num{color:var(--accent-soft)}#panel .pill.trail{border-color:var(--ink-soft)}#panel .notes-section{border-top:1px solid var(--rule);margin-top:36px;padding-top:24px}#panel .tags{flex-wrap:wrap;gap:6px;margin:8px 0 16px;display:flex}#panel .tag{font-family:var(--mono);text-transform:uppercase;letter-spacing:.14em;border:1px solid var(--rule);background:var(--paper);color:var(--ink-soft);cursor:pointer;padding:3px 8px;font-size:10px;transition:all .1s}#panel .tag.active{background:var(--accent);color:var(--paper);border-color:var(--accent)}#panel .tag:hover{border-color:var(--ink)}#panel .tag.active:hover{background:var(--ink);border-color:var(--ink)}#panel textarea{border:1px solid var(--rule);background:var(--paper-deep);width:100%;min-height:120px;font-family:var(--serif);color:var(--ink);resize:vertical;outline:none;padding:10px 12px;font-size:14px;line-height:1.5}#panel textarea:focus{border-color:var(--accent)}#panel .save-state{font-family:var(--mono);text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);height:14px;margin-top:6px;font-size:10px}#tooltip{pointer-events:none;background:var(--ink);color:var(--paper);font-family:var(--mono);opacity:0;z-index:25;white-space:nowrap;padding:4px 8px;font-size:11px;transition:opacity 80ms;position:absolute;transform:translate(-50%,-120%)}#tooltip.show{opacity:1}#tooltip .num{color:var(--accent-soft);margin-right:6px}#loading{background:var(--paper);font-family:var(--mono);text-transform:uppercase;letter-spacing:.18em;color:var(--ink-faint);z-index:100;justify-content:center;align-items:center;font-size:11px;display:flex;position:absolute;inset:0}#loading.gone{display:none}
