/**
 * 文章/详情富文本排版（p/span/h2/h3/ul/ol/strong/em/blockquote/table）
 * 作用域：.article-content、.geo-article-body
 */
.article-content,
.geo-article-body {
  --ar-ink: #1f2937;
  --ar-body: #334155;
  --ar-muted: #64748b;
  --ar-line: var(--line, #e7edf4);
  --ar-soft: var(--soft, #f5f8fb);
  --ar-brand: var(--brand, #0f4c75);
  --ar-accent: var(--accent, #f59e0b);
  color: var(--ar-body);
  font-size: 16px;
  line-height: 1.9;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.article-content > *:first-child,
.geo-article-body > *:first-child {
  margin-top: 0;
}

.article-content > *:last-child,
.geo-article-body > *:last-child {
  margin-bottom: 0;
}

.article-content p,
.geo-article-body p {
  margin: 0 0 1.05em;
  color: var(--ar-body);
  text-align: justify;
  text-justify: inter-ideograph;
}

.article-content h2,
.geo-article-body h2,
.article-content h3,
.geo-article-body h3,
.article-content h4,
.geo-article-body h4 {
  color: var(--ar-ink);
  font-weight: 800;
  line-height: 1.45;
  margin: 1.55em 0 0.7em;
  letter-spacing: 0.01em;
}

.article-content h2,
.geo-article-body h2 {
  font-size: 1.35em;
  padding-bottom: 0.45em;
  border-bottom: 2px solid var(--ar-line);
  position: relative;
}

.article-content h2::before,
.geo-article-body h2::before {
  content: "";
  display: inline-block;
  width: 0.28em;
  height: 0.95em;
  margin-right: 0.45em;
  border-radius: 2px;
  background: var(--ar-brand);
  vertical-align: -0.08em;
}

.article-content h3,
.geo-article-body h3 {
  font-size: 1.15em;
  padding-left: 0.7em;
  border-left: 3px solid var(--ar-brand);
}

.article-content h4,
.geo-article-body h4 {
  font-size: 1.05em;
  color: var(--ar-brand);
}

.article-content strong,
.geo-article-body strong,
.article-content b,
.geo-article-body b {
  color: var(--ar-ink);
  font-weight: 800;
}

.article-content em,
.geo-article-body em,
.article-content i,
.geo-article-body i {
  color: var(--ar-muted);
  font-style: italic;
}

.article-content span,
.geo-article-body span {
  color: inherit;
}

.article-content ul,
.geo-article-body ul,
.article-content ol,
.geo-article-body ol {
  margin: 0.4em 0 1.15em;
  padding: 0.85em 1em 0.85em 1.7em;
  background: var(--ar-soft);
  border: 1px solid var(--ar-line);
  border-radius: 12px;
}

.article-content ul,
.geo-article-body ul {
  list-style: none;
  padding-left: 1.15em;
}

.article-content ul > li,
.geo-article-body ul > li {
  position: relative;
  padding-left: 0.95em;
  margin: 0.45em 0;
}

.article-content ul > li::before,
.geo-article-body ul > li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.72em;
  width: 0.42em;
  height: 0.42em;
  border-radius: 50%;
  background: var(--ar-brand);
}

.article-content ol,
.geo-article-body ol {
  list-style: none;
  counter-reset: ar-ol;
  padding-left: 1.15em;
}

.article-content ol > li,
.geo-article-body ol > li {
  position: relative;
  padding-left: 1.85em;
  margin: 0.5em 0;
  counter-increment: ar-ol;
}

.article-content ol > li::before,
.geo-article-body ol > li::before {
  content: counter(ar-ol);
  position: absolute;
  left: 0;
  top: 0.15em;
  width: 1.4em;
  height: 1.4em;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--ar-line);
  color: var(--ar-brand);
  font-size: 0.78em;
  font-weight: 800;
  line-height: 1.35em;
  text-align: center;
}

.article-content li > p,
.geo-article-body li > p {
  margin: 0.25em 0;
}

.article-content li > ul,
.geo-article-body li > ul,
.article-content li > ol,
.geo-article-body li > ol {
  margin: 0.5em 0 0.2em;
  padding: 0.5em 0.8em 0.5em 1.2em;
  background: transparent;
  border: none;
  border-radius: 0;
}

.article-content blockquote,
.geo-article-body blockquote {
  margin: 1.2em 0;
  padding: 0.95em 1.1em;
  border-left: 4px solid var(--ar-accent);
  background: var(--ar-soft);
  border-radius: 0 12px 12px 0;
  color: var(--ar-muted);
  font-size: 0.96em;
}

.article-content blockquote p:last-child,
.geo-article-body blockquote p:last-child {
  margin-bottom: 0;
}

.article-content .table-wrap,
.geo-article-body .table-wrap {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 1.2em 0;
}

.article-content table,
.geo-article-body table {
  width: 100%;
  min-width: 480px;
  border-collapse: collapse;
  margin: 1.2em 0;
  font-size: 0.95em;
  border: 1px solid var(--ar-line);
  border-radius: 8px;
}

.article-content thead,
.geo-article-body thead {
  background: var(--ar-soft);
}

.article-content th,
.geo-article-body th,
.article-content td,
.geo-article-body td {
  padding: 0.7em 0.9em;
  border: 1px solid var(--ar-line);
  text-align: left;
  vertical-align: top;
}

.article-content th,
.geo-article-body th {
  color: var(--ar-ink);
  font-weight: 800;
  white-space: nowrap;
  background: var(--ar-soft);
}

.article-content tbody tr:nth-child(even),
.geo-article-body tbody tr:nth-child(even) {
  background: #fafbfc;
}

.article-content img,
.geo-article-body img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 1.1em auto;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
}

.article-content hr,
.geo-article-body hr {
  border: 0;
  height: 1px;
  margin: 1.6em 0;
  background: var(--ar-line);
}

.article-content h3 + p,
.geo-article-body h3 + p {
  margin-top: 0.35em;
}

.article-content h3 + ul,
.geo-article-body h3 + ul,
.article-content h3 + ol,
.geo-article-body h3 + ol {
  margin-top: 0.55em;
}

@media (max-width: 640px) {
  .article-content,
  .geo-article-body {
    font-size: 15px;
    line-height: 1.85;
  }

  .article-content h2,
  .geo-article-body h2 {
    font-size: 1.22em;
  }

  .article-content h3,
  .geo-article-body h3 {
    font-size: 1.08em;
  }

  .article-content ul,
  .geo-article-body ul,
  .article-content ol,
  .geo-article-body ol {
    padding-left: 0.95em;
    padding-right: 0.75em;
  }
}
