/* ===== shared base: tokens, a11y, CJK (applies to every variant) ===== */
@font-face{font-family:"A2 CJK Punct";src:local("PingFang SC"),local("Noto Sans CJK SC"),local("NotoSansCJKsc-Regular"),local("Source Han Sans SC"),local("Microsoft YaHei");unicode-range:U+2014,U+2018-2019,U+201C-201D,U+2026}
@font-face{font-family:"A2 CJK Punct Serif";src:local("Songti SC"),local("Noto Serif CJK SC"),local("NotoSerifCJKsc-Regular"),local("Source Han Serif SC");unicode-range:U+2014,U+2018-2019,U+201C-201D,U+2026}
:root{
  /* spacing scale (skill B2) */
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:40px;--s8:48px;--s9:64px;--s10:80px;--s11:96px;
  --ease:cubic-bezier(.32,.72,0,1);--t:240ms;
  --zh-sans:"PingFang SC","Hiragino Sans GB","Noto Sans SC","Noto Sans CJK SC","Source Han Sans SC","Microsoft YaHei",sans-serif;
  --zh-serif:"Noto Serif SC","Source Han Serif SC","Noto Serif CJK SC","Songti SC",serif;
  color-scheme:light dark;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:var(--s5)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;-webkit-font-smoothing:antialiased;font-feature-settings:"kern","liga"}
p,li,figcaption,blockquote{text-wrap:pretty}
h1,h2,h3{text-wrap:balance}
html[lang="zh-CN"] body{line-break:strict;text-autospace:normal;text-spacing-trim:normal;word-break:normal;overflow-wrap:break-word}
html[lang="zh-CN"] :is(h1,h2,h3){overflow-wrap:normal}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
main:focus{outline:none}
.skip{position:absolute;left:var(--s4);top:-64px;z-index:20;padding:var(--s2) var(--s3);border-radius:6px;background:var(--ink);color:var(--bg);font:600 14px/20px var(--sans);text-decoration:none;transition:top var(--t) var(--ease)}
.skip:focus{top:var(--s3);color:var(--bg)}
a{transition:color var(--t) var(--ease),text-decoration-color var(--t) var(--ease),border-color var(--t) var(--ease),background-color var(--t) var(--ease)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}
/* ===== Variant C — structured / product-like: grid, index panel, sticky header + TOC rail ===== */
:root{
  --bg:#f8f5ee;--surface:#f0ebdf;--card:#fcfaf5;
  --line:#e2dbcc;--line-2:#cdc4b1;
  --ink:#1b1a17;--ink-2:#3b3833;--muted:#665f54;
  --accent:#a8452a;--accent-2:#8a361f;--accent-soft:#f3e3d9;
  --foot-bg:#1b1a17;--foot-ink:#ebe6da;--foot-muted:#a9a295;--foot-line:#3a362f;
  --serif:"Source Serif 4","Source Serif Pro",Georgia,serif;
  --sans:Geist,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --wide:1120px;--measure:680px;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#131209;--surface:#1d1c14;--card:#18170f;
  --line:#2c2a21;--line-2:#423f34;
  --ink:#ece7db;--ink-2:#d0cabd;--muted:#a19a8d;
  --accent:#e08760;--accent-2:#eea283;--accent-soft:#2c1d13;
  --foot-bg:#0d0c06;--foot-ink:#e4dfd3;--foot-muted:#968f83;--foot-line:#2a281f;
}}
body{background:var(--bg);color:var(--ink);font:400 16px/24px var(--sans)}
html[lang="zh-CN"] body{font-family:"A2 CJK Punct",Geist,var(--zh-sans);line-height:1.85}
a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent)}
a:hover{color:var(--accent-2);text-decoration-color:currentColor}
strong{font-weight:600}
.wrap,.page.home{width:min(100% - 48px,var(--wide));margin-inline:auto}
.page{width:min(100% - 48px,var(--measure));margin-inline:auto}
h1,h2,h3{color:var(--ink)}
h1,h2{font-family:var(--serif);font-weight:600}
html[lang="zh-CN"] :is(h1,h2){font-family:"A2 CJK Punct Serif","Source Serif 4",var(--zh-serif);letter-spacing:0}

