:root{--bg:#f4f2ec;--surface:#fbfaf6;--ink:#1b1916;--soft:#46423a;--muted:#857f73;--line:#e0dbcf;--accent:#6e724b;--clay:#b08658;--serif:"Noto Serif SC","Songti SC",STSong,serif;--sans:"Noto Sans SC","PingFang SC",sans-serif}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);line-height:1.75;-webkit-font-smoothing:antialiased}.wrap{width:min(1120px,calc(100% - 40px));margin:0 auto}.site-head{position:sticky;top:0;z-index:10;background:rgba(244,242,236,.92);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.site-nav{height:68px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{font-family:var(--serif);font-size:19px;font-weight:600;letter-spacing:.08em;text-decoration:none;color:var(--ink)}.site-links{display:flex;align-items:center;gap:24px}.site-links a{color:var(--soft);text-decoration:none;font-size:14px}.site-links a:hover,.site-links a[aria-current]{color:var(--accent)}.site-login{border:1px solid var(--line);padding:8px 15px}.blog-hero{padding:76px 0 52px;border-bottom:1px solid var(--line)}.kicker{font-size:11px;text-transform:uppercase;letter-spacing:.28em;color:var(--accent);font-weight:600}.blog-hero h1{max-width:760px;margin:14px 0 12px;font-family:var(--serif);font-size:clamp(38px,6vw,66px);line-height:1.16;font-weight:600}.blog-hero p{max-width:620px;margin:0;color:var(--muted);font-size:16px}.blog-tools{display:flex;gap:10px;align-items:center;padding:26px 0}.blog-tools select{border:1px solid var(--line);background:var(--surface);padding:10px 34px 10px 12px;color:var(--soft)}.blog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding:0 0 80px}.post-card{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);background:var(--surface);text-decoration:none;color:inherit}.post-cover{width:100%;aspect-ratio:16/9;object-fit:cover;background:#ebe7dc}.post-cover--empty{display:grid;place-items:center;color:var(--accent);font-family:var(--serif);font-size:28px}.post-body{display:flex;flex:1;flex-direction:column;padding:22px}.post-meta{display:flex;gap:9px;align-items:center;color:var(--muted);font-size:12px}.post-card h2{margin:12px 0 8px;font-family:var(--serif);font-size:22px;line-height:1.45}.post-card p{margin:0;color:var(--soft);font-size:14px}.post-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:18px}.post-tag{border:1px solid var(--line);padding:3px 8px;font-size:11px;color:var(--muted)}.empty,.loading{grid-column:1/-1;padding:70px 0;text-align:center;color:var(--muted)}.site-foot{border-top:1px solid var(--line);padding:28px 0 40px;color:var(--muted);font-size:12px}.article-head{padding:64px 0 32px}.article-back{color:var(--accent);text-decoration:none;font-size:13px}.article-head h1{max-width:900px;margin:22px 0 16px;font-family:var(--serif);font-size:clamp(34px,5vw,58px);line-height:1.28}.article-summary{max-width:760px;color:var(--soft);font-size:17px}.article-meta{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:22px;color:var(--muted);font-size:13px}.article-cover{display:block;width:min(1120px,calc(100% - 40px));max-height:620px;object-fit:cover;margin:0 auto 46px}.article{width:min(760px,calc(100% - 40px));margin:0 auto;padding:0 0 90px;font-family:var(--serif);font-size:17px;line-height:2;color:var(--soft)}.article h2,.article h3,.article h4{color:var(--ink);line-height:1.45;margin:2em 0 .75em}.article h2{font-size:28px}.article h3{font-size:22px}.article p{margin:0 0 1.35em}.article blockquote{margin:2em 0;padding:5px 0 5px 20px;border-left:2px solid var(--accent);color:#62664a;font-size:19px}.article img{display:block;max-width:100%;height:auto;margin:28px auto}.article a{color:var(--accent)}.article pre,.article code{font-family:ui-monospace,Consolas,monospace;background:#eeece5}.article pre{overflow:auto;padding:16px}.article-tags{width:min(760px,calc(100% - 40px));margin:-55px auto 70px;padding-top:18px;border-top:1px solid var(--line)}
@media(max-width:820px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.site-links a:not([aria-current]):not(.site-login){display:none}}
@media(max-width:560px){.wrap{width:min(100% - 28px,1120px)}.blog-hero{padding:52px 0 36px}.blog-grid{grid-template-columns:1fr}.article-cover{width:100%;margin-bottom:34px}.article,.article-tags{width:calc(100% - 32px)}.site-nav{height:60px}.site-links{gap:10px}}
