:root {
  /* Monster / 官网同源：白底内容 + 深紫大色块 · 金次体 · 青点缀 */
  --purple: #6e46ae;
  --purple-deep: #5a3896;
  --purple-ink: #24143f;
  --hero: #3a1d73;
  --hero-2: #2b1458;
  --purple-mist: #f6f3fb;
  --purple-wash: #efe8fa;
  --gold: #f5a623;
  --gold-deep: #d48806;
  --cyan: #00b6b4;
  --cyan-deep: #12948e;
  --paper: #ffffff;
  --ink: #1a1228;
  --muted: #5a5268;
  --line: rgba(84, 49, 141, 0.12);
  --shadow: 0 12px 40px rgba(84, 49, 141, 0.10);
  --shadow-sm: 0 4px 16px rgba(84, 49, 141, 0.06);

  --bg0: var(--paper);
  --bg1: var(--purple-mist);
  --bg2: var(--paper);
  --text: var(--ink);
  --accent: var(--purple);
  --accent-deep: var(--purple-deep);
  --accent2: var(--gold);
  --accent2-deep: var(--gold-deep);
  --cyan-soft: rgba(27, 184, 176, 0.14);
  --accent-soft: rgba(84, 49, 141, 0.10);
  --gold-soft: rgba(245, 166, 35, 0.16);
  --danger: #e0455a;
  --success: #12a37a;
  --radius: 16px;
  --radius-sm: 10px;
  --font: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --display: "Syne", "Noto Sans SC", "PingFang SC", sans-serif;
}

* { box-sizing: border-box; }
html, body {
  margin: 0;
  height: 100%;
  max-height: 100%;
  overflow: hidden;
  background:
    radial-gradient(ellipse 70% 45% at 100% -10%, rgba(84, 49, 141, 0.07), transparent 55%),
    radial-gradient(ellipse 40% 35% at 0% 100%, rgba(27, 184, 176, 0.06), transparent 50%),
    var(--paper);
  color: var(--text);
  font-family: var(--font);
}

.app {
  --sidebar-w: 212px;
  display: grid;
  grid-template-columns: var(--sidebar-w) minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  height: 100%;
  min-height: 100dvh;
  overflow: hidden;
}

.sidebar {
  --l1-home: var(--purple);
  --l1-account: #3b82c4;
  --l1-ops: #e07a3d;
  --l1-eval: #0d9488;
  --l1-nb: var(--purple);
  --l1-sent: #c45a8c;
  --l1-longhu: #b45309;
  --l1-hot: var(--gold-deep);
  --l1-morn: var(--cyan-deep);
  --l1-rank: var(--success);
  --l1-sup: var(--danger);
  --l1-tools: #2563eb;
  --l1-fav: #6b7280;
  --l1-wl: #0f9d8c;
  --l1-me: #6d5b8c;
  --l1-feedback: #4f6f8f;
  --l1-store: #c9a227;
  --l1-admin: #8b92a0;
  border-right: none;
  background: #eceef2;
  color: var(--ink);
  padding: 0 0 16px;
  display: flex;
  flex-direction: column;
  gap: 0;
  height: auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  box-shadow: none;
  scrollbar-width: none;
}
.sidebar::-webkit-scrollbar { display: none; }

.brand-block {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 8px;
  padding: 18px 16px 14px;
  background: #eceef2;
  border-bottom: 1px solid rgba(26, 18, 40, 0.08);
}
.brand-mark-wrap {
  flex-shrink: 0;
  line-height: 0;
}
.brand-logo {
  display: block;
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: #54318d;
}
.brand-copy {
  min-width: 0;
  display: inline-flex;
  flex-direction: column;
  align-items: stretch;
  width: max-content;
  max-width: 100%;
  gap: 2px;
}
.brand-sub,
.brand-block .brand {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  width: 100%;
  margin: 0;
  white-space: nowrap;
}
.brand-sub {
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 0;
  color: var(--ink);
  line-height: 1.15;
}
.brand-block .brand {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  color: var(--muted);
  line-height: 1.2;
}
.brand-sub > span,
.brand-block .brand > span {
  flex: 0 0 auto;
}

.nav-card {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
}
.nav-card.diary-nav,
.nav-card.messages-nav,
.nav-card.watchlist-nav {
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid rgba(26, 18, 40, 0.08);
}

.sidebar .nav-card-title,
.sidebar .sub-nav button,
.sidebar .nav-list button {
  --l1-spine: #6b7280;
  appearance: none;
  position: relative;
  width: 100%;
  margin: 3px 0;
  padding: 11px 14px 11px 26px;
  min-height: 42px;
  box-sizing: border-box;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  font: inherit;
  font-size: 13px;
  font-weight: 650;
  line-height: 1.35;
  letter-spacing: 0.02em;
  text-align: left;
  cursor: pointer;
  transition: color 0.15s ease, background 0.15s ease;
}
.sidebar .home-nav .nav-card-title { --l1-spine: var(--l1-home); }
.sidebar .diary-nav [data-sub="today-account"] { --l1-spine: var(--l1-account); }
.sidebar .diary-nav [data-sub="today-ops"] { --l1-spine: var(--l1-ops); }
.sidebar .diary-nav [data-sub="today-eval"] { --l1-spine: var(--l1-eval); }
.sidebar .diary-nav [data-sub="notebook"] { --l1-spine: var(--l1-nb); }
.sidebar .messages-nav [data-msg-sub="sentiment"] { --l1-spine: var(--l1-sent); }
.sidebar .messages-nav [data-msg-sub="longhu"] { --l1-spine: var(--l1-longhu); }
.sidebar .messages-nav [data-msg-sub="news"] { --l1-spine: var(--l1-hot); }
.sidebar .messages-nav [data-msg-sub="morning"] { --l1-spine: var(--l1-morn); }
.sidebar .messages-nav [data-msg-sub="ranking"] { --l1-spine: var(--l1-rank); }
.sidebar .messages-nav [data-msg-sub="supervision"] { --l1-spine: var(--l1-sup); }
.sidebar .messages-nav [data-msg-sub="tools"] { --l1-spine: var(--l1-tools); }
.sidebar .messages-nav [data-msg-sub="watched"] { --l1-spine: var(--l1-fav); }
.sidebar .watchlist-nav .nav-card-title { --l1-spine: var(--l1-wl); }
.sidebar .profile-nav .nav-card-title { --l1-spine: var(--l1-me); }
.sidebar .feedback-nav .nav-card-title { --l1-spine: var(--l1-feedback); }
.sidebar .store-nav .nav-card-title { --l1-spine: var(--l1-store); }
.sidebar .admin-nav button { --l1-spine: var(--l1-admin); }

body:not(.view1) .sidebar > .profile-nav,
body:not(.view1) .sidebar > .store-nav,
body:not(.view1) .sidebar > .feedback-nav {
  display: none;
}

.sidebar-account {
  margin: auto 12px 8px;
}
.side-id-stack {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 16px;
  background: #fff;
  border: 1px solid rgba(84, 49, 141, 0.1);
  box-shadow: 0 8px 20px rgba(36, 20, 63, 0.08);
}
.side-id-card {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  margin: 0;
  padding: 12px 12px 11px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--ink);
  font: inherit;
  text-align: left;
  cursor: pointer;
  box-sizing: border-box;
}
.side-id-card::after {
  content: "";
  flex: 0 0 auto;
  margin-left: auto;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  opacity: 0.28;
}
.side-id-card:hover {
  background: rgba(84, 49, 141, 0.05);
}
.side-id-card.is-on {
  background: rgba(84, 49, 141, 0.08);
}
.side-id-card.is-on::after,
.side-id-card:hover::after {
  opacity: 0.55;
}
.side-id-avatar {
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 15px;
  font-weight: 800;
  color: #fff;
  background: var(--purple);
  overflow: hidden;
}
.side-id-avatar.has-photo {
  background: #d7cce8;
}
.side-id-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.side-id-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
}
.side-id-copy strong {
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.2;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.side-id-links {
  display: flex;
  flex-direction: column;
  border-top: 1px solid rgba(84, 49, 141, 0.1);
}
.side-id-link {
  appearance: none;
  display: flex;
  align-items: center;
  width: 100%;
  margin: 0;
  padding: 10px 12px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 13px;
  font-weight: 650;
  line-height: 1.35;
  text-align: left;
  cursor: pointer;
  box-sizing: border-box;
}
.side-id-link + .side-id-link {
  border-top: 1px solid rgba(84, 49, 141, 0.08);
}
.side-id-link em {
  flex: 1;
  min-width: 0;
  margin-left: 8px;
  font-style: normal;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  text-align: right;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.side-id-link::after {
  content: "";
  flex: 0 0 auto;
  margin-left: 8px;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  opacity: 0.28;
}
.side-id-link:not(:has(em))::after {
  margin-left: auto;
}
.side-id-link:hover {
  background: rgba(84, 49, 141, 0.05);
}
.side-id-link.is-on {
  background: rgba(84, 49, 141, 0.08);
  font-weight: 700;
}
.side-id-link.is-on::after,
.side-id-link:hover::after {
  opacity: 0.55;
}

.sidebar .nav-card-title::before,
.sidebar .sub-nav button::before,
.sidebar .nav-list button::before {
  content: "";
  position: absolute;
  left: 0;
  top: 6px;
  bottom: 6px;
  width: 4px;
  background: var(--l1-spine);
  opacity: 0.4;
  border-radius: 0 4px 4px 0;
}
.sidebar .nav-card-title:hover:not(.active),
.sidebar .sub-nav button:hover:not(.active),
.sidebar .nav-list button:hover:not(.active) {
  color: var(--ink);
  background: rgba(255, 255, 255, 0.55);
}
.sidebar .nav-card-title.active,
.sidebar .sub-nav button.active,
.sidebar .nav-list button.active {
  color: var(--text);
  background: #fff;
  font-weight: 700;
  box-shadow: none;
}
.sidebar .nav-card-title.active::before,
.sidebar .sub-nav button.active::before,
.sidebar .nav-list button.active::before {
  width: 5px;
  opacity: 1;
}

.sub-nav {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.nav-list {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.admin-nav {
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid rgba(26, 18, 40, 0.08);
}
.nav-section {
  margin: 0 0 4px;
  padding: 4px 16px 2px 26px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}

.nav-list button.has-task-clock,
.sub-nav button.has-task-clock,
.nav-card-title.has-task-clock,
.nav-section.has-task-clock {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.nav-task-clock {
  flex: 0 0 auto;
  opacity: 0.85;
  color: var(--gold);
}
.nav-section.has-task-clock {
  gap: 6px;
}

.main {
  padding: 28px 32px 24px;
  max-width: none;
  width: 100%;
  height: auto;
  min-height: 0;
  overflow-y: auto;
  min-width: 0;
}

/* 右侧主区及内部所有滚动条隐藏（仍可滚轮/触控滑动） */
.main,
.main * {
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.main::-webkit-scrollbar,
.main *::-webkit-scrollbar {
  width: 0 !important;
  height: 0 !important;
  display: none !important;
  background: transparent;
}

.main:has(.diary-page) {
  max-width: none;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 24px;
}

.diary-page {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
.diary-page .page-head {
  flex-shrink: 0;
  margin: -28px calc(100% + 32px + var(--sidebar-w) - 100vw) 0 -32px;
  padding-bottom: 18px;
  border-bottom: none;
}
.diary-page .diary-status {
  margin-top: 8px;
}
.diary-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding-top: 16px;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.diary-scroll::-webkit-scrollbar {
  display: none;
}
.diary-foot {
  flex-shrink: 0;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  margin-top: 0;
}
.diary-body {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.diary-content {
  min-width: 0;
}
.diary-section {
  scroll-margin-top: 16px;
}
.diary-rail {
  position: relative;
  align-self: stretch;
}
.diary-rail-track {
  position: relative;
  width: 100%;
}
.diary-rail-line {
  position: absolute;
  left: 10px;
  top: 6px;
  bottom: 6px;
  width: 1px;
  background: linear-gradient(
    180deg,
    transparent,
    rgba(84, 49, 141, 0.12) 12%,
    rgba(84, 49, 141, 0.12) 88%,
    transparent
  );
  pointer-events: none;
}
.diary-rail-marker {
  position: absolute;
  left: 6px;
  top: 0;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 4px rgba(84, 49, 141, 0.14);
  transition: transform 0.24s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
  z-index: 2;
}
.diary-rail-item {
  position: absolute;
  left: 0;
  right: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0;
  text-align: left;
}
.diary-rail-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  border: 1.5px solid rgba(147, 164, 184, 0.55);
  background: var(--bg0);
  flex-shrink: 0;
  margin-left: 7px;
  transition: border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}
.diary-rail-label {
  font-size: 11px;
  line-height: 1.2;
  color: var(--muted);
  letter-spacing: 0.03em;
  transition: color 0.2s ease;
  user-select: none;
}
.diary-rail-item:hover .diary-rail-label {
  color: var(--text);
}
.diary-rail-item.active .diary-rail-dot {
  border-color: var(--accent);
  background: var(--accent);
  transform: scale(0.01);
  opacity: 0;
}
.diary-rail-item.active .diary-rail-label {
  color: var(--accent);
  font-weight: 600;
}

.page-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 12px;
  margin: -28px calc(100% + 32px + var(--sidebar-w) - 100vw) 22px -32px;
  padding: 22px 32px 20px;
  background: linear-gradient(180deg, var(--hero) 0%, var(--hero-2) 100%);
  color: #fff;
  box-shadow: 0 10px 28px rgba(43, 20, 88, 0.18);
  box-sizing: border-box;
  width: auto;
  max-width: none;
}
/* 无副标题时（如自选首页）：标题与右侧按钮垂直居中 */
.page-head:not(:has(.meta)) {
  align-items: center;
}
.page-head:not(:has(.meta)) > div:first-child {
  display: flex;
  align-items: center;
  min-height: 37px;
}
.page-head h1 {
  margin: 0;
  font-family: var(--display);
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: #fff;
}
.page-head-count {
  margin-left: 8px;
  font-family: var(--font);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  color: rgba(232, 220, 255, 0.72);
  vertical-align: 0.12em;
}
.page-head .meta {
  margin: 8px 0 0;
  color: rgba(232, 220, 255, 0.78);
  font-size: 13px;
  line-height: 1.55;
}
.page-head-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
}
.page-head .btn {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.28);
  color: #fff;
}
.page-head .btn:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.4);
  color: #fff;
}
.page-head .btn.primary {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--purple-ink);
  box-shadow: none;
}
.page-head .btn.primary:hover {
  background: var(--gold-deep);
  border-color: var(--gold-deep);
  color: #fff;
}
.page-head .pill {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
}
.page-head input[type="date"],
.page-head input[type="text"],
.page-head select {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.28);
  color: #fff;
}
.page-head input::placeholder {
  color: rgba(255, 255, 255, 0.55);
}

.pill {
  display: inline-block;
  padding: 4px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  background: var(--purple-mist);
  color: var(--purple);
}
.pill.success { background: rgba(18, 163, 122, 0.14); color: var(--success); }
.pill.warn { background: var(--gold-soft); color: var(--gold-deep); }
.pill.info { background: var(--cyan-soft); color: var(--cyan-deep); }
.pill.danger {
  background: rgba(224, 69, 90, 0.14);
  color: var(--danger);
  border: 1px solid rgba(224, 69, 90, 0.35);
}
/* 数据不一致提醒：整条用红色胶囊背景，可换行 */
.pill.danger.pill-block {
  display: inline-block;
  max-width: 100%;
  padding: 6px 12px;
  border-radius: 12px;
  font-weight: 600;
  line-height: 1.5;
  white-space: normal;
  word-break: break-word;
}

.card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  margin-bottom: 14px;
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.card-hd {
  padding: 14px 18px;
  font-weight: 700;
  font-size: 14px;
  color: var(--purple);
  background: var(--purple-mist);
  border-bottom: 1px solid var(--line);
}
.card-bd { padding: 16px 18px; }

.diary-stack { display: flex; flex-direction: column; gap: 12px; }
.diary-stack .card { margin-bottom: 0; }
.diary-stack .diary-section:last-child .card { margin-bottom: 0; }

.trade-route-hint {
  margin: 0 0 10px;
  padding: 10px 14px;
  border-radius: var(--radius-sm);
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted);
  background: var(--purple-mist);
  border: 1px solid var(--line);
  border-left: 3px solid var(--gold);
}

.feature-list {
  margin: 0;
  padding-left: 18px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}
.feature-list li + li { margin-top: 6px; }
.feature-list strong { color: var(--text); font-weight: 600; }

.upload-zone {
  border: 1px dashed rgba(84, 49, 141, 0.45);
  background: rgba(84, 49, 141, 0.03);
  border-radius: 10px;
  padding: 24px 16px;
  text-align: center;
}
.upload-zone p { margin: 0 0 10px; color: var(--muted); font-size: 13px; }
.upload-actions {
  display: flex;
  gap: 8px;
  justify-content: center;
  flex-wrap: wrap;
}

.upload-zone.drag-over {
  border-color: var(--accent);
  background: rgba(84, 49, 141, 0.08);
}
.upload-done {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
}
.upload-done.hidden,
.upload-empty.hidden { display: none; }
.upload-thumb {
  width: 72px;
  height: 72px;
  object-fit: cover;
  border-radius: 8px;
  border: 1px solid var(--line);
  flex-shrink: 0;
  background: rgba(28, 20, 48, 0.04);
}
.upload-thumb-info {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  min-width: 0;
}
.upload-fname {
  font-size: 12px;
  color: var(--muted);
  max-width: 220px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.btn-sm { padding: 4px 10px; font-size: 12px; }

.ocr-editor { margin-top: 12px; }
.ocr-editor.hidden { display: none; }
.ocr-editor-label {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--muted);
}
.ocr-rows { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.ocr-rows.hidden { display: none; }
.ocr-row.holding-detail {
  display: grid;
  grid-template-columns: 88px 72px 64px 56px 56px 72px 64px 72px 56px 56px 28px;
  gap: 6px;
  align-items: center;
  min-width: 820px;
}
.ocr-stock-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.ocr-stock-cell input {
  width: 100%;
  min-width: 0;
}
.ocr-row.holding-detail .ocr-stock-cell {
  min-width: 0;
}
.ocr-row-del {
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid rgba(255, 107, 107, 0.35);
  border-radius: 6px;
  background: rgba(255, 107, 107, 0.08);
  color: #ff8a8a;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  flex-shrink: 0;
}
.ocr-row-del:hover {
  background: rgba(255, 107, 107, 0.18);
  border-color: rgba(255, 107, 107, 0.55);
  color: #ffb4b4;
}
.ocr-table-scroll { overflow-x: auto; margin-bottom: 6px; }
.upload-thumb-wrap {
  position: relative;
  width: 72px;
  height: 72px;
  flex-shrink: 0;
}
.upload-thumb-wrap .upload-thumb { width: 100%; height: 100%; }
.ocr-scanning {
  position: absolute;
  inset: 0;
  border-radius: 8px;
  overflow: hidden;
  background: rgba(28, 20, 48, 0.42);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
}
.ocr-scan-line {
  position: absolute;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
  box-shadow: 0 0 8px var(--accent);
  animation: ocr-scan 1.4s ease-in-out infinite;
}
.ocr-scan-text {
  position: relative;
  z-index: 1;
  font-size: 10px;
  color: #e8f6f4;
  letter-spacing: 0.04em;
}
@keyframes ocr-scan {
  0% { top: 0; opacity: 0.4; }
  50% { opacity: 1; }
  100% { top: calc(100% - 2px); opacity: 0.4; }
}
.upload-zone.is-scanning { pointer-events: none; opacity: 0.92; }
.ocr-editor.is-scanning .ocr-editor-label,
.ocr-editor.is-scanning .ocr-rows,
.ocr-editor.is-scanning .ocr-textarea,
.ocr-editor.is-scanning .btn:not([data-confirm-holding]):not([data-confirm-trade]):not([data-confirm-transfer]) { visibility: hidden; }
.ocr-editor.is-scanning [data-confirm-holding],
.ocr-editor.is-scanning [data-confirm-trade],
.ocr-editor.is-scanning [data-confirm-transfer] { visibility: visible; }
.ocr-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 20px 12px;
  margin-bottom: 8px;
  border-radius: 8px;
  background: rgba(84, 49, 141, 0.06);
  border: 1px dashed rgba(84, 49, 141, 0.35);
}
.ocr-loading.hidden { display: none; }
.ocr-loading p {
  margin: 0;
  font-size: 13px;
  color: var(--muted);
}
.ocr-loading-dots {
  display: flex;
  gap: 6px;
}
.ocr-loading-dots span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
  animation: ocr-dot 1.2s ease-in-out infinite;
}
.ocr-loading-dots span:nth-child(2) { animation-delay: 0.15s; }
.ocr-loading-dots span:nth-child(3) { animation-delay: 0.3s; }
@keyframes ocr-dot {
  0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
  40% { transform: scale(1); opacity: 1; }
}
.ocr-summary {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}
.ocr-summary-field {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
}
.ocr-summary-field input {
  width: 100%;
  padding: 7px 8px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font-size: 13px;
}
.jy-date-field {
  max-width: 240px;
}
.jy-date-field em {
  color: var(--danger);
  font-style: normal;
}
.jy-date-field input.is-required-empty {
  border-color: rgba(240, 113, 120, 0.7);
  box-shadow: 0 0 0 2px rgba(240, 113, 120, 0.15);
}
.ocr-broker-field {
  grid-column: 1 / -1;
  max-width: 320px;
}
.ocr-broker-combo {
  position: relative;
}
.ocr-broker-combo input {
  padding-right: 30px;
}
.ocr-broker-toggle {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 30px;
  border: 0;
  background: transparent;
  cursor: pointer;
  border-radius: 0 6px 6px 0;
}
.ocr-broker-toggle::before {
  content: "";
  display: block;
  width: 6px;
  height: 6px;
  margin: 0 auto;
  border-right: 1.5px solid var(--muted);
  border-bottom: 1.5px solid var(--muted);
  transform: translateY(-2px) rotate(45deg);
  transition: transform 0.15s ease;
}
.ocr-broker-combo.is-open .ocr-broker-toggle::before {
  transform: translateY(2px) rotate(225deg);
}
.ocr-broker-menu {
  position: absolute;
  z-index: 24;
  left: 0;
  right: 0;
  top: calc(100% + 4px);
  margin: 0;
  padding: 4px;
  list-style: none;
  background: var(--bg1);
  border: 1px solid var(--line);
  border-radius: 8px;
  box-shadow: 0 14px 36px rgba(0, 0, 0, 0.4);
  max-height: 220px;
  overflow-y: auto;
}
.ocr-broker-menu li {
  padding: 8px 10px;
  border-radius: 6px;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
}
.ocr-broker-menu li:hover,
.ocr-broker-menu li.is-active {
  background: rgba(84, 49, 141, 0.14);
}
.ocr-broker-menu .ocr-broker-empty {
  color: var(--muted);
  cursor: default;
  font-size: 12px;
}
.ocr-broker-menu .ocr-broker-empty:hover {
  background: transparent;
}

