/* 甘特圖（web/gantt.js）：待辦中心與客戶入口共用 */
.gt{--gt-l:260px;--gt-row:34px;--gt-line:var(--line,#E2E6EA);--gt-bg:var(--card,var(--bg,#fff));--gt-mut:var(--muted,#5A6676);font-size:13px}
.gt-bar0{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 8px}
.gt-sp{flex:1}
.gt-leg{display:flex;align-items:center;gap:4px;flex-wrap:wrap;color:var(--gt-mut);font-size:12px}
.gt-leg i{display:inline-block;width:14px;height:8px;border-radius:3px;margin-left:8px}
.gt-leg i:first-child{margin-left:0}
.gt-leg i.over{background:transparent;border:2px solid #C62828}
.gt-leg .gt-actl{display:inline-block;width:14px;height:3px;background:#1F2933;margin-left:8px;opacity:.55}
.gt-leg .gt-msk{color:#B26A00;margin-left:8px}
.gt-seg{display:inline-flex;border:1px solid var(--gt-line);border-radius:8px;overflow:hidden}
.gt-seg button{border:0;background:transparent;padding:5px 12px;font:inherit;cursor:pointer;color:inherit}
.gt-seg button[aria-pressed="true"]{background:var(--accent,#2C6AB0);color:var(--accent-ink,#fff)}
.gt-sc{overflow:auto;border:1px solid var(--gt-line);border-radius:10px;background:var(--gt-bg);max-height:70vh}
.gt-grid{display:grid;grid-template-columns:var(--gt-l) var(--w);min-width:calc(var(--gt-l) + var(--w))}
.gt-l{position:sticky;left:0;z-index:2;background:var(--gt-bg);border-bottom:1px solid var(--gt-line);border-right:1px solid var(--gt-line);min-height:var(--gt-row);display:flex;align-items:center;gap:6px;padding:0 10px;overflow:hidden}
.gt-l small{color:var(--gt-mut);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gt-l .gt-name{border:0;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}
/* 名稱放在按鈕裡的 span：Chrome 會把按鈕裡放不下的文字置中（頭尾都被切），改成 span 在結尾顯示「…」，完整名稱在 title（2026-10-09 客戶入口時程被截掉） */
.gt-l .gt-name{display:flex;max-width:100%}
.gt-l .gt-nt{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gt-l .gt-name:hover{text-decoration:underline}
.gt-tog,.gt-tog0{width:18px;flex:0 0 18px;border:0;background:none;padding:0;cursor:pointer;color:var(--gt-mut);font-size:11px}
.gt-hl,.gt-head{position:sticky;top:0;z-index:3;background:var(--gt-bg)}
.gt-hl{z-index:4;font-weight:600;color:var(--gt-mut);min-height:46px}
.gt-tr{position:relative;border-bottom:1px solid var(--gt-line);min-height:var(--gt-row)}
.gt-head{min-height:46px}
.gt-mrow,.gt-drow{position:relative;height:23px}
.gt-m{position:absolute;top:0;height:23px;line-height:23px;padding-left:6px;font-weight:600;border-left:1px solid var(--gt-line);white-space:nowrap;overflow:hidden}
.gt-d{position:absolute;top:0;height:23px;line-height:23px;text-align:center;font-size:11px;color:var(--gt-mut);border-left:1px solid var(--gt-line);white-space:nowrap}
.gt-d.we{background:rgba(0,0,0,.035)}
.gt-bg{position:absolute;inset:0;pointer-events:none}
.gt-we{position:absolute;top:0;bottom:0;background:rgba(0,0,0,.035)}
.gt-today{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:#C62828;opacity:.7}
.gt-msl{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed #B26A00;opacity:.6}
.gt-grp{font-weight:700;background:var(--soft,#F4F6F8)}
.gt-grpt{background:var(--soft,#F4F6F8)}
.gt-bar{position:absolute;top:7px;height:20px;border:0;border-radius:5px;padding:0 6px;font:inherit;font-size:11.5px;color:#fff;text-align:left;cursor:pointer;overflow:hidden;white-space:nowrap;display:flex;align-items:center;min-width:6px;box-sizing:border-box}
.gt-bar .gt-bt{overflow:hidden;text-overflow:ellipsis;pointer-events:none}
/* 時程條的開頭捲到左邊名稱欄後面時，條上的文字停在看得到的左邊，不會被切頭（2026-10-09） */
.gt-bar .gt-bt{position:sticky;left:calc(var(--gt-l) + 6px)}
.gt-bar.ed{cursor:grab;touch-action:none}
.gt-bar.ed:active{cursor:grabbing}
.gt-h{position:absolute;top:0;bottom:0;width:7px;cursor:ew-resize}
.gt-h.l{left:0}.gt-h.r{right:0}
.gt-bar:focus-visible{outline:2px solid #1F2933;outline-offset:1px}
.k-todo{background:#6B7C93}.k-doing{background:#2C6AB0}.k-wait{background:#B26A00}.k-done{background:#2E7D4F}
.gt-bar.over{box-shadow:inset 0 0 0 2px #C62828}
.gt-act{position:absolute;top:28px;height:3px;border-radius:2px;background:#1F2933;opacity:.55;pointer-events:none}
.gt-msl0{color:#B26A00;font-weight:600;font-size:12px}
.gt-msrow{min-height:30px}
.gt-ms{position:absolute;top:6px;transform:translateX(-50%);color:#B26A00;font-size:14px;line-height:1;white-space:nowrap;display:flex;flex-direction:column;align-items:center}
.gt-ms em{font-style:normal;font-size:10.5px;color:var(--gt-mut);max-width:120px;overflow:hidden;text-overflow:ellipsis}
.gt-ms.ok{color:#2E7D4F}
.gt-empty{color:var(--gt-mut)}
.gt-un{margin-top:10px;border:1px dashed var(--gt-line);border-radius:10px;padding:10px 12px}
.gt-uns{color:var(--gt-mut);font-size:12px;margin-left:8px}
.gt-un ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px}
.gt-un li{display:flex;align-items:center;gap:6px}
.gt-un .gt-name{border:0;background:none;padding:0;font:inherit;color:var(--accent,#2C6AB0);cursor:pointer}
.gt-un small{color:var(--gt-mut);font-size:11px}
@media (max-width:640px){.gt{--gt-l:140px}.gt-leg{display:none}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .gt-act{background:#E6EAF0}}
:root[data-theme="dark"] .gt-act{background:#E6EAF0}
