.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:-webkit-grab;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:-webkit-grab;cursor:grab}.react-flow__node.dragging{cursor:-webkit-grabbing;cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:-webkit-grab;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}:root{font-family:Inter,Avenir,Helvetica,Arial,sans-serif;font-size:16px;line-height:24px;color:#0f0f0f;background-color:#f6f6f6;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;--border: #ececec;--surface: #fff;--text: #0f0f0f;--accent: #4aa3e8;--accent-hover: #2f8ed8;--accent-fg: #fff;--ok: #1f7a3a;--err: #b91c1c;--warn: #c97e07;--surface-1: var(--surface);--surface-2: #fafafa;--bg-soft: rgba(15, 15, 15, .045);--bg-soft-strong: rgba(15, 15, 15, .08);--text-muted: rgba(15, 15, 15, .6);--text-faint: rgba(15, 15, 15, .42);--border-soft: rgba(15, 15, 15, .08);--accent-soft: color-mix(in srgb, var(--accent) 14%, transparent);--ok-soft: color-mix(in srgb, var(--ok) 12%, transparent);--err-soft: color-mix(in srgb, var(--err) 10%, transparent);--warn-soft: color-mix(in srgb, var(--warn) 12%, transparent);--bp-font: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--bp-faint: #a1a1aa;--bp-track: .05em}:root{--lpx-font-ui: "Onest", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--lpx-font-display: "Unbounded", "Onest", system-ui, sans-serif;--lpx-ink: #14120f;--lpx-ink-65: rgba(20, 18, 15, .65);--lpx-ink-50: rgba(20, 18, 15, .5);--lpx-ink-45: rgba(20, 18, 15, .45);--lpx-ink-40: rgba(20, 18, 15, .4);--lpx-hairline: rgba(20, 18, 15, .08);--lpx-field: rgba(20, 18, 15, .05);--lpx-track: rgba(20, 18, 15, .12);--lpx-page: #efede7;--lpx-surface: #fbfaf7;--lpx-white: #fff;--lpx-lime: #c9ff3d;--lpx-blue: #1f5bff;--lpx-blue-hover: #0b3ecc;--lpx-violet: #7b4dff;--lpx-pastel-violet: #efe2ff;--lpx-pastel-blue: #d9eeff;--lpx-pastel-green: #cff3dd;--lpx-pastel-yellow: #ffe9a6;--lpx-pastel-rose: #ffdce4;--lpx-pastel-pink: #ffb4c6;--lpx-tint-blue: #cbe6ff;--lpx-tint-green: #bfedd1;--lpx-tint-violet: #e6d8ff;--lpx-grid: rgba(20, 18, 15, .04);--lpx-r-5: 5px;--lpx-r-7: 7px;--lpx-r-8: 8px;--lpx-r-11: 11px;--lpx-r-12: 12px;--lpx-r-14: 14px;--lpx-r-16: 16px;--lpx-r-22: 22px;--lpx-r-pill: 999px;--lpx-sh-1: 0 1px 2px rgba(20, 18, 15, .08);--lpx-sh-2: 0 1px 3px rgba(20, 18, 15, .06);--lpx-sh-3: 0 2px 8px rgba(20, 18, 15, .07);--lpx-sh-4: 0 4px 16px rgba(20, 18, 15, .12);--lpx-sh-float: 0 6px 20px rgba(20, 18, 15, .14), 0 0 0 1px rgba(20, 18, 15, .06);--lpx-sh-input: 0 8px 24px rgba(20, 18, 15, .1);--lpx-sh-card1: 0 2px 8px rgba(20, 18, 15, .08);--lpx-sh-selected: 0 6px 18px rgba(31, 91, 255, .16);--lpx-t-hover: .14s ease-out;--lpx-t-enter: .24s ease-out}:root[data-theme=dark]{color:#f6f6f6;background-color:#2f2f2f;--border: #444;--surface: #3a3a3a;--text: #f6f6f6;--accent: #6366f1;--accent-hover: #4f52d8;--accent-fg: #fff;--ok: #5bd57c;--err: #f87171;--warn: #e6b24e;--surface-1: var(--surface);--surface-2: #353535;--bg-soft: rgba(255, 255, 255, .06);--bg-soft-strong: rgba(255, 255, 255, .1);--text-muted: rgba(246, 246, 246, .72);--text-faint: rgba(246, 246, 246, .52);--border-soft: rgba(255, 255, 255, .1);--bp-faint: #71717a}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;color:var(--text);background:var(--surface-2)}#root{min-height:100vh;display:grid;place-items:center;padding:24px}.panel{width:100%;max-width:420px;background:var(--surface-1);border:1px solid var(--border);border-radius:12px;padding:28px}.panel h1{margin:0 0 4px;font-size:22px;line-height:28px}.panel .subtitle{margin:0 0 24px;color:var(--text-muted);font-size:14px}.field{display:block;margin-bottom:14px}.field span{display:block;margin-bottom:6px;font-size:13px;color:var(--text-muted)}.field input{width:100%;padding:10px 12px;font:inherit;font-size:15px;color:var(--text);background:var(--surface-1);border:1px solid var(--border);border-radius:8px}.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}button{font:inherit;cursor:pointer;border-radius:8px;border:1px solid transparent;transition:background-color .12s ease}button:disabled{opacity:.55;cursor:default}.button-primary{width:100%;padding:11px 16px;margin-top:6px;font-size:15px;color:var(--accent-fg);background:var(--accent)}.button-primary:hover:not(:disabled){background:var(--accent-hover)}.button-link{padding:0;background:none;border:none;color:var(--accent);font-size:14px;text-decoration:underline}.button-ghost{padding:6px 10px;font-size:13px;color:var(--text-muted);background:var(--bg-soft);border-color:var(--border-soft)}.button-ghost:hover:not(:disabled){background:var(--bg-soft-strong)}.form-footer{margin-top:18px;font-size:14px;color:var(--text-muted);text-align:center}.alert{margin-bottom:16px;padding:10px 12px;border-radius:8px;font-size:14px;background:var(--err-soft);color:var(--err);border:1px solid color-mix(in srgb,var(--err) 25%,transparent)}.status-panel{max-width:560px}.status-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:20px}.status-head .email{font-size:14px;color:var(--text-muted)}.state{display:flex;align-items:center;gap:10px;padding:14px 16px;border-radius:10px;font-size:17px;font-weight:500;margin-bottom:18px;border:1px solid transparent}.state .dot{width:10px;height:10px;border-radius:50%;background:currentColor;flex:none}.state[data-state=connected]{color:var(--ok);background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 25%,transparent)}.state[data-state=connecting]{color:var(--warn);background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 25%,transparent)}.state[data-state=connecting] .dot{animation:pulse 1.1s ease-in-out infinite}.state[data-state=disconnected]{color:var(--err);background:var(--err-soft);border-color:color-mix(in srgb,var(--err) 25%,transparent)}@keyframes pulse{50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.state[data-state=connecting] .dot{animation:none}}.counter{display:flex;align-items:baseline;gap:12px;padding:18px 16px;margin-bottom:18px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:10px}.counter .value{font-family:var(--bp-font);font-size:40px;line-height:1;font-variant-numeric:tabular-nums}.counter .label{font-size:13px;color:var(--text-muted)}.facts{display:grid;grid-template-columns:max-content 1fr;gap:8px 16px;font-family:var(--bp-font);font-size:12.5px;margin-bottom:18px}.facts dt{color:var(--bp-faint);text-transform:uppercase;letter-spacing:var(--bp-track)}.facts dd{margin:0;color:var(--text-muted);overflow-wrap:anywhere}.status-actions{display:flex;gap:8px;justify-content:flex-end}.hint{margin:0 0 18px;padding:10px 12px;font-size:13px;line-height:19px;color:var(--text-muted);background:var(--bg-soft);border-radius:8px}.hint code{font-family:var(--bp-font);font-size:12px}.selfcheck{max-width:420px;margin:14px auto 0;padding:8px 10px;font-family:var(--bp-font);font-size:12px;line-height:18px;color:var(--text-muted);background:var(--bg-soft);border-radius:8px;overflow-wrap:anywhere}.selfcheck[data-ok=true]{color:var(--ok);background:var(--ok-soft)}.selfcheck[data-ok=false]{color:var(--err);background:var(--err-soft)}.selfcheck code{font-size:11.5px}.workspace{width:100%;max-width:960px;align-self:start;display:grid;gap:16px}.workspace-panel{max-width:none}.board-create{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border:none;border-radius:var(--lpx-r-12);background:var(--lpx-ink);color:var(--lpx-white);font-family:var(--lpx-font-ui);font-size:14px;font-weight:600;cursor:pointer;transition:opacity var(--lpx-t-hover)}.board-create:disabled{opacity:.6;cursor:default}.board-create-plus{color:var(--lpx-lime)}.panel-notice{margin:0 0 12px;padding:6px 12px;border-radius:var(--lpx-r-pill);background:var(--lpx-pastel-yellow);color:var(--lpx-ink);font-size:12.5px}.panel-notice.create-failed{margin:12px 0 0}:root.lpx-board #root,:root.lpx-dashboard #root{display:block;padding:0}:root.lpx-board .workspace,:root.lpx-dashboard .workspace{max-width:none;gap:0;justify-items:center}.board-shell{position:relative;display:flex;flex-direction:column;width:100%;min-height:100vh;min-height:100dvh;font-family:var(--lpx-font-ui);color:var(--lpx-ink);background:var(--lpx-surface)}.topbar{position:relative;z-index:12;flex:none;display:flex;align-items:center;height:52px;padding:0 14px;background:var(--lpx-white);border-bottom:1px solid var(--lpx-hairline)}.topbar-left,.topbar-right{flex:none;display:flex;align-items:center;gap:8px}.topbar-add{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin:0 4px;padding:0;border:none;border-radius:var(--lpx-r-8);background:var(--lpx-ink);color:var(--lpx-lime);transition:background-color var(--lpx-t-hover)}.topbar-add:hover:not(:disabled){background:#2a2620}.topbar-divider{flex:none;width:1px;height:18px;margin:0 6px;background:#14120f1a}.topbar-center{flex:1 1 auto;min-width:0;display:flex;align-items:center;justify-content:center;gap:8px}.topbar-crumb{flex:none;font-size:13.5px;font-weight:400;color:var(--lpx-ink-45)}.topbar-title{margin:0;max-width:42ch;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:14.5px;font-weight:600;line-height:1.2;color:var(--lpx-ink)}.topbar-boards{max-width:190px;padding:4px 8px;font:inherit;font-size:12.5px;color:var(--lpx-ink);background:var(--lpx-field);border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-8)}.topbar-avatar{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--lpx-r-pill);background:var(--lpx-pastel-green);font-size:11px;font-weight:600;color:var(--lpx-ink)}.sync-chip{display:inline-flex;align-items:center;gap:5px;flex:none;padding:3px 6px;border-radius:var(--lpx-r-5);background:var(--lpx-field);color:var(--lpx-ink-65);font-family:var(--bp-font);font-size:10px;line-height:1;letter-spacing:var(--bp-track);text-transform:uppercase;white-space:nowrap}.sync-chip-dot{width:5px;height:5px;border-radius:var(--lpx-r-pill);background:currentColor;opacity:.45}.sync-chip[data-state=syncing] .sync-chip-dot{opacity:1;animation:pulse 1.1s ease-in-out infinite}.sync-chip[data-state=saving] .sync-chip-dot{opacity:1;background:var(--lpx-lime);box-shadow:0 0 0 1px #14120f1f}.sync-chip[data-state=offline]{background:var(--lpx-pastel-rose);color:var(--lpx-ink)}@media(prefers-reduced-motion:reduce){.sync-chip[data-state=syncing] .sync-chip-dot{animation:none}}.board-debug{flex:none;display:grid;gap:12px;padding:16px;background:var(--surface-2);color:var(--text);border-top:1px solid var(--border);font-family:var(--bp-font)}.board-actions{display:flex;align-items:center;gap:12px}.board-alert{position:absolute;top:64px;left:50%;transform:translate(-50%);z-index:30;max-width:60ch;margin:0}.hint-inline{font-family:var(--bp-font);font-size:12px;color:var(--text-muted)}.queue{padding:10px 12px;border:1px solid var(--border-soft);border-radius:8px;background:var(--surface-2)}.queue[data-pending=true]{border-color:var(--warn);background:var(--warn-soft)}.queue-head{display:flex;align-items:baseline;gap:8px}.queue-count{font-family:var(--bp-font);font-size:22px;font-variant-numeric:tabular-nums}.queue-label,.queue-last{font-size:12.5px;color:var(--text-muted)}.queue-last{margin:6px 0 0;font-family:var(--bp-font)}.queue-rejected{margin:8px 0 0;padding-left:18px;font-size:12.5px;color:var(--err)}.queue-rejected code{font-family:var(--bp-font)}.queue-error{margin:8px 0 0;font-size:12.5px;color:var(--err)}.invite{position:relative;flex:none}.invite-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:40;display:grid;gap:8px;width:min(360px,80vw);padding:12px;font-size:12.5px;color:var(--lpx-ink);background:var(--lpx-white);border-radius:var(--lpx-r-12);box-shadow:var(--lpx-sh-float)}.invite-row,.invite-actions{display:flex;gap:6px}.invite-button,.invite-copy,.invite-create,.invite-revoke,.invite-link{padding:5px 10px;font:inherit;font-size:12.5px;color:var(--lpx-ink);background:var(--lpx-field);border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-8);transition:background-color var(--lpx-t-hover)}.invite-button{border-radius:var(--lpx-r-pill);font-weight:500}.invite-button:hover,.invite-copy:hover{background:var(--lpx-track)}.invite-link{flex:1 1 auto;min-width:0;font-size:11.5px}.invite-create{color:var(--lpx-white);background:var(--lpx-ink)}.invite-revoke{color:var(--err)}.invite-hint,.invite-expires,.invite-neutral,.invite-still-active,.invite-error{margin:0;color:var(--lpx-ink-65)}.invite-error{color:var(--err)}.members{display:grid;gap:6px;padding-top:8px;border-top:1px solid var(--lpx-hairline)}.members-title{margin:0;font-weight:500}.members-list{display:grid;gap:4px;margin:0;padding:0;list-style:none}.member-row{display:flex;align-items:baseline;gap:6px}.member-email{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-name,.member-role{flex:none;font-size:11.5px;color:var(--lpx-ink-65)}.member-confirm{display:flex;flex:none;gap:4px}.member-remove,.member-remove-confirm,.member-remove-cancel{flex:none;padding:3px 8px;font:inherit;font-size:11.5px;color:var(--lpx-ink);background:var(--lpx-field);border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-8);transition:background-color var(--lpx-t-hover)}.member-remove:hover,.member-remove-cancel:hover{background:var(--lpx-track)}.member-remove-confirm{color:var(--lpx-white);background:var(--err);border-color:var(--err)}.board-notice{position:absolute;top:64px;left:50%;transform:translate(-50%);z-index:30;max-width:60ch;margin:0;padding:6px 12px;font-size:12.5px;color:var(--lpx-ink);background:var(--lpx-pastel-yellow);border-radius:var(--lpx-r-pill);box-shadow:var(--lpx-sh-2)}.roadmap-canvas{position:relative;flex:1 1 auto;height:calc(100vh - 52px);height:calc(100dvh - 52px);min-height:320px;background:var(--lpx-surface);font-family:var(--lpx-font-ui);color:var(--lpx-ink);overflow:hidden;overflow:clip}.roadmap-canvas .react-flow{overflow:hidden!important;overflow:clip!important}.roadmap-canvas .react-flow__node{background:transparent;border:none;padding:0;width:auto;font-size:inherit;color:var(--lpx-ink)}.roadmap-canvas .react-flow__edge-path{stroke-linecap:round;fill:none}.tree-node{position:relative;width:max-content;max-width:300px;display:flex;flex-direction:column;gap:6px;text-align:left;border:1px solid transparent;border-radius:var(--lpx-r-14);cursor:default;transition:transform var(--lpx-t-hover),box-shadow var(--lpx-t-hover)}.tree-node--d1{padding:13px 16px;border-radius:var(--lpx-r-16);box-shadow:var(--lpx-sh-card1)}.tree-node--d1 .tree-node-title{font-size:15px;font-weight:600}.tree-node--d2,.tree-node--deep{padding:11px 15px;box-shadow:var(--lpx-sh-2)}.tree-node--d2 .tree-node-title{font-size:14.5px;font-weight:500}.tree-node--deep .tree-node-title{font-size:14px;font-weight:500}.tree-node--leaf:hover{transform:translateY(-1px);box-shadow:var(--lpx-sh-3)}.tree-node--editing{box-shadow:0 0 0 2px var(--lpx-blue),var(--lpx-sh-selected)}.tree-node--shadow{border-style:dashed;box-shadow:none;color:var(--lpx-ink-45)}.tree-node--shadow:hover{box-shadow:none}.tree-node-title{font-weight:600;font-size:14.5px;line-height:1.25;align-self:flex-start;max-width:100%;color:inherit;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;word-break:break-word}.tree-node-untitled{color:var(--lpx-ink-45);font-weight:400}.tree-node-title--editing{display:block;-webkit-line-clamp:none;overflow:visible;min-width:8ch;outline:none;cursor:text;min-height:1.25em}.tree-node-body{font-size:12.5px;line-height:1.45;color:var(--lpx-ink-65)}.tree-node--section{width:230px;max-width:230px;padding:22px;gap:10px;justify-content:flex-start;border:none;border-radius:var(--lpx-r-22);box-shadow:none}.section-label{flex:none;font-family:var(--bp-font);font-size:11px;line-height:1;letter-spacing:var(--bp-track);text-transform:uppercase;color:var(--lpx-ink-40)}.tree-node--section .tree-node-title{font-size:24px;font-weight:600;line-height:1.15;-webkit-line-clamp:2;color:var(--lpx-ink)}.tree-node--section.tree-node--editing{box-shadow:0 0 0 2px var(--lpx-blue),var(--lpx-sh-selected)}.tree-node-toolbar{--toolbar-gap: 6px;position:absolute;top:100%;left:0;z-index:8;margin-top:var(--toolbar-gap);display:flex;align-items:center;gap:1px;padding:4px 5px;border-radius:var(--lpx-r-11);background:var(--lpx-white);box-shadow:var(--lpx-sh-float);opacity:0;pointer-events:none;transition:opacity var(--lpx-t-enter)}.tree-node-toolbar:before{content:"";position:absolute;left:0;right:0;top:calc(-1 * var(--toolbar-gap));height:var(--toolbar-gap)}.tree-node:hover>.tree-node-toolbar{opacity:1;pointer-events:auto}.tree-node--section .tree-node-toolbar{position:static;align-self:flex-start;margin-top:12px}.tree-node--section .tree-node-toolbar:before{content:none}.node-tool{display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;padding:0;border:none;border-radius:var(--lpx-r-8);background:transparent;color:var(--lpx-ink);font-family:var(--bp-font);font-size:11px;font-weight:500;cursor:pointer;transition:background-color var(--lpx-t-hover)}.node-tool:hover:not(:disabled),.node-tool:focus-visible{background:var(--lpx-field);outline:none}.node-tool--danger:hover:not(:disabled){background:#e04e7b24;color:#c7365e}.node-tool-sep{flex:none;width:1px;height:18px;margin:0 4px;background:#14120f1a}.node-action-chip.is-drag{cursor:grab;touch-action:none}.node-action-chip.is-drag:active:not(:disabled){cursor:grabbing}.collapse-stub{position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%);z-index:8;display:inline-flex;padding:0;border:none;background:transparent;cursor:pointer;font-family:var(--lpx-font-ui)}.collapse-stub:focus-visible{outline:2px solid var(--lpx-blue);outline-offset:2px;border-radius:999px}.collapse-stub-sheet{position:absolute;border-radius:999px}.collapse-stub-pill{position:relative;display:block;padding:9px 18px;border-radius:999px;font-size:15px;font-weight:600;line-height:1;color:var(--lpx-ink);box-shadow:0 1px 3px #14120f1f;transition:transform var(--lpx-t-hover)}.collapse-stub--tinted .collapse-stub-pill{box-shadow:none}.collapse-stub:hover .collapse-stub-pill{transform:translateY(-1px)}@media(prefers-reduced-motion:reduce){.tree-node,.tree-node-toolbar,.node-tool,.collapse-stub-pill{transition:none}.tree-node--leaf:hover,.collapse-stub:hover .collapse-stub-pill{transform:none}}body.dragging-subtree,body.dragging-subtree *{cursor:grabbing!important;user-select:none!important}.roadmap-canvas .react-flow__node.is-drag-source .tree-node{opacity:.4}.roadmap-canvas .react-flow__node.drop-target-ok .tree-node{box-shadow:0 0 0 2px #1fa36b}.roadmap-canvas .react-flow__node.drop-target-bad .tree-node{box-shadow:0 0 0 2px #e04e7b;cursor:not-allowed}.drag-ghost{position:fixed;z-index:1000;transform:translate(12px,10px);max-width:240px;padding:.3em .6em;border:1px solid var(--accent);border-radius:6px;background:var(--surface);color:var(--text);font-size:.85em;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 6px 18px #00000038;pointer-events:none;opacity:.95}.node-context-menu{position:fixed;z-index:1200;display:flex;flex-direction:column;gap:2px;min-width:190px;padding:4px;font-family:var(--bp-font);background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 24px #0000002e}.node-context-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:11px;letter-spacing:var(--bp-track);text-align:left;cursor:pointer}.node-context-menu-item span{flex:1}.node-context-menu-item kbd{font-family:inherit;font-size:10px;color:var(--text-faint)}.node-context-menu-item:hover,.node-context-menu-item:focus-visible{background:var(--bg-soft);outline:none}.node-context-menu-sep{height:1px;margin:2px 4px;background:var(--border)}.node-context-menu-delete{color:var(--err)}.node-context-menu-delete:hover,.node-context-menu-delete:focus-visible{background:var(--err-soft)}.undo-toast{position:absolute;left:50%;bottom:20px;transform:translate(-50%);z-index:20;display:inline-flex;align-items:center;gap:12px;max-width:calc(100% - 32px);padding:.55em .9em;border:1px solid var(--border);border-radius:8px;background:var(--surface);box-shadow:0 8px 24px #00000038;font-size:.85em}.undo-toast-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.undo-toast-action{flex:none;border:none;background:none;padding:0;color:var(--accent);font:inherit;font-weight:600;cursor:pointer}.undo-toast-action:hover{text-decoration:underline}.undo-toast-close{flex:none;border:none;background:none;padding:0;color:inherit;opacity:.5;font:inherit;line-height:1;cursor:pointer}.undo-toast-close:hover{opacity:1}.focus-breadcrumbs{position:absolute;top:16px;left:16px;z-index:10;display:inline-flex;align-items:center;gap:4px;max-width:calc(100% - 32px);overflow:hidden;padding:6px 12px;border-radius:6px;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--surface));box-shadow:0 4px 12px #00000026;font-size:.82em;letter-spacing:.02em;line-height:1}.focus-breadcrumbs-lead{color:var(--accent);margin-right:2px}.focus-breadcrumb-item{display:inline-flex;align-items:center;gap:2px;min-width:0}.focus-breadcrumb-sep{opacity:.5}.focus-breadcrumb-btn{background:none;border:none;padding:0 1px;max-width:14ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--accent);cursor:pointer;font:inherit;font-weight:500}.focus-breadcrumb-btn:hover:not(:disabled){text-decoration:underline}.focus-breadcrumb-btn.is-current{color:inherit;opacity:.75;font-weight:600;cursor:default}.focus-clear-btn{background:none;border:none;padding:0 1px;margin-left:2px;color:inherit;opacity:.55;cursor:pointer;font:inherit;line-height:1}.focus-clear-btn:hover{opacity:1;color:var(--err)}.empty-canvas-banner{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;pointer-events:none;font-family:var(--lpx-font-ui)}.empty-input{pointer-events:auto;width:min(360px,100%);padding:14px 18px;border:2px solid var(--lpx-blue);border-radius:var(--lpx-r-16);background:var(--lpx-white);box-shadow:var(--lpx-sh-input);font-family:inherit;font-size:17px;font-weight:500;line-height:1.15;color:var(--lpx-ink);text-align:center}.empty-input::placeholder{color:var(--lpx-ink-45);font-weight:500}.empty-input:focus{outline:none}.empty-hints{display:flex;gap:8px}.empty-hint{padding:4px 8px;border-radius:var(--lpx-r-7);background:#14120f0f;font-family:var(--bp-font);font-size:11px;line-height:1;letter-spacing:var(--bp-track);color:var(--lpx-ink-65)}.empty-note{margin:0;max-width:42ch;font-size:13.5px;color:var(--lpx-ink-45)}.zoom-pill{position:absolute;right:24px;bottom:24px;z-index:14;display:flex;flex-direction:column;align-items:stretch;gap:6px;font-family:var(--bp-font)}.zoom-pill-btn{padding:7px 12px;border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-pill);background:var(--lpx-white);color:var(--lpx-ink);font-family:inherit;font-size:12.5px;line-height:1;font-variant-numeric:tabular-nums;box-shadow:var(--lpx-sh-2);transition:background-color var(--lpx-t-hover)}.zoom-pill-btn:hover:not(:disabled){background:var(--lpx-field)}.zoom-presets{display:flex;flex-direction:column;gap:1px;padding:4px;border-radius:var(--lpx-r-11);background:var(--lpx-white);box-shadow:var(--lpx-sh-float)}.zoom-preset{padding:6px 10px;border:none;border-radius:var(--lpx-r-8);background:transparent;color:var(--lpx-ink);font-family:inherit;font-size:12px;line-height:1;text-align:center;transition:background-color var(--lpx-t-hover)}.zoom-preset:hover:not(:disabled),.zoom-preset:focus-visible{background:var(--lpx-field);outline:none}@media(prefers-reduced-motion:reduce){.empty-caret{animation:none}.empty-start,.zoom-pill-btn,.zoom-preset{transition:none}}.drag-ghost,.undo-toast,.node-context-menu,.focus-breadcrumbs{background:var(--lpx-white);color:var(--lpx-ink);border-color:var(--lpx-hairline);font-family:var(--lpx-font-ui);box-shadow:var(--lpx-sh-float)}.drag-ghost{border-color:var(--lpx-blue)}.undo-toast-action,.focus-breadcrumb-btn,.focus-breadcrumbs-lead{color:var(--lpx-blue)}.focus-breadcrumb-btn.is-current,.focus-clear-btn{color:var(--lpx-ink-65)}.node-context-menu-item{color:var(--lpx-ink)}.node-context-menu-delete{color:#c7365e}.dashboard{display:grid;grid-template-columns:262px minmax(0,1fr);width:100%;min-height:100vh;min-height:100dvh;font-family:var(--lpx-font-ui);color:var(--lpx-ink);background:var(--lpx-page)}.dash-sidebar{display:flex;flex-direction:column;padding:18px 14px;background:var(--lpx-white);border-right:1px solid var(--lpx-hairline)}.dash-logo{display:flex;align-items:center;gap:8px;padding:6px 8px;margin-bottom:22px}.dash-logo-word{font-family:var(--lpx-font-display);font-size:20px;font-weight:800;letter-spacing:-.02em;color:var(--lpx-ink)}.dash-logo-px{color:var(--lpx-blue)}.dash-nav{display:flex;flex-direction:column;gap:2px}.dash-nav-item{display:flex;align-items:center;gap:11px;width:100%;padding:10px 14px;border:0;border-radius:var(--lpx-r-12);background:none;font-family:inherit;font-size:14.5px;font-weight:400;line-height:1.2;text-align:left;color:var(--lpx-ink-65);transition:background var(--lpx-t-hover),color var(--lpx-t-hover)}button.dash-nav-item{cursor:pointer}button.dash-nav-item:not(.is-active):hover{background:var(--lpx-field);color:var(--lpx-ink)}.dash-nav-item.is-active{background:var(--lpx-pastel-violet);font-weight:600;color:var(--lpx-ink)}.dash-nav-icon{flex:none}.dash-main{display:flex;flex-direction:column;min-width:0}.dash-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:16px;height:66px;padding:0 30px;background:var(--lpx-white);border-bottom:1px solid var(--lpx-hairline)}.dash-head-title{display:flex;align-items:baseline;gap:10px;min-width:0}.dash-title{margin:0;font-family:var(--lpx-font-display);font-size:22px;font-weight:800;line-height:1;color:var(--lpx-ink)}.boards-total{font-family:var(--bp-font);font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--lpx-ink-40);white-space:nowrap}.dash-head-actions{display:flex;align-items:center;gap:14px}.dash-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border-radius:var(--lpx-r-pill);background:var(--lpx-pastel-green);font-size:12.5px;font-weight:600;color:var(--lpx-ink)}.dash-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:22px 30px 30px}.board-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}.board-row{display:flex;align-items:center;gap:16px;padding:14px 18px;background:var(--lpx-white);border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-16);cursor:pointer;transition:box-shadow var(--lpx-t-hover),border-color var(--lpx-t-hover)}.board-row:hover{border-color:#14120f29;box-shadow:var(--lpx-sh-2)}.board-row:focus-visible{outline:2px solid var(--lpx-blue);outline-offset:2px}.board-row-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}.board-row-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;font-weight:600;color:var(--lpx-ink)}.board-row-meta{font-size:12.5px;color:var(--lpx-ink-50)}.board-row-name-input{width:100%;max-width:420px;padding:2px 8px;font-family:inherit;font-size:15.5px;font-weight:600;color:var(--lpx-ink);background:var(--lpx-field);border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-8)}.board-row-name-input:focus{outline:none;border-color:var(--lpx-blue);box-shadow:var(--lpx-sh-input)}.board-row-role{flex:none;padding:4px 9px;border-radius:var(--lpx-r-pill);background:var(--lpx-field);font-size:11.5px;font-weight:500;color:var(--lpx-ink-65)}.board-row-rename,.board-row-delete{display:inline-flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;padding:0;border:none;border-radius:var(--lpx-r-8);background:transparent;color:var(--lpx-ink-45);cursor:pointer;transition:background-color var(--lpx-t-hover),color var(--lpx-t-hover)}.board-row-rename:hover{background:var(--lpx-field);color:var(--lpx-ink)}.board-row-delete:hover{background:var(--lpx-pastel-rose);color:var(--lpx-ink)}.board-row.is-deleted{cursor:default;background:var(--lpx-field)}.board-row.is-deleted:hover{border-color:var(--lpx-hairline);box-shadow:none}.board-row-restore,.board-restore-inline{flex:none;padding:7px 14px;border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-12);background:var(--lpx-white);font-family:var(--lpx-font-ui);font-size:13px;font-weight:600;color:var(--lpx-ink);cursor:pointer;transition:background-color var(--lpx-t-hover),border-color var(--lpx-t-hover)}.board-row-restore:hover,.board-restore-inline:hover{background:var(--lpx-field);border-color:#14120f29}.board-restore-inline{margin-left:10px;padding:3px 10px;font-size:12px;border-color:#14120f29;background:var(--lpx-white)}.board-list-state{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:26px 22px;background:var(--lpx-white);border:1px solid var(--lpx-hairline);border-radius:var(--lpx-r-16)}.board-list-state h2{margin:0;font-family:var(--lpx-font-display);font-size:19px;font-weight:800;line-height:1.15;color:var(--lpx-ink)}.board-list-state .hint{margin:0;max-width:62ch;font-size:13.5px;color:var(--lpx-ink-50)}.dash-body .panel-notice{display:inline-block;margin:0 0 12px}
