.top-bar{z-index:100;pointer-events:none;justify-content:space-between;align-items:center;height:44px;display:flex;position:absolute;top:16px;left:16px;right:16px}.top-bar>*{pointer-events:auto}.brand{background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);align-items:center;gap:10px;padding:8px 14px;font-size:14px;font-weight:600;display:flex}.brand-icon{color:var(--accent)}.status-pill{background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);color:var(--text-secondary);font-size:12px;font-family:var(--font-mono);border-radius:999px;align-items:center;gap:8px;padding:6px 14px;display:flex}.status-dot{background-color:var(--success);border-radius:50%;width:7px;height:7px;animation:2s ease-in-out infinite pulse-dot;box-shadow:0 0 8px #22c55ecc}.status-dot.simulating{background-color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.3)}}.actions-group{align-items:center;gap:6px;display:flex}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-color);background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);height:36px;color:var(--text-secondary);cursor:pointer;transition:all var(--transition-base);justify-content:center;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover{color:var(--text-primary);background:#ffffff14;border-color:#fff3}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 2px 8px var(--accent-glow)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.btn-icon{padding:0 12px}.btn-icon-label{display:inline}@media (width<=700px){.btn-icon-label{display:none}.btn-icon{width:36px;padding:0}}.settings-panel{z-index:90;background:var(--bg-panel);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);border-radius:var(--radius-lg);width:360px;max-height:calc(100vh - 100px);box-shadow:var(--shadow-lg);transition:transform var(--transition-slow), opacity var(--transition-base);flex-direction:column;display:flex;position:absolute;top:76px;right:16px}.settings-panel.closed{opacity:0;pointer-events:none;transform:translate(380px)}.panel-header{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.panel-title{color:var(--text-primary);font-size:15px;font-weight:600}.panel-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;padding:4px 8px;font-size:20px;line-height:1}.panel-close:hover{color:var(--text-primary);background:#ffffff1a}.panel-tabs{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-sm);gap:3px;margin:12px 16px;padding:3px;display:flex}.panel-tab{color:var(--text-muted);cursor:pointer;transition:all var(--transition-base);background:0 0;border:none;border-radius:4px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.panel-tab:hover{color:var(--text-secondary)}.panel-tab.active{background:var(--bg-elevated);color:var(--accent);box-shadow:var(--shadow-sm)}.panel-body{scrollbar-width:thin;scrollbar-color:var(--border-color) transparent;flex-direction:column;flex:1;gap:16px;padding:0 16px 16px;display:flex;overflow-y:auto}.panel-body::-webkit-scrollbar{width:5px}.panel-body::-webkit-scrollbar-track{background:0 0}.panel-body::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.panel-section{flex-direction:column;gap:10px;display:flex}.section-title{text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);align-items:center;gap:6px;font-size:11px;font-weight:700;display:flex}.section-title-icon{color:var(--accent)}.section-divider{background:var(--border-color);height:1px;margin:4px 0}.control-group{flex-direction:column;gap:6px;display:flex}.control-label-row{color:var(--text-secondary);justify-content:space-between;align-items:center;font-size:12px;font-weight:500;display:flex}.control-value{font-size:11px;font-weight:600;font-family:var(--font-mono);color:var(--accent);background:var(--accent-soft);border-radius:4px;padding:1px 6px}.text-input,.select-input{background:var(--bg-surface);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-sm);transition:all var(--transition-fast);outline:none;padding:8px 10px;font-size:12px}.text-input:focus,.select-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.select-input option{background:var(--bg-surface);color:var(--text-primary)}.slider{appearance:none;background:#ffffff1f;border-radius:2px;outline:none;width:100%;height:4px}.slider::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;width:14px;height:14px;box-shadow:0 0 8px var(--accent-glow);transition:transform var(--transition-fast);border-radius:50%}.slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.toggle-row{color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius-sm);transition:background var(--transition-fast);justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;font-size:12px;display:flex}.toggle-row:hover{background:#ffffff08}.toggle-label-group{flex-direction:column;gap:2px;min-width:0;display:flex}.toggle-title{color:var(--text-primary);font-weight:500}.toggle-hint{color:var(--text-muted);font-size:10px;line-height:1.3}.toggle-switch{flex-shrink:0;width:36px;height:20px;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{cursor:pointer;transition:var(--transition-base);background-color:#ffffff26;border-radius:20px;position:absolute;inset:0}.toggle-slider:before{content:"";width:16px;height:16px;transition:var(--transition-base);background-color:#fff;border-radius:50%;position:absolute;bottom:2px;left:2px}.toggle-switch input:checked+.toggle-slider{background-color:var(--accent)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(16px)}.number-stepper{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-sm);transition:all var(--transition-fast);align-items:stretch;display:flex;overflow:hidden}.number-stepper:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.stepper-btn{width:32px;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.stepper-btn:hover{color:var(--text-secondary);background:#ffffff0f}.stepper-btn:active{background:var(--accent-soft);color:var(--accent)}.stepper-input{min-width:0;color:var(--text-primary);text-align:center;font-size:13px;font-weight:600;font-family:var(--font-mono);-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1;padding:8px 4px}.stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.mode-tabs{background:var(--bg-surface);border:1px solid var(--border-color);border-radius:var(--radius-sm);gap:2px;padding:2px;display:flex}.tab-btn{color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-radius:4px;flex:1;padding:8px 10px;font-size:12px;font-weight:500}.tab-btn.active{background:var(--bg-elevated);color:var(--text-primary);box-shadow:var(--shadow-sm)}.edge-list{scrollbar-width:thin;scrollbar-color:var(--border-color) transparent;flex-direction:column;gap:4px;max-height:160px;display:flex;overflow-y:auto}.edge-chip{border:1px solid var(--border-color);transition:border-color var(--transition-fast);background:#ffffff08;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;display:flex}.edge-chip:hover{border-color:var(--accent-soft)}.edge-label{font-size:12px;font-family:var(--font-mono);color:var(--text-primary);flex:1}.edge-btn{color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:12px}.edge-btn:hover{color:var(--error);background:#ef44441a}.add-edge-row{gap:6px;display:flex}.add-edge-input{background:var(--bg-surface);border:1px solid var(--border-color);color:var(--text-primary);border-radius:var(--radius-sm);font-size:12px;font-family:var(--font-mono);transition:all var(--transition-fast);outline:none;flex:1;padding:6px 10px}.add-edge-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.add-edge-btn{background:var(--accent);color:#fff;border-radius:var(--radius-sm);cursor:pointer;width:32px;height:32px;transition:all var(--transition-fast);border:none;justify-content:center;align-items:center;font-size:18px;display:flex}.add-edge-btn:hover{background:var(--accent-hover);box-shadow:0 0 8px var(--accent-glow)}.presets-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.preset-label{color:var(--text-muted);font-size:11px}.preset-chip{border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:#ffffff0d;border-radius:12px;padding:3px 10px;font-size:11px}.preset-chip:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--text-primary)}.btn-block{width:100%;margin-top:8px}.accordion{border:1px solid var(--border-color);border-radius:var(--radius-sm);background:#ffffff05;overflow:hidden}.accordion[open]{border-color:var(--accent-soft)}.accordion-summary{color:var(--text-primary);cursor:pointer;justify-content:space-between;align-items:center;padding:10px 12px;font-size:12px;font-weight:600;list-style:none;display:flex}.accordion-summary::-webkit-details-marker{display:none}.accordion-title{color:var(--text-secondary);align-items:center;gap:8px;display:flex}.accordion-title-icon{color:var(--accent)}.accordion-chevron{color:var(--text-muted);transition:transform var(--transition-base)}.accordion[open] .accordion-chevron{transform:rotate(180deg)}.accordion-content{border-top:1px solid var(--border-color);flex-direction:column;gap:12px;padding:12px;display:flex}@media (width<=700px){.settings-panel{width:calc(100% - 32px);max-height:70vh;inset:auto 16px 16px}.settings-panel.closed{transform:translateY(100%)}}.canvas-container{z-index:1;background-color:var(--bg-canvas);width:100%;height:100%;position:absolute;top:0;left:0}.canvas-grid{pointer-events:none;z-index:0;background-image:linear-gradient(#ffffff05 1px,#0000 1px),linear-gradient(90deg,#ffffff05 1px,#0000 1px);background-size:40px 40px;position:absolute;inset:0}.canvas-glow{pointer-events:none;z-index:0;background:radial-gradient(circle at 50% 45%,#a855f70e,#0000 45%);width:60%;height:50%;position:absolute;top:30%;left:50%;transform:translate(-50%,-50%)}[data-theme=light] .canvas-grid{background-image:linear-gradient(#00000008 1px,#0000 1px),linear-gradient(90deg,#00000008 1px,#0000 1px)}[data-theme=light] .canvas-glow{background:radial-gradient(circle at 50% 45%,#a855f70a,#0000 45%)}.node-inspector{z-index:80;background:var(--bg-panel);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border-color);border-left:3px solid var(--accent);border-radius:var(--radius-md);width:260px;box-shadow:var(--shadow-lg);animation:.25s cubic-bezier(.16,1,.3,1) inspector-enter;position:absolute;bottom:24px;left:24px}@keyframes inspector-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.inspector-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.inspector-tag{text-transform:uppercase;letter-spacing:.5px;color:var(--accent);font-size:10px;font-weight:700}.inspector-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;padding:2px 6px;font-size:18px;line-height:1}.inspector-close:hover{color:var(--text-primary);background:#ffffff1a}.inspector-body{padding:12px 14px}.inspector-title-row{align-items:center;gap:8px;margin-bottom:4px;display:flex}.inspector-icon{color:var(--accent)}.inspector-title{color:var(--text-primary);font-size:15px;font-weight:600}.inspector-meta{color:var(--text-muted);font-size:12px;font-family:var(--font-mono)}.inspector-stats{border-top:1px solid var(--border-color);grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;padding-top:12px;display:grid}.stat-item{flex-direction:column;align-items:center;gap:2px;display:flex}.stat-label{text-transform:uppercase;letter-spacing:.3px;color:var(--text-muted);font-size:10px}.stat-value{font-size:16px;font-weight:600;font-family:var(--font-mono);color:var(--text-primary)}@media (width<=700px){.node-inspector{width:auto;bottom:100px;left:16px;right:16px}}.quick-actions{z-index:70;background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);align-items:center;gap:6px;padding:8px 10px;display:flex;position:absolute;bottom:24px;left:24px}.quick-action-btn{color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:500;display:flex}.quick-action-btn:hover{color:var(--text-primary);border-color:var(--border-color);background:#ffffff0f}.quick-action-btn:active{background:var(--accent-soft);color:var(--accent)}.quick-action-btn.primary{background:var(--accent);color:#fff}.quick-action-btn.primary:hover{background:var(--accent-hover)}.hint-text{z-index:5;color:var(--text-muted);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0b0b0f99;border-radius:999px;padding:4px 10px;font-size:11px;position:absolute;bottom:12px;right:16px}@media (width<=700px){.quick-actions{bottom:16px;left:16px}.hint-text{display:none}}.empty-state{z-index:50;text-align:center;flex-direction:column;align-items:center;gap:16px;padding:32px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.empty-icon{color:var(--accent);opacity:.6;animation:3s ease-in-out infinite float}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.empty-title{color:var(--text-primary);font-size:20px;font-weight:600}.empty-description{color:var(--text-muted);max-width:280px;font-size:14px;line-height:1.5}.empty-actions{gap:10px;margin-top:8px;display:flex}.empty-tip{color:var(--text-muted);margin-top:8px;font-size:11px}.empty-tip kbd{background:var(--bg-surface);border:1px solid var(--border-color);font-family:var(--font-mono);border-radius:4px;padding:2px 6px;font-size:10px}.shortcuts-overlay{z-index:1000;-webkit-backdrop-filter:blur(8px);background:#000000b3;justify-content:center;align-items:center;animation:.15s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.shortcuts-modal{background:var(--bg-panel);border:1px solid var(--border-color);border-radius:var(--radius-lg);min-width:320px;max-width:400px;box-shadow:var(--shadow-lg);padding:24px}.shortcuts-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.shortcuts-title{color:var(--text-primary);font-size:16px;font-weight:600}.shortcuts-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);background:0 0;border:none;padding:4px;font-size:20px}.shortcuts-close:hover{color:var(--text-primary);background:#ffffff1a}.shortcuts-list{flex-direction:column;gap:10px;display:flex}.shortcut-row{justify-content:space-between;align-items:center;font-size:13px;display:flex}.shortcut-label{color:var(--text-secondary)}.shortcut-keys{gap:4px;display:flex}.shortcut-key{background:var(--bg-surface);border:1px solid var(--border-color);font-family:var(--font-mono);color:var(--text-primary);text-align:center;border-radius:4px;min-width:28px;padding:3px 8px;font-size:11px}:root,[data-theme=dark]{--bg-canvas:#0b0b0f;--bg-surface:#121217;--bg-elevated:#18181f;--bg-panel:#121217eb;--border-color:#ffffff17;--border-active:#a855f780;--text-primary:#f4f4f5;--text-secondary:#a1a1aa;--text-muted:#71717a;--accent:#a855f7;--accent-hover:#c026ff;--accent-soft:#a855f724;--accent-glow:#a855f759;--success:#22c55e;--warning:#f59e0b;--error:#ef4444;--info:#3b82f6;--font-ui:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--shadow-sm:0 2px 8px #0000004d;--shadow-md:0 8px 24px #0006;--shadow-lg:0 16px 48px #00000080;--transition-fast:.15s ease;--transition-base:.2s cubic-bezier(.16, 1, .3, 1);--transition-slow:.3s cubic-bezier(.16, 1, .3, 1)}[data-theme=light]{--bg-canvas:#fafafa;--bg-surface:#fff;--bg-elevated:#f4f4f5;--bg-panel:#fffffff2;--border-color:#0000001a;--border-active:#a855f799;--text-primary:#18181b;--text-secondary:#52525b;--text-muted:#a1a1aa;--accent:#9333ea;--accent-hover:#7c3aed;--accent-soft:#9333ea1f;--shadow-sm:0 2px 8px #00000014;--shadow-md:0 8px 24px #0000001f;--shadow-lg:0 16px 48px #00000029}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background-color:var(--bg-canvas);width:100%;height:100%;color:var(--text-primary);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}#app{width:100vw;height:100vh;position:relative;overflow:hidden}#graph{z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.hidden{display:none!important}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
