/* 团团栏 .tt-sb：外框 thick 玻璃（头部、页签、输入框落在玻璃上），内芯是纸（对话与卡片）。
   宽高由宿主容器给（草稿页 .tt-dr-side、画布页各自的列），这里只铺满容器。 */
.tt-sb.glass {
  display: flex; flex-direction: column; width: 100%; height: 100%; min-height: 0;
  padding: var(--b-sp-2); 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);
}
.tt-sb-head { flex: none; display: flex; align-items: center; gap: var(--b-sp-3); min-height: 60px; padding: var(--b-sp-1) var(--b-sp-3) var(--b-sp-2) var(--b-sp-2); }
.tt-sb-cat { width: var(--b-mascot-panel); height: var(--b-mascot-panel); flex: none; object-fit: contain; filter: var(--b-mascot-shadow); }
.tt-sb-id { display: grid; gap: 2px; min-width: 0; }
.tt-sb-name { display: flex; align-items: baseline; gap: var(--b-sp-2); min-width: 0; }
.tt-sb-name strong { font-size: var(--b-fs-15); font-weight: 600; color: var(--b-text-1); flex: none; }
.tt-sb-ctx { font-size: var(--b-fs-13); color: var(--b-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tt-sb-status { font-size: var(--b-fs-12); line-height: 1.5; color: var(--b-text-3); min-height: 18px; }

.tt-sb-tabs { position: relative; z-index: 3; flex: none; display: flex; align-items: center; justify-content: space-between; gap: var(--b-sp-3); padding: 0 var(--b-sp-2) var(--b-sp-2); }
.tt-sb-tabs[hidden] { display: none; }
.tt-sb-seg { display: inline-flex; padding: 3px; gap: 2px; border-radius: var(--b-radius-pill); background: var(--b-neutral-tint); }
.tt-sb-seg button { height: 26px; padding: 0 var(--b-sp-3); border-radius: var(--b-radius-pill); font-size: var(--b-fs-13); font-weight: 500; color: var(--b-text-2); }
.tt-sb-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); }
.tt-sb-waiting { font-size: var(--b-fs-13); font-weight: 500; color: var(--b-text-1); padding: 0 var(--b-sp-1); }
.tt-sb-waiting:hover, .tt-sb-waiting[aria-expanded="true"] { text-decoration: underline; text-underline-offset: 3px; }
/* 「等你」清单：纸面小浮层，按 D.waitingItems 的顺序排，点一项定位 */
.tt-sb-wait { position: relative; }
.tt-sb-wait-pop { position: absolute; z-index: 5; top: calc(100% + 6px); right: 0; display: grid; width: 300px; max-height: 320px; overflow-y: auto; padding: 6px; border-radius: 14px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line), 0 1px 2px var(--b-card-shadow), 0 18px 36px -18px var(--b-card-shadow-far); animation: m-rise var(--m-snappy-t) var(--m-spring-snappy) backwards; }
.tt-sb-wait-pop button { padding: 8px 10px; border-radius: 10px; font-size: var(--b-fs-13); line-height: 1.5; color: var(--b-text-1); text-align: left; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tt-sb-wait-pop button:hover { background: var(--b-neutral-tint); }
@media (prefers-reduced-motion: reduce) { .tt-sb-wait-pop { animation: none; } }

/* 跨天分隔条：与改动页签的日期行同款，右侧一根发丝线 */
.tt-sb-day { display: flex; align-items: center; gap: var(--b-sp-2); margin-top: var(--b-sp-2); font-size: var(--b-fs-12); line-height: 18px; font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); }
.tt-sb-day::after { content: ""; flex: 1; height: 1px; background: var(--b-line); }
.tt-sb-today { font-weight: 500; letter-spacing: 0; color: var(--b-text-2); }

