/* ============================================
   Soul 主题 — 复刻 soulteary.com 版式
   左侧固定竖版栏（封面/目录树）+ 右侧通栏宽内容
   白底 / 无衬线正文 / 宋体橙红大标题 / 点线分隔
   ============================================ */

body.theme-soul {
  --soul-accent: #1e56c8;
  --soul-accent-dark: #123c8a;
  --soul-strip: #1c4699;
  --soul-ink: #333333;
  --soul-soft: #494949;
  --soul-muted: #999999;
  --soul-line: #e8e8e8;
  --soul-panel-bg: #0d1524;
  --soul-side-w: 362px;
  --soul-strip-w: 112px;
  --soul-serif: "Noto Serif SC", "Songti SC", "STSong", SimSun, "Times New Roman", serif;
  --sans: "PingFang SC", "Lantinghei SC", "Microsoft YaHei", "Hiragino Sans GB",
    "WenQuanYi Micro Hei", -apple-system, sans-serif;
  --mono: "SF Mono", Menlo, Consolas, "Courier New", monospace;

  background: #ffffff;
  color: var(--soul-ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.9;
  -webkit-font-smoothing: antialiased;
}

/* ========== 左侧竖版栏 ========== */
body.theme-soul .soul-side {
  position: fixed;
  inset: 0 auto 0 0;
  width: var(--soul-side-w);
  display: flex;
  z-index: 100;
}

/* 文章页需要目录树，侧栏加宽（窄橙栏 + 宽目录面板） */
body.theme-soul.is-post {
  --soul-side-w: 362px;
}

/* 最左窄条：站名 + 导航 + 一句诗 */
body.theme-soul .soul-strip {
  width: var(--soul-strip-w);
  flex: none;
  background: linear-gradient(180deg, #2e6bdc 0%, var(--soul-strip) 60%, #123068 100%);
  padding: 22px 13px 18px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

body.theme-soul .soul-brand {
  display: block;
  color: #ffffff;
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: 0;
  text-decoration: none;
  word-break: break-word;
}

body.theme-soul .soul-brand:hover {
  color: #e3edfd;
}

/* 右侧面板：封面 或 目录树 */
body.theme-soul .soul-panel {
  flex: 1;
  position: relative;
  overflow: hidden;
}

body.theme-soul .soul-panel.is-cover {
  background: var(--soul-panel-bg) url("/assets/scenery/landscape-home.jpg") center / cover no-repeat;
}

body.theme-soul .soul-panel.is-toc {
  background: radial-gradient(120% 90% at 80% 0%, #16233d 0%, var(--soul-panel-bg) 70%);
}

/* 窄条内的竖排导航 */
body.theme-soul .soul-nav {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
  display: flex;
  flex-direction: column;
  gap: 2px;
}

body.theme-soul .soul-nav a {
  color: rgba(255, 255, 255, 0.88);
  font-size: 14px;
  letter-spacing: 0;
  text-decoration: none;
  padding: 7px 8px;
  border-left: 2px solid transparent;
  border-radius: 0 3px 3px 0;
  transition: all 0.15s ease;
  white-space: nowrap;
}

body.theme-soul .soul-nav a:hover {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.12);
  border-left-color: rgba(255, 255, 255, 0.7);
}

body.theme-soul .soul-nav a.is-active {
  color: #ffffff;
  font-weight: 600;
  background: rgba(255, 255, 255, 0.16);
  border-left-color: #bcd4fb;
}

body.theme-soul .soul-quote {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  margin: 0;
  padding: 40px 14px 20px;
  background: linear-gradient(180deg, rgba(12, 8, 5, 0) 0%, rgba(12, 8, 5, 0.62) 55%, rgba(12, 8, 5, 0.88) 100%);
  color: rgba(255, 255, 255, 0.92);
  font-family: var(--soul-serif);
  font-size: 12.5px;
  line-height: 1.95;
  letter-spacing: 0.5px;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.65);
}

/* 目录树（文章页） */
body.theme-soul .soul-toc {
  position: absolute;
  inset: 0;
  overflow-y: auto;
  padding: 20px 14px 24px 10px;
  scrollbar-width: thin;
  scrollbar-color: #2c4170 transparent;
}

body.theme-soul .soul-toc::-webkit-scrollbar {
  width: 4px;
}

body.theme-soul .soul-toc::-webkit-scrollbar-thumb {
  background: #2c4170;
  border-radius: 2px;
}

body.theme-soul .soul-toc-back {
  display: block;
  color: rgba(255, 255, 255, 0.65);
  font-size: 12.5px;
  text-decoration: none;
  padding: 4px 10px 14px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  margin-bottom: 12px;
}

body.theme-soul .soul-toc-back:hover {
  color: #ffffff;
}

body.theme-soul .soul-toc-item {
  display: block;
  color: rgba(255, 255, 255, 0.82);
  font-size: 13.5px;
  line-height: 1.6;
  text-decoration: none;
  padding: 6px 10px;
  border-left: 2px solid transparent;
  transition: all 0.15s ease;
}

body.theme-soul .soul-toc-item.is-lv3 {
  padding-left: 24px;
  font-size: 12.5px;
  color: rgba(255, 255, 255, 0.6);
}

body.theme-soul .soul-toc-item:hover {
  color: #ffffff;
}

body.theme-soul .soul-toc-item.is-active {
  color: #86aefc;
  font-weight: 600;
  border-left-color: #86aefc;
}

body.theme-soul .soul-toc-empty {
  color: rgba(255, 255, 255, 0.5);
  font-size: 13px;
  padding: 6px 10px;
}

/* ========== 右侧内容区 ========== */
body.theme-soul .soul-main {
  margin-left: var(--soul-side-w);
  min-height: 100vh;
  padding: 26px 56px 40px;
  display: flex;
  flex-direction: column;
}

body.theme-soul .soul-main > * {
  width: 100%;
}

/* 顶栏：页面标题 + 搜索 */
body.theme-soul .soul-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--soul-line);
  margin-bottom: 10px;
}

body.theme-soul .soul-top-title {
  font-family: var(--sans);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: 0.5px;
  color: #222222;
  margin: 0;
}

body.theme-soul .soul-search {
  position: relative;
  width: 172px;
  flex: none;
}

body.theme-soul .soul-search input {
  width: 100%;
  border: 1px solid #dddddd;
  border-radius: 3px;
  background: #fafafa;
  font-size: 13px;
  padding: 6px 32px 6px 10px;
  color: var(--soul-ink);
  outline: none;
}

body.theme-soul .soul-search input:focus {
  border-color: #8fb4ef;
  background: #ffffff;
}

body.theme-soul .soul-search button {
  position: absolute;
  top: 50%;
  right: 4px;
  transform: translateY(-50%);
  border: none;
  background: none;
  color: #bbbbbb;
  padding: 4px;
  cursor: pointer;
}

body.theme-soul .soul-search button:hover {
  color: var(--soul-accent);
}

/* 页面主体撑满，页脚吸底 */
body.theme-soul .soul-foot {
  margin-top: auto;
  padding-top: 40px;
  text-align: center;
  font-size: 12.5px;
  color: var(--soul-muted);
}

body.theme-soul .soul-foot a {
  color: var(--soul-muted);
  text-decoration: none;
}

body.theme-soul .soul-foot a:hover {
  color: var(--soul-accent);
}

body.theme-soul .soul-foot p {
  margin: 0 0 4px;
}

