@font-face { font-family: 'Computer Modern'; src: url('/assets/cmr10.ttf') format('truetype'); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: 'Computer Modern'; src: url('/assets/cmb10.ttf') format('truetype'); font-style: normal; font-weight: 700; font-display: swap; }
@font-face { font-family: 'Computer Modern'; src: url('/assets/cmti10.ttf') format('truetype'); font-style: italic; font-weight: 400; font-display: swap; }
@font-face { font-family: 'Paper Mono'; src: url('/assets/mono.ttf') format('truetype'); font-weight: 400; font-display: swap; }
@font-face { font-family: 'Paper Mono'; src: url('/assets/mono-bold.ttf') format('truetype'); font-weight: 700; font-display: swap; }
:root {
  color-scheme: light;
  --paper: #fafafa;
  --ink: #191919;
  --secondary-ink: #555555;
  --rule: #bdbdbd;
  --control-paper: #eeeeee;
  --backdrop: #00000099;
  --space-1: .25rem;
  --space-2: .5rem;
  --space-3: .75rem;
  --space-4: 1rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --type-small: .8rem;
  --type-note: .9rem;
  --type-body: 1.1875rem;
  --type-section: 1.4rem;
  --type-title: 2.75rem;
  --rule-width: 1px;
  --focus-width: 2px;
  --paper-width: 67rem;
  --measure: 45rem;
  --control-height: 2.5rem;
}
:root[data-theme='black'] { color-scheme: dark; --paper: #151515; --ink: #eeeeee; --secondary-ink: #bbbbbb; --rule: #626262; --control-paper: #292929; }
* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { background: var(--paper); color: var(--ink); scroll-padding-top: var(--space-6); }
body { margin: 0; font-family: 'Computer Modern', 'Latin Modern Roman', 'Times New Roman', serif; font-size: var(--type-body); line-height: 1.5; }
a { color: inherit; text-decoration-thickness: var(--rule-width); text-underline-offset: .16em; }
a:hover { text-decoration-thickness: var(--focus-width); }
:focus-visible { outline: var(--focus-width) solid var(--ink); outline-offset: var(--space-1); }
button, input, textarea { font: inherit; color: inherit; }
button { min-height: var(--control-height); padding: var(--space-2) var(--space-3); border: var(--rule-width) solid var(--rule); border-radius: 0; background: var(--paper); cursor: pointer; }
button:hover { background: var(--control-paper); border-color: var(--ink); }
button:disabled { cursor: wait; color: var(--secondary-ink); }
button[aria-pressed='true'] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.skip-link { position: absolute; top: var(--space-2); left: var(--space-4); padding: var(--space-2); background: var(--paper); transform: translateY(-200%); z-index: 2; }
.skip-link:focus { transform: none; }
.toolbar { max-width: var(--paper-width); margin-inline: auto; padding: var(--space-4) var(--space-8); border-bottom: var(--rule-width) solid var(--rule); display: flex; justify-content: space-between; align-items: center; gap: var(--space-4); font-family: 'Paper Mono', monospace; font-size: var(--type-small); }
.document-mark { text-decoration: none; }
.document-mark span { color: var(--secondary-ink); }
.document-tools { display: flex; align-items: center; gap: var(--space-4); }
.document-tools > a { display: inline-flex; align-items: center; min-height: var(--control-height); }
.document-tools > button { padding-inline: var(--space-2); border-color: transparent; }
.theme-choices { display: flex; margin-left: var(--space-2); }
.theme-choices button + button { border-left: 0; }
.paper { max-width: var(--paper-width); margin-inline: auto; padding: var(--space-16) var(--space-8) var(--space-8); }
.title-block { text-align: center; max-width: var(--measure); margin: 0 auto var(--space-12); }
.document-type { font-variant: small-caps; letter-spacing: .08em; margin: 0 0 var(--space-6); color: var(--secondary-ink); }
h1 { font-size: var(--type-title); font-weight: 400; line-height: 1.12; text-wrap: balance; margin: 0 0 var(--space-8); }
.author { font-size: var(--type-section); margin: 0 0 var(--space-2); }
.qualification, address { font-size: var(--type-note); margin: var(--space-1) 0; }
address { font-style: normal; }
address span { margin-inline: var(--space-2); }
.revision { font-size: var(--type-small); margin: var(--space-6) 0 0; color: var(--secondary-ink); }
.abstract { max-width: var(--measure); margin: 0 auto var(--space-8); }
.abstract h2 { text-align: center; font-size: var(--type-body); margin: 0 0 var(--space-2); }
p { margin: 0 0 var(--space-4); }
.abstract > p { text-align: justify; hyphens: auto; }
.keywords { font-size: var(--type-note); }
.contents { display: flex; justify-content: center; flex-wrap: wrap; column-gap: var(--space-6); row-gap: var(--space-2); padding: var(--space-4) 0; margin-bottom: var(--space-8); border-block: var(--rule-width) solid var(--rule); font-size: var(--type-small); }
.contents a { text-decoration: none; }
.contents a:hover { text-decoration: underline; }
.paper-columns { columns: 2; column-gap: var(--space-12); }
.paper-columns h2 { font-size: var(--type-section); line-height: 1.25; margin: var(--space-6) 0 var(--space-3); break-after: avoid; }
.paper-columns > section:first-child > h2 { margin-top: 0; }
.section-number { margin-right: var(--space-2); }
.paper-columns p { text-align: justify; hyphens: auto; orphans: 3; widows: 3; }
.paper-columns section { display: flow-root; }
h3 { font-size: var(--type-body); line-height: 1.3; margin: var(--space-6) 0 var(--space-1); break-after: avoid; }
.project { break-inside: avoid; }
.project-meta { font-style: italic; font-size: var(--type-note); color: var(--secondary-ink); margin-bottom: var(--space-2); }
.project-meta span { margin-inline: var(--space-1); }
.citation { font-size: var(--type-small); white-space: nowrap; text-decoration: none; }
.citation:hover { text-decoration: underline; }
.scope-note { color: var(--secondary-ink); font-size: var(--type-note); }
.correspondence { margin: 0 0 var(--space-4); font-size: var(--type-note); }
.correspondence > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); gap: var(--space-3); padding-block: var(--space-2); border-bottom: var(--rule-width) solid var(--rule); break-inside: avoid; }
.correspondence dt { font-weight: 700; }
.correspondence dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.channel-note { display: block; font-weight: 400; font-size: var(--type-small); color: var(--secondary-ink); }
.references { font-size: var(--type-note); }
.references ol { padding: 0; margin: 0; list-style: none; }
.references li { position: relative; padding-left: var(--space-8); margin-bottom: var(--space-4); break-inside: avoid; }
.reference-number { position: absolute; left: 0; }
.reference-url { display: block; color: var(--secondary-ink); font-size: var(--type-small); overflow-wrap: anywhere; }
code { font-family: 'Paper Mono', monospace; font-size: .78em; overflow-wrap: anywhere; }
abbr[title] { text-decoration: none; }
.paper-footer { border-top: var(--rule-width) solid var(--rule); margin-top: var(--space-12); padding-top: var(--space-6); font-size: var(--type-note); }
.machine-access { max-width: var(--measure); }
.machine-access h2, .wechat-contact h2 { font-size: var(--type-section); line-height: 1.25; margin: 0 0 var(--space-3); }
.build-details { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-2) var(--space-4); margin-top: var(--space-6); padding-top: var(--space-4); border-top: var(--rule-width) solid var(--rule); font-size: var(--type-small); color: var(--secondary-ink); overflow-wrap: anywhere; }
.wechat-contact { max-width: var(--measure); margin-inline: auto; }
.wechat-contact label { display: block; font-weight: 700; margin: var(--space-6) 0 var(--space-2); }
.wechat-contact input { display: block; width: 100%; min-width: 0; padding: var(--space-3); margin-bottom: var(--space-3); border: var(--rule-width) solid var(--rule); border-radius: 0; background: var(--control-paper); font-family: 'Paper Mono', monospace; font-size: var(--type-body); }
.wechat-contact ol { padding-left: var(--space-6); margin: 0 0 var(--space-4); }
.wechat-contact li { padding-left: var(--space-1); margin-bottom: var(--space-2); }
dialog { max-width: min(38rem, calc(100% - var(--space-8))); max-height: calc(100% - var(--space-8)); padding: var(--space-8); border: var(--rule-width) solid var(--rule); background: var(--paper); color: var(--ink); overflow: auto; }
dialog::backdrop { background: var(--backdrop); }
.dialog-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-4); }
.dialog-heading h2 { font-size: var(--type-section); line-height: 1.25; margin: 0; }
.dialog-heading form { margin: 0; }
dialog label { display: block; margin: var(--space-6) 0 var(--space-2); font-weight: 700; }
dialog input, dialog textarea { display: block; width: 100%; min-width: 0; padding: var(--space-3); margin-bottom: var(--space-3); border: var(--rule-width) solid var(--rule); border-radius: 0; background: var(--control-paper); font-family: 'Paper Mono', monospace; font-size: var(--type-small); }
dialog textarea { resize: vertical; line-height: 1.5; }
.copy-feedback { margin-top: var(--space-4); font-size: var(--type-note); min-height: 3em; }
.dialog-note { margin-bottom: 0; font-size: var(--type-small); color: var(--secondary-ink); }
:target { scroll-margin-top: var(--space-6); }
@media (max-width: 48rem) {
  :root { --type-title: 2.25rem; }
  .toolbar { padding-inline: var(--space-4); flex-wrap: wrap; gap: var(--space-2); }
  .document-tools { gap: var(--space-3); }
  .paper { padding: var(--space-8) var(--space-6); }
  .paper-columns { columns: 1; }
  .title-block { margin-bottom: var(--space-8); }
  .paper-columns p, .abstract > p { text-align: left; }
  .contents { justify-content: flex-start; }
  .build-details { flex-direction: column; gap: var(--space-2); }
  dialog { padding: var(--space-6); }
}
@media (max-width: 24rem) {
  .paper { padding-inline: var(--space-4); }
  .toolbar { display: block; }
  .document-mark { display: block; margin-bottom: var(--space-2); }
  .document-tools { justify-content: space-between; gap: var(--space-2); }
  .theme-choices { margin-left: 0; }
}
@page { size: A4; margin: 16mm; }
@media print {
  :root, :root[data-theme='black'] { color-scheme: light; --paper: #fafafa; --ink: #191919; --secondary-ink: #444444; --rule: #aaaaaa; --type-body: 10.5pt; --type-small: 8pt; --type-note: 9.5pt; --type-section: 12pt; --type-title: 25pt; }
  html, body { background: var(--paper); color: var(--ink); }
  .toolbar, .skip-link, .contents, dialog, .wechat-contact button { display: none !important; }
  .paper { padding: 0; max-width: none; }
  .title-block { margin-bottom: var(--space-6); }
  .document-type { margin-bottom: var(--space-3); }
  h1 { margin-bottom: var(--space-4); }
  .revision { margin-top: var(--space-3); }
  .abstract { margin-bottom: var(--space-6); }
  .paper-columns { columns: 2; column-gap: var(--space-6); }
  .paper-columns h2, h3 { break-after: avoid; }
  .project, .references li { break-inside: avoid; }
  a { text-decoration: none; }
  .paper-footer { margin-top: var(--space-6); }
}
