/* AI 助手陪跑流程 · 教师伙伴运营（2026-09-23 原型）
   视觉真值是阳光玻璃三件（tokens／motion／styles），本文件只放这一页独有的布局与组件，全部走 --b-* 令牌、不写裸色。
   类名统一 aw- 前缀，避免和 styles.css 里的 .card／.grid 等任务页类撞车。
   签名装置（原则二，一个阶段一个）：
     需求确认阶段 ＝ 底部输入坞（玻璃）；
     实施阶段     ＝ 团团改动「从团团栏飞到画布」并在节点处凝结（assistant.js 的 flyToCanvas）。
   玻璃只给功能层（原则一）：顶栏、输入坞、团团栏、改动记录抽屉、任务弹层；画布、节点、卡片都是纸。 */

body.aw { padding-bottom: 0; }
.aw-wrap { width: min(1400px, 100% - 48px); margin-inline: auto; }
.aw-main { padding: var(--b-sp-6) 0 var(--b-sp-9); }
.aw-h1 { font-size: var(--b-fs-28); line-height: var(--b-lh-title); font-weight: 700; letter-spacing: var(--b-ls-title); }
.aw-h2 { font-size: var(--b-fs-17); line-height: var(--b-lh-title); font-weight: 700; letter-spacing: var(--b-ls-title); }
.aw-h3 { font-size: var(--b-fs-15); font-weight: 700; }

/* ═══ 阶段一：需求确认 ═══ */
.aw-intake { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: var(--b-sp-8); align-items: start; padding-bottom: 140px; }
.aw-intake-col { width: min(760px, 100%); justify-self: center; }
.aw-hello { display: flex; gap: var(--b-sp-5); align-items: center; padding: var(--b-sp-7) 0 var(--b-sp-6); }
.aw-hello-cat { width: 72px; height: 72px; filter: var(--b-mascot-shadow); animation: m-breathe 3s ease-in-out infinite; }
.aw-hello .aw-h1 { margin-top: 2px; }

.aw-know { position: sticky; top: calc(var(--b-topbar-h) + var(--b-sp-6)); margin-top: var(--b-sp-8); padding: var(--b-sp-5); 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 12px 32px -16px var(--b-card-shadow-far); }
.aw-know-list { display: grid; margin-top: var(--b-sp-2); }
.aw-know-list li { display: grid; grid-template-columns: 16px auto 1fr; gap: var(--b-sp-2); align-items: baseline; padding: 6px 0; font-size: var(--b-fs-13); color: var(--b-text-2); border-top: 1px solid var(--b-line); }
.aw-know-list li:first-child { border-top: 0; }
.aw-know-list li > i { width: 12px; height: 12px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--b-line-strong); align-self: center; }
.aw-know-list li.is-on > i { background: var(--b-ok-fill); box-shadow: none; animation: m-pop var(--m-bouncy-t) var(--m-spring-bouncy) both; }
.aw-know-list li.is-todo > i { box-shadow: inset 0 0 0 1.5px var(--b-text-3); background: none; }
.aw-know-list li > b { font-weight: 600; color: var(--b-text-1); text-align: right; min-width: 0; overflow-wrap: anywhere; }
.aw-know-list .aw-know-empty { display: block; color: var(--b-text-disabled); border: 0; }
.aw-know-sub { margin-top: var(--b-sp-4); font-size: var(--b-fs-12); font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); }
.aw-know-foot { margin-top: var(--b-sp-4); padding-top: var(--b-sp-3); border-top: 1px solid var(--b-line); font-size: var(--b-fs-12); line-height: 1.6; color: var(--b-text-3); }

/* 输入坞：这一阶段唯一的玻璃装置 */
.aw-dock { position: fixed; left: 50%; bottom: var(--b-dock-bottom); z-index: var(--b-z-dock); translate: -50% 0; width: min(760px, 100% - 32px); display: flex; gap: var(--b-sp-2); align-items: center; padding: var(--b-sp-2); border-radius: var(--b-radius-pill); }
.aw-dock .field { flex: 1; height: var(--b-control-h-lg); background: transparent; box-shadow: none; padding-left: var(--b-sp-5); font-size: var(--b-fs-15); }
.aw-dock .field:focus { box-shadow: none; }
.aw-dock .btn { height: var(--b-control-h-lg); }
.aw-dock.is-busy .btn { pointer-events: none; opacity: .6; }

