/* ════════════════════════════════════════════════════════════════
   UI 增强层（独立文件，不修改 main.css）
   1) AI 栏阅读体验：字号/行距/气泡质感 + 专注阅读模式
   2) 双主题：light（暖色羊皮纸）/ observatory（深夜观测台）
   3) 响应式：<1024px 底部标签页导航，桌面布局不变
   4) 字号调节（A+/A-）
   ════════════════════════════════════════════════════════════════ */

/* ── 1. AI 栏阅读体验（两主题通用） ── */
.bubble-content {
  font-size: 15px;
  line-height: 1.8;
}

.chat-bubble {
  max-width: 96%;
}

.ai-panel .panel-label {
  font-size: 13px;
}

.ai-panel .chat-messages {
  padding: 14px 16px;
}

/* AI 回复改为白卡样式，咨询师提问用品牌色浅底 */
.chat-bubble.ai .bubble-content {
  background: var(--bg-input);
  border: 1px solid var(--border-default);
  box-shadow: 0 1px 3px rgba(45, 35, 25, 0.06);
}

.chat-bubble.consultant .bubble-content {
  background: var(--brand-subtle);
  border: 1px solid var(--border-default);
}

/* 整体质感：卡片阴影、金线、顶栏 */
.planet-table-wrap,
.transit-time-bar,
.aspect-matrix-wrap {
  box-shadow: 0 1px 4px rgba(45, 35, 25, 0.07);
}

.login-box {
  box-shadow: 0 14px 44px rgba(45, 35, 25, 0.13);
  border-top: 3px solid var(--brand-primary);
}

.ai-panel {
  box-shadow: -6px 0 18px rgba(45, 35, 25, 0.05);
}

.topbar {
  background: linear-gradient(180deg, var(--bg-panel), var(--bg-page));
}

.topbar-title {
  letter-spacing: 0.5px;
}

/* 复制按钮（由 ui-enhance.js 注入到 AI 气泡底部） */
.btn-ui-copy {
  margin-top: 6px;
  padding: 2px 10px;
  border: 1px solid var(--border-default);
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  font-size: 11px;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
}

.btn-ui-copy:hover {
  color: var(--text-accent);
  border-color: var(--brand-primary);
}

/* ── 2. 专注阅读模式：AI 栏全屏居中 ── */
body.ai-focus-mode .ai-panel {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 1080px;
  z-index: 1500;
  box-shadow: 0 0 0 200vmax rgba(15, 12, 8, 0.45);
}

body.ai-focus-mode .bubble-content {
  font-size: 17px;
  line-height: 1.9;
}

body.ai-focus-mode .chat-bubble {
  max-width: 88%;
}

/* ── AI 栏浮动模式：可拖拽、可调大小的浮窗 ── */
.ai-panel.ai-floating {
  position: fixed;
  /* 层级：高于工作区内容(1)、底部标签栏(900)；低于专注模式(1500)和弹窗由弹窗自身 1000+ 提升 —— 见下 */
  z-index: 1600;
  width: 420px;
  height: 70vh;
  min-width: 300px;
  min-height: 320px;
  left: 40px;
  top: 70px;
  border: 1px solid var(--border-default);
  border-radius: 12px;
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.35);
  resize: both;
  overflow: hidden;
  flex: none;
}

/* 弹窗始终在浮窗之上，避免浮动窗盖住新建客户等对话框 */
.modal-overlay { z-index: 2000; }
body.ai-focus-mode { z-index: auto; }
body.ai-focus-mode .ai-panel { z-index: 1700; }

.ai-panel.ai-floating .ai-panel-header {
  cursor: move;
  user-select: none;
  touch-action: none;
  border-radius: 12px 12px 0 0;
}

.ai-panel.ai-floating .chat-messages {
  flex: 1;
  min-height: 0;
}

@media (max-width: 1023px) {
  .ai-panel.ai-floating {
    position: static;
    width: 100%;
    height: auto;
    resize: none;
    border-radius: 0;
    box-shadow: none;
  }
  .ai-panel.ai-floating .ai-panel-header { cursor: default; }
}

