:root{--ink: #111111;--paper: #ffffff;--surface: #fafafa;--muted: #6b6b6b;--faint: #9a9a9a;--hair: #e4e4e4;--hover: #f2f2f2;--accent: #111111;--danger: #c0392b;--radius: 6px;--sidebar-w: 248px}[data-theme=dark]{--ink: #ececec;--paper: #161616;--surface: #1d1d1d;--muted: #9a9a9a;--faint: #6b6b6b;--hair: #2c2c2c;--hover: #242424;--accent: #ececec}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;background:var(--paper);color:var(--ink);font-size:14px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;font-weight:600;letter-spacing:-.01em}.kicker{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;height:100%}.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}.main-header{padding:18px 28px 0;border-bottom:1px solid var(--hair)}.main-title-row{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}.main-title-row h1{font-size:20px}.main-title-row .sub{color:var(--muted);font-size:13px}.main-body{flex:1;overflow:auto;padding:22px 28px 60px}.sidebar{border-right:1px solid var(--hair);background:var(--surface);display:flex;flex-direction:column;overflow-y:auto}.sidebar-brand{padding:18px 16px 14px;border-bottom:1px solid var(--hair);display:flex;justify-content:space-between;align-items:center}.sidebar-brand .name{font-weight:700;font-size:15px;letter-spacing:-.01em}.sidebar-section{padding:12px 8px}.sidebar-label{padding:4px 8px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);display:flex;justify-content:space-between;align-items:center}.tree-item{display:flex;align-items:center;gap:7px;width:100%;text-align:left;padding:5px 8px;border:0;background:none;border-radius:var(--radius);cursor:pointer;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-item:hover{background:var(--hover)}.tree-item.active{background:var(--hover);font-weight:600}.tree-item .chev{color:var(--faint);font-size:10px;width:10px;flex:none}.tree-indent-1{padding-left:22px}.tree-indent-2{padding-left:38px}.tree-indent-3{padding-left:52px}.tree-add{color:var(--faint);background:none;border:0;cursor:pointer;font-size:14px;line-height:1;padding:2px 6px;border-radius:4px}.tree-add:hover{background:var(--hover);color:var(--ink)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--hair);padding:10px 8px}.tabs{display:flex;gap:2px;flex-wrap:wrap}.tab{padding:7px 12px 9px;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);cursor:pointer;font-size:13px}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}.tab.soon{opacity:.45;cursor:default}.btn{border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:7px 14px;border-radius:var(--radius);cursor:pointer;font-size:13px;font-weight:500}.btn:hover{opacity:.85}.btn.ghost{background:none;color:var(--ink);border-color:var(--hair)}.btn.ghost:hover{border-color:var(--ink);opacity:1}.btn.small{padding:4px 10px;font-size:12px}.btn.danger{background:none;color:var(--danger);border-color:var(--danger)}input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],select,textarea{background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);padding:7px 10px;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ink)}label.field{display:block;margin-bottom:12px}label.field>span{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}.center-page{height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:340px}.auth-card h1{font-size:22px;margin:6px 0 22px}.auth-card .btn{width:100%;margin-top:6px}.notice{max-width:460px}.notice.error h2{color:var(--danger)}.form-error{color:var(--danger);font-size:13px;margin:8px 0 0}.form-ok{color:var(--muted);font-size:13px;margin:8px 0 0}.spinner{width:22px;height:22px;border:2px solid var(--hair);border-top-color:var(--ink);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.task-table{--cols: minmax(260px, 1fr) 96px 100px 100px 108px 108px;min-width:780px}.task-thead,.task-trow{display:grid;grid-template-columns:var(--cols);align-items:center}.task-thead{border-bottom:1px solid var(--hair);position:sticky;top:0;background:var(--paper);z-index:5}.task-thead>div{padding:6px 8px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.task-trow{border-bottom:1px solid var(--hair);cursor:pointer}.task-trow:hover{background:var(--hover)}.tt-cell{padding:6px 8px;font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px;min-width:0;position:relative}.tt-name{color:var(--ink);font-size:13.5px;gap:8px}.tt-name .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-name .title.done{color:var(--faint);text-decoration:line-through}.tt-group{display:flex;align-items:center;gap:8px;padding:16px 8px 6px}.tt-group .count{color:var(--faint);font-size:12px}.tt-sub{padding-left:34px}.row-check{width:13px;height:13px;flex:none;accent-color:var(--ink);opacity:.35}.row-check:checked,.task-trow:hover .row-check{opacity:1}.drag-handle{color:var(--faint);font-size:11px;letter-spacing:-2px;cursor:grab;flex:none;padding:0 2px;opacity:0;-webkit-user-select:none;user-select:none}.task-trow:hover .drag-handle{opacity:1}.row-title{flex:1;min-width:0;border:1px solid transparent!important;background:none!important;padding:2px 4px!important;font-size:13.5px;color:var(--ink)}.row-title:hover{border-color:var(--hair)!important}.row-title:focus{border-color:var(--ink)!important;background:var(--paper)!important}.row-title.done{color:var(--faint);text-decoration:line-through}.day-chips{display:flex;gap:4px;margin-top:8px}.day-chip{width:30px;height:26px;border:1px solid var(--hair);border-radius:5px;background:none;color:var(--muted);font-size:11px;font-weight:600;cursor:pointer}.day-chip:hover{border-color:var(--ink)}.day-chip.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.recur-mark{color:var(--muted);font-size:13px;flex:none;cursor:default}.task-trow.over-above{box-shadow:inset 0 2px 0 var(--ink)}.task-trow.over-below{box-shadow:inset 0 -2px 0 var(--ink)}.task-trow.over-nest{background:var(--hover);outline:1.5px dashed var(--muted);outline-offset:-2px}.bulk-bar{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--paper);border:1px solid var(--ink);border-radius:8px;box-shadow:0 12px 40px #0003;padding:10px 14px;z-index:30;max-width:92vw}.bulk-bar select,.bulk-bar input[type=date]{width:auto;padding:4px 8px;font-size:12px}.bulk-count{font-size:12.5px;font-weight:600;white-space:nowrap}.bulk-dates{display:flex;gap:6px;align-items:center}.ctx-menu{position:fixed;min-width:160px;background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);box-shadow:0 10px 34px #00000029;padding:5px;z-index:45}.ctx-menu button{display:block;width:100%;text-align:left;background:none;border:0;padding:7px 10px;border-radius:4px;cursor:pointer;font-size:13px;color:var(--ink)}.ctx-menu button:hover{background:var(--hover)}.ctx-menu button.danger{color:var(--danger)}.dot-btn{width:14px;height:14px;border-radius:50%;border:0;padding:0;flex:none;cursor:pointer;outline-offset:2px}.dot-btn:hover{box-shadow:0 0 0 3px var(--hair)}.cell-btn{background:none;border:0;padding:2px 4px;border-radius:4px;color:inherit;cursor:pointer;font-size:inherit;white-space:nowrap}.cell-btn:hover{background:var(--hair)}.cell-btn.empty{color:var(--faint)}.cell-pop{position:absolute;top:calc(100% - 2px);left:0;min-width:210px;background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);box-shadow:0 10px 34px #00000029;padding:12px;z-index:26;cursor:default}.cell-pop .hint{font-size:11px;color:var(--faint);margin:6px 0 0}.cell-pop .pop-actions{display:flex;gap:6px;margin-top:10px;justify-content:flex-end}.status-pop{position:absolute;top:calc(100% - 2px);left:0;min-width:170px;background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);box-shadow:0 10px 34px #00000029;padding:6px;z-index:26;cursor:default}.status-pop button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;padding:6px 8px;border-radius:4px;cursor:pointer;font-size:12.5px;color:var(--ink)}.status-pop button:hover{background:var(--hover)}.pop-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:25}.title-input{font-size:20px;font-weight:600;letter-spacing:-.01em;border:1px solid transparent!important;background:none!important;padding:2px 6px!important;margin-left:-6px;width:auto;min-width:120px}.title-input:hover{border-color:var(--hair)!important}.title-input:focus{border-color:var(--ink)!important;background:var(--paper)!important}.project-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--hair);padding:10px 8px;cursor:pointer;color:var(--ink)}.project-row:hover{background:var(--hover)}.project-row .chev{color:var(--faint);font-size:10px;width:10px;flex:none}.project-row-name{font-weight:600;font-size:14px}.status-group{margin-bottom:26px}.status-group-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.status-dot{width:9px;height:9px;border-radius:50%;flex:none}.status-group-header .count{color:var(--faint);font-size:12px}.task-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-bottom:1px solid var(--hair);cursor:pointer}.task-row:hover{background:var(--hover)}.task-row .title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row .title.done{color:var(--faint);text-decoration:line-through}.task-row .meta{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:12px;flex:none}.task-row .meta .overdue{color:var(--danger);font-weight:600}.subtask-indent{padding-left:30px}.avatar{width:22px;height:22px;border-radius:50%;background:var(--hair);color:var(--muted);font-size:10px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;flex:none;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.tag-chip{font-size:11px;padding:2px 8px;border-radius:20px;border:1px solid var(--hair);white-space:nowrap}.inline-add{display:flex;gap:8px;padding:6px 8px}.inline-add input{border-color:transparent;background:none;padding-left:0}.inline-add input:focus{border-color:var(--hair);background:var(--paper);padding-left:10px}.board{display:flex;gap:14px;align-items:flex-start;min-height:100%}.board-col{width:260px;flex:none;background:var(--surface);border:1px solid var(--hair);border-radius:var(--radius);padding:10px}.board-col-header{display:flex;align-items:center;gap:8px;padding:2px 4px 10px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.board-col-header .count{color:var(--faint);font-weight:400}.board-col.drag-over{border-color:var(--ink)}.card{background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px;cursor:grab}.card:hover{border-color:var(--muted)}.card .card-title{font-weight:600;margin-bottom:3px}.card .card-sub{color:var(--muted);font-size:12px}.card-owner{display:inline-flex;align-items:center;gap:5px;font-weight:400;font-size:11.5px;color:var(--muted);margin-left:auto}.board-lane{margin-bottom:26px}.board-lane-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;margin-bottom:8px}.panel-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;z-index:20}.panel{position:fixed;top:0;right:0;bottom:0;width:min(440px,92vw);background:var(--paper);border-left:1px solid var(--hair);z-index:21;overflow-y:auto;padding:22px 24px 60px}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.panel-title-input{font-size:17px;font-weight:600;border-color:transparent!important;padding-left:0!important}.panel-title-input:focus{border-color:var(--hair)!important;padding-left:10px!important}.panel .close{background:none;border:0;font-size:18px;cursor:pointer;color:var(--muted);padding:2px 6px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.panel-section{border-top:1px solid var(--hair);margin-top:18px;padding-top:14px}.panel-section>.kicker{display:block;margin-bottom:10px}.dep-row,.sub-row{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}.dep-row .grow,.sub-row .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.x-btn{background:none;border:0;color:var(--faint);cursor:pointer;padding:2px 5px;font-size:13px}.x-btn:hover{color:var(--danger)}.home-section{margin-bottom:30px}.home-section h2{font-size:15px;margin-bottom:6px}.home-empty{color:var(--faint);padding:8px;font-size:13px}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:28px;max-width:1100px}.settings-card h2{font-size:15px;margin-bottom:12px}.row-line{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid var(--hair);font-size:13px}.row-line .grow{flex:1;min-width:0}.row-line input[type=color]{width:26px;height:26px;padding:0;border:0;background:none;cursor:pointer}.order-btns{display:flex;flex-direction:column}.order-btns button{background:none;border:0;color:var(--faint);cursor:pointer;font-size:9px;line-height:1.1;padding:0 4px}.order-btns button:hover{color:var(--ink)}.muted{color:var(--muted)}.small{font-size:12px}.dialog-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:40;display:flex;align-items:center;justify-content:center;padding:24px}.dialog-card{width:340px;max-width:100%;background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);box-shadow:0 12px 40px #0000002e;padding:20px 22px}.dialog-card h2{font-size:15px;margin-bottom:12px}.dialog-card p{margin-top:0;font-size:13px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.gantt-scroll{overflow-x:auto;border:1px solid var(--hair);border-radius:var(--radius)}.gantt-inner{position:relative}.g-row{display:flex;height:34px;border-bottom:1px solid var(--hair);position:relative}.g-row:last-child{border-bottom:0}.g-header{border-bottom:1px solid var(--hair)}.g-name{width:240px;flex:none;display:flex;align-items:center;gap:7px;padding:0 10px;font-size:12.5px;border-right:1px solid var(--hair);position:sticky;left:0;background:var(--paper);z-index:4;overflow:hidden}.g-name-h{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.g-list-name{font-weight:600;font-size:12px}.g-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.g-title.done{color:var(--faint);text-decoration:line-through}.g-track{position:relative;flex:none}.g-day-h{position:absolute;bottom:4px;width:26px;text-align:center;font-size:10px;color:var(--faint)}.g-day-h.wk{color:var(--hair)}.g-month{position:absolute;top:-16px;left:2px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}.g-shade{position:absolute;top:0;pointer-events:none;z-index:0}.g-daycol{position:absolute;top:0;bottom:0;border-left:1px solid var(--hair);opacity:.45}.g-daycol.wk{background:var(--surface);opacity:1}.g-today{position:absolute;top:0;bottom:0;width:2px;background:var(--danger);opacity:.55}.g-links{position:absolute;top:0;left:0}.g-links path{stroke:var(--faint);stroke-width:1.2}.g-links-top{z-index:7;pointer-events:none}.g-name{z-index:8}.g-link-hit{stroke:transparent!important;stroke-width:12!important;pointer-events:stroke}.g-link:hover .g-link-line{stroke:var(--danger);stroke-width:1.6}.g-link-x{opacity:0;pointer-events:none;cursor:pointer}.g-link:hover .g-link-x{opacity:1;pointer-events:all}.g-link-x circle{fill:var(--paper);stroke:var(--danger);stroke-width:1.4}.g-link-x path{stroke:var(--danger)!important;stroke-width:1.6!important}.g-bar{position:absolute;top:6px;height:22px;border-radius:5px;cursor:grab;z-index:2;display:flex;align-items:center;padding:0 8px;touch-action:none;-webkit-user-select:none;user-select:none}.g-bar.dragging{opacity:.75;cursor:grabbing;box-shadow:0 4px 14px #00000040;z-index:6}.g-bar.done{opacity:.45}.g-bar-label{font-size:11px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.g-unscheduled{position:sticky;left:250px;font-size:11px;color:var(--faint);align-self:center}.g-title-btn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.g-title-btn:hover{text-decoration:underline}.g-title-btn .done{color:var(--faint);text-decoration:line-through}.g-folder-name{font-weight:600;cursor:pointer;border:0;text-align:left}.g-folder-name .chev{color:var(--faint);font-size:10px;width:10px;flex:none}.g-fbar{position:absolute;top:10px;height:14px;border-radius:7px;background:var(--ink);opacity:.8;z-index:2}.g-h{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:3}.g-h-l{left:0;border-radius:5px 0 0 5px}.g-h-r{right:0;border-radius:0 5px 5px 0}.g-bar:hover .g-h{background:#ffffff59}.g-node{position:absolute;top:50%;margin-top:-5px;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--muted);background:var(--paper);cursor:crosshair;z-index:5;opacity:0;touch-action:none}.g-row:hover .g-node{opacity:1}.g-node:hover{border-color:var(--ink);box-shadow:0 0 0 3px var(--hover)}.g-templink{stroke:var(--ink)!important;stroke-dasharray:4 3;stroke-width:1.5!important}.view-toolbar{display:flex;align-items:center;gap:10px;padding:8px 0 10px;flex-wrap:wrap}.filter-bar{display:flex;gap:6px;flex-wrap:wrap}.filter-bar select{width:auto;padding:4px 8px;font-size:12px;color:var(--muted)}.tab.saved{font-style:italic}.cal-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.cal-toolbar h2{font-size:16px}.cal-grid{border:1px solid var(--hair);border-radius:var(--radius);overflow:hidden}.cal-dow-row{display:grid;grid-template-columns:repeat(7,1fr);border-bottom:1px solid var(--hair)}.cal-dow{padding:6px 8px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.cal-week{position:relative;display:grid;grid-template-columns:repeat(7,1fr);min-height:118px;border-bottom:1px solid var(--hair)}.cal-week:last-child{border-bottom:0}.cal-day{border-right:1px solid var(--hair);padding:6px 8px;font-size:12px}.cal-day:last-child{border-right:0}.cal-day.wk{background:var(--surface)}.cal-day.dim .cal-num{color:var(--faint);opacity:.5}.cal-num{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%}.cal-num.today{background:var(--ink);color:var(--paper);font-weight:600}.cal-more{float:right;font-size:10.5px;color:var(--faint)}.cal-bars{position:absolute;top:34px;left:0;right:0;bottom:4px;pointer-events:none}.cal-bar{position:absolute;height:18px;border:0;font-size:11px;color:#fff;padding:0 7px;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;pointer-events:auto}.cal-bar.done{opacity:.45;text-decoration:line-through}.tbl{min-width:980px}.tbl-head,.tbl-row{display:grid;grid-template-columns:minmax(220px,1.6fr) 1.1fr .9fr 1fr 72px 72px 80px 80px;border-bottom:1px solid var(--hair);align-items:center}.tbl-h{background:none;border:0;padding:7px 8px;text-align:left;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);cursor:pointer}.tbl-h:hover,.tbl-h.active{color:var(--ink)}.tbl-row{cursor:pointer}.tbl-row:hover{background:var(--hover)}.tbl-cell{padding:7px 8px;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:7px;min-width:0}.tbl-title{color:var(--ink);font-size:13px}.tbl-title .done-text{color:var(--faint);text-decoration:line-through}:root{--ok: #2f9e63;--ok-soft: #d9efe2;--warn: #e0912f;--warn-soft: #f7e3c6;--over: #c0392b;--over-soft: #f2d4cf}[data-theme=dark]{--ok: #3cae72;--ok-soft: #1e3a2c;--warn: #e0912f;--warn-soft: #3d3020;--over: #d4574a;--over-soft: #402420}.wlv-member{cursor:pointer;border:0;text-align:left}.wlv-member .chev{color:var(--faint);font-size:10px;width:10px;flex:none}.wlv-member .grow{flex:1;min-width:0}.wlv-project{font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-left:26px}.wlv-cell{position:absolute;top:4px;bottom:4px;display:flex;flex-direction:column;justify-content:flex-end;z-index:2;border-radius:4px;padding-top:15px;overflow:hidden}.wlv-cell.soft-ok{background:var(--ok-soft)}.wlv-cell.soft-warn{background:var(--warn-soft)}.wlv-cell.soft-over{background:var(--over)}.wlv-fill{border-radius:3px 3px 4px 4px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.wlv-fill.ok{background:var(--ok)}.wlv-fill.warn{background:var(--warn)}.wlv-fill.over{background:var(--over);height:100%!important}.wlv-overlabel{font-size:9.5px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.wlv-cell.off{background:repeating-linear-gradient(45deg,transparent 0 4px,var(--hair) 4px 7px);border-radius:3px}.wlv-taskbar{height:22px;top:9px}.wlv-project-btn{border:0;cursor:pointer;text-align:left}.wlv-project-btn .chev{color:var(--faint);font-size:10px;width:10px;flex:none}.wlv-project-btn:hover{background:var(--hover)}.wlv-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--muted)}.wlv-legend .wlv-chip{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}.wlv-chip.ok{background:var(--ok)}.wlv-chip.warn{background:var(--warn)}.wlv-chip.over{background:var(--over)}.wlv-chip.off{background:repeating-linear-gradient(45deg,transparent 0 3px,var(--muted) 3px 5px);border:1px solid var(--hair)}.stage-pill{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--hair);border-radius:20px;padding:4px 13px;background:none;font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--muted);cursor:pointer;white-space:nowrap}.stage-pill:hover{box-shadow:0 0 0 3px var(--hover)}.avatar-stack{display:inline-flex}.avatar-stack .avatar{margin-left:-7px;box-shadow:0 0 0 2px var(--paper)}.avatar-stack .avatar:first-child{margin-left:0}.assignee-chips{display:flex;gap:6px;flex-wrap:wrap}.assignee-chip{cursor:pointer;background:none}.assignee-chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.badge{margin-left:auto;background:var(--ink);color:var(--paper);font-size:10px;font-weight:700;border-radius:9px;padding:1px 6px}.comment{display:flex;gap:8px;padding:7px 0}.comment-body{flex:1;min-width:0}.comment-meta{display:flex;align-items:baseline;gap:8px;font-size:12px;font-weight:600}.comment-text{font-size:13px;margin-top:2px;white-space:pre-wrap;word-break:break-word}.comment-form{display:flex;gap:6px;margin-top:8px;align-items:center}.comment-tag{width:52px;flex:none;padding:6px 4px;color:var(--muted)}.mention-row{display:flex;gap:10px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--hair);padding:12px 8px;cursor:pointer;color:var(--ink);align-items:flex-start}.mention-row:hover{background:var(--hover)}.mention-main{flex:1;min-width:0}.mention-head{display:flex;align-items:center;gap:7px}.mention-head .done-text{color:var(--faint);text-decoration:line-through}.mention-body{display:block;margin-top:3px;font-size:13px}.drop-above{box-shadow:inset 0 2px 0 var(--ink)}.drop-below{box-shadow:inset 0 -2px 0 var(--ink)}.drop-into{background:var(--hover);outline:1.5px dashed var(--muted);outline-offset:-2px;border-radius:var(--radius)}.chev-btn{background:none;border:0;color:var(--faint);font-size:10px;width:18px;flex:none;cursor:pointer;padding:4px 2px;border-radius:4px}.chev-btn:hover{background:var(--hover);color:var(--ink)}.gear-btn{background:none;border:0;color:var(--muted);cursor:pointer;padding:6px;border-radius:var(--radius);flex:none;display:inline-flex}.gear-btn:hover,.gear-btn.active{background:var(--hover);color:var(--ink)}.wlv-nums{position:absolute;top:2px;left:0;right:0;text-align:center;font-size:10px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;pointer-events:none;z-index:3}.wlv-cell.soft-over .wlv-nums{color:#fff;top:50%;transform:translateY(-50%);text-transform:uppercase;letter-spacing:.03em}.dash{max-width:1080px;display:flex;flex-direction:column;gap:22px}.dash-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.dash-card{border:1px solid var(--hair);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:6px}.dash-value{font-size:24px;font-weight:700;letter-spacing:-.01em}.dash-row{display:grid;grid-template-columns:1fr 1fr;gap:22px}@media (max-width: 900px){.dash-row{grid-template-columns:1fr}}.dash-panel{border:1px solid var(--hair);border-radius:var(--radius);padding:16px 18px}.dash-panel h2{font-size:14px;margin-bottom:14px}.dash-legend{display:flex;flex-direction:column;gap:7px;font-size:13px}.dash-legend i,.dash-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px}.dash-donut-num{font-size:22px;font-weight:700;fill:var(--ink)}.dash-donut-sub{font-size:10px;letter-spacing:.1em;text-transform:uppercase;fill:var(--muted)}.dash-bars{display:flex;gap:10px;align-items:flex-end;height:150px}.dash-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px}.dash-bar{width:100%;max-width:46px;background:var(--ink);border-radius:4px 4px 0 0;min-height:2px;opacity:.85}.dash-bar-label{font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}.dash-bar-val{font-size:10px;color:var(--muted)}.dash-table{font-size:13px}.dash-thead,.dash-trow{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1fr 1fr;gap:8px;padding:7px 4px;border-bottom:1px solid var(--hair);align-items:center}.dash-thead>div{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.dash-trow:last-child{border-bottom:0}.dash-entries-grid{grid-template-columns:1.8fr 1fr 1fr .9fr .7fr .7fr 34px}.warn-banner{position:fixed;bottom:16px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--paper);font-size:12.5px;padding:9px 16px;border-radius:6px;box-shadow:0 8px 30px #00000040;z-index:50;max-width:80vw}.profile-pop{position:absolute;bottom:52px;left:10px;width:230px;background:var(--paper);border:1px solid var(--hair);border-radius:var(--radius);box-shadow:0 8px 30px #0000001f;padding:14px;z-index:30}