/* ═══ 对话线（两阶段共用） ═══ */
.aw-thread { display: grid; gap: var(--b-sp-3); align-content: start; }
.aw-intake .aw-thread > * { scroll-margin-bottom: 120px; }
.aw-msg { display: grid; gap: var(--b-sp-2); max-width: 88%; animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-msg.is-tt { justify-self: start; }
.aw-msg.is-me { justify-self: end; }
.aw-msg.is-wide { max-width: 100%; width: 100%; }
.aw-bub { padding: var(--b-sp-3) var(--b-sp-4); border-radius: var(--b-radius-inner); line-height: 1.65; overflow-wrap: anywhere; }
.is-tt .aw-bub { background: var(--b-bg-inset); color: var(--b-text-1); border-top-left-radius: var(--b-radius-chip); }
.is-me .aw-bub { background: var(--b-text-1); color: var(--b-bg-card); border-top-right-radius: var(--b-radius-chip); }
.aw-bub b { font-weight: 700; }
.aw-bub .aw-em { color: var(--b-ok); font-weight: 700; }
.aw-typing { justify-self: start; padding: var(--b-sp-3) var(--b-sp-4); border-radius: var(--b-radius-inner); border-top-left-radius: var(--b-radius-chip); background: var(--b-bg-inset); color: var(--b-text-3); }
.aw-chips { display: flex; flex-wrap: wrap; gap: var(--b-sp-2); }
.aw-chips button { min-height: var(--b-control-h-sm); padding: 6px var(--b-sp-3); line-height: 1.45; text-align: left; border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); font-weight: 500; color: var(--b-text-1); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong); transition: background-color var(--m-snappy-t) var(--m-spring-snappy), transform var(--m-snappy-t) var(--m-spring-snappy); }
.aw-chips button:hover { background: var(--b-bg-inset); }
.aw-chips button:active { transform: scale(var(--m-press)); }
.aw-chips button.is-hint { box-shadow: inset 0 0 0 1.5px var(--b-text-1); }
.aw-chips.is-done { display: none; }
.aw-sep { justify-self: center; display: flex; align-items: center; gap: var(--b-sp-2); font-size: var(--b-fs-12); color: var(--b-text-3); letter-spacing: var(--b-ls-cap); animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-sep::before, .aw-sep::after { content: ""; width: 28px; height: 1px; background: var(--b-line-strong); }
.aw-ff { justify-self: center; display: inline-flex; align-items: center; gap: var(--b-sp-2); height: var(--b-control-h-sm); padding: 0 var(--b-sp-4); border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); font-weight: 600; color: var(--b-text-2); box-shadow: inset 0 0 0 1px var(--b-line-strong); background: transparent; animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-ff:hover { color: var(--b-text-1); background: var(--b-neutral-tint); }
.aw-ff small { font-size: 11px; font-weight: 600; padding: 0 6px; border-radius: var(--b-radius-chip); background: var(--b-neutral-tint); color: var(--b-text-3); }
.aw-ff svg { width: 14px; height: 14px; }

/* 对话里的卡：内容是纸 */
.aw-card { display: grid; gap: var(--b-sp-3); padding: var(--b-sp-4); border-radius: 14px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line), 0 8px 20px -14px var(--b-card-shadow-far); }
.aw-card-k { display: flex; align-items: center; gap: var(--b-sp-2); font-size: var(--b-fs-12); font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); }
.aw-card-k svg { width: 14px; height: 14px; }
.aw-card-k.is-ask { color: var(--b-primary-text); }
.aw-card-k.is-risk { color: var(--b-danger); }
.aw-card-k.is-ok { color: var(--b-ok); }
.aw-card-t { font-size: var(--b-fs-17); font-weight: 700; line-height: 1.35; letter-spacing: var(--b-ls-title); }
.aw-card-p { font-size: var(--b-fs-13); color: var(--b-text-2); line-height: 1.6; }
.aw-rows { display: grid; }
.aw-rows > div { display: flex; justify-content: space-between; gap: var(--b-sp-3); padding: 7px 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); }
.aw-rows dt { color: var(--b-text-3); flex: none; }
.aw-rows dd { text-align: right; font-weight: 600; color: var(--b-text-1); min-width: 0; }
.aw-rows dd small { display: block; font-weight: 400; color: var(--b-text-3); font-size: var(--b-fs-12); }
.aw-card-foot { display: flex; flex-wrap: wrap; gap: var(--b-sp-2); }
.aw-card-foot .btn { flex: none; }
.aw-card.is-resolved .aw-card-foot { display: none; }
.aw-resolved { display: none; align-items: center; gap: var(--b-sp-2); font-size: var(--b-fs-13); color: var(--b-ok); font-weight: 600; }
.aw-resolved::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--b-ok-fill); }
.aw-resolved.is-neutral { color: var(--b-text-3); }
.aw-resolved.is-neutral::before { background: var(--b-text-3); }
.aw-card.is-resolved .aw-resolved { display: flex; animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) both; }

/* 预算变化小条 */
.aw-budget-mini { display: grid; gap: 4px; }
.aw-budget-mini .aw-bar { width: 100%; }
.aw-budget-mini small { font-size: var(--b-fs-12); color: var(--b-text-3); }

/* 摘要卡（需求确认的产物，开工后变成画布） */
.aw-summary { gap: var(--b-sp-4); padding: var(--b-sp-5); }
.aw-summary .aw-card-t { font-size: var(--b-fs-20); }
.aw-summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--b-sp-2) var(--b-sp-5); }
.aw-summary-grid > div { padding: var(--b-sp-2) 0; border-top: 1px solid var(--b-line); }
.aw-summary-grid dt { font-size: var(--b-fs-12); color: var(--b-text-3); letter-spacing: var(--b-ls-cap); }
.aw-summary-grid dd { font-weight: 600; margin-top: 2px; }
.aw-summary-grid dd small { display: block; font-weight: 400; font-size: var(--b-fs-12); color: var(--b-text-3); }
.aw-summary-todo { display: flex; flex-wrap: wrap; gap: var(--b-sp-2); }
.aw-plan { display: grid; gap: 0; counter-reset: pl; }
.aw-plan li { counter-increment: pl; display: grid; grid-template-columns: 24px 1fr auto; gap: var(--b-sp-2); align-items: baseline; padding: 6px 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); }
.aw-plan li::before { content: counter(pl, decimal-leading-zero); font-family: var(--b-font-num); font-size: var(--b-fs-12); font-weight: 600; color: var(--b-text-3); }
.aw-plan li span { color: var(--b-text-1); }
.aw-plan li small { color: var(--b-text-3); font-size: var(--b-fs-12); }
.aw-rule-note { display: flex; gap: var(--b-sp-2); align-items: flex-start; padding: var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); font-size: var(--b-fs-13); color: var(--b-text-2); }
.aw-rule-note svg { width: 16px; height: 16px; margin-top: 3px; color: var(--b-text-1); }