.tf-panel {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}
.tf-panel-hd {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 10px;
}
.tf-panel-hd strong {
  font-size: 13px;
  font-weight: 650;
}
.tf-panel-hd span {
  font-size: 12px;
  color: var(--muted);
}
.tf-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  align-items: end;
}
.tf-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--muted);
}
.tf-field input {
  padding: 7px 8px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font-size: 13px;
}
.tf-field-broker {
  flex: 1 1 168px;
  min-width: 148px;
  max-width: 280px;
}
.tf-field-date {
  flex: 0 0 148px;
}
.tf-field-amt {
  flex: 0 0 112px;
}
.tf-dir {
  display: flex;
  border: 1px solid var(--line);
  border-radius: 6px;
  overflow: hidden;
  background: var(--bg2);
}
.tf-dir button {
  border: 0;
  background: transparent;
  color: var(--muted);
  padding: 7px 12px;
  font-size: 13px;
  cursor: pointer;
}
.tf-dir button.is-on {
  background: rgba(84, 49, 141, 0.16);
  color: var(--text);
}
.tf-row > .btn {
  margin-bottom: 1px;
}
.tf-list {
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}
.tf-list li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 0;
  font-size: 13px;
  border-top: 1px solid var(--line);
}
.tf-list li:first-child {
  margin-top: 4px;
}
.tf-page-card .tf-list {
  margin-top: 0;
}
.tf-page {
  max-width: 760px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.tf-ledger {
  max-height: min(52vh, 560px);
  overflow-y: auto;
  margin: 0 -2px;
  padding-right: 4px;
}
.tf-ledger .ta-list-more:not(.is-done) {
  cursor: pointer;
}
.tf-list-when {
  display: inline-block;
  min-width: 9.5em;
  margin-right: 8px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.tf-list-err {
  color: var(--danger, #ff8a8a);
  font-size: 13px;
  border-top: 0;
}
.tf-list-empty {
  color: var(--muted);
  font-size: 13px;
  border-top: 0;
  padding-top: 4px;
}
.tf-dir-tag {
  display: inline-block;
  min-width: 2em;
  margin-right: 4px;
  font-style: normal;
  font-size: 12px;
}
.tf-dir-tag-in { color: var(--accent); }
.tf-dir-tag-out { color: var(--accent2); }

.tf-list-row {
  position: relative;
}
.tf-list-main {
  min-width: 0;
  flex: 1;
}
.tf-row-menu {
  position: relative;
  flex: 0 0 auto;
}
.tf-menu-btn {
  border: none;
  background: transparent;
  color: var(--muted);
  width: 28px;
  height: 28px;
  padding: 0;
  border-radius: 6px;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  letter-spacing: 0.02em;
}
.tf-menu-btn:hover,
.tf-row-menu.is-open .tf-menu-btn {
  color: var(--text);
  background: rgba(84, 49, 141, 0.08);
}
.tf-menu-pop {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  z-index: 20;
  min-width: 88px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--bg1);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.28);
}
.tf-menu-del {
  display: block;
  width: 100%;
  border: none;
  background: transparent;
  color: var(--danger, #ff8a8a);
  text-align: left;
  padding: 8px 10px;
  border-radius: 6px;
  font-size: 13px;
  cursor: pointer;
}
.tf-menu-del:hover {
  background: rgba(255, 138, 138, 0.12);
}

.ocr-rows.holding-grid .ocr-row:not(.holding-detail) { display: block; }

.ocr-row {
  display: grid;
  grid-template-columns: 88px 1fr 72px;
  gap: 6px;
  align-items: center;
}
.ocr-row.trade { grid-template-columns: 88px 72px 52px 96px 64px 64px; }
.ocr-row.transfer { grid-template-columns: 96px 80px 72px 1fr 28px; }
.ocr-row-hd {
  font-size: 11px;
  color: var(--muted);
  pointer-events: none;
}
.ocr-row-hd span { padding: 0 4px; }
.ocr-row input {
  width: 100%;
  padding: 7px 8px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font-size: 13px;
}
.ocr-textarea { margin-top: 4px; }
.ocr-textarea.hidden { display: none; }

.jy-edit-table input {
  width: 100%;
  min-width: 52px;
  padding: 6px 7px;
  border-radius: 6px;
  border: 1px solid var(--line);
  background: var(--bg1);
  color: var(--text);
  font-size: 12px;
}
.jy-edit-table td:nth-child(2) input,
.jy-edit-table td:nth-child(4) input {
  min-width: 44px;
  max-width: 72px;
}
.jy-group + .jy-group { margin-top: 12px; }

.jy-steps {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 0 0 16px;
  padding: 12px 14px;
  background: var(--bg2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}
.jy-step {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: 13px;
}
.jy-step.active { color: var(--text); font-weight: 700; }
.jy-step.done { color: var(--accent); }
.jy-step-n {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  border: 1px solid var(--line);
  background: var(--bg1);
}
.jy-step.active .jy-step-n {
  border-color: var(--accent);
  background: rgba(84, 49, 141, 0.18);
  color: var(--accent);
}
.jy-step.done .jy-step-n {
  border-color: var(--accent);
  color: var(--accent);
}
.jy-step-sep { color: var(--muted); opacity: 0.5; }

.upload-zone label.btn { cursor: pointer; }
.upload-zone input[type="file"] {
  position: absolute;
  width: 0;
  height: 0;
  opacity: 0;
  overflow: hidden;
}

textarea, input[type="text"] {
  width: 100%;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  color: var(--text);
  padding: 10px 12px;
  font-family: inherit;
  font-size: 14px;
  resize: vertical;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
textarea:focus, input[type="text"]:focus {
  outline: none;
  border-color: var(--purple);
  box-shadow: 0 0 0 3px rgba(84, 49, 141, 0.12);
}

.btn {
  border: 1px solid var(--line);
  background: var(--paper);
  color: var(--ink);
  border-radius: 999px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
.btn:hover {
  border-color: rgba(84, 49, 141, 0.35);
  color: var(--purple);
  background: var(--purple-mist);
}
.btn:disabled {
  opacity: 0.42;
  cursor: not-allowed;
  pointer-events: none;
  border-color: var(--line);
  color: var(--muted);
}
.btn.primary:disabled {
  background: rgba(84, 49, 141, 0.2);
  color: #fff;
}
.btn.primary {
  background: var(--purple);
  border-color: var(--purple);
  color: #ffffff;
  font-weight: 700;
  box-shadow: 0 6px 18px rgba(84, 49, 141, 0.22);
}
.btn.primary:hover {
  background: var(--purple-deep);
  border-color: var(--purple-deep);
  color: #fff;
}
.btn.ghost {
  background: transparent;
}
.btn.danger {
  border-color: rgba(224, 69, 90, 0.45);
  color: var(--danger);
}

.row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.row.end { justify-content: flex-end; }

.formal-pre {
  margin: 0;
  white-space: pre-wrap;
  font-family: inherit;
  font-size: 13px;
  line-height: 1.75;
}
.diary-view-pre {
  margin: 0;
  white-space: pre-wrap;
  word-break: break-word;
  font-family: inherit;
  font-size: 14px;
  line-height: 1.65;
  color: var(--text);
}
.diary-view-remark {
  color: #ef4444;
}

.callout {
  padding: 14px 16px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  border-top: 3px solid var(--gold);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  color: var(--ink);
  font-size: 14px;
}

.split {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 14px;
  min-height: 420px;
}
.list-pane {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  overflow: auto;
}
.list-item {
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  color: var(--text);
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  cursor: pointer;
  font-size: 13px;
}
.list-item:hover { background: var(--purple-mist); }
.list-item.active {
  background: var(--purple-wash);
  box-shadow: inset 3px 0 0 var(--gold);
}
.list-item .sum { color: var(--muted); font-size: 12px; margin-top: 3px; }

.nb-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 14px;
}
.nb-filters .home-chip.is-on {
  background: rgba(84, 49, 141, 0.16);
  border-color: rgba(84, 49, 141, 0.4);
  color: var(--accent);
}
.news-filter-bar {
  margin: 0 0 10px;
  flex-shrink: 0;
}
.news-filter-bar.nb-filters,
.news-filter-bar .nb-filters {
  margin: 0;
}
/* 桌面：筛选芯片与下方消息列表卡片拉开间距 */
.news-feed-page > .nb-filters.news-filter-bar {
  margin: 0 0 20px;
}
.news-feed-page .page-head {
  flex-shrink: 0;
}
/* 桌面：page-head 负边距按 .main 直接子级设计；包在 feed 页内时改回正常边距 */
.main:has(.news-feed-page) {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 16px;
}
.news-feed-page > .page-head {
  margin: 0 0 14px;
  width: auto;
  max-width: none;
}
.news-feed-day-hd {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 10px 14px 8px;
  background: var(--bg1);
  border-bottom: 1px solid var(--line);
}
.news-feed-day-hd strong {
  font-size: 14px;
}
.news-feed-day .news-blocks {
  padding: 0 0 8px;
}
.news-blocks {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.news-block-hd {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0;
  padding: 10px 14px 4px;
}
.news-block {
  counter-reset: colitem;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--line);
}
.news-block:last-child {
  border-bottom: 0;
  padding-bottom: 0;
}
.news-block .col-feed-item:last-child {
  border-bottom: none;
}
.news-feed-day + .news-feed-day {
  border-top: 1px solid var(--line);
}
.tools-page {
  display: flex;
  flex-direction: column;
  gap: 0;
  min-height: 0;
}
.tools-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(148px, 1fr));
  gap: 12px;
  padding: 4px 0 20px;
}
.tools-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 18px 12px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--bg1);
  text-decoration: none;
  color: var(--text);
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}
.tools-card:hover {
  border-color: rgba(84, 49, 141, 0.35);
  box-shadow: 0 8px 20px rgba(43, 20, 88, 0.08);
  transform: translateY(-1px);
}
.tools-logo-wrap {
  position: relative;
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
}
.tools-logo {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  object-fit: contain;
  background: #fff;
  border: 1px solid var(--line);
}
.tools-logo.is-hidden {
  display: none;
}
.tools-logo-fallback {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  background: linear-gradient(135deg, var(--hero) 0%, var(--hero-2) 100%);
}
.tools-logo-fallback.is-hidden {
  display: none;
}
.tools-name {
  font-size: 14px;
  font-weight: 650;
  text-align: center;
  line-height: 1.35;
  word-break: break-word;
}
.nb-detail-meta {
  font-size: 12px;
  color: var(--muted);
  margin: -4px 0 10px;
}
.nb-split {
  align-items: stretch;
  grid-template-columns: 240px 1fr;
  min-height: min(70vh, 640px);
}
.nb-side {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: min(70vh, 640px);
  min-width: 0;
}
.nb-side-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
}
.nb-trash-entry {
  display: block;
  width: 100%;
  flex-shrink: 0;
  border: 1px solid var(--line);
  border-top: none;
  border-radius: 0 0 12px 12px;
  background: var(--bg1);
  color: var(--muted);
  padding: 12px 14px;
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}
.nb-trash-entry:hover {
  color: var(--text);
  background: rgba(84, 49, 141, 0.045);
}
.nb-trash-entry.is-on {
  color: var(--accent);
  background: rgba(84, 49, 141, 0.12);
  font-weight: 650;
}
.nb-trash-side-hint {
  margin: 0;
  padding: 14px 12px;
}
.nb-trash-panel {
  min-height: 0;
}
.nb-trash-panel-hd {
  margin-bottom: 12px;
}
.nb-trash-panel-hd h2 {
  margin: 0 0 4px;
  font-size: 18px;
  font-weight: 700;
}
.nb-trash-panel-hd .meta {
  margin: 0;
}
.nb-trash-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.nb-trash-item .nb-trash-ops {
  margin-top: 8px;
  gap: 8px;
}
.nb-trash-empty {
  margin: 0;
  padding: 8px 0;
}
.nb-side-toolbar {
  flex-shrink: 0;
  margin-top: 10px;
}

.list-item.nb-item {
  min-height: 72px;
  box-sizing: border-box;
}
.list-item.nb-item .nb-line-stock,
.list-item.nb-item .nb-line-content,
.list-item.nb-item .nb-line-time {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  line-height: 1.35;
  max-width: 100%;
}
.list-item.nb-item .nb-line-stock {
  min-height: 1.35em;
  display: flex;
  align-items: center;
  gap: 6px;
  font-weight: 600;
  font-size: 13px;
}
.list-item.nb-item .nb-line-stock .nb-line-text {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.list-item.nb-item .nb-line-stock .pill {
  flex-shrink: 0;
}
.list-item.nb-item .nb-line-content {
  margin-top: 3px;
  min-height: 1.35em;
  font-size: 13px;
}
.list-item.nb-item .nb-line-time {
  margin-top: 3px;
  min-height: 1.35em;
  color: var(--muted);
  font-size: 12px;
}

.detail-pane {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  padding: 16px;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.nb-detail-view {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 100%;
}
.nb-stock-name {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  font: inherit;
  font-weight: 800;
  color: var(--purple);
  cursor: pointer;
  display: inline;
  line-height: inherit;
}
.nb-stock-name.is-static {
  cursor: default;
}
.nb-stock-name:hover,
.nb-case-chip:hover .nb-stock-name {
  text-decoration: underline;
}
.nb-detail-view .formal-pre .nb-stock-name,
.nb-detail-view .nb-detail-title .nb-stock-name,
.nb-stock-name.stock-kline-open {
  font-weight: 800;
  color: var(--purple);
}
.nb-detail-view .formal-pre .nb-stock-name:hover,
.nb-detail-view .nb-detail-title .nb-stock-name:hover,
.nb-stock-name.stock-kline-open:hover {
  color: var(--purple-deep);
  text-decoration: underline;
}
.nb-line-date {
  font-weight: 500;
  color: inherit;
}
.nb-cases {
  margin-top: 4px;
}
.nb-cases-label {
  font-size: 13px;
  font-weight: 600;
  margin-bottom: 6px;
}
.nb-composer-write {
  display: flex;
  flex-direction: column;
  min-height: 0;
}
input.m-nb-title,
textarea.m-nb-body {
  width: 100%;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--ink);
}
input.m-nb-title {
  border-bottom: 1px solid var(--line);
  font-size: 22px;
  font-weight: 750;
  line-height: 1.35;
  padding: 10px 0 12px;
}
textarea.m-nb-body {
  min-height: 220px;
  resize: none;
  font-size: 17px;
  line-height: 1.75;
  padding: 12px 0 4px;
}
input.m-nb-title:focus,
textarea.m-nb-body:focus {
  outline: none;
  border-color: var(--line);
  box-shadow: none;
}
input.m-nb-title::placeholder,
textarea.m-nb-body::placeholder {
  color: #b7b0c4;
  font-weight: 500;
}
.nb-case-panel {
  margin-top: 2px;
}
.nb-case-panel > #nbShowCaseAdd {
  margin-top: 0;
}
.nb-case-add {
  display: flex;
  align-items: stretch;
  gap: 8px;
  margin-top: 10px;
}
.nb-case-add[hidden] {
  display: none !important;
}
.nb-case-add .nb-case-query {
  flex: 1 1 auto;
  min-width: 0;
}
.nb-case-add .nb-case-date {
  flex: 0 0 9.5rem;
  width: 9.5rem;
  max-width: 9.5rem;
}
.nb-case-add .btn {
  flex: 0 0 auto;
  white-space: nowrap;
}
.nb-case-chip {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  cursor: pointer;
  font: inherit;
}
.nb-case-date {
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
}
.nb-detail-edited {
  margin-top: auto;
  padding-top: 20px;
  text-align: right;
  color: var(--muted);
  font-size: 12px;
}

.capsules { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.capsule {
  border: 1px solid var(--line);
  background: var(--bg2);
  border-radius: 999px;
  padding: 5px 12px;
  font-size: 12px;
  cursor: pointer;
}
.capsule:hover { border-color: var(--accent); }
.capsule.active-pill {
  border-color: transparent;
  background: var(--purple);
  color: #fff;
}

.modal {
  position: fixed;
  inset: 0;
  background: rgba(28, 20, 48, 0.42);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 16px;
}
.modal.hidden { display: none; }
/* 需盖过首页模板编辑器（z-index:120）与模板市场（130） */
#tplPublishModal {
  z-index: 220;
}
.modal-card {
  width: min(420px, 100%);
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  border-top: 4px solid var(--gold);
  box-shadow: var(--shadow);
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.modal-card h3 { margin: 0 0 4px; }
.modal-card input,
.modal-card select {
  width: 100%;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
}
.modal-card label { font-size: 13px; display: flex; align-items: center; gap: 6px; }

#loginPromptModal {
  z-index: 260;
}
.login-prompt-card {
  width: min(360px, 100%);
  gap: 12px;
}
.login-prompt-card h3 {
  font-size: 18px;
}
.login-prompt-card .meta {
  margin: 0;
  line-height: 1.55;
}
.login-prompt-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 4px;
}

.rank-modal-card {
  width: min(480px, 100%);
  padding: 0;
  gap: 0;
  overflow: hidden;
}
.rank-modal-head {
  padding: 20px 20px 16px;
  border-bottom: 1px solid var(--line);
}
.rank-modal-head h3 { margin: 0 0 6px; font-size: 18px; }
.rank-modal-head .meta { margin: 0; font-size: 12px; line-height: 1.5; }
.ranking-split .rank-meta-sm,
.ranking-split #rankDetailMeta {
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.rank-modal-note {
  margin: 8px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
}
.rank-modal-body {
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-height: min(70vh, 520px);
  overflow-y: auto;
}
.rank-form-section { display: flex; flex-direction: column; gap: 10px; }
.rank-section-title {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.rank-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
}
.rank-field-label {
  color: var(--muted);
  font-size: 12px;
}
.rank-modal-card input,
.rank-modal-card select {
  width: 100%;
  padding: 9px 11px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
}
.rank-modal-card input:focus,
.rank-modal-card select:focus {
  outline: none;
  border-color: rgba(84, 49, 141, 0.55);
  box-shadow: 0 0 0 2px rgba(84, 49, 141, 0.12);
}
.rank-date-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
}
.rank-date-grid .rank-field {
  min-width: 0;
}
.rank-date-grid input[type="date"] {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}
.rank-object-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
}
.rank-object-opt {
  margin: 0;
  padding: 10px 8px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
}
.rank-object-opt.is-on {
  border-color: rgba(84, 49, 141, 0.55);
  background: rgba(84, 49, 141, 0.12);
  color: #54318d;
  box-shadow: 0 0 0 2px rgba(84, 49, 141, 0.12);
}
.rank-filter-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.rank-filter-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.rank-section-hint {
  margin: -4px 0 10px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.4;
}
.rank-check {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: rgba(84, 49, 141, 0.03);
  cursor: pointer;
  font-size: 13px;
  transition: border-color 0.15s, background 0.15s;
}
.rank-check-block {
  align-items: flex-start;
  padding: 12px 14px;
}
.rank-check-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.rank-check-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.3;
}
.rank-check-desc {
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
}
.rank-check:hover {
  border-color: rgba(255, 255, 255, 0.14);
  background: rgba(84, 49, 141, 0.055);
}
.rank-check:has(input:checked) {
  border-color: rgba(84, 49, 141, 0.45);
  background: rgba(84, 49, 141, 0.08);
}
.rank-check input {
  width: 15px;
  height: 15px;
  margin: 2px 0 0;
  accent-color: var(--accent);
  flex-shrink: 0;
}
.rank-check span { line-height: 1.3; }
.rank-check-wide { grid-column: 1 / -1; }
.rank-modal-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 14px 20px 18px;
  border-top: 1px solid var(--line);
  background: rgba(0, 0, 0, 0.12);
}

/* 成交批量导入弹窗 */
.trade-import-card {
  width: min(560px, 100%);
  padding: 0;
  gap: 0;
  overflow: hidden;
}
.trade-import-head {
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--line);
}
.trade-import-head h3 { margin: 0 0 6px; font-size: 18px; }
.trade-import-head .meta { margin: 0; font-size: 12px; line-height: 1.5; }
.trade-import-body {
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-height: min(66vh, 520px);
  overflow-y: auto;
}
.ti-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
}
.ti-field > span { color: var(--muted); font-size: 12px; }
.ti-field > span em { color: var(--danger); font-style: normal; }
.ti-field input {
  width: 100%;
  padding: 9px 11px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
}
.ti-tabs { gap: 6px; flex-wrap: wrap; }
/* 三种导入方式面板等高：切换 Tab 时弹窗高度不跳动 */
.trade-import-body > [data-ti-panel] {
  display: flex;
  flex-direction: column;
  gap: 8px;
  height: 232px;
  flex: 0 0 auto;
}
.trade-import-body > [data-ti-panel] > .upload-zone {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 16px;
}
.trade-import-body > [data-ti-panel] > .upload-zone p {
  margin: 0;
}
.trade-import-body > [data-ti-panel] > .upload-zone .upload-actions {
  margin: 0;
}
.trade-import-body > [data-ti-panel] textarea {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  resize: none;
}
.trade-import-body > [data-ti-panel] .ti-panel-actions {
  flex: 0 0 auto;
  gap: 8px;
  margin: 0;
}
.trade-import-body > [data-ti-panel] .ti-panel-hint {
  flex: 0 0 auto;
  margin: 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.ti-status {
  margin: 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--success);
}
.ti-status.is-error { color: var(--danger); }
.ti-preview {
  border-top: 1px solid var(--line);
  padding-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ti-preview .ti-empty { margin: 0; font-size: 12px; }
.ti-preview-hd {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  font-size: 13px;
}
.ti-date-group { display: flex; flex-direction: column; gap: 4px; }
.ti-date-hd {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  font-weight: 700;
  font-size: 13px;
  color: var(--purple);
}
.ti-row-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}
.ti-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px dashed var(--line);
  font-size: 13px;
}
.ti-row:last-child { border-bottom: 0; }
.ti-row-side {
  flex: 0 0 auto;
  min-width: 2em;
  text-align: center;
  border-radius: 6px;
  padding: 1px 5px;
  font-size: 12px;
  font-weight: 700;
}
.ti-row-side.is-buy { background: rgba(224, 69, 90, 0.12); color: var(--danger); }
.ti-row-side.is-sell { background: rgba(18, 163, 122, 0.14); color: var(--success); }
.ti-row-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ti-row-name em { font-style: normal; color: var(--muted); font-size: 12px; }
.ti-row-del {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  line-height: 1;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--muted);
  font-size: 16px;
  cursor: pointer;
}
.ti-row-del:hover { background: rgba(224, 69, 90, 0.12); color: var(--danger); }
.trade-import-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 14px 20px 18px;
  border-top: 1px solid var(--line);
  background: rgba(0, 0, 0, 0.12);
}

