/* ==========================================================================
   币润 BiRun 设计系统 —— 专业新闻门户（对标 BlockBeats）
   ========================================================================== */

:root {
  --brand: #0a9e5f;
  --brand-hover: #07854f;
  --up: #0ecb81;
  --down: #f6465d;
  --hot: #ff4d4f;
  --bg: #ffffff;
  --bg-soft: #f7f8fa;
  --bg-panel: #ffffff;
  --line: #f0f1f2;
  --line-strong: #e5e6e8;
  --text-1: #17181a;
  --text-2: #4b4f55;
  --text-3: #9499a0;
  --shadow: 0 1px 2px rgba(0,0,0,.03), 0 4px 16px rgba(0,0,0,.04);
  --shadow-lg: 0 8px 32px rgba(0,0,0,.10);
  --radius: 8px;
  --header-h: 60px;
  --font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", sans-serif;
}
[data-theme="dark"] {
  color-scheme: dark;
  --brand: #25d48e;
  --brand-hover: #4ae2a4;
  --bg: #101114;
  --bg-soft: #17181c;
  --bg-panel: #17181c;
  --line: #232529;
  --line-strong: #2e3136;
  --text-1: #eceef1;
  --text-2: #b3b8bf;
  --text-3: #6d737b;
  --shadow: 0 1px 2px rgba(0,0,0,.4);
  --shadow-lg: 0 8px 32px rgba(0,0,0,.5);
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  font-family: var(--font);
  background: var(--bg);
  color: var(--text-1);
  font-size: 15px;
  line-height: 1.6;
  transition: background .25s, color .25s;
}
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; color: inherit; }
input, textarea, select { font-family: inherit; }
img { max-width: 100%; }

