/* GENERATED by heatmap_app/asset_bundles.py - do not edit.
   Edit the part files under static/css/ instead; this is rebuilt on change. */

/* ==================== css/panels_committee.css ==================== */
/* ═════════════════════════════════════════════════════════ */
/* panels_committee.css — M1 投资委员会面板样式            */
/* Retro-futurism 暗色主题，使用 --rf-* 设计令牌           */
/* ═════════════════════════════════════════════════════════ */

/* ── Panel container ── */
/* ── 通用面板介绍卡片 ── */
.panel-intro-card {
  background: rgba(247, 231, 198, 0.06);
  border: 1px solid rgba(255, 184, 107, 0.16);
  border-radius: 6px;
  padding: 10px 12px;
  margin-bottom: 14px;
  font-size: 12px;
  line-height: 1.6;
}
.panel-intro-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--rf-amber);
  margin-bottom: 4px;
}
.panel-intro-text {
  color: var(--rf-muted);
  font-size: 11px;
}
/* Panel container */
.panel-committee {
  width: 520px;
  max-width: calc(100vw - 24px);
}

/* ── Summary row (3-column grid) ── */
.committee-summary {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  margin-bottom: 12px;
  padding: 10px 12px;
  background: linear-gradient(180deg, rgba(255, 184, 107, .06), rgba(114, 247, 255, .025));
  border: 1px solid rgba(255, 184, 107, .16);
  border-radius: 10px;
}

.committee-mood,
.committee-consensus,
.committee-ratio {
  text-align: center;
  font-size: 12px;
  color: var(--rf-cream);
  font-weight: 600;
}

.committee-mood { color: var(--rf-amber); }
.committee-consensus { color: var(--rf-cyan); }
.committee-ratio { color: var(--rf-muted); }

/* ── Agent cards horizontal scroll ── */
.committee-agent-cards {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  white-space: nowrap;
  padding-bottom: 4px;
  margin-bottom: 10px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 184, 107, .35) transparent;
}

.committee-agent-cards::-webkit-scrollbar {
  height: 4px;
}

.committee-agent-cards::-webkit-scrollbar-thumb {
  background: rgba(255, 184, 107, .35);
  border-radius: 4px;
}

.committee-agent-card {
  flex: 0 0 auto;
  min-width: 130px;
  max-width: 160px;
  padding: 8px 10px;
  background: linear-gradient(180deg, rgba(255, 184, 107, .07), rgba(114, 247, 255, .03));
  border: 1px solid rgba(255, 184, 107, .16);
  border-radius: 10px;
  font-size: 11px;
  white-space: normal;
}

.committee-agent-card .agent-name {
  font-weight: 700;
  color: var(--rf-cream);
  margin-bottom: 4px;
  font-size: 12px;
}

.committee-agent-card .agent-score-bar {
  height: 4px;
  border-radius: 2px;
  background: rgba(255, 255, 255, .08);
  margin: 4px 0;
  position: relative;
  overflow: hidden;
}

.committee-agent-card .agent-score-fill {
  height: 100%;
  border-radius: 2px;
  transition: width .35s ease;
}

.committee-agent-card .agent-score-fill.bullish {
  background: linear-gradient(90deg, var(--rf-green), var(--rf-cyan));
}

.committee-agent-card .agent-score-fill.neutral {
  background: linear-gradient(90deg, var(--rf-muted), var(--rf-cream));
}

.committee-agent-card .agent-score-fill.bearish {
  background: linear-gradient(90deg, var(--rf-red), var(--rf-orange));
}

.committee-agent-card .agent-opinion {
  color: var(--rf-muted);
  font-size: 10px;
  margin-top: 4px;
  line-height: 1.4;
}

.committee-agent-card .agent-top-count {
  color: var(--rf-amber);
  font-size: 10px;
  margin-top: 3px;
}

/* ── Section label ── */
.committee-section-label {
  font-size: 12px;
  font-weight: 700;
  color: var(--rf-amber);
  margin: 10px 0 6px;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(255, 184, 107, .14);
}

/* ── Top Picks list ── */
.committee-top-picks {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.committee-pick-row {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) 72px;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  background: rgba(255, 184, 107, .03);
  border: 1px solid rgba(255, 184, 107, .1);
  border-radius: 6px;
  font-size: 11px;
  min-height: 28px;
}

.committee-pick-row .pick-name {
  color: var(--rf-cream);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.committee-pick-row .pick-score-bar {
  height: 5px;
  border-radius: 3px;
  background: rgba(255, 255, 255, .06);
  position: relative;
  overflow: hidden;
}

.committee-pick-row .pick-score-fill {
  height: 100%;
  border-radius: 3px;
  transition: width .4s ease;
}

.committee-pick-row .pick-score-fill.STRONG_BUY {
  background: linear-gradient(90deg, var(--rf-green), #3eeb90);
}

.committee-pick-row .pick-score-fill.BUY {
  background: linear-gradient(90deg, var(--rf-cyan), #4ad4e0);
}

.committee-pick-row .pick-score-fill.HOLD {
  background: linear-gradient(90deg, var(--rf-muted), var(--rf-cream));
}

.committee-pick-row .pick-score-fill.WEAK,
.committee-pick-row .pick-score-fill.AVOID {
  background: linear-gradient(90deg, var(--rf-red), var(--rf-orange));
}

.committee-pick-row .pick-verdict {
  text-align: center;
  font-weight: 700;
  font-size: 10px;
  border-radius: 999px;
  padding: 2px 6px;
  white-space: nowrap;
}

.committee-pick-row .pick-verdict.STRONG_BUY {
  color: #161616;
  background: var(--rf-green);
}

.committee-pick-row .pick-verdict.BUY {
  color: #161616;
  background: var(--rf-cyan);
}

.committee-pick-row .pick-verdict.HOLD {
  color: var(--rf-cream);
  background: rgba(255, 184, 107, .2);
  border: 1px solid rgba(255, 184, 107, .3);
}

.committee-pick-row .pick-verdict.WEAK,
.committee-pick-row .pick-verdict.AVOID {
  color: #fff;
  background: var(--rf-red);
}

/* ── Responsive ── */
@media (max-width: 760px) {
  .panel-committee {
    width: 100%;
  }

  .committee-summary {
    grid-template-columns: 1fr;
    gap: 4px;
    padding: 8px 10px;
  }

  .committee-agent-cards {
    flex-wrap: nowrap;
    overflow-x: auto;
  }

  .committee-agent-card {
    min-width: 110px;
    max-width: 140px;
    padding: 6px 8px;
  }

  .committee-pick-row {
    grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) 60px;
    font-size: 10px;
    gap: 4px;
    padding: 4px 6px;
  }

  .committee-pick-row .pick-verdict {
    font-size: 9px;
    padding: 1px 4px;
  }
}

@media (max-width: 390px) {
  .committee-agent-card {
    min-width: 96px;
    max-width: 120px;
    font-size: 10px;
    padding: 5px 6px;
  }

  .committee-pick-row {
    grid-template-columns: minmax(0, 1fr) 60px;
    gap: 3px;
  }

  .committee-pick-row .pick-score-bar {
    display: none;
  }
}

/* ── FUNDA 标的评分增强 ── */
.funda-stock-picks {
  font-size: 10px;
  line-height: 1.4;
}

.funda-stock-row:hover {
  background: rgba(255, 184, 107, .14) !important;
}

/* ── 基本面标的详情弹窗 ── */
.fundamental-detail-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, .65);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}

.fundamental-detail-popup {
  width: 380px;
  max-width: calc(100vw - 32px);
  background: var(--rf-darker-bg, #131a24);
  border: 1px solid rgba(255, 184, 107, .25);
  border-radius: 14px;
  padding: 18px 20px;
  box-shadow: 0 8px 40px rgba(0, 0, 0, .5);
  color: var(--rf-cream, #f7e7c6);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.fundamental-detail-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}

.fundamental-detail-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--rf-cream, #f7e7c6);
}

.fundamental-detail-close {
  background: none;
  border: 1px solid rgba(255, 255, 255, .15);
  color: var(--rf-muted);
  font-size: 18px;
  cursor: pointer;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .15s;
}

.fundamental-detail-close:hover {
  background: rgba(255, 80, 80, .15);
  border-color: rgba(255, 80, 80, .4);
  color: var(--rf-red);
}

.fundamental-detail-total {
  font-size: 14px;
  font-weight: 700;
  color: var(--rf-amber, #ffb86b);
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(255, 184, 107, .14);
}

.fundamental-detail-dims {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 12px;
}

.fundamental-detail-dim-row {
  display: flex;
  align-items: center;
  gap: 0;
  font-size: 11px;
}

.fundamental-detail-dim-label {
  min-width: 72px;
  color: var(--rf-cream, #f7e7c6);
  font-weight: 500;
}

.fundamental-detail-dim-val {
  min-width: 52px;
  color: var(--rf-muted);
  text-align: right;
  margin-right: 6px;
  font-variant-numeric: tabular-nums;
}

.fundamental-detail-dim-score {
  font-variant-numeric: tabular-nums;
}

.fundamental-detail-verdict {
  font-size: 13px;
  font-weight: 600;
  padding-top: 8px;
  border-top: 1px solid rgba(255, 184, 107, .14);
  color: var(--rf-cream, #f7e7c6);
  text-align: center;
}


/* ==================== css/panels_alpha_zoo.css ==================== */
/* ═════════════════════════════════════════════════════════ */
/* panels_alpha_zoo.css — M2 Alpha Zoo 多因子排名面板      */
/* Retro-futurism 暗色主题，使用 --rf-* 设计令牌           */
/* ═════════════════════════════════════════════════════════ */

/* ── Panel container ── */
.panel-alpha-zoo {
  width: 460px;
  max-width: calc(100vw - 24px);
}

/* ── Tab bar ── */
.alpha-zoo-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid rgba(255, 184, 107, .2);
  margin-bottom: 10px;
}

.alpha-zoo-tab {
  flex: 1;
  padding: 8px 0;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--rf-muted);
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  transition: color .2s, border-color .2s;
  white-space: nowrap;
}

.alpha-zoo-tab:hover {
  color: var(--rf-cream);
}

.alpha-zoo-tab.active {
  color: var(--rf-amber);
  border-bottom-color: var(--rf-amber);
}

/* ── Bar list ── */
.alpha-zoo-bar-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-height: 60px;
}

.alpha-zoo-bar-row {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) 48px 52px;
  align-items: center;
  gap: 6px;
  padding: 4px 6px;
  background: rgba(255, 184, 107, .02);
  border: 1px solid rgba(255, 184, 107, .08);
  border-radius: 5px;
  font-size: 11px;
  min-height: 26px;
  transition: background .15s;
}

.alpha-zoo-bar-row:hover {
  background: rgba(255, 184, 107, .06);
  border-color: rgba(255, 184, 107, .18);
}

.alpha-zoo-bar-row .zoo-name {
  color: var(--rf-cream);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.alpha-zoo-bar-row .zoo-bar-wrap {
  height: 6px;
  border-radius: 3px;
  background: rgba(255, 255, 255, .05);
  position: relative;
  overflow: hidden;
}

.alpha-zoo-bar-row .zoo-bar-fill {
  height: 100%;
  border-radius: 3px;
  transition: width .4s ease;
}

/* Score ≥ 80: amber */
.zoo-score-high .zoo-bar-fill {
  background: linear-gradient(90deg, var(--rf-amber), var(--rf-orange));
}

/* Score ≥ 60: cream */
.zoo-score-mid .zoo-bar-fill {
  background: linear-gradient(90deg, var(--rf-cream), #dcc8a0);
}

/* Score < 60: muted */
.zoo-score-low .zoo-bar-fill {
  background: linear-gradient(90deg, var(--rf-muted), #88714c);
}

.alpha-zoo-bar-row .zoo-score {
  text-align: right;
  font-weight: 700;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--rf-cream);
}

.alpha-zoo-bar-row .zoo-rank-change {
  text-align: center;
  font-size: 12px;
  font-weight: 700;
}

/* Rank up arrow */
.rank-up {
  color: var(--rf-green);
}

.rank-up::before {
  content: "↑ ";
  font-size: 10px;
}

/* Rank down arrow */
.rank-down {
  color: var(--rf-red);
}

.rank-down::before {
  content: "↓ ";
  font-size: 10px;
}

/* Rank unchanged */
.rank-flat {
  color: var(--rf-muted);
}

.rank-flat::before {
  content: "—";
  font-size: 10px;
}

/* ── Mapping rules info ── */
.alpha-zoo-mapping {
  margin-top: 10px;
  padding: 6px 8px;
  font-size: 10px;
  color: var(--rf-muted);
  border-top: 1px solid rgba(255, 184, 107, .12);
  line-height: 1.5;
}

.alpha-zoo-mapping span {
  color: var(--rf-amber);
  font-weight: 600;
}

/* ── Responsive ── */
@media (max-width: 760px) {
  .panel-alpha-zoo {
    width: 100%;
  }

  .alpha-zoo-tabs {
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .alpha-zoo-tabs::-webkit-scrollbar {
    display: none;
  }

  .alpha-zoo-tab {
    flex: 0 0 auto;
    min-width: 60px;
    padding: 8px 10px;
    font-size: 11px;
  }

  .alpha-zoo-bar-row {
    grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) 40px 44px;
    gap: 4px;
    font-size: 10px;
    padding: 3px 5px;
  }

  .alpha-zoo-bar-row .zoo-score {
    font-size: 11px;
  }

  .alpha-zoo-bar-row .zoo-rank-change {
    font-size: 10px;
  }
}

@media (max-width: 390px) {
  .panel-alpha-zoo {
    width: 100%;
  }

  .alpha-zoo-bar-row {
    grid-template-columns: minmax(0, 1fr) 40px 40px;
    gap: 3px;
  }

  .alpha-zoo-bar-row .zoo-bar-wrap {
    display: none;
  }
}


/* ==================== css/panels_portfolio.css ==================== */
/* ═════════════════════════════════════════════════════════ */
/* panels_portfolio.css — M3 影子账户对比面板样式          */
/* Retro-futurism 暗色主题，使用 --rf-* 设计令牌           */
/* ═════════════════════════════════════════════════════════ */

/* ── Panel container ── */
.panel-portfolio {
  width: 520px;
  max-width: calc(100vw - 24px);
}

/* ── Import area ── */
.portfolio-import-area {
  margin-bottom: 10px;
  padding: 8px;
  background: linear-gradient(180deg, rgba(255, 184, 107, .05), rgba(114, 247, 255, .02));
  border: 1px solid rgba(255, 184, 107, .14);
  border-radius: 10px;
}

.portfolio-import-area textarea {
  width: 100%;
  padding: 8px;
  font-size: 11px;
  font-family: inherit;
  color: var(--rf-cream);
  background: rgba(12, 10, 12, .8);
  border: 1px solid rgba(255, 184, 107, .2);
  border-radius: 6px;
  resize: vertical;
  outline: none;
  line-height: 1.5;
}

.portfolio-import-area textarea::placeholder {
  color: var(--rf-muted);
  opacity: .6;
}

.portfolio-import-area textarea:focus {
  border-color: var(--rf-cyan);
  box-shadow: 0 0 0 2px rgba(114, 247, 255, .1);
}

.portfolio-import-actions {
  display: flex;
  gap: 6px;
  margin-top: 6px;
  justify-content: flex-end;
}

/* ── Role tabs ── */
.portfolio-role-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 10px;
  border-bottom: 1px solid rgba(255, 184, 107, .16);
  padding-bottom: 6px;
}

.portfolio-role-tab {
  flex: 1;
  padding: 6px 0;
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  color: var(--rf-muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  transition: color .2s, background .2s, border-color .2s;
}

.portfolio-role-tab:hover {
  color: var(--rf-cream);
  background: rgba(255, 184, 107, .06);
}

.portfolio-role-tab.active {
  color: var(--rf-amber);
  background: rgba(255, 184, 107, .1);
  border-color: rgba(255, 184, 107, .3);
}

/* ── Compare grid: double column ── */
.portfolio-compare-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 10px;
}

.portfolio-compare-col {
  padding: 8px;
  background: rgba(255, 184, 107, .03);
  border: 1px solid rgba(255, 184, 107, .1);
  border-radius: 8px;
  min-height: 50px;
}

.portfolio-col-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--rf-cream);
  margin-bottom: 6px;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(255, 184, 107, .14);
  text-align: center;
}

