@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap";:root{--bg-canvas:#fafaf8;--bg-surface:#fff;--bg-secondary:#f4f3ef;--bg-tertiary:#eceae3;--border-subtle:#00000014;--border-default:#0000001f;--border-strong:#0003;--text-primary:#2c2c2a;--text-secondary:#6b6a65;--text-tertiary:#9c9a92;--accent:#534ab7;--accent-soft:#eeedfe;--status-idea:#9c9a92;--status-progress:#ef9f27;--status-done:#1d9e75;--status-blocked:#e24b4a;--radius-node:10px;--radius-ui:8px;--toolbar-width:60px;--inspector-width:320px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;color:var(--text-primary);background:var(--bg-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,sans-serif;font-size:14px;overflow:hidden}#app{width:100%;height:100%;display:flex;position:relative}#toolbar{width:var(--toolbar-width);background:var(--bg-surface);border-right:1px solid var(--border-subtle);z-index:100;-webkit-user-select:none;user-select:none;flex-direction:column;gap:4px;padding:12px 8px;display:flex;position:fixed;top:0;bottom:0;left:0}.toolbar-group{flex-direction:column;gap:2px;display:flex}.toolbar-divider{background:var(--border-subtle);width:100%;height:1px;margin:6px 0}.toolbar-spacer{flex:1}.tool-btn{border-radius:var(--radius-ui);cursor:pointer;width:44px;height:44px;color:var(--text-secondary);background:0 0;border:none;justify-content:center;align-items:center;transition:background .12s,color .12s;display:flex;position:relative}.tool-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.tool-btn.active{background:var(--accent-soft);color:var(--accent)}.tool-btn svg{stroke-width:1.5px;pointer-events:none;width:18px;height:18px}.tool-btn:after{content:attr(data-tooltip);background:var(--text-primary);color:#fff;white-space:nowrap;pointer-events:none;opacity:0;z-index:1000;border-radius:6px;padding:5px 9px;font-size:12px;font-weight:400;transition:opacity 80ms;position:absolute;top:50%;left:calc(100% + 10px);transform:translateY(-50%)}.tool-btn:hover:after{opacity:1;transition-delay:.4s}#canvas-wrapper{left:var(--toolbar-width);background:var(--bg-canvas);position:fixed;top:0;bottom:0;right:0;overflow:hidden}#canvas-wrapper.pan-mode{cursor:grab}#canvas-wrapper.pan-mode.panning{cursor:grabbing}#main-svg{width:100%;height:100%;display:block}#zoom-controls{bottom:20px;left:calc(var(--toolbar-width) + 16px);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-ui);z-index:100;-webkit-user-select:none;user-select:none;align-items:center;gap:0;display:flex;position:fixed;overflow:hidden}.zoom-btn{cursor:pointer;width:32px;height:32px;color:var(--text-secondary);background:0 0;border:none;justify-content:center;align-items:center;padding:0;font-size:13px;transition:background .1s,color .1s;display:flex}.zoom-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.zoom-btn svg{stroke-width:1.5px;width:14px;height:14px}#zoom-level{border:none;border-left:1px solid var(--border-subtle);border-right:1px solid var(--border-subtle);cursor:pointer;min-width:48px;height:32px;color:var(--text-secondary);text-align:center;background:0 0;padding:0 4px;font-family:inherit;font-size:12px;transition:background .1s,color .1s}#zoom-level:hover{background:var(--bg-secondary);color:var(--text-primary)}#inspector{width:var(--inspector-width);background:var(--bg-surface);border-left:1px solid var(--border-subtle);z-index:100;flex-direction:column;transition:transform .2s cubic-bezier(.32,.72,0,1);display:flex;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(100%)}#inspector.open{transform:translate(0)}.inspector-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:16px 16px 12px;display:flex}.inspector-title{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:500}.inspector-close{cursor:pointer;width:28px;height:28px;color:var(--text-tertiary);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;transition:background .1s,color .1s;display:flex}.inspector-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.inspector-close svg{stroke-width:1.5px;width:14px;height:14px}.inspector-body{flex-direction:column;gap:14px;padding:16px;display:flex}.inspector-field label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px;font-size:11px;font-weight:500;display:block}.inspector-field input[type=text],.inspector-field textarea{border:1px solid var(--border-default);width:100%;color:var(--text-primary);background:var(--bg-surface);resize:none;border-radius:7px;outline:none;padding:8px 10px;font-family:inherit;font-size:13px;line-height:1.5;transition:border-color .12s}.inspector-field input[type=text]:focus,.inspector-field textarea:focus{border-color:var(--accent)}.inspector-field input[type=text].node-title-input{font-size:15px;font-weight:500}.status-pills{gap:6px;display:flex}.status-pill{cursor:pointer;text-align:center;background:var(--bg-secondary);color:var(--text-secondary);border:1.5px solid #0000;border-radius:20px;flex:1;padding:6px 0;font-size:11px;font-weight:500;transition:border-color .12s,background .12s}.status-pill[data-status=idea]{--pill-color:var(--status-idea)}.status-pill[data-status=progress]{--pill-color:var(--status-progress)}.status-pill[data-status=done]{--pill-color:var(--status-done)}.status-pill[data-status=blocked]{--pill-color:var(--status-blocked)}.status-pill.active{border-color:var(--pill-color);background:color-mix(in srgb, var(--pill-color) 10%, white);color:var(--pill-color)}.priority-pills{gap:6px;display:flex}.priority-pill{border:1.5px solid var(--border-default);cursor:pointer;text-align:center;color:var(--text-secondary);background:0 0;border-radius:6px;flex:1;padding:5px 0;font-size:11px;font-weight:500;transition:border-color .12s,background .12s,color .12s}.priority-pill.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.checklist-item{align-items:center;gap:8px;padding:4px 0;display:flex}.checklist-item input[type=checkbox]{accent-color:var(--accent);cursor:pointer;flex-shrink:0;width:14px;height:14px}.checklist-item span{color:var(--text-primary);outline:none;flex:1;font-size:13px}.checklist-item span.done{color:var(--text-tertiary);text-decoration:line-through}.add-checklist-btn{color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:5px;padding:4px 0;font-size:12px;display:flex}.add-checklist-btn svg{stroke-width:1.5px;width:12px;height:12px}.inspector-delete{margin-top:auto;padding:0 16px 16px}.delete-btn{border:1.5px solid var(--status-blocked);border-radius:var(--radius-ui);width:100%;color:var(--status-blocked);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:6px;padding:9px;font-family:inherit;font-size:13px;transition:background .12s,color .12s;display:flex}.delete-btn:hover{background:color-mix(in srgb, var(--status-blocked) 8%, transparent)}.delete-btn svg{stroke-width:1.5px;width:14px;height:14px}.node-foreign{overflow:visible}.node-card{background:var(--bg-surface);border:.5px solid var(--border-default);border-radius:var(--radius-node);cursor:default;box-sizing:border-box;flex-direction:column;gap:4px;min-width:140px;min-height:60px;padding:12px 14px 12px 18px;font-family:Inter,system-ui,sans-serif;transition:border-color .12s,box-shadow .12s;display:flex;position:relative}.node-card:before{content:"";background:var(--status-idea);border-radius:0 3px 3px 0;width:4px;height:80%;transition:background .2s;position:absolute;top:10%;left:0}.node-card[data-status=progress]:before{background:var(--status-progress)}.node-card[data-status=done]:before{background:var(--status-done)}.node-card[data-status=blocked]:before{background:var(--status-blocked)}.node-card.hovered{border-color:var(--border-strong);box-shadow:0 1px 3px #0000000a}.node-card.selected{box-shadow:none;border:1.5px solid var(--accent)!important}.node-card.dragging{opacity:.85;cursor:grabbing}.node-card.connected-flash,.node-sticky.connected-flash,.node-image.connected-flash{border-color:var(--status-done)!important}.node-title,.node-title-text{color:var(--text-primary);pointer-events:none;white-space:pre-wrap;word-break:break-word;font-size:14px;font-weight:500;line-height:1.4}.node-description,.node-desc-text{color:var(--text-secondary);pointer-events:none;white-space:pre-wrap;word-break:break-word;margin-top:2px;font-size:12px;font-weight:400;line-height:1.5}.node-sticky-text{white-space:pre-wrap;word-break:break-word;pointer-events:none;font-size:13px;line-height:1.5}.node-text-content{white-space:pre-wrap;word-break:break-word;pointer-events:none;font-size:16px;font-weight:500;line-height:1.4}.node-sticky{cursor:default;box-sizing:border-box;min-width:120px;min-height:80px;color:var(--text-primary);background:#fff8e1;border:.5px solid #00000014;border-radius:8px;padding:12px 14px;font-family:Inter,system-ui,sans-serif;transition:border-color .12s,box-shadow .12s;position:relative;transform:rotate(-1deg)}.node-sticky.hovered{border-color:#0000002e;box-shadow:0 1px 4px #0000000f}.node-sticky.selected{border:1.5px solid var(--accent)!important}.node-sticky.dragging{opacity:.85;cursor:grabbing}.node-sticky.connected-flash{border-color:var(--status-done)!important}.node-text{color:var(--text-primary);cursor:default;box-sizing:border-box;min-width:60px;padding:4px 0;font-family:Inter,system-ui,sans-serif;font-size:16px;font-weight:500;line-height:1.4}.node-text.selected{outline:2px solid var(--accent);border-radius:4px}.node-image{background:var(--bg-surface);border:.5px solid var(--border-default);border-radius:var(--radius-node);box-sizing:border-box;cursor:default;font-family:Inter,system-ui,sans-serif;transition:border-color .12s,box-shadow .12s;position:relative;overflow:hidden}.node-image.hovered{border-color:var(--border-strong);box-shadow:0 1px 3px #0000000a}.node-image.selected{border:1.5px solid var(--accent)!important}.node-image.dragging{opacity:.85;cursor:grabbing}.node-image.connected-flash{border-color:var(--status-done)!important}.node-image-wrap{flex-direction:column;width:100%;height:100%;display:flex}.node-image-img{object-fit:cover;pointer-events:none;-webkit-user-select:none;user-select:none;flex:1;width:100%;min-height:80px;display:block}.node-image-name{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;pointer-events:none;border-top:1px solid var(--border-subtle);background:var(--bg-surface);padding:5px 10px 6px;font-size:11px;overflow:hidden}.anchor-point{fill:var(--accent);stroke:#fff;stroke-width:1.5px;cursor:crosshair;opacity:0;r:5;transition:opacity .15s}.node-group:hover .anchor-point,.node-group.show-anchors .anchor-point{opacity:1}.connector-path{fill:none;stroke:var(--border-strong);stroke-width:1px;cursor:pointer;transition:stroke .15s,opacity .15s}.connector-path:hover{stroke:var(--accent);stroke-width:1.5px}.connector-path.depends-on{stroke-dasharray:4 2}.connector-path.blocks{stroke:var(--status-blocked);stroke-width:1.5px;stroke-dasharray:6 3}.connector-path.relates-to{stroke-width:.5px}.connector-path.dimmed{opacity:.25}.connector-path.highlighted{stroke:var(--accent);stroke-width:1.5px}.connector-ghost{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:5 3;pointer-events:none;opacity:.7}#selection-rect{fill:color-mix(in srgb, var(--accent) 8%, transparent);stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 2;pointer-events:none}#canvas-hint{transform:translate(-50%, -50%) translateX(calc(var(--toolbar-width) / 2));text-align:center;pointer-events:none;-webkit-user-select:none;user-select:none;transition:opacity .4s;position:fixed;top:50%;left:50%}#canvas-hint p{color:var(--text-tertiary);font-size:14px;line-height:1.8}#canvas-hint .hint-key{background:var(--bg-tertiary);border:1px solid var(--border-default);color:var(--text-secondary);border-radius:5px;padding:1px 6px;font-size:12px;font-weight:500;display:inline-block}.resize-handle{cursor:nwse-resize;opacity:0;width:12px;height:12px;transition:opacity .15s;position:absolute;bottom:3px;right:3px}.node-card:hover .resize-handle,.node-card.selected .resize-handle{opacity:1}.resize-handle svg{width:10px;height:10px;stroke:var(--text-tertiary);stroke-width:1.5px}.node-edit-overlay{background:var(--bg-surface);border-radius:var(--radius-node);z-index:10;flex-direction:column;gap:4px;padding:10px 12px 10px 18px;display:flex;position:absolute;inset:0}.node-edit-overlay.sticky{background:#fff8e1;padding:10px 12px}.node-edit-title{color:var(--text-primary);resize:none;background:0 0;border:none;outline:none;width:100%;min-height:22px;font-family:inherit;font-size:14px;font-weight:500}.node-edit-desc{color:var(--text-secondary);resize:none;background:0 0;border:none;outline:none;width:100%;min-height:18px;font-family:inherit;font-size:12px}#context-menu{background:var(--bg-surface);border:1px solid var(--border-default);z-index:200;border-radius:10px;min-width:160px;padding:5px;display:none;position:fixed;box-shadow:0 4px 16px #00000014,0 1px 3px #0000000f}#context-menu.visible{display:block}.ctx-item{cursor:pointer;color:var(--text-primary);border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-size:13px;transition:background 80ms;display:flex}.ctx-item:hover{background:var(--bg-secondary)}.ctx-item.danger{color:var(--status-blocked)}.ctx-item svg{stroke-width:1.5px;width:14px;height:14px;color:var(--text-secondary);flex-shrink:0}.ctx-item.danger svg{color:var(--status-blocked)}.ctx-divider{background:var(--border-subtle);height:1px;margin:4px 0}.auth-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:500;background:#00000059;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.auth-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:16px;width:100%;max-width:400px;padding:36px;box-shadow:0 20px 60px #0000001f}.auth-logo{align-items:center;gap:10px;margin-bottom:28px;display:flex}.auth-logo svg{flex-shrink:0;width:32px;height:32px}.auth-logo span{color:var(--text-primary);font-size:15px;font-weight:500}.auth-step{display:none}.auth-step.active{display:block}.auth-title{color:var(--text-primary);margin:0 0 8px;font-size:20px;font-weight:500}.auth-subtitle{color:var(--text-secondary);margin:0 0 24px;font-size:13px;line-height:1.6}.auth-field{margin-bottom:12px}.auth-field label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:11px;font-weight:500;display:block}.auth-field input,.auth-otp-wrap input{border:1px solid var(--border-default);width:100%;color:var(--text-primary);background:var(--bg-surface);box-sizing:border-box;border-radius:8px;outline:none;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .12s}.auth-field input:focus,.auth-otp-wrap input:focus{border-color:var(--accent)}.auth-otp-wrap{margin-bottom:12px}.auth-otp-wrap input{letter-spacing:10px;text-align:center;color:var(--accent);padding:14px;font-size:28px;font-weight:500}.auth-error{color:var(--status-blocked);margin-bottom:10px;font-size:12px;line-height:1.4;display:none}.auth-btn{cursor:pointer;border:none;border-radius:8px;width:100%;margin-bottom:8px;padding:11px;font-family:inherit;font-size:14px;font-weight:500;transition:background .12s,opacity .12s;display:block}.auth-btn.primary{background:var(--accent);color:#fff}.auth-btn.primary:hover{background:#4840a5}.auth-btn.primary:disabled{opacity:.6;cursor:not-allowed}.auth-btn.secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-default)}.auth-btn.secondary:hover{background:var(--bg-tertiary)}.auth-btn.secondary:disabled{opacity:.6;cursor:not-allowed}.auth-btn.ghost{color:var(--text-secondary);background:0 0;font-weight:400}.auth-btn.ghost:hover{background:var(--bg-secondary)}.auth-dev-hint{color:var(--text-secondary);background:#fff8e1;border-radius:6px;align-items:center;gap:6px;margin-top:8px;padding:8px 12px;font-size:12px;display:flex}.auth-dev-hint strong{color:var(--text-primary);letter-spacing:2px;font-weight:500}.auth-success-icon{justify-content:center;margin-bottom:20px;display:flex}.auth-success-icon svg{width:48px;height:48px}.user-badge{border-radius:var(--radius-ui);cursor:pointer;width:44px;height:44px;color:var(--text-secondary);background:0 0;border:none;justify-content:center;align-items:center;margin-top:4px;transition:background .12s,color .12s;display:flex}.user-badge:hover{background:var(--bg-secondary);color:var(--text-primary)}.user-badge svg{stroke-width:1.5px;width:18px;height:18px}.user-badge.logged-in{background:var(--accent-soft)}.user-badge-initials{color:var(--accent);-webkit-user-select:none;user-select:none;font-size:12px;font-weight:500}.account-menu{background:var(--bg-surface);border:1px solid var(--border-default);z-index:300;border-radius:10px;min-width:220px;padding:8px;position:fixed;box-shadow:0 4px 16px #0000001a}.account-menu-email{color:var(--text-primary);padding:6px 8px 2px;font-size:13px;font-weight:500}.account-menu-status{color:var(--text-tertiary);align-items:center;gap:5px;padding:2px 8px 8px;font-size:11px;display:flex}.account-menu-status:before{content:"";background:var(--status-done);border-radius:50%;flex-shrink:0;width:6px;height:6px}.account-menu-logout{cursor:pointer;width:100%;color:var(--text-primary);background:0 0;border:none;border-radius:6px;align-items:center;gap:8px;padding:7px 10px;font-family:inherit;font-size:13px;transition:background 80ms;display:flex}.account-menu-logout:hover{background:var(--bg-secondary)}.account-menu-logout svg{stroke-width:1.5px;width:14px;height:14px;color:var(--text-secondary)}#sync-indicator{color:var(--text-tertiary);pointer-events:none;align-items:center;gap:5px;font-size:11px;transition:opacity .3s;display:flex;position:fixed;bottom:20px;right:20px}#sync-indicator.hidden{opacity:0}#sync-indicator .sync-dot{background:var(--status-done);border-radius:50%;width:6px;height:6px}#sync-indicator.syncing .sync-dot{background:var(--status-progress);animation:1s infinite pulse}#sync-indicator.error .sync-dot{background:var(--status-blocked)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}#workspace-switcher{top:14px;left:calc(var(--toolbar-width) + 16px);z-index:120;-webkit-user-select:none;user-select:none;position:fixed}#workspace-current{border:1px solid var(--border-default);background:var(--bg-surface);min-width:180px;max-width:280px;height:36px;color:var(--text-primary);font:inherit;cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:0 12px;font-size:13px;display:flex;box-shadow:0 1px 4px #0000000a}#workspace-current:hover{background:var(--bg-secondary)}#workspace-current-title{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}#workspace-current-count{color:var(--text-tertiary);flex-shrink:0;font-size:11px}#workspace-menu{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:12px;width:280px;max-height:420px;padding:8px;display:none;position:absolute;top:44px;left:0;box-shadow:0 10px 32px #0000001a}#workspace-menu.open{display:block}.workspace-menu-header{color:var(--text-tertiary);justify-content:space-between;align-items:center;padding:6px 8px 8px;font-size:11px;font-weight:500;display:flex}#workspace-list{flex-direction:column;gap:2px;max-height:300px;display:flex;overflow-y:auto}.workspace-item{width:100%;color:var(--text-primary);background:0 0;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;padding:4px;display:flex}.workspace-item:hover{background:var(--bg-secondary)}.workspace-item.active{background:var(--accent-soft);color:var(--accent)}.workspace-main{min-width:0;color:inherit;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;justify-content:space-between;align-items:center;gap:10px;padding:6px 5px;display:flex}.workspace-item-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:13px;font-weight:500;overflow:hidden}.workspace-item-date{color:var(--text-tertiary);flex-shrink:0;font-size:11px}.workspace-actions{flex-shrink:0;align-items:center;gap:2px;display:none}.workspace-item:hover .workspace-actions,.workspace-item.active .workspace-actions{display:flex}.workspace-action{height:24px;color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:0 6px;font-size:11px}.workspace-action:hover:not(:disabled){background:var(--bg-tertiary);color:var(--text-primary)}.workspace-action.danger{color:var(--status-blocked)}.workspace-action:disabled{opacity:.35;cursor:not-allowed}.workspace-empty{color:var(--text-tertiary);padding:12px 8px;font-size:12px;line-height:1.5}#workspace-create{border:1px solid var(--border-default);background:var(--bg-surface);width:100%;color:var(--accent);font:inherit;cursor:pointer;border-radius:8px;margin-top:8px;padding:9px 10px;font-size:13px;font-weight:500}#workspace-create:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent)}#workspace-create:disabled{color:var(--text-tertiary);cursor:not-allowed;background:var(--bg-secondary)}
