:root{color-scheme:light;--paper:#f7f7f2;--white:#fff;--ink:#182c31;--muted:#687a7b;--line:#d8e1dc;--accent:#246b62;--soft:#e7f0e9;--sans:'Microsoft YaHei UI','PingFang SC',system-ui,sans-serif;--serif:'Songti SC',STSong,SimSun,serif;--mono:Consolas,monospace}
*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.7 var(--sans)}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #6aa89a;outline-offset:4px}h1,h2,h3,p{margin:0}.shell{width:min(1200px,calc(100% - 80px));margin:auto}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:fixed;z-index:9;top:10px;left:10px;background:white;padding:10px}
.site-header{background:var(--paper);border-bottom:1px solid var(--line)}.header-inner{min-height:84px;display:flex;align-items:center;gap:55px}.wordmark{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:800;line-height:1.15;white-space:nowrap}.wordmark small{display:block;margin-top:5px;font:9px var(--mono);letter-spacing:.13em;color:var(--muted)}.brand-mark{display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:var(--accent);color:white;font-size:23px}.site-header nav{display:flex;gap:32px;margin-left:auto;font-size:14px;font-weight:600}.site-header nav a:hover,.text-link:hover,.back-link:hover{color:var(--accent)}.preview-badge{font-size:11px;color:#63746f;border:1px solid var(--line);border-radius:30px;padding:4px 10px;white-space:nowrap}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:80px;align-items:center;padding-block:84px 80px}.eyebrow{font:11px/1.5 var(--mono);letter-spacing:.14em;color:var(--accent);font-weight:700}.hero .eyebrow{display:flex;gap:9px;align-items:center;letter-spacing:.04em;font-family:var(--sans)}.hero .eyebrow span{width:7px;height:7px;border-radius:50%;background:#70a394}.hero h1{margin:23px 0 20px;font-size:clamp(48px,5.7vw,78px);line-height:1.17;letter-spacing:-.06em;font-weight:750}.hero h1 em{font-family:var(--serif);font-style:normal;color:var(--accent);font-weight:600}.hero-description{font-size:16px;color:var(--muted);line-height:1.9}.search-form{display:flex;align-items:center;width:100%;min-height:62px;border:1px solid #bbcfc7;background:#fff;border-radius:6px;box-shadow:0 9px 25px #1c493b0b}.hero .search-form{max-width:630px;margin-top:31px}.search-icon{font-size:27px;color:var(--accent);line-height:1;margin:0 14px 0 19px}.search-form input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--ink);font-size:14px}.search-form input::placeholder{color:#9ba9a4}.search-form button,.solid-button{border:0;cursor:pointer;background:var(--accent);color:white;font-weight:600;border-radius:4px;padding:12px 19px;margin:6px;white-space:nowrap}.search-form button:hover,.solid-button:hover{background:#174e49}.search-form button span,.solid-button span{margin-left:12px}.popular{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:18px;color:var(--muted);font-size:12px}.popular a{background:#e9efea;color:#45615a;padding:3px 9px;border-radius:3px}.popular a:hover{background:#d5e6db}.popular a span{margin-left:3px}
.hero-aside{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-height:330px;padding:22px 25px;background:#dbe9df;color:#28574e;border:1px solid #cbded1;overflow:hidden}.hero-aside:before,.hero-aside:after{content:'';position:absolute;border:1px solid #a9c9b8;border-radius:50%;width:280px;height:280px;right:-38px;top:22px}.hero-aside:after{width:210px;height:210px;right:-3px;top:57px}.aside-top,.aside-bottom{display:flex;justify-content:space-between;position:relative;z-index:1;font:10px var(--mono);letter-spacing:.12em}.aside-top span:last-child{font-size:22px}.aside-center{position:relative;z-index:1;display:flex;flex-direction:column;font:34px/1.3 var(--serif);letter-spacing:.1em;margin-left:25px}.aside-center span:nth-child(2){margin-left:42px}.aside-center span:nth-child(3){margin-left:84px}.aside-bottom{color:#5b8273}
.topics{padding:0 0 82px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:22px}.section-heading h2{font-size:30px;letter-spacing:-.05em;margin-top:5px}.section-heading>p,.text-link{font-size:13px;color:var(--muted)}.topic-grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:#fff}.topic-card{min-height:156px;padding:19px 20px;display:flex;flex-direction:column;justify-content:space-between;position:relative;border-right:1px solid var(--line);transition:background .2s}.topic-card:last-child{border:0}.topic-card:hover{background:#edf5ef}.topic-number{font:11px var(--mono);color:#91a49b}.topic-card h3{font-size:18px}.topic-card p{color:var(--muted);font-size:12px;margin-top:3px}.topic-arrow{position:absolute;right:20px;bottom:21px;color:var(--accent);font-size:20px}.updates{padding-bottom:90px}.article-list{border-top:1px solid var(--line)}.article-row{border-bottom:1px solid var(--line)}.article-row a{display:grid;grid-template-columns:42px minmax(0,1fr) 30px;gap:20px;align-items:start;padding:24px 0}.row-number{font:11px var(--mono);color:#9aac9f;padding-top:3px}.row-content h3{font-size:21px;line-height:1.5;margin:7px 0 4px;letter-spacing:-.025em}.row-content p{font-size:14px;color:var(--muted)}.article-row a:hover h3{color:var(--accent)}.row-arrow{justify-self:end;color:var(--accent);font-size:21px}.article-meta{display:flex;flex-wrap:wrap;gap:6px 15px;color:var(--muted);font-size:11px}.article-meta span:first-child{color:var(--accent);font-weight:700}.article-meta time{font-family:var(--mono)}.sample-note{font-size:12px;color:#80908a;margin-top:23px}.site-footer{border-top:1px solid var(--line);background:#eef2ec}.footer-inner{display:flex;justify-content:space-between;gap:20px;align-items:end;padding-block:31px 38px;color:var(--muted);font-size:12px}.footer-inner strong{font-size:16px;color:var(--ink)}.footer-inner p{margin-top:5px}
.inner-page{min-height:65vh;padding-block:56px 90px}.page-intro{border-bottom:1px solid var(--line);padding-bottom:30px;margin-bottom:34px}.page-intro h1,.about-page h1{font-size:clamp(38px,5vw,56px);line-height:1.2;letter-spacing:-.05em;margin:10px 0}.page-intro>p:last-child,.about-page>p:not(.eyebrow){color:var(--muted)}.content-layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:65px}.sidebar-title{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.04em;margin-bottom:12px}.filters,.topic-links{display:flex;flex-direction:column;gap:4px}.filters a{display:flex;justify-content:space-between;gap:10px;padding:9px 12px;color:#526861;border-radius:4px;font-size:14px}.filters a span:last-child{font:11px var(--mono);color:#8ca097}.filters a:hover,.filters a[aria-current]{background:#e3ede5;color:var(--accent)}.sidebar-topics{margin-top:32px}.topic-links a{padding:5px 12px;color:var(--muted);font-size:13px}.topic-links a:hover,.topic-links a[aria-current]{color:var(--accent);font-weight:700}.list-main .search-form{min-height:55px;box-shadow:none}.list-status{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;margin:28px 0 12px}.empty-state{padding:50px 10px;color:var(--muted)}.empty-state strong{font-size:18px;color:var(--ink)}.empty-state p{margin:7px 0}.empty-state a{color:var(--accent);font-size:13px}.back-link{display:inline-block;color:var(--muted);font-size:13px;margin-bottom:40px}.reading-layout{display:grid;grid-template-columns:minmax(0,720px) 190px;gap:85px;justify-content:center}.reading-header{padding-bottom:30px;border-bottom:1px solid var(--line)}.reading-header h1{font-size:clamp(34px,4.2vw,55px);line-height:1.3;letter-spacing:-.04em;margin:17px 0}.reading-intro{font-size:17px;color:var(--muted);line-height:1.8}.reading-body{padding-top:10px}.reading-section{margin:42px 0;scroll-margin-top:30px}.reading-section h2{font-size:24px;line-height:1.4;margin-bottom:15px}.reading-section p{font-size:16px;line-height:2;margin:12px 0;color:#344b48}.reading-toc{align-self:start;position:sticky;top:35px;border-left:1px solid var(--line);padding-left:20px}.reading-toc ol{margin:0;padding-left:19px;color:var(--muted);font-size:13px}.reading-toc li{padding:4px 0}.reading-toc a:hover{color:var(--accent)}.related-link{display:grid;grid-template-columns:1fr auto;gap:6px 12px;border-block:1px solid var(--line);padding:20px 0;margin-top:55px}.related-link span:first-child{grid-column:1/-1;color:var(--muted);font-size:12px}.related-link span:last-child{color:var(--accent)}.about-page{max-width:850px}.about-page>p:not(.eyebrow){max-width:650px;font-size:16px;line-height:2;margin:16px 0}.solid-button{display:inline-flex;margin:22px 0 0}
@media(max-width:800px){.shell{width:calc(100% - 40px)}.header-inner{gap:18px;min-height:72px}.site-header nav{gap:18px}.preview-badge{display:none}.hero{grid-template-columns:1fr 240px;gap:25px;padding-block:58px}.hero-aside{min-height:270px}.hero-aside:before{width:210px;height:210px}.hero-aside:after{width:150px;height:150px;right:-3px;top:52px}.aside-center{font-size:27px;margin-left:5px}.topic-grid{grid-template-columns:repeat(2,1fr)}.topic-card:nth-child(2){border-right:0}.topic-card:nth-child(-n+2){border-bottom:1px solid var(--line)}.content-layout{grid-template-columns:160px minmax(0,1fr);gap:25px}.reading-layout{grid-template-columns:minmax(0,1fr) 160px;gap:30px}}
@media(max-width:560px){.shell{width:calc(100% - 32px)}.header-inner{min-height:68px;gap:10px}.wordmark{font-size:15px}.wordmark small{font-size:8px}.brand-mark{width:30px;height:30px;font-size:20px}.site-header nav{gap:13px;font-size:12px}.hero{display:block;padding-block:50px 55px}.hero h1{font-size:46px}.hero-description{font-size:15px}.hero-aside{display:none}.search-form{min-height:56px}.search-form button{padding:10px 12px}.search-icon{margin-inline:14px 10px}.topics{padding-bottom:55px}.section-heading h2{font-size:26px}.topic-card{min-height:135px;padding:16px}.topic-arrow{right:16px;bottom:16px}.updates{padding-bottom:55px}.article-row a{grid-template-columns:26px minmax(0,1fr) 20px;gap:10px;padding-block:19px}.row-content h3{font-size:18px}.row-content p{font-size:13px}.footer-inner{align-items:start;flex-direction:column}.inner-page{padding-block:40px 65px}.content-layout{display:flex;flex-direction:column;gap:22px}.filters,.topic-links{flex-direction:row;flex-wrap:wrap}.filters a{gap:8px;padding:7px 10px}.sidebar-topics{margin-top:18px}.topic-links a{padding:4px 9px}.reading-layout{display:flex;flex-direction:column-reverse;gap:24px}.reading-toc{position:static;border:1px solid var(--line);padding:16px 20px}.reading-section{margin:32px 0}.back-link{margin-bottom:24px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}

/* 主题索引 */
.topic-index{display:flex;flex-wrap:wrap;gap:10px}.topic-index-link{display:inline-flex;align-items:center;gap:12px;min-height:46px;padding:9px 14px 9px 17px;border:1px solid #cdded4;border-radius:24px;background:#fff;color:var(--ink);transition:background .2s,border-color .2s}.topic-index-link:hover{background:#e5f1e9;border-color:#8bb5a2}.topic-index-name{font-size:14px;font-weight:700}.topic-index-count{font-size:11px;color:var(--muted)}.topic-index-arrow{font-size:15px;color:var(--accent)}
@media(max-width:560px){.wordmark{font-size:13px}.header-inner{flex-wrap:wrap;padding-block:12px}.site-header nav{gap:12px;margin-left:auto}.topic-index{gap:8px}.topic-index-link{min-height:42px;padding:8px 12px;gap:8px}}
/* 笔记封面与更新时间排序 */
.article-row a{grid-template-columns:112px minmax(0,1fr) 30px;align-items:center;gap:22px}.row-cover{display:grid;place-items:center;position:relative;width:112px;aspect-ratio:4/3;overflow:hidden;border-radius:5px;background:#e3ede5;color:#7ea395}.row-cover-fallback{font-size:26px}.row-cover-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.row-cover-image[hidden]{display:none}.sort-button{border:0;padding:3px 0;background:none;color:var(--accent);font-size:12px;cursor:pointer}.sort-button:hover{text-decoration:underline;text-underline-offset:4px}.article-image{margin:24px 0}.article-image img{display:block;max-width:100%;height:auto;border-radius:4px}.article-image figcaption{margin-top:8px;color:var(--muted);font-size:13px}
@media(max-width:560px){.article-row a{grid-template-columns:78px minmax(0,1fr) 16px;gap:12px;align-items:start}.row-cover{width:78px}.row-cover-fallback{font-size:21px}.row-content h3{margin-top:4px}.article-meta{gap:3px 8px}.list-status{align-items:center}}
.blog-loading {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: grid;
  place-content: center;
  justify-items: center;
  background: radial-gradient(ellipse at center, #193e36, #091a16 75%);
  color: #dceacc;
  font-size: 0.875rem;
  pointer-events: none;
}

.blog-loading[hidden] { display: none; }

.knowledge-graph {
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #172521;
  color: #e3eee8;
}
.graph-viewport { overflow: hidden; cursor: grab; }
.graph-viewport:active { cursor: grabbing; }
.knowledge-graph h2 { font-size: 17px; }
.graph-map {
  position: relative;
  width: min(100%, 310px);
  aspect-ratio: 1;
  margin-inline: auto;
}
.graph-edge {
  position: absolute;
  height: 1px;
  background: #8cb7a5;
  transform-origin: left center;
  pointer-events: none;
}
.graph-map a {
  position: absolute;
  display: grid;
  place-items: center;
  transform: translate(-50%, -50%);
  border-radius: 999px;
}
.graph-root {
  top: 50%;
  left: 50%;
  width: 40px;
  height: 40px;
  background: #17453c;
  color: #ffe6a1;
  font: 700 23px var(--serif);
}
.graph-topic {
  padding: 5px 8px;
  border: 1px solid #9dbfaf;
  background: #243b34;
  color: #d9ede3;
  font-size: 12px;
  white-space: nowrap;
}
.graph-article { width: 26px; height: 26px; }
.graph-map a { touch-action: none; -webkit-user-drag: none; }
.graph-article span {
  position: absolute;
  top: 100%;
  max-width: 82px;
  font-size: 10px;
  line-height: 1.25;
  text-align: center;
  color: #a9c3b8;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.graph-article::before {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #387f70;
  border: 2px solid #f7fbf5;
}
.graph-map a:hover, .graph-map a:focus-visible { outline: 2px solid #387f70; outline-offset: 2px; }
.graph-key { color: #a9c3b8; font-size: 12px; text-align: center; }
.knowledge-graph {
  padding: 0;
  background: #303033;
  border: 1px solid #3b3b3e;
  border-radius: 8px;
}
.graph-map { width: 100%; max-width: none; }
.graph-edge { background: #777; opacity: .48; }
.graph-map .graph-article { width: 16px; height: 16px; }
.graph-map .graph-hub { width: 28px; height: 28px; }
.graph-article::before { width: var(--node-size); height: var(--node-size); background: #b7b7bc; border: 0; }
.graph-article span { display: none; pointer-events: none; }
.graph-map .graph-article.is-highlighted { z-index: 2; outline: none; }
.graph-article.is-highlighted::before { background: #925cf4; }
.graph-article.is-highlighted span {
  display: block;
  width: max-content;
  max-width: 140px;
  padding-top: 5px;
  color: #e5e5e5;
  font-size: 12px;
}
.graph-map.has-highlight .graph-article:not(.is-neighbor):not(.is-highlighted) { opacity: .25; }
.graph-map.has-highlight .graph-edge:not(.is-highlighted) { opacity: .14; }
.graph-map .graph-edge.is-highlighted { background: #925cf4; opacity: .95; }
.graph-viewport { position: relative; }
.graph-reset {
  position: absolute;
  z-index: 3;
  top: 12px;
  right: 12px;
  width: 34px;
  height: 34px;
  border: 1px solid #474747;
  border-radius: 6px;
  background: #292929;
  color: #dedee4;
  font-size: 19px;
  cursor: pointer;
}
.graph-reset:hover { background: #3b3546; }
.graph-viewport .graph-forces,
.graph-viewport .graph-reset { display: none; }
.graph-forces {
  position: absolute;
  top: 12px;
  right: 54px;
  z-index: 4;
  color: #dedee4;
  font-size: 12px;
}
.graph-forces summary {
  cursor: pointer;
  padding: 7px 10px;
  background: #292929;
  border: 1px solid #474747;
  border-radius: 6px;
}
.graph-forces[open] {
  width: min(220px, calc(100% - 66px));
  background: #292929;
  border-radius: 6px;
  box-shadow: 0 8px 24px #0006;
}
.graph-forces > div { padding: 10px; display: grid; gap: 10px; }
.graph-forces label span { display: flex; align-items: center; gap: 8px; }
.graph-forces output { min-width: 30px; font-variant-numeric: tabular-nums; }
.graph-forces input { width: 100%; min-width: 0; accent-color: #925cf4; }
@media (min-width: 801px) {
  .hero { grid-template-columns: minmax(0, 1fr) minmax(320px, 440px); gap: clamp(28px, 4vw, 64px); }
}
@media (min-width: 561px) and (max-width: 800px) {
  .hero { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}
@media (max-width: 560px) {
  .knowledge-graph { margin-top: 28px; }
}

.site-header nav a[aria-current] { color: var(--accent); }
.news-edition h2 { font-size: 24px; margin-bottom: 16px; }
.article-row.news-card a { grid-template-columns: minmax(0, 1fr) auto; }
.news-detail { max-width: 760px; }
.news-detail .reading-body p { margin-block: 16px; }
.news-source { display: inline-block; margin-top: 8px; font-size: 13px; color: var(--accent); }
.news-source:hover { text-decoration: underline; }

.wordmark .brand-mark {
  display: block;
  flex: none;
  width: 40px;
  height: 40px;
  object-fit: contain;
  background: transparent;
}

@media (max-width: 560px) {
  .wordmark .brand-mark { width: 32px; height: 32px; }
}

.blog-loading canvas {
  display: block;
  width: min(80vw, 20rem);
  height: min(64vw, 16rem);
}
#site { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; }
#site > .site-footer { margin-top: auto; }
.about-profiles { margin-top: 24px; }
.about-profiles h2 { font-size: 18px; }
.profile-links { padding-left: 1.25em; margin: 8px 0 0; }
.profile-links a:hover { text-decoration: underline; }