/* ── Holding row ── */
.portfolio-holding-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 50px;
  align-items: center;
  gap: 4px;
  padding: 4px 6px;
  font-size: 10px;
  color: var(--rf-cream);
  border-radius: 4px;
  margin-bottom: 2px;
}

.portfolio-holding-row:hover {
  background: rgba(255, 184, 107, .06);
}

.portfolio-holding-row .holding-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.portfolio-holding-row .holding-weight {
  text-align: right;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--rf-amber);
}

/* ── Overlap highlight ── */
.portfolio-overlap {
  border: 1px solid rgba(255, 184, 107, .4) !important;
  background: rgba(255, 184, 107, .08) !important;
}

/* ── Suggestions ── */
.portfolio-suggestions {
  padding: 10px;
  background: rgba(255, 184, 107, .03);
  border: 1px solid rgba(255, 184, 107, .12);
  border-radius: 10px;
}

.portfolio-section-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--rf-amber);
  margin-bottom: 6px;
}

.portfolio-suggestion-item {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  margin-bottom: 4px;
  font-size: 11px;
  border-radius: 6px;
  border: 1px solid transparent;
}

.portfolio-suggestion-item.suggestion-add {
  color: var(--rf-green);
  border-color: rgba(107, 255, 173, .2);
  background: rgba(107, 255, 173, .05);
}

.portfolio-suggestion-item.suggestion-reduce {
  color: var(--rf-red);
  border-color: rgba(255, 77, 77, .2);
  background: rgba(255, 77, 77, .05);
}

.portfolio-suggestion-item.suggestion-watch {
  color: var(--rf-amber);
  border-color: rgba(255, 184, 107, .2);
  background: rgba(255, 184, 107, .05);
}

.portfolio-suggestion-item .suggestion-icon {
  font-size: 14px;
  flex-shrink: 0;
}

.portfolio-suggestion-item .suggestion-text {
  flex: 1;
  line-height: 1.4;
}

/* ── Empty state ── */
.portfolio-empty {
  text-align: center;
  color: var(--rf-muted);
  font-size: 10px;
  padding: 12px 0;
}

/* ── Responsive ── */
@media (max-width: 760px) {
  .panel-portfolio {
    width: 100%;
  }

  .portfolio-compare-grid {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .portfolio-role-tabs {
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .portfolio-role-tabs::-webkit-scrollbar {
    display: none;
  }

  .portfolio-role-tab {
    flex: 0 0 auto;
    min-width: 50px;
    padding: 6px 10px;
  }

  .portfolio-import-area textarea {
    font-size: 10px;
    padding: 6px;
  }

  .portfolio-suggestion-item {
    font-size: 10px;
    padding: 4px 6px;
  }
}

@media (max-width: 390px) {
  .portfolio-holding-row {
    grid-template-columns: minmax(0, 1fr) 40px;
    font-size: 9px;
  }
}


/* ==================== css/panels_research_monitor.css ==================== */
/* ═════════════════════════════════════════════════════════ */
/* panels_research_monitor.css — M4 研究任务监控面板样式   */
/* Retro-futurism 暗色主题，使用 --rf-* 设计令牌           */
/* ═════════════════════════════════════════════════════════ */

/* ── Panel container ── */
.panel-research {
  width: 480px;
  max-width: calc(100vw - 24px);
}

/* ── Status filter tabs ── */
.research-tabs {
  display: flex;
  gap: 3px;
  margin-bottom: 10px;
  border-bottom: 1px solid rgba(255, 184, 107, .16);
  padding-bottom: 6px;
}

.research-tab {
  flex: 1;
  min-width: 50px;
  padding: 6px 4px;
  text-align: center;
  font-size: 10px;
  font-weight: 600;
  color: var(--rf-muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  cursor: pointer;
  transition: color .2s, background .2s, border-color .2s;
  white-space: nowrap;
  position: relative;
}

.research-tab:hover {
  color: var(--rf-cream);
  background: rgba(255, 184, 107, .05);
}

.research-tab.active {
  color: var(--rf-amber);
  background: rgba(255, 184, 107, .1);
  border-color: rgba(255, 184, 107, .24);
}

.research-tab .tab-count {
  display: inline-block;
  min-width: 16px;
  height: 16px;
  line-height: 16px;
  border-radius: 999px;
  font-size: 9px;
  text-align: center;
  margin-left: 3px;
  background: rgba(255, 255, 255, .1);
  color: inherit;
}

.research-tab.active .tab-count {
  background: rgba(255, 184, 107, .25);
  color: var(--rf-amber);
}

/* ── Task list ── */
.research-task-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 40px;
  max-height: 380px;
  overflow-y: auto;
  padding-right: 2px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255, 184, 107, .35) transparent;
}

.research-task-list::-webkit-scrollbar {
  width: 4px;
}

.research-task-list::-webkit-scrollbar-thumb {
  background: rgba(255, 184, 107, .35);
  border-radius: 4px;
}

/* ── Task card ── */
.research-task-card {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  padding: 7px 8px;
  background: rgba(255, 184, 107, .025);
  border: 1px solid rgba(255, 184, 107, .1);
  border-radius: 8px;
  font-size: 11px;
  transition: background .15s;
}

.research-task-card:hover {
  background: rgba(255, 184, 107, .06);
  border-color: rgba(255, 184, 107, .2);
}

/* ── Status icons ── */
.research-task-card .task-status-icon {
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  flex-shrink: 0;
}

.task-status-icon.status-pending {
  color: var(--rf-muted);
}

.task-status-icon.status-running {
  color: var(--rf-amber);
  animation: research-pulse 1.2s ease-in-out infinite;
}

.task-status-icon.status-completed {
  color: var(--rf-green);
}

.task-status-icon.status-failed {
  color: var(--rf-red);
}

/* ── Task info ── */
.research-task-card .task-info {
  overflow: hidden;
  min-width: 0;
}

.research-task-card .task-id {
  font-weight: 600;
  color: var(--rf-cream);
  font-size: 10px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.research-task-card .task-entity {
  color: var(--rf-muted);
  font-size: 9px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-top: 1px;
}

/* ── Progress bar (running state) ── */
.research-task-card .task-progress-wrap {
  margin-top: 3px;
  height: 3px;
  border-radius: 2px;
  background: rgba(255, 255, 255, .06);
  overflow: hidden;
}

.research-progress-bar {
  height: 100%;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--rf-amber), var(--rf-orange));
  animation: research-progress 2.5s ease-in-out infinite;
}

@keyframes research-progress {
  0% { width: 0%; }
  30% { width: 45%; }
  60% { width: 65%; }
  100% { width: 85%; }
}

@keyframes research-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .45; }
}

/* ── Task actions ── */
.research-task-card .task-actions {
  display: flex;
  gap: 3px;
  flex-shrink: 0;
}

.research-task-card .task-action-btn {
  padding: 2px 6px;
  font-size: 9px;
  border-radius: 4px;
  border: 1px solid rgba(255, 184, 107, .2);
  background: rgba(255, 184, 107, .06);
  color: var(--rf-muted);
  cursor: pointer;
  transition: color .15s, border-color .15s;
}

.research-task-card .task-action-btn:hover {
  color: var(--rf-cyan);
  border-color: rgba(114, 247, 255, .4);
}

.research-task-card .task-action-btn.retry-btn {
  color: var(--rf-amber);
  border-color: rgba(255, 184, 107, .3);
}

.research-task-card .task-action-btn.retry-btn:hover {
  color: #fff;
  border-color: var(--rf-amber);
  background: rgba(255, 184, 107, .15);
}

.research-task-card .task-action-btn.skip-btn {
  color: var(--rf-red);
  border-color: rgba(255, 77, 77, .25);
}

.research-task-card .task-action-btn.skip-btn:hover {
  color: #fff;
  border-color: var(--rf-red);
  background: rgba(255, 77, 77, .12);
}

/* ── Expandable detail ── */
.research-detail-expand {
  margin-top: 4px;
  padding: 6px 8px;
  font-size: 10px;
  color: var(--rf-cream);
  background: rgba(12, 10, 12, .7);
  border: 1px solid rgba(255, 184, 107, .12);
  border-radius: 6px;
  line-height: 1.5;
  max-height: 140px;
  overflow-y: auto;
  word-break: break-all;
}

/* ── Stats bar ── */
.research-task-stats {
  margin-top: 8px;
  padding: 6px 10px;
  font-size: 10px;
  color: var(--rf-muted);
  text-align: center;
  background: rgba(255, 184, 107, .03);
  border: 1px solid rgba(255, 184, 107, .1);
  border-radius: 6px;
}

/* ── New task form overlay ── */
.research-task-form {
  margin-top: 10px;
  padding: 12px;
  background: linear-gradient(180deg, rgba(31, 20, 24, .96), rgba(10, 8, 10, .98));
  border: 1px solid rgba(255, 184, 107, .2);
  border-radius: 10px;
}

.research-form-title {
  font-size: 12px;
  font-weight: 700;
  color: var(--rf-cream);
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(255, 184, 107, .14);
}

.research-task-form select,
.research-task-form input {
  width: 100%;
  padding: 6px 8px;
  font-size: 11px;
  font-family: inherit;
  color: var(--rf-cream);
  background: linear-gradient(180deg, rgba(12, 10, 12, .96), rgba(28, 18, 22, .94));
  border: 1px solid rgba(255, 184, 107, .24);
  border-radius: 6px;
  outline: none;
}

.research-task-form select:focus,
.research-task-form input:focus {
  border-color: var(--rf-cyan);
  box-shadow: 0 0 0 2px rgba(114, 247, 255, .12);
}

.research-task-form input::placeholder {
  color: var(--rf-muted);
  opacity: .5;
}

/* ── Responsive ── */
@media (max-width: 760px) {
  .panel-research {
    width: 100%;
  }

  .research-tabs {
    overflow-x: auto;
    white-space: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .research-tabs::-webkit-scrollbar {
    display: none;
  }

  .research-tab {
    flex: 0 0 auto;
    min-width: 44px;
    padding: 6px 8px;
  }

  .research-task-card {
    grid-template-columns: 20px minmax(0, 1fr) auto;
    gap: 4px;
    padding: 6px;
    font-size: 10px;
  }

  .research-task-card .task-id {
    font-size: 9px;
  }

  .research-task-card .task-action-btn {
    font-size: 8px;
    padding: 2px 4px;
  }

  .research-task-form {
    padding: 10px;
  }

  .research-task-form select,
  .research-task-form input {
    font-size: 10px;
    padding: 5px 6px;
  }
}

@media (max-width: 390px) {
  .research-task-card {
    grid-template-columns: 18px minmax(0, 1fr);
  }

  .research-task-card .task-actions {
    grid-column: 1 / -1;
    justify-content: flex-end;
  }
}

/* ── 任务详情弹窗 ── */
.task-detail-overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,.75);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.task-detail-popup {
  background: linear-gradient(180deg, rgba(31,20,24,.98), rgba(10,8,10,.99));
  border: 1px solid rgba(255,184,107,.3);
  border-radius: 8px;
  max-width: 520px;
  width: 90vw;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
}
.task-detail-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,184,107,.15);
  color: var(--rf-cream);
  font-size: 14px;
  font-weight: 600;
}
.task-detail-close {
  background: none; border: none;
  color: var(--rf-muted); font-size: 20px;
  cursor: pointer; line-height: 1;
}
.task-detail-close:hover { color: var(--rf-amber); }
.task-detail-body {
  padding: 14px 16px 20px;
  overflow-y: auto;
  font-size: 12px;
  line-height: 1.7;
  color: var(--rf-cream);
}
.task-detail-body .detail-field { margin-bottom: 12px; }
.task-detail-body .detail-label {
  color: var(--rf-amber);
  font-weight: 600;
  font-size: 11px;
  margin-bottom: 2px;
}
.task-detail-body .detail-value {
  color: var(--rf-cream);
  font-size: 12px;
}
.task-detail-body a {
  color: var(--rf-cyan);
  text-decoration: none;
}
.task-detail-body a:hover { text-decoration: underline; }
.task-detail-body .detail-empty {
  color: var(--rf-muted);
  font-style: italic;
}


/* ==================== css/taste.css ==================== */
/* ============================================================
   A股景气捕手 — Taste Theme (Modern Dark Glass Finance App)
   设计读：premium consumer 金融工具
   调色板：电光青绿主色 + 暖橙 CTA；保留 A股红涨绿跌
   启用方式：<html class="taste">
   关键设计 token：见 tokens.css 第 12 节
   不动热力图首页：首页父级不带 .taste 子选择器
   ============================================================ */

/* ── 1. 背景：暗色 + 极弱径向渐变 ── */
html.taste body {
  background: var(--taste-grad-bg) !important;
  color: var(--taste-text);
}

/* ── 2. 通用面板基类（覆盖 .panel / .panel-head / .panel-body） ── */
html.taste .panel,
html.taste #action-menu,
html.taste #stock-panel,
html.taste #us-mapping-panel,
html.taste #monitoring-panel,
html.taste #data-management-panel,
html.taste #ai-config-panel,
html.taste #ai-intel-panel,
html.taste #ai-position-panel,
html.taste #ai-research-panel,
html.taste #ai-stock-analysis-panel,
html.taste #help-doc-panel,
html.taste #account-panel,
html.taste #account-doc-panel,
html.taste #renew-panel,
html.taste #news-panel,
html.taste #settings-panel {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: var(--taste-radius-card) !important;
  box-shadow: var(--taste-glass-shadow) !important;
  color: var(--taste-text) !important;
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  overflow: hidden;
}

html.taste .panel-head,
html.taste #action-menu .menu-section + .menu-section {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(0, 0, 0, 0.12)) !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
  padding: 14px 18px !important;
}

html.taste .panel-head h3,
html.taste .panel-title {
  font-size: 14px !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em;
  color: var(--taste-text) !important;
  text-shadow: none !important;
}

html.taste .panel-body,
html.taste .menu-section {
  background: transparent !important;
  padding: 16px 18px !important;
  color: var(--taste-text-soft) !important;
}

/* ── 3. 按钮（统一为 12px 圆角 + 青绿 hover） ── */
html.taste .panel button,
html.taste #action-menu button,
html.taste .menu-action,
html.taste .panel-head-action,
html.taste #account-panel .account-login-methods button,
html.taste #account-panel .account-social-grid button,
html.taste .rotation-controls button,
html.taste .renew-pay-actions button,
html.taste .lifecycle-actions button,
html.taste .search-verify-btn,
html.taste .ai-profile-actions button,
html.taste .account-bind-actions button,
html.taste #menu-button,
html.taste #account-button,
html.taste .top-control,
html.taste .top-link,
html.taste .top-account {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: var(--taste-radius-button) !important;
  color: var(--taste-text) !important;
  box-shadow: none !important;
  font-weight: 500;
  transition: background var(--transition-normal), border-color var(--transition-normal), transform var(--transition-fast);
}
html.taste .panel button:hover,
html.taste .menu-action:hover,
html.taste #menu-button:hover,
html.taste #account-button:hover,
html.taste .panel-head-action:hover,
html.taste .top-control:hover,
html.taste .top-link:hover,
html.taste .top-account:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-accent) !important;
  color: var(--taste-text) !important;
}
html.taste .panel button:active,
html.taste .menu-action:active {
  transform: scale(0.98);
}

/* Primary CTA（橙）— 通过 class 触发 */
html.taste .panel button.primary,
html.taste .menu-action.primary,
html.taste #action-menu button.primary,
html.taste .renew-pay-actions button.primary {
  background: var(--taste-grad-cta) !important;
  border-color: transparent !important;
  color: #fff !important;
  font-weight: 600;
}
html.taste .panel button.primary:hover,
html.taste .menu-action.primary:hover {
  filter: brightness(1.08);
}

/* ── 4. 输入框 / select ── */
html.taste .panel input,
html.taste .panel select,
html.taste .panel textarea,
html.taste #global-search-input,
html.taste .rotation-controls select,
html.taste .rotation-date-button,
html.taste .ai-field input,
html.taste .ai-field select,
html.taste .renew-code-row input {
  background: rgba(0, 0, 0, 0.32) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 10px !important;
  color: var(--taste-text) !important;
  box-shadow: none !important;
  transition: border-color var(--transition-normal);
}
html.taste .panel input:focus,
html.taste .panel select:focus,
html.taste #global-search-input:focus,
html.taste .ai-field input:focus,
html.taste .renew-code-row input:focus {
  border-color: var(--taste-accent) !important;
  outline: none;
}
html.taste .panel input::placeholder {
  color: var(--taste-text-muted) !important;
}

