/* ============================================
   造夢師 AI · 浅色版样式
   配色参考：只此青绿 / 千里江山图
   ============================================ */

/* —— 色彩令牌 · 昼色（宣纸卷轴）—— */
.theme-light {
  --paper:         #f3ede0;   /* 宣纸底 */
  --paper-deep:    #ebe4d3;   /* 深一档宣纸 */
  --paper-soft:    #f8f4ea;   /* 浅一档高光 */

  --ink:           #2f4858;   /* 主墨/黛青 */
  --ink-soft:      #5a6b78;   /* 次墨 */
  --ink-faint:     #8a8f95;   /* 远墨 */

  --mineral-green: #7ba696;   /* 石绿 */
  --green-deep:    #5e8a7a;   /* 深石绿 */
  --mineral-blue:  #5a7a8c;   /* 石青 */
  --blue-deep:     #44627a;   /* 深石青 */

  --vermilion:     #9d2933;   /* 朱砂（仅印章用）*/
  --mountain-gray: #a8a298;   /* 远山灰 */
  --gold:          #a08754;   /* 鎏金（极少）*/

  /* Claude-borrowed：思考与输出 */
  --thinking-bg:   #ebe4d3;
  --thinking-text: #6b6558;
  --output-bg:     #ffffff;
  --output-border: #e5dfd2;
}

/* —— 色彩令牌 · 夜色（墨夜卷轴）—— */
.theme-dark {
  --paper:         #141822;   /* 墨夜底 */
  --paper-deep:    #0d1018;   /* 更深 */
  --paper-soft:    #1c2030;   /* 高光层 */

  --ink:           #e8e2d0;   /* 月白文字 */
  --ink-soft:      #aab0b8;
  --ink-faint:     #6a7280;

  --mineral-green: #7ea99a;
  --green-deep:    #5e8a7a;
  --mineral-blue:  #6b8ca0;
  --blue-deep:     #44627a;

  --vermilion:     #b85450;
  --mountain-gray: #5a5f68;
  --gold:          #b39768;

  --thinking-bg:   #1c2030;
  --thinking-text: #9aa0a8;
  --output-bg:     #1a1e2a;
  --output-border: #2a2f3e;
}

/* —— 全局复位 —— */
* { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  height: 100%;
  font-family: "Noto Sans SC", -apple-system, "PingFang SC", sans-serif;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* 衬线英文（端庄字体）*/
.en, .en-title, .slogan-en, .enter-en {
  font-family: "EB Garamond", "Cormorant Garamond", Georgia, serif;
  letter-spacing: 0.22em;
}

/* 中文衬线（标题宋体）*/
.cn-title, .slogan-cn {
  font-family: "Noto Serif SC", "Songti SC", "STSong", serif;
}

/* ============================================
   落地页 · Landing
   ============================================ */
.landing {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 80px 20px;
  overflow: hidden;
}

/* 背景墨晕"梦"字 */
.ink-dream {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 0;
  opacity: 0.08;
  animation: ink-fade-in 2s ease-out;
}
.ink-dream svg {
  width: min(85vmin, 720px);
  height: min(85vmin, 720px);
}
@keyframes ink-fade-in {
  from { opacity: 0; transform: scale(0.9); }
  to   { opacity: 0.08; transform: scale(1); }
}

/* 主标题区 */
.title-block {
  position: relative;
  z-index: 2;
  text-align: center;
  margin-bottom: 64px;
  animation: title-rise 1.4s ease-out 0.3s both;
}
@keyframes title-rise {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

.cn-title {
  font-size: clamp(56px, 9vw, 96px);
  font-weight: 500;
  letter-spacing: 0.15em;
  color: var(--ink);
  line-height: 1.1;
  white-space: nowrap;
}
.cn-title .cn-suffix {
  display: inline-block;
  margin-left: 0.28em;
  font-family: "EB Garamond", Georgia, serif;
  font-size: 0.34em;
  font-weight: 400;
  letter-spacing: 0.3em;
  color: var(--mineral-blue);
  vertical-align: 0.55em;
  white-space: nowrap;
}

/* 中英分隔线 · 极简点线点 */
.divider {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin: 24px auto 16px;
}
.divider .dot {
  width: 4px; height: 4px;
  background: var(--ink-faint);
  border-radius: 50%;
}
.divider .line {
  width: 80px; height: 1px;
  background: var(--ink-faint);
}

.en-title {
  font-size: 14px;
  font-weight: 400;
  color: var(--ink-soft);
  letter-spacing: 0.35em;
  margin-bottom: 56px;
}

.slogan-cn {
  font-size: clamp(20px, 2.4vw, 26px);
  font-weight: 400;
  color: var(--ink);
  letter-spacing: 0.2em;
  margin-bottom: 14px;
}
.slogan-en {
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.3em;
}

/* 入梦按钮 */
.enter-btn {
  position: relative;
  z-index: 2;
  padding: 16px 56px;
  background: transparent;
  border: 1px solid var(--ink-soft);
  color: var(--ink);
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  transition: all 0.4s cubic-bezier(0.2,0.7,0.2,1);
  animation: title-rise 1.4s ease-out 0.8s both;
}
.enter-btn:hover {
  background: var(--ink);
  color: var(--paper);
  letter-spacing: 0.05em;
}
.enter-btn .enter-cn {
  font-family: "Noto Serif SC", serif;
  font-size: 18px;
  letter-spacing: 0.4em;
  padding-left: 0.4em;
}
.enter-btn .enter-en {
  font-size: 10px;
  letter-spacing: 0.35em;
  opacity: 0.7;
}

.landing-actions {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  animation: title-rise 1.4s ease-out 0.8s both;
}
.landing-actions .enter-btn {
  animation: none;
}
.plans-link {
  min-height: 56px;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 12px 24px;
  color: var(--ink-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 48%, transparent);
  text-decoration: none;
  transition: all 0.28s ease;
}
.plans-link:hover {
  color: var(--paper);
  background: var(--mineral-blue);
  border-color: var(--mineral-blue);
}
.plans-link span:first-child {
  font-family: "Noto Serif SC", serif;
  font-size: 15px;
  letter-spacing: 0.18em;
}
.plans-link .en {
  font-size: 10px;
  opacity: 0.72;
}

/* 落款印章 · 朱砂小篆 */
.seal {
  position: absolute;
  bottom: 48px;
  right: 56px;
  z-index: 2;
  width: 64px; height: 64px;
  border: 1.5px solid var(--vermilion);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--vermilion);
  background: rgba(157, 41, 51, 0.04);
  transform: rotate(-3deg);
  animation: title-rise 1.4s ease-out 1.2s both;
}
.seal-svg {
  width: 80%;
  height: 80%;
  color: var(--vermilion);
}
.seal::before {
  content: "";
  position: absolute;
  inset: 4px;
  border: 0.5px solid var(--vermilion);
  opacity: 0.6;
}

/* 主题切换 · 左下角小钮 */
.theme-toggle {
  position: fixed;
  bottom: 32px;
  left: 32px;
  z-index: 10;
  width: 40px; height: 40px;
  background: transparent;
  border: 1px solid var(--ink-faint);
  border-radius: 50%;
  cursor: pointer;
  color: var(--ink-soft);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  transition: all 0.4s ease;
}
.theme-toggle:hover {
  border-color: var(--ink);
  color: var(--ink);
  transform: rotate(15deg);
}

/* 深色下墨晕梦字提亮 */
.theme-dark .ink-dream {
  opacity: 0.06;
}
.theme-dark .ink-dream text {
  fill: var(--ink) !important;
}

/* === Dashboard === */
.dashboard-body {
  min-height: 100%;
}

.dashboard-topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 clamp(20px, 5vw, 64px);
  background: color-mix(in srgb, var(--paper) 88%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  backdrop-filter: blur(18px);
}

.dashboard-logo {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  color: var(--ink);
  text-decoration: none;
}
.dashboard-logo-row { display: inline-flex; align-items: baseline; gap: 10px; }
.dashboard-logo-sub {
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.04em;
  line-height: 1.3;
  font-family: "Noto Serif SC","Songti SC",serif;
}

.dashboard-logo-cn {
  font-size: 28px;
  letter-spacing: 0.16em;
  line-height: 1;
  white-space: nowrap;
}
.dashboard-logo-cn .cn-suffix {
  font-family: "EB Garamond", Georgia, serif;
  font-size: 0.42em;
  letter-spacing: 0.3em;
  color: var(--mineral-blue);
  margin-left: 0.32em;
  vertical-align: 0.45em;
  font-weight: 400;
}

.dashboard-logo-en {
  font-size: 12px;
  color: var(--mineral-blue);
}
/* DREAM-WEB v3.1-UX8 · 充值页 logo 下加 slogan */
.dashboard-logo-slogan {
  margin-top: 4px;
  font-size: 10px;
  letter-spacing: 0.32em;
  color: var(--ink-faint);
  font-family: "Noto Serif SC", "Songti SC", serif;
}

.topbar-link {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  padding: 0 14px;
  color: var(--ink-soft);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 34%, transparent);
  border-radius: 999px;
  text-decoration: none;
  font-size: 13px;
  transition: border-color 0.2s ease, color 0.2s ease, background 0.2s ease;
}
.topbar-link:hover {
  color: var(--ink);
  background: var(--paper-soft);
  border-color: var(--mineral-blue);
}
.topbar-refresh {
  position: relative;
  z-index: 5; /* topbar-refresh */
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-soft);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 34%, transparent);
  border-radius: 50%;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}
.topbar-refresh:hover {
  color: var(--ink);
  border-color: var(--mineral-blue);
}
.topbar-refresh svg { pointer-events: none; }
.topbar-refresh:active { transform: scale(0.9); }
.topbar-refresh.is-spinning {
  transform: rotate(360deg);
  transition: transform 0.6s ease;
}

.command-open {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  min-height: 34px;
  padding: 0 14px;
  color: var(--ink-soft);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 36%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.command-open:hover {
  border-color: var(--mineral-blue);
  background: var(--paper-soft);
  transform: translate(-50%, -1px);
}
.command-open span {
  margin-right: 8px;
  font-family: "EB Garamond", Georgia, serif;
  letter-spacing: 0.08em;
  color: var(--ink);
}

.dashboard-actions {
  display: flex;
  align-items: center;
  gap: 14px;
  position: relative;
}

.dashboard-theme-toggle,
.lang-toggle,
.help-button,
.notice-button,
.settings-button,
.avatar-button,
.primary-dream-button,
.drawer-close {
  font: inherit;
  color: var(--ink);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 50%, transparent);
  cursor: pointer;
  transition: border-color 0.24s ease, color 0.24s ease, background 0.24s ease, transform 0.24s ease;
}

.dashboard-theme-toggle {
  width: 36px;
  height: 36px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 34%, transparent);
  border-radius: 50%;
  color: var(--ink-soft);
  cursor: pointer;
  transition: color 0.2s, border-color 0.2s, transform 0.15s;
}
.dashboard-theme-toggle:hover { color: var(--ink); border-color: var(--mineral-blue); }
.dashboard-theme-toggle:active { transform: scale(0.92); }
.theme-icon { pointer-events: none; }
.settings-button {
  width: 36px;
  height: 36px;
  padding: 0;
  border: none !important;
  border-radius: 6px;
  background: transparent;
  color: var(--ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.settings-button svg { display: block; }
.settings-button:hover {
  background: color-mix(in srgb, var(--paper-soft) 78%, transparent);
}
.lang-toggle {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 2px;
  border-radius: 6px;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 12px;
}
.lang-toggle span {
  min-width: 28px;
  padding: 5px 7px;
  border-radius: 4px;
  color: var(--ink-faint);
}
.lang-toggle span:first-child,
.lang-toggle.is-en span:last-child {
  color: var(--paper);
  background: var(--ink);
}
.lang-toggle.is-en span:first-child {
  color: var(--ink-faint);
  background: transparent;
}
.help-button {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  font-family: "EB Garamond", Georgia, serif;
  font-size: 18px;
  line-height: 1;
}
.notice-button {
  position: relative;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  font-size: 15px;
}
.notice-button span {
  position: absolute;
  top: -5px;
  right: -5px;
  min-width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 5px;
  color: var(--paper);
  background: var(--vermilion);
  border-radius: 999px;
  font-size: 10px;
  line-height: 1;
}

.avatar-button {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 4px 12px 4px 5px;
}

.avatar-mark {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: var(--paper);
  background: var(--vermilion);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 15px;
}
.user-menu-seal {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 6px;
  background: var(--vermilion, #b54a3a);
  color: #fff5e8;
  border: 1.5px solid color-mix(in srgb, var(--vermilion) 70%, #000);
}
.user-menu-seal svg {
  display: block;
}

.logout-text {
  font-size: 13px;
  color: var(--ink-soft);
}

.avatar-menu {
  position: absolute;
  top: calc(100% + 10px);
  right: 0; /* cs-modal right pinned */
  z-index: 35;
  width: 220px;
  padding: 6px;
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 42%, transparent);
  border-radius: 6px;
  box-shadow: 0 18px 36px color-mix(in srgb, var(--ink) 16%, transparent);
  opacity: 0;
  pointer-events: none;
  transform: translateY(-4px);
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.avatar-menu.open {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}
.avatar-menu button {
  width: 100%;
  height: 36px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 9px;
  color: var(--ink);
  background: transparent;
  border: 0;
  border-radius: 4px;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  text-align: left;
}
.avatar-menu button:hover {
  background: var(--paper-soft);
}
.avatar-menu button span {
  width: 16px;
  color: var(--ink-faint);
  text-align: center;
}
.avatar-menu hr {
  height: 1px;
  margin: 7px 4px;
  border: 0;
  background: color-mix(in srgb, var(--ink-faint) 22%, transparent);
}
.avatar-menu .avatar-logout {
  color: var(--vermilion);
}
.avatar-menu-id {
  padding: 10px 12px 8px;
  font-size: 12px;
  color: var(--ink-faint);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  letter-spacing: 0.02em;
}
.avatar-menu button .ai {
  width: 18px;
  font-size: 14px;
  color: var(--ink-soft);
}
.avatar-menu button .ai-tail {
  margin-left: auto;
  color: var(--ink-faint);
  font-size: 12px;
}
.avatar-theme-row b {
  flex: 1;
  font-weight: 400;
}
.avatar-theme-row em {
  font-style: normal;
}
.avatar-theme-row i {
  width: 28px;
  height: 16px;
  position: relative;
  border-radius: 999px;
  background: color-mix(in srgb, var(--ink-faint) 35%, transparent);
}
.avatar-theme-row i::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--paper);
  transition: transform 0.18s ease;
}
.avatar-theme-row i.is-dark {
  background: var(--mineral-blue);
}
.avatar-theme-row i.is-dark::after {
  transform: translateX(12px);
}

.dashboard-theme-toggle:hover,
.lang-toggle:hover,
.help-button:hover,
.notice-button:hover,
.settings-button:hover,
.avatar-button:hover,
.primary-dream-button:hover,
.drawer-close:hover {
  border-color: var(--ink);
  background: color-mix(in srgb, var(--paper-soft) 78%, transparent);
}

.dashboard-shell {
  width: min(1160px, calc(100% - 40px));
  margin: 0 auto;
  padding: 40px 0 72px;
}

.hero-card {
  width: min(1160px, calc(100% - 40px));
  min-height: 72px;
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) auto auto;
  align-items: center;
  gap: 28px;
  margin: 22px auto 0;
  padding: 14px 22px;
  color: var(--ink);
  background: color-mix(in srgb, var(--paper-soft) 88%, var(--paper));
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 8px;
  box-shadow: 0 12px 28px color-mix(in srgb, var(--ink) 8%, transparent);
  cursor: pointer;
}
.quota-card {
  width: min(1160px, calc(100% - 40px));
  min-height: 118px;
  display: grid;
  grid-template-columns: 112px minmax(0, 1fr) auto;
  align-items: center;
  gap: 20px;
  margin: 22px auto 0;
  padding: 18px 22px;
  color: var(--ink);
  background: color-mix(in srgb, var(--paper-soft) 88%, var(--paper));
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 8px;
  box-shadow: 0 12px 28px color-mix(in srgb, var(--ink) 8%, transparent);
  cursor: pointer;
}
.quota-card:focus {
  outline: 2px solid var(--mineral-blue);
  outline-offset: 3px;
}
.quota-ring-wrap {
  position: relative;
  width: 104px;
  height: 104px;
}
.quota-ring {
  width: 104px;
  height: 104px;
  transform: rotate(-90deg);
}
.quota-ring-track,
.quota-ring-progress {
  fill: none;
  stroke-width: 9;
}
.quota-ring-track {
  stroke: color-mix(in srgb, var(--ink-faint) 18%, transparent);
}
.quota-ring-progress {
  stroke: var(--mineral-green);
  stroke-linecap: round;
  transition: stroke-dashoffset 0.4s ease, stroke 0.24s ease;
}
.quota-card.is-warn .quota-ring-progress {
  stroke: var(--mineral-blue);
}
.quota-card.is-danger .quota-ring-progress {
  stroke: var(--vermilion);
}
.quota-ring-wrap strong {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink);
  font-family: "EB Garamond", Georgia, serif;
  font-size: 22px;
  font-weight: 500;
  letter-spacing: 0.04em;
}
.quota-copy h2 {
  margin: 0 0 7px;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 24px;
  font-weight: 400;
  letter-spacing: 0.08em;
}
.quota-copy p {
  color: var(--ink-soft);
  font-size: 14px;
}
.quota-link {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  padding: 0 16px;
  color: var(--mineral-blue);
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 38%, transparent);
  border-radius: 999px;
  text-decoration: none;
  font-size: 13px;
}
.quota-link:hover {
  color: var(--paper);
  background: var(--mineral-blue);
}
.hero-card:focus {
  outline: 2px solid var(--mineral-blue);
  outline-offset: 3px;
}
.hero-kicker {
  display: block;
  margin-bottom: 4px;
  color: var(--ink-faint);
  font-size: 10px;
}
.hero-card h1 {
  margin: 0;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 22px;
  font-weight: 400;
  letter-spacing: 0.08em;
}
.hero-stat,
.hero-save {
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: var(--ink-soft);
  font-size: 13px;
  white-space: nowrap;
}
.hero-save strong {
  color: var(--mineral-blue);
  font-family: "EB Garamond", Georgia, serif;
  font-size: 18px;
  font-weight: 500;
  letter-spacing: 0.08em;
}

.dream-input-panel {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(280px, 0.75fr);
  gap: 18px;
  margin-bottom: 34px;
}

.input-column,
.task-section {
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
}

.input-column {
  min-height: 240px;
  padding: 26px;
  display: flex;
  flex-direction: column;
}

.section-kicker {
  margin-bottom: 10px;
  font-size: 11px;
  color: var(--ink-faint);
}

.input-column h1,
.task-section h2,
.drawer-head h2 {
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-weight: 400;
  letter-spacing: 0.08em;
}

.input-column h1 {
  margin-bottom: 18px;
  font-size: clamp(26px, 4vw, 40px);
  line-height: 1.25;
}

.input-column h2 {
  margin-bottom: 18px;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 22px;
  font-weight: 400;
  letter-spacing: 0.08em;
}

.input-column textarea {
  min-height: 120px;
  flex: 1;
  resize: vertical;
  padding: 16px;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  font: inherit;
  line-height: 1.7;
  outline: none;
}

.input-column textarea:focus {
  border-color: var(--mineral-blue);
}

.upload-placeholder {
  flex: 1;
  min-height: 96px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  color: var(--ink-faint);
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 58%, transparent);
  background: color-mix(in srgb, var(--paper) 72%, transparent);
  text-align: center;
}

.primary-dream-button {
  min-height: 42px;
  margin-top: 16px;
  color: var(--paper);
  background: var(--ink);
  border-color: var(--ink);
  letter-spacing: 0.14em;
}

.primary-dream-button:hover {
  color: var(--paper);
  background: var(--blue-deep);
  border-color: var(--blue-deep);
}

.task-section {
  padding: 28px;
}

.task-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 20px;
}

.task-section h2 {
  font-size: 28px;
}

.task-count {
  color: var(--ink-faint);
  font-size: 11px;
}

.task-list {
  display: grid;
  gap: 12px;
}

.task-card {
  --status-color: var(--ink-faint);
  position: relative;
  min-height: 92px;
  display: grid;
  grid-template-columns: 4px minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  padding: 18px 20px 18px 0;
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 20%, transparent);
  cursor: pointer;
  transition: transform 0.22s ease, border-color 0.22s ease, background 0.22s ease;
}

.task-card:hover,
.task-card:focus {
  border-color: color-mix(in srgb, var(--status-color) 70%, var(--ink-faint));
  background: color-mix(in srgb, var(--paper-soft) 82%, var(--status-color));
  outline: none;
  transform: translateY(-1px);
}

.task-status-rail {
  width: 4px;
  align-self: stretch;
  background: var(--status-color);
}

.status-done { --status-color: var(--mineral-green); }
.status-running { --status-color: var(--mineral-blue); }
.status-failed { --status-color: color-mix(in srgb, var(--vermilion) 72%, var(--paper)); }
.status-approved { --status-color: var(--gold); }

.task-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.task-title-row h3 {
  overflow: hidden;
  color: var(--ink);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.45;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.task-status-text {
  flex: 0 0 auto;
  color: var(--status-color);
  font-size: 13px;
}

.task-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 8px;
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}

.task-meta span:not(:last-child)::after {
  content: "·";
  margin-left: 8px;
  color: var(--ink-faint);
}

.executor-en {
  color: var(--ink-faint);
  font-size: 10px;
}

.task-view-link {
  color: var(--mineral-blue);
  font-size: 14px;
  text-decoration: none;
  white-space: nowrap;
}

.drawer-backdrop {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: color-mix(in srgb, var(--blue-deep) 64%, transparent);
  opacity: 0;
  transition: opacity 0.24s ease;
}

.drawer-backdrop.is-open {
  opacity: 1;
}

.task-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 50;
  width: min(480px, 100vw);
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-left: 1px solid color-mix(in srgb, var(--ink-faint) 32%, transparent);
  box-shadow: -24px 0 54px color-mix(in srgb, var(--ink) 18%, transparent);
  transform: translateX(100%);
  transition: transform 0.28s cubic-bezier(0.2, 0.7, 0.2, 1);
}

.task-drawer.is-open {
  transform: translateX(0);
}

.drawer-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 28px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
}

.drawer-id {
  margin-bottom: 10px;
  color: var(--ink-faint);
  font-size: 10px;
}

.drawer-head h2 {
  font-size: 24px;
  line-height: 1.35;
}

.drawer-close {
  width: 36px;
  height: 36px;
  flex: 0 0 auto;
  font-size: 24px;
  line-height: 1;
}

.drawer-body {
  display: grid;
  gap: 16px;
  padding: 22px 28px 36px;
  overflow-y: auto;
}

.drawer-block {
  padding: 18px;
}

.drawer-block h3 {
  margin-bottom: 12px;
  color: var(--ink);
  font-size: 15px;
  font-weight: 500;
  letter-spacing: 0.08em;
}

.drawer-block p {
  color: var(--ink-soft);
  font-size: 14px;
  line-height: 1.85;
}

.settings-backdrop {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: color-mix(in srgb, var(--blue-deep) 34%, transparent);
  opacity: 0;
  transition: opacity 0.24s ease;
}
.settings-backdrop.is-open { opacity: 1; }
.settings-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 70;
  width: min(320px, 100vw);
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-left: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  box-shadow: -18px 0 44px color-mix(in srgb, var(--ink) 16%, transparent);
  transform: translateX(100%);
  transition: transform 0.26s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.settings-drawer.is-open { transform: translateX(0); }
.help-backdrop {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: color-mix(in srgb, var(--blue-deep) 34%, transparent);
  opacity: 0;
  transition: opacity 0.24s ease;
}
.help-backdrop.is-open { opacity: 1; }
.help-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 70;
  width: min(380px, 100vw);
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-left: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  box-shadow: -18px 0 44px color-mix(in srgb, var(--ink) 16%, transparent);
  transform: translateX(100%);
  transition: transform 0.26s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.help-drawer.is-open { transform: translateX(0); }
.notice-backdrop {
  position: fixed;
  inset: 0;
  z-index: 60;
  background: color-mix(in srgb, var(--blue-deep) 34%, transparent);
  opacity: 0;
  transition: opacity 0.24s ease;
}
.notice-backdrop.is-open { opacity: 1; }
.notice-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 70;
  width: min(360px, 100vw);
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-left: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  box-shadow: -18px 0 44px color-mix(in srgb, var(--ink) 16%, transparent);
  transform: translateX(100%);
  transition: transform 0.26s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.notice-drawer.is-open { transform: translateX(0); }
