@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg:#f8f9fa;--color-dot:#e0e0e0;--color-node-bg:#fff;--color-node-border:#e5e7eb;--color-selected:#3b82f6;--color-selected-shadow:#3b82f626;--color-connection:#94a3b8;--color-text-primary:#1e293b;--color-text-secondary:#64748b;--color-text-placeholder:#a0aec0;--color-port:#cbd5e1;--color-port-hover:#3b82f6;--color-danger:#ef4444;--color-toolbar-bg:#ffffffd1;--color-marquee-bg:#3b82f614;--color-marquee-border:#3b82f666;--radius-node:10px;--radius-toolbar:14px;--shadow-node:0 1px 3px #00000012, 0 1px 2px #0000000a;--shadow-node-hover:0 4px 12px #00000014, 0 2px 4px #0000000a;--shadow-node-selected:0 4px 16px var(--color-selected-shadow), 0 2px 4px #0000000a;--shadow-toolbar:0 4px 24px #0000000f, 0 1px 4px #0000000a;--shadow-context-menu:0 8px 32px #0000001f, 0 2px 6px #0000000f;--shadow-modal:0 24px 48px #00000029, 0 8px 16px #00000014;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--transition-fast:.12s ease;--transition-normal:.2s ease}html,body,#root{width:100%;height:100%;font-family:var(--font-family);color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased;font-size:14px;overflow:hidden}.canvas-viewport{cursor:default;touch-action:none;width:100%;height:100%;position:relative;overflow:hidden}.canvas-viewport.panning{cursor:grabbing}.canvas-viewport.tool-pan{cursor:grab}.canvas-viewport.tool-connect{cursor:crosshair}.canvas-viewport.tool-add{cursor:cell}.canvas-transform{transform-origin:0 0;width:0;height:0;position:absolute;top:0;left:0}.canvas-background{pointer-events:none;width:100000px;height:100000px;position:absolute;top:-50000px;left:-50000px}.node-card{background:var(--color-node-bg);border:1.5px solid var(--color-node-border);border-radius:var(--radius-node);box-shadow:var(--shadow-node);cursor:grab;transition:box-shadow var(--transition-fast), border-color var(--transition-fast);-webkit-user-select:none;user-select:none;flex-direction:column;display:flex;position:absolute;overflow:hidden}.node-card:hover{box-shadow:var(--shadow-node-hover)}.node-card.selected{border-color:var(--color-selected);box-shadow:var(--shadow-node-selected)}.node-card.dragging{cursor:grabbing;opacity:.92}.node-header{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;border-radius:var(--radius-node) var(--radius-node) 0 0;transition:background var(--transition-fast);border-bottom:1px solid #f1f3f5;flex-shrink:0;align-items:center;gap:6px;padding:8px 12px;font-size:11px;font-weight:600;display:flex;position:relative}.node-header-icon{opacity:.5;width:14px;height:14px}.node-content{flex:1;min-height:0;overflow:auto}.node-port{background:var(--color-port);opacity:0;width:10px;height:10px;transition:opacity var(--transition-fast), transform var(--transition-fast), background var(--transition-fast);z-index:10;cursor:crosshair;pointer-events:all;border:2px solid #fff;border-radius:50%;position:absolute}.node-card:hover .node-port,.node-port.visible,.canvas-viewport.tool-connect .node-port{opacity:1}.node-port:hover{background:var(--color-port-hover);transform:scale(1.4)}.node-port.top{margin-left:-5px;top:-5px;left:50%}.node-port.right{margin-top:-5px;top:50%;right:-5px}.node-port.bottom{margin-left:-5px;bottom:-5px;left:50%}.node-port.left{margin-top:-5px;top:50%;left:-5px}.resize-handle{cursor:se-resize;opacity:0;width:14px;height:14px;transition:opacity var(--transition-fast);position:absolute;bottom:0;right:0}.node-card:hover .resize-handle,.node-card.selected .resize-handle{opacity:1}.resize-handle:after{content:"";border-right:2px solid var(--color-port);border-bottom:2px solid var(--color-port);border-radius:0 0 2px;width:6px;height:6px;position:absolute;bottom:3px;right:3px}.note-editor{min-height:60px;color:var(--color-text-primary);cursor:text;word-break:break-word;white-space:pre-wrap;outline:none;padding:12px;font-size:14px;line-height:1.6}.note-editor:empty:before{content:"Zacznij pisac...";color:var(--color-text-placeholder);pointer-events:none}.note-editor b,.note-editor strong{font-weight:600}.note-wrapper{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.note-format-toolbar{background:#fafbfc;border-bottom:1px solid #f1f3f5;flex-shrink:0;align-items:center;gap:2px;padding:4px 8px;display:flex}.note-fmt-btn{cursor:pointer;width:26px;height:26px;color:var(--color-text-secondary);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:13px;display:flex}.note-fmt-btn:hover{color:var(--color-text-primary);background:#e5e7eb}.note-fmt-separator{background:#e5e7eb;width:1px;height:18px;margin:0 3px}.note-color-picker{box-shadow:var(--shadow-context-menu);z-index:10;background:#fff;border:1px solid #0000000f;border-radius:8px;grid-template-columns:repeat(4,1fr);gap:4px;padding:8px;display:grid;position:absolute;top:30px;left:-20px}.note-color-swatch{cursor:pointer;width:22px;height:22px;transition:transform var(--transition-fast);border:none;border-radius:50%}.note-color-swatch:hover{transform:scale(1.2)}.header-color-btn{cursor:pointer;opacity:0;transition:opacity var(--transition-fast);background:0 0;border:none;border-radius:4px;align-items:center;margin-left:auto;padding:2px;display:flex}.node-header:hover .header-color-btn,.node-card.selected .header-color-btn{opacity:1}.header-color-dot{border:1.5px solid #00000026;border-radius:50%;width:12px;height:12px}.node-header.colored .header-color-dot{border-color:#ffffff80}.node-header.colored .node-header-icon{opacity:.9}.header-color-backdrop{z-index:99;position:fixed;inset:0}.header-color-picker{box-shadow:var(--shadow-context-menu);z-index:100;background:#fff;border:1px solid #0000000f;border-radius:8px;grid-template-columns:repeat(5,1fr);gap:4px;padding:8px;animation:.12s contextMenuIn;display:grid;position:absolute;top:100%;right:4px}.header-color-swatch{cursor:pointer;width:22px;height:22px;transition:transform var(--transition-fast);border:none;border-radius:50%}.header-color-swatch:hover{transform:scale(1.15)}.header-color-swatch.active{box-shadow:0 0 0 2.5px var(--color-text-primary);transform:scale(1.1)}.frame-card{box-shadow:none!important;background:#f8f9fa80!important;border:2px dashed #d1d5db!important;border-radius:12px!important}.frame-card:hover{box-shadow:none!important;border-color:#9ca3af!important}.frame-card.selected{border-color:var(--color-selected)!important;box-shadow:none!important;border-style:dashed!important}.frame-card .node-content{padding:0}.frame-label{color:var(--color-text-secondary);padding:8px 14px;font-size:13px;font-weight:600}.frame-label-input{font:inherit;color:var(--color-text-primary);background:0 0;border:none;outline:none;width:100%;padding:0}.table-wrapper{padding:4px;overflow:auto}.table-node{border-collapse:collapse;width:100%;font-size:13px}.table-node th,.table-node td{text-align:left;border:1px solid #f1f3f5;min-width:60px;padding:6px 10px}.table-node th{color:var(--color-text-secondary);background:#f8f9fa;font-size:12px;font-weight:600}.table-node td{background:0 0}.table-cell-input{width:100%;font:inherit;color:inherit;background:0 0;border:none;outline:none;padding:0}.table-add-btn{color:var(--color-text-placeholder);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:2px;font-size:16px;display:flex}.table-add-btn:hover{color:var(--color-text-secondary);background:#f1f3f5}.list-wrapper{padding:8px 12px}.list-item{border-bottom:1px solid #f8f9fa;align-items:center;gap:8px;padding:4px 0;display:flex}.list-item:last-child{border-bottom:none}.list-checkbox{border:1.5px solid var(--color-node-border);appearance:none;cursor:pointer;width:16px;height:16px;transition:background var(--transition-fast), border-color var(--transition-fast);border-radius:4px;flex-shrink:0;position:relative}.list-checkbox:checked{background:var(--color-selected);border-color:var(--color-selected)}.list-checkbox:checked:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.list-item-input{font:inherit;color:inherit;background:0 0;border:none;outline:none;flex:1;padding:2px 0;font-size:14px;line-height:1.5}.list-item-input.checked-text{color:var(--color-text-secondary);text-decoration:line-through}.list-item-delete{opacity:0;color:var(--color-text-placeholder);cursor:pointer;transition:opacity var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:4px;padding:2px;font-size:14px}.list-item:hover .list-item-delete{opacity:1}.list-item-delete:hover{color:var(--color-danger)}.list-add-item{color:var(--color-text-placeholder);cursor:pointer;font:inherit;transition:color var(--transition-fast);background:0 0;border:none;align-items:center;gap:6px;padding:6px 0;font-size:13px;display:flex}.list-add-item:hover{color:var(--color-text-secondary)}.connection-layer{pointer-events:none;z-index:0;width:1px;height:1px;position:absolute;top:0;left:0;overflow:visible}.connection-path{fill:none;stroke:var(--color-connection);stroke-width:2px;vector-effect:non-scaling-stroke;pointer-events:visibleStroke;cursor:pointer;transition:stroke var(--transition-fast)}.connection-path-hit{fill:none;stroke:#0000;stroke-width:16px;vector-effect:non-scaling-stroke;pointer-events:visibleStroke;cursor:pointer}.connection-path.selected{stroke:var(--color-selected);stroke-width:2.5px}.connection-draft-path{fill:none;stroke:var(--color-selected);stroke-width:2px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke;opacity:.6;pointer-events:none}.connection-label{border:1px solid var(--color-node-border);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;background:#fff;border-radius:6px;padding:2px 8px;font-size:12px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 3px #0000000f}.connection-label-input{font:inherit;color:var(--color-text-primary);text-align:center;background:0 0;border:none;outline:none;width:80px}.selection-marquee{background:var(--color-marquee-bg);border:1.5px dashed var(--color-marquee-border);pointer-events:none;z-index:9999;border-radius:3px;position:absolute}.toolbar{background:var(--color-toolbar-bg);-webkit-backdrop-filter:blur(16px)saturate(1.6);border-radius:var(--radius-toolbar);box-shadow:var(--shadow-toolbar);z-index:100;-webkit-user-select:none;user-select:none;border:1px solid #0000000f;align-items:center;gap:2px;padding:6px 10px;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%)}.toolbar-separator{background:#00000014;width:1px;height:24px;margin:0 4px}.toolbar-btn{cursor:pointer;width:34px;height:34px;color:var(--color-text-secondary);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex;position:relative}.toolbar-btn:hover{color:var(--color-text-primary);background:#0000000d}.toolbar-btn.active{color:var(--color-selected);background:#3b82f61a}.toolbar-btn svg{width:18px;height:18px}.toolbar-btn-label{color:var(--color-text-secondary);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--transition-fast);background:#fff;border-radius:4px;padding:2px 8px;font-size:11px;position:absolute;bottom:-26px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0000001a}.toolbar-btn:hover .toolbar-btn-label{opacity:1}.color-picker-popover{box-shadow:var(--shadow-context-menu);z-index:200;background:#fff;border:1px solid #0000000f;border-radius:12px;grid-template-columns:repeat(4,1fr);gap:6px;padding:10px;animation:.12s contextMenuIn;display:grid;position:absolute;top:44px;right:0}.color-picker-swatch{cursor:pointer;width:28px;height:28px;transition:transform var(--transition-fast), border-color var(--transition-fast);border:2.5px solid #0000;border-radius:50%;outline:none}.color-picker-swatch:hover{transform:scale(1.15)}.color-picker-swatch.active{border-color:var(--color-text-primary);transform:scale(1.1)}.context-menu-backdrop{z-index:200;position:fixed;inset:0}.context-menu{box-shadow:var(--shadow-context-menu);z-index:201;background:#fff;border:1px solid #0000000f;border-radius:10px;min-width:180px;padding:4px;animation:.12s contextMenuIn;position:fixed}@keyframes contextMenuIn{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.context-menu-item{cursor:pointer;color:var(--color-text-primary);text-align:left;width:100%;transition:background var(--transition-fast);background:0 0;border:none;border-radius:6px;align-items:center;gap:10px;padding:7px 12px;font-size:13px;display:flex}.context-menu-item:hover{background:#f3f4f6}.context-menu-item.danger{color:var(--color-danger)}.context-menu-item.danger:hover{background:#fef2f2}.context-menu-item svg{opacity:.6;width:15px;height:15px}.context-menu-separator{background:#f1f3f5;height:1px;margin:3px 8px}.context-menu-shortcut{color:var(--color-text-placeholder);margin-left:auto;font-size:11px}.minimap{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;cursor:pointer;background:#ffffffe6;border:1px solid #0000000f;border-radius:10px;width:200px;height:140px;position:fixed;bottom:16px;right:16px;overflow:hidden;box-shadow:0 2px 12px #0000000f}.minimap-node{background:var(--color-node-border);border:1px solid #0000001a;border-radius:2px;position:absolute}.minimap-node.selected{background:var(--color-selected);opacity:.6}.minimap-viewport{border:2px solid var(--color-selected);background:#3b82f60f;border-radius:2px;position:absolute}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:300;background:#0000004d;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{box-shadow:var(--shadow-modal);background:#fff;border-radius:14px;flex-direction:column;width:520px;max-height:80vh;animation:.2s modalIn;display:flex}@keyframes modalIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{border-bottom:1px solid #f1f3f5;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-title{font-size:16px;font-weight:600}.modal-close{cursor:pointer;width:28px;height:28px;color:var(--color-text-secondary);transition:background var(--transition-fast);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.modal-close:hover{background:#f3f4f6}.modal-body{padding:20px;overflow:auto}.modal-tabs{gap:4px;margin-bottom:16px;display:flex}.modal-tab{cursor:pointer;font:inherit;color:var(--color-text-secondary);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500}.modal-tab.active{color:var(--color-selected);background:#3b82f61a}.modal-textarea{border:1.5px solid var(--color-node-border);width:100%;height:200px;color:var(--color-text-primary);resize:vertical;transition:border-color var(--transition-fast);border-radius:8px;outline:none;padding:12px;font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:12px;line-height:1.5}.modal-textarea:focus{border-color:var(--color-selected)}.modal-actions{gap:8px;margin-top:12px;display:flex}.btn{font:inherit;cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);border:none;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:500;display:inline-flex}.btn-primary{background:var(--color-selected);color:#fff}.btn-primary:hover{background:#2563eb}.btn-secondary{color:var(--color-text-primary);background:#f3f4f6}.btn-secondary:hover{background:#e5e7eb}.sidebar{-webkit-backdrop-filter:blur(16px)saturate(1.6);z-index:100;-webkit-user-select:none;user-select:none;background:#ffffffeb;border-right:1px solid #0000000f;flex-direction:column;width:220px;height:100vh;animation:.2s sidebarIn;display:flex;position:fixed;top:0;left:0}@keyframes sidebarIn{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translate(0)}}.sidebar.collapsed{cursor:pointer;width:44px;color:var(--color-text-secondary);transition:background var(--transition-fast);justify-content:flex-start;align-items:center;padding:14px;display:flex}.sidebar.collapsed:hover{background:#00000008}.sidebar-header{flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 14px 10px;display:flex}.sidebar-title{text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-secondary);font-size:12px;font-weight:700}.sidebar-collapse-btn{cursor:pointer;width:24px;height:24px;color:var(--color-text-secondary);transition:background var(--transition-fast);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.sidebar-collapse-btn:hover{background:#f3f4f6}.sidebar-list{flex:1;padding:0 8px;overflow-y:auto}.sidebar-item{cursor:pointer;color:var(--color-text-primary);transition:background var(--transition-fast);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex;position:relative}.sidebar-item:hover{background:#f3f4f6}.sidebar-item.active{color:var(--color-selected);background:#3b82f614;font-weight:500}.sidebar-item-icon{opacity:.5;flex-shrink:0}.sidebar-item.active .sidebar-item-icon{opacity:.8}.sidebar-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.sidebar-rename-input{border:1px solid var(--color-selected);font:inherit;background:#fff;border-radius:4px;outline:none;flex:1;padding:2px 6px;font-size:13px}.sidebar-item-delete{opacity:0;color:var(--color-text-placeholder);cursor:pointer;width:20px;height:20px;transition:opacity var(--transition-fast), color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:16px;display:flex}.sidebar-item:hover .sidebar-item-delete{opacity:1}.sidebar-item-delete:hover{color:var(--color-danger);background:#fef2f2}.sidebar-add-btn{cursor:pointer;font:inherit;color:var(--color-text-secondary);transition:border-color var(--transition-fast), color var(--transition-fast), background var(--transition-fast);background:0 0;border:1.5px dashed #e5e7eb;border-radius:8px;flex-shrink:0;align-items:center;gap:8px;margin:8px;padding:8px 12px;font-size:13px;display:flex}.sidebar-add-btn:hover{border-color:var(--color-selected);color:var(--color-selected);background:#3b82f60a}