/* ── 5. 卡片（新闻、登录、订阅、renew 等） ── */
html.taste .news-item,
html.taste .search-sector-reason,
html.taste .search-kpi,
html.taste .account-bind-card,
html.taste .renew-plan-card,
html.taste .follow-result-card,
html.taste .account-login-card,
html.taste .ai-profile-card,
html.taste .panel-item,
html.taste .panel .row {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  color: var(--taste-text-soft) !important;
  transition: background var(--transition-normal), border-color var(--transition-normal);
}
html.taste .news-item:hover,
html.taste .panel-item:hover,
html.taste .panel .row:hover {
  background: rgba(0, 224, 164, 0.05) !important;
  border-color: var(--taste-surface-line-strong) !important;
}
html.taste .news-item-title { color: var(--taste-text) !important; font-size: 13px; }
html.taste .news-item-source { color: var(--taste-accent) !important; }

/* ── 6. 标签 / 徽章（pill） ── */
html.taste .monitoring-pill,
html.taste .rotation-chip,
html.taste .monitoring-chip,
html.taste .rotation-badge,
html.taste .social-plugin-mobile-pill,
html.taste .social-plugin-job-tag,
html.taste .news-source-chip,
html.taste .search-result-item .type {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  border-radius: var(--taste-radius-pill) !important;
  font-weight: 500;
}

/* ── 7. Action Menu 卡片化（菜单按钮更大更现代） ── */
html.taste #action-menu .menu-grid {
  gap: 10px !important;
}
html.taste #action-menu .menu-action {
  min-height: 56px !important;
  padding: 10px 12px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  border-radius: 14px !important;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  line-height: 1.3;
}
html.taste #action-menu .menu-title {
  font-size: 10px !important;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--taste-text-muted) !important;
  margin: 0 0 8px !important;
}
html.taste #action-menu .menu-status {
  color: var(--taste-text-soft) !important;
  font-size: 11px !important;
}

/* ── 8. Account Panel 登录卡（高亮 + 大号字体） ── */
html.taste #account-panel .account-login-card {
  padding: 18px !important;
}
html.taste #account-panel .account-subnav button {
  border-radius: var(--taste-radius-pill) !important;
  font-weight: 600 !important;
}
html.taste #account-panel .account-subnav button.active {
  background: var(--taste-accent) !important;
  color: #050810 !important;
  border-color: var(--taste-accent) !important;
}

/* ── 9. News 面板：源条 + 卡片网格 ── */
html.taste #news-panel .news-source-strip {
  margin-bottom: 14px !important;
}

/* ── 10. Settings 行 / Account doc 行 ── */
html.taste #settings-panel .row {
  padding: 10px 12px !important;
  border-radius: 12px !important;
}

/* ── 11. AI 面板：字段分组视觉强化 ── */
html.taste .ai-profile-card {
  padding: 14px !important;
}
html.taste .ai-field label,
html.taste .ai-field .label {
  color: var(--taste-text-muted) !important;
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

/* ── 12. 滚动条（暗色玻璃版） ── */
html.taste *::-webkit-scrollbar-track { background: rgba(0, 0, 0, 0.32); }
html.taste *::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, var(--taste-accent-soft), rgba(0, 224, 164, 0.05));
  border: 2px solid rgba(0, 0, 0, 0.32);
  border-radius: var(--taste-radius-pill);
}
html.taste *::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, var(--taste-accent), rgba(0, 224, 164, 0.32));
}

/* ── 13. 顶栏（topbar）配套：搜索框、标题、按钮颜色随 Taste 调整 ── */
html.taste #topbar {
  background: rgba(10, 15, 28, 0.78) !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
}
html.taste #topbar .title,
html.taste #topbar .title small {
  color: var(--taste-text) !important;
  text-shadow: none !important;
}
html.taste #topbar .market-summary {
  background: transparent !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: var(--taste-radius-pill) !important;
  color: var(--taste-text) !important;
  padding: 4px 12px !important;
}
html.taste .global-search-box,
html.taste #global-search-input {
  background: rgba(0, 0, 0, 0.42) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.taste #global-search-results {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: var(--taste-radius-card) !important;
  backdrop-filter: blur(24px) saturate(180%);
}
html.taste #global-search-results .search-result-item:hover {
  background: var(--taste-accent-soft) !important;
}

/* ── 14. 涨跌色统一（与现有 --color-up / --color-down 一致） ── */
html.taste .text-up,
html.taste .up,
html.taste .color-up { color: var(--taste-up) !important; }
html.taste .text-down,
html.taste .down,
html.taste .color-down { color: var(--taste-down) !important; }
html.taste .text-flat { color: var(--taste-flat) !important; }

/* ── 15. 减少动效偏好 ── */
@media (prefers-reduced-motion: reduce) {
  html.taste .panel,
  html.taste button,
  html.taste .panel button,
  html.taste .menu-action,
  html.taste .news-item { transition: none !important; }
  html.taste * { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
}

/* ── 16. 平板 / 折叠屏响应式：保留原有 panels.css 媒体查询覆盖 ── */
@media (max-width: 980px) {
  html.taste .panel,
  html.taste #action-menu {
    border-radius: 20px !important;
  }
}

/* ============================================================
   C 层 — 高频面板精修（account-panel / action-menu / news-panel）
   目标：让三个最常用面板达到 App Store 级别质感
   ============================================================ */

/* ── C1. Account Panel：登录卡 + subnav pill + 社交登录图标 ── */
html.taste #account-panel .panel-head {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.18), rgba(93, 166, 255, 0.10)) !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
}
html.taste #account-panel .panel-head h3::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 16px;
  border-radius: 2px;
  background: var(--taste-grad-accent);
  margin-right: 10px;
  vertical-align: -3px;
  box-shadow: 0 0 12px rgba(0, 224, 164, 0.5);
}
html.taste #account-panel .account-shell {
  padding: 4px 6px;
}
html.taste #account-panel .account-login-card {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.05), rgba(0, 0, 0, 0.18)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 20px !important;
  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
  padding: 22px 20px !important;
}
html.taste #account-panel .account-login-title {
  font-size: 22px !important;
  font-weight: 800 !important;
  background: linear-gradient(135deg, #f0f4ff 0%, #b6c2d8 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  letter-spacing: 0.01em;
}
html.taste #account-panel .account-login-subtitle {
  color: var(--taste-text-muted) !important;
  font-size: 12.5px !important;
  line-height: 1.6 !important;
}
html.taste #account-panel .account-login-icons {
  display: grid !important;
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 8px !important;
  margin: 14px 0 12px !important;
  padding: 10px !important;
  background: rgba(0, 0, 0, 0.28) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 16px !important;
}
html.taste #account-panel .account-auth-icon {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: 12px !important;
  padding: 8px 4px !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  gap: 4px !important;
  transition: all var(--transition-normal) !important;
}
html.taste #account-panel .account-auth-icon img {
  width: 28px !important;
  height: 28px !important;
  border-radius: 8px !important;
  filter: brightness(0.9) saturate(0.8);
  transition: filter var(--transition-normal);
}
html.taste #account-panel .account-auth-icon span {
  font-size: 10.5px !important;
  color: var(--taste-text-muted) !important;
  font-weight: 500 !important;
}
html.taste #account-panel .account-auth-icon:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
  transform: translateY(-1px);
}
html.taste #account-panel .account-auth-icon:hover img {
  filter: brightness(1.1) saturate(1.2);
}
html.taste #account-panel .account-auth-icon.active {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-accent) !important;
  box-shadow: 0 0 0 3px rgba(0, 224, 164, 0.12);
}
html.taste #account-panel .account-auth-icon.active img {
  filter: brightness(1.2) saturate(1.4);
}
html.taste #account-panel .account-auth-icon.active span {
  color: var(--taste-accent) !important;
  font-weight: 700 !important;
}
html.taste #account-panel .account-field {
  display: block !important;
  margin: 8px 0 !important;
}
html.taste #account-panel .account-field > input {
  display: block !important;
  width: 100% !important;
  margin-top: 6px !important;
  padding: 11px 14px !important;
  background: rgba(0, 0, 0, 0.32) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  color: var(--taste-text) !important;
  font-size: 13px !important;
  transition: border-color var(--transition-normal), box-shadow var(--transition-normal) !important;
}
html.taste #account-panel .account-field > input:focus {
  border-color: var(--taste-accent) !important;
  box-shadow: 0 0 0 3px rgba(0, 224, 164, 0.14) !important;
  outline: none !important;
}
html.taste #account-panel .account-agreement {
  display: flex !important;
  align-items: flex-start !important;
  gap: 8px !important;
  color: var(--taste-text-muted) !important;
  font-size: 11.5px !important;
  line-height: 1.55 !important;
  padding: 8px 0 !important;
}
html.taste #account-panel .account-agreement a {
  color: var(--taste-accent) !important;
  text-decoration: none !important;
}
html.taste #account-panel .account-actions button,
html.taste #account-panel .account-actions .primary,
html.taste #account-panel button[id$="submit"],
html.taste #account-panel button[onclick*="Auth"],
html.taste #account-panel button[onclick*="verifyPhone"],
html.taste #account-panel button[onclick*="registerWith"],
html.taste #account-panel button[onclick*="saveAccount"],
html.taste #account-panel button[onclick*="requestLoginCode"] {
  background: var(--taste-grad-cta) !important;
  border: none !important;
  color: #fff !important;
  font-weight: 700 !important;
  border-radius: 12px !important;
  padding: 11px 16px !important;
  min-height: 40px !important;
  box-shadow: 0 6px 20px rgba(255, 120, 73, 0.32) !important;
  transition: filter var(--transition-normal), transform var(--transition-fast) !important;
}
html.taste #account-panel .account-actions button:hover,
html.taste #account-panel button[id$="submit"]:hover {
  filter: brightness(1.08) !important;
  transform: translateY(-1px);
}
html.taste #account-panel .account-actions button:active {
  transform: scale(0.98);
}
html.taste #account-panel .account-register-toggle {
  text-align: center !important;
  margin-top: 10px !important;
  color: var(--taste-text-muted) !important;
  font-size: 12px !important;
}
html.taste #account-panel .account-register-toggle button {
  background: transparent !important;
  border: none !important;
  color: var(--taste-accent) !important;
  font-weight: 600 !important;
  padding: 0 4px !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
html.taste #account-panel .account-register-toggle button:hover {
  text-decoration: underline !important;
  transform: none !important;
}
html.taste #account-panel .account-subnav {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 6px !important;
  padding: 4px !important;
  margin-bottom: 12px !important;
  background: rgba(0, 0, 0, 0.28) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
}
html.taste #account-panel .account-subnav button {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: 10px !important;
  color: var(--taste-text-muted) !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  min-height: 34px !important;
  padding: 6px 4px !important;
  box-shadow: none !important;
  transition: all var(--transition-normal) !important;
}
html.taste #account-panel .account-subnav button:hover {
  color: var(--taste-text) !important;
  background: rgba(255, 255, 255, 0.04) !important;
}
html.taste #account-panel .account-subnav button.active {
  background: var(--taste-grad-accent) !important;
  color: #050810 !important;
  font-weight: 700 !important;
  box-shadow: 0 4px 14px rgba(0, 224, 164, 0.32) !important;
}
html.taste #account-panel .account-profile-head {
  display: flex !important;
  align-items: center !important;
  gap: 14px !important;
  padding: 0 0 14px !important;
  margin-bottom: 14px !important;
  border-bottom: 1px dashed var(--taste-surface-line) !important;
}
html.taste #account-panel .account-profile-head img {
  width: 56px !important;
  height: 56px !important;
  border-radius: 50% !important;
  border: 2px solid var(--taste-surface-line-strong) !important;
  object-fit: cover !important;
}
html.taste #account-panel .account-banner {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.10), rgba(93, 166, 255, 0.06)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 14px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  margin-bottom: 10px !important;
}
html.taste #account-panel .account-inline-note {
  background: rgba(0, 0, 0, 0.22) !important;
  border-left: 3px solid var(--taste-accent) !important;
  padding: 9px 12px !important;
  border-radius: 8px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12px !important;
  line-height: 1.55 !important;
  margin: 8px 0 !important;
}
html.taste #account-panel .account-bind-card {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 6px !important;
}
html.taste #account-panel .account-bind-card b {
  color: var(--taste-text) !important;
  font-weight: 700 !important;
}
html.taste #account-panel .account-bind-card span {
  color: var(--taste-text-muted) !important;
}
html.taste #account-panel .account-menu-profile {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.10), rgba(93, 166, 255, 0.06)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 16px !important;
  padding: 12px 14px !important;
  margin-bottom: 12px !important;
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
}
html.taste #account-panel .account-menu-profile img {
  width: 44px !important;
  height: 44px !important;
  border-radius: 50% !important;
  border: 2px solid var(--taste-accent) !important;
}
html.taste #account-panel .account-menu-profile b {
  color: var(--taste-text) !important;
  font-weight: 700 !important;
}
html.taste #account-panel .account-menu-profile span {
  color: var(--taste-text-muted) !important;
  font-size: 11.5px !important;
}
html.taste #account-panel .account-menu-profile button {
  background: rgba(255, 75, 75, 0.10) !important;
  border: 1px solid rgba(255, 75, 75, 0.32) !important;
  color: #ff6b6b !important;
  border-radius: 10px !important;
  padding: 6px 12px !important;
  font-weight: 600 !important;
  font-size: 12px !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
html.taste #account-panel .account-menu-profile button:hover {
  background: rgba(255, 75, 75, 0.18) !important;
  border-color: #ff6b6b !important;
}

/* ── C2. Action Menu：菜单大按钮 + 状态徽章 ── */
html.taste #action-menu {
  padding: 8px !important;
  background: var(--taste-surface-strong) !important;
}
html.taste #action-menu .menu-section {
  background: rgba(0, 0, 0, 0.18) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 12px 14px !important;
  margin-bottom: 8px !important;
}
html.taste #action-menu .menu-section + .menu-section {
  margin-top: 0 !important;
}
html.taste #action-menu .menu-title {
  font-size: 10px !important;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--taste-text-muted) !important;
  font-weight: 700 !important;
  margin: 0 0 10px !important;
  display: flex;
  align-items: center;
  gap: 6px;
}
html.taste #action-menu .menu-title::before {
  content: "";
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--taste-accent);
  box-shadow: 0 0 6px var(--taste-accent);
}
html.taste #action-menu .menu-status {
  background: rgba(0, 224, 164, 0.10) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 10px !important;
  color: var(--taste-text) !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  padding: 8px 12px !important;
  font-variant-numeric: tabular-nums;
}
html.taste #action-menu .menu-grid {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px !important;
}
html.taste #action-menu .menu-action {
  min-height: 58px !important;
  padding: 12px 10px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  border-radius: 14px !important;
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  box-shadow: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
  line-height: 1.3 !important;
  position: relative;
  transition: all var(--transition-normal) !important;
}
html.taste #action-menu .menu-action::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.10), transparent 60%);
  opacity: 0;
  transition: opacity var(--transition-normal);
  pointer-events: none;
}
html.taste #action-menu .menu-action:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.32);
}
html.taste #action-menu .menu-action:hover::before { opacity: 1; }
html.taste #action-menu .menu-action:active { transform: scale(0.98); }