/* sticky solid header (no glass) */
header.site{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--line)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s3) var(--s6);min-height:64px;flex-wrap:wrap;padding-block:var(--s2)}
.brand{display:inline-flex;align-items:center;gap:var(--s3);color:var(--ink);text-decoration:none}
.brand:hover{color:var(--ink)}
.mark{position:relative;width:24px;height:24px;border-radius:6px;background:var(--ink);flex:none}
.mark::after{content:"";position:absolute;right:4px;bottom:4px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.brand .word{font:600 20px/1 var(--serif);letter-spacing:-.01em}
.brand .tagline{font:400 12px/16px var(--mono);color:var(--muted);padding-left:var(--s3);border-left:1px solid var(--line-2)}
header.site nav{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap;font:500 14px/20px var(--sans)}
header.site nav>a{color:var(--ink-2);text-decoration:none;padding:var(--s2) var(--s3);border-radius:8px}
header.site nav>a:hover{color:var(--ink);background:var(--surface)}
header.site nav>a[aria-current="page"]{color:var(--ink);background:var(--surface)}
header.site nav .lang{margin-left:var(--s3)}
.lang{display:inline-flex;border:1px solid var(--line-2);border-radius:8px;padding:2px;font:500 12px/16px var(--mono)}
.lang>*{padding:var(--s1) var(--s3);border-radius:6px;text-decoration:none}
.lang a{color:var(--muted)}
.lang a:hover{color:var(--ink);background:var(--surface)}
.lang [aria-current]{background:var(--ink);color:var(--bg)}
html{scroll-padding-top:88px}

.kicker{font:500 12px/16px var(--mono);color:var(--accent);margin:0 0 var(--s5)}
.kicker span{letter-spacing:0}
.byline{font-size:14px;line-height:20px;color:var(--muted);margin:0}
.muted{color:var(--muted)}.small{font-size:14px;line-height:20px}
.count{font:400 12px/16px var(--mono);color:var(--muted)}

/* hero: two columns — statement + index panel */
.hero{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--s9);align-items:end;padding:var(--s10) 0 var(--s9);border-bottom:1px solid var(--line)}
.hero h1{font-size:60px;line-height:1;letter-spacing:-.025em;margin:0 0 var(--s5);max-width:680px}
html[lang="zh-CN"] .hero h1{font-size:48px;line-height:1.25}
.hero .lede{font:400 20px/28px var(--serif);color:var(--ink-2);margin:0 0 var(--s5);max-width:680px}
html[lang="zh-CN"] .hero .lede{font-family:"A2 CJK Punct",Geist,var(--zh-sans);line-height:1.7}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3);margin:var(--s6) 0 0}
.btn{display:inline-flex;align-items:center;min-height:40px;padding:var(--s2) var(--s4);border-radius:8px;background:var(--ink);color:var(--bg);font:600 16px/24px var(--sans);text-decoration:none;border:1px solid var(--ink);transition:background-color var(--t) var(--ease),border-color var(--t) var(--ease),transform var(--t) var(--ease)}
.btn:hover{background:var(--accent);border-color:var(--accent);color:#fff}
.btn:active{transform:scale(.98)}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}
.btn.ghost:hover{background:var(--surface);border-color:var(--line-2);color:var(--ink)}
.hero-index{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:var(--s2)}
.ix-head{display:flex;justify-content:space-between;align-items:baseline;margin:0;padding:var(--s3) var(--s3) var(--s2);font:500 12px/16px var(--mono);color:var(--muted)}
.hero-index ol{list-style:none;margin:0;padding:0}
.hero-index a{display:grid;grid-template-columns:32px 1fr auto;gap:var(--s3);align-items:baseline;padding:var(--s3);border-radius:4px;color:var(--ink);text-decoration:none}
.hero-index li+li a{box-shadow:inset 0 1px 0 var(--line)}
.hero-index a:hover{background:var(--surface);color:var(--accent-2)}
.ix-num{font:500 14px/20px var(--mono);color:var(--accent)}
.ix-title{font:600 16px/24px var(--serif)}
html[lang="zh-CN"] .ix-title{font-family:"A2 CJK Punct Serif","Source Serif 4",var(--zh-serif)}
.hero-index time{font:400 12px/16px var(--mono);color:var(--muted);white-space:nowrap}