/* 备案号行：两段各占一行（正文列最窄处约 400px，并排必然折断），去掉中间分隔点 */
body.theme-soul .soul-foot-icp {
  overflow-wrap: anywhere;
}

/* 备案号沿用页脚正文色（var(--soul-muted)），原先的 #b3b3b3 在浅底上几乎看不清 */
body.theme-soul .soul-foot-icp a {
  color: var(--soul-muted);
}

body.theme-soul .soul-foot-icp .soul-foot-sep {
  display: none;
}

body.theme-soul .soul-foot-icp .beian-police {
  display: block;
  margin-top: 2px;
}

/* site.css 有全局 img{display:block}，这里必须显式改回 inline-block，否则徽标会独占一行 */
body.theme-soul .soul-foot-icp img {
  display: inline-block;
  width: auto;
  height: 16px;
  margin-right: 4px;
  vertical-align: -3px;
}

body.theme-soul .soul-foot-sep {
  margin: 0 6px;
  color: #d0d0d0;
}

/* ========== 文章列表 ========== */
body.theme-soul .entry {
  padding: 26px 0 22px;
  border-bottom: 1px dashed var(--soul-line);
  animation: none;
}

body.theme-soul .entry:last-child {
  border-bottom: none;
}

body.theme-soul .entry-title {
  font-family: var(--soul-serif);
  font-size: 27px;
  line-height: 1.5;
  font-weight: 700;
  letter-spacing: 0.5px;
  margin: 0 0 10px;
}

body.theme-soul .entry-title a {
  color: var(--soul-accent);
  text-decoration: none;
}

body.theme-soul .entry-title a:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
  text-underline-offset: 4px;
}

body.theme-soul .entry-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 18px;
  font-size: 13px;
  color: var(--soul-accent);
  margin: 0 0 12px;
}

body.theme-soul .entry-meta-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

body.theme-soul .entry-meta a {
  color: var(--soul-accent);
  text-decoration: none;
}

body.theme-soul .entry-meta a:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
}

body.theme-soul .entry-meta i {
  font-style: normal;
  color: #92aede;
  margin: 0 2px;
}

body.theme-soul .entry-summary {
  font-size: 15.5px;
  line-height: 1.95;
  color: var(--soul-soft);
  margin: 0 0 10px;
  max-width: none; /* 覆盖 site.css 的 46em，让摘要跟标题一样铺满 */
}

body.theme-soul .entry-more {
  font-size: 12.5px;
  color: var(--soul-accent);
  text-decoration: none;
}

body.theme-soul .entry-more:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
}

body.theme-soul .pin {
  color: #ffffff;
  background: var(--soul-accent);
  border: none;
  font-size: 11.5px;
  padding: 1px 7px;
  border-radius: 2px;
}

/* 分页 */
body.theme-soul .pager {
  margin-top: 36px;
  padding-top: 20px;
  border-top: 1px solid var(--soul-line);
  font-size: 14px;
}

body.theme-soul .pager-link {
  color: var(--soul-accent);
  text-decoration: none;
}

body.theme-soul .pager-link.is-disabled {
  color: #cccccc;
}

body.theme-soul .pager-info {
  color: var(--soul-muted);
  font-size: 13px;
}

/* ========== 文章页 ========== */
body.theme-soul .post {
  padding-top: 14px;
}

body.theme-soul .post-head {
  display: flex;
  flex-direction: column;
  text-align: center;
  padding-bottom: 20px;
  border-bottom: 1px dashed var(--soul-line);
  margin-bottom: 34px;
}

body.theme-soul .post-title {
  order: 1;
  font-family: var(--soul-serif);
  font-size: 34px;
  line-height: 1.55;
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--soul-accent);
  margin: 6px 0 18px;
}

body.theme-soul .post-meta {
  order: 2;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 6px 20px;
  font-size: 13px;
  color: var(--soul-accent);
  border: none;
  padding: 0;
  margin: 0 0 8px;
}

body.theme-soul .post-meta-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

body.theme-soul .post-tags {
  order: 3;
  border: none;
  padding: 0;
  margin: 0;
  display: flex;
  justify-content: center;
  font-size: 13px;
  color: var(--soul-accent);
}

body.theme-soul .post-tags .post-meta-item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

body.theme-soul .post-tags a {
  color: var(--soul-accent);
  text-decoration: none;
}

body.theme-soul .post-tags a:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
}

body.theme-soul .post-tags i {
  font-style: normal;
  color: #92aede;
  margin: 0 2px;
}

body.theme-soul .post-cover {
  border-radius: 3px;
  margin: 0 0 30px;
}

/* ========== 正文排版 ========== */
body.theme-soul .prose {
  font-family: var(--sans);
  font-size: 16px;
  line-height: 2;
  color: var(--soul-ink);
}

body.theme-soul .prose > * + * {
  margin-top: 0;
}

body.theme-soul .prose p {
  margin: 0 0 1.15em;
  text-indent: 2em;
  text-align: justify;
}

/* 列表、引用、代码块、表格等不缩进 */
body.theme-soul .prose ul,
body.theme-soul .prose ol,
body.theme-soul .prose blockquote,
body.theme-soul .prose pre,
body.theme-soul .prose table,
body.theme-soul .prose hr,
body.theme-soul .prose img {
  text-indent: 0;
}

body.theme-soul .prose h1,
body.theme-soul .prose h2,
body.theme-soul .prose h3,
body.theme-soul .prose h4 {
  font-family: var(--soul-serif);
  font-weight: 700;
  letter-spacing: 0.5px;
  color: #222222;
  border: none;
  padding: 0;
  text-indent: 0;
  scroll-margin-top: 20px;
}

body.theme-soul .prose h2 {
  font-size: 24px;
  margin: 2.1em 0 1em;
}

body.theme-soul .prose h3 {
  font-size: 19px;
  margin: 1.8em 0 0.8em;
}

body.theme-soul .prose h4 {
  font-size: 16.5px;
  margin: 1.6em 0 0.7em;
}

body.theme-soul .prose a {
  color: var(--soul-accent);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-color: rgba(216, 60, 7, 0.35);
}

body.theme-soul .prose a:hover {
  color: var(--soul-accent-dark);
}

body.theme-soul .prose strong {
  color: #222222;
  font-weight: 600;
}

body.theme-soul .prose ul,
body.theme-soul .prose ol {
  padding-left: 2em;
  margin: 0 0 1.2em;
}

body.theme-soul .prose li {
  margin: 0.3em 0;
}

body.theme-soul .prose blockquote {
  margin: 1.5em 0;
  padding: 4px 0 4px 18px;
  border-left: 3px solid #c3d4ef;
  background: none;
  color: var(--soul-soft);
  font-style: normal;
}

body.theme-soul .prose blockquote p {
  text-indent: 0;
}

body.theme-soul .prose blockquote p:last-child {
  margin-bottom: 0;
}

body.theme-soul .prose code {
  font-family: var(--mono);
  font-size: 13.5px;
  background: #f5f5f5;
  color: #1a4fb0;
  border: none;
  border-radius: 3px;
  padding: 2px 6px;
}

body.theme-soul .prose pre {
  background: #f7f7f7;
  border: 1px solid #ececec;
  border-radius: 4px;
  padding: 16px 18px;
  overflow-x: auto;
  line-height: 1.75;
  margin: 1.5em 0;
  font-size: 13.5px;
}

