:root {
  --parchment: #f5f4ed;
  --ivory: #faf9f5;
  --brand: #1B365D;
  --ink-light: #2D5A8A;
  --near-black: #141413;
  --dark-warm: #3d3d3a;
  --olive: #504e49;
  --stone: #6b6a64;
  --border: #e8e6dc;
  --border-soft: #e5e3d8;
  --tag: #EEF2F7;
}

@page {
  size: A4;
  margin: 20mm 22mm 22mm 22mm;
  background: var(--parchment);
  @bottom-left {
    content: "JiuwenSwarm";
    font-family: "Noto Serif CJK SC", "Source Han Serif SC", serif;
    font-size: 8pt;
    color: #6b6a64;
  }
  @bottom-right {
    content: counter(page);
    font-family: "Noto Serif CJK SC", "Source Han Serif SC", serif;
    font-size: 8pt;
    color: #6b6a64;
  }
}

@page:first {
  margin: 18mm 20mm;
  @bottom-left { content: none; }
  @bottom-right { content: none; }
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "STSong", Georgia, serif;
  background: var(--parchment);
  color: var(--near-black);
  font-size: 10.4pt;
  line-height: 1.55;
  letter-spacing: 0.12pt;
}

#title-block-header { display: none; }

.cover {
  height: 256mm;
  display: flex;
  flex-direction: column;
  justify-content: center;
  border: 1pt solid var(--border);
  border-radius: 24pt;
  padding: 44pt 46pt;
  background: linear-gradient(140deg, #faf9f5 0%, #f5f4ed 62%, #eef2f7 100%);
  page-break-after: always;
}
.cover-kicker {
  color: var(--brand);
  letter-spacing: 1.8pt;
  font-size: 9pt;
  margin-bottom: 18pt;
  text-transform: uppercase;
}
.cover h1 {
  font-size: 36pt;
  line-height: 1.15;
  font-weight: 500;
  color: var(--near-black);
  margin: 0 0 18pt 0;
  border: none;
  padding: 0;
}
.cover .subtitle {
  font-size: 14pt;
  line-height: 1.5;
  color: var(--dark-warm);
  margin: 0 0 36pt 0;
}
.cover-meta {
  border-left: 3pt solid var(--brand);
  padding-left: 12pt;
  color: var(--olive);
  font-size: 9.5pt;
}

.notice {
  background: var(--ivory);
  border: 0.5pt solid var(--border);
  border-left: 3pt solid var(--brand);
  border-radius: 8pt;
  padding: 12pt 16pt;
  margin: 0 0 18pt 0;
  color: var(--dark-warm);
}

nav#TOC {
  page-break-after: always;
  background: var(--ivory);
  border: 0.5pt solid var(--border);
  border-radius: 12pt;
  padding: 20pt 24pt;
  margin: 8pt 0 18pt 0;
}
nav#TOC::before {
  content: "目录";
  display: block;
  font-size: 20pt;
  color: var(--near-black);
  margin-bottom: 10pt;
  border-left: 3pt solid var(--brand);
  padding-left: 10pt;
}
nav#TOC ul { list-style: none; padding-left: 0; margin: 0; }
nav#TOC li { margin: 4pt 0; }
nav#TOC a { color: var(--dark-warm); text-decoration: none; }
nav#TOC ul ul { margin-left: 12pt; font-size: 9pt; }
nav#TOC ul ul li { margin: 2pt 0; color: var(--stone); }

h1, h2, h3 { font-weight: 500; line-height: 1.25; color: var(--near-black); }
h1 {
  font-size: 22pt;
  margin: 0 0 18pt 0;
  padding-left: 10pt;
  border-left: 3pt solid var(--brand);
  page-break-before: always;
}
h1:first-of-type { page-break-before: auto; }
h2 {
  font-size: 15.5pt;
  margin: 24pt 0 10pt 0;
  padding-left: 8pt;
  border-left: 2.5pt solid var(--brand);
}
h3 {
  font-size: 12.5pt;
  margin: 16pt 0 6pt 0;
  color: var(--dark-warm);
}
p { margin: 0 0 8pt 0; }
strong { font-weight: 500; color: var(--brand); }
em { font-style: normal; }
a { color: var(--brand); }

ul, ol { margin: 6pt 0 10pt 18pt; padding: 0; }
li { margin: 3pt 0; }

blockquote {
  margin: 12pt 0;
  padding: 6pt 0 6pt 14pt;
  border-left: 2pt solid var(--brand);
  color: var(--olive);
}

