:root {
  --gm-paper: #eef0e4;
  --gm-ink: #232a17;
  --gm-leaf: #4f8a1b;
  --gm-leaf-ink: #3a6612;
  --gm-bark: #7a5636;
  --gm-line: #cfd5ba;
  --gm-sub: #fafbf4;
  --gm-mute: #4b5338;
  --gm-band: #e3e7d3;
  --gm-r: 3px;
  --gm-cjk: "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
  --gm-lat: "Bell MT", "Baskerville Old Face", "Times New Roman", serif;
  color-scheme: light;
}

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

body.gm-body {
  margin: 0;
  background: var(--gm-paper);
  color: var(--gm-ink);
  font-family: var(--gm-cjk);
  font-size: 17px;
  line-height: 1.8;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--gm-leaf-ink); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--gm-ink); }

:focus-visible { outline: 3px solid var(--gm-leaf-ink); outline-offset: 2px; }

.gm-skip {
  position: absolute; left: 12px; top: -60px; z-index: 10;
  background: var(--gm-ink); color: var(--gm-sub);
  padding: 10px 16px; border-radius: var(--gm-r);
}
.gm-skip:focus { top: 10px; color: var(--gm-sub); }

.gm-main:focus { outline: none; }

/* ---------- 页头 ---------- */
.gm-top { border-bottom: 1px solid var(--gm-line); background: var(--gm-paper); }
.gm-top-in {
  max-width: 1160px; margin: 0 auto; padding: 10px 24px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.gm-brand { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.gm-logo-svg { display: block; height: 34px; width: auto; }
.gm-nav-list { list-style: none; margin: 0; padding: 0; display: flex; gap: 4px; }
.gm-nav-list a {
  display: flex; align-items: center; min-height: 44px; padding: 0 14px;
  color: var(--gm-ink); text-decoration: none; font-size: 16px;
  border-bottom: 3px solid transparent;
}
.gm-nav-list a:hover { border-bottom-color: var(--gm-line); }
.gm-nav-list a[aria-current="page"] { border-bottom-color: var(--gm-bark); }

/* ---------- 首页首屏 ---------- */
.gm-hero {
  max-width: 1160px; margin: 0 auto; padding: 36px 24px 40px;
  display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr); gap: 40px; align-items: start;
}
.gm-h1 {
  font-size: 74px; line-height: 1.08; font-weight: 700; margin: 8px 0 22px;
  letter-spacing: -0.01em; line-break: strict; text-wrap: balance;
}
.gm-lede { font-size: 18px; line-height: 1.75; color: var(--gm-mute); margin: 0 0 26px; max-width: 30em; }
.gm-pick { border-top: 1px solid var(--gm-ink); padding-top: 14px; max-width: 30em; }
.gm-pick-tag { margin: 0 0 6px; font-size: 14px; color: var(--gm-bark); font-weight: 700; }
.gm-pick-link {
  display: inline-block; font-size: 21px; line-height: 1.45; font-weight: 700; color: var(--gm-ink);
  text-decoration-color: var(--gm-leaf); text-decoration-thickness: 2px; padding: 4px 0; line-break: strict;
}
.gm-pick-link:hover { color: var(--gm-leaf-ink); }
.gm-pick-why { margin: 8px 0 0; font-size: 15px; line-height: 1.7; color: var(--gm-mute); }

.gm-hero-tree { position: relative; display: flex; flex-direction: column; align-items: center; }
.gm-crown { position: relative; width: 100%; max-width: 440px; height: 262px; }
.gm-trunk {
  position: absolute; left: 50%; bottom: 0; width: 14px; height: 100%;
  margin-left: -7px; background: var(--gm-bark);
}
.gm-twig { position: absolute; height: 3px; background: var(--gm-leaf); }
.gm-twig-a, .gm-twig-c { right: 50%; transform-origin: 100% 50%; transform: rotate(28deg); }
.gm-twig-b, .gm-twig-d { left: 50%; transform-origin: 0 50%; transform: rotate(-28deg); }
.gm-twig-a { bottom: 46px; width: 150px; }
.gm-twig-b { bottom: 104px; width: 160px; }
.gm-twig-c { bottom: 160px; width: 118px; }
.gm-twig-d { bottom: 214px; width: 112px; }
.gm-twig-tip {
  position: absolute; top: -32px; padding: 1px 8px;
  background: var(--gm-sub); border: 1.5px solid var(--gm-leaf); border-radius: var(--gm-r);
  font-size: 14px; line-height: 1.6; white-space: nowrap; color: var(--gm-ink);
}
.gm-twig-a .gm-twig-tip, .gm-twig-c .gm-twig-tip { left: -18px; transform: rotate(-28deg); }
.gm-twig-b .gm-twig-tip, .gm-twig-d .gm-twig-tip { right: -18px; transform: rotate(28deg); }
.gm-crown-note {
  position: absolute; right: 0; bottom: 10px; white-space: nowrap;
  font-size: 14px; line-height: 1.5; color: var(--gm-bark);
  border-right: 2px dashed var(--gm-bark); padding-right: 8px;
}
.gm-rootline {
  position: relative; margin: 0; padding: 4px 14px;
  background: var(--gm-bark); color: var(--gm-sub); font-size: 15px; line-height: 1.6;
  border-radius: var(--gm-r);
}
.gm-rootline::before {
  content: ""; position: absolute; left: -60px; right: -60px; top: 0; border-top: 2px solid var(--gm-line);
}

/* ---------- 码卡 ---------- */
.gm-card {
  position: relative; width: 100%; max-width: 440px; margin-top: 16px;
  background: var(--gm-sub); border: 1px solid var(--gm-ink); border-top: 4px solid var(--gm-bark);
  border-radius: var(--gm-r); padding: 14px 18px 16px;
}
.gm-card-home::before {
  content: ""; position: absolute; left: 50%; top: -18px; width: 2px; height: 14px; background: var(--gm-bark);
}
.gm-card-tag { font-size: 13px; color: var(--gm-bark); font-weight: 700; margin-bottom: 6px; }
.gm-card-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.gm-card-label { font-size: 14px; color: var(--gm-mute); }
.gm-code {
  font-family: var(--gm-lat); font-size: 30px; line-height: 1.2; letter-spacing: 0.06em;
  color: var(--gm-ink); background: none; user-select: all;
}
.gm-copy {
  min-height: 44px; min-width: 76px; padding: 0 16px;
  font: inherit; font-size: 15px; color: var(--gm-sub); background: var(--gm-ink);
  border: 1px solid var(--gm-ink); border-radius: var(--gm-r); cursor: pointer;
}
.gm-copy:hover { background: var(--gm-leaf-ink); border-color: var(--gm-leaf-ink); }
.gm-copy.gm-copy-done { background: var(--gm-leaf-ink); border-color: var(--gm-leaf-ink); }
.gm-copy-state { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.gm-card-note { margin: 10px 0 0; font-size: 14px; line-height: 1.7; color: var(--gm-mute); }
.gm-join {
  display: flex; align-items: center; justify-content: center; min-height: 48px; margin-top: 14px;
  background: var(--gm-leaf-ink); color: #fff; text-decoration: none; font-weight: 700; font-size: 17px;
  border-radius: var(--gm-r);
}
.gm-join:hover { background: var(--gm-ink); color: #fff; }
.gm-card-disc { margin: 10px 0 0; font-size: 13.5px; line-height: 1.7; color: var(--gm-mute); }
.gm-card-after { font-size: 14px !important; line-height: 1.75; color: var(--gm-mute); margin-top: 10px; }
.gm-art .gm-card { max-width: none; margin: 26px 0 0; }

/* ---------- 首页正文区块：沿着主干往下 ---------- */
.gm-home-body {
  max-width: 1160px; margin: 0 auto 56px; padding: 8px 24px 0;
}
.gm-home-body > * { max-width: 40em; margin-left: 28px; }
.gm-home-body { background: linear-gradient(var(--gm-bark), var(--gm-bark)) 24px 0 / 4px 100% no-repeat; }
.gm-home-body h2 {
  position: relative; font-size: 28px; line-height: 1.35; margin: 40px 0 14px 28px;
  line-break: strict; text-wrap: balance;
}
.gm-home-body h2::before {
  content: ""; position: absolute; left: -28px; top: 0.7em; width: 20px; height: 3px; background: var(--gm-leaf);
}
.gm-home-body p { margin-top: 0; margin-bottom: 1em; }
.gm-split { margin: 6px 0 22px 28px; border-top: 1px solid var(--gm-line); }
.gm-split dt {
  display: inline-block; margin-top: 14px; padding: 0 10px; font-size: 15px; font-weight: 700;
  border: 1.5px solid var(--gm-leaf); border-radius: var(--gm-r); background: var(--gm-sub);
}
.gm-split dt:first-child { border-color: var(--gm-bark); background: var(--gm-bark); color: var(--gm-sub); }
.gm-split dd { margin: 6px 0 0; padding-bottom: 12px; border-bottom: 1px solid var(--gm-line); }

/* ---------- 通用容器 ---------- */
.gm-wrap { max-width: 47rem; margin: 0 auto; padding: 18px 24px 64px; }
.gm-crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; font-size: 14px; color: var(--gm-mute); }
.gm-crumbs li { display: flex; align-items: center; }
.gm-crumbs li + li::before { content: "/"; margin: 0 8px; color: var(--gm-line); }
.gm-crumbs a { display: inline-flex; align-items: center; min-height: 44px; color: var(--gm-mute); }
.gm-crumbs span[aria-current] { display: inline-flex; align-items: center; min-height: 44px; }

.gm-byline { display: flex; flex-wrap: wrap; align-items: center; gap: 0 20px; font-size: 14px; color: var(--gm-mute); }
.gm-h1-seg { display: inline-block; }
.gm-byline a { color: var(--gm-mute); display: inline-block; padding: 10px 0; }

/* ---------- 文章 ---------- */
.gm-art-h1, .gm-page-h1, .gm-list-h1 {
  font-size: 40px; line-height: 1.25; margin: 6px 0 12px; font-weight: 700;
  line-break: strict; text-wrap: balance;
}
.gm-cover { margin: 22px 0 8px; }
.gm-cover img { width: 100%; border: 1px solid var(--gm-line); border-radius: var(--gm-r); }
.gm-toc {
  margin: 24px 0 8px; padding: 12px 18px 10px; background: var(--gm-sub);
  border: 1px solid var(--gm-line); border-left: 4px solid var(--gm-bark); border-radius: var(--gm-r);
}
.gm-toc-h { margin: 0 0 2px; font-weight: 700; font-size: 15px; color: var(--gm-bark); }
.gm-toc-list ul { list-style: none; margin: 0; padding: 0; }
.gm-toc-list li { border-top: 1px dashed var(--gm-line); }
.gm-toc-list li:first-child { border-top: 0; }
.gm-toc-list a { display: flex; align-items: center; min-height: 44px; font-size: 15px; line-height: 1.5; padding: 4px 0; color: var(--gm-ink); text-decoration: none; }
.gm-toc-list a::before { content: ""; width: 10px; height: 2px; background: var(--gm-leaf); margin-right: 10px; flex: none; }
.gm-toc-list a:hover { color: var(--gm-leaf-ink); }

.gm-art { max-width: 38em; }
.gm-art p, .gm-art li { line-break: strict; }
.gm-art h2 {
  font-size: 26px; line-height: 1.4; margin: 52px 0 16px; padding-top: 16px;
  border-top: 1px solid var(--gm-line); line-break: strict; text-wrap: balance;
}
.gm-art h2::before {
  content: ""; display: inline-block; width: 16px; height: 13px; margin-right: 10px; vertical-align: 0.05em;
  border-left: 3px solid var(--gm-bark); border-top: 3px solid var(--gm-leaf); transform: skewX(-24deg);
}
.gm-h2-duan { display: inline-block; }
.gm-art ol, .gm-art ul { padding-left: 1.5em; }
.gm-art li { margin-bottom: 0.55em; }
.gm-art ol > li::marker { font-family: var(--gm-lat); font-weight: 700; color: var(--gm-bark); }
.gm-art ul > li::marker { color: var(--gm-leaf); }

.gm-fix {
  margin: 24px 0; padding: 14px 18px; background: var(--gm-sub);
  border: 1px solid var(--gm-line); border-left: 4px solid var(--gm-bark); border-radius: var(--gm-r);
}
.gm-fix::before { content: "这条说法已经过时"; display: block; font-weight: 700; color: var(--gm-bark); font-size: 15px; margin-bottom: 4px; }
.gm-fix p { margin: 0; }

.gm-shot { margin: 24px 0; }
.gm-shot-frame { background: #fff; border: 1px solid var(--gm-line); border-radius: var(--gm-r); padding: 8px; }
.gm-shot-narrow .gm-shot-frame { max-width: 540px; }
.gm-shot-cap { font-size: 14px; line-height: 1.7; color: var(--gm-mute); margin-top: 8px; }
.gm-shot-cap::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 8px; background: var(--gm-leaf); vertical-align: 0.1em; }

.gm-tabwrap { margin: 22px 0; overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--gm-line); border-radius: var(--gm-r); background: var(--gm-sub); }
.gm-tab { border-collapse: collapse; width: 100%; min-width: 620px; font-size: 15px; line-height: 1.65; }
.gm-tab caption { text-align: left; padding: 10px 14px 6px; font-weight: 700; font-size: 14px; color: var(--gm-bark); }
.gm-tab th, .gm-tab td { padding: 10px 14px; border-top: 1px solid var(--gm-line); text-align: left; vertical-align: top; }
.gm-tab thead th { background: var(--gm-band); font-size: 14px; }
.gm-tab tbody th { font-weight: 700; width: 22%; }
.gm-tree3 thead .gm-col-1 { border-bottom: 3px solid var(--gm-bark); }
.gm-tree3 thead .gm-col-2 { border-bottom: 3px solid var(--gm-leaf); }
.gm-tree3 thead .gm-col-3 { border-bottom: 3px dashed var(--gm-mute); }
.gm-tree3 td.gm-col-1 { background: #f1ede5; }
.gm-tab-fix thead .gm-col-1 { border-bottom: 3px solid var(--gm-bark); }
.gm-tab-fix thead .gm-col-2 { border-bottom: 3px solid var(--gm-leaf); }

.gm-faq { margin-top: 48px; max-width: 38em; border-top: 2px solid var(--gm-ink); padding-top: 8px; }
.gm-faq-h { font-size: 24px; margin: 10px 0 8px; }
.gm-faq-item { border-bottom: 1px solid var(--gm-line); padding: 6px 0 10px; }
.gm-faq-q { font-size: 18px; line-height: 1.5; margin: 12px 0 6px; line-break: strict; }
.gm-faq-a { margin: 0; }

.gm-after { margin-top: 40px; display: grid; gap: 18px; }
.gm-tagbar, .gm-goto { padding: 14px 18px; background: var(--gm-band); border-radius: var(--gm-r); }
.gm-tagbar-h, .gm-goto-h { display: block; margin: 0 0 6px; font-size: 14px; font-weight: 700; color: var(--gm-bark); }
.gm-tagbar-list, .gm-goto-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 10px; }
.gm-tagbar-list span, .gm-tagbar-list a { display: inline-block; padding: 2px 10px; font-size: 14px; border: 1px solid var(--gm-line); border-radius: var(--gm-r); background: var(--gm-sub); }
.gm-goto-list a { display: inline-flex; align-items: center; min-height: 44px; font-size: 15px; }
.gm-goto-list li + li::before { content: ""; }

/* ---------- 列表与站务 ---------- */
.gm-list-intro p, .gm-page-body p { margin: 0 0 1em; }
.gm-list-count { font-size: 14px; color: var(--gm-mute); margin: 0; }
.gm-list-posts { list-style: none; margin: 24px 0 0; padding: 0 0 0 22px; border-left: 4px solid var(--gm-bark); }
.gm-post { position: relative; padding: 4px 0 18px; }
.gm-post::before { content: ""; position: absolute; left: -22px; top: 22px; width: 16px; height: 3px; background: var(--gm-leaf); }
.gm-post-link { display: inline-block; font-size: 21px; font-weight: 700; line-height: 1.45; padding: 6px 0; color: var(--gm-ink); line-break: strict; }
.gm-post-sum { margin: 2px 0 4px; color: var(--gm-mute); font-size: 16px; }
.gm-post-meta { margin: 0; font-size: 14px; color: var(--gm-mute); }
.gm-pager { display: flex; gap: 16px; align-items: center; margin-top: 24px; }
.gm-pager a { display: inline-flex; align-items: center; min-height: 44px; }

.gm-page-body h2 { font-size: 22px; margin: 34px 0 10px; padding-left: 14px; border-left: 4px solid var(--gm-leaf); line-height: 1.4; }
.gm-page-body ol, .gm-page-body ul { padding-left: 1.5em; }
.gm-page-body li { margin-bottom: 0.6em; }
.gm-page-body strong { color: var(--gm-bark); }
.gm-mail a { font-family: var(--gm-lat); font-size: 22px; display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- 搜索 ---------- */
.gm-sz { margin: 18px 0 8px; }
.gm-sz-label { display: block; font-weight: 700; margin-bottom: 6px; }
.gm-sz-row { display: flex; gap: 8px; }
.gm-sz-input {
  flex: 1; min-width: 0; min-height: 48px; padding: 0 12px; font: inherit; font-size: 17px;
  border: 1px solid var(--gm-ink); border-radius: var(--gm-r); background: var(--gm-sub); color: var(--gm-ink);
}
.gm-sz-btn { min-height: 48px; padding: 0 20px; font: inherit; color: var(--gm-sub); background: var(--gm-ink); border: 0; border-radius: var(--gm-r); cursor: pointer; }
.gm-sz-state { font-size: 15px; color: var(--gm-mute); min-height: 1.6em; }
.gm-sz-out { list-style: none; margin: 0; padding: 0; }
.gm-sz-hit { border-top: 1px solid var(--gm-line); padding: 10px 0; }
.gm-sz-hit a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; font-size: 18px; }
.gm-sz-hit p { margin: 0; font-size: 15px; color: var(--gm-mute); }

/* ---------- 404 ---------- */
.gm-lost { padding-top: 48px; }
.gm-lost-txt { font-size: 18px; color: var(--gm-mute); }
.gm-lost-go { list-style: none; padding: 0 0 0 22px; border-left: 4px solid var(--gm-bark); }
.gm-lost-go a { display: inline-flex; align-items: center; min-height: 44px; font-size: 18px; }

/* ---------- 页脚 ---------- */
.gm-foot { background: var(--gm-band); border-top: 3px solid var(--gm-bark); }
.gm-foot-in { max-width: 1160px; margin: 0 auto; padding: 28px 24px 24px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px 40px; }
.gm-foot-note { margin: 6px 0 0; font-size: 14px; line-height: 1.75; color: var(--gm-mute); max-width: 30em; }
.gm-foot-note a { display: inline-block; padding: 10px 0; line-height: 24px; }
.gm-foot-links { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 18px; align-content: start; }
.gm-foot-links a { display: flex; align-items: center; min-height: 44px; font-size: 15px; color: var(--gm-ink); }
.gm-foot-year { grid-column: 1 / -1; margin: 10px 0 0; font-size: 13px; color: var(--gm-mute); font-family: var(--gm-lat); }

/* ---------- 窄屏 ---------- */
@media (max-width: 899px) {
  .gm-hero { grid-template-columns: minmax(0, 1fr); gap: 0; padding: 18px 16px 28px; }
  .gm-hero-txt, .gm-hero-tree { display: contents; }
  .gm-h1 { order: 1; }
  .gm-lede { order: 2; }
  .gm-rootline { order: 3; justify-self: start; }
  .gm-card { order: 4; }
  .gm-pick { order: 5; margin-top: 22px; }
  .gm-crown { order: 6; margin: 26px auto 0; }
  .gm-rootline::before { display: none; }
  .gm-card-home::before { left: 28px; }
  .gm-card { max-width: none; }
}

@media (max-width: 759px) {
  body.gm-body { font-size: 16px; line-height: 1.78; }
  .gm-top-in { flex-direction: column; align-items: stretch; gap: 0; padding: 4px 16px 0; }
  .gm-logo-svg { height: 30px; }
  .gm-nav-list { justify-content: space-between; }
  .gm-nav-list a { padding: 0 6px; font-size: 15px; }
  .gm-h1 { font-size: 39px; line-height: 1.15; margin: 4px 0 12px; }
  .gm-lede { font-size: 15px; line-height: 1.7; margin-bottom: 14px; }
  .gm-card { padding: 12px 14px 14px; margin-top: 14px; }
  .gm-code { font-size: 27px; }
  .gm-card-note { font-size: 13.5px; margin-top: 8px; }
  .gm-pick-link { font-size: 18px; }
  .gm-pick-why { font-size: 14px; }
  .gm-crown { height: 230px; max-width: 330px; }
  .gm-twig-a { width: 110px; }
  .gm-twig-b { width: 116px; }
  .gm-twig-c { width: 92px; bottom: 150px; }
  .gm-twig-d { width: 88px; bottom: 196px; }
  .gm-crown-note { font-size: 13px; }
  .gm-home-body { padding: 0 16px; background-position: 16px 0; }
  .gm-home-body > * { margin-left: 22px; }
  .gm-home-body h2 { font-size: 23px; margin-left: 22px; }
  .gm-home-body h2::before { left: -22px; width: 16px; }
  .gm-split { margin-left: 22px; }
  .gm-wrap { padding: 8px 16px 48px; }
  .gm-crumbs li:last-child:not(:first-child) { display: none; }
  .gm-art-h1, .gm-page-h1, .gm-list-h1 { font-size: 29px; }
  .gm-art h2 { font-size: 21px; margin-top: 40px; }
  .gm-shot-frame { padding: 4px; }
  .gm-foot-in { grid-template-columns: minmax(0, 1fr); padding: 22px 16px; }
}

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
}
