:root{--bg:#f7f7f5;--surface:#fff;--text:#24292f;--muted:#7a7f87;--border:#e3e4e8;--grid-line:#eceef1;--weekend:#f3f3f0;--accent:#3d6fd1;--selected:#eef3fd;--today:#e0533d;--danger:#c0392b;--bad:#d93025;--bad-bg:#fdecea;--group-row:#eff0f2;color:var(--text);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif;font-size:14px}*{box-sizing:border-box}body{background:var(--bg);margin:0}#root{height:100vh}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:4px 10px}button:hover{border-color:#c5c8ce}button.danger{color:var(--danger)}input,select,textarea{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:4px 8px}a{color:var(--accent);cursor:pointer}.muted{color:var(--muted);font-size:12px}.error{color:var(--danger);min-height:1em}.spacer{flex:1}.login{justify-content:center;align-items:center;height:100%;display:flex}.login form{flex-direction:column;gap:10px;width:280px;display:flex}.login h1{margin:0 0 8px;font-size:22px}.app{flex-direction:column;height:100%;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 14px;display:flex}.brand{margin-right:6px;font-size:15px}.tabs{border:1px solid var(--border);border-radius:6px;display:flex;overflow:hidden}.tab{border:none;border-radius:0}.tab.active{background:var(--text);color:#fff}.workspace{flex:1;min-height:0;display:flex}.workspace main{flex:1;min-width:0;display:flex;overflow:hidden}.empty{color:var(--muted);margin:40px auto}.home-link{color:var(--muted);border:none;padding-left:0}.home-link:hover{color:var(--text)}.project-title{margin-right:6px;font-size:15px}.home{flex-direction:column;flex:1;gap:28px;padding:24px 28px;display:flex;overflow:auto}.home h2{margin:0 0 12px;font-size:16px}.home h2 .muted{margin-left:6px;font-weight:400}.project-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;text-align:left;border-radius:10px;flex-direction:column;gap:6px;padding:14px;display:flex}.project-card:hover{border-color:#c5c8ce}.project-card-head{justify-content:space-between;align-items:center;gap:8px;font-size:15px;display:flex}.new-project{min-height:120px;color:var(--muted);border-style:dashed;justify-content:center;align-items:center}.new-project input{width:100%}.progress{background:var(--grid-line);border-radius:3px;height:5px;margin-top:4px;overflow:hidden}.progress-fill{background:#5aa469;height:100%}.home-deadlines{border-top:1px solid var(--border);padding-top:22px}.deadline-row{border-bottom:1px solid var(--border);grid-template-columns:180px minmax(0,1fr);align-items:center;gap:14px;padding:10px 0;display:grid}.deadline-row:last-child{border-bottom:none}.deadline-project{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.deadline-project:hover{color:var(--accent)}.deadlines{gap:8px;margin:0;padding:2px 0 6px;list-style:none;display:flex;overflow-x:auto}.deadline{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:column;flex:none;gap:4px;width:200px;padding:8px 10px;display:flex}.deadline:hover{border-color:#c5c8ce}.deadline-top{justify-content:space-between;align-items:center;gap:6px;min-height:18px;display:flex}.deadline-date{font-size:12px;font-weight:600}.deadline-icon{color:var(--muted);flex:none}.deadline-title{gap:6px;min-width:0;display:flex}.deadline-title>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.deadline.overdue{background:var(--bad-bg);border-color:#f3c1bb}.deadline.overdue .deadline-date{color:var(--bad)}.avatars{display:inline-flex}.avatar{color:#fff;border:1.5px solid var(--surface);border-radius:50%;flex:none;justify-content:center;align-items:center;width:20px;height:20px;margin-left:-4px;font-size:9px;font-weight:600;display:inline-flex}.avatars .avatar:first-child{margin-left:0}.gantt{background:var(--surface);flex:1;overflow:auto}.gantt-inner{position:relative}.gantt-header{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.gantt-corner{width:var(--left-w);background:var(--surface);z-index:11;border-right:1px solid var(--border);flex:none;position:sticky;left:0}.col-resizer{left:calc(var(--left-w) - 3px);margin-left:calc(var(--left-w) - 3px);z-index:12;width:6px;height:0;position:sticky}.col-resizer-hit{cursor:col-resize;width:6px;position:absolute;top:0;left:0}.col-resizer-hit:hover,.gantt.resizing .col-resizer-hit{background:var(--accent);opacity:.4}.gantt.resizing,.gantt.resizing *{-webkit-user-select:none;user-select:none;cursor:col-resize!important}.time-header{height:44px;position:relative}.months,.ticks{height:22px;position:relative}.month-label{white-space:nowrap;padding-left:4px;font-size:12px;font-weight:600;position:absolute;top:4px}.day-label{text-align:center;color:var(--muted);white-space:nowrap;font-size:11px;position:absolute;top:3px}.gantt-body{position:relative}.gantt-grid{top:0;bottom:0;right:0;left:var(--left-w);position:absolute}.today-line{background:var(--today);opacity:.6;z-index:3;pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:0}.gantt-row{position:absolute;left:0;right:0}.gantt-row:hover{background:#00000005}.gantt-row.selected{background:var(--selected)}.row-label{z-index:5;height:100%;width:var(--left-w);-webkit-user-select:none;user-select:none;background:var(--surface);border-right:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;padding:0 10px;display:flex;position:sticky;left:0;overflow:hidden}.gantt-row.selected .row-label{background:var(--selected)}.task-label{cursor:pointer;padding-left:28px}.row-label input{-webkit-user-select:text;user-select:text}.milestone-label{padding-left:36px;font-style:italic}.group-name{text-overflow:ellipsis;min-width:0;overflow:hidden}.group-row{border-top:1px solid var(--border)}.group-row .row-label{background:var(--group-row)}.caret{background:0 0;border:none;padding:0 2px}.add{flex:none;margin-left:auto;padding:0 7px}.add-menu{flex:none;gap:4px;margin-left:auto;display:flex}.add-menu button{padding:0 6px;font-size:12px}.dot{border-radius:50%;flex:none;width:8px;height:8px}.diamond{border:1px solid var(--text);border-radius:1px;flex:none;width:6px;height:6px;transform:rotate(45deg)}.row-track{top:0;bottom:0;right:0;left:var(--left-w);cursor:pointer;position:absolute}.bar{z-index:2;color:#fff;border-radius:5px;justify-content:space-between;align-items:center;gap:4px;height:20px;padding:0 2px 0 8px;font-size:12px;font-weight:500;display:flex;position:absolute;top:7px;overflow:hidden;box-shadow:0 1px 1px #00000014}.bar-label{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bar-outside-label{color:var(--muted);white-space:nowrap;z-index:2;font-size:12px;position:absolute;top:9px}.milestone-name{font-style:italic}.milestone{border:1px solid var(--text);z-index:2;border-radius:2px;width:14px;height:14px;position:absolute;top:10px;transform:rotate(45deg)}.deps{top:0;left:var(--left-w);z-index:1;pointer-events:none;position:absolute;overflow:visible}.dep{fill:none;stroke:#9aa1ab;stroke-width:1.2px;opacity:.35}.dep.hot{stroke:var(--text);stroke-width:1.6px;opacity:1}.dep.bad{stroke:var(--bad);stroke-width:1.8px;opacity:.9;pointer-events:stroke;cursor:help}.dep.bad.hot{stroke-width:2.2px;opacity:1}.due{fill:none;stroke:#9aa1ab;stroke-width:1.2px;stroke-dasharray:4 3;opacity:.35}.due.hot{stroke:var(--text);opacity:1}.due.late{stroke:var(--bad);stroke-width:1.8px;opacity:.9;pointer-events:stroke;cursor:help}.due.late.hot{stroke-width:2.2px;opacity:1}.bar.bad{outline:2px solid var(--bad);outline-offset:1px}.milestone.bad{outline:2px solid var(--bad);outline-offset:2px}.bar,.milestone{cursor:grab}.bar-handle{cursor:ew-resize;z-index:1;width:7px;position:absolute;top:0;bottom:0}.bar-handle.left{left:0}.bar-handle.right{right:0}.gantt.dragging,.gantt.dragging *{-webkit-user-select:none;user-select:none;cursor:grabbing!important}.inline-name{text-overflow:ellipsis;overflow:hidden}.inline-input{width:100%;padding:2px 6px;font-weight:400}.add-group-row .row-label{border-top:1px solid var(--border)}.add-group{border:1px dashed var(--border);color:var(--muted);background:0 0}.add-group:hover{color:var(--text)}.board{flex:1;padding:0 14px 40px;overflow:auto}.board-head,.lane{grid-template-columns:220px repeat(3,minmax(200px,1fr));gap:10px;display:grid}.board-head{background:var(--bg);z-index:2;padding:12px 0 6px;position:sticky;top:0}.col-head{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.lane{border-top:1px solid var(--border);padding:8px 0}.lane.focused{background:var(--selected);border-radius:8px}.lane-label{cursor:pointer;border-left:4px solid #0000;flex-direction:column;gap:2px;padding:4px 10px;display:flex}.cell{border-radius:8px;flex-direction:column;gap:6px;min-height:44px;padding:4px;display:flex}.cell.drag-over{outline:1px dashed var(--accent);background:#3d6fd114}.card{background:var(--surface);border:1px solid var(--border);cursor:grab;border-radius:7px;flex-direction:column;gap:6px;padding:7px 9px;display:flex}.card.selected{border-color:var(--accent);box-shadow:0 0 0 2px #3d6fd133}.card-foot{justify-content:space-between;align-items:center;min-height:18px;display:flex}.add-card{border:1px dashed var(--border);color:var(--muted);text-align:left;background:0 0}.add-card-input{width:100%}.panel{background:var(--surface);border-left:1px solid var(--border);flex:none;width:340px;padding:16px;position:relative;overflow-y:auto}.panel-close{border:none;padding:0 6px;font-size:20px;position:absolute;top:10px;right:10px}.panel-fields{flex-direction:column;gap:10px;display:flex}.panel-title{border-color:#0000;margin-right:28px;padding-left:0;font-size:16px;font-weight:600}.panel-title:focus{border-color:var(--border);padding-left:8px}.panel h4{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:6px 0 0;font-size:12px}.panel label{color:var(--muted);flex-direction:column;gap:3px;font-size:12px;display:flex}.panel label.check{color:var(--text);flex-direction:row;align-items:center;gap:6px;font-size:13px}.row{flex-wrap:wrap;gap:8px;display:flex}.swatches{gap:6px;display:flex}.swatch{border:2px solid #0000;border-radius:50%;width:22px;height:22px;padding:0}.swatch.selected{border-color:var(--text)}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{opacity:.55;border-radius:14px;align-items:center;gap:6px;padding:2px 10px 2px 3px;display:inline-flex}.chip .avatar{margin-left:0}.chip.selected{opacity:1;border-color:var(--accent);background:var(--selected)}.dep-list{flex-direction:column;gap:4px;max-height:160px;display:flex;overflow-y:auto}.panel label.check.bad{color:var(--bad)}.warning{background:var(--bad-bg);color:var(--bad);border-radius:6px;padding:8px 10px;font-size:12px}.warning ul{margin:4px 0 0;padding-left:16px}.comments{border-top:1px solid var(--border);flex-direction:column;gap:8px;margin-top:20px;padding-top:6px;display:flex}.comment-head{align-items:center;gap:6px;display:flex}.comment-body{white-space:pre-wrap;margin:3px 0 0 24px}.comments textarea{resize:vertical;min-height:60px}.comments>button{align-self:flex-end}