/* 纸芯：对话、引用与输入框同在一张纸上，玻璃只围一圈 */
.tt-sb-paper { flex: 1; min-height: 0; display: flex; flex-direction: column; border-radius: 16px; background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line), inset 0 1px 0 var(--b-card-edge); overflow: hidden; }
.tt-sb-scroll { flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; padding: var(--b-sp-5) var(--b-sp-5) var(--b-sp-4); scrollbar-width: thin; scrollbar-color: var(--b-line-strong) transparent; }
.tt-sb-list { display: flex; flex-direction: column; gap: var(--b-sp-4); }
.tt-sb-msg { font-size: var(--b-fs-15); line-height: var(--b-lh-body); color: var(--b-text-1); overflow-wrap: anywhere; text-wrap: pretty; }
.tt-sb-msg.is-you { align-self: flex-end; max-width: 92%; padding: var(--b-sp-2) var(--b-sp-4); border-radius: var(--b-radius-inner); background: var(--b-bg-inset); }
/* 团团的话：分句整体换行，数字与单位不拆（js/sidebar.js 的 clauses） */
.tt-sb-cl { display: inline-block; max-width: 100%; }
.tt-sb-nb { white-space: nowrap; }
.tt-sb-list > .tt-sb-msg.is-tt + .tt-sb-msg.is-tt { margin-top: calc(var(--b-sp-2) * -1); }
.tt-sb :is(button, a, [tabindex]):focus-visible { outline: 2px solid var(--b-focus); outline-offset: 2px; }
.tt-sb-in { animation: m-rise var(--m-smooth-t) var(--m-spring-smooth) backwards; animation-delay: var(--tt-in-d, 0ms); }

.tt-sb-ref { flex: none; display: flex; align-items: center; gap: var(--b-sp-2); margin: 0 var(--b-sp-3); padding: var(--b-sp-1) var(--b-sp-2) var(--b-sp-1) var(--b-sp-3); border-radius: var(--b-radius-chip); background: var(--b-bg-inset); font-size: var(--b-fs-13); color: var(--b-text-2); }
.tt-sb-ref[hidden] { display: none; }
.tt-sb-ref span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tt-sb-ref button { width: 24px; height: 24px; border-radius: var(--b-radius-pill); color: var(--b-text-3); }
.tt-sb-ref button:hover { background: var(--b-neutral-tint); color: var(--b-text-1); }

.tt-sb-composer { flex: none; display: flex; align-items: flex-end; gap: var(--b-sp-1); margin: var(--b-sp-2) var(--b-sp-3) var(--b-sp-3); padding: var(--b-sp-1) var(--b-sp-1) var(--b-sp-1) var(--b-sp-4); border-radius: var(--b-radius-control); background: var(--b-bg-input); box-shadow: inset 0 0 0 1px var(--b-line); transition: box-shadow var(--m-snappy-t) var(--m-spring-snappy); }
.tt-sb-composer:focus-within { box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.tt-sb-input { flex: 1; min-width: 0; min-height: 32px; max-height: 120px; padding: 6px 0; border: 0; background: transparent; resize: none; font-size: var(--b-fs-15); line-height: 1.4; color: var(--b-text-1); }
.tt-sb-input::placeholder { color: var(--b-text-3); }
.tt-sb-input:focus, .tt-sb-input:focus-visible { outline: none; box-shadow: none; }
.tt-sb-input:disabled { cursor: not-allowed; }
.tt-sb-send.icon-btn { width: 32px; height: 32px; flex: none; border-radius: 10px; color: var(--b-text-2); }
.tt-sb-send.icon-btn svg { width: 18px; height: 18px; stroke-width: 1.8; }
.tt-sb-send:disabled { color: var(--b-text-disabled); background: none; }

/* 团团栏里的卡片：纸上的次级面，不加玻璃（taste R7、R8） */
.tt-sb-card { border-radius: 14px; background: var(--b-bg-inset); padding: var(--b-sp-4); font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-2); }
.tt-sb-note { font-size: var(--b-fs-12); line-height: 1.5; color: var(--b-text-3); }
.btn.is-demoted { color: var(--b-text-1); background: transparent; box-shadow: inset 0 0 0 1px var(--b-line-strong); }

