:root{--ink: #1b1e23;--muted: #5c6470;--faint: #8b93a0;--blue: #274b93;--blue-soft: #eef2f9;--blue-line: #9db4d4;--red: #c0392f;--red-soft: #faf0ef;--red-line: #e0b4b0;--orange: #a3690f;--green: #2e7d4f;--green-bar: #3e9367;--green-soft: #eef7f2;--paper: #ffffff;--paper-warm: #fbfbf9;--panel: #f5f6f8;--hover: #eef0f3;--line: #e4e7ec;--cursor-bg: #dfe7f5;--handle: #c6cbd3;--ui: "Lexend", sans-serif;--mono: "IBM Plex Mono", monospace}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{font-family:var(--ui);font-size:14px;color:var(--ink);background:var(--paper-warm)}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}a{color:var(--blue)}.mono{font-family:var(--mono)}.app{display:flex;height:100vh;height:100dvh}.main{flex:1;min-width:0;overflow-y:auto;overscroll-behavior-y:contain}.ptr{display:flex;align-items:center;justify-content:center;overflow:hidden}.ptr-spin{width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;transition:transform .15s ease}.ptr.armed .ptr-spin{transform:rotate(180deg)}.ptr.busy .ptr-spin{animation:ptr-rot .8s linear infinite}@keyframes ptr-rot{to{transform:rotate(360deg)}}.rail{width:56px;flex:none;background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:10px 0;gap:2px}.rail .logo{font-family:var(--mono);font-weight:600;font-size:11px;color:var(--red);border:1.5px solid var(--red);border-bottom-width:3px;border-radius:4px 4px 0 0;padding:3px 6px;margin-bottom:14px;letter-spacing:.05em}.rail button{width:42px;height:42px;border-radius:8px;color:var(--muted);position:relative;display:flex;align-items:center;justify-content:center}.rail button:hover{background:var(--hover)}.rail button.active{background:var(--blue-soft);color:var(--blue)}.rail button.active:before{content:"";position:absolute;left:-7px;top:8px;bottom:8px;width:3px;background:var(--blue);border-radius:0 3px 3px 0}.rail .spacer{flex:1}.rail .badge{position:absolute;top:3px;right:3px;background:var(--red);color:#fff;font-size:9.5px;font-weight:600;font-family:var(--mono);min-width:15px;height:15px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px}.chip{display:inline-flex;flex-direction:column;border-radius:4px 4px 0 0;flex:none;border:1px solid var(--blue-line);border-bottom:2px solid var(--blue);background:var(--blue-soft);font-family:var(--mono);font-size:10px;font-weight:600;color:var(--blue);padding:1px 5px;letter-spacing:.03em;line-height:14px;white-space:nowrap}.chip.resp{color:var(--red);background:var(--red-soft);border-color:var(--red-line);border-bottom-color:var(--red)}.chip.dim{color:var(--muted);background:var(--panel);border-color:var(--line);border-bottom-color:var(--faint)}.dl{font-family:var(--mono);font-size:11px;flex:none}.dl.norm{color:var(--faint)}.dl.warn{color:var(--orange);font-weight:600}.dl.over{color:var(--red);font-weight:600}.age{font-family:var(--mono);font-size:11px;color:var(--faint);flex:none}.prio{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}.prio.critical{background:var(--red)}.prio.important{background:var(--orange)}.size-tag{font-size:10px;font-weight:600;color:var(--faint);border:1px solid var(--line);border-radius:3px;padding:0 3px;line-height:15px;flex:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:9px;padding:9px 16px;font-size:13.5px;font-weight:500;flex:none}.btn.primary{background:var(--blue);color:#fff;font-weight:600}.btn.green{background:var(--green);color:#fff;font-weight:600}.btn.outline{border:1px solid var(--line);background:var(--paper);color:var(--muted)}.btn.outline.blue{color:var(--blue);border-color:var(--blue)}.btn.outline.red-text{color:var(--red)}.btn.outline.green-text{color:var(--green)}.btn.ghost{color:var(--muted)}.btn.small{padding:4px 10px;font-size:11.5px;border-radius:6px}.btn:disabled{opacity:.5;cursor:default}.kbd{font-family:var(--mono);font-weight:600;font-size:10.5px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:3px;padding:0 5px}.col-view{max-width:660px;margin:0 auto;padding:40px 20px 90px;display:flex;flex-direction:column;gap:24px}.col-view.wide{max-width:780px}.view-head{display:flex;align-items:center;gap:12px}.view-head h1{font-size:22px;font-weight:600}.view-head .date{font-family:var(--mono);font-size:11.5px;color:var(--faint);margin-top:3px}.view-head .grow{flex:1}.cal-strip{display:flex;gap:14px;align-items:center;overflow-x:auto;white-space:nowrap;font-size:11.5px;color:var(--muted);padding:4px 0 8px}.sec-label{font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--faint);display:flex;gap:6px;align-items:center}.sec-label .n{font-family:var(--mono)}.sec-label .n.green{color:var(--green)}.progress{display:flex;align-items:center;gap:12px}.progress .label{font-size:13px;font-weight:500;color:var(--muted);flex:none}.progress .track{flex:1;height:6px;background:var(--line);border-radius:3px;overflow:hidden}.progress .fill{height:100%;background:var(--green-bar);border-radius:3px;transition:width .3s}.focus-card{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden;box-shadow:0 2px 8px #1b1e230d}.focus-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue)}.focus-card.dragging{opacity:.4}.focus-card .meta{display:flex;align-items:center;gap:9px}.focus-card .meta .handle{color:var(--handle);cursor:grab;margin-left:auto;padding:4px;touch-action:none}.focus-card h2{font-size:16.5px;font-weight:600;line-height:1.3;cursor:pointer}.focus-card .desc{font-size:12.5px;line-height:1.5;color:var(--muted)}.focus-card .actions{display:flex;align-items:center;gap:10px}.focus-card .actions .grow{flex:1}.focus-drop{min-height:44px;display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--line);border-radius:10px;color:var(--faint);font-size:12.5px;text-align:center;padding:8px}.focus-drop.over{border-color:var(--blue);color:var(--blue);background:var(--blue-soft)}.focus-toggle{flex:none;width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--muted)}.focus-toggle:hover,.focus-toggle[aria-pressed=true]{color:var(--blue)}.calm-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:0 8px;border-bottom:1px solid var(--line);background:transparent}.calm-row .check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--handle);flex:none;background:var(--paper);display:flex;align-items:center;justify-content:center;color:transparent}.calm-row .check:hover{border-color:var(--green);color:var(--green)}.calm-row .check.done{background:var(--green);border-color:var(--green);color:#fff}.calm-row .num{font-family:var(--mono);font-size:11.5px;color:var(--faint);width:12px;flex:none}.calm-row .title{flex:1;min-width:0;font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.calm-row .title.done{text-decoration:line-through;color:var(--faint);font-weight:400;font-size:14px}.calm-row .chip{opacity:.75}.calm-row .handle{color:var(--handle);cursor:grab;padding:4px;touch-action:none}.calm-row.dragging{opacity:.4}.collapse-row{display:flex;align-items:center;gap:8px;height:44px;padding:0 8px;color:var(--faint);font-size:13px;width:100%;text-align:left}.collapse-row:hover{color:var(--muted)}.empty-note{color:var(--faint);font-size:13px;line-height:1.6;padding:20px 8px}.tree{display:flex;flex-direction:column;gap:2px}.tree-label{padding:12px 8px 6px;font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--faint)}.tree-row{display:flex;align-items:center;gap:9px;height:40px;padding:0 8px;border-radius:6px;width:100%;text-align:left}.tree-row:hover{background:var(--hover)}.tree-row.cursor{background:var(--cursor-bg);outline:1.5px solid var(--blue);outline-offset:-1.5px}.tree-row .caret{color:var(--faint);flex:none;width:14px;display:flex}.tree-row .pname{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-row .cnt{font-family:var(--mono);font-size:11px;color:var(--faint)}.tree-row .dot{width:5px;height:5px;border-radius:50%;background:var(--faint);flex:none;margin:0 1px}.tree-row.indnes .dot{background:var(--green)}.tree-row .ttitle{flex:1;min-width:0;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-row.indnes .ttitle{color:var(--faint)}.tree-row .inmark{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--green);flex:none}.tree-row .acts{display:none;gap:3px}.tree-row:hover .acts,.tree-row.cursor .acts{display:flex}.tree-row .acts .btn{padding:3px 8px;font-size:11.5px;border-radius:5px}.tree-row.drag-source{background:var(--cursor-bg);opacity:.55}.tree-row.flash{animation:row-flash 1.6s ease-out}@keyframes row-flash{0%{background:var(--blue-soft)}70%{background:var(--blue-soft)}to{background:transparent}}.meta-ics{display:inline-flex;align-items:center;gap:4px;color:var(--faint);flex:none}.card-view{display:flex;flex-direction:column;gap:10px}.card-head{display:flex;align-items:center;gap:10px;padding:6px 0}.card-head .card-title{display:flex;align-items:center;gap:9px;flex:1;min-width:0;text-align:left;padding:6px 8px;border-radius:8px}.card-head .card-title:hover{background:var(--hover)}.card-head .card-title .pname{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-desc{padding:0 8px;white-space:pre-wrap}.plan{display:flex;flex-direction:column;height:100vh;height:100dvh}.plan-top{display:flex;align-items:center;gap:14px;padding:0 22px;height:56px;border-bottom:1px solid var(--line);background:var(--paper);flex:none}.plan-top h1{font-size:16px;font-weight:600}.plan-top .hint{color:var(--faint);font-size:12px;margin-left:auto}.plan-body{display:flex;flex:1;min-height:0}.plan-tree{flex:1;overflow-y:auto;padding:16px 24px;min-width:0}.plan-panel{width:420px;flex:none;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column}.plan-panel-head{padding:18px 18px 12px;border-bottom:1px solid var(--line)}.plan-panel-head h2{font-size:15px;font-weight:600}.plan-panel-head .cap{font-size:12px;color:var(--muted);margin-top:3px}.plan-list{flex:1;overflow-y:auto;padding:6px 14px;display:flex;flex-direction:column}.plan-gap{height:14px;flex:none;display:flex;align-items:center;overflow:hidden}.plan-gap.over .drop-indicator{margin:0;width:100%}.plan-drow{display:flex;align-items:center;gap:10px;height:46px;padding:0 12px;background:var(--paper);border:1px solid var(--line);border-radius:8px}.plan-drow .num{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--red);width:14px;text-align:right;flex:none}.plan-drow .title{flex:1;min-width:0;font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-drow.dragging{opacity:.4}.plan-drow .handle{color:var(--handle);cursor:grab;touch-action:none}.drop-indicator{height:2px;background:var(--blue);border-radius:1px;position:relative;margin:2px 0}.drop-indicator:before{content:"";position:absolute;left:-3px;top:-3px;width:8px;height:8px;border:2px solid var(--blue);border-radius:50%;background:var(--paper)}.drag-overlay-card{display:flex;align-items:center;gap:10px;height:46px;padding:0 12px;background:var(--paper);border:1.5px solid var(--blue);border-radius:8px;box-shadow:0 8px 22px #1b1e2333;transform:rotate(-2deg);font-size:13.5px;font-weight:500}.input{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:9px;padding:9px 12px;background:var(--paper);width:100%}.input:focus-within{outline:2px solid var(--blue);outline-offset:-1px}.input input,.input textarea{border:none;outline:none;flex:1;min-width:0;background:transparent;font-size:13.5px}.input input.title-input{font-weight:600;font-size:14.5px}.input textarea{resize:none;overflow-y:auto;line-height:1.5;max-height:40vh}.input .icon{color:var(--faint);flex:none;display:flex}.field{display:flex;flex-direction:column;gap:5px}.field>label{font-size:10.5px;font-weight:600;letter-spacing:.06em;color:var(--faint)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{padding:8px 12px;font-family:var(--mono);font-size:11.5px;font-weight:600;color:var(--muted)}.seg button.active{background:var(--blue-soft);color:var(--blue)}.fuzzy{position:relative}.fuzzy-pop{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:40;background:var(--paper);border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 6px 20px #1b1e2321}.fuzzy-row{display:flex;align-items:center;gap:8px;padding:7px 10px;width:100%;text-align:left}.fuzzy-row.sel{background:var(--cursor-bg)}.fuzzy-row .name{flex:1;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fuzzy-row.sel .name{font-weight:600}.fuzzy-foot{padding:6px 10px;border-top:1px solid var(--line);font-size:10.5px;color:var(--faint)}.inbox-item{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--paper);display:flex;flex-direction:column;gap:10px}.inbox-item.converting{border-color:var(--blue);border-width:1.5px}.inbox-item .row{display:flex;gap:10px;align-items:center}.inbox-item .txt{flex:1;min-width:0}.inbox-item .txt .content{font-size:13.5px;line-height:1.4}.inbox-item .txt .when{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-top:2px}.inbox-item .iacts{display:flex;gap:6px;flex:none}.qx-view{display:flex;flex-direction:column;height:100%;min-height:0}.qx-top{display:flex;align-items:center;gap:10px;padding:16px 20px 12px;border-bottom:1px solid var(--line);flex:none}.qx-top h1{font-size:19px;font-weight:600;letter-spacing:-.01em}.qx-top .tally{font-size:11.5px;color:var(--faint)}.qx-top .grow{flex:1}.icon-btn{width:28px;height:28px;border-radius:7px;display:grid;place-items:center;color:var(--faint);flex:none}.icon-btn:hover{background:var(--hover);color:var(--ink)}.icon-btn:disabled{opacity:.5}.icon-btn.spinning svg{animation:qx-spin .9s linear infinite}@keyframes qx-spin{to{transform:rotate(360deg)}}.qx-cols{flex:1 1 auto;display:flex;min-height:0}.qx-list{flex:1 1 auto;min-width:0;overflow-y:auto;padding:4px 0 24px}.qx-group{display:flex;align-items:center;gap:8px;padding:28px 20px 8px;width:100%;text-align:left;cursor:pointer}.qx-group:hover .name{color:var(--blue)}.qx-group svg{color:var(--faint);flex:none}.qx-group:hover svg{color:var(--blue)}.qx-group.collapsed{padding-top:14px;padding-bottom:6px}.qx-group:first-child{padding-top:12px}.qx-group .name{font-size:12px;font-weight:600;color:var(--ink);letter-spacing:.01em}.qx-group .n{font-size:10.5px;color:var(--faint);flex:none;margin-left:auto}.qx-group .n.stale{color:var(--orange)}.qx-row{display:flex;align-items:center;min-height:36px;padding-right:10px}.qx-row:hover{background:var(--hover)}.qx-row.sel{background:var(--cursor-bg)}.qx-row .pick{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:9px;min-height:36px;padding-left:40px;text-align:left}.qx-offline{font-size:10.5px;color:var(--faint);padding:5px 10px 7px;cursor:help}.qx-row .state{width:9px;height:9px;border-radius:50%;flex:none}.qx-row .state.waiting{background:var(--blue-line)}.qx-row .state.running{background:var(--paper);border:2.5px solid var(--blue)}.qx-row .state.done{background:var(--green)}.qx-row .state.live-needs-you{background:var(--red);border:none;animation:qx-pulse 1.6s ease-in-out infinite}.qx-row .state.live-working{background:var(--paper);border:2.5px solid var(--blue)}.qx-row .state.live-finished{background:var(--green);border:none}.qx-row .state.live-idle{background:var(--blue-line);border:none}.qx-row .state.live-quiet{background:var(--paper);border:2.5px solid var(--faint)}@keyframes qx-pulse{50%{opacity:.35}}.qx-row .title{flex:1 1 auto;min-width:0;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-row .title.url{font-size:12px;color:var(--muted)}.qx-row.is-done .title{color:var(--muted)}.qx-row .prio{width:8px;height:8px;border-radius:50%;flex:none}.qx-row .prio.p1{background:var(--red)}.qx-row .prio.p2{background:var(--orange)}.qx-row .chip{font-size:10px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:1px 5px;flex:none;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qx-row .chip.live{font-family:inherit;letter-spacing:.01em;max-width:200px}.qx-row .chip.live.working{color:var(--blue);background:var(--blue-soft);border-color:var(--blue-line)}.qx-row .chip.live.needs-you{color:var(--red);background:var(--red-soft)}.qx-row .chip.live.finished{color:var(--green);background:var(--green-soft)}.qx-row .chip.live.quiet{color:var(--faint)}.qx-row .age{font-size:10.5px;color:var(--faint);flex:none;width:54px;text-align:right;font-variant-numeric:tabular-nums}.qx-row .acts{display:flex;gap:1px;flex:none;width:56px;justify-content:flex-end}.qx-row .acts .icon-btn{width:26px;height:26px;opacity:0}.qx-row:hover .acts .icon-btn,.qx-row.sel .acts .icon-btn,.qx-row .acts .icon-btn:focus-visible{opacity:1}.qx-detail-pane{width:372px;flex:none;border-left:1px solid var(--line);background:var(--paper);display:flex;flex-direction:column;min-height:0}.qx-dhead{display:flex;align-items:flex-start;gap:8px;flex:none;padding:14px 12px 12px 18px;border-bottom:1px solid var(--line)}.qx-dhead .t{flex:1 1 auto;min-width:0}.qx-dhead h3{font-size:14.5px;font-weight:600;line-height:1.35;margin-bottom:4px}.qx-dhead .sub{font-size:10.5px;color:var(--faint);line-height:1.45;overflow-wrap:anywhere}.qx-dhead .dacts{display:flex;gap:1px;flex:none}.qx-dbody{flex:1 1 auto;overflow-y:auto;padding:14px 18px 24px;display:flex;flex-direction:column;gap:14px}.qx-dbody .text{font-size:12.5px;line-height:1.5;color:var(--muted)}.qx-dbody .blk{display:flex;flex-direction:column;gap:5px}.qx-dbody .blk>h4{font-size:11px;font-weight:600;color:var(--faint)}.qx-dbody .steps{display:flex;flex-direction:column;gap:4px;padding-left:17px;font-size:12.5px;line-height:1.45;color:var(--muted)}.qx-dbody .files{display:flex;flex-direction:column;gap:2px;list-style:none;font-size:11px;color:var(--muted);overflow-wrap:anywhere}.qx-dbody .gitline{font-size:11px;color:var(--muted);line-height:1.5;overflow-wrap:anywhere}.qx-dbody .crit{display:flex;flex-direction:column;gap:4px;list-style:none;font-size:12.5px;line-height:1.4;color:var(--muted)}.qx-dbody .crit li{display:flex;gap:7px;align-items:flex-start}.qx-dbody .crit li svg{flex:none;margin-top:2px;color:var(--faint)}.qx-dbody .cmds{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.qx-dbody .cmd{font-size:11px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:3px 7px;overflow-wrap:anywhere}.qx-dbody .gitline .warn{color:var(--orange)}.qx-launch-note .row{display:flex;align-items:center;gap:8px}.qx-launch-note .grow{flex:1}.qx-launch-note a.btn{text-decoration:none}.qx-launch-note .warn{font-size:11px;color:var(--red)}.qx-live{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;background:var(--panel);border-radius:8px;padding:9px 12px}.qx-live .state{width:8px;height:8px;border-radius:50%;flex:none;background:var(--faint);align-self:center}.qx-live .head{font-size:11.5px;font-weight:600;color:var(--ink)}.qx-live .detail{flex-basis:100%;font-size:11px;color:var(--muted);overflow-wrap:anywhere}.qx-live.needs-you{background:var(--red-soft)}.qx-live.needs-you .state{background:var(--red);animation:qx-pulse 1.6s ease-in-out infinite}.qx-live.needs-you .head{color:var(--red)}.qx-live.working .state{background:var(--blue)}.qx-live.finished{background:var(--green-soft)}.qx-live.finished .state{background:var(--green)}.qx-live.finished .head{color:var(--green)}.qx-live.idle .state{background:var(--blue-line)}.qx-extra{display:flex;flex-direction:column;gap:4px}.qx-extra .kv,.qx-blocked .kv{display:flex;gap:8px;font-size:12px;line-height:1.45}.qx-extra .kv .k,.qx-blocked .kv .k{flex:none;width:110px;font-size:11px;color:var(--faint);overflow-wrap:anywhere}.qx-extra .kv a.v,.qx-blocked .kv a.v{color:var(--ink);text-decoration:underline}.qx-extra .kv .v,.qx-blocked .kv .v{min-width:0;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.qx-raw{margin-top:8px;border-top:1px solid var(--line);padding-top:10px}.qx-raw>summary{cursor:pointer;font-size:11px;font-weight:600;color:var(--faint)}.qx-raw pre{margin-top:8px;font-size:11px;line-height:1.45;color:var(--ink);background:var(--panel);border-radius:8px;padding:10px 12px;overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;max-height:480px;overflow-y:auto}.qx-result{background:var(--green-soft);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:5px}.qx-result .kv{display:flex;gap:8px;font-size:11px}.qx-result .kv .k{flex:none;width:58px;color:var(--green)}.qx-result .kv .v{min-width:0;color:var(--ink);overflow-wrap:anywhere}.qx-view .empty-note{padding:28px 20px;color:var(--faint);font-size:12.5px;text-align:center;line-height:1.55}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.drawer{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:100vw;z-index:51;background:var(--paper);border-left:1px solid var(--line);box-shadow:-8px 0 24px #1b1e2312;padding:22px 24px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}.drawer .head{display:flex;align-items:center;gap:8px}.drawer .head .state{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--muted)}.drawer .head .state.green{color:var(--green)}.drawer .head .close{margin-left:auto;color:var(--faint);display:flex;padding:4px}.drawer .grow{flex:1}.drawer .meta-line{font-family:var(--mono);font-size:10.5px;color:var(--faint)}.drawer .action-col{display:flex;flex-direction:column;gap:8px}.drawer .action-row{display:flex;gap:8px}.drawer .action-row .btn{flex:1}.dialog-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182073;z-index:60;display:flex;align-items:center;justify-content:center;padding:20px}.dialog{background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 32px #1b1e2329;padding:18px 20px;width:470px;max-width:100%;display:flex;flex-direction:column;gap:12px}.dialog .head{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:600}.dialog .head .warn-ic{color:var(--red);display:flex}.dialog .desc{font-size:13px;line-height:1.5;color:var(--muted)}.dialog .list{border:1px solid var(--line);border-radius:8px;overflow:hidden}.dialog .list .item{display:flex;align-items:center;gap:9px;padding:9px 12px;width:100%;text-align:left}.dialog .list .item+.item{border-top:1px solid var(--line)}.dialog .list .item .t{flex:1;min-width:0;font-size:13px;font-weight:500}.dialog .list .item .pos{font-family:var(--mono);font-size:10.5px;color:var(--red)}.dialog .foot{display:flex;justify-content:flex-end;gap:8px}.admin-row{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid var(--line)}.admin-row .name{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--muted)}.admin-row .meta{font-family:var(--mono);font-size:10.5px;color:var(--faint)}.note{font-size:12px;color:var(--faint);line-height:1.5}.login{height:100vh;display:flex;align-items:center;justify-content:center}.login-box{width:360px;display:flex;flex-direction:column;gap:14px;padding:24px}.login-box form{display:flex;flex-direction:column;gap:14px}.login-box details{font-size:12.5px}.login-box details summary{cursor:pointer;color:var(--muted)}.login-box details form{margin-top:14px}.login .logo{align-self:center;font-family:var(--mono);font-weight:600;font-size:15px;color:var(--red);border:2px solid var(--red);border-bottom-width:4px;border-radius:5px 5px 0 0;padding:5px 10px}.login .err{color:var(--red);font-size:12.5px}.layout-switch{display:flex;gap:2px}.layout-switch .btn.active{background:var(--blue-soft);color:var(--blue)}.tabbar,.fab,.mobile-head{display:none}@media(max-width:899px){.input input,.input textarea,.input input.title-input{font-size:16px}.rail{display:none}.app{flex-direction:column}.main{padding-bottom:66px}.col-view{padding:18px 16px 100px;gap:18px}.view-head h1{font-size:19px}.view-head{gap:10px;flex-wrap:wrap}.view-head .date{white-space:nowrap}.layout-switch .btn{padding:9px 8px}.focus-card{padding:12px 14px}.focus-card .actions{flex-wrap:wrap}.focus-card .actions .btn.green{width:100%}.plan-body{flex-direction:column}.plan-panel{width:100%;border-left:none;border-top:1px solid var(--line);max-height:45%}.plan-top .hint{display:none}.drawer{width:100vw}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--paper);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 0 6px;font-size:10.5px;color:var(--faint);position:relative}.tabbar button.active{color:var(--blue)}.tabbar button.active:before{content:"";position:absolute;top:-1px;left:22%;right:22%;height:2.5px;background:var(--blue);border-radius:0 0 3px 3px}.tabbar .badge{position:absolute;top:4px;right:calc(50% - 22px);background:var(--red);color:#fff;font-family:var(--mono);font-size:9px;font-weight:600;min-width:14px;height:14px;border-radius:7px;display:flex;align-items:center;justify-content:center;padding:0 3px}.fab{display:flex;position:fixed;right:16px;bottom:82px;width:52px;height:52px;border-radius:50%;background:var(--blue);color:#fff;align-items:center;justify-content:center;box-shadow:0 4px 14px #274b9366;z-index:29}}.sheet-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182073;z-index:70;display:flex;align-items:flex-end}.sheet{background:var(--paper);width:100%;border-radius:16px 16px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;max-height:85dvh;overflow-y:auto;box-shadow:0 -6px 24px #1b1e2333}.sheet .grabber{width:36px;height:4px;border-radius:2px;background:var(--line);align-self:center}.sheet h3{font-size:14.5px;font-weight:600}.action-sheet-row{display:flex;align-items:center;gap:10px;padding:14px 8px;font-size:15px;width:100%;text-align:left;border-bottom:1px solid var(--line)}.action-sheet-row.red{color:var(--red)}.action-sheet-row:last-child{border-bottom:none;color:var(--muted);justify-content:center}.swipe-wrap{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--green-soft)}.swipe-under{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;padding:0 16px;color:var(--green);font-weight:600;font-size:13px}.swipe-under.left{justify-content:flex-end;background:var(--panel);color:var(--muted)}.swipe-card{position:relative;background:var(--paper);transition:transform .15s ease;touch-action:pan-y}@media(min-width:900px){.mobile-only{display:none!important}}@media(max-width:899px){.qx-top{padding:14px 14px 10px}.qx-row .pick{padding-left:34px}.qx-group{padding-left:14px;padding-right:14px}.qx-row .acts{display:none}.qx-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14182873;z-index:70}.qx-detail-pane{position:fixed;left:0;right:0;bottom:0;width:auto;z-index:71;max-height:78dvh;border-left:none;border-top:1px solid var(--line);border-radius:16px 16px 0 0;box-shadow:0 -6px 24px #1b1e2333}.qx-detail-pane:not(.has-sel){display:none}.qx-dbody{padding-bottom:calc(24px + env(safe-area-inset-bottom))}}@media(max-width:899px){.desktop-only{display:none!important}}.spiral-wrap{display:flex;flex-direction:column;gap:10px}.spiral-svg{width:100%;max-width:460px;margin:0 auto;display:block}.spiral-svg .spiral-guide,.spiral-svg .spiral-ray{stroke:var(--line);stroke-width:1;stroke-dasharray:3 4}.spiral-svg .spiral-tick{font-size:9px;fill:var(--faint)}.spiral-svg .spiral-event{fill:var(--blue);fill-opacity:.22;stroke:var(--blue);stroke-width:1}.spiral-svg .spiral-task{fill-opacity:.2;stroke-width:1}.spiral-svg .spiral-task.plain{fill:var(--faint);stroke:var(--faint)}.spiral-svg .spiral-task.important{fill:var(--orange);stroke:var(--orange)}.spiral-svg .spiral-task.critical{fill:var(--red);stroke:var(--red)}.spiral-svg .spiral-task.current{fill-opacity:.5;stroke-width:1.5}.spiral-svg .spiral-task:hover{fill-opacity:.62}.spiral-svg .spiral-hand{stroke:var(--red);stroke-width:2;stroke-linecap:round}.spiral-svg .spiral-hub{fill:var(--paper-warm)}.spiral-svg .spiral-date{font-size:12px;font-weight:600;fill:var(--ink)}.spiral-svg .spiral-now{font-size:11px;fill:var(--muted)}.spiral-legend{display:flex;flex-direction:column}.spiral-row{display:flex;align-items:center;gap:10px;padding:5px 4px;text-align:left;border-bottom:1px solid var(--line);min-height:34px;background:transparent}.spiral-row .hit{flex:1;min-width:0;display:flex;align-items:center;gap:10px;text-align:left;padding:0;background:transparent}.spiral-row.task:hover{background:var(--hover)}.spiral-row.event{cursor:default}.spiral-row .handle{color:transparent;cursor:grab;padding:2px 4px;flex:none;touch-action:none;display:flex;align-items:center}.spiral-row:hover .handle{color:var(--handle)}.spiral-row.dragging{opacity:.4}.spiral-row .dot{width:8px;height:8px;border-radius:50%;flex:none}.spiral-row .dot.event{background:var(--blue)}.spiral-row .dot.task{opacity:.55}.spiral-row .dot.task.plain{background:var(--faint)}.spiral-row .dot.task.important{background:var(--orange)}.spiral-row .dot.task.critical{background:var(--red)}.spiral-row .dot.task.current{opacity:1}.spiral-row .dot.overflow{background:var(--red)}.spiral-row .time{font-size:11px;color:var(--muted);flex:none;width:86px}.spiral-row .name{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spiral-overflow{display:flex;flex-direction:column;gap:6px}.spiral-overflow .spiral-row .name{color:var(--red)}.qx-row .state.blocked{background:var(--paper);border:2.5px dashed var(--orange)}.qx-row .state.recipe{background:var(--paper);border:2.5px solid var(--faint);border-radius:2px}.qx-blocked .text{color:var(--orange);margin-bottom:6px}.qx-unblock{margin-top:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.qx-sources{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px}.qx-sources li{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}.qx-sources .excerpt{flex-basis:100%;margin:2px 0 0;color:var(--muted);font-size:12px;white-space:pre-wrap}.vis{font-size:10px;padding:1px 5px;border-radius:3px;border:1px solid var(--line)}.vis.internal{color:var(--red);border-color:var(--red)}.vis.client{color:var(--muted)}.qx-tree{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12.5px}.qx-tree li{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.qx-tree li.self .task{font-weight:600}.qx-tree .state-tag{font-size:10px;color:var(--muted);min-width:64px}.qx-tree .edge{font-size:10.5px;color:var(--faint)}.qx-cancel{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.qx-top{flex-wrap:wrap}.qx-layouts button{font-family:var(--ui);font-weight:500}.qx-column h2 .state,.qx-side .state{width:9px;height:9px;border-radius:50%;flex:none;box-sizing:border-box}.qx-column h2 .state.needs,.qx-side .state.needs{background:var(--red)}.qx-column h2 .state.ready,.qx-side .state.ready{background:var(--blue-line)}.qx-column h2 .state.running,.qx-side .state.running{background:var(--paper);border:2.5px solid var(--blue)}.qx-column h2 .state.blocked,.qx-side .state.blocked{background:var(--paper);border:2px dashed var(--orange);border-radius:2px}.qx-row .state.needs:not([class*=live-]){background:var(--red);border:none}.qx-row2{min-height:48px}.qx-row2 .pick{align-items:center;padding-top:7px;padding-bottom:7px}.qx-row2 .topic{flex:none;width:118px;font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-row2 .lines{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.qx-row2 .head{font-size:13.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-row2 .head.mono{font-size:12px;color:var(--muted)}.qx-row2 .sub{font-size:11.5px;line-height:1.35;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-row2 .sub.mono{font-size:10.5px;color:var(--blue)}.qx-row2.b-needs .sub{color:var(--red)}.qx-row2.b-blocked .sub{color:var(--orange)}.qx-row2 .acts{width:auto;min-width:56px}.qx-row2 .acts .icon-btn{opacity:1}.qx-tsec{padding-bottom:4px}.qx-thead{display:flex;align-items:baseline;gap:8px;width:100%;text-align:left;padding:20px 20px 6px}.qx-thead svg{color:var(--faint);align-self:center}.qx-thead .name{font-size:12.5px;font-weight:600}.qx-thead .n{font-size:10.5px;color:var(--faint)}.qx-tsec.b-needs .qx-thead .name{color:var(--red)}.qx-tsec.b-needs .qx-row2{background:var(--red-soft);margin:0 12px 3px;border-radius:8px}.qx-tsec.b-needs .qx-row2.sel{background:var(--cursor-bg)}.qx-tsec.b-needs .qx-row2 .pick{padding-left:22px}.qx-recipes{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:18px 20px 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.qx-recipes .lbl{font-size:12px;font-weight:600;margin-right:6px}.qx-recipe{display:inline-flex;align-items:stretch;border-radius:6px;background:var(--panel);overflow:hidden}.qx-recipe.sel{background:var(--cursor-bg)}.qx-recipe button{font-size:11px;padding:5px 8px}.qx-recipe a{display:grid;place-items:center;padding:0 7px;color:var(--blue);border-left:1px solid var(--line)}.qx-recipe a:hover,.qx-recipe button:hover{background:var(--hover)}.qx-board{display:flex;flex-direction:column;padding:0 0 16px}.qx-board .qx-recipes{margin:12px 16px 0}.qx-filters{display:flex;flex-wrap:wrap;gap:6px;padding:12px 16px 0}.qx-filters button{font-size:11px;padding:4px 9px;border-radius:14px;border:1px solid var(--line);background:var(--paper);color:var(--muted)}.qx-filters button .mono{opacity:.7}.qx-filters button.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.qx-columns{flex:1 1 auto;display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:10px;padding:12px 16px 0;align-items:start;overflow-x:auto}.qx-column{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:10px;background:var(--panel);min-width:0}.qx-column.b-needs{background:var(--red-soft)}.qx-column h2{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;padding:2px 4px 4px}.qx-column.b-needs h2{color:var(--red)}.qx-column h2 .n{font-size:11px;color:var(--faint);font-weight:400}.qx-column .none{font-size:12px;color:var(--faint);padding:4px}.qx-card{background:var(--paper);border:1px solid var(--line);border-radius:8px;display:flex;flex-direction:column}.qx-card:hover{border-color:var(--blue-line)}.qx-card.sel{border-color:var(--blue);box-shadow:0 0 0 2px var(--cursor-bg)}.qx-column.b-needs .qx-card{border-color:var(--red-line)}.qx-column.b-blocked .qx-card{border-style:dashed}.qx-card .pick{display:flex;flex-direction:column;gap:5px;padding:10px 12px 4px;text-align:left;min-width:0}.qx-card .meta{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--faint);min-width:0}.qx-card .meta .topic{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-card .meta .grow{flex:1}.qx-card .meta .chip{font-size:10px;color:var(--muted);background:var(--panel);border-radius:4px;padding:1px 5px}.qx-card .meta .chip.live.needs-you{color:var(--red);background:var(--red-soft)}.qx-card .meta .prio{width:7px;height:7px;border-radius:50%;flex:none}.qx-card .meta .prio.p1{background:var(--red)}.qx-card .meta .prio.p2{background:var(--orange)}.qx-card .head{font-size:13px;font-weight:500;line-height:1.3;overflow-wrap:anywhere}.qx-card .head.mono{font-size:11.5px;font-weight:400;color:var(--muted)}.qx-card .sub{font-size:11.5px;line-height:1.35;color:var(--faint);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.qx-card .sub.live{font-size:10.5px;color:var(--blue);background:var(--blue-soft);border-radius:4px;padding:3px 6px;-webkit-line-clamp:1}.qx-column.b-needs .qx-card .sub{color:var(--red)}.qx-column.b-blocked .qx-card .sub{color:var(--orange)}.qx-card .acts{display:flex;gap:1px;padding:0 6px 4px;justify-content:flex-end;min-height:8px}.qx-card .acts .icon-btn{width:26px;height:26px}.layout-board .qx-detail-pane:not(.has-sel){display:none}.qx-side{width:232px;flex:none;overflow-y:auto;border-right:1px solid var(--line);background:var(--paper);padding:10px 8px 24px;display:flex;flex-direction:column;gap:1px}.qx-side .qi{display:flex;align-items:center;gap:8px;height:32px;padding:0 8px 0 10px;border-radius:7px;font-size:12.5px;text-align:left;width:100%}.qx-side .qi:hover{background:var(--hover)}.qx-side .qi.on{background:var(--cursor-bg);color:var(--blue);font-weight:500}.qx-side .qi.b-needs{color:var(--red);font-weight:500}.qx-side .qi .name{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-side .qi .c{font-size:10.5px;color:var(--faint);min-width:16px;text-align:right}.qx-side .qi.b-needs .c{color:var(--red)}.qx-side .grp{display:flex;flex-direction:column;gap:1px}.qx-side .grp-name{font-size:10.5px;font-weight:600;color:var(--faint);letter-spacing:.06em;text-transform:uppercase;padding:14px 10px 4px}.qx-side .bar{display:flex;width:32px;height:4px;border-radius:2px;overflow:hidden;background:var(--hover);flex:none}.qx-side .bar .seg{display:block;height:100%}.qx-side .bar .seg.needs{background:var(--red)}.qx-side .bar .seg.running{background:var(--blue)}.qx-side .bar .seg.ready{background:var(--blue-line)}.qx-side .bar .seg.blocked{background:var(--orange)}.qx-panel{background:var(--paper)}.qx-phead{display:flex;align-items:baseline;gap:10px;padding:16px 20px 10px;border-bottom:1px solid var(--line)}.qx-phead h2{font-size:15px;font-weight:600}.qx-phead .full{font-size:10.5px;color:var(--faint)}.qx-phead .n{margin-left:auto;font-size:11px;color:var(--faint)}.qx-panel .qx-row2{border-bottom:1px solid var(--hover)}@media(max-width:899px){.qx-top .tally{flex:1 1 0;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.qx-top .grow{display:none}.qx-layouts{order:10;width:100%}.qx-layouts button{flex:1}.qx-row2 .topic{width:76px}.qx-row2 .acts{display:none}.qx-columns{grid-template-columns:repeat(4,minmax(78vw,1fr));scroll-snap-type:x mandatory}.qx-column{scroll-snap-align:start}.layout-panel .qx-cols{flex-direction:column}.qx-side{width:auto;flex-direction:row;overflow-x:auto;overflow-y:hidden;border-right:none;border-bottom:1px solid var(--line);padding:6px 8px;gap:4px}.qx-side .qi{width:auto;flex:none}.qx-side .grp{flex-direction:row;gap:4px}.qx-side .grp-name,.qx-side .bar{display:none}}
