:root{--bg:#070b16;--bg-2:#0a1020;--panel:#0e1626;--panel-2:#131f36;--border:#20304f;--border-soft:#18243c;--text:#dbe6f7;--text-dim:#8a99b3;--text-faint:#5c6d89;--grid:#101c33;--grid-2:#0d1728;--locked:#5a6c89;--locked-fill:#121b2c;--avail:#37e0c4;--avail-fill:#0c2c33;--prog:#f4b13f;--prog-fill:#2b230f;--done:#4fd08a;--done-fill:#0f2a1d;--overdue:#ff5d6c;--soon:#f4b13f;--future:#82a4da;--edge:#26344f;--edge-lit:#37e0c4;--radius:14px;--font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{height:100%}body{color:var(--text);font-family:var(--font);background:radial-gradient(1200px 700px at 70% -10%, #10233f 0%, #10233f00 60%), radial-gradient(900px 600px at 10% 110%, #0f2233 0%, #0f223300 55%), var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;margin:0}button{font-family:inherit}.app{flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}.toolbar{border-bottom:1px solid var(--border-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;background:linear-gradient(#0e1626e6,#0a10208c);align-items:center;gap:14px;padding:12px 18px;display:flex}.brand{letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:10px;font-size:14px;font-weight:700;display:flex}.brand .mark{background:var(--avail);width:11px;height:11px;box-shadow:0 0 12px var(--avail);border-radius:3px}.brand small{color:var(--text-faint);letter-spacing:.18em;font-size:10px;font-weight:500}.spacer{flex:1}.count{font-family:var(--mono);color:var(--text-dim);letter-spacing:.02em;font-size:12px}.count b{color:var(--text)}.btn{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;border-radius:10px;align-items:center;gap:7px;padding:8px 13px;font-size:13px;font-weight:600;transition:border-color .15s,background .15s,box-shadow .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--panel-2);border-color:#2c4066}.btn:active{transform:translateY(1px)}.btn.primary{color:#d8fff6;background:linear-gradient(#37e0c429,#37e0c40f);border-color:#37e0c480;box-shadow:0 0 0 1px #37e0c41f,0 6px 20px -8px #37e0c480}.btn.primary:hover{border-color:#37e0c4cc}.btn.ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn.ghost:hover{color:var(--text);background:var(--panel)}.btn.danger:hover{color:#ffd7db;border-color:#ff5d6c99}.btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn{border-radius:9px;justify-content:center;width:32px;height:32px;padding:0}.filter-bar{border-bottom:1px solid var(--border-soft);z-index:4;background:#0a102066;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 18px;display:flex}.filter-label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin-right:4px;font-size:11px}.filter-chip{border:1px solid color-mix(in srgb, var(--tag-color) 45%, transparent);background:color-mix(in srgb, var(--tag-color) 9%, transparent);color:var(--text-dim);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:5px 11px;font-size:12.5px;font-weight:600;transition:color .15s,background .15s,border-color .15s,box-shadow .15s;display:inline-flex}.filter-chip .sw{background:var(--tag-color);border-radius:50%;width:8px;height:8px}.filter-chip:hover{color:var(--text);background:color-mix(in srgb, var(--tag-color) 18%, transparent)}.filter-chip.active{color:var(--text);border-color:var(--tag-color);background:color-mix(in srgb, var(--tag-color) 24%, transparent);box-shadow:0 0 10px -2px var(--tag-color)}.board-wrap{flex:1;position:relative;overflow:hidden}.board-viewport{height:100%;position:relative;overflow:hidden}.board{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.board.panning{cursor:grabbing}.grid-rect{fill:url(#grid)}.board-controls{z-index:4;flex-direction:column;gap:6px;display:flex;position:absolute;bottom:16px;right:16px}.edge{fill:none;stroke:var(--edge);stroke-width:2px;transition:stroke .3s,opacity .3s}.edge.lit{stroke:var(--edge-lit);stroke-width:2.4px;filter:drop-shadow(0 0 5px #37e0c48c)}.edge-pulse{fill:var(--edge-lit);filter:drop-shadow(0 0 4px var(--edge-lit))}.node-wrap{cursor:pointer}.node{transform-box:fill-box;transform-origin:50%;animation:.45s cubic-bezier(.2,.9,.3,1.35) nodePop}.node .halo{opacity:0;filter:blur(9px);transition:opacity .3s}.node .bg{transition:fill .3s,stroke .3s,filter .3s}.node .name{font-family:var(--font);fill:var(--text);font-size:14px;font-weight:600}.node .desc{fill:var(--text-faint);font-size:10.5px}.node .dot{transition:fill .3s}.node .glyph{stroke:currentColor;fill:none;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round}.node.locked{opacity:.55}.node.locked .bg{fill:var(--locked-fill);stroke:var(--locked);stroke-dasharray:5 5}.node.locked .name{fill:var(--text-faint)}.node.locked .dot{fill:none;stroke:var(--locked);stroke-width:1.6px}.node.locked{color:var(--locked)}.node.available .bg{fill:var(--avail-fill);stroke:var(--avail)}.node.available .dot{fill:var(--avail)}.node.available{color:var(--avail)}.node.available .halo{opacity:.5;animation:2.6s ease-in-out infinite halo}.node.available .bg{filter:drop-shadow(0 0 9px #37e0c480)}.node.in_progress .bg{fill:var(--prog-fill);stroke:var(--prog)}.node.in_progress .dot{fill:var(--prog)}.node.in_progress{color:var(--prog)}.node.in_progress .halo{opacity:.32}.node.in_progress .bg{filter:drop-shadow(0 0 8px #f4b13f66)}.node.done .bg{fill:var(--done-fill);stroke:var(--done)}.node.done .dot{fill:none;stroke:var(--done);stroke-width:1.6px}.node.done{color:var(--done)}.node.done .bg{filter:drop-shadow(0 0 7px #4fd08a52)}.node.selected .bg{stroke-width:2.5px;outline:none}.node.selected:after{content:""}.node.selected .sel-ring{opacity:1}.sel-ring{fill:none;stroke:#fff;stroke-width:1.5px;stroke-dasharray:4 4;opacity:0;transition:opacity .15s}.node:focus{outline:none}.node:focus-visible .sel-ring{opacity:1}.deadline rect{fill:#ffffff0a}.deadline text{font-family:var(--mono);letter-spacing:.02em;font-size:10px;font-weight:600}.deadline.overdue text{fill:var(--overdue)}.deadline.overdue rect{stroke:#ff5d6c80}.deadline.soon text{fill:var(--soon)}.deadline.soon rect{stroke:#f4b13f80}.deadline.future text{fill:var(--future)}.deadline.future rect{stroke:#82a4da66}.node .tag rect{fill:var(--tag-color);fill-opacity:.14;stroke:var(--tag-color);stroke-opacity:.55;stroke-width:1px}.node .tag text{font-family:var(--font);letter-spacing:.01em;fill:var(--tag-color);font-size:9.5px;font-weight:600}.node .tag.more rect{fill:#ffffff0a;stroke:var(--border);stroke-dasharray:2 2}.node .tag.more text{fill:var(--text-faint)}.node.dimmed{opacity:.22}.node.dimmed .halo{opacity:0;animation:none}.addbtn{cursor:pointer;opacity:0;transition:opacity .15s}.node-wrap:hover .addbtn,.addbtn:focus-visible{opacity:1}.addbtn circle{fill:var(--panel-2);stroke:var(--avail);stroke-width:1.5px}.addbtn .plus{fill:none;stroke:var(--avail);stroke-width:2px;stroke-linecap:round}.empty{color:var(--text-dim);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.empty h2{letter-spacing:.1em;text-transform:uppercase;color:var(--text);margin:0;font-size:20px}.empty p{text-align:center;max-width:360px;margin:0;line-height:1.5}.empty .btn{pointer-events:auto}.legend{border:1px solid var(--border-soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-dim);z-index:4;background:#0a1020d1;border-radius:12px;flex-direction:column;gap:8px;padding:12px 14px;font-size:12px;display:flex;position:absolute;bottom:16px;left:16px}.legend .row{align-items:center;gap:8px;display:flex}.legend .chip{border:1.5px solid;border-radius:5px;flex:none;width:16px;height:16px}.legend .chip.available{border-color:var(--avail);background:var(--avail-fill);box-shadow:0 0 8px #37e0c480}.legend .chip.in_progress{border-color:var(--prog);background:var(--prog-fill)}.legend .chip.done{border-color:var(--done);background:var(--done-fill)}.legend .chip.locked{border-color:var(--locked);background:var(--locked-fill);border-style:dashed}.overlay{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#04070e99;justify-content:center;align-items:center;padding:24px;animation:.15s fadeIn;display:flex;position:absolute;inset:0}.modal{border:1px solid var(--border);background:linear-gradient(180deg, var(--panel), var(--bg-2));border-radius:16px;width:min(560px,100%);max-height:90%;animation:.18s cubic-bezier(.2,.9,.3,1.2) modalIn;overflow:auto;box-shadow:0 30px 80px -20px #000000b3}.modal:focus{outline:none}.modal header{justify-content:space-between;align-items:center;padding:16px 18px 6px;display:flex}.modal header h2{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin:0;font-size:15px}.modal .body{flex-direction:column;gap:16px;padding:8px 18px 18px;display:flex}.field{flex-direction:column;gap:7px;display:flex}.field label,.field .label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);font-size:11px}.field input,.field textarea,.field select{color:var(--text);border:1px solid var(--border);background:#ffffff08;border-radius:10px;outline:none;padding:9px 11px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field textarea:focus,.field select:focus{border-color:#37e0c499;box-shadow:0 0 0 3px #37e0c41f}.field input::placeholder,.field textarea::placeholder{color:var(--text-faint)}.field textarea{resize:vertical;min-height:64px}.field input[type=date]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--mono)}.field .hint{color:var(--text-faint);font-size:11px}.row2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.seg{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.seg button{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:#ffffff05;border-radius:10px;padding:9px 8px;font-size:12.5px;font-weight:600;transition:all .15s}.seg button:hover:not(:disabled){color:var(--text);background:var(--panel-2)}.seg button[aria-pressed=true]{color:#08131f}.seg button[data-state=not_started][aria-pressed=true]{background:var(--text-dim);border-color:var(--text-dim)}.seg button[data-state=in_progress][aria-pressed=true]{background:var(--prog);border-color:var(--prog)}.seg button[data-state=done][aria-pressed=true]{background:var(--done);border-color:var(--done)}.seg button:disabled{opacity:.35;cursor:not-allowed}.locked-note{color:var(--locked);align-items:center;gap:8px;font-size:12px;display:flex}.deps{border:1px solid var(--border-soft);border-radius:10px;flex-direction:column;gap:6px;max-height:180px;padding:8px;display:flex;overflow:auto}.dep{cursor:pointer;border-radius:8px;align-items:center;gap:9px;padding:6px 8px;transition:background .12s;display:flex}.dep:hover:not(.disabled){background:#ffffff0a}.dep.disabled{opacity:.4;cursor:not-allowed}.dep input{accent-color:var(--avail);margin:0}.dep .dname{flex:1;font-size:13px}.dep .dst{letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);font-size:10px}.form-foot{align-items:center;gap:10px;padding-top:4px;display:flex}.form-foot .spacer{flex:1}.btn.small{border-radius:8px;padding:4px 8px;font-size:12px}.field-head{justify-content:space-between;align-items:center;display:flex}.link{color:var(--avail);cursor:pointer;background:0 0;border:0;padding:0;font-size:12px;font-weight:600}.link:hover{text-decoration:underline}.tag-add input[type=text],.tag-add input:not([type]),.user-add input,.tag-row .rename,.user-row .rename{color:var(--text);border:1px solid var(--border);background:#ffffff08;border-radius:9px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px;transition:border-color .15s,box-shadow .15s,background .15s}.tag-add input::placeholder,.user-add input::placeholder,.tag-row .rename::placeholder,.user-row .rename::placeholder{color:var(--text-faint)}.tag-add input:hover,.user-add input:hover,.tag-row .rename:hover,.user-row .rename:hover{border-color:#2c4066}.tag-add input:focus,.user-add input:focus,.tag-row .rename:focus,.user-row .rename:focus{background:#37e0c40d;border-color:#37e0c499;box-shadow:0 0 0 3px #37e0c41f}.user-add input.email,.user-row .rename.email{font-family:var(--mono);font-size:12.5px}.tag-input{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.tag-input input{flex:1;min-width:140px}.tag-pill{color:var(--tag-color);background:color-mix(in srgb, var(--tag-color) 13%, transparent);border:1px solid color-mix(in srgb, var(--tag-color) 45%, transparent);border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:12px;font-weight:600;display:inline-flex}.tag-pill .x{color:inherit;opacity:.7;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;line-height:1}.tag-pill .x:hover{opacity:1}.tag-add{align-items:center;gap:10px;display:flex}.tag-add input[type=text],.tag-add input:not([type]){flex:1}.tag-add .auto{color:var(--text-dim);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.tag-add .auto input{accent-color:var(--avail);margin:0}.tag-list{flex-direction:column;gap:7px;max-height:320px;display:flex;overflow:auto}.tag-row{border:1px solid var(--border-soft);background:#ffffff05;border-radius:10px;align-items:center;gap:10px;padding:7px 9px;display:flex}.swatch{background:var(--tag-color);cursor:pointer;border:1px solid #ffffff40;border-radius:8px;flex:none;width:26px;height:26px;position:relative}.swatch input{opacity:0;cursor:pointer;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.swatch:has(input:disabled){opacity:.35}.tag-row .rename{flex:1;min-width:0}.tag-row .usecount{font-family:var(--mono);color:var(--text-faint);white-space:nowrap;font-size:11px}.avatar{background:var(--avatar-color);color:#fff;box-sizing:border-box;border:1px solid #ffffff4d;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex;position:relative;overflow:hidden}.avatar .initial{text-shadow:0 1px 2px #0006}.avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%;position:absolute;inset:0}.avatar img.failed{display:none}.ava circle{stroke:#ffffff59;stroke-width:1px}.ava text{fill:#fff;text-anchor:middle;dominant-baseline:central;pointer-events:none;filter:drop-shadow(0 1px 1px #00000073);font-size:9px;font-weight:700}.avmore circle{fill:#ffffff1a;stroke:#fff6;stroke-width:1px}.avmore text{fill:var(--text-dim);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:8px;font-weight:700}.user-add{align-items:center;gap:10px;display:flex}.user-add input{flex:1}.user-add input.email{flex:1.4}.form-error{color:var(--overdue);margin-top:8px;font-size:12px}.user-list{flex-direction:column;gap:7px;max-height:320px;display:flex;overflow:auto}.user-row{border:1px solid var(--border-soft);background:#ffffff05;border-radius:10px;align-items:center;gap:10px;padding:7px 9px;display:flex}.user-row .rename{flex:1;min-width:0}.user-row .rename.email{flex:1.4}.user-row .usecount{font-family:var(--mono);color:var(--text-faint);white-space:nowrap;font-size:11px}.assignees{border:1px solid var(--border-soft);border-radius:10px;flex-direction:column;gap:6px;max-height:180px;padding:8px;display:flex;overflow:auto}.assignee{cursor:pointer;border-radius:8px;align-items:center;gap:9px;padding:6px 8px;transition:background .12s;display:flex}.assignee:hover{background:#ffffff0a}.assignee input{accent-color:var(--avail);margin:0}.assignee .aname{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.assignee .aemail{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}@keyframes nodePop{0%{opacity:0;transform:scale(.6)}60%{opacity:1}to{opacity:1;transform:scale(1)}}@keyframes halo{0%,to{opacity:.3}50%{opacity:.8}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}
