/* 观通 —— 多模型分步讨论 工作区样式 */

/* 观通徽标：顶部 hero 标题左侧的品牌图。
 * 徽标是朱墨抽象画（透明底），直接放到深色主题的深蓝底上会看不清，
 * 因此统一垫一块米白「纸底」圆角底板，深浅主题下都清晰、有辨识度。 */
.guantong-hero-intro {
  display: flex;
  align-items: center;
  gap: 24px;
}

.guantong-logo-plate {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 112px;
  height: 112px;
  border-radius: 26px;
  background:
    radial-gradient(circle at 30% 22%, rgba(255, 253, 248, 1), rgba(246, 235, 217, 0.96));
  border: 1px solid rgba(107, 68, 31, 0.16);
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.18);
}

.guantong-logo {
  width: 84px;
  height: 64px;
  object-fit: contain;
  display: block;
}

/* 深色主题下纸底板更亮、加一圈柔和描边，与深蓝底形成清晰层次。 */
html[data-ui-mode="neo"] .guantong-logo-plate {
  border-color: rgba(255, 255, 255, 0.4);
  box-shadow:
    0 16px 40px rgba(0, 0, 0, 0.5),
    0 0 0 1px rgba(255, 255, 255, 0.06);
}

.guantong-hero-text {
  min-width: 0;
}

/*
 * 观通工作区语义令牌适配（修复浅色文字叠浅色卡片的问题）。
 *
 * 本文件的卡片 / 气泡 / 边框大量使用 --panel-surface / --panel-inset /
 * --line-subtle / --text-muted 这几个变量，但全局样式并未定义它们，
 * 于是它们都回退到「浅色主题专用」的硬编码值：
 *   --panel-surface → #fff（纯白卡片）
 *   --line-subtle    → #e5e7eb（浅灰线）
 *   --text-muted     → #6b7280（冷灰）
 * 在「新版系统」深色主题下，正文文字（--text）是近白色，于是出现
 * “白卡片 + 白字”完全看不清的情况。
 *
 * 这里把上述令牌统一映射到随主题自适应的既有变量上：
 *   --panel-surface → var(--panel-strong)（暖色≈米白卡片 / 深色≈深色卡片）
 *   --panel-inset   → 取正文色 4% 透明（暖色≈轻微加深 / 深色≈轻微提亮，做出内凹感）
 *   --line-subtle   → var(--line)（随主题的细分割线）
 *   --text-muted    → var(--muted)（随主题的次要文字色）
 *
 * 强调色 --accent：暖色主题的 --accent 是浅金（#e7c48c，仅装饰用），
 * 观通把它用在文字 / 边框 / 头像上会导致对比不足，故在暖色下收敛为
 * 高对比的深棕（--brand-deep）；深色主题的 --accent（#52d0ff 浅青）
 * 在深底上对比足够，保留即可。
 */