/* 帖子预览（对外发布确认） */
.aw-posts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--b-sp-2); }
.aw-post { display: grid; gap: 4px; min-width: 0; }
.aw-post-cover { aspect-ratio: 3 / 4; border-radius: 8px; padding: 6px; display: flex; align-items: flex-end; font-size: 11px; line-height: 1.3; font-weight: 700; color: var(--b-text-1); background: var(--b-bg-inset); box-shadow: inset 0 0 0 1px var(--b-line); overflow: hidden; position: relative; }
.aw-post-cover::before { content: ""; position: absolute; left: 6px; right: 6px; top: 6px; height: 38%; border-radius: 5px; background: repeating-linear-gradient(135deg, var(--b-neutral-tint) 0 6px, transparent 6px 12px); }
.aw-post-cover span { position: relative; }
.aw-post small { font-size: 11px; color: var(--b-text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* 截图回报 */
.aw-shot { width: 220px; justify-self: end; border-radius: var(--b-radius-inner); overflow: hidden; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong); font-size: var(--b-fs-12); }
.aw-shot-top { display: flex; justify-content: space-between; padding: 8px 10px; background: var(--b-bg-inset); color: var(--b-text-3); font-weight: 600; }
.aw-shot-kpi { display: grid; grid-template-columns: repeat(3, 1fr); padding: 10px; gap: 6px; text-align: center; }
.aw-shot-kpi b { display: block; font-size: var(--b-fs-17); font-family: var(--b-font-num); }
.aw-shot-kpi span { color: var(--b-text-3); }
.aw-shot-rows { padding: 0 10px 10px; display: grid; gap: 4px; }
.aw-shot-rows div { display: flex; justify-content: space-between; gap: 8px; color: var(--b-text-2); }
.aw-shot-rows div b { font-family: var(--b-font-num); color: var(--b-text-1); }
.aw-shot-rows div.is-hot b { color: var(--b-ok); }

/* 复盘卡、结项判断卡 */
.aw-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--b-sp-2); }
.aw-kpis > div { padding: var(--b-sp-2) var(--b-sp-3); border-radius: 10px; background: var(--b-bg-inset); }
.aw-kpis dt { font-size: 11px; color: var(--b-text-3); letter-spacing: var(--b-ls-cap); }
.aw-kpis dd { font-family: var(--b-font-num); font-weight: 700; font-size: var(--b-fs-17); }
.aw-kpis dd small { font-size: 11px; font-weight: 500; color: var(--b-text-3); margin-left: 2px; }
.aw-judge { display: grid; gap: 0; }
.aw-judge li { display: grid; grid-template-columns: 18px 1fr; gap: var(--b-sp-2); padding: 6px 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); color: var(--b-text-2); }
.aw-judge li b { color: var(--b-text-1); }
.aw-judge li::before { content: ""; width: 10px; height: 10px; margin-top: 6px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--b-text-3); }
.aw-judge li.is-yes::before { background: var(--b-ok-fill); box-shadow: none; }
.aw-judge li.is-warn::before { box-shadow: inset 0 0 0 2px var(--b-text-1); }
.aw-reco { padding: var(--b-sp-3); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-1); }
.aw-reco b { display: block; font-size: var(--b-fs-12); color: var(--b-text-3); letter-spacing: var(--b-ls-cap); margin-bottom: 2px; font-weight: 600; }

/* 团团改计划的回执：点条目定位到画布 */
.aw-changes { display: grid; gap: 0; }
.aw-changes button { display: grid; grid-template-columns: auto 1fr; gap: var(--b-sp-2); align-items: baseline; text-align: left; padding: 7px 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); color: var(--b-text-2); }
.aw-changes button:hover { color: var(--b-text-1); }
.aw-changes button b { color: var(--b-text-1); font-weight: 600; }
.aw-verb { font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: var(--b-radius-chip); background: var(--b-neutral-tint); color: var(--b-text-2); white-space: nowrap; }
.aw-verb.is-add { box-shadow: inset 0 0 0 1px var(--b-text-1); color: var(--b-text-1); background: transparent; }

/* ═══ 阶段二：项目头 ═══ */
.aw-proj { padding: var(--b-sp-2) 0 var(--b-sp-5); }
.aw-proj-row { display: flex; gap: var(--b-sp-7); align-items: flex-end; justify-content: space-between; margin-top: var(--b-sp-2); flex-wrap: wrap; }
.aw-proj-title { min-width: 0; }
.aw-proj-sub { display: flex; gap: var(--b-sp-3); align-items: center; margin-top: var(--b-sp-2); font-size: var(--b-fs-13); color: var(--b-text-3); }
.aw-proj-sub .pill { height: 24px; font-size: var(--b-fs-12); }
.aw-metrics { display: grid; grid-template-columns: repeat(4, minmax(150px, auto)); gap: 0; padding: var(--b-sp-3) var(--b-sp-2); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.aw-metric { display: grid; gap: 3px; padding: 0 var(--b-sp-5); align-content: start; }
.aw-metric + .aw-metric { border-left: 1px solid var(--b-line); }
.aw-metric dt { font-size: var(--b-fs-12); color: var(--b-text-3); letter-spacing: var(--b-ls-cap); white-space: nowrap; }
.aw-metric dd { display: flex; align-items: baseline; gap: var(--b-sp-2); white-space: nowrap; }
.aw-metric dd b { font-size: var(--b-fs-22); font-weight: 700; line-height: 1.15; }
.aw-metric dd small { font-size: var(--b-fs-12); color: var(--b-text-3); }
.aw-metric .aw-bar { margin-top: 4px; }
.aw-bar { position: relative; display: flex; gap: 2px; width: 140px; height: 5px; border-radius: 3px; background: var(--b-line); overflow: hidden; }
.aw-bar i { display: block; height: 100%; width: 0; border-radius: 3px; background: var(--b-ok-fill); transition: width var(--m-smooth-t) var(--m-spring-smooth); }
.aw-bar i.is-spent { background: var(--b-text-1); }
.aw-bar i.is-frozen { background: repeating-linear-gradient(135deg, var(--b-text-3) 0 3px, transparent 3px 6px); }
.aw-bar i.is-time { background: var(--b-text-3); }
.aw-rule { align-items: center !important; font-size: var(--b-fs-15); font-weight: 600; }
.aw-rule svg { width: 18px; height: 18px; }
.aw-rule-sub { font-size: var(--b-fs-12); color: var(--b-text-3); white-space: nowrap; }

/* ═══ 实施：栅格 ═══
   工作区是一屏应用：项目头＋（画布｜团团栏）正好占满视口，画布与对话各自内部滚动——
   团团的确认卡与输入框永远在屏内，不用滚整页去找。 */
body:not([data-phase="intake"]) .aw-main { padding-bottom: var(--b-sp-4); }
.aw-work:not([hidden]) { display: flex; flex-direction: column; height: calc(100vh - var(--b-topbar-h) - var(--b-sp-6) - var(--b-sp-4)); min-height: 700px; }
.aw-proj { flex: none; }
.aw-grid { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 400px; gap: var(--b-gutter); align-items: stretch; }

/* 画布：纸 */
.aw-canvas { position: relative; min-width: 0; min-height: 0; display: flex; flex-direction: column; 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); padding: var(--b-sp-5) var(--b-sp-6) var(--b-sp-6); overflow: hidden; }
.aw-canvas-bar { display: flex; align-items: center; gap: var(--b-sp-4); }
.aw-canvas-bar .aw-h2 { margin-right: auto; }
.aw-seg { display: inline-flex; padding: 3px; border-radius: var(--b-radius-pill); background: var(--b-neutral-tint); }
.aw-seg button { height: 28px; padding: 0 var(--b-sp-4); border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); font-weight: 600; color: var(--b-text-2); transition: background-color var(--m-snappy-t) var(--m-spring-snappy), color var(--m-snappy-t) var(--m-spring-snappy), box-shadow var(--m-snappy-t) var(--m-spring-snappy); }
.aw-seg button[aria-selected="true"] { background: var(--b-bg-card); color: var(--b-text-1); box-shadow: 0 1px 2px var(--b-card-shadow), inset 0 0 0 1px var(--b-line); }
.aw-log-btn svg { width: 14px; height: 14px; }
.aw-log-btn b { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; display: inline-grid; place-content: center; font-size: var(--b-fs-12); background: var(--b-bg-card); }
.aw-log-btn.is-bump b { animation: m-pop var(--m-bouncy-t) var(--m-spring-bouncy) both; }