/* ── 3. 主题二：observatory 深夜观测台（近黑 + 香槟金，主打主题） ── */
body[data-theme="observatory"] {
  color-scheme: dark;
  --bg-page: #070a11;
  --bg-panel: #0d1320;
  --bg-card: #111a2b;
  --bg-input: #152032;
  --bg-hover: rgba(201, 164, 92, 0.10);
  --bg-selected: rgba(201, 164, 92, 0.18);
  --text-primary: #ece7da;
  --text-secondary: #aab2bf;
  --text-muted: #6e7787;
  --text-accent: #d4b96a;
  --brand-primary: #c9a45c;
  --brand-light: #a9853f;
  --brand-glow: rgba(201, 164, 92, 0.25);
  --brand-subtle: rgba(201, 164, 92, 0.10);
  --border-default: rgba(212, 185, 106, 0.16);
  --border-input: rgba(212, 185, 106, 0.26);
}

body[data-theme="observatory"] .btn-ghost {
  background: rgba(255, 255, 255, 0.04);
}

body[data-theme="observatory"] .chat-bubble.consultant .bubble-content {
  background: rgba(201, 164, 92, 0.18);
}

body[data-theme="observatory"] .chat-bubble.system .bubble-content {
  background: rgba(122, 152, 210, 0.13);
  border-left: 3px solid #7a98d2;
}

body[data-theme="observatory"] .chat-bubble.ai .bubble-content {
  background: rgba(255, 255, 255, 0.05);
}

body[data-theme="observatory"] .chat-bubble.ai_polish .bubble-content {
  background: rgba(255, 255, 255, 0.04);
  border: 1px dashed rgba(201, 164, 92, 0.4);
}

body[data-theme="observatory"] .planet-table th,
body[data-theme="observatory"] .aspect-matrix th,
body[data-theme="observatory"] .aspect-matrix .row-head {
  background: rgba(255, 255, 255, 0.04);
}

body[data-theme="observatory"] .planet-table td {
  border-bottom-color: rgba(255, 255, 255, 0.05);
}

body[data-theme="observatory"] .aspect-matrix th,
body[data-theme="observatory"] .aspect-matrix td {
  border-color: rgba(255, 255, 255, 0.08);
}

body[data-theme="observatory"] .transit-step-btn,
body[data-theme="observatory"] .return-year-input {
  background: rgba(255, 255, 255, 0.05);
}

body[data-theme="observatory"] .transit-datetime-input {
  background: rgba(255, 255, 255, 0.08);
}

body[data-theme="observatory"] .gender-btn.active,
body[data-theme="observatory"] .chart-mode-btn.active {
  background: rgba(201, 164, 92, 0.18);
}

body[data-theme="observatory"] .client-item.active {
  border-color: rgba(201, 164, 92, 0.45);
}

body[data-theme="observatory"] .session-item.active {
  border-color: rgba(201, 164, 92, 0.4);
}

body[data-theme="observatory"] .client-info-bar {
  background: rgba(201, 164, 92, 0.05);
}

body[data-theme="observatory"] .spinner {
  border-color: rgba(201, 164, 92, 0.25);
}

body[data-theme="observatory"] .col-resizer:hover,
body[data-theme="observatory"] .col-resizer.active,
body[data-theme="observatory"] body.col-resizing .col-resizer {
  background: rgba(201, 164, 92, 0.3);
}

body[data-theme="observatory"] .training-table th {
  background: rgba(255, 255, 255, 0.04);
}

body[data-theme="observatory"] .planet-table-wrap,
body[data-theme="observatory"] .transit-time-bar,
body[data-theme="observatory"] .aspect-matrix-wrap,
body[data-theme="observatory"] .login-box {
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.4);
}

body[data-theme="observatory"] .slider {
  background: #0d1420;
}

body[data-theme="observatory"] ::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.14);
}

/* 主题按钮图标状态见文件末尾三主题循环规则 */