.notice-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 22px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
}
.notice-toolbar span {
  color: var(--ink-faint);
  font-size: 10px;
}
.notice-toolbar button {
  color: var(--mineral-blue);
  background: transparent;
  border: 0;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
}
.notice-list {
  display: grid;
  gap: 10px;
  padding: 18px 22px 28px;
  overflow-y: auto;
}
.notice-item {
  display: grid;
  grid-template-columns: 10px 1fr;
  gap: 12px;
  padding: 13px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 16%, transparent);
  border-radius: 6px;
}
.notice-dot {
  width: 8px;
  height: 8px;
  margin-top: 6px;
  border-radius: 50%;
  background: var(--mountain-gray);
}
.notice-item.is-unread .notice-dot { background: var(--vermilion); }
.notice-item h3 {
  margin: 0 0 3px;
  color: var(--ink);
  font-size: 14px;
  font-weight: 500;
}
.notice-item time {
  color: var(--ink-faint);
  font-size: 11px;
}
.notice-item p {
  margin-top: 7px;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.6;
}
.help-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  padding: 18px 20px 4px;
}
.help-tab {
  min-height: 34px;
  color: var(--ink-faint);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
}
.help-tab.is-active {
  color: var(--paper);
  background: var(--ink);
  border-color: var(--ink);
}
.help-search {
  height: 34px;
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 12px 20px 0;
  padding: 0 10px;
  color: var(--ink-faint);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 20%, transparent);
  border-radius: 999px;
}
.help-search input {
  width: 100%;
  min-width: 0;
  color: var(--ink);
  background: transparent;
  border: 0;
  outline: 0;
  font: inherit;
  font-size: 12px;
}
.help-search input::placeholder { color: var(--ink-faint); }
.help-panel {
  padding: 18px 22px 28px;
  overflow-y: auto;
}
.help-panel mark {
  color: var(--vermilion);
  background: transparent;
  text-decoration: underline;
  text-decoration-color: var(--vermilion);
  text-underline-offset: 3px;
}
.help-empty {
  margin: 18px 22px;
  padding: 16px;
  color: var(--ink-faint);
  background: var(--paper-soft);
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-radius: 6px;
  font-size: 13px;
  text-align: center;
}
.help-shortcut-list {
  display: grid;
  gap: 10px;
}
.help-shortcut-list div,
.help-panel article,
.help-panel details {
  padding: 14px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 6px;
}
.help-shortcut-list dt {
  color: var(--ink);
  font-family: "EB Garamond", Georgia, serif;
  letter-spacing: 0.08em;
}
.help-shortcut-list dd,
.help-panel p {
  margin-top: 6px;
  color: var(--ink-soft);
  font-size: 13px;
  line-height: 1.7;
}
.help-panel article + article,
.help-panel details + details {
  margin-top: 10px;
}
.help-panel h3,
.help-panel summary {
  color: var(--ink);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 15px;
  cursor: pointer;
}
.settings-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 24px 22px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
}
.settings-head h2 {
  margin: 0 0 6px;
  color: var(--ink);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 22px;
  font-weight: 400;
  letter-spacing: 0.18em;
}
.settings-head p {
  color: var(--ink-faint);
  font-size: 10px;
}
.settings-close {
  width: 32px;
  height: 32px;
  color: var(--ink-faint);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 32%, transparent);
  border-radius: 50%;
  cursor: pointer;
  font-size: 22px;
  line-height: 1;
}
.settings-form {
  display: grid;
  gap: 18px;
  padding: 22px;
  overflow-y: auto;
  flex: 1;
  min-height: 0;
  -webkit-overflow-scrolling: touch;
}
.settings-field {
  display: grid;
  gap: 10px;
  min-width: 0;
  padding: 0;
  border: 0;
}
.settings-field > span,
.settings-field legend {
  color: var(--ink-soft);
  font-size: 13px;
  letter-spacing: 0.08em;
}
.settings-field input[type="text"],
.settings-field input[type="url"],
.settings-field input[type="password"],
.settings-field select {
  width: 100%;
  padding: 11px 12px;
  color: var(--ink);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 4px;
  font: inherit;
  outline: none;
}
.settings-field label {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink);
  font-size: 13px;
}
.settings-field input[type="radio"] {
  accent-color: var(--mineral-blue);
}
.settings-field-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.feishu-status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--ink-faint);
  font-size: 11px;
  white-space: nowrap;
}
.feishu-status i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--mountain-gray);
}
.feishu-status.is-bound {
  color: var(--green-deep);
}
.feishu-status.is-bound i {
  background: var(--mineral-green);
}
.settings-url input {
  width: 100%;
  padding: 11px 12px;
  color: var(--ink);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 4px;
  font: inherit;
  outline: none;
}
.settings-test {
  padding: 0 14px;
  min-height: 34px;
  color: var(--mineral-blue);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 44%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
}
.settings-link {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--mineral-blue);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 36%, transparent);
  border-radius: 999px;
  text-decoration: none;
  font-size: 13px;
  letter-spacing: 0.12em;
}
.settings-link:hover {
  border-color: var(--mineral-blue);
  color: var(--ink);
}

.page-title {
  max-width: 760px;
  margin: 0 auto 30px;
  text-align: center;
}
.page-title .en {
  display: block;
  margin-bottom: 10px;
  color: var(--ink-faint);
  font-size: 11px;
}
.page-title h1 {
  margin: 0 0 10px;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: clamp(30px, 5vw, 46px);
  font-weight: 400;
  letter-spacing: 0.16em;
}
.page-title p {
  color: var(--ink-soft);
  font-size: 14px;
  line-height: 1.8;
}
.plan-page,
.billing-page {
  width: min(1160px, calc(100% - 40px));
  margin: 0 auto;
  padding: 52px 0 76px;
}
.billing-toggle {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 13px;
  cursor: pointer;
}
.billing-toggle input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.billing-toggle i {
  position: relative;
  width: 42px;
  height: 22px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--ink-faint) 28%, transparent);
}
.billing-toggle i::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--paper);
  transition: transform 0.18s ease;
}
.billing-toggle input:checked + i {
  background: var(--mineral-green);
}
.billing-toggle input:checked + i::after {
  transform: translateX(20px);
}
.plan-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}
.plan-card,
.billing-card,
.billing-history {
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-radius: 8px;
  box-shadow: 0 14px 32px color-mix(in srgb, var(--ink) 8%, transparent);
}
.plan-card {
  position: relative;
  min-height: 430px;
  display: flex;
  flex-direction: column;
  padding: 24px;
  transition: transform 0.22s ease, border-color 0.22s ease;
}
.plan-card:hover {
  border-color: var(--mineral-blue);
  transform: translateY(-3px);
}
.plan-card.is-featured {
  border-color: color-mix(in srgb, var(--vermilion) 44%, var(--ink-faint));
}
.plan-badge {
  position: absolute;
  top: 16px;
  right: 16px;
  padding: 4px 9px;
  color: var(--paper);
  background: var(--vermilion);
  border-radius: 999px;
  font-size: 12px;
}
.plan-note {
  min-height: 24px;
  margin: 0 0 14px;
  color: var(--ink-faint);
  font-size: 13px;
}
.plan-card h2,
.billing-card h2,
.billing-history h2 {
  margin: 0;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 26px;
  font-weight: 400;
  letter-spacing: 0.12em;
}
.plan-price {
  margin: 22px 0 4px;
}
.plan-price strong {
  font-family: "EB Garamond", Georgia, serif;
  font-size: 54px;
  font-weight: 500;
  letter-spacing: 0.02em;
}
.plan-price span,
.plan-yearly,
.plan-points {
  color: var(--ink-soft);
  font-size: 14px;
}
.plan-points {
  margin: 20px 0 14px;
  color: var(--mineral-blue);
  font-weight: 500;
}
.plan-includes {
  display: grid;
  gap: 9px;
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
}
.plan-includes li {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink-soft);
  font-size: 14px;
}
.plan-includes span {
  color: var(--mineral-green);
}
.plan-upgrade,
.billing-actions button,
.invoice-button {
  min-height: 40px;
  color: var(--paper);
  background: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
}
.plan-upgrade {
  margin-top: auto;
}
.billing-layout {
  display: grid;
  grid-template-columns: minmax(280px, 0.75fr) minmax(0, 1.25fr);
  gap: 18px;
}
.billing-card,
.billing-history {
  padding: 24px;
}
.billing-plan-name {
  margin: 18px 0 8px;
  color: var(--vermilion);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 30px;
}
.billing-meta {
  display: grid;
  gap: 10px;
  margin: 22px 0;
  color: var(--ink-soft);
  font-size: 14px;
}
.billing-meta strong {
  color: var(--ink);
  font-weight: 500;
}
.billing-actions {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.billing-actions button:nth-child(2),
.billing-actions button:nth-child(3) {
  color: var(--ink-soft);
  background: transparent;
  border-color: color-mix(in srgb, var(--ink-faint) 36%, transparent);
}
.billing-table {
  width: 100%;
  margin-top: 18px;
  border-collapse: collapse;
  color: var(--ink-soft);
  font-size: 14px;
}
.billing-table th,
.billing-table td {
  padding: 12px 10px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  text-align: left;
}
.billing-table th {
  color: var(--ink-faint);
  font-size: 12px;
  font-weight: 400;
}
.billing-status {
  color: var(--green-deep);
}
.billing-status.is-refund {
  color: var(--vermilion);
}
.invoice-button {
  margin-top: 18px;
  padding: 0 18px;
}
.settings-save {
  min-height: 40px;
  color: var(--paper);
  background: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  letter-spacing: 0.12em;
}
.settings-toast {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 80;
  padding: 10px 16px;
  color: var(--paper);
  background: var(--ink);
  border-radius: 999px;
  font-size: 13px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.settings-toast.is-open {
  opacity: 1;
  transform: translateY(0);
}
.ux-toast {
  position: fixed;
  left: 50%;
  bottom: 48px;
  transform: translateX(-50%) translateY(20px);
  padding: 10px 22px;
  border-radius: 999px;
  background: rgba(20, 20, 20, 0.86);
  color: #fff;
  font-size: 13px;
  letter-spacing: 0.08em;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s, transform 0.2s;
  z-index: 9999;
}
.ux-toast.is-show {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.account-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 8px;
}
.account-name {
  min-width: 0;
  color: var(--ink);
  font-size: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.account-id {
  color: var(--ink-faint);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 11px;
}
.account-edit-btn {
  min-height: 28px;
  padding: 0 12px;
  color: var(--mineral-blue);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 44%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
}
.account-edit-backdrop {
  position: fixed;
  inset: 0;
  z-index: 92;
  background: rgba(0, 0, 0, 0.45);
  opacity: 0;
  transition: opacity 0.18s ease;
}
.account-edit-backdrop.is-open { opacity: 1; }
.account-edit-modal {
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 93;
  width: min(640px, 90vw);
  min-height: 520px;
  max-height: calc(100vh - 48px);
  overflow: auto;
  transform: translate(-50%, -48%) scale(0.98);
  opacity: 0;
  padding: 24px;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 8px;
  box-shadow: 0 30px 100px rgba(20, 25, 32, 0.26);
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.account-edit-modal.is-open {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}
.account-edit-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}
.account-edit-head h2 { margin: 0; font-size: 20px; }
.account-edit-head p { margin: 4px 0 0; color: var(--ink-faint); font-size: 11px; letter-spacing: 0.18em; }
.account-edit-close {
  width: 32px;
  height: 32px;
  color: var(--ink-faint);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 32%, transparent);
  border-radius: 50%;
  cursor: pointer;
  font-size: 22px;
  line-height: 1;
}
.account-face-slot {
  display: grid;
  place-items: center;
  min-height: 84px;
  margin-bottom: 16px;
  color: var(--ink-faint);
  background: var(--paper-soft);
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 45%, transparent);
  border-radius: 8px;
}
.account-edit-form {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.account-edit-form label {
  display: grid;
  gap: 6px;
  color: var(--ink-soft);
  font-size: 12px;
}
.account-edit-form input {
  width: 100%;
  padding: 10px 12px;
  color: var(--ink);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 4px;
  font: inherit;
}
.account-edit-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding-top: 8px;
}
.account-save-btn {
  min-height: 40px;
  padding: 0 18px;
  color: var(--paper);
  background: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  letter-spacing: 0.12em;
}
.settings-cs-row {
  display: flex;
  justify-content: flex-end;
}
.settings-cs-btn {
  min-height: 30px;
  padding: 0 14px;
  color: var(--ink);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
}
.settings-cs-btn:hover {
  color: var(--mineral-blue);
  border-color: var(--mineral-blue);
}
.preference-settings {
  padding-top: 4px;
}
.preference-row {
  display: grid;
  grid-template-columns: 96px 1fr;
  align-items: center;
  gap: 10px;
}
.preference-row > span {
  color: var(--ink-soft);
  font-size: 13px;
}
.preference-options {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.preference-toggle input {
  justify-self: start;
  width: 38px;
  height: 20px;
  accent-color: var(--mineral-blue);
}
.cs-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 80;
  background: transparent;
  pointer-events: none;
}
.cs-modal {
  position: fixed;
  right: 0;
  top: 0;
  bottom: 0;
  z-index: 81;
  width: min(320px, 100vw);
  max-height: none;
  height: 100vh;
  overflow-y: auto;
  transform: translateX(100%);
  opacity: 1;
  padding: 22px 20px;
  color: var(--ink);
  background: var(--paper);
  border-left: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 0;
  box-shadow: -18px 0 44px color-mix(in srgb, var(--ink) 16%, transparent);
  transition: transform 0.22s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.cs-modal.is-open {
  opacity: 1;
  transform: translateX(0);
}
.cs-modal-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 30px;
  height: 30px;
  color: var(--ink-faint);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 32%, transparent);
  border-radius: 50%;
  cursor: pointer;
  font-size: 20px;
}
.cs-modal h2 { margin: 0 36px 16px 0; font-size: 20px; }
.cs-modal-section {
  display: grid;
  gap: 10px;
  padding: 14px 0;
  border-top: 1px solid color-mix(in srgb, var(--ink-faint) 16%, transparent);
}
.cs-modal-section h3 { margin: 0; font-size: 14px; color: var(--ink-soft); }
.cs-modal-section p,
.cs-modal-section li { margin: 0; font-size: 13px; line-height: 1.7; color: var(--ink); }
.cs-ask-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
}
.cs-ask-row input {
  min-width: 0;
  padding: 10px 12px;
  color: var(--ink);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 4px;
  font: inherit;
}
.cs-ask-row button {
  padding: 0 14px;
  color: var(--mineral-blue);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 44%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
}
.cs-answer {
  min-height: 34px;
  padding: 10px 12px;
  background: var(--paper-soft);
  border-radius: 6px;
}
.wechat-qr {
  width: 112px;
  height: 112px;
  display: grid;
  place-items: center;
  color: var(--ink-faint);
  background: var(--paper-soft);
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 45%, transparent);
  border-radius: 6px;
  font-size: 13px;
}
.theme-dark .cs-modal {
  background: #1a1f2d;
  border-left-color: rgba(180, 190, 210, 0.18);
}
.theme-dark .cs-modal input,
.theme-dark .cs-ask-row input {
  background: #0f1320;
  border: 1px solid rgba(180, 190, 210, 0.22);
  color: var(--ink);
}
.theme-dark .cs-modal input::placeholder { color: rgba(200, 205, 215, 0.45); }
.theme-dark .cs-modal-section { border-top-color: rgba(180, 190, 210, 0.14); }
.theme-dark .wechat-qr,
.theme-dark .cs-modal [class*="qr"] {
  background: rgba(255, 255, 255, 0.04);
  border: 1.5px dashed rgba(255, 235, 200, 0.32);
  color: var(--ink-soft);
}
.theme-dark .ux-toast {
  background: rgba(232, 226, 208, 0.92);
  color: #14181f;
}
.theme-dark .account-edit-backdrop,
.theme-dark .center-flow-backdrop,
.theme-dark .cs-modal-backdrop {
  background: rgba(0, 0, 0, 0.55);
}
.theme-dark .settings-field,
.theme-dark .settings-channel,
.theme-dark fieldset {
  border-color: rgba(180, 190, 210, 0.16);
}
.theme-dark .settings-field legend { color: var(--ink-soft); }
.theme-dark .topbar-refresh,
.theme-dark .dashboard-theme-toggle,
.theme-dark .help-button {
  border-color: rgba(180, 190, 210, 0.22);
  color: var(--ink-soft);
}
.theme-dark .topbar-refresh:hover,
.theme-dark .dashboard-theme-toggle:hover {
  color: var(--ink);
  border-color: var(--mineral-blue);
}
[hidden] { display: none !important; }
.command-layer {
  position: fixed;
  inset: 0;
  z-index: 96;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  padding-top: 14vh;
  background: color-mix(in srgb, var(--blue-deep) 52%, transparent);
  opacity: 0;
  transition: opacity 0.18s ease;
}
.command-layer.is-open { opacity: 1; }
.command-panel {
  width: min(480px, calc(100vw - 32px));
  height: 360px;
  display: flex;
  flex-direction: column;
  padding: 18px;
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 42%, transparent);
  border-radius: 8px;
  box-shadow: 0 24px 54px color-mix(in srgb, var(--ink) 20%, transparent);
}
.command-panel h2 {
  margin: 0 0 12px;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 20px;
  font-weight: 400;
  letter-spacing: 0.14em;
}
.command-panel input {
  height: 42px;
  padding: 0 14px;
  color: var(--ink);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  border-radius: 6px;
  font: inherit;
  outline: none;
}
.command-list {
  display: grid;
  gap: 7px;
  margin-top: 14px;
  overflow-y: auto;
}
.command-source-group {
  display: grid;
  gap: 6px;
}
.command-source-group h3 {
  margin: 8px 0 2px;
  font-size: 11px;
  letter-spacing: 0.16em;
  color: var(--ink-faint);
  font-weight: 500;
}
.command-item {
  min-height: 38px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 0 12px;
  color: var(--ink);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  font: inherit;
  text-align: left;
}
.command-item.is-active,
.command-item:hover {
  background: var(--paper-soft);
  border-color: color-mix(in srgb, var(--mineral-blue) 34%, transparent);
}
.command-item em {
  color: var(--ink-faint);
  font-size: 11px;
  font-style: normal;
  white-space: nowrap;
}
.command-item mark {
  color: var(--vermilion);
  background: transparent;
  text-decoration: underline;
  text-decoration-color: var(--vermilion);
  text-underline-offset: 3px;
}
.command-empty {
  padding: 28px 0;
  color: var(--ink-faint);
  text-align: center;
  font-size: 13px;
}
.shortcut-layer {
  position: fixed;
  inset: 0;
  z-index: 95;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: color-mix(in srgb, var(--blue-deep) 58%, transparent);
  opacity: 0;
  transition: opacity 0.18s ease;
}
.shortcut-layer.is-open { opacity: 1; }
.shortcut-card {
  position: relative;
  width: min(420px, 100%);
  padding: 24px;
  color: var(--ink);
  background: var(--output-bg);
  border: 1px solid var(--vermilion);
  border-radius: 6px;
  box-shadow: 0 18px 42px color-mix(in srgb, var(--ink) 18%, transparent);
}
.shortcut-close {
  position: absolute;
  top: 12px;
  right: 12px;
  width: 30px;
  height: 30px;
  color: var(--ink-faint);
  background: transparent;
  border: 0;
  cursor: pointer;
  font-size: 22px;
}
.shortcut-card h2 {
  margin: 0 0 6px;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 24px;
  font-weight: 400;
  letter-spacing: 0.18em;
}
.shortcut-card > p {
  margin-bottom: 18px;
  color: var(--ink-faint);
  font-size: 10px;
}
.shortcut-card dl {
  display: grid;
  gap: 10px;
}
.shortcut-card dl div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 10px 0;
  border-top: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
}
.shortcut-card dt {
  color: var(--ink);
  font-family: "EB Garamond", Georgia, serif;
  letter-spacing: 0.08em;
}
.shortcut-card dd {
  color: var(--ink-soft);
  font-size: 12px;
  text-align: right;
}
.onboarding-layer {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: color-mix(in srgb, var(--blue-deep) 72%, transparent);
  opacity: 0;
  transition: opacity 0.2s ease;
}
.onboarding-layer.is-open {
  opacity: 1;
}
.onboarding-card {
  --onboarding-arrow-left: 50%;
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 91;
  pointer-events: auto;
  width: min(300px, calc(100vw - 36px));
  padding: 18px 20px 16px;
  color: var(--ink);
  background: var(--output-bg);
  border: 1px solid var(--vermilion);
  border-radius: 6px;
  box-shadow: 0 18px 42px color-mix(in srgb, var(--ink) 24%, transparent);
  transform: translate(-50%, -50%);
  transition: top 0.18s ease, left 0.18s ease;
}
.onboarding-next { pointer-events: auto; cursor: pointer; }
.onboarding-card.is-above,
.onboarding-card.is-below {
  transform: none;
}
.onboarding-card::before {
  content: "";
  position: absolute;
  left: var(--onboarding-arrow-left);
  width: 12px;
  height: 12px;
  background: var(--output-bg);
  border-top: 1px solid var(--vermilion);
  border-left: 1px solid var(--vermilion);
  margin-left: -6px;
  display: none;
}
.onboarding-card.is-below::before {
  display: block;
  top: -7px;
  transform: rotate(45deg);
}
.onboarding-card.is-above::before {
  display: block;
  bottom: -7px;
  transform: rotate(-135deg);
}
.onboarding-step {
  margin-bottom: 8px;
  color: var(--ink-faint);
  font-size: 10px;
  letter-spacing: 0.12em;
}
.onboarding-text,
#onboardingText {
  margin: 0;
  color: var(--ink);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 17px;
  line-height: 1.55;
}
.onboarding-text-en {
  margin: 4px 0 0;
  color: var(--ink-soft);
  font-family: "EB Garamond", "Songti SC", serif;
  font-size: 12px;
  font-style: italic;
  line-height: 1.45;
  letter-spacing: 0.02em;
}
.onboarding-next {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  min-height: 34px;
  margin-top: 14px;
  padding: 0 16px;
  color: var(--paper);
  background: var(--ink);
  border: 1px solid var(--ink);
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: 13px;
}
.onboarding-next-en {
  font-size: 11px;
  opacity: 0.7;
  letter-spacing: 0.04em;
}

.summary-block {
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 20%, transparent);
}

.thinking-block {
  position: relative;
  background: var(--thinking-bg);
  border-left: 4px solid var(--mountain-gray);
}

.thinking-block p {
  color: var(--thinking-text);
  font-style: italic;
}

.output-block {
  background: var(--output-bg);
  border: 1px solid var(--output-border);
}

.output-block .detail-line {
  padding-left: 10px;
}

@media (max-width: 820px) {
  .dashboard-topbar {
    height: auto;
    min-height: 68px;
    padding: 14px 20px;
    align-items: flex-start;
  }

  .dashboard-logo-cn {
    font-size: 23px;
  }

  .dashboard-actions {
    gap: 8px;
  }

  .dashboard-theme-toggle {
    width: 42px;
    min-height: 38px;
    overflow: hidden;
    padding: 0;
    white-space: nowrap;
    text-indent: -4.25em;
  }

  .logout-text {
    display: none;
  }

  .dashboard-shell {
    width: min(100% - 28px, 1160px);
    padding-top: 24px;
  }

  .quota-card,
  .hero-card {
    width: min(100% - 28px, 1160px);
    grid-template-columns: 1fr;
    justify-items: start;
  }

  .quota-ring-wrap {
    width: 88px;
    height: 88px;
  }

  .quota-ring {
    width: 88px;
    height: 88px;
  }

  .dream-input-panel {
    grid-template-columns: 1fr;
  }

  .task-section {
    padding: 20px 14px;
  }

  .task-card {
    grid-template-columns: 4px minmax(0, 1fr);
    gap: 14px;
    padding: 16px 14px 16px 0;
  }

  .task-title-row {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }

  .task-title-row h3 {
    white-space: normal;
  }

  .task-view-link {
    grid-column: 2;
    justify-self: start;
  }

  .landing-actions {
    flex-direction: column;
  }

  .command-open {
    display: none;
  }

  .plan-grid,
  .billing-layout {
    grid-template-columns: 1fr;
  }

  .billing-actions {
    grid-template-columns: 1fr;
  }

  .drawer-head,
  .drawer-body {
    padding-left: 20px;
    padding-right: 20px;
  }
}

/* === Dashboard · 实时翻译（Code 批 3 补） === */
.input-column-human textarea {
  min-height: 160px;
}
.input-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 14px;
}
.input-hint {
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.22em;
}
.primary-dream-button .btn-cn {
  font-family: "Noto Serif SC", serif;
  font-size: 15px;
  letter-spacing: 0.35em;
  padding-left: 0.35em;
}
.primary-dream-button .btn-en {
  display: block;
  font-family: "EB Garamond", Georgia, serif;
  font-size: 10px;
  letter-spacing: 0.32em;
  opacity: 0.55;
  margin-top: 2px;
}
.primary-dream-button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