/* ── C3. News Panel：源条 + 时间分组 + 卡片网格 ── */
html.taste #news-panel .panel-head {
  background: linear-gradient(135deg, rgba(93, 166, 255, 0.10), rgba(0, 224, 164, 0.05)) !important;
}
html.taste #news-panel .panel-head h3::before {
  content: "";
  display: inline-block;
  width: 4px;
  height: 16px;
  border-radius: 2px;
  background: linear-gradient(180deg, #5da6ff, #00e0a4);
  margin-right: 10px;
  vertical-align: -3px;
  box-shadow: 0 0 10px rgba(93, 166, 255, 0.45);
}
html.taste #news-panel .panel-head-action {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  font-weight: 600 !important;
  font-size: 12px !important;
  padding: 6px 12px !important;
  border-radius: 10px !important;
  min-height: 30px !important;
  box-shadow: none !important;
}
html.taste #news-panel .panel-head-action:hover {
  background: var(--taste-accent) !important;
  color: #050810 !important;
  border-color: var(--taste-accent) !important;
}
html.taste #news-panel #news-meta {
  color: var(--taste-text-muted) !important;
  font-size: 11.5px !important;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  padding: 4px 0 !important;
}
html.taste #news-panel .news-source-strip {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  margin-bottom: 14px !important;
  padding: 8px !important;
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
}
html.taste #news-panel .news-source-chip {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
  border-radius: var(--taste-radius-pill) !important;
  padding: 5px 10px !important;
  font-size: 11.5px !important;
  font-weight: 500 !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px;
}
html.taste #news-panel .news-source-chip::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--taste-text-muted);
}
html.taste #news-panel .news-source-chip.is-active {
  color: var(--taste-accent) !important;
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
}
html.taste #news-panel .news-source-chip.is-active::before {
  background: var(--taste-accent);
  box-shadow: 0 0 6px var(--taste-accent);
  animation: taste-pulse 1.6s ease-in-out infinite;
}
html.taste #news-panel .news-list {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
}
html.taste #news-panel .news-item {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(0, 0, 0, 0.18)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 12px 14px !important;
  position: relative;
  transition: all var(--transition-normal) !important;
}
html.taste #news-panel .news-item:hover {
  background: linear-gradient(180deg, rgba(0, 224, 164, 0.06), rgba(0, 0, 0, 0.18)) !important;
  border-color: var(--taste-surface-line-strong) !important;
  transform: translateX(2px);
}
html.taste #news-panel .news-item-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 10px !important;
  margin-bottom: 8px !important;
  flex-wrap: wrap;
}
html.taste #news-panel .news-item-source {
  font-size: 11px !important;
  font-weight: 700 !important;
  color: var(--taste-accent) !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  padding: 3px 8px;
  background: var(--taste-accent-soft);
  border-radius: 6px;
}
html.taste #news-panel .news-item-time {
  font-size: 11px !important;
  color: var(--taste-text-muted) !important;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
html.taste #news-panel .news-item-title {
  font-size: 13.5px !important;
  font-weight: 700 !important;
  color: var(--taste-text) !important;
  line-height: 1.5 !important;
  margin-bottom: 4px !important;
}
html.taste #news-panel .news-item-summary {
  font-size: 12.5px !important;
  color: var(--taste-text-soft) !important;
  line-height: 1.65 !important;
  white-space: pre-wrap !important;
}
html.taste #news-panel .news-item-link {
  display: inline-flex !important;
  margin-top: 8px !important;
  font-size: 11.5px !important;
  color: var(--taste-cta) !important;
  text-decoration: none !important;
  font-weight: 600 !important;
  padding: 4px 10px;
  background: var(--taste-cta-soft);
  border-radius: 8px;
  transition: filter var(--transition-normal);
}
html.taste #news-panel .news-item-link:hover {
  filter: brightness(1.2);
}
html.taste #news-panel .operation-guide-card {
  background: linear-gradient(135deg, rgba(93, 166, 255, 0.10), rgba(0, 224, 164, 0.04)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 14px !important;
  color: var(--taste-text-soft) !important;
  font-size: 11.5px !important;
  line-height: 1.6 !important;
  margin-bottom: 10px !important;
}
@keyframes taste-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.4; }
}

/* ============================================================
   C4. 首次引导 overlay (account-lifecycle-overlay) Taste 适配
   背景：匿名用户首次访问会触发 full-screen overlay 拦截所有点击
   Taste 主题：保持毛玻璃效果，但用青色强调"先看引导"按钮
   解决：菜单点不动的视觉错觉
   ============================================================ */
html.taste #account-lifecycle-overlay {
  background: radial-gradient(circle at 20% 10%, rgba(0, 224, 164, 0.10), transparent 35%),
              radial-gradient(circle at 80% 90%, rgba(93, 166, 255, 0.08), transparent 40%),
              rgba(3, 6, 12, 0.72) !important;
  backdrop-filter: blur(20px) saturate(160%) !important;
  -webkit-backdrop-filter: blur(20px) saturate(160%) !important;
}
html.taste #account-lifecycle-overlay .lifecycle-card,
html.taste #account-lifecycle-overlay .lifecycle-shell,
html.taste #account-lifecycle-overlay > * {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 20px !important;
  color: var(--taste-text) !important;
  box-shadow: var(--taste-shadow-2), inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
}
html.taste #account-lifecycle-overlay #lifecycle-title,
html.taste #account-lifecycle-overlay .lifecycle-title {
  background: linear-gradient(135deg, #f0f4ff 0%, #00e0a4 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 800 !important;
}
html.taste #account-lifecycle-overlay .lifecycle-primary,
html.taste #account-lifecycle-overlay button[class*="primary"] {
  background: var(--taste-grad-cta) !important;
  border: none !important;
  color: #fff !important;
  font-weight: 700 !important;
  box-shadow: 0 6px 20px rgba(255, 120, 73, 0.32) !important;
}
html.taste #account-lifecycle-overlay button:not([class*="primary"]) {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  border-radius: 12px !important;
}
html.taste #account-lifecycle-overlay button:hover:not([class*="primary"]) {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
  color: var(--taste-text) !important;
}
html.taste #account-lifecycle-overlay #lifecycle-dismiss-wrap label,
html.taste #account-lifecycle-overlay .lifecycle-dismiss {
  color: var(--taste-text-muted) !important;
  font-size: 12px !important;
}

/* ============================================================
   C4-FIX. 关键修复：Taste 主题下 lifecycle overlay 不再全屏拦截
   问题：首次访问引导 overlay 默认 z-index:900 + inset:0 全屏挡死
   修复：Taste 主题下改为右下角浮层卡片，不挡菜单/登录/调色板
   ============================================================ */
html.taste #account-lifecycle-overlay {
  align-items: flex-end !important;
  justify-content: flex-start !important;
  padding: 18px !important;
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  pointer-events: none !important;
}
html.taste #account-lifecycle-overlay .lifecycle-card {
  pointer-events: auto !important;
  width: min(420px, calc(100vw - 36px)) !important;
  max-height: calc(100vh - 90px) !important;
  margin: 0 0 8px 0 !important;
  /* 关键修复 C6: lifecycle-card 在 Taste 主题下不再拦截 menu 区域
     根因：lifecycle-card 实际 box (1002, 354, 420x520) 跟 menu (1006, 56, 420x828)
     在 (1006~1422, 354~874) 区域完全重叠。menu z=1200 > overlay z=900 在根 SC
     应该严格在 overlay 之上，但 elementFromPoint 反复报 lifecycle li 在最顶。
     修复：lifecycle-card 自身加 z-index: 0, position: relative 双重保险，
     并在 menu open 时（更高优先级选择器）强制隐藏 lifecycle-card。 */
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 18px !important;
  box-shadow: var(--taste-shadow-2), inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
  animation: taste-lifecycle-pop 0.28s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
@keyframes taste-lifecycle-pop {
  from { opacity: 0; transform: translateY(12px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
html.taste #account-lifecycle-overlay .lifecycle-head {
  padding: 14px 18px 8px !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
}
html.taste #account-lifecycle-overlay #lifecycle-title {
  background: linear-gradient(135deg, #f0f4ff 0%, #00e0a4 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 16px !important;
  font-weight: 800 !important;
}
html.taste #account-lifecycle-overlay #lifecycle-subtitle {
  color: var(--taste-text-muted) !important;
  font-size: 12px !important;
  margin-top: 4px !important;
}
html.taste #account-lifecycle-overlay .lifecycle-close {
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  border-radius: 10px !important;
  width: 28px !important;
  height: 28px !important;
}
html.taste #account-lifecycle-overlay .lifecycle-body {
  padding: 14px 18px 16px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.6 !important;
}
html.taste #account-lifecycle-overlay .lifecycle-body p,
html.taste #account-lifecycle-overlay .lifecycle-body li {
  color: var(--taste-text-soft) !important;
}
html.taste #account-lifecycle-overlay .lifecycle-body b {
  color: var(--taste-accent) !important;
  font-weight: 700 !important;
}
html.taste #account-lifecycle-overlay .lifecycle-body ul {
  padding-left: 18px !important;
}
html.taste #account-lifecycle-overlay .lifecycle-actions {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: 6px !important;
  margin-top: 12px !important;
}
html.taste #account-lifecycle-overlay .lifecycle-actions button {
  min-height: 38px !important;
  border-radius: 10px !important;
  padding: 8px 12px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  border: 1px solid var(--taste-surface-line) !important;
  background: rgba(255, 255, 255, 0.04) !important;
  color: var(--taste-text) !important;
  white-space: normal !important;
  line-height: 1.3 !important;
  text-align: left !important;
  box-shadow: none !important;
}
html.taste #account-lifecycle-overlay .lifecycle-actions button:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
  transform: none !important;
}
html.taste #account-lifecycle-overlay .lifecycle-actions .lifecycle-primary,
html.taste #account-lifecycle-overlay .lifecycle-actions button[class*="primary"] {
  background: var(--taste-grad-cta) !important;
  border: none !important;
  color: #fff !important;
  font-weight: 700 !important;
  box-shadow: 0 6px 18px rgba(255, 120, 73, 0.30) !important;
}
html.taste #account-lifecycle-overlay .lifecycle-actions .lifecycle-primary:hover {
  filter: brightness(1.08) !important;
}
html.taste #account-lifecycle-overlay #lifecycle-dismiss-wrap {
  margin-top: 10px !important;
  padding-top: 10px !important;
  border-top: 1px dashed var(--taste-surface-line) !important;
  color: var(--taste-text-muted) !important;
  font-size: 11.5px !important;
}
html.taste #account-lifecycle-overlay #lifecycle-dismiss-wrap label {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
  cursor: pointer !important;
  color: var(--taste-text-muted) !important;
}
html.taste #account-lifecycle-overlay #lifecycle-dismiss-wrap input[type="checkbox"] {
  accent-color: var(--taste-accent) !important;
}

/* ============================================================
   C5. 关键修复：菜单 z-index 被热力图层覆盖
   原值：--z-action-menu = 180（被 panel-head 220 压在后面）
   修复：Taste 主题下提到 1200（与 --z-help-tour 同级，但 action-menu 在它之下）
   ============================================================ */
html.taste #action-menu.open {
  z-index: 1200 !important;
  position: fixed !important;
  top: 56px !important;
  right: 14px !important;
  width: min(420px, calc(100vw - 28px)) !important;
  max-height: calc(100vh - 72px) !important;
  overflow-y: auto !important;
  box-shadow: var(--taste-shadow-2), 0 0 0 1px rgba(0, 224, 164, 0.18) !important;
  animation: taste-menu-pop 0.22s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
@keyframes taste-menu-pop {
  from { opacity: 0; transform: translateY(-8px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ============================================================
   C6. 终极修复：菜单打开时强制 lifecycle-card 不可见 + 不可点
   根因：lifecycle-card 浮层 (左下角 420x520) 即使移到 flex-start，
   在窄屏下仍可能与 menu 重叠；而且 elementFromPoint 显示
   lifecycle 子元素在 menu 之上（违反 z-index 规则，原因未明）。
   修复：当 menu.open 时，用更高优先级选择器把 lifecycle-card
   完全 visibility:hidden + pointer-events:none，不渲染、不拦截。
   ============================================================ */
/* 用 :has() 父级选择器：当 body 内 #action-menu.open 时，强制隐藏所有 lifecycle-card */
html.taste body:has(#action-menu.open) #account-lifecycle-overlay .lifecycle-card {
  visibility: hidden !important;
  pointer-events: none !important;
  opacity: 0 !important;
  transition: opacity 0.15s ease;
}

/* ============================================================
   C7. 终极修复：Chromium SVG hit-test namespace bug
   根因：elementsFromPoint(1216,156) top3 = rect → treemap svg → chart-container
         #action-menu(1200) 仅排第 4 位，被 SVG 子 rect 截断点击。
   修复：Taste 主题下让 SVG 自己负责 hit-test (revert 父容器 disabled 状态)，
         并把 #action-menu 抬高到 1300 留 buffer；用 visibility:visible 的
         #action-menu 真实存在 + isolation:isolate 创建独立 stacking context。
   ============================================================ */
html.taste #chart-container,
html.taste #treemap,
html.taste #treemap * {
  /* 让 SVG 子 rect 不在 menu 区域拦截点击 - 用更大的 hit-test 区 */
  pointer-events: var(--taste-treemap-pe, auto);
}
/* 但当 menu.open 时，把整个 chart-container 的 SVG 子元素 hit-test 关掉 */
html.taste body:has(#action-menu.open) #chart-container,
html.taste body:has(#action-menu.open) #treemap,
html.taste body:has(#action-menu.open) #treemap * {
  pointer-events: none !important;
}
/* 同时在 menu 打开期间：让 chart-container 不在 menu 区域渲染（视觉透出） */
html.taste body:has(#action-menu.open) #chart-container {
  z-index: 1 !important;
}
/* #action-menu.open 创建独立 stacking context，避免被 SVG hit-test 干扰 */
html.taste #action-menu.open {
  z-index: 1300 !important;
  isolation: isolate !important;
  transform: translateZ(0) !important;
}

/* ============================================================
   D1. 登录面板整理后：登录后引导 + 功能设置里的账号分区
   ============================================================ */
html.taste #account-section-login .account-after-login-guide {
  display: block;
  margin: 0 0 12px;
  padding: 10px 14px;
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.10), rgba(93, 166, 255, 0.06)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-left: 3px solid var(--taste-accent) !important;
  border-radius: 12px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12px !important;
  line-height: 1.6 !important;
}
html.taste .settings-account-row {
  cursor: pointer !important;
  transition: background var(--transition-normal) !important;
}
html.taste .settings-account-row:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
}
html.taste .settings-account-row label {
  cursor: pointer !important;
}
html.taste .settings-account-row button {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  font-weight: 600 !important;
  font-size: 11.5px !important;
  padding: 5px 12px !important;
  border-radius: 8px !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
html.taste .settings-account-row button:hover {
  background: var(--taste-accent) !important;
  color: #050810 !important;
  border-color: var(--taste-accent) !important;
}

/* ============================================================
   D2. 菜单按钮缩小一点点（用户反馈按钮太大、挨太紧）
   当前值：min-height:58px / font-size:12.5px / gap:8px
   调整后：min-height:46px / font-size:12px / gap:6px
   ============================================================ */
html.taste #action-menu .menu-grid {
  gap: 6px !important;
}
html.taste #action-menu .menu-action {
  min-height: 46px !important;
  padding: 8px 8px !important;
  font-size: 12px !important;
  border-radius: 12px !important;
}
html.taste #action-menu .menu-section {
  padding: 10px 12px !important;
}

/* ============================================================
   D3. Settings 面板精修：分区标题加强调色块 + 版本卡 + 续费卡
   ============================================================ */
html.taste #settings-panel .settings-section-title {
  color: var(--taste-text) !important;
  font-weight: 800 !important;
  font-size: 12px !important;
  text-transform: uppercase !important;
  letter-spacing: 0.10em !important;
  padding: 0 0 6px !important;
  border-bottom: 1px dashed var(--taste-surface-line) !important;
  margin-bottom: 10px !important;
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
}
html.taste #settings-panel .settings-section-title::before {
  content: "";
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--taste-accent);
  box-shadow: 0 0 6px var(--taste-accent);
}
html.taste #settings-panel .settings-section + .settings-section {
  border-top: 1px solid var(--taste-surface-line) !important;
  margin-top: 10px !important;
  padding-top: 12px !important;
}
html.taste #settings-panel .row label {
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
}
html.taste #settings-panel .row select,
html.taste #settings-panel .row input {
  font-size: 12.5px !important;
  min-height: 32px !important;
}
html.taste #settings-panel .settings-version-card {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.06), rgba(93, 166, 255, 0.04)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  margin-bottom: 10px !important;
}
html.taste #settings-panel .settings-version-card b {
  color: var(--taste-text) !important;
  font-size: 14px !important;
}
html.taste #settings-panel .settings-update-actions {
  display: flex !important;
  gap: 8px !important;
}
html.taste #settings-panel .settings-update-actions button {
  flex: 1 !important;
  background: var(--taste-grad-cta) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 700 !important;
  padding: 10px 16px !important;
  border-radius: 12px !important;
  min-height: 36px !important;
  box-shadow: 0 4px 14px rgba(255, 120, 73, 0.30) !important;
}
html.taste #settings-panel .settings-update-actions button:hover {
  filter: brightness(1.08) !important;
}
html.taste #settings-panel .renew-status-card {
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  margin-top: 10px !important;
}
html.taste #settings-panel .renew-status-card b {
  color: var(--taste-accent) !important;
}
html.taste #settings-panel .setting-actions.settings-main-actions {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 8px !important;
  margin-top: 10px !important;
}
html.taste #settings-panel .setting-actions.settings-main-actions button {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  font-weight: 600 !important;
  padding: 9px 10px !important;
  border-radius: 10px !important;
  min-height: 34px !important;
  box-shadow: none !important;
}
html.taste #settings-panel .setting-actions.settings-main-actions button:hover {
  background: var(--taste-accent) !important;
  color: #050810 !important;
}
html.taste #settings-panel .settings-status-row .settings-status-text {
  font-size: 11.5px !important;
  color: var(--taste-text-muted) !important;
  background: rgba(0, 0, 0, 0.18) !important;
  padding: 4px 10px !important;
  border-radius: 8px !important;
}

