:root{
  --bg:#faf8f5;
  --surface:#ffffff;
  --ink:#292524;
  --ink-soft:#44403c;
  --muted:#8a8178;
  --line:#e9e2d8;
  --accent:#7b5ea7;
  --accent-deep:#5b4480;
  --accent-soft:#f2edf9;
  --warm:#c07a4c;
  --maxw:740px;
  --font-serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;
  --font-sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  --font-mono:"JetBrains Mono",SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;
}

*{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
}

a{color:var(--accent-deep);text-decoration:none}
a:hover{color:var(--accent)}

.wrap{
  max-width:var(--maxw);
  margin:0 auto;
  padding:0 22px;
}

/* ---------- header ---------- */
.site-header{
  border-bottom:1px solid var(--line);
  background:rgba(250,248,245,.88);
  backdrop-filter:saturate(180%) blur(8px);
  position:sticky;
  top:0;
  z-index:10;
}

.site-header .wrap{
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:60px;
}

.brand{
  display:flex;
  align-items:center;
  gap:9px;
  font-family:var(--font-serif);
  font-size:19px;
  font-weight:600;
  color:var(--ink);
  letter-spacing:.5px;
}

.brand img{width:24px;height:24px;display:block}

.nav{display:flex;gap:22px;font-size:14.5px}
.nav a{color:var(--ink-soft)}
.nav a:hover,.nav a.on{color:var(--accent-deep)}
.nav a.on{position:relative}
.nav a.on::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:-20px;
  height:2px;
  background:var(--accent);
}

/* ---------- hero ---------- */
.hero{padding:52px 0 34px}
.hero h1{
  font-family:var(--font-serif);
  font-size:30px;
  line-height:1.45;
  margin:0 0 14px;
  font-weight:700;
  letter-spacing:.5px;
}
.hero p{
  margin:0;
  color:var(--muted);
  font-size:15.5px;
  line-height:1.9;
}
.hero .dot{color:var(--warm);margin:0 8px}

/* ---------- post list ---------- */
.section-title{
  font-family:var(--font-serif);
  font-size:15px;
  color:var(--muted);
  letter-spacing:2px;
  margin:26px 0 6px;
  display:flex;
  align-items:center;
  gap:12px;
}
.section-title::after{
  content:"";
  flex:1;
  height:1px;
  background:var(--line);
}

.post-list{list-style:none;margin:0;padding:0}

.post-card{
  padding:24px 0;
  border-bottom:1px solid var(--line);
}

.post-card .meta{
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--muted);
  letter-spacing:.4px;
  margin-bottom:6px;
}

.post-card h2{
  font-family:var(--font-serif);
  font-size:20px;
  line-height:1.5;
  margin:0 0 8px;
  font-weight:600;
}
.post-card h2 a{color:var(--ink)}
.post-card h2 a:hover{color:var(--accent-deep)}

.post-card .excerpt{
  margin:0 0 12px;
  color:var(--ink-soft);
  font-size:14.5px;
  line-height:1.85;
}

.tags{display:flex;gap:8px;flex-wrap:wrap}
.tag{
  font-size:12px;
  color:var(--accent-deep);
  background:var(--accent-soft);
  padding:2px 9px;
  border-radius:20px;
  letter-spacing:.3px;
}

/* ---------- article ---------- */
.post-head{padding:44px 0 8px;border-bottom:1px solid var(--line)}
.post-head .meta{
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--muted);
  margin-bottom:10px;
}
.post-head h1{
  font-family:var(--font-serif);
  font-size:28px;
  line-height:1.5;
  margin:0 0 12px;
  font-weight:700;
}
.post-head .tags{margin-bottom:18px}

.post-body{padding:26px 0 10px;font-size:16px;line-height:1.95;color:var(--ink-soft)}
.post-body h2{
  font-family:var(--font-serif);
  font-size:21px;
  color:var(--ink);
  margin:38px 0 14px;
  padding-left:11px;
  border-left:3px solid var(--accent);
  line-height:1.5;
}
.post-body h3{font-family:var(--font-serif);font-size:17.5px;color:var(--ink);margin:28px 0 10px}
.post-body p{margin:0 0 18px}
.post-body ul,.post-body ol{margin:0 0 18px;padding-left:22px}
.post-body li{margin-bottom:8px}
.post-body strong{color:var(--ink)}

.post-body code{
  font-family:var(--font-mono);
  font-size:.88em;
  background:#f2efe9;
  color:#8a4b3c;
  padding:2px 6px;
  border-radius:4px;
}

.post-body pre{
  background:#2b2620;
  color:#e8e2d8;
  padding:18px 20px;
  border-radius:10px;
  overflow-x:auto;
  line-height:1.7;
  font-size:13.5px;
  margin:0 0 22px;
}
.post-body pre code{
  background:none;
  color:inherit;
  padding:0;
  font-size:inherit;
}

.post-body blockquote{
  margin:0 0 20px;
  padding:14px 20px;
  background:var(--accent-soft);
  border-left:3px solid var(--accent);
  border-radius:0 8px 8px 0;
  color:var(--accent-deep);
}
.post-body blockquote p{margin:0}

.post-foot{
  border-top:1px solid var(--line);
  padding:20px 0 8px;
  font-size:14px;
  color:var(--muted);
  display:flex;
  justify-content:space-between;
}

/* ---------- about / plain page ---------- */
.page-head{padding:48px 0 10px}
.page-head h1{
  font-family:var(--font-serif);
  font-size:27px;
  margin:0 0 14px;
  font-weight:700;
}
.page-body{padding:12px 0 20px;color:var(--ink-soft);font-size:15.5px;line-height:1.95}
.page-body h2{font-family:var(--font-serif);font-size:19px;color:var(--ink);margin:32px 0 12px}
.page-body p{margin:0 0 16px}
.page-body ul{margin:0 0 18px;padding-left:22px}
.page-body li{margin-bottom:8px}

.fact-list{list-style:none;padding:0;margin:0 0 22px;border-top:1px solid var(--line)}
.fact-list li{
  display:flex;
  gap:18px;
  padding:11px 2px;
  border-bottom:1px solid var(--line);
  font-size:14.5px;
}
.fact-list .k{color:var(--muted);min-width:76px}
.fact-list .v{color:var(--ink-soft)}

/* ---------- archive ---------- */
.year{
  font-family:var(--font-serif);
  font-size:19px;
  margin:30px 0 6px;
  color:var(--ink);
}
.arch-list{list-style:none;margin:0;padding:0}
.arch-list li{
  display:flex;
  gap:18px;
  align-items:baseline;
  padding:10px 0;
  border-bottom:1px dashed var(--line);
  font-size:15px;
}
.arch-list .d{
  font-family:var(--font-mono);
  font-size:12.5px;
  color:var(--muted);
  min-width:82px;
}
.arch-list a{color:var(--ink-soft)}
.arch-list a:hover{color:var(--accent-deep)}

/* ---------- footer ---------- */
.site-footer{
  margin-top:56px;
  border-top:1px solid var(--line);
  padding:26px 0 34px;
  font-size:13px;
  color:var(--muted);
  line-height:2;
}
.site-footer .wrap{display:flex;flex-direction:column;gap:2px}
.site-footer a{color:var(--muted)}
.site-footer a:hover{color:var(--accent-deep)}

@media (max-width:600px){
  .hero{padding:38px 0 26px}
  .hero h1{font-size:24px}
  .post-card h2{font-size:18px}
  .post-head h1{font-size:23px}
  .nav{gap:16px;font-size:14px}
  .nav a.on::after{bottom:-19px}
}
