:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#202a28;background:#f4f5f1;font-synthesis:none;--muted:#64716b;--line:#dce1d9;--accent:#d6ed9e}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:4px}button{cursor:pointer;border:0;border-radius:9px;background:#263a30;color:#fff;padding:12px 19px;font-weight:600}button:disabled{opacity:.5;cursor:wait}a{color:inherit;text-decoration:none}.mark{display:inline-grid;place-items:center;width:39px;height:39px;border-radius:11px;background:var(--accent);color:#263a30;font-weight:850;font-size:23px}header{height:83px;display:flex;align-items:center;padding:0 4vw;gap:26px;background:#fbfcf8;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;letter-spacing:-.5px}.private{font-size:10px;letter-spacing:2px;color:var(--muted)}header button{margin-left:auto}.quiet{background:transparent;border:1px solid var(--line);color:#34443b;padding:9px 14px}.workspace{max-width:1540px;margin:auto;padding:44px 4vw}.heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;color:#66785a;margin:0 0 15px}h1{font-size:clamp(28px,3.2vw,43px);font-weight:550;letter-spacing:-1.5px;margin:0 0 12px}.muted{color:var(--muted);font-size:14px;line-height:1.5}.capture{padding:22px;background:#fbfcf8;border:1px solid var(--line);border-radius:14px;margin-bottom:28px}.capture label{font-weight:600;font-size:14px}.capture textarea{display:block;width:100%;resize:vertical;border:0;background:transparent;padding:14px 0;color:#25352b;line-height:1.6}.capture>div{display:flex;justify-content:space-between;align-items:center;gap:20px}.capture .muted{font-size:12px}.toolbar{display:flex;align-items:end;gap:25px;margin-bottom:12px}.toolbar input[type=search]{display:block;margin-top:6px;width:260px}.search,.archive{font-size:12px;color:var(--muted)}input,textarea,select{border:1px solid var(--line);border-radius:7px;background:#fff;padding:10px;color:inherit}.archive{padding-bottom:10px}.toolbar #count{margin-left:auto;padding-bottom:6px}.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;align-items:start}.board:has(.column:nth-child(4)){grid-template-columns:repeat(4,minmax(0,1fr))}.column{background:#eaece6;border-radius:14px;padding:16px;min-height:260px}.column h2{font-size:15px;margin:0 0 5px}.small{font-size:12px;margin:0 0 20px}.card{background:#fff;border:1px solid #dfe4dc;border-radius:10px;padding:16px;margin-bottom:12px;box-shadow:0 2px 3px #182d1c05}.card-content{padding:0;background:none;color:inherit;text-align:left;font-size:14px;line-height:1.6;font-weight:450;width:100%;white-space:pre-wrap;overflow-wrap:anywhere}.card-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:10px;margin:17px 0 12px}.card-meta span{text-transform:uppercase;letter-spacing:1px}.card-controls{display:flex;gap:8px}.card-controls select{font-size:11px;padding:6px;width:50%;background:#f8faf6}.empty{font-size:13px;color:#7b867f;padding:30px 0;text-align:center}#message{font-size:13px;color:#685037;min-height:18px}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 20% 20%,#e6ecd9,transparent 60%),#f3f5ef}.login-card{width:min(440px,calc(100% - 40px));padding:40px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 90px #2b442510}.login-card .mark{margin-bottom:30px;width:48px;height:48px}.login-card h1{font-size:40px}.login-card label{display:block;font-size:13px;margin-top:22px}.login-card input{display:block;width:100%;margin-top:8px}.login-card button{width:100%;margin-top:24px}.footnote{font-size:11px;color:var(--muted);margin-top:30px}dialog{border:1px solid var(--line);border-radius:18px;padding:32px;width:min(680px,90vw);max-height:85vh}dialog::backdrop{background:#172d2766}.close{float:right;margin-bottom:20px}.full-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;clear:both}@media(max-width:850px){.board,.board:has(.column:nth-child(4)){grid-template-columns:1fr}.private{display:none}.workspace{padding:28px 20px}.capture>div{align-items:start;flex-direction:column}.toolbar{flex-wrap:wrap;gap:12px}.toolbar #count{margin-left:0}.heading{align-items:start}header{padding:0 20px}}
/* Hierarchical canvas */
body:has(.canvas-board){background-color:#eef0eb;background-image:radial-gradient(#b9c2b580 .7px,transparent .7px);background-size:18px 18px}.workspace:has(.canvas-board){max-width:1800px}.canvas-actions{display:flex;gap:10px;align-items:center;margin:20px 0}.canvas-actions>span{margin-right:auto;font-size:12px}.canvas-board{display:flex;flex-direction:column;gap:22px}.life-lane{background:#f9faf5c9;border:1px solid #d2d9cc;border-radius:15px;overflow:hidden}.life-lane>summary{padding:18px 22px;font-size:18px;font-weight:650;background:#e5eadc;cursor:pointer;letter-spacing:-.3px}.lane-count{font-size:12px;font-weight:500;margin-left:12px;color:#68795e}.project-lane{border-top:1px solid #dce2d6;padding:0 20px 16px}.project-lane>summary{padding:15px 0;color:#58674c;font-size:13px;cursor:pointer;font-weight:600}.lane-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;align-items:start;min-height:85px;border-radius:10px}.lane-cards>.empty{grid-column:1/-1;text-align:left;padding:12px;margin:0}.canvas-card{background:#fff;border:1px solid #d9dfd2;border-radius:11px;box-shadow:0 3px 9px #22351708;min-width:0}.canvas-card>summary{padding:18px;cursor:pointer;list-style:none;display:flex;gap:12px;align-items:start}.canvas-card>summary::before{content:'+';color:#859779;font-size:19px;line-height:22px}.canvas-card[open]>summary::before{content:'−'}.card-title{font-size:14px;line-height:1.5;overflow-wrap:anywhere;flex:1;font-weight:600}.status-badge{font-size:9px;text-transform:uppercase;letter-spacing:.6px;background:#eef1e8;padding:4px 6px;border-radius:5px;color:#68745c;white-space:nowrap}.status-badge.done{background:#dceccb;color:#3d5e2c}.expanded-card{padding:0 18px 18px}.expanded-card>.full-text{font-size:13px;line-height:1.7;border-top:1px solid #edf0e7;padding-top:15px;max-height:360px;overflow:auto}.expanded-card>.small{margin:16px 0}.placement{display:grid;gap:10px}.placement label{font-size:11px;color:#67745e}.placement input,.placement select{display:block;width:100%;margin-top:5px;font-size:12px}.placement button{padding:9px;font-size:12px}.drop-target{background:#d6ed9e80;outline:2px dashed #6b8554;outline-offset:4px}@media(max-width:650px){.canvas-actions{flex-wrap:wrap}.canvas-actions>span{width:100%}.project-lane{padding:0 12px 12px}.lane-cards{grid-template-columns:1fr}.life-lane>summary{font-size:16px}}
/* Full viewport node workspace */
.node-app{--ink:#e7e7ed;--muted:#a1a1ac;margin:0;background:#16171b;color:var(--ink);font:13px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow:hidden;height:100dvh}.node-app *{box-sizing:border-box}.node-app button{background:#303137;color:#dddde5;border:1px solid #51525b;border-radius:7px;padding:7px 10px;cursor:pointer;font:inherit}.node-app button:hover{background:#45464f;border-color:#9999aa}.node-app input,.node-app textarea,.node-app select{background:#38393f;color:#ededf2;border:1px solid #55565f;border-radius:6px;padding:9px;font:inherit}.node-app input[type=checkbox]{width:auto}.node-app button:focus-visible,.node-app input:focus-visible{outline:2px solid #c49ad6;outline-offset:3px}.rail{position:fixed;inset:0 auto 0 0;width:62px;background:#24252b;border-right:1px solid #3d3e46;z-index:5;display:flex;align-items:center;gap:18px;flex-direction:column;padding:18px 8px}.rail button{background:transparent;border:0;font-size:25px;width:44px;height:44px;padding:0}.rail #logout{margin-top:auto}.logo{font-size:25px;letter-spacing:-4px;padding-right:4px;margin-bottom:20px}.floating{background:#25262ded;border:1px solid #45464f;box-shadow:0 8px 26px #0003;border-radius:10px;z-index:4}.topbar{position:fixed;left:82px;top:20px;right:20px;display:flex;align-items:center;gap:24px;padding:12px 18px}.topbar strong{font-size:15px;white-space:nowrap}.topbar strong span{color:#92939f;font-weight:400;margin-left:10px}.topbar #search{margin-left:auto;width:230px}.topbar label{display:flex;gap:8px;align-items:center;color:#aaaab7;white-space:nowrap}#viewport{position:absolute;inset:0 0 0 62px;overflow:hidden;touch-action:none;cursor:grab;background-color:#18191e;background-image:radial-gradient(#494a54 1px,transparent 1px);background-size:24px 24px}#viewport.panning{cursor:grabbing}#world{position:absolute;transform-origin:0 0;width:0;height:0}#wires{position:absolute;left:0;top:0;width:1px;height:1px;overflow:visible;z-index:1}.wire{fill:none;stroke:#83b6af;stroke-width:2;pointer-events:none}.wire.selected{stroke:#e2b1ef;stroke-width:3}.wire-hit{fill:none;stroke:transparent;stroke-width:18;cursor:pointer;pointer-events:stroke}.wire.preview{stroke:#d5a4df;stroke-dasharray:5 5}.node-card{position:absolute;width:310px;background:#292a31;border:1px solid #64656e;border-radius:13px;box-shadow:0 7px 16px #0002;z-index:2;cursor:default}.node-card:hover{border-color:#b0aebd}.node-head{height:48px;display:flex;align-items:center;gap:9px;padding:10px 14px;cursor:grab;touch-action:none}.node-head .node-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px}.node-head button{border:0;background:none;padding:0 3px;color:#b6b5c0;font-size:18px}.node-body{padding:0 13px 13px}.node-text{background:#393a42;border:1px solid #50515b;border-radius:7px;padding:16px;color:#e2e1e8;white-space:pre-wrap;overflow:auto;max-height:250px;min-height:90px;font-size:13px;line-height:1.65}.node-meta{display:flex;justify-content:space-between;color:#a6a5b2;font-size:11px;margin-top:12px}.node-meta span:first-child{color:#b9a4cb}.port{position:absolute!important;top:18px;width:16px;height:16px;padding:0!important;border:3px solid #9bccbf!important;border-radius:50%!important;background:#2a2b32!important;box-shadow:0 0 0 5px #292a31;z-index:3;cursor:crosshair!important}.port.input{left:-9px}.port.output{right:-9px;border-color:#cc9bdc!important}.port:hover,.port.active{background:#e2b5ee!important;box-shadow:0 0 0 7px #ffffff18}.group-frame{position:absolute;border:1px solid #51525c;border-radius:16px;background:#33343b66;pointer-events:none}.group-frame .frame-label{position:absolute;top:12px;left:18px;color:#bebdc9;font-size:13px}.group-frame.project{background:#38394044;border-style:dashed}.bottom{position:fixed;bottom:18px;left:82px;right:20px;padding:9px 13px;display:flex;align-items:center;gap:10px}.bottom #message{font-size:12px;color:#aaa9b8;max-width:45vw}.spacer{flex:1}#count,#zoom{font-size:12px;white-space:nowrap;color:#a8a7b3}#group-panel{position:fixed;top:90px;left:82px;width:230px;padding:16px;max-height:70vh;overflow:auto}#group-panel h3{margin:0 0 12px}#group-list button{display:block;text-align:left;width:100%;margin:6px 0;background:transparent;border-color:#44454e}#group-list .project-nav{padding-left:24px;font-size:12px;color:#aaa}.node-app dialog{background:#292a31;color:#e2e1e8;border:1px solid #65646e;border-radius:14px;width:min(500px,90vw);padding:26px}.node-app dialog::backdrop{background:#0008}.node-app dialog label{display:block;margin:12px 0}.node-app dialog input,.node-app dialog select,.node-app dialog textarea{display:block;width:100%;margin-top:6px}.node-app dialog p{font-size:12px;color:#aaa}.node-app dialog .close{float:right}.node-app [hidden]{display:none!important}@media(max-width:700px){.topbar strong span,.topbar label{display:none}.topbar{gap:12px;left:72px;right:10px;padding:10px}.topbar #search{width:130px}.bottom{left:72px;right:10px;flex-wrap:wrap}.bottom #message{max-width:100%;width:100%}.node-app .rail{width:54px}#viewport{left:54px}}
/* Keep chrome and interaction targets predictable at every canvas scale. */
.node-app{overscroll-behavior:none}.node-app .rail{gap:12px;overflow-y:auto}.node-app .rail button{flex:0 0 40px;width:40px;height:40px;display:grid;place-items:center}.rail svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.topbar{background:#25262d;gap:16px;padding:10px 14px}.topbar #search{min-width:0;max-width:230px;flex:1}.bottom{background:#25262d;min-height:52px}.bottom #message{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1;max-width:none}.bottom .spacer{display:none}.bottom button{flex-shrink:0}.node-head .node-title{min-width:0}.node-head button{flex:0 0 24px;height:24px;line-height:24px;display:grid;place-items:center}.node-text{overscroll-behavior:contain;overflow-wrap:anywhere}.wire,.wire-hit{vector-effect:non-scaling-stroke}.node-app .port{top:26px;left:auto;right:auto;width:24px;height:24px;border:0!important;background:transparent!important;box-shadow:none!important;transform:translate(-50%,-50%) scale(var(--inverse-zoom,1));transform-origin:center;touch-action:none}.node-app .port.input{left:0}.node-app .port.output{left:100%}.port::before{content:'';position:absolute;left:6px;top:6px;width:12px;height:12px;border:2px solid #9bccbf;border-radius:50%;background:#292a31;box-shadow:0 0 0 3px #292a31}.port.output::before{border-color:#cc9bdc}.port:hover::before,.port.active::before{background:#d3a5df;box-shadow:0 0 0 4px #716078}.node-app dialog{position:fixed;margin:auto;max-height:calc(100dvh - 40px);overflow:auto}.node-app dialog .close{width:32px;height:32px;padding:0;margin:0}.node-app dialog form{clear:both}.node-app dialog h2{margin-top:0}.node-app #reset-zoom{min-width:58px;background:transparent;border-color:transparent}.group-frame .frame-label{white-space:nowrap}@media(max-width:700px){.bottom #message{flex-basis:100%;width:100%}.bottom{gap:6px}.topbar strong{font-size:13px}.topbar #search{width:100px}.node-app .rail{gap:8px}}
/* Black canvas; retain subtle grid and gray cards. */
.node-app #viewport{background-color:#000;background-image:radial-gradient(#303037 .7px,transparent .7px)}
.node-app .group-frame{background:#22222866}
.node-app .group-frame.project{background:#2b2b3244}
/* Quiet, compact cards with separate disclosure and action controls. */
.node-app .node-card{background:#24242a;border:1px solid #414148;border-radius:8px;box-shadow:0 3px 10px #0002}.node-app .node-card:hover{border-color:#686872}.node-app .node-head{height:48px;gap:4px;padding:10px 12px}.node-app .node-head .node-title{font-size:12px;font-weight:500;color:#c9c9d0;margin-right:8px}.node-app .node-head button{width:24px;min-width:24px;font-size:17px;color:#96969f;border-radius:4px;line-height:1}.node-app .node-head button:hover,.node-app .node-head button[aria-expanded=true][aria-haspopup]{color:#eee;background:#393940}.node-app .node-body{padding:0 10px 10px}.node-app .node-text{background:#34343b;border:0;border-radius:4px;padding:13px 14px;font-size:12px;line-height:1.65;color:#d8d8df}.node-app .node-meta{margin:10px 3px 0;font-size:10px;color:#82828d}.node-app .node-meta span:first-child{color:#9696a4}.node-app .card-menu{position:fixed;z-index:20;min-width:202px;padding:5px;background:#2a2a31;border:1px solid #4b4b55;border-radius:8px;box-shadow:0 12px 35px #0008}.node-app .card-menu button{display:block;width:100%;border:0;border-radius:4px;background:transparent;text-align:left;font-size:13px;font-weight:400;color:#d7d7df;padding:9px 12px}.node-app .card-menu button:hover,.node-app .card-menu button:focus{outline:none;background:#41414b;color:#fff}
#timeline-controls{position:fixed;left:82px;top:88px;right:20px;z-index:4;display:flex;gap:8px;align-items:center;padding:9px 12px;background:#25262d}#timeline-controls strong{font-size:13px;margin-right:8px}#timeline-controls select,#timeline-controls input{font-size:12px;padding:6px;min-width:0}#timeline-controls span{color:#92929e;font-size:11px;margin-left:auto;white-space:nowrap}.has-timeline #group-panel{top:150px}.schedule-fields{display:flex;gap:12px}.schedule-fields label{flex:1;min-width:0}.incoming-pen,.timeline-section{position:absolute;border:1px solid #41414d;border-radius:12px;background:#101014;pointer-events:none}.incoming-pen h2,.timeline-section h2{font-size:18px;font-weight:500;margin:18px 24px 5px;color:#dedee6}.incoming-pen p{font-size:12px;margin:0 24px;color:#898995}.timeline-column{position:absolute;padding:14px;border-left:1px solid #34343e;font-size:14px;color:#c9c9d6;background:#1d1d24;pointer-events:none}.timeline-lane{position:absolute;border-top:1px solid #42424d;background:#15151b;pointer-events:none}.timeline-lane:nth-of-type(even){background:#18181f}.timeline-lane-label{width:210px;padding:20px;display:flex;flex-direction:column;gap:4px}.timeline-lane-label strong{color:#c4b3dc;font-size:15px;font-weight:500}.timeline-lane-label span{color:#8c8c9b;font-size:12px}.timeline-cell{position:absolute;top:0;bottom:0;border-left:1px solid #303039}.timeline-outside{position:absolute;right:20px;top:20px;color:#a5a5b2;font-size:12px}.node-app .scheduled-card .node-text{max-height:120px;min-height:65px}.node-app .scheduled-card .node-meta{gap:8px;flex-wrap:wrap}.node-app .scheduled-card{border-color:#5c526e}.node-app .rail button[aria-pressed=true]{background:#45404f;color:#dcc1ee}@media(max-width:900px){#timeline-controls{flex-wrap:wrap;gap:5px}#timeline-controls span{display:none}#timeline-controls input{width:125px}#timeline-controls strong{display:none}}
/* Roadmap hierarchy: colored area bands, compact project tracks, spanning cards. */
.node-app .timeline-section{background:#070708;border:0;border-radius:0}.node-app .incoming-pen{border:1px solid #38383f;background:#111115;border-radius:10px}.section-eyebrow{display:block;margin:16px 20px 0;font-size:9px;letter-spacing:2px;color:#777782}.timeline-section h2,.incoming-pen h2{margin:2px 20px;font-size:22px;letter-spacing:-.5px}.roadmap-period{position:absolute;right:0;top:22px;margin:0;color:#9696a2;font-size:12px}.node-app .timeline-column{background:#15151b;border:0;border-left:3px solid #070708;padding:16px 12px;font-size:15px;color:#dddde5}.timeline-column.is-today{box-shadow:inset 0 -2px #b3a0e4}.area-band{position:absolute;background:color-mix(in srgb,var(--lane-color) 50%,#15151b);display:flex;align-items:center;gap:16px;padding:0 14px;border-left:3px solid var(--lane-color);pointer-events:none}.area-band strong{font-size:13px;font-weight:600;color:#fff}.area-band span{font-size:10px;color:#e7e7efaa;margin-left:auto}.node-app .timeline-lane{background:#17171c;border-top:0;border-left:3px solid var(--lane-color)}.node-app .timeline-lane:nth-of-type(even){background:#17171c}.node-app .timeline-lane-label{width:174px;padding:16px 12px}.node-app .timeline-lane-label strong{font-size:12px;color:#c2c2cd}.node-app .timeline-lane-label span{font-size:10px;color:#747481}.node-app .timeline-cell{border-left:3px solid #070708}.lane-hint{position:absolute;top:30px;font-size:11px;color:#656571}.node-app .scheduled-card{border:0;border-top:3px solid var(--lane-color);border-radius:3px;background:color-mix(in srgb,var(--lane-color) 15%,#24242b);box-shadow:none}.node-app .scheduled-card .node-head{height:40px;padding:7px 10px;gap:1px}.node-app .scheduled-card .node-head .node-title{font-size:12px;color:#ededf2}.node-app .scheduled-card .node-text{background:transparent;border:0;padding:3px 1px 6px;min-height:35px;max-height:62px;font-size:11px;line-height:1.5}.node-app .scheduled-card .node-body{padding:0 10px 8px}.node-app .scheduled-card .node-meta{font-size:9px;gap:4px;margin:4px 0 0}.node-app .scheduled-card .node-meta span:first-child{color:var(--lane-color)}.node-app.has-timeline .node-card:not(.scheduled-card) .node-text{max-height:90px;min-height:35px}.node-app .timeline-outside{top:43px;font-size:10px}.schedule-fields{flex-wrap:wrap}.schedule-fields label{flex-basis:40%}.node-app .topbar{padding:7px 12px}.node-app #timeline-controls{padding:7px 12px;top:80px}.node-app.has-timeline #group-panel{top:140px}
