:root {
  --bw-paper: #f2f6c7;
  --bw-ink: #1f2a10;
  --bw-blue: #233d91;
  --bw-moss: #7b8a5c;
  --bw-moss-text: #4b5631;
  --bw-line: #d8dea5;
  --bw-surf: #fffff2;
  --bw-r-l: 31px;
  --bw-r-s: 14px;
  --bw-cjk: "Microsoft YaHei", "PingFang SC", "Noto Sans SC", sans-serif;
  --bw-lat: "Lucida Fax", "Lucida Bright", serif;
  --bw-wide: 1160px;
}

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

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

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

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

a { color: var(--bw-blue); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 2px; }

:focus-visible { outline: 3px solid var(--bw-blue); outline-offset: 2px; border-radius: 4px; }

.bw-skip {
  position: absolute; left: 12px; top: -60px; z-index: 10;
  background: var(--bw-blue); color: #fff; padding: 10px 16px; border-radius: var(--bw-r-s);
  text-decoration: none;
}
.bw-skip:focus { top: 10px; }

/* ---------- 页头 ---------- */
.bw-top { border-bottom: 2px solid var(--bw-line); background: var(--bw-paper); }
.bw-top-in {
  max-width: var(--bw-wide); margin: 0 auto; padding: 8px 24px;
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
}
.bw-brand { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.bw-mark { display: block; }
.bw-nav-list { list-style: none; margin: 0; padding: 0; display: flex; gap: 4px; flex-wrap: wrap; }
.bw-nav-a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px;
  color: var(--bw-ink); text-decoration: none; border-radius: var(--bw-r-s); font-size: 15px;
}
.bw-nav-a:hover { background: var(--bw-surf); }
.bw-nav-a.bw-on { box-shadow: inset 0 -3px 0 var(--bw-blue); border-radius: 0; }

.bw-main { display: block; max-width: var(--bw-wide); margin: 0 auto; padding: 0 24px 56px; }
.bw-main:focus { outline: none; }

/* ---------- 标题 ---------- */
.bw-h1 {
  font-size: 36px; line-height: 1.32; margin: 0 0 14px; font-weight: 700; letter-spacing: 0.01em;
  line-break: strict; text-wrap: balance;
}
.bw-h2, .bw-art h2, .bw-home-body h2, .bw-desk h2, .bw-faq-h, .bw-after-h {
  font-size: 23px; line-height: 1.45; margin: 2.2em 0 0.7em; line-break: strict; text-wrap: balance;
}
.bw-art h3, .bw-desk h3 { font-size: 18px; line-height: 1.5; margin: 1.8em 0 0.5em; line-break: strict; text-wrap: balance; }

/* ---------- 首页首屏 ---------- */
.bw-first {
  display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr); gap: 44px;
  align-items: start; padding: 30px 0 34px; border-bottom: 2px solid var(--bw-line);
}
.bw-lede { font-size: 17px; margin: 0 0 22px; max-width: 30em; }
.bw-pick {
  border: 2px solid var(--bw-ink); border-radius: var(--bw-r-s); padding: 16px 20px 14px;
  background: var(--bw-surf); max-width: 30em;
}
.bw-pick-k { margin: 0 0 4px; font-size: 14px; color: var(--bw-moss-text); }
.bw-pick-a {
  display: inline-flex; align-items: center; min-height: 44px; font-size: 18px; font-weight: 700;
  line-height: 1.45; color: var(--bw-blue);
}
.bw-pick-why { margin: 6px 0 0; font-size: 15px; }
.bw-first-r { display: flex; flex-direction: column; gap: 18px; }

