:root {
  --paper: #f5f4ef; --card: #fbfaf6; --ink: #1e1c19; --soft: #4a453e; --muted: #8a8276;
  --rust: #9c3f33; --rule: #ddd6c8;
  --serif: "Noto Serif SC", "Songti SC", "STSong", "SimSun", "Source Han Serif SC", serif;
  --sans: "PingFang SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root { --paper: #15171c; --card: #1c1f26; --ink: #e4ded2; --soft: #c2bbae; --muted: #8e887d; --rust: #d0705f; --rule: #2f333d; }
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 16px; line-height: 1.8; }
a { color: inherit; text-decoration: none; }
.wrap { max-width: 920px; margin: 0 auto; padding: 0 20px; }

.top { border-bottom: 3px double var(--ink); }
.top .wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 16px; padding-bottom: 14px; flex-wrap: wrap; }
.brand { display: flex; align-items: center; gap: 10px; font-family: var(--serif); font-weight: 700; font-size: 20px; letter-spacing: .18em; }
.brand img { width: 40px; height: 40px; }
nav { display: flex; gap: 22px; font-size: 15px; }
nav a { color: var(--soft); padding: 2px 0; border-bottom: 2px solid transparent; }
nav a:hover, nav a.on { color: var(--rust); border-color: var(--rust); }

main { padding: 44px 20px 64px; min-height: 70vh; }
h1, h2, h3 { font-family: var(--serif); font-weight: 700; }

.hero { padding: 12px 0 36px; }
.kick { font-size: 12px; letter-spacing: .3em; color: var(--muted); }
.hero h1 { font-size: clamp(34px, 7vw, 54px); letter-spacing: .14em; margin: 10px 0 14px; }
.hero p:last-child { max-width: 36em; color: var(--soft); font-size: 17px; }

.columns { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; margin-bottom: 48px; }
.columns a { display: flex; flex-direction: column; gap: 8px; height: 100%; padding: 20px; background: var(--card); border: 1px solid var(--rule); border-top: 3px solid var(--rust); }
.columns b { font-family: var(--serif); font-size: 21px; }
.columns em { font-style: normal; color: var(--soft); font-size: 14px; flex: 1; }
.columns span { color: var(--rust); font-size: 14px; }
.columns a:hover { border-color: var(--rust); }

.block { margin-top: 40px; }
.block h2, .note h2 { font-size: 19px; letter-spacing: .12em; padding-bottom: 8px; border-bottom: 1px solid var(--ink); margin-bottom: 4px; }

.rows { list-style: none; }
.rows a { display: grid; grid-template-columns: 56px 1fr auto; column-gap: 16px; align-items: baseline; padding: 16px 0; border-bottom: 1px solid var(--rule); }
.rows .y { font-family: var(--serif); color: var(--rust); font-size: 18px; }
.rows b { font-family: var(--serif); font-size: 20px; }
.rows em { grid-column: 2 / -1; font-style: normal; color: var(--soft); font-size: 15px; }
.rows .n { color: var(--muted); font-size: 13px; }
.rows a:hover b { color: var(--rust); }

.cards { list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; margin-top: 16px; }
.cards a { display: flex; flex-direction: column; gap: 4px; padding: 16px 18px; background: var(--card); border: 1px solid var(--rule); height: 100%; }
.cards b { font-family: var(--serif); font-size: 18px; }
.cards span { color: var(--rust); font-size: 13px; }
.cards em { font-style: normal; color: var(--soft); font-size: 14px; }
.cards a:hover { border-color: var(--rust); }

.col-head { margin-bottom: 20px; }
.col-head h1 { font-size: 36px; letter-spacing: .16em; }
.col-head p { color: var(--soft); max-width: 40em; margin-top: 8px; }
.col-head a { color: var(--rust); }

.crumb { font-size: 13px; color: var(--muted); letter-spacing: .1em; }
.crumb a { color: var(--rust); }
.reader, .note { max-width: 680px; margin: 0 auto; }
.reader h1, .note h1 { font-size: 38px; letter-spacing: .12em; margin: 8px 0 6px; }
.meta { color: var(--muted); font-size: 14px; padding-bottom: 20px; border-bottom: 1px solid var(--rule); margin-bottom: 28px; }
.text { font-family: var(--serif); font-size: 18px; line-height: 2; }
.text h2 { font-size: 22px; text-align: center; letter-spacing: .3em; color: var(--rust); margin: 40px 0 20px; }
.text h3 { font-size: 19px; margin: 28px 0 12px; }
.text p { text-indent: 2em; margin: 0 0 .9em; text-align: justify; }
.text p.doc-no-indent { text-indent: 0; }
.text .spacer { height: 1.2em; }
.lead { font-family: var(--serif); font-size: 18px; color: var(--soft); margin: 16px 0 28px; }
.note p { margin-bottom: 1em; }
.refs, .plain { list-style: none; margin-top: 8px; }
.refs li { display: grid; grid-template-columns: auto 1fr; column-gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--rule); }
.refs b { font-family: var(--serif); font-size: 17px; }
.refs span { color: var(--muted); font-size: 14px; align-self: center; }
.refs em { grid-column: 1 / -1; font-style: normal; color: var(--soft); font-size: 15px; }
.plain li { padding: 8px 0 8px 18px; position: relative; color: var(--soft); }
.plain li::before { content: "·"; position: absolute; left: 4px; color: var(--rust); font-weight: 700; }
.back { margin-top: 40px; }
.back a { color: var(--rust); }

.jiexi h2 { margin-top: 44px; margin-bottom: 14px; }
.jiexi h3 { font-size: 17px; color: var(--rust); margin: 24px 0 8px; }
.jiexi p { margin: 0 0 .9em; }
.jiexi ul, .jiexi ol { padding-left: 1.4em; margin: 0 0 1em; }
.jiexi li { margin-bottom: .5em; }
.jiexi .table { overflow-x: auto; margin: 0 0 1.2em; }
.jiexi table { width: 100%; border-collapse: collapse; font-size: 14px; line-height: 1.7; }
.jiexi th, .jiexi td { text-align: left; vertical-align: top; padding: 8px 10px; border-bottom: 1px solid var(--rule); }
.jiexi th { color: var(--muted); font-weight: 600; border-bottom-color: var(--ink); white-space: nowrap; }
.jiexi .lead { margin-bottom: 8px; }

.foot { border-top: 1px solid var(--rule); }
.foot .wrap { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding-top: 18px; padding-bottom: 28px; font-size: 13px; color: var(--muted); }
.foot a:hover { color: var(--rust); }

@media (max-width: 560px) {
  nav { gap: 16px; }
  .rows a { grid-template-columns: 48px 1fr; }
  .rows .n { display: none; }
  .reader h1, .note h1 { font-size: 30px; }
  .text { font-size: 17px; }
}
