/* 客戶入口（F18）：手機優先 */
.pt .pt-tag{font-weight:500;font-size:13px;color:var(--sub);margin-left:4px}
.pt h1{margin:0 0 6px}
.pt .card h2{font-size:16px;margin:0 0 12px}
.pt-back{display:inline-block;margin-bottom:12px;color:var(--sub);text-decoration:none;font-size:14px}.pt-back:hover{color:var(--ink)}
.pt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pt-phase{display:inline-block;font-size:12.5px;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--line);color:var(--ink);white-space:nowrap}
.pt-phase.ph-build{background:color-mix(in srgb,var(--acc) 15%,transparent);color:var(--acc)}
.pt-phase.ph-maint{background:var(--ok-soft);color:var(--ok)}
.pt-phase.ph-paused{background:var(--warn-soft);color:var(--warn)}
.pt-bar{height:10px;border-radius:5px;background:var(--line);overflow:hidden}.pt-bar i{display:block;height:100%;background:var(--ok);border-radius:5px}
.pt-list{list-style:none;margin:0;padding:0}
.pt-it{padding:12px 0;border-top:1px solid var(--line)}.pt-it:first-child{border-top:0}
.pt-it.kid{padding-left:18px}
.pt-it.is-done .pt-ih b{color:var(--sub)}
.pt-ih{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px}.pt-ih b{font-size:15px}
.pt-st{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--sub)}.pt-st i{width:8px;height:8px;border-radius:50%;display:inline-block}
.pt-ty{font-size:12px;color:var(--sub);border:1px solid var(--line);border-radius:6px;padding:1px 6px}
.pt-meta{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:6px;font-size:13px;color:var(--ink);font-variant-numeric:tabular-nums}
.pt-meta em{font-style:normal;color:var(--sub);margin-right:5px}
.pt-note{margin:8px 0 0;font-size:14px;color:var(--ink);white-space:pre-line;line-height:1.6}
.pt-promo ul.pt-benefits{margin:0 0 18px;padding-left:20px;line-height:1.9;font-size:14px}
.pt-foot{margin-top:18px}
.pt a.btn{display:inline-block;text-decoration:none}
.pt .copy{display:flex;gap:8px}.pt .copy input{flex:1;min-width:0}