body.theme-soul .prose pre code {
  background: none;
  border: none;
  padding: 0;
  color: #333333;
}

body.theme-soul .prose img {
  border-radius: 3px;
  border: none;
  margin: 1.5em auto;
  max-width: 100%;
}

body.theme-soul .prose hr {
  border: none;
  border-top: 1px dashed #e5e5e5;
  margin: 2.2em 0;
}

body.theme-soul .prose table {
  font-size: 14.5px;
  border-collapse: collapse;
  margin: 1.5em 0;
  width: 100%;
}

body.theme-soul .prose th {
  background: #fafafa;
  color: #444444;
  font-weight: 600;
  border: 1px solid #eeeeee;
  padding: 8px 12px;
}

body.theme-soul .prose td {
  border: 1px solid #eeeeee;
  padding: 8px 12px;
}

body.theme-soul .prose tbody tr:hover {
  background: #fcfcfc;
}

body.theme-soul .img-broken {
  border: 1px dashed #e6e6e6;
  background: #fafafa;
  color: var(--soul-muted);
  border-radius: 4px;
}

/* ========== 文章页脚 ========== */
body.theme-soul .post-foot {
  margin-top: 48px;
  padding-top: 22px;
  border-top: 1px solid var(--soul-line);
}

body.theme-soul .post-nav {
  display: flex;
  gap: 14px;
  margin: 0;
}

body.theme-soul .post-nav-item {
  flex: 1;
  border: 1px solid var(--soul-line);
  border-radius: 3px;
  background: #fcfcfc;
  padding: 12px 15px;
  text-decoration: none;
}

body.theme-soul .post-nav-item:hover {
  border-color: #b9cff2;
  background: #f7faff;
}

body.theme-soul .post-nav-item.is-next {
  text-align: right;
}

body.theme-soul .post-nav-label {
  display: block;
  font-size: 12px;
  color: var(--soul-muted);
}

body.theme-soul .post-nav-title {
  display: block;
  font-size: 14px;
  color: var(--soul-accent);
  margin-top: 3px;
}

/* ========== 归档 / 标签 / 关于 / 搜索 ========== */
body.theme-soul .page-head {
  display: none;
}

body.theme-soul .archive-year {
  margin: 26px 0 0;
}

body.theme-soul .archive-year-title {
  font-family: var(--soul-serif);
  font-size: 19px;
  font-weight: 700;
  color: #222222;
  padding-bottom: 9px;
  border-bottom: 1px dashed var(--soul-line);
  margin: 0 0 4px;
}

body.theme-soul .archive-count {
  font-size: 12.5px;
  color: var(--soul-muted);
  margin-left: 8px;
  font-weight: 400;
  font-family: var(--sans);
}

body.theme-soul .archive-list li {
  border-bottom: 1px dotted #f0f0f0;
}

body.theme-soul .archive-list a {
  padding: 11px 0;
  font-size: 15px;
}

body.theme-soul .archive-date {
  color: #b8b8b8;
  font-size: 13px;
  font-family: var(--mono);
}

body.theme-soul .archive-title {
  color: var(--soul-ink);
}

body.theme-soul .archive-list a:hover .archive-title {
  color: var(--soul-accent);
}

body.theme-soul .tagcloud {
  margin-top: 28px;
  padding-top: 20px;
  border-top: 1px dashed var(--soul-line);
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}

/* 分类标签总览：网格铺满，右端整齐 */
body.theme-soul .tagcloud.is-large {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 2px 16px;
  padding-top: 22px;
}

body.theme-soul .tagcloud.is-large .tag {
  padding: 7px 0;
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .tag {
  font-size: 13px;
  color: var(--soul-accent);
  background: none;
  border: none;
  padding: 2px 0;
  line-height: 1.9;
  text-decoration: none;
}

body.theme-soul .tag:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
}

body.theme-soul .tag-count {
  color: var(--soul-muted);
  margin-left: 4px;
  font-size: 12px;
}

body.theme-soul .about-head {
  display: flex;
  align-items: center;
  gap: 20px;
  margin: 20px 0 30px;
}

body.theme-soul .about-name {
  font-family: var(--soul-serif);
  font-size: 24px;
  font-weight: 700;
  color: #222222;
}

body.theme-soul .about-avatar {
  border-radius: 50%;
  border: 1px solid var(--soul-line);
}

