/* 页 9～11：执行进展、确认卡、交付卡、结项提议（团团栏里的纸卡），以及接管画布区的收尾报告。
   全是纸：不透明、发丝边。黄只给最新一张待处理卡的「同意／结项」；状态一律用文字，完成用策划绿的小勾。
   卡的外形与提议卡（changes.css）同一套：圆角 18、内距 16、发丝边＋近远两层影。 */

/* ── 团团栏里的卡 ── */
.tt-ex-card { margin: var(--b-sp-2) 0 var(--b-sp-3); padding: var(--b-sp-4) var(--b-sp-4) var(--b-sp-3); border-radius: var(--b-radius-card); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line), 0 1px 2px var(--b-card-shadow), 0 14px 30px -20px var(--b-card-shadow-far); }
.tt-ex-card[data-pending="1"]:hover, .tt-ex-card[data-pending="1"]:focus-within { box-shadow: inset 0 0 0 1px var(--b-line-strong), 0 1px 2px var(--b-card-shadow), 0 18px 36px -20px var(--b-card-shadow-far); }
/* 处理过的卡收成平纸，读得出是历史 */
.tt-ex-confirm:not([data-pending]), .tt-ex-close:not([data-pending]), .tt-ex-delivery:not([data-pending]) { box-shadow: inset 0 0 0 1px var(--b-line); }
.tt-ex-confirm:not([data-pending]) .tt-ex-title, .tt-ex-close:not([data-pending]) .tt-ex-title { color: var(--b-text-2); }

.tt-ex-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--b-sp-3); }
.tt-ex-kicker { font-size: var(--b-fs-12); line-height: 18px; font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); }
.tt-ex-ref { flex: none; font-size: var(--b-fs-12); line-height: 18px; font-family: var(--b-font-num); font-variant-numeric: tabular-nums; color: var(--b-text-3); }
.tt-ex-title { margin-top: 2px; font-size: var(--b-fs-15); line-height: 1.45; font-weight: 600; color: var(--b-text-1); }
.tt-ex-effect { margin-top: var(--b-sp-3); font-size: var(--b-fs-12); line-height: 18px; color: var(--b-text-3); text-wrap: pretty; }
.tt-ex-actions { display: flex; align-items: center; gap: var(--b-sp-2); margin-top: var(--b-sp-2); }
.tt-ex-actions > .link-btn:last-child { margin-left: auto; }
.tt-ex-done { display: flex; align-items: center; gap: 6px; margin-top: var(--b-sp-3); padding-top: 10px; border-top: 1px solid var(--b-line); font-size: var(--b-fs-12); line-height: 20px; color: var(--b-text-3); }
.tt-ex-done.is-ok { color: var(--b-text-2); }
.tt-ex-actions .tt-ex-done { flex: 1; margin: 0; padding: 0; border: 0; }
.tt-ex-ico { display: inline-flex; flex: none; }
.tt-ex-ico svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.tt-ex-done.is-ok .tt-ex-ico { color: var(--b-ok); }

/* 金额、前后对照：与提议卡的改动清单同一块次级面 */
.tt-ex-rows { display: grid; grid-template-columns: max-content minmax(0, 1fr); column-gap: var(--b-sp-4); row-gap: 2px; margin-top: var(--b-sp-3); padding: 10px var(--b-sp-3) 11px; border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.tt-ex-rows > div { display: contents; }
.tt-ex-rows dt { font-size: var(--b-fs-12); line-height: 22px; color: var(--b-text-3); }
.tt-ex-rows dd { min-width: 0; font-size: var(--b-fs-13); line-height: 22px; font-weight: 600; color: var(--b-text-1); overflow-wrap: anywhere; }
.tt-ex-num { font-family: var(--b-font-num); font-variant-numeric: tabular-nums; }
.tt-ex-arrow { margin: 0 6px; font-weight: 400; color: var(--b-text-3); }
.tt-ex-cap { font-weight: 400; color: var(--b-text-3); }
.tt-ex-was { font-weight: 400; color: var(--b-text-3); text-decoration-thickness: 1px; }
.tt-ex-plus { margin-right: 4px; color: var(--b-text-1); }

/* 对外发布的清单：哪天发哪篇，日期等宽对齐 */
.tt-ex-posts { display: grid; margin-top: var(--b-sp-3); padding: 4px var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); list-style: none; }
.tt-ex-posts li { display: grid; grid-template-columns: 44px minmax(0, 1fr); column-gap: var(--b-sp-2); align-items: baseline; padding: 5px 0; font-size: var(--b-fs-13); line-height: 20px; color: var(--b-text-1); }
.tt-ex-posts li + li { border-top: 1px solid var(--b-line); }
.tt-ex-posts time { font-size: var(--b-fs-12); font-family: var(--b-font-num); font-variant-numeric: tabular-nums; color: var(--b-text-3); }
.tt-ex-posts span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── 交付卡：文件是一张次级面上的小纸条 ── */
.tt-ex-file { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; grid-template-areas: "ico name acts" "ico size acts"; column-gap: 10px; align-items: center; margin-top: var(--b-sp-3); padding: 10px var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.tt-ex-file-ico { grid-area: ico; display: grid; place-items: center; width: 32px; height: 36px; border-radius: 6px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); color: var(--b-text-2); }
.tt-ex-file-ico svg { width: 18px; height: 18px; stroke-width: 1.4; }
.tt-ex-file-name { grid-area: name; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--b-fs-13); line-height: 18px; font-weight: 600; color: var(--b-text-1); }
.tt-ex-file-size { grid-area: size; font-size: var(--b-fs-12); line-height: 16px; font-family: var(--b-font-num); font-variant-numeric: tabular-nums; color: var(--b-text-3); }
.tt-ex-file-acts { grid-area: acts; display: flex; gap: var(--b-sp-3); }
.tt-ex-file-acts .link-btn { font-size: var(--b-fs-12); }