/* ---------- 码卡 ---------- */
.bw-ma {
  background: var(--bw-surf); border: 2px solid var(--bw-blue); border-radius: var(--bw-r-l);
  padding: 16px 24px 16px;
}
.bw-ma-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.bw-ma-k { font-size: 14px; color: var(--bw-moss-text); }
.bw-ma-code {
  font-family: var(--bw-lat); font-size: 26px; letter-spacing: 0.06em; color: var(--bw-blue);
  background: none; padding: 0; user-select: all; -webkit-user-select: all;
}
.bw-ma-copy {
  margin-left: auto; min-height: 44px; min-width: 76px; padding: 0 18px; font: inherit; font-size: 15px;
  color: var(--bw-ink); background: var(--bw-paper); border: 2px solid var(--bw-ink);
  border-radius: var(--bw-r-s); cursor: pointer;
}
.bw-ma-copy:hover { background: var(--bw-line); }
.bw-ma-copy.bw-done { background: var(--bw-ink); color: var(--bw-surf); }
.bw-ma-note { margin: 6px 0 0; font-size: 13.5px; line-height: 1.65; }
.bw-ma-go {
  display: flex; align-items: center; justify-content: center; min-height: 48px; margin: 14px 0 0;
  padding: 0 18px; background: var(--bw-blue); color: #fff; text-decoration: none; font-weight: 700;
  border-radius: var(--bw-r-s);
}
.bw-ma-go:hover { background: #1a2f73; }
.bw-ma-pi { margin: 8px 0 0; font-size: 13px; line-height: 1.6; color: var(--bw-moss-text); }
.bw-ma-wen { margin: 1.6em 0; max-width: 38em; }

/* ---------- 权限格 ---------- */
.bw-tw { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 1.4em 0; }
.bw-tw-home { margin: 0; }
.bw-ge {
  width: 100%; border-collapse: separate; border-spacing: 0; background: var(--bw-surf);
  border: 2px solid var(--bw-line); border-radius: var(--bw-r-l); overflow: hidden; font-size: 15px;
}
.bw-ge-cap { font-size: 14px; color: var(--bw-moss-text); margin: 0 0 8px 4px; }
.bw-h1-a { display: block; }
.bw-ge th, .bw-ge td { padding: 11px 14px; text-align: left; vertical-align: top; border-top: 2px solid var(--bw-line); }
.bw-ge thead th { border-top: 0; font-size: 14px; font-weight: 700; background: var(--bw-paper); }
.bw-ge td + td, .bw-ge th + td, .bw-ge thead th + th { border-left: 2px solid var(--bw-line); }
.bw-ge-fn { font-weight: 700; width: 30%; }
.bw-ge-c { line-height: 1.55; }
.bw-ge-t { display: inline; }
.bw-ge-open { color: var(--bw-blue); }
.bw-ge-shut { color: var(--bw-moss-text); }
.bw-ge-none { color: var(--bw-ink); }
.bw-ge-home th, .bw-ge-home td { padding: 9px 14px; }

.bw-lk {
  display: inline-block; position: relative; width: 14px; height: 11px; margin: 0 9px 0 2px;
  vertical-align: -1px; border-radius: 3px; background: currentColor;
}
.bw-lk::before {
  content: ""; position: absolute; left: 2px; top: -8px; width: 10px; height: 9px;
  border: 2px solid currentColor; border-bottom: 0; border-radius: 6px 6px 0 0;
}
.bw-lk-open::before { left: 8px; top: -10px; }
.bw-lk-none { background: transparent; border: 2px dashed currentColor; border-radius: 50%; width: 13px; height: 13px; vertical-align: -2px; }
.bw-lk-none::before { display: none; }

/* ---------- 首页下方 ---------- */
.bw-home-body { max-width: 44em; }
.bw-home-body p, .bw-home-body li { max-width: 38em; }
.bw-home-body ul { padding-left: 1.2em; }
.bw-shelf { max-width: 44em; }
.bw-cards { list-style: none; margin: 0; padding: 0; }
.bw-card { border: 2px solid var(--bw-line); border-radius: var(--bw-r-s); background: var(--bw-surf); padding: 14px 20px; }
.bw-card-a { display: inline-flex; align-items: center; min-height: 44px; font-size: 18px; font-weight: 700; line-height: 1.45; }
.bw-card-d { margin: 4px 0 6px; }
.bw-card-m, .bw-list-m, .bw-by, .bw-count { font-size: 14px; color: var(--bw-moss-text); }
.bw-shelf-more a { display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- 面包屑 ---------- */
.bw-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; padding: 12px 0 0; font-size: 14px; color: var(--bw-moss-text); }
.bw-crumbs a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 2px; }
.bw-crumbs-sep { color: var(--bw-moss); }