/* 翻译块 · 借用 Claude 思考块配色 */
.input-column-translate {
  position: relative;
}
.translation-box {
  margin-top: 8px;
  padding: 22px 24px;
  background: var(--thinking-bg);
  border-left: 2px solid var(--mineral-blue);
  border-radius: 2px;
  min-height: 220px;
  color: var(--thinking-text);
  font-style: italic;
  line-height: 1.7;
  transition: background 0.3s ease;
}
.translation-empty {
  color: var(--ink-faint);
  font-style: italic;
  font-size: 14px;
}
.translation-empty:empty { display: none; }
.translation-line {
  display: flex;
  gap: 14px;
  padding: 7px 0;
  font-style: normal;
  border-bottom: 1px dashed color-mix(in srgb, var(--ink-faint) 25%, transparent);
}
.translation-line:last-of-type {
  border-bottom: none;
}
.t-label {
  flex: 0 0 76px;
  font-size: 12px;
  color: var(--ink-faint);
  letter-spacing: 0.16em;
  padding-top: 2px;
}
.t-value {
  flex: 1;
  font-size: 14px;
  color: var(--ink);
  font-weight: 500;
}
.t-value-en {
  margin-left: 8px;
  font-size: 11px;
  color: var(--mineral-blue);
  font-weight: 400;
  opacity: 0.8;
}
.translation-foot {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  font-size: 10px;
  color: var(--ink-faint);
  letter-spacing: 0.28em;
  text-align: right;
}
.prompt-optimizer-card {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 24%, transparent);
  border-radius: 8px;
  background: color-mix(in srgb, var(--paper) 82%, var(--mineral-blue) 6%);
  font-style: normal;
}
.layout-long-text {
  position: relative;
  max-height: min(260px, calc(var(--layout-lines, 10) * 1.25em));
  overflow: auto;
  scrollbar-gutter: stable;
}
.layout-long-text.optimizer-prompt {
  max-height: 190px;
}
.layout-long-text.optimizer-chips,
.layout-long-text.optimizer-list {
  max-height: 112px;
}
.layout-long-text.transcript-copy,
.layout-long-text.tl-copy {
  max-height: 9.2em;
}
.optimizer-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.optimizer-kicker {
  margin-bottom: 2px;
  font-size: 10px;
  line-height: 1.2;
  color: var(--mineral-blue);
  letter-spacing: 0.16em;
}
.optimizer-score {
  min-width: 42px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 700;
  background: color-mix(in srgb, var(--ink-faint) 12%, transparent);
  color: var(--ink);
}
.optimizer-score.is-good { color: #166534; background: rgba(22, 101, 52, 0.12); }
.optimizer-score.is-warn { color: #92400e; background: rgba(146, 64, 14, 0.12); }
.optimizer-score.is-risk { color: #991b1b; background: rgba(153, 27, 27, 0.12); }
.optimizer-prompt {
  max-height: 210px;
  overflow: auto;
  margin: 0;
  padding: 10px 12px;
  border-radius: 6px;
  background: color-mix(in srgb, var(--ink) 6%, transparent);
  color: var(--ink);
  white-space: pre-wrap;
  word-break: break-word;
  font-family: inherit;
  font-size: 12px;
  line-height: 1.65;
}
.optimizer-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 8px;
}
.optimizer-copy {
  min-height: 28px;
  padding: 0 10px;
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 28%, transparent);
  border-radius: 6px;
  background: transparent;
  color: var(--mineral-blue);
  font-size: 12px;
  cursor: pointer;
}
.optimizer-grid {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}
.optimizer-label {
  margin-bottom: 6px;
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.08em;
}
.optimizer-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.optimizer-chip {
  display: inline-flex;
  max-width: 100%;
  padding: 4px 7px;
  border-radius: 6px;
  font-size: 11px;
  line-height: 1.35;
  word-break: break-word;
}
.optimizer-chip.is-filled {
  color: #166534;
  background: rgba(22, 101, 52, 0.1);
}
.optimizer-chip.is-missing {
  color: #92400e;
  background: rgba(146, 64, 14, 0.1);
}
.optimizer-list {
  margin: 0;
  padding-left: 18px;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.55;
}

/* === Dashboard · 极简改版（Code 二次精修） === */

/* 栏头：单字大标题 + 英文小字（宋韵主从）*/
.column-head {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 18px;
}
.column-title-cn {
  font-family: "Noto Serif SC", serif;
  font-size: 22px;
  font-weight: 500;
  letter-spacing: 0.32em;
  color: var(--ink);
  margin: 0;
  line-height: 1;
}
.column-title-en {
  font-size: 10px;
  letter-spacing: 0.32em;
  color: var(--ink-faint);
}

/* 造梦输入合体壳（textarea + 底栏一体，仿 Claude Code 撰写区） */
.compose-shell {
  position: relative;
  flex: 0 1 auto;
  width: 100%;
  max-width: 440px;
  display: flex;
  flex-direction: column;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 14px;
  background: #202123;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  box-shadow: 0 18px 44px rgba(0,0,0,0.28);
}
.compose-shell:focus-within {
  border-color: var(--mineral-blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mineral-blue) 16%, transparent), 0 18px 44px rgba(0,0,0,0.3);
}
.compose-shell.is-dragging {
  border-color: var(--mineral-green);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mineral-green) 15%, transparent);
}
.attachment-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 10px 12px 0;
}
.attachment-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 28px;
  padding: 0 8px;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-radius: 999px;
  background: var(--paper);
  font-size: 12px;
  color: var(--ink-soft);
}
.attachment-pill strong {
  max-width: 140px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 500;
  color: var(--ink);
}
.attachment-pill small {
  color: var(--ink-faint);
}
.attachment-pill button {
  border: none;
  background: transparent;
  color: var(--vermilion);
  cursor: pointer;
  font-size: 14px;
}
.compose-shell textarea {
  display: block;
  flex: 1;
  width: 100%;
  min-height: 132px;
  max-height: 220px;
  padding: 18px 20px 14px;
  border: none;
  background: transparent;
  resize: vertical;
  font: inherit;
  color: var(--ink);
  outline: none;
  line-height: 1.7;
}
.compose-shell.has-long-input {
  border-color: color-mix(in srgb, var(--mineral-blue) 36%, rgba(255,255,255,0.12));
}
.compose-shell textarea::placeholder {
  color: var(--ink-faint);
}
.slash-palette {
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: calc(100% - 8px);
  z-index: 8;
  display: grid;
  gap: 4px;
  padding: 8px;
  background: #25272a;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 8px;
  box-shadow: 0 14px 38px rgba(20, 25, 32, 0.14);
  backdrop-filter: blur(10px);
}
.slash-palette button {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 10px;
  color: var(--ink);
  background: transparent;
  border: 0;
  border-radius: 5px;
  cursor: pointer;
  font: inherit;
  text-align: left;
}
.slash-palette button.is-active,
.slash-palette button:hover {
  background: color-mix(in srgb, var(--mineral-blue) 12%, transparent);
}
.slash-palette strong {
  width: 34px;
  color: var(--mineral-blue);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
}
.compose-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px 8px;
  margin-top: 4px;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.compose-attach {
  background: transparent;
  border: none;
  cursor: pointer;
  width: 22px; height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-soft);
  border-radius: 3px;
  transition: background 0.2s ease, color 0.2s ease;
}
/* DREAM-WEB v3.1-UX1 · 缩小语音按钮 */
.compose-voice {
  width: 22px; height: 22px;
  padding: 0;
  border-radius: 3px;
}
.compose-voice svg { width: 14px; height: 14px; }
.compose-attach:hover {
  background: color-mix(in srgb, var(--ink-faint) 16%, transparent);
  color: var(--ink);
}
.compose-hint {
  flex: 1;
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.18em;
}
.compose-bar .primary-dream-button {
  margin: 0;
  padding: 6px 12px;
  background: var(--ink);
  color: #111214;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  font-family: "Noto Serif SC", serif;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: background 0.2s ease, transform 0.2s ease;
}
.compose-bar .primary-dream-button .btn-cn {
  font-size: 13px;
  letter-spacing: 0.24em;
  padding-left: 0.24em;
  font-family: "Noto Serif SC", serif;
}
.compose-bar .primary-dream-button .btn-send-arrow { display: inline-block; }
.compose-bar .primary-dream-button:hover:not(:disabled) {
  background: var(--mineral-blue);
  color: #071018;
}
.compose-bar .dream-submit-btn.is-running {
  background: #b54a3a;
}
.compose-bar .dream-submit-btn.is-running:hover {
  background: #9f3f31;
}
.compose-bar .dream-submit-btn.is-running .btn-cn {
  letter-spacing: 0.12em;
  padding-left: 0;
}
.dream-submit-btn.is-running .stop-square {
  display: inline-block;
  margin-right: 6px;
  font-size: 10px;
  line-height: 1;
}
.compose-bar .primary-dream-button:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

/* 翻译框（极简）：取消左竖线，纯卡片 */
.input-column-translate .translation-box {
  border-left: none;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  min-height: 220px;
}

/* 任务库头 · 查看更多按钮 */
.task-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 22px;
}
.task-more-btn {
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 40%, transparent);
  color: var(--ink-soft);
  padding: 7px 16px;
  border-radius: 999px;
  cursor: pointer;
  font-size: 12px;
  letter-spacing: 0.12em;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: all 0.2s ease;
}
.task-more-btn:hover {
  border-color: var(--ink);
  color: var(--ink);
}
.task-more-btn .task-count {
  font-size: 10px;
  color: var(--ink-faint);
  letter-spacing: 0.2em;
}

/* === Login Modal · 入梦窗（宋韵极简） === */
.login-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(47, 72, 88, 0.18);
  backdrop-filter: blur(6px);
  z-index: 100;
  opacity: 0;
  transition: opacity 0.3s ease;
}
.login-backdrop.is-open { opacity: 1; }
.theme-dark .login-backdrop { background: rgba(0, 0, 0, 0.55); }

.login-modal {
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, calc(-50% + 12px));
  width: min(380px, 92vw);
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink) 22%, transparent);
  border-radius: 6px;
  padding: 32px 32px 24px;
  z-index: 101;
  opacity: 0;
  transition: opacity 0.3s ease, transform 0.3s cubic-bezier(0.2,0.7,0.2,1);
  box-shadow: 0 24px 48px -20px rgba(47, 72, 88, 0.2);
}
.login-modal.is-open {
  opacity: 1;
  transform: translate(-50%, -50%);
}

.login-close {
  position: absolute;
  top: 14px; right: 16px;
  width: 28px; height: 28px;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--ink-faint);
  font-size: 22px;
  line-height: 1;
  transition: color 0.2s ease;
}
.login-close:hover { color: var(--ink); }

.login-head {
  text-align: center;
  margin-bottom: 26px;
}
.login-head h2 {
  font-size: 28px;
  letter-spacing: 0.35em;
  padding-left: 0.35em;
  color: var(--ink);
  margin-bottom: 6px;
  line-height: 1;
}
.register-modal .login-head h2 {
  letter-spacing: 0.16em;
  padding-left: 0.16em;
}
.login-en {
  font-size: 10px;
  color: var(--ink-faint);
  letter-spacing: 0.3em;
}

/* 三 tab */
.login-tabs {
  display: flex;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  margin-bottom: 22px;
}
.login-tab {
  flex: 1;
  background: transparent;
  border: none;
  padding: 10px 0 12px;
  cursor: pointer;
  color: var(--ink-faint);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color 0.2s ease, border-color 0.2s ease;
}
.login-tab span:first-child {
  font-family: "Noto Serif SC", serif;
  font-size: 14px;
  letter-spacing: 0.18em;
}
.login-tab span.en {
  font-size: 9px;
  letter-spacing: 0.28em;
  opacity: 0.7;
}
.login-tab:hover { color: var(--ink-soft); }
.login-tab.is-active {
  color: var(--ink);
  border-bottom-color: var(--mineral-blue);
}

.register-channel {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.register-channel label {
  position: relative;
  min-height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-faint);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 4px;
  cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.register-channel input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.register-channel span {
  font-family: "Noto Serif SC", serif;
  font-size: 13px;
  letter-spacing: 0.16em;
}
.register-channel label:has(input:checked) {
  color: var(--ink);
  border-color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 8%, var(--paper));
}

/* 表单 */
.login-form {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.login-field input {
  width: 100%;
  padding: 12px 14px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 32%, transparent);
  border-radius: 4px;
  font: inherit;
  color: var(--ink);
  outline: none;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.login-field input:focus {
  border-color: var(--mineral-blue);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--mineral-blue) 14%, transparent);
}
.login-field input::placeholder { color: var(--ink-faint); }

.login-helper {
  display: flex;
  justify-content: flex-end;
  margin-top: -2px;
}
.login-forgot {
  font-size: 11px;
  color: var(--ink-faint);
  text-decoration: none;
  letter-spacing: 0.1em;
}
.login-forgot:hover { color: var(--mineral-blue); }

.login-submit {
  margin-top: 6px;
  padding: 12px;
  background: var(--ink);
  color: var(--paper);
  border: none;
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  transition: background 0.2s ease;
}
.login-submit:hover { background: var(--blue-deep); }
.login-submit .cn {
  font-family: "Noto Serif SC", serif;
  font-size: 15px;
  letter-spacing: 0.35em;
  padding-left: 0.35em;
}
.login-submit .en {
  font-size: 9px;
  letter-spacing: 0.32em;
  opacity: 0.65;
  font-family: "EB Garamond", serif;
}

.login-foot {
  margin-top: 20px;
  text-align: center;
  font-size: 12px;
  color: var(--ink-faint);
}
.login-foot a {
  color: var(--mineral-blue);
  text-decoration: none;
  margin-left: 6px;
}
.login-foot a:hover { color: var(--ink); }

/* === 移动端简化（≤480px） === */
@media (max-width: 480px) {
  .dashboard-topbar { padding: 0 16px; height: 60px; }
  .cs-modal {
    right: 0;
    width: min(320px, 100vw);
  }
  .account-edit-form {
    grid-template-columns: 1fr;
  }
  .dashboard-logo-cn { font-size: 22px; }
  .dashboard-actions { gap: 8px; }
  /* 主题切换按钮只留图标 */
  .dashboard-theme-toggle {
    width: 36px; height: 36px;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  /* 退出按钮压缩 */
  .avatar-button .logout-text { display: none; }

  /* 落地页主标题缩小 */
  .cn-title { font-size: 48px; letter-spacing: 0.12em; }
  .slogan-cn { font-size: 18px; letter-spacing: 0.16em; }
  .seal { width: 52px; height: 52px; bottom: 24px; right: 24px; }
  .theme-toggle { bottom: 20px; left: 20px; }

  /* 登录模态全屏化 */
  .login-modal {
    width: calc(100% - 24px);
    padding: 24px 22px 20px;
  }
}

/* =========================================================
   v1.1 三栏布局 · 任务库 / 造梦 / 焦点区
   ========================================================= */
.dashboard-shell.three-col {
  display: grid;
  grid-template-columns: 280px minmax(0, 1040px);
  justify-content: center;
  gap: 20px;
  height: calc(100vh - 72px);
  padding: 18px clamp(20px, 4vw, 48px);
  align-items: stretch;
}
body.rail-collapsed .dashboard-shell.three-col {
  grid-template-columns: 56px minmax(0, 1fr);
}
body.rail-collapsed .task-rail {
  width: 56px;
  min-width: 56px;
  padding: 16px 13px;
  align-items: center;
}
body.rail-collapsed .task-rail .rail-head {
  width: 100%;
  justify-content: center;
}

/* === 紧凑 workbench layer: grey process, white content, blue actions === */
.theme-dark.dashboard-body {
  --paper: #141822;        /* 墨夜卷轴 · 千里江山墨蓝 */
  --paper-deep: #0d1018;
  --paper-soft: #1c2030;
  --ink: #e8e2d0;           /* 月白带暖 */
  --ink-soft: #aab0b8;
  --ink-faint: #6a7280;
  --mineral-blue: #6b8ca0;
  --blue-deep: #44627a;
  --mineral-green: #7ea99a;
  --green-deep: #5e8a7a;
  --vermilion: #b85450;
  --gold: #b39768;
  --output-bg: #1a1e2a;
  --output-border: #2a2f3e;
  color: var(--ink);
  background:
    radial-gradient(circle at 14% 22%, rgba(126,169,154,0.07), transparent 36%),
    radial-gradient(circle at 86% 78%, rgba(107,140,160,0.06), transparent 40%),
    linear-gradient(180deg, #161b27 0%, #10141d 100%);
}
.dashboard-body a,
.dashboard-body .linkish {
  color: var(--mineral-blue);
}
.dashboard-body .dashboard-header {
  background: rgba(16,17,18,0.86);
  border-bottom-color: rgba(255,255,255,0.08);
  backdrop-filter: blur(18px);
}
.dashboard-body .dashboard-logo-main,
.dashboard-body .column-title-cn,
.dashboard-body .task-title,
.dashboard-body .workspace-recommend-card strong,
.dashboard-body .result-head h3 {
  color: var(--ink);
}
.dashboard-body .dashboard-logo-sub,
.dashboard-body .column-title-en,
.dashboard-body .task-meta,
.dashboard-body .workspace-meta,
.dashboard-body .workspace-empty,
.dashboard-body .workspace-recommend-card small,
.dashboard-body .result-meta,
.dashboard-body .scene-chip-kicker,
.dashboard-body .flow-time {
  color: var(--ink-faint);
}

/* === 主舞台:上工作区 + 下指令栏 === */
.workstage {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 14px;
  min-height: 0;
  height: 100%;
  width: min(1040px, 100%);
}
.workstage-bar {
  display: block;
  max-height: 178px;
}
.workstage-bar .compose-area {
  width: 100%;
  margin: 0 auto;
}
.workstage-bar .compose-shell {
  max-width: none;
}
.workstage-bar .compose-shell textarea {
  min-height: 76px;
  max-height: 116px;
  padding: 14px 18px 8px;
}
.quota-mini {
  display: inline-flex;
  align-items: center;
  height: 28px;
  padding: 0 12px;
  margin-right: 4px;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 35%, transparent);
  border-radius: 999px;
  font-family: "EB Garamond", serif;
  font-size: 12px;
  color: var(--ink-soft);
  text-decoration: none;
  letter-spacing: 0.04em;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.quota-mini:hover { border-color: var(--ink); color: var(--ink); }
.workspace-toggles {
  margin-left: auto;
  display: inline-flex;
  gap: 4px;
  padding: 2px;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 999px;
}
.ws-toggle {
  background: transparent;
  border: none;
  padding: 3px 10px;
  border-radius: 999px;
  font: inherit;
  font-size: 11px;
  color: var(--ink-soft);
  cursor: pointer;
  letter-spacing: 0.06em;
}
.ws-toggle.is-on {
  background: var(--ink);
  color: var(--paper);
}
.account-block {
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 8px;
  padding: 14px 16px;
}
.account-block .settings-field-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 10px;
  font-size: 13px;
  color: var(--ink-soft);
}
.account-plan {
  font-family: "EB Garamond", serif;
  font-size: 12px;
  color: var(--green);
  letter-spacing: 0.06em;
}
.account-grid {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 6px 12px;
  margin: 0 0 12px;
  font-size: 13px;
}
.account-grid dt { color: var(--ink-faint); }
.account-grid dd { margin: 0; color: var(--ink); }
.account-mono { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 12px; }
.account-bar {
  display: block;
  height: 4px;
  margin-top: 5px;
  background: rgba(0,0,0,.08);
  border-radius: 999px;
  overflow: hidden;
}
.account-bar > span {
  display: block;
  height: 100%;
  background: var(--green);
  width: 0%;
}
.account-actions { display: flex; gap: 8px; }
.account-actions .settings-link { flex: 1; text-align: center; }
.account-nav {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 8px;
  padding: 14px 16px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  border-radius: 8px;
  color: var(--ink);
  text-decoration: none;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.account-nav:hover { border-color: var(--ink); background: color-mix(in srgb, var(--paper-soft) 60%, var(--paper)); }
.account-nav-main { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.account-nav-title { font-size: 14px; color: var(--ink); letter-spacing: 0.04em; }
.account-nav-sub { font-size: 11px; color: var(--ink-faint); font-family: ui-monospace, "SF Mono", Menlo, monospace; }
.account-nav-arrow { font-size: 22px; color: var(--ink-faint); line-height: 1; }
.channel-settings { gap: 10px; }
.channel-hint { font-size: 11px; color: var(--ink-faint); }
.channel-row {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 10px 12px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 8px;
}
.channel-row.is-bound { border-color: color-mix(in srgb, var(--green) 50%, transparent); }
.channel-icon {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 6px;
  font-size: 14px;
  color: var(--ink-soft);
}
.channel-row.is-bound .channel-icon { background: color-mix(in srgb, var(--green) 12%, var(--paper)); color: var(--green); border-color: color-mix(in srgb, var(--green) 40%, transparent); }
.channel-info { flex: 1; min-width: 0; }
.channel-name { font-size: 13px; color: var(--ink); }
.channel-mode {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 8px;
}
.channel-inputs {
  display: grid;
  gap: 8px;
  margin-top: 8px;
}
.channel-inputs input {
  width: 100%;
  min-width: 0;
  padding: 9px 10px;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-radius: 4px;
  font: inherit;
}
.channel-meta { font-size: 11px; color: var(--ink-faint); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.channel-config {
  padding: 4px 12px;
  background: transparent;
  border: 1px solid var(--ink-faint);
  border-radius: 999px;
  font: inherit;
  font-size: 12px;
  color: var(--ink-soft);
  cursor: pointer;
}
.channel-config:hover:not(:disabled) { color: var(--ink); border-color: var(--ink); }
.channel-config:disabled { opacity: 0.45; cursor: not-allowed; }
.channel-config-body {
  display: grid;
  gap: 8px;
  padding: 10px 12px 12px;
  margin-top: -4px;
  background: color-mix(in srgb, var(--paper-soft) 60%, var(--paper));
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 8px;
}
.channel-actions { display: flex; gap: 8px; }
.channel-actions .settings-test { flex: 1; }
.channel-unbind {
  padding: 6px 14px;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--vermilion) 50%, transparent);
  color: var(--vermilion);
  border-radius: 999px;
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}
.channel-unbind:hover { background: color-mix(in srgb, var(--vermilion) 10%, transparent); }
.workspace-canvas {
  background: #161719;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  width: 100%;
  margin: 0 auto;
  padding: 12px 14px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  overflow: hidden;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04), 0 22px 60px rgba(0,0,0,0.26);
}
.workspace-canvas > .focus-pane {
  position: static;
  width: 100%;
  max-height: min(220px, 32vh);
  flex: 0 0 auto;
  padding: 16px 18px 14px;
  background: #202123;
  border-color: rgba(255,255,255,0.08);
}
.workspace-canvas > .focus-pane[data-mode="result"] {
  max-height: min(320px, 44vh);
}
.workspace-canvas > .focus-pane .focus-head {
  padding-bottom: 10px;
}
.workspace-canvas > .focus-pane .focus-state {
  padding-right: 0;
}
.workspace-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding-bottom: 0;
  margin-bottom: 6px;
}
.workspace-head .column-title-cn {
  font-size: 18px;
  letter-spacing: 0.22em;
}
.workspace-head .column-title-en {
  font-size: 9px;
  letter-spacing: 0.24em;
}
.workspace-meta {
  margin-left: auto;
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--ink-faint);
}
.workspace-body {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
  overflow: auto;
  border-radius: 10px;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.68), rgba(255,255,255,0.26)),
    var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
}
.workspace-body[data-view="stream"],
.workspace-body[data-view="result"],
.workspace-body[data-view="center"] {
  align-items: stretch;
  justify-content: center;
}
.workspace-body[data-view="center"] {
  align-items: flex-start;
}
.workspace-body[data-view="translation"] {
  align-items: center;
  justify-content: center;
}
.workspace-empty {
  color: var(--ink-faint);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 15px;
  line-height: 1.7;
  text-align: center;
}
.workspace-empty .en {
  display: block;
  margin-top: 6px;
  font-family: "EB Garamond", serif;
  font-style: italic;
  font-size: 11px;
  letter-spacing: 0.08em;
}
.ws-view {
  width: 100%;
  height: 100%;
  min-height: 0;
}
.task-transcript {
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 22px 26px;
  color: var(--ink);
}
.tl-line {
  display: grid;
  grid-template-columns: 52px minmax(72px, max-content) minmax(0, 1fr);
  gap: 10px;
  align-items: baseline;
  font-size: 13px;
  line-height: 1.65;
  color: var(--ink);
  overflow-wrap: anywhere;
}
.tl-seq {
  color: var(--ink-faint);
  font-size: 10px;
  letter-spacing: 0.08em;
}
.tl-actor {
  color: var(--ink-soft);
  font-weight: 500;
  white-space: nowrap;
}
.tl-copy {
  min-width: 0;
}
.tl-process {
  color: var(--ink-faint);
  transition: opacity 0.36s ease;
}
.tl-process.is-faded {
  opacity: 0.42;
}
.tl-tool .tl-actor,
.tl-tool .tl-copy {
  color: var(--mineral-blue);
}
.tl-risk .tl-actor,
.tl-risk .tl-copy {
  color: var(--vermilion);
}
.tl-result {
  color: var(--ink);
}
.tl-result .tl-copy {
  font-weight: 500;
}
.workspace-recommendations {
  width: min(760px, 100%);
  display: grid;
  gap: 16px;
}
.workspace-recommendations header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
}
.workspace-recommendations h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 500;
  color: var(--ink);
}
.workspace-recommendations header span {
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--ink-faint);
}
.workspace-recommend-grid {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  grid-auto-rows: 1fr !important;
  gap: 12px !important;
  width: 100% !important;
}
.workspace-recommend-card {
  min-height: 96px;
  padding: 14px 16px;
  display: grid;
  align-content: start;
  gap: 8px;
  text-align: left;
  color: var(--ink);
  background: color-mix(in srgb, var(--paper-soft) 82%, white);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 10px;
  cursor: pointer;
  transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}