/* 团团预审：左侧一道发丝线引出；发现问题时线与字升为墨色（不是报错，不用红） */
.tt-ex-review { margin-top: var(--b-sp-3); padding-left: var(--b-sp-3); box-shadow: inset 2px 0 0 var(--b-line-strong); }
.tt-ex-review-k { display: block; font-size: var(--b-fs-12); line-height: 18px; font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); }
.tt-ex-review p { font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-2); text-wrap: pretty; }
.tt-ex-review.is-issue { box-shadow: inset 2px 0 0 var(--b-text-1); }
.tt-ex-review.is-issue p { color: var(--b-text-1); }
.tt-ex-proxy { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 6px; background: var(--b-neutral-tint); font-size: var(--b-fs-12); font-weight: 600; color: var(--b-text-2); white-space: nowrap; }
.tt-ex-proxy-link { display: inline-flex; align-items: center; gap: 2px; margin-left: auto; }

/* ── 进展：不是卡，是对话流里的一串时间行 ── */
.tt-ex-progress { display: grid; gap: 2px; margin: var(--b-sp-2) 0 var(--b-sp-3); padding: 2px 0 2px var(--b-sp-3); box-shadow: inset 1px 0 0 var(--b-line-strong); }
.tt-ex-pg-line { display: grid; grid-template-columns: 76px minmax(0, 1fr); column-gap: var(--b-sp-2); font-size: var(--b-fs-13); line-height: 22px; color: var(--b-text-2); }
.tt-ex-pg-line span { text-wrap: pretty; }
.tt-ex-pg-line time { font-size: var(--b-fs-12); font-family: var(--b-font-num); font-variant-numeric: tabular-nums; color: var(--b-text-3); }

/* ── 你上传的文件：你的话靠右，和你的气泡同一底色 ── */
.tt-ex-upload { display: flex; justify-content: flex-end; margin: var(--b-sp-1) 0 var(--b-sp-3); }
.tt-ex-upload-chip { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "ico name" "ico size"; column-gap: 12px; min-width: 216px; align-items: center; max-width: 80%; padding: var(--b-sp-2) var(--b-sp-3) var(--b-sp-2) var(--b-sp-2); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); text-align: left; transition: box-shadow var(--m-snappy-t) var(--m-spring-snappy); }
.tt-ex-upload-chip:hover { box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.tt-ex-upload-chip .tt-ex-file-name { align-self: end; }
.tt-ex-upload-chip .tt-ex-file-size { align-self: start; margin-top: 2px; }
/* 缩略图占位：3:4 竖图，顶上一条标题、底下三根柱（中间那根最高——干货教程那一类） */
.tt-ex-thumb { grid-area: ico; position: relative; display: flex; align-items: flex-end; justify-content: center; gap: 4px; width: 42px; height: 56px; padding: 0 8px 9px; border-radius: 7px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); }
.tt-ex-thumb::before { content: ""; position: absolute; top: 8px; left: 8px; right: 14px; height: 3px; border-radius: 2px; background: var(--b-line-strong); }
.tt-ex-thumb i { flex: 1; border-radius: 2px 2px 1px 1px; background: var(--b-text-3); opacity: .35; }
.tt-ex-thumb i:nth-child(1) { height: 30%; }
.tt-ex-thumb i:nth-child(2) { height: 62%; opacity: .6; }
.tt-ex-thumb i:nth-child(3) { height: 22%; }

