:root{
  --paper:#15181D; --ink:#E8EBEF; --muted:#9AA3AE; --rule:#2A3038; --soft:#1C2027; --accent:#8DB0E8;
  --sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC","Helvetica Neue",Arial,sans-serif;
  --wrap:1080px; --text:40rem;
  color-scheme:dark;
}
@media (prefers-color-scheme: light){ :root:not([data-theme="dark"]){ --paper:#F6F7F8; --ink:#17202A; --muted:#5B6572; --rule:#D6DBE1; --soft:#ECEFF2; --accent:#1F4E8C; color-scheme:light; } }
:root[data-theme="light"]{ --paper:#F6F7F8; --ink:#17202A; --muted:#5B6572; --rule:#D6DBE1; --soft:#ECEFF2; --accent:#1F4E8C; color-scheme:light; }
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.85}
a{color:inherit;text-decoration-color:var(--rule);text-underline-offset:.25em;text-decoration-thickness:1px}
a:hover{text-decoration-color:var(--accent);color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
@media (max-width:600px){.wrap{padding:0 16px}}

/* logo: black disc on light theme, grey disc on dark theme */
.lg{width:36px;height:36px;flex:none}
.lg-black{display:none}
@media (prefers-color-scheme: light){ :root:not([data-theme="dark"]) .lg-black{display:block} :root:not([data-theme="dark"]) .lg-grey{display:none} }
:root[data-theme="light"] .lg-black{display:block}
:root[data-theme="light"] .lg-grey{display:none}

/* header */
.top{border-bottom:1px solid var(--rule)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px 24px;padding-top:18px;padding-bottom:16px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;text-decoration:none;letter-spacing:.01em}
.right{display:flex;align-items:center;gap:22px}
.nav{display:flex;gap:24px;font-size:15px}
.nav a{text-decoration:none;color:var(--muted)}
.nav a[aria-current]{color:var(--ink);box-shadow:inset 0 -2px 0 var(--accent)}
.theme{appearance:none;border:1px solid var(--rule);background:transparent;color:var(--muted);width:34px;height:34px;border-radius:50%;display:grid;place-items:center;cursor:pointer;padding:0}
.theme:hover{color:var(--ink);border-color:var(--muted)}
.theme svg{width:16px;height:16px}
.theme .sun{display:none}
@media (prefers-color-scheme: light){ :root:not([data-theme="dark"]) .theme .sun{display:block} :root:not([data-theme="dark"]) .theme .moon{display:none} }
:root[data-theme="light"] .theme .sun{display:block}
:root[data-theme="light"] .theme .moon{display:none}
@media (max-width:600px){.nav{gap:16px}.right{gap:14px;width:100%;justify-content:space-between}}

/* hero */
.hero{padding:16vh 0 13vh}
.hero h1{font-weight:700;font-size:clamp(36px,6.6vw,84px);line-height:1.25;letter-spacing:.06em;margin:0}
.hero .en{margin:1.4em 0 0;font-size:clamp(14px,1.5vw,17px);color:var(--muted);letter-spacing:.08em;font-weight:400}
.hero .en::before{content:"";display:inline-block;width:40px;height:1px;background:var(--muted);vertical-align:middle;margin-right:14px}

.intro{display:grid;grid-template-columns:1fr 2fr;gap:48px;padding:56px 0 88px;border-top:1px solid var(--rule)}
.intro p{margin:0;font-size:19px;max-width:var(--text)}
.intro .who{font-size:15px;color:var(--muted);line-height:1.7}
.intro .who b{color:var(--ink);font-weight:600}

/* sections: label on the left, content on the right */
section.s{display:grid;grid-template-columns:1fr 2fr;gap:48px;padding:72px 0;border-top:1px solid var(--rule)}
.s > h2{font-weight:700;font-size:27px;margin:0;line-height:1.4}
.s > h2 small{display:block;font-weight:400;font-size:14px;color:var(--muted);margin-top:.3em}
.s .body > :first-child{margin-top:0}
@media (max-width:820px){ section.s,.intro{grid-template-columns:1fr;gap:20px} .intro{padding:40px 0 64px} section.s{padding:56px 0} }

.pair{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.pair h3,.trio h3{font-size:21px;font-weight:700;margin:0 0 .4em}
.pair p,.trio p{margin:0 0 .8em;color:var(--muted)}
.more{font-size:15px;color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor}
.more:hover{border-bottom-width:2px}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:28px}
.trio p{font-size:15.5px}
@media (max-width:820px){.pair,.trio{grid-template-columns:1fr;gap:28px}}

blockquote.claim{margin:0 0 1.2em;font-size:clamp(24px,3vw,34px);line-height:1.5;font-weight:700;letter-spacing:.03em}
.lead{font-size:18px;max-width:var(--text)}
ol.layers{list-style:none;padding:0;margin:32px 0;counter-reset:l;display:grid;grid-template-columns:repeat(3,1fr);border-top:2px solid var(--ink)}
ol.layers li{counter-increment:l;padding:18px 20px 0 0}
ol.layers li::before{content:"第" counter(l,cjk-decimal) "层";display:block;font-size:13px;color:var(--muted)}
ol.layers b{display:block;font-size:19px;font-weight:600;margin:.2em 0 .3em}
ol.layers span{font-size:15px;color:var(--muted);display:block;line-height:1.7}
@media (max-width:820px){ol.layers{grid-template-columns:1fr} ol.layers li{padding:16px 0;border-bottom:1px solid var(--rule)}}

ul.posts{list-style:none;margin:0;padding:0}
ul.posts li{display:flex;gap:24px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--rule)}
ul.posts li:first-child{padding-top:0}
ul.posts time{flex:0 0 7.5em;font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}
ul.posts a{font-size:18px;text-decoration:none}
ul.posts a:hover{text-decoration:underline}
@media (max-width:600px){ul.posts li{flex-direction:column;gap:0} ul.posts time{flex:none}}

.tags{display:flex;flex-wrap:wrap;gap:10px 28px;margin:0;padding:0;list-style:none;font-size:17px}

/* inner pages */
.page-head{padding:88px 0 56px}
.page-head .kicker{font-size:15px;color:var(--muted);margin:0 0 .6em;letter-spacing:.04em}
.page-head h1{font-weight:700;font-size:clamp(32px,5vw,54px);line-height:1.3;margin:0;letter-spacing:.03em}
.page-head h1.quote{font-family:Georgia,"Times New Roman",Times,serif;font-weight:400;font-size:clamp(30px,4.4vw,54px);line-height:1.22;letter-spacing:-.01em;max-width:19em}
.page-head p.sub{font-size:19px;color:var(--muted);max-width:36em;margin:.9em 0 0}
.page-head .meta{font-size:15px;color:var(--muted);margin:1.6em 0 0;padding-top:1em;border-top:1px solid var(--rule);max-width:40em}

/* long-form text: articles and course outlines */
.prose{max-width:var(--text);margin:0 auto;padding:72px 0 96px}
.doc{max-width:46rem;padding:0 0 96px}
.prose h1{font-weight:700;font-size:clamp(28px,4.2vw,40px);line-height:1.4;margin:0 0 .8em}
.prose p,.doc p{margin:0 0 1.3em}
.prose p{text-align:justify}
.prose h2,.prose h3,.prose h4,.doc h2,.doc h3,.doc h4{font-weight:700;line-height:1.5;margin:2em 0 .6em}
.prose h2,.doc h2{font-size:28px}
.prose h3,.doc h3{font-size:21px}
.prose h4,.doc h4{font-size:19px}
.doc h2{padding-top:1.4em;border-top:1px solid var(--rule);margin-top:2.4em}
.doc > h2:first-child{border-top:0;padding-top:0;margin-top:0}
.prose blockquote,.doc blockquote{margin:1.6em 0;padding:0 0 0 1.2em;border-left:2px solid var(--accent);color:var(--ink)}
.prose hr,.doc hr{display:none}
.prose ul,.prose ol,.doc ul,.doc ol{padding-left:1.3em;margin:0 0 1.2em}
.doc li{margin:.35em 0}
.doc li strong{font-weight:600}
.tbl{overflow-x:auto;margin:0 0 1.6em}
.doc table{border-collapse:collapse;width:100%;font-size:15px;line-height:1.65}
.doc th{text-align:left;font-weight:600;color:var(--muted);border-bottom:1px solid var(--muted);padding:8px 16px 8px 0;white-space:nowrap}
.doc td{border-bottom:1px solid var(--rule);padding:10px 16px 10px 0;vertical-align:top}
.doc td:first-child{min-width:9em}
.doc td a{font-weight:600;text-decoration:none;color:var(--ink)}
.doc td a:hover{color:var(--accent);text-decoration:underline}
.byline{display:flex;align-items:center;gap:12px;margin:0 0 3em}
.avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;flex:none}
.byline b{display:block;font-weight:600;font-size:15px;line-height:1.3}
.byline span{display:block;font-size:13px;color:var(--muted);line-height:1.4}
.back{display:inline-block;margin-top:2em;font-size:15px;color:var(--muted)}
.contact{margin-top:3em;padding-top:1.4em;border-top:1px solid var(--rule);color:var(--muted)}

.portrait{width:100%;max-width:260px;height:auto;border-radius:6px;display:block}

.foot{border-top:1px solid var(--rule);margin-top:24px}
.foot .wrap{display:flex;align-items:center;gap:10px;padding-top:28px;padding-bottom:44px;font-size:15px;font-weight:600}
.foot .lg{width:32px;height:32px}
