:root{--paper:#f4efe6;--paper-deep:#ece6d8;--ink:#1a1814;--ink-soft:#4a463d;--ink-faint:#8a8478;--rule:#c8bfae;--rule-soft:#d8d0bf;--accent:#8b4513;--accent-soft:#c19a6b;--ref-inbound:#5c6b7a;--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}.map-root.query-active .node.query-match text{opacity:1;fill:var(--accent);font-size:9px;font-weight:600}.map-root.query-active .edge:not(.query-dim){stroke:var(--ink-soft)!important;stroke-width:.75px!important;opacity:.5!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 .swatch.outbound{background:var(--accent);opacity:.95;height:3px}#legend .swatch.inbound{background:var(--ref-inbound);opacity:.65;height:2px}#legend .row.selection-row{cursor:default}#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:.45px;opacity:.12}.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-outbound{stroke:var(--accent)!important;stroke-width:1.2px!important;opacity:.7!important;stroke-dasharray:none!important}.edge.hover-inbound{stroke:var(--ref-inbound)!important;stroke-width:.9px!important;opacity:.5!important;stroke-dasharray:none!important}.edge.selected-outbound{stroke:var(--accent)!important;stroke-width:1.75px!important;opacity:.95!important;stroke-dasharray:none!important}.edge.selected-inbound{stroke:var(--ref-inbound)!important;stroke-width:1px!important;opacity:.65!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)}#panel{background:var(--paper);border-left:1px solid var(--rule);z-index:30;width:460px;padding:0 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 .panel-head{z-index:2;background:var(--paper);margin:0 -32px 20px;padding:28px 72px 18px 32px;position:sticky;top:0}#panel .panel-head .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 .panel-head .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:14px 0 0;padding-top:12px;font-size:10px}#panel .confidence-star--filled{color:#b33a2a}#panel .confidence-star--empty{color:var(--rule)}#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 p.copyright-notice{color:var(--ink-soft);margin-top:1.2em;font-style:italic}#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 .body .smalla{font-variant:small-caps;letter-spacing:.04em;font-weight:500}#panel .body p i,#panel .body p em,#panel .body figcaption i,#panel .body figcaption em{font-style:italic}#panel .body p strong,#panel .body p.statement{font-weight:600}#panel .body hr.problem-refs-divider{border:none;border-top:1px solid var(--rule,#0003);width:40px;margin:1.25em auto;display:block}#panel .body figure.pattern-figure{text-align:center;margin:1em 0 1.2em}#panel .body figure.pattern-figure .figure-image{background:#fff;max-width:100%;height:auto;display:inline-block}#panel .body figure.pattern-figure .figure-slot{border:1px dashed var(--rule,#0000002e);min-width:88px;font-family:var(--mono);color:var(--ink-faint,var(--ink-soft));letter-spacing:.04em;vertical-align:middle;background:#00000006;margin:.2em;padding:1.2em .9em;font-size:11px;display:inline-block}#panel .body figure.pattern-figure figcaption{color:var(--ink-soft);margin-top:.5em;font-size:14px;font-style:italic;line-height:1.4}#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 .refs-section{border-top:1px solid var(--rule);margin-top:28px;padding-top:20px}#panel .refs-section .label:first-child{margin-top:0}#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}
