/* 行銷派件系統自己的版面。共用樣式正本在 湯agent/000_Agent/skills/tct-internal-ui/tct-ui.css（先載它再載本檔）。
   版型照 tct-internal-ui「標準版型」：綠頂欄只放身分 → 白頁籤 → 淡金工具列 → 米白內容。 */
:root{--primary:var(--tct-green);--primary-dark:var(--tct-green-dark);--green:var(--tct-green);--secondary:var(--tct-gold);--surface:var(--tct-surface);
  --text:var(--tct-ink);--ink:var(--tct-ink);--text-muted:var(--tct-ink-2);--muted:var(--tct-ink-2);--border:var(--tct-line);--line:var(--tct-line);
  --danger:var(--tct-danger);--r:var(--tct-radius);--f-body:var(--tct-font);--f-num:var(--tct-font-num);--serif:var(--tct-font-display)}
*{box-sizing:border-box}
body{margin:0;padding:0;background:var(--tct-bg);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.6}
h1,h2,h3{font-family:var(--serif);color:var(--primary);font-weight:700}
h1{font-size:22px;margin:0 0 14px}
h2{font-size:19px;margin:24px 0 10px}
.muted{color:var(--muted)}
.err{color:var(--danger);font-weight:700}
.page a{color:var(--primary);font-weight:500}

/* 登入卡（版面吃 tct-ui.css） */
.tct-login-card{margin:0 auto}
.tct-login-card .tct-btn{width:100%}
.tct-login-card a.tct-btn{text-decoration:none}

/* 頂欄／頁籤 */
.tct-topbar{box-shadow:0 1px 2px rgba(43,46,41,.06)}
.tct-tabs{position:sticky;top:60px;z-index:20;padding-left:max(20px, calc((100% - 1280px) / 2 + 20px))}
.tct-iconbtn{background:none;border:1px solid rgba(255,255,255,.6);border-radius:var(--r);color:#fff;min-height:40px;padding:0 12px;font:16px var(--f-body);cursor:pointer}

/* 內容區 */
.page{padding:20px 28px 60px;max-width:1280px;margin:0 auto}
.acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 14px}

/* 淡金工具列（照請款用印 .actionbar）：左篩選／子頁籤小圓鈕，右這一頁的動作 */
.actionbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:9px 0;background:var(--tct-gold-soft);border-bottom:1px solid var(--line);
  padding-left:max(20px, calc((100% - 1280px) / 2 + 20px));padding-right:max(20px, calc((100% - 1280px) / 2 + 20px))}