/* 阶段轨：所有视图共用，一眼看到完成了哪些阶段 */
.aw-stages { display: flex; align-items: stretch; gap: 0; margin-top: var(--b-sp-4); }
.aw-stage { position: relative; flex: 1; min-width: 0; padding: var(--b-sp-2) var(--b-sp-4) var(--b-sp-2) var(--b-sp-6); font-size: var(--b-fs-13); }
.aw-stage::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; border-radius: 3px; background: var(--b-line); }
.aw-stage + .aw-stage { margin-left: 4px; }
.aw-stage b { display: block; font-weight: 700; color: var(--b-text-1); }
.aw-stage small { display: block; color: var(--b-text-3); font-size: var(--b-fs-12); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aw-stage i { position: absolute; left: 0; top: 14px; width: 16px; height: 16px; border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--b-line-strong); background: var(--b-bg-card); display: grid; place-content: center; }
.aw-stage i svg { width: 10px; height: 10px; stroke-width: 2.4; color: var(--b-on-primary); }
.aw-stage.is-done::before { background: var(--b-ok-fill); }
.aw-stage.is-done i { background: var(--b-ok-fill); box-shadow: none; }
.aw-stage.is-now::before { background: linear-gradient(90deg, var(--b-text-1) var(--p, 30%), var(--b-line) var(--p, 30%)); }
.aw-stage.is-now i { box-shadow: inset 0 0 0 4px var(--b-text-1); }
.aw-stage.is-ghost { color: var(--b-text-3); }
.aw-stage.is-ghost::before { background: repeating-linear-gradient(90deg, var(--b-line-strong) 0 6px, transparent 6px 10px); }
.aw-stage.is-ghost b { color: var(--b-text-3); font-weight: 600; }
.aw-stage.is-ghost i { box-shadow: inset 0 0 0 1.5px var(--b-line-strong); background: transparent; border: 0; }

.aw-legend { display: flex; flex-wrap: wrap; gap: var(--b-sp-4); margin-top: var(--b-sp-3); font-size: var(--b-fs-12); color: var(--b-text-3); }
.aw-legend span { display: inline-flex; align-items: center; gap: 6px; }
.aw-legend i { width: 14px; height: 14px; border-radius: 4px; display: inline-block; }
.lg-agent { background: var(--b-bg-inset); box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.lg-person { background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong); border-radius: 50% !important; }
.lg-you { background: var(--b-text-1); border-radius: 50% !important; }
.lg-ai { box-shadow: inset 0 0 0 1.5px var(--b-text-1); border-radius: 4px; background: repeating-linear-gradient(135deg, transparent 0 3px, var(--b-neutral-tint) 3px 6px); }
.lg-ghost { box-shadow: inset 0 0 0 1px var(--b-line-strong); border: 1px dashed var(--b-line-strong); background: transparent; }

.aw-view { position: relative; margin-top: var(--b-sp-4); flex: 1; min-height: 0; overflow: auto; }
.aw-canvas-bar, .aw-stages, .aw-legend { flex: none; }
.aw-view.is-swap > * { animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) both; }

/* ── 流程视图 ── */
.aw-flow-scroll { overflow-x: auto; overflow-y: hidden; padding-bottom: var(--b-sp-2); border-radius: var(--b-radius-inner); background-color: var(--b-bg-inset); background-image: radial-gradient(var(--b-line-strong) 1px, transparent 1.2px); background-size: 18px 18px; }
.aw-flow { position: relative; }
.aw-flow svg.aw-edges { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.aw-edges path { fill: none; stroke: var(--b-line-strong); stroke-width: 1.5; }
.aw-edges path.is-done { stroke: var(--b-ok-fill); opacity: .7; }
.aw-edges path.is-ai { stroke-dasharray: 5 4; stroke: var(--b-text-2); }
.aw-edges path.is-ghost { stroke-dasharray: 3 4; }
.aw-edges path.is-new { stroke-dasharray: 400; stroke-dashoffset: 400; animation: aw-draw 900ms var(--m-ease-out) 200ms forwards; }
@keyframes aw-draw { to { stroke-dashoffset: 0; } }
.aw-frame { position: absolute; border-radius: 16px; box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.aw-frame.is-now { box-shadow: inset 0 0 0 1.5px var(--b-text-1); background: var(--b-bg-card); }
.aw-frame.is-ghost { box-shadow: none; border: 1.5px dashed var(--b-line-strong); background: transparent; }
.aw-frame-label { position: absolute; left: 14px; top: 10px; display: flex; align-items: center; gap: var(--b-sp-2); font-size: var(--b-fs-12); font-weight: 700; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); white-space: nowrap; }
.aw-frame.is-now .aw-frame-label { color: var(--b-text-1); }
.aw-frame-label .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--b-text-1); animation: aw-pulse 1.6s ease-in-out infinite; }
@keyframes aw-pulse { 0%, 100% { opacity: 1; transform: none; } 50% { opacity: .35; transform: scale(.7); } }
.aw-frame-label small { font-weight: 500; letter-spacing: 0; color: var(--b-text-3); }
.aw-done-stage { position: absolute; display: grid; gap: 4px; padding: var(--b-sp-3) var(--b-sp-4); border-radius: 14px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); text-align: left; }
.aw-done-stage:hover { box-shadow: inset 0 0 0 1px var(--b-line-strong), 0 8px 18px -12px var(--b-card-shadow-far); }
.aw-done-stage .k { display: flex; align-items: center; gap: 6px; font-size: var(--b-fs-12); font-weight: 700; color: var(--b-ok); letter-spacing: var(--b-ls-cap); }
.aw-done-stage .k svg { width: 12px; height: 12px; stroke-width: 2.4; }
.aw-done-stage b { font-size: var(--b-fs-15); }
.aw-done-stage small { font-size: var(--b-fs-12); color: var(--b-text-3); line-height: 1.5; }