/* 依官網模板改版（2026-10-05）：上方導覽（總覽／專案／文件）、手機底部導覽、總覽的待您確認與專案進度 */
body.pt{background:var(--bg)}
.pt-top{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.pt-topin{max-width:1040px;margin:0 auto;padding:0 16px;height:60px;display:flex;align-items:center;gap:28px}
.pt-tabs{display:flex;gap:4px;height:100%;flex:1}
.pt-tabs a{display:flex;align-items:center;padding:0 14px;color:var(--sub);text-decoration:none;font-size:15px;font-weight:500;border-bottom:2.5px solid transparent;margin-bottom:-1px}
.pt-tabs a:hover{color:var(--ink)}.pt-tabs a.on{color:var(--acc);border-bottom-color:var(--acc);font-weight:600}
.pt-me{position:relative;margin-left:auto}.pt-me summary{list-style:none;cursor:pointer}.pt-me summary::-webkit-details-marker{display:none}
#avatar{width:36px;height:36px;border-radius:50%;background:var(--acc-soft);color:var(--acc);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px}
.pt-menu{position:absolute;right:0;top:44px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:8px;min-width:220px;display:flex;flex-direction:column;z-index:30}
.pt-menu span{padding:8px 10px;font-size:13px;word-break:break-all}.pt-menu a{padding:9px 10px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:14px}.pt-menu a:hover{background:var(--bg)}
body.pt .wrap{max-width:1040px;padding-top:32px}
.pt-bnav{display:none}
.pt-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:28px}
.pt-hero h1{font-size:30px;margin:0 0 6px}.pt-hero .sub{margin:0}
.pt-pm{font-size:14px;color:var(--sub)}.pt-pm b{color:var(--acc);font-weight:600}
.pt-sec{margin-bottom:30px}.pt-sec>h2{font-size:20px;margin:0 0 12px;display:flex;align-items:center;gap:10px}
.pt-cnt{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:24px;padding:0 8px;border-radius:999px;background:var(--acc-soft);color:var(--acc);font-size:13px;font-weight:700}
.pt-none{color:var(--sub);font-size:14px;padding:18px 22px}
.pt-todo{padding:6px 22px}
.pt-trow{display:flex;align-items:center;gap:16px;padding:16px 0;border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.pt-trow:first-child{border-top:0}
.pt-trow .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.pt-trow b{font-size:16px}.pt-trow .sub{font-size:13.5px}
.pt-ico{width:28px;height:28px;flex:none;fill:none;stroke:var(--sub);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.pt-chev{width:20px;height:20px;flex:none;fill:none;stroke:var(--sub);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
a.pt-dl:hover b{color:var(--acc)}
.pt-res{font-size:12.5px;font-weight:600;padding:3px 10px;border-radius:999px;white-space:nowrap}
.pt-res.r-pass{background:var(--ok-soft);color:var(--ok)}.pt-res.r-partial,.pt-res.r-wait{background:var(--warn-soft);color:var(--warn)}.pt-res.r-fail{background:var(--bad-soft);color:var(--bad)}
.pt-ptab{padding:0;overflow:hidden}
.pt-prh,.pt-prow{display:grid;grid-template-columns:1.3fr 1fr 1.3fr 20px;gap:16px;align-items:center;padding:14px 22px}
.pt-ptab.has-h .pt-prh,.pt-ptab.has-h .pt-prow{grid-template-columns:1.3fr 1fr 1.3fr 1fr 20px}
.pt-prh{background:var(--bg);font-size:13px;color:var(--sub);border-bottom:1px solid var(--line)}
.pt-prow{border-top:1px solid var(--line);color:var(--ink);text-decoration:none}.pt-prh+.pt-prow{border-top:0}.pt-prow:hover{background:var(--bg)}
.pt-pn{display:flex;flex-direction:column;gap:4px;min-width:0}.pt-pn b{font-size:16px}
.pt-pc{font-size:14.5px;min-width:0}.pt-pc em{font-style:normal;color:var(--sub);font-size:13px}.pt-pc .num{font-variant-numeric:tabular-nums}
.pt-dot{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--sub)}.pt-dot i{width:9px;height:9px;border-radius:50%;background:var(--sub)}
.pt-dot.ok i{background:var(--ok)}.pt-dot.warn{color:var(--warn)}.pt-dot.warn i{background:var(--warn)}
.pt-hg{display:flex;gap:40px;flex-wrap:wrap}.pt-hg>div{display:flex;flex-direction:column;gap:2px}.pt-hg b.num{font-size:26px}
/* 簽署 */
.pt-doc{line-height:1.75;font-size:14.5px;margin-bottom:16px}.pt-doc h3{margin:16px 0 6px;font-size:16px}.pt-doc h3:first-child{margin-top:0}
.pt-doc p{margin:6px 0;white-space:pre-line}.pt-tw{overflow-x:auto;margin:8px 0}.pt-doc table{border-collapse:collapse;width:100%;font-size:13.5px}
.pt-doc th,.pt-doc td{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top;white-space:pre-line}.pt-doc th{background:var(--bg)}
.pt-signf{display:flex;flex-direction:column;gap:14px}.pt-signf h2{margin:0}
.pt-resg{display:flex;gap:10px;flex-wrap:wrap}
.pt-signf input[type=radio],.pt-signf input[type=checkbox]{width:auto;min-width:0;flex:none;margin:0;padding:0;height:auto}
.card+.pt-sec,.pt-sec+.card{margin-top:16px}
.pt-ro{display:flex;align-items:center;gap:8px;border:1.5px solid var(--line);border-radius:10px;padding:10px 16px;cursor:pointer;font-weight:600}
.pt-ro:has(input:checked){border-color:var(--acc);background:var(--acc-soft)}
.pt-signf .f{display:flex;flex-direction:column;gap:6px}.pt-signf label{font-weight:600;font-size:14px}
.pt-sgh{display:flex;justify-content:space-between;align-items:center}
.pt-pad{width:100%;max-width:520px;height:180px;border:1.5px dashed var(--sub);border-radius:10px;background:#fff;touch-action:none;cursor:crosshair}
.pt-consent{display:flex;gap:10px;align-items:flex-start;font-weight:400!important;font-size:14px;line-height:1.6}.pt-consent input{margin-top:4px;flex:none}
.pt-go{align-self:flex-start;padding:11px 28px;font-size:15px}
.pt-rec{margin-top:24px;padding-top:16px;border-top:2px solid var(--ink)}
.pt-sig{border:1px dashed var(--line);border-radius:8px;padding:8px;max-width:360px;background:#fff}.pt-sig img{display:block;max-width:100%}
.pt-rec dl{display:grid;grid-template-columns:92px 1fr;gap:6px 12px;margin:14px 0}.pt-rec dt{color:var(--sub)}.pt-rec dd{margin:0;min-width:0}.pt-rec .pre{white-space:pre-line}
.pt-hash{font-family:ui-monospace,Menlo,monospace;font-size:12px;word-break:break-all}
@media (max-width:720px){
  .pt-topin{height:56px}.pt-tabs{display:none}
  body.pt .wrap{padding-top:22px;padding-bottom:96px}
  .pt-bnav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;background:var(--card);border-top:1px solid var(--line);padding:6px 0 calc(6px + env(safe-area-inset-bottom,0px))}
  .pt-bnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12px;color:var(--sub);text-decoration:none;padding:4px 0}
  .pt-bnav svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round;stroke-linecap:round}.pt-bnav a.on{color:var(--acc);font-weight:600}
  .pt-hero h1{font-size:25px}
  .pt-todo{padding:4px 16px}
  .pt-trow{flex-wrap:wrap;gap:10px 14px;align-items:flex-start}.pt-trow .grow{flex:1 1 calc(100% - 50px)}
  .pt-trow .btn{margin-left:42px;background:transparent;color:var(--acc);border:1.5px solid var(--acc);padding:7px 18px}
  .tsw.float{bottom:calc(76px + env(safe-area-inset-bottom,0px))!important}
  .pt-prh{display:none}
  .pt-prow,.pt-ptab.has-h .pt-prow{display:flex;flex-wrap:wrap;gap:4px 8px;padding:14px 16px;position:relative}
  .pt-pn{flex-direction:row;align-items:center;gap:10px;width:calc(100% - 28px)}
  .pt-pc{font-size:13.5px;color:var(--sub)}.pt-pc+.pt-pc::before{content:"・";margin-right:6px}
  .pt-prow .pt-chev{position:absolute;right:12px;top:50%;transform:translateY(-50%)}
}
@media print{
  .pt-top,.pt-bnav,.pt-back,#prt,.note{display:none!important}
  body.pt .wrap{padding:0;max-width:none}.pt-doc{border:0;padding:0}
}

/* 預覽模式：選單只是呈現，不能點 */
.pv-off{cursor:default;pointer-events:none}

/* 每月報告（2026-10-05） */
.pt-reph{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.pt-reph h2{margin:0}
.pt-mnav{display:inline-flex;align-items:center;gap:6px}.pt-mnav button{padding:4px 10px}.pt-mnav select{width:auto}
.pt-kpi{display:flex;gap:18px;flex-wrap:wrap;margin:12px 0;font-size:14px}.pt-kpi b{font-size:18px;margin:0 2px}
.pt-hcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:6px 0 10px}
.pt-hcards>div{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;background:var(--bg)}
.pt-hcards b{font-size:26px;line-height:1.2}.pt-hcards small{font-size:12px;color:var(--sub)}.pt-hcards em{font-style:normal;font-size:12px;color:var(--sub)}
.pt-hcards .hot{border-color:color-mix(in srgb,var(--warn) 50%,var(--line));background:var(--warn-soft)}.pt-hcards .neg b{color:var(--bad)}
.pt-hbar{margin:4px 0 2px}.pt-rh{margin:18px 0 8px;font-size:15px}.pt-rh .faint{font-weight:400;font-size:13px;margin-left:6px}
.pt-tw{overflow-x:auto}.pt-rt{width:100%;border-collapse:collapse;font-size:14px}.pt-rt th,.pt-rt td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.pt-rfbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pt-scope{width:auto;max-width:100%;flex:none;font:inherit;font-size:14px;font-weight:600;padding:6px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
.pt-stf{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pt-stb{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:transparent;border-radius:999px;padding:4px 10px;font:inherit;font-size:13px;cursor:pointer;color:var(--ink)}
.pt-stb .num{color:var(--sub);font-size:12px}.pt-stb[aria-pressed="true"]{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 12%,transparent)}
.pt-stb.is-done .pt-st{opacity:.6}.pt-stclr{font-size:13px}
/* 已完成的項目用淡色（2026-10-08 使用者要求） */
.pt-rt tr.done td{color:var(--sub)}.pt-rt tr.done .pt-st{opacity:.55}.pt-rt tr.done .pt-ty{opacity:.7}.pt-seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.pt-seg button{border:0;background:transparent;padding:6px 12px;font:inherit;font-size:14px;font-weight:600;color:var(--sub);cursor:pointer}.pt-seg button+button{border-left:1px solid var(--line)}
.pt-seg button[aria-pressed="true"]{background:color-mix(in srgb,var(--acc) 12%,transparent);color:var(--acc)}
/* 欄位多時（2026-10-08 照客戶可見欄位顯示）：項目名稱保留寬度、其他欄不換行，表格在卡片內左右滑動 */
.pt-rt th,.pt-rt td{white-space:nowrap}.pt-rt td:first-child{white-space:normal;min-width:11em}
.pt-rt th{font-size:12.5px;color:var(--sub);font-weight:600}.pt-rt .r{text-align:right}.pt-rt tr.kid td:first-child{padding-left:22px}
.pt-st{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.pt-st::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--c)}
@media (max-width:640px){.pt-hcards{grid-template-columns:1fr}.pt-rt{font-size:13px}}

/* 回報問題（F19） */
.pt-repbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 14px}.pt-repbar .faint{font-size:13px}
.pt-rform label{display:block;margin:10px 0 4px;font-weight:600;font-size:13px}.pt-rform input:not([type=radio]):not([type=checkbox]),.pt-rform textarea{width:100%}
.pt-rk{display:flex;gap:16px;flex-wrap:wrap}.pt-rk label,.pt-rurg{display:inline-flex!important;align-items:center;gap:6px;font-weight:400!important}
.pt-rform .row{margin-top:12px;gap:8px}
.pt-tabs[hidden],.pt-bnav[hidden]{display:none!important}

