.network-container{--primary-color:#2563eb;--node-border:#e2e8f0e6;--node-border-hover:#3b82f6e6;--node-border-active:#2563eb;--node-accent-ring:#3b82f68c;--node-shadow:0 1px 3px #0f172a29;--text-color:#111827;--text-light:#6b7280;--card-bg:#fff;--border-color:#e5e7eb;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--spacing-xs:.25rem;--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;touch-action:none;-webkit-user-select:none;user-select:none;background:0 0;flex-direction:column;width:100%;height:100dvh;display:flex;position:relative;overflow:hidden}.control-panel{z-index:10;justify-content:center;align-items:center;display:flex}.visualization-area{flex:1;display:flex;position:relative;overflow:hidden}.network-graph{cursor:default;z-index:2;background:0 0;flex:1;position:relative}.graph-hover-status{z-index:120;pointer-events:auto;max-width:min(360px,100vw - 16px);font-family:var(--font-sans);text-align:left;-webkit-font-smoothing:antialiased;border-radius:16px;padding:0;position:fixed;top:0;left:0;overflow:visible;transform:none}.graph-hover-status--light{color:#111827f5;-webkit-backdrop-filter:saturate(140%)blur(14px);backdrop-filter:saturate(140%)blur(14px);background:#ffffffeb;border:1px solid #ffffff47;box-shadow:inset 0 1px #ffffff8c,inset 0 -1px #0f172a0d,0 12px 28px #070e1b2e}.graph-hover-status--dark{color:#f8fafcf2;-webkit-backdrop-filter:saturate(140%)blur(14px);backdrop-filter:saturate(140%)blur(14px);background:#1118278f;border:1px solid #ffffff3d;box-shadow:inset 0 1px #fff3,inset 0 -1px #ffffff0f,0 12px 28px #00000061}.graph-hover-panel{flex-direction:column;gap:8px;padding:12px 14px 11px;display:flex}.graph-hover-head{flex-direction:column;gap:3px;display:flex}.graph-hover-title{letter-spacing:.02em;font-size:.95rem;font-weight:700;line-height:1.25}.graph-hover-title-muted{color:#64748bf2;font-weight:600}.graph-hover-status--dark .graph-hover-title-muted{color:#94a3b8f2}.graph-hover-meta{color:#475569f2;font-size:.78rem;line-height:1.35}.graph-hover-status--dark .graph-hover-meta{color:#e2e8f0d1}.graph-hover-bio{color:#334155fa;word-break:break-word;margin:0;font-size:.8rem;line-height:1.45;overflow:visible}.graph-hover-status--dark .graph-hover-bio{color:#e2e8f0e6}.graph-hover-links{flex-wrap:wrap;gap:6px;display:flex}.graph-hover-chip{color:#1d4ed8;background:#2563eb1a;border:1px solid #2563eb59;border-radius:999px;align-items:center;padding:.32rem .55rem;font-size:.72rem;font-weight:600;text-decoration:none;transition:border-color .15s,background .15s;display:inline-flex}.graph-hover-chip:hover{background:#2563eb29;border-color:#2563eb8c}.graph-hover-status--dark .graph-hover-chip{color:#e9d5fffa;background:#c084fc1f;border-color:#c084fc73}.graph-hover-status--dark .graph-hover-chip:hover{background:#c084fc33;border-color:#c084fca6}.graph-hover-dl{border-top:1px solid #0f172a14;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:4px 12px;margin:2px 0 0;padding-top:8px;font-size:.75rem;display:grid}.graph-hover-status--dark .graph-hover-dl{border-top-color:#ffffff1f}.graph-hover-dt{color:#64748bf2;margin:0;font-weight:500}.graph-hover-status--dark .graph-hover-dt{color:#94a3b8f2}.graph-hover-dd{color:#111827f0;text-align:right;word-break:break-word;margin:0;font-weight:600}.graph-hover-status--dark .graph-hover-dd{color:#f8fafcf5}.network-graph .node,.node circle{cursor:pointer}@media (hover:hover) and (pointer:fine){.node circle{transition:stroke .14s,stroke-width .14s,opacity .14s}}.node circle:not(.node-hub):not(.long-press-ring):not(.node-outline),.node path{stroke:var(--node-border);stroke-width:1px;paint-order:stroke fill}.node circle.node-outline{stroke:var(--node-border);stroke-width:1.4px}.node .node-accent-ring{stroke:var(--node-accent-ring);stroke-width:1.1px;opacity:.95}.node .node-hub{fill:#0f172a;stroke:#ffffffa6;stroke-width:.8px}.node text{pointer-events:none;font-family:var(--font-sans);letter-spacing:.01em;text-shadow:0 1px 1px #00000038;font-weight:500}.node:hover circle:not(.node-hub):not(.long-press-ring):not(.node-outline),.node:hover circle.node-outline,.node:hover path{stroke:var(--node-border-hover);stroke-width:2px}.network-graph.network-graph--node-dragging .node:hover circle:not(.node-hub):not(.long-press-ring):not(.node-outline),.network-graph.network-graph--node-dragging .node:hover path{stroke:var(--node-border);stroke-width:1px}.network-graph.network-graph--node-dragging .node:hover circle.node-outline{stroke:var(--node-border);stroke-width:1.4px}.long-press-ring{stroke:#2563eb;stroke-width:3px;stroke-linecap:round;transform-box:fill-box;transform-origin:50%;opacity:.95;pointer-events:none;transform:rotate(-90deg)}.node:hover circle.long-press-ring{stroke:#2563eb;stroke-width:3px}.link-full{fill-opacity:.48;pointer-events:none}@media (hover:hover) and (pointer:fine){.link-full{transition:opacity .2s,fill-opacity .2s}}.link-full.highlight{fill-opacity:1}.legend-container{z-index:100;text-align:center;background:#fff;border:1px solid #dadce0;border-radius:4px;font-size:14px;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}@media (width<=768px){.network-container{height:100dvh}.control-panel select{min-width:120px}.node text{font-size:12px}.legend-container{width:calc(100% - 80px);font-size:12px;bottom:10px;left:10px;transform:none}}.network-graph:after{content:"Drag to move view";color:#111827;opacity:.7;pointer-events:none;background:#ffffffd9;border-radius:4px;font-size:12px;position:absolute;bottom:15px;left:15px}@media (width<=600px){.controls-legend-container{align-items:center;width:auto;position:fixed;bottom:10px;left:4vw;right:4vw}.controls-legend-container>.control-panel{top:max(10px, env(safe-area-inset-top));z-index:101;width:auto;min-width:0;margin:0;position:fixed;left:50%;transform:translate(-50%)}.controls-legend-container>.control-panel select{width:auto;min-width:180px}.controls-legend-container>.legend{width:100%;max-width:100%}}.node,.link-full{transition:opacity .2s}.network-container.desktop-safari .node,.network-container.desktop-safari .link-full{transition:none}@media (hover:none),(width<=768px){.node,.link-full{transition:none}}.dim{opacity:.1!important}.culled{display:none}.node.highlight circle,.node.highlight path,.link-full.highlight{opacity:1!important}.node.highlight circle:not(.node-hub):not(.long-press-ring):not(.node-outline),.node.highlight circle.node-outline,.node.highlight path{stroke:var(--node-border-active);stroke-width:2px}.controls-legend-container{align-items:stretch;gap:0;gap:var(--spacing-md);z-index:100;box-sizing:border-box;flex-direction:column;display:flex;position:absolute;bottom:20px;right:20px}.controls-legend-container>*{box-sizing:border-box;width:100%;min-width:0}body{color:#e2e8f0;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#000;margin:0}img{-webkit-user-drag:none;-webkit-touch-callout:none}canvas,svg{-webkit-touch-callout:none}input,textarea{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}.app-root-full{background:#000;width:100%;min-height:100dvh;position:relative}.app-logo-slot{z-index:300;pointer-events:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.app-logo-hit{cursor:pointer;-webkit-tap-highlight-color:transparent;pointer-events:auto;background:0 0;border:none;border-radius:10px;margin:0;padding:0;line-height:0;position:relative}.app-logo-hit:focus-visible{outline-offset:4px;outline:2px solid #c084fcbf}.app-logo-frame{transform-origin:50%;isolation:isolate;line-height:0;transition:transform .2s;display:inline-block;position:relative}.app-logo-frame:before{content:"";z-index:0;pointer-events:none;opacity:.95;border:2px solid #c084fc80;border-radius:50%;transition:opacity .35s,box-shadow .35s,border-color .35s;position:absolute;inset:-10px;box-shadow:0 0 10px #c084fc8c,0 0 22px #7c3aed59,0 0 36px #5b21b633}.app-logo-hit:hover .app-logo-frame:before,.app-logo-hit:focus-visible .app-logo-frame:before{border-color:#d8b4fea6;box-shadow:0 0 12px #d8b4fea6,0 0 26px #a78bfa73,0 0 44px #6d28d947}.app-logo-hit.app-logo-physics-active .app-logo-frame:before{border-color:#e9d5ffbf;animation:2.2s ease-in-out infinite app-logo-ring-pulse;box-shadow:0 0 14px #e9d5ffb3,0 0 30px #c084fc80,0 0 48px #7c3aed59}.app-logo-frame:has(.app-logo-boost-spin):before{border-color:#faf5ffe0;box-shadow:0 0 16px #faf5ffbf,0 0 34px #d8b4fe99,0 0 56px #8b5cf673}@keyframes app-logo-ring-pulse{0%,to{opacity:.82}50%{opacity:1}}.app-logo-hit:hover .app-logo-frame,.app-logo-hit:focus-visible .app-logo-frame{transform:scale(1.08)}@keyframes app-logo-shake{0%,to{transform:translate(0)rotate(0)}25%{transform:translate(-1.5px,.5px)rotate(-2.2deg)}50%{transform:translate(1.5px,-.5px)rotate(2.2deg)}75%{transform:translate(-1px,-.8px)rotate(-1.5deg)}}@keyframes app-logo-boost-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.app-logo-hit .app-logo.app-logo-shake{transform-origin:50%;animation:.28s ease-in-out infinite app-logo-shake}.app-logo-hit .app-logo.app-logo-boost-spin{animation:app-logo-boost-spin var(--app-logo-spin-ms,.9s) linear infinite;transform-origin:50%}@media (prefers-reduced-motion:reduce){.app-logo-hit .app-logo.app-logo-shake,.app-logo-hit .app-logo.app-logo-boost-spin,.app-logo-hit.app-logo-physics-active .app-logo-frame:before{animation:none}}.app-logo{z-index:1;-webkit-user-select:none;user-select:none;width:auto;height:clamp(48px,8.45vw,68px);display:block;position:relative}.graph-host{z-index:1;position:fixed;inset:0}.app-banner{top:max(12px, env(safe-area-inset-top));z-index:400;max-width:min(560px,92vw);margin:0;position:fixed;left:50%;transform:translate(-50%)}.shell{max-width:1100px;margin:0 auto;padding:1.25rem 1rem 2rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1{letter-spacing:-.02em;margin:0 0 .25rem;font-size:1.6rem}.muted{color:#94a3b8}.top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.btn{color:#e2e8f0;cursor:pointer;background:#0f172a;border:1px solid #334155;border-radius:10px;padding:.55rem .85rem}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:#c084fc1f;border-color:#c084fc8c}.pill{color:#e2e8f0;border:1px solid #334155;border-radius:999px;padding:.35rem .6rem;font-size:.95rem}.controls{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin:.75rem 0 1rem;display:flex}.field{flex:1;gap:.35rem;min-width:240px;display:grid}.field span{color:#cbd5e1;font-size:.85rem}.field input{color:#e2e8f0;background:#0b1220;border:1px solid #334155;border-radius:10px;padding:.55rem .65rem}.banner{white-space:pre-wrap;background:#0b1220;border:1px solid #334155;border-radius:12px;margin:.75rem 0 1rem;padding:.75rem .85rem}.banner.error{border-color:#f871718c}.graph-placeholder{color:#94a3b8;text-align:center;place-items:center;max-width:28rem;height:100%;margin:0 auto;padding:1rem 3rem 1rem 1rem;display:grid}.footer{margin-top:1rem;font-size:.9rem}code{color:#e2e8f0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.9em}