.workspace-panel[data-panel="guantong-workspace"] {
  --panel-surface: var(--panel-strong, #fff);
  --panel-inset: color-mix(in srgb, var(--text, #333) 4%, transparent);
  --line-subtle: var(--line, #e5e7eb);
  --text-muted: var(--muted, #6b7280);
  --accent: var(--brand-deep, #7b3510);
}

html[data-ui-mode="neo"] .workspace-panel[data-panel="guantong-workspace"] {
  --accent: #52d0ff;
}

/* 深色主题下头像背景为浅青（--accent）或橙色（擂主 --warning），
   白字在这两种浅/中亮底色上对比不足，改为深色字保证可读。 */
html[data-ui-mode="neo"] .workspace-panel[data-panel="guantong-workspace"] .guantong-avatar {
  color: #04121a;
}

.guantong-layout-grid {
  grid-template-columns: minmax(320px, 440px) minmax(0, 1fr);
  align-items: start;
}

/* 左右两栏各自独立滚动：sticky 定位 + 视口高度上限 + 内部纵向滚动。 */
.guantong-layout-grid > .panel {
  position: sticky;
  top: 20px;
  align-self: start;
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
}

.guantong-form-head-left {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.guantong-collapse-btn {
  flex: 0 0 auto;
}

/* 左侧收起：左栏收窄为竖条，仅保留“展开”按钮。仅在桌面端生效。 */
@media (min-width: 981px) {
  .guantong-layout-grid.is-sidebar-collapsed {
    grid-template-columns: 48px minmax(0, 1fr);
  }

  .guantong-layout-grid.is-sidebar-collapsed > .panel-form {
    padding: 10px 6px;
    overflow: hidden;
  }

  .guantong-layout-grid.is-sidebar-collapsed > .panel-form .panel-head {
    flex-direction: column;
    align-items: center;
    gap: 8px;
  }

  .guantong-layout-grid.is-sidebar-collapsed > .panel-form .guantong-form-head-left {
    flex-direction: column;
    gap: 8px;
  }

  .guantong-layout-grid.is-sidebar-collapsed > .panel-form .guantong-form-head-left > h2,
  .guantong-layout-grid.is-sidebar-collapsed > .panel-form #guantong-add-model,
  .guantong-layout-grid.is-sidebar-collapsed > .panel-form > .form-grid,
  .guantong-layout-grid.is-sidebar-collapsed > .panel-form > .action-row {
    display: none;
  }

  .guantong-layout-grid.is-sidebar-collapsed > .panel-form .guantong-collapse-btn {
    writing-mode: vertical-rl;
    text-orientation: mixed;
  }
}

.guantong-archive-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}

.guantong-archive-row .history-select {
  flex: 1 1 auto;
  min-width: 220px;
}

.guantong-archive-row .archive-name-input {
  flex: 1 1 200px;
  min-width: 180px;
  max-width: 320px;
  padding: 6px 10px;
  border: 1px solid var(--line, #e5e7eb);
  border-radius: 8px;
  background: var(--panel-inset, #fff);
  color: var(--text, #333);
  font-size: 13px;
}

.guantong-archive-row .archive-name-input::placeholder {
  color: var(--muted, #6b7280);
}

.guantong-archive-row .archive-row-divider {
  width: 1px;
  height: 22px;
  background: var(--line, #e5e7eb);
  flex: 0 0 auto;
}

.guantong-model-slots {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.guantong-model-slots.is-overridden {
  opacity: 0.5;
  pointer-events: none;
}

.guantong-used-models-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.guantong-used-models-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-muted, #6b7280);
}

.guantong-used-models {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}

.guantong-used-model-card {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 100%;
  padding: 5px 10px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 999px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  color: var(--text, #1f2937);
  cursor: pointer;
  font-size: 12px;
  line-height: 1.4;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.guantong-used-model-card:hover {
  border-color: var(--accent, #2563eb);
}

.guantong-used-model-card.is-selected {
  border-color: var(--accent, #2563eb);
  background: color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
}

.guantong-used-model-check {
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  border: 1px solid var(--line-subtle, #e5e7eb);
  font-size: 10px;
  line-height: 1;
  color: var(--accent, #2563eb);
}

.guantong-used-model-card.is-selected .guantong-used-model-check {
  border-color: var(--accent, #2563eb);
  background: var(--accent, #2563eb);
  color: #fff;
}

.guantong-used-model-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 220px;
}

.guantong-used-model-provider {
  padding: 0 6px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--text-muted, #6b7280) 14%, transparent);
  color: var(--text-muted, #6b7280);
  font-size: 11px;
}

.guantong-used-model-count {
  color: var(--text-muted, #6b7280);
  font-size: 11px;
}

.guantong-model-slot {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 10px;
  padding: 12px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
}

.guantong-model-slot-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}

.guantong-model-slot-title {
  font-weight: 600;
  font-size: 14px;
}

.guantong-slot-head-actions {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}

/* 组长勾选：默认隐藏，仅在“文档协同处理”模式下显示 */
.guantong-leader-pick {
  display: none;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted, #6b7280);
  cursor: pointer;
  user-select: none;
}

.guantong-leader-pick input[type="radio"] {
  margin: 0;
  accent-color: var(--accent, #2563eb);
}

.is-document-mode .guantong-leader-pick {
  display: inline-flex;
}

.is-document-mode .guantong-leader-pick:has(input:checked) {
  color: var(--accent, #2563eb);
}

.guantong-model-slot .model-grid {
  margin: 0;
}

.guantong-output {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding-right: 4px;
}

.guantong-step-progress {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.guantong-step-indicator {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 999px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  background: transparent;
  font: inherit;
  font-size: 13px;
  line-height: 1.4;
  color: var(--text-muted, #6b7280);
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}

.guantong-step-indicator:hover {
  border-color: var(--accent, #2563eb);
  color: var(--accent, #2563eb);
}

.guantong-step-indicator:focus-visible {
  outline: 2px solid var(--accent, #2563eb);
  outline-offset: 2px;
}

.guantong-step-indicator.is-done {
  border-color: var(--accent, #2563eb);
  color: var(--accent, #2563eb);
  background: color-mix(in srgb, var(--accent, #2563eb) 8%, transparent);
}

.guantong-step-indicator.is-running {
  border-color: var(--warning, #d97706);
  color: var(--warning, #d97706);
  background: color-mix(in srgb, var(--warning, #d97706) 8%, transparent);
}

.guantong-step-indicator.is-error {
  border-color: var(--danger, #dc2626);
  color: var(--danger, #dc2626);
}

.guantong-step-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: currentColor;
  color: #fff;
  font-size: 12px;
  font-weight: 700;
}

.guantong-step {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  padding: 14px;
  background: var(--panel-surface, #fff);
  scroll-margin-top: 16px;
}

.guantong-step.is-running {
  border-color: var(--warning, #d97706);
}

.guantong-step.is-error {
  border-color: var(--danger, #dc2626);
}

.guantong-step-head {
  display: flex;
  align-items: center;
  gap: 10px;
}

.guantong-step-head h3 {
  margin: 0;
  font-size: 15px;
}

.guantong-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: var(--line-subtle, #e5e7eb);
  color: var(--text-muted, #6b7280);
  white-space: nowrap;
}

.guantong-badge-done {
  background: color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
  color: var(--accent, #2563eb);
}

.guantong-badge-running {
  background: color-mix(in srgb, var(--warning, #d97706) 14%, transparent);
  color: var(--warning, #d97706);
}

.guantong-badge-error {
  background: color-mix(in srgb, var(--danger, #dc2626) 12%, transparent);
  color: var(--danger, #dc2626);
}

.guantong-badge-leader {
  background: color-mix(in srgb, var(--warning, #d97706) 18%, transparent);
  color: var(--warning, #d97706);
}

.guantong-badge-member {
  background: color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
  color: var(--accent, #2563eb);
}

.guantong-badge-kind {
  background: var(--line-subtle, #e5e7eb);
  color: var(--text-muted, #6b7280);
  margin-left: 6px;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.guantong-step-desc {
  font-size: 13px;
  color: var(--text-muted, #6b7280);
  margin: 8px 0 10px;
}

.guantong-step-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.guantong-block {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 8px;
  padding: 10px 12px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
}

.guantong-block.is-error {
  border-color: var(--danger, #dc2626);
}

.guantong-block-head {
  font-size: 12px;
  font-weight: 700;
  color: var(--text-muted, #6b7280);
  margin-bottom: 6px;
}

.guantong-block-body {
  font-size: 14px;
  line-height: 1.65;
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-block-body a {
  color: var(--accent, #2563eb);
  text-decoration: underline;
  word-break: break-all;
}

.guantong-round {
  border-left: 3px solid var(--line-subtle, #e5e7eb);
  padding-left: 12px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.guantong-round-champion {
  font-weight: 700;
  font-size: 14px;
}

.guantong-round-label {
  margin: 4px 0 0;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-muted, #6b7280);
}

.guantong-vote-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.guantong-vote-pill {
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  font-size: 13px;
}

.guantong-vote-pill span {
  color: var(--text-muted, #6b7280);
}

.guantong-log summary {
  cursor: pointer;
  font-size: 13px;
  color: var(--text-muted, #6b7280);
}

.guantong-log pre {
  margin-top: 8px;
  max-height: 220px;
  overflow-y: auto;
  font-size: 12px;
}

/* ---- 圆桌讨论图 ---- */
.guantong-stage {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.guantong-stage-live {
  align-items: stretch;
}

.guantong-stage-row {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 16px;
}

.guantong-stage-main {
  flex: 1 1 auto;
  min-width: 0;
}

/* ---- 侧边：实时思考 · 发言 ---- */
.guantong-sidebar {
  flex: 0 0 320px;
  max-height: 560px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
}

.guantong-sidebar-title {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-muted, #6b7280);
  letter-spacing: 0.02em;
}

.guantong-side-item {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 10px;
  padding: 10px 11px;
  background: var(--panel-surface, #fff);
  display: flex;
  flex-direction: column;
  gap: 8px;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.guantong-side-item.is-active {
  border-color: var(--accent, #2563eb);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
}

.guantong-side-item.is-thinking {
  border-color: var(--warning, #d97706);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--warning, #d97706) 14%, transparent);
}

.guantong-side-item-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
}

.guantong-side-item-head strong {
  font-size: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.guantong-side-thinking,
.guantong-side-speech {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.guantong-side-thinking .guantong-box-body {
  max-height: 120px;
  overflow-y: auto;
  font-size: 13px;
}

.guantong-side-speech .guantong-box-body {
  max-height: 160px;
  overflow-y: auto;
  font-size: 13px;
}

.guantong-side-live {
  color: var(--warning, #d97706);
  font-weight: 600;
  font-size: 13px;
}

.guantong-round-table {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.guantong-table-stage {
  position: relative;
  width: 100%;
  max-width: 960px;
  height: 340px;
  margin: 0 auto;
  flex: none;
  container-type: inline-size;
}

.guantong-table-core {
  position: absolute;
  left: 50%;
  top: 20px;
  width: 300px;
  height: 300px;
  transform: translateX(-50%);
}

.guantong-table-bubbles {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}

.guantong-bubble {
  position: absolute;
  width: clamp(190px, calc(50% - 155px), 540px);
  max-height: 320px;
  overflow-y: auto;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  background: var(--panel-surface, #fff);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.14);
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  pointer-events: auto;
}

.guantong-bubble-left {
  left: 0;
  top: 50%;
  transform: translateY(-50%);
}

.guantong-bubble-right {
  right: 0;
  top: 50%;
  transform: translateY(-50%);
}

/* 气泡内思考与发言并排展示，充分利用宽度、避免纵向过长溢出。 */
.guantong-bubble-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  min-height: 0;
}

.guantong-bubble .guantong-thinking-box .guantong-box-body,
.guantong-bubble .guantong-output-box .guantong-box-body {
  max-height: 200px;
  overflow-y: auto;
}

/* 舞台较窄时改为上下堆叠（气泡自身 max-height + overflow 兜底，不溢出舞台）。 */
@container (max-width: 720px) {
  .guantong-bubble-body {
    grid-template-columns: 1fr;
  }
}

.guantong-table-disc {
  position: absolute;
  left: 150px;
  top: 150px;
  transform: translate(-50%, -50%);
  width: 130px;
  height: 130px;
  border-radius: 50%;
  border: 3px solid var(--line-subtle, #e5e7eb);
  background: radial-gradient(circle at 50% 32%, var(--panel-strong, #ffffff), var(--panel, #f3f4f6));
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted, #6b7280);
  font-weight: 700;
  font-size: 14px;
  box-shadow: inset 0 -8px 18px rgba(0, 0, 0, 0.07), 0 2px 8px rgba(0, 0, 0, 0.06);
}

.guantong-seat {
  position: absolute;
  transform: translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  width: 68px;
  transition: transform 0.2s ease;
}

.guantong-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--accent, #2563eb);
  color: #fff;
  font-weight: 700;
  font-size: 15px;
  border: 2px solid #fff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
  flex: none;
}

.guantong-avatar.sm {
  width: 26px;
  height: 26px;
  font-size: 12px;
  border-width: 1px;
}

.guantong-seat-name {
  font-size: 11px;
  font-weight: 600;
  text-align: center;
  line-height: 1.2;
  max-width: 118px;
  padding: 3px 9px;
  border-radius: 999px;
  background: var(--panel-surface, #fff);
  border: 1px solid var(--line-subtle, #e5e7eb);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.guantong-champion-box .guantong-seat-name {
  max-width: 150px;
  font-size: 12px;
  border-color: color-mix(in srgb, var(--warning, #d97706) 40%, transparent);
}

.guantong-seat.is-active {
  transform: translate(-50%, -50%) scale(1.12);
}

.guantong-seat.is-active .guantong-avatar {
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent, #2563eb) 25%, transparent), 0 3px 10px rgba(0, 0, 0, 0.22);
}

.guantong-seat.is-thinking .guantong-avatar {
  animation: guantong-pulse 1.3s ease-in-out infinite;
  background: var(--warning, #d97706);
}

@keyframes guantong-pulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--warning, #d97706) 55%, transparent); }
  50% { box-shadow: 0 0 0 9px color-mix(in srgb, var(--warning, #d97706) 0%, transparent); }
}

/* ---- 擂主框 ---- */
.guantong-champion-box {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  min-width: 132px;
  padding: 16px 16px 12px;
  border-radius: 14px;
  border: 2px solid var(--warning, #d97706);
  background: linear-gradient(180deg, color-mix(in srgb, var(--warning, #d97706) 15%, var(--panel-strong, #fff)), var(--panel-strong, #fff));
  box-shadow: 0 6px 18px color-mix(in srgb, var(--warning, #d97706) 22%, transparent);
  transition: box-shadow 0.2s ease;
}

.guantong-champion-box.is-active {
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--warning, #d97706) 22%, transparent), 0 8px 22px color-mix(in srgb, var(--warning, #d97706) 28%, transparent);
}

.guantong-champion-box .guantong-avatar {
  width: 48px;
  height: 48px;
  font-size: 18px;
  background: var(--warning, #d97706);
}

.guantong-champion-flag {
  position: absolute;
  top: -13px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--danger, #dc2626);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  padding: 2px 12px;
  border-radius: 999px;
  white-space: nowrap;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}

/* ---- 全文循环播放条 ---- */
.guantong-full-player {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding: 10px 12px;
  margin-bottom: 14px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 10px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
}

.guantong-loop-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text-muted, #6b7280);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}

.guantong-loop-toggle input {
  cursor: pointer;
}

.guantong-full-progress {
  font-size: 12px;
  color: var(--text-muted, #6b7280);
  margin-left: auto;
}

/* ---- 发言卡片（思考虚框 + 发言实框） ---- */
.guantong-player {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.guantong-player-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.guantong-player-progress {
  font-size: 12px;
  color: var(--text-muted, #6b7280);
  margin-left: auto;
}

.guantong-utterance-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.guantong-utterance {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 10px;
  padding: 10px 12px;
  background: var(--panel-surface, #fff);
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.guantong-utterance-head {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
}

.guantong-utterance-head strong {
  font-size: 14px;
}

.guantong-role-tag {
  font-size: 11px;
  padding: 1px 8px;
  border-radius: 999px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  color: var(--text-muted, #6b7280);
  border: 1px solid var(--line-subtle, #e5e7eb);
  white-space: nowrap;
}

.guantong-badge-champion {
  background: color-mix(in srgb, var(--warning, #d97706) 16%, transparent);
  color: var(--warning, #d97706);
}

.guantong-thinking-box {
  border: 2px dashed var(--text-muted, #9ca3af);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
}

.guantong-thinking-box.is-empty {
  opacity: 0.85;
}

.guantong-output-box {
  border: 2px solid var(--accent, #2563eb);
  border-radius: 8px;
  padding: 8px 10px;
  background: var(--panel-surface, #fff);
}

.guantong-output-box.is-error {
  border-color: var(--danger, #dc2626);
}

.guantong-box-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}

.guantong-thinking-box .guantong-box-label {
  color: var(--text-muted, #6b7280);
}

.guantong-output-box .guantong-box-label {
  color: var(--accent, #2563eb);
}

.guantong-output-box.is-error .guantong-box-label {
  color: var(--danger, #dc2626);
}

.guantong-box-body {
  font-size: 14px;
  line-height: 1.65;
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-thinking-box .guantong-box-body {
  max-height: 280px;
  overflow-y: auto;
}

.guantong-box-body a {
  color: var(--accent, #2563eb);
  text-decoration: underline;
  word-break: break-all;
}

.guantong-live-stream {
  margin: 10px 0;
  padding: 10px 12px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-left: 3px solid var(--accent, #7b3510);
  border-radius: 8px;
  background: var(--panel-strong, #fff);
}

.guantong-live-stream .guantong-live-body {
  max-height: 42vh;
  overflow-y: auto;
}

.guantong-live-hint {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  color: var(--warning, #d97706);
  font-weight: 600;
}

.guantong-thinking-dots {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: currentColor;
  animation: guantong-pulse 1.2s ease-in-out infinite;
  flex: none;
}

.guantong-full-record {
  border-top: 1px solid var(--line-subtle, #e5e7eb);
  padding-top: 10px;
}

.guantong-full-record summary {
  cursor: pointer;
  font-size: 13px;
  color: var(--text-muted, #6b7280);
}

.guantong-full-record .guantong-utterance {
  margin-top: 10px;
}

.guantong-export-menu {
  position: absolute;
  z-index: 30;
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 160px;
  padding: 8px;
  background: var(--panel-surface, #fff);
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}

.guantong-export-menu .ghost-btn {
  justify-content: flex-start;
  width: 100%;
}

@media (max-width: 1280px) {
  .guantong-stage-row {
    flex-direction: column;
  }

  .guantong-sidebar {
    flex: 1 1 auto;
    max-height: none;
  }
}

@media (max-width: 980px) {
  .guantong-layout-grid {
    grid-template-columns: 1fr;
  }

  .guantong-layout-grid > .panel {
    position: static;
    max-height: none;
    overflow: hidden;
    overscroll-behavior: auto;
  }

  .guantong-collapse-btn {
    display: none;
  }

  .guantong-stage {
    gap: 14px;
  }
}

/* ---- 发言摘要 + 展开全文 ---- */
.guantong-speech-summary {
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-speech-summary.hidden,
.guantong-speech-full.hidden {
  display: none;
}

.guantong-speech-full {
  margin-top: 8px;
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-expand-btn {
  display: inline-block;
  margin-top: 8px;
  padding: 3px 12px;
  font-size: 12px;
  line-height: 1.6;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 999px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  color: var(--accent, #2563eb);
  cursor: pointer;
}

.guantong-expand-btn:hover {
  border-color: var(--accent, #2563eb);
}

/* ---- 全屏工具栏 ---- */
.guantong-stage-toolbar {
  display: flex;
  justify-content: flex-end;
}

.guantong-fullscreen-toggle {
  font-size: 12px;
}

/* ---- 全屏（原生 Fullscreen API + CSS 兜底） ---- */
.guantong-stage:fullscreen,
.guantong-stage.guantong-fullscreen {
  width: 100%;
  height: 100%;
  overflow-y: auto;
  padding: 20px 28px 44px;
  background: var(--panel, #0b1020);
  box-sizing: border-box;
  border-radius: 0;
}

.guantong-stage.guantong-fullscreen {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
}

.guantong-stage:fullscreen .guantong-stage-toolbar,
.guantong-stage.guantong-fullscreen .guantong-stage-toolbar {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--panel, #0b1020);
  padding: 4px 0 8px;
}

.guantong-stage:fullscreen .guantong-table-stage,
.guantong-stage.guantong-fullscreen .guantong-table-stage {
  margin-bottom: 24px;
  max-width: none;
}

/* 全屏：圆桌两侧的思考/发言气泡自适应加宽，充分利用横向空间（保留适当边距）。 */
.guantong-stage:fullscreen .guantong-bubble,
.guantong-stage.guantong-fullscreen .guantong-bubble {
  width: clamp(260px, calc(50% - 155px), 880px);
}

.guantong-stage:fullscreen .guantong-thinking-box .guantong-box-body,
.guantong-stage.guantong-fullscreen .guantong-thinking-box .guantong-box-body {
  max-height: 68vh;
  overflow-y: auto;
}

.guantong-stage:fullscreen .guantong-output-box .guantong-box-body,
.guantong-stage.guantong-fullscreen .guantong-output-box .guantong-box-body {
  max-height: 68vh;
  overflow-y: auto;
}

/* 全屏：圆桌气泡本身仍受 max-height:320px 约束，若思考/发言框沿用 68vh 会被气泡底部
   裁剪。这里将气泡内的思考/发言框高度缩回到气泡内（仍可内部滚动），确保完整框可见。 */
.guantong-stage:fullscreen .guantong-bubble .guantong-thinking-box .guantong-box-body,
.guantong-stage.guantong-fullscreen .guantong-bubble .guantong-thinking-box .guantong-box-body,
.guantong-stage:fullscreen .guantong-bubble .guantong-output-box .guantong-box-body,
.guantong-stage.guantong-fullscreen .guantong-bubble .guantong-output-box .guantong-box-body {
  max-height: 220px;
}

.guantong-stage:fullscreen .guantong-full-record,
.guantong-stage.guantong-fullscreen .guantong-full-record {
  max-height: none;
}

/* 全屏自适应：当前发言以「思考 | 发言」双栏并排，尽可能多地展示内容。 */
.guantong-stage:fullscreen .guantong-player > .guantong-utterance,
.guantong-stage.guantong-fullscreen .guantong-player > .guantong-utterance {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}

.guantong-stage:fullscreen .guantong-player > .guantong-utterance > .guantong-utterance-head,
.guantong-stage.guantong-fullscreen .guantong-player > .guantong-utterance > .guantong-utterance-head {
  grid-column: 1 / -1;
}

@media (max-width: 760px) {
  .guantong-stage:fullscreen .guantong-player > .guantong-utterance,
  .guantong-stage.guantong-fullscreen .guantong-player > .guantong-utterance {
    grid-template-columns: 1fr;
  }
}

/* ---- 论坛「楼主」徽标 ---- */
.guantong-badge-op {
  background: color-mix(in srgb, var(--accent, #2563eb) 14%, transparent);
  color: var(--accent, #2563eb);
}

/* ---- 自由聊天模式：群聊房间 ---- */
.guantong-chat-room {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 14px;
  overflow: hidden;
  background: var(--panel-surface, #fff);
  display: flex;
  flex-direction: column;
  margin-bottom: 24px;
}

.guantong-chat-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  border-bottom: 1px solid var(--line-subtle, #e5e7eb);
  flex-wrap: wrap;
}

.guantong-chat-title {
  font-weight: 700;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.guantong-chat-title::before {
  content: '💬';
}

.guantong-chat-members {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}

.guantong-chat-member {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--text-muted, #6b7280);
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--panel, #fff);
  border: 1px solid var(--line-subtle, #e5e7eb);
}

.guantong-chat-messages {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px;
  max-height: 560px;
  overflow-y: auto;
  background:
    radial-gradient(circle at 18% 16%, color-mix(in srgb, var(--accent, #2563eb) 5%, transparent), transparent 46%),
    radial-gradient(circle at 82% 84%, color-mix(in srgb, var(--warning, #d97706) 5%, transparent), transparent 46%),
    var(--panel-inset, rgba(0, 0, 0, 0.01));
}

.guantong-chat-msg {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  max-width: 92%;
}

.guantong-chat-msg-left {
  align-self: flex-start;
}

.guantong-chat-msg-right {
  align-self: flex-end;
  flex-direction: row-reverse;
}

.guantong-chat-avatar {
  background: hsl(var(--chat-hue, 210) 68% 45%);
  flex: none;
  margin-top: 20px;
}

.guantong-chat-stack {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.guantong-chat-msg-right .guantong-chat-stack {
  align-items: flex-end;
}

.guantong-chat-sender {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text-muted, #6b7280);
}

.guantong-chat-sender strong {
  font-size: 13px;
  color: hsl(var(--chat-hue, 210) 55% 36%);
}

.guantong-chat-typing {
  font-size: 11px;
  color: var(--warning, #d97706);
}

.guantong-chat-bubble {
  position: relative;
  min-width: 0;
  max-width: 100%;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 14px;
  padding: 10px 14px;
  background: var(--panel-surface, #fff);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  font-size: 14px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}

/* 气泡小尾巴，指向说话人 */
.guantong-chat-msg-left .guantong-chat-bubble {
  border-top-left-radius: 4px;
}

.guantong-chat-msg-left .guantong-chat-bubble::after {
  content: '';
  position: absolute;
  left: -7px;
  top: 16px;
  border: 7px solid transparent;
  border-right-color: var(--panel-surface, #fff);
  border-left-width: 0;
}

.guantong-chat-msg-right .guantong-chat-bubble {
  border-top-right-radius: 4px;
}

.guantong-chat-msg-right .guantong-chat-bubble::after {
  content: '';
  position: absolute;
  right: -7px;
  top: 16px;
  border: 7px solid transparent;
  border-left-color: var(--panel-surface, #fff);
  border-right-width: 0;
}

.guantong-chat-msg.is-active .guantong-chat-bubble {
  border-color: var(--accent, #2563eb);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
}

.guantong-chat-msg.is-active .guantong-chat-avatar {
  box-shadow: 0 0 0 3px color-mix(in srgb, hsl(var(--chat-hue, 210) 68% 45%) 30%, transparent);
}

/* 全屏：聊天模式 —— 气泡区占满剩余高度，播放控制条贴底；隐藏与气泡重复的
   “当前发言”卡与“完整发言记录”，让全屏更像一个真正的群聊 App。 */
.guantong-stage:fullscreen .guantong-chat-room,
.guantong-stage.guantong-fullscreen .guantong-chat-room {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}

.guantong-stage:fullscreen .guantong-chat-messages,
.guantong-stage.guantong-fullscreen .guantong-chat-messages {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
}

.guantong-stage:fullscreen .guantong-chat-room ~ .guantong-player > .guantong-utterance,
.guantong-stage.guantong-fullscreen .guantong-chat-room ~ .guantong-player > .guantong-utterance,
.guantong-stage:fullscreen .guantong-chat-room ~ .guantong-player > .guantong-full-record,
.guantong-stage.guantong-fullscreen .guantong-chat-room ~ .guantong-player > .guantong-full-record {
  display: none;
}

/* ---- 群聊互动模式：类聊天工具界面 ---- */
.guantong-gc-room {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 14px;
  overflow: hidden;
  background: var(--panel-surface, #fff);
  display: flex;
  flex-direction: column;
}

.guantong-gc-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  border-bottom: 1px solid var(--line-subtle, #e5e7eb);
  flex-wrap: wrap;
}

.guantong-gc-title {
  font-weight: 700;
  font-size: 15px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.guantong-gc-title::before {
  content: '💬';
}

.guantong-gc-meta {
  font-size: 12px;
  color: var(--text-muted, #6b7280);
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--panel, #fff);
  border: 1px solid var(--line-subtle, #e5e7eb);
}

.guantong-gc-relax {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.guantong-gc-relax-btn {
  font-size: 12px;
  padding: 3px 10px;
  border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--accent, #2563eb) 35%, transparent);
  background: color-mix(in srgb, var(--accent, #2563eb) 8%, transparent);
  color: var(--accent, #2563eb);
  cursor: pointer;
  font-weight: 600;
  line-height: 1.4;
  transition: background 0.15s ease, color 0.15s ease;
}

.guantong-gc-relax-btn:hover {
  background: var(--accent, #2563eb);
  color: #fff;
}

.guantong-gc-members {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-left: auto;
}

.guantong-gc-member {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--text-muted, #6b7280);
}

.guantong-gc-avatar {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--gc-avatar-color, var(--accent, #2563eb));
  font-size: 17px;
  border: 2px solid #fff;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.16);
  flex: none;
  line-height: 1;
  overflow: hidden;
}

.guantong-gc-avatar-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
  display: block;
}

.guantong-gc-member .guantong-gc-avatar {
  width: 22px;
  height: 22px;
  font-size: 12px;
  border-width: 1px;
}

.guantong-gc-avatar.is-user {
  background: #0ea5e9;
}

.guantong-gc-messages {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px;
  max-height: 480px;
  overflow-y: auto;
  background:
    radial-gradient(circle at 18% 16%, color-mix(in srgb, var(--accent, #2563eb) 5%, transparent), transparent 46%),
    radial-gradient(circle at 82% 84%, color-mix(in srgb, var(--warning, #d97706) 5%, transparent), transparent 46%),
    var(--panel-inset, rgba(0, 0, 0, 0.01));
}

.guantong-gc-msg {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  max-width: 88%;
}

.guantong-gc-msg.is-model {
  align-self: flex-start;
}

.guantong-gc-msg.is-user {
  align-self: flex-end;
  flex-direction: row-reverse;
}

.guantong-gc-stack {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.guantong-gc-msg.is-user .guantong-gc-stack {
  align-items: flex-end;
}

.guantong-gc-sender {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted, #6b7280);
  display: flex;
  align-items: center;
  gap: 6px;
}

.guantong-gc-typing-dots {
  font-size: 11px;
  font-weight: 400;
  color: var(--warning, #d97706);
}

.guantong-gc-bubble {
  position: relative;
  min-width: 0;
  max-width: 100%;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 14px;
  padding: 10px 14px;
  background: var(--panel-surface, #fff);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
  font-size: 14px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-gc-msg.is-model .guantong-gc-bubble {
  border-top-left-radius: 4px;
}

.guantong-gc-msg.is-user .guantong-gc-bubble {
  border-top-right-radius: 4px;
  background: color-mix(in srgb, var(--accent, #2563eb) 10%, #fff);
  border-color: color-mix(in srgb, var(--accent, #2563eb) 30%, transparent);
}

.guantong-gc-content {
  word-break: break-word;
}

.guantong-gc-mention {
  color: var(--accent, #2563eb);
  font-weight: 600;
}

.guantong-gc-reasoning {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--text-muted, #6b7280);
}

.guantong-gc-reasoning summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--warning, #d97706);
}

.guantong-gc-reasoning-body {
  margin-top: 6px;
  padding: 8px 10px;
  border-radius: 8px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.03));
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-gc-live {
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-gc-live.is-thinking {
  color: var(--text-muted, #6b7280);
  font-size: 13px;
}

.guantong-gc-msg.is-typing .guantong-gc-bubble {
  border-style: dashed;
}

.guantong-gc-composer {
  display: flex;
  gap: 10px;
  padding: 12px 16px;
  border-top: 1px solid var(--line-subtle, #e5e7eb);
  background: var(--panel-surface, #fff);
}

.guantong-gc-composer input {
  flex: 1 1 auto;
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 10px;
  font-size: 14px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  color: var(--text, #111827);
}

.guantong-gc-composer input:focus {
  outline: none;
  border-color: var(--accent, #2563eb);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #2563eb) 14%, transparent);
}

.guantong-gc-composer input:disabled {
  opacity: 0.6;
}

/* ---- 论坛发言模式：论坛看板 ---- */
.guantong-forum-board {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 24px;
}

.guantong-forum-header {
  padding: 12px 16px;
  border-radius: 12px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  border: 1px solid var(--line-subtle, #e5e7eb);
  display: flex;
  align-items: center;
  gap: 8px;
}

.guantong-forum-title {
  font-weight: 700;
  font-size: 14px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.guantong-forum-title::before {
  content: '🧵';
}

.guantong-forum-avatar {
  width: 40px;
  height: 40px;
  flex: none;
}

.guantong-forum-post {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  padding: 12px 14px;
  background: var(--panel-surface, #fff);
}

.guantong-forum-post.is-active {
  border-color: var(--accent, #2563eb);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
}

.guantong-forum-post-head {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 8px;
}

.guantong-forum-post-meta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.guantong-forum-post-author {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.guantong-forum-post-author strong {
  font-size: 13px;
}

.guantong-forum-floor {
  font-size: 11px;
  color: var(--text-muted, #6b7280);
}

.guantong-forum-post-body {
  font-size: 14px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-forum-comments {
  margin-top: 12px;
  padding-left: 16px;
  border-left: 3px solid var(--line-subtle, #e5e7eb);
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.guantong-forum-comment {
  border-radius: 10px;
  padding: 10px 12px;
  background: var(--panel-inset, rgba(0, 0, 0, 0.02));
  border: 1px solid var(--line-subtle, #e5e7eb);
}

.guantong-forum-comment.is-active {
  border-color: var(--warning, #d97706);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--warning, #d97706) 14%, transparent);
}

.guantong-forum-comment-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
  flex-wrap: wrap;
}

.guantong-forum-comment-head strong {
  font-size: 12px;
}

.guantong-forum-comment-body {
  font-size: 13px;
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
}

.guantong-forum-response {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  padding: 12px 14px;
  background: var(--panel-surface, #fff);
}

.guantong-forum-response.is-active {
  border-color: var(--accent, #2563eb);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent, #2563eb) 12%, transparent);
}

.guantong-forum-response-head {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-bottom: 10px;
}

.guantong-forum-response-sec {
  margin-bottom: 10px;
}

.guantong-forum-response-sec:last-child {
  margin-bottom: 0;
}

.guantong-forum-response-body {
  font-size: 14px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
}

/* 全屏：论坛看板 —— 看板占满剩余高度并作为单一滚动区；隐藏与帖子重复的
   “当前发言”卡、“实时思考/发言流”与“完整发言记录”，让全屏更像一个真正的
   论坛帖子流（实时流体积巨大，会挤占看板高度甚至把看板压到 0 高）。 */
.guantong-stage:fullscreen .guantong-forum-board,
.guantong-stage.guantong-fullscreen .guantong-forum-board {
  flex: 1 1 0%;
  min-height: 0;
  overflow-y: auto;
  margin-bottom: 0;
  padding-right: 6px;
}

.guantong-stage:fullscreen .guantong-forum-board ~ .guantong-player > .guantong-utterance,
.guantong-stage.guantong-fullscreen .guantong-forum-board ~ .guantong-player > .guantong-utterance,
.guantong-stage:fullscreen .guantong-forum-board ~ .guantong-player > .guantong-full-record,
.guantong-stage.guantong-fullscreen .guantong-forum-board ~ .guantong-player > .guantong-full-record,
.guantong-stage:fullscreen .guantong-forum-board ~ .guantong-player > .guantong-live-stream,
.guantong-stage.guantong-fullscreen .guantong-forum-board ~ .guantong-player > .guantong-live-stream {
  display: none;
}

/* 全屏：帖子/评论/回应正文不再单独限高，交给看板统一滚动，避免双层滚动条遮挡内容。 */
.guantong-stage:fullscreen .guantong-forum-post-body,
.guantong-stage.guantong-fullscreen .guantong-forum-post-body,
.guantong-stage:fullscreen .guantong-forum-comment-body,
.guantong-stage.guantong-fullscreen .guantong-forum-comment-body,
.guantong-stage:fullscreen .guantong-forum-response-body,
.guantong-stage.guantong-fullscreen .guantong-forum-response-body {
  max-height: none;
  overflow: visible;
}

/* ---- 文档协同处理模式：表单文件区 + 文档信息头 + 结果看板 ---- */

.guantong-doc-file-state {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 4px;
}

.guantong-doc-file-name {
  font-size: 13px;
  color: var(--text-muted, #6b7280);
  word-break: break-all;
}

.guantong-doc-header {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  padding: 14px 16px;
  background: var(--panel-surface, #fff);
  margin-bottom: 4px;
}

.guantong-doc-meta {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.guantong-doc-meta-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  font-size: 14px;
  line-height: 1.5;
}

.guantong-doc-meta-label {
  flex: none;
  font-size: 12px;
  font-weight: 700;
  color: var(--text-muted, #6b7280);
  min-width: 6em;
}

.guantong-doc-meta-value {
  color: inherit;
  word-break: break-word;
  min-width: 0;
}

.guantong-doc-meta-dim {
  margin-left: 6px;
  font-size: 12px;
  color: var(--text-muted, #6b7280);
}

.guantong-doc-board {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 24px;
}

.guantong-doc-card {
  border: 1px solid var(--line-subtle, #e5e7eb);
  border-radius: 12px;
  padding: 12px 14px;
  background: var(--panel-surface, #fff);
}

.guantong-doc-card-leader {
  border-color: var(--warning, #d97706);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--warning, #d97706) 12%, transparent);
}

.guantong-doc-card-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.guantong-doc-card-head strong {
  font-size: 13px;
}

.guantong-doc-body {
  font-size: 14px;
  line-height: 1.65;
  white-space: pre-wrap;
  word-break: break-word;
}