/* ── 你的待办：线下的事只有你能做；不用黄，靠「等你」与栏头计数排队 ── */
.tt-ex-todo .tt-ex-effect { margin-top: 2px; font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-2); }
.tt-ex-todo:not([data-pending]) { box-shadow: inset 0 0 0 1px var(--b-line); }
.tt-ex-todo:not([data-pending]) .tt-ex-title { color: var(--b-text-2); }

/* ── 结项提议：判断依据逐条打勾 ── */
.tt-ex-checks { display: grid; gap: 2px; margin-top: var(--b-sp-3); padding: var(--b-sp-2) var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.tt-ex-checks li { display: flex; align-items: center; gap: var(--b-sp-2); min-height: 26px; font-size: var(--b-fs-13); color: var(--b-text-1); }
.tt-ex-checks li .tt-ex-ico { color: var(--b-ok); }
.tt-ex-checks li.is-open { color: var(--b-text-3); }
.tt-ex-checks li.is-open .tt-ex-ico { color: var(--b-text-disabled); }
.tt-ex-checks .tt-ex-ref { margin-left: auto; }
.tt-ex-check-t { flex: none; }
.tt-ex-evidence { min-width: 0; margin-left: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--b-fs-12); color: var(--b-text-3); }

/* ── 检查栏里的「和专家的对话」 ── */
.tt-ex-thread { display: grid; gap: var(--b-sp-3); }
.tt-ex-thread-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--b-sp-3); }
.tt-ex-thread-head h3 { margin: 0; }
.tt-ex-thread-note { font-size: var(--b-fs-12); color: var(--b-text-3); }
.tt-ex-say-who { display: flex; align-items: center; gap: var(--b-sp-2); font-size: var(--b-fs-12); line-height: 20px; font-weight: 600; color: var(--b-text-2); }
.tt-ex-say-who time { font-weight: 400; font-family: var(--b-font-num); font-variant-numeric: tabular-nums; color: var(--b-text-3); }
.tt-ex-say-who .tt-ex-proxy { margin-left: auto; }
.tt-ex-say-text { margin-top: 2px; font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-1); }
.tt-ex-say.is-expert .tt-ex-say-text { padding: var(--b-sp-2) var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.tt-ex-offline { font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-1); }

/* ── 收尾报告：画布纸面里的视图区换成一份文件（最宽 760、居中）；纸面本身就是纸，报告不再另起一张卡 ── */
body[data-ex-closed] .tt-cv-bar { display: none; }
.tt-ex-report-scroll { flex: 1; min-width: 0; min-height: 0; overflow: auto; overscroll-behavior: contain; }
.tt-ex-report { max-width: 760px; margin: 0 auto; padding: var(--b-sp-8) var(--b-sp-8) var(--b-sp-7); }
.tt-ex-rp-head { padding-bottom: var(--b-sp-7); }
.tt-ex-rp-title { margin-top: var(--b-sp-2); font-size: var(--b-fs-28); line-height: 1.15; font-weight: 600; letter-spacing: var(--b-ls-title); color: var(--b-text-1); }
.tt-ex-rp-lead span { display: block; }
.tt-ex-rp-lead { margin-top: var(--b-sp-3); font-size: var(--b-fs-17); line-height: 1.6; color: var(--b-text-2); }

.tt-ex-rp-sec { display: grid; grid-template-columns: 112px minmax(0, 1fr); column-gap: var(--b-sp-6); padding: var(--b-sp-6) 0; border-top: 1px solid var(--b-line); }
.tt-ex-rp-label { font-size: var(--b-fs-12); line-height: 24px; font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); }
.tt-ex-rp-body { min-width: 0; }
.tt-ex-rp-note { margin-top: var(--b-sp-2); font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-3); text-wrap: pretty; }
.tt-ex-rp-note.is-tight { margin-top: 0; }
.tt-ex-nw { white-space: nowrap; }

.tt-ex-rp-checks { display: grid; gap: var(--b-sp-1); }
.tt-ex-rp-checks li { display: flex; align-items: center; gap: 10px; min-height: 28px; }
.tt-ex-rp-checks .tt-ex-ico { color: var(--b-ok); }
.tt-ex-rp-checks .tt-ex-ico svg { width: 16px; height: 16px; stroke-width: 2; }
.tt-ex-rp-check { font-size: var(--b-fs-17); line-height: 1.4; font-weight: 600; color: var(--b-text-1); }
.tt-ex-rp-evidence { margin-left: auto; font-size: var(--b-fs-13); color: var(--b-text-3); }