.actionbar[hidden]{display:none}
.actionbar .left{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.actionbar .right{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.actionbar .tct-btn{min-height:36px;padding:0 15px}
.actionbar select{height:36px;font:16px var(--f-body);border:1px solid var(--line);border-radius:var(--r);background:#fff;padding:0 8px;color:var(--ink)}
.subnav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.subnav button{height:36px;padding:0 15px;border-radius:999px;border:1px solid var(--line);background:var(--tct-surface);color:var(--muted);
  font-family:inherit;font-size:16px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap}
.subnav button.on{background:var(--tct-green-soft);border-color:var(--green);color:var(--green);font-weight:500}
.subnav button .cnt{display:inline-block;min-width:22px;margin-left:6px;padding:0 6px;border-radius:11px;background:var(--tct-danger-soft);color:var(--tct-danger);font-size:15px;line-height:20px;text-align:center}
.stepper{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:0 4px;height:36px}
.stepper button{border:0;background:none;font:18px var(--f-body);color:var(--green);cursor:pointer;min-width:32px;height:34px}
.stepper b{font-family:var(--f-num);font-weight:500;padding:0 6px}

/* 表格（密集；長表自己橫捲） */
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;background:#fff;border:1px solid var(--line);border-radius:var(--r)}
table{border-collapse:collapse;width:100%;font-size:15px}
th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{background:#F1ECDF;color:var(--green);white-space:nowrap;font-weight:500}
td.n{font-family:var(--f-num);text-align:right;white-space:nowrap}
.tw table.wide{min-width:1500px}
.tw table.wide td{white-space:nowrap}
.tw td .tct-btn{padding:5px 12px;font-size:15px}

/* 等級／狀態標籤 */
.pill{display:inline-block;padding:2px 10px;border-radius:99px;font-size:15px;font-weight:500;white-space:nowrap}
.pill.express{background:var(--tct-danger);color:#fff}.pill.urgent{background:#F7E7E3;color:#B24B3C}
.pill.short{background:#FFF3C4;color:#8A6D1D}.pill.normal{background:#E3EFE4;color:#3E7A4C}
/* 狀態七色（2026-11-03 阿湯「顏色沒有分類」）：米白底上淺底深字；進行中實心綠白字最顯眼。
   --st-*-bar 是看板欄頭、時間軸長條、進度圖用的實色；三處共用這組變數，改色只改這裡。 */
:root{--st-new-bg:#DCE8F7;--st-new-fg:#24548A;--st-new-bar:#4A7FC1;
  --st-pending-bg:#E4E4E0;--st-pending-fg:#4E524B;--st-pending-bar:#9A9D96;
  --st-in_progress-bg:#4F7A4A;--st-in_progress-fg:#fff;--st-in_progress-bar:#4F7A4A;
  --st-design_done-bg:#ECE2F6;--st-design_done-fg:#663C8E;--st-design_done-bar:#8E68B5;
  --st-printing-bg:#D5EEEC;--st-printing-fg:#1B6664;--st-printing-bar:#3A9894;
  --st-closed-bg:#EFEDE7;--st-closed-fg:#8A8D85;--st-closed-bar:#CDCAC1;
  --st-on_hold-bg:#FBE4CB;--st-on_hold-fg:#954E0F;--st-on_hold-bar:#E08A3A}
.pill.st-new{background:var(--st-new-bg);color:var(--st-new-fg)}.pill.st-pending{background:var(--st-pending-bg);color:var(--st-pending-fg)}
.pill.st-in_progress{background:var(--st-in_progress-bg);color:var(--st-in_progress-fg)}.pill.st-design_done{background:var(--st-design_done-bg);color:var(--st-design_done-fg)}
.pill.st-printing{background:var(--st-printing-bg);color:var(--st-printing-fg)}.pill.st-closed{background:var(--st-closed-bg);color:var(--st-closed-fg)}
.pill.st-on_hold{background:var(--st-on_hold-bg);color:var(--st-on_hold-fg)}
.pill.delayed{background:#B24B3C;color:#fff}
.pill.least{background:var(--tct-green-soft);color:var(--green)}

/* 表單 */
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px 20px;max-width:980px}
.form label,.lb{display:block;font-size:16px;color:var(--text-muted);margin-bottom:4px}
.form input,.form select,.form textarea,.modal input,.modal textarea,.card input,.card select{width:100%;font-size:16px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;font-family:inherit;background:#fff;color:var(--ink)}
/* 管理頁表格裡的欄位（表格不一定包在 .card 裡） */
.tw input:not([type=checkbox]):not([type=file]),.tw select,.settings input,#view .acts input:not([type=checkbox]):not([type=file]),#view .acts select{font-size:16px;padding:7px 9px;border:1px solid var(--border);border-radius:8px;font-family:inherit;background:#fff;color:var(--ink);width:auto}
#view input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand,#577B53);vertical-align:middle}
.settings p{font-size:17px;line-height:2.2;margin:4px 0}
.form .full{grid-column:1/-1}
.form .acts{margin-top:6px}
.form input:disabled,.form select:disabled,.form textarea:disabled,.form .tdp-btn:disabled{background:#EEEBE4;color:var(--text-muted);cursor:not-allowed}
.hint{background:var(--tct-gold-soft);border-left:4px solid var(--tct-gold);padding:10px 14px;border-radius:8px;font-size:16px;margin:0 0 14px}
.hint .tct-btn{margin-left:8px}

/* 詳情 */
.detail{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.detail dl{display:grid;grid-template-columns:140px 1fr;gap:8px 14px;font-size:16px;margin:0}
.detail dt{color:var(--text-muted)}
.detail dd{margin:0;overflow-wrap:anywhere}
.cmt{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;max-width:820px}
.cmt textarea{flex:1 1 320px;font:16px var(--f-body);padding:9px 10px;border:1px solid var(--line);border-radius:8px}
.timeline{list-style:none;padding:0;margin:0;max-width:820px}
.timeline li{padding:8px 0;border-bottom:1px solid var(--border);font-size:16px}
.timeline small{color:var(--text-muted);margin-left:8px;font-size:15px}

/* 卡片（派件、管理） */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:0 0 14px}
.card h3{margin:0 0 8px;font-size:18px}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px}
.bar{height:12px;background:#E5E0D5;border-radius:6px;overflow:hidden}.bar i{display:block;height:100%;background:var(--tct-green)}.bar.over i{background:#D98A2B}

/* 派件 */
.split{display:grid;grid-template-columns:minmax(260px,340px) 1fr;gap:24px;align-items:start}
.split h2{margin-top:0}
.newlist{list-style:none;padding:0;margin:0}
.newlist li{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;margin:0 0 8px}
.newlist li.on{border-color:var(--green);box-shadow:0 0 0 2px var(--tct-green-soft)}
.newlist small{font-size:15px;color:var(--muted)}
.person{display:grid;grid-template-columns:24px 1fr auto;grid-template-areas:"r n h" "b b b" "f f f";gap:4px 8px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;margin:0 0 8px;cursor:pointer}
.person input{grid-area:r;width:18px;height:18px;margin:0}
.person .nm{grid-area:n;font-weight:500}
.person .hrs{grid-area:h;font-family:var(--f-num);color:var(--muted)}
.person .bar{grid-area:b}
.person .fm{grid-area:f}
.fm{font-size:15px;color:var(--muted)}
.person .est{font-weight:400;font-size:15px;color:var(--tct-green-dark,#46603F);background:var(--tct-green-soft);border-radius:6px;padding:1px 6px;margin-left:4px}
.esth input{font-size:16px}
/* 管理 → 項目工時、人員工時 */
.ihhead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 10px}
.ihhead h3{margin:0}
.ihcat .tw{border:none}
tr.ppl td{background:var(--tct-gold-soft)}
tr.ppl td.ind{padding-left:32px}
td.capf{white-space:nowrap;font-family:var(--f-num)}
.captbl td{white-space:nowrap}
.ihcat table{table-layout:fixed}.ihcat th:first-child{width:38%}.ihcat th:nth-child(2){width:34%}
.person.on{border-color:var(--green);background:var(--tct-green-soft)}
@media(max-width:860px){.split{grid-template-columns:1fr}}

/* 按鈕（通知清單、對話框沿用 .btn） */
.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--r);padding:10px 18px;font:500 16px var(--f-body);background:var(--green);color:#fff;cursor:pointer}
.btn.o{background:#fff;color:var(--green);border:1px solid var(--green)}
.btn.s{padding:7px 14px}
.btn:disabled{opacity:.5}
.is-busy:disabled{opacity:.75;cursor:progress}

/* 提示條、自製對話框（不用原生 alert/confirm/prompt） */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:var(--r);opacity:0;transition:.3s;pointer-events:none;font-size:16px;max-width:90vw;z-index:90}
.toast.show{opacity:1}
.modal{position:fixed;inset:0;background:rgba(43,46,41,.45);display:none;align-items:center;justify-content:center;padding:20px;z-index:70}
.modal.show{display:flex}
.modal .box{background:#fff;border-radius:var(--tct-radius-lg);padding:20px;max-width:440px;width:100%;box-shadow:var(--tct-shadow)}
.modal .box h3{margin:0 0 10px;font-size:19px}
.modal .box p{margin:0 0 12px;font-size:17px;white-space:pre-wrap}
.modal textarea,.modal input{margin-bottom:12px}
.modal .acts{margin:0}
.dlg{position:fixed;inset:0;background:rgba(43,46,41,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:70}
.dlg[hidden]{display:none}
.dlg-box{background:var(--tct-surface);border-radius:var(--tct-radius-lg);padding:20px;max-width:440px;width:100%;box-shadow:var(--tct-shadow)}
.dlg-box h3{margin:0 0 8px;font-size:19px;color:var(--green)}
.dlg-box.wide{max-width:640px;max-height:calc(100vh - 40px);overflow:auto}
.dlg-box .note{font-size:15px;color:var(--muted)}
.dlg-box .empty{color:var(--muted)}

/* 通知中心鈴鐺（照請款用印） */
.tn-host{display:inline-flex;align-items:center;flex-shrink:0}
.tn-host[hidden]{display:none}
.tn-bell{position:relative;background:none;border:1px solid rgba(255,255,255,.6);border-radius:var(--r);color:#fff;min-width:44px;min-height:44px;font:18px var(--f-body);cursor:pointer;touch-action:manipulation}
.tn-badge{position:absolute;right:-8px;top:-8px;background:var(--tct-danger,#B24B3C);color:#fff;border-radius:20px;font-size:16px;line-height:1.3;min-width:24px;padding:1px 6px;font-weight:700}
.tn-badge[hidden]{display:none}
.tn-panel{align-items:flex-start;padding-top:max(20px,env(safe-area-inset-top))}
.tn-box{max-height:calc(100vh - 40px);overflow:auto;overscroll-behavior:contain}
.tn-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.tn-head h3{margin:0;flex:1;font-size:20px}
.tn-count{font-size:16px;color:var(--tct-danger,#B24B3C);margin-left:8px;font-weight:500}
.tn-x{background:none;border:1px solid var(--line);border-radius:var(--r);min-width:44px;min-height:44px;font:18px var(--f-body);color:var(--ink);cursor:pointer}
.tn-msg{background:var(--tct-gold-soft);border-radius:var(--r);padding:10px 12px;font-size:16px}
.tn-note{background:var(--tct-green-soft,#EDF1EA);border-radius:var(--r);padding:12px 14px;font-size:16px;line-height:1.7;margin:8px 0 12px}
.tn-note a{color:var(--green);text-decoration:underline}
.tn-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}
.tn-list{border-top:1px solid var(--line)}
.tn-item{width:100%;display:flex;gap:10px;text-align:left;padding:14px 4px;background:none;border:0;border-bottom:1px solid var(--line);color:var(--ink);font:16px var(--f-body);cursor:pointer;touch-action:manipulation}
.tn-item .tn-dot{width:10px;height:10px;flex:none;border-radius:50%;margin-top:8px;background:transparent}
.tn-item.unread .tn-dot{background:var(--tct-danger,#B24B3C)}
.tn-item:not(.unread){color:var(--muted)}
.tn-txt{min-width:0;overflow-wrap:anywhere}
.tn-txt b,.tn-txt span,.tn-txt time{display:block;font-size:16px}
.tn-txt time{color:var(--muted);margin-top:4px}
@media (hover:hover) and (pointer:fine){.tn-item:hover{background:var(--tct-gold-soft)}.tn-bell:hover{background:rgba(255,255,255,.18)}}

/* 手機卡片（需求單列表）：桌機用表格，手機一張單一塊 */
.mcards{display:none}
.mcard{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;margin:0 0 10px;color:var(--ink);text-decoration:none}
.page a.mcard{color:var(--ink);font-weight:400}
.mcard .mtop{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.mcard .mtop b{color:var(--green)}
.mcard .mtop span{white-space:nowrap;color:var(--muted);font-size:15px}
.mcard .mpills{margin:6px 0 4px}
@media(max-width:600px){.tw:has(table.desk){display:none}.mcards{display:block}}

@media(max-width:760px){
  .tct-topbar{padding:0 14px;gap:8px}.tct-topbar .tct-brand{font-size:16px}.tct-topbar .tct-role{display:none}
  .tct-tabs{padding:0 8px;overflow-x:auto}
  .page{padding:16px 20px 60px}
  .detail dl{grid-template-columns:1fr}
  .actionbar{gap:8px;padding-left:16px;padding-right:16px}
  .actionbar .tct-btn,.actionbar select{min-height:44px}
  .subnav button{height:44px;padding:0 13px}
}
/* 交付日區間篩選（2026-11-02）：「交付日 起 ～ 迄」排同一行 */
.due-range{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.due-range .tdp{display:inline-block}
.due-range .tdp-btn{min-width:120px}
@media (max-width:600px){.due-range{flex-wrap:wrap;white-space:normal}.due-range .tdp-btn{min-width:0;width:110px}}

/* ===== 全部案件：Notion 式多種檢視（2026-11-03 阿湯「不要這麼死板」） ===== */
.viewtabs{display:flex;align-items:flex-end;gap:2px;border-bottom:1px solid var(--line);margin:0 0 14px;overflow-x:auto;scrollbar-width:none}
.viewtabs::-webkit-scrollbar{display:none}
.viewtabs button{flex:none;background:none;border:0;border-bottom:3px solid transparent;padding:8px 14px 7px;font:16px var(--f-body);color:var(--muted);cursor:pointer;white-space:nowrap;touch-action:manipulation}
.viewtabs button.on{color:var(--green);border-bottom-color:var(--green);font-weight:700}
.viewtabs button:active{transform:scale(.96)}
.viewtabs .vcount{margin-left:auto;flex:none;padding:0 4px 8px;color:var(--muted);font-size:15px;white-space:nowrap}
.vopts{display:flex;gap:18px;flex-wrap:wrap;align-items:center;margin:0 0 12px;font-size:16px}
.vopts label{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.sdot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}
.sdot.st-new{background:var(--st-new-bar)}.sdot.st-pending{background:var(--st-pending-bar)}.sdot.st-in_progress{background:var(--st-in_progress-bar)}
.sdot.st-design_done{background:var(--st-design_done-bar)}.sdot.st-printing{background:var(--st-printing-bar)}.sdot.st-closed{background:var(--st-closed-bar)}.sdot.st-on_hold{background:var(--st-on_hold-bar)}
.sdot.delayed{background:var(--tct-danger)}
/* SVG 填色（進度圖）沿用同一組狀態色 */
.f-st-new{fill:var(--st-new-bar)}.f-st-pending{fill:var(--st-pending-bar)}.f-st-in_progress{fill:var(--st-in_progress-bar)}.f-st-design_done{fill:var(--st-design_done-bar)}
.f-st-printing{fill:var(--st-printing-bar)}.f-st-closed{fill:var(--st-closed-bar)}.f-st-on_hold{fill:var(--st-on_hold-bar)}

/* 看板／人員：欄寬固定，整列自己橫捲（頁面不溢出） */
.bwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -4px;padding:0 4px 10px}
.board{display:flex;gap:12px;align-items:flex-start;width:max-content}
.bcol{flex:none;width:272px;background:#F3EEE3;border-radius:var(--tct-radius-lg);border-top:4px solid var(--st-closed-bar);padding:10px 10px 6px}
.bcol.st-new{border-top-color:var(--st-new-bar)}.bcol.st-pending{border-top-color:var(--st-pending-bar)}.bcol.st-in_progress{border-top-color:var(--st-in_progress-bar)}
.bcol.st-design_done{border-top-color:var(--st-design_done-bar)}.bcol.st-printing{border-top-color:var(--st-printing-bar)}.bcol.st-on_hold{border-top-color:var(--st-on_hold-bar)}
.bcol.pcol{border-top-color:var(--tct-gold)}.bcol.pcol.nobody{border-top-color:var(--st-new-bar)}
.bcol.folded{width:200px}
.bhead{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-weight:700;color:var(--ink)}
.bhead .cnt{margin-left:auto;font-family:var(--f-num);font-weight:500;color:var(--muted)}
.bhead small{font-weight:400;color:var(--muted);font-size:15px}
.bmore{width:100%;background:#fff;border:1px dashed var(--line);border-radius:var(--r);padding:8px;font:16px var(--f-body);color:var(--green);cursor:pointer;margin:0 0 8px}
.bmore:active{transform:scale(.97)}
.bempty{color:var(--muted);font-size:15px;padding:6px 4px 10px}
.kcard{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;margin:0 0 8px;color:var(--ink);text-decoration:none;box-shadow:0 1px 1px rgba(43,46,41,.04)}
.page a.kcard{color:var(--ink);font-weight:400}
.kcard:active{transform:scale(.98)}
@media (hover:hover){.kcard:hover{border-color:var(--tct-gold-deep)}}
.kcard.late{border-color:var(--tct-danger);box-shadow:inset 3px 0 0 var(--tct-danger)}
.kcard .kt{font-weight:500;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.kcard .km{color:var(--muted);font-size:15px;margin:3px 0 6px}
.kcard .kp{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 6px}
.kcard .kw{display:flex;gap:6px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:5px;background:var(--tct-gold-soft);border-radius:99px;padding:1px 9px 1px 2px;font-size:15px;white-space:nowrap}
.chip i{font-style:normal;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;font-size:15px}
.chip.pl i{background:var(--tct-gold-deep)}
.chip.none{padding:1px 9px;color:var(--muted);background:#EFEDE7}
/* 人員欄頭 */
.phead{margin:0 2px 10px}
.phead .pn{display:flex;align-items:baseline;gap:8px;font-weight:700;font-size:17px}
.phead .pn small{font-weight:400;color:var(--muted);font-size:15px}
.phead .pn .cnt{margin-left:auto;font-family:var(--f-num);font-weight:500;color:var(--muted);font-size:16px}
.scnt{display:flex;gap:4px;flex-wrap:wrap;margin:6px 0 0}
.scnt .pill{padding:0 8px}
.pwl{font-size:15px;color:var(--muted);margin-top:6px}
.pwl .bar{height:8px;margin-top:3px}

/* 時間軸（甘特）：左欄固定，右邊每天固定寬，容器自己上下左右捲 */
.gwrap{overflow:auto;-webkit-overflow-scrolling:touch;max-height:72vh;background:#fff;border:1px solid var(--line);border-radius:var(--r);position:relative}
.gbody{position:relative;width:max-content;min-width:100%}
.grow{display:flex;min-height:40px;border-bottom:1px solid #F0EADC}
.grow.ghdr{position:sticky;top:0;z-index:4;background:#F1ECDF;min-height:70px;border-bottom:1px solid var(--line)}
.grow.ggrp{background:var(--tct-gold-soft);min-height:36px}
.gl{position:sticky;left:0;z-index:3;flex:none;width:var(--gl-w,250px);background:#fff;border-right:1px solid var(--line);padding:6px 10px;font-size:15px;line-height:1.35;overflow:hidden}
.ghdr .gl{background:#F1ECDF;color:var(--green);font-weight:500;display:flex;align-items:center;z-index:5}
.ggrp .gl{background:var(--tct-gold-soft);font-weight:700;color:var(--ink);display:flex;align-items:center;gap:6px}
.gl a{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gl .gw{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gt{position:relative;flex:none}
.gt .wk{position:absolute;top:0;bottom:0;border-left:1px solid #EFE8D8}
.ghdr .gt .wl{position:absolute;top:4px;font-size:15px;color:var(--muted);font-family:var(--f-num);white-space:nowrap;padding-left:4px}
.ghdr .gt .ml{position:absolute;top:22px;font-size:15px;color:var(--green);font-weight:500;white-space:nowrap;padding-left:4px}
.gbar{position:absolute;top:9px;height:22px;border-radius:6px;background:var(--st-closed-bar);display:block;min-width:6px}
.gbar.st-new{background:var(--st-new-bar)}.gbar.st-pending{background:var(--st-pending-bar)}.gbar.st-in_progress{background:var(--st-in_progress-bar)}
.gbar.st-design_done{background:var(--st-design_done-bar)}.gbar.st-printing{background:var(--st-printing-bar)}.gbar.st-on_hold{background:var(--st-on_hold-bar)}
.gbar.late{outline:3px solid var(--tct-danger);outline-offset:1px}
.gtoday{position:absolute;top:0;bottom:0;width:2px;background:var(--tct-danger);z-index:2;pointer-events:none}
.ghdr .gt .gtag{position:absolute;top:44px;transform:translateX(-50%);background:var(--tct-danger);color:#fff;font-size:15px;font-weight:500;padding:0 6px;border-radius:4px;white-space:nowrap;line-height:1.4}
.glegend{display:flex;gap:6px 14px;flex-wrap:wrap;margin:10px 0 0;font-size:15px;color:var(--muted)}
.glegend span{display:inline-flex;align-items:center;gap:6px}

/* 進度（完成度追蹤圖）：每張圖一塊，圖用 inline SVG */
.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:14px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;min-width:0}
.pcard h3{margin:0 0 4px;font-size:18px}
.pcard .sub{color:var(--muted);font-size:15px;margin:0 0 10px}
.pcard svg{display:block;max-width:100%;overflow:visible}
.pcard svg text{font-family:var(--f-body);font-size:15px;fill:var(--ink)}
.pcard svg text.mut{fill:var(--muted)}
.pcard svg text.num{font-family:var(--f-num)}
.bigrate{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.bigrate .rt{font-size:15px;color:var(--muted)}
.bigrate .rt b{display:block;font:700 34px var(--f-num);color:var(--green)}
@media(max-width:760px){
  .bcol{width:250px}.bcol.folded{width:180px}
  .gl{--gl-w:132px;width:132px;padding:6px 8px}
  .viewtabs button{padding:10px 12px 9px}
}
