/* 甘特图 on the task board (task_gantt.js). Shell colour tokens only, so every theme keeps working. */
.tg-panel{border-top:1px solid var(--line)}
.tg-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 14px}
#gantt-chart{padding:0 14px 16px}
.tg-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface1)}
.tg-chart{--tg-label:300px;position:relative;width:calc(var(--tg-label) + var(--tg-width));min-width:100%}
.tg-body{position:relative}
.tg-row{display:flex;min-height:32px;border-top:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.tg-head{border-top:0;position:sticky;top:0;z-index:3;background:var(--surface0);border-bottom:1px solid var(--line)}
.tg-label{position:sticky;left:0;z-index:2;flex:0 0 var(--tg-label);width:var(--tg-label);display:flex;align-items:center;gap:7px;min-width:0;padding:0 12px;border:0;border-right:1px solid var(--line);background:var(--surface1);color:var(--txt);font:inherit;font-size:12.5px;text-align:left;cursor:pointer}
.tg-label:hover{background:var(--surface2)}
span.tg-label{cursor:default}
.tg-head-label{background:var(--surface0);color:var(--dim);font-size:12px;cursor:default}
.tg-label-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tg-label small{flex:none;color:var(--dim);font-size:11.5px;font-variant-numeric:tabular-nums}
.tg-group-row{background:var(--surface0)}
.tg-group-row .tg-label{background:var(--surface0);font-weight:600}
.tg-kind{flex:none;padding:0 6px;border-radius:4px;font-size:11.5px;font-weight:600;line-height:1.6;background:var(--surface2);color:var(--dim)}
.tg-track{position:relative;flex:0 0 var(--tg-width);width:var(--tg-width);background:repeating-linear-gradient(90deg,transparent 0 calc(var(--tg-day) - 1px),color-mix(in srgb,var(--line) 45%,transparent) calc(var(--tg-day) - 1px) var(--tg-day))}
.tg-scale{display:flex;background:none}
.tg-day{flex:0 0 var(--tg-day);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:4px 0;color:var(--dim);font-size:11px;font-variant-numeric:tabular-nums}
.tg-day b{min-height:14px;color:var(--txt);font-size:11px;font-weight:600;white-space:nowrap}
.tg-weekend{background:color-mix(in srgb,var(--line) 35%,transparent)}
.tg-day.tg-today{color:var(--acc);font-weight:700}
.tg-today-line{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--acc);opacity:.7;z-index:1;pointer-events:none}
.tg-bar{position:absolute;top:6px;height:20px;display:flex;align-items:center;padding:0 7px;border:1px solid transparent;border-radius:6px;overflow:hidden;font:inherit;font-size:11px;line-height:1;white-space:nowrap;cursor:pointer;z-index:1}
.tg-bar span{overflow:hidden;text-overflow:ellipsis}
.tg-bar:focus-visible,.tg-label:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
.tg-now.tg-dot,.tg-bar.tg-now{background:color-mix(in srgb,var(--acc) 22%,transparent);border-color:var(--acc);color:var(--txt)}
.tg-bar.tg-late,.tg-dot.tg-late{background:color-mix(in srgb,var(--hot) 20%,transparent);border-color:var(--hot);color:var(--txt)}
.tg-bar.tg-wait,.tg-dot.tg-wait{background:color-mix(in srgb,var(--warn,#d9a227) 22%,transparent);border-color:var(--warn,#d9a227);color:var(--txt)}
.tg-bar.tg-plan,.tg-dot.tg-plan{background:transparent;border:1px dashed var(--dim);color:var(--dim)}
.tg-bar.tg-done,.tg-dot.tg-done{background:var(--surface2);border-color:var(--line);color:var(--dim)}
.tg-bar.tg-undated{border-style:dotted}
.tg-dot{flex:none;display:inline-block;width:9px;height:9px;border-radius:50%;border:1px solid transparent}
.tg-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:8px 2px 0;color:var(--dim);font-size:12px}
.tg-legend span{display:inline-flex;align-items:center;gap:5px}
.tg-empty{padding:28px 16px;border:1px dashed var(--line);border-radius:12px;color:var(--dim);text-align:center}
@media(max-width:760px){.tg-chart{--tg-label:150px}}