/* ── 4. 字号调节 ── */
html[data-fontsize="large"] .bubble-content { font-size: 16.5px; }
html[data-fontsize="large"] .system-reading,
html[data-fontsize="large"] .opening-script,
html[data-fontsize="large"] .personality-box { font-size: 14.5px; }

html[data-fontsize="xlarge"] .bubble-content { font-size: 18px; }
html[data-fontsize="xlarge"] .system-reading,
html[data-fontsize="xlarge"] .opening-script,
html[data-fontsize="xlarge"] .personality-box { font-size: 16px; }

html[data-fontsize="large"] body.ai-focus-mode .bubble-content { font-size: 18px; }
html[data-fontsize="xlarge"] body.ai-focus-mode .bubble-content { font-size: 20px; }

/* ── 5. 移动端底部标签页（<1024px），桌面布局不受影响 ── */
.mobile-tabbar {
  display: none;
}

@media (max-width: 1023px) {
  html, body {
    height: 100dvh;
    overflow: hidden;
  }

  #main-page {
    height: 100dvh;
    padding-bottom: 54px;
  }

  .statusbar {
    display: none;
  }

  .col-resizer {
    display: none;
  }

  .workspace > .sidebar,
  .workspace > .chart-area,
  .workspace > .right-panel,
  .workspace > .ai-panel {
    display: none !important;
    width: 100% !important;
    flex: 1 1 auto !important;
    min-width: 0;
  }

  body[data-mview="clients"] .workspace > .sidebar { display: flex !important; }
  body[data-mview="chart"] .workspace > .chart-area { display: flex !important; }
  body[data-mview="reading"] .workspace > .right-panel { display: flex !important; }
  body[data-mview="ai"] .workspace > .ai-panel { display: flex !important; }

  /* 专注模式在移动端无意义（AI 本身已全屏） */
  body.ai-focus-mode .ai-panel {
    max-width: 100%;
    box-shadow: none;
  }

  .mobile-tabbar {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    height: 54px;
    z-index: 900;
    background: var(--bg-panel);
    border-top: 1px solid var(--border-default);
  }

  .mobile-tab-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    position: relative;
    border: none;
    background: transparent;
    color: var(--text-muted);
    font-size: 11px;
    cursor: pointer;
    padding: 4px 0;
  }

  .mobile-tab-btn .tab-icon {
    font-size: 18px;
    line-height: 1;
  }

  .mobile-tab-btn.active {
    color: var(--text-accent);
  }

  .mobile-tab-btn.active::before {
    content: '';
    position: absolute;
    top: 0;
    left: 25%;
    right: 25%;
    height: 2px;
    background: var(--brand-primary);
    border-radius: 0 0 2px 2px;
  }

  /* AI 栏有新回复时的红点提示 */
  .mobile-tab-btn .tab-dot {
    display: none;
    position: absolute;
    top: 7px;
    right: calc(50% - 20px);
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--brand-primary);
  }

  .mobile-tab-btn.has-news .tab-dot {
    display: block;
  }

  /* 顶栏与按钮压缩 */
  .topbar {
    padding: 0 10px;
    height: 44px;
  }

  .topbar-kicker {
    display: none;
  }

  .topbar-title {
    font-size: 13px;
  }

  .topbar .btn-sm {
    padding: 4px 8px;
    font-size: 11px;
  }

  .topbar-right {
    gap: 6px;
  }

  /* 弹窗撑满 */
  .modal,
  .modal-wide {
    width: calc(100vw - 24px);
  }

  /* 星盘轮与表格在窄屏下的间距 */
  .chart-content {
    padding: 12px;
  }

  .wheel-container canvas {
    max-width: 100%;
    height: auto;
  }

  .ai-panel-footer .btn {
    padding: 9px 10px;
    font-size: 13px;
  }
}

@media (max-width: 480px) {
  #training-guide-btn {
    display: none;
  }
}

/* ════════════════════════════════════════════════════════════════
   设计精修层：登录门面（Co-Star/CHANI 式线艺 + 大留白 + 衬线标题）
   ════════════════════════════════════════════════════════════════ */

