:root{color-scheme:dark;background:#000;color:#ccc9c3;font-family:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}html{scrollbar-width:none;scroll-padding-top:110px}::-webkit-scrollbar{display:none}body{margin:0;overflow:hidden;touch-action:pinch-zoom}body.reading{overflow-y:auto;touch-action:pan-y pinch-zoom}a{color:inherit;text-decoration:none}a:hover{color:#fff}a:focus-visible,button:focus-visible{outline:1px solid #c4c8d2;outline-offset:7px}button{font:inherit}[hidden]{display:none!important}.masthead{height:94px;padding:0 6vw;position:fixed;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:space-between;z-index:10;background:linear-gradient(#000 40%,#0000);gap:20px}.brand{font:20px Georgia,serif;letter-spacing:-.04em;color:#efeee9}.brand span{display:block;font:10px system-ui;letter-spacing:.2em;color:#777;margin-top:7px}nav{display:flex;gap:32px;font-size:13px;color:#929292}nav a{padding:12px 0;position:relative}nav a[aria-current=page]{color:#efeee9}nav a[aria-current=page]:after{content:"";position:absolute;bottom:3px;left:40%;width:4px;height:4px;border-radius:50%;background:#bbb}.hero{height:100svh;min-height:500px;position:relative}#stage{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}.fallback{position:absolute;inset:0;display:grid;place-items:center;font:12px Georgia;letter-spacing:.2em;color:#9ba5b8}.ready .fallback{display:none}.scroll-hint{position:absolute;bottom:45px;left:50%;transform:translateX(-50%);border:0;background:none;color:#989898;font-size:12px;letter-spacing:.18em;padding:16px;cursor:pointer}.scroll-hint span{display:block;margin-top:12px;animation:nudge 2s ease-in-out infinite}@keyframes nudge{50%{translate:0 5px;opacity:.4}}.hero-caption{position:absolute;top:66%;width:100%;text-align:center;font-size:12px;letter-spacing:.15em;color:#888;opacity:0;visibility:hidden;transition:opacity .5s}.hero-caption a{display:block;margin-top:32px;color:#bababa}.title-ready .hero-caption{opacity:1;visibility:visible}.prose{width:min(660px,calc(100% - 44px));margin:0 auto;padding:80px 0 30px;font-size:17px;line-height:2.05;letter-spacing:.025em}.article-meta{font-size:11px;letter-spacing:.08em;color:#888;display:flex;gap:15px;flex-wrap:wrap}.prose h1{font:400 clamp(30px,4vw,46px)/1.5 "Songti SC",SimSun,serif;color:#e7e5df;margin:26px 0}.lead{font-size:20px;line-height:1.9;color:#acaaa5}.hairline{height:1px;background:#252525;margin:45px 0}.prose p{margin:0 0 27px}.prose h2{font-size:22px;font-weight:500;color:#e1dfda;margin:52px 0 20px}.prose blockquote{margin:42px 0;padding:4px 0 4px 26px;border-left:1px solid #7b7d83;color:#d7d7d3;font-family:"Songti SC",serif;font-size:23px;line-height:1.9}.source-note{margin-top:55px;padding-top:20px;border-top:1px solid #242424;color:#777;font-size:12px;line-height:1.8}.article-end{display:flex;flex-direction:column;gap:18px;margin:50px 0 80px;font-size:14px}.article-end>span{color:#666;text-align:center;margin-bottom:40px}.article-end a{padding:15px 0;border-bottom:1px solid #222}.page{width:min(960px,calc(100% - 48px));margin:0 auto;min-height:calc(100svh - 130px);padding:175px 0 90px}.eyebrow{font-size:11px;letter-spacing:.22em;color:#737373;margin-bottom:23px}.page>h1{font-family:"Songti SC",SimSun,serif;font-size:clamp(36px,5vw,60px);font-weight:400;line-height:1.45;color:#e6e4df;margin:0}.count{font:12px system-ui;color:#777;vertical-align:super;margin-left:20px}.page-intro{font-size:15px;color:#828282;margin:25px 0 70px}.archive-group{display:grid;grid-template-columns:160px 1fr;gap:40px}.month{font:30px Georgia;color:#a5a5a5;padding-top:23px}.month span{display:block;font:12px system-ui;color:#777;margin-top:12px}.entry{display:grid;grid-template-columns:46px 1fr 20px;gap:20px;padding:25px 0 30px;border-top:1px solid #242424}.entry time{font-size:12px;color:#777;padding-top:5px}.entry h2{font-size:20px;font-weight:400;color:#d5d5d0;margin:0 0 12px}.entry p{font-size:14px;color:#8c8c8c;margin:0 0 15px;line-height:1.8}.entry small{font-size:11px;color:#666}.entry>span{color:#666}.entry:hover h2,.entry:hover>span{color:#fff}.about{max-width:660px}.about>p{font-size:17px;line-height:2;color:#a8a8a3;margin:32px 0}.about>.lead{font-size:21px;margin-top:46px}.text-link,.back-link{font-size:13px;color:#aaa;display:inline-block;margin-top:24px}#post-view{max-width:740px}#post-content{width:100%;padding-top:35px}footer{width:88%;margin:0 auto;border-top:1px solid #222;display:flex;justify-content:space-between;gap:20px;padding:34px 0 40px;color:#6f6f6f;font-size:11px}footer>a:first-child{font:15px Georgia}body:not(.reading) footer{display:none}@media(max-width:600px){.masthead{height:80px;padding:0 23px}.brand{font-size:18px}.brand span{font-size:9px}nav{gap:22px;font-size:12px}.hero{min-height:450px}.prose{padding-top:45px;font-size:16px;line-height:2}.prose h2{font-size:21px}.lead{font-size:18px}.prose blockquote{font-size:21px;padding-left:20px}.page{padding-top:140px}.archive-group{grid-template-columns:1fr;gap:25px}.month{font-size:24px}.month span{display:inline;margin-left:15px}.entry{gap:12px;grid-template-columns:40px 1fr 14px}.entry h2{font-size:18px}.page-intro{margin-bottom:40px}footer{flex-wrap:wrap}footer>span{display:none}.article-meta{gap:10px;font-size:10px}.hero-caption{top:65%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important;transition:none!important}}

/* Text rises out of darkness after the sculpture dissolves. */
.water-emerge #read>.article-meta,.water-emerge #read>h1,.water-emerge #read>.lead,.water-emerge #read>.hairline,.water-emerge #read>p:not(.lead){animation:water-rise 1.05s cubic-bezier(.16,.65,.25,1) both;will-change:opacity,filter,transform}
.water-emerge #read>h1{animation-delay:.07s}.water-emerge #read>.lead{animation-delay:.15s}.water-emerge #read>.hairline{animation-delay:.21s}.water-emerge #read>p:not(.lead){animation-delay:.25s}
@keyframes water-rise{0%{opacity:0;filter:blur(9px) brightness(.2);transform:translateY(22px) scaleY(.96)}45%{opacity:.5;filter:blur(3px) brightness(.65)}100%{opacity:1;filter:blur(0) brightness(1);transform:translateY(0) scaleY(1)}}

/* Intro and article occupy the same space, with overlapping transitions. */
#stage{position:fixed;inset:0;width:100%;height:100%;z-index:0;background:transparent}
main{position:relative;z-index:1}footer{position:relative;z-index:1}
body:not(.reading) .masthead{opacity:0;visibility:hidden;pointer-events:none}
.masthead{transition:opacity .65s ease}
body:not(.reading) #read{display:none}
body.reading .hero{display:none}
body.reading #read{padding-top:145px}
.water-emerge #read>*{animation:water-rise 1.2s cubic-bezier(.16,.65,.25,1) both}
.water-emerge #read>h1{animation-delay:.04s}.water-emerge #read>.lead{animation-delay:.08s}.water-emerge #read>p:not(.lead){animation-delay:.12s}
@media(max-width:600px){body.reading #read{padding-top:112px}}

body.reading.scroll-lock{overflow:hidden;touch-action:pinch-zoom}
body.reading #read{padding-top:110px}
#read>h1{margin:0 0 14px}
#read>.article-meta{margin-bottom:28px}
@media(max-width:600px){body.reading #read{padding-top:96px}}

/* Article pages must always remain natively scrollable after the intro gesture. */
body.reading{overflow:auto!important;overflow-y:auto!important;touch-action:pan-y pinch-zoom;overscroll-behavior-y:auto}
/* Quiet, centered archive. */
#archive-view{max-width:680px;text-align:center;padding-top:140px}
#archive-view .page-intro,#archive-view .eyebrow,#archive-view .count,#archive-view .entry p,#archive-view .entry small,#archive-view .entry>span{display:none}
#archive-view>h1{font-size:36px;margin-bottom:40px}
#archive-view .archive-group{display:block}
#archive-view .month{font:12px system-ui;letter-spacing:.18em;padding:0;margin-bottom:30px;color:#777}
#archive-view .month span{display:inline;font:inherit;margin-left:10px}
#archive-view .entry{display:block;padding:28px 10px;border-color:#1d1d1d}
#archive-view .entry time{display:block;font-size:11px;margin-bottom:12px}
#archive-view .entry h2{font-size:21px;margin:0;line-height:1.6}
.archive-particles{position:fixed;inset:0;width:100%;height:100%;z-index:8;pointer-events:none}
body.archive-shifting{overflow:hidden!important;touch-action:none}
.archive-shifting main{opacity:1}
.archive-shifting #today-view,.archive-shifting #post-view{visibility:hidden}
.archive-shifting #archive-view{opacity:1;filter:none;transform:none;transition:none}
.archive-shifting #archive-view>h1,.archive-shifting #archive-view .month,.archive-shifting #archive-view .entry{mask-image:var(--glyph-mask,linear-gradient(transparent,transparent));-webkit-mask-image:var(--glyph-mask,linear-gradient(transparent,transparent));}
.archive-shifting footer{opacity:var(--archive-ink,0);filter:blur(var(--archive-blur,10px));transition:none}
.archive-arrived .entries{animation:archive-settle .35s ease both}
@keyframes archive-settle{from{opacity:.45;filter:blur(1px)}to{opacity:1;filter:blur(0)}}
.article-end:after{content:'继续下滑 · 浏览往期';color:#777;font-size:12px;text-align:center;margin-top:20px;letter-spacing:.1em}
@media(max-width:600px){#archive-view{padding-top:115px}#archive-view>h1{font-size:30px}#archive-view .entry h2{font-size:19px}}

body.article-morph #read>*{animation:none!important;opacity:var(--article-ink,0);filter:none;transform:none;will-change:opacity}

/* Per-block handoff occurs only once its glyph particles have arrived. */
body.article-morph #read>*{opacity:1;filter:none;transform:none;mask-image:var(--glyph-mask,linear-gradient(transparent,transparent));-webkit-mask-image:var(--glyph-mask,linear-gradient(transparent,transparent));will-change:auto}

/* Classical editorial typography. */
:root{font-family:"Iowan Old Style","Baskerville","Palatino Linotype","Songti SC","STSong","SimSun",serif}
body,.brand,nav,.scroll-hint,.prose,.page,.entry,footer{font-family:inherit}
.brand{letter-spacing:-.035em}
.brand span,.article-meta,.eyebrow,.month small,.entry small{font-family:"Iowan Old Style","Baskerville","Palatino Linotype","Songti SC","STSong","SimSun",serif}
.prose h1,.prose h2,.page>h1,.entry h2{font-family:"Iowan Old Style","Baskerville","Palatino Linotype","Songti SC","STSong","SimSun",serif!important}
body,.brand,nav,.scroll-hint,.prose,.page,.entry,footer{font-family:"Iowan Old Style","Baskerville","Palatino Linotype","Songti SC","STSong","SimSun",serif!important}

/* News reports need a clearer reading hierarchy than short editorial essays. */
.prose.news-digest{font-family:"Iowan Old Style","Baskerville","Songti SC","STSong",SimSun,serif!important;font-size:18px;line-height:1.95;letter-spacing:.015em;color:#d4d0c8;max-width:700px}
.news-digest .lead{font-size:18px;line-height:1.85;color:#bbb9b3;margin:24px 0}
.news-digest h2{font-family:inherit!important;font-size:27px;line-height:1.65;font-weight:400;margin:0 0 32px;color:#eee8dd;scroll-margin-top:110px;overflow-wrap:anywhere}
.news-digest h3{font-family:system-ui,-apple-system,"PingFang SC",sans-serif;font-size:12px;line-height:1.6;font-weight:500;letter-spacing:.12em;color:#c1b397;margin:28px 0 12px}
.news-digest p{margin-bottom:18px;overflow-wrap:anywhere}
.digest-section{border-top:1px solid #303030;padding-top:34px;margin-top:44px}
.digest-toc{padding:0;background:none;border:0;margin:24px 0 48px}
.digest-toc>p{font-size:12px;color:#b6aa94;letter-spacing:.12em;margin:0 0 18px!important}
.digest-toc button{display:block;text-align:left;width:100%;background:none;border:0;border-top:1px solid #252422;padding:14px 0;color:#c9c4ba;font-size:15px;line-height:1.8;cursor:pointer;overflow-wrap:anywhere}
.digest-toc button:hover{color:#fff}
.digest-note{margin:28px 0;font-size:15px;line-height:1.9;color:#b2aea5}
.digest-source{border-left:1px solid #45423b;padding-left:18px;font-family:system-ui,-apple-system,"PingFang SC",sans-serif;font-size:13px;color:#aaa9a3}
.digest-note h3{margin:0 0 10px}
.digest-note p:last-child,.digest-note ul:last-child{margin-bottom:0}
.digest-extra h3{color:#b8b5a4}
.news-digest .digest-note li{color:inherit}
.news-digest .digest-note ul{color:inherit}
.news-digest .inline-link{display:inline;overflow-wrap:anywhere;color:#c3c5b3;border-color:#626050}
.news-digest .link-icon{margin-right:5px}
.news-digest li{margin:12px 0}
@media(max-width:600px){.prose.news-digest{font-size:17px;line-height:1.95}.news-digest h2{font-size:23px}.news-digest .lead{font-size:17px}.digest-toc{padding:0}.digest-section{margin-top:38px;padding-top:30px}.digest-source{padding-left:14px}}

/* Article links carry a quiet favicon so monitoring sources remain scannable. */
.intro-heading{position:absolute;top:max(36px,7svh);left:24px;right:24px;text-align:center;pointer-events:none}
.intro-kicker{margin:0 0 12px;color:#8e8b86;font-size:12px;letter-spacing:.24em}
.intro-heading h1{margin:0;color:#e7e5df;font-family:inherit;font-size:clamp(38px,5vw,58px);font-weight:400;line-height:1.1;letter-spacing:.16em;text-indent:.16em}
.intro-description{margin:16px 0 0;color:#a09d97;font-size:14px;line-height:1.7;letter-spacing:.08em}
.hero .scroll-hint{bottom:max(22px,env(safe-area-inset-bottom));font-size:14px;white-space:nowrap;color:#aaa7a0;min-height:48px}
@media(max-height:650px){.intro-heading{top:24px}.intro-kicker{display:none}.intro-heading h1{font-size:32px}.intro-description{margin-top:8px;font-size:12px}.hero .scroll-hint{bottom:12px}}
.inline-link{display:inline-flex;align-items:center;gap:6px;color:#d0d0cc;border-bottom:1px solid #444;line-height:1.45;vertical-align:baseline}
.inline-link:hover{border-color:#aaa}
.link-icon{width:14px;height:14px;flex:0 0 14px;border-radius:3px;object-fit:cover;vertical-align:-2px;filter:grayscale(.15) brightness(.9)}
.article-links{margin:52px 0 12px;padding:18px 0 0;border-top:1px solid #242424;color:#8d8d88}
.article-links-label{font-size:11px;letter-spacing:.16em;color:#777;margin-bottom:14px}
.article-links ul{list-style:none;margin:0;padding:0}
.article-links li{display:flex;align-items:center;gap:12px;padding:9px 0;font-size:13px}
.article-links .source-link{display:inline-flex;align-items:center;gap:7px;border:0;color:#bcbcb6}
.article-links li small{font-size:11px;color:#666}
.prose ul{margin:0 0 28px;padding-left:1.35em;color:#b9b9b3}
.prose li{padding-left:7px;margin:6px 0}
.source-note .inline-link{margin-left:5px}
@media(max-width:600px){.article-links{margin-top:42px}.article-links li{align-items:flex-start;flex-wrap:wrap;gap:8px}.article-links li small{width:100%;padding-left:22px}}