/* 节点：纸片 */
.aw-node { position: absolute; width: 196px; display: grid; gap: 6px; padding: 10px 12px 10px; border-radius: 12px; text-align: left; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong), 0 1px 2px var(--b-card-shadow), 0 10px 20px -16px var(--b-card-shadow-far); transition: box-shadow var(--m-snappy-t) var(--m-spring-snappy), transform var(--m-snappy-t) var(--m-spring-snappy); }
.aw-node:hover { transform: translateY(var(--m-lift)); box-shadow: inset 0 0 0 1px var(--b-text-3), 0 1px 2px var(--b-card-shadow), 0 14px 26px -14px var(--b-card-shadow-far); }
.aw-node-top { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: var(--b-fs-12); color: var(--b-text-3); }
.aw-node-top span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aw-node-t { font-size: var(--b-fs-15); font-weight: 700; line-height: 1.3; color: var(--b-text-1); letter-spacing: -.01em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.aw-node-foot { display: flex; align-items: center; gap: 6px; font-size: var(--b-fs-12); color: var(--b-text-3); }
.aw-node-foot .aw-when { margin-left: auto; font-family: var(--b-font-num); white-space: nowrap; }
.aw-node.is-done { background: var(--b-bg-card); }
.aw-node.is-done .aw-node-t { color: var(--b-text-2); }
.aw-node.is-ai { box-shadow: inset 0 0 0 1.5px var(--b-text-1), 0 1px 2px var(--b-card-shadow); background-image: repeating-linear-gradient(135deg, transparent 0 7px, var(--b-neutral-tint) 7px 8px); }
.aw-node.is-ghost { background: transparent; box-shadow: none; border: 1.5px dashed var(--b-line-strong); }
.aw-node.is-ghost .aw-node-t { color: var(--b-text-3); font-weight: 600; }
.aw-node.is-risk { box-shadow: inset 0 0 0 1.5px var(--b-danger), 0 1px 2px var(--b-card-shadow); }
.aw-node.is-cancel { opacity: .5; }
.aw-node.is-cancel .aw-node-t { text-decoration: line-through; }
.aw-node.is-focus { animation: aw-focus 1.4s var(--m-ease-out) 2; }
@keyframes aw-focus { 0%, 100% { transform: none; } 30% { transform: translateY(-4px) scale(1.03); } }
.aw-node.is-new { animation: m-materialize var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-ai-badge { position: absolute; right: -8px; top: -10px; display: inline-flex; align-items: center; gap: 3px; height: 22px; padding: 0 8px 0 2px; border-radius: 11px; font-size: 11px; font-weight: 700; color: var(--b-bg-card); background: var(--b-text-1); box-shadow: 0 4px 10px -4px var(--b-card-shadow-far); }
.aw-ai-badge img { width: 18px; height: 18px; border-radius: 50%; background: var(--b-bg-card); }

/* 当前阶段里已完成任务的一叠 */
.aw-stack { position: absolute; display: grid; align-content: start; gap: 0; padding: 10px 12px; border-radius: 12px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); }
.aw-stack-h { display: flex; align-items: center; justify-content: space-between; height: 28px; margin-bottom: 4px; font-size: var(--b-fs-12); font-weight: 700; color: var(--b-ok); letter-spacing: var(--b-ls-cap); }
.aw-stack-h span { display: inline-flex; align-items: center; gap: 5px; }
.aw-stack-h svg { width: 12px; height: 12px; stroke-width: 2.4; }
.aw-stack-h .link-btn { font-size: 11px; }
.aw-stack-i { display: flex; align-items: center; gap: 6px; height: 30px; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); color: var(--b-text-2); text-align: left; min-width: 0; }
.aw-stack-i:hover { color: var(--b-text-1); }
.aw-stack-i span { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aw-stack-i small { font-family: var(--b-font-num); font-size: 11px; color: var(--b-text-3); }
.aw-stack-i .aw-ex { width: 18px; height: 18px; font-size: 10px; }
.aw-fold-btn { position: absolute; font-size: 11px; }

/* 执行方头像：agent 方、接单者圆、你 实心 */
.aw-ex { flex: none; width: 20px; height: 20px; display: inline-grid; place-content: center; font-size: 11px; font-weight: 700; }
.aw-ex.is-agent { border-radius: 6px; background: var(--b-bg-inset); color: var(--b-text-1); box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.aw-ex.is-agent svg { width: 12px; height: 12px; }
.aw-ex.is-person { border-radius: 50%; background: var(--b-bg-card); color: var(--b-text-1); box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.aw-ex.is-you { border-radius: 50%; background: var(--b-text-1); color: var(--b-bg-card); }
.aw-ex.is-none { border-radius: 50%; box-shadow: inset 0 0 0 1.5px var(--b-text-3); border: 0; color: var(--b-text-3); }

/* 状态徽：黄不做状态色——等你确认用墨框＋一个小主按钮 */
.aw-st { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 8px; border-radius: var(--b-radius-chip); font-size: 11px; font-weight: 700; white-space: nowrap; background: var(--b-neutral-tint); color: var(--b-text-2); }
.aw-st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.aw-st.is-done { background: var(--b-ok-tint); color: var(--b-ok); }
.aw-st.is-run { color: var(--b-text-1); }
.aw-st.is-run::before { animation: aw-pulse 1.6s ease-in-out infinite; }
.aw-st.is-ask { background: transparent; box-shadow: inset 0 0 0 1.5px var(--b-text-1); color: var(--b-text-1); }
.aw-st.is-risk { background: transparent; box-shadow: inset 0 0 0 1.5px var(--b-danger); color: var(--b-danger); }
.aw-st.is-todo { color: var(--b-text-3); }
.aw-st.is-todo::before { background: transparent; box-shadow: inset 0 0 0 1.5px currentColor; }
.aw-st.is-ghost { background: transparent; color: var(--b-text-3); }
.aw-st.is-ghost::before { display: none; }
.aw-st.is-cancel { color: var(--b-text-3); }
.aw-go { height: 24px; padding: 0 10px; font-size: 11px; }

/* 常驻泳道 */
.aw-flow-box { display: grid; gap: var(--b-sp-3); }
.aw-canvas.is-closed .aw-seg, .aw-canvas.is-closed .aw-legend { display: none; }
.aw-lane { display: flex; flex-wrap: wrap; align-items: center; gap: var(--b-sp-3); min-height: 52px; padding: var(--b-sp-2) var(--b-sp-4); border-radius: 12px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); }
.aw-lane-k { font-size: var(--b-fs-12); font-weight: 700; color: var(--b-text-3); letter-spacing: var(--b-ls-cap); white-space: nowrap; }
.aw-lane-item { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px 0 6px; border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); background: var(--b-bg-inset); white-space: nowrap; }
.aw-lane-item .aw-st { height: 18px; }
.aw-lane-empty { font-size: var(--b-fs-12); color: var(--b-text-disabled); }

/* ── 时间轴视图 ── */
.aw-tl-scroll { overflow-x: auto; border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.aw-tl { position: relative; }
.aw-tl-head { position: absolute; left: 0; right: 0; top: 0; height: 56px; border-bottom: 1px solid var(--b-line); }
.aw-tl-tick { position: absolute; top: 8px; font-size: var(--b-fs-12); color: var(--b-text-3); font-family: var(--b-font-num); white-space: nowrap; }
.aw-tl-grid { position: absolute; top: 56px; bottom: 0; width: 1px; background: var(--b-line); }
.aw-tl-lane { position: absolute; left: 0; right: 0; border-bottom: 1px solid var(--b-line); }
.aw-tl-lane-k { position: sticky; left: 0; z-index: 3; display: flex; align-items: center; height: 100%; width: 88px; padding-left: var(--b-sp-4); font-size: var(--b-fs-12); font-weight: 700; color: var(--b-text-3); letter-spacing: var(--b-ls-cap); background: var(--b-bg-inset); box-shadow: 1px 0 0 var(--b-line); }
.aw-tl-stage { position: absolute; top: 30px; bottom: 0; border-left: 1.5px dashed var(--b-line-strong); }
.aw-tl-stage span { position: absolute; left: 6px; top: 0; font-size: 11px; font-weight: 700; color: var(--b-text-3); white-space: nowrap; letter-spacing: var(--b-ls-cap); }
.aw-bar-t { position: absolute; height: 28px; display: flex; align-items: center; gap: 6px; padding: 0 8px 0 4px; border-radius: 8px; font-size: var(--b-fs-12); font-weight: 600; white-space: nowrap; overflow: hidden; background: var(--b-bg-card); color: var(--b-text-1); box-shadow: inset 0 0 0 1px var(--b-line-strong); text-align: left; }
.aw-bar-t .aw-ex { width: 18px; height: 18px; font-size: 10px; }
.aw-bar-t span { overflow: hidden; text-overflow: ellipsis; }
.aw-bar-t.is-done { background: var(--b-ok-tint); color: var(--b-ok); box-shadow: none; }
.aw-bar-t.is-run { box-shadow: inset 0 0 0 1.5px var(--b-text-1); }
.aw-bar-t.is-ask { box-shadow: inset 0 0 0 1.5px var(--b-text-1); background: var(--b-bg-card); }
.aw-bar-t.is-risk { box-shadow: inset 0 0 0 1.5px var(--b-danger); color: var(--b-danger); }
.aw-bar-t.is-ai { background-image: repeating-linear-gradient(135deg, transparent 0 7px, var(--b-neutral-tint) 7px 8px); }
.aw-bar-t.is-ghost { background: transparent; border: 1.5px dashed var(--b-line-strong); box-shadow: none; color: var(--b-text-3); }
.aw-bar-t.is-ongoing { border-radius: 14px; }
.aw-bar-t.is-new { animation: m-materialize var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-bar-t.is-cancel { opacity: .45; text-decoration: line-through; }
.aw-today { position: absolute; top: 30px; bottom: 0; width: 2px; margin-left: -1px; background: var(--b-text-1); z-index: 2; }
.aw-today span { position: absolute; bottom: 6px; left: 6px; height: 20px; padding: 0 8px; border-radius: 10px; display: inline-flex; align-items: center; font-size: 11px; font-weight: 700; color: var(--b-bg-card); background: var(--b-text-1); white-space: nowrap; }
.aw-goal-mark { position: absolute; top: 56px; bottom: 0; width: 0; border-left: 1.5px solid var(--b-ok-fill); }
.aw-goal-mark span { position: absolute; bottom: 6px; right: 6px; font-size: 11px; font-weight: 700; color: var(--b-ok); white-space: nowrap; }

/* ── 看板视图 ── */
.aw-board { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--b-sp-3); align-items: start; }
.aw-col { border-radius: var(--b-radius-inner); background: var(--b-bg-inset); padding: var(--b-sp-3); display: grid; gap: var(--b-sp-2); min-height: 220px; align-content: start; }
.aw-col-h { display: flex; align-items: center; justify-content: space-between; font-size: var(--b-fs-12); font-weight: 700; color: var(--b-text-3); letter-spacing: var(--b-ls-cap); padding: 2px 2px 4px; }
.aw-col-h b { font-family: var(--b-font-num); color: var(--b-text-2); }
.aw-col.is-ask { box-shadow: inset 0 0 0 1.5px var(--b-text-1); }
.aw-kc { position: relative; display: grid; gap: 6px; padding: 10px; border-radius: 10px; text-align: left; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); font-size: var(--b-fs-13); }
.aw-kc:hover { box-shadow: inset 0 0 0 1px var(--b-text-3); }
.aw-kc b { font-size: var(--b-fs-13); line-height: 1.35; }
.aw-kc .aw-node-top { font-size: 11px; }
.aw-kc.is-ai { box-shadow: inset 0 0 0 1.5px var(--b-text-1); }
.aw-kc.is-done b { color: var(--b-text-2); }
.aw-kc.is-new { animation: m-materialize var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-kc .aw-ai-badge { right: -6px; top: -8px; height: 18px; font-size: 10px; }
.aw-kc .aw-ai-badge img { width: 14px; height: 14px; }
.aw-col-empty { font-size: var(--b-fs-12); color: var(--b-text-disabled); padding: var(--b-sp-2); }

/* ── 改动记录抽屉：功能层，玻璃 ── */
.aw-log { position: absolute; top: var(--b-sp-4); right: var(--b-sp-4); bottom: var(--b-sp-4); width: 360px; z-index: 5; display: flex; }
.aw-log-glass { position: absolute; inset: 0; border-radius: var(--b-radius-sheet); background: var(--b-glass-bg-thick); -webkit-backdrop-filter: blur(var(--b-glass-blur-thick)) saturate(var(--b-glass-saturate)); backdrop-filter: blur(var(--b-glass-blur-thick)) saturate(var(--b-glass-saturate)); box-shadow: var(--b-glass-shadow-thick); animation: m-materialize var(--m-smooth-t) var(--m-spring-smooth) both; }
.aw-log-body { position: relative; z-index: 2; flex: 1; display: flex; flex-direction: column; padding: var(--b-sp-5); min-height: 0; animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) 80ms both; }
.aw-log-head { display: flex; align-items: center; justify-content: space-between; }
.aw-log-note { margin-top: var(--b-sp-1); font-size: var(--b-fs-12); color: var(--b-text-3); line-height: 1.6; }
.aw-log-list { margin-top: var(--b-sp-3); overflow: auto; display: grid; align-content: start; gap: 0; min-height: 0; }
.aw-log-list li { display: grid; grid-template-columns: 28px 1fr; gap: var(--b-sp-3); padding: var(--b-sp-3) 0; border-top: 1px solid var(--b-line); }
.aw-log-list li:first-child { border-top: 0; }
.aw-log-who { width: 28px; height: 28px; border-radius: 50%; overflow: hidden; display: grid; place-content: center; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); font-size: 11px; font-weight: 700; }
.aw-log-who img { width: 26px; height: 26px; }
.aw-log-who.is-you { background: var(--b-text-1); color: var(--b-bg-card); box-shadow: none; }
.aw-log-main { display: grid; gap: 3px; min-width: 0; }
.aw-log-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; font-size: var(--b-fs-13); color: var(--b-text-1); }
.aw-log-line b { font-weight: 600; }
.aw-log-why { font-size: var(--b-fs-12); color: var(--b-text-3); line-height: 1.55; }
.aw-log-meta { display: flex; align-items: center; gap: var(--b-sp-2); font-size: 11px; color: var(--b-text-3); }
.aw-log-meta .link-btn { font-size: 11px; font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.aw-log-list li.is-new { animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) both; }