body.theme-soul .about-avatar.is-placeholder {
  background: linear-gradient(160deg, #2456b0, #123068);
  color: #ffffff;
  font-family: var(--soul-serif);
}

body.theme-soul .about-bio {
  color: var(--soul-soft);
  font-size: 15px;
}

body.theme-soul .about-links a {
  color: var(--soul-accent);
  font-size: 14px;
  text-decoration: none;
}

body.theme-soul .search-form {
  display: flex;
  gap: 10px;
  margin: 18px 0;
  max-width: 560px;
}

body.theme-soul .search-form input {
  flex: 1;
  border: 1px solid #dddddd;
  border-radius: 3px;
  background: #fafafa;
  font-size: 14.5px;
  padding: 9px 14px;
  outline: none;
}

body.theme-soul .search-form input:focus {
  border-color: #8fb4ef;
  background: #ffffff;
}

body.theme-soul .search-form button {
  background: var(--soul-accent);
  border: none;
  border-radius: 3px;
  color: #ffffff;
  font-size: 14px;
  padding: 9px 22px;
  cursor: pointer;
}

body.theme-soul .search-form button:hover {
  background: var(--soul-accent-dark);
}

body.theme-soul .empty {
  color: var(--soul-muted);
  font-size: 15px;
  border: 1px dashed var(--soul-line);
  border-radius: 3px;
  background: #fcfcfc;
}

body.theme-soul .notfound {
  text-align: center;
  padding: 80px 0;
}

body.theme-soul .notfound-code {
  font-family: var(--soul-serif);
  font-size: 64px;
  color: var(--soul-accent);
  margin: 0 0 8px;
}

body.theme-soul .back-link {
  color: var(--soul-accent);
  text-decoration: none;
  font-size: 14px;
}

/* ========== 响应式 ========== */
@media (max-width: 1180px) {
  body.theme-soul .soul-side {
    position: static;
    width: auto;
    display: block;
  }

  body.theme-soul .soul-strip {
    width: auto;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 22px;
    padding: 13px 20px 12px;
    background: linear-gradient(120deg, #2e6bdc 0%, #123068 100%);
  }

  body.theme-soul .soul-brand {
    font-size: 17px;
    flex: none;
  }

  body.theme-soul .soul-nav {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 2px 18px;
    margin: 0;
    padding: 0;
    border-top: none;
    flex: 1;
  }

  body.theme-soul .soul-nav a {
    padding: 4px 0;
    font-size: 14px;
    letter-spacing: 1px;
    border-left: none;
    border-bottom: 2px solid transparent;
    background: none !important;
  }

  body.theme-soul .soul-nav a.is-active {
    border-bottom-color: #bcd4fb;
  }

  body.theme-soul .soul-quote,
  body.theme-soul .soul-panel {
    display: none;
  }

  body.theme-soul .soul-main {
    margin-left: 0;
    padding: 22px 20px 32px;
  }

  body.theme-soul .entry-title {
    font-size: 21px;
  }

  body.theme-soul .post-title {
    font-size: 24px;
  }

  body.theme-soul .prose {
    font-size: 15.5px;
  }

  body.theme-soul .prose pre {
    padding: 12px 14px;
  }

  body.theme-soul .post-nav {
    flex-direction: column;
  }

  body.theme-soul .post-nav-item.is-next {
    text-align: left;
  }
}

/* ========== 侧栏：夜间开关 ========== */
body.theme-soul .soul-theme {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  padding: 7px 9px;
  border: 1px solid rgba(255, 255, 255, 0.28);
  border-radius: 3px;
  background: rgba(0, 0, 0, 0.12);
  color: rgba(255, 255, 255, 0.85);
  font-family: var(--sans);
  font-size: 12.5px;
  letter-spacing: 0.5px;
  cursor: pointer;
  transition: all 0.15s ease;
}

body.theme-soul .soul-theme:hover {
  background: rgba(255, 255, 255, 0.14);
  color: #ffffff;
}

body.theme-soul .soul-nav a {
  padding: 6px 8px;
}

body.theme-soul .soul-nav {
  margin-top: 18px;
  padding-top: 14px;
  gap: 1px;
}

body.theme-soul .section-desc {
  margin: 4px 0 6px;
  padding-bottom: 18px;
  border-bottom: 1px dashed var(--soul-line);
  font-size: 14.5px;
  color: var(--soul-muted);
  text-indent: 0;
}

/* ========== 栏目页：小字导语 + 大字标语 + 标签子主题分栏 ========== */
body.theme-soul .sec-kicker {
  margin: 0;
  font-size: 13px;
  letter-spacing: 3px;
  color: var(--soul-muted);
}

body.theme-soul .sec-head {
  margin: 16px 0 0;
}

body.theme-soul .sec-headline {
  display: inline-block;
  margin: 0 0 14px;
  padding: 4px 14px;
  font-family: var(--soul-serif);
  font-size: 30px;
  font-weight: 700;
  line-height: 1.45;
  background: var(--soul-accent);
  color: #ffffff;
}

body.theme-soul .sec-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 44px;
  margin-top: 16px;
  align-items: start;
}

body.theme-soul .sec-item {
  min-width: 0;
  padding: 12px 0 16px;
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .sec-item-title {
  display: flex;
  align-items: baseline;
  gap: 14px;
  margin: 0 0 10px;
  font-family: var(--soul-serif);
  font-size: 20px;
  font-weight: 700;
  color: var(--soul-ink);
}

body.theme-soul .sec-item-title > a {
  color: inherit;
  text-decoration: none;
}

body.theme-soul .sec-item-title > a:first-child:hover {
  color: var(--soul-accent);
}

body.theme-soul .view-all {
  font-family: var(--sans);
  font-size: 12.5px;
  font-weight: 400;
  white-space: nowrap;
  color: var(--soul-accent);
}

body.theme-soul .view-all:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
}

body.theme-soul .sec-list {
  margin: 0;
  padding-left: 1.4em;
  list-style: disc;
  font-size: 14px;
}

body.theme-soul .sec-list li {
  margin: 8px 0;
  line-height: 1.55;
}

body.theme-soul .sec-list li:hover {
  font-style: italic;
}

body.theme-soul .sec-list li:hover .item-date {
  font-weight: 700;
}

body.theme-soul .sec-list .item-date {
  padding-right: 4px;
  font-family: ui-monospace, Consolas, monospace;
  font-size: 12.5px;
  color: var(--soul-muted);
}

body.theme-soul .sec-list .item-link {
  color: var(--soul-ink);
  text-decoration: none;
  border-bottom: 1px dashed #a7c4f5;
}

body.theme-soul .sec-list .item-link:hover {
  color: var(--soul-accent);
  border-bottom: 1px solid var(--soul-accent);
}

body.theme-soul .sec-item.is-loose .sec-item-title {
  color: var(--soul-muted);
}

/* ========== AI 日记 ========== */
body.theme-soul .diary-intro .section-desc {
  margin-top: 10px;
}

body.theme-soul .diary-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 14px;
}

body.theme-soul .diary-card {
  display: flex;
  gap: 22px;
  padding: 16px 20px 14px;
  border: 1px solid var(--soul-line);
  border-radius: 6px;
  background: var(--soul-card-bg, transparent);
  text-decoration: none;
  color: inherit;
  transition: border-color 0.15s ease, transform 0.15s ease;
}

body.theme-soul .diary-card:hover {
  border-color: #8fb4ef;
  transform: translateY(-1px);
}

body.theme-soul .diary-date {
  flex: none;
  width: 88px;
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding-top: 2px;
}

body.theme-soul .diary-day {
  font-family: var(--soul-serif);
  font-size: 40px;
  font-weight: 700;
  line-height: 1;
  color: var(--soul-accent);
}

body.theme-soul .diary-mwd {
  font-size: 12px;
  line-height: 1.5;
  color: var(--soul-muted);
  white-space: nowrap;
}

body.theme-soul .diary-body {
  min-width: 0;
  flex: 1;
}

body.theme-soul .diary-summary {
  margin: 2px 0 8px;
  font-size: 15.5px;
  font-weight: 600;
  color: var(--soul-ink);
}

body.theme-soul .diary-summary.is-big {
  font-size: 17px;
  margin: 10px 0 6px;
}

body.theme-soul .diary-stats {
  margin: 0 0 10px;
  font-size: 12.5px;
  color: var(--soul-muted);
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
}

body.theme-soul .diary-sep {
  width: 1px;
  height: 11px;
  background: var(--soul-line);
}

body.theme-soul .diary-device {
  padding: 1px 8px;
  border: 1px solid var(--soul-line);
  border-radius: 999px;
  font-size: 11.5px;
}

body.theme-soul .diary-items {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 13.5px;
}

body.theme-soul .diary-items li {
  display: flex;
  gap: 12px;
  padding: 4px 0;
  line-height: 1.55;
}

body.theme-soul .diary-item-time {
  flex: none;
  font-family: ui-monospace, Consolas, monospace;
  font-size: 12px;
  color: var(--soul-accent);
  padding-top: 1.5px;
}

body.theme-soul .diary-item-text {
  color: var(--soul-soft);
  min-width: 0;
}

body.theme-soul .diary-more {
  color: var(--soul-muted);
  font-size: 12.5px;
}

body.theme-soul .diary-detail-head {
  padding-bottom: 6px;
  margin-bottom: 10px;
  border-bottom: 1px dashed var(--soul-line);
}

body.theme-soul .diary-detail-title {
  margin: 14px 0 0;
  font-family: var(--soul-serif);
  font-size: 24px;
  color: var(--soul-ink);
}

body.theme-soul .diary-items.is-full {
  font-size: 14.5px;
}