/* ============================================================
   D4. AI 面板精修：ai-config / ai-intel / ai-position / ai-research / ai-stock-analysis
   目标：当前配置 hero + 字段分组 + 输出区读感统一
   ============================================================ */
html.taste #ai-config-panel .ai-config-summary,
html.taste #ai-config-panel .ai-config-summary-title {
  background: transparent !important;
}
html.taste #ai-config-panel .ai-config-summary-title {
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--taste-text-muted) !important;
  font-weight: 700 !important;
  margin-bottom: 10px !important;
  display: flex;
  align-items: center;
  gap: 6px;
}
html.taste #ai-config-panel .ai-config-summary-title::before {
  content: "";
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--taste-accent);
  box-shadow: 0 0 6px var(--taste-accent);
}
html.taste #ai-config-panel .ai-config-summary-grid {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.08), rgba(93, 166, 255, 0.04)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 8px 14px !important;
  margin-bottom: 14px !important;
}
html.taste #ai-config-panel .ai-config-summary-grid > div {
  display: flex !important;
  flex-direction: column !important;
  gap: 3px !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
}
html.taste #ai-config-panel .ai-config-summary-grid span {
  font-size: 10.5px !important;
  color: var(--taste-text-muted) !important;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600 !important;
}
html.taste #ai-config-panel .ai-config-summary-grid b {
  font-size: 13px !important;
  color: var(--taste-text) !important;
  font-weight: 600 !important;
}
html.taste #ai-config-panel .ai-field {
  margin: 8px 0 !important;
}
html.taste #ai-config-panel .ai-field > input,
html.taste #ai-config-panel .ai-field > select {
  width: 100% !important;
  margin-top: 5px !important;
  padding: 10px 12px !important;
  border-radius: 10px !important;
  font-size: 12.5px !important;
}
html.taste #ai-config-panel .ai-check-row {
  padding: 6px 0 !important;
  font-size: 12.5px !important;
  color: var(--taste-text-soft) !important;
}
html.taste #ai-config-panel .ai-advanced-card {
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  margin: 10px 0 !important;
}
html.taste #ai-config-panel .ai-advanced-title {
  color: var(--taste-text) !important;
  font-weight: 700 !important;
  font-size: 12px !important;
  text-transform: uppercase;
  letter-spacing: 0.10em;
  margin-bottom: 8px !important;
  display: flex;
  align-items: center;
  gap: 6px;
}
html.taste #ai-config-panel .ai-advanced-title::before {
  content: "";
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--taste-cta);
}
html.taste #ai-config-panel .ai-advanced-toggles {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 6px 14px !important;
}
html.taste #ai-config-panel .ai-config-actions {
  display: flex !important;
  gap: 8px !important;
  align-items: center !important;
  margin-top: 12px !important;
}
html.taste #ai-config-panel .ai-config-actions button {
  flex: 1 !important;
  background: var(--taste-grad-cta) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 700 !important;
  padding: 10px 14px !important;
  border-radius: 10px !important;
  min-height: 38px !important;
  box-shadow: 0 4px 14px rgba(255, 120, 73, 0.28) !important;
}
html.taste #ai-config-panel .ai-config-actions button:hover {
  filter: brightness(1.08) !important;
}
html.taste #ai-config-panel .ai-profile-list-head {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  margin-top: 14px !important;
  margin-bottom: 8px !important;
}
html.taste #ai-config-panel .ai-profile-list-head span {
  font-size: 11px !important;
  text-transform: uppercase;
  letter-spacing: 0.10em;
  color: var(--taste-text-muted) !important;
  font-weight: 700 !important;
}
html.taste #ai-config-panel .ai-profile-list-head button {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  padding: 5px 10px !important;
  border-radius: 8px !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
html.taste #ai-config-panel .ai-profile-list-head button:hover {
  background: var(--taste-accent) !important;
  color: #050810 !important;
}
html.taste #ai-config-panel .ai-profile-items .ai-profile-card {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 14px !important;
  margin-bottom: 8px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}
html.taste #ai-config-panel .ai-profile-actions {
  display: flex !important;
  gap: 6px !important;
  margin-top: 6px !important;
}
html.taste #ai-config-panel .ai-profile-actions button {
  flex: 1 !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
  font-size: 11.5px !important;
  font-weight: 500 !important;
  padding: 5px 8px !important;
  border-radius: 8px !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
html.taste #ai-config-panel .ai-profile-actions button.is-current {
  background: var(--taste-accent) !important;
  color: #050810 !important;
  border-color: var(--taste-accent) !important;
}

/* AI intel / position / research / stock-analysis 通用样式 */
html.taste #ai-intel-panel,
html.taste #ai-position-panel,
html.taste #ai-research-panel,
html.taste #ai-stock-analysis-panel {
  /* 复用通用 .panel 样式已加边框/玻璃 */
}
html.taste .ai-tool-output {
  background: rgba(0, 0, 0, 0.32) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.65 !important;
  margin-top: 10px !important;
  min-height: 60px !important;
}
html.taste .ai-tool-output.ai-report-output {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(0, 0, 0, 0.32)) !important;
}
html.taste .ai-report-history {
  background: rgba(0, 0, 0, 0.18) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 12px !important;
  margin: 8px 0 !important;
}
html.taste .ai-report-history > div {
  padding: 6px 0 !important;
  border-bottom: 1px dashed var(--taste-surface-line) !important;
  font-size: 11.5px !important;
  color: var(--taste-text-muted) !important;
  cursor: pointer !important;
}
html.taste .ai-report-history > div:last-child {
  border-bottom: none !important;
}
html.taste .ai-report-history > div:hover {
  color: var(--taste-accent) !important;
}
html.taste .ai-tool-actions {
  display: flex !important;
  gap: 8px !important;
  align-items: center !important;
  margin-top: 8px !important;
}
html.taste .ai-tool-actions button {
  background: var(--taste-grad-cta) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 700 !important;
  padding: 10px 16px !important;
  border-radius: 10px !important;
  min-height: 38px !important;
  box-shadow: 0 4px 14px rgba(255, 120, 73, 0.30) !important;
}
html.taste .ai-tool-actions button:hover {
  filter: brightness(1.08) !important;
}
html.taste .ai-tool-actions .muted {
  font-size: 11.5px !important;
  color: var(--taste-text-muted) !important;
}

/* AI intel/position 上传卡 */
html.taste #ai-intel-panel .file-plus-row,
html.taste #ai-position-panel .file-plus-row {
  margin-top: 10px !important;
}

/* ============================================================
   D5. Help Doc 面板精修：章节卡化 + 标题色块
   ============================================================ */
html.taste #help-doc-panel .help-doc-body {
  background: transparent !important;
}
html.taste #help-doc-panel .help-doc-hero {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.10), rgba(93, 166, 255, 0.06)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 16px !important;
  padding: 16px 18px !important;
  margin-bottom: 14px !important;
}
html.taste #help-doc-panel .help-doc-hero h4 {
  background: linear-gradient(135deg, #f0f4ff 0%, #00e0a4 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 16px !important;
  font-weight: 800 !important;
  margin-bottom: 8px !important;
}
html.taste #help-doc-panel .help-doc-hero p {
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.7 !important;
  margin: 6px 0 !important;
}
html.taste #help-doc-panel .help-doc-section {
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  margin-bottom: 12px !important;
}
html.taste #help-doc-panel .help-doc-section h4 {
  color: var(--taste-text) !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  margin-bottom: 10px !important;
  padding-bottom: 6px !important;
  border-bottom: 1px dashed var(--taste-surface-line) !important;
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
}
html.taste #help-doc-panel .help-doc-section h4::before {
  content: "";
  width: 4px; height: 16px;
  border-radius: 2px;
  background: var(--taste-grad-accent);
  flex-shrink: 0;
}
html.taste #help-doc-panel .help-doc-section ul,
html.taste #help-doc-panel .help-doc-section ol {
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.7 !important;
  padding-left: 18px !important;
  margin: 4px 0 !important;
}
html.taste #help-doc-panel .help-doc-section li {
  margin: 4px 0 !important;
}
html.taste #help-doc-panel .help-doc-section b {
  color: var(--taste-accent) !important;
  font-weight: 700 !important;
}
html.taste #help-doc-panel .help-doc-shot {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 12px !important;
}
html.taste #help-doc-panel .help-doc-shot b {
  color: var(--taste-text) !important;
  font-size: 12.5px !important;
  display: block;
  margin-bottom: 6px;
}
html.taste #help-doc-panel .help-doc-shot p {
  color: var(--taste-text-muted) !important;
  font-size: 11.5px !important;
  line-height: 1.55 !important;
  margin: 6px 0 0 !important;
}
html.taste #help-doc-panel .help-doc-shot img {
  border-radius: 8px !important;
  border: 1px solid var(--taste-surface-line) !important;
}

/* ============================================================
   D6. Renew / Monitoring / Data Management / US Mapping 面板
   ============================================================ */
html.taste #renew-panel .renew-hero {
  background: linear-gradient(135deg, rgba(255, 120, 73, 0.12), rgba(0, 224, 164, 0.06)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 16px !important;
  padding: 16px 18px !important;
  margin-bottom: 14px !important;
}
html.taste #renew-panel .renew-hero h4 {
  background: linear-gradient(135deg, #f0f4ff 0%, #ff7849 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 16px !important;
  font-weight: 800 !important;
  margin-bottom: 6px !important;
}
html.taste #renew-panel .renew-hero div {
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.6 !important;
}
html.taste #renew-panel .renew-plan-card {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  transition: all var(--transition-normal) !important;
}
html.taste #renew-panel .renew-plan-card.selected {
  background: linear-gradient(180deg, rgba(0, 224, 164, 0.08), rgba(0, 0, 0, 0.18)) !important;
  border-color: var(--taste-accent) !important;
  box-shadow: 0 6px 22px rgba(0, 224, 164, 0.18) !important;
}
html.taste #renew-panel .renew-plan-card .tag {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  font-size: 10.5px !important;
  font-weight: 600 !important;
  padding: 2px 8px !important;
  border-radius: 6px !important;
}
html.taste #renew-panel .renew-plan-card h4 {
  color: var(--taste-text) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  margin: 6px 0 !important;
}
html.taste #renew-panel .renew-plan-card .renew-price {
  color: var(--taste-cta) !important;
  font-size: 22px !important;
  font-weight: 800 !important;
}
html.taste #renew-panel .renew-pay-actions button {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  font-weight: 600 !important;
}
html.taste #renew-panel .renew-pay-actions button.primary,
html.taste #renew-panel .renew-pay-actions button[data-pay-method="wechat"],
html.taste #renew-panel .renew-pay-actions button[data-pay-method="alipay"],
html.taste #renew-panel .renew-pay-actions button[data-pay-method="appstore"] {
  background: var(--taste-grad-cta) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 700 !important;
  box-shadow: 0 4px 14px rgba(255, 120, 73, 0.30) !important;
}
html.taste #renew-panel .renew-pay-box,
html.taste #renew-panel .renew-free-box {
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 14px !important;
  padding: 14px 16px !important;
  margin-top: 12px !important;
}
html.taste #renew-panel .renew-free-box h4 {
  color: var(--taste-text) !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  margin-bottom: 6px !important;
}
html.taste #renew-panel .renew-free-box p {
  color: var(--taste-text-soft) !important;
  font-size: 12px !important;
  line-height: 1.6 !important;
  margin: 4px 0 !important;
}
html.taste #renew-panel .renew-free-grid button,
html.taste #renew-panel .follow-channel-grid button {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
  border-radius: 10px !important;
  padding: 8px 10px !important;
  min-height: 0 !important;
  font-weight: 500 !important;
  font-size: 12px !important;
}
html.taste #renew-panel .renew-free-grid button:hover,
html.taste #renew-panel .follow-channel-grid button:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
}
html.taste #renew-panel .follow-submit-box {
  background: rgba(255, 255, 255, 0.02) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  margin-top: 10px !important;
}
html.taste #renew-panel .follow-result-card,
html.taste #renew-panel .referral-stat,
html.taste #renew-panel .referral-compact-row {
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 10px 12px !important;
  margin-top: 8px !important;
  font-size: 12px !important;
  color: var(--taste-text-soft) !important;
}
html.taste #renew-panel .renew-plugin-box {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.06), rgba(93, 166, 255, 0.04)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  margin-top: 10px !important;
}

/* Monitoring / Data Management / US Mapping */
html.taste #monitoring-panel .monitoring-intro,
html.taste #data-management-panel .monitoring-intro,
html.taste #us-mapping-panel .us-mobile-guide {
  background: linear-gradient(135deg, rgba(0, 224, 164, 0.06), rgba(93, 166, 255, 0.04)) !important;
  border-left: 3px solid var(--taste-accent) !important;
  border-radius: 10px !important;
  padding: 10px 14px !important;
  margin-bottom: 12px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12px !important;
  line-height: 1.6 !important;
}
html.taste #monitoring-panel .panel-item,
html.taste #data-management-panel .panel-item,
html.taste #us-mapping-panel .panel-item {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  margin-bottom: 8px !important;
}
html.taste #monitoring-panel .monitoring-pill,
html.taste #monitoring-panel .monitoring-chip {
  background: var(--taste-accent-soft) !important;
  border: 1px solid var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
  border-radius: 999px !important;
  padding: 3px 10px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
}
html.taste #us-mapping-panel .us-mapping-toolbar {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-bottom: 12px !important;
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 8px 12px !important;
}
html.taste #us-mapping-panel .us-mapping-toolbar select {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 8px !important;
  padding: 5px 10px !important;
  font-size: 12px !important;
  color: var(--taste-text) !important;
}
html.taste #us-mapping-panel .us-signal-summary {
  background: rgba(0, 0, 0, 0.22) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  margin-bottom: 12px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.6 !important;
}
html.taste #us-mapping-panel .us-report-tabs {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 6px !important;
  margin-bottom: 10px !important;
}
html.taste #us-mapping-panel .us-report-tabs button {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
  border-radius: 999px !important;
  padding: 5px 12px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  min-height: 0 !important;
  box-shadow: none !important;
}
html.taste #us-mapping-panel .us-report-tabs button.active,
html.taste #us-mapping-panel .us-report-tabs button:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
  color: var(--taste-accent) !important;
}
html.taste #us-mapping-panel .markdown-body {
  background: rgba(0, 0, 0, 0.32) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 12px 14px !important;
  color: var(--taste-text-soft) !important;
  font-size: 12.5px !important;
  line-height: 1.7 !important;
}
html.taste #data-management-panel .row {
  background: rgba(255, 255, 255, 0.03) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 12px !important;
  padding: 8px 12px !important;
}

/* News panel 微调（去掉当前源条目文字重复的视觉噪音） */
html.taste #news-panel .news-source-strip {
  margin-bottom: 10px !important;
}
html.taste #news-panel .news-item {
  padding: 10px 12px !important;
}
html.taste #news-panel .news-item-title {
  font-size: 13px !important;
}

/* ============================================================
   D7. 9 个 panel 根容器统一 Taste 主题（help-doc/AI×4/renew/monitoring/data-mgmt/us-mapping）
   根因：这些 panel 用 .panel 蓝紫暗背景，D 段只覆盖了子元素没覆盖 panel 根
   验证：getComputedStyle 显示 help-doc 等 panel 是 rgba(20,28,48,0.92) + 1px solid rgba(255,255,255,0.08)
   ============================================================ */
