.gantt-shell{background:#fff;border:1px solid #f0edf4;border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.gantt-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:17px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}.gantt-toolbar-left,.gantt-nav{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.gantt-project-filter{display:flex;align-items:center;gap:8px;color:#988ca5;font-size:11px}.gantt-project-filter select{height:34px;max-width:220px;border:1px solid #e8e2ee;border-radius:7px;background:#fff;color:#665772;padding:5px 28px 5px 9px}.gantt-fixed-project{font-size:13px;font-weight:600;color:#62516e}.gantt-legend{display:flex;align-items:center;gap:15px;padding:10px 20px;background:#fcfbfd;color:#91869c;font-size:10px;flex-wrap:wrap}.gantt-legend span{display:inline-flex;align-items:center;gap:5px}.gantt-legend i{width:9px;height:9px;border-radius:3px;background:#9e77df}.gantt-legend i.done{background:#58b28e}.gantt-legend i.review{background:#e1a251}.gantt-legend i.overdue{background:#dc687b}.gantt-window-label{margin-left:auto;color:#766680;font-weight:550}.gantt-scroll{overflow:auto;max-height:68vh}.gantt-table{min-width:1080px}.gantt-axis-row,.gantt-row{display:grid;grid-template-columns:360px minmax(720px,1fr)}.gantt-axis-row{position:sticky;top:0;z-index:8;background:#fff;border-block:1px solid #f0edf4}.gantt-axis-info{position:sticky;left:0;z-index:10;display:flex;justify-content:space-between;gap:12px;padding:10px 17px;background:#faf8fc;border-right:1px solid #ece7f1;color:#8c8097;font-size:10px}.gantt-axis{position:relative;display:grid;grid-template-columns:repeat(var(--gantt-units),1fr);height:48px;background:#fdfcff}.gantt-axis>div{padding:8px 5px;text-align:center;border-right:1px solid #eeeaf2;color:#71657b}.gantt-axis strong{display:block;font-size:10px;font-weight:600}.gantt-axis span{display:block;font-size:8px;color:#aaa1b1;margin-top:3px}.gantt-row{min-height:72px;border-bottom:1px solid #f2eef5}.gantt-row:last-child{border-bottom:0}.gantt-row:hover .gantt-row-info,.gantt-row:hover .gantt-row-timeline{background-color:#fdfbff}.gantt-row-info{position:sticky;left:0;z-index:4;display:flex;flex-direction:column;justify-content:center;padding:9px 13px;background:#fff;border-right:1px solid #eee9f2;transition:background .15s}.gantt-title-line,.gantt-row-meta,.gantt-row-dates{padding-left:calc(var(--gantt-indent)*18px);display:flex;align-items:center;gap:7px;min-width:0}.gantt-title-line{height:25px}.gantt-expand{width:22px;height:22px;flex:0 0 22px;border:0;border-radius:6px;background:#f3eef9;color:#8a6daf;display:grid;place-items:center}.gantt-expand svg{transition:transform .15s}.gantt-expand.expanded svg{transform:rotate(90deg)}.gantt-expand-spacer{width:22px;flex:0 0 22px}.gantt-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:0;background:none;color:#594864;font-size:12px;font-weight:600;text-align:left}.gantt-name:hover{color:var(--purple)}.gantt-progress-text{margin-left:auto;padding:2px 6px;border-radius:5px;background:#eee7fa;color:#815ac1;font-size:9px}.gantt-row-meta,.gantt-row-dates{margin-left:29px;font-size:9px;color:#a399aa;line-height:1.5}.gantt-row-meta{justify-content:space-between}.gantt-status-text{font-weight:600}.gantt-status-done{color:#459b79}.gantt-status-review{color:#ca8b38}.gantt-status-overdue{color:#cf566a}.gantt-status-active{color:#7959bb}.gantt-row-dates{gap:6px}.gantt-parent-warning{color:#ca654f;background:#fff1e9;padding:1px 4px;border-radius:4px}.gantt-schedule{margin-left:auto;display:inline-flex;align-items:center;gap:3px;border:0;background:none;color:#8c6bb5;font-size:9px}.gantt-schedule svg{width:11px;height:11px}.gantt-row-timeline{position:relative;min-height:72px;background-color:#fff;background-image:linear-gradient(to right,#f0ecf3 1px,transparent 1px);background-size:calc(100%/var(--gantt-units)) 100%;transition:background-color .15s}.gantt-bar{position:absolute;top:21px;height:30px;min-width:8px;border:0;border-radius:7px;background:#9a76de;color:#fff;box-shadow:0 4px 9px #8156c824;overflow:hidden;padding:0 7px;text-align:left}.gantt-bar span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:9px}.gantt-bar.gantt-status-done{background:#5bb48f}.gantt-bar.gantt-status-review{background:#e2a34f}.gantt-bar.gantt-status-overdue{background:#dd6b7e}.gantt-deadline{position:absolute;top:14px;transform:translateX(-50%);height:44px;border:0;background:transparent;color:#7656aa;font-size:8px;display:flex;align-items:center;flex-direction:column;gap:4px;white-space:nowrap}.gantt-deadline i{width:13px;height:13px;margin-top:2px;transform:rotate(45deg);border-radius:2px;background:#9a76de;box-shadow:0 3px 8px #7650bd36}.gantt-deadline.gantt-status-done i{background:#5bb48f}.gantt-deadline.gantt-status-review i{background:#e2a34f}.gantt-deadline.gantt-status-overdue i{background:#dd6b7e}.gantt-outside,.gantt-no-date{position:absolute;top:27px;color:#9e93a8;font-size:9px;padding:2px 6px;border-radius:5px;background:#f5f2f7}.gantt-outside-before{left:7px}.gantt-outside-after{right:7px}.gantt-no-date{left:50%;transform:translateX(-50%)}.gantt-today-line{position:absolute;top:0;bottom:0;width:1px;background:#ef6d83;z-index:3;pointer-events:none}.gantt-axis .gantt-today-line span{position:absolute;top:2px;left:4px;padding:1px 4px;border-radius:4px;background:#fff0f3;color:#d8556a;font-size:8px;white-space:nowrap}.gantt-filter-empty,.gantt-empty{text-align:center;padding:55px 24px;color:#a097aa}.gantt-filter-empty{font-size:12px}.gantt-empty svg{color:#b49bd5;margin-bottom:10px}.gantt-empty h3{font-size:15px;color:#786986;margin-bottom:6px}.gantt-empty p{font-size:11px}.gantt-level-0 .gantt-row-info{background:#fdfbff}.gantt-level-0 .gantt-name{font-size:13px}.gantt-level-2 .gantt-row-info{background:#fff}.gantt-level-2 .gantt-name{font-weight:500}
@media(max-width:720px){.gantt-toolbar{align-items:flex-start}.gantt-nav{width:100%;justify-content:space-between}.gantt-axis-row,.gantt-row{grid-template-columns:310px minmax(680px,1fr)}.gantt-table{min-width:990px}.gantt-project-filter{width:100%}.gantt-project-filter select{flex:1;max-width:none}}
.gantt-axis{display:flex;grid-template-columns:none}.gantt-axis>div{flex:0 0 auto;box-sizing:border-box}.gantt-row-timeline{background-image:none;background-size:auto}.gantt-row-grid{position:absolute;inset:0;display:flex;pointer-events:none}.gantt-row-grid i{height:100%;flex:0 0 auto;border-right:1px solid #f0ecf3;box-sizing:border-box}