/* ---------- 文章页 ---------- */
.bw-dochead { padding: 10px 0 8px; max-width: 46em; }
.bw-h1-doc { margin-bottom: 10px; }
.bw-cover { margin: 14px 0 6px; max-width: 980px; }
.bw-cover img { display: block; width: 100%; border-radius: var(--bw-r-l); border: 2px solid var(--bw-line); }
.bw-cover-cap { font-size: 14px; color: var(--bw-moss-text); margin-top: 8px; }

.bw-docgrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 48px; }
.bw-doccol { min-width: 0; }
.bw-toc { margin: 18px 0 6px; }
.bw-toc-d { border: 2px solid var(--bw-line); border-radius: var(--bw-r-s); background: var(--bw-surf); padding: 4px 16px 8px; }
.bw-toc-s { min-height: 44px; display: flex; align-items: center; cursor: pointer; font-weight: 700; font-size: 15px; }
.bw-toc-l { margin: 0; padding: 0 0 0 1.4em; font-size: 15px; }
.bw-toc-a { display: inline-flex; align-items: center; min-height: 44px; line-height: 1.45; padding: 4px 0; }

.bw-art { font-size: 16.5px; }
.bw-art p, .bw-art li, .bw-desk p, .bw-desk li, .bw-intro p { max-width: 38em; }
.bw-art ul, .bw-art ol { padding-left: 1.3em; }
.bw-art li + li { margin-top: 4px; }
.bw-art h2 { padding-top: 0.9em; border-top: 2px solid var(--bw-line); }

.bw-shot { margin: 1.4em 0; max-width: 38em; }
.bw-shot img { display: block; border: 2px solid var(--bw-line); border-radius: var(--bw-r-s); background: #fff; }
.bw-shot-cap { font-size: 14px; line-height: 1.65; color: var(--bw-moss-text); margin-top: 8px; }

.bw-tb { border-collapse: separate; border-spacing: 0; min-width: 620px; width: 100%; background: var(--bw-surf); border: 2px solid var(--bw-line); border-radius: var(--bw-r-s); font-size: 15px; line-height: 1.6; }
.bw-tb th, .bw-tb td { padding: 10px 12px; text-align: left; vertical-align: top; border-top: 2px solid var(--bw-line); }
.bw-tb thead th { border-top: 0; background: var(--bw-paper); font-size: 14px; }
.bw-tb tbody th { font-weight: 700; }
.bw-tb td, .bw-tb th + th { border-left: 2px solid var(--bw-line); }

.bw-faq { margin-top: 2.6em; max-width: 40em; }
.bw-faq-i { border-left: 4px solid var(--bw-blue); padding: 2px 0 2px 16px; margin: 1.2em 0; }
.bw-faq-q { font-size: 17px; margin: 0 0 4px; line-height: 1.55; }
.bw-faq-a { margin: 0; }

.bw-after { margin-top: 2.6em; padding: 4px 22px 14px; border-radius: var(--bw-r-l); background: var(--bw-surf); border: 2px solid var(--bw-line); max-width: 40em; }
.bw-after-h { margin-top: 0.9em; font-size: 19px; }
.bw-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 14px; }
.bw-tags-k { color: var(--bw-moss-text); }
.bw-tag { display: inline-flex; align-items: center; min-height: 32px; padding: 0 12px; border: 2px solid var(--bw-line); border-radius: 999px; }
.bw-after-l { list-style: none; padding: 0; margin: 10px 0 0; }
.bw-after-l a { display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- 列表页 ---------- */
.bw-intro { max-width: 44em; }
.bw-list { list-style: none; padding: 0; margin: 1.4em 0 0; max-width: 44em; }
.bw-list-i { border-top: 2px solid var(--bw-line); padding: 14px 0 16px; }
.bw-list-a { display: inline-flex; align-items: center; min-height: 44px; font-size: 19px; font-weight: 700; line-height: 1.45; }
.bw-list-d { margin: 4px 0; }
.bw-pager { display: flex; gap: 16px; align-items: center; margin-top: 20px; }
.bw-pager-a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border: 2px solid var(--bw-line); border-radius: var(--bw-r-s); }