/* 双环徽记 + 中央星芒 */
.login-emblem {
  position: relative;
  width: 84px;
  height: 84px;
  margin: 0 auto 22px;
  animation: ui-emblem-in 1.1s ease both;
}

.login-emblem-ring {
  position: absolute;
  border-radius: 50%;
  border: 1px solid var(--border-default);
}

.login-emblem-ring.r1 { inset: 0; }
.login-emblem-ring.r2 { inset: 9px; border-style: dashed; }

.login-emblem-star {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  color: var(--text-accent);
}

body[data-theme="observatory"] .login-emblem-ring {
  border-color: rgba(212, 185, 106, 0.5);
}

body[data-theme="observatory"] .login-emblem-ring.r2 {
  border-color: rgba(212, 185, 106, 0.3);
  animation: ui-emblem-spin 60s linear infinite;
}

body[data-theme="observatory"] .login-emblem-star {
  color: #d4b96a;
  text-shadow: 0 0 18px rgba(201, 164, 92, 0.55);
}

@keyframes ui-emblem-spin {
  to { transform: rotate(360deg); }
}

@keyframes ui-emblem-in {
  from { opacity: 0; transform: scale(0.8); }
  to { opacity: 1; transform: scale(1); }
}

/* 标题下的金色发丝分隔 */
.login-logo-divider {
  display: block;
  width: 56px;
  height: 1px;
  margin: 18px auto 0;
  background: linear-gradient(90deg, transparent, var(--brand-primary), transparent);
}

/* 登录卡片入场：轻微上浮淡入 */
.login-box {
  animation: ui-login-card-in 0.7s ease both;
}