.workspace-recommend-card strong { font-size: 14px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.workspace-recommend-card:hover {
  border-color: var(--mineral-blue);
  color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 8%, var(--paper-soft));
}
.workspace-recommend-icon {
  width: 28px;
  height: 28px;
  display: inline-grid;
  place-items: center;
  border-radius: 50%;
  background: color-mix(in srgb, var(--mineral-green) 14%, transparent);
  color: var(--mineral-green);
}
.workspace-recommend-card strong {
  font-size: 14px;
  font-weight: 500;
}
.workspace-recommend-card small {
  color: var(--ink-faint);
  font-size: 12px;
}
.workspace-scene-chip {
  width: min(860px, 100%);
  margin: auto;
  padding: 18px 20px;
  display: grid;
  gap: 8px;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.72), rgba(255,255,255,0.34)),
    var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-left: 3px solid var(--mineral-blue);
  border-radius: 8px;
  color: var(--ink);
  box-shadow: none;
}
.workspace-scene-chip .scene-chip-kicker {
  color: var(--ink-faint);
  font-size: 10px;
  letter-spacing: 0.18em;
}
.workspace-scene-chip strong {
  font-size: 20px;
  font-weight: 600;
  color: var(--ink);
}
.workspace-scene-chip small {
  color: var(--ink-faint);
  font-size: 12px;
}
.scene-pipeline-preview {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(138px, 1fr));
  gap: 8px;
  margin-top: 8px;
}
.scene-pipeline-preview span {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 2px 7px;
  padding: 8px;
  background: color-mix(in srgb, var(--mineral-blue) 6%, transparent);
  border: 1px solid color-mix(in srgb, var(--mineral-blue) 20%, transparent);
  border-radius: 7px;
}
.scene-pipeline-preview i {
  grid-row: span 2;
  width: 20px;
  height: 20px;
  display: grid;
  place-items: center;
  color: var(--paper);
  background: var(--mineral-blue);
  border-radius: 50%;
  font-size: 11px;
  font-style: normal;
}
.scene-pipeline-preview b {
  color: var(--mineral-blue);
  font-size: 12px;
}
.scene-pipeline-preview em {
  color: var(--ink-faint);
  font-size: 11px;
  font-style: normal;
  line-height: 1.35;
}
.translation-node-body .translation-line {
  grid-template-columns: 76px minmax(0, 1fr);
}
.translation-node-body .scene-summary-block {
  max-height: 124px;
  overflow: auto;
}
.dream-result-wrap {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.68), rgba(255,255,255,0.2)),
    var(--paper-soft);
}
.dream-result-head {
  flex: 0 0 auto;
  padding: 14px 18px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: color-mix(in srgb, var(--paper-soft) 86%, white);
}
.dream-result-actions {
  display: inline-flex;
  gap: 8px;
  align-items: center;
}
.dream-result-head strong {
  color: var(--ink);
  font-size: 13px;
  font-weight: 600;
}
.dream-result-copy {
  font-size: 11px;
  padding: 4px 10px;
  color: var(--ink-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 6px;
  background: transparent;
  cursor: pointer;
}
.dream-result-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 22px 28px 28px;
}
.dream-result-body {
  min-height: 0;
  margin: 0 auto;
  padding: 0 0 18px;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.workspace-stream {
  position: relative;
  width: min(720px, 100%);
  display: grid;
  gap: 18px;
  color: var(--ink);
}
.workspace-stop-btn {
  flex: 0 0 auto;
  height: 30px;
  padding: 0 12px;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 999px;
  color: var(--ink-soft);
  background: #242528;
  cursor: pointer;
  font-size: 12px;
  line-height: 1;
}
.workspace-stop-btn:hover {
  color: var(--vermilion);
  border-color: color-mix(in srgb, var(--vermilion) 46%, transparent);
  background: color-mix(in srgb, var(--vermilion) 10%, #242528);
}
.workspace-stream-head {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 17px;
}
.workspace-stream-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--mineral-blue);
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--mineral-blue) 18%, transparent);
}
.dream-flow-wrap {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.68), rgba(255,255,255,0.2)),
    var(--paper-soft);
}
.dream-flow-head {
  flex: 0 0 auto;
  padding: 14px 18px;
  display: flex;
  align-items: center;
  gap: 14px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  background: color-mix(in srgb, var(--paper-soft) 86%, white);
}
.dream-flow-title {
  min-width: 0;
  flex: 1;
  display: flex;
  align-items: center;
  gap: 12px;
}
.dream-flow-title strong {
  display: block;
  color: var(--ink);
  font-size: 14px;
  font-weight: 600;
}
.dream-flow-title small {
  display: block;
  margin-top: 3px;
  color: var(--ink-faint);
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.flow-status-pill {
  flex: 0 0 auto;
  min-width: 84px;
  padding: 5px 10px;
  color: var(--ink-faint);
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 999px;
  font-size: 10px;
  text-align: center;
}
.flow-status-pill.is-running {
  color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 12%, transparent);
  border-color: color-mix(in srgb, var(--mineral-blue) 24%, transparent);
}
.flow-status-pill.is-thinking,
.flow-status-pill.is-wrapping {
  color: var(--gold);
  background: color-mix(in srgb, var(--gold) 12%, transparent);
  border-color: color-mix(in srgb, var(--gold) 24%, transparent);
}
.flow-status-pill.is-blocked {
  color: var(--vermilion);
  background: color-mix(in srgb, var(--vermilion) 12%, transparent);
  border-color: color-mix(in srgb, var(--vermilion) 24%, transparent);
}
.dream-flow-scroll {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 22px 28px 30px;
}
.dream-transcript {
  width: min(980px, 100%);
  min-height: 100%;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 22px;
  color: var(--ink);
}
.dream-transcript-entry {
  display: grid;
  gap: 8px;
}
.agent-handoff-lane {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 4px;
}
.agent-handoff-item {
  min-width: 0;
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  gap: 3px 8px;
  align-items: center;
  padding: 10px 11px;
  background: color-mix(in srgb, var(--paper-soft) 78%, white);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 8px;
}
.agent-handoff-item i {
  grid-row: span 2;
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  color: var(--paper);
  background: var(--mineral-blue);
  border-radius: 50%;
  font-style: normal;
  font-size: 12px;
}
.agent-handoff-item strong {
  min-width: 0;
  color: var(--mineral-blue);
  font-size: 13px;
  font-weight: 700;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.agent-handoff-item small {
  min-width: 0;
  color: var(--ink-faint);
  font-size: 11px;
  line-height: 1.35;
}
.agent-handoff-item.is-active {
  border-color: color-mix(in srgb, var(--mineral-blue) 42%, transparent);
  background: color-mix(in srgb, var(--mineral-blue) 8%, var(--paper-soft));
}
.dream-transcript-entry.is-meta {
  gap: 6px;
}
.transcript-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--ink-faint);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.5;
}
.transcript-marker {
  min-width: 16px;
  color: var(--ink-faint);
  text-align: center;
}
.transcript-time {
  color: var(--ink-faint);
  font-size: 12px;
  font-weight: 500;
}
.transcript-role {
  color: var(--ink-faint);
}
.transcript-copy {
  margin: 0;
  color: var(--ink);
  font-size: 18px;
  font-weight: 560;
  line-height: 1.65;
  overflow-wrap: anywhere;
}
.dream-transcript-entry.is-thinking .transcript-copy,
.dream-transcript-entry.is-meta .transcript-copy {
  color: var(--ink-soft);
  font-weight: 500;
}
.dream-transcript-entry.is-work .transcript-role {
  color: var(--mineral-blue);
}
.dream-transcript-entry.is-work .transcript-marker {
  color: var(--mineral-blue);
}
.dream-transcript-entry.is-result .transcript-copy {
  color: var(--ink);
}
.dream-transcript-entry.is-blocked .transcript-role,
.dream-transcript-entry.is-blocked .transcript-marker {
  color: var(--vermilion);
}
.transcript-tool-card {
  display: grid;
  gap: 10px;
  padding: 14px 16px;
  background: color-mix(in srgb, var(--paper-soft) 84%, white);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 8px;
  box-shadow: 0 10px 24px rgba(22, 30, 38, 0.06);
}
.transcript-tool-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
}
.transcript-tool-head strong {
  min-width: 0;
  color: var(--ink);
  font-size: 15px;
  font-weight: 720;
  line-height: 1.4;
  overflow-wrap: anywhere;
}
.transcript-tool-label,
.transcript-tool-status {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 720;
  line-height: 1.35;
  white-space: nowrap;
}
.transcript-tool-label {
  color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 11%, transparent);
}
.transcript-tool-status {
  color: var(--ink-faint);
  background: color-mix(in srgb, var(--ink-faint) 11%, transparent);
}
.transcript-tool-status.is-passed,
.transcript-tool-status.is-done {
  color: var(--mineral-green);
  background: color-mix(in srgb, var(--mineral-green) 11%, transparent);
}
.transcript-tool-status.is-failed {
  color: var(--vermilion);
  background: color-mix(in srgb, var(--vermilion) 11%, transparent);
}
.transcript-tool-summary {
  margin: 0;
  color: var(--ink);
  font-size: 15px;
  font-weight: 520;
  line-height: 1.62;
  overflow-wrap: anywhere;
}
.transcript-tool-facts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 8px 12px;
  margin: 0;
}
.transcript-tool-facts div {
  min-width: 0;
}
.transcript-tool-facts dt {
  margin: 0 0 2px;
  color: var(--ink-faint);
  font-size: 11px;
  font-weight: 700;
}
.transcript-tool-facts dd {
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 620;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.transcript-link,
.dream-transcript-output a {
  color: var(--mineral-blue);
  text-decoration: none;
}
.transcript-add {
  color: var(--mineral-green);
  font-weight: 700;
}
.transcript-del {
  color: var(--vermilion);
  font-weight: 700;
}
.transcript-risk {
  color: var(--vermilion);
  font-weight: 720;
}
.dream-transcript code,
.dream-transcript-output code {
  padding: 1px 7px;
  color: var(--ink);
  background: color-mix(in srgb, var(--ink-faint) 13%, transparent);
  border-radius: 9px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 0.92em;
}
.dream-transcript-output {
  width: min(980px, 100%);
  margin: 0 auto;
  color: var(--ink);
  font-size: 18px;
  line-height: 1.72;
  overflow-wrap: anywhere;
}
.workspace-body[data-view="result"] .dream-transcript-output {
  width: min(980px, 100%);
  padding: 0;
  background: transparent;
}
.dream-transcript-output h3 {
  margin: 0 0 14px;
  color: var(--ink);
  font-size: 24px;
  line-height: 1.4;
  font-weight: 760;
}
.dream-transcript-output h4 {
  margin: 22px 0 8px;
  color: var(--ink);
  font-size: 19px;
  line-height: 1.45;
  font-weight: 700;
}
.dream-transcript-output p {
  margin: 8px 0;
}
.dream-transcript-output ul {
  margin: 8px 0 12px;
  padding-left: 1.25em;
}
.dream-transcript-output li {
  margin: 6px 0;
  color: var(--ink);
}
.transcript-gap {
  height: 4px;
}
.typing-cursor {
  color: var(--mineral-blue);
  animation: blinkCursor 0.85s steps(1) infinite;
}
.dream-stage-progress {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  padding-top: 12px;
}
.dream-stage-progress::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: var(--stage-progress);
  height: 2px;
  background: var(--mineral-blue);
}
.dream-stage-progress span {
  font-size: 12px;
  color: var(--ink-faint);
}
.dream-stage-progress span.is-on {
  color: var(--mineral-blue);
}
@keyframes blinkCursor {
  50% { opacity: 0; }
}

/* === 指令框头部限流条 === */
.compose-meter {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  padding: 6px 12px;
  background: color-mix(in srgb, var(--paper-soft) 60%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 14%, transparent);
  border-radius: 999px;
  font-size: 12px;
  color: var(--ink-soft);
}
.compose-meter .meter-label {
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 12px;
}
.compose-meter .meter-bar {
  flex: 1;
  height: 4px;
  background: color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 999px;
  overflow: hidden;
  min-width: 80px;
}
.compose-meter .meter-fill {
  display: block;
  height: 100%;
  width: 24%;
  background: var(--mountain-gray, var(--vermilion));
  transition: width 0.3s ease, background 0.3s ease;
}
.compose-meter.is-warn .meter-fill { background: #d3a24a; }
.compose-meter.is-danger .meter-fill { background: var(--vermilion); }
.compose-meter .meter-text {
  font-variant-numeric: tabular-nums;
  font-size: 12px;
}
.compose-meter .meter-plan {
  letter-spacing: 0.12em;
  font-size: 10px;
  padding: 2px 8px;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-radius: 999px;
  color: var(--ink-soft);
}

/* === 语音按钮 === */
.compose-voice {
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  color: var(--ink-soft);
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.compose-voice:hover,
.compose-voice.is-recording {
  color: var(--vermilion);
  border-color: var(--vermilion);
  background: color-mix(in srgb, var(--vermilion) 8%, transparent);
}
.compose-voice.is-recording {
  animation: voicePulse 1.2s ease-in-out infinite;
}
@keyframes voicePulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--vermilion) 40%, transparent); }
  50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--vermilion) 0%, transparent); }
}

@media (max-width: 1180px) {
  .workstage-bar {
    max-height: none;
  }
}
body.rail-collapsed .task-rail .task-list,
body.rail-collapsed .task-rail .task-more-btn,
body.rail-collapsed .task-rail .column-head,
body.rail-collapsed .task-rail .task-filter-dots,
body.rail-collapsed .task-rail .task-search,
body.rail-collapsed .task-rail .project-switcher,
body.rail-collapsed .task-rail .rail-bottom {
  display: none;
}

/* DREAM-WEB v3.1-UX4 · 任务栏底部 user chip + 上弹四中心 */
.task-rail { position: relative; }
.rail-bottom {
  margin-top: auto;
  padding: 12px 12px 14px;
  border-top: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  position: relative;
}
.user-chip {
  width: 100%;
  display: grid;
  grid-template-columns: 30px 1fr 14px;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 16%, transparent);
  border-radius: 6px;
  cursor: pointer;
  color: var(--ink-base);
  font-family: inherit;
  text-align: left;
  transition: background 0.15s, border-color 0.15s;
}
.user-chip:hover {
  background: color-mix(in srgb, var(--ink-faint) 6%, transparent);
  border-color: color-mix(in srgb, var(--ink-faint) 32%, transparent);
}
.user-chip[aria-expanded="true"] {
  background: color-mix(in srgb, var(--mineral-blue) 8%, transparent);
  border-color: color-mix(in srgb, var(--mineral-blue) 32%, transparent);
}
.user-chip-avatar {
  width: 30px; height: 30px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: color-mix(in srgb, var(--mineral-blue) 22%, transparent);
  color: var(--ink-base);
  font-size: 11px;
  letter-spacing: 0.08em;
}
.user-chip-main { display: grid; gap: 1px; min-width: 0; }
.user-chip-name { font-size: 13px; letter-spacing: 0.06em; }
.user-chip-plan { font-size: 9px; letter-spacing: 0.22em; color: var(--ink-faint); }
.user-chip-caret { color: var(--ink-soft); transition: transform 0.2s; }
.user-chip[aria-expanded="true"] .user-chip-caret { transform: rotate(180deg); }

.center-popover {
  position: absolute;
  left: 12px; right: 12px;
  bottom: calc(100% + 6px);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 8px;
  padding: 10px 8px 8px;
  box-shadow: 0 10px 32px color-mix(in srgb, var(--ink-base) 18%, transparent);
  display: grid;
  gap: 4px;
  z-index: 95;
}
.center-popover-head {
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 0 6px 8px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 14%, transparent);
  margin-bottom: 4px;
}
.center-popover-title { font-size: 11px; letter-spacing: 0.22em; color: var(--ink-soft); }
.center-popover-head .en { font-size: 9px; letter-spacing: 0.22em; color: var(--ink-faint); }

.center-item {
  appearance: none;
  min-height: 54px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 5px;
  padding: 8px 10px;
  display: grid;
  grid-template-columns: 1fr 8px;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  color: var(--ink-soft);
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.center-item:hover {
  background: color-mix(in srgb, var(--ink-faint) 6%, transparent);
  color: var(--ink-base);
}
.center-item.is-active {
  background: color-mix(in srgb, var(--mineral-blue) 10%, transparent);
  border-color: color-mix(in srgb, var(--mineral-blue) 36%, transparent);
  color: var(--ink-base);
}
.center-item-mark {
  width: 26px; height: 26px;
  display: grid; place-items: center;
  font-size: 14px;
  color: color-mix(in srgb, var(--ink-base) 78%, transparent);
  background: color-mix(in srgb, var(--rice) 70%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 3px;
  font-family: "STKaiti", "KaiTi", serif;
}
.center-item-main { display: grid; gap: 1px; min-width: 0; }
.center-item-name { font-size: 13px; letter-spacing: 0.04em; }
.center-item-desc {
  font-size: 10px; color: var(--ink-faint);
  white-space: normal;
  overflow: visible;
  text-overflow: clip;
  line-height: 1.4;
}
.center-item-status {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--ink-faint);
}
.center-item-status.is-on    { background: var(--mineral-green); }
.center-item-status.is-busy  { background: var(--gold); animation: cardSlotBusy 1.4s ease-in-out infinite; }
.center-item-status.is-off   { background: var(--vermilion); opacity: 0.55; }

.center-flow-backdrop {
  position: fixed;
  inset: 0;
  z-index: 90;
  background: rgba(0, 0, 0, 0.42);
  opacity: 0;
  transition: opacity 0.18s ease;
}
.center-flow-backdrop.is-open { opacity: 1; }
.center-flow-modal {
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 91;
  width: min(720px, 92vw);
  min-height: min(520px, 80vh);
  max-height: 80vh;
  overflow: auto;
  transform: translate(-50%, -48%) scale(0.98);
  opacity: 0;
  padding: 24px;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 8px;
  box-shadow: 0 30px 100px rgba(20, 25, 32, 0.28);
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.center-flow-modal.is-open {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}
.center-flow-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 24px;
}
.center-flow-head h2 { margin: 0; font-size: 22px; }
.center-flow-head p { margin: 4px 0 0; color: var(--ink-faint); font-size: 11px; letter-spacing: 0.18em; }
.center-flow-close {
  width: 32px;
  height: 32px;
  color: var(--ink-faint);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 32%, transparent);
  border-radius: 50%;
  cursor: pointer;
  font-size: 22px;
  line-height: 1;
}
.center-flow-rail {
  --center-accent: var(--mineral-blue);
  display: flex;
  align-items: stretch;
  gap: 12px;
  min-width: 0;
  overflow-x: auto;
  padding: 12px 4px 18px;
}
.flow-step {
  position: relative;
  min-width: 112px;
  display: grid;
  align-content: start;
  justify-items: center;
  gap: 8px;
}
.flow-node {
  min-height: 54px;
  width: 100%;
  display: grid;
  place-items: center;
  padding: 10px 12px;
  color: var(--ink);
  background: color-mix(in srgb, var(--center-accent) 9%, var(--paper-soft));
  border: 1px solid color-mix(in srgb, var(--center-accent) 42%, transparent);
  border-radius: 8px;
  text-align: center;
  font-size: 13px;
}
.flow-step small {
  color: var(--ink-faint);
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 10px;
}
.flow-arrow {
  position: absolute;
  right: -14px;
  top: 18px;
  color: var(--center-accent);
  font-size: 18px;
}

.workspace-center-view {
  --center-accent: var(--mineral-blue);
  width: calc(100% - 24px);
  margin: 10px auto;
  padding: 14px 16px;
  border: 1px solid color-mix(in srgb, var(--center-accent) 32%, transparent);
  border-left: 3px solid var(--center-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--center-accent) 5%, transparent);
  display: grid; gap: 12px;
}
.center-filter-label {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: 6px 10px;
  color: var(--center-accent);
  background: color-mix(in srgb, var(--center-accent) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--center-accent) 28%, transparent);
  border-radius: 999px;
  font-size: 12px;
}
.center-filter-back {
  margin-left: 10px;
  padding: 4px 12px;
  border-radius: 999px;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 40%, transparent);
  color: var(--ink-soft);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
  transition: background 0.2s, color 0.2s;
}
.center-filter-back:hover {
  background: var(--ink);
  color: var(--paper);
}
.center-view-head { display: flex; align-items: center; gap: 12px; }
.center-view-mark {
  width: 30px; height: 30px;
  display: grid; place-items: center;
  font-size: 17px;
  font-family: "STKaiti", "KaiTi", serif;
  background: color-mix(in srgb, var(--center-accent) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--center-accent) 40%, transparent);
  border-radius: 4px;
  color: var(--center-accent);
}
.workspace-center-view h3 { margin: 0; font-size: 14px; letter-spacing: 0.04em; }
.workspace-center-view h3 .en { font-size: 10px; letter-spacing: 0.22em; color: var(--ink-faint); margin-left: 6px; }
.center-view-desc { margin: 2px 0 0; font-size: 12px; color: var(--ink-soft); }
.center-workflow-current {
  padding: 11px 13px;
  display: grid;
  gap: 6px;
  background: #202123;
  border: 1px solid rgba(255,255,255,0.08);
  border-left: 3px solid var(--center-accent);
  border-radius: 8px;
}
.center-workflow-kicker {
  color: var(--ink-faint);
  font-size: 10px;
  letter-spacing: 0.18em;
}
.center-workflow-current h4 {
  margin: 0;
  color: var(--ink);
  font-size: 13px;
  font-weight: 600;
}
.center-workflow-meta,
.center-workflow-summary {
  margin: 0;
  color: var(--ink-faint);
  font-size: 11px;
  line-height: 1.55;
}
.center-workflow-summary {
  color: var(--ink-soft);
}
.center-workflow-list {
  list-style: none;
  margin: 0;
  padding: 4px 0;
  display: grid;
  gap: 0;
}
.center-workflow-step {
  display: grid;
  grid-template-columns: 18px minmax(92px, 132px) minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 7px 0;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.center-workflow-step:last-child {
  border-bottom: 0;
}
.center-workflow-dot {
  width: 8px;
  height: 8px;
  margin-top: 6px;
  border-radius: 50%;
  background: var(--ink-faint);
}
.center-workflow-step.is-done .center-workflow-dot {
  background: var(--ink-faint);
}
.center-workflow-step.is-running .center-workflow-dot {
  background: var(--mineral-blue);
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--mineral-blue) 16%, transparent);
}
.center-workflow-step.is-blocked .center-workflow-dot {
  background: var(--vermilion);
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--vermilion) 14%, transparent);
}
.center-workflow-role {
  color: var(--ink-faint);
  font-size: 11px;
  overflow-wrap: anywhere;
}
.center-workflow-action {
  color: var(--ink);
  font-size: 12px;
  line-height: 1.5;
}
.center-workflow-step.is-pending .center-workflow-action,
.center-workflow-step.is-pending .center-workflow-role,
.center-workflow-step.is-done .center-workflow-action,
.center-workflow-step.is-done .center-workflow-role {
  color: var(--ink-faint);
}
.center-workflow-receipt {
  padding: 12px 14px;
  background: #1b1c1e;
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 8px;
}
.center-workflow-receipt h4,
.center-task-section-title {
  margin: 0;
  color: var(--ink-faint);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.16em;
}
.center-workflow-receipt p {
  max-height: 110px;
  margin: 8px 0 0;
  overflow: auto;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.7;
  white-space: pre-wrap;
}
.center-task-list { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; }
.center-task-item {
  display: grid;
  grid-template-columns: 8px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: color-mix(in srgb, var(--rice) 28%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 14%, transparent);
  border-radius: 4px;
  font-size: 13px;
}
.center-task-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ink-faint); }
.center-task-dot[data-status="已完成"]  { background: var(--mineral-green); }
.center-task-dot[data-status="进行中"]  { background: var(--mineral-blue); }
.center-task-dot[data-status="已失败"]  { background: var(--vermilion); opacity: 0.7; }
.center-task-dot[data-status="待审批"]  { background: var(--gold); }
.center-task-title { color: var(--ink-base); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.center-task-meta { font-size: 9px; letter-spacing: 0.18em; color: var(--ink-faint); }
.center-task-empty {
  padding: 14px 12px;
  text-align: center;
  font-size: 12px;
  color: var(--ink-faint);
  background: color-mix(in srgb, var(--rice) 24%, transparent);
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 4px;
}

/* —— 历史:UX2 四卡槽 CSS(已退役,留作 UX2 自检向后兼容) —— */
.card-slots {
  margin: 16px 12px 14px;
  padding-top: 12px;
  border-top: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  display: grid;
  gap: 6px;
}
.card-slots-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: 0 2px 6px;
}
.card-slots-title {
  font-size: 12px;
  letter-spacing: 0.18em;
  color: var(--ink-soft);
}
.card-slots-head .en {
  font-size: 9px;
  letter-spacing: 0.22em;
  color: var(--ink-faint);
}
.card-slot {
  appearance: none;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 16%, transparent);
  border-radius: 5px;
  padding: 6px 8px;
  display: grid;
  grid-template-columns: 22px 1fr 8px;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  text-align: left;
  font-family: inherit;
  color: var(--ink-soft);
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.card-slot:hover {
  background: color-mix(in srgb, var(--ink-faint) 6%, transparent);
  border-color: color-mix(in srgb, var(--ink-faint) 32%, transparent);
  color: var(--ink-base);
}
.card-slot.is-active {
  background: color-mix(in srgb, var(--mineral-blue) 10%, transparent);
  border-color: color-mix(in srgb, var(--mineral-blue) 40%, transparent);
  color: var(--ink-base);
}
.card-slot-mark {
  width: 22px;
  height: 22px;
  display: grid;
  place-items: center;
  font-size: 13px;
  color: color-mix(in srgb, var(--ink-base) 78%, transparent);
  background: color-mix(in srgb, var(--rice) 70%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 3px;
  font-family: "STKaiti", "KaiTi", serif;
}
.card-slot-main {
  display: grid;
  gap: 1px;
  min-width: 0;
}
.card-slot-name {
  font-size: 12px;
  letter-spacing: 0.06em;
}
.card-slot-role {
  font-size: 10px;
  color: var(--ink-faint);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.card-slot-status {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--ink-faint);
}
.card-slot-status.is-on    { background: var(--mineral-green); }
.card-slot-status.is-busy  { background: var(--gold); animation: cardSlotBusy 1.4s ease-in-out infinite; }
.card-slot-status.is-off   { background: var(--vermilion); opacity: 0.55; }
@keyframes cardSlotBusy {
  0%, 100% { opacity: 0.45; }
  50%      { opacity: 1; }
}

.workspace-card-detail {
  --card-accent: var(--mineral-blue);
  margin: 12px 18px;
  padding: 18px 20px;
  border: 1px solid color-mix(in srgb, var(--card-accent) 32%, transparent);
  border-left: 3px solid var(--card-accent);
  border-radius: 6px;
  background: color-mix(in srgb, var(--card-accent) 5%, transparent);
  display: grid;
  gap: 10px;
}
.workspace-card-detail header {
  display: flex;
  align-items: center;
  gap: 12px;
}
.card-detail-mark {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  font-size: 20px;
  font-family: "STKaiti", "KaiTi", serif;
  background: color-mix(in srgb, var(--card-accent) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--card-accent) 40%, transparent);
  border-radius: 4px;
  color: var(--card-accent);
}
.workspace-card-detail h3 {
  margin: 0;
  font-size: 16px;
  letter-spacing: 0.04em;
}
.workspace-card-detail h3 .en {
  font-size: 10px;
  letter-spacing: 0.22em;
  color: var(--ink-faint);
  margin-left: 6px;
}
.card-detail-role {
  margin: 2px 0 0;
  font-size: 12px;
  color: var(--ink-soft);
}
.card-detail-who {
  margin: 0;
  font-size: 13px;
  line-height: 1.65;
  color: var(--ink-base);
}
.workspace-card-detail footer {
  font-size: 9px;
  letter-spacing: 0.24em;
  color: var(--ink-faint);
  text-align: right;
}
/* DREAM-WEB v3.1-UX1 · 审查/细节视图占位卡片 */
.workspace-review-list { display: grid; gap: 10px; }
.workspace-review-card {
  padding: 12px 14px;
  background: color-mix(in srgb, var(--ink-faint) 6%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 6px;
}
.workspace-review-card header { display: flex; gap: 10px; align-items: baseline; margin-bottom: 6px; }
.workspace-review-card h3 { margin: 0; font-size: 14px; font-weight: 500; }
.workspace-review-card .review-status {
  font-size: 11px; padding: 1px 8px; color: var(--paper);
  background: #c75450; border-radius: 3px;
}
.workspace-review-card p { margin: 0; color: var(--ink-soft); font-size: 13px; }
.workspace-review-card footer { margin-top: 6px; font-size: 10px; letter-spacing: 0.14em; color: var(--ink-faint); }
.workspace-detail-card {
  padding: 14px 18px;
  background: color-mix(in srgb, var(--ink-faint) 4%, transparent);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 14%, transparent);
  border-radius: 6px;
}
.workspace-detail-card header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; }
.workspace-detail-card h3 { margin: 0; font-size: 15px; }
.workspace-detail-card h4 { margin: 14px 0 6px; font-size: 12px; letter-spacing: 0.26em; color: var(--ink-soft); }
.workspace-detail-card pre {
  margin: 0; padding: 10px 12px; white-space: pre-wrap;
  background: var(--paper); border-radius: 4px; font-family: inherit; font-size: 13px;
}
.workspace-detail-list {
  margin: 8px 0 0;
  padding-left: 1.15em;
  display: grid;
  gap: 6px;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.55;
}