/* ---------- 站务页 / 搜索 / 404 ---------- */
.bw-deskwrap { max-width: 44em; }
.bw-desk table { margin: 0; }
.bw-find { margin: 1.4em 0 0; }
.bw-find-l { display: block; font-size: 14px; color: var(--bw-moss-text); margin-bottom: 6px; }
.bw-find-row { display: flex; gap: 10px; }
.bw-find-q {
  flex: 1; min-width: 0; min-height: 48px; padding: 0 16px; font: inherit; color: var(--bw-ink);
  background: var(--bw-surf); border: 2px solid var(--bw-ink); border-radius: var(--bw-r-s);
}
.bw-find-b { min-height: 48px; min-width: 64px; font: inherit; font-weight: 700; color: #fff; background: var(--bw-blue); border: 0; border-radius: var(--bw-r-s); cursor: pointer; }
.bw-find-st { font-size: 14px; color: var(--bw-moss-text); min-height: 1.6em; }
.bw-find-out { padding-left: 1.3em; }
.bw-find-out li { margin: 0 0 14px; }
.bw-find-out a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 700; }
.bw-find-out p { margin: 0; font-size: 15px; }
.bw-none-l { padding-left: 1.2em; }
.bw-none-l a { display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- 页脚 ---------- */
.bw-foot { border-top: 2px solid var(--bw-line); background: var(--bw-surf); }
.bw-foot-in { max-width: var(--bw-wide); margin: 0 auto; padding: 26px 24px 30px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 40px; }
.bw-foot-say { margin: 6px 0 0; font-size: 14px; line-height: 1.7; max-width: 32em; }
.bw-foot-inl { display: inline-block; padding: 12px 0; margin: -12px 0; }
.bw-foot-links { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 18px; align-content: start; }
.bw-foot-links a { display: inline-flex; align-items: center; min-height: 44px; font-size: 14px; color: var(--bw-ink); }
.bw-foot-copy { grid-column: 1 / -1; margin: 8px 0 0; font-size: 13px; color: var(--bw-moss-text); font-family: var(--bw-lat); }

/* ---------- 宽屏：文章两栏 ---------- */
@media (min-width: 1080px) {
  .bw-docgrid { grid-template-columns: minmax(0, 42em) 16rem; }
  .bw-toc { grid-column: 2; grid-row: 1; position: sticky; top: 20px; align-self: start; }
  .bw-doccol { grid-column: 1; grid-row: 1; }
}

/* ---------- 窄屏 ---------- */
@media (max-width: 860px) {
  .bw-first { grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 14px 0 26px; }
  .bw-foot-in { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 640px) {
  body { font-size: 15.5px; }
  .bw-top-in { padding: 4px 16px; gap: 0; }
  .bw-nav { width: 100%; }
  .bw-nav-list { gap: 0; }
  .bw-nav-a { padding: 0 10px; }
  .bw-nav-list li:first-child .bw-nav-a { padding-left: 0; }
  .bw-main { padding: 0 16px 44px; }
  .bw-h1 { font-size: 23px; line-height: 1.4; margin-bottom: 8px; }
  .bw-h2, .bw-art h2, .bw-home-body h2, .bw-desk h2, .bw-faq-h, .bw-after-h { font-size: 20px; }
  .bw-lede { font-size: 15.5px; margin-bottom: 12px; line-height: 1.7; }
  .bw-pick { padding: 8px 14px 10px; }
  .bw-pick-k { font-size: 13px; margin: 0; }
  .bw-pick-a { font-size: 16px; min-height: 44px; }
  .bw-pick-why { font-size: 14px; margin-top: 2px; line-height: 1.65; }
  .bw-ma { padding: 12px 16px 12px; border-radius: 22px; }
  .bw-ma-code { font-size: 23px; }
  .bw-ma-row { gap: 8px; }
  .bw-art { font-size: 16px; }
  .bw-cover img { border-radius: var(--bw-r-s); }
  .bw-ge { border-radius: 20px; font-size: 14px; }
  .bw-ge th, .bw-ge td { padding: 9px 10px; }
  .bw-lk { margin-right: 7px; }
  .bw-after { padding: 4px 16px 12px; border-radius: 20px; }
}

@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

@media print {
  .bw-top, .bw-foot, .bw-toc, .bw-ma { display: none; }
  body { background: #fff; }
}