/* ============ Header ============ */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: var(--bg);
  border-bottom: 1px solid var(--line);
}
.header-inner {
  max-width: 1200px; margin: 0 auto; height: var(--header-h);
  display: flex; align-items: center; gap: 36px; padding: 0 24px;
}
.logo { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.logo-mark {
  width: 34px; height: 34px; border-radius: 8px;
  background: var(--text-1); color: var(--bg);
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 17px;
}
.logo-mark.small { width: 28px; height: 28px; font-size: 14px; border-radius: 6px; }
.logo-text { font-size: 19px; font-weight: 800; letter-spacing: -.01em; }
.logo-text em { font-style: normal; font-weight: 600; font-size: 13px; color: var(--text-3); margin-left: 6px; letter-spacing: .02em; }

.main-nav { display: flex; gap: 4px; flex: 1; }
.main-nav a {
  padding: 8px 14px; font-size: 15px; font-weight: 500; color: var(--text-2);
  border-radius: 6px; transition: color .15s, background .15s;
}
.main-nav a:hover { color: var(--text-1); background-color: var(--bg-soft); }
.main-nav a.active { color: var(--text-1); font-weight: 700; }

.header-actions { display: flex; align-items: center; gap: 10px; }
.search-box {
  position: relative; display: flex; align-items: center;
  background: var(--bg-soft); border-radius: 18px; padding: 0 14px; height: 36px; width: 200px;
  border: 1px solid transparent; transition: border-color .15s, width .2s;
}
.search-box:focus-within { border-color: var(--line-strong); width: 260px; }
.search-box i { font-size: 13px; color: var(--text-3); margin-right: 8px; }
.search-box input { border: none; outline: none; background: none; font-size: 14px; width: 100%; color: var(--text-1); }
.search-dropdown {
  position: absolute; top: calc(100% + 8px); right: 0; width: 380px; max-height: 420px; overflow-y: auto;
  background: var(--bg-panel); border: 1px solid var(--line); border-radius: var(--radius);
  box-shadow: var(--shadow-lg); padding: 6px; z-index: 200;
}
.search-dropdown a, .search-dropdown .sr-item { display: block; padding: 10px 12px; border-radius: 6px; font-size: 14px; }
.search-dropdown a:hover { background: var(--bg-soft); }
.search-dropdown .sr-tag { font-size: 11px; color: var(--brand); margin-right: 6px; font-weight: 600; }
.search-dropdown .sr-empty { padding: 16px; color: var(--text-3); font-size: 13px; text-align: center; }

.icon-btn {
  width: 36px; height: 36px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  color: var(--text-2); font-size: 15px; transition: background .15s;
}
.icon-btn:hover { background: var(--bg-soft); color: var(--text-1); }
.theme-icon-light { display: none; }
[data-theme="dark"] .theme-icon-dark { display: none; }
[data-theme="dark"] .theme-icon-light { display: inline; }
.mobile-only { display: none; }
.mobile-menu { border-top: 1px solid var(--line); padding: 8px 16px; }
.mobile-menu a { display: block; padding: 12px 8px; font-size: 15px; font-weight: 500; border-bottom: 1px solid var(--line); }
.mobile-menu a:last-child { border-bottom: none; }

/* 行情条（v21 无缝跑马灯：内容双份 + 平移 50% 循环，恒速右→左） */
.ticker-strip {
  overflow: hidden; white-space: nowrap;
  max-width: 1200px; margin: 0 auto; padding: 8px 24px;
  border-top: 1px solid var(--line); font-size: 12.5px;
  /* 两端渐隐，暗示内容在流动 */
  -webkit-mask-image: linear-gradient(to right, transparent, #000 24px, #000 calc(100% - 24px), transparent);
  mask-image: linear-gradient(to right, transparent, #000 24px, #000 calc(100% - 24px), transparent);
}
.ticker-track {
  display: inline-flex; align-items: baseline;
  animation: ticker-scroll var(--ticker-dur, 45s) linear infinite;
  will-change: transform;
}
.ticker-strip:hover .ticker-track { animation-play-state: paused; }
.ticker-set { display: inline-flex; align-items: baseline; gap: 28px; padding-right: 28px; flex-shrink: 0; }
@keyframes ticker-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
/* 弱动效偏好：停止动画，退化为手动横向滚动 */
@media (prefers-reduced-motion: reduce) {
  .ticker-track { animation: none; }
  .ticker-strip { overflow-x: auto; scrollbar-width: none; -webkit-mask-image: none; mask-image: none; }
  .ticker-strip::-webkit-scrollbar { display: none; }
}
.tick { display: inline-flex; align-items: baseline; gap: 7px; flex-shrink: 0; color: inherit; text-decoration: none; }
a.tick:hover .t-sym { color: var(--brand); }
.tick .t-sym { font-weight: 700; color: var(--text-1); transition: color .15s; }
.tick .t-price { color: var(--text-2); font-variant-numeric: tabular-nums; }
.tick .t-chg { font-weight: 600; font-variant-numeric: tabular-nums; }
.t-up { color: var(--up); } .t-down { color: var(--down); }

/* ============ 布局 ============ */
.page-main { max-width: 1200px; margin: 0 auto; padding: 28px 24px 60px; }
.home-grid { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 40px; }

/* ============ Hero 头条 ============ */
.hero-section { margin-bottom: 8px; }
.hero-card {
  display: block; padding: 20px 24px; border-radius: 12px;
  background: linear-gradient(135deg, #17181a 0%, #2a2d34 100%);
  color: #fff; margin-bottom: 28px; position: relative; overflow: hidden;
}
[data-theme="dark"] .hero-card { background: linear-gradient(135deg, #1d2026 0%, #2a2f3a 100%); border: 1px solid var(--line-strong); }
.hero-card::after {
  content: ''; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px;
  background: radial-gradient(circle, rgba(10,158,95,.35), transparent 65%);
}
.hero-kicker { font-size: 12px; font-weight: 700; letter-spacing: .12em; color: #6fe3b2; text-transform: uppercase; margin-bottom: 10px; }
.hero-title { font-size: 21px; font-weight: 800; line-height: 1.45; letter-spacing: -.01em; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.hero-desc { font-size: 14px; color: rgba(255,255,255,.65); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.hero-meta { margin-top: 12px; font-size: 12.5px; color: rgba(255,255,255,.45); }
.hero-grid { display: grid; grid-template-columns: 1fr 240px; gap: 22px; align-items: center; position: relative; z-index: 1; }
.hero-grid.no-img { grid-template-columns: 1fr; }
.hero-img { width: 240px; height: 150px; border-radius: 10px; overflow: hidden; box-shadow: 0 6px 22px rgba(0,0,0,.28); }
.hero-img img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ============ 文章 Feed（左图右文 / 左文右图 经典门户行） ============ */
.section-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.section-head h2 { font-size: 18px; font-weight: 800; letter-spacing: -.01em; }
.more-link { font-size: 13px; color: var(--text-3); }
.more-link:hover { color: var(--brand); }

.article-feed { display: flex; flex-direction: column; }
.feed-item {
  display: flex; gap: 20px; padding: 22px 0;
  border-bottom: 1px solid var(--line);
}
.feed-item:last-child { border-bottom: none; }
.feed-body { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.feed-title {
  font-size: 17px; font-weight: 700; line-height: 1.5; letter-spacing: -.01em;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  transition: color .15s;
}
.feed-item:hover .feed-title { color: var(--brand); }
.feed-summary {
  margin-top: 8px; font-size: 13.5px; color: var(--text-3); line-height: 1.65;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.feed-meta { margin-top: auto; padding-top: 10px; font-size: 12.5px; color: var(--text-3); display: flex; align-items: center; gap: 8px; }
.feed-meta .cat { color: var(--brand); font-weight: 600; }
.feed-meta .dot::before { content: '·'; }
.feed-thumb {
  width: 210px; height: 122px; border-radius: 10px; overflow: hidden; flex-shrink: 0;
  background: var(--bg-soft); display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--line);
}
.feed-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; display: block; }
.feed-item:hover .feed-thumb img { transform: scale(1.04); }
.feed-thumb .thumb-ph { font-size: 28px; font-weight: 800; color: var(--text-3); opacity: .35; letter-spacing: .05em; }

/* ============ 右侧快讯栏（律动式核心） ============ */
.home-sidebar { display: flex; flex-direction: column; gap: 20px; }
.nf-panel {
  background: var(--bg-panel); border: 1px solid var(--line); border-radius: 12px;
  overflow: hidden;
}
.nf-panel-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 18px 12px;
}
.nf-panel-head h2 { font-size: 16px; font-weight: 800; display: flex; align-items: center; gap: 8px; }
.live-dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--hot); display: inline-block;
  animation: live-pulse 1.6s ease-out infinite;
}
@keyframes live-pulse {
  0% { box-shadow: 0 0 0 0 rgba(255,77,79,.5); }
  70% { box-shadow: 0 0 0 7px rgba(255,77,79,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,77,79,0); }
}
.nf-list { padding: 0 18px; max-height: 560px; overflow-y: auto; }
.nf-item {
  position: relative; padding: 0 0 18px 20px; border-left: 1px solid var(--line-strong);
  margin-left: 6px;
}
.nf-item:last-child { padding-bottom: 6px; }
.nf-item::before {
  content: ''; position: absolute; left: -4.5px; top: 7px;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--bg); border: 2px solid var(--text-3);
}
.nf-item.important::before { border-color: var(--hot); background: var(--hot); }
.nf-time { font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; margin-bottom: 4px; }
.nf-title { display: block; font-size: 14px; font-weight: 600; line-height: 1.55; cursor: pointer; transition: color .15s; }
.nf-title:hover { color: var(--brand); }
.nf-item.important .nf-title { color: var(--hot); }
.nf-item.important .nf-title:hover { color: var(--hot); opacity: .85; }
.nf-body { font-size: 13px; color: var(--text-2); line-height: 1.7; margin-top: 6px; display: none; }
.nf-item.open .nf-body { display: block; }
/* 长正文折叠收纳（移动端体验关键：默认 3 行，点击展开） */
.nf-text.clamped { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.nf-expand {
  display: inline-flex; align-items: center; gap: 4px;
  margin-top: 6px; padding: 2px 0; font-size: 12.5px; font-weight: 600;
  color: var(--brand); background: none; border: none; cursor: pointer;
}
.nf-expand:hover { opacity: .8; }
.nf-img { margin-top: 10px; border-radius: 8px; overflow: hidden; max-width: 480px; }
.nf-img img { width: 100%; max-height: 280px; object-fit: cover; display: block; }
.nf-tags { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.nf-more-btn {
  display: block; text-align: center; padding: 12px; font-size: 13.5px; font-weight: 600;
  color: var(--text-2); border-top: 1px solid var(--line); transition: color .15s, background .15s;
}
.nf-more-btn:hover { color: var(--brand); background: var(--bg-soft); }

/* 标签 */
.tag { font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 4px; line-height: 1.6; }
.tag-bull { color: var(--up); background: rgba(14,203,129,.09); }
.tag-bear { color: var(--down); background: rgba(246,70,93,.09); }
.tag-coin { color: var(--brand); background: rgba(10,158,95,.07); }
.tag-hot { color: var(--hot); background: rgba(246,70,93,.1); vertical-align: middle; font-size: 13px; padding: 3px 9px; border-radius: 4px; font-weight: 700; }
.tag-src { color: var(--text-3); font-size: 12px; }
.tag-src a:hover { color: var(--brand); }

/* ============ 侧栏小组件 ============ */
.side-widget {
  background: var(--bg-panel); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px;
}
.widget-title { font-size: 15px; font-weight: 800; margin-bottom: 12px; }
.fg-block { display: flex; align-items: center; gap: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--line); margin-bottom: 10px; }
.fg-num { font-size: 34px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.fg-label { font-size: 13px; font-weight: 600; margin-top: 4px; }
.fg-bar { flex: 1; height: 6px; border-radius: 3px; background: linear-gradient(90deg, var(--down), #f7b955, var(--up)); position: relative; }
.fg-bar i {
  position: absolute; top: -3px; width: 12px; height: 12px; border-radius: 50%;
  background: var(--bg); border: 3px solid var(--text-1); transform: translateX(-50%);
}
.hot-list { display: flex; flex-direction: column; }
.hot-item { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: 13.5px; }
.hot-rank { width: 18px; font-weight: 800; color: var(--text-3); font-size: 13px; text-align: center; }
.hot-item:nth-child(1) .hot-rank, .hot-item:nth-child(2) .hot-rank, .hot-item:nth-child(3) .hot-rank { color: var(--hot); }
.hot-item img { width: 20px; height: 20px; border-radius: 50%; }
.hot-sym { font-weight: 700; }
.hot-name { color: var(--text-3); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
.hot-cap { color: var(--text-3); font-size: 12px; }

/* ============ 全球市场板块（金十式） ============ */
.gm-block { display: flex; flex-direction: column; gap: 2px; }
/* v21 全球市场 Tab 卡片（参考 BlockBeats 侧栏） */
.gm-tabs { display: flex; gap: 4px; margin-bottom: 8px; border-bottom: 1px solid var(--line); }
.gm-tab {
  appearance: none; background: none; border: none; cursor: pointer;
  font-size: 12.5px; font-weight: 600; color: var(--text-3);
  padding: 6px 10px 8px; position: relative; transition: color .15s;
  font-family: inherit;
}
.gm-tab:hover { color: var(--text-1); }
.gm-tab.active { color: var(--brand); font-weight: 700; }
.gm-tab.active::after {
  content: ''; position: absolute; left: 10px; right: 10px; bottom: -1px;
  height: 2px; background: var(--brand); border-radius: 1px;
}
.gm-list { display: flex; flex-direction: column; }
.gm-group { padding: 4px 0 8px; }
.gm-group + .gm-group { border-top: 1px solid var(--line); padding-top: 10px; }
.gm-group-label { font-size: 11.5px; font-weight: 700; color: var(--text-3); margin-bottom: 4px; letter-spacing: .04em; }
.gm-row {
  display: flex; align-items: baseline; gap: 8px; padding: 4px 0;
  font-size: 13px;
}
.gm-name { font-weight: 700; color: var(--text-1); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gm-price { font-variant-numeric: tabular-nums; color: var(--text-2); }
.gm-chg { font-weight: 700; font-variant-numeric: tabular-nums; min-width: 62px; text-align: right; font-size: 12.5px; }

.fund-item { padding: 10px 0; border-bottom: 1px solid var(--line); }
.fund-item:last-child { border-bottom: none; }
.fund-top { display: flex; justify-content: space-between; align-items: baseline; }
.fund-name { font-size: 14px; font-weight: 700; }
.fund-amount { font-size: 14px; font-weight: 800; color: var(--brand); font-variant-numeric: tabular-nums; }
.fund-sub { font-size: 12.5px; color: var(--text-3); margin-top: 3px; }

.cal-item { display: flex; gap: 10px; padding: 8px 0; align-items: flex-start; }
.cal-icon { font-size: 15px; line-height: 1.5; }
.cal-title { font-size: 13.5px; font-weight: 600; line-height: 1.5; }
.cal-date { font-size: 12px; color: var(--text-3); margin-top: 2px; }

/* ============ 快讯页（按日期分组时间轴） ============ */
.nf-page { max-width: 720px; margin: 0 auto; }
.nf-page-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 22px; }
.nf-page-head h1 { font-size: 24px; font-weight: 800; display: flex; align-items: center; gap: 10px; }
.nf-filters, .art-filters { display: flex; gap: 8px; flex-wrap: wrap; }
.nf-filters button, .art-filters button {
  padding: 6px 16px; font-size: 13.5px; font-weight: 600; border-radius: 16px;
  color: var(--text-2); background: var(--bg-soft); transition: all .15s;
}
.nf-filters button:hover, .art-filters button:hover { color: var(--text-1); }
.nf-filters button.active, .art-filters button.active { background: var(--text-1); color: var(--bg); }

.nf-date-group { margin-bottom: 6px; }
.nf-date-head {
  position: sticky; top: calc(var(--header-h) + 0px); z-index: 10;
  background: var(--bg); padding: 10px 0; font-size: 15px; font-weight: 800;
  display: flex; align-items: center; gap: 10px;
}
.nf-date-head::after { content: ''; flex: 1; height: 1px; background: var(--line); }
.nf-timeline .nf-item { padding-bottom: 22px; }
.nf-timeline .nf-title { font-size: 15.5px; }
.nf-timeline .nf-body { display: block; font-size: 14px; }
.nf-timeline .nf-item.important .nf-title { font-size: 16px; }

.load-more-wrap { text-align: center; padding: 28px 0; }
.load-more-wrap button {
  padding: 10px 36px; font-size: 14px; font-weight: 600; border-radius: 20px;
  border: 1px solid var(--line-strong); color: var(--text-2); transition: all .15s;
}
.load-more-wrap button:hover { color: var(--brand); border-color: var(--brand); }

/* ============ 文章页 ============ */
.art-page { max-width: 860px; margin: 0 auto; }
.art-page-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; flex-wrap: wrap; gap: 12px; }
.art-page-head h1 { font-size: 24px; font-weight: 800; }

/* ============ 文章详情 ============ */
.art-detail { max-width: 720px; margin: 0 auto; }
.art-crumb { font-size: 13px; color: var(--text-3); margin-bottom: 18px; }
.art-crumb a:hover { color: var(--brand); }
.art-h1 { font-size: 30px; font-weight: 800; line-height: 1.4; letter-spacing: -.015em; margin-bottom: 18px; }
.art-byline {
  display: flex; align-items: center; gap: 14px; font-size: 13.5px; color: var(--text-3);
  padding-bottom: 22px; border-bottom: 1px solid var(--line); margin-bottom: 26px;
}
.art-lead {
  font-size: 15px; color: var(--text-2); line-height: 1.8;
  background: var(--bg-soft); border-left: 3px solid var(--text-1);
  padding: 14px 18px; border-radius: 0 8px 8px 0; margin-bottom: 26px;
}
.art-cover { margin: 20px 0 26px; border-radius: 12px; overflow: hidden; }
.art-cover img { width: 100%; max-height: 380px; object-fit: cover; display: block; }
.art-body { font-size: 16px; line-height: 1.9; color: var(--text-1); }
.art-body h2 { font-size: 21px; font-weight: 800; margin: 36px 0 14px; letter-spacing: -.01em; }
.art-body h3 { font-size: 18px; font-weight: 700; margin: 28px 0 12px; }
.art-body p { margin: 16px 0; }
.art-body ul, .art-body ol { padding-left: 24px; margin: 16px 0; }
.art-body li { margin: 8px 0; }
.art-body a { color: var(--brand); }
.art-body a:hover { text-decoration: underline; }
.art-body blockquote { border-left: 3px solid var(--line-strong); padding-left: 16px; color: var(--text-2); margin: 20px 0; }
.art-body code { background: var(--bg-soft); padding: 2px 6px; border-radius: 4px; font-size: .9em; }
.art-body img { border-radius: 8px; margin: 16px 0; }
.art-disclaimer { margin-top: 44px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 12.5px; color: var(--text-3); }

/* ============ Footer ============ */
.site-footer { border-top: 1px solid var(--line); background: var(--bg-soft); margin-top: 40px; }
.footer-inner {
  max-width: 1200px; margin: 0 auto; padding: 36px 24px;
  display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; flex-wrap: wrap;
}
.footer-brand { display: flex; align-items: center; gap: 12px; }
.footer-name { font-size: 15px; font-weight: 800; }
.footer-slogan { font-size: 12.5px; color: var(--text-3); }
.footer-links { display: flex; gap: 22px; font-size: 13.5px; color: var(--text-2); flex-wrap: wrap; }
.footer-links a:hover { color: var(--brand); }
.footer-meta { font-size: 12px; color: var(--text-3); text-align: right; }

/* ============ 骨架屏 ============ */
.skeleton-row {
  height: 84px; border-radius: 8px; margin-bottom: 14px;
  background: linear-gradient(90deg, var(--bg-soft) 25%, var(--line) 50%, var(--bg-soft) 75%);
  background-size: 200% 100%; animation: sk 1.3s infinite;
}
.skeleton-row.big { height: 140px; }
@keyframes sk { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.empty-hint { text-align: center; color: var(--text-3); font-size: 13.5px; padding: 32px 0; }

/* ============ 管理后台 ============ */
/* 安全修复：全局强制 hidden 属性生效（display:flex 等显式规则曾覆盖 hidden，导致登录卡与后台面板同屏） */
[hidden] { display: none !important; }
.admin-login { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: var(--bg-soft); padding: 20px; }
.admin-login-card {
  width: 100%; max-width: 380px; background: var(--bg-panel); border: 1px solid var(--line);
  border-radius: 14px; padding: 40px 36px; box-shadow: var(--shadow);
}
.admin-login-logo { text-align: center; margin-bottom: 16px; }
.admin-login-logo .logo-mark { width: 46px; height: 46px; font-size: 22px; border-radius: 12px; }
.admin-login-card h1 { font-size: 19px; font-weight: 800; text-align: center; margin-bottom: 26px; }
.login-error { color: var(--down); font-size: 13px; text-align: center; margin-top: 14px; }

.admin-shell { min-height: 100vh; background: var(--bg-soft); }
.admin-header {
  height: 56px; background: var(--bg-panel); border-bottom: 1px solid var(--line);
  display: flex; align-items: center; justify-content: space-between; padding: 0 24px;
  position: sticky; top: 0; z-index: 50;
}
.admin-header-left { display: flex; align-items: center; gap: 10px; font-size: 15px; }
.admin-header-right { display: flex; align-items: center; gap: 18px; font-size: 13.5px; color: var(--text-2); }
.admin-header-right a:hover { color: var(--brand); }
.admin-header-right button { color: var(--down); font-size: 13.5px; }
.admin-body { max-width: 1100px; margin: 0 auto; padding: 24px; }
.admin-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 12px; margin-bottom: 20px; }
.stat-card { background: var(--bg-panel); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; }
.stat-num { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
.stat-label { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.admin-tabs { display: flex; gap: 6px; margin-bottom: 16px; flex-wrap: wrap; }
.admin-tab {
  padding: 8px 18px; font-size: 13.5px; font-weight: 600; border-radius: 8px;
  color: var(--text-2); background: var(--bg-panel); border: 1px solid var(--line);
}
.admin-tab.active { background: var(--text-1); color: var(--bg); border-color: var(--text-1); }
.admin-card { background: var(--bg-panel); border: 1px solid var(--line); border-radius: 12px; padding: 22px; }
.admin-card h2 { font-size: 16px; font-weight: 800; margin-bottom: 14px; }
.admin-card h3 { font-size: 14.5px; font-weight: 700; }
.admin-hint { font-size: 12.5px; color: var(--text-3); margin-bottom: 14px; }

.form-input {
  width: 100%; padding: 10px 14px; border-radius: 8px; font-size: 14px;
  background: var(--bg-soft); border: 1px solid var(--line); color: var(--text-1);
  outline: none; transition: border-color .15s;
}
.form-input:focus { border-color: var(--brand); background: var(--bg-panel); }
textarea.form-input { resize: vertical; line-height: 1.7; }
.form-grid { display: grid; gap: 10px; }
.form-grid.cols-4 { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
.form-grid.cols-3 { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.btn-primary {
  padding: 10px 28px; border-radius: 8px; font-size: 14px; font-weight: 700;
  background: var(--text-1); color: var(--bg); transition: opacity .15s; width: fit-content;
}
.admin-login-card .btn-primary { width: 100%; margin-top: 14px; }
.btn-primary:hover { opacity: .85; }
.btn-primary:disabled { opacity: .5; cursor: not-allowed; }

.admin-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.admin-table th { text-align: left; padding: 10px 12px; font-size: 12px; color: var(--text-3); font-weight: 600; border-bottom: 1px solid var(--line-strong); white-space: nowrap; }
.admin-table td { padding: 11px 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
.admin-table tr:hover td { background: var(--bg-soft); }
.t-link { color: var(--brand); } .t-danger { color: var(--down); } .t-ok { color: var(--up); }
.result-pre { margin-top: 12px; font-size: 12px; background: var(--bg-soft); border-radius: 8px; padding: 12px; overflow-x: auto; white-space: pre-wrap; }
.admin-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 20px; }
.admin-sub-card { border: 1px solid var(--line); border-radius: 10px; padding: 16px; }
.radio-row { display: flex; gap: 16px; flex-wrap: wrap; font-size: 13.5px; margin: 12px 0; }
.radio-row label { display: flex; align-items: center; gap: 5px; cursor: pointer; }
.admin-section { margin-bottom: 28px; }
.admin-section-title { font-size: 15px; font-weight: 700; margin: 0 0 14px; display: flex; align-items: center; gap: 6px; }
.admin-section-title i { color: var(--brand); font-size: 13px; }
.form-stack { display: grid; gap: 12px; margin-top: 12px; }
.table-wrap { overflow-x: auto; }
.cell-title { max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cell-nowrap { white-space: nowrap; }
.t-brand { color: var(--brand); }
.t-muted { color: var(--text-3); }
.check-label { display: flex; align-items: center; gap: 6px; font-size: 13.5px; cursor: pointer; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12.5px; }
.empty-cell { text-align: center; color: var(--text-3); padding: 28px 0 !important; }
.admin-table button { background: none; border: none; cursor: pointer; font-size: 13px; padding: 0; font-family: inherit; }

/* ============ 响应式 ============ */
@media (max-width: 1024px) {
  /* 移动端：快讯主内容优先展示，侧栏组件收纳到内容之后（用户进来先看到有价值的快讯流） */
  .home-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  /* 顶部头条区单列：Hero 在上，重要快讯在下 */
  .top-grid { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .top-main .hero-card { height: auto; }
  .top-main .hero-section > a { justify-content: flex-start; }
  .nf-list { max-height: 400px; }
  /* 侧栏改为两列小卡（平板），充分利用空间 */
  .home-sidebar { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
}
@media (max-width: 768px) {
  .main-nav { display: none; }
  .mobile-only { display: inline-flex; }
  /* v8.2 移动端顶栏精简：Logo 缩小 + 搜索收纳为图标（点击展开）+ 图标收紧，根治 419px>390px 横向溢出 */
  .logo { gap: 7px; }
  .logo-img { width: 30px; height: 30px; }
  .logo-text { font-size: 17px; }
  .logo-text em { display: none; }
  .header-actions { gap: 4px; }
  .icon-btn { width: 32px; height: 32px; font-size: 14px; }
  .header-inner .search-box { width: 36px; min-width: 36px; padding: 0; justify-content: center; cursor: pointer; }
  .search-box i { margin-right: 0; }
  .search-box input { width: 0; padding: 0; opacity: 0; }
  .search-box.expanded { position: absolute; left: 10px; right: 10px; width: auto; z-index: 30; padding: 0 14px; justify-content: flex-start; background: var(--bg-panel); border-color: var(--line-strong); box-shadow: var(--shadow-lg); }
  .search-box.expanded i { margin-right: 8px; }
  .search-box.expanded input { width: 100%; opacity: 1; }
  .header-inner { position: relative; }
  .search-dropdown { width: 300px; right: -60px; }
  .header-inner { gap: 10px; padding: 0 14px; }
  .page-main { padding: 16px 14px 44px; }
  .feed-thumb { width: 110px; height: 74px; }
  .feed-title { font-size: 15.5px; }
  .feed-summary { display: none; }
  .hero-card { padding: 16px 16px; }
  .hero-title { font-size: 17px; -webkit-line-clamp: 3; }
  .hero-desc { font-size: 13px; }
  .hero-grid { grid-template-columns: 1fr; }
  .hero-img { display: none; }
  .top-section { margin-bottom: 20px; }
  .hot-flash-card { max-height: 236px; overflow-y: auto; }
  .art-h1 { font-size: 22px; }
  .art-body { font-size: 15.5px; }
  .admin-2col { grid-template-columns: 1fr; }
  .footer-meta { text-align: left; }
  /* 手机：侧栏恢复单列 */
  .home-sidebar { grid-template-columns: 1fr; }
  /* 快讯时间轴移动端字号与间距压缩，信息密度更高 */
  .nf-timeline .nf-title { font-size: 15px; }
  .nf-timeline .nf-body { font-size: 13.5px; }
  .nf-timeline .nf-item { padding-bottom: 16px; }
  .nf-img { max-width: 100%; }
  .nf-img img { max-height: 200px; }
  /* 顶部头条区：重要快讯只显示前 4 条高度，其余滚动 */
  .hot-flash-card { max-height: 240px; overflow-y: auto; }
  .ticker-strip { padding: 6px 14px; }
  .ticker-set { gap: 20px; padding-right: 20px; }
  .section-head h2 { font-size: 16px; }
  .nf-filters button, .art-filters button { padding: 5px 13px; font-size: 13px; }
  .mini-art-row { display: none; } /* 手机隐藏小文章卡，信息聚焦 */
}

/* ============ 首页 v2：快讯主体布局 ============ */
.top-section { margin-bottom: 28px; }
.top-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 20px; align-items: stretch; }
.top-main { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.top-main .hero-card { margin-bottom: 0; height: 100%; }
.top-main .hero-section { margin-bottom: 0; flex: 1; display: flex; flex-direction: column; }
.top-main .hero-section > a { flex: 1; display: flex; flex-direction: column; justify-content: center; }
.mini-art-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.top-side { display: flex; flex-direction: column; gap: 12px; }
.hot-flash-card {
  background: var(--card); border: 1px solid var(--border); border-radius: 12px;
  padding: 14px 16px; flex: 1;
}
.hot-flash-head {
  font-size: 13px; font-weight: 800; color: #f0442e; margin-bottom: 10px;
  display: flex; align-items: center; gap: 6px;
}
.hot-flash-item {
  display: flex; gap: 10px; padding: 7px 0; text-decoration: none;
  border-bottom: 1px dashed var(--border); align-items: baseline;
}
.hot-flash-item:last-child { border-bottom: none; }
.hf-time { font-size: 11px; color: var(--text-3); white-space: nowrap; flex-shrink: 0; }
.hf-title {
  font-size: 13px; color: var(--text-1); font-weight: 600; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.hot-flash-item:hover .hf-title { color: var(--brand); }
.mini-art-card {
  background: var(--card); border: 1px solid var(--border); border-radius: 12px;
  padding: 10px; text-decoration: none; display: flex; gap: 12px; align-items: stretch; overflow: hidden;
}
.mini-art-card:hover { border-color: var(--brand); }
.mini-art-thumb { width: 96px; min-height: 68px; border-radius: 8px; overflow: hidden; flex-shrink: 0; background: var(--bg-soft); align-self: stretch; }
.mini-art-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.mini-art-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; }
.mini-art-cat { font-size: 11px; color: var(--brand); font-weight: 700; }
.mini-art-title {
  font-size: 14px; font-weight: 700; color: var(--text-1); line-height: 1.45;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.mini-art-meta { font-size: 11px; color: var(--text-3); margin-top: auto; }
.nf-live-hint {
  font-size: 11px; font-weight: 600; color: var(--up); background: color-mix(in srgb, var(--up) 12%, transparent);
  padding: 2px 8px; border-radius: 20px; margin-left: 8px;
}
.nf-main-section .section-head { margin-bottom: 14px; display: flex; align-items: center; justify-content: space-between; }
.nf-main-section .section-head h2 { display: flex; align-items: center; gap: 8px; font-size: 18px; font-weight: 800; }
/* 24h 热门 */
.hot-news-list { display: flex; flex-direction: column; }
.hot-news-item {
  display: flex; gap: 10px; align-items: baseline; padding: 8px 0;
  text-decoration: none; border-bottom: 1px dashed var(--border);
}
.hot-news-item:last-child { border-bottom: none; }
.hot-news-item .hot-rank {
  font-size: 12px; font-weight: 800; color: var(--text-3); width: 18px; text-align: center; flex-shrink: 0;
}
.hot-news-item .hot-rank.r1 { color: #f0442e; }
.hot-news-item .hot-rank.r2 { color: #f77a2e; }
.hot-news-item .hot-rank.r3 { color: #f0b429; }
.hot-news-title {
  font-size: 13px; color: var(--text-1); font-weight: 600; line-height: 1.5; flex: 1;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.hot-news-item:hover .hot-news-title { color: var(--brand); }
.hot-news-views { font-size: 11px; color: var(--text-3); white-space: nowrap; flex-shrink: 0; }
/* 侧栏深度精选（v10 图文卡） */
.side-art-item {
  display: flex; gap: 10px; padding: 9px 0; align-items: flex-start;
  text-decoration: none; border-bottom: 1px dashed var(--border);
}
.side-art-thumb { width: 72px; height: 46px; border-radius: 6px; overflow: hidden; flex-shrink: 0; background: var(--bg-soft); }
.side-art-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.side-art-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.side-art-title { font-size: 13px; font-weight: 600; color: var(--text-1); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.side-art-item:hover .side-art-title { color: var(--brand); }
.side-art-meta { font-size: 11px; color: var(--text-3); }
/* 相关快讯（详情页内链） */
.related-section { margin-top: 32px; border-top: 1px solid var(--border); padding-top: 20px; }
.related-title { font-size: 16px; font-weight: 800; margin: 0 0 12px; }
.related-list { display: flex; flex-direction: column; }
.related-item {
  display: flex; justify-content: space-between; gap: 16px; align-items: baseline;
  padding: 9px 0; text-decoration: none; border-bottom: 1px dashed var(--border);
}
.related-item-title { font-size: 14px; font-weight: 600; color: var(--text-1); line-height: 1.5; }
.related-item:hover .related-item-title { color: var(--brand); }
.related-item-time { font-size: 12px; color: var(--text-3); white-space: nowrap; }
@media (max-width: 960px) {
  .top-grid { grid-template-columns: 1fr; }
  .mini-art-row { grid-template-columns: 1fr; }
}

/* ============ 财经日历页（金十式） ============ */
.cal-page { max-width: 100%; }
.cal-tz { font-size: 12px; color: var(--text-3); }
.cal-days { display: flex; gap: 8px; margin: 14px 0 10px; overflow-x: auto; padding-bottom: 4px; }
.cal-day {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  min-width: 64px; padding: 8px 10px; border-radius: 10px; text-decoration: none;
  background: var(--card); border: 1px solid var(--border); flex-shrink: 0;
}
.cal-day.active { background: var(--brand); border-color: var(--brand); }
.cal-day.active .cal-day-label, .cal-day.active .cal-day-date { color: #fff; }
.cal-day-label { font-size: 12px; font-weight: 700; color: var(--text-1); }
.cal-day-date { font-size: 11px; color: var(--text-3); }
.cal-markets { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.cal-market {
  font-size: 13px; padding: 5px 14px; border-radius: 20px; text-decoration: none;
  background: var(--card); border: 1px solid var(--border); color: var(--text-2); font-weight: 600;
}
.cal-market.active { background: var(--text-1); color: var(--bg); border-color: var(--text-1); }
.cal-table-wrap { background: var(--card); border: 1px solid var(--border); border-radius: 12px; overflow-x: auto; }
.cal-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.cal-table th {
  text-align: left; padding: 12px 14px; font-size: 12px; color: var(--text-3);
  border-bottom: 1px solid var(--border); white-space: nowrap; font-weight: 700;
}
.cal-table td { padding: 12px 14px; border-bottom: 1px solid var(--line); vertical-align: top; }
.cal-table tr:last-child td { border-bottom: none; }
.cal-time { font-variant-numeric: tabular-nums; color: var(--text-2); white-space: nowrap; font-weight: 600; }
.cal-imp { font-size: 11px; padding: 2px 8px; border-radius: 4px; font-weight: 700; white-space: nowrap; }
.cal-imp.imp3 { background: rgba(240,68,46,.12); color: #f0442e; }
.cal-imp.imp2 { background: rgba(255,153,0,.12); color: #e08600; }
.cal-imp.imp1 { background: var(--line); color: var(--text-3); }
/* v12.12 金十式星级重要性 */
.cal-stars { font-size: 13px; letter-spacing: 1px; white-space: nowrap; color: var(--line); }
.cal-stars.s5 { color: #f0442e; }
.cal-stars.s3 { color: #e08600; }
.cal-stars.s2 { color: var(--text-3); }
/* v12.12 国旗 + 盘前盘后 */
.cal-flag { margin-right: 6px; font-size: 15px; }
.cal-sess { font-size: 11px; padding: 1px 6px; border-radius: 4px; margin-right: 6px; font-weight: 700; }
.cal-sess.pre { background: rgba(56,132,255,.12); color: #2f6fe0; }
.cal-sess.post { background: rgba(140,80,255,.12); color: #7a4fd8; }
/* v12.12 重要开关（金十式 toggle） */
.cal-head-right { display: flex; align-items: center; gap: 14px; }
.cal-imp-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; color: var(--text-2); text-decoration: none; }
.cal-switch { width: 34px; height: 19px; border-radius: 10px; background: var(--line); position: relative; transition: background .15s; display: inline-block; }
.cal-switch-dot { position: absolute; top: 2px; left: 2px; width: 15px; height: 15px; border-radius: 50%; background: #fff; transition: left .15s; box-shadow: 0 1px 2px rgba(0,0,0,.2); }
.cal-imp-toggle.on { color: var(--brand); }
.cal-imp-toggle.on .cal-switch { background: var(--brand); }
.cal-imp-toggle.on .cal-switch-dot { left: 17px; }
/* v12.12 多空判定徽章 + 逻辑链 */
.cal-verdict-row { margin-top: 6px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.cal-verdict { font-size: 11.5px; padding: 2px 9px; border-radius: 4px; font-weight: 700; white-space: nowrap; }
.cal-verdict.vd-bull { background: rgba(14,203,129,.12); color: var(--up); }
.cal-verdict.vd-bear { background: rgba(246,70,93,.12); color: var(--down); }
.cal-verdict.vd-flat { background: rgba(255,153,0,.12); color: #e08600; }
.cal-verdict-logic { font-size: 12px; color: var(--text-3); font-weight: 400; line-height: 1.5; }
.cal-verdict-logic i { opacity: .6; margin-right: 2px; }
/* v12.12 移动端数值行（窄屏隐藏表格数值列后仍可见 前值/预期/公布） */
.cal-mob-nums { display: none; }
/* v12.12.1 公布前瞻卡（公布前的情景推演 + 投资指引） */
.cal-preview { margin-top: 8px; padding: 10px 12px; background: rgba(10,158,95,.04); border: 1px dashed rgba(10,158,95,.35); border-radius: 8px; font-size: 12.5px; font-weight: 400; }
.cal-preview-head { font-weight: 800; color: var(--brand); font-size: 12px; margin-bottom: 5px; }
.cal-preview-head i { margin-right: 4px; }
.cal-preview-lean { color: var(--text-2); margin-bottom: 6px; line-height: 1.55; }
.cal-preview-scen { display: flex; flex-direction: column; gap: 4px; margin-bottom: 6px; }
.cal-scen { display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; color: var(--text-3); line-height: 1.5; }
.cal-scen em { font-style: normal; font-weight: 700; color: var(--text-2); white-space: nowrap; }
.cal-preview-hint { color: var(--text-3); font-size: 12px; line-height: 1.55; padding-top: 6px; border-top: 1px dashed var(--line); }
.cal-preview-hint i { opacity: .6; margin-right: 3px; }
.cal-title-cell { font-weight: 600; color: var(--text-1); line-height: 1.5; }
.cal-type-tag {
  font-size: 11px; padding: 1px 6px; border-radius: 4px; margin-right: 6px;
  background: rgba(10,158,95,.1); color: var(--brand); font-weight: 700;
}
.cal-desc { font-size: 12.5px; color: var(--text-3); margin-top: 4px; font-weight: 400; }
.cal-num { font-variant-numeric: tabular-nums; color: var(--text-2); white-space: nowrap; }
.cal-actual { font-weight: 700; color: var(--text-1); }
.cal-row.imp-3 .cal-title-cell { color: #d3382a; }
.cal-empty { padding: 60px 20px; text-align: center; color: var(--text-3); }
.cal-empty i { font-size: 36px; margin-bottom: 12px; display: block; opacity: .4; }
.cal-note { font-size: 12px; color: var(--text-3); margin-top: 12px; line-height: 1.6; }
@media (max-width: 720px) {
  .cal-table th, .cal-table td { padding: 10px 8px; }
  .cal-th-num, .cal-num { display: none; }
  .cal-mob-nums { display: flex; gap: 12px; margin-top: 5px; font-size: 12px; color: var(--text-3); font-weight: 400; flex-wrap: wrap; }
  .cal-mob-nums b { color: var(--text-2); font-variant-numeric: tabular-nums; }
  .cal-mob-nums .cal-mob-actual { color: var(--text-1); font-weight: 800; }
  .cal-stars { font-size: 11px; letter-spacing: 0; }
}

/* ============ v5.1 分享栏（快讯/文章详情页） ============ */
.share-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 18px 0 6px; padding-top: 16px; border-top: 1px solid var(--line);
}
.share-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: 20px; border: 1px solid var(--line);
  background: var(--bg-2, transparent); color: var(--text-2); font-size: 13px;
  cursor: pointer; transition: all .15s; font-family: inherit;
}
.share-btn:hover { border-color: var(--brand); color: var(--brand); }
.share-btn.bookmarked { border-color: #f5a623; color: #f5a623; background: rgba(245,166,35,.08); }
.share-btn.copied { border-color: #16a34a; color: #16a34a; }

/* ============ v5.1 币种聚合页 /coin/:symbol ============ */
.coin-page { padding: 8px 0 30px; }
.coin-head { padding: 22px 0 18px; border-bottom: 1px solid var(--line); margin-bottom: 20px; }
.coin-title-row { display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap; }
.coin-symbol { font-size: 34px; font-weight: 800; letter-spacing: .5px; color: var(--text-1); margin: 0; }
.coin-price-box { display: flex; align-items: baseline; gap: 10px; }
.coin-price { font-size: 26px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text-1); }
.coin-chg { font-size: 15px; font-weight: 700; padding: 2px 8px; border-radius: 5px; }
.coin-chg.up { color: #16a34a; background: rgba(22,163,74,.1); }
.coin-chg.down { color: #f0442e; background: rgba(240,68,46,.1); }
.coin-price-loading { font-size: 14px; color: var(--text-3); }
.coin-sub { margin: 8px 0 0; font-size: 13.5px; color: var(--text-3); }

/* 热门币种侧栏 */
.hot-coin-links { display: flex; flex-wrap: wrap; gap: 8px; }
.hot-coin-link {
  padding: 6px 14px; border-radius: 16px; border: 1px solid var(--line);
  font-size: 13px; font-weight: 600; color: var(--text-2); text-decoration: none;
  transition: all .15s;
}
.hot-coin-link:hover { border-color: var(--brand); color: var(--brand); }
.hot-coin-link.active { background: var(--text-1); color: var(--bg-1, #fff); border-color: var(--text-1); }

/* 币种标签可点击 */
.tag-coin { cursor: pointer; }
.tag-coin:hover { text-decoration: underline; }

/* ============ v5.1 我的收藏页 /bookmarks ============ */
.bookmarks-page { max-width: 760px; margin: 0 auto; padding: 20px 0 40px; }
.bm-list { display: flex; flex-direction: column; }
.bm-item {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 4px; border-bottom: 1px solid var(--line);
}
.bm-kind {
  flex-shrink: 0; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 4px;
  background: rgba(10,158,95,.1); color: var(--brand);
}
.bm-kind.kind-art { background: rgba(245,166,35,.12); color: #d08000; }
.bm-title { flex: 1; font-size: 14.5px; font-weight: 600; color: var(--text-1); text-decoration: none; line-height: 1.5; }
.bm-title:hover { color: var(--brand); }
.bm-del {
  flex-shrink: 0; background: none; border: none; cursor: pointer;
  color: var(--text-3); font-size: 14px; padding: 6px; border-radius: 6px;
}
.bm-del:hover { color: #f0442e; background: rgba(240,68,46,.08); }
.empty-hint { padding: 50px 20px; text-align: center; color: var(--text-3); font-size: 14px; }

@media (max-width: 720px) {
  .coin-symbol { font-size: 26px; }
  .coin-price { font-size: 20px; }
  .share-btn { padding: 6px 11px; font-size: 12.5px; }
}

/* ============ v7: 品牌 Logo 图片 ============ */
.logo-img { width: 36px; height: 36px; border-radius: 8px; object-fit: contain; display: block; }
.logo-img.small { width: 28px; height: 28px; border-radius: 6px; }
/* v10: 暗黑模式 Logo 变体（白底反转版，黑色方块在深色背景下会溶掉） */
[data-theme="dark"] .logo-img { content: url('/static/brand/logo-icon-dark.webp'); }

/* ============ v7: 快讯频道 Tab ============ */
.nf-channel-tabs { display: flex; gap: 6px; overflow-x: auto; padding: 4px 0 12px; scrollbar-width: none; }
.nf-channel-tabs::-webkit-scrollbar { display: none; }
.nf-ch-tab { flex-shrink: 0; padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 600; color: var(--text-2); background: var(--bg-soft); border: 1px solid var(--line); text-decoration: none; transition: all .15s; }
.nf-ch-tab:hover { color: var(--brand); border-color: var(--brand); }
.nf-ch-tab.active { color: #fff; background: var(--text-1); border-color: var(--text-1); }

/* ============ v7: 数据中心 ============ */
.data-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 18px; }
.data-card { background: var(--bg); border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.data-card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.data-card-head h3 { margin: 0; font-size: 14.5px; font-weight: 700; }
.data-card-head h3 i { color: var(--brand); margin-right: 6px; font-size: 13px; }
.data-updated { font-size: 11.5px; color: var(--text-3); }
.data-card-body { position: relative; height: 210px; }
.data-card-body canvas { width: 100% !important; height: 210px !important; }
.data-empty { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: var(--text-3); font-size: 13px; gap: 8px; flex-direction: column; }
.data-empty[hidden] { display: none; } /* 修复：显式 display:flex 会覆盖 hidden 属性，必须补回 */
.data-empty .retry-btn { border: 1px solid var(--line); background: var(--bg); color: var(--text-2); font-size: 12px; padding: 5px 14px; border-radius: 999px; cursor: pointer; }
.data-empty .retry-btn:hover { border-color: var(--brand); color: var(--brand); }
/* 数据卡骨架屏（加载中动画） */
.data-skeleton { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; gap: 0; padding: 12px 8px 8px; }
.data-skeleton[hidden] { display: none; }
.data-skeleton .sk-bars { display: flex; align-items: flex-end; gap: 6px; height: 70%; }
.data-skeleton .sk-bars i { flex: 1; background: linear-gradient(90deg, var(--bg-soft) 25%, var(--line) 50%, var(--bg-soft) 75%); background-size: 200% 100%; animation: sk-shine 1.4s ease infinite; border-radius: 3px 3px 0 0; }
.data-skeleton .sk-label { margin-top: 10px; text-align: center; color: var(--text-3); font-size: 12.5px; }
.data-skeleton .sk-label i.fas { margin-right: 6px; color: var(--brand); }
@keyframes sk-shine { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* ============ v7: 日历影响回测卡 + 倒计时 ============ */
.cal-impact { margin-top: 8px; padding: 10px 12px; background: var(--bg-soft); border: 1px solid var(--line); border-radius: 8px; font-size: 12.5px; }
.cal-impact-head { font-weight: 700; color: var(--brand); margin-bottom: 6px; font-size: 12px; }
.cal-impact-stats { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 6px; color: var(--text-2); }
.cal-impact-stats b { color: var(--text-1); font-variant-numeric: tabular-nums; }
.cal-impact-case { color: var(--text-3); line-height: 1.55; margin-top: 3px; }
.cal-countdown { display: block; font-size: 11px; margin-top: 2px; }
.cal-countdown.soon { color: #d97706; font-weight: 600; }
.cal-countdown.live { color: var(--down); font-weight: 700; }
.tag-unlock { background: rgba(13,138,86,.1); color: var(--brand); }

/* ============ v7: 管理后台设置中心 ============ */
.setting-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--line); }
.setting-label { font-size: 13.5px; font-weight: 600; display: flex; flex-direction: column; }
.setting-label small { font-weight: 400; color: var(--text-3); font-size: 11.5px; }
.setting-switch { width: 40px; height: 22px; appearance: none; background: var(--line-strong, #ccc); border-radius: 999px; position: relative; cursor: pointer; transition: background .15s; flex-shrink: 0; }
.setting-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: left .15s; }
.setting-switch:checked { background: var(--brand); }
.setting-switch:checked::after { left: 20px; }
.setting-num { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: var(--text-2); margin: 6px 0; }
.channel-row .form-input { padding: 4px 8px; font-size: 13px; }

@media (max-width: 720px) {
  .data-grid { grid-template-columns: 1fr; }
  .nf-channel-tabs { padding-bottom: 10px; }
}

/* ============ 数据中心：信号灯面板（抄底逃顶指标） ============ */
.data-card-body.signal-mode { height: auto; min-height: 120px; max-height: 300px; overflow-y: auto; }
.data-card-body.signal-mode canvas { display: none !important; height: 0 !important; }
.signal-panel { display: flex; flex-direction: column; gap: 4px; }
.signal-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 8px; border-radius: 8px; background: var(--bg-soft); cursor: help; }
.signal-name { font-size: 12.5px; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.signal-badge { flex-shrink: 0; font-size: 11.5px; font-weight: 700; padding: 2px 10px; border-radius: 999px; }
.signal-badge.sig-buy { background: rgba(22,163,74,.12); color: #16a34a; }
.signal-badge.sig-sell { background: rgba(240,68,46,.12); color: #f0442e; }
.signal-badge.sig-hold { background: var(--line); color: var(--text-3); }
.data-updated.ok { color: var(--text-3); }

/* ============ 分享栏 SVG 图标与弹层 ============ */
.share-btn .s-ic { display: inline-flex; align-items: center; vertical-align: -2px; }
.share-btn .s-ic svg { display: block; }
.share-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.share-modal-mask { position: absolute; inset: 0; background: rgba(0,0,0,.55); backdrop-filter: blur(2px); }
.share-modal-card { position: relative; background: var(--bg); border: 1px solid var(--line); border-radius: 16px; padding: 26px 28px 24px; max-width: 92vw; width: 420px; text-align: center; box-shadow: 0 20px 60px rgba(0,0,0,.3); max-height: 88vh; overflow-y: auto; }
.share-modal-close { position: absolute; top: 10px; right: 14px; border: none; background: none; font-size: 26px; line-height: 1; color: var(--text-3); cursor: pointer; }
.share-modal-close:hover { color: var(--text-1); }
.share-modal-title { margin: 0 0 18px; font-size: 17px; font-weight: 800; }
.share-qr { border-radius: 12px; border: 1px solid var(--line); }
.share-modal-hint { color: var(--text-3); font-size: 12.5px; margin: 14px 0 0; }
.poster-holder { min-height: 200px; display: flex; align-items: center; justify-content: center; }
.poster-loading { color: var(--text-3); font-size: 13px; padding: 60px 0; }
.poster-img { max-width: 100%; border-radius: 12px; border: 1px solid var(--line); }
.poster-actions { margin-top: 14px; }
.poster-dl { display: inline-block; text-decoration: none; padding: 9px 26px; border-radius: 999px; }

/* ============ 快讯多空投票条 ============ */
.vote-bar { margin-top: 22px; border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; background: var(--bg-soft); }
.vote-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.vote-title { font-size: 14px; font-weight: 700; }
.vote-total { font-size: 12px; color: var(--text-3); }
.vote-actions { display: flex; gap: 10px; }
.vote-btn { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 9px 0; border-radius: 10px; border: 1.5px solid var(--line); background: var(--bg); font-size: 13.5px; font-weight: 700; cursor: pointer; color: var(--text-2); transition: all .15s; }
.vote-btn em { font-style: normal; font-weight: 600; font-size: 12px; color: var(--text-3); }
.vote-btn.vote-bull:hover:not(:disabled) { border-color: #16a34a; color: #16a34a; }
.vote-btn.vote-bear:hover:not(:disabled) { border-color: #f0442e; color: #f0442e; }
.vote-btn:disabled { cursor: default; opacity: .65; }
.vote-btn.my-vote.vote-bull { border-color: #16a34a; color: #16a34a; background: rgba(22,163,74,.08); opacity: 1; }
.vote-btn.my-vote.vote-bear { border-color: #f0442e; color: #f0442e; background: rgba(240,68,46,.08); opacity: 1; }
.vote-meter { margin-top: 12px; height: 8px; border-radius: 999px; background: rgba(240,68,46,.25); overflow: hidden; }
.vote-meter[hidden] { display: none; }
.vote-meter-bull { display: block; height: 100%; background: #16a34a; border-radius: 999px 0 0 999px; transition: width .3s; }
.vote-pct { display: flex; justify-content: space-between; margin-top: 6px; font-size: 12px; font-weight: 700; }
.vote-pct[hidden] { display: none; }
.vote-pct .t-bull { color: #16a34a; }
.vote-pct .t-bear { color: #f0442e; }

/* ============ 原创角标 + 币圈热搜榜 ============ */
.tag-original { display: inline-block; vertical-align: 2px; font-size: 11px; font-weight: 800; line-height: 1; padding: 3px 7px; border-radius: 5px; background: var(--brand); color: #fff; letter-spacing: 1px; }
.hot-topics-list { display: flex; flex-direction: column; gap: 2px; }
.hot-topic-item { display: flex; align-items: center; gap: 8px; padding: 7px 6px; border-radius: 8px; text-decoration: none; color: var(--text-1); }
.hot-topic-item:hover { background: var(--bg-soft); }
.hot-topic-coin { font-weight: 800; font-size: 13.5px; min-width: 46px; }
.hot-topic-meta { flex: 1; font-size: 11.5px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hot-topic-heat { font-size: 11.5px; font-weight: 700; color: #f0442e; }
.hot-topic-heat i { font-size: 10px; margin-right: 3px; }

/* ============ 开放平台 /open ============ */
.open-portal { max-width: 1080px; margin: 0 auto; padding: 0 16px 60px; }
.open-hero { text-align: center; padding: 56px 16px 40px; }
.open-hero h1 { font-size: 34px; font-weight: 800; margin-bottom: 14px; }
.open-hero h1 .grad { background: linear-gradient(120deg, var(--brand), #0d8a3c); -webkit-background-clip: text; background-clip: text; color: transparent; }
.open-hero p { font-size: 15px; color: var(--text-2); max-width: 620px; margin: 0 auto 24px; line-height: 1.8; }
.open-hero-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.open-stats { display: flex; justify-content: center; gap: 40px; margin-top: 36px; flex-wrap: wrap; }
.open-stat { text-align: center; }
.open-stat b { display: block; font-size: 24px; font-weight: 800; color: var(--brand); }
.open-stat span { font-size: 12.5px; color: var(--text-3); }

.open-plans { margin: 30px 0 50px; }
.plan-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.plan-card { position: relative; border: 1.5px solid var(--line); border-radius: 16px; padding: 28px 24px; background: var(--bg); display: flex; flex-direction: column; transition: transform .15s, box-shadow .15s; }
.plan-card:hover { transform: translateY(-3px); box-shadow: 0 12px 32px rgba(0,0,0,.08); }
.plan-card.plan-hot { border-color: var(--brand); box-shadow: 0 6px 24px rgba(22,163,74,.12); }
.plan-badge { position: absolute; top: -12px; right: 20px; background: linear-gradient(135deg, var(--brand), #0d8a3c); color: #fff; font-size: 11.5px; font-weight: 800; padding: 4px 12px; border-radius: 999px; }
.plan-name { font-size: 17px; font-weight: 800; margin-bottom: 6px; }
.plan-price { font-size: 30px; font-weight: 800; margin: 10px 0 4px; }
.plan-price small { font-size: 13px; font-weight: 600; color: var(--text-3); }
.plan-desc { font-size: 12.5px; color: var(--text-3); margin-bottom: 16px; }
.plan-feats { list-style: none; padding: 0; margin: 0 0 22px; flex: 1; }
.plan-feats li { font-size: 13.5px; color: var(--text-2); padding: 6px 0; display: flex; align-items: center; gap: 8px; }
.plan-feats li i { color: var(--brand); font-size: 12px; width: 16px; }
.plan-cta { display: block; text-align: center; padding: 11px 0; border-radius: 10px; font-size: 14px; font-weight: 700; text-decoration: none; border: 1.5px solid var(--line); color: var(--text-1); transition: all .15s; }
.plan-cta:hover { border-color: var(--brand); color: var(--brand); }
.plan-hot .plan-cta { background: var(--brand); border-color: var(--brand); color: #fff; }
.plan-hot .plan-cta:hover { background: #0d8a3c; color: #fff; }

.open-docs { margin-top: 20px; }
.open-docs h2 { font-size: 22px; font-weight: 800; margin: 40px 0 8px; }
.open-docs h3 { font-size: 16px; font-weight: 700; margin: 28px 0 10px; }
.open-docs p { font-size: 14px; color: var(--text-2); line-height: 1.8; margin: 8px 0; }
.api-endpoint { border: 1px solid var(--line); border-radius: 12px; margin: 16px 0; overflow: hidden; }
.api-endpoint-head { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--bg-soft); }
.api-method { font-size: 11.5px; font-weight: 800; padding: 3px 9px; border-radius: 6px; background: var(--brand); color: #fff; letter-spacing: .5px; }
.api-path { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13.5px; font-weight: 600; }
.api-endpoint-body { padding: 14px 16px; font-size: 13.5px; color: var(--text-2); line-height: 1.7; }
.api-params { width: 100%; border-collapse: collapse; margin: 10px 0; font-size: 12.5px; }
.api-params th, .api-params td { border: 1px solid var(--line); padding: 7px 10px; text-align: left; }
.api-params th { background: var(--bg-soft); font-weight: 700; }
.api-params td code { font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--brand); }
.api-code { background: #0d1117; color: #c9d1d9; border-radius: 10px; padding: 14px 16px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; line-height: 1.65; overflow-x: auto; margin: 10px 0; white-space: pre; }
[data-theme="dark"] .api-code { background: #161b22; border: 1px solid var(--line); }
.code-tabs { display: flex; gap: 8px; margin: 14px 0 0; }
.code-tab { font-size: 12.5px; font-weight: 700; padding: 5px 14px; border-radius: 8px 8px 0 0; border: 1px solid var(--line); border-bottom: none; background: var(--bg-soft); color: var(--text-3); cursor: pointer; }
.code-tab.active { background: #0d1117; color: #fff; border-color: #0d1117; }

/* ============ 用户中心 /account ============ */
.auth-panel { max-width: 420px; margin: 60px auto; padding: 0 16px; }
.auth-card { border: 1px solid var(--line); border-radius: 16px; padding: 32px 28px; background: var(--bg); box-shadow: 0 8px 30px rgba(0,0,0,.05); }
.auth-card h2 { font-size: 20px; font-weight: 800; text-align: center; margin-bottom: 22px; }
.auth-card .form-input { width: 100%; margin-bottom: 14px; }
.auth-card .btn-primary { width: 100%; padding: 11px 0; font-size: 14.5px; }
.auth-switch { text-align: center; margin-top: 16px; font-size: 13px; color: var(--text-3); }
.auth-switch a, .link-btn { color: var(--brand); font-weight: 700; text-decoration: none; background: none; border: none; cursor: pointer; font-size: 13px; padding: 0; }
.link-btn:hover { text-decoration: underline; }
.link-btn.danger { color: #f0442e; }

.account-wrap { max-width: 1080px; margin: 0 auto; padding: 24px 16px 60px; }
.account-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 22px; flex-wrap: wrap; gap: 12px; }
.account-head h1 { font-size: 22px; font-weight: 800; }
.user-email-badge { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); background: var(--bg-soft); border: 1px solid var(--line); border-radius: 999px; padding: 6px 14px; }
.user-email-badge i { color: var(--brand); }
.account-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.account-card { border: 1px solid var(--line); border-radius: 14px; padding: 22px; background: var(--bg); }
.account-card.span2 { grid-column: 1 / -1; }
.account-card h3 { font-size: 15.5px; font-weight: 800; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.account-card h3 i { color: var(--brand); }

.key-list { display: flex; flex-direction: column; gap: 10px; }
.key-item { border: 1px solid var(--line); border-radius: 10px; padding: 13px 15px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.key-item.key-off { opacity: .55; }
.key-prefix { font-family: ui-monospace, Menlo, monospace; font-size: 13px; font-weight: 700; }
.key-plan { font-size: 11px; font-weight: 800; padding: 2px 9px; border-radius: 999px; background: rgba(22,163,74,.1); color: var(--brand); text-transform: uppercase; }
.key-plan.pro { background: rgba(59,130,246,.12); color: #3b82f6; }
.key-plan.enterprise { background: rgba(168,85,247,.12); color: #a855f7; }
.key-dead { font-size: 11px; font-weight: 700; color: #f0442e; }
.key-meta { flex: 1; font-size: 12px; color: var(--text-3); min-width: 160px; }
.key-item .key-actions { display: flex; gap: 10px; }

.btn-sm { font-size: 12.5px; font-weight: 700; padding: 6px 14px; border-radius: 8px; border: 1px solid var(--line); background: var(--bg); color: var(--text-2); cursor: pointer; transition: all .15s; }
.btn-sm:hover { border-color: var(--brand); color: var(--brand); }
.btn-sm.primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-sm.primary:hover { background: #0d8a3c; }

.plan-buy { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.plan-buy select { padding: 8px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--text-1); font-size: 13px; }

.pay-panel { margin-top: 16px; }
.pay-box { border: 1.5px dashed var(--brand); border-radius: 12px; padding: 20px; background: rgba(22,163,74,.04); }
.pay-box h4 { font-size: 14.5px; font-weight: 800; margin-bottom: 12px; }
.pay-amount { font-size: 26px; font-weight: 800; color: var(--brand); margin: 8px 0; font-family: ui-monospace, Menlo, monospace; }
.pay-amount small { font-size: 13px; color: var(--text-3); font-weight: 600; }
.pay-warn { font-size: 12.5px; color: #d97706; background: rgba(217,119,6,.08); border: 1px solid rgba(217,119,6,.25); border-radius: 8px; padding: 9px 12px; margin: 10px 0; line-height: 1.6; }
.pay-addr-row { display: flex; align-items: center; gap: 10px; margin: 10px 0; flex-wrap: wrap; }
.pay-addr-row code { font-family: ui-monospace, Menlo, monospace; font-size: 12.5px; background: var(--bg-soft); border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; word-break: break-all; flex: 1; min-width: 200px; }
.pay-qr { display: flex; justify-content: center; margin: 14px 0; }
.pay-qr canvas, .pay-qr img { border: 8px solid #fff; border-radius: 10px; }
.pay-status { display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 700; margin-top: 12px; }
.pay-status.waiting { color: #d97706; }
.pay-status.paid { color: var(--brand); }
.pay-status.expired { color: #f0442e; }

.wh-form { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.wh-form .form-input { width: 100%; }
.wh-row { display: flex; gap: 10px; flex-wrap: wrap; }
.wh-row .form-input, .wh-row select { flex: 1; min-width: 140px; }
.wh-row select { padding: 9px 12px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); color: var(--text-1); font-size: 13px; }

.usage-bar { height: 7px; border-radius: 999px; background: var(--bg-soft); overflow: hidden; margin-top: 6px; width: 100%; }
.usage-bar i { display: block; height: 100%; background: var(--brand); border-radius: 999px; }

@media (max-width: 860px) {
  .plan-grid { grid-template-columns: 1fr; }
  .account-grid { grid-template-columns: 1fr; }
  .open-hero h1 { font-size: 26px; }
  .open-hero { padding: 36px 12px 28px; }
  .open-stats { gap: 24px; }
  .account-head h1 { font-size: 19px; }
  .key-item { padding: 11px 12px; }
  .pay-addr-row code { font-size: 11.5px; }
  .auth-panel { margin: 36px auto; }
  .auth-card { padding: 26px 20px; }
}

/* ---- 适配 pages-open.ts 实际模板结构 ---- */
.open-plans h2, .open-docs h2 { text-align: center; font-size: 22px; font-weight: 800; margin: 10px 0 26px; }
.open-docs h2 { text-align: left; }
.plan-card h3 { font-size: 17px; font-weight: 800; margin-bottom: 4px; }
.plan-price em { font-style: normal; font-size: 13px; font-weight: 600; color: var(--text-3); }
.plan-card ul { list-style: none; padding: 0; margin: 14px 0 22px; flex: 1; }
.plan-card ul li { font-size: 13.5px; color: var(--text-2); padding: 6px 0 6px 22px; position: relative; }
.plan-card ul li::before { content: '\2713'; position: absolute; left: 0; color: var(--brand); font-weight: 800; }
.plan-btn { display: block; text-align: center; }
.open-plans .cal-note { text-align: center; margin-top: 18px; }
.api-ep-head { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--bg-soft); }
.api-ep-desc { padding: 12px 16px !important; font-size: 13.5px; color: var(--text-2); margin: 0 !important; }
.open-docs code { font-family: ui-monospace, Menlo, monospace; font-size: 12.5px; background: var(--bg-soft); border: 1px solid var(--line); border-radius: 5px; padding: 1px 6px; }
.api-code code { background: none; border: none; padding: 0; }

/* ============ v11: Web Push 铃铛按钮 ============ */
#push-toggle.push-on { color: var(--brand); }
#push-toggle.push-on:hover { color: #0d8a3c; }

/* ============ v13.1 用户系统登录/注册页美化 ============ */
.auth-panel { max-width: 440px; margin: 48px auto 70px; padding: 0 16px; }
.auth-card { border: 1px solid var(--line); border-radius: 20px; padding: 36px 32px 28px; background: var(--bg);
  box-shadow: 0 12px 44px rgba(0,0,0,.08); }
.auth-logo { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 20px; }
.auth-logo-mark { width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(135deg, #111 0%, #444 100%);
  color: #fff; font-weight: 800; font-size: 19px; display: flex; align-items: center; justify-content: center; }
.auth-logo-text { font-size: 17px; font-weight: 800; letter-spacing: .5px; }
.auth-card h1 { font-size: 22px; font-weight: 800; text-align: center; margin: 0 0 6px; }
.auth-sub { text-align: center; color: var(--muted); font-size: 13px; margin: 0 0 22px; }
.auth-field { display: block; margin-bottom: 15px; }
.auth-label { display: block; font-size: 12.5px; font-weight: 600; color: var(--muted); margin-bottom: 6px; }
.auth-input-wrap { position: relative; display: flex; align-items: center; }
.auth-input-wrap > i { position: absolute; left: 13px; color: #aaa; font-size: 13px; pointer-events: none; }
.auth-input-wrap input { width: 100%; padding: 11px 42px 11px 38px; border: 1.5px solid var(--line); border-radius: 12px;
  font-size: 14px; background: var(--bg); color: var(--fg); transition: border-color .15s, box-shadow .15s; }
.auth-input-wrap input:focus { outline: none; border-color: #111; box-shadow: 0 0 0 3px rgba(0,0,0,.06); }
.auth-eye { position: absolute; right: 10px; background: none; border: none; color: #aaa; cursor: pointer; padding: 6px; font-size: 13px; }
.auth-eye:hover { color: var(--fg); }
.auth-submit { width: 100%; padding: 12px 0; border: none; border-radius: 12px; background: #111; color: #fff;
  font-size: 15px; font-weight: 700; cursor: pointer; transition: opacity .15s, transform .1s; margin-top: 4px; }
.auth-submit:hover { opacity: .88; } .auth-submit:active { transform: scale(.985); }
.auth-error { margin: 12px 0 0; padding: 10px 12px; border-radius: 10px; background: #fef2f2; color: #dc2626; font-size: 13px; text-align: center; }
.auth-divider { display: flex; align-items: center; gap: 12px; margin: 20px 0 14px; color: #bbb; font-size: 12px; }
.auth-divider::before, .auth-divider::after { content: ''; flex: 1; height: 1px; background: var(--line); }
.auth-switch { text-align: center; font-size: 13.5px; color: var(--muted); margin: 0; }
.auth-switch .link-btn { font-weight: 700; }
.auth-perks { list-style: none; margin: 20px 0 0; padding: 16px 4px 0; border-top: 1px dashed var(--line); display: grid; gap: 8px; }
.auth-perks li { font-size: 13px; color: var(--muted); }
.auth-perks i { color: #16a34a; margin-right: 8px; font-size: 12px; }
[data-theme="dark"] .auth-error { background: rgba(220,38,38,.12); }
[data-theme="dark"] .auth-logo-mark { background: linear-gradient(135deg, #eee 0%, #999 100%); color: #111; }
[data-theme="dark"] .auth-submit { background: #eee; color: #111; }
[data-theme="dark"] .auth-input-wrap input:focus { border-color: #eee; box-shadow: 0 0 0 3px rgba(255,255,255,.08); }

/* ============ API Key 可复制弹窗 ============ */
.key-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; }
.key-modal[hidden] { display: none; }
.key-modal-mask { position: absolute; inset: 0; background: rgba(0,0,0,.55); backdrop-filter: blur(3px); }
.key-modal-card { position: relative; width: min(480px, calc(100vw - 32px)); background: var(--bg); border-radius: 20px;
  padding: 30px 28px 24px; box-shadow: 0 24px 70px rgba(0,0,0,.3); text-align: center; }
.key-modal-icon { width: 52px; height: 52px; margin: 0 auto 14px; border-radius: 16px; background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #fff; font-size: 22px; display: flex; align-items: center; justify-content: center; }
.key-modal-card h3 { font-size: 18px; font-weight: 800; margin: 0 0 8px; }
.key-modal-warn { font-size: 13px; color: #d97706; margin: 0 0 16px; }
.key-modal-warn i { margin-right: 5px; }
.key-modal-box { display: flex; align-items: stretch; gap: 8px; background: var(--bg-soft, #f6f7f8); border: 1.5px solid var(--line);
  border-radius: 12px; padding: 10px 12px; }
.key-modal-box code { flex: 1; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13.5px; word-break: break-all;
  text-align: left; align-self: center; user-select: all; -webkit-user-select: all; }
.key-copy-btn { flex-shrink: 0; border: none; border-radius: 9px; background: #111; color: #fff; font-size: 12.5px; font-weight: 700;
  padding: 8px 14px; cursor: pointer; white-space: nowrap; align-self: center; }
.key-copy-btn:hover { opacity: .85; }
.key-modal-hint { font-size: 12px; color: var(--muted); margin: 12px 0 0; }
.key-modal-hint code { background: var(--bg-soft, #f6f7f8); padding: 2px 6px; border-radius: 5px; font-size: 11.5px; }
[data-theme="dark"] .key-modal-box, [data-theme="dark"] .key-modal-hint code { background: rgba(255,255,255,.06); }
[data-theme="dark"] .key-copy-btn { background: #eee; color: #111; }

/* ============ v14 用户中心：左侧导航布局 ============ */
.account-layout { display: grid; grid-template-columns: 230px 1fr; gap: 24px; align-items: start; }
.account-nav { position: sticky; top: 80px; background: var(--bg-panel); border: 1px solid var(--line); border-radius: 16px; padding: 16px 12px; display: flex; flex-direction: column; gap: 4px; }
.account-nav-user { display: flex; align-items: center; gap: 10px; padding: 6px 8px 14px; border-bottom: 1px dashed var(--line); margin-bottom: 8px; }
.account-avatar { width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(135deg, #111 0%, #444 100%); color: #fff; font-weight: 800; font-size: 17px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.account-nav-meta { min-width: 0; display: flex; flex-direction: column; }
.account-nav-meta strong { font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-nav-meta .user-email-badge { font-size: 11.5px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-nav-menu { display: flex; flex-direction: column; gap: 2px; }
.acc-nav-item { display: flex; align-items: center; gap: 10px; border: none; background: none; text-align: left; font-size: 14px; font-weight: 500; color: var(--text-2); padding: 10px 12px; border-radius: 10px; cursor: pointer; transition: background .15s, color .15s; width: 100%; }
.acc-nav-item i { width: 18px; text-align: center; font-size: 13px; color: var(--text-3); }
.acc-nav-item:hover { background: var(--bg-soft); color: var(--text-1); }
.acc-nav-item.active { background: var(--text-1); color: var(--bg); font-weight: 700; }
.acc-nav-item.active i { color: var(--bg); }
.acc-nav-logout { margin-top: 8px; border-top: 1px dashed var(--line); border-radius: 0 0 10px 10px; color: #dc2626; }
.acc-nav-logout i { color: #dc2626; }
.acc-nav-logout:hover { background: rgba(220,38,38,.08); color: #dc2626; }
.account-main { min-width: 0; }
.acc-sec { background: var(--bg-panel); border: 1px solid var(--line); border-radius: 16px; padding: 24px; }
.acc-sec-title { font-size: 19px; font-weight: 800; margin: 0 0 18px; }
.acc-sec-title i { margin-right: 8px; color: var(--text-3); font-size: 16px; }
.acc-sec-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
.acc-sec-head .acc-sec-title { margin: 0; }
.acc-pro-badge { font-size: 11px; font-weight: 700; background: linear-gradient(135deg, #fbbf24, #f59e0b); color: #fff; padding: 3px 8px; border-radius: 6px; vertical-align: 3px; margin-left: 6px; }

/* 账户总览 */
.acc-stat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.acc-stat { background: var(--bg-soft); border: 1px solid var(--line); border-radius: 12px; padding: 16px; text-align: center; }
.acc-stat-num { font-size: 19px; font-weight: 800; line-height: 1.3; }
.acc-stat-num em { font-style: normal; font-size: 13px; font-weight: 600; color: var(--text-3); }
.acc-stat-num.plan-free { color: var(--text-2); }
.acc-stat-num.plan-pro { color: #d97706; }
.acc-stat-num.plan-enterprise { color: var(--brand); }
.acc-stat-label { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.acc-quick { margin-top: 20px; }
.acc-quick h3 { font-size: 14px; font-weight: 700; margin: 0 0 10px; color: var(--text-2); }
.acc-quick-row { display: flex; gap: 10px; flex-wrap: wrap; }

/* 套餐对比卡片 */
.acc-plan-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 18px; }
.acc-plan-card { position: relative; border: 1.5px solid var(--line); border-radius: 14px; padding: 20px 18px; display: flex; flex-direction: column; gap: 10px; transition: border-color .15s, box-shadow .15s; }
.acc-plan-card h3 { font-size: 16px; font-weight: 800; margin: 0; }
.acc-plan-hot { border-color: #f59e0b; }
.acc-plan-selected { border-color: var(--text-1); box-shadow: 0 0 0 3px rgba(0,0,0,.08); }
.acc-plan-price { font-size: 26px; font-weight: 800; }
.acc-plan-price em { font-style: normal; font-size: 13px; font-weight: 600; color: var(--text-3); }
.acc-plan-card ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; flex: 1; }
.acc-plan-card li { font-size: 13px; color: var(--text-2); padding-left: 18px; position: relative; }
.acc-plan-card li::before { content: '✓'; position: absolute; left: 0; color: #16a34a; font-weight: 700; }
.acc-plan-tag { font-size: 12.5px; color: var(--text-3); text-align: center; padding: 9px 0; border: 1px dashed var(--line); border-radius: 10px; }
.acc-plan-buy { width: 100%; padding: 10px 0; border-radius: 10px; font-weight: 700; cursor: pointer; }
#plan-buy h3 { font-size: 15px; font-weight: 800; margin: 0 0 10px; }
#plan-buy { border: 1.5px solid var(--line); border-radius: 14px; padding: 18px; margin-bottom: 14px; display: flex; flex-direction: column; gap: 10px; }
#plan-buy[hidden] { display: none; }

/* 大字号金额展示 */
.pay-amount-hero { display: flex; align-items: baseline; gap: 8px; margin: 10px 0 14px; flex-wrap: wrap; }
.pay-amount-num { font-size: 38px; font-weight: 800; letter-spacing: -0.5px; line-height: 1; }
.pay-amount-unit { font-size: 16px; font-weight: 700; color: var(--text-3); }
#pay-copy-amt { align-self: center; }

/* Key 操作与 7 日用量迷你图 */
.key-actions { display: flex; gap: 12px; }
.key-usage-chart { margin-top: 10px; padding: 12px; background: var(--bg-soft); border-radius: 10px; }
.key-usage-chart[hidden] { display: none; }
.usage-bars { display: flex; align-items: flex-end; gap: 10px; justify-content: space-around; }
.usage-bar-col { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.usage-bar { width: 26px; background: linear-gradient(180deg, #4b5563, #17181a); border-radius: 4px 4px 0 0; min-height: 4px; }
.usage-bar-num { font-size: 11px; font-weight: 700; color: var(--text-2); }
.usage-bar-day { font-size: 10.5px; color: var(--text-3); }

/* 设置页卡片 */
.acc-set-card { border: 1px solid var(--line); border-radius: 14px; padding: 18px; margin-bottom: 14px; }
.acc-set-card h3 { font-size: 15px; font-weight: 800; margin: 0 0 12px; }
.acc-set-card h3 i { margin-right: 7px; color: var(--text-3); font-size: 13px; }
.acc-set-form { display: flex; gap: 10px; align-items: stretch; }
.acc-set-form .form-input { flex: 1; }
.acc-set-col { flex-direction: column; max-width: 380px; }
.acc-set-msg { font-size: 13px; margin: 10px 0 0; font-weight: 600; }
.acc-set-msg.msg-ok { color: #16a34a; }
.acc-set-msg.msg-err { color: #dc2626; }
.acc-set-danger { border-style: dashed; }

/* 暗色模式 */
[data-theme="dark"] .account-avatar { background: linear-gradient(135deg, #eee 0%, #999 100%); color: #111; }
[data-theme="dark"] .acc-nav-item.active { background: #eee; color: #111; }
[data-theme="dark"] .acc-nav-item.active i { color: #111; }
[data-theme="dark"] .acc-plan-selected { box-shadow: 0 0 0 3px rgba(255,255,255,.1); }
[data-theme="dark"] .usage-bar { background: linear-gradient(180deg, #9ca3af, #e5e7eb); }

/* 移动端：侧边导航变横向 Tab */
@media (max-width: 860px) {
  .account-layout { grid-template-columns: 1fr; }
  .account-nav { position: static; flex-direction: column; padding: 12px; }
  .account-nav-menu { flex-direction: row; overflow-x: auto; gap: 4px; padding-bottom: 2px; -webkit-overflow-scrolling: touch; }
  .acc-nav-item { white-space: nowrap; width: auto; flex-shrink: 0; padding: 9px 12px; font-size: 13px; }
  .acc-nav-logout { margin-top: 6px; border-top: none; }
  .acc-stat-grid { grid-template-columns: repeat(2, 1fr); }
  .acc-plan-grid { grid-template-columns: 1fr; }
  .acc-sec { padding: 18px 14px; }
  .pay-amount-num { font-size: 30px; }
}

/* ============ v15 管理后台 2.0：左侧导航大厂风格（v8.4 精修） ============ */
.adm-shell { display: flex; min-height: 100vh; background: #f5f6f8; }
/* 侧边栏：深色 color-scheme + 细滚动条（修复深底白滚动条） */
.adm-sidebar { width: 224px; flex-shrink: 0; background: linear-gradient(180deg, #101627 0%, #0d1220 100%); color: #cbd2dd; display: flex; flex-direction: column; position: sticky; top: 0; height: 100vh; overflow-y: auto; z-index: 50; color-scheme: dark; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.14) transparent; }
.adm-sidebar::-webkit-scrollbar { width: 6px; }
.adm-sidebar::-webkit-scrollbar-track { background: transparent; }
.adm-sidebar::-webkit-scrollbar-thumb { background: rgba(255,255,255,.14); border-radius: 6px; }
.adm-sidebar::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.26); }
/* 品牌区：渐变品牌字 + 版本徽标 */
.adm-brand { display: flex; align-items: center; gap: 11px; padding: 20px 18px 16px; border-bottom: 1px solid rgba(255,255,255,.07); background: linear-gradient(135deg, rgba(10,158,95,.14), rgba(34,197,94,.08) 60%, transparent); }
.adm-brand img { border-radius: 9px; box-shadow: 0 2px 10px rgba(10,158,95,.35); }
.adm-brand-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.adm-brand-name { font-weight: 800; font-size: 15.5px; letter-spacing: .5px; background: linear-gradient(90deg, #fff 30%, #9ec5ff); -webkit-background-clip: text; background-clip: text; color: transparent; line-height: 1.2; }
.adm-brand-sub { font-size: 10.5px; color: #5f6a80; letter-spacing: 1px; font-weight: 600; display: flex; align-items: center; gap: 6px; }
.adm-brand-sub em { font-style: normal; font-size: 9.5px; padding: 1px 6px; border-radius: 999px; background: rgba(10,158,95,.22); color: #7fa8f5; border: 1px solid rgba(10,158,95,.35); letter-spacing: .5px; }
.adm-nav { flex: 1; padding: 10px 12px 24px; }
.adm-nav-group { display: flex; align-items: center; gap: 8px; font-size: 10.5px; color: #5c6579; letter-spacing: 1.8px; padding: 18px 10px 7px; user-select: none; font-weight: 700; }
.adm-nav-group::after { content: ''; flex: 1; height: 1px; background: rgba(255,255,255,.05); }
.adm-nav-item { position: relative; display: flex; align-items: center; gap: 10px; width: 100%; padding: 8.5px 12px; margin: 1px 0; border: none; background: none; color: #aab2c2; font-size: 13.5px; border-radius: 8px; cursor: pointer; text-align: left; transition: background .15s, color .15s; }
.adm-nav-item i { width: 18px; text-align: center; font-size: 13px; color: #767f92; transition: color .15s; }
.adm-nav-item:hover { background: rgba(255,255,255,.06); color: #fff; }
.adm-nav-item:hover i { color: #fff; }
.adm-nav-item.active { background: linear-gradient(90deg, rgba(10,158,95,.28), rgba(10,158,95,.12)); color: #fff; font-weight: 600; }
.adm-nav-item.active i { color: #7fa8f5; }
.adm-nav-item.active::before { content: ''; position: absolute; left: -12px; top: 6px; bottom: 6px; width: 3px; border-radius: 0 3px 3px 0; background: var(--brand, #0a9e5f); }
.adm-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.adm-topbar { display: flex; align-items: center; justify-content: space-between; background: rgba(255,255,255,.92); backdrop-filter: blur(8px); border-bottom: 1px solid #e6e8ec; padding: 0 22px; height: 56px; position: sticky; top: 0; z-index: 40; }
.adm-topbar-left { display: flex; align-items: center; gap: 12px; min-width: 0; }
.adm-crumb { display: flex; align-items: center; gap: 8px; min-width: 0; }
.adm-crumb-root { font-size: 13px; color: #8a92a5; flex-shrink: 0; }
.adm-crumb > i { font-size: 11px; color: #c2c8d4; flex-shrink: 0; }
.adm-page-title { font-size: 16.5px; font-weight: 700; margin: 0; color: #1a1d24; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-menu-toggle { display: none; border: none; background: none; font-size: 18px; cursor: pointer; color: #444; padding: 6px; }
.adm-topbar-right { display: flex; align-items: center; gap: 6px; }
.adm-env-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; color: #16a34a; background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 999px; padding: 4px 11px; margin-right: 6px; }
.adm-env-badge i { font-size: 7px; }
.adm-env-badge.dev { color: #d97706; background: #fffbeb; border-color: #fde68a; }
.adm-top-link { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; font-size: 13px; color: #52596b; text-decoration: none; background: none; border: none; border-radius: 8px; cursor: pointer; }
.adm-top-link:hover { background: #f0f2f5; color: #1a1d24; }
.adm-logout:hover { color: #dc2626; }
/* margin:0 auto 修复宽屏下内容挤左、右侧大片空白的问题 */
.adm-body { padding: 20px 22px 40px; max-width: 1280px; width: 100%; margin: 0 auto; box-sizing: border-box; }
/* ============ v8.4 模型设置（AI 渠道主备配置） ============ */
.aim-hero { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 18px; }
.aim-hero-item { display: flex; flex-direction: column; gap: 6px; background: linear-gradient(135deg, #0f1522, #16203a); border: 1px solid rgba(10,158,95,.25); border-radius: 12px; padding: 14px 16px; color-scheme: dark; }
.aim-hero-label { font-size: 11.5px; color: #7d879c; letter-spacing: 1px; font-weight: 600; }
.aim-hero-val { font-size: 14px; font-weight: 700; color: #eef2f8; line-height: 1.5; word-break: break-all; }
.aim-head-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 4px 0 12px; }
.aim-head-row h3 { margin: 0; font-size: 15px; }
.aim-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; margin-bottom: 16px; }
.aim-card { background: var(--bg-panel, #fff); border: 1px solid var(--line, #e9ebef); border-radius: 12px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; transition: box-shadow .15s, border-color .15s; }
.aim-card:hover { box-shadow: 0 4px 18px rgba(15,21,34,.07); }
.aim-card.primary { border-color: rgba(10,158,95,.45); box-shadow: 0 0 0 1px rgba(10,158,95,.18), 0 4px 16px rgba(10,158,95,.08); }
.aim-card.backup { border-color: rgba(245,158,11,.35); }
.aim-card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.aim-role { font-size: 10.5px; font-weight: 800; letter-spacing: 1px; padding: 2px 9px; border-radius: 999px; flex-shrink: 0; }
.aim-role-primary { background: var(--brand); color: #fff; }
.aim-role-backup { background: #fef3c7; color: #b45309; border: 1px solid #fde68a; }
.aim-role-idle { background: #f1f3f6; color: #8a92a5; border: 1px solid #e6e8ec; }
.aim-name { font-size: 14.5px; color: var(--text, #1a1d24); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.aim-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; background: #f1f3f6; color: #6b7484; }
.aim-badge.aim-ok { background: #f0fdf4; color: #16a34a; border: 1px solid #bbf7d0; }
.aim-badge.aim-warn { background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; }
.aim-kv { display: flex; align-items: baseline; gap: 8px; font-size: 12.5px; }
.aim-kv > span { flex-shrink: 0; width: 32px; color: var(--text-3, #9aa1b1); }
.aim-kv code { font-size: 12px; color: var(--text-2, #52596b); background: var(--bg, #f5f6f8); border-radius: 5px; padding: 2px 7px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.aim-caps { display: flex; gap: 6px; flex-wrap: wrap; }
.aim-cap { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 999px; background: var(--bg, #f5f6f8); color: var(--text-2, #6b7484); border: 1px solid var(--line, #e6e8ec); }
.aim-cap-on { background: rgba(13,138,86,.08); color: var(--brand); border-color: rgba(13,138,86,.25); }
.aim-cap-dim { opacity: .65; }
.aim-test { min-height: 0; font-size: 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.aim-test:empty { display: none; }
.aim-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 2px; padding-top: 10px; border-top: 1px dashed var(--line, #eceef2); }
.aim-del:hover { border-color: #dc2626 !important; color: #dc2626 !important; }
.btn-ghost { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; padding: 6px 14px; border-radius: 8px; border: 1px solid var(--line, #e0e3e9); background: var(--bg-panel, #fff); color: var(--text-2, #52596b); cursor: pointer; transition: all .15s; }
.btn-ghost:hover { border-color: var(--brand, #0a9e5f); color: var(--brand, #0a9e5f); }
.aim-form { background: var(--bg-panel, #fff); border: 1px solid var(--line, #e9ebef); border-radius: 12px; padding: 16px 18px; margin-bottom: 16px; }
.aim-form h4 { margin: 0 0 12px; font-size: 14.5px; }
.aim-form-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; margin-bottom: 14px; }
.aim-form-grid label { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; color: var(--text-2, #52596b); font-weight: 600; }
@media (max-width: 900px) { .aim-hero { grid-template-columns: 1fr; } }
/* 仪表盘 */
.adm-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin-bottom: 18px; }
.adm-stat-card { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid #e9ebef; border-radius: 12px; padding: 14px 16px; }
.adm-stat-ico { width: 40px; height: 40px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 16px; flex-shrink: 0; }
.adm-stat-num { font-size: 20px; font-weight: 800; color: #171a21; line-height: 1.1; }
.adm-stat-label { font-size: 12px; color: #7a8194; margin-top: 2px; }
.adm-dash-cols { display: grid; grid-template-columns: 1.4fr 1fr; gap: 16px; }
.adm-dash-card { background: #fff; border: 1px solid #e9ebef; border-radius: 12px; padding: 16px 18px; }
.adm-dash-list { list-style: none; margin: 0; padding: 0; }
.adm-dash-list li { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px dashed #eceef2; font-size: 13px; }
.adm-dash-list li:last-child { border-bottom: none; }
.adm-dash-list a { color: #333c4e; text-decoration: none; }
.adm-dash-list a:hover { color: var(--brand, #0a9e5f); }
.adm-dash-time { color: #9aa1b1; flex-shrink: 0; font-size: 12px; }
.adm-dash-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.adm-dash-sys .adm-sys-row { display: flex; justify-content: space-between; font-size: 13px; padding: 7px 0; border-bottom: 1px dashed #eceef2; }
.adm-dash-sys .adm-sys-row:last-child { border-bottom: none; }
/* 移动端：侧栏抽屉化 */
@media (max-width: 900px) {
  .adm-sidebar { position: fixed; left: 0; top: 0; transform: translateX(-100%); transition: transform .22s ease; box-shadow: 4px 0 24px rgba(0,0,0,.25); }
  .adm-sidebar.open { transform: translateX(0); }
  .adm-menu-toggle { display: block; }
  .adm-body { padding: 14px 12px 32px; }
  .adm-dash-cols { grid-template-columns: 1fr; }
}

/* ============ v16 链上动向页 ============ */
.oc-page { max-width: 860px; margin: 0 auto; }
.oc-sub { color: var(--text-3); font-size: 13.5px; margin: 6px 0 0; }
.oc-type-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0 16px; }
.oc-type-tab { font-size: 12.5px; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--line); color: var(--text-2); background: var(--bg-panel); }
.oc-type-tab.active { background: var(--brand); border-color: var(--brand); color: #fff; }
.oc-timeline { display: flex; flex-direction: column; gap: 12px; }
.oc-event { background: var(--bg-panel); border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; }
.oc-event-top { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.oc-badge { font-size: 11.5px; font-weight: 700; padding: 2px 9px; border-radius: 999px; }
.oc-in { background: #fee2e2; color: #b91c1c; }
.oc-out { background: #dcfce7; color: #15803d; }
.oc-tx { background: #e0e7ff; color: #4338ca; }
.oc-mint { background: #dbeafe; color: #1d4ed8; }
.oc-burn { background: #fef3c7; color: #b45309; }
.oc-price { background: #f3e8ff; color: #7e22ce; }
.oc-chain { font-size: 12px; color: var(--text-3); font-weight: 600; }
.oc-time { margin-left: auto; font-size: 12px; color: var(--text-3); }
.oc-event-main { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.oc-amount { font-size: 19px; font-weight: 800; color: var(--text-1); font-variant-numeric: tabular-nums; }
.oc-usd { font-size: 13.5px; color: var(--text-2); font-weight: 600; }
.oc-event-flow { display: flex; align-items: center; gap: 10px; margin-top: 8px; font-size: 13px; color: var(--text-2); flex-wrap: wrap; }
.oc-addr { background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 3px 10px; font-weight: 600; }
.oc-addr.oc-known { border-color: var(--brand); color: var(--brand); }
.oc-arrow { color: var(--text-3); font-size: 12px; }
.oc-event-links { display: flex; gap: 14px; margin-top: 10px; font-size: 12.5px; }
.oc-event-links a { color: var(--brand); font-weight: 600; }
[data-theme="dark"] .oc-in { background: #451a1a; color: #fca5a5; }
[data-theme="dark"] .oc-out { background: #14352a; color: #86efac; }
[data-theme="dark"] .oc-tx { background: #1e1b4b; color: #a5b4fc; }
[data-theme="dark"] .oc-mint { background: #172554; color: #93c5fd; }
[data-theme="dark"] .oc-burn { background: #451a03; color: #fcd34d; }
[data-theme="dark"] .oc-price { background: #3b0764; color: #d8b4fe; }

/* ===== v17: Gas 异动标签 + 用户链上监控 + 命中记录 ===== */
.oc-gas { background: #ffedd5; color: #c2410c; }
[data-theme="dark"] .oc-gas { background: #431407; color: #fdba74; }
.watch-chain-tag { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 11px; font-weight: 700; margin-right: 6px; background: #e2e8f0; color: #334155; }
.wc-btc { background: #fef3c7; color: #b45309; }
.wc-eth { background: #e0e7ff; color: #4338ca; }
.wc-tron { background: #fee2e2; color: #b91c1c; }
.wc-sol { background: #ede9fe; color: #6d28d9; }
.wc-bsc { background: #fef9c3; color: #a16207; }
[data-theme="dark"] .watch-chain-tag { background: #334155; color: #cbd5e1; }
[data-theme="dark"] .wc-btc { background: #451a03; color: #fcd34d; }
[data-theme="dark"] .wc-eth { background: #1e1b4b; color: #a5b4fc; }
[data-theme="dark"] .wc-tron { background: #450a0a; color: #fca5a5; }
[data-theme="dark"] .wc-sol { background: #2e1065; color: #c4b5fd; }
[data-theme="dark"] .wc-bsc { background: #422006; color: #fde047; }
.watch-note { font-size: 12px; color: var(--text-secondary); margin-left: 6px; }
.watch-usd { font-style: normal; color: var(--text-secondary); font-size: 12px; }
.watch-hits-title { margin: 22px 0 10px; font-size: 15px; }
.watch-wh-opt { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-secondary); margin: 4px 0; }
.dir-in { color: #16a34a; font-weight: 600; }
.dir-out { color: #dc2626; font-weight: 600; }

/* ===== v17 图片横幅 ===== */
.oc-hero { background-size: cover; background-position: center right; border-radius: 16px; padding: 42px 32px; margin-bottom: 18px; color: #fff; }
.oc-hero h1 { font-size: 28px; font-weight: 800; margin: 0 0 10px; color: #fff; display: flex; align-items: center; gap: 10px; }
.oc-hero .oc-sub { color: rgba(255,255,255,.82); margin: 0; max-width: 640px; line-height: 1.7; font-size: 14px; }
.page-banner { background-size: cover; background-position: center right; border-radius: 16px; padding: 38px 32px; margin-bottom: 16px; color: #fff; }
.page-banner h2 { font-size: 24px; font-weight: 800; margin: 0 0 8px; color: #fff; }
.page-banner h2 i { color: var(--brand); margin-right: 8px; }
.page-banner p { color: rgba(255,255,255,.82); margin: 0; max-width: 620px; line-height: 1.7; font-size: 14px; }
#open-hero { padding: 56px 32px 48px; }
#open-hero h1 { color: #fff; }
#open-hero p { color: rgba(255,255,255,.85); }
@media (max-width: 640px) {
  .oc-hero { padding: 28px 18px; }
  .oc-hero h1 { font-size: 22px; }
  .page-banner { padding: 26px 18px; }
  .page-banner h2 { font-size: 20px; }
  #open-hero { padding: 36px 18px 30px; }
}

/* ===== v18 影响标签 + 链上地址复制 ===== */
.tag-impact { font-weight: 600; }
.oc-addr { display: inline-flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.oc-addr-hash { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; color: var(--text-3); background: var(--bg-2); padding: 1px 6px; border-radius: 5px; }
.oc-copy { border: none; background: none; cursor: pointer; color: var(--text-3); font-size: 12px; padding: 2px 4px; border-radius: 4px; line-height: 1; }
.oc-copy:hover { color: var(--brand); background: var(--bg-2); }
.oc-copy.copied { color: #16a34a; }
.oc-jump { color: var(--text-3); font-size: 11px; padding: 2px 4px; border-radius: 4px; }
.oc-jump:hover { color: var(--brand); background: var(--bg-2); }
.oc-tx-cell { display: inline-flex; align-items: center; gap: 4px; }
html.dark .oc-addr-hash { background: rgba(255,255,255,.06); }
html.dark .oc-copy:hover, html.dark .oc-jump:hover { background: rgba(255,255,255,.08); }

/* ============ v7.5 本周大事件侧栏（对标律动周历） ============ */
/* v8.3.3 对齐修复：head 加 gap 防标题与月份挤压换行；月份 nowrap + 预留右侧拖拽手柄空间（手柄绝对定位在 widget 右上角，悬停显形时曾遮住月份） */
.week-ev-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; padding-right: 26px; }
.week-ev-head .widget-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.week-ev-month { font-size: 12.5px; font-weight: 700; color: var(--text-3); font-variant-numeric: tabular-nums; white-space: nowrap; flex-shrink: 0; }
.week-strip { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; padding-bottom: 12px; border-bottom: 1px solid var(--line); margin-bottom: 10px; }
.week-day { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 0 4px; border-radius: 8px; }
.week-day.today { background: var(--brand); }
.week-day.today .week-wd, .week-day.today .week-dn { color: #fff; }
.week-wd { font-size: 10.5px; font-weight: 600; color: var(--text-3); letter-spacing: .02em; }
.week-dn { font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--text-1); }
.week-dot { width: 4px; height: 4px; border-radius: 50%; background: transparent; }
.week-dot.on { background: var(--hot); }
.week-day.today .week-dot.on { background: #fff; }
.week-ev-list { display: flex; flex-direction: column; }
.week-ev-item { display: flex; gap: 9px; padding: 7px 0; align-items: flex-start; cursor: default; }
.week-ev-item + .week-ev-item { border-top: 1px solid var(--line); }
.week-ev-marker { width: 8px; height: 8px; border-radius: 2px; background: var(--line-strong); margin-top: 6px; flex-shrink: 0; }
.week-ev-item.hot .week-ev-marker { background: var(--hot); }
.week-ev-item.hot .week-ev-title { color: var(--hot); font-weight: 700; }
.week-ev-body { min-width: 0; }
.week-ev-title { display: block; font-size: 13.5px; font-weight: 600; line-height: 1.45; }
.week-ev-meta { display: block; font-size: 11.5px; color: var(--text-3); margin-top: 2px; font-variant-numeric: tabular-nums; }
.week-ev-meta i { font-size: 10px; margin-right: 1px; }
.week-ev-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); font-size: 11.5px; color: var(--text-3); }
.week-ev-foot a { color: var(--brand); font-weight: 600; }

/* ============ v7.5 快讯页双栏布局 + AI 雷达横幅 ============ */
.nf-page-grid { display: grid; grid-template-columns: minmax(0, 720px) 320px; gap: 32px; justify-content: center; }
.nf-page-side { display: flex; flex-direction: column; gap: 20px; }
.nf-page-grid .nf-page { max-width: none; margin: 0; }
@media (max-width: 1024px) { .nf-page-grid { grid-template-columns: minmax(0, 1fr); } .nf-page-side { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; } }
@media (max-width: 768px) { .nf-page-side { grid-template-columns: 1fr; } }
.ai-radar-banner {
  border: 1px solid var(--line); border-radius: 12px; margin-bottom: 18px; overflow: hidden;
  background: linear-gradient(120deg, rgba(10,158,95,.07), rgba(10,158,95,.02) 55%, transparent);
}
.ai-radar-brand { display: flex; gap: 12px; align-items: center; padding: 14px 18px; }
.ai-radar-brand > i { font-size: 22px; color: var(--brand); }
.ai-radar-brand strong { display: block; font-size: 15px; font-weight: 800; }
.ai-radar-brand span { display: block; font-size: 12.5px; color: var(--text-3); margin-top: 2px; }
.ai-radar-daily {
  display: flex; align-items: center; gap: 9px; padding: 10px 18px;
  border-top: 1px dashed var(--line); font-size: 13.5px; transition: background .15s;
}
.ai-radar-daily:hover { background: var(--bg-soft); }
.ai-radar-daily > i:first-child { color: var(--brand); font-size: 13px; }
.ai-daily-tag { flex-shrink: 0; font-size: 11px; font-weight: 800; color: var(--brand); border: 1px solid currentColor; border-radius: 4px; padding: 1px 6px; }
.ai-daily-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
.ai-radar-daily > i:last-child { color: var(--text-3); font-size: 11px; }

/* ===== v7.6 导航「更多」下拉 + AI 一级栏目 ===== */
.nav-more-menu a:hover{background:var(--bg-soft);color:var(--text-1)}
.nav-more-menu a:hover i{color:var(--brand)}
.nav-more-btn:hover{color:var(--text-1);background:var(--bg-soft)}
.main-nav a:hover{background-color:var(--bg-soft)}
/* v12.33：导航去渐变——预言家/AI 与其它导航项统一墨色 + 品牌下划线 */
[data-theme=dark] .nav-more-menu{border-color:var(--line)}

/* ===== v7.6 首页 AI 雷达侧栏组件 ===== */
.ai-radar-title{color:var(--text-1)}
.ai-radar-title i{color:var(--brand)}
.ai-radar-item{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:baseline;padding:8px 0;border-bottom:1px solid var(--line)}
.ai-radar-item:last-child{border-bottom:none}
.ai-radar-dot{width:6px;height:6px;border-radius:50%;background:var(--brand);align-self:center}
.ai-radar-item-title{font-size:13px;color:var(--text-1);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ai-radar-item:hover .ai-radar-item-title{color:var(--brand)}
.ai-radar-time{font-size:11px;color:var(--text-3);white-space:nowrap}

/* ===== v7.6 回到顶部按钮 ===== */
#back-to-top{position:fixed;right:22px;bottom:26px;width:42px;height:42px;border-radius:50%;background:var(--bg-panel);border:1px solid var(--line-strong);box-shadow:var(--shadow-lg);color:var(--text-2);font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(8px);transition:all .2s;z-index:80}
#back-to-top.show{opacity:1;visibility:visible;transform:translateY(0)}
#back-to-top:hover{color:var(--brand);border-color:var(--brand)}
@media (max-width:768px){#back-to-top{right:14px;bottom:18px}}

/* ===== v7.6 本周大事件：影响回测展开卡片 ===== */
.week-ev-item.expandable{cursor:pointer;border-radius:8px;transition:background .15s}
.week-ev-item.expandable:hover{background:var(--bg-soft)}
.week-ev-item.expandable:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.wei-caret{font-size:9px;color:var(--text-3);margin-left:4px;transition:transform .18s;vertical-align:middle}
.week-ev-item.open .wei-caret{transform:rotate(180deg)}
.week-ev-impact{margin-top:8px;padding:10px 12px;background:linear-gradient(135deg,rgba(10,158,95,.05),rgba(3,205,118,.05));border:1px solid rgba(10,158,95,.15);border-radius:8px;animation:weiIn .18s ease}
@keyframes weiIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.wei-note{font-size:12px;color:var(--text-2);line-height:1.6;margin-bottom:8px}
.wei-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.wei-stat{display:flex;flex-direction:column;gap:2px;padding:8px;background:var(--bg-panel);border-radius:6px;border:1px solid var(--line)}
.wei-num{font-size:16px;font-weight:800;color:var(--brand);font-variant-numeric:tabular-nums}
.wei-label{font-size:10px;color:var(--text-3)}
.wei-src{font-size:10px;color:var(--text-3);display:flex;align-items:center;gap:4px}
.wei-src::before{content:'★';color:#f5a623;font-size:9px}

/* ===== v8.3.3 本周大事件：公布值 + 已公布状态 ===== */
.week-ev-actual{color:var(--brand);font-weight:800}
.week-ev-item.hot .week-ev-actual{color:var(--hot)}
.week-ev-fc{color:var(--text-3)}
.week-ev-done{display:inline-block;font-size:10px;font-weight:600;color:var(--text-3);background:var(--bg-soft);border:1px solid var(--line);border-radius:4px;padding:0 5px;margin-left:6px;vertical-align:1px;line-height:16px}
.week-ev-item.past .week-ev-title{color:var(--text-2)}
.week-ev-item.past.hot .week-ev-title{color:var(--text-2);font-weight:600}
.week-ev-item.past .week-ev-marker{background:var(--line-strong)}
/* 展开卡片位于文档流内、防溢出遮挡（min-width:0 已在 body，卡片自身再兜底） */
.week-ev-impact{position:relative;overflow:hidden}

/* ===== v7.6 详情页相关 AI 快讯推荐位 ===== */
.related-ai{border:1px solid rgba(3,205,118,.18);border-radius:10px;padding:16px;background:linear-gradient(135deg,rgba(10,158,95,.03),rgba(3,205,118,.03))}
.related-ai-brand{font-size:11px;font-weight:700;color:var(--brand);background:rgba(13,138,86,.09);padding:2px 8px;border-radius:20px;margin-left:8px;vertical-align:middle}
.related-ai-more{display:block;margin-top:12px;font-size:13px;color:var(--brand);font-weight:600}
.related-ai-more:hover{text-decoration:underline}

/* ===== v7.6 侧栏拖拽排序 ===== */
.side-widget{position:relative}
.widget-drag-handle{position:absolute;top:14px;right:12px;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-3);cursor:grab;opacity:0;transition:opacity .15s;border-radius:6px;font-size:12px}
.side-widget:hover .widget-drag-handle{opacity:.7}
.widget-drag-handle:hover{opacity:1!important;background:var(--bg-soft);color:var(--text-1)}
.widget-drag-handle:active{cursor:grabbing}
.side-widget.dragging{opacity:.45;outline:2px dashed var(--brand);outline-offset:2px}
#sidebar-reset{margin-top:4px;padding:8px;font-size:12px;color:var(--text-3);background:none;border:1px dashed var(--line-strong);border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;font-family:inherit}
#sidebar-reset:hover{color:var(--brand);border-color:var(--brand)}
@media (max-width:1024px){.widget-drag-handle,#sidebar-reset{display:none}}

/* ============ v7.8 预言家（/predict + 首页 mini 组件） ============ */
.nav-predict{display:inline-flex;align-items:center;gap:3px;font-weight:700;white-space:nowrap}
.nav-predict-dot{width:6px;height:6px;border-radius:50%;background:var(--brand);transform:translateY(-6px);animation:predDot 2s ease-in-out infinite}
@keyframes predDot{0%,100%{opacity:1}50%{opacity:.35}}
.nav-signals{display:inline-flex;align-items:center;gap:2px}
.nav-signals-dot{width:6px;height:6px;border-radius:50%;background:var(--brand,#0ecb81);transform:translateY(-6px);animation:predDot 2.4s ease-in-out infinite}
/* v8.2 预言家页头：去蓝紫渐变，回归全站黑白极简风 */
.predict-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 22px;margin-bottom:18px}
.predict-hero-main{min-width:0}
.predict-title{font-size:22px;font-weight:800;margin:0 0 4px;display:flex;align-items:center;gap:9px;color:var(--text-1)}
.predict-title i{color:#f5a623;font-size:18px}
.predict-sub{margin:0;font-size:13px;color:var(--text-3);line-height:1.6}
.predict-hero-stats{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}
.phs-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--text-2);background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;padding:4px 12px}
.phs-chip b{font-weight:800;color:var(--text-1)}
.phs-chip i{color:#f5a623;font-size:11px}
.predict-hero-cta{display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--text-1);color:var(--bg);border-radius:12px;padding:12px 22px;font-size:14.5px;font-weight:800;text-decoration:none;transition:opacity .15s;text-align:center}
.predict-hero-cta:hover{opacity:.85}
.predict-hero-cta small{font-size:11px;font-weight:600;opacity:.75}
.predict-hero-cta i{margin-right:5px;color:#f5a623}
.predict-mystats{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pms-item{background:var(--bg-soft);border:1px solid var(--border);border-radius:9px;padding:6px 12px;font-size:12.5px;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}
.pms-item b{font-size:15px;font-weight:800;color:var(--text-1)}
.pms-item i{color:#f5a623;font-size:12px}
.predict-grid{display:grid;grid-template-columns:1fr 320px;gap:22px;align-items:start}
.predict-side,.mkd-side{display:flex;flex-direction:column;gap:18px;min-width:0}
.predict-block{margin-bottom:24px}
.predict-count{font-size:13px;color:var(--brand);font-weight:600}
.predict-rounds{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.predict-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px;transition:box-shadow .2s}
.predict-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}
.predict-card.has-bet{border-color:var(--brand)}
.pc-head{display:flex;justify-content:space-between;align-items:center}
.pc-sym{display:inline-flex;align-items:center;gap:7px;font-weight:800;font-size:17px}
.pc-sym em{font-style:normal;font-weight:400;font-size:12px;color:var(--text-3)}
.pc-chg{font-weight:700;font-size:14px}
.pc-prices{display:flex;gap:14px;font-size:12.5px;color:var(--text-2);flex-wrap:wrap}
.pc-prices b{color:var(--text-1);font-size:13.5px}
.pc-crowd{display:flex;flex-direction:column;gap:4px}
.pc-crowd-bar{height:6px;border-radius:3px;background:var(--down,#f0442e);overflow:hidden;display:block;position:relative;opacity:.85}
.pc-crowd-bar>span{display:block;height:100%;background:var(--up,#16a34a);border-radius:3px 0 0 3px}
.pc-crowd-txt{font-size:11.5px;color:var(--text-3)}
.pc-actions{display:flex;gap:10px}
.pc-btn{flex:1;padding:9px 0;border-radius:8px;border:none;font-size:14px;font-weight:700;cursor:pointer;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:transform .12s,opacity .2s}
.pc-btn:hover{transform:translateY(-1px)}
.pc-btn:disabled{opacity:.5;cursor:not-allowed}
.pc-btn.up{background:#16a34a}
.pc-btn.down{background:#f0442e}
.pc-mine{font-size:13px;font-weight:600;padding:8px 10px;border-radius:8px;background:var(--bg-2,rgba(10,158,95,.06));color:var(--brand)}
.pc-mine.up i{color:#16a34a}.pc-mine.down i{color:#f0442e}
.pc-locked{font-size:13px;color:var(--text-3);padding:8px 10px;border-radius:8px;background:var(--bg-2,rgba(0,0,0,.04))}
.predict-rounds-past{display:flex;flex-direction:column;gap:0}
.py-row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px solid var(--border);font-size:13.5px}
.py-row:last-child{border-bottom:none}
.py-sym{font-weight:700;min-width:44px}
.py-res{font-weight:700;min-width:90px}
.py-price{color:var(--text-3);font-size:12.5px;flex:1}
.py-mine{font-size:12px;font-weight:700;padding:2px 8px;border-radius:8px}
.py-mine.won{background:rgba(22,163,74,.12);color:#16a34a}
.py-mine.lost{background:rgba(240,68,46,.1);color:#f0442e}
.predict-lb{display:flex;flex-direction:column}
.plb-row{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid var(--border);font-size:13.5px}
.plb-row:last-child{border-bottom:none}
.plb-rank{min-width:22px;height:22px;border-radius:50%;background:var(--bg-2,rgba(0,0,0,.05));display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--text-2)}
.plb-rank.r1{background:#f5a623;color:#fff}.plb-rank.r2{background:#9ca3af;color:#fff}.plb-rank.r3{background:#c47f42;color:#fff}
.plb-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plb-streak{font-size:11px;color:#f0442e;font-weight:700}
.plb-pts{font-weight:800;color:var(--brand)}
.predict-rules{margin:0;padding-left:18px;font-size:13px;color:var(--text-2);line-height:2}
.predict-history{display:flex;flex-direction:column}
.ph-row{display:flex;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px solid var(--border);font-size:13px}
.ph-row:last-child{border-bottom:none}
.ph-date{color:var(--text-3);min-width:84px}
.ph-sym{font-weight:700;min-width:40px}
.ph-dir{font-weight:600;min-width:44px}
#predict-toast{position:fixed;left:50%;bottom:70px;transform:translate(-50%,20px);background:#222;color:#fff;padding:10px 20px;border-radius:10px;font-size:14px;opacity:0;pointer-events:none;transition:all .25s;z-index:999;max-width:86vw}
#predict-toast.show{opacity:1;transform:translate(-50%,0)}
#predict-toast.ok{background:#16a34a}
#predict-toast.err{background:#d33}
/* 首页 mini 组件 */
.predict-widget-title{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(90deg,#f5a623,#f0442e);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;font-weight:800}
.predict-widget-title i{-webkit-text-fill-color:#f5a623}
.predict-mini{display:flex;flex-direction:column;gap:2px}
.pmini-row{display:flex;align-items:center;gap:8px;padding:7px 2px;border-bottom:1px solid var(--border);font-size:13px;color:var(--text-1)}
.pmini-row:hover{color:var(--brand)}
.pmini-sym{font-weight:800;min-width:38px}
.pmini-bar{flex:1;height:5px;border-radius:3px;background:rgba(240,68,46,.7);overflow:hidden}
.pmini-bar-up{display:block;height:100%;background:#16a34a}
.pmini-pct{font-size:11.5px;color:var(--text-3);min-width:58px}
.pmini-chg{font-size:12px;font-weight:700}
.pmini-mine{font-size:10.5px;padding:1px 6px;border-radius:7px;background:rgba(10,158,95,.1);color:var(--brand);font-weight:700}
.pmini-cta{display:block;text-align:center;margin-top:9px;padding:8px 0;border-radius:8px;background:linear-gradient(90deg,#f5a623,#f0442e);color:#fff;font-size:13px;font-weight:700}
.pmini-cta:hover{opacity:.9;color:#fff}
@media (max-width:900px){.predict-grid{grid-template-columns:minmax(0,1fr)}.predict-rounds{grid-template-columns:1fr}.predict-hero{padding:16px 16px}.predict-title{font-size:20px}}

/* v7.9 导航响应式收纳（与 CRITICAL_CSS 镜像） */
.nav-menu-md{display:none!important}
@media (max-width:1150px){.main-nav a{padding:8px 8px;font-size:14px}.header-inner{gap:14px}.search-box{width:150px}}
@media (max-width:1080px){.nav-md-hide{display:none!important}.nav-menu-md{display:flex!important}.search-box{width:140px}#bookmarks-link{display:none}}
@media (max-width:900px){.main-nav a{padding:7px 6px;font-size:13.5px}.search-box{width:110px}.header-actions{gap:6px}}

/* v7.9 事件市场（Polymarket 式） */
.pms-claim{border:none;background:var(--text-1);color:var(--bg);padding:7px 14px;border-radius:9px;font-size:13px;font-weight:700;cursor:pointer;transition:opacity .15s}
.pms-claim:hover{opacity:.85}
.pms-claim:disabled{opacity:.55;cursor:default}
.predict-tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.ptab{border:1px solid var(--border);background:var(--card);color:var(--text-2);padding:9px 18px;border-radius:22px;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:7px}
.ptab:hover{color:var(--brand);border-color:var(--brand)}
.ptab.active{background:var(--brand);border-color:var(--brand);color:#fff}
.predict-hint{font-size:12.5px;color:var(--text-3)}
/* v8.2 市场卡：桌面双列紧凑网格（对标 Polymarket） */
.pm-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.pm-list-past{display:flex;flex-direction:column;gap:0}
.pm-card{border:1px solid var(--border);border-radius:12px;padding:13px 14px;background:var(--card);display:flex;flex-direction:column;transition:box-shadow .15s}
.pm-card:hover{box-shadow:0 3px 14px rgba(0,0,0,.07)}
.pm-q{font-size:13.5px;font-weight:700;color:var(--text-1);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 判定标准默认折叠：<details> 一行式 */
.pm-rules{margin-top:8px;font-size:12px}
.pm-rules summary{cursor:pointer;color:var(--text-3);list-style:none;display:inline-flex;align-items:center;gap:5px;user-select:none}
.pm-rules summary::-webkit-details-marker{display:none}
.pm-rules summary:hover{color:var(--brand)}
.pm-rules summary i{font-size:10px;transition:transform .15s}
.pm-rules[open] summary i{transform:rotate(180deg)}
.pm-rules p{margin:6px 0 0;color:var(--text-3);line-height:1.6;background:var(--bg-soft);border-radius:8px;padding:8px 10px}
.pm-prob{display:flex;align-items:center;gap:10px;margin-top:10px}
.pm-prob-bar{flex:1;height:6px;border-radius:3px;background:rgba(229,72,77,.35);overflow:hidden}
.pm-prob-bar>span{display:block;height:100%;background:#16a34a;transition:width .3s}
.pm-prob-txt{font-size:11.5px;white-space:nowrap;color:var(--text-3)}
.pm-meta{display:flex;gap:14px;margin-top:8px;font-size:11.5px;color:var(--text-3);flex-wrap:wrap}
.pm-mine{margin-top:8px;font-size:12px;color:var(--text-2);background:var(--bg-soft);border-radius:8px;padding:6px 10px}
.pm-actions{display:flex;gap:8px;margin-top:auto;padding-top:11px}
.pm-btn{flex:1;padding:8px 0;border-radius:9px;border:none;font-size:12.5px;font-weight:800;cursor:pointer;transition:all .15s}
.pm-btn.yes{background:rgba(22,163,74,.1);color:#15803d}
.pm-btn.yes:hover{background:#16a34a;color:#fff}
.pm-btn.no{background:rgba(229,72,77,.1);color:#dc2626}
.pm-btn.no:hover{background:#e5484d;color:#fff}
.pm-stake-box{margin-top:12px;border-top:1px dashed var(--border);padding-top:12px}
.pm-stake-amts{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pm-amt{border:1px solid var(--border);background:var(--bg);color:var(--text-1);padding:7px 16px;border-radius:9px;font-size:13.5px;font-weight:700;cursor:pointer}
.pm-amt.sel{border-color:var(--brand);color:var(--brand);background:rgba(10,158,95,.07)}
.pm-amt-input{width:92px;border:1px solid var(--border);background:var(--bg);color:var(--text-1);padding:7px 10px;border-radius:9px;font-size:13.5px}
.pm-confirm{margin-top:10px;width:100%;padding:10px 0;border:none;border-radius:10px;font-size:14px;font-weight:800;cursor:pointer;background:var(--brand);color:#fff}
.pm-confirm.yes{background:#16a34a}
.pm-confirm.no{background:#e5484d}
.pm-confirm:disabled{opacity:.6;cursor:default}
.pm-done-row{display:flex;align-items:center;gap:10px;padding:10px 4px;border-bottom:1px solid var(--border);font-size:13px;flex-wrap:wrap}
.pm-done-row:last-child{border-bottom:none}
.pm-done-q{flex:1;min-width:200px;color:var(--text-1);font-weight:600}
.pm-done-note{font-size:12px;color:var(--text-3)}
.pm-badge{font-size:11px;font-weight:800;padding:2px 9px;border-radius:8px;white-space:nowrap}
.pm-badge.yes{background:rgba(22,163,74,.12);color:#16a34a}
.pm-badge.no{background:rgba(229,72,77,.12);color:#e5484d}
.pm-badge.void{background:rgba(140,140,140,.14);color:var(--text-3)}
.pm-badge.open{background:rgba(10,158,95,.1);color:var(--brand)}
.pm-pos-list{display:flex;flex-direction:column}
.pm-pos-row{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px solid var(--border);font-size:13px;flex-wrap:wrap}
.pm-pos-row:last-child{border-bottom:none}
.pm-pos-q{flex:1;min-width:200px;color:var(--text-1);font-weight:600}
.pm-pos-side{font-weight:800;white-space:nowrap}
.pm-empty{padding:22px 0;text-align:center;color:var(--text-3);font-size:13.5px}
.pm-empty a{color:var(--brand);font-weight:700}
@media (max-width:1200px){.pm-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.pm-list{grid-template-columns:minmax(0,1fr)}.pm-prob-txt{font-size:11px}.predict-hero{padding:14px 16px}.predict-title{font-size:19px}}

/* v8.0 Polymarket 式卡片：封面图 + 大概率数字 + 分类 Tab + 动态流 */
.pm-head{display:flex;gap:11px;align-items:flex-start}
.pm-cover{width:48px;height:48px;border-radius:10px;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}
.pm-head-main{flex:1;min-width:0}
.pm-cat-tag{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.5px;padding:1px 7px;border-radius:6px;background:var(--bg-soft);color:var(--text-3);margin-bottom:4px}
.pm-bigprob{text-align:center;flex-shrink:0;min-width:48px}
.pm-bigprob b{display:block;font-size:19px;font-weight:900;line-height:1.1}
.pm-bigprob span{font-size:9px;font-weight:800;letter-spacing:1px;color:var(--text-3)}
.pm-bigprob.up b{color:#16a34a}
.pm-bigprob.down b{color:#e5484d}
.pm-cats{display:flex;gap:7px;margin-bottom:13px;flex-wrap:wrap}
.pm-cat{border:1px solid var(--border);background:var(--bg);color:var(--text-2);padding:6px 15px;border-radius:18px;font-size:12.5px;font-weight:700;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:6px}
.pm-cat:hover{color:var(--brand);border-color:var(--brand)}
.pm-cat.active{background:var(--brand);border-color:var(--brand);color:#fff}
.predict-activity{display:flex;flex-direction:column;max-height:340px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;padding-right:4px}
.predict-activity::-webkit-scrollbar{width:5px}
.predict-activity::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px}
.predict-activity::-webkit-scrollbar-track{background:transparent}
.pa-row{display:flex;align-items:flex-start;gap:9px;padding:8px 2px;border-bottom:1px solid var(--border)}
.pa-row:last-child{border-bottom:none}
.pa-ava{width:28px;height:28px;border-radius:50%;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}
.pa-ava-ph{display:inline-flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-3);font-size:12px}
.pa-txt{font-size:12.5px;color:var(--text-2);line-height:1.5;min-width:0}
.pa-txt b{font-weight:700}
.pa-q{display:block;font-style:normal;font-size:11.5px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plb-ava{width:24px;height:24px;border-radius:50%;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}
.plb-ava-ph{display:inline-flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text-3);font-size:10px}
@media (max-width:640px){.pm-cover{width:44px;height:44px}.pm-bigprob b{font-size:17px}}

/* ============ v8.3 预言家升级：Polymarket 式密度与玩法 ============ */
/* 卡片标题可点击进详情页 */
.pm-q a{color:inherit;text-decoration:none}
.pm-q a:hover{color:var(--brand)}
a.pm-bigprob{text-decoration:none}
/* 即将封盘红标 */
.pm-close-soon{color:#e5484d;font-weight:700;display:inline-flex;align-items:center;gap:4px}
.pm-close-soon.done{color:var(--text-3);font-weight:600}
/* One-tap 快捷押注 */
.pm-stake-box{margin-top:10px;border-top:1px dashed var(--border);padding-top:10px}
.pm-quick-amts{display:flex;gap:7px;flex-wrap:wrap}
.pm-quick{flex:1;min-width:64px;border:1px solid var(--border);background:var(--bg);border-radius:9px;padding:6px 4px;cursor:pointer;text-align:center;transition:all .12s}
.pm-quick b{display:block;font-size:13px;font-weight:800;color:var(--text-1)}
.pm-quick-win{display:block;font-size:10.5px;color:var(--text-3);margin-top:1px}
.pm-stake-box.yes .pm-quick:hover{border-color:#16a34a;background:rgba(22,163,74,.07)}
.pm-stake-box.yes .pm-quick:hover .pm-quick-win{color:#16a34a}
.pm-stake-box.no .pm-quick:hover{border-color:#e5484d;background:rgba(229,72,77,.07)}
.pm-stake-box.no .pm-quick:hover .pm-quick-win{color:#e5484d}
.pm-quick:disabled{opacity:.55;cursor:default}
.pm-quick-custom{display:flex;gap:6px;width:100%;margin-top:7px}
.pm-quick-custom .pm-amt-input{flex:1;width:auto}
.pm-confirm-mini{border:none;border-radius:9px;padding:7px 16px;font-size:12.5px;font-weight:800;cursor:pointer;background:var(--text-1);color:var(--bg)}
.pm-stake-box.yes .pm-confirm-mini{background:#16a34a;color:#fff}
.pm-stake-box.no .pm-confirm-mini{background:#e5484d;color:#fff}
/* 焦点市场大卡（v8.3.1 加强版：可押注 + 概率分布条 + 大概率数字） */
.pm-focus-card{display:flex;gap:22px;align-items:stretch;border:1px solid var(--border);border-radius:14px;padding:16px 20px;margin-bottom:16px;background:linear-gradient(135deg,var(--card) 55%,rgba(240,68,46,.04));transition:box-shadow .15s}
.pm-focus-card:hover{box-shadow:0 4px 18px rgba(0,0,0,.08)}
.pm-focus-info{flex:1;min-width:0;display:flex;flex-direction:column}
.pm-focus-tags{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.pm-focus-tags .pm-cat-tag{margin-bottom:0}
.pm-focus-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;color:#f0442e;background:rgba(240,68,46,.09);border-radius:7px;padding:2px 9px}
.pm-focus-q{font-size:17px;font-weight:800;margin:0 0 9px;line-height:1.4}
.pm-focus-q a{color:var(--text-1);text-decoration:none}
.pm-focus-q a:hover{color:var(--brand)}
.pm-focus-split{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.pm-focus-split-bar{display:block;height:7px;border-radius:4px;background:rgba(229,72,77,.28);overflow:hidden}
.pm-focus-split-bar span{display:block;height:100%;border-radius:4px;background:#16a34a;transition:width .3s}
.pm-focus-split-txt{display:flex;justify-content:space-between;font-size:12px;font-weight:800}
.pm-focus-meta{display:flex;align-items:center;gap:14px;font-size:12.5px;color:var(--text-3);flex-wrap:wrap;font-weight:700}
.pm-focus-more{margin-left:auto;color:var(--brand);text-decoration:none;font-weight:700}
.pm-focus-more:hover{text-decoration:underline}
.pm-focus-actions{padding-top:12px}
.pm-focus-actions .pm-btn{padding:9px 0;font-size:13.5px}
.pm-focus-chart{width:280px;flex-shrink:0;display:flex;flex-direction:column;justify-content:center;gap:6px;text-decoration:none;border-left:1px dashed var(--border);padding-left:20px}
.pm-focus-chart canvas{height:88px!important}
.pm-focus-bigprob{text-align:center}
.pm-focus-bigprob b{display:block;font-size:30px;font-weight:900;line-height:1.05}
.pm-focus-bigprob i{font-style:normal;font-size:10.5px;font-weight:800;letter-spacing:1px;color:var(--text-3)}
.pm-focus-bigprob.up b{color:#16a34a}
.pm-focus-bigprob.down b{color:#e5484d}
@media (max-width:768px){.pm-focus-chart{display:none}.pm-focus-card{padding:14px 16px}}
/* 热门市场榜 */
.predict-hot{display:flex;flex-direction:column}
.ph-row{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid var(--border);text-decoration:none}
.ph-row:last-child{border-bottom:none}
.ph-row:hover .ph-q{color:var(--brand)}
.ph-rank{width:18px;height:18px;border-radius:5px;background:var(--bg-soft);color:var(--text-3);font-size:11px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.ph-rank.top{background:rgba(240,68,46,.1);color:#f0442e}
.ph-q{flex:1;min-width:0;font-size:12.5px;font-weight:600;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ph-meta{text-align:right;flex-shrink:0}
.ph-meta b{display:block;font-size:12.5px}
.ph-meta em{font-style:normal;font-size:10.5px;color:var(--text-3)}
/* ============ 市场详情页 /predict/market/:id ============ */
.mkd-crumb{margin-bottom:14px}
.mkd-crumb a{color:var(--text-3);font-size:13px;text-decoration:none;font-weight:600}
.mkd-crumb a:hover{color:var(--brand)}
.mkd-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
.mkd-head{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin-bottom:14px}
.mkd-cover{width:64px;height:64px;border-radius:12px;object-fit:cover;border:1px solid var(--border);flex-shrink:0}
.mkd-head-main{flex:1;min-width:0}
.mkd-tags{display:flex;gap:8px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
.mkd-q{font-size:19px;font-weight:800;color:var(--text-1);margin:0 0 8px;line-height:1.4}
.mkd-stats{display:flex;gap:16px;font-size:12.5px;color:var(--text-3);flex-wrap:wrap}
.mkd-countdown{color:#e5484d;font-weight:800;font-size:12px;display:inline-flex;align-items:center;gap:5px}
.mkd-bigprob{text-align:center;flex-shrink:0;min-width:72px}
.mkd-bigprob b{display:block;font-size:32px;font-weight:900;line-height:1.1}
.mkd-bigprob span{font-size:10px;font-weight:800;letter-spacing:1px;color:var(--text-3)}
.mkd-bigprob.up b{color:#16a34a}
.mkd-bigprob.down b{color:#e5484d}
.mkd-chart-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:14px}
.mkd-chart-wrap{height:240px;position:relative}
.mkd-chart-meta{font-size:12px;color:var(--text-3);margin-bottom:8px}
.mkd-note{display:inline-flex;align-items:center;gap:6px}
.mkd-block{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:14px}
.mkd-block-title{font-size:14.5px;font-weight:800;color:var(--text-1);margin:0 0 12px;display:flex;align-items:center;gap:7px}
.mkd-block-title i{color:var(--brand);font-size:13px}
.mkd-rules-txt{margin:0;font-size:13px;color:var(--text-2);line-height:1.75;background:var(--bg-soft);border-radius:10px;padding:12px 14px}
.mkd-bet-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:16px 18px;margin-bottom:14px;position:sticky;top:76px}
.mkd-bet-title{font-size:14.5px;font-weight:800;margin:0 0 12px;display:flex;justify-content:space-between;align-items:center;color:var(--text-1)}
.mkd-bet-odds{font-size:11.5px;color:var(--text-3);font-weight:700}
.mkd-bet-tip{margin:10px 0 0;font-size:11px;color:var(--text-3);line-height:1.6}
.mkd-pool-bar{height:8px;border-radius:4px;background:rgba(229,72,77,.3);overflow:hidden;margin-bottom:10px}
.mkd-pool-bar>span{display:block;height:100%;background:#16a34a}
.mkd-pool-rows{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:700}
.mkd-pool-rows i{margin-right:5px}
.pm-card-link{text-decoration:none}
@media (max-width:900px){.mkd-grid{grid-template-columns:minmax(0,1fr)}.mkd-bet-card{position:static}.mkd-q{font-size:16.5px}.mkd-bigprob b{font-size:26px}.mkd-cover{width:52px;height:52px}.mkd-chart-wrap{height:200px}}

/* ===== v8.4 快讯 AI 解读块 ===== */
.nf-insight { margin-top: 20px; padding: 16px 18px; border-radius: 12px; background: linear-gradient(135deg, rgba(10,158,95,.06), rgba(124,58,237,.05)); border: 1px solid rgba(10,158,95,.18); }
.nf-insight-head { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 15px; color: var(--text-1); }
.nf-insight-head i { color: #f59e0b; }
.nf-insight-badge { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: rgba(13,138,86,.1); color: var(--brand); }
.nf-insight-body { margin-top: 10px; font-size: 14.5px; line-height: 1.85; color: var(--text-1); }
.nf-insight-foot { margin-top: 10px; font-size: 12px; color: var(--text-3); border-top: 1px dashed rgba(10,158,95,.15); padding-top: 8px; }
[data-theme="dark"] .nf-insight { background: linear-gradient(135deg, rgba(59,130,246,.10), rgba(10,158,95,.08)); border-color: rgba(96,165,250,.25); }
[data-theme="dark"] .nf-insight-badge { background: rgba(43,189,130,.14); color: var(--brand); }

/* ===== v8.6 文章 AI 导读（正文前置：要点列表 + 导读段） ===== */
.art-insight { margin: 18px 0 6px; }
.art-insight .nf-insight-head i { color: var(--brand); }
.art-insight-points { margin: 12px 0 4px; padding-left: 4px; list-style: none; display: flex; flex-direction: column; gap: 7px; }
.art-insight-points li { position: relative; padding-left: 22px; font-size: 14px; line-height: 1.65; color: var(--text-1); font-weight: 550; }
.art-insight-points li::before { content: ''; position: absolute; left: 4px; top: 8px; width: 7px; height: 7px; border-radius: 50%; background: var(--brand); }
.art-insight .nf-insight-body { margin-top: 12px; border-top: 1px dashed rgba(10,158,95,.15); padding-top: 12px; }

/* ===== v8.4 运营中心表单 ===== */
.btn-secondary { padding: 9px 20px; border-radius: 8px; font-size: 13.5px; font-weight: 600; background: var(--bg-soft); color: var(--text-1); border: 1px solid var(--line); cursor: pointer; transition: background .15s; width: fit-content; }
.btn-secondary:hover { background: var(--line); }
.btn-secondary:disabled { opacity: .55; cursor: not-allowed; }
.form-field { display: flex; flex-direction: column; gap: 5px; font-size: 13px; }
.form-field > span { font-weight: 600; color: var(--text-2, var(--text-1)); display: flex; align-items: center; gap: 8px; }
.form-field input, .form-field select { padding: 9px 12px; border-radius: 8px; border: 1px solid var(--line); background: var(--bg-panel); color: var(--text-1); font-size: 13.5px; outline: none; }
.form-field input:focus, .form-field select:focus { border-color: var(--brand); }
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; }
.stats-grid .stat-card .stat-num { font-size: 20px; font-weight: 800; margin-top: 6px; }
.stats-grid .stat-card .stat-label { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.stats-grid .stat-card i { color: var(--brand); font-size: 15px; }

/* v8.4.1 审计修复：搜索结果提示条 + 搜索下拉"查看全部" */
.nf-search-head{display:flex;justify-content:space-between;align-items:center;background:var(--card-bg,#fff);border:1px solid var(--border,#e5e7eb);border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:14px}
.nf-search-head a{color:var(--muted,#6b7280);font-size:13px;text-decoration:none}
.nf-search-head a:hover{color:var(--brand,#0a9e5f)}
[data-theme="dark"] .nf-search-head{background:#161b26;border-color:#252b3b;color:#cbd2e0}
#search-results .sr-more{border-top:1px solid var(--border,#e5e7eb);color:var(--brand,#0a9e5f);font-size:13px}
[data-theme="dark"] #search-results .sr-more{border-color:#252b3b}

/* v8.4.1 财经日历前后翻页箭头 */
.cal-day.cal-nav-arrow{min-width:36px;justify-content:center;color:var(--text-3);font-size:13px}
.cal-day.cal-nav-arrow:hover{color:var(--brand);border-color:var(--brand)}

/* ============ v8.9 关注币种（星标 + 关注流） ============ */
.tag-coin-wrap{display:inline-flex;align-items:center;gap:0;vertical-align:middle}
.tag-follow{border:none;background:transparent;color:var(--text-3);cursor:pointer;font-size:11px;padding:2px 4px;margin-right:2px;border-radius:4px;opacity:.55;transition:opacity .15s,color .15s;line-height:1}
.tag-coin-wrap:hover .tag-follow,.tag-follow.on{opacity:1}
.tag-follow:hover{color:#f5a623}
.tag-follow.on{color:#f5a623}
.coin-follow-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--bg-panel);color:var(--text-2,var(--text-1));font-size:13px;font-weight:600;padding:6px 14px;border-radius:20px;cursor:pointer;transition:all .15s}
.coin-follow-btn:hover{border-color:#f5a623;color:#f5a623}
.coin-follow-btn.on{border-color:#f5a623;color:#f5a623;background:rgba(245,166,35,.08)}
.t-follow-star{color:#f5a623;font-size:9px;margin-right:3px}
.follow-empty{text-align:center;padding:48px 20px;color:var(--text-3)}
.follow-empty-icon{font-size:40px;color:#f5a623;opacity:.5;margin-bottom:12px}
.follow-empty h3{color:var(--text-1);font-size:17px;margin-bottom:8px}
.follow-empty p{font-size:13.5px;line-height:1.7;max-width:420px;margin:0 auto 20px}
.follow-quick{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.follow-quick-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--bg-panel);color:var(--text-1);font-size:13.5px;font-weight:600;padding:8px 16px;border-radius:20px;cursor:pointer;transition:all .15s}
.follow-quick-btn:hover{border-color:#f5a623;color:#f5a623}

/* ============ v9.0 评论区 ============ */
.cmt-section{margin-top:28px;border-top:1px solid var(--line);padding-top:20px}
.cmt-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.cmt-title{font-size:17px;display:flex;align-items:center;gap:8px;margin:0}
.cmt-title i{color:var(--brand)}
.cmt-count{color:var(--text-3);font-size:14px;font-weight:500}
.cmt-sort{display:flex;gap:4px;background:var(--bg-soft,rgba(128,128,128,.08));border-radius:8px;padding:3px}
.cmt-sort-btn{border:none;background:transparent;color:var(--text-3);font-size:12.5px;font-weight:600;padding:4px 12px;border-radius:6px;cursor:pointer}
.cmt-sort-btn.active{background:var(--bg-panel);color:var(--text-1);box-shadow:0 1px 3px rgba(0,0,0,.1)}
.cmt-editor{background:var(--bg-panel);border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:16px}
.cmt-editor textarea{width:100%;border:none;background:transparent;color:var(--text-1);font-size:14px;line-height:1.6;resize:vertical;outline:none;min-height:44px;font-family:inherit}
.cmt-editor-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px}
.cmt-len{font-size:12px;color:var(--text-3)}
.cmt-submit{border:none;background:var(--brand);color:#fff;font-size:13.5px;font-weight:600;padding:7px 20px;border-radius:8px;cursor:pointer;transition:opacity .15s}
.cmt-submit:hover{opacity:.88}
.cmt-submit:disabled{opacity:.5;cursor:not-allowed}
.cmt-login-hint{background:var(--bg-panel);border:1px dashed var(--line);border-radius:12px;padding:16px;text-align:center;color:var(--text-3);font-size:13.5px;margin-bottom:16px}
.cmt-login-hint a{color:var(--brand);font-weight:600}
.cmt-item{display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--line)}
.cmt-item:last-child{border-bottom:none}
.cmt-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#16a34a);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;flex-shrink:0}
.cmt-main{flex:1;min-width:0}
.cmt-meta{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.cmt-nick{font-weight:600;font-size:13.5px;color:var(--text-1)}
.cmt-time{font-size:12px;color:var(--text-3)}
.cmt-text{font-size:14px;line-height:1.7;color:var(--text-2,var(--text-1));word-break:break-word;white-space:pre-wrap}
.cmt-actions{display:flex;gap:16px;margin-top:8px}
.cmt-like,.cmt-del{border:none;background:transparent;color:var(--text-3);font-size:12.5px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:2px 0}
.cmt-like:hover{color:var(--brand)}
.cmt-like.on{color:var(--brand)}
.cmt-del:hover{color:#f0442e}
.cmt-empty{text-align:center;color:var(--text-3);font-size:13.5px;padding:28px 0}

/* ============ v10 币润早参（数字报纸头版风） ============ */
.daily-brief{border-top:3px solid var(--text-1);border-bottom:1px solid var(--line-strong);padding:14px 2px 16px;margin-bottom:26px}
.db-mast{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:12px;border-bottom:1px dashed var(--line-strong);margin-bottom:14px}
.db-mast-brand{font-size:15px;font-weight:900;letter-spacing:.35em;color:var(--text-1)}
.db-mast-rule{width:1px;height:13px;background:var(--line-strong);align-self:center}
.db-date{font-size:12.5px;color:var(--text-3);font-variant-numeric:tabular-nums;letter-spacing:.03em}
.db-fg{margin-left:auto;display:flex;align-items:baseline;gap:6px;font-size:12.5px}
.db-fg:empty{display:none}
.db-fg-label{color:var(--text-3)}
.db-fg-num{font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}
.db-fg-txt{font-weight:600}
.db-lead{display:block;margin-bottom:14px}
.db-lead-kicker{display:inline-block;font-size:11.5px;font-weight:700;letter-spacing:.18em;color:var(--brand);border:1px solid currentColor;border-radius:3px;padding:1px 8px;margin-bottom:8px}
.db-lead-title{font-size:20px;font-weight:800;line-height:1.5;letter-spacing:-.01em;margin:0 0 6px;transition:color .15s;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.db-lead:hover .db-lead-title{color:var(--brand)}
.db-lead-sub{font-size:13.5px;color:var(--text-2);line-height:1.7;margin:0;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.db-briefs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.db-brief{display:flex;flex-direction:column;gap:6px;padding:2px 18px 2px 0;min-width:0}
.db-brief+.db-brief{border-left:1px solid var(--line);padding-left:18px}
.db-brief-no{font-size:12px;font-weight:800;color:var(--text-3);font-variant-numeric:tabular-nums;letter-spacing:.06em}
.db-brief-title{font-size:13.5px;font-weight:600;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .15s}
.db-brief:hover .db-brief-title{color:var(--brand)}
.db-brief-time{font-size:11.5px;color:var(--text-3);margin-top:auto}
@media (max-width:768px){
  .daily-brief{padding:12px 0 13px;margin-bottom:18px}
  .db-mast{gap:9px;padding-bottom:10px;margin-bottom:12px}
  .db-mast-brand{font-size:13.5px;letter-spacing:.25em}
  .db-lead-title{font-size:16.5px}
  .db-lead-sub{display:none}
  .db-briefs{grid-template-columns:1fr;gap:10px}
  .db-brief{flex-direction:row;align-items:baseline;gap:9px;padding:0}
  .db-brief+.db-brief{border-left:none;padding-left:0}
  .db-brief-title{-webkit-line-clamp:2;flex:1}
  .db-brief-time{display:none}
}

/* ============ v9.2 连续阅读（详情页上一条/下一条） ============ */
.nf-nav{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.nf-nav-item{display:flex;flex-direction:column;gap:5px;border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:var(--bg-panel);min-width:0;transition:border-color .15s}
a.nf-nav-item:hover{border-color:var(--brand)}
a.nf-nav-item:hover .nf-nav-title{color:var(--brand)}
.nf-nav-next{text-align:right;align-items:flex-end}
.nf-nav-dir{font-size:12px;color:var(--text-3);display:inline-flex;align-items:center;gap:6px}
.nf-nav-kbd{border:1px solid var(--line-strong);border-radius:4px;padding:0 5px;font-size:11px;font-family:inherit;color:var(--text-3);background:var(--bg-soft)}
.nf-nav-title{font-size:13.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;transition:color .15s}
.nf-nav-hot{display:inline-block;font-size:10.5px;font-weight:700;color:#fff;background:var(--hot);border-radius:3px;padding:0 4px;margin-right:5px;vertical-align:1px}
.nf-nav-empty{justify-content:center;align-items:center;color:var(--text-3);font-size:12.5px;border-style:dashed}
@media (max-width:640px){
  .nf-nav{grid-template-columns:1fr}
  .nf-nav-next{text-align:left;align-items:flex-start}
  .nf-nav-kbd{display:none}
}

/* ============ v9.3 搜索升级（历史 + 热搜 + 无结果推荐） ============ */
.sr-sec-head{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--text-3);padding:10px 14px 6px}
.sr-sec-head i{font-size:11px}
.sr-clear{margin-left:auto;font-size:11.5px;color:var(--text-3);padding:2px 4px}
.sr-clear:hover{color:var(--down)}
.sr-chips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 14px 12px}
.sr-chip{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;color:var(--text-2);background:var(--bg-soft);border:1px solid var(--line);border-radius:14px;padding:4px 11px;cursor:pointer;transition:all .15s;text-decoration:none}
.sr-chip:hover{color:var(--brand);border-color:var(--brand)}
.sr-chip-rank{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:4px;font-size:10px;font-weight:800;color:#fff}
.sr-chip-rank.r1{background:#f0442e}.sr-chip-rank.r2{background:#f78a2e}.sr-chip-rank.r3{background:#f5b93c}
.sr-chip-del{font-size:10px;color:var(--text-3);padding:2px;border-radius:50%}
.sr-chip-del:hover{color:var(--down)}
.sr-reco-head{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;color:var(--text-1);margin:20px 0 10px}
.sr-reco-head i{color:var(--brand);font-size:12px}
#sr-page-reco .sr-chips{padding:0 0 4px}
#sr-page-reco .related-item{border-bottom:1px solid var(--line)}

/* ============ v9.4 已读标记 + 最近浏览 ============ */
.nf-item.is-read .nf-title{color:var(--text-3);font-weight:400}
.nf-item.is-read .nf-title:hover{color:var(--brand)}
.nf-item.is-read.important .nf-title{color:var(--text-2)}
.bm-tabs{display:flex;gap:4px}
.bm-tab{display:inline-flex;align-items:center;gap:7px;font-size:15px;font-weight:700;color:var(--text-3);padding:6px 12px;border-radius:8px;transition:all .15s}
.bm-tab:hover{color:var(--text-1)}
.bm-tab.active{color:var(--text-1);background:var(--bg-soft)}
.bm-his-time{flex-shrink:0;font-size:12px;color:var(--text-3);margin-left:auto}
@media (max-width:640px){.bm-tab{font-size:13.5px;padding:5px 9px}}

/* ============ v10 视觉升级：空状态插画 / 板块横幅 / 登录插画 / 恐慌贪婪仪表盘 ============ */
.empty-illust{text-align:center;padding:34px 16px 38px;color:var(--text-3)}
.empty-illust img{width:150px;max-width:56%;border-radius:16px;margin-bottom:14px;opacity:.95}
[data-theme="dark"] .empty-illust img{opacity:.85;filter:brightness(.92)}
.empty-illust p{font-size:15px;font-weight:700;color:var(--text-2);margin:0 0 5px}
.empty-illust span{font-size:12.5px;line-height:1.7;display:block;max-width:340px;margin:0 auto}
/* 板块插画横幅（日历页大横幅） */
.page-illust-banner{border:1px solid var(--line);border-radius:14px;padding:26px 28px;margin-bottom:18px;background-size:cover;background-position:right center;background-color:var(--bg-soft)}
.page-illust-banner h1{font-size:22px;font-weight:800;margin:0 0 6px;display:flex;align-items:center;gap:10px}
.page-illust-banner h1 i{color:var(--brand)}
.page-illust-banner p{font-size:13.5px;color:var(--text-2);margin:0;max-width:520px}
[data-theme="dark"] .page-illust-banner{background-image:linear-gradient(90deg,var(--bg) 0%,rgba(16,17,20,.55) 55%,rgba(16,17,20,.35) 100%),var(--banner-img,none)!important}
@media (max-width:768px){.page-illust-banner{padding:18px 16px;background-position:82% center}.page-illust-banner h1{font-size:18px}}
/* AI 雷达 / 预言家横幅：暗色模式压暗插画保证可读 */
[data-theme="dark"] .has-illust{background-blend-mode:luminosity;background-color:var(--bg-panel)}
/* 登录页左右布局：左插画右表单 */
.auth-wrap{display:grid;grid-template-columns:340px minmax(0,400px);gap:34px;align-items:center;justify-content:center}
.auth-illust{border-radius:18px;overflow:hidden;border:1px solid var(--line)}
.auth-illust img{width:100%;display:block}
[data-theme="dark"] .auth-illust img{filter:brightness(.88)}
@media (max-width:820px){.auth-wrap{grid-template-columns:minmax(0,400px)}.auth-illust{display:none}}
/* 恐慌贪婪半圆仪表盘 */
.fg-gauge{position:relative;width:150px;height:78px;margin:2px auto 0;flex-shrink:0}
.fg-gauge-arc{width:150px;height:75px;border-radius:150px 150px 0 0;background:conic-gradient(from -90deg at 50% 100%,var(--down) 0deg,#f7b955 90deg,var(--up) 180deg,transparent 180deg);-webkit-mask:radial-gradient(circle at 50% 100%,transparent 46px,#000 47px);mask:radial-gradient(circle at 50% 100%,transparent 46px,#000 47px)}
.fg-gauge-needle{position:absolute;left:50%;bottom:3px;width:2.5px;height:56px;background:var(--text-1);border-radius:2px;transform-origin:50% 100%;transition:transform .8s cubic-bezier(.22,1,.36,1)}
.fg-gauge-needle::after{content:'';position:absolute;left:50%;bottom:-4px;width:9px;height:9px;border-radius:50%;background:var(--text-1);transform:translateX(-50%)}
.fg-gauge-val{position:absolute;left:50%;bottom:-2px;transform:translateX(-50%);text-align:center;background:var(--bg-panel);border-radius:8px;padding:0 6px}
.fg-gauge-val b{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums;display:block;line-height:1.15}
.fg-gauge-val small{font-size:11px;font-weight:600;display:block;line-height:1.2}
.fg-block.gauge{flex-direction:column;align-items:center;gap:6px;padding-bottom:16px}
.fg-scale{display:flex;justify-content:space-between;width:150px;font-size:10px;color:var(--text-3);margin-top:-2px}

/* ==========================================================================
   v11 视觉升级层 —— 全面美化（追加覆盖层：不改动旧规则，利用级联覆盖）
   方向：专业金融媒体质感 —— 更深的设计令牌 / 玻璃拟态 / 微交互 / 滚动动效
   ========================================================================== */

/* ---------- 1. 设计令牌深化 ---------- */
:root{
  --brand:#0a9e5f;
  --brand-hover:#07854f;
  --brand-2:#03cd76;                    /* 品牌渐变副色（蓝→紫） */
  --brand-grad:linear-gradient(135deg,#0a9e5f 0%,#03cd76 100%);
  --brand-grad-soft:linear-gradient(135deg,rgba(10,158,95,.08),rgba(3,205,118,.08));
  --brand-glow:rgba(10,158,95,.28);
  --accent-amber:#f5a623;
  --bg:#f4f5f7;                          /* 页面底色：轻灰，托出白色卡片 */
  --bg-soft:#eef0f3;
  --bg-panel:#ffffff;
  --bg-elev:#ffffff;
  --line:#e8eaee;
  --line-strong:#dfe2e8;
  --text-1:#14161a;
  --text-2:#454a52;
  --text-3:#8b909a;
  --radius:12px;
  --radius-lg:16px;
  --header-h:64px;
  --shadow-xs:0 1px 2px rgba(15,20,30,.04);
  --shadow:0 1px 2px rgba(15,20,30,.04),0 6px 20px -6px rgba(15,20,30,.07);
  --shadow-lg:0 4px 12px rgba(15,20,30,.05),0 16px 44px -12px rgba(15,20,30,.14);
  --shadow-brand:0 8px 28px -8px var(--brand-glow);
  --ease-spring:cubic-bezier(.22,1,.36,1);
  --glass-bg:rgba(255,255,255,.82);
  --glass-line:rgba(20,22,26,.06);
}
[data-theme="dark"]{
  --brand:#25d48e;
  --brand-hover:#4ae2a4;
  --brand-2:#3ddc97;
  --brand-grad:linear-gradient(135deg,#25d48e 0%,#3ddc97 100%);
  --brand-grad-soft:linear-gradient(135deg,rgba(37,212,142,.14),rgba(61,220,151,.14));
  --brand-glow:rgba(37,212,142,.32);
  --bg:#0c0e13;
  --bg-soft:#13161d;
  --bg-panel:#161a22;
  --bg-elev:#1c212b;
  --line:#232834;
  --line-strong:#2e3542;
  --text-1:#eef0f4;
  --text-2:#b4bac4;
  --text-3:#6f7683;
  --shadow-xs:0 1px 2px rgba(0,0,0,.3);
  --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 24px -8px rgba(0,0,0,.5);
  --shadow-lg:0 6px 16px rgba(0,0,0,.4),0 20px 52px -12px rgba(0,0,0,.65);
  --shadow-brand:0 8px 32px -8px var(--brand-glow);
  --glass-bg:rgba(18,21,28,.78);
  --glass-line:rgba(255,255,255,.07);
}

/* ---------- 2. 全局基底质感 ---------- */
html{scroll-behavior:smooth}
body{
  background:
    radial-gradient(1200px 480px at 12% -160px, rgba(10,158,95,.05), transparent 60%),
    radial-gradient(1000px 420px at 88% -120px, rgba(3,205,118,.045), transparent 60%),
    var(--bg);
  font-feature-settings:"tnum" 1,"cv03" 1;
  -webkit-font-smoothing:antialiased;
}
[data-theme="dark"] body{
  background:
    radial-gradient(1200px 520px at 12% -180px, rgba(37,212,142,.10), transparent 62%),
    radial-gradient(1000px 460px at 88% -140px, rgba(61,220,151,.08), transparent 62%),
    var(--bg);
}
::selection{background:var(--brand);color:#fff}
/* 细滚动条（侧栏/下拉） */
.nf-list::-webkit-scrollbar,.search-dropdown::-webkit-scrollbar,.hot-flash-card::-webkit-scrollbar{width:5px}
.nf-list::-webkit-scrollbar-thumb,.search-dropdown::-webkit-scrollbar-thumb,.hot-flash-card::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px}
.nf-list::-webkit-scrollbar-thumb:hover{background:var(--text-3)}

/* 焦点可见性（无障碍） */
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}

/* ---------- 3. 页面切换与滚动动效 ---------- */
@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.page-main{animation:page-in .38s var(--ease-spring)}
@keyframes reveal-up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.reveal{opacity:0}
.reveal.revealed{animation:reveal-up .55s var(--ease-spring) forwards;animation-delay:var(--rv-delay,0s)}
/* 新快讯进入高亮（实时刷新 / 加载更多追加的条目） */
@keyframes nf-enter{0%{opacity:0;transform:translateY(-6px);background:var(--brand-grad-soft)}100%{opacity:1;transform:none;background:transparent}}
.nf-item.nf-new{animation:nf-enter 1.1s var(--ease-spring)}
@media (prefers-reduced-motion:reduce){
  .page-main{animation:none}
  .reveal{opacity:1}
  .reveal.revealed,.nf-item.nf-new{animation:none}
}

/* ---------- 4. 顶栏：玻璃拟态 + 滚动收缩 ---------- */
.site-header{
  background:var(--glass-bg);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
  backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid var(--glass-line);
  box-shadow:0 1px 0 rgba(15,20,30,.02);
  transition:box-shadow .25s;
}
.site-header.scrolled{box-shadow:var(--shadow)}
.logo-img{border-radius:9px;box-shadow:0 2px 10px -2px rgba(10,158,95,.4);transition:transform .3s var(--ease-spring)}
.logo:hover .logo-img{transform:scale(1.06) rotate(-3deg)}
.logo-text em{
  background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;font-weight:800;
}
/* 主导航：下划线指示 + hover 微动 */
.main-nav a{position:relative;transition:color .18s}
.main-nav a::after{
  content:'';position:absolute;left:12px;right:12px;bottom:2px;height:2.5px;border-radius:2px;
  background:var(--brand-grad);transform:scaleX(0);transform-origin:center;
  transition:transform .22s var(--ease-spring);
}
.main-nav a:hover{background:none;color:var(--text-1)}
.main-nav a:hover::after{transform:scaleX(.55);opacity:.55}
.main-nav a.active::after{transform:scaleX(1);opacity:1}
.main-nav a.active{color:var(--brand)}
[data-theme="dark"] .main-nav a.active{color:var(--brand-hover)}
.nav-ai,.nav-predict{position:relative}/* v12.33：去渐变后恢复与其它导航一致的下划线机制 */
/* 搜索框：聚焦展开更顺滑 + 品牌描边光 */
.search-box{transition:border-color .18s,width .28s var(--ease-spring),box-shadow .18s,background .18s}
.search-box:focus-within{
  border-color:var(--brand);background:var(--bg-panel);
  box-shadow:0 0 0 3px rgba(10,158,95,.12),var(--shadow);
}
[data-theme="dark"] .search-box:focus-within{box-shadow:0 0 0 3px rgba(37,212,142,.18),var(--shadow)}
.search-dropdown{border-radius:14px;box-shadow:var(--shadow-lg);border:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--glass-bg)}
/* 图标按钮：弹性微动 */
.icon-btn{transition:background .18s,color .18s,transform .2s var(--ease-spring)}
.icon-btn:hover{transform:translateY(-1px)}
.icon-btn:active{transform:scale(.9)}
/* 「更多」下拉：弹入 */
.nav-more-menu{border-radius:14px;box-shadow:var(--shadow-lg);border:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--glass-bg)}
.nav-more-menu a{transition:background .15s,color .15s}
.nav-more-menu a:hover{background:var(--brand-grad-soft);color:var(--text-1)}
.nav-more-menu a:hover i{color:var(--brand)}

/* ---------- 5. 行情条：更精致的数据带 ---------- */
.ticker-strip{
  background:linear-gradient(180deg,rgba(10,158,95,.025),transparent);
  border-top:none;padding:9px 24px;
}
[data-theme="dark"] .ticker-strip{background:linear-gradient(180deg,rgba(37,212,142,.05),transparent)}
.tick{position:relative;transition:opacity .15s}
.tick+.tick::before{content:'';position:absolute;left:-14px;top:50%;transform:translateY(-50%);width:3px;height:3px;border-radius:50%;background:var(--line-strong)}
.ticker-set{gap:32px;padding-right:32px}
.tick .t-chg{padding:1px 6px;border-radius:5px;font-size:11.5px}
.tick .t-up{color:var(--up);background:rgba(14,203,129,.09)}
.tick .t-down{color:var(--down);background:rgba(246,70,93,.09)}
.tick:hover .t-chg{filter:brightness(1.05)}

/* ---------- 6. 币润早参：报纸头版 → 杂志封面 ---------- */
.daily-brief{
  border:none;border-radius:var(--radius-lg);
  background:var(--bg-panel);
  box-shadow:var(--shadow);
  padding:20px 26px 22px;margin-bottom:30px;position:relative;overflow:hidden;
}
/* v12.33：彩虹渐变顶条 → 报纸式墨色细条；去除右上绿雾 */
.daily-brief::before{
  content:'';position:absolute;inset:0 0 auto 0;height:3px;
  background:var(--text-1);
}
.daily-brief::after{display:none}
.db-mast{border-bottom:1px solid var(--line)}
.db-mast-brand{font-size:16px;letter-spacing:.3em;color:var(--text-1)}
.db-lead-kicker{border-radius:5px;background:var(--brand-grad-soft);border:none;color:var(--brand)}
.db-lead-title{font-size:21px}
.db-brief{border-radius:10px;padding:8px 18px 8px 10px;margin:-4px -8px -4px -10px;transition:background .18s}
.db-brief:hover{background:var(--brand-grad-soft)}
.db-brief+.db-brief{border-left:1px solid var(--line);padding-left:18px}
.db-brief-no{color:var(--brand);font-size:13px}

/* ---------- 7. Hero 头条：沉浸聚焦 ---------- */
.hero-card{
  border-radius:var(--radius-lg);
  background:
    radial-gradient(720px 300px at 88% -30%, rgba(3,205,118,.4), transparent 60%),
    radial-gradient(560px 260px at -8% 110%, rgba(10,158,95,.32), transparent 60%),
    linear-gradient(135deg,#10131c 0%,#1b2130 100%);
  box-shadow:0 18px 48px -16px rgba(16,19,28,.5);
  transition:transform .35s var(--ease-spring),box-shadow .35s var(--ease-spring);
}
.hero-card:hover{transform:translateY(-3px);box-shadow:0 26px 64px -18px rgba(16,19,28,.6)}
.hero-card::after{
  background:radial-gradient(circle,rgba(61,220,151,.4),transparent 62%);
  right:-40px;top:-70px;width:280px;height:280px;
}
.hero-kicker{
  color:#6fe3b2;
  display:inline-flex;align-items:center;gap:7px;
}
.hero-kicker::before{content:'';width:16px;height:2px;background:var(--brand);border-radius:1px}
.hero-title{font-size:22px}
.hero-img{border-radius:12px;box-shadow:0 10px 30px -6px rgba(0,0,0,.45);transition:transform .35s var(--ease-spring)}
.hero-card:hover .hero-img{transform:scale(1.02)}

/* ---------- 8. 卡片体系：统一浮起微交互 ---------- */
.side-widget,.hot-flash-card,.mini-art-card,.nf-panel,.admin-card,.stat-card{
  border:1px solid var(--line);
  box-shadow:var(--shadow-xs);
  transition:box-shadow .28s var(--ease-spring),transform .28s var(--ease-spring),border-color .28s;
}
.side-widget:hover,.hot-flash-card:hover,.mini-art-card:hover{
  box-shadow:var(--shadow-lg);transform:translateY(-2px);border-color:var(--line-strong);
}
.mini-art-card{border-radius:14px}
.mini-art-thumb{border-radius:10px}
.mini-art-thumb img{transition:transform .35s var(--ease-spring)}
.mini-art-card:hover .mini-art-thumb img{transform:scale(1.07)}
/* 侧栏标题：图标气泡 */
.widget-title{display:flex;align-items:center;gap:9px}
.widget-title i{
  width:26px;height:26px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;background:var(--brand-grad-soft);color:var(--brand)!important;
}
.widget-title i.fa-fire,.widget-title i.fa-arrow-trend-up{background:rgba(240,68,46,.09);color:#f0442e!important}
/* AI 雷达 / 预言家小部件：品牌渐变标题 */
.ai-radar-title i{background:rgba(13,138,86,.09);color:var(--brand)!important}
.predict-widget-title i{background:linear-gradient(135deg,rgba(245,166,35,.14),rgba(240,68,46,.12));color:#f5a623!important}
/* 骨架屏：更柔的流光 */
.skeleton-row{
  background:linear-gradient(90deg,var(--bg-soft) 25%,var(--bg-elev,var(--line)) 50%,var(--bg-soft) 75%);
  background-size:200% 100%;border-radius:10px;
}

/* ---------- 9. 快讯时间轴：节奏与层次 ---------- */
.nf-date-head{
  font-size:13px;font-weight:800;color:var(--text-2);letter-spacing:.04em;
  display:flex;align-items:center;gap:12px;margin:26px 0 18px;
}
.nf-date-head::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,var(--line-strong),transparent)}
.nf-date-head:first-child{margin-top:6px}
.nf-item{border-left:2px solid var(--line);transition:background .2s,border-color .2s;border-radius:0 10px 10px 0}
.nf-item:hover{border-left-color:var(--brand)}
.nf-item::before{transition:border-color .2s,box-shadow .2s,background .2s;box-shadow:0 0 0 3px var(--bg)}
.nf-item:hover::before{border-color:var(--brand)}
.nf-item.important::before{box-shadow:0 0 0 3px var(--bg),0 0 0 6px rgba(255,77,79,.18)}
.nf-title{transition:color .16s}
.nf-text{color:var(--text-2)}
.nf-expand{transition:opacity .15s,gap .15s}
.nf-expand:hover{gap:7px}
.nf-img{border-radius:12px;box-shadow:var(--shadow)}
/* 标签：胶囊化 */
.tag{border-radius:6px;letter-spacing:.01em}
.tag-coin{border-radius:6px;transition:background .15s,transform .15s}
.tag-coin:hover{background:rgba(10,158,95,.14)}
.tag-original{
  background:var(--brand);color:#fff;border-radius:5px;box-shadow:none;
}
.tag-hot{border-radius:6px}
/* 频道 Tab：药丸悬浮 */
.nf-channel-tabs{gap:8px}
.nf-ch-tab{
  border-radius:18px;padding:6px 15px;font-size:13.5px;font-weight:500;color:var(--text-2);
  background:var(--bg-panel);border:1px solid var(--line);
  transition:all .18s var(--ease-spring);white-space:nowrap;
}
.nf-ch-tab:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-1px)}
.nf-ch-tab.active{
  background:var(--brand-grad);color:#fff;border-color:transparent;font-weight:700;
  box-shadow:var(--shadow-brand);
}
/* 筛选按钮（全部/重要） */
.nf-filters button,.art-filters button{
  border-radius:18px;border:1px solid var(--line);background:var(--bg-panel);
  transition:all .18s var(--ease-spring);
}
.nf-filters button:hover,.art-filters button:hover{border-color:var(--brand);color:var(--brand)}
.nf-filters button.active,.art-filters button.active{background:var(--brand-grad);color:#fff;border-color:transparent;box-shadow:var(--shadow-brand)}
/* 加载更多 */
.load-more-wrap{text-align:center;margin-top:26px}
#load-more{
  padding:11px 42px;border-radius:22px;font-size:14px;font-weight:700;
  background:var(--bg-panel);border:1px solid var(--line-strong);color:var(--text-1);
  transition:all .22s var(--ease-spring);box-shadow:var(--shadow-xs);
}
#load-more:hover{border-color:var(--brand);color:var(--brand);transform:translateY(-2px);box-shadow:var(--shadow-brand)}
#load-more:active{transform:scale(.97)}

/* ---------- 10. 文章 Feed：卡片化行 ---------- */
.feed-item{
  border-bottom:none;border-radius:var(--radius);
  padding:20px 18px;margin:0 -18px;
  transition:background .22s,box-shadow .22s var(--ease-spring),transform .22s var(--ease-spring);
}
.feed-item:hover{background:var(--bg-panel);box-shadow:var(--shadow);transform:translateY(-1px)}
.feed-item+.feed-item{border-top:1px solid var(--line)}
.feed-thumb{border-radius:12px;border:none;box-shadow:var(--shadow-xs)}
.feed-meta .cat{
  background:var(--brand-grad-soft);padding:1px 9px;border-radius:5px;font-size:11.5px;
}
/* 侧栏文章小卡 */
.side-art-item{border-radius:10px;padding:8px;margin:0 -8px;transition:background .18s}
.side-art-item:hover{background:var(--brand-grad-soft)}
.side-art-thumb{border-radius:8px}

/* ---------- 11. 详情页：阅读沉浸感 ---------- */
.art-h1{letter-spacing:-.015em}
.nf-detail-card,.art-detail-card{border-radius:var(--radius-lg);box-shadow:var(--shadow)}
blockquote{
  border-left:3px solid var(--brand);background:var(--brand-grad-soft);
  border-radius:0 10px 10px 0;padding:12px 16px;
}
/* 分享栏：悬浮工具条 */
.share-bar{
  background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow);padding:10px 12px;
}
.share-btn{border-radius:10px;transition:background .16s,color .16s,transform .16s var(--ease-spring)}
.share-btn:hover{background:var(--brand-grad-soft);color:var(--brand);transform:translateY(-1px)}
.share-btn:active{transform:scale(.94)}
/* 投票条 */
.vote-btn{border-radius:10px;transition:all .18s var(--ease-spring)}
.vote-btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.vote-btn:active{transform:scale(.97)}
.vote-meter{border-radius:6px;overflow:hidden}
/* 评论区 */
.cmt-item{border-radius:12px;transition:background .18s}
.cmt-like{border-radius:8px;padding:2px 6px;transition:all .15s}
.cmt-like:hover{background:var(--brand-grad-soft)}
/* 连续阅读卡 */
.nf-nav-item{border-radius:12px;box-shadow:var(--shadow-xs);transition:border-color .18s,box-shadow .22s,transform .22s var(--ease-spring)}
a.nf-nav-item:hover{box-shadow:var(--shadow);transform:translateY(-2px)}

/* ---------- 12. 数据与日历 ---------- */
.gm-tabs button{border-radius:8px;transition:all .15s}
.stat-card:hover,.admin-card:hover{box-shadow:var(--shadow)}
.admin-tab{border-radius:10px;transition:all .15s}
.admin-tab.active{background:var(--brand-grad);color:#fff;border-color:transparent;box-shadow:var(--shadow-brand)}
.btn-primary{
  background:var(--brand-grad);color:#fff;border-radius:10px;
  box-shadow:var(--shadow-brand);transition:all .2s var(--ease-spring);
}
.btn-primary:hover{opacity:1;transform:translateY(-1px);box-shadow:0 12px 32px -8px var(--brand-glow)}
.btn-primary:active{transform:scale(.97)}
.form-input{border-radius:10px;transition:border-color .16s,box-shadow .16s,background .16s}
.form-input:focus{box-shadow:0 0 0 3px rgba(10,158,95,.12)}
[data-theme="dark"] .form-input:focus{box-shadow:0 0 0 3px rgba(37,212,142,.18)}
/* 日历周条 */
.week-day{border-radius:10px;transition:background .15s}
.week-day:hover{background:var(--brand-grad-soft)}

/* ---------- 13. 横幅与空状态 ---------- */
.page-illust-banner{border-radius:var(--radius-lg);box-shadow:var(--shadow)}
.ai-radar-banner{border-radius:var(--radius-lg);box-shadow:var(--shadow)}
.empty-illust img{border-radius:20px;box-shadow:var(--shadow)}

/* ---------- 14. 页脚：收束版面 ---------- */
.site-footer{
  border-top:1px solid var(--line);
  background:var(--bg-panel);
  margin-top:20px;
}
.footer-name{font-weight:800}
.footer-links a{border-radius:6px;transition:color .15s}
.footer-links a:hover{color:var(--brand)}

/* ---------- 15. 回到顶部：悬浮胶囊 ---------- */
#back-top,.back-top{
  box-shadow:var(--shadow-lg);border:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  transition:opacity .25s,transform .25s var(--ease-spring),box-shadow .25s;
}
#back-top:hover,.back-top:hover{transform:translateY(-3px);box-shadow:var(--shadow-brand)}

/* ---------- 16. 深色模式细节补完 ---------- */
[data-theme="dark"] .hero-card{
  background:
    radial-gradient(720px 300px at 88% -30%, rgba(61,220,151,.3), transparent 60%),
    radial-gradient(560px 260px at -8% 110%, rgba(37,212,142,.24), transparent 60%),
    linear-gradient(135deg,#141826 0%,#1d2334 100%);
  border:1px solid rgba(61,220,151,.18);
  box-shadow:0 18px 48px -16px rgba(0,0,0,.7);
}
[data-theme="dark"] .ticker-strip{border-top:none}
[data-theme="dark"] .tag-original{box-shadow:0 2px 10px -2px rgba(37,212,142,.5)}
[data-theme="dark"] .nf-ch-tab{background:var(--bg-elev)}
[data-theme="dark"] .nf-filters button,[data-theme="dark"] .art-filters button{background:var(--bg-elev)}
[data-theme="dark"] #load-more{background:var(--bg-elev)}
[data-theme="dark"] .share-bar{background:var(--bg-elev)}

/* ---------- 17. 移动端精修 ---------- */
@media (max-width:768px){
  .daily-brief{padding:16px 16px 17px;border-radius:14px}
  .daily-brief::after{display:none}
  .db-brief{margin:0;padding:8px 10px}
  .hero-card{border-radius:14px}
  .feed-item{padding:16px 12px;margin:0 -12px}
  .nf-ch-tab{padding:5px 13px;font-size:13px}
  #load-more{width:100%;padding:12px}
  .ticker-set{gap:24px;padding-right:24px}
  .tick+.tick::before{left:-12px}
}
/* 触摸设备取消悬停位移（避免粘滞） */
@media (hover:none){
  .side-widget:hover,.hot-flash-card:hover,.mini-art-card:hover{transform:none}
  .hero-card:hover{transform:none}
}

/* ==========================================================================
   v12 修复与升级层
   ① 登录/注册页布局修复（v13.1 容器 440px 与 v10 双栏网格冲突导致竖排崩坏）
   ② 登录页品牌化升级（对接 v11 设计令牌）
   ========================================================================== */

/* ---------- v12.1 登录页布局修复 ---------- */
/* 覆盖 v13.1 的 max-width:440px：双栏（插画+表单）需要更宽容器 */
.auth-panel{max-width:920px;margin:56px auto 80px}
/* 双栏网格：插画 380px + 表单 420px，允许在小屏收缩但不至于压垮 */
.auth-wrap{grid-template-columns:minmax(0,380px) minmax(0,420px);gap:48px}
/* 表单卡不再参与外层压缩，始终保有最小可读宽度 */
.auth-card{min-width:0;width:100%}
/* 插画与表单垂直居中已由 align-items:center 承担，保持 */

/* ---------- v12.2 登录页品牌化升级（对接 v11 令牌） ---------- */
.auth-card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-lg,18px);
  box-shadow:var(--shadow-lg)}
.auth-logo-mark{background:var(--brand-grad);color:#fff;box-shadow:var(--shadow-brand)}
[data-theme="dark"] .auth-logo-mark{background:var(--brand-grad);color:#fff}
.auth-card h1{color:var(--text-1);letter-spacing:.5px}
.auth-sub{color:var(--text-3)}
.auth-input-wrap input{background:var(--bg);border:1.5px solid var(--line-strong);color:var(--text-1)}
.auth-input-wrap input:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(10,158,95,.12)}
[data-theme="dark"] .auth-input-wrap input{background:var(--bg-soft);border-color:var(--line-strong)}
[data-theme="dark"] .auth-input-wrap input:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(37,212,142,.18)}
.auth-submit{background:var(--brand-grad);color:#fff;box-shadow:var(--shadow-brand);
  transition:transform .16s var(--ease-spring),box-shadow .2s,opacity .15s}
.auth-submit:hover{opacity:1;transform:translateY(-1px)}
.auth-submit:active{transform:scale(.985)}
[data-theme="dark"] .auth-submit{background:var(--brand-grad);color:#fff}
.auth-switch .link-btn,.auth-switch a{color:var(--brand)}
.auth-illust{border:none;box-shadow:var(--shadow-lg)}
/* 移动端：单列表单居中，容器收窄 */
@media (max-width:820px){
  .auth-panel{max-width:480px;margin:32px auto 60px}
  .auth-wrap{grid-template-columns:minmax(0,420px)}
}

/* ==========================================================================
   v12 全端兼容层
   ③ 微信浏览器降级（旧内核无 backdrop-filter 时导航退回实色）
   ④ 移动端底部快捷导航（App 式）
   ⑤ PC 宽屏适配（≥1440px 内容区加宽）
   ⑥ 配色收敛（渐变仅保留在 logo/按钮/关键标记）
   ========================================================================== */

/* ---------- v12.3 微信/旧内核降级：无 backdrop-filter 时导航实色 ---------- */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .site-header{background:var(--bg-panel)}
  [data-theme="dark"] .site-header{background:#10131a}
  .nav-more-menu,.mobile-tabbar{background:var(--bg-panel)}
  [data-theme="dark"] .nav-more-menu,[data-theme="dark"] .mobile-tabbar{background:#161a22}
}
/* 微信 UA 由 JS 打标（html.wechat-ua）：禁用橡皮筋白边、修正 100vh 抖动 */
html.wechat-ua body{overscroll-behavior-y:none}
html.wechat-ua .site-header{position:sticky}

/* ---------- v12.4 移动端底部快捷导航 ---------- */
.mobile-tabbar{display:none}
@media (max-width:768px){
  .mobile-tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:300;
    background:var(--glass-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
    border-top:1px solid var(--line);
    padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));
  }
  [data-theme="dark"] .mobile-tabbar{background:rgba(16,19,26,.86)}
  .mtab{
    flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
    padding:5px 0 3px;color:var(--text-3);text-decoration:none;
    font-size:10.5px;line-height:1;border-radius:10px;
    transition:color .15s var(--ease-spring);
  }
  .mtab i{font-size:17px}
  .mtab.active{color:var(--brand);font-weight:700}
  .mtab:active{background:var(--bg-soft)}
  /* 底栏占位，避免遮挡页脚与加载更多按钮 */
  body{padding-bottom:calc(58px + env(safe-area-inset-bottom,0px))}
  .back-top{bottom:calc(76px + env(safe-area-inset-bottom,0px))!important}
}

/* ---------- v12.5 PC 宽屏适配 ---------- */
@media (min-width:1440px){
  .header-inner,.ticker-inner,.page-main,.footer-inner{max-width:1280px}
}
@media (min-width:1680px){
  .header-inner,.ticker-inner,.page-main,.footer-inner{max-width:1360px}
}

/* ---------- v12.6 配色收敛：渐变只保留在品牌关键点 ---------- */
/* 频道 Tab 激活态由渐变填充 → 品牌蓝实底（更克制、对标律动） */
.nf-ch-tab.active{background:var(--brand);box-shadow:none}
.nf-filters button.active{background:var(--brand);box-shadow:none}
/* 分类胶囊由渐变 → 品牌蓝浅底 */
.feed-meta .cat{background:var(--brand-grad-soft);color:var(--brand)}
/* 原创徽章保留渐变（品牌关键标记），按钮保留渐变（转化关键点） */

/* ==========================================================================
   v12.7 首页信息架构重排
   ① 早参压缩为顶部横幅条  ② Hero 收敛为单张横向编辑精选卡  ③ 快讯时间轴主角化
   ========================================================================== */
/* ① 早参横幅化：整体压缩为一层薄报头 */
.daily-brief{padding:12px 20px 13px;margin-bottom:20px;border-radius:14px}
.daily-brief::after{display:none}
.db-mast{gap:10px;padding-bottom:9px;margin-bottom:10px}
.db-mast-brand{font-size:13px;letter-spacing:.22em}
.db-lead{margin-bottom:10px}
.db-lead-kicker{font-size:10.5px;padding:1px 7px;margin-bottom:6px}
.db-lead-title{font-size:16.5px;-webkit-line-clamp:1;margin:0}
.db-lead-sub{display:none}
.db-brief{border-radius:8px;padding:5px 14px 5px 8px;margin:0}
.db-brief+.db-brief{padding-left:14px}
.db-brief-title{font-size:12.5px;-webkit-line-clamp:1}
.db-brief-no{font-size:11px}

/* ② Hero 收敛：编辑精选单卡横幅（不再撑满双栏大卡） */
.top-section{margin-bottom:20px}
.hero-card{padding:18px 26px}
.hero-grid{grid-template-columns:minmax(0,1fr) 200px;gap:20px}
.hero-grid.no-img{grid-template-columns:minmax(0,1fr)}
.hero-img{width:200px;height:112px}
.hero-title{font-size:19px;-webkit-line-clamp:2;margin-bottom:6px}
.hero-desc{font-size:13px;-webkit-line-clamp:1}
.hero-meta{margin-top:8px}

/* ③ 快讯时间轴主角化：栏目标题强化，成为首屏视觉锚点 */
.nf-main-section .section-head h2{font-size:18px;letter-spacing:-.01em}

@media (max-width:768px){
  .daily-brief{padding:12px 14px;margin-bottom:14px}
  .db-mast{padding-bottom:8px;margin-bottom:9px}
  .db-lead-title{font-size:15px}
  .db-brief-title{font-size:12.5px;-webkit-line-clamp:1}
  .top-section{margin-bottom:14px}
  .hero-card{padding:14px 16px}
  .hero-title{font-size:16.5px}
}

/* ==========================================================================
   v12.8 品牌色回归修复层
   ① 全站蓝紫 → 币润品牌绿（logo 绿 #03cd76 体系），黑白绿三色高级感
   ② 登录页重做：左侧黑底品牌面板（真实 LOGO）+ 右侧简洁表单
   ========================================================================== */

/* ---------- ① 品牌令牌重定义：黑 + 币润绿 ---------- */
:root{
  --brand:#0a9e5f;                       /* 主品牌绿（可读性加深版） */
  --brand-hover:#07854f;
  --brand-2:#03cd76;                     /* logo 原始绿（点缀/高亮） */
  --brand-grad:linear-gradient(135deg,#0a9e5f 0%,#03cd76 100%);
  --brand-grad-soft:linear-gradient(135deg,rgba(10,158,95,.08),rgba(3,205,118,.08));
  --brand-glow:rgba(3,205,118,.26);
  --ink:#111214;                          /* 品牌黑 */
}
[data-theme="dark"]{
  --brand:#25d48e;
  --brand-hover:#4ae2a4;
  --brand-2:#03cd76;
  --brand-grad:linear-gradient(135deg,#0fbf75 0%,#3ddc97 100%);
  --brand-grad-soft:linear-gradient(135deg,rgba(37,212,142,.13),rgba(3,205,118,.13));
  --brand-glow:rgba(37,212,142,.3);
}
/* 页面底色氛围光改绿系（极淡） */
body{
  background:
    radial-gradient(1200px 480px at 12% -160px, rgba(3,205,118,.04), transparent 60%),
    radial-gradient(1000px 420px at 88% -120px, rgba(10,158,95,.035), transparent 60%),
    var(--bg);
}
[data-theme="dark"] body{
  background:
    radial-gradient(1200px 520px at 12% -180px, rgba(3,205,118,.07), transparent 62%),
    radial-gradient(1000px 460px at 88% -140px, rgba(37,212,142,.05), transparent 62%),
    var(--bg);
}
/* 头部 logo 阴影：绿光 → 中性黑，贴合黑色 logo */
.logo-img{box-shadow:0 2px 10px -2px rgba(17,18,20,.35)}
/* logo 副标题 BiRun：渐变文字改品牌绿 */
.logo-text em{background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
/* v12.33：ai-radar 标题回归墨色，圆点用品牌绿，去渐变 */
.ai-radar-title{color:var(--text-1)!important;background:none!important;-webkit-text-fill-color:currentColor!important}
.ai-radar-dot{background:var(--brand)!important}
.related-ai-brand{background:rgba(13,138,86,.09)!important;color:var(--brand)!important;-webkit-text-fill-color:currentColor}
.ai-radar-title i{-webkit-text-fill-color:currentColor;color:var(--brand)!important;background:rgba(13,138,86,.09)!important}
/* Hero 头条卡：紫色辉光 → 绿色辉光（深黑底） */
.hero-card{
  background:
    radial-gradient(720px 300px at 88% -30%, rgba(3,205,118,.28), transparent 60%),
    radial-gradient(560px 260px at -8% 110%, rgba(10,158,95,.22), transparent 60%),
    linear-gradient(135deg,#0d1210 0%,#16201b 100%)!important;
}
.hero-card::after{background:radial-gradient(circle,rgba(3,205,118,.32),transparent 62%)!important}
[data-theme="dark"] .hero-card{border:1px solid rgba(3,205,118,.16)!important}
.hero-kicker{color:#5fd9a4}
.hero-kicker::before{background:var(--brand)}

/* ---------- ② 登录页 v12.22 重设计 ---------- */
.auth-panel{max-width:920px;margin:48px auto 84px}
.auth-wrap{grid-template-columns:minmax(0,410px) minmax(0,420px);gap:0;align-items:stretch;
  border-radius:24px;overflow:hidden;box-shadow:0 24px 70px -24px rgba(6,20,13,.35),0 4px 18px rgba(0,0,0,.06);border:1px solid var(--line)}
/* 左侧：品牌面板（黑绿 + 网点纹理 + K线 + 呼吸光斑） */
.auth-brand{position:relative;display:flex;align-items:center;padding:46px 42px 120px;
  background:
    radial-gradient(620px 340px at 88% -12%, rgba(3,205,118,.24), transparent 60%),
    radial-gradient(460px 280px at -12% 110%, rgba(10,158,95,.18), transparent 60%),
    linear-gradient(158deg,#0c120e 0%,#121a15 52%,#0b100d 100%);
  color:#fff;overflow:hidden}
.auth-brand::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(rgba(255,255,255,.055) 1px,transparent 1px);background-size:22px 22px}
.auth-brand-inner{position:relative;z-index:2;width:100%}
.auth-brand-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}
.auth-brand-logo{width:46px;height:46px;border-radius:12px;display:block;
  background:rgba(255,255,255,.07);padding:6px;box-sizing:content-box;
  border:1px solid rgba(255,255,255,.1);box-shadow:0 8px 24px -8px rgba(3,205,118,.35)}
.auth-live-badge{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.08em;
  color:#4ecf9d;background:rgba(43,189,130,.1);border:1px solid rgba(43,189,130,.28);border-radius:999px;padding:5px 12px}
.auth-live-dot{width:7px;height:7px;border-radius:50%;background:#2bbd82;box-shadow:0 0 0 0 rgba(43,189,130,.6);
  animation:authPulse 1.8s ease-out infinite}
@keyframes authPulse{0%{box-shadow:0 0 0 0 rgba(43,189,130,.55)}70%{box-shadow:0 0 0 8px rgba(43,189,130,0)}100%{box-shadow:0 0 0 0 rgba(43,189,130,0)}}
.auth-brand-slogan{font-size:31px;font-weight:900;line-height:1.36;letter-spacing:.02em;margin:0 0 12px}
.auth-slogan-em{color:#4ecf9d}
.auth-brand-sub{font-size:13.5px;color:rgba(255,255,255,.58);margin:0 0 26px;line-height:1.75;max-width:300px}
.auth-brand-points{list-style:none;margin:0 0 28px;padding:0;display:grid;gap:12px}
.auth-brand-points li{font-size:13.5px;font-weight:500;color:rgba(255,255,255,.82);display:flex;align-items:center;gap:12px}
.auth-brand-points i{width:30px;height:30px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;color:#2bbd82;background:rgba(43,189,130,.12);border:1px solid rgba(43,189,130,.22);flex-shrink:0}
.auth-brand-stats{display:flex;align-items:center;gap:16px;padding:14px 16px;border-radius:14px;
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09);backdrop-filter:blur(4px)}
.auth-stat{display:grid;gap:2px;min-width:0}
.auth-stat strong{font-size:16px;font-weight:900;color:#4ecf9d;letter-spacing:.02em;line-height:1.1}
.auth-stat span{font-size:11px;color:rgba(255,255,255,.5);white-space:nowrap}
.auth-stat-sep{width:1px;height:26px;background:rgba(255,255,255,.12);flex-shrink:0}
.auth-brand-chart{position:absolute;left:0;right:0;bottom:0;width:100%;height:110px;z-index:1;pointer-events:none;opacity:.9}
.auth-brand-glow{position:absolute;right:-70px;top:-80px;width:280px;height:280px;border-radius:50%;z-index:0;
  background:radial-gradient(circle,rgba(43,189,130,.14),transparent 65%);pointer-events:none;
  animation:authGlow 6s ease-in-out infinite alternate}
.auth-brand-glow2{position:absolute;left:-90px;bottom:-60px;width:240px;height:240px;border-radius:50%;z-index:0;
  background:radial-gradient(circle,rgba(13,138,86,.12),transparent 65%);pointer-events:none;
  animation:authGlow 7s ease-in-out infinite alternate-reverse}
@keyframes authGlow{from{transform:scale(1);opacity:.8}to{transform:scale(1.18);opacity:1}}
/* 右侧：表单卡与面板拼合 */
.auth-card{border:none!important;border-radius:0!important;box-shadow:none!important;
  padding:44px 42px 34px;background:var(--bg-panel)!important}
[data-theme="dark"] .auth-card{background:var(--bg-elev)!important}
.auth-logo{margin-bottom:22px;justify-content:flex-start}
.auth-logo-img{width:40px;height:40px;border-radius:11px;display:block;object-fit:contain}
[data-theme="dark"] .auth-logo-img{content:url('/static/brand/logo-icon-dark.webp')}
.auth-logo-text{font-size:17px;font-weight:800;letter-spacing:.02em}
.auth-logo-text em{font-style:normal;font-weight:700;font-size:12.5px;margin-left:6px;
  background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.auth-card h1{text-align:left;font-size:24px;letter-spacing:.01em}
.auth-sub{text-align:left;margin-bottom:26px}
.auth-input-wrap input{border-radius:13px;padding:12px 42px 12px 40px;transition:border-color .18s,box-shadow .18s,background .18s}
/* 登录按钮：品牌绿渐变主 CTA */
.auth-submit{background:var(--brand)!important;color:#fff!important;font-weight:800;letter-spacing:.14em;
  border-radius:13px;padding:13px 0;box-shadow:0 8px 20px -8px rgba(13,138,86,.45)!important;
  transition:transform .15s,box-shadow .15s,filter .15s}
.auth-submit:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 12px 26px -8px rgba(13,138,86,.5)!important}
.auth-submit:active{transform:scale(.985)}
[data-theme="dark"] .auth-submit{background:var(--brand)!important;color:#08130e!important;
  box-shadow:0 8px 22px -8px rgba(43,189,130,.4)!important}
/* 输入框聚焦：品牌绿描边 */
.auth-input-wrap input:focus{border-color:var(--brand)!important;box-shadow:0 0 0 3.5px rgba(13,138,86,.14)!important}
[data-theme="dark"] .auth-input-wrap input:focus{border-color:var(--brand)!important;box-shadow:0 0 0 3.5px rgba(37,212,142,.16)!important}
.auth-switch .link-btn,.auth-switch a{color:var(--brand)!important;font-weight:700}
/* 权益：胶囊 chip 横排 */
.auth-perks{display:flex;flex-wrap:wrap;gap:8px;border-top:none;padding-top:14px;margin-top:14px}
.auth-perks li{font-size:12px;font-weight:600;color:var(--text-2,#555);background:rgba(13,138,86,.06);
  border:1px solid rgba(13,138,86,.16);border-radius:999px;padding:6px 12px;display:inline-flex;align-items:center}
.auth-perks i{color:var(--brand);margin-right:6px;font-size:11px}
[data-theme="dark"] .auth-perks li{background:rgba(37,212,142,.08);border-color:rgba(37,212,142,.2);color:var(--text-2,#aab)}
/* 移动端：品牌面板压缩为顶部横幅（保留品牌感） */
@media (max-width:820px){
  .auth-panel{max-width:460px;margin:26px auto 60px;padding:0 14px}
  .auth-wrap{grid-template-columns:minmax(0,1fr);border-radius:20px}
  .auth-brand{display:flex;padding:24px 22px 58px}
  .auth-brand-top{margin-bottom:16px}
  .auth-brand-logo{width:36px;height:36px;border-radius:10px;padding:5px}
  .auth-brand-slogan{font-size:21px;line-height:1.3;margin-bottom:8px}
  .auth-brand-slogan br{display:none}
  .auth-slogan-em::before{content:' · '}
  .auth-brand-sub{margin-bottom:0;font-size:12.5px}
  .auth-brand-points,.auth-brand-stats{display:none}
  .auth-brand-chart{height:66px}
  .auth-card{padding:30px 24px 26px}
  .auth-card h1{font-size:21px}
  .auth-perks{gap:6px}
  .auth-perks li{font-size:11px;padding:5px 10px}
}

/* ============ ★ v12.14 深度频道杂志式首屏（/articles） ============ */
.art-page-mag { max-width: 980px; }
.mag-zone { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 18px; margin-bottom: 22px; align-items: stretch; }
.mag-zone .hero-card { margin-bottom: 0; height: 100%; }
.mag-side { display: flex; flex-direction: column; gap: 10px; background: var(--card, #fff); border: 1px solid var(--line, #e8eaef); border-radius: 14px; padding: 14px; }
[data-theme="dark"] .mag-side { background: #1d2026; border-color: var(--line-strong, #2c313c); }
.mag-side-head { font-size: 13px; font-weight: 800; color: var(--brand); display: flex; align-items: center; gap: 6px; letter-spacing: .02em; }
.mag-card { display: flex; gap: 10px; align-items: flex-start; padding: 10px 8px; border-radius: 10px; transition: background .15s; flex: 1; }
.mag-card:hover { background: var(--bg-2, #f4f5f8); }
[data-theme="dark"] .mag-card:hover { background: #262b34; }
.mag-card-img { width: 78px; height: 56px; border-radius: 8px; overflow: hidden; flex: none; }
.mag-card-img img { width: 100%; height: 100%; object-fit: cover; }
.mag-card-idx { font-size: 24px; font-weight: 900; color: var(--text-3); opacity: .45; line-height: 1; flex: none; width: 34px; padding-top: 4px; font-style: italic; }
.mag-card-body { min-width: 0; }
.mag-card-kicker { font-size: 11.5px; color: var(--brand); font-weight: 700; margin-bottom: 3px; }
.mag-card-title { font-size: 14px; font-weight: 700; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mag-card:hover .mag-card-title { color: var(--brand); }
.mag-card-meta { margin-top: 5px; font-size: 12px; color: var(--text-3); }
.read-mins { white-space: nowrap; }
.read-mins i { font-size: 11px; margin-right: 2px; opacity: .8; }
@media (max-width: 860px) {
  .mag-zone { grid-template-columns: 1fr; }
  .mag-side { flex-direction: row; overflow-x: auto; padding: 10px; }
  .mag-side-head { display: none; }
  .mag-card { min-width: 240px; }
}

/* ---------- 登录页 v12.22.1：PC 全宽分屏（去两侧留白） ---------- */
@media (min-width:821px){
  body:has(#auth-panel:not([hidden])){overflow-x:hidden}
  .auth-panel{max-width:none;width:100vw;margin:-28px 0 -60px calc(50% - 50vw);padding:0}
  .auth-wrap{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);max-width:none;
    min-height:calc(100vh - var(--header-h,60px));
    border-radius:0;border:none;box-shadow:none}
  /* 左半屏：品牌区放大 */
  .auth-brand{padding:72px 6vw 170px}
  .auth-brand-inner{max-width:500px;margin-left:auto;margin-right:4vw}
  .auth-brand-logo{width:54px;height:54px;border-radius:14px}
  .auth-brand-slogan{font-size:40px;line-height:1.32;margin-bottom:14px}
  .auth-brand-sub{font-size:14.5px;max-width:360px;margin-bottom:30px}
  .auth-brand-points{gap:14px;margin-bottom:32px}
  .auth-brand-points li{font-size:14px}
  .auth-brand-points i{width:32px;height:32px;border-radius:10px;font-size:13px}
  .auth-brand-stats{padding:16px 18px}
  .auth-stat strong{font-size:18px}
  .auth-brand-chart{height:160px}
  .auth-brand-glow{width:360px;height:360px}
  .auth-brand-glow2{width:320px;height:320px}
  /* 右半屏：表单垂直居中，内容限宽 */
  .auth-card{display:flex;flex-direction:column;justify-content:center;align-items:center;
    padding:56px 6vw!important}
  .auth-card>*{width:100%;max-width:404px}
  .auth-card h1{font-size:27px}
  .auth-sub{font-size:13.5px}
  .auth-input-wrap input{padding:13px 42px 13px 40px}
  .auth-submit{padding:14px 0;font-size:15px}
}

/* ============================================================
   v12.23 全球股市看板 /stocks
   ============================================================ */
#stocks-page{max-width:1200px;margin:0 auto;padding:8px 0 40px}
.stk-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.stk-head h1{font-size:24px;font-weight:800;color:var(--text-1);display:flex;align-items:center;gap:10px;margin:0 0 6px}
.stk-head h1 i{color:var(--brand);font-size:20px}
.stk-sub{font-size:13px;color:var(--text-3);margin:0}
.stk-mkt-pills{display:flex;gap:8px;flex-wrap:wrap}
.stk-mkt-pill{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border:1px solid var(--line-strong);border-radius:999px;font-size:12.5px;color:var(--text-2);background:var(--bg-panel)}
.stk-mkt-pill.is-open{border-color:rgba(14,203,129,.45);background:rgba(14,203,129,.06)}
.stk-mkt-flag{font-size:14px}
.stk-mkt-session{font-style:normal;font-weight:700;margin-left:2px}
.stk-mkt-session.s-open{color:var(--up)}
.stk-mkt-session.s-pre,.stk-mkt-session.s-post{color:var(--accent-amber,#d98e04)}
.stk-mkt-session.s-lunch{color:var(--text-3)}
.stk-mkt-session.s-closed{color:var(--text-3)}
.stk-mkt-time{font-style:normal;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums;margin-left:1px}
.stk-bj-clock{font-size:12.5px;color:var(--text-2);font-variant-numeric:tabular-nums}
.stk-bj-clock i{color:var(--brand);margin-right:4px}
.stk-meta-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.stk-updated{font-size:12.5px;color:var(--text-3)}
.stk-updated i{color:var(--brand);margin-right:4px}
.stk-sources{font-size:11.5px;color:var(--text-3);opacity:.8;max-width:70%;text-align:right}
.stk-stale{margin:0 0 12px;padding:9px 14px;border-radius:var(--radius);background:rgba(240,160,32,.1);border:1px solid rgba(240,160,32,.35);color:#b97a10;font-size:13px}
[data-theme="dark"] .stk-stale{color:#f0b95a}
.stk-tabs{display:flex;gap:8px;margin-bottom:14px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.stk-tabs::-webkit-scrollbar{display:none}
.stk-tab{flex-shrink:0;padding:7px 16px;border:1px solid var(--line-strong);border-radius:999px;background:var(--bg-panel);color:var(--text-2);font-size:13.5px;font-weight:600;cursor:pointer;transition:all .15s}
.stk-tab:hover{border-color:var(--brand);color:var(--brand)}
.stk-tab.active{background:var(--brand);border-color:var(--brand);color:#fff}
.stk-table-head{display:grid;grid-template-columns:260px 170px 170px 1fr;gap:12px;padding:8px 16px;font-size:12px;color:var(--text-3);font-weight:600;border-bottom:1px solid var(--line-strong)}
.stk-list{display:flex;flex-direction:column}
.stk-row{display:grid;grid-template-columns:260px 170px 170px 1fr;gap:12px;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line);transition:background .5s}
.stk-row:hover{background:var(--bg-soft)}
.stk-row.flash-up{animation:stkFlashUp 1.2s ease-out}
.stk-row.flash-down{animation:stkFlashDown 1.2s ease-out}
@keyframes stkFlashUp{0%{background:rgba(14,203,129,.16)}100%{background:transparent}}
@keyframes stkFlashDown{0%{background:rgba(246,70,93,.14)}100%{background:transparent}}
.stk-c-stock{display:flex;align-items:center;gap:9px;min-width:0}
.stk-flag{font-size:17px;flex-shrink:0}
.stk-names{display:flex;flex-direction:column;min-width:0}
.stk-names b{font-size:14px;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stk-names i{font-style:normal;font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stk-session{flex-shrink:0;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:4px;background:var(--bg-soft);color:var(--text-3)}
.stk-session.s-open{background:rgba(14,203,129,.12);color:var(--up)}
.stk-session.s-pre,.stk-session.s-post{background:rgba(240,160,32,.12);color:#d78a10}
.stk-c-price{display:flex;flex-direction:column}
.stk-px{font-size:15px;font-weight:700;color:var(--text-1);font-variant-numeric:tabular-nums}
.stk-pct{font-style:normal;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}
.stk-usd{font-style:normal;font-size:11px;color:var(--text-3)}
.stk-c-ext{font-size:12.5px;color:var(--text-2);font-variant-numeric:tabular-nums}
.stk-c-ext em{font-style:normal;font-weight:700}
.stk-ext-label{font-size:10.5px;font-weight:700;padding:1px 5px;border-radius:3px;background:rgba(240,160,32,.12);color:#d78a10;margin-right:2px}
.stk-c-tokens{display:flex;flex-wrap:wrap;gap:6px}
.stk-token{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border:1px solid var(--line-strong);border-radius:6px;font-size:11.5px;background:var(--bg-panel);font-variant-numeric:tabular-nums}
.tk-venue{font-size:9.5px;font-weight:800;padding:1px 4px;border-radius:3px;letter-spacing:.02em}
.v-bn .tk-venue{background:rgba(240,185,11,.15);color:#c29200}
.v-okx .tk-venue{background:rgba(0,0,0,.08);color:var(--text-1)}
[data-theme="dark"] .v-okx .tk-venue{background:rgba(255,255,255,.12)}
.v-hl .tk-venue{background:rgba(80,210,190,.15);color:#0e9a85}
.tk-coin{color:var(--text-2);font-weight:600}
.tk-px{color:var(--text-1);font-weight:700}
.tk-pct{font-style:normal;font-weight:700}
.tk-prem{font-style:normal;font-weight:700;padding:1px 5px;border-radius:3px;font-size:10.5px}
.tk-prem.up{background:rgba(14,203,129,.1)}
.tk-prem.down{background:rgba(246,70,93,.1)}
.stk-token-none{font-size:11.5px;color:var(--text-3)}
.stk-empty{padding:40px 0;text-align:center;color:var(--text-3);font-size:14px}
.stk-note{margin-top:18px;padding:12px 16px;border-radius:var(--radius);background:var(--bg-soft)}
.stk-note p{margin:0;font-size:12px;color:var(--text-3);line-height:1.7}
.stk-note i{color:var(--brand);margin-right:4px}
/* 骨架屏 */
.stk-skel{pointer-events:none}
.stk-skel-bar{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--bg-soft) 25%,var(--line) 50%,var(--bg-soft) 75%);background-size:200% 100%;animation:stkSkel 1.2s infinite}
.stk-skel-bar.w1{width:70%}.stk-skel-bar.w2{width:55%}.stk-skel-bar.w3{width:85%}
@keyframes stkSkel{0%{background-position:200% 0}100%{background-position:-200% 0}}
/* 移动端:卡片式布局 */
@media (max-width: 820px) {
  .stk-table-head{display:none}
  .stk-row{grid-template-columns:1fr;gap:8px;padding:14px 12px}
  .stk-c-price{flex-direction:row;align-items:baseline;gap:10px}
  .stk-sources{max-width:100%;text-align:left}
  .stk-head h1{font-size:20px}
}

/* ============ v12.24 K线弹层 + 代币交易链接 ============ */
.stk-clickable{cursor:pointer}
.stk-clickable:hover .stk-names b{color:#4f8ef7}
.stk-kicon{font-size:.68em;opacity:.45;margin-left:2px}
.stk-clickable:hover .stk-kicon{opacity:1;color:#4f8ef7}
a.stk-token{text-decoration:none}
a.stk-token:hover{filter:brightness(1.12);text-decoration:none}
.tk-go{font-size:.62em;opacity:.55;margin-left:3px}
a.stk-token:hover .tk-go{opacity:1}
.stk-kmodal{position:fixed;inset:0;z-index:1200;background:rgba(8,10,18,.72);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:18px}
.stk-kmodal-box{width:min(880px,100%);max-height:92vh;display:flex;flex-direction:column;background:var(--card-bg,#12141d);border:1px solid rgba(120,130,155,.18);border-radius:14px;box-shadow:0 18px 60px rgba(0,0,0,.5);overflow:hidden}
.stk-kmodal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 8px}
.stk-kmodal-head h2{margin:0;font-size:1.05rem;display:flex;align-items:center;gap:6px}
.stk-kmodal-head h2 i{font-style:normal;font-size:.78rem;color:#8b93a7;font-weight:400}
.stk-kmodal-close{background:none;border:0;color:#8b93a7;font-size:1.15rem;cursor:pointer;padding:6px 8px;border-radius:8px}
.stk-kmodal-close:hover{color:#fff;background:rgba(120,130,155,.15)}
.stk-kmodal-tabs{display:flex;gap:6px;padding:0 18px 10px}
.stk-ktab{background:rgba(120,130,155,.1);border:1px solid transparent;color:#8b93a7;font-size:.8rem;padding:5px 14px;border-radius:999px;cursor:pointer}
.stk-ktab.active{background:rgba(79,142,247,.16);border-color:rgba(79,142,247,.4);color:#4f8ef7}
.stk-kmodal-chart{flex:1;min-height:320px;height:46vh;margin:0 10px}
.stk-kerr{display:flex;align-items:center;justify-content:center;height:100%;min-height:280px;color:#8b93a7;font-size:.88rem}
.stk-kmodal-hint{margin:6px 18px 14px;font-size:.75rem;color:#8b93a7}
@media (max-width:820px){
  .stk-kmodal{padding:0;align-items:flex-end}
  .stk-kmodal-box{width:100%;max-height:88vh;border-radius:14px 14px 0 0}
  .stk-kmodal-chart{height:52vh;min-height:260px}
}

/* ============ v12.31 AI 舆情信号页(重设计:与全站设计系统对齐,支持暗色) ============ */
#signals-page{max-width:1200px;margin:0 auto;padding:8px 0 40px}
.sg-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.sg-head h1{font-size:26px;font-weight:800;color:var(--text-1);letter-spacing:-.01em;margin:0 0 6px}
.sg-sub{font-size:13px;color:var(--text-3);margin:0}
.sg-updated{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-3);background:var(--bg-soft);border:1px solid var(--line);border-radius:999px;padding:5px 12px}
.sg-live-dot{width:7px;height:7px;border-radius:50%;background:var(--up);flex:none;animation:sgPulse 2s ease-in-out infinite}
@keyframes sgPulse{0%,100%{box-shadow:0 0 0 0 rgba(14,203,129,.45)}50%{box-shadow:0 0 0 5px rgba(14,203,129,0)}}

/* ---- 顶部仪表三卡 ---- */
.sg-dash{display:grid;grid-template-columns:250px 290px 1fr;gap:14px;margin-bottom:16px}
.sg-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;padding:18px 20px;box-shadow:var(--shadow)}
.sg-card h3{font-size:12px;font-weight:600;color:var(--text-3);letter-spacing:.06em;margin:0 0 14px;text-transform:uppercase}
/* 半圆仪表盘(恐慌贪婪) */
.sg-arc-wrap{position:relative;display:flex;flex-direction:column;align-items:center}
.sg-arc{position:relative;width:150px;height:75px;border-radius:150px 150px 0 0;overflow:hidden;
  background:conic-gradient(from 270deg at 50% 100%, #f6465d 0deg, #f0a020 60deg, #c8cdd4 90deg, #8fd460 120deg, #0ecb81 180deg);
  -webkit-mask:radial-gradient(circle at 50% 100%, transparent 44px, #000 45px);mask:radial-gradient(circle at 50% 100%, transparent 44px, #000 45px)}
.sg-arc-needle{position:absolute;left:50%;bottom:0;width:3px;height:66px;background:var(--text-1);border-radius:3px;transform-origin:50% 100%;transform:rotate(-90deg);transition:transform .8s cubic-bezier(.34,1.3,.5,1)}
.sg-arc-val{margin-top:-38px;text-align:center;position:relative;z-index:1}
.sg-arc-val b{display:block;font-size:30px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text-1);line-height:1.1}
.sg-arc-val span{font-size:12px;color:var(--text-3);font-weight:600}
/* 舆情净值 */
.sg-gauge{display:flex;align-items:baseline;gap:10px}
.sg-gauge b{font-size:36px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text-1)}
.sg-gauge b.up{color:var(--up)}.sg-gauge b.down{color:var(--down)}
.sg-gauge span{font-size:11.5px;color:var(--text-3)}
.sg-bar{position:relative;height:8px;border-radius:4px;background:var(--bg-soft);border:1px solid var(--line);margin-top:16px}
.sg-bar::after{content:'';position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--line-strong)}
.sg-bar i{position:absolute;top:1px;bottom:1px;border-radius:3px;transition:all .6s ease}
.sg-narrative{font-size:14.5px;line-height:1.75;color:var(--text-1);margin:0 0 10px;font-weight:500}
.sg-meta{font-size:11.5px;color:var(--text-3)}

/* ---- 面板通用(温度计/胜率) ---- */
.sg-panel{margin:16px 0;padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--bg-panel);box-shadow:var(--shadow)}
.sg-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.sg-panel-head h2{font-size:16.5px;font-weight:800;color:var(--text-1);margin:0;display:flex;align-items:center;gap:10px;letter-spacing:-.01em}
.sg-panel-ico{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:color-mix(in srgb, var(--brand) 12%, transparent);color:var(--brand);font-size:14px}
.sg-panel-stats{font-size:12.5px;color:var(--text-3)}
.sg-panel-stats b{color:var(--text-1);font-weight:700}
.sg-panel-sub{font-size:12px;color:var(--text-3);margin:8px 0 16px}

/* ---- 信号卡(方向染色 + 环形强度) ---- */
.sg-sig-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.sg-sig{position:relative;border:1px solid var(--line);border-radius:12px;padding:16px;overflow:hidden;background:var(--bg-panel)}
.sg-sig::before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.5}
.sg-sig.long{border-color:color-mix(in srgb, var(--up) 32%, var(--line))}
.sg-sig.long::before{background:linear-gradient(135deg, color-mix(in srgb, var(--up) 9%, transparent), transparent 55%)}
.sg-sig.short{border-color:color-mix(in srgb, var(--down) 32%, var(--line))}
.sg-sig.short::before{background:linear-gradient(135deg, color-mix(in srgb, var(--down) 9%, transparent), transparent 55%)}
.sg-sig>*{position:relative}
.sg-sig-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sg-sig-coin{font-size:19px;font-weight:800;letter-spacing:-.01em;color:var(--text-1)}
.sg-sig-dir{font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;display:inline-flex;align-items:center;gap:5px}
.sg-sig-dir.up{color:var(--up);background:color-mix(in srgb, var(--up) 13%, transparent)}
.sg-sig-dir.down{color:var(--down);background:color-mix(in srgb, var(--down) 13%, transparent)}
/* 环形强度表 */
.sg-ring{margin-left:auto;position:relative;width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex:none}
.sg-ring::before{content:'';position:absolute;inset:0;border-radius:50%;background:conic-gradient(var(--ring-c,var(--text-3)) calc(var(--ring-v,0)*1%), var(--bg-soft) 0)}
.sg-ring::after{content:'';position:absolute;inset:4px;border-radius:50%;background:var(--bg-panel)}
.sg-ring b{position:relative;z-index:1;font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text-1)}
.sg-sig.long .sg-ring{--ring-c:var(--up)}
.sg-sig.short .sg-ring{--ring-c:var(--down)}
/* 参考位三格 */
.sg-sig-levels{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 12px}
.sg-lv{background:var(--bg-soft);border:1px solid var(--line);border-radius:9px;padding:7px 10px;min-width:0}
.sg-lv small{display:block;font-size:10.5px;color:var(--text-3);margin-bottom:2px}
.sg-lv b{display:block;font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sg-lv b.up{color:var(--up)}.sg-lv b.down{color:var(--down)}
/* 因子条 */
.sg-sig-facs{display:flex;flex-direction:column;gap:6px;margin:2px 0 4px}
.sg-fac{display:flex;align-items:center;gap:10px;font-size:12px}
.sg-fac-name{width:30px;color:var(--text-3);flex:none;font-weight:500}
.sg-fac-track{position:relative;flex:1;height:5px;background:var(--bg-soft);border-radius:3px}
.sg-fac-track::after{content:'';position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--line-strong)}
.sg-fac-track i{position:absolute;top:0;bottom:0;border-radius:3px}
.sg-fac-track i.up{background:linear-gradient(90deg, color-mix(in srgb, var(--up) 55%, transparent), var(--up))}
.sg-fac-track i.down{background:linear-gradient(270deg, color-mix(in srgb, var(--down) 55%, transparent), var(--down))}
.sg-fac b{width:34px;text-align:right;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--text-2)}
.sg-fac b.up{color:var(--up)}.sg-fac b.down{color:var(--down)}
.sg-sig-note{font-size:12px;line-height:1.6;color:var(--text-2);background:var(--bg-soft);border:1px solid var(--line);border-radius:9px;padding:8px 11px;margin:8px 0 0}
.sg-sig-note i{color:var(--brand);margin-right:5px}
.sg-sig-meta{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--text-3);margin-top:10px}
.sg-chip{font-size:11px;color:var(--text-3);background:var(--bg-soft);border:1px solid var(--line);border-radius:999px;padding:2px 9px}
.sg-chip b{font-weight:700}.sg-chip b.up{color:var(--up)}.sg-chip b.down{color:var(--down)}
.sg-chip-n{opacity:.75}

/* ---- 全量温度分 ---- */
.sg-temps-wrap{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.sg-temps-title{font-size:13px;font-weight:700;color:var(--text-2);margin-bottom:10px}
.sg-temps-title small{font-weight:400;margin-left:8px;color:var(--text-3);font-size:11.5px}
.sg-temps{display:grid;grid-template-columns:repeat(2,1fr);gap:2px 28px}
.sg-temp-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:9px;font-size:13px;transition:background .15s}
.sg-temp-row:hover{background:var(--bg-soft)}
.sg-temp-row.hot{background:color-mix(in srgb, var(--brand) 6%, transparent)}
.sg-temp-row.hot:hover{background:color-mix(in srgb, var(--brand) 10%, transparent)}
.sg-temp-coin{min-width:52px;font-weight:800;color:var(--text-1)}
.sg-temp-px{min-width:128px;color:var(--text-2);font-variant-numeric:tabular-nums;font-size:12.5px}
.sg-temp-px i{font-style:normal;font-size:11.5px;margin-left:5px}
.sg-temp-px .up{color:var(--up)}.sg-temp-px .down{color:var(--down)}
.sg-temp-track{max-width:210px}
.sg-temp-score{min-width:38px;text-align:right;font-variant-numeric:tabular-nums;font-weight:800;color:var(--text-2)}
.sg-temp-score.up{color:var(--up)}.sg-temp-score.down{color:var(--down)}

/* ---- 胜率公示 ---- */
.sg-wr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:16px 0 4px}
.sg-wr-cell{text-align:center;padding:16px 10px 14px;border:1px solid var(--line);border-radius:11px;background:var(--bg-soft)}
.sg-wr-cell b{display:block;font-size:22px;font-weight:800;letter-spacing:-.01em;color:var(--text-1);font-variant-numeric:tabular-nums}
.sg-wr-cell b i{font-style:normal}
.sg-wr-cell b i.up{color:var(--up)}.sg-wr-cell b i.down{color:var(--down)}
.sg-wr-cell span{display:block;font-size:11.5px;color:var(--text-3);margin-top:5px}
.sg-wr-cell em{display:block;font-size:10.5px;color:var(--text-3);opacity:.7;font-style:normal;margin-top:2px}
.sg-wr-title{font-size:12.5px;color:var(--text-2);margin:14px 0 6px;font-weight:700}
.sg-wr-row{display:flex;align-items:center;gap:14px;padding:9px 10px;border-bottom:1px solid var(--line);font-size:13px;flex-wrap:wrap}
.sg-wr-row:last-child{border-bottom:none}
.sg-wr-row b{font-weight:800;min-width:48px;color:var(--text-1)}
.sg-wr-row span{color:var(--text-2)}
.sg-wr-row .up{color:var(--up)}.sg-wr-row .down{color:var(--down)}
.sg-wr-hit{margin-left:auto;font-size:12px;font-weight:700;border-radius:999px;padding:2px 10px}
.sg-wr-hit.up{background:color-mix(in srgb, var(--up) 12%, transparent)}
.sg-wr-hit.down{background:color-mix(in srgb, var(--down) 12%, transparent)}

/* ---- 多空榜 ---- */
.sg-boards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0 20px}
.sg-board-title{font-size:15.5px;font-weight:800;margin:0 0 12px;display:flex;align-items:center;gap:8px}
.sg-board-title.up{color:var(--up)}.sg-board-title.down{color:var(--down)}
.sg-list{display:flex;flex-direction:column;gap:10px}
.sg-coin{background:var(--bg-panel);border:1px solid var(--line);border-radius:12px;padding:13px 15px;box-shadow:var(--shadow);transition:border-color .15s}
.sg-coin:hover{border-color:var(--line-strong)}
.sg-coin-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.sg-coin-sym{font-size:15px;font-weight:800;color:var(--text-1)}
.sg-score{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}
.sg-score.up{color:var(--up)}.sg-score.down{color:var(--down)}
.sg-coin-note{font-size:12.5px;color:var(--text-2);margin-bottom:9px;line-height:1.55}
.sg-coin-chips{display:flex;gap:6px;flex-wrap:wrap}
.sg-empty{padding:26px 16px;text-align:center;color:var(--text-3);font-size:13px;background:var(--bg-soft);border:1px dashed var(--line-strong);border-radius:11px}
.sg-sig-list .sg-empty{grid-column:1/-1}

/* ---- 登录卡/声明/杂项 ---- */
.sg-lock{grid-column:1/-1;text-align:center;padding:32px 16px;color:var(--text-2)}
.sg-lock i{font-size:26px;margin-bottom:10px;display:block;color:var(--brand)}
.sg-lock p{margin:0 0 14px;font-size:13.5px}
.sg-lock-btn{display:inline-block;background:var(--brand);color:#fff;border-radius:999px;padding:9px 26px;font-size:13.5px;font-weight:700;text-decoration:none;transition:background .15s}
.sg-lock-btn:hover{background:var(--brand-hover)}
.sg-note{padding:15px 18px;border-radius:12px;background:var(--bg-soft);border:1px solid var(--line);font-size:12.5px;color:var(--text-3);line-height:1.75}
.sg-note b{color:var(--text-2)}
.sg-note i{margin-right:5px;color:#f0a020}
.sg-roadmap{margin:8px 0 0}
.sg-roadmap a{color:var(--brand);font-weight:600}

@media (max-width:900px){
  .sg-dash{grid-template-columns:1fr 1fr}
  .sg-narrative-card{grid-column:1/-1}
  .sg-boards{grid-template-columns:1fr}
}
@media (max-width:760px){.sg-temps{grid-template-columns:1fr}.sg-temp-px{min-width:100px}}
@media (max-width:640px){
  .sg-sig-list{grid-template-columns:1fr}
  .sg-wr-stats{grid-template-columns:repeat(2,1fr)}
  .sg-dash{grid-template-columns:1fr}
}

/* ============ v12.32 AI 多空温度计首页组件（侧栏 mini + 早参信号条） ============ */
/* 早参信号条：早参区块底部一行，信号/温度分芯片 + 导流 */
.db-senti{display:flex;align-items:center;gap:10px;margin-top:12px;padding:9px 12px;border-radius:var(--radius);background:color-mix(in srgb, var(--brand) 5%, var(--bg-soft));border:1px solid color-mix(in srgb, var(--brand) 14%, var(--line));font-size:12.5px;min-width:0;transition:border-color .15s}
.db-senti:hover{border-color:color-mix(in srgb, var(--brand) 35%, var(--line))}
.db-senti[hidden]{display:none}
.db-senti-tag{display:inline-flex;align-items:center;gap:5px;font-weight:800;color:var(--brand);white-space:nowrap;letter-spacing:.02em}
.db-senti-tag i{font-size:11px}
.db-senti b{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.db-senti-note{color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}
.db-senti-go{margin-left:auto;color:var(--brand);font-weight:700;white-space:nowrap;flex-shrink:0}
/* 侧栏 mini：微型信号卡 */
.sgm-sig{display:flex;align-items:center;gap:8px;padding:9px 11px;border-radius:var(--radius);margin-bottom:8px;font-size:12.5px;border:1px solid var(--line);position:relative;overflow:hidden}
.sgm-sig::before{content:'';position:absolute;inset:0 0 auto 0;height:2px}
.sgm-sig.long{border-color:color-mix(in srgb, var(--up) 30%, var(--line));background:color-mix(in srgb, var(--up) 4%, var(--bg-panel))}
.sgm-sig.long::before{background:linear-gradient(90deg, var(--up), transparent)}
.sgm-sig.short{border-color:color-mix(in srgb, var(--down) 30%, var(--line));background:color-mix(in srgb, var(--down) 4%, var(--bg-panel))}
.sgm-sig.short::before{background:linear-gradient(90deg, var(--down), transparent)}
.sgm-sig-coin{font-weight:900;font-size:13.5px;color:var(--text-1)}
.sgm-sig-dir{font-weight:800;white-space:nowrap}
.sgm-sig-dir i{font-size:10.5px}
.sgm-sig-str{color:var(--text-3);white-space:nowrap}
.sgm-sig-str b{color:var(--text-1);font-variant-numeric:tabular-nums}
.sgm-chg{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11.5px}
/* 侧栏 mini：温度分行（中轴双向条，与 /signals 视觉同源） */
.sgm-list{display:flex;flex-direction:column}
.sgm-row{display:flex;align-items:center;gap:8px;padding:7px 2px;font-size:12.5px;border-bottom:1px solid var(--line);min-width:0}
.sgm-row:last-child{border-bottom:none}
.sgm-coin{font-weight:800;color:var(--text-1);width:44px;flex-shrink:0}
.sgm-track{flex:1;height:5px;border-radius:3px;background:var(--bg-soft);position:relative;overflow:hidden;min-width:40px}
.sgm-track::after{content:'';position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line-strong)}
.sgm-fill{position:absolute;top:0;bottom:0;border-radius:3px}
.sgm-fill.up{background:var(--up)}
.sgm-fill.down{background:var(--down)}
.sgm-score{font-variant-numeric:tabular-nums;width:34px;text-align:right;flex-shrink:0;font-weight:800}
.sgm-row .sgm-chg{margin-left:0;width:48px;text-align:right;color:var(--text-3);font-weight:600}
.sgm-cta{display:block;margin-top:10px;padding:8px;border-radius:var(--radius);text-align:center;font-size:12.5px;font-weight:700;color:var(--brand);background:color-mix(in srgb, var(--brand) 6%, transparent);transition:background .15s}
.sgm-cta:hover{background:color-mix(in srgb, var(--brand) 12%, transparent)}
@media (max-width:760px){
  .db-senti{flex-wrap:wrap;row-gap:4px}
  .db-senti-note{display:none}
}

/* ==========================================================================
   v12.33 冷静的专业绿 —— 全站视觉重设计层（级联覆盖）
   原则：95% 黑白灰 + 5% 点睛绿；颜色是设计出来的，不是撒出去的
   ========================================================================== */

/* ---------- A. 设计令牌：降饱和、去荧光、更沉稳 ---------- */
:root{
  --brand:#0d8a56;                /* 主绿：深一档、灰一度，去荧光感 */
  --brand-hover:#0a6e45;
  --brand-2:#0d8a56;              /* 收编 logo 荧光绿点缀 → 统一主绿 */
  --brand-grad:linear-gradient(135deg,#0d8a56 0%,#12a468 100%);
  --brand-grad-soft:linear-gradient(135deg,rgba(13,138,86,.07),rgba(18,164,104,.07));
  --brand-glow:rgba(13,138,86,.22);
  --up:#0aa06c;                   /* 涨：降饱和绿，久看不刺眼 */
  --down:#e5484d;                 /* 跌：粉红 → 正红，专业感 */
  --hot:#e5484d;                  /* 热点红与跌色统一，减少色相数量 */
  --accent-amber:#d98e04;         /* 琥珀降饱和 */
  --bg:#f7f8f9;
  --bg-soft:#f1f2f4;
  --bg-panel:#ffffff;
  --line:#eaecef;
  --line-strong:#dfe2e6;
  --text-1:#151619;
  --text-2:#484d54;
  --text-3:#8e939b;
}
[data-theme="dark"]{
  --brand:#2bbd82;
  --brand-hover:#4ecf9d;
  --brand-2:#2bbd82;
  --brand-grad:linear-gradient(135deg,#1d9e6c 0%,#2bbd82 100%);
  --brand-grad-soft:linear-gradient(135deg,rgba(43,189,130,.12),rgba(43,189,130,.08));
  --brand-glow:rgba(43,189,130,.26);
  --up:#25b47e;
  --down:#e0565c;
  --hot:#e0565c;
  --bg:#0e0f12;
  --bg-soft:#16171b;
  --bg-panel:#16171b;
  --line:#24262b;
  --line-strong:#2f3238;
  --text-1:#e9ebee;
  --text-2:#b0b5bc;
  --text-3:#6c727a;
}
/* 页面底色：去掉绿色氛围雾，回归干净纯色 */
body{background:var(--bg)}
[data-theme="dark"] body{background:var(--bg)}

/* ---------- v12.33 阶段C：Hero 深色渐变块 → 编辑部头版 ---------- */
.hero-card{
  background:var(--bg-panel)!important;
  color:var(--text-1);
  border:1px solid var(--line-strong)!important;
  box-shadow:none;
  padding:26px 30px;
  transition:border-color .2s;
}
.hero-card:hover{transform:none;box-shadow:none;border-color:var(--text-3)!important}
.hero-card::after{display:none!important}
.hero-kicker{color:var(--brand)}
.hero-kicker::before{background:var(--brand)}
.hero-title{font-size:24px;font-weight:900;letter-spacing:-.015em;line-height:1.4;color:var(--text-1);transition:color .15s}
.hero-card:hover .hero-title{color:var(--brand)}
.hero-desc{color:var(--text-2)}
.hero-meta{color:var(--text-3)}
.hero-img{box-shadow:none;border:1px solid var(--line)}
[data-theme="dark"] .hero-card{background:var(--bg-panel)!important;border:1px solid var(--line)!important;box-shadow:none}
[data-theme="dark"] .hero-card:hover{border-color:var(--text-3)!important}
@media (max-width:768px){.hero-card{padding:16px 16px}.hero-title{font-size:18px}}

/* ---------- v12.33 阶段E：侧栏去框 + 字阶 + tabular-nums + 图标色统一 ---------- */
/* 全站数字等宽对齐 */
body{font-variant-numeric:tabular-nums}
/* 页面级 h1 统一字阶 */
.page-title,.stk-head h1,.nf-main-section .section-head h2,.section-head h2{letter-spacing:-.01em}
/* 信息类侧栏组件去框：贴纸感 → 版面感（eyebrow 标题 + 分隔线） */
#week-events-widget,#ai-radar-widget,#hot-news-widget,#more-articles-widget,#hot-topics-widget,#nf-hot-widget{
  background:transparent;border:none;box-shadow:none!important;border-radius:0;
  padding:0 2px 18px;border-bottom:1px solid var(--line-strong);
}
#week-events-widget:hover,#ai-radar-widget:hover,#hot-news-widget:hover,#more-articles-widget:hover,#hot-topics-widget:hover,#nf-hot-widget:hover{
  transform:none;box-shadow:none!important;border-color:var(--line-strong);
}
#week-events-widget .widget-title,#ai-radar-widget .widget-title,#hot-news-widget .widget-title,
#more-articles-widget .widget-title,#hot-topics-widget .widget-title,#nf-hot-widget .widget-title{
  font-size:12.5px;font-weight:800;letter-spacing:.14em;color:var(--text-2);
  padding-bottom:9px;border-bottom:2px solid var(--text-1);margin-bottom:12px;
}
#week-events-widget .widget-title i,#ai-radar-widget .widget-title i,#hot-news-widget .widget-title i,
#more-articles-widget .widget-title i,#hot-topics-widget .widget-title i,#nf-hot-widget .widget-title i{
  width:auto;height:auto;border-radius:0;background:none!important;font-size:11.5px;color:var(--text-3)!important;
}
/* 热点/火焰图标语义红统一到 --down */
.widget-title i.fa-fire,.widget-title i.fa-arrow-trend-up{background:none!important;color:var(--down)!important}
.hot-flash-head{color:var(--down)}
.hot-news-item .hot-rank.r1{color:var(--down)}
.hot-topic-heat{color:var(--down)}
.cal-stars.s5{color:var(--down)}
.cal-imp.imp3{background:rgba(229,72,77,.1);color:var(--down)}
/* 预言家组件标题：去橙红渐变，统一墨色 + 品牌图标 */
.predict-widget-title{background:none!important;-webkit-text-fill-color:currentColor!important;color:var(--text-1)}
.predict-widget-title i{background:rgba(13,138,86,.09)!important;-webkit-text-fill-color:currentColor;color:var(--brand)!important}
/* 收藏星标橙 → 琥珀 */
.share-btn.bookmarked{border-color:var(--accent-amber);color:var(--accent-amber);background:rgba(217,142,4,.08)}
.wei-src::before{color:var(--accent-amber)}
/* 旧红 #f0442e 残留语义统一 */
.coin-chg.down{color:var(--down);background:rgba(229,72,77,.09)}
.vote-btn.vote-bear:hover:not(:disabled),.vote-btn.my-vote.vote-bear{border-color:var(--down);color:var(--down)}
.vote-pct .t-bear{color:var(--down)}
.signal-badge.sig-sell{background:rgba(229,72,77,.1);color:var(--down)}
.bm-del:hover{color:var(--down);background:rgba(229,72,77,.08)}
.link-btn.danger{color:var(--down)}
.key-dead{color:var(--down)}
.pay-status.expired{color:var(--down)}
[data-theme="dark"] #week-events-widget,[data-theme="dark"] #ai-radar-widget,[data-theme="dark"] #hot-news-widget,
[data-theme="dark"] #more-articles-widget,[data-theme="dark"] #hot-topics-widget,[data-theme="dark"] #nf-hot-widget{
  background:transparent;border:none;border-bottom:1px solid var(--line);
}
[data-theme="dark"] #week-events-widget .widget-title,[data-theme="dark"] #ai-radar-widget .widget-title,
[data-theme="dark"] #hot-news-widget .widget-title,[data-theme="dark"] #more-articles-widget .widget-title,
[data-theme="dark"] #hot-topics-widget .widget-title,[data-theme="dark"] #nf-hot-widget .widget-title{
  border-bottom-color:var(--text-1);
}

/* ==================== v12.34 数据中心 → 市场仪表盘 ==================== */
/* 页头：编辑部风格（替代深色渐变 banner） */
.data-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding:6px 2px 14px;border-bottom:2px solid var(--text-1);margin-bottom:16px}
.data-h1{margin:0;font-size:26px;font-weight:900;letter-spacing:-.015em;color:var(--text-1)}
.data-h1 i{color:var(--brand);font-size:21px;margin-right:8px}
.data-sub{margin:7px 0 0;font-size:13px;color:var(--text-2);line-height:1.6}
.data-snapshot{font-size:12px;color:var(--text-3);white-space:nowrap;padding-bottom:3px}
.data-snapshot.stale{color:var(--accent-amber);font-weight:600}
/* KPI 概览条 */
.kpi-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:22px}
.kpi-card{display:flex;flex-direction:column;gap:3px;background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;min-width:0;text-decoration:none}
.kpi-link{transition:border-color .15s}
.kpi-link:hover{border-color:var(--brand)}
.kpi-label{font-size:11.5px;font-weight:700;letter-spacing:.06em;color:var(--text-3);white-space:nowrap}
.kpi-value{font-size:19px;font-weight:800;letter-spacing:-.01em;color:var(--text-1);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-delta{font-size:11.5px;font-weight:700;color:var(--text-3);font-variant-numeric:tabular-nums}
.kpi-delta.up{color:var(--up)} .kpi-delta.down{color:var(--down)}
.kpi-meter{display:block;height:4px;border-radius:2px;background:var(--bg-soft);overflow:hidden;margin-top:4px}
.kpi-meter i{display:block;height:100%;border-radius:2px;background:var(--brand);transition:width .5s ease}
.kpi-meter.fear i{background:var(--down)} .kpi-meter.greed i{background:var(--up)}
.kpi-link .kpi-delta{color:var(--brand)}
/* 分组锚点导航（吸顶） */
.data-nav{position:sticky;top:58px;z-index:30;display:flex;gap:6px;padding:8px 0;margin:0 0 14px;background:var(--bg);border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.data-nav::-webkit-scrollbar{display:none}
.data-nav a{flex:0 0 auto;font-size:13px;font-weight:700;color:var(--text-2);text-decoration:none;padding:6px 13px;border-radius:999px;border:1px solid transparent;white-space:nowrap}
.data-nav a:hover{color:var(--text-1);background:var(--bg-soft)}
.data-nav a.active{color:var(--brand);border-color:var(--brand);background:rgba(13,138,86,.07)}
/* 分组标题 + 读图要点 */
.data-group{margin-bottom:26px;scroll-margin-top:110px}
.data-group-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:0 2px 9px;margin-bottom:14px;border-bottom:1px solid var(--line-strong)}
.data-group-title{margin:0;font-size:15px;font-weight:800;letter-spacing:.02em;color:var(--text-1)}
.data-group-title i{color:var(--brand);font-size:13px;margin-right:6px}
.data-group-note{font-size:12.5px;color:var(--text-3);line-height:1.6}
.data-group-note b{color:var(--text-2);font-weight:700}
/* 卡片增强：最新值 + 环比徽章 */
.data-latest{display:flex;align-items:baseline;gap:8px;margin:-4px 0 8px;min-height:20px}
.data-latest-v{font-size:16.5px;font-weight:800;color:var(--text-1);font-variant-numeric:tabular-nums}
.data-latest-d{font-size:11.5px;font-weight:700;padding:1.5px 7px;border-radius:999px;font-variant-numeric:tabular-nums}
.data-latest-d.up{color:var(--up);background:rgba(10,160,108,.09)}
.data-latest-d.down{color:var(--down);background:rgba(229,72,77,.08)}
.data-latest-d.flat{color:var(--text-3);background:var(--bg-soft)}
.data-updated.stale{color:var(--accent-amber);font-weight:600}
/* 底部站内数据工具导流 */
.data-tools{margin:8px 0 4px}
.data-tools-title{font-size:12.5px;font-weight:800;letter-spacing:.14em;color:var(--text-2);padding:0 2px 9px;border-bottom:2px solid var(--text-1);margin:0 0 14px}
.data-tools-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.data-tool{display:flex;align-items:center;gap:12px;background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:14px;text-decoration:none;transition:border-color .15s}
.data-tool:hover{border-color:var(--brand)}
.data-tool i{font-size:17px;color:var(--brand);width:22px;text-align:center}
.data-tool-name{display:block;font-size:13.5px;font-weight:800;color:var(--text-1)}
.data-tool-desc{display:block;font-size:11.5px;color:var(--text-3);margin-top:2px}
/* 深色 */
[data-theme="dark"] .data-nav a.active{background:rgba(43,189,130,.1)}
[data-theme="dark"] .data-latest-d.up{background:rgba(37,180,126,.13)}
[data-theme="dark"] .data-latest-d.down{background:rgba(224,86,92,.12)}
/* 响应式 */
@media (max-width:1100px){.kpi-strip{grid-template-columns:repeat(3,1fr)}.data-tools-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.kpi-strip{grid-template-columns:repeat(2,1fr)}.data-head{flex-direction:column;align-items:flex-start;gap:6px}.data-nav{top:52px}.data-tools-grid{grid-template-columns:1fr}}

/* ============ v12.35 数据中心：品牌图标 + 中性新鲜度标注 ============ */
.data-nav a { display: inline-flex; align-items: center; gap: 7px; }
.data-nav-ico { width: 20px; height: 20px; border-radius: 5px; flex: none; display: block; }
.data-group-title { display: inline-flex; align-items: center; gap: 9px; }
.data-group-ico { width: 26px; height: 26px; border-radius: 7px; flex: none; display: block; box-shadow: 0 1px 3px rgba(13, 138, 86, .25); }
[data-theme="dark"] .data-group-ico { box-shadow: 0 1px 3px rgba(0, 0, 0, .5); }

/* ==========================================================================
   v12.36 视觉质感版 —— 三层暗色色板 / 中性标题 / 微交互 / 大屏适配 / Solana 榜
   ========================================================================== */

/* ---------- 1. 暗色三层色板：带品牌绿冷调的分层空间（底 → 卡片 → 悬浮） ---------- */
[data-theme="dark"] {
  --bg: #0d1412;
  --bg-soft: #131b18;
  --bg-panel: #131b18;
  --line: rgba(255, 255, 255, .06);
  --line-strong: rgba(255, 255, 255, .11);
}
/* 悬浮层（下拉/菜单/弹层）再亮半档，建立第三层纵深 */
[data-theme="dark"] .search-dropdown,
[data-theme="dark"] .nav-more-menu,
[data-theme="dark"] .comment-menu { background: #1a2420; }

/* ---------- 2. 快讯标题中性色：情绪只留给徽标与时间轴圆点 ---------- */
.nf-item.important .nf-title { color: var(--text-1); }
.nf-item.important .nf-title:hover { color: var(--brand); opacity: 1; }
.nf-item.is-read.important .nf-title { color: var(--text-2); }
.week-ev-item.hot .week-ev-title { color: var(--text-1); }
.hot-flash-head { color: var(--text-1); }
.hot-flash-head i { color: #f0442e; }

/* ---------- 3. 卡片 hover 微交互：1px 上浮 + 品牌绿描边渐显 ---------- */
.data-card, .data-tool, .side-widget, .hot-flash-card {
  transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.data-card:hover, .data-tool:hover {
  transform: translateY(-1px);
  border-color: rgba(10, 158, 95, .38);
  box-shadow: 0 4px 18px rgba(10, 158, 95, .08);
}
[data-theme="dark"] .data-card:hover, [data-theme="dark"] .data-tool:hover {
  border-color: rgba(37, 212, 142, .35);
  box-shadow: 0 4px 18px rgba(0, 0, 0, .35);
}

/* ---------- 4. 早参：品牌绿渐变高亮顶条（替换墨色细条） ---------- */
.daily-brief::before {
  background: linear-gradient(90deg, var(--brand) 0%, #3ddc97 45%, rgba(61, 220, 151, .15) 100%);
}

/* ---------- 5. 大屏适配：27 寸不再两侧空 680px ---------- */
@media (min-width: 1920px) {
  .header-inner, .ticker-strip, .page-main, .footer-inner { max-width: 1440px; }
}
@media (min-width: 2400px) {
  .header-inner, .ticker-strip, .page-main, .footer-inner { max-width: 1600px; }
}

/* ---------- 6. Solana Top10：logo 排行榜（替代量纲失衡的条形图） ---------- */
.data-card-body .sol-rank { display: flex; flex-direction: column; }
.sol-row { display: flex; align-items: center; gap: 9px; padding: 5px 2px; border-bottom: 1px dashed var(--line); font-size: 13px; }
.sol-row:last-child { border-bottom: none; }
.sol-no { width: 18px; text-align: center; font-weight: 800; font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; flex: none; }
.sol-no.top { color: var(--brand); }
.sol-logo { width: 20px; height: 20px; border-radius: 50%; flex: none; background: var(--bg-soft); }
.sol-logo-ph { display: inline-flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; color: var(--text-3); }
.sol-sym { font-weight: 700; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sol-val { font-variant-numeric: tabular-nums; color: var(--text-2); font-size: 12.5px; }
.sol-chg { width: 62px; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; font-size: 12.5px; flex: none; }
.sol-chg.up { color: var(--up); }
.sol-chg.down { color: var(--down); }

/* ---------- 7. 移动端：股市 5 市场状态 pills 单行横滚 ---------- */
@media (max-width: 768px) {
  .stk-mkt-pills { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin: 0 -14px; padding: 0 14px 2px; }
  .stk-mkt-pills::-webkit-scrollbar { display: none; }
  .stk-mkt-pill { flex: none; }
  /* AI 日报条：标题允许 2 行折行，不再截到只剩几个字 */
  .ai-radar-daily { flex-wrap: wrap; }
  .ai-daily-title { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.45; }
}

/* ---------- 8. 空状态插画：数据卡失败态不再干巴巴一行字 ---------- */
.data-empty::before { content: ''; width: 64px; height: 64px; background: url('/static/brand/empty-retry.webp') center/contain no-repeat; opacity: .85; }

/* ---------- 9. 品牌图标通用：页首/侧栏小图标 ---------- */
.bico { border-radius: 6px; flex: none; display: inline-block; vertical-align: -4px; }
.bico-26 { width: 26px; height: 26px; border-radius: 7px; vertical-align: -6px; }
.widget-title .bico { width: 18px; height: 18px; border-radius: 5px; vertical-align: -3.5px; margin-right: 2px; }
.db-mast-ico { width: 22px; height: 22px; border-radius: 6px; align-self: center; }
.nav-more-menu img.bico { width: 17px; height: 17px; border-radius: 5px; margin-right: 8px; }

/* ---------- 10. 阅读舒适度：行长由容器 .art-detail(700px) 统一控制 ----------
   v12.43.2 修复：此前 .art-body{max-width:70ch} 按英文字符宽算出 ≈623px，
   比摘要/标题/AI导读(700px)窄一截，中文正文右侧参差 → 移除，全部与容器同宽 */
.art-detail { max-width: 700px; }

/* ---------- 11. v12.43.3 长文阅读体验深度优化 ----------
   问题：AI 深度文 3500-6000 字，原排版段距 16px、标题弱、无表格支持 → 一堵文字墙。
   方案：加大段落呼吸感 + 章节视觉锚点 + 导语卡片化 + Markdown 表格渲染 */

/* 段落：字号 17px、行高 2、段距 1.5em，中文长文阅读黄金参数 */
.art-body { font-size: 17px; line-height: 2; letter-spacing: .01em; }
.art-body p { margin: 1.4em 0; text-align: justify; }

/* 章节标题（## → h3）：品牌色竖条锚点 + 上方留白拉开章节 */
.art-body h3 {
  font-size: 19px; font-weight: 800; margin: 2.4em 0 1em;
  padding-left: 12px; border-left: 4px solid var(--brand);
  line-height: 1.5; letter-spacing: 0;
}
.art-body h2 {
  font-size: 21px; font-weight: 800; margin: 2.4em 0 1em;
  padding-left: 12px; border-left: 4px solid var(--brand); line-height: 1.5;
}
/* 小标题（### → h4） */
.art-body h4 { font-size: 17px; font-weight: 700; margin: 1.8em 0 .8em; color: var(--text-1); }

/* 开篇导语引用块：卡片化，与正文明显区隔 */
.art-body blockquote {
  margin: 1.6em 0; padding: 16px 18px;
  background: var(--bg-soft); border-left: 4px solid var(--brand);
  border-radius: 0 10px 10px 0; color: var(--text-2);
  font-size: 15.5px; line-height: 1.9;
}
.art-body blockquote p { margin: 0; }

/* 列表：加大条目间距 */
.art-body ul, .art-body ol { margin: 1.4em 0; padding-left: 26px; }
.art-body li { margin: .6em 0; line-height: 1.9; }
.art-body li::marker { color: var(--brand); font-weight: 700; }

/* 章节末尾加粗小结论：轻微高亮 */
.art-body p > strong { color: var(--text-1); background: linear-gradient(transparent 62%, color-mix(in srgb, var(--brand) 18%, transparent) 62%); padding: 0 1px; }

/* Markdown 表格（多空对照表等）：卡片式表格 */
.md-table-wrap { margin: 1.6em 0; overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; }
.md-table-wrap table { width: 100%; border-collapse: collapse; font-size: 14.5px; line-height: 1.7; }
.md-table-wrap th {
  background: var(--bg-soft); color: var(--text-1); font-weight: 700;
  padding: 10px 14px; text-align: left; white-space: nowrap;
  border-bottom: 1px solid var(--line);
}
.md-table-wrap td { padding: 10px 14px; border-bottom: 1px solid var(--line); color: var(--text-2); vertical-align: top; }
.md-table-wrap tbody tr:last-child td { border-bottom: none; }
.md-table-wrap tbody tr:nth-child(even) { background: color-mix(in srgb, var(--bg-soft) 45%, transparent); }

/* 分隔线弱化 */
.art-body hr { border: none; border-top: 1px solid var(--line); margin: 2.2em 0; }

/* 移动端微调 */
@media (max-width: 640px) {
  .art-body { font-size: 16px; line-height: 1.95; }
  .art-body h2 { font-size: 19px; }
  .art-body h3 { font-size: 17.5px; }
  .md-table-wrap table { font-size: 13.5px; }
  .md-table-wrap th, .md-table-wrap td { padding: 8px 10px; }
}

/* ---------- 11. 27 寸大屏：数据中心一屏四列 ---------- */
@media (min-width: 1920px) {
  .data-grid { grid-template-columns: repeat(auto-fill, minmax(315px, 1fr)); }
}

/* ---------- 12. 日历/通用空状态插画 ---------- */
.cal-empty::before { content: ''; display: block; width: 88px; height: 88px; margin: 0 auto 10px; background: url('/static/brand/empty-generic.webp') center/contain no-repeat; opacity: .9; }
.cal-empty i { display: none; }

/* ============ v12.37 数字通俗化：qmark 问号解释气泡（点按弹出，移动端可用） ============ */
.qmark{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;border:1px solid var(--line-strong);background:var(--bg-soft);color:var(--text-3);font-size:10px;font-weight:700;cursor:pointer;margin-left:5px;padding:0;line-height:1;vertical-align:middle;flex:none;font-family:inherit}
.qmark:hover,.qmark:focus-visible{color:var(--brand);border-color:var(--brand);outline:none}
.qmark-pop{position:absolute;z-index:1200;background:var(--bg-panel);border:1px solid var(--line-strong);border-radius:10px;padding:11px 13px;font-size:12.5px;line-height:1.7;color:var(--text-2);box-shadow:var(--shadow-lg);white-space:pre-line;animation:qpop .16s ease}
@keyframes qpop{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
[data-theme="dark"] .qmark-pop{background:#1a2420}
/* 信号页：温度分刻度尺提示条 */
.sg-scale-hint{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 12px;padding:8px 12px;border:1px dashed var(--line-strong);border-radius:10px;font-size:12px;color:var(--text-3)}
.sg-scale-hint b{font-weight:700}
.sg-scale-hint .sh-down{color:var(--down)}.sg-scale-hint .sh-up{color:var(--up)}
/* Solana 榜图例 */
.sol-legend{margin-top:8px;padding-top:7px;border-top:1px dashed var(--line);font-size:11.5px;color:var(--text-3)}

/* ===== v12.38 忘记密码 ===== */
.auth-forgot{text-align:right;margin:6px 0 0;font-size:13px}
.auth-forgot .link-btn{color:var(--muted,#6b756f);font-size:13px}
.auth-forgot .link-btn:hover{color:var(--brand,#1a7f5a)}
.forgot-panel{margin-top:4px}

/* ===== v12.40 工单系统（用户端，PC + 移动端） ===== */
.tk-nav-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--down);margin-left:6px;animation:tkpulse 1.6s infinite}
@keyframes tkpulse{0%,100%{opacity:1}50%{opacity:.35}}
.tk-card{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:10px;cursor:pointer;transition:border-color .15s,transform .15s;background:var(--bg-panel)}
.tk-card:hover{border-color:var(--brand);transform:translateY(-1px)}
.tk-card-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.tk-no{font-family:ui-monospace,monospace;font-size:12px;color:var(--text-3)}
.tk-cat{font-size:11.5px;padding:2px 8px;border-radius:999px;background:var(--bg-soft);color:var(--text-2);border:1px solid var(--line)}
.tk-badge{font-size:11.5px;padding:2px 9px;border-radius:999px;font-weight:600}
.tk-open{background:color-mix(in srgb,var(--text-3) 12%,transparent);color:var(--text-2)}
.tk-replied{background:color-mix(in srgb,var(--brand) 14%,transparent);color:var(--brand);position:relative}
.tk-replied::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand);margin-right:5px;animation:tkpulse 1.6s infinite}
.tk-resolved{background:color-mix(in srgb,var(--up) 14%,transparent);color:var(--up)}
.tk-closed{background:var(--bg-soft);color:var(--text-3)}
.tk-subject{font-size:14.5px;font-weight:600;color:var(--text-1);line-height:1.5}
.tk-meta{font-size:12px;color:var(--text-3);margin-top:5px}
.tk-hint-new{color:var(--brand)}
.tk-empty{text-align:center;padding:42px 16px;color:var(--text-3)}
.tk-empty i{font-size:34px;opacity:.4;margin-bottom:12px;display:block}
.tk-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px;font-size:13px;color:var(--text-3)}
/* 提交表单 */
.tk-form-row{margin-bottom:14px}
.tk-form-row label{display:flex;justify-content:space-between;font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:6px}
.tk-count{font-weight:400;color:var(--text-3);font-size:12px}
.tk-form-actions{display:flex;gap:10px;margin-top:14px}
.tk-success{text-align:center;padding:40px 16px}
.tk-success i{font-size:44px;color:var(--up);margin-bottom:14px;display:block}
.tk-success h3{margin:0 0 8px}
.tk-success p{color:var(--text-2);font-size:14px;margin-bottom:18px}
/* 详情对话流 */
.tk-detail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.tk-detail-subject{margin:0 0 16px;font-size:17px}
.tk-thread{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}
.tk-msg{max-width:78%}
.tk-msg-user{align-self:flex-end;text-align:right}
.tk-msg-admin{align-self:flex-start}
.tk-msg-meta{font-size:11.5px;color:var(--text-3);margin-bottom:4px}
.tk-msg-bubble{display:inline-block;text-align:left;padding:10px 14px;border-radius:12px;font-size:14px;line-height:1.75;white-space:pre-wrap;word-break:break-word}
.tk-msg-user .tk-msg-bubble{background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid color-mix(in srgb,var(--brand) 25%,transparent);border-bottom-right-radius:4px}
.tk-msg-admin .tk-msg-bubble{background:var(--bg-soft);border:1px solid var(--line);border-bottom-left-radius:4px}
.tk-reply-box{border-top:1px dashed var(--line);padding-top:14px}
.tk-reply-box textarea{width:100%;box-sizing:border-box}
/* 移动端 */
@media (max-width:640px){
  .tk-msg{max-width:88%}
  .tk-form-actions{flex-direction:column}
  .tk-form-actions button{width:100%}
  #tk-subject,#tk-content,#tk-reply-input{font-size:16px} /* 防 iOS 聚焦缩放 */
  #tk-new-btn{float:none!important;display:block;margin-top:8px;width:100%}
}

/* v12.40 管理端工单红点（侧边栏待处理计数） */
.adm-tk-dot{margin-left:auto;background:#dc2626;color:#fff;font-size:10.5px;font-weight:700;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:9px;padding:0 5px;animation:tkpulse 1.6s infinite}

/* ===== v12.40.1 移动端「编辑精选」Hero 卡修复与精修 =====
   根因：v12.7 层全局 .hero-grid 双列(1fr+200px) 覆盖了 768 断点的单列规则，
   而移动端 .hero-img 又被 display:none —— 右侧留下 200px 空洞、文字挤左。
   修复：移动端改为「文字 + 右侧 92px 方形缩略图」紧凑横排；无图时单列铺满。 */
@media (max-width:768px){
  .hero-card{padding:14px 16px}
  .hero-grid{grid-template-columns:minmax(0,1fr) 92px;gap:14px;align-items:center}
  .hero-grid.no-img{grid-template-columns:minmax(0,1fr)}
  .hero-img{display:block;width:92px;height:92px;border-radius:10px;box-shadow:0 4px 14px rgba(0,0,0,.25)}
  .hero-title{font-size:16.5px;-webkit-line-clamp:2;margin-bottom:5px}
  .hero-desc{font-size:12.5px;-webkit-line-clamp:2}
  .hero-meta{margin-top:6px;font-size:11.5px}
}