.wl-add-modal-card {
  width: min(420px, 100%);
  padding: 0;
  gap: 0;
  overflow: hidden;
}
.wl-add-modal-head {
  padding: 18px 20px 14px;
  border-bottom: 1px solid var(--line);
}
.wl-add-modal-head h3 {
  margin: 0;
  font-size: 17px;
  font-weight: 800;
}
.wl-add-modal-stock {
  margin: 8px 0 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: 0.01em;
}
.wl-add-modal-stock .wl-add-code {
  margin-left: 8px;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
}
.wl-add-modal-body {
  padding: 14px 20px 8px;
}
.wl-add-modal-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.wl-add-modal-label {
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ink);
}
.wl-add-modal-label span {
  font-weight: 500;
  color: var(--muted);
  letter-spacing: 0;
}
.wl-add-modal-hint {
  margin: 0;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.wl-add-tag-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  max-height: min(36vh, 240px);
  overflow-y: auto;
  padding: 2px 0;
}
.wl-add-tag-list.is-empty,
.wl-add-tag-list.is-loading {
  display: block;
}
.wl-add-tag-chip {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--bg1);
  color: var(--ink);
  border-radius: 999px;
  padding: 7px 12px;
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.wl-add-tag-chip:hover {
  border-color: rgba(84, 49, 141, 0.28);
  background: var(--purple-wash);
}
.wl-add-tag-chip.is-on {
  border-color: transparent;
  background: var(--purple);
  color: #fff;
}
.wl-add-tag-chip:focus-visible {
  outline: 2px solid var(--purple);
  outline-offset: 2px;
}
.wl-add-modal-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 12px 20px 16px;
  border-top: 1px solid var(--line);
  background: var(--bg1);
}
.wl-add-btn {
  padding: 2px 8px;
  font-size: 12px;
  line-height: 1.35;
  white-space: nowrap;
  flex-shrink: 0;
}
.wl-add-btn.is-owned {
  color: var(--muted);
  border-color: transparent;
  background: rgba(26, 18, 40, 0.06);
  cursor: pointer;
}
.wl-add-btn.is-owned:hover {
  color: var(--purple);
  background: var(--purple-wash);
}
.wl-add-td,
.wl-add-th {
  width: 1%;
  text-align: right;
  white-space: nowrap;
}

.auth-form { display: flex; flex-direction: column; gap: 10px; }
.auth-form input {
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
}
.check-row { font-size: 13px; display: flex; align-items: center; gap: 8px; cursor: pointer; }
.pill.member { border-color: var(--accent); color: var(--accent); }

.kline-wrap {
  background: var(--purple-mist);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 8px;
}
.kline-wrap canvas { width: 100%; height: 280px; display: block; }

.kline-page {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: calc(100vh - 56px);
}
.kline-page .page-head {
  margin-bottom: 0;
}
.kline-page .page-head:not(:has(.meta)) > div:first-child {
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
.kline-page .kline-theme-pill {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.22);
  color: #fff;
}
.kline-code {
  color: var(--muted);
  font-weight: 500;
  font-size: 0.72em;
  letter-spacing: 0.04em;
}
.kline-board {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 460px;
  box-shadow: var(--shadow-sm);
}
.kline-quote {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 22px;
  padding: 12px 16px 10px;
  border-bottom: 1px solid var(--line);
}
.kline-quote-main {
  display: flex;
  align-items: baseline;
  gap: 12px;
}
.kline-quote-px {
  font-size: 28px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.03em;
  line-height: 1;
}
.kline-quote-chg {
  font-size: 14px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.kline-quote-px.is-up,
.kline-quote-chg.is-up { color: var(--danger); }
.kline-quote-px.is-down,
.kline-quote-chg.is-down { color: var(--success); }
.kline-quote-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  color: var(--muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.kline-stage {
  position: relative;
  flex: 1;
  min-height: 480px;
  background: #fff;
}
.kline-load-hint {
  display: none;
  position: absolute;
  top: 12px;
  left: 50%;
  z-index: 5;
  transform: translateX(-50%);
  padding: 7px 16px;
  border-radius: 8px;
  background: #5c6370;
  color: #fff;
  font-size: 14px;
  font-weight: 650;
  letter-spacing: 0.04em;
  line-height: 1.3;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
}
.kline-load-hint.is-on {
  display: block;
}
.kline-stage canvas {
  width: 100%;
  height: 100%;
  display: block;
  cursor: crosshair;
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
}
.kline-stage.is-panning canvas {
  cursor: grabbing;
}

#klineModal {
  z-index: 240;
  padding: 24px;
}
.kline-modal-card {
  width: min(1120px, 96vw);
  height: min(82vh, 860px);
  max-height: 92vh;
  padding: 0;
  gap: 0;
  overflow: hidden;
}
.kline-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 20px 12px;
  border-bottom: 1px solid var(--line);
  flex-shrink: 0;
}
.kline-modal-title-wrap {
  min-width: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.kline-modal-head h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 800;
}
.kline-themes {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  max-height: calc((11px * 1.35 + 6px) * 3 + 5px * 2);
  overflow: hidden;
}
.kline-theme-pill {
  display: inline-block;
  font-size: 11px;
  line-height: 1.35;
  background: rgba(84, 49, 141, 0.08);
  border: 1px solid rgba(84, 49, 141, 0.12);
  border-radius: 999px;
  padding: 2px 9px;
  color: var(--text);
  white-space: nowrap;
}
.kline-modal-board {
  flex: 1;
  min-height: 0;
  border: none;
  border-radius: 0;
  box-shadow: none;
}
#klineModal .kline-board {
  min-height: 0;
}
#klineModal .kline-stage {
  min-height: 0;
}
body.kline-modal-open {
  overflow: hidden;
}

body.mobile-app #klineModal {
  z-index: 280;
  padding: 0;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  align-items: stretch;
}
body.mobile-app .kline-modal-card {
  width: 100%;
  height: auto;
  flex: 1;
  max-height: none;
  border-radius: 0;
  max-width: none;
}
body.mobile-app .kline-modal-head {
  padding: 12px 14px 10px;
  flex-wrap: nowrap;
  align-items: flex-start;
}
body.mobile-app .kline-modal-title-wrap {
  flex: 1;
  min-width: 0;
}
body.mobile-app .kline-modal-head h3 {
  font-size: 16px;
  min-width: 0;
}
body.mobile-app .kline-themes {
  max-height: calc((10px * 1.35 + 4px) * 2 + 4px);
  gap: 4px;
}
body.mobile-app .kline-theme-pill {
  font-size: 10px;
  padding: 1px 7px;
}
body.mobile-app .kline-modal-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
body.mobile-app .kline-orient-btn {
  height: 32px;
  padding: 0 10px;
  font-size: 13px;
  white-space: nowrap;
}
body.mobile-app #klineModal .kline-modal-board {
  position: relative;
  width: 100%;
  min-width: 0;
}
body.mobile-app #klineModal .kline-board {
  width: 100%;
  min-width: 0;
}
body.mobile-app #klineModal .kline-quote {
  position: absolute;
  left: 8px;
  top: 8px;
  z-index: 3;
  max-width: min(58%, 220px);
  padding: 6px 8px;
  border: none;
  border-radius: 0;
  background: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
  pointer-events: none;
  gap: 4px 8px;
  flex-direction: column;
  align-items: flex-start;
}
body.mobile-app #klineModal .kline-quote-main,
body.mobile-app #klineModal .kline-quote-meta,
body.mobile-app #klineModal .kline-quote-px,
body.mobile-app #klineModal .kline-quote-chg {
  text-shadow:
    0 0 8px rgba(255, 255, 255, 0.95),
    0 1px 2px rgba(255, 255, 255, 0.85);
}
body.mobile-app #klineModal .kline-quote-main {
  gap: 8px;
}
body.mobile-app #klineModal .kline-quote-px {
  font-size: 22px;
}
body.mobile-app #klineModal .kline-quote-meta {
  gap: 4px 8px;
  font-size: 11px;
  line-height: 1.35;
}
body.mobile-app #klineModal .kline-stage {
  flex: 1;
  width: 100%;
  min-width: 0;
  min-height: 0;
}

/* K 线弹窗 · 模拟横屏（内容旋转 90°，无需转动手机） */
body.mobile-app.kline-modal-landscape {
  overflow: hidden;
}
body.mobile-app.kline-modal-landscape #klineModal {
  padding: 0;
}
body.mobile-app.kline-modal-landscape .kline-modal-card {
  position: fixed;
  top: 50%;
  left: 50%;
  width: 100dvh;
  height: 100dvw;
  max-width: none;
  max-height: none;
  transform: translate(-50%, -50%) rotate(90deg);
  transform-origin: center center;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
body.mobile-app.kline-modal-landscape .kline-modal-head {
  padding: 8px 12px 6px;
  flex-shrink: 0;
}
body.mobile-app.kline-modal-landscape .kline-modal-head h3 {
  font-size: 14px;
}
body.mobile-app.kline-modal-landscape .kline-orient-btn {
  height: 28px;
  padding: 0 8px;
  font-size: 12px;
}
body.mobile-app.kline-modal-landscape .kline-modal-board {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
body.mobile-app.kline-modal-landscape #klineModal .kline-board {
  min-height: 0;
}
body.mobile-app.kline-modal-landscape #klineModal .kline-stage {
  flex: 1;
  min-height: 0;
  overflow: hidden;
}
body.mobile-app.kline-modal-landscape #klineModal .kline-stage canvas {
  display: block;
  max-height: 100%;
}
body.mobile-app.kline-modal-landscape #klineModal .kline-quote {
  max-width: min(36%, 200px);
  padding: 4px 6px;
}
body.mobile-app.kline-modal-landscape #klineModal .kline-quote-px {
  font-size: 18px;
}
body.mobile-app.kline-modal-landscape #klineModal .kline-quote-meta {
  font-size: 10px;
}

.stock-kline-open {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.stock-kline-open:hover {
  color: var(--accent);
}
button.sent-stock-code.stock-kline-open:hover {
  color: var(--accent);
}

.toast {
  position: fixed;
  bottom: 24px;
  right: 24px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-left: 4px solid var(--cyan);
  box-shadow: var(--shadow);
  padding: 12px 16px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  z-index: 99;
  max-width: 360px;
}
.toast.error {
  border-color: rgba(224, 69, 90, 0.45);
  border-left-color: var(--danger);
  color: var(--danger);
}
.hidden { display: none !important; }

.holding-summary-card {
  transition: border-color 0.15s, box-shadow 0.15s;
}
.holding-summary-card.holding-summary-detail {
  cursor: default;
}
.holding-summary-card:not(.holding-summary-detail) {
  cursor: pointer;
}
.holding-summary-card:not(.holding-summary-detail):hover {
  border-color: rgba(84, 49, 141, 0.45) !important;
  box-shadow: 0 0 0 1px rgba(84, 49, 141, 0.12);
}
.holding-summary-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.holding-summary-broker {
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 600;
}
.holding-summary-metrics {
  display: flex;
  flex-wrap: wrap;
  gap: 16px 24px;
  margin-bottom: 12px;
}
.holding-summary-metric {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 88px;
}
.holding-summary-metric .lbl {
  font-size: 11px;
  color: var(--muted);
}
.holding-summary-metric .val {
  font-size: 16px;
  font-weight: 700;
}
.holding-summary-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--line);
  font-size: 12px;
  color: var(--muted);
}
.holding-summary-foot .arrow {
  color: var(--accent);
  font-size: 16px;
}
.holding-summary-reupload {
  margin-top: 10px;
}