/* === 左栏 · 任务库 === */
.task-rail {
  position: sticky;
  top: 88px;
  padding: 20px 18px;
  background: #1a1b1d;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  max-height: calc(100vh - 112px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow: hidden;
  box-shadow: 0 18px 48px rgba(0,0,0,0.22);
}
.rail-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}
/* DREAM-WEB v3.1-T1 · 项目下拉(Projects 容器) */
.project-switcher {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 10px;
  margin-bottom: 2px;
  background: #202123;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 6px;
}
.project-switcher-label {
  font-size: 11px;
  letter-spacing: 0.32em;
  color: var(--ink-soft);
  flex: 0 0 auto;
}
.project-select {
  flex: 1;
  min-width: 0;
  padding: 4px 6px;
  font-size: 13px;
  font-family: inherit;
  color: var(--ink);
  background: transparent;
  border: none;
  outline: none;
  cursor: pointer;
}
.project-select:focus { color: var(--ink-strong, var(--ink)); }
/* DREAM-WEB v3.1-T2 · 版本切换 tabs(v1/v2/v3) */
.output-version-tabs {
  display: inline-flex;
  gap: 4px;
  margin-left: auto;
  align-items: center;
}
.output-version-tab {
  padding: 2px 8px;
  font-size: 11px;
  font-family: inherit;
  color: var(--ink-soft);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  border-radius: 3px;
  cursor: pointer;
}
.output-version-tab:hover { color: var(--ink); }
.output-version-tab.is-active {
  color: var(--paper-soft, #fff);
  background: var(--ink-strong, var(--ink));
  border-color: var(--ink-strong, var(--ink));
}
/* DREAM-WEB v3.1-T5 · 额度优雅提示(顶部 1px 黛青) */
.quota-strip {
  position: relative;
  height: 1px;
  background: color-mix(in srgb, var(--ink-faint) 8%, transparent);
  z-index: 50;
}
.quota-strip-fill {
  height: 100%;
  width: 0;
  background: #4a5e72; /* 黛青 */
  transition: width 0.4s ease;
}
.quota-strip.is-warning .quota-strip-fill { background: #c75450; }
.quota-strip-tip {
  position: absolute;
  top: 6px;
  right: 12px;
  padding: 4px 10px;
  font-size: 11px;
  color: var(--ink-soft);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 4px;
  white-space: nowrap;
  z-index: 60;
}
.quota-strip-tip a { color: inherit; text-decoration: none; }
.quota-strip-tip a:hover { color: var(--ink-strong, var(--ink)); }
.quota-strip:hover { height: 2px; }
/* DREAM-WEB v3.1-T6 · fallback 卡 */
.workspace-fallback-card {
  margin: 24px auto;
  max-width: 520px;
  padding: 22px 26px;
  background: color-mix(in srgb, var(--ink-faint) 6%, transparent);
  border: 1px dashed color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 8px;
}
.fallback-head { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.fallback-icon {
  font-size: 18px;
  color: #4a5e72;
  animation: fallback-spin 1.8s linear infinite;
}
@keyframes fallback-spin { to { transform: rotate(360deg); } }
.fallback-title { margin: 0; font-size: 16px; font-weight: 500; letter-spacing: 0.06em; }
.fallback-hint { margin: 4px 0 12px; color: var(--ink-soft); font-size: 13px; }
.fallback-meta { font-size: 10px; color: var(--ink-soft); letter-spacing: 0.16em; }
.rail-head .column-head { margin: 0; flex: 1; }
.rail-head .column-title-cn { font-size: 18px; letter-spacing: 0.28em; }
.rail-head .column-title-en { font-size: 9px; }
.rail-tabs {
  display: flex;
  align-items: center;
  gap: 8px;
}
.rail-tab {
  padding: 0;
  color: var(--ink-faint);
  background: transparent;
  border: 0;
  cursor: pointer;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 17px;
  letter-spacing: 0.22em;
  transition: color 0.2s ease;
}
.rail-tab.fav-tab {
  font-size: 13px;
  letter-spacing: 0.08em;
}
.rail-tab.is-active,
.rail-tab:hover {
  color: var(--ink);
}
.rail-tab + .rail-tab::before {
  content: "";
  display: inline-block;
  width: 1px;
  height: 12px;
  margin-right: 8px;
  background: color-mix(in srgb, var(--ink-faint) 34%, transparent);
  vertical-align: -1px;
}
.task-filter-dots {
  display: flex;
  align-items: center;
  gap: 6px;
  padding-top: 2px;
}
.task-filter-dot {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,0.16);
  border-radius: 50%;
  background: transparent;
  color: var(--ink-faint);
  cursor: pointer;
  transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}
.task-filter-dot span {
  width: 8px;
  height: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-size: 9px;
  line-height: 1;
}
.task-filter-dot[data-status="已完成"] span { background: var(--mineral-green); }
.task-filter-dot[data-status="进行中"] span { background: var(--mineral-blue); }
.task-filter-dot[data-status="已失败"] span { background: var(--vermilion); opacity: 0.72; }
.task-filter-dot.is-active {
  border-color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 16%, transparent);
  color: var(--mineral-blue);
  transform: translateY(-1px);
}
.task-search {
  height: 34px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 10px;
  color: var(--ink-faint);
  background: #202123;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 999px;
}
.task-search input {
  width: 100%;
  min-width: 0;
  border: 0;
  outline: 0;
  color: var(--ink);
  background: transparent;
  font: inherit;
  font-size: 12px;
}
.task-search input::placeholder { color: var(--ink-faint); }
.task-fav-only {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex: 0 0 auto;
  color: var(--ink-faint);
  font-size: 11px;
  white-space: nowrap;
}
.task-fav-only input {
  width: auto;
  accent-color: var(--vermilion);
}
.rail-collapse {
  background: transparent;
  border: 1px solid rgba(255,255,255,0.14);
  width: 28px; height: 28px;
  border-radius: 50%;
  cursor: pointer;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1;
  transition: all 0.2s ease;
  position: relative;
  z-index: 5;
  pointer-events: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.rail-collapse:hover { color: var(--ink); border-color: var(--ink); }
.rail-collapse svg { transition: transform 0.2s ease; pointer-events: none; }
.rail-collapse.is-flipped svg { transform: rotate(180deg); }

.task-rail .task-list {
  flex: 0 1 auto;
  max-height: min(360px, 42vh);
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-right: 4px;
}
.task-date-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.task-date-title {
  margin: 2px 0 0;
  color: var(--ink-faint);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 0.34em;
}
.task-rail .task-card {
  position: relative;
  display: grid;
  grid-template-columns: 3px 1fr;
  gap: 10px;
  padding: 10px 28px 10px 12px;
  background: #202123;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color 0.2s ease, background 0.2s ease, transform 0.15s ease;
}
.fav-star {
  position: absolute;
  top: 8px;
  right: 8px;
  z-index: 2;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-faint);
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
}
.fav-star:hover,
.fav-star.is-fav {
  color: var(--vermilion);
}
.task-rail .task-card:hover {
  border-color: color-mix(in srgb, var(--mineral-blue) 44%, transparent);
  background: #25272a;
}
.task-rail .task-card.is-selected {
  border-color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 10%, #202123);
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--mineral-blue) 30%, transparent);
}
.task-rail .task-status-rail {
  border-radius: 2px;
  background: var(--ink-faint);
}
.task-rail .task-card.status-done .task-status-rail   { background: var(--mineral-green); }
.task-rail .task-card.status-running .task-status-rail{ background: var(--mineral-blue); }
.task-rail .task-card.status-failed .task-status-rail { background: var(--vermilion); opacity: 0.7; }
.task-rail .task-card.status-approved .task-status-rail{ background: var(--gold); }
.task-rail .task-title {
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  line-height: 1.45;
  margin: 0 0 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.task-rail .task-meta {
  display: flex;
  gap: 8px;
  font-size: 10px;
  color: var(--ink-faint);
  align-items: center;
  flex-wrap: wrap;
}
.task-rail .task-executor {
  color: var(--mineral-blue);
  font-weight: 500;
}
.task-rail .task-status-text {
  font-size: 10px;
  letter-spacing: 0.08em;
}
.task-rail .task-card.status-done .task-status-text   { color: var(--green-deep); }
.task-rail .task-card.status-running .task-status-text{ color: var(--blue-deep); }
.task-rail .task-card.status-failed .task-status-text { color: var(--vermilion); }
.task-rail .task-card.status-approved .task-status-text{ color: var(--gold); }
.task-rail .template-card {
  grid-template-columns: 30px 1fr;
  align-items: center;
}
.template-icon {
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: var(--paper);
  background: var(--mineral-blue);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: 14px;
}
.task-empty {
  padding: 18px 8px;
  color: var(--ink-faint);
  font-size: 12px;
  text-align: center;
}

.task-rail .task-more-btn {
  align-self: stretch;
  justify-content: center;
}

/* === 中栏 · 造梦 === */
.compose-area {
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
  min-height: 0;
}

/* === 右栏 · 焦点区 === */
.focus-pane {
  position: sticky;
  top: 88px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
  border-radius: 8px;
  padding: 22px 22px 20px;
  max-height: calc(100vh - 112px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow: hidden;
}
.focus-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
}
.focus-head .column-head { margin: 0; }
.focus-head .column-title-cn { font-size: 18px; letter-spacing: 0.28em; }
.focus-head .column-title-en { font-size: 9px; }
.focus-mode-tag {
  font-size: 10px;
  letter-spacing: 0.18em;
  color: var(--ink-faint);
  padding: 3px 10px;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 999px;
}
.focus-pane[data-mode="result"] .focus-mode-tag {
  color: var(--mineral-blue);
  border-color: color-mix(in srgb, var(--mineral-blue) 40%, transparent);
}

.focus-state {
  flex: 1;
  overflow-y: auto;
  padding-right: 2px;
}
.focus-state[hidden] { display: none; }

/* 焦点区翻译态：复用已有 translation-box */
.focus-state-translate .translation-box {
  border-left: none;
  border: none;
  background: transparent;
  padding: 8px 0;
  min-height: auto;
}

/* 焦点区结果态 */
.result-head {
  position: relative;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px dashed color-mix(in srgb, var(--ink-faint) 24%, transparent);
}
.result-export-actions {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  gap: 8px;
}
.result-export-btn {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-soft);
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  border-radius: 50%;
  cursor: pointer;
  font-size: 14px;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.result-export-btn:hover {
  color: var(--ink);
  border-color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 8%, var(--paper));
}
.result-id {
  padding-right: 76px;
  font-size: 10px;
  color: var(--ink-faint);
  letter-spacing: 0.18em;
  margin-bottom: 6px;
}
.result-head h3 {
  font-family: "Noto Serif SC", serif;
  font-size: 17px;
  color: var(--ink);
  line-height: 1.5;
  margin: 0 0 8px;
}
.result-meta {
  font-size: 12px;
  color: var(--ink-soft);
}
.result-block {
  position: relative;
  margin-bottom: 18px;
}
.result-block-copy {
  position: absolute;
  top: 8px;
  right: 8px;
  min-height: 24px;
  padding: 0 9px;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  border-radius: 4px;
  background: var(--paper);
  color: var(--ink-soft);
  cursor: pointer;
  font-size: 12px;
}
.result-block-copy:hover {
  color: var(--mineral-blue);
  border-color: var(--mineral-blue);
}
.workspace-result-flow {
  width: min(760px, 100%);
  display: grid;
  gap: 14px;
}
.workspace-result-flow > header {
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.workspace-result-flow h3 {
  margin: 0;
  font-size: 20px;
  font-weight: 500;
  color: var(--ink);
}
.result-block h4 {
  font-size: 11px;
  letter-spacing: 0.2em;
  color: var(--ink-faint);
  margin-bottom: 8px;
  font-weight: 500;
}
.timeline-block {
  padding: 14px 0 4px;
}
.timeline-list {
  display: grid;
  gap: 0;
}
.timeline-node {
  position: relative;
  display: grid;
  grid-template-columns: 18px 1fr;
  gap: 10px;
  min-height: 46px;
  color: var(--ink-faint);
}
.timeline-node:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 16px;
  left: 5px;
  width: 1px;
  height: calc(100% - 12px);
  background: color-mix(in srgb, var(--ink-faint) 42%, transparent);
}
.timeline-dot {
  position: relative;
  z-index: 1;
  width: 11px;
  height: 11px;
  margin-top: 4px;
  border-radius: 50%;
  background: var(--mountain-gray);
}
.timeline-node.is-done .timeline-dot { background: var(--mineral-green); }
.timeline-node.is-running .timeline-dot { background: var(--mineral-blue); }
.timeline-node strong {
  display: block;
  color: var(--ink);
  font-size: 13px;
  font-weight: 500;
}
.timeline-node p {
  margin: 3px 0 0;
  color: var(--ink-soft);
  font-size: 12px;
  line-height: 1.5;
}
.thinking-block {
  background: var(--thinking-bg);
  border-left: 2px solid var(--mineral-blue);
  padding: 14px 16px;
  border-radius: 2px;
  color: var(--thinking-text);
  font-style: italic;
  font-size: 13px;
  line-height: 1.7;
}
.output-block {
  background: var(--output-bg);
  border: 1px solid var(--output-border);
  padding: 14px 16px;
  border-radius: 4px;
  color: var(--ink);
  font-size: 13px;
  line-height: 1.7;
}
.output-block p {
  margin: 0 0 6px;
}
.output-block p:last-child { margin-bottom: 0; }
.detail-line {
  padding-left: 12px;
  text-indent: -10px;
}
.result-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 6px;
}
.result-followup {
  margin-top: 16px;
  display: grid;
  gap: 10px;
  font-family: "Noto Serif SC", "Songti SC", serif;
}
.followup-stack {
  display: grid;
  gap: 8px;
}
.followup-bubble {
  max-width: 82%;
  padding: 9px 12px;
  border-radius: 8px;
  font-size: 13px;
  line-height: 1.6;
}
.followup-bubble.is-user {
  justify-self: end;
  background: color-mix(in srgb, var(--mineral-blue) 12%, transparent);
  color: var(--ink);
}
.followup-bubble.is-ai {
  justify-self: start;
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 22%, transparent);
  color: var(--ink-soft);
}
.followup-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
}
.followup-form textarea {
  min-height: 42px;
  resize: vertical;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 24%, transparent);
  border-radius: 6px;
  padding: 8px 10px;
  background: var(--paper);
  color: var(--ink);
  font: inherit;
}
.followup-form button {
  border: 1px solid var(--ink);
  border-radius: 6px;
  padding: 0 14px;
  background: var(--ink);
  color: var(--paper);
  cursor: pointer;
}
.result-close,
.result-reuse,
.result-secondary {
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  border-radius: 999px;
  cursor: pointer;
  font-size: 12px;
  letter-spacing: 0.08em;
  padding: 7px 12px;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.result-close {
  color: var(--mineral-blue);
}
.result-reuse {
  color: var(--paper);
  background: var(--ink);
  border-color: var(--ink);
}
.result-secondary {
  color: var(--mineral-blue);
  background: transparent;
  border-color: color-mix(in srgb, var(--mineral-blue) 48%, transparent);
}
.result-close:hover,
.result-reuse:hover,
.result-secondary:hover {
  color: var(--ink);
  border-color: var(--ink);
  background: var(--paper-soft);
}

/* === 三栏响应式（≤1100px 收起左栏，≤768 单列堆叠） === */
@media (max-width: 1100px) {
  .dashboard-shell.three-col {
    grid-template-columns: 64px minmax(0, 1fr);
  }
  body:not(.rail-expanded) .task-rail .task-list,
  body:not(.rail-expanded) .task-rail .task-more-btn,
  body:not(.rail-expanded) .task-rail .column-head {
    display: none;
  }
  .task-rail .task-list {
    flex: 0 0 auto;
    overflow: visible;
  }
}
@media (max-width: 768px) {
  .dashboard-shell.three-col {
    grid-template-columns: 1fr;
    gap: 16px;
    height: auto;
    min-height: calc(100vh - 72px);
  }
  .workstage {
    order: -1;
    min-height: calc(100vh - 116px);
  }
  .workspace-canvas {
    min-height: 48vh;
  }
  .workspace-body {
    min-height: 280px;
  }
  .dream-flow-head {
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .flow-status-pill {
    margin-left: auto;
  }
  .dream-flow-step {
    grid-template-columns: 18px 62px minmax(0, 1fr);
    gap: 8px;
  }
  .dream-flow-step .flow-role {
    grid-column: 3;
  }
  .dream-flow-step .flow-copy {
    grid-column: 3;
  }
  .task-rail {
    max-height: 42vh;
  }
  .task-rail, .focus-pane {
    position: static;
  }
  .task-rail .task-list,
  .task-rail .task-more-btn,
  .task-rail .column-head { display: flex !important; }
  .task-rail .column-head { display: block !important; }
  .task-rail .task-list {
    flex: 0 0 auto;
    overflow: visible;
  }
  .rail-collapse { display: none; }
}

/* === 成果抽屉:右侧贴边拉手 + 抽出面板 === */
.output-handle {
  position: fixed;
  top: 50%;
  right: 0;
  z-index: 65;
  transform: translateY(-50%);
  width: 28px;
  min-height: 92px;
  padding: 14px 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: var(--ink-soft);
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 26%, transparent);
  border-right: none;
  border-radius: 6px 0 0 6px;
  cursor: pointer;
  font-family: "Source Han Serif SC", "Noto Serif SC", "EB Garamond", serif;
  font-size: 13px;
  letter-spacing: 0.08em;
  transition: transform 0.22s ease, background 0.22s ease, color 0.22s ease;
}
.output-handle:hover {
  color: var(--ink);
  background: var(--paper);
}
.output-handle-cn { line-height: 1.25; }
.output-handle-arrow {
  font-family: "EB Garamond", Georgia, serif;
  font-size: 14px;
  color: var(--ink-faint);
  transition: transform 0.22s ease;
}
.output-handle.is-open {
  right: min(420px, 80vw);
}
.output-handle.is-open .output-handle-arrow {
  transform: rotate(180deg);
}
.output-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 64;
  width: min(420px, 80vw);
  height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--paper);
  border-left: 1px solid color-mix(in srgb, var(--ink-faint) 28%, transparent);
  box-shadow: -8px 0 24px rgba(20, 24, 34, 0.08);
  transform: translateX(100%);
  transition: transform 0.24s ease;
}
.output-drawer.is-open { transform: translateX(0); }
.output-drawer .settings-head {
  padding: 22px 24px 14px;
  border-bottom: 1px solid color-mix(in srgb, var(--ink-faint) 18%, transparent);
}
.output-list {
  flex: 1;
  overflow-y: auto;
  padding: 18px 22px 28px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.output-empty {
  margin: 16px 0;
  color: var(--ink-faint);
  font-size: 13px;
  line-height: 1.7;
}
.output-card {
  padding: 14px 16px;
  background: var(--paper-soft);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 20%, transparent);
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.output-card header {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}
.output-card h3 {
  margin: 0;
  font-size: 14px;
  color: var(--ink);
  font-weight: 500;
}
.output-card time {
  margin-left: auto;
  font-size: 11px;
  color: var(--ink-faint);
  letter-spacing: 0.06em;
}
.output-kind {
  padding: 2px 6px;
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--mineral-blue);
  background: color-mix(in srgb, var(--mineral-blue) 10%, transparent);
  border-radius: 3px;
}
.output-card p {
  margin: 0;
  font-size: 13px;
  color: var(--ink-soft);
  line-height: 1.7;
}
.output-actions {
  display: flex;
  gap: 8px;
  margin-top: 4px;
}
.output-action {
  min-height: 28px;
  padding: 0 12px;
  font: inherit;
  font-size: 12px;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid color-mix(in srgb, var(--ink-faint) 30%, transparent);
  border-radius: 4px;
  cursor: pointer;
}
.output-action:hover {
  border-color: var(--mineral-blue);
  color: var(--mineral-blue);
}
@media (max-width: 768px) {
  .output-handle { top: auto; bottom: 16px; transform: none; }
  .output-handle.is-open { right: min(360px, 92vw); }
}


/* ============================================
   首页宣传视频 · 4 段说人话 · 28s 一次性
   ============================================ */