.tt-ex-rp-who { display: grid; gap: var(--b-sp-3); }
.tt-ex-rp-who > div { display: grid; grid-template-columns: 88px minmax(0, 1fr); column-gap: var(--b-sp-4); }
.tt-ex-rp-who dt { font-size: var(--b-fs-13); line-height: 24px; color: var(--b-text-2); }
.tt-ex-rp-tasks { display: block; font-size: var(--b-fs-15); line-height: 24px; color: var(--b-text-1); }
.tt-ex-rp-names { font-size: var(--b-fs-12); line-height: 18px; color: var(--b-text-3); }

.tt-ex-rp-spend { display: flex; align-items: baseline; gap: 2px; color: var(--b-text-2); font-size: var(--b-fs-15); }
.tt-ex-rp-spend b { font-size: var(--b-fs-28); line-height: 1.1; font-weight: 600; letter-spacing: var(--b-ls-title); color: var(--b-text-1); }
.tt-ex-rp-ledger { margin-top: var(--b-sp-3); }
.tt-ex-rp-ledger li { display: grid; grid-template-columns: minmax(0, 1fr) auto 64px; column-gap: var(--b-sp-4); align-items: baseline; padding: var(--b-sp-2) 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-15); line-height: 22px; color: var(--b-text-1); }
.tt-ex-rp-ledger li:last-child { border-bottom: 1px solid var(--b-line); }
.tt-ex-rp-ledger .tt-ex-num { text-align: right; }

.tt-ex-rp-sentence { max-width: 36em; text-wrap: pretty; font-size: var(--b-fs-15); line-height: 1.8; color: var(--b-text-2); }
.tt-ex-rp-sentence b { font-family: var(--b-font-num); font-variant-numeric: tabular-nums; font-weight: 600; color: var(--b-text-1); }

.tt-ex-rp-files { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--b-sp-2); }
.tt-ex-rp-file { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "ico name" "ico meta"; column-gap: 10px; align-items: center; width: 100%; padding: 10px var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); text-align: left; transition: box-shadow var(--m-snappy-t) var(--m-spring-snappy); }
.tt-ex-rp-file:hover { box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.tt-ex-rp-fname { grid-area: name; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--b-fs-13); line-height: 18px; font-weight: 600; color: var(--b-text-1); }
.tt-ex-rp-fmeta { grid-area: meta; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--b-fs-12); line-height: 16px; color: var(--b-text-3); }

/* 结尾：一道实线收住，落款一行；不放彩带、不弹猫 */
.tt-ex-rp-foot { display: flex; align-items: center; justify-content: space-between; gap: var(--b-sp-4); padding-top: var(--b-sp-6); border-top: 1px solid var(--b-line-strong); font-size: var(--b-fs-13); color: var(--b-text-2); }

.tt-ex-report.is-arriving :is(.tt-ex-rp-head, .tt-ex-rp-sec, .tt-ex-rp-foot) { animation: m-enter var(--m-smooth-t) var(--m-ease-out) backwards; }

/* 检查栏打开时纸面只剩三百多宽：分节标签改到内容上方（容器是画布页的 .tt-cv-main） */
@container (max-width: 600px) {
  .tt-ex-report { padding: var(--b-sp-6) var(--b-sp-5); }
  .tt-ex-rp-sec { grid-template-columns: minmax(0, 1fr); row-gap: var(--b-sp-2); }
  .tt-ex-rp-files { grid-template-columns: minmax(0, 1fr); }
  .tt-ex-rp-who > div { grid-template-columns: minmax(0, 1fr); }
  .tt-ex-rp-checks li { flex-wrap: wrap; }
  .tt-ex-rp-foot { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 1320px) {
  .tt-ex-report { padding: var(--b-sp-7) var(--b-sp-7) var(--b-sp-6); }
}

/* 画布页没画出来时的兜底：左边一张纸放报告，右边团团栏 */
.tt-ex-fallback { display: grid; grid-template-columns: minmax(0, 1fr) var(--tt-sb-w); gap: var(--tt-gap); height: calc(100dvh - var(--b-topbar-h) - var(--b-sp-6) * 2); min-height: 620px; }
.tt-ex-report-host { display: flex; min-height: 0; border-radius: var(--b-radius-card); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line), inset 0 1px 0 var(--b-card-edge), 0 1px 2px var(--b-card-shadow), 0 12px 32px -16px var(--b-card-shadow-far); }
.tt-ex-fallback-side { display: flex; min-height: 0; }
.tt-ex-fallback-side > * { flex: 1; min-width: 0; min-height: 0; }