/* ── 团团栏：功能层，玻璃；右侧常驻 ── */
.aw-tt { position: relative; min-height: 0; border-radius: var(--b-radius-sheet); display: flex; flex-direction: column; overflow: hidden; }
.aw-tt > * { position: relative; z-index: 2; }
.aw-tt-head { display: flex; align-items: center; gap: var(--b-sp-3); padding: var(--b-sp-4) var(--b-sp-5) var(--b-sp-3); border-bottom: 1px solid var(--b-glass-line); }
.aw-tt-head b { display: block; font-size: var(--b-fs-15); }
.aw-tt-head small { display: block; font-size: var(--b-fs-12); color: var(--b-text-3); }
.aw-tt-head .ap-avatar { animation: m-breathe 3s ease-in-out infinite; }
.aw-tt-thread { flex: 1; min-height: 0; overflow-y: auto; padding: var(--b-sp-4) var(--b-sp-4) var(--b-sp-5); scroll-behavior: smooth; }
.aw-tt-thread .aw-msg { max-width: 94%; }
.aw-tt-thread .aw-msg.is-wide { max-width: 100%; }
.aw-tt-thread .aw-bub { font-size: var(--b-fs-13); }
.aw-tt-thread .is-tt .aw-bub { background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); }
.aw-tt-thread .aw-posts { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.aw-tt-thread .aw-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.aw-composer { display: flex; gap: var(--b-sp-2); align-items: center; }
.aw-tt-composer { padding: var(--b-sp-3) var(--b-sp-4) var(--b-sp-4); border-top: 1px solid var(--b-glass-line); }
.aw-tt-composer .field { height: var(--b-control-h-sm); background: var(--b-bg-card); font-size: var(--b-fs-13); }

/* 飞行芯片：团团改动从团团栏飞向画布（签名装置） */
.aw-fly.glass { position: fixed; z-index: var(--b-z-toast); left: 0; top: 0; display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 14px 0 4px; border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); font-weight: 700; color: var(--b-text-1); pointer-events: none; white-space: nowrap; background: var(--b-glass-bg-thick); box-shadow: var(--b-glass-shadow-thick), 0 22px 44px -18px var(--b-glass-caustic); }
.aw-fly img { width: 22px; height: 22px; border-radius: 50%; }