@keyframes ui-login-card-in {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

/* 输入框聚焦：金色微光 */
body[data-theme="observatory"] .form-input:focus {
  border-color: rgba(212, 185, 106, 0.55);
  box-shadow: 0 0 0 3px rgba(201, 164, 92, 0.12);
  outline: none;
}

@media (prefers-reduced-motion: reduce) {
  .login-emblem,
  .login-box { animation: none; }
  body[data-theme="observatory"] .login-emblem-ring.r2 { animation: none; }
}

/* ════════════════════════════════════════════════════════════════
   设计精修层：工作区排版层级（深夜观测台）
   ════════════════════════════════════════════════════════════════ */

/* 面板标题：小号大写间距 + 右延伸发丝线 */
body[data-theme="observatory"] .panel-label {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #d4b96a;
  font-size: 12px;
  letter-spacing: 2px;
}

body[data-theme="observatory"] .panel-label::after {
  content: '';
  flex: 1;
  height: 1px;
  background: linear-gradient(90deg, rgba(212, 185, 106, 0.35), transparent);
}

/* 盘种标签：金色下划线动画 */
body[data-theme="observatory"] .chart-tab {
  position: relative;
  color: var(--text-secondary);
  letter-spacing: 0.5px;
}

body[data-theme="observatory"] .chart-tab::after {
  content: '';
  position: absolute;
  left: 50%;
  right: 50%;
  bottom: -1px;
  height: 2px;
  background: linear-gradient(90deg, #d8b86a, #a9853f);
  transition: left 0.25s ease, right 0.25s ease;
}

body[data-theme="observatory"] .chart-tab.active::after {
  left: 12%;
  right: 12%;
}

body[data-theme="observatory"] .chart-tab.active {
  color: #e8d9ae;
}

body[data-theme="observatory"] .chart-mode-btn {
  border-radius: 999px;
  padding: 6px 22px;
}

body[data-theme="observatory"] .chart-mode-btn.active {
  border-color: rgba(212, 185, 106, 0.55);
  box-shadow: 0 0 12px rgba(201, 164, 92, 0.15);
}

/* 客户列表项：左侧金轨 + 悬浮浮起 */
body[data-theme="observatory"] .client-item {
  border-left: 2px solid transparent;
  border-radius: 8px;
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}

body[data-theme="observatory"] .client-item:hover {
  border-left-color: rgba(212, 185, 106, 0.4);
  transform: translateX(2px);
}

body[data-theme="observatory"] .client-item.active {
  border-left-color: #c9a45c;
}

/* 表格行 hover：金色微光 */
body[data-theme="observatory"] .planet-table tr:hover td {
  background: rgba(201, 164, 92, 0.06);
}

/* 区块标题：金色短线前缀 */
body[data-theme="observatory"] .section-title::before {
  content: '—';
  color: rgba(212, 185, 106, 0.6);
  margin-right: 6px;
}

/* 空状态：星芒水印 */
body[data-theme="observatory"] .chart-empty {
  position: relative;
  color: var(--text-muted);
  letter-spacing: 2px;
}

body[data-theme="observatory"] .chart-empty::before {
  content: '✦';
  display: block;
  text-align: center;
  font-size: 40px;
  color: rgba(212, 185, 106, 0.25);
  margin-bottom: 14px;
}

/* 幽灵按钮 hover：金边微光 */
body[data-theme="observatory"] .btn-ghost:hover {
  border-color: rgba(212, 185, 106, 0.45);
  box-shadow: 0 0 10px rgba(201, 164, 92, 0.1);
  opacity: 1;
}

/* 滚动条：细金 */
body[data-theme="observatory"] ::-webkit-scrollbar-thumb {
  background: rgba(212, 185, 106, 0.22);
  border-radius: 3px;
}

body[data-theme="observatory"] ::-webkit-scrollbar-thumb:hover {
  background: rgba(212, 185, 106, 0.4);
}

/* 状态栏：小字距排印 */
body[data-theme="observatory"] .statusbar {
  background: linear-gradient(180deg, #0b1220, #080d18);
  border-top: 1px solid rgba(212, 185, 106, 0.14);
  letter-spacing: 0.5px;
}

/* 顶栏右侧用户名：金色 */
body[data-theme="observatory"] #consultant-name {
  color: rgba(212, 185, 106, 0.8);
}

/* 快捷问按钮：胶囊化 */
body[data-theme="observatory"] .topic-quick-btn {
  border-radius: 999px;
  border-color: rgba(212, 185, 106, 0.2);
}

/* ════════════════════════════════════════════════════════════════
   深夜观测台增强：星盘辉光 + 动态星空（仅 observatory 主题）
   ════════════════════════════════════════════════════════════════ */

/* 星盘画布辉光：蓝紫内晕 + 金色外晕 */
body[data-theme="observatory"] #chart-canvas {
  box-shadow:
    0 0 32px rgba(122, 152, 210, 0.18),
    0 0 90px rgba(201, 164, 92, 0.12);
  border-color: rgba(212, 185, 106, 0.28);
}

body[data-theme="observatory"] .wheel-container {
  position: relative;
}

body[data-theme="observatory"] .wheel-container::before {
  content: '';
  position: absolute;
  inset: -40px;
  z-index: -1;
  border-radius: 50%;
  background:
    radial-gradient(circle at 50% 50%, rgba(122, 152, 210, 0.10) 0%, transparent 60%),
    radial-gradient(circle at 50% 50%, rgba(201, 164, 92, 0.06) 0%, transparent 75%);
  pointer-events: none;
}

/* 动态星空层：登录页 + 主界面顶栏后方
   用两层错位的星点贴图做极慢平移，性能开销极小 */
@keyframes ui-starfield-drift-a {
  from { background-position: 0 0, 0 0; }
  to { background-position: -1200px 0, -900px -60px; }
}

@keyframes ui-starfield-drift-b {
  from { background-position: 0 -40px; }
  to { background-position: -1000px -40px; }
}

body[data-theme="observatory"] #login-page,
body[data-theme="observatory"] #main-page {
  position: relative;
}