body.theme-soul .diary-items.is-full li {
  padding: 7px 0;
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .diary-empty {
  color: var(--soul-muted);
  padding: 20px 0;
}

/* ========== 私密日程安排 ========== */
body.theme-soul .sched-form {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0 20px;
  padding-bottom: 16px;
  border-bottom: 1px dashed var(--soul-line);
}

body.theme-soul .sched-form input {
  border: 1px solid #dddddd;
  border-radius: 3px;
  background: #fafafa;
  font-size: 13px;
  padding: 7px 10px;
  color: var(--soul-ink);
  outline: none;
  font-family: var(--sans);
}

body.theme-soul .sched-form input:focus {
  border-color: #8fb4ef;
  background: #ffffff;
}

body.theme-soul .sched-form input[name="date"] {
  width: 140px;
}

body.theme-soul .sched-form input[name="time"] {
  width: 104px;
}

body.theme-soul .sched-form input[name="text"] {
  flex: 1;
  min-width: 160px;
}

body.theme-soul .sched-form button {
  border: none;
  border-radius: 3px;
  background: var(--soul-accent);
  color: #ffffff;
  font-size: 13px;
  padding: 7px 18px;
  cursor: pointer;
  font-family: var(--sans);
}

body.theme-soul .sched-form button:hover {
  background: var(--soul-accent-dark);
}

body.theme-soul .sched-group {
  margin-bottom: 22px;
}

body.theme-soul .sched-group.is-today .sched-date {
  color: var(--soul-accent);
}

body.theme-soul .sched-group.is-past .sched-date {
  color: var(--soul-muted);
}

body.theme-soul .sched-date {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 8px;
  font-family: var(--soul-serif);
  font-size: 17px;
  font-weight: 700;
  color: var(--soul-ink);
}

body.theme-soul .sched-tag {
  font-family: var(--sans);
  font-size: 11px;
  font-weight: 400;
  padding: 1px 8px;
  border-radius: 999px;
  background: var(--soul-accent);
  color: #ffffff;
}

body.theme-soul .sched-tag.is-late {
  background: #b45309;
}

body.theme-soul .sched-count {
  margin-left: auto;
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 400;
  color: var(--soul-muted);
}

body.theme-soul .sched-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

body.theme-soul .sched-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 4px;
  border-bottom: 1px dotted var(--soul-line);
  font-size: 14.5px;
  line-height: 1.5;
}

body.theme-soul .sched-item.is-done .sched-text {
  color: var(--soul-muted);
  text-decoration: line-through;
}

body.theme-soul .sched-check {
  flex: none;
  width: 18px;
  height: 18px;
  border: 1.5px solid var(--soul-accent);
  border-radius: 4px;
  background: transparent;
  color: var(--soul-accent);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
}

body.theme-soul .sched-item.is-done .sched-check {
  background: var(--soul-accent);
  color: #ffffff;
}

body.theme-soul .sched-time {
  flex: none;
  font-family: ui-monospace, Consolas, monospace;
  font-size: 12.5px;
  color: var(--soul-accent);
  min-width: 40px;
}

body.theme-soul .sched-text {
  flex: 1;
  min-width: 0;
  color: var(--soul-ink);
}

body.theme-soul .sched-del {
  border: none;
  background: none;
  color: var(--soul-muted);
  font-size: 12px;
  cursor: pointer;
  padding: 2px 4px;
  font-family: var(--sans);
  opacity: 0;
  transition: opacity 0.12s ease;
}

body.theme-soul .sched-item:hover .sched-del {
  opacity: 1;
}

body.theme-soul .sched-del:hover {
  color: #b42318;
}

body.theme-soul .sched-empty {
  color: var(--soul-muted);
  padding: 24px 0;
}

@media (max-width: 1180px) {
  body.theme-soul .sec-groups {
    grid-template-columns: 1fr;
    gap: 2px;
  }
}

body.theme-soul .post-meta-item.is-section {
  color: var(--soul-accent);
  text-decoration: none;
}

body.theme-soul .post-meta-item.is-section:hover {
  color: var(--soul-accent-dark);
  text-decoration: underline;
}

/* ========== 留言板 ========== */
body.theme-soul .gb-intro {
  padding: 4px 0 22px;
}

body.theme-soul .gb-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-width: 720px;
}

body.theme-soul .gb-form-row {
  display: flex;
  gap: 10px;
}

body.theme-soul .gb-form input[type="text"],
body.theme-soul .gb-form textarea {
  width: 100%;
  border: 1px solid var(--soul-line);
  border-radius: 3px;
  background: #fcfcfc;
  color: var(--soul-ink);
  font-family: var(--sans);
  font-size: 14px;
  padding: 9px 11px;
  outline: none;
}

body.theme-soul .gb-form textarea {
  resize: vertical;
  line-height: 1.8;
}

body.theme-soul .gb-form input:focus,
body.theme-soul .gb-form textarea:focus {
  border-color: #8fb4ef;
  background: #ffffff;
}

body.theme-soul .gb-honeypot {
  position: absolute;
  left: -9999px;
  width: 1px !important;
  height: 1px;
  opacity: 0;
}

body.theme-soul .gb-form-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

body.theme-soul .gb-hint {
  font-size: 12.5px;
  color: var(--soul-muted);
}

body.theme-soul .gb-submit {
  border: none;
  border-radius: 3px;
  background: var(--soul-accent);
  color: #ffffff;
  font-family: var(--sans);
  font-size: 14px;
  padding: 9px 20px;
  cursor: pointer;
  transition: background 0.15s ease;
}

body.theme-soul .gb-submit:hover {
  background: var(--soul-accent-dark);
}

body.theme-soul .gb-msg {
  margin: 0 0 14px;
  padding: 9px 12px;
  border-radius: 3px;
  font-size: 13.5px;
}

body.theme-soul .gb-msg.is-ok {
  background: #f2f8f2;
  border-left: 3px solid #4f8a52;
  color: #2f5c32;
}

body.theme-soul .gb-msg.is-error {
  background: #eef4fd;
  border-left: 3px solid #2f66cc;
  color: #16386e;
}

body.theme-soul .gb-list-title {
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 600;
  color: #222222;
  margin: 8px 0 4px;
  padding-top: 20px;
  border-top: 1px solid var(--soul-line);
}

body.theme-soul .gb-count {
  color: var(--soul-muted);
  font-weight: 400;
  font-size: 13px;
  margin-left: 4px;
}

body.theme-soul .gb-item {
  padding: 18px 0;
  border-bottom: 1px dashed var(--soul-line);
}

body.theme-soul .gb-head {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 6px;
}

body.theme-soul .gb-name {
  font-weight: 600;
  font-size: 14.5px;
  color: var(--soul-accent);
}

body.theme-soul .gb-date {
  font-size: 12.5px;
  color: var(--soul-muted);
}

body.theme-soul .gb-text {
  margin: 0;
  font-size: 15px;
  line-height: 1.95;
  color: var(--soul-soft);
  text-indent: 0;
  word-break: break-word;
}

body.theme-soul .gb-empty {
  padding: 26px 0;
  color: var(--soul-muted);
  font-size: 14px;
}

/* ========== 夜间模式 ========== */
body.theme-soul.is-dark {
  --soul-ink: #d3dae8;
  --soul-soft: #aeb8cc;
  --soul-muted: #7a869c;
  --soul-line: #232a38;
  --soul-accent: #6f9dff;
  --soul-accent-dark: #7fa8ff;
  background: #0b0e15;
  color: var(--soul-ink);
}

body.theme-soul.is-dark .soul-top-title,
body.theme-soul.is-dark .prose h1,
body.theme-soul.is-dark .prose h2,
body.theme-soul.is-dark .prose h3,
body.theme-soul.is-dark .prose h4,
body.theme-soul.is-dark .prose strong,
body.theme-soul.is-dark .gb-list-title {
  color: #e2e8f4;
}

body.theme-soul.is-dark .soul-search input {
  border-color: #2a3448;
  background: #1a1512;
  color: var(--soul-ink);
}

body.theme-soul.is-dark .soul-search input:focus {
  border-color: #3f5e96;
  background: #131a2b;
}

body.theme-soul.is-dark .soul-search button {
  color: #7b7068;
}