/* 時程（甘特圖） */
.pt-gantt .pt-gh{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}.pt-gantt .pt-gh h2{margin:0}.pt-gantt .gt-un .gt-name{cursor:default;color:inherit}
/* 需要您處理：等您回覆的事項（F200）——可展開的來回紀錄、回覆、附檔、確認收到；手機一律直排 */
.pa-list{padding:0 22px}.pa-list[hidden]{display:none}.pt-todo+.pa-list{margin-top:10px}
.pa-it{border-top:1px solid var(--line)}.pa-it:first-child{border-top:0}
.pa-row{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:12px;width:100%;padding:16px 0;cursor:pointer}
.pa-row .grow{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.pa-row b{font-size:16px;color:var(--ink)}.pa-row .sub{font-size:13.5px}
.pa-row:focus-visible{outline:2px solid var(--acc);outline-offset:2px;border-radius:6px}
.pa-late{color:var(--bad);font-weight:600}
.pill.info{background:var(--acc-soft);color:var(--acc);border-color:transparent}
.pa-body-wrap{padding:0 0 18px}
.pa-note{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px;white-space:pre-wrap;margin-bottom:12px}
.pa-thread{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:10px}
.pa-msg{border:1px solid var(--line);border-radius:12px;padding:10px 12px;max-width:88%}
.pa-msg.team{align-self:flex-start;background:var(--card)}.pa-msg.me{align-self:flex-end;background:var(--acc-soft);border-color:transparent}
.pa-mh{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:13px;margin-bottom:4px}
.pa-body{white-space:pre-wrap;font-size:14.5px;overflow-wrap:anywhere}
.pa-links,.pa-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;font-size:13.5px}.pa-links a{overflow-wrap:anywhere}
.pa-file{font-size:13px;padding:4px 10px}
.pa-form label{display:block;font-size:13.5px;color:var(--sub);margin:10px 0 4px}.pa-form textarea{width:100%;font-size:16px}
.pa-up{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px}.pa-up .btn{margin:0;color:var(--ink)}
.pa-pend{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.pa-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:3px 6px 3px 12px;font-size:13px}
.pa-form .msg{white-space:pre-line}
.pa-acts{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
@media (max-width:640px){.pa-list{padding:0 14px}.pa-msg{max-width:100%}.pa-acts{flex-direction:column-reverse}.pa-acts button{width:100%}}

/* 可選購項目（portal-catalog.js） */
.pc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.pc-item{display:flex;flex-direction:column;gap:8px;padding:14px;cursor:pointer;border:2px solid transparent}
.pc-item.on{border-color:var(--acc)}
.pc-img{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:10px;background:var(--bg)}
.pc-h{display:flex;align-items:center;gap:8px;font-size:16px}.pc-h input{width:18px;height:18px}
.pc-price{font-weight:600;color:var(--acc)}
.pc-desc{white-space:pre-wrap;font-size:14px;color:var(--sub)}
.pc-more{display:flex;flex-wrap:wrap;gap:6px;font-size:13.5px}.pc-more a{overflow-wrap:anywhere}
.pc-send{margin-top:14px;padding:14px;display:flex;flex-direction:column;gap:8px}.pc-send textarea{width:100%;font-size:16px}
.pc-acts{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.pc-reqs{margin-top:14px}.pc-reqs h3{margin:0 0 6px}.pc-reqs ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.pill.wait{background:var(--bg)}.pill.new{background:var(--acc-soft);color:var(--acc)}
@media (max-width:640px){.pc-acts{flex-direction:column;align-items:stretch}.pc-acts .btn{width:100%}}
/* 回報問題 / 需求：依類型的表單（F173） */
.rq-types{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px}
.rq-type input{position:absolute;opacity:0;pointer-events:none}
.rq-type span{display:inline-block;padding:6px 14px;border:1px solid var(--line);border-radius:999px;cursor:pointer;font-size:14px}
.rq-type input:checked+span{border-color:var(--tc,var(--acc));color:var(--tc,var(--acc));box-shadow:0 0 0 1px var(--tc,var(--acc)) inset;font-weight:600}
.rq-type input:focus-visible+span{outline:2px solid var(--acc);outline-offset:2px}
.rq-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px 14px}
.rq-f{grid-column:span var(--sp,12);display:flex;flex-direction:column;gap:4px;min-width:0;border:0;padding:0;margin:0 0 6px}
.rq-f legend{font-size:14px;font-weight:600;margin-bottom:4px;padding:0}
.rq-opts{display:flex;flex-wrap:wrap;gap:6px 16px}.rq-opts label{display:inline-flex;align-items:center;gap:6px;font-weight:400}
.rq-opts input{width:auto}
.rq-req{color:var(--bad)}
.rq-files{display:flex;flex-wrap:wrap;gap:6px}.rq-file{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.rq-mine{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.rq-mine li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
@media (max-width:640px){.rq-f{grid-column:span 12}}

/* 會議記錄（2026-10-08） */
.pt-mtg h2{margin:0 0 8px}.pt-mi{border-top:1px solid var(--line);padding:10px 0}.pt-mi:first-of-type{border-top:0}
.pt-mi summary{cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;list-style:none}.pt-mi summary::-webkit-details-marker{display:none}
.pt-mi summary::before{content:'›';display:inline-block;transition:transform .15s;color:var(--sub)}.pt-mi[open] summary::before{transform:rotate(90deg)}
.pt-mb{padding:8px 0 0 16px}.pt-mb h4{margin:12px 0 4px;font-size:13px;color:var(--sub)}.pt-mn{white-space:pre-wrap;line-height:1.6}.pt-mb ul{margin:4px 0;padding-left:20px}

/* 左上角公司 logo（2026-10-08） */
.pt-clogo{height:30px;width:auto;max-width:160px;object-fit:contain;display:block}.pt-cname{font-weight:700}

/* 項目點開看說明與來回紀錄（2026-10-08） */
.pt-rtog{all:unset;cursor:pointer;color:var(--acc);text-decoration:underline;text-underline-offset:2px}.pt-rtog:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.pt-rcnt{margin-left:6px;font-size:12px;color:var(--sub);text-decoration:none;display:inline-block}
.pt-rt tr.pt-rdet td{white-space:normal;background:color-mix(in srgb,var(--acc) 4%,transparent);padding:12px 16px}
.pt-det h4{margin:4px 0 6px;font-size:13px;color:var(--sub)}.pt-det h4+*{margin-bottom:10px}.pt-dnote{white-space:pre-wrap;line-height:1.6}
.pt-dthread{list-style:none;margin:0;padding:0;display:grid;gap:8px}.pt-dm{border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--card)}
.pt-dm.team{border-left:3px solid var(--acc)}.pt-dmh{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:13px}.pt-dmb{white-space:pre-wrap;margin:4px 0}

/* 回報表單的通用附件區（2026-10-08）：選檔、貼上截圖、拖拉 */
.rq-att{display:grid;gap:6px;margin-top:12px}.rq-l{font-weight:600;font-size:14px}
.rq-drop{display:block;border:1.5px dashed var(--line);border-radius:10px;padding:16px;text-align:center;color:var(--sub);cursor:pointer;font-size:14px}
.rq-drop:hover,.rq-drop.on,.rq-drop:focus-within{border-color:var(--acc);color:var(--acc);background:color-mix(in srgb,var(--acc) 6%,transparent)}
.rq-drop input[type=file]{display:block;margin:8px auto 0;max-width:100%}

/* 右側展開的項目區塊（portal-item.js，2026-10-08） */
.pt-pscrim{position:fixed;inset:0;background:rgba(15,23,42,.28);z-index:60}
.pt-panel{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);background:var(--card);box-shadow:-8px 0 24px rgba(0,0,0,.12);z-index:61;display:flex;flex-direction:column;animation:ptslide .18s ease-out}
@keyframes ptslide{from{transform:translateX(30px);opacity:.6}to{transform:none;opacity:1}}
.pt-ph{display:flex;align-items:flex-start;gap:12px;padding:18px 20px 12px;border-bottom:1px solid var(--line)}.pt-ph h2{margin:0;font-size:18px;flex:1;line-height:1.4}
.pt-px{all:unset;cursor:pointer;width:32px;height:32px;display:grid;place-items:center;border-radius:8px;color:var(--sub);font-size:16px}.pt-px:hover,.pt-px:focus-visible{background:var(--line);color:var(--ink)}
.pt-pb{padding:14px 20px 24px;overflow:auto;flex:1}.pt-pb h3{font-size:14px;margin:18px 0 8px}/* 狀態與日期：標籤在上、值在下（2026-10-08 使用者要求「取消前面要有狀態，日期放在上面」） */
.pt-pmeta{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px 16px;margin:0;font-size:14px}.pt-pmeta dt{font-size:12px;color:var(--sub);margin-bottom:2px}.pt-pmeta dd{margin:0;font-weight:500}
.pt-pnote{white-space:pre-wrap;line-height:1.65}.pt-pnote a,.pt-dmb a{word-break:break-all}
.pt-pfiles{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.pt-pimg{all:unset;cursor:pointer;display:grid;gap:4px;width:112px;font-size:12px;color:var(--sub)}
.pt-pimg img{width:112px;height:84px;object-fit:cover;border-radius:8px;border:1px solid var(--line);background:var(--line)}.pt-pimg span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-pthread{list-style:none;margin:0;padding:0;display:grid;gap:8px}.pt-pform{display:grid;gap:8px;margin-top:14px;border-top:1px solid var(--line);padding-top:14px}
.pt-pform textarea{width:100%;font:inherit;padding:10px;border:1px solid var(--line);border-radius:8px;resize:vertical;background:var(--bg)}.pt-pacts{display:flex;align-items:center;gap:8px}
.pt-rtog{all:unset;cursor:pointer;color:var(--ink)}.pt-rtog:hover{color:var(--acc);text-decoration:underline;text-underline-offset:2px}
body.pt-pon{overflow:hidden}
@media (max-width:640px){.pt-panel{width:100vw}}
.pt-pacts .spacer{flex:1}

/* 右側區塊：團隊上傳的圖片標示與標籤（2026-10-08） */
.pt-pgroup{margin:6px 0 12px}.pt-pby{display:inline-block;font-size:12px;font-weight:600;color:var(--acc);background:color-mix(in srgb,var(--acc) 10%,transparent);border-radius:999px;padding:2px 10px}
.pt-pimgw{display:inline-grid;gap:4px;width:112px}.pt-ptags{display:flex;flex-wrap:wrap;gap:4px}.pt-ptag{font-size:11px;color:var(--sub);border:1px solid var(--line);border-radius:999px;padding:0 6px}