/* ── 任务详情弹层（沿用 .sheet，居中） ── */
.aw-sheet { bottom: auto; top: 50%; translate: 0 -50%; max-height: calc(100vh - 120px); }
.aw-sheet .sheet-body { gap: var(--b-sp-4); }
.aw-ts-head { display: flex; gap: var(--b-sp-3); align-items: flex-start; justify-content: space-between; }
.aw-ts-head .sh-heading { margin-top: 4px; }
.aw-ts-why { padding: var(--b-sp-3) var(--b-sp-4); border-radius: var(--b-radius-inner); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line); font-size: var(--b-fs-13); color: var(--b-text-2); display: flex; gap: var(--b-sp-3); align-items: flex-start; }
.aw-ts-why img { width: 28px; height: 28px; }
.aw-ts-why b { color: var(--b-text-1); }
.aw-ts-hist { display: grid; gap: 0; }
.aw-ts-hist li { display: flex; gap: var(--b-sp-3); padding: 6px 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); color: var(--b-text-2); }
.aw-ts-hist li time { flex: none; width: 64px; color: var(--b-text-3); font-family: var(--b-font-num); }
.aw-sheet .aw-rows > div { padding: 9px 0; font-size: var(--b-fs-15); }
.aw-sheet .aw-rows dt { font-size: var(--b-fs-13); }