body.theme-soul.is-dark .prose a {
  text-decoration-color: rgba(255, 138, 82, 0.4);
}

body.theme-soul.is-dark .prose blockquote {
  border-left-color: #33508a;
  background: #0d1220;
}

body.theme-soul.is-dark .prose code {
  background: #141d31;
  color: #7fa8ff;
}

body.theme-soul.is-dark .prose pre {
  background: #0d1220;
  border-color: #232a38;
}

body.theme-soul.is-dark .prose pre code {
  color: #d3dae8;
}

body.theme-soul.is-dark .prose hr {
  border-top-color: #232a38;
}

body.theme-soul.is-dark .prose th {
  background: #0f1524;
  color: #d3dae8;
  border-color: #232a38;
}

body.theme-soul.is-dark .prose td {
  border-color: #232a38;
}

body.theme-soul.is-dark .prose tbody tr:hover {
  background: #0d1220;
}

body.theme-soul.is-dark .post-nav-item {
  background: #0d1220;
  border-color: #232a38;
}

body.theme-soul.is-dark .post-nav-item:hover {
  border-color: #33508a;
  background: #101828;
}

body.theme-soul.is-dark .pager-link.is-disabled {
  color: #333f57;
}

body.theme-soul.is-dark .entry-meta i,
body.theme-soul.is-dark .post-tags i {
  color: #5574a8;
}

body.theme-soul.is-dark .img-broken {
  border-color: #232a38;
  background: #0d1220;
}

body.theme-soul.is-dark .gb-form input[type="text"],
body.theme-soul.is-dark .gb-form textarea {
  background: #1a1512;
  border-color: #2a3448;
  color: var(--soul-ink);
}

body.theme-soul.is-dark .gb-form input:focus,
body.theme-soul.is-dark .gb-form textarea:focus {
  background: #131a2b;
  border-color: #3f5e96;
}

body.theme-soul.is-dark .gb-msg.is-ok {
  background: #17211a;
  color: #9fd3a4;
}

body.theme-soul.is-dark .gb-msg.is-error {
  background: #0f1420;
  color: #7fa8ff;
}

body.theme-soul.is-dark .notfound-code {
  color: #18233c;
}

@media (max-width: 1180px) {
  body.theme-soul .soul-theme {
    margin-top: 0;
    margin-left: auto;
    align-self: center;
    padding: 4px 8px;
    font-size: 12px;
  }
}

/* ========== 股票栏目：自选股行情卡片 ========== */
body.theme-soul .quotes {
  --qt-up: #d0352f;
  --qt-down: #12864f;
  margin: 30px 0 10px;
  padding: 16px 0 4px;
  border-top: 2px solid var(--soul-ink);
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .quotes-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 14px;
  margin-bottom: 16px;
}

body.theme-soul .quotes-title {
  margin: 0;
  font-family: var(--soul-serif);
  font-size: 19px;
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--soul-ink);
}

body.theme-soul .quotes-meta {
  margin: 0;
  font-size: 12px;
  color: var(--soul-muted);
  letter-spacing: 0.5px;
}

body.theme-soul .quotes-stale {
  margin-left: 8px;
  color: #b4721e;
}

/* 指数：大号点位 */
body.theme-soul .quotes-indices {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 14px 26px;
  margin-bottom: 22px;
}

body.theme-soul .qi {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-left: 13px;
  border-left: 3px solid var(--soul-line);
}

body.theme-soul .qi-name {
  font-size: 12px;
  letter-spacing: 1.5px;
  color: var(--soul-muted);
}

body.theme-soul .qi-point {
  font-family: var(--mono);
  font-size: 25px;
  font-weight: 700;
  line-height: 1.15;
  font-variant-numeric: tabular-nums;
}

body.theme-soul .qi-pct {
  display: flex;
  gap: 10px;
  font-family: var(--mono);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

body.theme-soul .qt-name {
  font-size: 15px;
  color: var(--soul-ink);
}

body.theme-soul .qt-code {
  margin-left: 9px;
  font-family: var(--mono);
  font-size: 11.5px;
  letter-spacing: 0.5px;
  color: var(--soul-muted);
}

body.theme-soul .qt-mkt {
  margin-left: 8px;
  padding: 1px 4px;
  border: 1px solid var(--soul-line);
  border-radius: 3px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.5px;
  color: var(--soul-muted);
  vertical-align: 1px;
}

body.theme-soul .qt-price {
  font-size: 15px;
  font-weight: 700;
}

body.theme-soul .is-up {
  color: var(--qt-up);
}

body.theme-soul .is-down {
  color: var(--qt-down);
}

body.theme-soul .is-flat {
  color: var(--soul-soft);
}

/* 夜间模式 */
body.theme-soul.is-dark .quotes {
  --qt-up: #ff6b60;
  --qt-down: #3fc98a;
}

body.theme-soul.is-dark .quotes-stale {
  color: #e0a94a;
}

@media (max-width: 720px) {
  body.theme-soul .qi-point {
    font-size: 21px;
  }

  body.theme-soul .quotes-indices {
    gap: 12px 16px;
  }

  body.theme-soul .qt-code {
    display: none;
  }
}

/* 指数块左侧竖线跟随涨跌着色（A 股习惯：红涨绿跌） */
body.theme-soul .qi[data-trend="up"] {
  border-left-color: var(--qt-up);
}

body.theme-soul .qi[data-trend="down"] {
  border-left-color: var(--qt-down);
}

/* ========== 行情卡片：窄屏（覆盖上面 46% 的通用列宽） ========== */
@media (max-width: 720px) {

  body.theme-soul .qt-name {
    font-size: 14px;
  }

  body.theme-soul .qt-code {
    display: none;
  }

  body.theme-soul .qi-point {
    font-size: 20px;
  }

  body.theme-soul .qi {
    padding-left: 10px;
  }

  body.theme-soul .quotes-indices {
    gap: 14px;
  }

  body.theme-soul .quotes-meta {
    font-size: 11.5px;
  }
}

/* ========== 窄屏布局修复：顶栏标题 + 搜索框撑破视口 ========== */
@media (max-width: 720px) {
  body.theme-soul .soul-top {
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 8px;
  }

  body.theme-soul .soul-top-title {
    min-width: 0;
    font-size: 16px;
  }

  /* 搜索框独占一行，不再挤在标题右侧 */
  body.theme-soul .soul-search {
    flex: 1 1 100%;
    width: 100%;
  }

  body.theme-soul .soul-top {
    margin-bottom: 6px;
  }

  /* 长标题 / 数字串在窄屏强制折行，避免撑破容器 */
  body.theme-soul .sec-list .item-link,
  body.theme-soul .entry-title,
  body.theme-soul .post-title {
    overflow-wrap: anywhere;
  }
}

/* 兜底：任何情况下都不出现横向滚动 */
body.theme-soul {
  overflow-x: hidden;
}

/* 根因修复：搜索框 input 的 padding/border 未计入宽度，会撑破父容器 */
body.theme-soul .soul-search input,
body.theme-soul .soul-search {
  box-sizing: border-box;
}

/* 个股列表：用 flex 行代替 table，窄屏天然不溢出 */
body.theme-soul .ql-head,
body.theme-soul .ql-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
}

body.theme-soul .ql-head {
  padding-bottom: 7px;
  border-bottom: 1px dotted var(--soul-line);
  font-size: 12px;
  letter-spacing: 1.5px;
  color: var(--soul-muted);
}