body[data-theme="observatory"] #login-page::before,
body[data-theme="observatory"] .workspace::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    radial-gradient(1px 1px at 20px 30px, rgba(236, 231, 218, 0.55) 50%, transparent 51%),
    radial-gradient(1px 1px at 140px 90px, rgba(236, 231, 218, 0.35) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 260px 160px, rgba(212, 185, 106, 0.5) 50%, transparent 51%),
    radial-gradient(1px 1px at 380px 60px, rgba(236, 231, 218, 0.3) 50%, transparent 51%),
    radial-gradient(1px 1px at 90px 200px, rgba(122, 152, 210, 0.4) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 320px 240px, rgba(236, 231, 218, 0.3) 50%, transparent 51%),
    radial-gradient(1px 1px at 200px 300px, rgba(212, 185, 106, 0.35) 50%, transparent 51%),
    radial-gradient(1px 1px at 450px 180px, rgba(236, 231, 218, 0.28) 50%, transparent 51%),
    radial-gradient(1px 1px at 30px 380px, rgba(122, 152, 210, 0.3) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 170px 440px, rgba(236, 231, 218, 0.32) 50%, transparent 51%),
    radial-gradient(1px 1px at 410px 400px, rgba(212, 185, 106, 0.28) 50%, transparent 51%),
    radial-gradient(1px 1px at 280px 500px, rgba(236, 231, 218, 0.26) 50%, transparent 51%);
  background-size: 520px 560px;
  animation: ui-starfield-drift-a 240s linear infinite;
  opacity: 0.85;
}

/* [UI-MAIN-STARFIELD-STATIC-ACTIVE]
   主工作区包含圆盘、长读盘和聊天输入，移动整页背景会在无 GPU 合成时持续重绘。
   登录页保留动态效果；主工作区保留静态星点，不再占用输入主线程。 */
body[data-theme="observatory"] .workspace::before {
  animation: none;
  opacity: 0.42;
}

body[data-theme="observatory"] #login-page > *:not(#ui-cosmos-canvas),
body[data-theme="observatory"] .workspace > *:not(.ai-floating) {
  position: relative;
  z-index: 1;
}

/* 尊重系统"减少动态效果"设置 */
@media (prefers-reduced-motion: reduce) {
  body[data-theme="observatory"] #login-page::before,
  body[data-theme="observatory"] .workspace::before {
    animation: none;
  }
}

/* 登录页在星空上的卡片微光 */
body[data-theme="observatory"] .login-box {
  box-shadow:
    0 18px 60px rgba(0, 0, 0, 0.6),
    0 0 0 1px rgba(212, 185, 106, 0.12),
    0 0 46px rgba(201, 164, 92, 0.08);
  backdrop-filter: blur(2px);
}

/* ── 登录主页门面精修（observatory）── */
#ui-cosmos-canvas {
  display: none;
}

body[data-theme="observatory"] #ui-cosmos-canvas {
  display: block;
}

/* 星空之上的卡片：深空玻璃卡 */
body[data-theme="observatory"] #login-page .login-box {
  background: linear-gradient(180deg, rgba(17, 26, 44, 0.88) 0%, rgba(11, 18, 32, 0.92) 100%);
  border: 1px solid rgba(212, 185, 106, 0.18);
  border-radius: 18px;
  padding: 48px 42px;
}

body[data-theme="observatory"] #login-page .login-logo h1 {
  background: linear-gradient(120deg, #f0e3b8 0%, #c9a45c 50%, #ecdcab 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-size: 26px;
  letter-spacing: 2px;
  text-shadow: none;
}

body[data-theme="observatory"] #login-page .login-logo p {
  color: rgba(212, 185, 106, 0.75);
  letter-spacing: 4px;
}

body[data-theme="observatory"] #login-page .login-logo {
  text-shadow: 0 0 30px rgba(201, 164, 92, 0.35);
}

/* 登录按钮：金色渐变 + 流光扫过 */
body[data-theme="observatory"] #login-page #login-btn {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #dcbd74 0%, #b08a44 100%);
  color: #1a1206;
  font-weight: 600;
  letter-spacing: 6px;
  box-shadow: 0 4px 18px rgba(201, 164, 92, 0.28);
}