/* 问题与选项：问题是团团的一句话，选项是纸上的描边按钮；推荐项墨色描边＋「推荐」 */
.tt-sb-q { display: grid; gap: var(--b-sp-3); }
.tt-sb-opts { display: flex; flex-wrap: wrap; gap: var(--b-sp-2); }
.tt-sb-opt { display: inline-flex; align-items: baseline; gap: var(--b-sp-2); min-height: 36px; padding: 7px var(--b-sp-3); border-radius: var(--b-radius-control); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong); font-size: var(--b-fs-13); line-height: 1.5; color: var(--b-text-1); text-align: left; transition: background-color var(--m-snappy-t) var(--m-spring-snappy), transform var(--m-snappy-t) var(--m-spring-snappy); }
.tt-sb-opt:hover { background: var(--b-neutral-tint); }
.tt-sb-opt:active { transform: scale(var(--m-press)); }
.tt-sb-opt.is-rec { box-shadow: inset 0 0 0 1.5px var(--b-text-1); }
.tt-sb-opt small { font-size: var(--b-fs-12); color: var(--b-text-3); }
.tt-sb-opt.has-why { flex-direction: column; align-items: flex-start; gap: 2px; padding-block: 8px 9px; }
.tt-sb-opt .tt-sb-opt-why { line-height: 1.45; }

/* 离开项目页时缩回悬浮图标的那一份影子 */
.tt-sb-ghost { position: fixed; z-index: var(--b-z-fab); margin: 0; pointer-events: none; }

/* 摘要卡「从闲聊带过来的」：标签—值加发丝线，不配图标（taste R19）；已放进草稿的那行转浅色 */
.tt-sb-summary { padding: var(--b-sp-3) var(--b-sp-4) 14px; }
.tt-sb-sum-head { display: flex; align-items: center; gap: var(--b-sp-2); width: 100%; min-height: 24px; font-size: var(--b-fs-12); font-weight: 600; letter-spacing: var(--b-ls-cap); color: var(--b-text-3); text-align: left; }
.tt-sb-sum-head svg { width: 16px; height: 16px; margin-left: auto; transition: transform var(--m-snappy-t) var(--m-spring-snappy); }
.tt-sb-sum-head[aria-expanded="false"] svg { transform: rotate(-90deg); }
.tt-sb-sum-head:hover { color: var(--b-text-1); }
.tt-sb-sum-count { font-weight: 400; letter-spacing: 0; }
.tt-sb-sum-lines { display: grid; margin: var(--b-sp-2) 0 0; }
.tt-sb-sum-lines > div { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: var(--b-sp-2); padding: 6px 0; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); line-height: 1.6; }
.tt-sb-sum-lines > div.is-bare { grid-template-columns: minmax(0, 1fr); }
.tt-sb-sum-lines dt { color: var(--b-text-3); }
.tt-sb-sum-lines dd { margin: 0; color: var(--b-text-1); transition: color 400ms var(--m-ease-out); }
.tt-sb-sum-lines .is-placed dd { color: var(--b-text-3); }
.tt-sb-sum-src { margin-top: var(--b-sp-2); font-size: var(--b-fs-13); font-weight: 500; color: var(--b-text-2); }
.tt-sb-sum-src:hover { color: var(--b-text-1); }
.tt-sb-quote { display: grid; gap: 6px; margin: var(--b-sp-2) 0 0; padding: var(--b-sp-2) 0 0; list-style: none; border-top: 1px solid var(--b-line); font-size: var(--b-fs-13); line-height: 1.6; color: var(--b-text-2); }
.tt-sb-quote b { margin-right: var(--b-sp-2); font-weight: 600; color: var(--b-text-3); }

/* 「四项都齐了」：推进项目的那一张，后果一行在按钮上方 */
.tt-sb-ready { display: grid; gap: var(--b-sp-2); padding: var(--b-sp-4); background: var(--b-bg-card); box-shadow: inset 0 0 0 1px var(--b-line-strong); }
.tt-sb-ready-t { font-size: var(--b-fs-15); font-weight: 600; line-height: 1.5; color: var(--b-text-1); }
.tt-sb-ready .btn { margin-top: var(--b-sp-1); }