body.theme-soul .ql-row {
  padding: 10px 0;
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .ql-row:last-child {
  border-bottom: 0;
}

body.theme-soul .ql-row:hover {
  background: rgba(30, 86, 200, 0.035);
}

body.theme-soul .ql-name {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.theme-soul .ql-price,
body.theme-soul .ql-change,
body.theme-soul .ql-pct {
  flex: 0 0 auto;
  text-align: right;
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
}

body.theme-soul .ql-price {
  width: 92px;
  font-size: 15px;
  font-weight: 700;
}

body.theme-soul .ql-change {
  width: 76px;
  font-size: 13.5px;
}

body.theme-soul .ql-pct {
  width: 74px;
  font-size: 13.5px;
}

body.theme-soul .ql-row.is-missing {
  color: var(--soul-muted);
}

body.theme-soul.is-dark .ql-row:hover {
  background: rgba(111, 157, 255, 0.06);
}

@media (max-width: 720px) {
  /* 手机上省掉「涨跌额」一列，留名称 / 现价 / 涨跌幅 */
  body.theme-soul .ql-head .ql-change,
  body.theme-soul .ql-row .ql-change {
    display: none;
  }

  body.theme-soul .ql-price {
    width: 86px;
    font-size: 14px;
  }

  body.theme-soul .ql-pct {
    width: 70px;
    font-size: 13px;
  }

  body.theme-soul .ql-head,
  body.theme-soul .ql-row {
    gap: 8px;
  }
}

/* 窄屏导航：横向紧凑排布，避免一字一行占满首屏 */
@media (max-width: 720px) {
  body.theme-soul .soul-nav {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 2px 14px;
    margin-top: 12px;
    padding-top: 12px;
  }

  body.theme-soul .soul-nav a {
    display: inline-block;
    padding: 3px 0;
    font-size: 13.5px;
    letter-spacing: 0.5px;
    border-left: none;
  }
}

/* 夜间模式下的空状态框（原样式是浅底浅字，深色下几乎不可见） */
body.theme-soul.is-dark .empty {
  background: #121a2a;
  border-color: #232a38;
  color: var(--soul-muted);
}

body.theme-soul.is-dark .empty-hint {
  color: #6b7a90;
}

/* ========== 个股详情页：报价头 + 图表 ========== */
body.theme-soul .stock-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px 24px;
  margin-top: 14px;
  padding-bottom: 14px;
  border-bottom: 2px solid var(--soul-ink);
}

body.theme-soul .stock-id {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  min-width: 0;
}

body.theme-soul .stock-name {
  margin: 0;
  font-family: var(--soul-serif);
  font-size: 28px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--soul-ink);
}

body.theme-soul .stock-code {
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 1px;
  color: var(--soul-muted);
}

body.theme-soul .stock-quote {
  display: flex;
  align-items: baseline;
  gap: 12px;
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
}

body.theme-soul .stock-last {
  font-size: 32px;
  font-weight: 700;
  line-height: 1;
}

body.theme-soul .stock-delta,
body.theme-soul .stock-pct {
  font-size: 15px;
}

body.theme-soul .stock-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 26px;
  margin: 14px 0 0;
  padding: 0;
}

body.theme-soul .stock-fact {
  display: flex;
  align-items: baseline;
  gap: 7px;
  font-size: 13px;
}

body.theme-soul .stock-fact dt {
  color: var(--soul-muted);
  letter-spacing: 0.5px;
}

body.theme-soul .stock-fact dd {
  margin: 0;
  font-family: var(--mono);
  font-variant-numeric: tabular-nums;
  color: var(--soul-ink);
}

body.theme-soul .stock-chart {
  margin-top: 26px;
}

body.theme-soul .chart-tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .chart-tab {
  padding: 7px 16px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: none;
  font-family: var(--sans);
  font-size: 13.5px;
  letter-spacing: 1px;
  color: var(--soul-muted);
  cursor: pointer;
  transition: color 0.15s;
}

body.theme-soul .chart-tab:hover {
  color: var(--soul-ink);
}

body.theme-soul .chart-tab.is-active {
  color: var(--soul-accent);
  border-bottom-color: var(--soul-accent);
}

body.theme-soul .chart-box {
  position: relative;
  height: 420px;
  margin-top: 14px;
}

body.theme-soul #stock-chart {
  display: block;
  width: 100%;
  height: 100%;
  cursor: crosshair;
  touch-action: pan-y;
}

body.theme-soul .chart-note {
  margin: 8px 0 0;
  font-size: 12px;
  letter-spacing: 0.3px;
  color: var(--soul-muted);
}

body.theme-soul .stock-switch {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 28px;
  padding-top: 16px;
  border-top: 1px dotted var(--soul-line);
}

body.theme-soul .stock-switch-label {
  font-size: 12px;
  letter-spacing: 1.5px;
  color: var(--soul-muted);
  margin-right: 4px;
}

body.theme-soul .stock-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  padding: 5px 11px;
  border: 1px solid var(--soul-line);
  border-radius: 3px;
  font-size: 13px;
  color: var(--soul-ink);
  text-decoration: none;
  transition: border-color 0.15s, color 0.15s;
}

body.theme-soul .stock-chip:hover {
  border-color: var(--soul-accent);
  color: var(--soul-accent);
}

body.theme-soul .stock-chip.is-active {
  border-color: var(--soul-accent);
  color: var(--soul-accent);
  background: rgba(30, 86, 200, 0.05);
}

body.theme-soul .chip-pct {
  font-family: var(--mono);
  font-size: 11.5px;
  font-variant-numeric: tabular-nums;
}

/* 栏目页自选股行可点击进个股页 */
body.theme-soul .ql-row {
  color: inherit;
  text-decoration: none;
}

body.theme-soul .ql-row:hover .qt-name {
  color: var(--soul-accent);
}

@media (max-width: 720px) {
  body.theme-soul .stock-name {
    font-size: 22px;
  }

  body.theme-soul .stock-last {
    font-size: 26px;
  }

  body.theme-soul .stock-delta,
  body.theme-soul .stock-pct {
    font-size: 13.5px;
  }

  body.theme-soul .chart-box {
    height: 320px;
  }

  body.theme-soul .stock-facts {
    gap: 6px 18px;
  }

  body.theme-soul .chart-tab {
    padding: 7px 12px;
    font-size: 13px;
  }

  body.theme-soul .stock-head {
    align-items: flex-start;
  }
}

/* 自选股行上的文章数徽章 */
body.theme-soul .qt-posts {
  display: inline-block;
  min-width: 15px;
  margin-left: 7px;
  padding: 0 5px;
  border-radius: 8px;
  background: rgba(30, 86, 200, 0.1);
  color: var(--soul-accent);
  font-family: var(--mono);
  font-size: 10.5px;
  line-height: 16px;
  text-align: center;
  vertical-align: 1px;
}

body.theme-soul.is-dark .qt-posts {
  background: rgba(111, 157, 255, 0.16);
}

/* 个股页：关联文章 */
body.theme-soul .stock-posts {
  margin-top: 30px;
  padding-top: 16px;
  border-top: 1px dotted var(--soul-line);
}

body.theme-soul .stock-posts-title {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 8px;
  font-family: var(--soul-serif);
  font-size: 17px;
  font-weight: 700;
  color: var(--soul-ink);
}

body.theme-soul .stock-posts-count {
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 400;
  color: var(--soul-muted);
}

body.theme-soul .stock-posts-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