code, pre {
  font-family: "Noto Sans Mono CJK SC", "Noto Sans Mono CJK JP", "JetBrains Mono", Consolas, monospace;
  font-size: 8.4pt;
  letter-spacing: 0;
}
code {
  background: #EEF2F7;
  color: var(--brand);
  padding: 0.3pt 2.5pt;
  border-radius: 3pt;
}
pre {
  background: #30302e;
  color: #faf9f5;
  padding: 10pt 12pt;
  border-radius: 8pt;
  overflow-wrap: break-word;
  white-space: pre-wrap;
  margin: 10pt 0 12pt 0;
  page-break-inside: avoid;
}
pre code { background: transparent; color: inherit; padding: 0; }

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 8.8pt;
  margin: 10pt 0 14pt 0;
  break-inside: avoid;
}
th {
  text-align: left;
  color: var(--dark-warm);
  font-weight: 500;
  padding: 6pt 7pt;
  border-bottom: 1pt solid var(--border);
  background: #faf9f5;
}
td {
  padding: 5pt 7pt;
  border-bottom: 0.3pt solid var(--border-soft);
  vertical-align: top;
}
tr:nth-child(even) td { background: #faf9f5; }

.map-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8pt;
  margin: 14pt 0 18pt 0;
}
.map-grid div,
.principles p,
.checklist p,
.arch-row > div {
  background: var(--ivory);
  border: 0.5pt solid var(--border);
  border-radius: 8pt;
  padding: 10pt 12pt;
  margin: 0;
}
.checklist p { margin: 5pt 0; }
.checklist span {
  display: inline-block;
  min-width: 20pt;
  color: var(--brand);
  font-weight: 500;
}
.principles p { margin: 6pt 0; }

.arch { margin: 14pt 0 18pt 0; page-break-inside: avoid; }
.arch-row { display: flex; justify-content: center; gap: 8pt; }
.arch-row > div { text-align: center; flex: 1; }
.arch-row.split > div { flex: 1; }
.arch small { color: var(--olive); }
.arrow { text-align: center; color: var(--brand); margin: 3pt 0; }

hr { border: none; border-top: 0.5pt solid var(--border); margin: 20pt 0; }

@media screen {
  body { max-width: 900px; margin: 0 auto; padding: 32px; }
  .cover { height: auto; min-height: 720px; }
}


/* v2 additions */
body { hyphens: auto; }
figure.chapter-figure, figure {
  margin: 14pt 0 18pt 0;
  padding: 8pt 8pt 10pt 8pt;
  background: #faf9f5;
  border: 0.5pt solid #e8e6dc;
  border-radius: 12pt;
  break-inside: avoid;
}
figure img, img {
  display: block;
  max-width: 100%;
  height: auto;
  margin: 0 auto;
  border-radius: 8pt;
}
figcaption {
  color: #504e49;
  font-size: 8.6pt;
  line-height: 1.45;
  text-align: center;
  margin-top: 6pt;
}
h1 { string-set: chapter content(text); }
@page {
  @top-right {
    content: string(chapter);
    font-family: "Noto Serif CJK SC", "Source Han Serif SC", serif;
    font-size: 7.5pt;
    color: #8a887f;
  }
}
@page:first { @top-right { content: none; } }
.tip, .case, .warning {
  background: #faf9f5;
  border: 0.5pt solid #e8e6dc;
  border-left: 3pt solid #1B365D;
  border-radius: 8pt;
  padding: 10pt 14pt;
  margin: 10pt 0 12pt;
}
.warning { border-left-color: #8A2D36; }
.case { border-left-color: #476A52; }


/* final v3 manual TOC refinements */
nav#TOC .toc-sub { margin-left: 16pt; font-size: 9pt; color: var(--stone); }
nav#TOC span { color: var(--dark-warm); }
.chapter-figure { break-inside: avoid; }
.cover { page-break-after: always; }
nav#TOC { page-break-after: always; }


/* v3 reading rhythm and illustration refinements */
.cover { position: relative; overflow: hidden; justify-content: flex-start; }
.cover-art {
  display: block;
  width: 100%;
  max-height: 86mm;
  object-fit: cover;
  margin: 10pt 0 18pt 0;
  border-radius: 18pt;
  border: 0.5pt solid var(--border);
}
figure.art-figure {
  padding: 8pt 8pt 10pt 8pt;
  background: linear-gradient(140deg, #faf9f5 0%, #f5f4ed 64%, #eef2f7 100%);
  border: 0.7pt solid #e8e6dc;
  border-radius: 16pt;
  margin: 18pt 0 20pt 0;
}
figure.art-figure img { border-radius: 12pt; }
figure.art-figure figcaption::before { content: "✦ "; color: var(--brand); }
nav#TOC li { margin: 5pt 0; }
nav#TOC .toc-sub { margin-left: 18pt; font-size: 9.2pt; color: var(--stone); }


/* v4 publication enhancements */
.copyright-page {
  background: var(--ivory);
  border: 0.5pt solid var(--border);
  border-radius: 12pt;
  padding: 18pt 22pt;
  page-break-after: always;
}
.copyright-page table { font-size: 9.2pt; margin-top: 8pt; }
.copyright-page h2 { margin-top: 18pt; }
.copyright-page p { font-size: 9.6pt; color: var(--dark-warm); }
#TOC + .notice { margin-top: 0; }


/* v4.1 compact copyright and notice flow */
h1 + .copyright-page { margin-top: -8pt; }
.copyright-page { padding: 10pt 14pt; font-size: 8.5pt; line-height: 1.36; page-break-inside: avoid; }
.copyright-page table { font-size: 8.1pt; margin: 0 0 6pt 0; }
.copyright-page th, .copyright-page td { padding: 3pt 5pt; }
.copyright-page h2 { font-size: 10.6pt; margin: 8pt 0 3pt 0; padding-left: 6pt; }
.copyright-page p { font-size: 8.3pt; line-height: 1.36; margin: 0 0 6pt 0; }
h1 + .notice { margin-top: 0; }
