:root{--bg: #faf8f4;--fg: #2b2926;--fg-muted: #8a8478;--accent: #9a3b2e;--border: #e6e1d7;--code-bg: #f1ede5;--width-wide: 72rem;--width-prose: 44rem;--header-h: 4rem;--font-sans: -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", "Noto Sans SC", sans-serif;--font-serif: "Songti SC", "Noto Serif SC", "Source Han Serif SC", SimSun, Georgia, serif;--font-mono: ui-monospace, "Cascadia Code", Consolas, "SFMono-Regular", monospace}@media(prefers-color-scheme:dark){:root{--bg: #1d1c1a;--fg: #ddd8cf;--fg-muted: #918b7f;--accent: #d98873;--border: #35322d;--code-bg: #292723}}*{box-sizing:border-box}html{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 1.5rem)}body{margin:0;min-height:100vh;display:flex;flex-direction:column;line-height:1.8}a{color:inherit}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.header-inner{max-width:var(--width-wide);margin-inline:auto;padding-inline:1.25rem;height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:1rem}.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;font-family:var(--font-serif);font-weight:700;font-size:1.15rem;letter-spacing:.05em}.brand-icon{color:var(--accent);flex-shrink:0}.brand-icon .page-flip{opacity:.4;transform-origin:24px 24px;transform-box:view-box;animation:page-flip 4.5s ease-in-out infinite}@keyframes page-flip{0%,18%{transform:scaleX(1);opacity:.4}48%,55%{transform:scaleX(-.95);opacity:.15}85%,to{transform:scaleX(1);opacity:.4}}@media(prefers-reduced-motion:reduce){.brand-icon .page-flip{animation:none}}.site-nav{display:flex;gap:.4rem}.site-nav a{text-decoration:none;padding:.35rem .95rem;border-radius:999px;font-size:.95rem;color:var(--fg-muted);transition:color .15s,background .15s}.site-nav a:hover{color:var(--fg);background:var(--code-bg)}.site-nav a[aria-current=page]{color:var(--bg);background:var(--accent)}.site-main{flex:1;width:100%;max-width:var(--width-wide);margin-inline:auto;padding:2.5rem 1.25rem 4rem}.site-footer{width:100%;max-width:var(--width-wide);margin-inline:auto;padding:2rem 1.25rem;border-top:1px solid var(--border);color:var(--fg-muted);font-size:.85rem}.list-page{display:grid;grid-template-columns:280px minmax(0,1fr);gap:3.5rem;align-items:start}.list-side{position:sticky;top:calc(var(--header-h) + 2rem)}.list-side img{display:block;width:100%;height:auto;border-radius:16px;box-shadow:0 14px 36px #3c2d1e1f}.list-heading{font-family:var(--font-serif);font-size:1.6rem;margin:0 0 .3rem}.list-sub{color:var(--fg-muted);margin:0 0 1.2rem;font-size:.95rem}.post-list{list-style:none;margin:0;padding:0}.post-list li{padding-block:1.4rem;border-bottom:1px solid var(--border)}.post-list a{font-family:var(--font-serif);font-size:1.2rem;font-weight:600;text-decoration:none}.post-list a:hover{color:var(--accent)}.post-list time{display:block;font-size:.8rem;color:var(--fg-muted);margin-bottom:.15rem;font-variant-numeric:tabular-nums}.post-list .desc{margin:.35rem 0 0;color:var(--fg-muted);font-size:.92rem}.article-page{display:grid;grid-template-columns:230px minmax(0,1fr);gap:3rem;align-items:start}.article-page.no-toc{grid-template-columns:minmax(0,1fr)}.article-main{max-width:var(--width-prose)}.no-toc .article-main{margin-inline:auto}.toc{position:sticky;top:calc(var(--header-h) + 2rem);max-height:calc(100vh - var(--header-h) - 4rem);overflow-y:auto}.toc-title{font-family:var(--font-serif);font-size:.85rem;letter-spacing:.1em;color:var(--fg-muted);margin:0 0 .6rem}.toc ul{list-style:none;margin:0;padding:0;border-left:1px solid var(--border)}.toc a{display:block;padding:.32rem .9rem;margin-left:-1px;border-left:2px solid transparent;font-size:.88rem;line-height:1.55;color:var(--fg-muted);text-decoration:none;transition:color .15s,border-color .15s}.toc .toc-d3 a{padding-left:1.7rem}.toc a:hover{color:var(--fg)}.toc a.active{color:var(--accent);border-left-color:var(--accent)}@media(max-width:900px){.brand-name{font-size:1rem}.list-page{grid-template-columns:1fr;gap:1.5rem}.list-side{position:static}.list-side img{max-height:200px;object-fit:cover;object-position:center 30%}.article-page{grid-template-columns:1fr;gap:0}.toc{display:none}}.article-header{margin-bottom:2.5rem}.article-header h1{font-family:var(--font-serif);font-size:1.75rem;line-height:1.4;margin:0 0 .5rem}.article-header time{color:var(--fg-muted);font-size:.85rem;font-variant-numeric:tabular-nums}.article{font-size:1.02rem;line-height:1.95;letter-spacing:.01em}.article h1,.article h2,.article h3,.article h4{font-family:var(--font-serif);line-height:1.5;margin:2.2em 0 .8em}.article h1{font-size:1.45rem}.article h2{font-size:1.3rem}.article h3{font-size:1.15rem}.article h4{font-size:1.02rem}.article p{margin:0 0 1.1em}.article a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.article blockquote{margin:1.4em 0;padding:.1em 1.2em;border-left:3px solid var(--accent);background:var(--code-bg);border-radius:0 6px 6px 0;color:var(--fg);font-family:var(--font-serif)}.article img{max-width:100%;height:auto;border-radius:8px;display:block;margin:1.6em auto}.article hr{border:none;border-top:1px solid var(--border);margin:2.5em auto;max-width:8rem}.article ul,.article ol{padding-left:1.6em;margin:0 0 1.1em}.article li{margin-bottom:.35em}.article code{font-family:var(--font-mono);font-size:.88em;background:var(--code-bg);padding:.15em .4em;border-radius:4px}.article pre{background:var(--code-bg);padding:1em 1.2em;border-radius:8px;overflow-x:auto;line-height:1.6}.article pre code{background:none;padding:0}.article table{border-collapse:collapse;width:100%;margin:1.4em 0;font-size:.95em;display:block;overflow-x:auto}.article th,.article td{border:1px solid var(--border);padding:.5em .8em;text-align:left}.article th{background:var(--code-bg)}.back-link{display:inline-block;margin-top:3rem;font-size:.9rem;color:var(--fg-muted);text-decoration:none}.back-link:hover{color:var(--accent)}