html.taste #help-doc-panel,
html.taste #ai-config-panel,
html.taste #ai-intel-panel,
html.taste #ai-position-panel,
html.taste #ai-research-panel,
html.taste #ai-stock-analysis-panel,
html.taste #renew-panel,
html.taste #monitoring-panel,
html.taste #data-management-panel,
html.taste #us-mapping-panel {
  background: var(--taste-bg-card) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  box-shadow: 0 6px 28px rgba(0, 0, 0, 0.36) !important;
}
html.taste #help-doc-panel .panel-head,
html.taste #ai-config-panel .panel-head,
html.taste #ai-intel-panel .panel-head,
html.taste #ai-position-panel .panel-head,
html.taste #ai-research-panel .panel-head,
html.taste #ai-stock-analysis-panel .panel-head,
html.taste #renew-panel .panel-head,
html.taste #monitoring-panel .panel-head,
html.taste #data-management-panel .panel-head,
html.taste #us-mapping-panel .panel-head {
  background: transparent !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.taste #help-doc-panel .panel-head h3,
html.taste #ai-config-panel .panel-head h3,
html.taste #ai-intel-panel .panel-head h3,
html.taste #ai-position-panel .panel-head h3,
html.taste #ai-research-panel .panel-head h3,
html.taste #ai-stock-analysis-panel .panel-head h3,
html.taste #renew-panel .panel-head h3,
html.taste #monitoring-panel .panel-head h3,
html.taste #data-management-panel .panel-head h3,
html.taste #us-mapping-panel .panel-head h3 {
  color: var(--taste-text) !important;
  font-weight: 700 !important;
}
html.taste #help-doc-panel .panel-close,
html.taste #ai-config-panel .panel-close,
html.taste #ai-intel-panel .panel-close,
html.taste #ai-position-panel .panel-close,
html.taste #ai-research-panel .panel-close,
html.taste #ai-stock-analysis-panel .panel-close,
html.taste #renew-panel .panel-close,
html.taste #monitoring-panel .panel-close,
html.taste #data-management-panel .panel-close,
html.taste #us-mapping-panel .panel-close {
  color: #fff !important;
  background: #b42318 !important;
}
html.taste #help-doc-panel .panel-close:hover,
html.taste #ai-config-panel .panel-close:hover,
html.taste #ai-intel-panel .panel-close:hover,
html.taste #ai-position-panel .panel-close:hover,
html.taste #ai-research-panel .panel-close:hover,
html.taste #ai-stock-analysis-panel .panel-close:hover,
html.taste #renew-panel .panel-close:hover,
html.taste #monitoring-panel .panel-close:hover,
html.taste #data-management-panel .panel-close:hover,
html.taste #us-mapping-panel .panel-close:hover {
  color: #fff !important;
  background: #d92d20 !important;
}
html.taste #help-doc-panel .panel-body,
html.taste #ai-config-panel .panel-body,
html.taste #ai-intel-panel .panel-body,
html.taste #ai-position-panel .panel-body,
html.taste #ai-research-panel .panel-body,
html.taste #ai-stock-analysis-panel .panel-body,
html.taste #renew-panel .panel-body,
html.taste #monitoring-panel .panel-body,
html.taste #data-management-panel .panel-body,
html.taste #us-mapping-panel .panel-body {
  color: var(--taste-text) !important;
}

/* ============================================================
   E. 统一全局开关 (Unified Global Switch)
   策略：在 html.taste 作用域下重映射默认主题的全部设计变量
   （--rf-* / --color-* / --gradient-* / --shadow-* / --ui-radius-*），
   使任何引用这些变量的默认元素——含 4 个此前未单独覆盖的面板
   （committee / alpha-zoo / portfolio / research-monitor）——
   在开启 Taste 时一键切到 Taste 玻璃青绿体系。
   热力图瓦片由 JS 设置 fill，不受影响（保留 A股 红涨绿跌语义）。
   ============================================================ */

/* ── E1. 变量重映射（核心开关，单一来源） ── */
html.taste {
  /* rf 复古未来主义令牌 → Taste 玻璃青绿 */
  --rf-bg-0: #050810;
  --rf-bg-1: #0a0f1c;
  --rf-panel: #0f1525;
  --rf-line: #1c2740;
  --rf-line-soft: var(--taste-surface-line);
  --rf-cream: var(--taste-text);
  --rf-muted: var(--taste-text-muted);
  --rf-amber: var(--taste-accent);
  --rf-orange: var(--taste-cta);
  --rf-cyan: var(--taste-info);
  --rf-green: var(--taste-down);
  --rf-red: var(--taste-up);
  --rf-shadow: var(--taste-shadow-2);
  --rf-darker-bg: #0f1525;

  /* 文本 / 语义色 */
  --color-bg-primary: #050810;
  --color-bg-secondary: #0a0f1c;
  --color-bg-panel: var(--taste-surface-strong);
  --color-text-primary: var(--taste-text);
  --color-text-secondary: var(--taste-text-soft);
  --color-text-accent: var(--taste-accent);
  --color-up: var(--taste-up);
  --color-down: var(--taste-down);
  --color-up-global: var(--taste-down);
  --color-down-global: var(--taste-up);
  --color-warning: var(--taste-warning);
  --color-info: var(--taste-info);
  --color-success: var(--taste-down);
  --color-error: var(--taste-up);

  /* 边框 */
  --color-border: var(--taste-surface-line);
  --color-border-strong: var(--taste-surface-line-strong);
  --color-border-subtle: var(--taste-surface-line);
  --color-border-card: var(--taste-surface-line);

  /* 渐变 */
  --gradient-body: var(--taste-grad-bg);
  --gradient-card: linear-gradient(180deg, rgba(20,28,48,0.92), rgba(10,15,28,0.96));
  --gradient-head: linear-gradient(180deg, rgba(20,28,48,0.92), rgba(10,15,28,0.96));
  --gradient-btn: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(0,0,0,0.18));
  --gradient-input: linear-gradient(180deg, rgba(0,0,0,0.42), rgba(0,0,0,0.30));
  --gradient-card-alt: linear-gradient(180deg, rgba(0,224,164,0.06), rgba(93,166,255,0.03));
  --gradient-admin-bg: #050810;
  --gradient-admin-panel: #0f1525;

  /* 圆角 */
  --ui-radius-xs: 8px;
  --ui-radius-sm: 10px;
  --ui-radius-md: 14px;
  --ui-radius-lg: 18px;
  --ui-radius-full: 999px;

  /* 阴影 / 辉光 */
  --shadow-panel: var(--taste-shadow-2);
  --shadow-dropdown: var(--taste-shadow-2);
  --shadow-modal: var(--taste-shadow-2);
  --shadow-tooltip: var(--taste-shadow-2);
  --shadow-glow-cyan: 0 0 14px rgba(0,224,164,0.18);
  --shadow-glow-amber: 0 0 14px rgba(255,120,73,0.12);
}

/* ── E2. 关闭复古网格 / 扫描线叠层（Taste 用纯净玻璃感） ── */
html.taste body::before,
html.taste body::after {
  display: none !important;
}

/* ── E3. 顶栏 chrome：去掉琥珀辉光，改用 Taste 顶栏 ── */
html.taste #topbar {
  box-shadow: 0 8px 26px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.03) inset !important;
}
html.taste #topbar::after {
  background: linear-gradient(90deg, transparent, var(--taste-accent), var(--taste-info), transparent) !important;
  opacity: 0.5 !important;
}
html.taste #topbar .title {
  text-shadow: none !important;
}
/* 指数条文字 → Taste；去掉琥珀辉光 */
html.taste .index-name { color: var(--taste-text-muted) !important; }
html.taste .index-price { color: var(--taste-text) !important; }
html.taste .index-card.up .index-price,
html.taste .index-card.up .index-pct,
html.taste .stat-value.up {
  color: var(--taste-up) !important;
  text-shadow: 0 0 8px rgba(255,77,77,0.32) !important;
}
html.taste .index-card.down .index-price,
html.taste .index-card.down .index-pct,
html.taste .stat-value.down {
  color: var(--taste-down) !important;
  text-shadow: 0 0 8px rgba(43,191,110,0.30) !important;
}
html.taste .index-card.flat .index-price,
html.taste .index-card.flat .index-pct {
  color: var(--taste-text) !important;
  text-shadow: none !important;
}

/* ── E4. 热力图周边 chrome ── */
html.taste #chart-container {
  background: radial-gradient(circle at 50% 45%, rgba(0,224,164,0.05), transparent 45%) !important;
}
html.taste #footer {
  color: var(--taste-text-muted) !important;
  background: rgba(5,8,16,0.82) !important;
  border-top: 1px solid var(--taste-surface-line) !important;
}
html.taste #footer a { color: var(--taste-text-muted) !important; }
html.taste #footer a:hover { color: var(--taste-accent) !important; }
html.taste #zoom-hint {
  color: var(--taste-text-soft) !important;
  background: rgba(5,8,16,0.82) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.taste #legend {
  color: var(--taste-text-soft) !important;
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
}

/* ── E5. 加载遮罩 + 旋转器 ── */
html.taste #loading {
  background: rgba(5,8,16,0.88) !important;
  color: var(--taste-accent) !important;
}
html.taste #loading .spinner {
  border: 3px solid rgba(0,224,164,0.25);
  border-top-color: var(--taste-accent);
  box-shadow: 0 0 18px rgba(0,224,164,0.22);
}

/* ── E6. 悬浮卡 / 弹窗 / 模态（字面色 → Taste） ── */
html.taste #tooltip {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
  border-left: 3px solid var(--taste-up) !important;
  box-shadow: var(--taste-shadow-2) !important;
  backdrop-filter: blur(18px) saturate(180%);
  -webkit-backdrop-filter: blur(18px) saturate(180%);
}
html.taste #stock-panel,
html.taste #stock-chart-popover {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  box-shadow: var(--taste-shadow-2) !important;
}
html.taste #rotation-view {
  background: radial-gradient(circle at 20% 0%, rgba(0,224,164,0.08), transparent 34%), #050810 !important;
  border-top: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.taste #l2-focus-overlay,
html.taste #l2-stock-chart-modal {
  background: rgba(3,6,12,0.74) !important;
}
html.taste .l2-focus-shell,
html.taste .l2-chart-shell {
  background: #0a0f1c !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  box-shadow: var(--taste-shadow-2) !important;
}
html.taste .l2-focus-head,
html.taste .l2-chart-head {
  background: rgba(20,28,48,0.92) !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
}
html.taste .l2-focus-title,
html.taste .l2-chart-title { color: var(--taste-text) !important; }