.block{padding:var(--s9) 0 var(--s5)}
.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--s3)}
.section-head h2{font-size:30px;line-height:36px;letter-spacing:-.01em;margin:0}
.intro{color:var(--ink-2);max-width:65ch;margin:0 0 var(--s7)}

/* essays as one structured list inside a single frame */
.cards{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.card{display:grid;grid-template-columns:240px minmax(0,1fr);scroll-margin-top:88px}
.card+.card{border-top:1px solid var(--line)}
.card:target{background:var(--accent-soft)}
.card>*{grid-column:2;padding-inline:var(--s7);max-width:calc(65ch + 80px)}
.card>h3{padding-top:var(--s7)}
.card>:last-child{padding-bottom:var(--s7)}
.card-meta{grid-column:1;grid-row:1 / span 4;display:flex;flex-direction:column;gap:var(--s3);align-items:flex-start;padding:var(--s7) var(--s5);background:var(--surface);max-width:none}
.num{font:500 30px/36px var(--mono);color:var(--accent);letter-spacing:-.02em}
.card time{font:400 12px/16px var(--mono);color:var(--muted)}
.tags{list-style:none;margin:var(--s1) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s1)}
.tags li{font:500 12px/16px var(--mono);padding:2px var(--s2);border-radius:4px;border:1px solid var(--line-2);color:var(--ink-2);white-space:nowrap}
.card h3{font:600 24px/32px var(--serif);letter-spacing:-.005em;margin:0 0 var(--s2)}
html[lang="zh-CN"] .card h3{font-family:"A2 CJK Punct Serif","Source Serif 4",var(--zh-serif);font-size:20px;line-height:1.5}
.card h3 a{color:var(--ink);text-decoration:underline;text-decoration-color:transparent;text-underline-offset:.22em}
.card h3 a:hover{color:var(--accent-2);text-decoration-color:currentColor}
.card .alt{font-size:14px;line-height:20px;color:var(--muted);margin:0 0 var(--s4)}
.card p{margin:0 0 var(--s4);color:var(--ink-2)}
.card .card-links{margin:0;padding-top:var(--s2);font:500 14px/20px var(--sans)}

.pull{display:grid;grid-template-columns:240px minmax(0,1fr);margin:var(--s9) 0;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.pull::before{content:"";background:var(--accent);width:100%;height:100%;min-height:24px;grid-row:1 / span 2;opacity:.12}
.pull blockquote{margin:0;padding:var(--s8) var(--s7) 0}
.pull blockquote p{font:400 30px/36px var(--serif);letter-spacing:-.01em;color:var(--ink);margin:0;max-width:680px}
html[lang="zh-CN"] .pull blockquote p{font:600 24px/1.6 "A2 CJK Punct Serif","Source Serif 4",var(--zh-serif)}
.pull figcaption{padding:var(--s4) var(--s7) var(--s8);font-size:14px;line-height:20px;color:var(--muted)}

.notes{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4);padding-bottom:var(--s11)}
.note{padding:var(--s6);border:1px solid var(--line);border-radius:12px;background:var(--card)}
.note h2{font:500 12px/16px var(--mono);color:var(--accent);margin:0 0 var(--s3)}
.note+.note h2{color:var(--muted)}
.note p{margin:0;color:var(--ink-2)}