body.theme-soul .stock-posts-list li {
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .stock-posts-list li:last-child {
  border-bottom: 0;
}

body.theme-soul .sp-link {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 9px 0;
  color: var(--soul-ink);
  text-decoration: none;
}

body.theme-soul .sp-date {
  flex: none;
  font-family: var(--mono);
  font-size: 12px;
  color: var(--soul-muted);
}

body.theme-soul .sp-title {
  font-size: 15px;
  transition: color 0.15s;
}

body.theme-soul .sp-link:hover .sp-title {
  color: var(--soul-accent);
}

@media (max-width: 720px) {
  body.theme-soul .sp-link {
    flex-direction: column;
    gap: 2px;
  }

  body.theme-soul .sp-title {
    font-size: 14.5px;
  }
}

/* ========== 微言微语：私密短句流 ========== */
body.theme-soul .whisper-compose {
  margin-top: 16px;
}

body.theme-soul .whisper-form {
  padding: 12px 14px 10px;
  border: 1px solid var(--soul-line);
  border-radius: 3px;
  background: #fcfcfc;
}

body.theme-soul .whisper-form textarea {
  display: block;
  width: 100%;
  min-height: 76px;
  padding: 0;
  border: 0;
  background: none;
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.85;
  color: var(--soul-ink);
  resize: vertical;
  outline: none;
}

body.theme-soul .whisper-form textarea::placeholder {
  color: #b8b8b8;
}

body.theme-soul .whisper-form-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-top: 9px;
  border-top: 1px dotted var(--soul-line);
}

body.theme-soul .whisper-hint {
  font-size: 12px;
  color: var(--soul-muted);
}

body.theme-soul .whisper-submit {
  padding: 6px 20px;
  border: 0;
  border-radius: 3px;
  background: var(--soul-accent);
  color: #ffffff;
  font-family: var(--sans);
  font-size: 13.5px;
  letter-spacing: 1px;
  cursor: pointer;
  transition: background 0.15s;
}

body.theme-soul .whisper-submit:hover {
  background: var(--soul-accent-dark);
}

body.theme-soul .whisper-empty {
  margin-top: 34px;
  font-size: 14px;
  color: var(--soul-muted);
}

/* 时间线 */
body.theme-soul .whisper-day {
  margin-top: 30px;
}

body.theme-soul .whisper-day-title {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 0 0 2px;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--soul-ink);
  font-family: var(--soul-serif);
  font-size: 16px;
  font-weight: 700;
  color: var(--soul-ink);
}

body.theme-soul .whisper-day-sub {
  font-family: var(--sans);
  font-size: 12px;
  font-weight: 400;
  letter-spacing: 0.5px;
  color: var(--soul-muted);
}

body.theme-soul .whisper-day-count {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 400;
  color: var(--soul-muted);
}

body.theme-soul .whisper-list {
  margin: 0;
  padding: 0;
  list-style: none;
}

body.theme-soul .whisper-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px dotted var(--soul-line);
}

body.theme-soul .whisper-item:last-child {
  border-bottom: 0;
}

body.theme-soul .whisper-time {
  flex: none;
  width: 44px;
  padding-top: 3px;
  font-family: var(--mono);
  font-size: 12px;
  letter-spacing: 0.5px;
  color: var(--soul-muted);
}

body.theme-soul .whisper-text {
  flex: 1;
  min-width: 0;
  margin: 0;
  font-size: 15px;
  line-height: 1.9;
  color: var(--soul-ink);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

body.theme-soul .whisper-del-form {
  flex: none;
  opacity: 0;
  transition: opacity 0.15s;
}

body.theme-soul .whisper-item:hover .whisper-del-form {
  opacity: 1;
}

body.theme-soul .whisper-del {
  padding: 0 4px;
  border: 0;
  background: none;
  font-size: 17px;
  line-height: 1;
  color: var(--soul-muted);
  cursor: pointer;
}

body.theme-soul .whisper-del:hover {
  color: #d0352f;
}

/* 夜间 */
body.theme-soul.is-dark .whisper-form {
  background: #121a2a;
  border-color: #232a38;
}

body.theme-soul.is-dark .whisper-form textarea::placeholder {
  color: #5a6579;
}

body.theme-soul.is-dark .whisper-del:hover {
  color: #ff6b60;
}

@media (max-width: 720px) {
  body.theme-soul .whisper-item {
    gap: 10px;
  }

  body.theme-soul .whisper-time {
    width: 38px;
    font-size: 11.5px;
  }

  body.theme-soul .whisper-text {
    font-size: 14.5px;
  }

  /* 手机上没有 hover，删除按钮常显 */
  body.theme-soul .whisper-del-form {
    opacity: 0.55;
  }

  body.theme-soul .whisper-hint {
    font-size: 11px;
  }
}

/* ========== 正文表格：防止列被压缩断行，窄屏可横向滚动 ========== */
body.theme-soul .table-wrap {
  margin: 1.5em 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

body.theme-soul .table-wrap table {
  margin: 0;
  min-width: 100%;
}

/* 首列通常是时间/名称，不允许被折断 */
body.theme-soul .prose td:first-child,
body.theme-soul .prose th:first-child {
  white-space: nowrap;
}

/* 表格里中文列正常换行，但不把数字和英文单词劈开 */
body.theme-soul .prose td,
body.theme-soul .prose th {
  word-break: normal;
  overflow-wrap: break-word;
}

@media (max-width: 720px) {
  body.theme-soul .prose table {
    font-size: 13.5px;
  }

  body.theme-soul .prose th,
  body.theme-soul .prose td {
    padding: 7px 9px;
  }
}

/* 表格宽度交给内容决定，超出容器时由 .table-wrap 横向滚动，避免列被压扁 */
body.theme-soul .table-wrap table {
  width: auto;
  min-width: 100%;
}

/* 窄屏给表格一个可读的最小宽度，宁可横向滑动 */
@media (max-width: 720px) {
  body.theme-soul .table-wrap table {
    min-width: 0;
    width: max-content;
    max-width: none;
  }

  body.theme-soul .table-wrap td:first-child,
  body.theme-soul .table-wrap th:first-child {
    white-space: normal;
  }
}

/* 窄屏：SVG 图表（流程图等）保持可读宽度，容器内横向滑动，避免整图压成一条 */
@media (max-width: 720px) {
  body.theme-soul .prose p:has(> img[src$=".svg"]) {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 4px;
  }

  body.theme-soul .prose p:has(> img[src$=".svg"]) > img {
    width: 760px;
    max-width: none;
  }
}

/* 数学公式（KaTeX 服务端渲染）：长公式横向滑动，不撑破正文列 */
body.theme-soul .prose .math-block {
  margin: 1.1em 0;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  padding: 2px 0;
}

body.theme-soul .prose .math-block .katex-display {
  margin: 0;
}

/* 公式字号跟正文对齐：KaTeX 默认 1.21em 在中日韩正文里偏大 */
body.theme-soul .prose .katex {
  font-size: 1.12em;
}

/* 表格单元格里的公式不折行：否则窄列会把 a=b 拆成两行 */
body.theme-soul .prose .table-wrap .katex {
  white-space: nowrap;
}

/* 窄屏：公式再小一档，长公式少滚动一点 */
@media (max-width: 720px) {
  body.theme-soul .prose .katex {
    font-size: 1em;
  }

  body.theme-soul .prose .math-block {
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 255, 255, 0.25) transparent;
  }
}