body[data-theme="observatory"] #login-page #login-btn::after {
  content: '';
  position: absolute;
  top: 0;
  left: -80%;
  width: 45%;
  height: 100%;
  background: linear-gradient(105deg, transparent, rgba(255, 248, 225, 0.5), transparent);
  transform: skewX(-20deg);
  animation: ui-btn-shimmer 3.2s ease-in-out infinite;
}

@keyframes ui-btn-shimmer {
  0% { left: -80%; }
  55% { left: 130%; }
  100% { left: 130%; }
}

@media (prefers-reduced-motion: reduce) {
  body[data-theme="observatory"] #login-page #login-btn::after {
    animation: none;
    display: none;
  }
}

/* ════════════════════════════════════════════════════════════════
   主题三：minimal 极简灰（高级灰 + 雾蓝紫，参照浅色高级灰参考图）
   ════════════════════════════════════════════════════════════════ */
body[data-theme="minimal"] {
  --bg-page: #eef0f5;
  --bg-panel: #ffffff;
  --bg-card: #ffffff;
  --bg-input: #ffffff;
  --bg-hover: rgba(102, 113, 143, 0.08);
  --bg-selected: rgba(102, 113, 143, 0.14);
  --text-primary: #23272f;
  --text-secondary: #5d6575;
  --text-muted: #9aa2b1;
  --text-accent: #4a5570;
  --brand-primary: #66718f;
  --brand-light: #8b93ad;
  --brand-glow: rgba(102, 113, 143, 0.2);
  --brand-subtle: rgba(102, 113, 143, 0.08);
  --border-default: rgba(35, 39, 47, 0.09);
  --border-input: rgba(35, 39, 47, 0.14);
}

/* 极简灰：按钮用雾蓝实底，保持克制 */
body[data-theme="minimal"] .btn-primary {
  background: var(--brand-primary);
  color: #fff;
}

body[data-theme="minimal"] .btn-ghost {
  background: transparent;
}

body[data-theme="minimal"] .chat-bubble.consultant .bubble-content {
  background: var(--brand-subtle);
}

body[data-theme="minimal"] .chat-bubble.system .bubble-content {
  background: rgba(102, 113, 143, 0.07);
  border-left-color: #8b93ad;
}

body[data-theme="minimal"] .chart-mode-btn.active {
  background: rgba(102, 113, 143, 0.1);
}

body[data-theme="minimal"] .client-item.active {
  border-color: rgba(102, 113, 143, 0.4);
}

body[data-theme="minimal"] .session-item.active {
  border-color: rgba(102, 113, 143, 0.35);
}

body[data-theme="minimal"] .topbar {
  background: #ffffff;
}

body[data-theme="minimal"] .topbar-kicker {
  color: #8b93ad;
  letter-spacing: 1.5px;
}

body[data-theme="minimal"] .login-box {
  box-shadow: 0 10px 36px rgba(35, 39, 47, 0.1);
  border-top-color: var(--brand-primary);
}

body[data-theme="minimal"] .planet-table-wrap,
body[data-theme="minimal"] .transit-time-bar,
body[data-theme="minimal"] .aspect-matrix-wrap {
  box-shadow: 0 1px 3px rgba(35, 39, 47, 0.06);
  border-radius: 10px;
}

/* 主题按钮图标状态（三主题循环）：observatory 显示 ☀、light 显示 ✦、minimal 显示 🌙 */
#theme-toggle-btn .icon-moon,
#theme-toggle-btn .icon-sun,
#theme-toggle-btn .icon-star { display: none; }
body[data-theme="light"] #theme-toggle-btn .icon-moon { display: inline; }
body[data-theme="minimal"] #theme-toggle-btn .icon-sun { display: inline; }
body[data-theme="observatory"] #theme-toggle-btn .icon-star { display: inline; }

/* ════════════════════════════════════════════════════════════════
   深夜观测台层次感增强：空间渐变 / 面板纵深 / 金色细节
   ════════════════════════════════════════════════════════════════ */

