:root{--paper: #fbf9f4;--paper-2: #f4efe4;--ink: #1d1b18;--ink-2: #3a3631;--muted: #6a645a;--rule: #e0d8c8;--accent: #7a2a26;--accent-soft: #f3e6e1;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Noto Serif SC", "Source Han Serif SC", "Songti SC", STSong, serif;--sans: system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--wrap: 54rem;--measure: 40rem}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font:18px/1.7 var(--serif);font-kerning:normal;border-top:4px solid var(--accent)}html:lang(zh-CN) body{line-height:1.9;letter-spacing:.015em}html:lang(zh-CN) :is(h1,h2,h3,.brand-name,.feature-title){font-family:var(--sans);letter-spacing:.02em}img{max-width:100%;height:auto}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 1.25rem}.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.5rem 1rem;z-index:10}.skip:focus{left:0}.site-header{border-bottom:1px solid var(--rule)}.header-inner{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 2rem;padding-top:1.4rem;padding-bottom:1.1rem}.brand{text-decoration:none;color:var(--ink);display:flex;gap:.6rem;align-items:baseline}.brand-name{font-size:1.3rem;font-weight:600;letter-spacing:.01em}.brand-alt{color:var(--muted);font-size:1rem}nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.2rem 1.15rem;font:15px/1.7 var(--sans)}nav a{color:var(--ink-2);text-decoration:none;padding-bottom:2px;border-bottom:1px solid transparent}nav a:hover{color:var(--accent)}nav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.lang-switch{border:1px solid var(--rule)!important;border-radius:3px;padding:0 .5rem}main.wrap{padding-top:3rem;padding-bottom:4rem}h1,h2,h3{font-weight:600;line-height:1.28;color:var(--ink)}h1{font-size:2.3rem;margin:0 0 .5rem;letter-spacing:-.005em}h2{font-size:1.4rem;margin:3.25rem 0 1.25rem}main>h2,section>h2,.related>h2{display:flex;align-items:center;gap:1rem}main>h2:after,section>h2:after,.related>h2:after{content:"";flex:1;height:1px;background:var(--rule)}h3{font-size:1.1rem;margin:0 0 .25rem}p{margin:0 0 1rem}.lede{font-size:1.15rem;color:var(--ink-2)}.muted{color:var(--muted)}.meta{font:14.5px/1.6 var(--sans);color:var(--muted)}.kicker{font:15px/1.6 var(--sans);color:var(--muted);margin:0 0 2rem}.kicker strong{color:var(--ink);font-weight:600}.label,.eyebrow{font:600 12.5px/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin:0 0 .5rem}html:lang(zh-CN) :is(.label,.eyebrow){letter-spacing:.08em}.eyebrow{display:flex;flex-wrap:wrap;gap:.25rem .75rem}.eyebrow time{color:var(--muted);font-weight:400;letter-spacing:.04em}.note{font:14.5px/1.65 var(--sans);color:var(--muted);border-left:3px solid var(--rule);padding-left:.85rem;margin:0 0 1.25rem;max-width:var(--measure)}.cta{font:15px/1.6 var(--sans);display:flex;gap:1.75rem;flex-wrap:wrap;margin-top:1.75rem}.cta a{text-decoration:none;font-weight:500}.cta a:hover{text-decoration:underline}.measure{max-width:var(--measure)}.page-head{margin-bottom:2rem;padding-bottom:1.25rem;border-bottom:1px solid var(--rule)}.page-head .lede,.page-head p{max-width:var(--measure);margin-bottom:0}.hero{display:grid;gap:2.25rem;align-items:center;padding-bottom:2.5rem;border-bottom:1px solid var(--rule)}.hero.has-photo{grid-template-columns:13rem 1fr}.portrait{width:13rem;aspect-ratio:4 / 5;object-fit:cover;border-radius:2px;box-shadow:0 1px 0 var(--rule),0 12px 30px -18px #28190f73}.hero h1{font-size:2.6rem;margin-bottom:.35rem}.name-alt{font-weight:400;font-size:.6em;color:var(--muted);margin-left:.25rem}.role{font:600 1.02rem/1.5 var(--sans);color:var(--accent);margin:0 0 .2rem}.affil{font:15px/1.6 var(--sans);color:var(--muted);margin:0 0 1.25rem}.hero .lede{margin:0;max-width:36rem}.feature{margin-top:2.75rem;background:var(--paper-2);border-left:3px solid var(--accent);padding:1.5rem 1.75rem 1rem}.feature-title{font-size:1.3rem;margin:0 0 .4rem;display:block}.feature-title:after{display:none}.feature p:last-child{margin-bottom:.5rem}.interest-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}.interest-grid li{background:var(--paper);padding:.9rem 1.1rem}.interest-grid li:last-child:nth-child(odd){grid-column:1 / -1}.interest-grid strong{display:block;font-weight:600}.interest-grid span{display:block;color:var(--muted);font-size:.93rem;line-height:1.55;margin-top:.15rem}.timeline{list-style:none;margin:0;padding:0}.timeline>li{display:grid;grid-template-columns:11rem 1fr;gap:1.5rem;padding:1rem 0;border-top:1px solid var(--rule)}.timeline>li:first-child{border-top:0;padding-top:.25rem}.timeline .when{font:14px/1.7 var(--sans);color:var(--muted);padding-top:.1rem}.timeline p{margin:.15rem 0 0}.dl{display:grid;grid-template-columns:11rem 1fr;gap:.45rem 1.5rem;margin:0}.dl dt{color:var(--muted);font:15px/1.7 var(--sans)}.dl dd{margin:0}.plain-list{margin:0;padding-left:1.1rem}.plain-list li{margin-bottom:.3rem}.entries{list-style:none;margin:0;padding:0}.entries>li{padding:1.1rem 0;border-top:1px solid var(--rule)}.entries>li:first-child{border-top:0;padding-top:.25rem}.entry-head{display:flex;justify-content:space-between;gap:.25rem 1rem;flex-wrap:wrap;align-items:baseline}.entry-head .meta{white-space:nowrap}.entries p{margin:.25rem 0 0}.badge{display:inline-block;font:12.5px/1.5 var(--sans);letter-spacing:.02em;padding:.05rem .55rem;border-radius:2px;background:var(--paper-2);color:var(--muted);border:1px solid var(--rule);text-transform:none}.badge.published{background:#e7efe3;color:#2f5a2a;border-color:#c4d6bd}.badge.draft{background:#fff3cd;color:#7a5a00;border-color:#ecd98b}.tags{list-style:none;padding:0;margin:.75rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem}.tags li{font:13px/1.5 var(--sans);background:var(--paper-2);padding:.1rem .55rem;border-radius:2px;color:var(--muted)}.projects{counter-reset:proj;display:grid;gap:1.25rem}.project{counter-increment:proj;position:relative;padding:1.5rem 1.75rem 1.4rem 4.25rem;background:#fff;border:1px solid var(--rule);border-radius:2px}.project:before{content:counter(proj,decimal-leading-zero);position:absolute;left:1.5rem;top:1.45rem;font:600 1rem/1.4 var(--sans);color:var(--accent)}.project h2{margin:0 0 .5rem;font-size:1.22rem;display:block}.project h2:after{display:none}.project p{margin:.5rem 0 0}.card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.75rem 1.5rem}.card-grid.three{grid-template-columns:repeat(3,1fr)}.card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--rule);border-radius:2px;overflow:hidden}.card-cover{display:block;aspect-ratio:3 / 2;overflow:hidden;background:var(--paper-2)}.card-cover img{width:100%;height:100%;object-fit:cover;display:block}.card-body{padding:1.1rem 1.25rem 1.2rem}.card h3{font-size:1.12rem;line-height:1.35;margin:0 0 .45rem}.card h3 a{color:var(--ink);text-decoration:none}.card h3 a:hover{color:var(--accent);text-decoration:underline}.excerpt{font-size:.95rem;line-height:1.6;color:var(--muted);margin:0}.card.compact .card-body{padding:1rem 1.1rem}.article{max-width:var(--measure);margin:0 auto}.back{font:14.5px/1.6 var(--sans);margin:0 0 2rem}.back a{text-decoration:none}main>.back{max-width:var(--measure);margin:2.5rem auto 0}.article-head{margin-bottom:2rem}.article-head h1{font-size:2.35rem;line-height:1.2}.standfirst{font-size:1.2rem;line-height:1.6;color:var(--ink-2);margin-top:.75rem}.draft-banner{font:600 14px/1.5 var(--sans);background:#fff3cd;border:1px solid #ecd98b;color:#7a5a00;padding:.5rem .85rem}.cover{margin:0 0 2.25rem}.cover img{width:100%;display:block;border-radius:2px}figcaption{font:14px/1.55 var(--sans);color:var(--muted);margin-top:.55rem}.prose{font-size:1.06rem}.prose h2{font-size:1.45rem;margin:2.5rem 0 .9rem;display:block}.prose h2:after{display:none}.prose h3{font-size:1.18rem;margin:2rem 0 .6rem}.prose ul,.prose ol{padding-left:1.4rem;margin:0 0 1.1rem}.prose li{margin-bottom:.35rem}.prose blockquote{margin:1.75rem 0;padding:.25rem 0 .25rem 1.4rem;border-left:3px solid var(--accent);color:var(--ink-2);font-style:italic}html:lang(zh-CN) .prose blockquote{font-style:normal}.prose blockquote p:last-child{margin-bottom:0}.prose figure,.prose>p>img{margin:2rem 0}.prose figure img,.prose img{display:block;border-radius:2px}.prose hr{border:0;text-align:center;margin:2.5rem 0}.prose hr:before{content:"· · ·";color:var(--muted);letter-spacing:.5em}.prose code{font-size:.9em;background:var(--paper-2);padding:.05rem .3rem;border-radius:2px}.prose table{border-collapse:collapse;width:100%;font-size:.95rem;margin:0 0 1.25rem}.prose th,.prose td{border-bottom:1px solid var(--rule);padding:.4rem .5rem;text-align:left}.gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem;margin:2.25rem 0 0}.gallery figure{margin:0}.gallery img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;border-radius:2px}.related{max-width:var(--wrap);margin:3.5rem auto 0}.site-footer{border-top:1px solid var(--rule);background:var(--paper-2);font:14px/1.6 var(--sans);color:var(--muted);padding:1.75rem 0 2.25rem}.footer-inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem}.footer-inner p{margin:0}.footer-name{color:var(--ink);font-weight:600}@media(max-width:760px){.card-grid.three{grid-template-columns:1fr 1fr}.timeline>li,.dl{grid-template-columns:8.5rem 1fr;gap:1rem}}@media(max-width:600px){body{font-size:17px}main.wrap{padding-top:2rem}h1,.article-head h1{font-size:1.85rem}.hero{gap:1.5rem}.hero.has-photo{grid-template-columns:1fr}.portrait{width:9.5rem}.hero h1{font-size:2rem}.interest-grid,.card-grid,.card-grid.three,.gallery{grid-template-columns:1fr}.timeline>li,.dl{grid-template-columns:1fr;gap:.1rem}.dl dd{margin-bottom:.6rem}.entry-head .meta{white-space:normal}.feature{padding:1.25rem 1.15rem .75rem}.project{padding:1.25rem 1.15rem 1.15rem 3.25rem}.project:before{left:1.05rem;top:1.25rem}nav ul{gap:.1rem .9rem}}