/* article: TOC rail + reading column */
.page.article{width:min(100% - 48px,var(--wide));display:grid;grid-template-columns:240px minmax(0,var(--measure));column-gap:var(--s9);justify-content:center;align-items:start}
.article-head,.prose{grid-column:2}
.toc{grid-column:1;grid-row:1 / span 2;position:sticky;top:96px;max-height:calc(100dvh - 120px);overflow:auto;margin:var(--s10) 0 0;padding:var(--s4) 0;font:400 14px/20px var(--sans)}
html[lang="zh-CN"] .toc{font-family:"A2 CJK Punct",Geist,var(--zh-sans);text-align:left}
.toc strong{display:block;font:500 12px/16px var(--mono);color:var(--muted);margin-bottom:var(--s3);padding-left:var(--s3)}
.toc ol{list-style:none;margin:0;padding:0;counter-reset:t}
.toc li{counter-increment:t}
.toc a{display:grid;grid-template-columns:24px 1fr;gap:var(--s2);padding:var(--s2) var(--s3);border-radius:8px;color:var(--ink-2);text-decoration:none}
.toc a::before{content:counter(t,decimal-leading-zero);font:400 12px/20px var(--mono);color:var(--muted)}
.toc a:hover{background:var(--surface);color:var(--ink)}
.article{padding-bottom:var(--s11);font:400 18px/28px var(--serif)}
html[lang="zh-CN"] .article{font:400 17px/1.9 "A2 CJK Punct",Geist,var(--zh-sans)}
html[lang="zh-CN"] .prose{text-align:justify;text-justify:inter-character}
.article-head{padding:var(--s10) 0 var(--s6);margin-bottom:var(--s6);border-bottom:1px solid var(--line)}
.article-head .kicker{font-family:var(--mono)}
.article-head h1{font-size:48px;line-height:1.05;letter-spacing:-.02em;margin:0 0 var(--s4)}
html[lang="zh-CN"] .article-head h1{line-height:1.3}
.article-head .sub{font:400 20px/28px var(--serif);color:var(--ink-2);margin:0 0 var(--s4)}
html[lang="zh-CN"] .article-head .sub{font:400 18px/1.7 "A2 CJK Punct",Geist,var(--zh-sans)}
.article .byline,.article-head p.muted.small,.prose>p.muted.small,.article li .small{font-family:var(--sans)}
html[lang="zh-CN"] :is(.article .byline,.article-head p.muted.small,.prose>p.muted.small){font-family:"A2 CJK Punct",Geist,var(--zh-sans);text-align:left}
.article-head p.muted.small{margin:var(--s5) 0 0}
.article p{margin:0 0 var(--s5)}
.article ul,.article ol{padding-left:1.3em;margin:0 0 var(--s5)}
.article li{margin:var(--s2) 0}
.prose li::marker{color:var(--accent)}
.article h2{font-size:30px;line-height:36px;letter-spacing:-.01em;margin:var(--s9) 0 var(--s3);text-align:left}
.article h3{font:600 16px/24px var(--sans);margin:var(--s7) 0 var(--s2);text-align:left}
html[lang="zh-CN"] .article h3{font-family:"A2 CJK Punct",Geist,var(--zh-sans)}
.src{display:inline-block;font:400 12px/16px var(--mono);color:var(--muted);margin:0 0 var(--s5)!important;padding:var(--s1) var(--s2);border:1px solid var(--line);border-radius:4px;text-align:left}
html[lang="zh-CN"] .src{font-family:"A2 CJK Punct",var(--mono),var(--zh-sans)}
.src a{color:var(--muted);text-decoration-color:var(--line-2)}
.src a:hover{color:var(--accent)}
.article blockquote{margin:var(--s6) 0;padding:var(--s5) var(--s6);background:var(--surface);border-radius:12px}
.article blockquote p{font:400 20px/28px var(--serif);color:var(--ink);margin:0}
html[lang="zh-CN"] .article blockquote p{font:600 18px/1.8 "A2 CJK Punct Serif","Source Serif 4",var(--zh-serif);text-align:left}

