.desk-gantt{--desk-line:#e9e8e5;--desk-paper:#fff;--desk-ink:#353936;--desk-soft:#f7f7f5;color:var(--desk-ink);border:1px solid var(--desk-line);border-radius:8px;overflow:hidden;background:var(--desk-paper)}
.desk-gantt-toolbar,.desk-gantt-footer{display:flex;align-items:center;gap:16px;justify-content:space-between;padding:14px 18px;background:var(--desk-paper);font-size:12px;color:#777b75}
.desk-gantt-toolbar>div{display:flex;gap:6px}.desk-gantt-toolbar button,.desk-gantt-footer button{font-size:12px;padding:7px 12px;border:1px solid var(--desk-line);background:var(--desk-paper);border-radius:5px;color:var(--desk-ink)}
.desk-gantt-scroll{max-height:660px;overflow:auto;position:relative;overscroll-behavior:contain}
.desk-gantt-table{position:relative;min-width:100%;padding-bottom:24px;background:var(--desk-paper)}
.desk-gantt-row{display:flex;min-height:66px;border-bottom:1px solid var(--desk-line)}
.desk-gantt-name{flex:0 0 280px;width:280px;box-sizing:border-box;position:sticky;left:0;z-index:4;background:var(--desk-paper);border-right:1px solid var(--desk-line);display:flex;align-items:center;padding:0 19px}
.desk-gantt-track{position:relative;flex-shrink:0;min-height:65px;background-image:linear-gradient(to right,var(--desk-line) 1px,transparent 1px);background-size:calc(var(--desk-day)*7) 100%}
.desk-gantt-header{position:sticky;top:0;z-index:8;height:78px;background:var(--desk-paper);font-size:12px;font-weight:600}
.desk-gantt-header .desk-gantt-track{background:var(--desk-paper)}.desk-gantt-header .desk-gantt-name{align-items:center;color:#7a7d78}
.desk-months{position:relative;height:42px;border-bottom:1px solid var(--desk-line);overflow:hidden}.desk-months span{position:absolute;height:42px;padding:13px 12px;box-sizing:border-box;border-left:1px solid var(--desk-line);white-space:nowrap;overflow:hidden}
.desk-weeks{position:relative;height:34px;overflow:hidden}.desk-weeks span{position:absolute;padding:8px 7px;font-size:10px;color:#969a94;white-space:nowrap}
.desk-phase-row{min-height:56px;background:var(--desk-soft)}.desk-phase-row .desk-gantt-name{background:var(--desk-soft)}.desk-phase-row .desk-gantt-track{min-height:55px}
.desk-phase-toggle{display:flex;align-items:center;gap:10px;width:100%;border:0!important;background:transparent!important;padding:0!important;text-align:left;font-weight:600;font-size:12px!important;color:var(--desk-ink)}.desk-phase-toggle small{margin-left:auto;color:#92968e;font-weight:400}.desk-chevron{font-size:19px;width:14px}
.desk-task-name{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:100%;border:0!important;background:transparent!important;padding:0 0 0 24px!important;text-align:left;min-width:0;color:var(--desk-ink)}
.desk-task-name>span{font-size:12px;line-height:1.4;max-width:214px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:none}.desk-task-name small{font-size:10px;color:#8d9288;font-weight:400;max-width:214px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.desk-task-bar{position:absolute;top:14px;height:38px;box-sizing:border-box;display:flex;align-items:center;gap:16px;padding:0 15px;background:#e7e9df;border:1px solid #d6d9ca;border-radius:5px;color:#454d3d;cursor:pointer;white-space:nowrap;font-size:11px;min-width:4px;z-index:2;user-select:none;touch-action:none}
.desk-task-bar.editable{cursor:grab}.desk-task-bar:hover{border-color:#969f83}.desk-task-bar.dragging{cursor:grabbing;z-index:7;box-shadow:0 5px 16px #0002}.desk-task-bar:focus-visible,.desk-resize:focus-visible{outline:2px solid #79905c;outline-offset:3px}
.desk-bar-title{overflow:hidden;text-overflow:ellipsis;min-width:0;font-weight:500}.desk-bar-status{margin-left:auto;font-size:9px;opacity:.65;overflow:hidden;text-overflow:ellipsis}.desk-task-bar.is-resolved{background:#eff0ec;color:#8b9283;border-color:#e0e3d9}
.desk-resize{position:absolute;top:0;width:10px;height:100%;display:flex;align-items:center;justify-content:center;cursor:ew-resize;color:#808d6d;opacity:0;font-size:18px}.desk-resize.start{left:0}.desk-resize.end{right:0}.desk-task-bar:hover .desk-resize,.desk-task-bar:focus-within .desk-resize{opacity:1}
.desk-phase-summary{position:absolute;top:17px;height:23px;background:#e6e8e1;border-radius:3px;overflow:hidden;min-width:4px;color:#69715f}.desk-phase-summary>span{position:relative;font-size:10px;font-weight:600;padding:4px 10px;white-space:nowrap;display:block}.desk-phase-progress{position:absolute;inset:0 auto 0 0;background:#c9d0bc}
.desk-unscheduled{position:sticky;left:296px;margin:17px 16px;font-size:11px!important;background:transparent!important;color:#8c9382!important;border:1px dashed #cbd0c3!important;padding:7px 12px!important}
.desk-today-marker{position:absolute;top:77px;bottom:0;width:1px;background:#b8a578;z-index:3;pointer-events:none}.desk-today-marker>span{position:absolute;top:0;left:0;transform:translateX(-50%);font-size:9px;background:#b8a578;color:#fff;border-radius:0 0 3px 3px;padding:3px 6px}
.desk-gantt-footer{border-top:1px solid var(--desk-line);justify-content:flex-start}.desk-scales{display:flex;margin-left:auto;gap:2px;background:var(--desk-soft);padding:3px;border-radius:6px}.desk-scales button{border:0}.desk-scales button[aria-pressed=true]{background:#e8eadf;color:#4e5c39}.desk-scales button[aria-pressed=false]{background:transparent;color:#8a8f84}
.desk-date-hint{position:absolute;bottom:45px;left:50%;transform:translateX(-50%);padding:7px 10px;border-radius:5px;background:#373e30;color:white;font-size:11px;box-shadow:0 2px 7px #0002;pointer-events:none}.desk-gantt.saving{opacity:.7;pointer-events:none}
body.dark .desk-gantt{--desk-line:#383c35;--desk-paper:#242822;--desk-ink:#e0e3d9;--desk-soft:#2a2e26}body.dark .desk-task-bar{background:#424b35;border-color:#566044;color:#e1e7d6}body.dark .desk-phase-summary{background:#394030;color:#d5ddc9}body.dark .desk-phase-progress{background:#515e42}
@media(max-width:800px){.desk-gantt-toolbar{align-items:flex-start;gap:8px;flex-direction:column}.desk-calendar-note{display:none}.desk-gantt-footer{padding:10px}}
/* Keep names legible independently of short task durations. */
.desk-gantt-row:not(.desk-gantt-header):not(.desk-phase-row){min-height:76px}
.desk-gantt-row:not(.desk-gantt-header):not(.desk-phase-row) .desk-gantt-track{min-height:75px}
.desk-task-bar{top:39px;height:18px;border-radius:3px;padding:0;overflow:visible}
.desk-bar-title{position:absolute;left:0;top:-23px;max-width:340px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11px;line-height:17px;color:var(--desk-ink);pointer-events:none}
.desk-phase-row{min-height:65px}.desk-phase-row .desk-gantt-track{min-height:64px}
.desk-phase-summary{top:39px;height:7px;overflow:visible;border-radius:2px}
.desk-phase-summary>span{position:absolute;top:-25px;left:0;padding:0;max-width:340px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--desk-ink)}
.desk-phase-progress{border-radius:2px}
.desk-months{overflow:visible}
.desk-months .desk-month-block{padding:0;overflow:visible;display:flex;align-items:center}
.desk-month-label{position:sticky;left:292px;padding:0 12px;font-size:12px;font-weight:600;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.desk-today-marker{background:#62685e}.desk-today-marker>span{background:#62685e}
.desk-date-hint{bottom:43px}
.desk-task-bar.is-completed{background:#dce9df;border-color:#bdd5c3;color:#597762}
.desk-task-name .desk-task-title{display:flex;align-items:center;gap:7px;width:100%;min-width:0}
.desk-task-title>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.desk-status-square{display:inline-block;width:8px;height:8px;border-radius:2px;background:#a8aaa5;flex-shrink:0}
.desk-status-square[data-status="In progress"]{background:#6493ca}
.desk-status-square[data-status="Awaiting response"]{background:#d5ac52}
.desk-status-square[data-status="Completed"]{background:#6a9d7c}
.desk-task-name .desk-dependency-count{font-size:9px;color:#7b8577}
.desk-dependencies{position:absolute;left:280px;top:0;z-index:1;overflow:hidden;pointer-events:none}
.desk-dependency-line{fill:none;stroke:#a8b2a0;stroke-width:1.3}
.desk-dependencies marker path{fill:#a8b2a0}
body.dark .desk-dependency-line{stroke:#849079}
body.dark .desk-dependencies marker path{fill:#849079}
body.dark .desk-task-bar.is-completed{background:#334b3a;border-color:#58765f}