.hero-video {
  position: fixed; inset: 0; z-index: 1000;
  background: linear-gradient(180deg, #0e1418 0%, #14202a 50%, #182b34 100%);
  overflow: hidden;
  opacity: 1;
  transition: opacity 0.8s ease;
}
.hero-video.is-done { opacity: 0; pointer-events: none; }
.hero-video.is-skipped { display: none; }
.theme-light .hero-video {
  background: linear-gradient(180deg, #f3ede0 0%, #e8e4d0 50%, #d6dccc 100%);
}

.hero-skip {
  position: absolute; right: 28px; top: 28px;
  padding: 8px 18px; border-radius: 999px;
  background: transparent; color: rgba(232,226,208,0.7);
  border: 1px solid rgba(232,226,208,0.32);
  font: inherit; font-size: 12px; letter-spacing: 0.22em;
  cursor: pointer; z-index: 20;
  transition: color 0.2s, border-color 0.2s, background 0.2s;
}
.hero-skip:hover { color: #fff; border-color: rgba(232,226,208,0.7); }
.theme-light .hero-skip { color: rgba(47,72,88,0.72); border-color: rgba(47,72,88,0.32); }
.theme-light .hero-skip:hover { color: #2f4858; border-color: rgba(47,72,88,0.7); }

/* 全程固定 slogan(底部不动) */
.hv-slogan-fixed {
  position: absolute; left: 50%; bottom: 9%;
  transform: translateX(-50%);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: clamp(14px, 1.6vw, 18px);
  letter-spacing: 0.42em;
  color: rgba(232,226,208,0.78);
  z-index: 5;
  white-space: nowrap;
  animation: hvSloganGrow 2.2s cubic-bezier(0.4, 0, 0.2, 1) 22.0s forwards;
}
/* 段 4 与造夢師 AI 标题同框:slogan 上移近中心并放大到登录页尺寸 */
@keyframes hvSloganGrow {
  0%   { bottom: 9%;  font-size: clamp(14px, 1.6vw, 18px); letter-spacing: 0.42em; }
  100% { bottom: 36%; font-size: clamp(22px, 2.6vw, 28px); letter-spacing: 0.28em; }
}
.theme-light .hv-slogan-fixed { color: rgba(47,72,88,0.74); }
/* slogan 逐字浮现 · 造夢師 AI 在 1.6s 完整显示,3.4s 起每字 0.18s 顺序浮现 */
.hv-sg-c {
  display: inline-block;
  opacity: 0;
  transform: translateY(6px);
  animation: hvSgChar 32s ease-out forwards;
}
.hv-sg-c:nth-child(1) { animation-delay: 1.9s; }
.hv-sg-c:nth-child(2) { animation-delay: 2.08s; }
.hv-sg-c:nth-child(3) { animation-delay: 2.26s; }
.hv-sg-c:nth-child(4) { animation-delay: 2.44s; }
.hv-sg-c:nth-child(5) { animation-delay: 2.62s; }
.hv-sg-c:nth-child(6) { animation-delay: 2.80s; }
.hv-sg-c:nth-child(7) { animation-delay: 2.98s; }
.hv-sg-c:nth-child(8) { animation-delay: 3.16s; }
.hv-sg-c:nth-child(9) { animation-delay: 3.34s; }
.hv-sg-dot { margin: 0 0.3em; }
@keyframes hvSgChar {
  0%   { opacity: 0; transform: translateY(6px); }
  3%   { opacity: 1; transform: translateY(0); }
  94%  { opacity: 1; transform: translateY(0); }
  100% { opacity: 0; transform: translateY(0); }
}

/* 场景容器 */
.hv-scene {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  opacity: 0; pointer-events: none;
}
.hv-caption {
  position: absolute; left: 50%; bottom: 22%;
  transform: translateX(-50%);
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: clamp(16px, 2vw, 24px);
  letter-spacing: 0.2em;
  color: rgba(232,226,208,0.94);
  opacity: 0;
  white-space: nowrap;
}
.theme-light .hv-caption { color: rgba(47,72,88,0.92); }

@keyframes hvSceneShow {
  0% { opacity: 0; }
  10% { opacity: 1; }
  80% { opacity: 1; }
  100% { opacity: 0; }
}
@keyframes hvCaptionIn {
  0% { opacity: 0; transform: translateX(-50%) translateY(8px); }
  18% { opacity: 1; transform: translateX(-50%) translateY(0); }
  85% { opacity: 1; transform: translateX(-50%) translateY(0); }
  100% { opacity: 0; transform: translateX(-50%) translateY(0); }
}

/* —— 段 1 · 印章 + 标题(0–7s)—— */
.hv-s1 { animation: hvSceneShow 5s ease-in-out 0s forwards; }
/* 印章:中央出现 → 标题出现后飞到左上角钤印 */
.hv-seal-main {
  position: absolute;
  left: 50%; top: 50%;
  width: 132px; height: 132px;
  color: #c8281a;
  filter: drop-shadow(0 1px 2px rgba(160,40,30,0.35));
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.3);
  animation: hvSealJourney 3.5s cubic-bezier(0.5, 0, 0.3, 1) 0s forwards;
  z-index: 6;
}
.hv-seal-main svg { width: 100%; height: 100%; display: block; }
/* 印章方框 · 只在落地瞬间显形(钤印感) */
.hv-seal-frame { display: none; }
@keyframes hvFrameStamp {
  0%, 70%   { opacity: 0; }
  73%       { opacity: 1; }
  78%       { opacity: 0.85; }
  100%      { opacity: 1; }
}
.theme-light .hv-seal-main { color: #c8281a; }
.theme-dark .hv-seal-main { color: #e25040; }
/* 印章中央钤印 → 停在"造"字左上角(用 calc 锚标题位置) */
@keyframes hvSealJourney {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0.3); }
  18%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  42%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  72%  { opacity: 1; left: calc(50% - 23vw); top: calc(50% - 7vw); transform: translate(-50%, -50%) scale(0.5); }
  85%  { opacity: 1; left: calc(50% - 23vw); top: calc(50% - 7vw); transform: translate(-50%, -50%) scale(0.58); }
  100% { opacity: 1; left: calc(50% - 23vw); top: calc(50% - 7vw); transform: translate(-50%, -50%) scale(0.54); }
}
.hv-title {
  font-size: clamp(64px, 9vw, 120px);
  color: rgba(232,226,208,0.96);
  letter-spacing: 0.14em;
  opacity: 0;
  animation: hvTitleIn 7s ease-out 1.6s forwards;
}
.theme-light .hv-title { color: #2f4858; }
@keyframes hvTitleIn {
  0%   { opacity: 0; transform: translateY(20px); letter-spacing: 0.5em; }
  20%  { opacity: 1; transform: translateY(0); letter-spacing: 0.14em; }
  85%  { opacity: 1; }
  100% { opacity: 0; }
}

/* —— 段 2 · 小白发问 + 四中心(7–14s)—— */
.hv-s2 { animation: hvSceneShow 12s ease-in-out 5s forwards; }
.hv-s2 .hv-bubble {
  position: absolute;
  left: 50%; top: 22%;
  padding: 14px 28px;
  background: rgba(232,226,208,0.94);
  color: #2f4858;
  font-family: "Noto Serif SC", "Songti SC", serif;
  font-size: clamp(18px, 2.2vw, 26px);
  letter-spacing: 0.12em;
  border-radius: 999px;
  box-shadow: 0 6px 18px rgba(0,0,0,0.18);
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.6);
  white-space: nowrap;
  z-index: 4;
  animation: hvBubbleHold 12s ease-out 5.3s forwards;
}
.hv-s2 .hv-bubble::after {
  content: '';
  position: absolute; left: 50%; bottom: -14px;
  width: 0; height: 0;
  border: 8px solid transparent;
  border-top-color: rgba(232,226,208,0.94);
  transform: translateX(-50%);
}
.theme-light .hv-s2 .hv-bubble { background: #fff; color: #2f4858; }
/* 气泡 7.3s 起 15s 时长:0.6s 进场,4 卡都归位(~12.5s = 35%)淡出让 caption-2 接管 */
@keyframes hvBubbleHold {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0.5); }
  4%   { opacity: 1; transform: translate(-50%, -50%) scale(1.08); }
  7%   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  30%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  48%  { opacity: 0; transform: translate(-50%, -50%) scale(0.92); }
  100% { opacity: 0; }
}
/* 造梦师 总节点(树根)· 8.0s 进场 + 长定住 */
.hv-s2 .hv-root {
  position: absolute; left: 50%; top: 42%;
  transform: translate(-50%, -50%) scale(0.6);
  padding: 8px 20px;
  border: 1.4px solid rgba(126,169,154,0.7);
  border-radius: 6px;
  font-family: "Noto Serif SC", serif;
  font-size: clamp(16px, 1.8vw, 22px);
  letter-spacing: 0.16em;
  color: rgba(232,226,208,0.96);
  background: rgba(126,169,154,0.14);
  opacity: 0;
  z-index: 4;
  white-space: nowrap;
  animation: hvRootIn 5s ease-out 6s forwards;
}
.theme-light .hv-s2 .hv-root { color: #2f4858; border-color: rgba(94,138,122,0.6); background: rgba(94,138,122,0.1); }
/* root 8s 起 6s 时长 → 14s 终:0.5s 进场 / 持至 75%(12.5s)/ 100%(14s)淡完 */
@keyframes hvRootIn {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0.6); }
  8%   { opacity: 1; transform: translate(-50%, -50%) scale(1.06); }
  15%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  72%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(0.92); }
}
/* 树枝连线 SVG · 在 root 与四卡之间 */
.hv-s2 .hv-tree-lines {
  position: absolute;
  left: 50%; top: 47%;
  width: 720px; height: 110px;
  transform: translateX(-50%);
  color: rgba(126,169,154,0.7);
  opacity: 0;
  pointer-events: none;
  z-index: 2;
  animation: hvTreeIn 5s ease-out 6.4s forwards;
}
.theme-light .hv-s2 .hv-tree-lines { color: rgba(94,138,122,0.55); }
/* 树线 8.4s 起 5.6s 终于 14s,12.5s 起淡 */
@keyframes hvTreeIn {
  0%   { opacity: 0; }
  18%  { opacity: 1; }
  73%  { opacity: 1; }
  100% { opacity: 0; }
}
.hv-s2 .hv-cards {
  position: absolute; left: 50%; bottom: 22%;
  transform: translateX(-50%);
  display: grid; grid-template-columns: repeat(4, 160px);
  gap: 22px;
  z-index: 3;
}
.hv-s2 .hv-card {
  display: flex; flex-direction: column;
  align-items: center; gap: 6px;
  padding: 18px 22px;
  background: rgba(126,169,154,0.12);
  border: 1px solid rgba(126,169,154,0.5);
  border-radius: 8px;
  color: rgba(232,226,208,0.96);
  opacity: 0;
  transform-origin: center;
}
.hv-s2 .hv-card b {
  font-family: "Noto Serif SC", serif;
  font-size: clamp(15px, 1.7vw, 19px);
  font-weight: 500;
  letter-spacing: 0.18em;
  color: inherit;
}
.hv-s2 .hv-card em {
  font-style: normal;
  font-family: "EB Garamond", "Times New Roman", serif;
  font-size: clamp(11px, 1.2vw, 13px);
  letter-spacing: 0.1em;
  color: #7ea99a;
  white-space: nowrap;
}
.theme-light .hv-s2 .hv-card {
  background: rgba(94,138,122,0.08);
  border-color: rgba(94,138,122,0.5);
  color: #2f4858;
}
.theme-light .hv-s2 .hv-card em { color: #5e8a7a; }
/* 4 张卡 · 顺序进场:决策(8.5s)→开发(10.5s)→执行(12.5s)→训练(14.5s)
   每张:0.5s 从外飞到中央放大 → 0.6s 停留 → 0.8s 归位 → 保留到段 3 (~22s) 执行中心炸开 */
.hv-s2 .hv-card-1 { animation: hvCardSeq1 4.5s cubic-bezier(0.4, 0, 0.2, 1) 6.5s forwards; }
.hv-s2 .hv-card-2 { animation: hvCardSeq2 4.0s cubic-bezier(0.4, 0, 0.2, 1) 7.0s forwards; }
.hv-s2 .hv-card-3 { animation: hvCardSeq3 11.0s cubic-bezier(0.4, 0, 0.2, 1) 7.5s forwards; }
.hv-s2 .hv-card-4 { animation: hvCardSeq4 3.5s cubic-bezier(0.4, 0, 0.2, 1) 7.8s forwards; }
/* 卡 1-4 从造梦师根节点(viewport center,top:36%)长出 → 沿树枝下到本列
   卡组在 bottom:14% 一行排开,grid 中心相对各卡偏移:
   卡 1=-273px / 卡 2=-91px / 卡 3=+91px / 卡 4=+273px
   起点 = 根节点位置(各卡需 translate 到本卡相对根的位移,Y 上移 ~28vh) */
/* 卡 1/2/4:8.5/9.2/10.0s 起,~12.5s 「你只管说」出现瞬间淡去
   卡 3(执行):9.7s 起,12.5s 飞到造梦师位置 + 渐放大 → 22s 起炸开成 agent 矩阵 */
@keyframes hvCardSeq1 {
  0%   { opacity: 0; transform: translateY(-12px) scale(0.92); }
  18%  { opacity: 1; transform: translateY(0) scale(1); }
  73%  { opacity: 1; transform: translateY(0) scale(1); }
  82%  { opacity: 0; transform: translateY(0) scale(0.94); }
  100% { opacity: 0; }
}
@keyframes hvCardSeq2 {
  0%   { opacity: 0; transform: translateY(-12px) scale(0.92); }
  20%  { opacity: 1; transform: translateY(0) scale(1); }
  70%  { opacity: 1; transform: translateY(0) scale(1); }
  80%  { opacity: 0; transform: translateY(0) scale(0.94); }
  100% { opacity: 0; }
}
/* card-3 时长 16s 延迟 9.7s → 终于 25.7s
   0-3% 入场 / 3-17% 持原位
   17-37% 移到「我都能听懂」下方 translate(-91px, -28vh) scale 1.0(12.5-15.7s,与其他卡淡去同步)
   37-43% 持这个位置(15.7-16.6s,等 caption-2 淡完)
   43-49% 长大到 scale 2.0(16.6-17.5s,接管中央)
   49-92% 持 scale 2.0(同步 agent 矩阵生长 + 持久展示)
   92-100% 与 agent 矩阵一起淡出 */
@keyframes hvCardSeq3 {
  0%   { opacity: 0; transform: translate(0, -12px) scale(0.92); }
  3%   { opacity: 1; transform: translate(0, 0) scale(1); }
  17%  { opacity: 1; transform: translate(0, 0) scale(1); }
  37%  { opacity: 1; transform: translate(-91px, -28vh) scale(1); }
  43%  { opacity: 1; transform: translate(-91px, -28vh) scale(1); }
  49%  { opacity: 1; transform: translate(-91px, -28vh) scale(2.0); }
  92%  { opacity: 1; transform: translate(-91px, -28vh) scale(2.0); }
  100% { opacity: 0; transform: translate(-91px, -28vh) scale(2.0); }
}
@keyframes hvCardSeq4 {
  0%   { opacity: 0; transform: translateY(-12px) scale(0.92); }
  22%  { opacity: 1; transform: translateY(0) scale(1); }
  64%  { opacity: 1; transform: translateY(0) scale(1); }
  78%  { opacity: 0; transform: translateY(0) scale(0.94); }
  100% { opacity: 0; }
}
/* 段 2 字幕 · 接管气泡原位置,加粗加大 */
.hv-caption-2 {
  bottom: auto;
  top: 22%;
  font-size: clamp(26px, 3.4vw, 40px);
  font-weight: 700;
  letter-spacing: 0.22em;
  color: rgba(232,226,208,0.98);
  animation: hvCaptionPromote 4.0s ease-out 9.0s forwards;
}
.theme-light .hv-caption-2 { color: #2f4858; }
/* 12.5s 起 4s 时长 → 16.5s 终:进场 → 持 2.5s → 1.5s 淡(在执行卡飞上来前完全消失) */
@keyframes hvCaptionPromote {
  0%   { opacity: 0; transform: translate(-50%, 18px) scale(0.92); }
  35%  { opacity: 1; transform: translate(-50%, 0) scale(1); }
  72%  { opacity: 1; transform: translate(-50%, 0) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -10px) scale(0.94); }
}

/* —— 段 3 · 共享记忆 + 垂直训练(14–22s)—— */
.hv-s3 { animation: hvSceneShow 13s ease-in-out 13.5s forwards; }
.hv-s3 .hv-bee-stage { display: none; }
.hv-s3 .hv-bee-stage-DISABLED {
  position: absolute; left: 50%; top: 42%;
  width: 100%; height: 0;
  transform: translateX(-50%);
}
.hv-s3 .hv-bee-solo {
  position: absolute; left: 0; top: 0;
  width: 28px; height: 14px;
  background: radial-gradient(ellipse at 30% 50%, #c8d8a5 0%, #7ea99a 50%, #4a7c8a 100%);
  border-radius: 50%;
  box-shadow:
    0 -6px 0 -2px rgba(232,234,220,0.7),
    0 6px 0 -2px rgba(232,234,220,0.7),
    0 0 12px rgba(126,169,154,0.5);
  opacity: 0;
  transform: translate(-50%, -50%) scale(0);
  z-index: 3;
}
.hv-s3 .hv-bee-a { animation: hvBeeA 3s ease-out 17.4s forwards; }
.hv-s3 .hv-bee-b { animation: hvBeeB 2.6s ease-out 17.7s forwards; }
.hv-s3 .hv-bee-c { animation: hvBeeC 2.2s ease-out 17.9s forwards; }
@keyframes hvBeeA {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0.2); }
  6%   { opacity: 1; transform: translate(-50%, -50%) scale(1.1); }
  12%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  22%  { opacity: 1; transform: translate(calc(-50% - 70px), -50%) scale(1); }
  30%  { opacity: 0; transform: translate(calc(-50% - 80px), -50%) scale(0.6); }
  100% { opacity: 0; }
}
@keyframes hvBeeB {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0); }
  10%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  22%  { opacity: 1; transform: translate(calc(-50% + 70px), -50%) scale(1); }
  30%  { opacity: 0; transform: translate(calc(-50% + 80px), -50%) scale(0.6); }
  100% { opacity: 0; }
}
@keyframes hvBeeC {
  0%   { opacity: 0; transform: translate(-50%, -50%) scale(0); }
  10%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  22%  { opacity: 1; transform: translate(-50%, calc(-50% - 60px)) scale(1); }
  30%  { opacity: 0; transform: translate(-50%, calc(-50% - 70px)) scale(0.6); }
  100% { opacity: 0; }
}
.hv-s3 .hv-bee-burst { position: absolute; inset: 0; pointer-events: none; }
.hv-s3 .hv-bee {
  position: absolute; left: 50%; top: 50%;
  width: 14px; height: 7px;
  background: radial-gradient(ellipse at 30% 50%, #c8d8a5 0%, #7ea99a 50%, #4a7c8a 100%);
  border-radius: 50%;
  opacity: 0;
  filter: drop-shadow(0 0 3px rgba(126,169,154,0.5));
  animation: hvBeeFly var(--dur, 1.6s) ease-out var(--delay, 16s) forwards;
}
@keyframes hvBeeFly {
  0%   { left: 50%; top: 50%; opacity: 0; transform: translate(-50%, -50%) scale(0.4); }
  20%  { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  100% { left: var(--to-x, 100%); top: var(--to-y, 50%); opacity: 0; transform: translate(-50%, -50%) scale(0.5); }
}
/* 树状图连线 · 从执行卡中心向 12 个 agent 辐射 */
.hv-s3 .hv-agent-tree {
  position: absolute; left: 50%; top: 50%;
  width: 600px; height: 600px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 1;
  color: rgba(126,169,154,0.7);
}
.theme-light .hv-s3 .hv-agent-tree { color: rgba(94,138,122,0.6); }
.hv-s3 .hv-line {
  stroke: currentColor;
  stroke-width: 1.4;
  fill: none;
  stroke-dasharray: 300;
  stroke-dashoffset: 300;
  opacity: 0;
  animation: hvLineDraw 6s ease-out forwards;
}
@keyframes hvLineDraw {
  0%   { opacity: 0; stroke-dashoffset: 300; }
  4%   { opacity: 0.9; }
  18%  { opacity: 0.9; stroke-dashoffset: 0; }
  80%  { opacity: 0.9; stroke-dashoffset: 0; }
  100% { opacity: 0; stroke-dashoffset: 0; }
}
/* 12 条连线 · 与 agent 名字同步加速度递增,提前 0.15s 画出 */
.hv-s3 .hv-line:nth-child(1)  { animation-delay: 13.65s; }
.hv-s3 .hv-line:nth-child(2)  { animation-delay: 14.25s; }
.hv-s3 .hv-line:nth-child(3)  { animation-delay: 14.75s; }
.hv-s3 .hv-line:nth-child(4)  { animation-delay: 15.15s; }
.hv-s3 .hv-line:nth-child(5)  { animation-delay: 15.45s; }
.hv-s3 .hv-line:nth-child(6)  { animation-delay: 15.67s; }
.hv-s3 .hv-line:nth-child(7)  { animation-delay: 15.83s; }
.hv-s3 .hv-line:nth-child(8)  { animation-delay: 15.95s; }
.hv-s3 .hv-line:nth-child(9)  { animation-delay: 16.04s; }
.hv-s3 .hv-line:nth-child(10) { animation-delay: 16.10s; }
.hv-s3 .hv-line:nth-child(11) { animation-delay: 16.14s; }
.hv-s3 .hv-line:nth-child(12) { animation-delay: 16.17s; }
.hv-s3 .hv-line:nth-child(13) { animation-delay: 16.19s; }
.hv-s3 .hv-line:nth-child(14) { animation-delay: 16.21s; }
.hv-s3 .hv-line:nth-child(15) { animation-delay: 16.22s; }
.hv-s3 .hv-line:nth-child(16) { animation-delay: 16.23s; }
.hv-s3 .hv-line:nth-child(17) { animation-delay: 16.24s; }
.hv-s3 .hv-line:nth-child(18) { animation-delay: 16.25s; }
.hv-s3 .hv-line:nth-child(19) { animation-delay: 16.26s; }
/* agent 中文名云 · 从中心四散飞出后停留 */
.hv-s3 .hv-agent-cloud {
  position: absolute; left: 50%; top: 50%;
  width: 0; height: 0;
  animation: hvCloudHold 30s linear 0s forwards;
}
/* 矩阵整体淡出 · 19.0-20.0s(caption-3 同时从下移到中心) */
@keyframes hvCloudHold {
  0%   { opacity: 1; }
  63.3% { opacity: 1; }    /* 19.0s/30s */
  66.7% { opacity: 0; }    /* 20.0s/30s */
  100% { opacity: 0; }
}
.hv-s3 .hv-agent-tree {
  animation: hvCloudHold 30s linear 0s forwards;
}
.hv-s3 .hv-name {
  position: absolute;
  left: 0; top: 0;
  --r: 280px;
  --tx: calc(cos(var(--ang)) * var(--r));
  --ty: calc(sin(var(--ang)) * var(--r) * 0.55);
  transform: translate(-50%, -50%) scale(0.3);
  padding: 6px 14px;
  background: rgba(232,234,220,0.94);
  color: #2f4858;
  font-family: "Noto Serif SC", serif;
  font-size: 14px; letter-spacing: 0.08em;
  border-radius: 4px;
  border: 1px solid rgba(126,169,154,0.6);
  box-shadow: 0 2px 8px rgba(20,30,40,0.25);
  opacity: 0;
  white-space: nowrap;
  animation: hvNameOut 2.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
/* 12 agent · 从执行卡向四面八方生出,加速度递增(0.6→0.04s 间隔) */
.hv-s3 .hv-name:nth-child(1)  { animation-delay: 13.80s; }
.hv-s3 .hv-name:nth-child(2)  { animation-delay: 14.40s; }
.hv-s3 .hv-name:nth-child(3)  { animation-delay: 14.90s; }
.hv-s3 .hv-name:nth-child(4)  { animation-delay: 15.30s; }
.hv-s3 .hv-name:nth-child(5)  { animation-delay: 15.60s; }
.hv-s3 .hv-name:nth-child(6)  { animation-delay: 15.82s; }
.hv-s3 .hv-name:nth-child(7)  { animation-delay: 15.98s; }
.hv-s3 .hv-name:nth-child(8)  { animation-delay: 16.10s; }
.hv-s3 .hv-name:nth-child(9)  { animation-delay: 16.19s; }
.hv-s3 .hv-name:nth-child(10) { animation-delay: 16.25s; }
.hv-s3 .hv-name:nth-child(11) { animation-delay: 16.29s; }
.hv-s3 .hv-name:nth-child(12) { animation-delay: 16.32s; }
.hv-s3 .hv-name:nth-child(13) { animation-delay: 16.34s; }
.hv-s3 .hv-name:nth-child(14) { animation-delay: 16.36s; }
.hv-s3 .hv-name:nth-child(15) { animation-delay: 16.37s; }
.hv-s3 .hv-name:nth-child(16) { animation-delay: 16.38s; }
.hv-s3 .hv-name:nth-child(17) { animation-delay: 16.39s; }
.hv-s3 .hv-name:nth-child(18) { animation-delay: 16.40s; }
.hv-s3 .hv-name:nth-child(19) { animation-delay: 16.41s; }
@keyframes hvNameOut {
  0%   { opacity: 0; transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(0.55); }
  40%  { opacity: 1; transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(1); }
  100% { opacity: 1; transform: translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) scale(1); }
}
/* 段 3 字幕 · 加粗加大,上移避免压底部 slogan */
.hv-caption-3 {
  bottom: 18%;
  font-size: clamp(20px, 2.4vw, 28px);
  font-weight: 700;
  letter-spacing: 0.16em;
  color: rgba(232,226,208,0.98);
  animation: hvCaption3UpFade 5.2s cubic-bezier(0.4, 0, 0.2, 1) 16.8s forwards;
}
@keyframes hvCaption3UpFade {
  /* 缩 1.5s:底部出现 → 短停 → 矩阵淡时上移到中心(19-20s)→ 中心停 1s → 淡去 */
  0%   { opacity: 0; transform: translate(-50%, 14px); }
  15%  { opacity: 1; transform: translate(-50%, 0); }
  42%  { opacity: 1; transform: translate(-50%, 0); }
  60%  { opacity: 1; transform: translate(-50%, -30vh); }
  80%  { opacity: 1; transform: translate(-50%, -30vh); }
  100% { opacity: 0; transform: translate(-50%, -30vh); }
}
.theme-light .hv-caption-3 { color: #2f4858; }

/* —— 段 4 · 收尾(24–29s,压缩段间停滞)—— */
.hv-s4 { animation: hvSceneShow 5s ease-in-out 21.8s forwards; }
.hv-s4 .hv-final {
  text-align: center;
  opacity: 0;
  animation: hvFinalIn 4.6s ease-out 22.0s forwards;
}
.hv-s4 .hv-final h2 {
  font-size: clamp(64px, 9vw, 120px);
  color: rgba(232,226,208,0.96);
  letter-spacing: 0.14em;
  margin: 0 0 24px;
}
.theme-light .hv-s4 .hv-final h2 { color: #2f4858; }
@keyframes hvFinalIn {
  /* 标题整体上移 8vh,与 slogan(bottom 36%)间距合理 */
  0%   { opacity: 0; transform: translateY(calc(-8vh + 16px)); }
  20%  { opacity: 1; transform: translateY(-8vh); }
  80%  { opacity: 1; transform: translateY(-8vh); }
  100% { opacity: 0; transform: translateY(calc(-8vh - 4px)); }
}
.hv-caption-4 { animation: hvCaptionIn 6s ease-out 23.0s forwards; }

/* 减弱动画偏好兜底 */
@media (prefers-reduced-motion: reduce) {
  .hero-video { display: none; }
}

/* 移动端兜底 */
@media (max-width: 760px) {
  .hv-s2 .hv-cards { grid-template-columns: repeat(2, auto); gap: 14px; }
  .hv-s2 .hv-card { min-width: 110px; padding: 12px 14px; }
  .hv-s2 .hv-card b { font-size: 14px; }
  .hv-s2 .hv-card em { font-size: 11px; }
  .hv-s2 .hv-bubble { font-size: 16px; padding: 12px 22px; }
  .hv-title { font-size: clamp(48px, 14vw, 80px); }
  .hv-slogan-fixed { font-size: 12px; letter-spacing: 0.3em; }
  .hv-s3 .hv-name { font-size: 12px; padding: 4px 10px; }
}

/* 浅色模式兜底：避免工作区残留深色硬编码 */
.theme-light.dashboard-body {
  color: var(--ink);
  background:
    radial-gradient(circle at 12% 20%, rgba(255,255,255,0.58), transparent 32%),
    linear-gradient(180deg, var(--paper-soft) 0%, var(--paper) 100%);
}
.theme-light.dashboard-body .dashboard-header {
  background: rgba(248,244,234,0.9);
  border-bottom-color: color-mix(in srgb, var(--ink-faint) 22%, transparent);
}
.theme-light.dashboard-body .task-rail,
.theme-light.dashboard-body .workspace-canvas,
.theme-light.dashboard-body .workspace-body,
.theme-light.dashboard-body .compose-shell,
.theme-light.dashboard-body .project-switcher,
.theme-light.dashboard-body .task-search,
.theme-light.dashboard-body .task-card,
.theme-light.dashboard-body .center-popover,
.theme-light.dashboard-body .center-item,
.theme-light.dashboard-body .user-chip,
.theme-light.dashboard-body .workspace-recommend-card,
.theme-light.dashboard-body .workspace-center-view,
.theme-light.dashboard-body .center-workflow-current,
.theme-light.dashboard-body .center-workflow-receipt {
  background: var(--paper-soft);
  color: var(--ink);
  border-color: color-mix(in srgb, var(--ink-faint) 24%, transparent);
  box-shadow: none;
}
.theme-light.dashboard-body .workspace-body,
.theme-light.dashboard-body .compose-shell,
.theme-light.dashboard-body .center-workflow-current,
.theme-light.dashboard-body .center-workflow-receipt {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.68), rgba(255,255,255,0.28)),
    var(--paper-soft);
}
.theme-light.dashboard-body .task-card:hover,
.theme-light.dashboard-body .center-item:hover,
.theme-light.dashboard-body .workspace-recommend-card:hover {
  background: color-mix(in srgb, var(--mineral-blue) 8%, var(--paper-soft));
}
.theme-light.dashboard-body .task-card.is-selected,
.theme-light.dashboard-body .center-item.is-active,
.theme-light.dashboard-body .user-chip[aria-expanded="true"] {
  background: color-mix(in srgb, var(--mineral-blue) 12%, var(--paper-soft));
  border-color: var(--mineral-blue);
}
.theme-light.dashboard-body .workspace-stop-btn,
.theme-light.dashboard-body .result-export-btn,
.theme-light.dashboard-body .center-filter-back,
.theme-light.dashboard-body .dream-result-copy {
  background: transparent;
  color: var(--ink-soft);
  border-color: color-mix(in srgb, var(--ink-faint) 34%, transparent);
}
.theme-light.dashboard-body .flow-status-pill,
.theme-light.dashboard-body .workspace-toggles,
.theme-light.dashboard-body .task-filter-dot,
.theme-light.dashboard-body .rail-collapse {
  background: color-mix(in srgb, var(--paper-soft) 82%, white);
  border-color: color-mix(in srgb, var(--ink-faint) 28%, transparent);
}
.theme-light.dashboard-body .ws-toggle.is-on {
  background: var(--ink);
  color: var(--paper-soft);
}
.theme-light.dashboard-body .dream-flow-wrap,
.theme-light.dashboard-body .dream-result-wrap {
  background: var(--paper);
}
.theme-light.dashboard-body .dream-flow-head,
.theme-light.dashboard-body .dream-result-head,
.theme-light.dashboard-body .dream-block,
.theme-light.dashboard-body .dream-result-body {
  background: var(--paper-soft);
  color: var(--ink);
  border-color: color-mix(in srgb, var(--ink-faint) 22%, transparent);
}
.theme-light.dashboard-body .center-task-item {
  background: color-mix(in srgb, var(--paper-deep) 55%, white);
  border-color: color-mix(in srgb, var(--ink-faint) 18%, transparent);
}
.theme-light.dashboard-body .center-task-title,
.theme-light.dashboard-body .center-workflow-action,
.theme-light.dashboard-body .flow-copy {
  color: var(--ink);
}
.theme-light.dashboard-body .center-workflow-role,
.theme-light.dashboard-body .center-workflow-meta,
.theme-light.dashboard-body .center-workflow-summary,
.theme-light.dashboard-body .center-task-meta,
.theme-light.dashboard-body .flow-role,
.theme-light.dashboard-body .flow-time,
.theme-light.dashboard-body .dream-flow-title small,
.theme-light.dashboard-body .dream-block-kicker {
  color: var(--ink-faint);
}

/* Light-theme execution transcript: keep the workflow visible without dark blocks. */
.dashboard-body .workspace-body[data-view="stream"],
.dashboard-body .workspace-body[data-view="result"],
.theme-light.dashboard-body .workspace-body[data-view="stream"],
.theme-light.dashboard-body .workspace-body[data-view="result"] {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.68), rgba(255,255,255,0.22)),
    var(--paper-soft);
  color: var(--ink);
  border-color: color-mix(in srgb, var(--ink-faint) 24%, transparent);
}
.dashboard-body .workspace-body[data-view="stream"] .dream-flow-wrap,
.dashboard-body .workspace-body[data-view="result"] .dream-result-wrap,
.theme-light.dashboard-body .workspace-body[data-view="stream"] .dream-flow-wrap,
.theme-light.dashboard-body .workspace-body[data-view="result"] .dream-result-wrap {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.68), rgba(255,255,255,0.22)),
    var(--paper-soft);
}
.dashboard-body .workspace-body[data-view="stream"] .dream-flow-head,
.dashboard-body .workspace-body[data-view="result"] .dream-result-head,
.theme-light.dashboard-body .workspace-body[data-view="stream"] .dream-flow-head,
.theme-light.dashboard-body .workspace-body[data-view="result"] .dream-result-head {
  background: color-mix(in srgb, var(--paper-soft) 86%, white);
  border-bottom-color: color-mix(in srgb, var(--ink-faint) 22%, transparent);
}
.dashboard-body .workspace-body[data-view="stream"] .dream-flow-title strong,
.dashboard-body .workspace-body[data-view="result"] .dream-result-head strong,
.theme-light.dashboard-body .workspace-body[data-view="stream"] .dream-flow-title strong,
.theme-light.dashboard-body .workspace-body[data-view="result"] .dream-result-head strong {
  color: var(--ink);
}
.theme-light.dashboard-body .dream-transcript,
.theme-light.dashboard-body .dream-transcript-output {
  color: var(--ink);
}
.theme-light.dashboard-body .transcript-meta,
.theme-light.dashboard-body .dream-transcript-entry.is-thinking .transcript-copy,
.theme-light.dashboard-body .dream-transcript-entry.is-meta .transcript-copy {
  color: var(--ink-faint);
}
.theme-light.dashboard-body .transcript-copy,
.theme-light.dashboard-body .dream-transcript-output h3,
.theme-light.dashboard-body .dream-transcript-output h4,
.theme-light.dashboard-body .dream-transcript-output p,
.theme-light.dashboard-body .dream-transcript-output li {
  color: var(--ink);
}
.dashboard-body .dream-transcript-output,
.theme-light.dashboard-body .dream-transcript-output {
  background: transparent;
  border: 0;
  box-shadow: none;
}