/* ── E7. 帮助引导 overlay ── */
html.taste #ashare-help-tour { background: rgba(3,6,12,0.66) !important; }
html.taste .ashare-help-card {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  box-shadow: var(--taste-shadow-2) !important;
}
html.taste .ashare-help-card h3 { color: var(--taste-text) !important; }
html.taste .ashare-help-card p,
html.taste .ashare-help-card li { color: var(--taste-text-soft) !important; }
html.taste .ashare-help-head { border-bottom: 1px solid var(--taste-surface-line) !important; background: var(--taste-surface-strong) !important; }
html.taste .ashare-help-foot { border-top: 1px solid var(--taste-surface-line) !important; background: var(--taste-surface-strong) !important; }
html.taste .ashare-help-step { color: var(--taste-text-muted) !important; }
html.taste .ashare-help-close {
  border: 1px solid rgba(255,75,75,0.4) !important;
  background: rgba(255,75,75,0.16) !important;
  color: #ff6b6b !important;
}
html.taste .ashare-help-close:hover { background: rgba(255,75,75,0.26) !important; border-color: #ff6b6b !important; }
html.taste .ashare-help-dismiss-toggle { color: var(--taste-text-soft) !important; }
html.taste .ashare-help-dismiss-toggle input { accent-color: var(--taste-accent) !important; }
html.taste .ashare-help-actions button {
  border: 1px solid var(--taste-surface-line) !important;
  background: rgba(255,255,255,0.04) !important;
  color: var(--taste-text) !important;
}
html.taste .ashare-help-actions button:hover { background: var(--taste-accent-soft) !important; border-color: var(--taste-surface-line-strong) !important; }
html.taste .ashare-help-actions button.primary {
  border-color: var(--taste-accent) !important;
  background: var(--taste-accent-soft) !important;
  color: var(--taste-accent) !important;
}

/* ── E8. 状态徽章 / 标签（字面语义色 → Taste 语义） ── */
html.taste .monitoring-pill,
html.taste .rotation-chip,
html.taste .monitoring-chip,
html.taste .rotation-badge,
html.taste .monitoring-status {
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
  background: rgba(255,255,255,0.03) !important;
}
html.taste .monitoring-pill.good,
html.taste .monitoring-chip.good,
html.taste .rotation-chip.good,
html.taste .monitoring-status.ok {
  color: var(--taste-down) !important;
  border-color: rgba(43,191,110,0.5) !important;
  background: rgba(43,191,110,0.10) !important;
}
html.taste .monitoring-pill.warn,
html.taste .monitoring-chip.warn,
html.taste .rotation-chip.warn,
html.taste .monitoring-status.warn {
  color: var(--taste-warning) !important;
  border-color: rgba(255,209,102,0.5) !important;
  background: rgba(255,209,102,0.10) !important;
}
html.taste .monitoring-pill.bad,
html.taste .monitoring-chip.bad,
html.taste .rotation-chip.bad,
html.taste .monitoring-status.bad {
  color: var(--taste-up) !important;
  border-color: rgba(255,77,77,0.5) !important;
  background: rgba(255,77,77,0.10) !important;
}
html.taste .rotation-badge {
  color: var(--taste-text) !important;
  background: rgba(0,0,0,0.46) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.taste .pinyin-badge {
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-muted) !important;
  background: rgba(255,255,255,0.04) !important;
}

/* ── E9. 4 个面板中的字面 !important 残留 → 覆盖 ── */
html.taste .funda-stock-row:hover { background: var(--taste-accent-soft) !important; }
html.taste .portfolio-overlap {
  border: 1px solid var(--taste-surface-line-strong) !important;
  background: var(--taste-accent-soft) !important;
}
html.taste .fundamental-detail-overlay {
  background: rgba(3,6,12,0.66) !important;
  backdrop-filter: blur(8px) !important;
}
html.taste .fundamental-detail-popup {
  background: var(--taste-surface-strong) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
  box-shadow: var(--taste-shadow-2) !important;
}
html.taste .fundamental-detail-title,
html.taste .fundamental-detail-dim-label { color: var(--taste-text) !important; }
html.taste .fundamental-detail-dim-val,
html.taste .fundamental-detail-dim-score { color: var(--taste-text-soft) !important; }
html.taste .fundamental-detail-total { color: var(--taste-accent) !important; border-bottom: 1px solid var(--taste-surface-line) !important; }
html.taste .fundamental-detail-close {
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
}
html.taste .fundamental-detail-close:hover { background: var(--taste-accent-soft) !important; border-color: var(--taste-surface-line-strong) !important; color: var(--taste-accent) !important; }
html.taste .fundamental-detail-verdict { color: var(--taste-text) !important; border-top: 1px solid var(--taste-surface-line) !important; }

/* ── E10. 旋转视图日期按钮附加态 ── */
html.taste .rotation-date-button.has-date { color: var(--taste-accent) !important; border-color: var(--taste-surface-line-strong) !important; }
html.taste .rotation-date-button::after { color: var(--taste-text-muted) !important; }

/* ── E11. 设置分区标题（布局文件字面色） ── */
html.taste .settings-section + .settings-section { border-top: 1px solid var(--taste-surface-line) !important; }
html.taste .settings-section-bottom { border-top: 1px solid var(--taste-surface-line) !important; }
html.taste .settings-section-title { color: var(--taste-text) !important; }

/* ── E12. 旋转视图分页/模式 tab 激活态（字面琥珀/青 → Taste） ── */
html.taste .rotation-window-tabs button.active,
html.taste .rotation-mode-tabs button.active,
html.taste .rotation-sort-tabs button.active,
html.taste .rotation-tab-wrap button[data-rotation-mode].active {
  border-color: var(--taste-accent) !important;
  background: var(--taste-accent-soft) !important;
  color: var(--taste-text) !important;
  box-shadow: 0 0 18px rgba(0,224,164,0.18) !important;
}


/* ==================== css/themes.css ==================== */
/* ============================================================
   A股景气捕手 — Apple 多主题系统 + 流体动效基座
   版本: v1.0 | 日期: 2026-07-25
   加载顺序：必须在 taste.css 之后。
   设计参考：Apple HIG / emil-design-eng / apple-design skills
   ------------------------------------------------------------
   主题机制（class 组合，作用于 <html>）：
     • 默认      : 无 class                 → 复古未来主义（保留身份 + Apple 动效抛光）
     • Taste     : class="taste"            → 暗色玻璃青绿（原样 + 动效抛光）
     • 深邃黑    : class="taste theme-deep-black"   → 中性纯黑（层叠 taste，覆写调色板）
     • 云米白    : class="taste theme-cloud-white"  → 暖调浅色（层叠 taste，覆写调色板 + chrome）
   三个现代主题都带 taste，复用 taste.css 2286 行组件打磨与菜单重定位逻辑。
   ============================================================ */

/* ============================================================
   A. Apple 流体动效基座（所有主题共享）
   ------------------------------------------------------------
   缓动曲线来自 emil-design-eng / apple-design：
   - ease-apple-out  : 自然减速，UI 元素出现/展开
   - ease-apple-io   : 对称进出
   - ease-drawer     : 抽屉/面板滑入（强初速、软落位）
   - ease-spring     : 轻微回弹，用于强调性反馈
   ============================================================ */
:root {
  --ease-apple-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-apple-io:  cubic-bezier(0.77, 0, 0.175, 1);
  --ease-drawer:    cubic-bezier(0.32, 0.72, 0, 1);
  --ease-spring:    cubic-bezier(0.34, 1.4, 0.64, 1);
  --dur-fast: 140ms;
  --dur-base: 220ms;
  --dur-slow: 320ms;

  /* 统一关闭按钮 token（默认=复古主题深色玻璃） */
  --close-bg:        rgba(255, 255, 255, 0.06);
  --close-line:      rgba(255, 255, 255, 0.16);
  --close-fg:        var(--rf-cream, #f0f0f0);
  --close-bg-hover:  rgba(255, 90, 90, 0.90);
  --close-line-hover: rgba(255, 120, 120, 0.95);
  --close-fg-hover:  #fff;
}

/* 全局按压反馈：只动画 transform / opacity（GPU 友好）+ 微缩放 */
button, .menu-action, [role="button"], .ui-close-x, .panel-close,
.tt-close, .stock-panel-close, .chart-close {
  transition:
    transform var(--dur-fast) var(--ease-apple-out),
    background-color var(--dur-base) var(--ease-apple-out),
    border-color var(--dur-base) var(--ease-apple-out),
    box-shadow var(--dur-base) var(--ease-apple-out),
    color var(--dur-base) var(--ease-apple-out),
    filter var(--dur-base) var(--ease-apple-out);
}
button:active, .menu-action:active, [role="button"]:active {
  transform: scale(0.97);
}
.ui-close-x:active, .panel-close:active, .tt-close:active,
.stock-panel-close:active, .chart-close:active {
  transform: scale(0.90) !important;
}

/* 面板 / 菜单 / 卡片：origin-aware 展开（从当前值动画，避免 scale(0) 入场） */
@keyframes apple-pop-in {
  from { opacity: 0; transform: translateY(-6px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}
@keyframes apple-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* 悬停增强仅对精确指针设备（避免触屏黏滞态） */
@media (hover: hover) and (pointer: fine) {
  .menu-action:hover { transform: translateX(1px); }
}

/* 无障碍：尊重系统减弱动效 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ============================================================
   B. 统一组件抛光（所有主题共享）
   ============================================================ */

/* 面板/菜单打开动画（Apple 弹入，origin 顶部锚定） */
html.taste .panel.open,
html.taste #action-menu.open,
html.taste #stock-panel.open {
  transform-origin: top center;
  animation: apple-pop-in var(--dur-base) var(--ease-apple-out);
}

/* ============================================================
   C. 深邃黑主题 theme-deep-black（层叠 taste，覆写为中性纯黑）
   ------------------------------------------------------------
   premium monochrome：纯黑表面 + Apple 银白文本 + 冰蓝交互
   保留 A股红涨绿跌
   ============================================================ */
html.theme-deep-black {
  /* 原生表单控件：纯黑方案 — <select> 下拉弹出层深底配白字 */
  color-scheme: dark;

  /* Taste 调色板 → 中性纯黑 */
  --taste-bg-0: #000000;
  --taste-bg-1: #0a0a0c;
  --taste-bg-2: #131316;
  --taste-surface: rgba(22, 22, 26, 0.72);
  --taste-surface-strong: rgba(24, 24, 28, 0.94);
  --taste-surface-line: rgba(255, 255, 255, 0.10);
  --taste-surface-line-strong: rgba(100, 210, 255, 0.42);

  --taste-accent: #64d2ff;                 /* 冰蓝交互 */
  --taste-accent-soft: rgba(100, 210, 255, 0.14);
  --taste-cta: #ff7849;
  --taste-cta-soft: rgba(255, 120, 73, 0.16);
  --taste-info: #64d2ff;
  --taste-warning: #ffd60a;

  --taste-text: #f5f5f7;                    /* Apple 主文本白 */
  --taste-text-soft: #c7c7cc;
  --taste-text-muted: #8e8e93;

  --taste-up: #ff453a;                      /* 涨=红 */
  --taste-down: #32d74b;                    /* 跌=绿 */
  --taste-flat: #c7c7cc;

  --taste-shadow-1: 0 10px 30px rgba(0, 0, 0, 0.65);
  --taste-shadow-2: 0 22px 64px rgba(0, 0, 0, 0.78);
  --taste-glass-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.05),
    inset 0 -1px 0 rgba(0, 0, 0, 0.45),
    0 20px 64px rgba(0, 0, 0, 0.72);

  --taste-grad-accent: linear-gradient(135deg, #64d2ff 0%, #0a84ff 100%);
  --taste-grad-bg:
    radial-gradient(circle at 15% 6%, rgba(100, 210, 255, 0.05), transparent 34%),
    radial-gradient(circle at 88% 14%, rgba(10, 132, 255, 0.04), transparent 30%),
    linear-gradient(180deg, #000000 0%, #060608 52%, #000000 100%);

  /* 关闭按钮 token */
  --close-bg: rgba(255, 255, 255, 0.06);
  --close-line: rgba(255, 255, 255, 0.16);
  --close-fg: #f5f5f7;
  --close-bg-hover: rgba(255, 69, 58, 0.92);
  --close-line-hover: rgba(255, 105, 97, 0.95);
  --close-fg-hover: #fff;
}
/* E1 dark token（继承自 html.taste）→ 深邃黑纯黑覆写 */
html.theme-deep-black {
  --rf-bg-0: #000000;
  --rf-bg-1: #0a0a0c;
  --rf-panel: #131316;
  --color-bg-primary: #000000;
  --color-bg-secondary: #0a0a0c;
  --color-text-accent: #64d2ff;
  --shadow-glow-cyan: 0 0 14px rgba(100, 210, 255, 0.16);
}
/* 顶栏纯黑（覆盖 taste 硬编码 rgba(10,15,28,.78)） */
html.theme-deep-black #topbar {
  background: rgba(6, 6, 8, 0.82) !important;
}
html.theme-deep-black #chart-container {
  background: radial-gradient(circle at 50% 45%, rgba(100, 210, 255, 0.04), transparent 46%) !important;
}
html.theme-deep-black #footer,
html.theme-deep-black #zoom-hint,
html.theme-deep-black #legend {
  background: rgba(0, 0, 0, 0.84) !important;
}

/* ============================================================
   D. 云米白主题 theme-cloud-white（层叠 taste，覆写为暖调浅色）
   ------------------------------------------------------------
   warm off-white：奶油白表面 + Apple 深灰文本 + Apple 蓝交互
   保留 A股红涨绿跌（浅底加深以保对比度）
   ============================================================ */
html.theme-cloud-white {
  /* 原生表单控件：暖白方案 — <select> 下拉弹出层浅底配深字 */
  color-scheme: light;

  /* Taste 调色板 → 莫兰迪暖白（云米白） */
  --taste-bg-0: #efe9df;                    /* 云米白 base（暖米） */
  --taste-bg-1: #f6f2ea;                    /* 卡片表面 */
  --taste-bg-2: #e7e0d3;                    /* 凹陷/次级表面 */
  --taste-surface: rgba(255, 253, 248, 0.80);
  --taste-surface-strong: rgba(255, 253, 248, 0.97);
  --taste-surface-line: rgba(148, 136, 118, 0.40);       /* 莫兰迪 greige 描边（取代黑） */
  --taste-surface-line-strong: rgba(110, 138, 166, 0.55); /* 强调描边=雾蓝 */

  --taste-accent: #5f7f9e;                  /* 莫兰迪雾蓝（交互） */
  --taste-accent-soft: rgba(95, 127, 158, 0.14);
  --taste-cta: #b97b4f;                     /* 陶土暖橙（莫兰迪 CTA） */
  --taste-cta-soft: rgba(185, 123, 79, 0.16);
  --taste-info: #5f7f9e;
  --taste-warning: #b08755;

  --taste-text: #3a352e;                     /* 暖炭灰主文本 */
  --taste-text-soft: #6b6457;
  --taste-text-muted: #9a9183;

  --taste-up: #cf3b30;                       /* 涨=砖红（莫兰迪红，仅走势） */
  --taste-down: #2f8f5b;                     /* 跌=鼠尾草绿（莫兰迪绿，仅走势） */
  --taste-flat: #9a9183;

  --taste-shadow-1: 0 8px 24px rgba(74, 66, 54, 0.12);
  --taste-shadow-2: 0 18px 48px rgba(74, 66, 54, 0.16);
  --taste-glass-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.72),
    inset 0 -1px 0 rgba(148, 136, 118, 0.10),
    0 16px 44px rgba(74, 66, 54, 0.14);

  --taste-grad-accent: linear-gradient(135deg, #7d96ad 0%, #5f7f9e 100%);
  --taste-grad-bg:
    radial-gradient(circle at 14% 6%, rgba(95, 127, 158, 0.05), transparent 34%),
    radial-gradient(circle at 88% 14%, rgba(185, 123, 79, 0.035), transparent 30%),
    linear-gradient(180deg, #f6f2ea 0%, #efe9df 52%, #f6f2ea 100%);

  /* 关闭按钮 token（浅底：莫兰迪中性圆，hover 砖红） */
  --close-bg: rgba(148, 136, 118, 0.14);
  --close-line: rgba(148, 136, 118, 0.42);
  --close-fg: #6b6457;
  --close-bg-hover: rgba(207, 59, 48, 0.92);
  --close-line-hover: rgba(207, 59, 48, 0.95);
  --close-fg-hover: #fff;

  /* 云米白统一字体栈（中英文协调 + 财务数字等宽对齐由 D3e 施加） */
  --cw-font: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Source Han Sans SC", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
/* E1 dark token（继承自 html.taste）→ 云米白浅色覆写 */
html.theme-cloud-white {
  --rf-bg-0: #efe9df;
  --rf-bg-1: #f6f2ea;
  --rf-panel: #fffdf8;
  --rf-line: rgba(148, 136, 118, 0.40);
  --rf-line-soft: rgba(148, 136, 118, 0.24);
  --rf-cream: #3a352e;
  --rf-muted: #9a9183;
  --rf-shadow: 0 18px 48px rgba(74, 66, 54, 0.16);
  --rf-darker-bg: #fffdf8;

  --color-bg-primary: #efe9df;
  --color-bg-secondary: #f6f2ea;
  --color-bg-panel: rgba(255, 253, 248, 0.97);
  --color-text-primary: #3a352e;
  --color-text-secondary: #6b6457;
  --color-text-accent: #5f7f9e;
  --color-border: rgba(148, 136, 118, 0.38);
  --color-border-strong: rgba(110, 138, 166, 0.55);
  --color-border-subtle: rgba(148, 136, 118, 0.20);
  --color-border-card: rgba(148, 136, 118, 0.30);

  /* 关键：覆写 taste.css 深色 gradient token（否则大量面板在浅色下仍是黑底） */
  --gradient-card: linear-gradient(180deg, #fffdf8 0%, #f6f2ea 100%);
  --gradient-head: linear-gradient(180deg, #f3eee4 0%, #ece5d8 100%);
  --gradient-btn: linear-gradient(180deg, rgba(255, 255, 255, 0.60), rgba(148, 136, 118, 0.10));
  --gradient-input: linear-gradient(180deg, rgba(148, 136, 118, 0.06), rgba(148, 136, 118, 0.02));
  --gradient-card-alt: linear-gradient(180deg, rgba(95, 127, 158, 0.06), rgba(185, 123, 79, 0.03));
  --gradient-admin-bg: #efe9df;
  --gradient-admin-panel: #fffdf8;

  --shadow-panel: 0 18px 48px rgba(74, 66, 54, 0.16);
  --shadow-dropdown: 0 14px 42px rgba(74, 66, 54, 0.18);
  --shadow-modal: 0 20px 60px rgba(74, 66, 54, 0.22);
  --shadow-tooltip: 0 8px 32px rgba(74, 66, 54, 0.20);
  --shadow-glow-cyan: 0 0 14px rgba(95, 127, 158, 0.16);

  --scrollbar-track: rgba(148, 136, 118, 0.14);
  --scrollbar-thumb: linear-gradient(180deg, rgba(148, 136, 118, 0.42), rgba(148, 136, 118, 0.26));
  --scrollbar-thumb-hover: linear-gradient(180deg, rgba(110, 138, 166, 0.60), rgba(148, 136, 118, 0.42));
}

/* ── D2/D3. 云米白 chrome 定向覆写（莫兰迪暖白 · 去黑边/黑菜单 · 去非走势青绿） ── */

/* 顶栏：白底 + 莫兰迪描边（绝无黑色） */
html.theme-cloud-white #topbar {
  background: rgba(255, 253, 248, 0.86) !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
  box-shadow: 0 4px 18px rgba(74, 66, 54, 0.10), 0 0 0 1px rgba(148, 136, 118, 0.06) inset !important;
}
html.theme-cloud-white #topbar::after { opacity: 0.30 !important; }

/* 页脚 / 缩放提示 / 图例 / 加载遮罩 */
html.theme-cloud-white #footer,
html.theme-cloud-white #zoom-hint,
html.theme-cloud-white #legend {
  background: rgba(255, 253, 248, 0.90) !important;
  color: var(--taste-text-soft) !important;
  border-color: var(--taste-surface-line) !important;
}
html.theme-cloud-white #footer a { color: var(--taste-text-muted) !important; }
html.theme-cloud-white #footer a:hover { color: var(--taste-accent) !important; }
html.theme-cloud-white #loading {
  background: rgba(246, 242, 234, 0.92) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white #loading .spinner {
  border: 3px solid rgba(95, 127, 158, 0.25) !important;
  border-top-color: var(--taste-accent) !important;
  box-shadow: 0 0 18px rgba(95, 127, 158, 0.22) !important;
}
html.theme-cloud-white #chart-container {
  background: radial-gradient(circle at 50% 45%, rgba(95, 127, 158, 0.05), transparent 46%) !important;
}

/* 全局搜索框（去黑，莫兰迪浅底） */
html.theme-cloud-white .global-search-box,
html.theme-cloud-white #global-search-input {
  background: rgba(148, 136, 118, 0.10) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white .global-search-box:focus-within,
html.theme-cloud-white #global-search-input:focus {
  border-color: var(--taste-accent) !important;
  box-shadow: 0 0 0 3px var(--taste-accent-soft) !important;
}

/* 输入框（浅底莫兰迪） */
html.theme-cloud-white .panel input,
html.theme-cloud-white .panel select,
html.theme-cloud-white .panel textarea,
html.theme-cloud-white .ai-field input,
html.theme-cloud-white .renew-code-row input {
  background: rgba(148, 136, 118, 0.08) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white .panel input::placeholder,
html.theme-cloud-white .panel textarea::placeholder { color: var(--taste-text-muted) !important; }
html.theme-cloud-white .panel input:focus,
html.theme-cloud-white .panel select:focus,
html.theme-cloud-white .panel textarea:focus {
  border-color: var(--taste-accent) !important;
  box-shadow: 0 0 0 3px var(--taste-accent-soft) !important;
}

/* panel-head 微光（浅底暖灰，绝无黑） */
html.theme-cloud-white .panel-head,
html.theme-cloud-white #action-menu .menu-section + .menu-section {
  background: linear-gradient(180deg, rgba(148, 136, 118, 0.05), rgba(148, 136, 118, 0.10)) !important;
  border-bottom: 1px solid var(--taste-surface-line) !important;
}

/* 指数涨跌辉光减弱（浅底清晰即可） */
html.theme-cloud-white .index-card.up .index-price,
html.theme-cloud-white .index-card.up .index-pct,
html.theme-cloud-white .stat-value.up { text-shadow: none !important; color: var(--taste-up) !important; }
html.theme-cloud-white .index-card.down .index-price,
html.theme-cloud-white .index-card.down .index-pct,
html.theme-cloud-white .stat-value.down { text-shadow: none !important; color: var(--taste-down) !important; }