/* 工作区背景：左下金雾 + 右上深蓝云，制造空间纵深 */
body[data-theme="observatory"] .workspace {
  background:
    radial-gradient(1100px 560px at 62% -12%, rgba(96, 118, 178, 0.13), transparent 62%),
    radial-gradient(880px 480px at 8% 108%, rgba(201, 164, 92, 0.06), transparent 60%),
    var(--bg-page);
}

/* 顶栏：深空渐变 + 金色发丝线 + 标题金字 */
body[data-theme="observatory"] .topbar {
  background: linear-gradient(180deg, #101a2e 0%, #0a101d 100%);
  border-bottom: 1px solid rgba(212, 185, 106, 0.22);
  box-shadow: 0 2px 16px rgba(0, 0, 0, 0.45);
}

body[data-theme="observatory"] .topbar-title {
  background: linear-gradient(120deg, #ecdcab 0%, #c9a45c 55%, #e8d9ae 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* 三栏面板：纵向渐变代替平涂 */
body[data-theme="observatory"] .sidebar,
body[data-theme="observatory"] .right-panel,
body[data-theme="observatory"] .ai-panel {
  background: linear-gradient(180deg, #0f1728 0%, #0b1220 100%);
}

/* 数据卡片：渐变底 + 金色顶线 + 深投影，浮起层次 */
body[data-theme="observatory"] .planet-table-wrap,
body[data-theme="observatory"] .transit-time-bar,
body[data-theme="observatory"] .aspect-matrix-wrap {
  background: linear-gradient(180deg, #131d31 0%, #0e1626 100%);
  border: 1px solid rgba(212, 185, 106, 0.13);
  border-top: 1px solid rgba(212, 185, 106, 0.30);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.38);
  border-radius: 10px;
}

body[data-theme="observatory"] .planet-table th {
  background: rgba(201, 164, 92, 0.09);
  color: #d4b96a;
}

/* 主按钮：金色渐变 + 深字 */
body[data-theme="observatory"] .btn-primary {
  background: linear-gradient(135deg, #dcbd74 0%, #b08a44 100%);
  color: #1a1206;
  font-weight: 600;
  box-shadow: 0 2px 10px rgba(201, 164, 92, 0.25);
}

/* 选中项：金色横向渐变 */
body[data-theme="observatory"] .client-item.active {
  background: linear-gradient(90deg, rgba(201, 164, 92, 0.17), rgba(201, 164, 92, 0.05));
}

/* AI 气泡：深空卡 + 金丝边 */
body[data-theme="observatory"] .chat-bubble.ai .bubble-content {
  background: linear-gradient(180deg, #141e33 0%, #101827 100%);
  border: 1px solid rgba(212, 185, 106, 0.15);
  box-shadow: 0 3px 12px rgba(0, 0, 0, 0.3);
}

body[data-theme="observatory"] .chat-bubble.consultant .bubble-content {
  background: linear-gradient(180deg, rgba(201, 164, 92, 0.14), rgba(201, 164, 92, 0.07));
  border: 1px solid rgba(212, 185, 106, 0.2);
}

/* 移动端标签栏：深空渐变 + 金线顶边 */
body[data-theme="observatory"] .mobile-tabbar {
  background: linear-gradient(180deg, #101a2e 0%, #0a101d 100%);
  border-top: 1px solid rgba(212, 185, 106, 0.22);
}


/* [UI-LOGIN-STATIC-PERFORMANCE-ACTIVE]
   登录页只保留静态深空样式，关闭所有持续重绘。
   与其对应的旧动画定义仍在上方，仅作待删除兼容区，不再实际启用。 */
body[data-theme="observatory"] #login-page::before {
  animation: none;
  opacity: 0.58;
}

body[data-theme="observatory"] #ui-cosmos-canvas {
  display: none !important;
}

body[data-theme="observatory"] .login-emblem-ring.r2,
body[data-theme="observatory"] #login-page #login-btn::after {
  animation: none;
}

body[data-theme="observatory"] #login-page #login-btn::after {
  display: none;
}

body[data-theme="observatory"] #login-page .login-box {
  backdrop-filter: none;
}
