:root{--nn-bg:#0f1115;--nn-panel:#171a21;--nn-panel-elevated:#1e222b;--nn-border:#2a2f3a;--nn-text:#e6e9ef;--nn-text-secondary:#9aa3b2;--nn-text-muted:#6b7280;--nn-accent:#3b82f6;--nn-accent-hover:#60a5fa;--nn-canvas-grid:#1c212b;--nn-error:#ef4444;--nn-warning:#f59e0b;--nn-success:#22c55e;--nn-stale:#94a3b8;--nn-info:#38bdf8;--nn-port-ohlcv:#f97316;--nn-port-scalar-series:#3b82f6;--nn-port-bool-series:#a855f7;--nn-port-scalar:#22d3ee;--nn-port-bool:#ec4899;--nn-port-string:#84cc16;--nn-port-signal:#eab308;--nn-port-pairspec:#6366f1;--nn-family-sources:#10b981;--nn-family-transforms:#14b8a6;--nn-family-indicators:#3b82f6;--nn-family-conditions:#f59e0b;--nn-family-logic:#a855f7;--nn-family-state:#64748b;--nn-family-risk:#ef4444;--nn-family-signals:#eab308;--nn-family-constants:#6b7280;--nn-family-patterns:#ec4899;--nn-font:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--nn-font-mono:ui-monospace,"SF Mono",Consolas,monospace;--nn-text-xs:12px;--nn-text-sm:13px;--nn-text-md:14px;--nn-text-lg:16px;--nn-text-xl:20px;--nn-space-1:4px;--nn-space-2:8px;--nn-space-3:12px;--nn-space-4:16px;--nn-space-6:24px;--nn-radius-node:8px;--nn-radius-panel:8px;--nn-radius-control:6px;--nn-shadow-node:0 2px 8px rgba(0,0,0,.4);--nn-shadow-node-selected:0 0 0 2px var(--nn-accent)}body{background:var(--nn-bg);color:var(--nn-text);font-family:var(--nn-font);font-size:var(--nn-text-sm);margin:0}*{scrollbar-color:var(--nn-border) transparent;scrollbar-width:thin}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--nn-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--nn-text-muted)}.btn{align-items:center;background:var(--nn-panel-elevated);border:1px solid var(--nn-border);border-radius:var(--nn-radius-control);color:var(--nn-text);cursor:pointer;display:inline-flex;font-size:var(--nn-text-sm);height:32px;justify-content:center;padding:0 var(--nn-space-3);text-decoration:none}.btn:hover:not(:disabled){border-color:var(--nn-accent-hover)}.btn--primary{background:var(--nn-accent);border-color:var(--nn-accent);color:var(--nn-text)}.btn--primary:hover:not(:disabled){background:var(--nn-accent-hover);border-color:var(--nn-accent-hover)}.btn--secondary:hover:not(:disabled){border-color:var(--nn-accent)}.btn--danger{background:var(--nn-error);border-color:var(--nn-error);color:var(--nn-text)}.btn:disabled{cursor:default;opacity:.4}.vue-flow__node.selected .nn-node{box-shadow:var(--nn-shadow-node-selected)}.vue-flow__node.dragging .nn-node{opacity:.6}.vue-flow__node.selected .nn-unknown{box-shadow:var(--nn-shadow-node-selected)}.vue-flow__node:focus-visible{outline:none}.vue-flow__edge-textbg{fill:var(--nn-panel)}.vue-flow__edge-text{fill:var(--nn-text-secondary);font-size:var(--nn-text-xs)}.vue-flow__pane{cursor:default}.vue-flow__pane.dragging{cursor:grabbing}.vue-flow__controls{box-shadow:var(--nn-shadow-node)}.vue-flow__controls-button{background:var(--nn-panel-elevated);border-bottom:1px solid var(--nn-border);color:var(--nn-text-secondary);fill:var(--nn-text-secondary)}.vue-flow__controls-button:hover{background:var(--nn-panel);color:var(--nn-text)}.vue-flow__controls-button svg{fill:currentColor}.graph-canvas .vue-flow__minimap{background-color:var(--nn-panel);border:1px solid var(--nn-border);border-radius:var(--nn-radius-control)}.graph-canvas .vue-flow__handle-left{left:-4px}.graph-canvas .vue-flow__handle-right{right:-1px}.vue-flow__selection{background:color-mix(in srgb,var(--nn-accent) 8%,transparent);border:1px solid var(--nn-accent)}@media(prefers-reduced-motion:reduce){.nn-node,.nn-port__handle,.vue-flow__edge{transition:none!important}}.llm-status{align-items:center;border-radius:999px;display:inline-flex;font-size:var(--nn-text-xs);gap:6px;padding:3px 10px;white-space:nowrap}.llm-status--ok{background:color-mix(in srgb,var(--nn-success) 12%,transparent);color:var(--nn-success)}.llm-status--unverified{background:var(--nn-panel-elevated);color:var(--nn-text-secondary)}.llm-status--error{background:color-mix(in srgb,var(--nn-error) 12%,transparent);color:var(--nn-error)}