@media (max-width: 768px) {
  .dream-flow-scroll,
  .dream-result-scroll {
    padding: 18px 20px 24px;
  }
  .transcript-copy {
    font-size: 17px;
    line-height: 1.65;
  }
  .transcript-tool-head {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .transcript-tool-label {
    width: max-content;
  }
  .transcript-tool-head strong {
    grid-column: 1 / -1;
  }
  .dream-transcript-output {
    font-size: 16px;
  }
  .dream-transcript-output h3 {
    font-size: 20px;
  }
  .dream-transcript-output h4 {
    font-size: 17px;
  }
}

/* ============================================================
 * DREAM-WEB v3.2 · 流式 overhaul (2026-06-03)
 * - 任务细节改为流式文本(灰=思考·蓝=工具·红=风险·白=成果)
 * - 左栏密度收紧·更像紧凑布局 会话列表
 * - 每日前沿信息流·造梦广场三列画廊·原生广告位
 * ============================================================ */

/* 任务流字色覆盖:在浅色主题下让白字成果突出 */
.task-transcript { padding: 18px 22px 40px; gap: 4px; }
.tl-line { font-size: 13px; line-height: 1.7; padding: 2px 0; }
.tl-line .tl-meta { display:block; font-size:10px; letter-spacing:.12em; color:var(--ink-faint); margin-top:2px; }
.tl-process .tl-actor, .tl-process .tl-copy { color: var(--ink-faint); }
.tl-tool .tl-actor, .tl-tool .tl-copy { color: var(--mineral-blue); }
.tl-risk .tl-actor, .tl-risk .tl-copy { color: var(--vermilion); }
.tl-result .tl-copy { color: var(--ink); font-weight: 500; }
.tl-head { padding: 6px 0 12px; border-bottom: 1px dashed var(--ink-faint); margin-bottom: 10px; }
.tl-head .tl-actor { color: var(--ink-soft); font-family: 'EB Garamond', serif; letter-spacing:.04em; }
.tl-head .tl-copy { color: var(--ink); font-weight: 600; font-size: 15px; }
.tl-ops { display:flex; gap:8px; margin-top:18px; padding-top:12px; border-top:1px dashed var(--ink-faint); }
.tl-op { background:transparent; border:1px solid var(--ink-faint); color:var(--ink-soft); padding:4px 12px; font-size:12px; border-radius:2px; cursor:pointer; transition:all .18s; }
.tl-op:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }

/* 左栏:任务卡更紧凑·像紧凑布局 历史会话条目 */
.task-rail .task-card {
  padding: 8px 10px !important;
  margin: 2px 0 !important;
  border-radius: 3px;
  min-height: auto !important;
}
.task-rail .task-card .task-title {
  font-size: 13px !important;
  font-weight: 400 !important;
  line-height: 1.4 !important;
  -webkit-line-clamp: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.task-rail .task-card .task-meta { font-size: 10px !important; margin-top: 2px !important; opacity: 0.72; }

/* 每日前沿信息流 */
.frontier-feed { padding: 22px 26px 60px; max-width: 880px; }
.frontier-head h3 { margin: 0; font-size: 20px; font-weight: 500; color: var(--ink); }
.frontier-head .en { display:block; font-size:11px; letter-spacing:.18em; color: var(--ink-faint); margin-top:4px; }
.frontier-list { list-style: none; padding: 0; margin: 22px 0 0; display: grid; gap: 14px; }
.frontier-item { padding: 14px 16px; border: 1px solid var(--ink-faint); border-radius: 4px; background: rgba(255,255,255,.35); display: grid; gap: 6px; transition: all .18s; cursor:pointer; }
.frontier-item:hover { border-color: var(--mineral-blue); transform: translateX(2px); }
.frontier-tag { display:inline-block; font-size:10px; letter-spacing:.16em; padding:1px 8px; border:1px solid var(--ink-soft); color: var(--ink-soft); border-radius: 2px; width: fit-content; }
.frontier-tag.is-ad { border-color: var(--gold); color: var(--gold); }
.frontier-title { font-size: 15px; font-weight: 500; color: var(--ink); text-decoration: none; }
.frontier-summary { margin: 0; font-size: 13px; color: var(--ink-soft); line-height: 1.6; }
.frontier-meta { font-size: 10px; letter-spacing: .1em; color: var(--ink-faint); }
.frontier-item.is-ad { background: linear-gradient(135deg, rgba(218,165,32,.06), rgba(218,165,32,.02)); border-style: dashed; }

/* 造梦广场 3 列画廊 */
.plaza-wrap { padding: 22px 26px 60px; }
.plaza-head { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; }
.plaza-head h3 { margin: 0; font-size: 20px; font-weight: 500; color: var(--ink); }
.plaza-head .en { font-size:11px; letter-spacing:.18em; color: var(--ink-faint); }
.plaza-cats { margin-left: auto; display: flex; gap: 6px; }
.plaza-cat { background: transparent; border: 1px solid var(--ink-faint); color: var(--ink-soft); padding: 4px 14px; font-size: 12px; cursor: pointer; border-radius: 2px; }
.plaza-cat.is-on { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.plaza-cols { margin-top: 22px; }
.plaza-col { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 16px; }
.plaza-card { display: grid; gap: 6px; cursor: pointer; transition: transform .18s; }
.plaza-card:hover { transform: translateY(-2px); }
.plaza-thumb { aspect-ratio: 4/3; border-radius: 4px; display:flex; align-items:center; justify-content:center; color: rgba(255,255,255,.85); font-size: 22px; font-weight: 500; }
.plaza-thumb-video { font-size: 28px; }
.plaza-thumb-ppt { font-family: 'EB Garamond', serif; letter-spacing: .16em; font-size: 18px; }
.plaza-thumb-ad { background: repeating-linear-gradient(45deg, rgba(218,165,32,.18), rgba(218,165,32,.18) 8px, rgba(218,165,32,.06) 8px, rgba(218,165,32,.06) 16px) !important; color: var(--gold) !important; border: 1px dashed var(--gold); }
.plaza-thumb-ad span { font-size: 13px; letter-spacing: .12em; }
.plaza-title { margin: 4px 0 0; font-size: 13px; color: var(--ink); font-weight: 500; }
.plaza-meta { font-size: 10px; letter-spacing: .08em; color: var(--ink-faint); }
.plaza-card.is-ad .plaza-title { color: var(--gold); }

/* 深色主题适配 */
.theme-dark .frontier-item { background: rgba(255,255,255,.04); }
.theme-dark .frontier-item.is-ad { background: linear-gradient(135deg, rgba(218,165,32,.12), rgba(218,165,32,.04)); }
.theme-dark .tl-result .tl-copy { color: #f5f1e8; }

/* ============================================================
 * DREAM-WEB v3.2.1 · 布局贴边 + 工作区拉满 + 任务卡防溢出
 * ============================================================ */
/* 左栏贴左边·右边到成果抽屉之前·工作区 1fr 撑满 */
main.dashboard-shell.three-col {
  padding-left: 0 !important;
  padding-right: 36px !important;
  gap: 12px !important;
  grid-template-columns: 280px minmax(0, 1fr) !important;
}
.task-rail {
  border-radius: 0 4px 4px 0 !important;
  border-left: none !important;
  margin-left: 0 !important;
}
.workspace-canvas { width: 100% !important; max-width: none !important; }

/* 任务卡:严格不出框 */
.task-rail .task-card {
  display: grid !important;
  grid-template-columns: 4px minmax(0, 1fr) !important;
  gap: 8px !important;
  overflow: hidden;
}
.task-rail .task-card .task-title {
  min-width: 0;
  max-width: 100%;
  display: block !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  font-size: 13px !important;
}
.task-rail .task-card .task-meta {
  min-width: 0;
  max-width: 100%;
  display: flex;
  gap: 6px;
  align-items: baseline;
  flex-wrap: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10.5px !important;
}
.task-rail .task-card .task-meta > * {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.task-rail .task-card .task-status-rail { grid-row: 1 / span 2; }
.task-rail .task-card .task-title,
.task-rail .task-card .task-meta { grid-column: 2; }

/* 成果抽屉拉手:更明显·更大命中区 */
.output-handle {
  width: 36px !important;
  min-height: 110px !important;
  background: var(--vermilion, #9d2933) !important;
  color: #fff8f2 !important;
  border-radius: 4px 0 0 4px !important;
  box-shadow: -2px 2px 8px rgba(0,0,0,.18) !important;
  z-index: 30 !important;
  cursor: pointer !important;
}
.output-handle:hover { background: #862029 !important; color: #fff8f2 !important; }
.output-handle .output-handle-arrow { color: rgba(255,248,242,0.7) !important; }
.output-handle .output-handle-cn { font-size: 13px !important; font-weight: 500 !important; letter-spacing: .04em; }

@media (max-width: 1280px) {
  main.dashboard-shell.three-col { grid-template-columns: 220px minmax(0, 1fr) !important; padding-right: 28px !important; }
}

/* v3.2.1 补丁:main 容器 margin:auto 居中导致左栏没贴边,强制全宽 */
main.dashboard-shell.three-col {
  margin: 0 !important;
  max-width: none !important;
  width: 100% !important;
}

/* ============================================================
 * DREAM-WEB v3.2.2 · 自定义项目下拉 + 折叠左栏修复
 * ============================================================ */
.project-switcher { position: relative; }
.project-select-btn {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: 6px 10px; gap: 8px;
  background: transparent; border: 1px solid var(--ink-faint);
  border-radius: 3px; color: var(--ink); font-size: 13px; cursor: pointer;
  transition: border-color .18s;
}
.project-select-btn:hover { border-color: var(--ink-soft); }
.project-select-btn[aria-expanded="true"] { border-color: var(--mineral-blue); }
.project-select-text { flex: 1; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.project-select-menu {
  position: absolute; left: 0; top: 100%; margin-top: 4px;
  width: 100%; max-height: 280px; overflow: auto;
  list-style: none; padding: 4px 0; margin-block: 4px 0;
  background: var(--paper); border: 1px solid var(--ink-faint);
  border-radius: 3px; box-shadow: 0 6px 20px rgba(20,24,34,.12);
  z-index: 40;
}
.project-select-menu li {
  padding: 7px 12px; font-size: 13px; color: var(--ink); cursor: pointer;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.project-select-menu li:hover { background: rgba(94,126,160,.08); }
.project-select-menu li.is-on { color: var(--mineral-blue); font-weight: 500; }
.project-select-menu li.is-on::before { content: "✓"; margin-right: 6px; }

/* 折叠左栏:点 < 按钮收成单列,工作区拉满
   注意:rail 是 display:none 时退出 grid placement,所以必须改单列,
   否则 workstage 会被自动放到第一列(0px) */
body.rail-collapsed main.dashboard-shell.three-col {
  grid-template-columns: minmax(0,1fr) !important;
  padding-left: 36px !important;
}
body.rail-collapsed .task-rail { display: none !important; }
/* 折叠后浮一个"展开任务栏"小按钮在左边缘 */
body.rail-collapsed::before {
  content: "› 任务";
  position: fixed; top: 80px; left: 0; z-index: 35;
  padding: 8px 6px; writing-mode: vertical-rl;
  background: var(--ink); color: var(--paper);
  font-size: 12px; letter-spacing: .12em;
  border-radius: 0 4px 4px 0; cursor: pointer;
  box-shadow: 2px 2px 8px rgba(0,0,0,.18);
}

/* v3.2.2 真实可点击的展开按钮(::before 无法响应 click) */
body.rail-collapsed::before { content: none !important; }
#railExpandHandle {
  display: none;
  position: fixed; top: 80px; left: 0; z-index: 35;
  padding: 14px 6px; writing-mode: vertical-rl;
  background: var(--ink); color: var(--paper);
  border: none; font-size: 13px; letter-spacing: .14em;
  border-radius: 0 4px 4px 0; cursor: pointer;
  box-shadow: 2px 2px 8px rgba(0,0,0,.18);
}
#railExpandHandle:hover { background: var(--mineral-blue); }
body.rail-collapsed #railExpandHandle { display: block; }

/* v3.2.3 折叠后让 workstage/canvas 拉满,不受 min(1040px) 钳制 */
body.rail-collapsed .workstage,
body.rail-collapsed .workspace-canvas,
body.rail-collapsed .workspace-body,
body.rail-collapsed .ws-view {
  width: 100% !important;
  max-width: none !important;
}

/* v3.2.4 onboarding 引导层透明但 pointer-events:auto,
   会吞掉折叠按钮/抽屉/下拉的点击 — 不可见时一律穿透 */
.onboarding-layer:not(.is-active) {
  pointer-events: none !important;
}

/* ============================================
   v3.2.5 深色主题 = 只此青绿(墨青卷轴),不要纯黑;
   工作区不再亮闪闪;工作区上下纵向扩展
   ============================================ */

/* 1) 墨夜卷轴底色 —— 千里江山墨蓝调,不是真绿 */
.theme-dark {
  --paper:         #141822;  /* 墨夜底 */
  --paper-deep:    #0d1018;
  --paper-soft:    #1c2030;
  --output-bg:     #1a1e2a;
  --output-border: #2a2f3e;
  --thinking-bg:   #1c2030;
}

/* 2) 工作区画布跟着墨夜蓝紫 */
.theme-dark .workspace-canvas {
  background: #161b27 !important;
  border-color: rgba(180, 195, 220, 0.10) !important;
  box-shadow: none !important;
}
.theme-dark .workspace-canvas > .focus-pane {
  background: #1c2030 !important;
  border-color: rgba(180, 195, 220, 0.10) !important;
}

/* 3) 工作区内卡片不要"亮闪闪"白色 mix —— 暗模式下去掉白色叠加 */
.theme-dark.dashboard-body .workspace-recommend-card,
.theme-dark .workspace-recommend-card {
  background: rgba(143,184,159,0.05) !important;
  border-color: rgba(180,210,195,0.10) !important;
  box-shadow: none !important;
}
.theme-dark.dashboard-body .workspace-recommend-card:hover,
.theme-dark .workspace-recommend-card:hover {
  background: rgba(143,184,159,0.12) !important;
  border-color: rgba(143,184,159,0.30) !important;
}
.theme-dark.dashboard-body .workspace-scene-chip,
.theme-dark .workspace-scene-chip {
  background: rgba(143,184,159,0.04) !important;
  border-color: rgba(180,210,195,0.10) !important;
  box-shadow: none !important;
}
.theme-dark.dashboard-body .workspace-recommend-icon {
  background: rgba(143,184,159,0.15) !important;
  color: var(--mineral-green) !important;
}

/* 4) 工作区上下扩展 —— 缩头部 margin,把 workstage 撑高 */
.workspace-head { margin-bottom: 2px !important; padding-bottom: 0 !important; }
.workspace-canvas { padding: 8px 14px 10px !important; }
.workstage { gap: 8px !important; }
.workstage-bar { max-height: 142px !important; }
.workstage-bar .compose-shell textarea { min-height: 60px !important; max-height: 96px !important; padding-top: 10px !important; }

/* 5) 笔记缩略图样式(承接 plaza-thumb-ppt 的风格) */
.plaza-thumb-note {
  display: grid; place-items: center;
  font-family: "Noto Serif SC", serif;
  font-size: 18px; color: rgba(20,28,24,.55);
  letter-spacing: .14em;
}

/* ============================================
   v3.2.6 — 把所有"白色渐变叠加"在 dark 模式下铲掉,
   恢复只此青绿沉静卷轴风,不要荧光感
   ============================================ */
.theme-dark.dashboard-body .workspace-body,
.theme-dark.dashboard-body .workspace-body[data-view="stream"],
.theme-dark.dashboard-body .workspace-body[data-view="result"],
.theme-dark.dashboard-body .workspace-body[data-view="stream"] .dream-flow-wrap,
.theme-dark.dashboard-body .workspace-body[data-view="result"] .dream-result-wrap,
.theme-dark.dashboard-body .compose-shell,
.theme-dark.dashboard-body .center-workflow-current,
.theme-dark.dashboard-body .center-workflow-receipt {
  background: rgba(143,184,159,0.04) !important;
  border-color: rgba(180,210,195,0.10) !important;
  box-shadow: none !important;
}
.theme-dark.dashboard-body .workspace-body[data-view="stream"] .dream-flow-head,
.theme-dark.dashboard-body .workspace-body[data-view="result"] .dream-result-head {
  background: rgba(143,184,159,0.06) !important;
  border-bottom-color: rgba(180,210,195,0.10) !important;
}
.theme-dark.dashboard-body .dream-flow-wrap,
.theme-dark.dashboard-body .dream-result-wrap,
.theme-dark.dashboard-body .dream-block,
.theme-dark.dashboard-body .dream-result-body,
.theme-dark.dashboard-body .dream-flow-head,
.theme-dark.dashboard-body .dream-result-head {
  background: rgba(143,184,159,0.04) !important;
  border-color: rgba(180,210,195,0.10) !important;
}
.theme-dark.dashboard-body .task-rail,
.theme-dark.dashboard-body .workspace-canvas,
.theme-dark.dashboard-body .project-switcher,
.theme-dark.dashboard-body .task-search,
.theme-dark.dashboard-body .task-card,
.theme-dark.dashboard-body .user-chip {
  background: rgba(143,184,159,0.04) !important;
  border-color: rgba(180,210,195,0.10) !important;
  box-shadow: none !important;
}
.theme-dark.dashboard-body .dashboard-header {
  background: rgba(16,26,22,0.85) !important;
  border-bottom-color: rgba(180,210,195,0.10) !important;
}
.theme-dark.dashboard-body .task-card.is-selected {
  background: rgba(143,184,159,0.14) !important;
  border-color: var(--mineral-green) !important;
}
.theme-dark.dashboard-body .ws-toggle.is-on {
  background: rgba(143,184,159,0.20) !important;
  color: var(--ink) !important;
}
.theme-dark.dashboard-body .flow-status-pill,
.theme-dark.dashboard-body .workspace-toggles,
.theme-dark.dashboard-body .task-filter-dot,
.theme-dark.dashboard-body .rail-collapse {
  background: rgba(143,184,159,0.06) !important;
  border-color: rgba(180,210,195,0.14) !important;
}

/* v3.2.7 把 v3.2.5/3.2.6 的青绿薄雾换成墨夜蓝紫薄雾,统一卷轴调 */
.theme-dark.dashboard-body .workspace-recommend-card {
  background: rgba(170,180,200,0.04) !important;
  border-color: rgba(180,195,220,0.10) !important;
}
.theme-dark.dashboard-body .workspace-recommend-card:hover {
  background: rgba(107,140,160,0.14) !important;
  border-color: rgba(107,140,160,0.34) !important;
}
.theme-dark.dashboard-body .workspace-scene-chip {
  background: rgba(170,180,200,0.04) !important;
  border-color: rgba(180,195,220,0.10) !important;
}
.theme-dark.dashboard-body .workspace-recommend-icon {
  background: rgba(126,169,154,0.14) !important;
  color: var(--mineral-green) !important;
}
.theme-dark.dashboard-body .workspace-body,
.theme-dark.dashboard-body .workspace-body[data-view="stream"],
.theme-dark.dashboard-body .workspace-body[data-view="result"],
.theme-dark.dashboard-body .workspace-body[data-view="stream"] .dream-flow-wrap,
.theme-dark.dashboard-body .workspace-body[data-view="result"] .dream-result-wrap,
.theme-dark.dashboard-body .compose-shell,
.theme-dark.dashboard-body .center-workflow-current,
.theme-dark.dashboard-body .center-workflow-receipt,
.theme-dark.dashboard-body .dream-flow-wrap,
.theme-dark.dashboard-body .dream-result-wrap,
.theme-dark.dashboard-body .dream-block,
.theme-dark.dashboard-body .dream-result-body,
.theme-dark.dashboard-body .task-rail,
.theme-dark.dashboard-body .workspace-canvas,
.theme-dark.dashboard-body .project-switcher,
.theme-dark.dashboard-body .task-search,
.theme-dark.dashboard-body .task-card,
.theme-dark.dashboard-body .user-chip {
  background: rgba(170,180,200,0.035) !important;
  border-color: rgba(180,195,220,0.10) !important;
  box-shadow: none !important;
}
.theme-dark.dashboard-body .workspace-body[data-view="stream"] .dream-flow-head,
.theme-dark.dashboard-body .workspace-body[data-view="result"] .dream-result-head,
.theme-dark.dashboard-body .dream-flow-head,
.theme-dark.dashboard-body .dream-result-head {
  background: rgba(170,180,200,0.05) !important;
  border-bottom-color: rgba(180,195,220,0.10) !important;
}
.theme-dark.dashboard-body .dashboard-header {
  background: rgba(13,16,24,0.85) !important;
  border-bottom-color: rgba(180,195,220,0.10) !important;
}
.theme-dark.dashboard-body .task-card.is-selected {
  background: rgba(107,140,160,0.16) !important;
  border-color: var(--mineral-blue) !important;
}
.theme-dark.dashboard-body .ws-toggle.is-on {
  background: rgba(107,140,160,0.22) !important;
  color: var(--ink) !important;
}
.theme-dark.dashboard-body .flow-status-pill,
.theme-dark.dashboard-body .workspace-toggles,
.theme-dark.dashboard-body .task-filter-dot,
.theme-dark.dashboard-body .rail-collapse {
  background: rgba(170,180,200,0.05) !important;
  border-color: rgba(180,195,220,0.14) !important;
}

/* ============================================
   v3.2.8 左栏紧凑化 —— 紧凑布局,把上下大块压扁
   让任务卡片占据主导,而非项目选择器/TASKS 标题
   ============================================ */
.task-rail { padding: 12px 14px !important; gap: 8px !important; }

/* 项目切换:label + 按钮一行,不要那么高 */
.project-switcher { margin: 0 !important; padding: 0 !important; gap: 6px !important; }
.project-switcher-label { font-size: 11px !important; letter-spacing: 0.16em !important; margin: 0 !important; padding: 0 !important; }
.project-select-btn { height: 28px !important; padding: 0 10px !important; font-size: 12px !important; }

/* TASKS 标题区收紧 */
.rail-head { padding: 6px 0 4px !important; margin: 0 !important; gap: 8px !important; }
.rail-head .column-title-cn { font-size: 15px !important; letter-spacing: 0.18em !important; }
.rail-head .column-title-en { font-size: 9px !important; letter-spacing: 0.20em !important; }
.task-filter-dot { width: 18px !important; height: 18px !important; padding: 0 !important; }
.rail-collapse { width: 24px !important; height: 24px !important; }

/* 搜索条收紧 */
.task-search { height: 30px !important; padding: 0 10px !important; font-size: 12px !important; margin: 0 !important; }
.task-search input { font-size: 12px !important; }

/* 时间段标签 "更早" */
.task-section-label { font-size: 10px !important; letter-spacing: 0.16em !important; margin: 6px 0 2px !important; padding: 0 !important; }

/* 任务卡片间距收紧但保持可读 */
.task-list { gap: 6px !important; }
.task-card { padding: 10px 12px !important; }

/* "查看更多" 按钮变小 */
.task-rail-more { padding: 6px 12px !important; font-size: 12px !important; margin: 4px 0 !important; }

/* 底部 user-chip 压扁 */
.user-chip { padding: 8px 10px !important; gap: 8px !important; margin-top: auto !important; }
.user-chip .user-chip-avatar { width: 26px !important; height: 26px !important; font-size: 11px !important; }
.user-chip .user-chip-name { font-size: 13px !important; }
.user-chip .user-chip-meta { font-size: 9px !important; letter-spacing: 0.18em !important; }

/* ============================================
   v3.2.9 输入区参考紧凑布局 —— 工具按钮内嵌、紧凑
   ============================================ */
.compose-area { padding: 0 !important; margin: 0 !important; }
.compose-shell { padding: 0 !important; gap: 0 !important; }
.compose-shell textarea {
  border: none !important;
  background: transparent !important;
  padding: 12px 16px 8px !important;
  min-height: 52px !important;
  max-height: 96px !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}
.compose-bar {
  padding: 4px 10px 6px !important;
  margin-top: 0 !important;
  border-top: none !important;
  gap: 6px !important;
  min-height: 34px !important;
}
.compose-attach,
.compose-voice {
  width: 26px !important;
  height: 26px !important;
  border-radius: 4px !important;
  background: transparent !important;
  border: none !important;
}
.compose-attach svg,
.compose-voice svg { width: 14px !important; height: 14px !important; }
.compose-hint {
  flex: 1 !important;
  font-size: 10px !important;
  letter-spacing: 0.14em !important;
  margin: 0 !important;
  padding: 0 !important;
}
.compose-bar .primary-dream-button {
  height: 26px !important;
  padding: 0 12px !important;
  font-size: 12px !important;
  letter-spacing: 0.12em !important;
  border-radius: 4px !important;
  margin: 0 !important;
}
.compose-bar .primary-dream-button .btn-cn { font-size: 12px !important; }
.compose-bar .primary-dream-button .btn-send-arrow { width: 12px !important; height: 12px !important; }

/* workstage-bar 上下进一步压扁 */
.workstage-bar { max-height: 100px !important; }

/* ============================================
   v3.2.10 修两个问题:
   (1) 底色提亮 + 卷轴质感(不要纯黑)
   (2) 左栏 task-list 拉满,让任务占主导
   ============================================ */

/* (1) 底色——paper 微提亮,让墨蓝可见;body 加更明显的青绿/蓝紫晕染 */
.theme-dark.dashboard-body {
  --paper: #1a2030;       /* 比 #141822 亮一档,有墨蓝质感 */
  --paper-deep: #12182a;
  --paper-soft: #232a3e;
  background:
    radial-gradient(circle at 14% 22%, rgba(126,169,154,0.10), transparent 38%),
    radial-gradient(circle at 86% 78%, rgba(107,140,160,0.10), transparent 42%),
    linear-gradient(180deg, #1c2438 0%, #14192a 100%) !important;
}
.theme-dark { --paper: #1a2030; --paper-deep: #12182a; --paper-soft: #232a3e; }

/* 左栏/工作区面板加可见薄雾(浅墨蓝),不再融化在底色里 */
.theme-dark.dashboard-body .task-rail {
  background: rgba(180,195,225,0.045) !important;
  border-color: rgba(180,195,225,0.12) !important;
}
.theme-dark.dashboard-body .workspace-canvas {
  background: rgba(180,195,225,0.045) !important;
  border-color: rgba(180,195,225,0.12) !important;
}
.theme-dark.dashboard-body .workspace-body,
.theme-dark.dashboard-body .workspace-body[data-view="stream"],
.theme-dark.dashboard-body .workspace-body[data-view="result"] {
  background: rgba(180,195,225,0.04) !important;
}

/* (2) task-list 撑满,user-chip 紧贴底部但不再留大空白 */
.task-rail { display: flex !important; flex-direction: column !important; height: 100% !important; }
.task-rail .task-list {
  flex: 1 1 0 !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}
.rail-bottom {
  margin-top: 8px !important;
  padding: 8px 0 0 !important;
  border-top: 1px solid rgba(180,195,225,0.10) !important;
}

/* user-chip 进一步压扁 */
.user-chip { padding: 6px 10px !important; gap: 8px !important; grid-template-columns: 24px 1fr 12px !important; }
.user-chip .user-chip-avatar,
.user-chip > div:first-child { width: 24px !important; height: 24px !important; font-size: 10px !important; }

/* ============================================
   v3.2.11 顶部彻底瘦身,对齐紧凑布局:
   - 隐藏 "任务/TASKS" 大标题(没人需要它)
   - 隐藏 "更早/今日" 分组标题(占行不实用)
   - 把项目/搜索/filter 压成两行
   ============================================ */

/* 1) 任务大标题块整个去掉,filter dots 和 collapse 留下 */
.task-rail .rail-head .column-head { display: none !important; }
.task-rail .rail-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 0 !important;
  margin: 0 !important;
  min-height: 24px !important;
  gap: 6px !important;
}
.task-rail .rail-head .task-filter-dots { gap: 4px !important; }

/* 2) 分组日期标题(更早/今日)隐藏 */
.task-date-title,
.task-date-group > h3,
.task-list .task-date-title { display: none !important; }
.task-date-group { margin: 0 !important; padding: 0 !important; }

/* 3) project-switcher 再压扁 */
.project-switcher {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 0 !important;
  margin: 0 !important;
  min-height: 26px !important;
}
.project-select-btn { height: 26px !important; padding: 0 8px !important; font-size: 12px !important; }
.project-switcher-label { font-size: 10px !important; }

/* 4) 任务栏整体 gap 收紧 */
.task-rail { padding: 10px 12px !important; gap: 6px !important; }
.task-search { height: 28px !important; }

/* ============================================
   v3.2.12 user-chip 真正贴底 —— 紧凑布局
   ============================================ */
.task-rail { position: relative !important; padding-bottom: 70px !important; }
.rail-bottom {
  position: absolute !important;
  left: 12px !important;
  right: 12px !important;
  bottom: 10px !important;
  margin: 0 !important;
  padding: 8px 0 0 !important;
  border-top: 1px solid rgba(180,195,225,0.10) !important;
  background: transparent !important;
}

/* ============================================
   v3.2.13 紧凑布局 task-list 全滚动 + compose 与 user-chip 齐平
   ============================================ */

/* 查看更多按钮彻底隐藏 */
.task-more-btn, #taskMoreBtn { display: none !important; }

/* task-list 撑满中间所有空间,内部滚动 */
.task-rail .task-list {
  flex: 1 1 0 !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  scrollbar-width: thin !important;
}
.task-rail .task-list {
  scrollbar-width: thin !important;
  scrollbar-color: rgba(180,195,225,0.08) transparent !important;
}
.task-rail .task-list::-webkit-scrollbar { width: 4px !important; }
.task-rail .task-list::-webkit-scrollbar-thumb {
  background: rgba(180,195,225,0.08) !important;
  border-radius: 2px !important;
  border: 0 !important;
}
.task-rail .task-list::-webkit-scrollbar-track { background: transparent !important; }
.task-rail .task-list::-webkit-scrollbar-button { display: none !important; }
.task-rail .task-list:hover::-webkit-scrollbar-thumb { background: rgba(180,195,225,0.18) !important; }

/* v3.2.26 全局极细滚动条 紧凑布局: 默认几乎不可见, hover 才轻提亮 */
.workspace-canvas,
.workspace-body,
.plaza-wrap,
.plaza-cols {
  scrollbar-width: thin !important;
  scrollbar-color: rgba(180,195,225,0.08) transparent !important;
}
.workspace-canvas::-webkit-scrollbar,
.workspace-body::-webkit-scrollbar,
.plaza-wrap::-webkit-scrollbar,
.plaza-cols::-webkit-scrollbar { width: 4px; height: 4px; }
.workspace-canvas::-webkit-scrollbar-track,
.workspace-body::-webkit-scrollbar-track,
.plaza-wrap::-webkit-scrollbar-track,
.plaza-cols::-webkit-scrollbar-track { background: transparent; }
.workspace-canvas::-webkit-scrollbar-thumb,
.workspace-body::-webkit-scrollbar-thumb,
.plaza-wrap::-webkit-scrollbar-thumb,
.plaza-cols::-webkit-scrollbar-thumb {
  background: rgba(180,195,225,0.08);
  border-radius: 2px;
}
.workspace-canvas:hover::-webkit-scrollbar-thumb,
.workspace-body:hover::-webkit-scrollbar-thumb,
.plaza-wrap:hover::-webkit-scrollbar-thumb,
.plaza-cols:hover::-webkit-scrollbar-thumb { background: rgba(180,195,225,0.18); }

/* workstage 撑满高度,让 compose-area 自然贴底,与 user-chip 齐平 */
.workstage {
  height: 100% !important;
  grid-template-rows: minmax(0, 1fr) auto !important;
}
.workstage-bar { align-self: stretch !important; width: 100% !important; }

/* v3.2.14 compose 与 user-chip 真正齐平 */
.workstage { padding-bottom: 60px !important; }

/* v3.2.15 撤销 padding-bottom,改让 workstage row 2 贴底 */
.workstage { padding-bottom: 0 !important; height: 100% !important; }
.workstage > .workstage-bar { margin-top: auto !important; }
.workstage > .compose-area {
  margin-top: auto !important;
  padding-bottom: 10px !important;
}

/* v3.2.16 撤销 absolute chip 方案,改用 flex margin-top:auto
   让 rail 高度与 workstage 自然对齐,compose 与 chip 在同一 grid row 底部齐平 */
.task-rail {
  height: auto !important;
  padding-bottom: 12px !important;
  position: relative !important;
}
.rail-bottom {
  position: static !important;
  margin-top: auto !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 10px 0 0 !important;
  border-top: 1px solid rgba(180,195,225,0.10) !important;
}
.workstage {
  padding-bottom: 0 !important;
  height: auto !important;
}
.workstage > .compose-area {
  margin-top: 0 !important;
  padding-bottom: 0 !important;
}

/* v3.2.17 rail 不知为何 offsetTop 偏移 88px — 强制 align start */
.dashboard-shell.three-col > .task-rail,
.dashboard-shell.three-col > .workstage {
  align-self: start !important;
  margin-top: 0 !important;
}
.dashboard-shell.three-col > .task-rail {
  height: 792px !important;
  min-height: 792px !important;
}

/* v3.2.18 撤回前面对齐尝试,恢复 rail/workstage 原始 grid 行为
   chip 用 absolute 贴 rail 底,compose 用 absolute 贴 workstage 底,各自独立 */
.dashboard-shell.three-col > .task-rail,
.dashboard-shell.three-col > .workstage {
  align-self: stretch !important;
  height: 792px !important;
  min-height: 792px !important;
}
.task-rail {
  position: relative !important;
  top: 0 !important;
  padding-bottom: 72px !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}
.task-rail .task-list {
  flex: 1 1 0 !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  margin-bottom: 70px !important;
}
.dashboard-shell.three-col > .task-rail { padding-bottom: 12px !important; }
.task-rail > .rail-bottom { bottom: 6px !important; padding: 8px 0 6px !important; }
/* v3.2.22 新工具栏:状态滤镜圆点 + 折叠键 */
.rail-toolbar {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 4px 6px 6px !important;
  margin: 2px 0 !important;
}
.rail-toolbar .task-filter-dots {
  display: flex !important;
  gap: 6px !important;
}
.rail-toolbar .task-filter-dot {
  width: 18px; height: 18px;
  border-radius: 50%;
  border: 1px solid rgba(180,195,225,0.22);
  background: transparent;
  color: inherit;
  font-size: 9px;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
  padding: 0;
}
.rail-toolbar .task-filter-dot[data-status="已完成"] span { width: 8px; height: 8px; border-radius: 50%; background: var(--mineral-green,#7ea99a); display: block; }
.rail-toolbar .task-filter-dot[data-status="进行中"] span { width: 8px; height: 8px; border-radius: 50%; background: var(--mineral-blue,#6b8ca0); display: block; }
.rail-toolbar .task-filter-dot[data-status="已失败"] span { width: 8px; height: 8px; border-radius: 50%; background: var(--vermilion,#c25a4a); display: block; opacity: 0.7; }
.rail-toolbar .task-filter-dot.is-active { border-color: rgba(180,195,225,0.5); background: rgba(180,195,225,0.10); }
.rail-toolbar .rail-collapse {
  width: 24px; height: 24px;
  border: 1px solid rgba(180,195,225,0.18);
  background: transparent;
  border-radius: 6px;
  color: inherit;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0;
}
.task-fav-only {
  display: inline-flex !important; align-items: center; gap: 4px;
  font-size: 11px; opacity: 0.7;
  margin-left: auto;
  cursor: pointer;
}
.task-fav-only input { margin: 0; }
.rail-bottom {
  position: absolute !important;
  left: 12px !important;
  right: 12px !important;
  bottom: 0 !important;
  margin: 0 !important;
  padding: 8px 0 12px !important;
  border-top: 1px solid rgba(180,195,225,0.10) !important;
  background: transparent !important;
}
.workstage {
  position: relative !important;
  padding-bottom: 0 !important;
}
.workstage > .workstage-bar {
  position: absolute !important;
  left: 18px !important;
  right: 18px !important;
  bottom: 0 !important;
  margin: 0 !important;
  padding: 0 0 12px !important;
  max-height: none !important;
  height: auto !important;
}
.workstage > .workspace-canvas {
  padding-bottom: 140px !important;
}

/* v3.2.20 左轨快捷入口 + 整页上提 让 compose 首屏可见 */
.rail-nav {
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
  margin: 4px 0 6px !important;
  padding: 0 2px !important;
}
.rail-nav-item {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 7px 10px !important;
  border: 0 !important;
  background: transparent !important;
  border-radius: 8px !important;
  color: var(--ink) !important;
  font-size: 13px !important;
  font-family: inherit !important;
  cursor: pointer !important;
  text-align: left !important;
  transition: background 0.15s ease !important;
}
.rail-nav-item:hover {
  background: rgba(180,195,225,0.08) !important;
}
.theme-light.dashboard-body .rail-nav-item:hover {
  background: rgba(60,80,110,0.06) !important;
}
.rail-nav-item svg {
  opacity: 0.75 !important;
  flex-shrink: 0 !important;
}
body.rail-collapsed .rail-nav { display: none !important; }

/* 整页上提:把 dashboard-shell 顶部 padding 收紧 + grid-row 高度减小让 compose 在 ~900px 视口内可见 */
.dashboard-shell.three-col {
  padding-top: 8px !important;
  grid-template-rows: minmax(620px, calc(100vh - 130px)) !important;
}
.dashboard-shell.three-col > .task-rail,
.dashboard-shell.three-col > .workstage {
  height: 100% !important;
  min-height: 0 !important;
  max-height: calc(100vh - 130px) !important;
}

/* v3.2.21 紧凑布局左轨重构 + 左右卡片对齐 */
.rail-section-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  padding: 14px 10px 4px !important;
  margin: 0 !important;
}
.rail-section-label {
  font-size: 11px !important;
  letter-spacing: 0.18em !important;
  opacity: 0.5 !important;
  font-weight: 500 !important;
}
.scene-switcher {
  position: relative;
  margin: 0 2px 8px !important;
}
.scene-select-btn {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  width: 100% !important;
  padding: 8px 12px !important;
  background: transparent !important;
  border: 1px solid rgba(180,195,225,0.12) !important;
  border-radius: 8px !important;
  color: inherit !important;
  font-family: inherit !important;
  font-size: 13px !important;
  cursor: pointer !important;
  text-align: left !important;
}
.scene-select-btn:hover { background: rgba(180,195,225,0.06) !important; }
.scene-select-menu {
  list-style: none !important;
  margin: 4px 0 0 !important;
  padding: 4px !important;
  position: absolute !important;
  top: 100% !important; left: 0 !important; right: 0 !important;
  background: var(--paper, #1a2030) !important;
  border: 1px solid rgba(180,195,225,0.15) !important;
  border-radius: 8px !important;
  z-index: 50 !important;
  box-shadow: 0 8px 24px rgba(10,14,22,0.35) !important;
}
.scene-select-menu li {
  padding: 7px 10px !important;
  font-size: 13px !important;
  border-radius: 6px !important;
  cursor: pointer !important;
}
.scene-select-menu li:hover { background: rgba(180,195,225,0.08) !important; }
.rail-section-divider {
  height: 1px;
  background: rgba(180,195,225,0.08);
  margin: 4px 10px 6px;
}

/* v3.2.23 外框透明:工作区和左轨取消外卡片边,只保留内层卡片;compose 单独加强 */
.dashboard-shell.three-col > .task-rail,
.dashboard-shell.three-col > .workstage {
  border-radius: 0 !important;
  border: 0 !important;
  background: transparent !important;
  overflow: visible !important;
  padding: 4px 0 !important;
}
.task-rail { overflow: hidden !important; }
/* 真正的外框来自 .workspace-canvas — 强制砍掉 */
.dashboard-body .workspace-canvas,
.theme-dark.dashboard-body .workspace-canvas,
.theme-light.dashboard-body .workspace-canvas {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 0 8px !important;
}
/* 工作区标题顶格巨左, 内容统一内缩 */
.workspace-canvas > .workspace-head { padding-left: 0 !important; padding-right: 0 !important; }
.workspace-canvas > .workspace-body,
.workspace-canvas > .focus-pane,
.workspace-canvas > .ws-views,
.workspace-canvas > .ws-view {
  padding-left: 96px !important;
  padding-right: 96px !important;
  box-sizing: border-box !important;
}
/* compose-area 强卡片感 */
.workstage > .workstage-bar .compose-area,
.workstage > .workstage-bar {
  border-radius: 14px !important;
  border: 1px solid rgba(180,195,225,0.18) !important;
  background: rgba(255,255,255,0.03) !important;
  padding: 10px 14px !important;
}
.theme-light.dashboard-body .workstage > .workstage-bar {
  background: rgba(255,255,255,0.7) !important;
  border-color: rgba(60,80,110,0.16) !important;
  box-shadow: 0 2px 8px rgba(60,80,110,0.06) !important;
}
.theme-dark.dashboard-body .workstage > .workstage-bar {
  background: rgba(30,38,54,0.6) !important;
  border-color: rgba(180,195,225,0.20) !important;
  box-shadow: 0 2px 12px rgba(0,0,0,0.25) !important;
}
.dashboard-shell.three-col { gap: 14px !important; }

/* v3.2.24 彻底砍工作区所有外框, 只留 compose 输入框边框; 今日推荐顶端对齐 */
.dashboard-body .workspace-body,
.theme-dark.dashboard-body .workspace-body,
.theme-light.dashboard-body .workspace-body {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
  padding-top: 8px !important;
}
/* compose-area / compose-shell 内边框去掉, 只保留 .workstage-bar 一层卡片 */
.workstage > .workstage-bar .compose-area,
.workstage > .workstage-bar .compose-shell,
.workstage-bar .compose-area,
.workstage-bar .compose-shell {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
}

/* v3.2.25 重点推荐居中; 工作区(含造梦广场)不挡 compose */
.workspace-recommendations {
  margin: 0 !important;
  max-width: none !important;
}
.workspace-recommendations header {
  justify-content: flex-start !important;
  text-align: left !important;
}
.workspace-recommend-grid {
  justify-content: flex-start !important;
}
/* 工作区主体可滚动, 给 compose 留出空间, 不再覆盖 */
.workstage {
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
}
.workstage > .workspace-canvas {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow: auto !important;
  padding: 0 64px 8px !important;
}
.workstage > .workstage-bar {
  margin-left: 96px !important;
  margin-right: 96px !important;
  width: auto !important;
  box-sizing: border-box !important;
}
.workstage > .workstage-bar .compose-area,
.workstage > .workstage-bar .compose-shell {
  max-width: none !important;
  width: 100% !important;
}
.workstage > .workstage-bar {
  position: relative !important;
  flex: 0 0 auto !important;
  margin-top: 0 !important;
}
.plaza-cols, .plaza-wrap { max-height: none !important; }
.plaza-col { gap: 10px !important; }
.plaza-thumb { aspect-ratio: 16 / 10 !important; min-height: 0 !important; }

/* 顶部 nav 紧贴卡片顶部对齐 */
.rail-nav { margin-top: 0 !important; }
.workstage > .workspace-canvas > .column-head:first-of-type { padding-top: 0 !important; margin-top: 0 !important; }

/* v3.2.20 自动化抽屉 */
.automation-backdrop {
  position: fixed; inset: 0;
  background: rgba(10,14,22,0.45);
  opacity: 0; pointer-events: none;
  transition: opacity 0.2s ease;
  z-index: 998;
}
.automation-backdrop.is-open { opacity: 1; pointer-events: auto; }
.automation-drawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: 420px; max-width: 92vw;
  background: var(--paper, #f6f0df);
  color: var(--ink, #2a2f3a);
  box-shadow: -10px 0 30px rgba(10,14,22,0.25);
  transform: translateX(100%);
  transition: transform 0.25s ease;
  z-index: 999;
  display: flex; flex-direction: column;
  padding: 18px 18px 12px;
}
.theme-dark.dashboard-body .automation-drawer {
  background: #1a2030;
  color: #e8e2d0;
}
.automation-drawer.is-open { transform: translateX(0); }
.automation-drawer-head { display: flex; align-items: center; justify-content: space-between; }
.automation-drawer-head h2 { margin: 0; font-size: 17px; letter-spacing: 0.12em; }
.automation-drawer-head .en { font-size: 10px; opacity: 0.6; letter-spacing: 0.2em; margin-left: 6px; }
.automation-drawer-close {
  background: transparent; border: 0; color: inherit;
  font-size: 22px; cursor: pointer; line-height: 1; padding: 4px 8px;
}
.automation-hint { font-size: 12px; opacity: 0.7; margin: 6px 0 12px; line-height: 1.5; }
.automation-list {
  list-style: none; margin: 0 0 10px; padding: 0;
  max-height: 280px; overflow-y: auto;
  border-top: 1px solid rgba(180,195,225,0.12);
  border-bottom: 1px solid rgba(180,195,225,0.12);
}
.automation-empty { padding: 18px 4px; font-size: 12px; opacity: 0.55; text-align: center; }
.automation-item {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 4px; border-bottom: 1px solid rgba(180,195,225,0.08);
}
.automation-item.is-off { opacity: 0.5; }
.automation-item-main { flex: 1; min-width: 0; }
.automation-item-name { font-size: 13px; font-weight: 500; }
.automation-item-meta { font-size: 11px; opacity: 0.6; margin-top: 2px; }
.automation-toggle, .automation-del {
  border: 1px solid rgba(180,195,225,0.2);
  background: transparent; color: inherit;
  font-size: 11px; padding: 4px 8px; border-radius: 6px; cursor: pointer;
}
.automation-del { width: 24px; padding: 4px 0; font-size: 16px; line-height: 1; }
.automation-toggle:hover, .automation-del:hover { background: rgba(180,195,225,0.08); }
.automation-form { display: flex; flex-direction: column; gap: 8px; font-size: 12px; }
.automation-form h3 { margin: 8px 0 4px; font-size: 13px; letter-spacing: 0.08em; }
.automation-form label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; opacity: 0.8; }
.automation-form input[type=text], .automation-form input[name=name], .automation-form textarea, .automation-form select {
  font-family: inherit; font-size: 12px;
  padding: 6px 8px;
  border: 1px solid rgba(180,195,225,0.2);
  border-radius: 6px;
  background: transparent; color: inherit;
}
.automation-form textarea { resize: vertical; min-height: 44px; }
.automation-schedule { border: 1px solid rgba(180,195,225,0.15); border-radius: 6px; padding: 8px 10px; margin: 0; }
.automation-schedule legend { font-size: 11px; opacity: 0.7; padding: 0 4px; }
.automation-schedule label { flex-direction: row; align-items: center; gap: 6px; padding: 3px 0; font-size: 12px; opacity: 1; }
.automation-schedule input[type=time], .automation-schedule input[type=number], .automation-schedule select {
  font-size: 12px; padding: 3px 6px;
  border: 1px solid rgba(180,195,225,0.2); border-radius: 4px;
  background: transparent; color: inherit; font-family: inherit;
}
.automation-submit {
  margin-top: 6px; padding: 8px;
  background: var(--mineral-blue, #6b8ca0); color: #fff;
  border: 0; border-radius: 6px; font-size: 13px; cursor: pointer;
  font-family: inherit; letter-spacing: 0.05em;
}
.automation-submit:hover { opacity: 0.9; }

/* v3.2.28 "入梦"按钮统一用小乙印章朱砂红 (深浅主题一致, 原 var(--ink) 在浅底偏浅) */
.dashboard-body .compose-bar .primary-dream-button {
  background: var(--vermilion, #9d2933) !important;
  color: #fff8f2 !important;
}
.dashboard-body .compose-bar .primary-dream-button .btn-cn,
.dashboard-body .compose-bar .primary-dream-button .btn-send-arrow {
  color: #fff8f2 !important;
}
.dashboard-body .compose-bar .primary-dream-button:hover:not(:disabled) {
  background: #862029 !important;
  color: #fff8f2 !important;
}
/* 禁用态保持与右上角"退出"印章完全同色 (满色朱砂), 仅光标提示不可点, 不降透明 */
.dashboard-body .compose-bar .primary-dream-button:disabled {
  opacity: 1 !important;
  background: var(--vermilion, #9d2933) !important;
  color: #fff8f2 !important;
  cursor: not-allowed !important;
}

/* v3.2.28 HOT 角标 (彩票/世界杯等运营位) */
.workspace-recommend-card { position: relative; }
.workspace-recommend-hot {
  position: absolute; top: 8px; right: 8px;
  font-size: 9px; letter-spacing: 0.12em; font-weight: 600;
  padding: 2px 6px; border-radius: 4px;
  background: linear-gradient(135deg, #ff6b6b, #ff3b3b);
  color: #fff;
  box-shadow: 0 1px 4px rgba(255, 59, 59, 0.3);
  pointer-events: none;
}

/* v3.2.27 6 卡片严格对齐 compose-bar 两端 (撤掉早先 left:18px/right:18px 偏移; 强制 rec 容器铺满 body 内容区) */
.workstage > .workstage-bar {
  left: 0 !important;
  right: 0 !important;
}
.workspace-body > .workspace-recommendations {
  width: 100% !important;
  flex: 1 1 auto !important;
  align-self: stretch !important;
}
.workspace-recommend-grid {
  width: 100% !important;
  max-width: none !important;
}

/* v3.2.29 输入框自动长高: 放宽早先紧凑化的 96px 死限, 让长指令像紧凑布局 那样
   随内容长高(JS fitDreamTextarea 控制 56→180px), 封顶后内部出滚动条。
   bar 同步放宽, 只在打长时变高; 短输入仍紧凑, 不挤卡片。*/
.dashboard-body .workstage-bar {
  max-height: 232px !important;
}
.dashboard-body .workstage-bar .compose-shell textarea,
.dashboard-body .compose-shell textarea {
  min-height: 56px !important;
  max-height: 180px !important;
  overflow-y: auto !important;
  /* 关键: 撤掉 flex:1 1 0 (那会让 flex 容器分配高度, 无视 JS 设的 height);
     改 0 0 auto 让 fitDreamTextarea 设的 height 真正生效 */
  flex: 0 0 auto !important;
}