/* 表格 / 列表分隔线（莫兰迪，非黑） */
html.theme-cloud-white table tr,
html.theme-cloud-white .list-row,
html.theme-cloud-white .data-row { border-color: var(--taste-surface-line) !important; }

/* ── D3a. 主菜单 #action-menu 内部：去黑底/黑边 + 去青绿 ── */
html.theme-cloud-white #action-menu .menu-section {
  background: rgba(148, 136, 118, 0.10) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #action-menu .menu-action {
  background: rgba(148, 136, 118, 0.08) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white #action-menu .menu-action::before {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.12), transparent 60%) !important;
}
html.theme-cloud-white #action-menu .menu-action:hover {
  background: var(--taste-accent-soft) !important;
  border-color: var(--taste-surface-line-strong) !important;
  box-shadow: 0 6px 18px rgba(74, 66, 54, 0.14) !important;
}
html.theme-cloud-white #action-menu .menu-status {
  background: rgba(95, 127, 158, 0.12) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white #action-menu.open {
  box-shadow: var(--taste-shadow-2), 0 0 0 1px var(--taste-surface-line-strong) !important;
}

/* ── D3b. 各面板 hero / banner / card：青绿(teal) → 雾蓝/陶土（A股忌非走势绿） ── */
html.theme-cloud-white #account-panel .account-banner,
html.theme-cloud-white #account-panel .account-menu-profile {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.12), rgba(185, 123, 79, 0.05)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #account-panel .account-auth-icon.active { box-shadow: 0 0 12px rgba(95, 127, 158, 0.45) !important; }
html.theme-cloud-white #account-panel .account-profile-head { box-shadow: 0 4px 14px rgba(95, 127, 158, 0.30) !important; }
html.theme-cloud-white #account-panel .account-profile:hover { box-shadow: 0 0 18px rgba(95, 127, 158, 0.16) !important; }
html.theme-cloud-white #account-section-login .account-after-login-guide {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.10), rgba(185, 123, 79, 0.05)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #news-panel .panel-head {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.10), rgba(148, 136, 118, 0.04)) !important;
}
html.theme-cloud-white #news-panel .news-item:hover {
  background: linear-gradient(180deg, rgba(95, 127, 158, 0.06), rgba(148, 136, 118, 0.08)) !important;
  border-color: var(--taste-surface-line-strong) !important;
}
html.theme-cloud-white #news-panel .operation-guide-card {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.10), rgba(148, 136, 118, 0.03)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #account-lifecycle-overlay {
  background:
    radial-gradient(circle at 20% 10%, rgba(95, 127, 158, 0.10), transparent 35%),
    radial-gradient(circle at 80% 90%, rgba(185, 123, 79, 0.06), transparent 40%),
    rgba(239, 233, 223, 0.62) !important;
  backdrop-filter: blur(14px) saturate(140%) !important;
  -webkit-backdrop-filter: blur(14px) saturate(140%) !important;
}
html.theme-cloud-white #account-lifecycle-overlay .lifecycle-card,
html.theme-cloud-white #account-lifecycle-overlay .lifecycle-shell {
  background: linear-gradient(180deg, rgba(255, 253, 248, 0.98), rgba(246, 242, 234, 0.98)) !important;
  border: 1px solid var(--taste-surface-line) !important;
  border-radius: 20px !important;
  color: var(--taste-text) !important;
  box-shadow: var(--taste-shadow-2), inset 0 1px 0 rgba(255, 255, 255, 0.72) !important;
}
html.theme-cloud-white #account-lifecycle-overlay #lifecycle-title,
html.theme-cloud-white #account-lifecycle-overlay .lifecycle-title {
  background: linear-gradient(135deg, #5f7f9e 0%, #b97b4f 100%) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
}
html.theme-cloud-white #account-lifecycle-overlay #lifecycle-subtitle {
  color: var(--taste-text-soft) !important;
}
html.theme-cloud-white #account-lifecycle-overlay .lifecycle-content,
html.theme-cloud-white #account-lifecycle-overlay .lifecycle-content p,
html.theme-cloud-white #account-lifecycle-overlay .lifecycle-content li {
  color: var(--taste-text) !important;
}
html.theme-cloud-white #settings-panel .settings-version-card {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.08), rgba(148, 136, 118, 0.03)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #ai-config-panel .ai-config-summary-grid {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.08), rgba(148, 136, 118, 0.03)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #help-doc-panel .help-doc-hero {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.10), rgba(148, 136, 118, 0.04)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #renew-panel .renew-hero {
  background: linear-gradient(135deg, rgba(185, 123, 79, 0.14), rgba(95, 127, 158, 0.06)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #renew-panel .renew-plan-card.selected {
  background: linear-gradient(180deg, rgba(95, 127, 158, 0.10), rgba(148, 136, 118, 0.06)) !important;
  border-color: var(--taste-accent) !important;
  box-shadow: 0 6px 22px rgba(95, 127, 158, 0.18) !important;
}
html.theme-cloud-white #renew-panel .renew-plugin-box {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.08), rgba(148, 136, 118, 0.03)) !important;
  border: 1px solid var(--taste-surface-line) !important;
}
html.theme-cloud-white #us-mapping-panel .us-mobile-guide {
  background: linear-gradient(135deg, rgba(95, 127, 158, 0.08), rgba(148, 136, 118, 0.03)) !important;
  border-left: 3px solid var(--taste-accent) !important;
  border-radius: 10px !important;
}
/* 通用：列表项 hover 辉光去青绿 */
html.theme-cloud-white .panel-item:hover,
html.theme-cloud-white .panel .row:hover {
  background: rgba(95, 127, 158, 0.06) !important;
  border-color: var(--taste-surface-line-strong) !important;
}

/* ── D3c. 旋转视图 / L2 壳 / 角标：去黑 ── */
html.theme-cloud-white #rotation-view {
  background: radial-gradient(circle at 20% 0%, rgba(95, 127, 158, 0.08), transparent 34%), var(--taste-bg-1) !important;
  border-top: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white .l2-focus-shell,
html.theme-cloud-white .l2-chart-shell {
  background: var(--taste-bg-1) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text) !important;
}
html.theme-cloud-white .rotation-badge {
  background: rgba(148, 136, 118, 0.14) !important;
  border: 1px solid var(--taste-surface-line) !important;
  color: var(--taste-text-soft) !important;
}

/* ── D3d. 滚动条：去黑，莫兰迪 ── */
html.theme-cloud-white *::-webkit-scrollbar-track { background: rgba(148, 136, 118, 0.14) !important; }
html.theme-cloud-white *::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(148, 136, 118, 0.42), rgba(148, 136, 118, 0.26)) !important;
  border: 2px solid transparent;
}
html.theme-cloud-white *::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(180deg, rgba(110, 138, 166, 0.60), rgba(148, 136, 118, 0.42)) !important;
}

/* ── D3e. 字体与排版细调（云米白·莫兰迪） ── */
html.theme-cloud-white body,
html.theme-cloud-white .panel,
html.theme-cloud-white #action-menu,
html.theme-cloud-white input,
html.theme-cloud-white select,
html.theme-cloud-white textarea,
html.theme-cloud-white button {
  font-family: var(--cw-font) !important;
}
/* 财务数字等宽对齐（价格/涨跌幅/指数/任意数值） */
html.theme-cloud-white .index-price,
html.theme-cloud-white .index-pct,
html.theme-cloud-white .stat-value,
html.theme-cloud-white .stock-price,
html.theme-cloud-white .change,
html.theme-cloud-white .pct,
html.theme-cloud-white .price,
html.theme-cloud-white [data-num],
html.theme-cloud-white .num {
  font-variant-numeric: tabular-nums !important;
  letter-spacing: 0.01em;
}
/* 标题层级清晰，副文/标签收敛为莫兰迪暖灰 */
html.theme-cloud-white .panel-head h3,
html.theme-cloud-white .panel-title { color: var(--taste-text) !important; }
html.theme-cloud-white .menu-title { color: var(--taste-text-muted) !important; }
html.theme-cloud-white .caption,
html.theme-cloud-white .hint,
html.theme-cloud-white small,
html.theme-cloud-white .muted { color: var(--taste-text-muted) !important; }

/* ============================================================
   Z. 原生下拉菜单 safety net — 显式 <option> 背景/字体色
   ------------------------------------------------------------
   即使 color-scheme 已让浏览器按主题方案渲染弹出层，仍显式
   给 <option> 配主题自适应的底色+字色（基于各主题的
   --color-bg-panel / --color-text-primary 自动取色），杜绝
   白底配米色字 / 深底配深字等"菜单底色与字体颜色无法区分"。
   - 默认复古未来：深棕 #151018 + 米色 #f7e7c6
   - Taste 青绿：深玻璃 + 浅蓝白
   - 深邃黑：纯黑 + 银白
   - 云米白：暖米 #efe9df + 深炭灰 #3a352e
   ============================================================ */
select { color-scheme: inherit; }
option,
optgroup {
  background-color: var(--color-bg-panel) !important;
  color: var(--color-text-primary) !important;
}
option:checked,
option:focus,
option:hover {
  background-color: var(--color-bg-secondary) !important;
  color: var(--color-text-accent) !important;
}

/* ============================================================
   主题：terminal（彭博终端密度风，深色）
   设计来源：ClaudeDesign remix — 本站复古未来 tokens × 终端密度家族
   特征：更深底色 / 彭博琥珀 accent / 等宽数字 / 行情密度优先
   ============================================================ */
html.theme-terminal {
  color-scheme: dark;

  --taste-bg-0: #05070b;
  --taste-bg-1: #0a0e15;
  --taste-bg-2: #111722;
  --taste-surface: rgba(14, 19, 28, 0.80);
  --taste-surface-strong: rgba(17, 23, 33, 0.96);
  --taste-surface-line: rgba(140, 160, 185, 0.13);
  --taste-surface-line-strong: rgba(255, 158, 27, 0.42);

  --taste-accent: #ff9e1b;                    /* 彭博琥珀（交互） */
  --taste-accent-soft: rgba(255, 158, 27, 0.13);
  --taste-cta: #ff9e1b;
  --taste-cta-soft: rgba(255, 158, 27, 0.15);
  --taste-info: #6fb3ff;
  --taste-warning: #ffd60a;

  --taste-text: #e8ebf0;
  --taste-text-soft: #a8b2bf;
  --taste-text-muted: #6e7987;

  --taste-up: #ff5a52;                        /* 涨=红（深底亮红） */
  --taste-down: #2fd08c;                      /* 跌=绿（深底亮绿，亮度梯度区分色盲） */
  --taste-flat: #8b94a1;

  --taste-shadow-1: 0 10px 30px rgba(0, 0, 0, 0.72);
  --taste-shadow-2: 0 22px 64px rgba(0, 0, 0, 0.82);
  --taste-glass-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    inset 0 -1px 0 rgba(0, 0, 0, 0.50),
    0 20px 64px rgba(0, 0, 0, 0.75);

  --taste-grad-accent: linear-gradient(135deg, #ffb84d 0%, #ff9e1b 100%);
  --taste-grad-bg:
    radial-gradient(circle at 15% 6%, rgba(255, 158, 27, 0.05), transparent 34%),
    radial-gradient(circle at 88% 14%, rgba(111, 179, 255, 0.04), transparent 30%),
    linear-gradient(180deg, #05070b 0%, #090c12 52%, #05070b 100%);

  --close-bg: rgba(255, 255, 255, 0.05);
  --close-line: rgba(255, 255, 255, 0.14);
  --close-fg: #e8ebf0;
  --close-bg-hover: rgba(255, 90, 82, 0.92);
  --close-line-hover: rgba(255, 122, 115, 0.95);
  --close-fg-hover: #fff;
}
/* E1 深色 token 覆写（复古未来族变量同步到终端底色） */
html.theme-terminal {
  --rf-bg-0: #05070b;
  --rf-bg-1: #0a0e15;
  --rf-panel: #111722;
  --color-bg-primary: #05070b;
  --color-bg-secondary: #0a0e15;
  --color-text-accent: #ff9e1b;
  --shadow-glow-cyan: 0 0 14px rgba(255, 158, 27, 0.14);
  /* 等宽数字：行情密度优先 */
  font-variant-numeric: tabular-nums;
  --taste-font-num: ui-monospace, "SF Mono", Menlo, Consolas, "Roboto Mono", monospace;
}
html.theme-terminal td,
html.theme-terminal th {
  font-family: var(--taste-font-num);
  font-variant-numeric: tabular-nums;
  line-height: 1.35;
}
html.theme-terminal #topbar {
  background: rgba(6, 9, 14, 0.85) !important;
}
html.theme-terminal #chart-container {
  background: radial-gradient(circle at 50% 45%, rgba(255, 158, 27, 0.04), transparent 46%) !important;
}

/* ============================================================
   主题：paper（财经报刊风，浅色）
   设计来源：ClaudeDesign remix — 本站复古未来米色系 × 报刊排版家族
   特征：米白纸感 / 衬线标题 / 墨蓝 accent / 砖红-深绿涨跌（浅底 AA）
   ============================================================ */
html.theme-paper {
  color-scheme: light;

  --taste-bg-0: #f3edde;
  --taste-bg-1: #faf6ec;
  --taste-bg-2: #e9e1cf;
  --taste-surface: rgba(253, 250, 242, 0.88);
  --taste-surface-strong: rgba(253, 250, 242, 0.97);
  --taste-surface-line: rgba(122, 107, 82, 0.30);
  --taste-surface-line-strong: rgba(47, 77, 110, 0.50);

  --taste-accent: #2f4d6e;                    /* 墨蓝（交互） */
  --taste-accent-soft: rgba(47, 77, 110, 0.12);
  --taste-cta: #a34a2a;                       /* 赭红（CTA） */
  --taste-cta-soft: rgba(163, 74, 42, 0.14);
  --taste-info: #2f4d6e;
  --taste-warning: #a07414;

  --taste-text: #26211a;                      /* 报刊油墨 */
  --taste-text-soft: #5a5140;
  --taste-text-muted: #8c8270;

  --taste-up: #c23a2b;                        /* 涨=砖红（浅底 AA） */
  --taste-down: #1e7a4c;                      /* 跌=深绿（浅底 AA） */
  --taste-flat: #8c8270;

  --taste-shadow-1: 0 8px 24px rgba(74, 66, 54, 0.12);
  --taste-shadow-2: 0 18px 48px rgba(74, 66, 54, 0.16);
  --taste-glass-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.75),
    inset 0 -1px 0 rgba(122, 107, 82, 0.10),
    0 16px 44px rgba(74, 66, 54, 0.13);

  --taste-grad-accent: linear-gradient(135deg, #46648a 0%, #2f4d6e 100%);
  --taste-grad-bg:
    radial-gradient(circle at 14% 6%, rgba(47, 77, 110, 0.05), transparent 34%),
    radial-gradient(circle at 88% 14%, rgba(163, 74, 42, 0.035), transparent 30%),
    linear-gradient(180deg, #faf6ec 0%, #f3edde 52%, #faf6ec 100%);

  --close-bg: rgba(122, 107, 82, 0.14);
  --close-line: rgba(122, 107, 82, 0.42);
  --close-fg: #5a5140;
  --close-bg-hover: rgba(194, 58, 43, 0.92);
  --close-line-hover: rgba(214, 92, 77, 0.95);
  --close-fg-hover: #fff;
}
/* E1 浅色 token 覆写（复古未来族变量同步到纸感底色） */
html.theme-paper {
  --rf-bg-0: #f3edde;
  --rf-bg-1: #faf6ec;
  --rf-panel: #faf6ec;
  --color-bg-primary: #faf6ec;
  --color-bg-secondary: #f3edde;
  --color-text-accent: #2f4d6e;
  --shadow-glow-cyan: 0 0 14px rgba(47, 77, 110, 0.12);
  font-variant-numeric: tabular-nums;
}
/* 衬线标题（报刊排版家族核心特征） */
html.theme-paper :is(h1, h2, h3),
html.theme-paper .panel-head h3,
html.theme-paper .panel-title {
  font-family: "Noto Serif SC", "Songti SC", Georgia, "Times New Roman", serif;
  font-weight: 600;
  letter-spacing: 0.01em;
}
html.theme-paper #topbar {
  background: rgba(250, 246, 236, 0.90) !important;
}
html.theme-paper #chart-container {
  background: radial-gradient(circle at 50% 45%, rgba(47, 77, 110, 0.04), transparent 46%) !important;
}

