/* 工作台消息流：每条消息下方的意图提示（message-intent.js） */
.intent {
  position: relative; margin: 6px 3px 0; padding: 7px 10px 7px 11px; display: grid; gap: 3px;
  border-left:3px solid var(--border-strong); border-radius: 0 10px 10px 0; background:var(--surface-hover);
  color:var(--text-muted); font-size: 11.5px; line-height: 1.55; text-align: left;
  min-width: 380px; /* 短消息（如「hi」）下提示块也要能读 */
}
@media (max-width: 760px) { .intent { min-width: 0; } }
.message-row.outgoing .intent { border-left: 0; border-right:3px solid var(--border-strong); border-radius: 10px 0 0 10px; }
.intent-line { display: flex; gap: 7px; align-items: baseline; }
.intent-line > i { flex: 0 0 2.4em; font-style: normal; color:var(--text-muted); letter-spacing: .02em; }
.intent-line > span { overflow-wrap: anywhere; }
.intent-line small { display: block; color:var(--text-muted); font-size: 11px; }
.intent b { font-weight: 650; color:var(--text-primary); }
.intent-tag {
  position: absolute; top: -8px; right: 8px; padding: 1px 7px; border-radius: 99px;
  font-style: normal; font-size: 10.5px; font-weight: 650; color:var(--text-muted); background:var(--n-100);
}
.message-row.outgoing .intent-tag { right: auto; left: 8px; }
.intent.forwarded { border-color:var(--accent); background:var(--accent-soft-bg); }
.intent.forwarded .intent-tag { color:#fff; background:var(--accent); }
.intent.held { border-color:var(--a-600); background:var(--warning-bg); }
.intent.held .intent-tag { color:var(--warning-fg); background:var(--a-200); }
.intent.ignored { border-color:var(--border-strong); }
.intent.pending, .intent.none { color:var(--text-muted); background:var(--surface-hover); border-style: dashed; }
.intent.pending .intent-line > span::after { content: ''; display: inline-block; width: 6px; height: 6px; margin-left: 6px; border-radius: 50%; background:var(--n-300); animation: intent-blink 1.2s ease-in-out infinite; }
@keyframes intent-blink { 0%, 100% { opacity: .25; } 50% { opacity: 1; } }
.intent-reason > span { color:var(--warning-fg); }
.intent.ignored .intent-reason > span { color:var(--text-muted); }

/* 等合并窗口：系统正在有意地"等"，不是故障也不是没收到。
   琥珀色但用实线边框，与 held（故障/待人工）区分开；数字用等宽数位防止逐秒抖宽。 */
.intent.countdown { border-color:var(--a-600); background:var(--warning-bg); color:var(--warning-fg); }
.intent.countdown .intent-tag { color:var(--warning-fg); background:var(--a-200); }
.intent.countdown b { color:var(--warning-fg); }
.intent-countdown { font-variant-numeric: tabular-nums; font-weight: 700; }

/* 等图文配对（提问侧 10 秒窗口）。与工厂回复的琥珀色分开：
   两个窗口量级差一个数量级、语义不同，共用配色用户会以为是同一件事。 */
.intent.gathering { border-color:var(--b-600); background:var(--info-bg); color:var(--info-fg); }
.intent.gathering .intent-tag { color:var(--info-fg); background:var(--b-200); }
.intent.gathering b { color:var(--info-fg); }

/* —— 2026-09-24 一行小字改版（出处：用户「参考微信的排版方式，比较能够做到简单明了」）——
   系统没做动作的消息不再渲染判定（message-intent.js 直接返回空串），
   做了动作的只露 .intent-mini-line 这一行；上面的完整 .intent 四行块
   折进 .intent-mini-detail，点行内小字才展开。旧样式一条不删：
   它既是点开后的详情，也是下面「引用」块的底子。 */
.intent-mini { margin: 3px 3px 0; font-size: 11.5px; text-align: left; }
.message-row.outgoing .intent-mini { text-align: right; }
.intent-mini-line {
  display: inline-flex; align-items: baseline; gap: 6px; max-width: 100%;
  padding: 2px 8px; margin-left: -8px; border-radius: 10px;
  color: var(--text-muted); line-height: 1.5; cursor: pointer;
}
.message-row.outgoing .intent-mini-line { margin-left: 0; margin-right: -8px; }
.intent-mini-line:hover { background: var(--surface-hover); }
.intent-mini-text { overflow-wrap: anywhere; }
.intent-mini-text b { font-weight: 650; color: inherit; }
.intent-dot { flex: 0 0 auto; align-self: center; width: 6px; height: 6px; border-radius: 50%; background: var(--n-300); }
.intent-mini.ok .intent-dot { background: var(--accent); }
.intent-mini.wait .intent-dot { background: var(--a-600); }
.intent-mini.bad .intent-dot { background: var(--danger-solid); }
.intent-mini.bad .intent-mini-line { color: var(--danger-fg); }
/* 两个等待窗口沿用原有的语义配色：工厂回复琥珀、图文配对蓝，点会闪表示「正在等」 */
.intent-mini.countdown .intent-dot { background: var(--a-600); animation: intent-blink 1.2s ease-in-out infinite; }
.intent-mini.gathering .intent-dot { background: var(--b-600); animation: intent-blink 1.2s ease-in-out infinite; }
.intent-mini.countdown .intent-mini-line { color: var(--warning-fg); }
.intent-mini.gathering .intent-mini-line { color: var(--info-fg); }
.intent-more { flex: 0 0 auto; font-style: normal; font-size: 10.5px; color: var(--text-muted); opacity: 0; transition: opacity .15s; }
.intent-mini-line:hover .intent-more, .intent-mini.open .intent-more { opacity: .85; }
.intent-mini .intent-action { align-self: center; white-space: nowrap; }
.intent-mini-detail { display: none; }
.intent-mini.open .intent-mini-detail { display: block; }

/* 「引用」块：这条消息在回哪一条（app.js quoteBlock）。
   和意图块并排出现在同一条消息下面，所以必须一眼分得开——意图块讲的是
   「系统怎么判的」，这块讲的是「这条在回谁」。
   灰色被「系统 / 机器人消息」占着，蓝色被「等图文配对」占着，琥珀被两个等待窗口占着，
   绿色是「已转发」——第三种语义只能用第三种颜色，共用一种用户会以为是同一件事
   （出处：用户 2026-09-22「用颜色区分和这个系统机器人的消息」）。 */
.intent.quoted { border-color:var(--v-600); background:var(--v-50); color:var(--v-700); }
.intent.quoted .intent-tag { color:var(--v-700); background:var(--v-200); }
.intent.quoted .intent-line > i { color:var(--v-700); }
.intent.quoted b { color:var(--v-700); }