.today-account-split {
  grid-template-columns: 240px 1fr;
  min-height: min(70vh, 640px);
  align-items: stretch;
}
.ta-list-col {
  display: flex;
  flex-direction: column;
  min-height: 0;
  max-height: min(70vh, 640px);
}
.ta-list-toolbar {
  flex-shrink: 0;
  min-height: 36px;
  margin-top: 8px;
  display: flex;
  align-items: center;
}
.ta-back-today {
  width: 100%;
}
.ta-update-stack {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ta-update-upload .trade-route-hint {
  margin-top: 0;
}
.ta-update-booked .ta-remark-card {
  margin-top: 0;
}
.ta-day-rail {
  flex: 1;
  max-height: none;
  min-height: 0;
}
.ta-list-loading {
  padding: 14px 12px;
  color: var(--muted);
  font-size: 13px;
  margin: 0;
}
.ta-list-more {
  padding: 12px;
  text-align: center;
  color: var(--muted);
  font-size: 12px;
  border-top: 1px solid var(--line);
}
.ta-list-more.is-done {
  opacity: 0.65;
}
.ta-day-item .ta-day-date {
  font-weight: 600;
  font-size: 14px;
}
/* 估算标识：该日持仓为成交推算/补计所得，非截图录入 */
.ta-day-item .ta-day-est {
  display: inline-block;
  margin-left: 6px;
  padding: 0 5px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  line-height: 16px;
  vertical-align: 1px;
  background: rgba(245, 166, 35, 0.18);
  color: var(--gold-deep);
  border: 1px solid rgba(245, 166, 35, 0.38);
}
/* 日期列表里的当日涨跌幅：涨红跌绿（.pnl-up / .pnl-down 已全局定义） */
.ta-day-item .sum .ta-day-ratio {
  font-weight: 600;
}
.ta-day-item .sum {
  margin-top: 4px;
  line-height: 1.35;
}
.ta-day-item .ta-day-preview {
  margin-top: 2px;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.35;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}
.ta-day-item .sum.is-pending {
  color: var(--muted);
  opacity: 0.55;
}
.ta-empty-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.ta-backfill-card {
  border: 1px dashed rgba(84, 49, 141, 0.28);
  background: rgba(84, 49, 141, 0.04);
}
.ta-backfill-lead {
  margin: 0;
  font-size: 14px;
}
.ta-backfill-steps,
.ta-backfill-preview,
.ta-backfill-actions {
  margin-top: 12px;
}
.ta-backfill-step-list {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ta-backfill-step {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--bg2);
  border: 1px solid var(--line);
}
.ta-backfill-step-mark {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  background: rgba(18, 163, 122, 0.12);
  color: #12a37a;
}
.ta-backfill-step.is-error .ta-backfill-step-mark {
  background: rgba(224, 69, 90, 0.12);
  color: var(--danger);
}
.ta-backfill-step.is-warn .ta-backfill-step-mark {
  background: rgba(245, 166, 35, 0.16);
  color: #c47d0a;
}
.ta-backfill-step-title {
  font-weight: 600;
  font-size: 13px;
}
.ta-backfill-acc {
  margin-top: 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  overflow: hidden;
}
.ta-backfill-acc-hd {
  padding: 8px 10px;
  background: var(--bg2);
  font-weight: 600;
  font-size: 13px;
}
.ta-backfill-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.ta-backfill-table th,
.ta-backfill-table td {
  padding: 6px 8px;
  border-top: 1px solid var(--line);
  text-align: left;
}
.ta-backfill-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.today-account-detail {
  min-width: 0;
  overflow: auto;
  padding: 4px 2px 12px;
}

/* 左右分栏详情：去掉右侧外层大卡，标题/说明/内卡统一留白 */
.today-account-split > .detail-pane {
  border: none;
  background: transparent;
  box-shadow: none;
  padding: 4px 4px 16px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
/* 详情区自己滚动：子块勿被 flex 压缩，否则卡片 overflow:hidden 会裁掉内容 */
.today-account-split > .detail-pane > * {
  flex: 0 0 auto;
  min-height: 0;
}
/* 笔记本详情保留卡片形态（内容本身无内层卡） */
.nb-split > .detail-pane {
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  padding: 18px 20px 20px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-height: 0;
}
.today-account-split .ta-detail-hd,
.nb-split .ta-detail-hd {
  margin-bottom: 0;
  padding: 2px 4px 4px;
}
.today-account-split .ta-detail-title,
.nb-split .ta-detail-title {
  font-size: 20px;
}
.today-account-split .ta-detail-hd .meta,
.nb-split .ta-detail-hd .meta,
.today-account-split .ta-detail-sub,
.nb-split .ta-detail-sub {
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.45;
}
.today-account-split .card,
.today-account-split .ta-detail-panel,
.today-account-split .holding-summary-card,
.today-account-split .trade-summary-card,
.today-account-split .ta-overview-card,
.today-account-split .ta-broker-card,
.nb-split .card {
  border-radius: 12px;
}
.today-account-split .card-hd,
.nb-split .card-hd {
  padding: 14px 18px;
}
.today-account-split .card-bd,
.nb-split .card-bd {
  padding: 14px 18px;
}
.today-account-split .ta-detail-panel {
  padding: 16px 18px;
}
.today-account-split .data-table th,
.today-account-split .data-table td {
  padding: 8px 14px;
}
.today-account-split .list-pane.ta-day-rail {
  border-radius: 12px;
}
.today-account-split .ta-list-toolbar {
  margin-top: 10px;
}
.ta-detail {
  animation: taDetailIn 0.28s ease-out;
}
@keyframes taDetailIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .ta-detail { animation: none; }
}
.ta-detail-hd {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.ta-detail-actions-inline {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.btn-danger-sm {
  color: var(--danger, #c0392b);
  border-color: rgba(192, 57, 43, 0.35);
}
.btn-danger-sm:hover {
  background: rgba(192, 57, 43, 0.08);
  border-color: rgba(192, 57, 43, 0.5);
}
.ta-detail-kicker-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.ta-detail-kicker {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--accent);
}
.ta-detail-title {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
}
.ta-detail-hd .meta {
  margin: 6px 0 0;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
  font-weight: 400;
}
.ta-detail-sub {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.4;
}
.ta-detail-panel {
  background: rgba(84, 49, 141, 0.045);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px 18px 10px;
}
.ta-update-booked-label {
  margin: 0 0 12px;
  font-size: 13px;
  color: var(--muted);
}
.ta-accounts-panel {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ta-account-cards {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ta-overview-card {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px 18px 10px;
  background: rgba(84, 49, 141, 0.07);
}
.ta-overview-card .ta-broker-card-hd {
  color: var(--muted);
}
.ta-broker-card {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 16px 18px 10px;
  background: rgba(84, 49, 141, 0.045);
}
.ta-transfer-block {
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px dashed var(--line);
}
.ta-transfer-label {
  margin: 0 0 8px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.ta-transfer-list {
  margin: 0;
}
.ta-transfer-item .booked-item-text {
  color: var(--text);
}
.ta-broker-card-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.ta-broker-card-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  min-width: 0;
}
.ta-broker-clear {
  flex-shrink: 0;
  color: var(--danger, #dc2626);
}
.ta-broker-clear:hover {
  color: var(--danger, #dc2626);
  background: rgba(220, 38, 38, 0.08);
}
.ta-metric-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(108px, 1fr));
  gap: 12px 16px;
  padding-bottom: 14px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--line);
}
.ta-metric {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.ta-metric .lbl {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.02em;
}
.ta-metric .val {
  font-size: 17px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.ta-metric .unit {
  margin-left: 2px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.ta-detail-count {
  margin: 0 0 10px;
  font-size: 13px;
  color: var(--muted);
}
.ta-detail-count strong {
  color: var(--text);
  font-size: 16px;
  font-weight: 700;
}
.ta-content-list {
  margin: 0;
}
.ta-content-list .booked-item {
  padding: 12px 0;
  border-bottom-color: var(--line);
}
.ta-content-list .booked-item:last-child {
  border-bottom: none;
}
.ta-content-list .booked-item-text {
  font-size: 14px;
  line-height: 1.5;
}
.ta-detail-actions {
  display: flex;
  justify-content: flex-end;
  padding-top: 10px;
  margin-top: 4px;
  border-top: 1px solid var(--line);
}
.ta-remark-card .ta-metric-strip {
  border-bottom-color: rgba(84, 49, 141, 0.10);
}

.ta-cash-hint {
  margin: 8px 0 2px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
}
/* 与录入值不一致的告警：红色胶囊背景，视觉上独立于普通说明文字 */
.ta-cash-hint-alert {
  margin: 8px 0 6px;
}
.ta-cash-hint-alert .pill.danger {
  font-size: 12px;
}

.trade-summary-count {
  margin: 0 0 10px;
  font-size: 14px;
  font-weight: 600;
}
.trade-summary-list {
  margin: 0 0 8px;
  padding-left: 18px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--muted);
}
.trade-summary-list li + li { margin-top: 4px; }
.trade-summary-more,
.trade-summary-routed {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--muted);
}
.trade-summary-routed { color: var(--accent2); }
.trade-routed-success { margin: 0 0 12px; }
.trade-routed-success .trade-summary-count.success { color: var(--accent2); margin-bottom: 10px; }
.trade-routed-links { display: flex; flex-wrap: wrap; gap: 8px; }

.booked-item-list {
  list-style: none;
  margin: 0 0 12px;
  padding: 0;
}
.booked-item {
  padding: 10px 0;
  border-bottom: 1px solid rgba(84, 49, 141, 0.08);
}
.booked-item:last-child { border-bottom: none; }
.booked-item-main {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}
.booked-item-text {
  flex: 1;
  font-size: 13px;
  line-height: 1.55;
  word-break: break-word;
}
.booked-item-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.booked-item-view .booked-item-main {
  justify-content: flex-start;
}
.booked-item-remark {
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.5;
  color: #ef4444;
  cursor: pointer;
}
.booked-item-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.booked-item-tag {
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(84, 49, 141, 0.35);
  background: rgba(84, 49, 141, 0.12);
  color: var(--accent);
  border-radius: 999px;
  padding: 2px 8px;
  font-size: 11px;
}
.btn.danger-text { color: var(--danger); }

.remark-dialog {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.remark-dialog.hidden { display: none; }
.remark-dialog-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
}
.remark-dialog-panel {
  position: relative;
  width: min(420px, 100%);
  z-index: 1;
}
.remark-tag-block { margin-top: 12px; }
.remark-tag-hint {
  margin: 0 0 8px;
  font-size: 13px;
  font-weight: 600;
}
.remark-tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.remark-tag {
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  border-radius: 999px;
  padding: 6px 12px;
  font-size: 13px;
  cursor: pointer;
}
.remark-tag:hover { border-color: var(--accent); }
.remark-tag.is-on {
  border-color: var(--accent);
  background: rgba(84, 49, 141, 0.15);
  color: var(--accent);
}
.remark-tag-dev.is-on {
  border-color: rgba(232, 184, 109, 0.65);
  background: rgba(232, 184, 109, 0.14);
  color: var(--accent2);
}
.booked-item-tag-dev {
  border-color: rgba(232, 184, 109, 0.35);
  color: var(--accent2);
}
.home-ops-exec {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.home-ops-exec-tag {
  font-size: 10px;
  padding: 2px 6px;
  border-radius: 999px;
  background: rgba(232, 184, 109, 0.12);
  color: var(--accent2);
}
.remark-tag-tip {
  margin: 8px 0 0;
  font-size: 12px;
  color: var(--muted);
}

.home-text-wrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
.home-sys-cell {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
.home-sys-remark {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  padding-top: 6px;
  border-top: 1px dashed rgba(84, 49, 141, 0.10);
}
.home-sys-remark-area {
  min-height: 52px;
  color: #ef4444;
}
.home-sys-remark-view .home-view-area {
  font-size: 12px;
  color: #ef4444;
}
.home-nb-tags {
  margin: 0;
}
.home-nb-tag-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.home-nb-tag {
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--muted);
  border-radius: 999px;
  padding: 3px 8px;
  font-size: 11px;
  line-height: 1.3;
  cursor: pointer;
}
button.home-nb-tag:hover { border-color: var(--accent); color: var(--text); }
.home-nb-tag.is-on {
  border-color: var(--accent);
  background: rgba(84, 49, 141, 0.15);
  color: var(--accent);
}
.home-layout-cfg-label {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  color: var(--muted);
}
.home-design-preview .home-nb-tag {
  cursor: default;
  pointer-events: none;
}

.accounts-filter { margin-bottom: 14px; }
.accounts-stat-grid { margin-bottom: 8px; }
.accounts-breakdown { margin: 0 0 14px; }
.accounts-holdings-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.pnl-up { color: var(--danger); }
.pnl-down { color: var(--success); }

.stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
.stat-card {
  background: var(--bg1);
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 12px;
}
.stat-val { font-size: 18px; font-weight: 700; }
.stat-lbl { font-size: 12px; color: var(--muted); margin-top: 4px; }
.stat-card.stat-success .stat-val { color: var(--success); }
.stat-card.stat-warn .stat-val { color: var(--accent2); }
.stat-card.stat-info .stat-val { color: var(--accent); }

.tier-summary { display: flex; flex-wrap: wrap; gap: 8px; }
.tier-pill {
  background: var(--bg2);
  border-radius: 8px;
  padding: 6px 10px;
  font-size: 12px;
}
.tier-block { margin-top: 12px; }
.tier-title { font-size: 13px; font-weight: 600; margin-bottom: 6px; }

/* 情绪面详情：指标带 + 题材块 */
.sentiment-detail {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.sentiment-detail .ta-detail-hd {
  margin-bottom: 0;
  padding: 2px 4px 4px;
}
.sentiment-detail .ta-detail-title {
  font-size: 20px;
}
.sentiment-detail .ta-detail-hd .meta {
  margin-top: 6px;
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
  font-weight: 400;
}
.sent-metrics {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 1px;
  background: var(--line);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.sent-metric {
  background: var(--bg1);
  padding: 14px 16px;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sent-metric-lbl {
  font-size: 11px;
  letter-spacing: 0.02em;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sent-metric-val {
  font-size: 15px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.25;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sent-metric.is-info .sent-metric-val { color: var(--accent); }
.sent-metric.is-success .sent-metric-val { color: var(--success); }
.sent-metric.is-warn .sent-metric-val { color: var(--accent2); }

.sent-ladder {
  background: var(--bg1);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.sent-ladder-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
  font-weight: 600;
}
.sent-ladder-hd em {
  font-style: normal;
  font-weight: 500;
  color: var(--muted);
  margin-left: 6px;
  font-size: 12px;
}
.sent-ladder-bd { padding: 14px 18px 16px; }
.sentiment-detail .tier-pill {
  padding: 5px 10px;
  font-size: 12px;
  border: 1px solid var(--line);
  background: rgba(84, 49, 141, 0.045);
}
.sentiment-detail .tier-pill b {
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.sentiment-detail .tier-block { margin-top: 10px; }
.sentiment-detail .tier-title {
  font-size: 12px;
  color: var(--muted);
  font-weight: 600;
  margin-bottom: 6px;
}

.sent-section-hd {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin: 6px 4px 0;
}
.sent-section-hd strong {
  font-size: 14px;
}
.sent-section-hd .meta {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
  font-weight: 400;
  line-height: 1.45;
}
.sent-note {
  margin: 0 4px;
  line-height: 1.55;
}
.sent-disclaimer {
  margin: 4px 4px 0;
  padding: 0 0 8px;
  font-size: 12px;
  line-height: 1.65;
  color: var(--muted);
}

.sent-themes {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.sent-theme {
  background: var(--bg1);
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
}
.sent-theme-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  background: rgba(84, 49, 141, 0.03);
  border-bottom: 1px solid var(--line);
}
.sent-theme-name {
  font-size: 13px;
  font-weight: 650;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sent-theme-count {
  flex: 0 0 auto;
  min-width: 22px;
  height: 20px;
  padding: 0 7px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  background: rgba(84, 49, 141, 0.12);
}
.sent-theme-bd { padding: 0; }
.sent-table {
  font-size: 12.5px;
}
.sent-table th,
.sent-table td {
  padding: 9px 16px;
  vertical-align: middle;
}
.sent-table thead th {
  font-size: 11px;
  letter-spacing: 0.02em;
  background: rgba(0, 0, 0, 0.12);
  position: sticky;
  top: 0;
  z-index: 1;
}
.sent-table tbody tr:hover {
  background: rgba(84, 49, 141, 0.05);
}
.sent-board {
  width: 1%;
  white-space: nowrap;
}
.sent-board-pill {
  display: inline-block;
  padding: 1px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
  color: var(--accent2);
  background: rgba(232, 184, 109, 0.12);
  border: 1px solid rgba(232, 184, 109, 0.22);
}
.sent-stock {
  min-width: 88px;
}
.sent-stock-name {
  display: block;
  font-weight: 600;
  line-height: 1.25;
}
.sent-stock-code {
  display: block;
  margin-top: 1px;
  font-size: 11px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
.watchlist-name-btn.sent-stock-name {
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 700;
  padding: 0;
  cursor: pointer;
  text-align: left;
}
.watchlist-name-btn.sent-stock-name:hover {
  color: var(--accent, #54318d);
}
.jy-stock-cell {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 96px;
}
.jy-stock-cell input {
  width: 100%;
  min-width: 0;
}
.home-rank-view-hd .sent-stock {
  display: inline-block;
  vertical-align: top;
  min-width: 0;
}
.home-rank-view-hd .sent-stock-name {
  display: inline;
  font-weight: inherit;
}
.home-rank-view-hd .sent-stock-code {
  display: block;
  font-weight: 400;
}
.sent-time,
.sent-num {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.sent-kw {
  max-width: 220px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 1100px) {
  .sent-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (max-width: 720px) {
  .today-account-split > .detail-pane {
    padding: 2px 0 14px;
  }
  .nb-split > .detail-pane {
    padding: 14px 14px 16px;
  }
  .sent-metrics {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sent-kw { max-width: 140px; }
  .sent-theme-hd,
  .sent-ladder-hd {
    padding: 12px 14px;
  }
  .sent-table th,
  .sent-table td {
    padding: 8px 12px;
  }
  .today-account-split .card-hd,
  .today-account-split .card-bd,
  .nb-split .card-hd,
  .nb-split .card-bd {
    padding: 12px 14px;
  }
}

.msg-split {
  display: flex;
  min-height: 480px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.msg-list {
  width: 340px;
  flex-shrink: 0;
  border-right: 1px solid var(--line);
  background: var(--bg1);
  overflow: auto;
}
.msg-list-hd { padding: 10px 12px; font-size: 13px; font-weight: 600; border-bottom: 1px solid var(--line); }
.msg-item {
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  color: var(--text);
  padding: 12px;
  border-bottom: 1px solid var(--line);
  cursor: pointer;
}
.msg-item:hover, .msg-item.active { background: rgba(84, 49, 141, 0.1); }
.msg-title { font-weight: 600; font-size: 14px; margin: 6px 0; }
.msg-detail { flex: 1; padding: 16px; overflow: auto; }

.cls-split {
  display: flex;
  min-height: 560px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
}
.cls-feed {
  width: 380px;
  flex-shrink: 0;
  border-right: 1px solid var(--line);
  background: var(--bg1);
  overflow: auto;
  max-height: calc(100vh - 180px);
}
.cls-feed-hd {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 10px 12px;
  font-size: 13px;
  font-weight: 600;
  border-bottom: 1px solid var(--line);
  background: var(--bg1);
}
.cls-frame-wrap {
  flex: 1;
  min-width: 0;
  background: #fff;
}
.cls-frame {
  width: 100%;
  height: 100%;
  min-height: 560px;
  border: none;
}
.cls-item,
.cls-watched-item {
  padding: 12px;
  border-bottom: 1px solid var(--line);
}
.cls-item-red .cls-content { color: #f87171; }
.cls-item-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
}
.cls-time {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.cls-content {
  font-size: 14px;
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
}
.cls-link {
  display: inline-block;
  margin-top: 8px;
}
.btn.small {
  padding: 4px 10px;
  font-size: 12px;
}
.btn.linkish {
  display: inline;
  padding: 0;
  border: none;
  background: none;
  color: var(--accent);
  text-decoration: underline;
  cursor: pointer;
  font-size: inherit;
}
.cls-watched-list {
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--bg1);
}

.cls-column {
  max-width: 760px;
  padding: 22px 26px 28px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(180deg, rgba(84, 49, 141, 0.045), transparent 80px), var(--bg1);
}
.cls-column-hd h2 {
  margin: 0 0 8px;
  font-size: 22px;
  letter-spacing: 0.02em;
  font-weight: 650;
}
.cls-column-list {
  margin: 18px 0 8px;
  padding: 0;
  list-style: none;
  counter-reset: col;
}
.cls-column-list li {
  position: relative;
  margin: 0 0 14px;
  padding: 0 0 14px 36px;
  border-bottom: 1px solid var(--line);
  line-height: 1.7;
  font-size: 15px;
  color: var(--text);
}
.cls-column-list li:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}
.cls-column-list li::before {
  counter-increment: col;
  content: counter(col);
  position: absolute;
  left: 0;
  top: 2px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(84, 49, 141, 0.14);
  color: var(--accent);
  font-size: 12px;
  font-weight: 650;
  display: flex;
  align-items: center;
  justify-content: center;
  font-variant-numeric: tabular-nums;
}

.main:has(.col-feed-page) {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 16px;
}
.col-date-input {
  min-width: 148px;
  padding: 7px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
}
.col-date-input:focus {
  outline: none;
  border-color: rgba(84, 49, 141, 0.55);
}
.col-feed-page {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}
.col-feed {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--bg1);
}
.col-feed-hd {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 600;
  border-bottom: 1px solid var(--line);
  background: var(--bg1);
}
.col-feed-list {
  min-height: 0;
}
.col-feed-day-hd {
  position: sticky;
  top: 41px;
  z-index: 1;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 14px 8px;
  background: var(--bg1);
  border-bottom: 1px solid var(--line);
}
.col-feed-day-meta {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
}
.col-feed-day-hd strong {
  margin-right: 0;
  font-size: 14px;
}
.col-feed-count {
  flex-shrink: 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.col-feed-day-list {
  min-width: 0;
}
.col-feed-time {
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.col-feed-day {
  counter-reset: colitem;
}
.col-feed-item {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px 12px 48px;
  border-bottom: 1px solid var(--line);
  font-size: 14px;
  line-height: 1.65;
  word-break: break-word;
}
.col-feed-item-body {
  flex: 1;
  min-width: 0;
  white-space: pre-wrap;
}
.col-heart-btn {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  margin-top: -2px;
  padding: 0;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.col-heart-btn:hover {
  color: #f07178;
  background: rgba(240, 113, 120, 0.1);
}
.col-heart-btn.is-on {
  color: #f07178;
}
.col-heart-btn:disabled {
  opacity: 0.55;
  cursor: wait;
}
.col-heart-icon {
  width: 18px;
  height: 18px;
  display: block;
}
.col-feed-item::before {
  counter-increment: colitem;
  content: counter(colitem);
  position: absolute;
  left: 14px;
  top: 13px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: rgba(84, 49, 141, 0.14);
  color: var(--accent);
  font-size: 11px;
  font-weight: 650;
  display: flex;
  align-items: center;
  justify-content: center;
  font-variant-numeric: tabular-nums;
}
.col-feed-more {
  padding: 14px;
  text-align: center;
}

.cls-feed-list {
  min-height: 0;
}

.table-wrap { overflow: auto; }
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.data-table th, .data-table td {
  border-bottom: 1px solid var(--line);
  padding: 8px 10px;
  text-align: left;
}
.data-table th {
  color: var(--purple);
  font-weight: 700;
  background: var(--purple-mist);
}
.data-table th.sort-th {
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.data-table th.sort-th:hover,
.data-table th.sort-th.active {
  color: var(--gold-deep);
}
.data-table .muted { color: var(--muted); font-size: 12px; }

.ocr-quality-warn {
  margin-bottom: 10px;
  border-color: rgba(245, 158, 11, 0.45);
  background: rgba(245, 158, 11, 0.08);
  color: var(--text);
}
.ocr-quality-warn p { margin: 0; }
.ocr-quality-warn p + p { margin-top: 6px; }
.nav-section.has-task-clock {
  display: flex;
  align-items: center;
  margin-right: 12px;
}
.pill.warn { background: var(--gold-soft); color: var(--accent2-deep); }

label { display: block; font-size: 12px; color: var(--muted); margin: 8px 0 4px; }
select {
  background: var(--bg2);
  border: 1px solid var(--line);
  color: var(--text);
  border-radius: 8px;
  padding: 8px;
}

@media (max-width: 860px) {
  .app {
    --sidebar-w: 0px;
    grid-template-columns: 1fr;
  }
  .sidebar {
    border-right: none;
    border-bottom: none;
    height: auto;
    max-height: 40vh;
  }
  .page-head {
    margin: -28px calc(100% + 20px + var(--sidebar-w) - 100vw) 18px -20px;
    padding: 18px 20px 16px;
  }
  .diary-page .page-head {
    margin: -28px calc(100% + 20px + var(--sidebar-w) - 100vw) 0 -20px;
  }
  .split { grid-template-columns: 1fr; }
  /* 情绪面/账户按日页：窄屏也保持左右分栏，避免详情被压到首屏下方像「一直加载中」 */
  .split.today-account-split {
    grid-template-columns: minmax(148px, 200px) minmax(0, 1fr);
  }
}

/* —— 首页演示：日期为列的复盘对照表 —— */
.main:has(.home-page) {
  max-width: none;
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.home-page {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  min-width: 0;
  outline: none;
}
.home-toolbar {
  flex-shrink: 0;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  padding: 20px 24px 18px;
  border-bottom: none;
  background: linear-gradient(180deg, var(--hero) 0%, var(--hero-2) 100%);
  color: #fff;
  box-shadow: 0 10px 28px rgba(43, 20, 88, 0.18);
}
.home-toolbar-main {
  flex: 1;
  min-width: 0;
}
.home-toolbar h1 {
  margin: 4px 0 2px;
  font-size: 22px;
  letter-spacing: -0.02em;
  color: #fff;
}
.home-toolbar .meta {
  margin: 0;
  color: rgba(232, 220, 255, 0.78);
}
.home-kicker {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: rgba(232, 220, 255, 0.7);
}
.home-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.home-toolbar .btn {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.28);
  color: #fff;
}
.home-toolbar .btn:hover {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
.home-toolbar .btn.primary {
  background: var(--gold);
  border-color: var(--gold);
  color: var(--purple-ink);
}
.home-date-add {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 6px 10px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 8px;
  font-size: 12px;
  color: rgba(232, 220, 255, 0.85);
  background: rgba(255, 255, 255, 0.1);
}
.home-date-add input[type="date"] {
  border: none;
  background: transparent;
  color: #fff;
  font: inherit;
  padding: 0;
  color-scheme: dark;
}
.home-scroller {
  flex: 1;
  min-height: 0;
  min-width: 0;
  overflow: auto;
  cursor: grab;
  overscroll-behavior: contain;
  overflow-anchor: none;
}
.home-scroller.is-panning-x {
  cursor: grabbing;
  user-select: none;
}
.home-scroller input,
.home-scroller textarea {
  -webkit-user-select: text;
  user-select: text;
  overscroll-behavior: none;
}
.home-cell.is-editing textarea.home-area {
  overflow-y: hidden;
}
.home-cell.is-editing textarea.home-area:focus {
  overflow-y: auto;
}
.home-grid {
  --home-lab: 148px;
  --home-col: 300px;
  display: grid;
  grid-template-columns: var(--home-lab) repeat(var(--home-n), var(--home-col));
  width: max-content;
  min-width: 100%;
  align-items: stretch;
  -webkit-user-select: none;
  user-select: none;
}
.home-corner,
.home-date,
.home-label,
.home-cell {
  border-bottom: 1px solid var(--line);
  border-right: 1px solid var(--line);
}
.home-corner {
  position: sticky;
  left: 0;
  top: 0;
  z-index: 6;
  padding: 16px 14px 12px;
  background: var(--purple-mist);
  color: var(--muted);
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.home-date {
  position: sticky;
  top: 0;
  z-index: 4;
  padding: 12px 14px 10px;
  background: var(--purple-mist);
  min-height: 68px;
}
.home-date-main {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}
.home-date-edit {
  flex-shrink: 0;
  margin-top: 2px;
  min-width: 32px;
  padding-left: 8px;
  padding-right: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.home-date-edit .home-ico-pen {
  display: block;
}
.home-date-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}
.home-date.is-editing {
  background: var(--purple-wash);
}
.home-cell.is-editing {
  background: var(--purple-mist);
}
.home-date-num {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.home-date-sub {
  margin-top: 6px;
  font-size: 11px;
  color: var(--muted);
  white-space: nowrap;
}
.home-view-empty {
  color: var(--muted);
  font-size: 13px;
}
.home-view-text {
  font-size: 13px;
  line-height: 1.5;
  color: var(--text);
}
.home-view-area {
  font-size: 13px;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--text);
}
.home-view-metrics {
  gap: 8px;
}
.home-rank-view-item {
  padding: 6px 0;
  border-bottom: 1px dashed var(--line);
}
.home-rank-view-item:last-child { border-bottom: none; }
.home-rank-view-hd {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  align-items: baseline;
  font-size: 13px;
}
.home-rank-view-hd strong { font-weight: 650; }
.home-rank-view-title {
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
  font-weight: 650;
}
.home-rank-name {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  margin: 0;
  font: inherit;
  font-weight: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.home-rank-today {
  font-size: 12px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.home-rank-no {
  display: inline-block;
  min-width: 1em;
  margin-right: 2px;
  color: var(--muted);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
.home-rank-api .home-rank-view-item { padding: 4px 0; }
.home-rank-extra {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin-top: 4px;
  font-size: 11px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.home-rank-extra span { white-space: nowrap; }
.home-rank-day {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.home-rank-day-pick {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--muted, #667085);
}
.home-rank-day-pick .home-input {
  font-size: 13px;
}
.home-layout-cfg select.home-input {
  margin-top: 4px;
  width: 100%;
}
.home-rank-view-meta {
  margin-top: 2px;
  font-size: 11px;
  color: var(--muted);
  line-height: 1.4;
  min-height: 1.4em;
}
.home-rank-view-meta.is-placeholder {
  opacity: 0;
}
.home-chip:not(button) {
  cursor: default;
  pointer-events: none;
}
.home-label {
  position: sticky;
  left: 0;
  z-index: 3;
  padding: 12px 14px;
  background: var(--purple-mist);
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 4px;
}
.home-group {
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
}
.home-field-name {
  font-size: 13px;
  font-weight: 650;
}
.home-cell {
  padding: 10px 12px;
  background: var(--purple-mist);
  min-width: 0;
}
.home-date.is-focus { box-shadow: inset 0 -2px 0 var(--accent2); }

.home-input, .home-area {
  width: 100%;
  background: rgba(0,0,0,0.22);
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--text);
  padding: 7px 9px;
  font: inherit;
  font-size: 13px;
}
.home-area { resize: vertical; min-height: 72px; line-height: 1.55; }
.home-input:focus, .home-area:focus {
  outline: none;
  border-color: rgba(84, 49, 141, 0.55);
}
.home-num { font-variant-numeric: tabular-nums; text-align: right; }
.home-vol { font-size: 18px; font-weight: 700; text-align: left; }
.home-ph { color: var(--muted); font-size: 12px; }

.home-choice { display: flex; flex-wrap: wrap; gap: 6px; }
.home-chip {
  border: 1px solid var(--line);
  background: transparent;
  color: var(--muted);
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 12px;
  cursor: pointer;
}
.home-chip.sm { padding: 3px 8px; font-size: 11px; }
.home-chip:hover { border-color: rgba(255,255,255,0.2); color: var(--text); }
.home-chip.is-on { color: var(--text); font-weight: 650; }
.home-chip.tone-ice.is-on { background: rgba(94, 200, 255, 0.16); color: #8ed8ff; border-color: rgba(94, 200, 255, 0.35); }
.home-chip.tone-hot.is-on { background: rgba(232, 184, 109, 0.18); color: var(--accent2); border-color: rgba(232, 184, 109, 0.4); }
.home-chip.tone-split.is-on { background: rgba(167, 139, 250, 0.16); color: #c4b5fd; border-color: rgba(167, 139, 250, 0.35); }
.home-chip.tone-up.is-on { background: rgba(240, 113, 120, 0.16); color: #f07178; border-color: rgba(240, 113, 120, 0.4); }
.home-chip.tone-down.is-on { background: rgba(62, 207, 142, 0.16); color: #3ecf8e; border-color: rgba(62, 207, 142, 0.35); }

.home-metrics, .home-index, .home-ratio {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.home-mini { margin: 0; font-size: 11px; color: var(--muted); }
.home-mini span { display: block; margin-bottom: 4px; }
.home-mini-wide { display: block; }
.home-ratio-out b {
  display: block;
  color: var(--text);
  font-size: 16px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  line-height: 1.35;
  padding: 7px 0 0;
}
.home-sys-stat.home-ratio-out b {
  padding: 0;
  font-size: 16px;
}

.home-ladder-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.home-ladder-pill {
  font-size: 11px;
  background: rgba(84, 49, 141, 0.07);
  border-radius: 6px;
  padding: 3px 8px;
  color: var(--muted);
}
.home-ladder-pill b { color: var(--text); margin-right: 4px; }
.home-ladder-row {
  display: grid;
  grid-template-columns: 36px 58px 1fr;
  gap: 6px;
  align-items: center;
  margin-bottom: 6px;
}
.home-ladder-n { font-size: 12px; color: var(--muted); }

.home-triple { display: flex; flex-direction: column; gap: 8px; }
.home-triple-row { display: flex; flex-direction: column; gap: 4px; }
.home-triple-k { font-size: 11px; color: var(--muted); }

.home-rank-item {
  display: grid;
  grid-template-columns: 1fr 64px 22px;
  gap: 6px;
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px dashed var(--line);
}
.home-rank-item .home-span { grid-column: 1 / 3; }
.home-add {
  border: none;
  background: transparent;
  color: var(--accent);
  font-size: 12px;
  padding: 0;
  cursor: pointer;
}
.home-x {
  width: 22px;
  height: 22px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
}
.home-x:hover { background: rgba(240,113,120,0.15); color: var(--danger); }

.home-tag-list { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.home-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(84, 49, 141, 0.12);
  color: var(--accent);
  font-size: 12px;
}
.home-tag-x {
  border: none;
  background: transparent;
  color: inherit;
  cursor: pointer;
  padding: 0;
  line-height: 1;
}
.home-tag-in { margin-top: 2px; }

.home-drawer {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(400px, 100%);
  background: var(--bg1);
  border-left: 1px solid var(--line);
  z-index: 8;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.2s ease;
  box-shadow: -18px 0 40px rgba(0,0,0,0.28);
}
.home-drawer.is-open { transform: none; }
.home-drawer-hd {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  padding: 18px 16px 12px;
  border-bottom: 1px solid var(--line);
}
.home-drawer-hd h2 { margin: 0 0 6px; font-size: 16px; }
.home-drawer-hd p { margin: 0; font-size: 12px; color: var(--muted); line-height: 1.5; }
.home-drawer-bd { flex: 1; overflow: auto; padding: 12px 16px 20px; }
.home-drawer-ft {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--line);
}
.home-field-card {
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 10px;
  margin-bottom: 10px;
  background: rgba(0,0,0,0.12);
}
.home-field-top {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  gap: 8px;
  align-items: center;
}
.home-field-move { display: flex; flex-direction: column; gap: 2px; }
.home-icon {
  width: 22px;
  height: 18px;
  border: 1px solid var(--line);
  border-radius: 4px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 10px;
}
.home-icon:disabled { opacity: 0.3; cursor: default; }
.home-eye {
  margin: 0;
  font-size: 12px;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 4px;
}
.home-field-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 8px;
}
.home-field-grid label, .home-opt-lab {
  margin: 8px 0 0;
  font-size: 11px;
  color: var(--muted);
}
.home-field-grid select {
  width: 100%;
  margin-top: 4px;
}
.home-add-field { margin-top: 16px; }
.home-add-title { margin: 0 0 8px; font-size: 12px; color: var(--muted); }
.home-add-row { display: grid; grid-template-columns: 1fr 110px auto; gap: 8px; }

.home-section-title {
  margin: 0 0 10px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
}
.home-section-hint {
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  color: var(--muted);
  opacity: 0.8;
}
.home-add-hub {
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line);
}
.home-catalog-item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 10px;
  margin-bottom: 8px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(232, 184, 109, 0.04);
}
.home-catalog-item strong { display: block; font-size: 13px; margin-bottom: 4px; }
.home-catalog-item p { margin: 0; font-size: 11px; color: var(--muted); line-height: 1.45; }
.home-add-custom { margin-top: 14px; }
.home-mod-list { margin-top: 4px; }
.home-field-card.is-system {
  border-color: rgba(232, 184, 109, 0.28);
  background: rgba(232, 184, 109, 0.05);
}
.home-mod-top {
  grid-template-columns: auto 1fr auto auto;
  align-items: flex-start;
}
.home-mod-title strong { display: block; font-size: 14px; }
.home-mod-desc { margin: 4px 0 0; font-size: 11px; color: var(--muted); line-height: 1.45; }
.home-mod-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: rgba(232, 184, 109, 0.18);
  color: var(--accent2);
}
.home-mod-badge.custom {
  background: rgba(84, 49, 141, 0.14);
  color: var(--accent);
}
.home-sys-readonly { position: relative; padding-top: 4px; }
.home-sys-loading {
  font-size: 12px;
  color: var(--muted);
  padding: 8px 0;
}
.home-sys-empty {
  font-size: 11px;
  font-weight: 400;
  line-height: 1.45;
  color: var(--muted);
  padding: 6px 0;
}
.home-sys-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 11px;
  color: var(--muted);
}
.home-sys-stat b {
  font-size: 16px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.home-sys-vol {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px 10px;
  font-size: 20px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.home-sys-vol-main span {
  font-size: 12px;
  color: var(--muted);
  font-weight: 500;
}
.home-sys-vol-chg {
  font-size: 13px;
  font-weight: 650;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.home-sys-vol-chg.pnl-up { color: var(--danger); }
.home-sys-vol-chg.pnl-down { color: var(--success); }
.home-sys-ladder-row {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 6px;
  margin-bottom: 4px;
  font-size: 11px;
}
.home-zt-theme-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  /* 胶囊约 11px×1.35 行高 + 上下各 3px 内边距；最多 5 行 */
  max-height: calc((11px * 1.35 + 6px) * 5 + 6px * 4);
  overflow: hidden;
}
.home-zt-theme-pill {
  font-size: 11px;
  line-height: 1.35;
  background: rgba(84, 49, 141, 0.07);
  border-radius: 999px;
  padding: 3px 9px;
  color: var(--text);
  white-space: nowrap;
}
.home-zt-theme-pill b {
  margin-left: 1px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--danger);
}
.home-zt-themes-link {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.home-zt-themes-link:hover .home-zt-theme-pill {
  background: rgba(84, 49, 141, 0.12);
}
.home-one-word-link {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.home-one-word-head {
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 6px;
}
.home-one-word-empty {
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
}
.home-one-word-count {
  color: var(--text);
  font-weight: 600;
  margin-right: 2px;
}
.home-one-word-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.home-one-word-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--panel-2, transparent);
  font-size: 12px;
  line-height: 1.4;
}
.home-one-word-pill b {
  color: var(--danger);
  font-weight: 600;
}
.home-one-word-link:hover .home-one-word-pill {
  background: rgba(84, 49, 141, 0.12);
}
.home-sys-text { color: var(--muted); line-height: 1.45; }
.home-sys-note {
  font-size: 12px;
  line-height: 1.5;
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--text);
  max-height: 220px;
  overflow: auto;
}
.supervision-note {
  margin: 0;
  font: inherit;
  font-size: 14px;
  line-height: 1.65;
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--text);
}

.supervision-body {
  margin: 0;
  padding: 0;
  font: inherit;
  font-size: 14px;
  line-height: 1.65;
  white-space: pre-wrap;
  word-break: break-word;
  color: var(--text);
  background: transparent;
  border: 0;
}
.supervision-empty-msg {
  margin: 0 0 12px;
  color: var(--muted);
  font-size: 14px;
}
.longhu-detail-hd {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.longhu-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.longhu-tab {
  padding: 5px 12px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--panel);
  color: var(--muted);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}
.longhu-tab.is-on {
  border-color: color-mix(in srgb, var(--l1-longhu) 55%, var(--border));
  background: color-mix(in srgb, var(--l1-longhu) 14%, transparent);
  color: var(--l1-longhu);
}
.longhu-card { margin-top: 12px; }
.longhu-table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.longhu-table {
  width: 100%;
  min-width: 820px;
  table-layout: fixed;
  border-collapse: collapse;
  font-size: 13px;
}
.longhu-table col.longhu-col-name { width: 20%; }
.longhu-table col.longhu-col-pct { width: 8%; }
.longhu-table col.longhu-col-amt { width: 10%; }
.longhu-table col.longhu-col-days { width: 8%; }
.longhu-table col.longhu-col-wl { width: 64px; }
.longhu-table th,
.longhu-table td {
  padding: 8px 8px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  vertical-align: middle;
  box-sizing: border-box;
}
.longhu-table th.longhu-col-name,
.longhu-table td.longhu-col-name {
  text-align: left;
  overflow: hidden;
}
.longhu-table th.longhu-col-wl,
.longhu-table td.longhu-col-wl,
.longhu-table td.wl-add-td {
  text-align: center;
  white-space: nowrap;
}
.longhu-table th.num,
.longhu-table td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.longhu-table th {
  color: var(--muted);
  font-weight: 600;
  white-space: nowrap;
}
.longhu-table .num.up { color: var(--danger); }
.longhu-table .num.down { color: var(--success); }
.longhu-stock-cell {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  min-width: 0;
}
.longhu-stock-cell .sent-stock {
  min-width: 0;
  flex: 1;
}
.longhu-concepts {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 4px;
}
.longhu-tag {
  display: inline-block;
  padding: 1px 6px;
  border-radius: 4px;
  background: rgba(180, 83, 9, 0.1);
  color: #9a3412;
  font-size: 11px;
}
.longhu-reason {
  margin-top: 4px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.longhu-hot-list { display: grid; gap: 12px; }
.longhu-hot-block {
  padding: 10px 12px;
  border: 1px solid rgba(0, 0, 0, 0.06);
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.45);
}
.longhu-hot-hd {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 8px;
}
.longhu-hot-rows {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.longhu-hot-rows li {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.longhu-hot-rows .num.up { color: var(--danger); }
.longhu-hot-rows .num.down { color: var(--success); }
@media (max-width: 720px) {
  .longhu-table {
    min-width: 560px;
  }
  .longhu-table col.longhu-col-name { width: 28%; }
}
.supervision-table {
  table-layout: fixed;
  width: 100%;
}
.supervision-table col.supervision-col-idx { width: 2em; }
.supervision-table col.supervision-col-stock { width: auto; }
.supervision-table col.supervision-col-date { width: 4.8em; }
.supervision-table td,
.supervision-table th {
  vertical-align: middle;
  padding: 8px 6px;
}
.supervision-table .supervision-col-idx {
  width: 2em;
  padding-left: 2px;
  padding-right: 2px;
  text-align: center;
}
.supervision-table .supervision-col-date {
  width: 4.8em;
  min-width: 4.8em;
  max-width: 5.2em;
  padding-left: 4px;
  padding-right: 6px;
  white-space: nowrap;
  overflow: visible;
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  text-align: right;
}
.supervision-table th.supervision-col-date {
  text-align: right;
  font-size: 11px;
}
.supervision-table .supervision-stock {
  width: auto;
  min-width: 0;
  max-width: none;
}
.supervision-card .card-bd {
  overflow-x: auto;
}
.supervision-card .table-wrap {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.supervision-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.supervision-item {
  padding: 10px 12px;
  border-radius: 10px;
  background: rgba(84, 49, 141, 0.045);
  border: 1px solid rgba(84, 49, 141, 0.08);
}
.supervision-item-hd {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}
.supervision-idx {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  border-radius: 6px;
  font-size: 12px;
  color: var(--muted);
  background: rgba(84, 49, 141, 0.08);
}
.supervision-name {
  font-size: 15px;
}
.supervision-stock {
  min-width: 0;
  width: auto;
  padding-left: 4px;
  padding-right: 4px;
  text-align: left;
  vertical-align: middle;
}
.supervision-stock-name {
  display: block;
  font-weight: 650;
  line-height: 1.25;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.supervision-stock-code {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.supervision-line {
  margin: 4px 0 0;
  font-size: 13px;
  line-height: 1.5;
}
.supervision-line.muted,
.supervision-line .muted {
  color: var(--muted);
}
.home-sys-note-wrap .supervision-table {
  font-size: 12px;
}
.home-sys-note-wrap .supervision-item {
  padding: 6px 8px;
}
.home-sys-note-wrap .supervision-name {
  font-size: 13px;
}
.home-sys-note-wrap .supervision-list {
  gap: 6px;
  max-height: 240px;
  overflow: auto;
}
.home-sys-note-wrap .table-wrap {
  max-height: 240px;
  overflow: auto;
}
.home-key-watch {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.home-key-watch:hover .home-kw-name {
  color: var(--accent);
}
.home-key-watch-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.home-key-watch-list li {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
  font-size: 12px;
  line-height: 1.4;
}
.home-kw-name {
  font-weight: 600;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-kw-end {
  flex: 0 0 auto;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.home-kw-more {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  color: var(--muted);
}
.home-msg-column {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.home-msg-column:hover li {
  color: var(--accent);
}
.home-msg-column-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.home-msg-column-list li {
  font-size: 12px;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}
.home-severe-move {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.home-severe-move:hover .home-sm-name {
  color: var(--accent);
}
.home-severe-move-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.home-severe-move-list li {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  line-height: 1.4;
}
.home-sm-name {
  font-weight: 600;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-sm-cond {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.home-today-ops {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.home-today-ops:hover .home-ops-name {
  color: var(--accent);
}
.home-today-ops-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.home-today-ops-list li {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 12px;
  line-height: 1.4;
}
.home-ops-main {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: baseline;
  gap: 6px;
}
.home-ops-side {
  font-weight: 700;
  color: var(--muted);
}
.home-ops-side.is-buy { color: var(--danger, #e85d5d); }
.home-ops-side.is-sell { color: var(--success, #3ecf8e); }
.home-ops-name {
  font-weight: 600;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-ops-qty {
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.home-ops-remark {
  padding-left: 34px;
  color: #ef4444;
  font-size: 11px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.home-ops-exec {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 2px;
  padding-left: 34px;
}
.home-ops-exec-tag {
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 999px;
  border: 1px solid rgba(232, 184, 109, 0.35);
  background: rgba(232, 184, 109, 0.12);
  color: var(--accent2);
  white-space: nowrap;
}
button.home-sys-link {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: var(--muted);
}
button.home-sys-link.home-sys-empty {
  font-size: 11px;
  font-weight: 400;
  line-height: 1.45;
  padding: 6px 0;
}
.home-drawer { width: min(440px, 100%); }

/* —— 模板编辑器（WPS 式左右栏） —— */
.home-page.is-editing-template .home-scroller { visibility: hidden; }

.home-page.is-skeleton {
  pointer-events: none;
  user-select: none;
}
.home-skel-cell {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  min-height: 52px;
  padding: 12px 14px;
}
.home-skel-bar {
  display: block;
  height: 9px;
  width: 88%;
  border-radius: 999px;
  background: linear-gradient(
    90deg,
    rgba(84, 49, 141, 0.05) 0%,
    rgba(84, 49, 141, 0.12) 42%,
    rgba(84, 49, 141, 0.05) 84%
  );
  background-size: 220% 100%;
  animation: home-skel-shine 1.2s ease-in-out infinite;
}
.home-skel-bar-sm {
  width: 54%;
}
.home-skel-tool {
  display: inline-block;
  width: 36px;
  height: 32px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.16);
  animation: home-skel-pulse 1.2s ease-in-out infinite;
}
.home-skel-tool-wide {
  width: 96px;
}
@keyframes home-skel-shine {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}
@keyframes home-skel-pulse {
  0%, 100% { opacity: 0.45; }
  50% { opacity: 0.85; }
}
.home-template {
  position: fixed;
  inset: 0;
  z-index: 120;
  display: none;
  flex-direction: column;
  background: var(--bg0);
}
.home-template.is-open { display: flex; }
.home-template-hd {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--line);
  background: var(--bg1);
}
.home-template-hd-main {
  flex: 1;
  min-width: 0;
}
.home-template-hd h2 { margin: 0 0 8px; font-size: 18px; }
.home-template-hd p { margin: 8px 0 0; font-size: 12px; color: var(--muted); line-height: 1.5; max-width: 520px; }
.home-tpl-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 2px;
  max-width: 100%;
}
.home-tpl-tab {
  padding: 6px 14px;
  border: 1px solid rgba(232, 168, 72, 0.55);
  border-radius: 999px;
  background: rgba(232, 168, 72, 0.16);
  color: #e8a848;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.home-tpl-tab:hover {
  border-color: rgba(232, 168, 72, 0.85);
  background: rgba(232, 168, 72, 0.28);
  color: #f0c070;
}
.home-tpl-tab.is-active {
  border-color: rgba(232, 168, 72, 0.95);
  background: rgba(232, 168, 72, 0.34);
  color: #f5b85c;
  box-shadow: 0 1px 6px rgba(232, 168, 72, 0.22);
}
.home-tpl-tab-market {
  border-color: rgba(0, 182, 180, 0.55);
  background: var(--cyan-soft);
  color: var(--cyan);
}
.home-tpl-tab-market:hover {
  border-color: rgba(0, 182, 180, 0.85);
  background: rgba(0, 182, 180, 0.28);
  color: #2dd4d2;
}
.home-tpl-tab-edit {
  border-color: rgba(110, 70, 174, 0.55);
  background: var(--accent-soft);
  color: var(--accent);
}
.home-tpl-tab-edit:hover {
  border-color: rgba(110, 70, 174, 0.85);
  background: rgba(84, 49, 141, 0.18);
  color: var(--purple-deep);
}
.home-tpl-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 12px 16px;
  padding: 10px 20px;
  border-bottom: 1px solid var(--line);
  background: rgba(0,0,0,0.12);
}
.home-tpl-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 0;
  font-size: 11px;
  color: var(--muted);
}
.home-tpl-field .home-input {
  min-width: 160px;
  font-size: 13px;
  color: var(--text);
}
.home-tpl-name-field .home-input { min-width: 200px; }
.home-tpl-actions {
  display: flex;
  gap: 6px;
  margin-left: auto;
}
.home-template-body {
  flex: 1;
  display: grid;
  grid-template-columns: 260px 1fr;
  min-height: 0;
}
.home-palette {
  border-right: 1px solid var(--line);
  background: var(--bg1);
  overflow: auto;
  padding: 12px 10px 20px;
}
.home-palette-head {
  margin: 0 0 12px;
  padding: 0 6px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--muted);
}
.home-palette-group { margin-bottom: 14px; }
.home-palette-grp-title {
  margin: 0 0 6px;
  padding: 0 6px;
  font-size: 11px;
  font-weight: 650;
  color: var(--accent);
  letter-spacing: 0.06em;
}
.home-palette-items { display: flex; flex-direction: column; gap: 4px; }
.home-palette-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  text-align: left;
  padding: 8px 10px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: rgba(84, 49, 141, 0.03);
  color: var(--text);
  cursor: pointer;
  font: inherit;
}
.home-palette-item:hover:not(:disabled) {
  border-color: rgba(84, 49, 141, 0.35);
  background: rgba(84, 49, 141, 0.06);
}
.home-palette-item.is-added,
.home-palette-item:disabled {
  opacity: 0.45;
  cursor: default;
}
.home-palette-name { font-size: 13px; font-weight: 600; }
.home-palette-desc { font-size: 11px; color: var(--muted); line-height: 1.35; }

.home-layout-canvas {
  overflow: auto;
  padding: 16px 20px 24px;
  background: var(--bg0);
}
.home-layout-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
  font-size: 12px;
  color: var(--muted);
}
.home-layout-count { font-variant-numeric: tabular-nums; }
.home-layout-list { max-width: 720px; }
.home-layout-empty {
  padding: 48px 24px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  text-align: center;
  color: var(--muted);
}
.home-layout-empty p { margin: 0 0 8px; font-size: 14px; color: var(--text); }
.home-layout-empty-sub { font-size: 12px !important; color: var(--muted) !important; }

.home-layout-block {
  border: 1px solid var(--line);
  border-radius: 12px;
  margin-bottom: 12px;
  background: rgba(0,0,0,0.14);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.home-layout-block.is-selected {
  border-color: rgba(84, 49, 141, 0.55);
  box-shadow: 0 0 0 1px rgba(84, 49, 141, 0.2);
}
.home-layout-toolbar {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  gap: 8px;
  align-items: center;
  padding: 10px 10px 8px;
  border-bottom: 1px solid var(--line);
}
.home-layout-foot {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px;
  border-top: 1px solid var(--line);
  background: rgba(0,0,0,0.1);
}
.home-layout-foot-label {
  font-size: 11px;
  color: var(--muted);
  margin-right: 4px;
}
.home-move-btn {
  min-width: 32px;
  height: 26px;
  padding: 0 8px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 11px;
  line-height: 1;
}
.home-move-btn:hover:not(:disabled) {
  border-color: rgba(84, 49, 141, 0.45);
  color: var(--accent);
  background: rgba(84, 49, 141, 0.08);
}
.home-move-btn:disabled {
  opacity: 0.35;
  cursor: default;
}
.home-layout-title { font-weight: 650; }
.home-layout-type {
  font-size: 10px;
  color: var(--muted);
  white-space: nowrap;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(84, 49, 141, 0.07);
}
.home-layout-x {
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--muted);
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
}
.home-layout-x:hover { background: rgba(240,113,120,0.15); color: var(--danger); }
.home-layout-body { padding: 12px 12px 14px; }
.home-layout-config {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--line);
}
.home-layout-cfg {
  margin: 0;
  font-size: 11px;
  color: var(--muted);
}
.home-layout-cfg .home-input { margin-top: 4px; }
.home-layout-hint {
  margin: 8px 0 0;
  font-size: 11px;
  color: var(--muted);
}
.home-design-preview {
  pointer-events: none;
  opacity: 0.9;
}
.home-design-sys { pointer-events: none; opacity: 0.92; }
.home-design-section {
  padding: 10px 12px;
  border-radius: 8px;
  background: rgba(84, 49, 141, 0.08);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--accent);
  text-transform: uppercase;
}
.home-template-ft {
  display: flex;
  gap: 8px;
  padding: 12px 20px;
  border-top: 1px solid var(--line);
  background: var(--bg1);
}

.home-label-section {
  display: flex;
  align-items: center;
  padding-top: 14px;
  padding-bottom: 6px;
}
.home-label-section .home-group { font-size: 11px; }
.home-section-gap {
  min-height: 6px;
  padding: 4px 12px !important;
  background: transparent !important;
}

@media (max-width: 860px) {
  .home-template-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .home-palette { max-height: 220px; border-right: none; border-bottom: 1px solid var(--line); }
  .home-layout-list { max-width: none; }
  .home-toolbar { flex-direction: column; align-items: stretch; }
  .home-grid { --home-lab: 120px; --home-col: 260px; }
  .home-market-grid { grid-template-columns: 1fr; }
}

/* —— 复盘模板市场 —— */
.home-tpl-tabs-wrap {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 4px;
}
.home-tpl-tabs-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.home-tpl-tabs-wrap .home-tpl-tabs { margin-top: 0; }

.home-market {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 130;
  background: var(--bg0);
  flex-direction: column;
  padding: 20px 24px 28px;
  overflow: auto;
}
.home-market.is-open { display: flex; }
.home-market-hd {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 18px;
}
.home-market-hd h2 { margin: 0 0 6px; font-size: 22px; }
.home-market-hd .meta { margin: 0; max-width: 520px; }
.home-market-body { flex: 1; }
.home-market-empty {
  padding: 48px 16px;
  text-align: center;
  color: var(--muted);
}
.home-market-empty p { margin: 0 0 8px; }
.home-market-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}
.home-market-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg1);
}
.home-market-card-hd {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}
.home-market-card-hd h3 { margin: 0; font-size: 16px; line-height: 1.35; }
.home-market-price {
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 700;
  color: var(--accent);
}
.home-market-price.is-free { color: var(--muted); font-weight: 600; }
.home-market-desc {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--muted);
  min-height: 2.8em;
}
.home-market-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  font-size: 12px;
  color: var(--muted);
}
.home-market-owned {
  color: var(--accent);
  font-weight: 600;
}
.home-market-card-ft {
  margin-top: auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}

.home-market-preview {
  --home-lab: 148px;
  --home-col: 300px;
  width: min(100%, calc(var(--home-lab) + var(--home-col)));
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.home-market-preview-bar,
.home-market-preview-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.home-market-preview-hd h3 {
  margin: 0 0 8px;
  font-size: 20px;
  line-height: 1.35;
}
.home-market-preview-canvas {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg1);
  overflow: hidden;
}
.home-market-preview-hint {
  margin: 0;
  padding: 10px 12px;
  font-size: 12px;
  color: var(--muted);
  border-bottom: 1px solid var(--line);
  background: rgba(0, 0, 0, 0.12);
}
.home-market-preview-section {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: rgba(84, 49, 141, 0.08);
  border-bottom: 1px solid var(--line);
}
.home-market-preview-section-title {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--accent);
}
.home-market-preview-row {
  display: grid;
  grid-template-columns: var(--home-lab) minmax(0, var(--home-col));
  border-bottom: 1px solid var(--line);
  background: var(--bg0);
}
.home-market-preview-row:last-child { border-bottom: none; }
.home-market-preview-row-hd {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  padding: 10px 12px;
  border-right: 1px solid var(--line);
  background: rgba(84, 49, 141, 0.03);
}
.home-market-preview-idx { display: none; }
.home-market-preview-label {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
.home-market-preview-label strong {
  font-size: 13px;
  font-weight: 650;
  line-height: 1.35;
}
.home-market-preview-type {
  font-size: 11px;
  color: var(--muted);
}
.home-market-preview-widget {
  min-width: 0;
  padding: 10px 12px;
  pointer-events: none;
  opacity: 0.96;
}
.home-market-preview-widget input,
.home-market-preview-widget textarea,
.home-market-preview-widget select,
.home-market-preview-widget button {
  pointer-events: none;
}

@media (max-width: 860px) {
  .home-market-preview {
    --home-lab: 120px;
    --home-col: 260px;
  }
}

.tpl-publish-card {
  width: min(440px, 100%);
  gap: 12px;
}
.tpl-publish-card h3 { margin: 0; }
.tpl-publish-card > .meta { margin: 0; line-height: 1.5; }
.tpl-pub-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: var(--muted);
}
.tpl-pub-field input,
.tpl-pub-field textarea {
  width: 100%;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
  resize: vertical;
}
.tpl-pub-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 4px;
}

/* —— 自选股 —— */
.wl-add-duo {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 10px;
  margin-bottom: 14px;
  align-items: stretch;
}
.wl-add-duo .watchlist-add-card {
  margin-bottom: 0;
  height: 100%;
}
.watchlist-add-card {
  margin-bottom: 14px;
}
.watchlist-add-row {
  display: grid;
  grid-template-columns: minmax(96px, 120px) minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}
.wl-tag-create-row {
  grid-template-columns: minmax(0, 1fr) auto;
  margin-bottom: 28px;
}
.watchlist-add-row input {
  width: 100%;
  padding: 9px 11px;
  border-radius: 10px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
}
.watchlist-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.watchlist-table td.num {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.watchlist-table .sent-kw {
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.watchlist-item-ops {
  display: flex;
  gap: 4px;
  justify-content: flex-end;
  white-space: nowrap;
}
/* 组合详情 · 成分股：操作表头与按钮同一列左对齐 */
.wl-member-table th:last-child,
.wl-member-table td:last-child {
  text-align: left;
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.wl-member-table .watchlist-item-ops {
  justify-content: flex-start;
  align-items: center;
}
.watchlist-remove {
  flex-shrink: 0;
}
.wl-pills {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 4px;
  max-width: 220px;
}
.wl-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(84, 49, 141, 0.08);
  color: var(--accent, #54318d);
  font-size: 12px;
}
.wl-tag-picker-row td {
  background: var(--bg2, rgba(0, 0, 0, 0.02));
  padding-top: 6px;
  padding-bottom: 10px;
}
.wl-tag-picker {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
}
.wl-check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  cursor: pointer;
}
.wl-section {
  margin-bottom: 22px;
}
.wl-section-hd {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin: 4px 0 10px;
}
.wl-section-hd h2 {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
}
.wl-section-empty {
  margin: 0 0 12px;
}
.wl-board {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px 16px;
  align-items: start;
}
.wl-board-falls,
.wl-board-pool {
  min-width: 0;
  margin-bottom: 0;
}
.wl-board-pool {
  position: sticky;
  top: 0;
  max-height: calc(100vh - 36px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.wl-pool-card {
  flex: 1;
  min-height: 0;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--paper);
  box-shadow: var(--shadow-sm);
}
.wl-pool-card .table-wrap {
  overflow: visible;
}
.wl-pool-card .watchlist-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  white-space: nowrap;
}
.wl-pool-card .watchlist-table th:nth-child(-n+3),
.wl-pool-card .watchlist-table td:nth-child(-n+3) {
  width: 1%;
  white-space: nowrap;
}
.wl-pool-card .watchlist-table th:nth-child(4),
.wl-pool-card .watchlist-table td:nth-child(4) {
  width: auto;
  min-width: 8em;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  vertical-align: middle;
}
.wl-pool-card .watchlist-table .sent-kw {
  max-width: none;
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  line-height: 1.45;
}
.wl-pool-card .watchlist-table th:nth-child(5),
.wl-pool-card .watchlist-table td:nth-child(5) {
  width: 200px;
  max-width: 200px;
  min-width: 200px;
  padding-left: 4px;
  padding-right: 4px;
  white-space: normal;
  vertical-align: middle;
  text-align: left;
}
.wl-pool-card .watchlist-table .wl-pills {
  max-width: 100%;
  flex-wrap: wrap;
  justify-content: flex-start;
}
.wl-pool-card .watchlist-table .wl-pill {
  max-width: 100%;
}
.wl-pool-card .watchlist-table th:nth-child(6),
.wl-pool-card .watchlist-table td:nth-child(6) {
  position: sticky;
  right: 0;
  width: 1%;
  min-width: 7.5em;
  white-space: nowrap;
  text-align: left;
  vertical-align: middle;
  background: var(--paper);
  box-shadow: -8px 0 10px -8px rgba(84, 49, 141, 0.16);
}
.wl-pool-card .watchlist-table thead th:nth-child(6) {
  z-index: 3;
  background: var(--purple-mist);
}
.wl-pool-card .watchlist-table tbody td:nth-child(6) {
  z-index: 1;
}
.wl-pool-card .watchlist-table .watchlist-item-ops {
  justify-content: flex-start;
}
.wl-pool-card .watchlist-empty-inline {
  padding: 20px 12px;
}
.wl-tag-grid {
  column-count: 2;
  column-gap: 12px;
  margin: 0 0 8px;
}
.wl-tag-card {
  display: inline-flex;
  flex-direction: column;
  width: 100%;
  margin: 0 0 12px;
  break-inside: avoid;
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.wl-tag-card-hd {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px 10px;
  border-bottom: 1px solid var(--line);
  background: var(--purple-mist);
}
.wl-tag-card-main {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  flex: 1;
}
.wl-tag-card-main:hover .wl-tag-card-name {
  color: var(--accent);
}
.wl-tag-card-name {
  font-weight: 800;
  font-size: 16px;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}
.wl-tag-card-meta {
  font-size: 12px;
  color: var(--muted);
}
.wl-tag-card-hd > .wl-tag-card-pct {
  flex-shrink: 0;
  padding-top: 1px;
}
.wl-tag-card-hd .wl-tag-head-stats {
  margin-left: 0;
  gap: 14px;
  align-self: flex-start;
  padding-top: 1px;
}
.wl-tag-card-hd .wl-tag-stat {
  min-width: 0;
  align-items: flex-end;
}
.wl-tag-card-hd .wl-tag-stat-lab {
  font-size: 10px;
  color: var(--muted);
}
.wl-tag-card-hd .wl-tag-stat-val {
  font-size: 13px;
}
.wl-tag-card-hd .wl-tag-stat-val:not(.pnl-up):not(.pnl-down) {
  color: var(--text);
}
.wl-tag-card-pct {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  font-size: 15px;
}
.wl-tag-stocks {
  list-style: none;
  margin: 0;
  padding: 4px 0;
}
.wl-tag-stock {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 14px;
}
.wl-tag-stock + .wl-tag-stock {
  border-top: 1px solid rgba(84, 49, 141, 0.06);
}
.wl-tag-stock-main {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  min-width: 0;
  flex: 1;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.wl-tag-stock-main:hover .wl-tag-stock-name {
  color: var(--accent);
}
.wl-tag-stock-name {
  font-size: 13px;
  font-weight: 650;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}
.wl-tag-stock-code {
  font-size: 11px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
.wl-tag-stock-pct {
  flex-shrink: 0;
  font-size: 13px;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
}
.wl-trash-card .wl-tag-stock {
  justify-content: space-between;
}
.wl-tag-stocks-empty {
  margin: 0;
  padding: 14px 14px 10px;
  font-size: 12px;
  color: var(--muted);
}
.wl-tag-card-ops {
  display: flex;
  gap: 4px;
  padding: 6px 10px 10px;
  margin-top: auto;
}
.wl-head-ops {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.wl-tag-detail-head {
  align-items: flex-start;
  gap: 10px 16px;
}
.wl-tag-detail-title {
  flex: 1;
  min-width: 0;
}
.wl-tag-detail-title h1 {
  margin: 0;
}
.wl-tag-head-stats {
  display: flex;
  align-items: stretch;
  gap: 28px;
  flex-shrink: 0;
  margin-left: auto;
}
.wl-tag-stat {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  min-width: 56px;
}
.wl-tag-stat-lab {
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.04em;
  color: var(--muted);
  line-height: 1.2;
}
.wl-tag-stat-val {
  font-size: 16px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  line-height: 1.2;
}
.page-head .wl-tag-stat-lab {
  color: rgba(255, 255, 255, 0.72);
}
.page-head .wl-tag-stat-val:not(.pnl-up):not(.pnl-down) {
  color: #fff;
}
.wl-return-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.wl-return-table th,
.wl-return-table td {
  text-align: left;
  padding: 8px 6px;
  border-bottom: 1px solid var(--line);
}
.wl-return-table th {
  color: var(--muted);
  font-weight: 600;
}
.wl-event-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.wl-event-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.wl-event-hd .wl-tag-created {
  font-weight: 500;
  font-size: 12px;
  color: var(--muted);
  margin-left: auto;
}
.wl-event-list li {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: baseline;
  font-size: 13px;
}
.wl-event-act {
  font-weight: 700;
  min-width: 2.5em;
}
.watchlist-empty-inline {
  min-height: 0;
  padding: 16px 8px 8px;
}
#wlDailyBox .btn {
  margin-top: 10px;
}
.watchlist-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 28vh;
  padding: 28px 16px;
  color: var(--muted);
  text-align: center;
}
.watchlist-empty svg {
  width: 36px;
  height: 36px;
  color: var(--accent);
  opacity: 0.45;
}
.watchlist-empty p {
  margin: 0;
  font-size: 15px;
}
@media (max-width: 720px) {
  .wl-board {
    grid-template-columns: 1fr;
  }
  .wl-board-pool {
    position: static;
    max-height: none;
    overflow: visible;
  }
  .wl-add-duo {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .watchlist-add-row,
  .wl-tag-create-row {
    grid-template-columns: 1fr;
  }
  .wl-head-ops {
    width: 100%;
  }
  .wl-pills {
    max-width: 100%;
    justify-content: flex-start;
  }
  .watchlist-table .sent-kw {
    max-width: 140px;
  }
}


/* —— 今日评分 —— */
.nav-ai-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 5px;
  vertical-align: -0.12em;
  color: var(--l1-eval, #0d9488);
  line-height: 0;
  pointer-events: none;
}
.nav-ai-ico svg {
  display: block;
  width: 0.95em;
  height: 0.95em;
}
.page-head h1 .nav-ai-ico {
  margin-left: 8px;
  vertical-align: 0.05em;
  color: var(--l1-eval, #0d9488);
}
.page-head h1 .nav-ai-ico svg {
  width: 0.72em;
  height: 0.72em;
}
.eval-steps {
  list-style: none;
  margin: 0 0 14px;
  padding: 0;
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: 0;
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--paper);
  overflow: hidden;
}
.eval-steps li {
  position: relative;
  flex: 1 1 0;
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: 0;
  padding: 10px 8px;
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.2;
  white-space: nowrap;
}
.eval-steps li + li {
  border-left: 1px solid var(--line);
}
.eval-steps li em {
  font-style: normal;
  overflow: hidden;
  text-overflow: ellipsis;
}
.eval-steps li span {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #d7dbe3;
  color: #333;
  font-weight: 700;
  font-size: 11px;
}
.eval-steps li.is-on {
  background: rgba(13, 148, 136, 0.12);
  color: #0f766e;
  font-weight: 650;
}
.eval-steps li.is-done {
  color: #0f766e;
}
.eval-steps li.is-on span,
.eval-steps li.is-done span {
  background: #0d9488;
  color: #fff;
}
.eval-panel { margin-top: 4px; }
.eval-h { margin: 0 0 8px; font-size: 16px; }
.eval-lead {
  margin: 0 0 12px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
}
.eval-range-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 14px 0 18px;
}
.eval-range-card {
  appearance: none;
  border: 1px solid var(--line);
  background: var(--paper);
  border-radius: 14px;
  padding: 14px 12px;
  text-align: left;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.eval-range-card strong { font-size: 15px; }
.eval-range-card span { color: var(--muted); font-size: 12px; }
.eval-range-card.is-on {
  border-color: #0d9488;
  box-shadow: 0 0 0 1px #0d9488 inset;
  background: rgba(13, 148, 136, 0.06);
}
.eval-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 8px;
  margin-top: 16px;
}
.eval-two-col {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 12px;
}
.eval-two-col h3 { margin: 0 0 8px; font-size: 14px; }
.eval-mode-list, .eval-lib-card { display: flex; flex-direction: column; gap: 10px; }
.eval-mode-card, .eval-lib-card {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 12px;
  background: var(--bg2);
}
.eval-mode-main { min-width: 0; flex: 1; }
.eval-mode-hd { display: flex; gap: 8px; align-items: center; margin-bottom: 4px; flex-wrap: wrap; }
.eval-mode-pnl { font-weight: 700; font-size: 13px; font-variant-numeric: tabular-nums; }
.eval-mode-card p,
.eval-mode-card .eval-mode-body,
.eval-lib-card p {
  margin: 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
}
.eval-mode-body {
  white-space: pre-line;
  line-height: 1.5;
  font-size: 12px;
  color: var(--muted);
  height: auto;
  overflow: visible;
}
.eval-samples { margin: 8px 0 0; padding-left: 18px; color: var(--muted); font-size: 12px; }
.eval-confirm-list { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.eval-confirm-list li { border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; background: var(--bg2); }
.eval-score-hero {
  display: flex;
  gap: 16px;
  align-items: center;
  margin: 12px 0 16px;
  padding: 14px;
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(13,148,136,.12), rgba(84,49,141,.08));
}
.eval-score-num {
  font-size: 42px;
  font-weight: 800;
  color: #0f766e;
  line-height: 1;
  min-width: 72px;
}
.eval-score-num-wrap { text-align: center; min-width: 72px; }
.eval-score-label { margin-top: 4px; font-size: 12px; color: var(--muted); }
.eval-score-summary-label {
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.eval-score-summary {
  margin: 0 0 8px;
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted);
}
.eval-score-date { margin: 0 0 4px; color: var(--muted); font-size: 12px; }
.eval-tier-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 8px;
}
.eval-tier-sec h3 { margin: 0 0 8px; font-size: 14px; }
.eval-tier-card {
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px 12px;
  background: var(--bg2);
  margin-bottom: 8px;
}
.eval-tier-card p { margin: 6px 0 0; font-size: 12px; line-height: 1.55; color: var(--muted); }
.eval-tier-field {
  display: flex;
  gap: 6px;
  align-items: flex-start;
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.55;
}
.eval-tier-v { color: var(--muted); min-width: 0; font-size: 12px; }
.eval-k {
  display: inline-block;
  min-width: 3em;
  margin-right: 6px;
  color: var(--muted);
  font-size: 12px;
  flex-shrink: 0;
}
.eval-disclaimer { margin-top: 12px; }
.eval-market-ctx {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--text);
}
.eval-market-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  margin-top: 4px;
}
.eval-mchip {
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted);
}
.eval-mchip em {
  font-style: normal;
  font-weight: 650;
  color: var(--muted);
  margin-right: 4px;
  font-size: 12px;
}
.eval-modes-tip-lines {
  display: inline;
}
.eval-modes-tip-lines p {
  display: inline;
  margin: 0;
}
.eval-modes-tip-lines p + p::before {
  content: " · ";
  opacity: 0.5;
}
.eval-sec-n,
.eval-tier-count {
  margin-left: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.eval-two-col-modes { margin-top: 18px; }
.eval-sample-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  align-items: baseline;
  margin-top: 4px;
}
.eval-sample-bits {
  color: var(--muted);
  font-size: 12px;
}
.eval-fine {
  font-size: 11px !important;
  line-height: 1.45;
  color: var(--muted);
}

.eval-history-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 4px;
}
.eval-history-lead {
  margin: 0 0 10px;
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted);
}
.eval-history-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 12px 0;
  border-bottom: 1px solid var(--line);
}
.eval-history-list .eval-history-row:last-child {
  border-bottom: none;
}
.eval-history-row .eval-history-item {
  flex: 1;
  min-width: 0;
}
.eval-history-del {
  flex-shrink: 0;
  align-self: flex-start;
  margin-top: 6px;
  min-width: 0;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.4;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.eval-history-del:hover {
  color: #b45309;
}
.eval-history-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  width: 100%;
  text-align: left;
  border: none;
  border-radius: 0;
  padding: 0;
  background: transparent;
  cursor: pointer;
  color: inherit;
}
.eval-history-item:hover {
  border-color: transparent;
  background: transparent;
}
.eval-history-item:hover .eval-history-summary {
  color: var(--text);
}
.eval-history-score-wrap {
  flex: 0 0 auto;
  display: flex;
  align-items: baseline;
  gap: 2px;
  min-width: 2.6em;
}
.eval-history-score {
  font-size: 28px;
  font-weight: 800;
  color: #0f766e;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.eval-history-score-unit {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.eval-history-main {
  flex: 1 1 auto;
  min-width: 0;
}
.eval-history-date {
  margin: 0 0 4px;
  font-size: 12px;
  line-height: 1.4;
  color: var(--muted);
  font-weight: 500;
}
.eval-history-when {
  font-weight: 400;
  color: var(--muted);
}
.eval-history-summary {
  margin: 0;
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.eval-history-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 6px;
}
.eval-history-item .meta {
  margin: 0;
  line-height: 1.45;
}

.eval-modes-tip {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 8px;
  margin: 0 0 12px;
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px dashed var(--line);
  background: color-mix(in srgb, var(--bg2) 80%, transparent);
  font-size: 12px;
  color: var(--muted);
  line-height: 1.45;
}
.eval-modes-tip-label {
  color: var(--text);
  font-weight: 600;
  margin-right: 2px;
}
.eval-modes-tip-sep { opacity: 0.5; }
.eval-need-trades p { margin: 0 0 8px; }
.eval-need-trades,
.eval-need-trades p,
.eval-need-trades strong,
.eval-need-trades .meta {
  font-size: 12px !important;
  line-height: 1.55;
  font-weight: 400;
  color: var(--muted);
}
.eval-need-trades strong {
  font-weight: 650;
}
.eval-need-dates-h { margin: 16px 0 8px; font-size: 13px; }
.eval-date-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.eval-date-chip {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg2);
  cursor: pointer;
  font-size: 13px;
  color: var(--text);
}
.eval-date-chip span { font-size: 11px; color: var(--muted); }
.eval-date-chip.is-on,
.eval-date-chip:hover {
  border-color: #0f766e;
  background: rgba(15, 118, 110, 0.08);
}

@media (max-width: 860px) {
  .eval-two-col, .eval-tier-grid { grid-template-columns: 1fr; }
}

.eval-stock-table { font-size: 12px; }
.eval-stock-table td, .eval-stock-table th { white-space: nowrap; }
.eval-stock-table .watchlist-name-btn {
  font-size: 12px;
  font-weight: 500;
}
.eval-confirm-stocks { margin: 6px 0 0; font-size: 12px; color: var(--text); }
.eval-samples .watchlist-name-btn {
  font-size: 12px;
  font-weight: 500;
}

.store-product {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  text-align: left;
  padding: 18px 16px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(135deg, #2b1458 0%, #5a3896 58%, #c9a227 160%);
  color: #fff;
  cursor: pointer;
  box-shadow: var(--shadow-sm);
}
.store-product:hover { filter: brightness(1.05); }
.store-product-badge {
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  font-weight: 800;
  letter-spacing: 0.04em;
  background: rgba(245, 166, 35, 0.95);
  color: #2b1458;
  font-size: 13px;
}
.store-product-body { flex: 1; min-width: 0; }
.store-product-body h2 {
  margin: 0 0 4px;
  font-size: 18px;
  color: #fff;
}
.store-product-body .meta { color: rgba(255, 255, 255, 0.78); margin: 0; }
.store-product-price {
  margin: 8px 0 0;
  font-size: 16px;
  font-weight: 700;
}
.store-product-price span {
  margin-left: 10px;
  font-size: 13px;
  font-weight: 500;
  opacity: 0.85;
}
.store-product-status { margin: 6px 0 0; font-size: 12px; color: #ffe7b0; }
.store-product-go {
  flex: 0 0 auto;
  font-size: 13px;
  font-weight: 650;
  color: #ffe7b0;
}
.store-detail-head h1 { margin-top: 8px; }
.store-compare-wrap { overflow-x: auto; }
.store-compare {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.store-compare th,
.store-compare td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
}
.store-compare thead th {
  color: var(--muted);
  font-weight: 650;
  background: var(--bg1);
}
.store-compare tbody th { font-weight: 650; color: var(--text); }
.store-vip-cell { color: var(--gold-deep); font-weight: 700; }
.store-plans {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.store-tabs {
  display: flex;
  gap: 8px;
  margin: 0 0 14px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 2px;
}
.store-tab {
  flex: 0 0 auto;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--muted);
  border-radius: 999px;
  padding: 7px 14px;
  font: inherit;
  font-size: 13px;
  cursor: pointer;
  white-space: nowrap;
}
.store-tab.is-on {
  color: var(--text);
  border-color: rgba(84, 49, 141, 0.4);
  background: var(--purple-mist);
  font-weight: 600;
}
.store-share-preview {
  margin-bottom: 10px;
  border-radius: 12px;
}
.profile-vip-card {
  margin: 0 0 14px;
}
.store-vip-now {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 12px;
  margin: 0 0 12px;
  padding: 12px 16px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
}
.store-vip-now.is-vip {
  border-color: rgba(212, 136, 6, 0.28);
  background:
    linear-gradient(135deg, rgba(245, 166, 35, 0.14), transparent 62%),
    var(--paper);
}
.store-vip-now-kicker {
  font-size: 12px;
  font-weight: 650;
  color: var(--muted);
}
.store-vip-now strong {
  font-size: 15px;
  font-weight: 800;
}
.store-vip-now.is-vip strong {
  color: var(--gold-deep);
}
.store-vip-now-exp {
  margin-left: auto;
  font-size: 13px;
  color: var(--muted);
}
.profile-vip-buy {
  margin-top: 14px;
}
.profile-vip-buy .store-plan-buy {
  width: 100%;
}
.profile-vip-cta.is-open {
  border-color: rgba(84, 49, 141, 0.35);
}
.store-plan {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  padding: 16px 14px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg2);
  text-align: left;
  color: inherit;
  font: inherit;
  cursor: pointer;
  box-sizing: border-box;
}
.store-plan:hover { border-color: rgba(84, 49, 141, 0.35); }
.store-plan.is-hot { background: var(--gold-soft); }
.store-plan.is-on {
  border-color: var(--purple);
  box-shadow: 0 0 0 2px rgba(84, 49, 141, 0.18);
}
.store-plan.is-hot.is-on {
  border-color: var(--gold);
  box-shadow: 0 0 0 2px rgba(201, 162, 39, 0.28);
}
.store-plan-badge {
  position: absolute;
  top: 8px;
  right: 8px;
  font-size: 11px;
  font-weight: 700;
  color: var(--gold-deep);
}
.store-plan-name { font-size: 13px; color: var(--muted); }
.store-plan-price { font-size: 22px; font-weight: 800; }
.store-plan-days { font-size: 12px; color: var(--muted); }
.store-plan-desc {
  margin-top: 4px;
  font-size: 12px;
  line-height: 1.45;
  color: var(--muted);
}
.store-plan-buy {
  display: block;
  margin: 0;
  width: 100%;
  text-align: center;
  box-sizing: border-box;
}
.store-buy-bar {
  margin: 4px 0 16px;
}
.pill.vip { border-color: var(--gold); color: var(--gold-deep); background: var(--gold-soft); }

/* 个人空间 */
.profile-page {
  max-width: 720px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding-bottom: 8px;
}
.profile-page--settings {
  max-width: 560px;
  gap: 12px;
}
.profile-hero {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 18px 20px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background:
    linear-gradient(135deg, rgba(84, 49, 141, 0.08), transparent 55%),
    var(--paper);
  box-shadow: var(--shadow-sm);
}
.profile-hero.is-vip {
  background:
    linear-gradient(135deg, rgba(245, 166, 35, 0.16), transparent 52%),
    linear-gradient(180deg, #fffdf8, var(--paper));
  border-color: rgba(212, 136, 6, 0.22);
}
.profile-hero.is-member {
  background:
    linear-gradient(135deg, rgba(84, 49, 141, 0.12), transparent 55%),
    var(--paper);
}
.profile-hero--guest {
  align-items: flex-start;
}
.profile-avatar {
  flex: 0 0 auto;
  width: 56px;
  height: 56px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  font-family: var(--display);
  font-size: 22px;
  font-weight: 800;
  color: #fff;
  background: linear-gradient(145deg, var(--purple), var(--hero));
  box-shadow: 0 8px 18px rgba(84, 49, 141, 0.22);
  overflow: hidden;
}
.profile-avatar.has-photo {
  background: #ece8f3;
  box-shadow: none;
}
.profile-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.profile-avatar-btn {
  padding: 0;
  border: 0;
  cursor: pointer;
  font: inherit;
}
.profile-avatar-btn:hover {
  filter: brightness(0.97);
}

.mine-list {
  margin: 0;
  padding: 0;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.mine-row {
  display: flex;
  align-items: center;
  gap: 16px;
  width: 100%;
  min-height: 54px;
  margin: 0;
  padding: 8px 16px;
  border: 0;
  background: #fff;
  color: inherit;
  font: inherit;
  text-align: left;
  box-sizing: border-box;
  cursor: pointer;
}
.mine-row ~ .mine-row,
.mine-details-body {
  box-shadow: inset 0 1px 0 var(--line);
}
.mine-row:hover {
  background: #faf8fc;
}
.mine-row.is-off {
  cursor: default;
}
.mine-row.is-off:hover {
  background: #fff;
}
.mine-row-name {
  flex: 0 1 auto;
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  white-space: nowrap;
}
.mine-row .mine-row-input {
  flex: 1;
  min-width: 0;
  width: auto;
  margin: 0;
  padding: 8px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  text-align: right;
  font: inherit;
  font-size: 15px;
  font-weight: 500;
  color: var(--muted);
  outline: none;
  cursor: text;
  resize: none;
  transition: color 0.15s ease;
}
.mine-row .mine-row-input:focus {
  color: var(--ink);
  border: 0;
  box-shadow: none;
}
.mine-row .mine-row-input::placeholder {
  color: #b4adc2;
  font-weight: 500;
}
.mine-row-hint {
  margin-left: auto;
  font-size: 14px;
  font-weight: 500;
  color: var(--muted);
}
#rowJimuNo .mine-row-hint,
#rowPhone .mine-row-hint {
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.06em;
  font-weight: 700;
  color: var(--ink);
  user-select: all;
}
.mine-avatar {
  margin-left: auto;
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  overflow: hidden;
  font-family: var(--display);
  font-size: 15px;
  font-weight: 800;
  color: #fff;
  background: linear-gradient(145deg, var(--purple), var(--hero));
  pointer-events: none;
}
.mine-avatar.has-photo {
  background: #ece8f3;
}
.mine-avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.mine-row--switch {
  cursor: default;
}
.mine-switch {
  position: relative;
  margin-left: auto;
  flex: 0 0 auto;
  width: 46px;
  height: 28px;
}
.mine-switch input {
  position: absolute;
  inset: 0;
  z-index: 1;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.mine-switch-ui {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 999px;
  background: #d9d3e4;
  box-shadow: inset 0 0 0 1px rgba(36, 20, 63, 0.06);
  transition: background 0.18s ease;
}
.mine-switch-ui::after {
  content: "";
  position: absolute;
  top: 2px;
  left: 2px;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(36, 20, 63, 0.22);
  transition: transform 0.18s ease;
}
.mine-switch input:checked + .mine-switch-ui {
  background: var(--purple);
}
.mine-switch input:checked + .mine-switch-ui::after {
  transform: translateX(18px);
}
.mine-switch input:focus-visible + .mine-switch-ui {
  box-shadow: 0 0 0 3px rgba(110, 70, 174, 0.22);
}
.mine-row-chevron {
  margin-left: auto;
  width: 8px;
  height: 8px;
  border-right: 1.5px solid #b8b1c6;
  border-bottom: 1.5px solid #b8b1c6;
  transform: rotate(-45deg);
  transition: transform 0.16s ease;
}
.mine-details > summary {
  list-style: none;
}
.mine-details > summary::-webkit-details-marker {
  display: none;
}
.mine-details[open] > summary .mine-row-chevron {
  transform: rotate(45deg);
}
.mine-details-body {
  padding: 4px 16px 14px;
}
.mine-details-body .meta {
  margin: 10px 0 8px;
}
.mine-details-body .feature-list {
  margin: 0;
}
.mine-back {
  margin: 0 12px 0 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: rgba(255, 255, 255, 0.82);
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
}
.mine-back:hover {
  color: #fff;
}
.mine-list--logout {
  margin-top: 12px;
}
.mine-row--danger {
  justify-content: center;
}
.mine-row--danger .mine-row-name {
  flex: 0 0 auto;
  color: #c43b4b;
  font-weight: 700;
}
.mine-about {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 28px 16px 24px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  text-align: center;
}
.mine-about strong {
  font-size: 20px;
  font-weight: 800;
  letter-spacing: 0.02em;
  color: var(--ink);
}
.mine-about span {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
}
.mine-about em {
  margin-top: 4px;
  font-style: normal;
  font-size: 12px;
  color: #8b8498;
}
.mine-doc {
  padding: 18px 18px 22px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
  color: var(--ink);
  font-size: 14px;
  line-height: 1.75;
}
.mine-doc h2 {
  margin: 18px 0 8px;
  font-size: 15px;
  font-weight: 700;
}
.mine-doc h3 {
  margin: 14px 0 6px;
  font-size: 14px;
  font-weight: 700;
}
.mine-doc p {
  margin: 0 0 10px;
}
.mine-doc ol,
.mine-doc ul {
  margin: 0 0 12px;
  padding-left: 1.35em;
}
.mine-doc li {
  margin: 0 0 6px;
}
.mine-doc-meta {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}
.mine-doc-updated {
  margin-top: 18px !important;
  color: var(--muted);
  font-size: 12px;
}
.profile-hero.is-vip .profile-avatar {
  background: linear-gradient(145deg, var(--gold), #c47a08);
  color: var(--purple-ink);
  box-shadow: 0 8px 18px rgba(212, 136, 6, 0.28);
}
.profile-hero-copy {
  min-width: 0;
  flex: 1;
}
.profile-kicker {
  margin: 0 0 4px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.profile-hero h1 {
  margin: 0;
  font-size: 22px;
  line-height: 1.25;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.profile-hero-sub {
  margin: 6px 0 0;
  font-size: 13px;
  color: var(--muted);
  word-break: break-all;
}
.profile-hero-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
}
.profile-exp {
  font-size: 12px;
  color: var(--muted);
}
.profile-vip-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  width: 100%;
  text-align: left;
  padding: 16px 18px;
  border-radius: var(--radius);
  border: 1px solid rgba(212, 136, 6, 0.28);
  background:
    linear-gradient(120deg, rgba(245, 166, 35, 0.18), rgba(84, 49, 141, 0.08) 60%, transparent),
    var(--paper);
  color: var(--text);
  cursor: pointer;
  transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
  box-shadow: var(--shadow-sm);
}
.profile-vip-cta:hover {
  transform: translateY(-1px);
  border-color: rgba(212, 136, 6, 0.45);
  box-shadow: var(--shadow);
}
.profile-vip-cta-copy {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.profile-vip-cta-copy strong {
  font-size: 15px;
  font-weight: 700;
}
.profile-vip-cta-copy span {
  font-size: 12px;
  color: var(--muted);
  line-height: 1.4;
}
.profile-vip-cta-action {
  flex: 0 0 auto;
  padding: 8px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  color: var(--purple-ink);
  background: var(--gold);
}
.profile-credits-cta {
  margin-top: 8px;
  border-color: rgba(84, 49, 141, 0.18);
  background:
    linear-gradient(120deg, rgba(84, 49, 141, 0.1), rgba(27, 184, 176, 0.06) 60%, transparent),
    var(--paper);
}
.profile-credits-cta .profile-vip-cta-action {
  color: #fff;
  background: var(--accent-deep, #54318d);
}
.profile-panel {
  padding: 16px 18px;
  border-radius: var(--radius);
  border: 1px solid var(--line);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
}
.profile-panel-title {
  margin: 0 0 12px;
  font-size: 14px;
  font-weight: 700;
}
.profile-check {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
  font-size: 13px;
}
.profile-check input {
  margin-top: 3px;
  flex: 0 0 auto;
}
.profile-check strong {
  display: block;
  font-weight: 600;
}
.profile-check em {
  display: block;
  margin-top: 2px;
  font-style: normal;
  font-size: 12px;
  color: var(--muted);
}
.profile-quota {
  margin: 12px 0 0;
  font-size: 12px;
  line-height: 1.5;
  color: var(--muted);
}
.profile-redeem {
  display: flex;
  gap: 8px;
  margin-top: 12px;
}
.profile-redeem input {
  flex: 1;
  min-width: 0;
}
.profile-details > summary {
  cursor: pointer;
  list-style: none;
  font-size: 14px;
  font-weight: 700;
  user-select: none;
}
.profile-details > summary::-webkit-details-marker { display: none; }
.profile-details > summary::after {
  content: "展开";
  float: right;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
}
.profile-details[open] > summary::after { content: "收起"; }
.profile-details > summary + .meta {
  margin: 12px 0 8px;
}
.profile-details .feature-list {
  margin: 0;
}
.profile-foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  padding-top: 2px;
}
.profile-logout {
  color: var(--muted);
}
.profile-auth-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
@media (max-width: 720px) {
  .profile-auth-grid { grid-template-columns: 1fr; }
  .profile-hero { padding: 16px; }
  .profile-vip-cta {
    flex-direction: column;
    align-items: stretch;
  }
  .profile-vip-cta-action { text-align: center; }
}

/* 意见反馈：文档式记录 */
.fb-page {
  max-width: 760px;
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding-bottom: 12px;
}
.fb-compose-label {
  display: block;
  margin-bottom: 8px;
  font-size: 13px;
  font-weight: 600;
}
.fb-textarea {
  width: 100%;
  min-height: 120px;
  resize: vertical;
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--purple-mist);
  color: var(--text);
  font: inherit;
  line-height: 1.65;
}
.fb-textarea:focus {
  outline: none;
  border-color: rgba(84, 49, 141, 0.4);
  background: var(--paper);
  box-shadow: 0 0 0 3px rgba(84, 49, 141, 0.1);
}
.fb-compose-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 10px;
}
.fb-list-title {
  margin: 4px 0 10px;
  font-size: 14px;
  font-weight: 700;
}
.fb-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.fb-doc {
  padding: 16px 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--paper);
  box-shadow: var(--shadow-sm);
}
.fb-doc-hd {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.fb-doc-user {
  font-size: 13px;
  font-weight: 700;
}
.fb-doc-time {
  font-size: 12px;
  color: var(--muted);
}
.fb-doc-status {
  margin-left: auto;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 999px;
}
.fb-doc-status.is-open {
  color: var(--gold-deep);
  background: var(--gold-soft);
}
.fb-doc-status.is-replied {
  color: var(--success);
  background: rgba(18, 163, 122, 0.12);
}
.fb-doc-body {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 14px;
  line-height: 1.75;
  color: var(--text);
}
.fb-doc-reply {
  margin-top: 14px;
  padding: 12px 14px;
  border-left: 3px solid var(--purple);
  background: var(--purple-mist);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}
.fb-doc-reply-label {
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--purple-deep);
}
.fb-doc-reply-body {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 14px;
  line-height: 1.7;
  color: var(--text);
}
.fb-admin-card {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.fb-admin-card .fb-doc {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  box-shadow: none;
}
.fb-admin-reply {
  padding: 12px 14px 14px;
  border: 1px solid var(--line);
  border-top: none;
  border-radius: 0 0 var(--radius) var(--radius);
  background: #faf9fc;
}
.fb-admin-page {
  max-width: 960px;
}
.fb-admin-table-wrap {
  margin-top: 2px;
}
.fb-admin-table td {
  vertical-align: middle;
}
.fb-admin-user {
  font-weight: 600;
  white-space: nowrap;
}
.fb-admin-when {
  white-space: nowrap;
  font-size: 12px;
  color: var(--muted);
}
.fb-admin-preview {
  max-width: 420px;
  color: var(--text);
  line-height: 1.45;
}
.fb-admin-q {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 13px;
}
.fb-admin-a {
  margin-top: 8px;
  padding: 8px 10px;
  border-left: 3px solid var(--purple);
  background: var(--purple-mist);
  border-radius: 0 8px 8px 0;
}
.fb-admin-a-label {
  display: block;
  margin-bottom: 4px;
  font-size: 11px;
  font-weight: 700;
  color: var(--purple-deep);
}
.fb-admin-a-body {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 13px;
  line-height: 1.55;
}
.fb-admin-act {
  text-align: right;
  white-space: nowrap;
}
.fb-admin-act .btn.is-on {
  border-color: var(--accent);
  color: var(--accent);
}
.fb-admin-expand > td {
  padding: 0 !important;
  background: #faf9fc;
  border-bottom: 1px solid var(--line);
}
.fb-admin-expand-inner {
  padding: 14px 16px 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  border-left: 3px solid var(--purple);
}
.fb-admin-full-label {
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 700;
  color: var(--muted);
}
.fb-admin-reply-box .fb-compose-actions {
  justify-content: flex-end;
}

@media (max-width: 640px) {
  .store-product { flex-wrap: wrap; }
  .store-plans { gap: 8px; }
  .store-plan { padding: 12px 10px 10px; }
  .store-plan-price { font-size: 18px; }
  .fb-admin-preview { max-width: 160px; }
}

/* ----- Home review share ----- */
.home-share-foot {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 10px 8px 14px;
  background: var(--purple-mist);
}
.home-share-label {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: 12px;
  color: var(--muted);
  font-size: 12px;
}
.home-share-btn {
  min-width: 72px;
  border-radius: 999px;
  letter-spacing: 0.04em;
}

.home-share-card {
  width: min(720px, calc(100vw - 24px));
  max-height: min(88vh, 920px);
  overflow: auto;
  padding: 18px 18px 16px;
  gap: 14px;
}

.hshare-steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.hshare-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  opacity: 0.45;
}
.hshare-step.is-on,
.hshare-step.is-done { opacity: 1; }
.hshare-step-num {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  font-size: 12px;
  font-weight: 700;
  background: rgba(84, 49, 141, 0.12);
  color: var(--purple-ink);
}
.hshare-step.is-on .hshare-step-num {
  background: var(--purple);
  color: #fff;
}
.hshare-step-lab {
  font-size: 11px;
  color: var(--muted);
}

.hshare-hd h3 { margin: 0 0 4px; }
.hshare-hd .meta { margin: 0; }

.hshare-toolbar {
  display: flex;
  gap: 8px;
}

.hshare-pick-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  max-height: min(46vh, 400px);
  overflow: auto;
  align-content: start;
}
.hshare-pick {
  display: flex;
  flex-direction: column;
  gap: 0;
  align-items: stretch;
  padding: 10px 10px 9px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg2);
  cursor: pointer;
  min-height: 84px;
  position: relative;
}
.hshare-pick.is-on {
  border-color: rgba(84, 49, 141, 0.45);
  background: var(--purple-mist);
  box-shadow: inset 0 0 0 1px rgba(84, 49, 141, 0.12);
}
.hshare-pick.is-empty .hshare-pick-preview {
  font-style: italic;
  opacity: 0.72;
}
.hshare-pick input {
  position: absolute;
  top: 8px;
  right: 8px;
  margin: 0;
  width: 15px;
  height: 15px;
  accent-color: var(--purple);
}
.hshare-pick-main {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-right: 18px;
  min-width: 0;
}
.hshare-pick-title {
  font-weight: 600;
  font-size: 13px;
  line-height: 1.35;
  word-break: break-word;
}
.hshare-pick-group {
  font-size: 10px;
  color: var(--muted);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.hshare-pick-preview {
  font-size: 11px;
  color: var(--muted);
  margin-top: 4px;
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}

.hshare-tpl-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 10px;
}
.hshare-tpl-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--bg2);
  text-align: left;
  cursor: pointer;
}
.hshare-tpl-card.is-on {
  border-color: rgba(84, 49, 141, 0.45);
  box-shadow: 0 8px 24px rgba(84, 49, 141, 0.12);
}
.hshare-act-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.hshare-act-btn.is-paywalled {
  position: relative;
}
.hshare-pay-tag {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: 0.02em;
  background: linear-gradient(135deg, #f59e0b, #d97706);
  color: #fff;
  white-space: nowrap;
}
.hshare-pay-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.28);
  font-size: 9px;
  font-weight: 800;
}
.btn.primary .hshare-pay-tag {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #3b1d08;
}
#homeSharePayModal {
  z-index: 240;
}
.hshare-pay-card {
  width: min(420px, calc(100vw - 24px));
  gap: 12px;
}
.hshare-pay-hd h3 { margin: 0 0 4px; }
.hshare-pay-hd .meta { margin: 0; }
.hshare-pay-plans {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.hshare-pay-plan {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 2px;
  align-items: flex-start;
  padding: 12px 12px 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg2);
  color: var(--text);
  cursor: pointer;
  text-align: left;
  font: inherit;
}
.hshare-pay-plan.is-on {
  border-color: rgba(84, 49, 141, 0.5);
  background: var(--purple-mist);
  box-shadow: inset 0 0 0 1px rgba(84, 49, 141, 0.12);
}
.hshare-pay-plan-badge {
  position: absolute;
  top: 8px;
  right: 8px;
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 999px;
  background: rgba(245, 158, 11, 0.18);
  color: #b45309;
}
.hshare-pay-plan-name { font-size: 13px; font-weight: 600; }
.hshare-pay-plan-price {
  font-size: 20px;
  font-weight: 750;
  letter-spacing: -0.02em;
}
.hshare-pay-plan-days {
  font-size: 11px;
  color: var(--muted);
}
.hshare-pay-hint { margin: 0; }
.hshare-pay-redeem {
  display: flex;
  gap: 8px;
}
.hshare-pay-redeem input {
  flex: 1;
  min-width: 0;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
}
.hshare-pay-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 2px;
}
.hshare-tpl-preview {
  border-radius: 10px;
  padding: 12px 10px;
  min-height: 88px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  position: relative;
  overflow: hidden;
}
.hshare-tpl-mini-date { font-size: 10px; opacity: 0.75; letter-spacing: 0.08em; }
.hshare-tpl-mini-title { font-size: 13px; font-weight: 700; }
.hshare-tpl-mini-line {
  height: 6px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.35);
  width: 78%;
}
.hshare-tpl-mini-line-sm { width: 52%; opacity: 0.7; }
.hshare-tpl-meta strong { display: block; font-size: 13px; }
.hshare-tpl-meta .meta { display: block; margin-top: 2px; font-size: 11px; line-height: 1.35; }
.hshare-tpl-badge {
  display: inline-block;
  margin-top: 6px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  background: rgba(245, 166, 35, 0.16);
  color: #9a6400;
}
.hshare-tpl-badge.is-free {
  background: rgba(84, 49, 141, 0.1);
  color: var(--purple-ink);
}

.hshare-tpl-purple {
  background: linear-gradient(145deg, #2a1248 0%, #54318d 58%, #7b4fbf 100%);
  color: #f3ebff;
}
.hshare-tpl-paper {
  background: linear-gradient(180deg, #fff9ef 0%, #f3e4c8 100%);
  color: #4a3728;
}
.hshare-tpl-paper .hshare-tpl-mini-line { background: rgba(74, 55, 40, 0.15); }
.hshare-tpl-night {
  background: linear-gradient(160deg, #071018 0%, #0f2433 55%, #123547 100%);
  color: #b9f0ff;
}
.hshare-tpl-morning {
  background: linear-gradient(180deg, #ffffff 0%, #f7f2ea 100%);
  color: #1f2937;
  border: 1px solid rgba(31, 41, 55, 0.08);
}
.hshare-tpl-morning .hshare-tpl-mini-line { background: rgba(31, 41, 55, 0.12); }
.hshare-tpl-data {
  background:
    linear-gradient(90deg, rgba(255,255,255,0.04) 1px, transparent 1px),
    linear-gradient(rgba(255,255,255,0.04) 1px, transparent 1px),
    linear-gradient(160deg, #111827 0%, #1f2937 100%);
  background-size: 12px 12px, 12px 12px, auto;
  color: #e5eef9;
}

.hshare-title-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: var(--muted);
}
.hshare-title-field input {
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
}

.hshare-preview-wrap {
  max-height: min(40vh, 420px);
  overflow: auto;
  border-radius: 16px;
  border: 1px solid var(--line);
  padding: 10px;
  background: rgba(0, 0, 0, 0.02);
}

.hshare-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding-top: 4px;
}

.hshare-link-box {
  display: flex;
  gap: 8px;
}
.hshare-link-box input {
  flex: 1;
  min-width: 0;
  padding: 8px 10px;
  border-radius: 8px;
  border: 1px solid var(--line);
  background: var(--bg2);
  color: var(--text);
  font: inherit;
}

.hshare-card {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 18px 48px rgba(20, 10, 40, 0.18);
}
.hshare-card-hd {
  padding: 36px 22px 28px;
}
.hshare-card-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 20px;
}
.hshare-card-logo {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  object-fit: cover;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(20, 10, 40, 0.18);
}
.hshare-card-brand-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.hshare-card-name {
  margin: 0;
  font-size: 18px;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: 0.04em;
}
.hshare-card-slogan {
  margin: 0;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: 0.02em;
  opacity: 0.78;
}
.hshare-card-title {
  margin: 0;
  font-size: 24px;
  line-height: 1.2;
  letter-spacing: -0.02em;
}
.hshare-card-author {
  margin: 8px 0 0;
  font-size: 13px;
  opacity: 0.8;
}
.hshare-card-body {
  padding: 0 20px 18px;
  display: grid;
  gap: 12px;
}
.hshare-card-ft {
  padding: 10px 20px 14px;
  font-size: 11px;
}
.hshare-card-disclaimer {
  margin: 0;
  font-size: 10px;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
  opacity: 0.7;
}

.hshare-block {
  border-radius: 12px;
  padding: 12px 14px;
  background: rgba(255, 255, 255, 0.08);
}
.hshare-block-hd h3 {
  margin: 0;
  font-size: 14px;
  font-weight: 700;
}
.hshare-block-group {
  display: block;
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity: 0.65;
  margin-bottom: 4px;
}
.hshare-block-body {
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.55;
  white-space: pre-wrap;
}
.hshare-block-body-area { min-height: 48px; }
.hshare-block-rich {
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.55;
}
.hshare-block-rich .home-view-area,
.hshare-block-rich .home-view-text {
  white-space: pre-wrap;
  word-break: break-word;
}
.hshare-block-rich .home-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.hshare-block-rich .home-ladder-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.hshare-block-rich .table-wrap,
.hshare-card .table-wrap,
.hshare-card .home-sys-note,
.hshare-card .home-sys-note-wrap .supervision-list,
.hshare-card .home-sys-note-wrap .table-wrap,
.hshare-card .home-zt-theme-pills {
  overflow: visible;
  max-height: none;
}
.hshare-block.is-empty .hshare-block-body {
  opacity: 0.7;
  font-style: italic;
}
.hshare-card .home-metrics,
.hshare-card .home-index,
.hshare-card .home-ratio {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.hshare-export-host .hshare-card {
  overflow: visible;
}

.hshare-card.hshare-tpl-purple {
  background: #f3eefb;
  color: #24143f;
}
.hshare-card.hshare-tpl-purple .hshare-card-hd {
  color: #fff;
  background: linear-gradient(135deg, #2a1248 0%, #4b2178 100%);
}
.hshare-card.hshare-tpl-purple .hshare-card-body {
  background: #f3eefb;
  padding: 16px 16px 18px;
}
.hshare-card.hshare-tpl-purple .hshare-card-body .hshare-block {
  background: #fff;
  color: #24143f;
  border: 1px solid rgba(36, 20, 63, 0.06);
}
.hshare-card.hshare-tpl-purple .hshare-card-ft {
  color: #fff;
  background: #2a1248;
}

.hshare-card.hshare-tpl-paper {
  background: #fffaf0;
  color: #4a3728;
  border: 1px solid rgba(74, 55, 40, 0.12);
}
.hshare-card.hshare-tpl-paper .hshare-block {
  background: rgba(255, 255, 255, 0.72);
  border: 1px dashed rgba(74, 55, 40, 0.18);
}

.hshare-card.hshare-tpl-night {
  background: #071018;
  color: #d7f6ff;
}
.hshare-card.hshare-tpl-night .hshare-block {
  background: rgba(15, 36, 51, 0.88);
  border: 1px solid rgba(95, 214, 255, 0.18);
}
.hshare-card.hshare-tpl-night .hshare-card-ft { color: #7dd3fc; }

.hshare-card.hshare-tpl-morning {
  background: #ffffff;
  color: #111827;
  border: 1px solid rgba(17, 24, 39, 0.08);
}
.hshare-card.hshare-tpl-morning .hshare-card-hd {
  border-bottom: 1px solid rgba(17, 24, 39, 0.06);
}
.hshare-card.hshare-tpl-morning .hshare-block {
  background: #faf7f2;
}

.hshare-card.hshare-tpl-data {
  background: #111827;
  color: #e5eef9;
}
.hshare-card.hshare-tpl-data .hshare-block {
  background: rgba(31, 41, 55, 0.92);
  border-left: 3px solid #38bdf8;
}

.hshare-public-page {
  max-width: 760px;
  margin: 0 auto;
  padding: 12px 12px 40px;
}
.hshare-public-hd {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 12px;
}
.hshare-export-host {
  position: fixed;
  left: -10000px;
  top: 0;
  z-index: -1;
  width: 420px;
  pointer-events: none;
  opacity: 1;
}
.hshare-export-host .hshare-card {
  width: 420px;
  max-width: 420px;
}

/* ----- Notebook Xiaohongshu-style share ----- */
.nbshare-card-modal {
  width: min(880px, calc(100vw - 24px));
  max-height: min(90vh, 960px);
  overflow: auto;
  padding: 18px 18px 16px;
  gap: 14px;
}
.nbshare-wizard {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.nbshare-hd h3 { margin: 0 0 4px; }
.nbshare-hd .meta { margin: 0; }
.nbshare-layout {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.nbshare-tpls {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.nbshare-tpl {
  display: grid;
  grid-template-columns: 36px 1fr;
  grid-template-rows: auto auto;
  column-gap: 10px;
  row-gap: 2px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.nbshare-tpl.is-on {
  border-color: rgba(84, 49, 141, 0.5);
  box-shadow: 0 8px 20px rgba(84, 49, 141, 0.1);
}
.nbshare-tpl-swatch {
  grid-row: 1 / span 2;
  width: 36px;
  height: 48px;
  border-radius: 8px;
}
.nbshare-tpl-swatch.nbshare-xhs-purple {
  background: linear-gradient(180deg, #2a1248, #cbb6ea);
}
.nbshare-tpl-swatch.nbshare-xhs-paper {
  background: linear-gradient(180deg, #c9a882, #f7f0e6);
}
.nbshare-tpl-swatch.nbshare-xhs-night {
  background: linear-gradient(180deg, #121018, #d4b56a);
}
.nbshare-tpl-swatch.nbshare-xhs-plain {
  background: linear-gradient(180deg, #f7f4fb, #ffffff);
  border: 1px solid var(--line);
}
.nbshare-tpl-name {
  font-size: 13px;
  font-weight: 700;
}
.nbshare-tpl-desc {
  font-size: 11px;
  color: var(--muted);
}
.nbshare-preview-frame {
  overflow: auto;
  max-height: min(78vh, 720px);
  padding: 12px;
  border-radius: 16px;
  background: #ece8f1;
}
.nbshare-preview-scale {
  width: 420px;
  margin: 0 auto;
}
.nbshare-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.nbshare-export-host {
  position: fixed;
  left: -10000px;
  top: 0;
  z-index: -1;
  width: 420px;
  pointer-events: none;
}
.nbshare-poster {
  width: 420px;
  min-height: 560px; /* height:width ~ 4:3; short content keeps whitespace */
  box-sizing: border-box;
  overflow: hidden;
  border-radius: 0;
  display: flex;
  flex-direction: column;
  font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}
.nbshare-hd {
  padding: 36px 26px 28px;
  flex-shrink: 0;
}
.nbshare-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  flex-shrink: 0;
}
.nbshare-logo {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  object-fit: cover;
  flex-shrink: 0;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
}
.nbshare-brand-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.nbshare-name {
  margin: 0;
  font-size: 20px;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: 0.04em;
}
.nbshare-slogan {
  margin: 0;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: 0.02em;
  opacity: 0.78;
}
.nbshare-main {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  padding: 40px 32px;
  min-height: 0;
}
.nbshare-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 18px;
  max-width: 100%;
}
.nbshare-lead {
  margin: 0;
}
.nbshare-text {
  padding: 0;
  margin: 0;
}
.nbshare-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}
.nbshare-pill {
  padding: 4px 11px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.nbshare-title {
  margin: 0;
  font-size: 36px;
  line-height: 1.22;
  font-weight: 800;
  letter-spacing: -0.03em;
  word-break: break-word;
}
.nbshare-date {
  margin: 10px 0 0;
  font-size: 15px;
  opacity: 0.7;
}
.nbshare-body {
  margin: 0;
  font-size: 24px;
  font-weight: 700;
  line-height: 1.65;
  white-space: pre-wrap;
  word-break: break-word;
}
.nbshare-cases {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
}
.nbshare-chip {
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 15px;
  font-weight: 650;
}
.nbshare-ft {
  padding: 10px 26px 20px;
  font-size: 12px;
  flex-shrink: 0;
}
.nbshare-disclaimer {
  margin: 6px 0 0;
  font-size: 11px;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
  opacity: 0.7;
}

.nbshare-xhs-purple .nbshare-hd {
  color: #f7f1ff;
  background:
    radial-gradient(120% 80% at 100% 0%, rgba(232, 196, 120, 0.35), transparent 55%),
    linear-gradient(165deg, #1c0b33 0%, #4b2178 58%, #6d3aa8 100%);
}
.nbshare-xhs-purple .nbshare-main,
.nbshare-xhs-purple .nbshare-ft {
  background: #f6f1ea;
  color: #2a1c14;
}
.nbshare-xhs-purple .nbshare-pill {
  background: #ece3d4;
  color: #4b2178;
}
.nbshare-xhs-purple .nbshare-chip {
  background: #ece3d4;
  color: #4b2178;
}

.nbshare-xhs-paper .nbshare-hd {
  color: #3b2a18;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.18), transparent 40%),
    linear-gradient(160deg, #d7b48a 0%, #c39868 100%);
}
.nbshare-xhs-paper .nbshare-main {
  background:
    repeating-linear-gradient(
      transparent,
      transparent 27px,
      rgba(180, 140, 90, 0.18) 28px
    ),
    #f7f0e6;
  color: #3b2a18;
}
.nbshare-xhs-paper .nbshare-ft { background: #f7f0e6; color: #3b2a18; }
.nbshare-xhs-paper .nbshare-pill {
  background: rgba(59, 42, 24, 0.12);
  color: #3b2a18;
}
.nbshare-xhs-paper .nbshare-chip {
  background: #e8d5b8;
  color: #5a3d1c;
}

.nbshare-xhs-night .nbshare-hd {
  color: #f3e6c4;
  background:
    radial-gradient(80% 60% at 0% 100%, rgba(212, 181, 106, 0.22), transparent 50%),
    linear-gradient(180deg, #0c0a12 0%, #1b1626 100%);
}
.nbshare-xhs-night .nbshare-main,
.nbshare-xhs-night .nbshare-ft {
  background: #f7f4ef;
  color: #241820;
}
.nbshare-xhs-night .nbshare-pill {
  background: #ebe4d8;
  color: #5a3d1c;
}
.nbshare-xhs-night .nbshare-chip {
  background: #ebe4d8;
  color: #5a3d1c;
}

.nbshare-xhs-plain .nbshare-hd {
  color: #24143f;
  background: #f7f4fb;
  border-left: 8px solid #4b2178;
}
.nbshare-xhs-plain .nbshare-main,
.nbshare-xhs-plain .nbshare-ft {
  background: #fff;
  color: #24143f;
  border-left: 8px solid #4b2178;
}
.nbshare-xhs-plain .nbshare-pill {
  background: #f3eefb;
  color: #4b2178;
}
.nbshare-xhs-plain .nbshare-chip {
  background: #f3eefb;
  color: #4b2178;
}

@media (max-width: 760px) {
  .nbshare-layout {
    grid-template-columns: 1fr;
  }
  .nbshare-tpls {
    flex-direction: row;
    overflow-x: auto;
  }
  .nbshare-tpl {
    min-width: 150px;
  }
  .nbshare-preview-scale {
    transform: scale(0.78);
    transform-origin: top center;
    margin-bottom: -90px;
  }
}
.hshare-image-ready {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg2);
}
.hshare-image-thumb {
  width: 72px;
  height: 72px;
  object-fit: cover;
  border-radius: 8px;
  border: 1px solid var(--line);
}

.hshare-public-body .hshare-card {
  margin: 0 auto;
}

/* view1：侧栏只留今日账户、今日操作、笔记本、设置 */
body.view1 .home-nav,
body.view1 .messages-nav,
body.view1 .watchlist-nav,
body.view1 .store-nav,
body.view1 .feedback-nav,
body.view1 .admin-nav,
body.view1 .sidebar-account,
body.view1 [data-sub="today-eval"] {
  display: none !important;
}

@media (max-width: 640px) {
  .home-share-card { width: calc(100vw - 16px); padding: 14px 12px; }
  .hshare-pick-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hshare-tpl-grid { grid-template-columns: 1fr 1fr; }
  .hshare-card-title { font-size: 20px; }
}

/* ---------- AI analysis: single input + report panel ---------- */

.eval-page { display: flex; flex-direction: column; min-height: 0; }
.eval-scroll { display: flex; flex-direction: column; gap: 14px; min-height: 0; }

.eval-credit-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg1);
  color: var(--muted);
  font-size: 12px;
}
.eval-credit-chip strong { color: var(--ink); font-variant-numeric: tabular-nums; }

.eval-split {
  display: grid;
  grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}
.eval-left { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 8px; }
.eval-right { min-width: 0; }

.eval-field { display: flex; flex-direction: column; gap: 6px; }
.eval-field-label { font-size: 13px; font-weight: 600; color: var(--ink); }
.eval-input {
  width: 100%;
  box-sizing: border-box;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg0);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  line-height: 1.6;
  resize: vertical;
}
.eval-input:focus { outline: none; border-color: var(--accent); }
.eval-run { width: 100%; margin-top: 10px; }
.eval-cost { margin: 8px 0 0; font-size: 12px; line-height: 1.5; }

.eval-presets-wrap { display: flex; flex-direction: column; gap: 8px; }
.eval-presets-label { margin: 0; font-size: 12px; color: var(--muted); }
/* 胶囊按钮：一行放不下自动换行 */
.eval-presets { display: flex; flex-wrap: wrap; gap: 8px; }
.eval-preset {
  display: inline-flex;
  align-items: center;
  width: auto;
  max-width: 100%;
  padding: 6px 12px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--bg2);
  color: var(--ink);
  font: inherit;
  font-size: 12px;
  line-height: 1.4;
  white-space: nowrap;
  cursor: pointer;
}
.eval-preset:hover { border-color: var(--accent); background: var(--purple-mist); }
.eval-preset.is-on {
  border-color: var(--accent);
  background: var(--purple-mist);
  color: var(--accent-deep);
  font-weight: 600;
}

.eval-empty-inner { padding: 12px 4px; }
.eval-empty-inner h3 { margin: 0 0 6px; font-size: 15px; }
.eval-empty-inner p { margin: 0; }

.eval-loading { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 28px 12px; }
.eval-loading p { margin: 0; font-size: 13px; }
.eval-spinner {
  width: 22px;
  height: 22px;
  border: 2px solid var(--line);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: eval-spin 0.8s linear infinite;
}
@keyframes eval-spin { to { transform: rotate(360deg); } }

.eval-reject { border-left: 3px solid var(--accent2); }

.eval-rhead { display: flex; gap: 16px; align-items: flex-start; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.eval-rscore { text-align: center; min-width: 78px; }
.eval-rscore strong { display: block; font-size: 32px; line-height: 1.1; font-variant-numeric: tabular-nums; color: var(--accent-deep); }
.eval-rscore span { font-size: 11px; color: var(--muted); }
.eval-score-ring {
  position: relative;
  flex: 0 0 auto;
  width: 88px;
  height: 88px;
}
.eval-score-ring svg { display: block; }
.eval-score-ring-num {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.eval-score-ring-num strong {
  font-size: 22px;
  font-weight: 800;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--ink);
}
.eval-score-ring-num span {
  margin-top: 3px;
  font-size: 10px;
  color: var(--muted);
}
.eval-rhead-main { min-width: 0; flex: 1; }
.eval-rtitle { margin: 0 0 4px; font-size: 18px; }
.eval-rmeta { margin: 0; }

.eval-verdict {
  margin: 14px 0 0;
  padding: 12px 14px;
  border-radius: 10px;
  background: var(--purple-mist);
  border-left: 3px solid var(--accent);
  font-size: 13px;
  line-height: 1.7;
}

.eval-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 10px; margin-top: 14px; }
.eval-metric {
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--bg2);
}
.eval-metric strong { display: block; font-size: 18px; font-variant-numeric: tabular-nums; line-height: 1.2; }
.eval-metric span { display: block; margin-top: 3px; font-size: 11px; color: var(--muted); line-height: 1.4; }
.eval-metric.is-danger strong { color: #c0392b; }
.eval-metric.is-success strong { color: #1f8a54; }
.eval-metric.is-warning strong { color: var(--gold-deep); }

.eval-charts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  margin-top: 14px;
}
.eval-chart-card {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--bg2);
}
.eval-chart-title {
  margin: 0 0 10px;
  font-size: 12px;
  font-weight: 650;
  color: var(--muted);
}
.eval-pie {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.eval-pie svg { flex: 0 0 auto; }
.eval-pie-legend {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  flex: 1;
}
.eval-pie-legend li {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  font-size: 12px;
  line-height: 1.35;
}
.eval-pie-legend i {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: block;
}
.eval-pie-legend span { color: var(--ink); min-width: 0; }
.eval-pie-legend em {
  font-style: normal;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.eval-bars { display: flex; flex-direction: column; gap: 8px; }
.eval-bar-row {
  display: grid;
  grid-template-columns: minmax(64px, 28%) 1fr auto;
  gap: 8px;
  align-items: center;
}
.eval-bar-label {
  font-size: 12px;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.eval-bar-track {
  height: 8px;
  border-radius: 999px;
  background: rgba(13, 148, 136, 0.12);
  overflow: hidden;
}
.eval-bar-fill {
  display: block;
  height: 100%;
  border-radius: inherit;
  min-width: 4px;
}
.eval-bar-val {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  color: var(--muted);
  text-align: right;
  min-width: 3.5em;
}
.eval-rsec-chart { margin: 0 0 12px; }
.eval-rsec-chart .eval-charts,
.eval-rsec-chart .eval-chart-card {
  margin: 0;
}
.eval-rsec-chart .eval-chart-card {
  background: var(--paper);
}

.eval-rsections { display: flex; flex-direction: column; gap: 18px; margin-top: 18px; }
.eval-rsec-h { margin: 0 0 8px; font-size: 14px; }
.eval-rtext { margin: 0; font-size: 13px; line-height: 1.75; color: var(--text); }
.eval-rlist { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 6px; }
.eval-rlist li { font-size: 13px; line-height: 1.7; }
.eval-rtable { font-size: 12px; }
.eval-rtable th, .eval-rtable td { white-space: nowrap; }
.eval-rsec-note { margin: 6px 0 0; font-size: 11px; }
.eval-method { margin: 18px 0 0; padding-top: 12px; border-top: 1px solid var(--line); font-size: 11px; line-height: 1.6; }
.eval-disclaimer { margin: 6px 0 0; font-size: 11px; }

.eval-history-kind { font-size: 12px; font-weight: 600; color: var(--accent-deep); }

/* ---------- credits ---------- */

.credits-balance { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px; }
.credits-balance-label { margin: 0; font-size: 12px; color: var(--muted); }
.credits-balance-num { margin: 2px 0 0; font-size: 30px; font-weight: 700; line-height: 1.1; color: var(--accent-deep); font-variant-numeric: tabular-nums; }
.credits-balance-hint { margin: 0; font-size: 12px; color: var(--muted); }

/* 积分套餐：复用 VIP 的 .store-plan 选择卡，卡片内不放购买按钮 */
.credits-plans { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.credits-plan { min-width: 0; }
.credits-plan-num {
  font-size: 22px;
  font-weight: 800;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
  color: var(--accent-deep);
}
.credits-plan-num em { font-size: 12px; font-weight: 400; font-style: normal; color: var(--muted); }
.credits-plan-badge { color: var(--muted); }
.credits-plan-badge.is-hot { color: var(--gold-deep); }

@media (max-width: 560px) {
  .credits-plans { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- standalone report (history detail) ---------- */

.eval-standalone {
  width: min(920px, 100%);
  margin: 0 auto;
}
.eval-standalone .eval-report { margin: 0; }

/* ---------- stock verdict cards (legacy tier rendering) ---------- */

.eval-stock-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.eval-stock-card {
  padding: 12px 14px;
  border: 1px solid var(--line);
  border-left: 3px solid var(--accent);
  border-radius: 10px;
  background: var(--bg2);
}
.eval-rsec-stocks.is-a .eval-stock-card { border-left-color: #1f8a54; }
.eval-rsec-stocks.is-b .eval-stock-card { border-left-color: var(--gold-deep); }
.eval-rsec-stocks.is-c .eval-stock-card { border-left-color: var(--muted); }
.eval-rsec-stocks.is-d .eval-stock-card { border-left-color: #c0392b; }

.eval-stock-hd {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.eval-stock-title { font-size: 14px; font-weight: 600; }
.eval-stock-field {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 8px;
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--muted);
}

@media (max-width: 900px) {
  .eval-split { grid-template-columns: minmax(0, 1fr); }
  .eval-left { position: static; }
}