/* ── 结项报告：替换画布内容 ── */
.aw-report { display: grid; gap: var(--b-sp-5); }
.aw-report-hero { position: relative; display: grid; gap: var(--b-sp-2); padding: var(--b-sp-6); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
.aw-report-hero .kicker { color: var(--b-ok); }
.aw-report-hero .aw-h1 { font-size: var(--b-fs-28); }
.aw-report-hero p { color: var(--b-text-2); max-width: 56ch; }
.aw-report-hero .stamp { right: var(--b-sp-7); top: var(--b-sp-5); }
.aw-report-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--b-sp-3); }
.aw-report-kpis > div { padding: var(--b-sp-4); border-radius: var(--b-radius-inner); box-shadow: inset 0 0 0 1px var(--b-line); }
.aw-report-kpis dt { font-size: var(--b-fs-12); color: var(--b-text-3); letter-spacing: var(--b-ls-cap); }
.aw-report-kpis dd { font-family: var(--b-font-num); font-size: var(--b-fs-28); font-weight: 700; letter-spacing: var(--b-ls-title); line-height: 1.2; margin-top: 2px; }
.aw-report-kpis dd small { font-size: var(--b-fs-13); font-weight: 500; color: var(--b-text-3); margin-left: 4px; }
.aw-report-kpis p { font-size: var(--b-fs-12); color: var(--b-text-3); margin-top: 2px; }
.aw-report-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--b-sp-5); }
.aw-report-sec { display: grid; gap: var(--b-sp-2); align-content: start; }
.aw-report-sec .list { max-width: none; font-size: var(--b-fs-13); }
.aw-report-foot { display: flex; flex-wrap: wrap; gap: var(--b-sp-2); padding-top: var(--b-sp-4); border-top: 1px solid var(--b-line); }
.aw-chip-saved { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 12px; border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); font-weight: 600; background: var(--b-ok-tint); color: var(--b-ok); }

/* ── 演示控制条 ── */
.aw-demo { position: fixed; left: var(--b-sp-4); bottom: var(--b-sp-4); z-index: var(--b-z-bar); display: flex; align-items: center; gap: var(--b-sp-2); height: 36px; padding: 0 6px 0 6px; border-radius: var(--b-radius-pill); font-size: var(--b-fs-12); color: var(--b-text-2); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong), 0 8px 20px -10px var(--b-card-shadow-far); }
.aw-demo > * { white-space: nowrap; flex: none; }
.aw-demo-tag { height: 24px; padding: 0 8px; border-radius: 12px; display: inline-flex; align-items: center; font-weight: 700; background: var(--b-neutral-tint); color: var(--b-text-3); }
.aw-demo select { height: 26px; border: 0; border-radius: 13px; padding: 0 8px; font: inherit; color: var(--b-text-1); background: var(--b-neutral-tint); }
.aw-demo button { height: 26px; padding: 0 10px; border-radius: 13px; font-weight: 600; background: var(--b-neutral-tint); }
.aw-demo button:hover { background: var(--b-line-strong); }

/* ── 窄屏 ── */
@media (max-width: 1180px) {
  .aw-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: var(--b-sp-3); }
  .aw-metric:nth-child(3) { border-left: 0; }
  .aw-grid { grid-template-columns: minmax(0, 1fr) 360px; }
  .aw-board { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1100px) {
  .aw-intake { grid-template-columns: 1fr; }
  .aw-know { position: static; margin-top: 0; order: 1; }
  .aw-work:not([hidden]) { height: auto; min-height: 0; }
  .aw-grid { grid-template-columns: 1fr; }
  .aw-view { flex: none; overflow: visible; }
  .aw-tt { height: 640px; }
  .aw-proj-row { align-items: flex-start; }
}
@media (max-width: 640px) {
  .aw-wrap { width: calc(100% - 24px); }
  .topbar .nav { display: none; }
  .aw-hello { padding-top: var(--b-sp-5); }
  .aw-h1 { font-size: var(--b-fs-22); }
  .aw-metrics { grid-template-columns: 1fr 1fr; padding: var(--b-sp-3) 0; }
  .aw-metric { padding: 0 var(--b-sp-3); }
  .aw-metric dt, .aw-rule-sub { white-space: normal; }
  .aw-bar { width: 100%; }
  .aw-canvas { padding: var(--b-sp-4); }
  .aw-canvas-bar { flex-wrap: wrap; }
  .aw-canvas-bar .aw-h2 { width: 100%; }
  .aw-stages { overflow-x: auto; }
  .aw-stage { min-width: 150px; }
  .aw-board { grid-template-columns: 1fr; }
  .aw-log { left: var(--b-sp-2); right: var(--b-sp-2); width: auto; }
  .aw-summary-grid, .aw-report-cols { grid-template-columns: 1fr; }
  .aw-report-kpis { grid-template-columns: 1fr 1fr; }
  .aw-posts, .aw-tt-thread .aw-posts { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .aw-demo { left: 50%; translate: -50% 0; bottom: 6px; height: 32px; }
  .aw-demo [data-demo-step] { display: none; }
  .aw-metric dd { flex-wrap: wrap; white-space: normal; row-gap: 0; }
  .aw-report-hero .stamp { width: 72px; height: 72px; right: var(--b-sp-4); top: var(--b-sp-4); }
  .aw-report-hero { padding: var(--b-sp-5); padding-right: 96px; }
  .aw-dock { bottom: 50px; }
}

/* ── 降级 ── */
@media (prefers-reduced-motion: reduce) {
  .aw-hello-cat, .aw-tt-head .ap-avatar, .aw-frame-label .dot, .aw-st.is-run::before { animation: none; }
  .aw-edges path.is-new { animation: none; stroke-dashoffset: 0; }
}
@media (prefers-reduced-transparency: reduce) {
  .aw-log-glass { background: var(--b-glass-frost); -webkit-backdrop-filter: none; backdrop-filter: none; }
}

/* brand.js 自带的样张控制条与本页演示条重复（主题切换在顶栏），隐藏 */
body.aw > .sample-bar { display: none; }