/* footer */
footer.site{background:var(--foot-bg);color:var(--foot-ink);font-size:14px;line-height:20px}
footer.site .wrap{display:grid;grid-template-columns:1fr auto auto;align-items:start;gap:var(--s5) var(--s8);padding:var(--s8) 0 var(--s9)}
footer.site :focus-visible{outline-color:var(--foot-ink)}
.foot-brand .word{font:600 20px/1 var(--serif)}
.foot-brand p{margin:var(--s3) 0 0;color:var(--foot-muted)}
footer.site a{color:var(--foot-ink);text-decoration-color:var(--foot-line)}
footer.site a:hover{color:#fff;text-decoration-color:var(--accent)}
footer.site nav{display:flex;flex-direction:column;gap:var(--s2);font-family:var(--mono);font-size:12px;line-height:16px}
footer.site nav a{text-decoration:none;width:max-content;padding:var(--s1) 0}
footer.site nav a:hover{text-decoration:underline}
footer.site .lang{border-color:var(--foot-line);justify-self:start;width:max-content}
footer.site .lang a{color:var(--foot-muted)}
footer.site .lang a:hover{background:var(--foot-line);color:var(--foot-ink)}
footer.site .lang [aria-current]{background:var(--foot-ink);color:var(--foot-bg)}

@media (max-width:1100px){
  .page.article{display:block;width:min(100% - 48px,var(--measure))}
  .toc{position:static;max-height:none;margin:var(--s6) 0 var(--s2);padding:var(--s4);background:var(--surface);border-radius:12px}
  .toc ol{columns:2;column-gap:var(--s5)}
  .toc li{break-inside:avoid}
}
@media (max-width:900px){
  .brand .tagline{display:none}
  .hero{grid-template-columns:1fr;gap:var(--s7);align-items:start}
  .card,.pull{grid-template-columns:1fr}
  .card>*,.card-meta{grid-column:1;grid-row:auto}
  .card-meta{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3);padding:var(--s4) var(--s5)}
  .card>*{padding-inline:var(--s5)}
  .card>h3{padding-top:var(--s5)}
  .card>:last-child{padding-bottom:var(--s5)}
  .num{font-size:20px;line-height:28px}
  .pull::before{grid-row:auto;height:4px;min-height:0;opacity:1}
  .pull blockquote{padding:var(--s6) var(--s5) 0}
  .pull figcaption{padding:var(--s4) var(--s5) var(--s6)}
  .notes{grid-template-columns:1fr}
  footer.site .wrap{grid-template-columns:1fr}
}
@media (max-width:600px){
  .wrap,.page,.page.home,.page.article{width:min(100% - 32px,var(--wide))}
  header.site{position:static}
  html{scroll-padding-top:var(--s5)}
  .hero .kicker span{display:block;margin-top:var(--s1)}
  header.site .wrap{min-height:56px}
  header.site nav>a{padding:var(--s2)}
  .lang>*{padding:var(--s2) var(--s3)}
  .hero{padding:var(--s8) 0}
  .hero h1{font-size:48px}
  html[lang="zh-CN"] .hero h1{font-size:36px}
  .hero-index time{display:none}
  .hero-index a{grid-template-columns:32px 1fr}
  .section-head h2{font-size:24px;line-height:32px}
  .card h3{font-size:20px;line-height:28px}
  .pull blockquote p{font-size:24px;line-height:32px}
  .article-head{padding-top:var(--s8)}
  .article-head h1{font-size:36px;line-height:40px}
  .article h2{font-size:24px;line-height:32px}
  html[lang="zh-CN"] .prose{text-align:left}
  html[lang="zh-CN"] .article{font-size:16px}
  .toc ol{columns:1}
}
