:root{--sidebar-width:292px;--bg:#f8f5ef;--bg-sidebar:#f1ece2;--surface:#fffdf8;--text:#221f1b;--text-secondary:#6b645a;--text-faint:#746c5f;--border:#e3dcd0;--border-strong:#d3c9b9;--accent:#a23d2c;--accent-soft:#a23d2c14;--on-accent:#fbf8f2;--code-bg:#f2ede4;--selection:#a23d2c29;--font-serif:"Songti SC", "Noto Serif SC", "Source Han Serif SC", "STSong", "SimSun", Georgia, "Times New Roman", serif;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-mono:"SFMono-Regular", "JetBrains Mono", "Cascadia Code", Consolas, "Liberation Mono", monospace;color-scheme:light}html[data-theme=dark]{--bg:#151412;--bg-sidebar:#1b1916;--surface:#1f1d18;--text:#e9e3d7;--text-secondary:#a89f91;--text-faint:#948b7c;--border:#2e2a24;--border-strong:#413a30;--accent:#e0916f;--accent-soft:#e0916f1a;--on-accent:#1b1916;--code-bg:#211e19;--selection:#e0916f38;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}img,svg,video{max-width:100%;display:block}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.skip-link{z-index:100;background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;padding:10px 16px;font-size:13px;transition:top .2s;position:fixed;top:-100px;left:16px}.skip-link:focus{top:16px}[data-theme-label],.theme-toggle-icon svg,.sidebar-close svg,.menu-button svg{pointer-events:none}.sidebar{z-index:60;width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;position:fixed;inset:0 auto 0 0;overflow-y:auto}.sidebar-inner{flex-direction:column;min-height:100%;padding:34px 26px 26px;display:flex}.sidebar-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{align-items:center;gap:12px;min-width:0;display:flex}.brand-seal{background:var(--accent);width:42px;height:42px;color:var(--on-accent);font-family:var(--font-serif);border-radius:4px;flex:none;place-items:center;font-size:22px;line-height:1;display:grid;box-shadow:inset 0 0 0 1px #ffffff24}.brand-seal--small{border-radius:3px;width:28px;height:28px;font-size:15px}.brand-copy{flex-direction:column;gap:1px;min-width:0;display:flex}.brand-name{font-family:var(--font-serif);letter-spacing:.12em;font-size:20px;font-weight:600;line-height:1.3}.brand-sub{color:var(--text-faint);letter-spacing:.2em;font-size:10.5px;line-height:1.4}.icon-button{width:36px;height:36px;color:var(--text-secondary);border-radius:6px;place-items:center;transition:color .2s,background-color .2s;display:grid}.icon-button:hover{color:var(--accent);background:var(--accent-soft)}.icon-button svg{width:18px;height:18px}.icon-button.sidebar-close{display:none}.sidebar-nav{margin-top:42px}.nav-item{color:var(--text-secondary);letter-spacing:.03em;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;font-size:14px;transition:color .2s,background-color .2s;display:flex}.nav-item:hover{color:var(--text);background:color-mix(in srgb, var(--text) 4%, transparent)}.nav-item.is-active{color:var(--accent);background:var(--accent-soft);font-weight:500}.nav-count{color:var(--text-faint);font-variant-numeric:tabular-nums;letter-spacing:0;font-size:11px}.nav-item.is-active .nav-count{color:var(--accent);opacity:.75}.nav-label{color:var(--text-faint);letter-spacing:.18em;margin:28px 0 8px;padding-left:12px;font-size:10.5px}.nav-list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.sidebar-foot{margin-top:auto;padding-top:44px}.theme-toggle{color:var(--text-secondary);letter-spacing:.04em;align-items:center;gap:8px;padding:6px 0;font-size:12.5px;transition:color .2s;display:flex}.theme-toggle:hover{color:var(--accent)}.theme-toggle-icon{place-items:center;width:18px;height:18px;display:grid}.theme-toggle-icon svg{width:16px;height:16px}.icon-moon,html[data-theme=dark] .icon-sun{display:none}html[data-theme=dark] .icon-moon{display:block}.theme-toggle--compact{border-radius:6px;justify-content:center;width:38px;height:38px;padding:0}.theme-toggle--compact:hover{background:var(--accent-soft)}.sidebar-copy{border-top:1px solid var(--border);color:var(--text-faint);letter-spacing:.04em;margin:18px 0 0;padding-top:16px;font-size:11px;line-height:1.9}.page{min-height:100vh;margin-left:var(--sidebar-width);flex-direction:column;display:flex}.main{flex:1;display:flex}.main-inner{flex-direction:column;flex:1;width:100%;max-width:880px;margin:0 auto;padding:76px 56px 40px;display:flex}.main-inner--wide{max-width:1140px}.content{flex:1 0 auto;padding-bottom:64px}.site-foot{border-top:1px solid var(--border);color:var(--text-faint);letter-spacing:.02em;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:auto;padding-top:22px;font-size:11.5px;display:flex}.site-foot a{color:var(--text-secondary);overflow-wrap:anywhere;text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;transition:color .2s,text-decoration-color .2s}.site-foot a:hover{color:var(--accent);text-decoration-color:var(--accent)}.site-foot-links{flex-wrap:wrap;align-items:center;gap:4px 10px;display:inline-flex}.site-foot-sep{color:var(--border-strong)}.mobile-bar{display:none}.mobile-brand{font-family:var(--font-serif);letter-spacing:.12em;align-items:center;gap:9px;font-size:17px;font-weight:600;display:flex}.mobile-actions{align-items:center;gap:4px;display:flex}.menu-button{height:38px;color:var(--text-secondary);letter-spacing:.06em;border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-size:13px;transition:color .2s,background-color .2s;display:flex}.menu-button:hover{color:var(--accent);background:var(--accent-soft)}.menu-button svg{width:18px;height:18px}.scrim{display:none}.eyebrow{color:var(--accent);letter-spacing:.22em;align-items:center;gap:10px;margin:0;font-size:11px;font-weight:500;line-height:1.5;display:flex}.eyebrow:before{content:"";background:currentColor;width:22px;height:1px}.hero{border-bottom:1px solid var(--border);padding-bottom:48px}.hero-title{max-width:15em;font-family:var(--font-serif);letter-spacing:.005em;text-wrap:balance;margin:20px 0 26px;font-size:clamp(2.05rem,4vw,2.85rem);font-weight:600;line-height:1.44}.hero-copy{max-width:620px}.hero-copy p{color:var(--text-secondary);margin:0 0 14px;font-size:15px;line-height:1.95}.hero-copy p:last-child{margin-bottom:0}.hero-stats{color:var(--text-faint);letter-spacing:.04em;flex-wrap:wrap;gap:8px 24px;margin-top:28px;font-size:12px;display:flex}.hero-stats strong{color:var(--text);font-variant-numeric:tabular-nums;margin-right:3px;font-size:13px;font-weight:600}.index-head{justify-content:space-between;align-items:baseline;gap:12px;margin:48px 0 2px;display:flex}.index-head h2{font-family:var(--font-serif);letter-spacing:.04em;margin:0;font-size:1.3rem;font-weight:600}.index-head p{color:var(--text-faint);letter-spacing:.06em;margin:0;font-size:11.5px}.year-group{grid-template-columns:70px minmax(0,1fr);column-gap:26px;margin-top:38px;display:grid}.year-label{color:var(--text-faint);font-family:var(--font-serif);letter-spacing:.03em;font-variant-numeric:tabular-nums;align-self:start;margin:0;padding-top:22px;font-size:1.3rem;font-weight:500;line-height:1.5;position:sticky;top:32px}.post-list{margin:0;padding:0;list-style:none}.post-item{border-top:1px solid var(--border)}.post-item:last-child{border-bottom:1px solid var(--border)}.post-card{padding:23px 0 26px;display:block;position:relative}.post-card-meta{color:var(--text-faint);letter-spacing:.05em;flex-wrap:wrap;align-items:center;gap:7px;font-size:11.5px;display:flex}.post-card-meta time{color:var(--text-secondary);font-variant-numeric:tabular-nums}.post-card-dot{opacity:.6}.post-card-category{color:var(--accent)}.post-card-time{font-variant-numeric:tabular-nums;margin-left:auto}.post-card-title{font-family:var(--font-serif);letter-spacing:.01em;margin:9px 0 8px;font-size:1.32rem;font-weight:600;line-height:1.5;transition:color .2s}.post-card-arrow{color:var(--accent);font-family:var(--font-sans);opacity:0;margin-left:8px;font-size:.85em;transition:opacity .2s,transform .2s;display:inline-block;transform:translate(-6px)}.post-card-desc{color:var(--text-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:14px;line-height:1.8;display:-webkit-box;overflow:hidden}.post-card:hover .post-card-title,.post-card:focus-visible .post-card-title{color:var(--accent)}.post-card:hover .post-card-arrow,.post-card:focus-visible .post-card-arrow{opacity:1;transform:translate(0)}.empty-state{border:1px dashed var(--border-strong);color:var(--text-faint);text-align:center;border-radius:8px;margin:48px 0;padding:36px 24px;font-size:13.5px}.breadcrumb{color:var(--text-faint);letter-spacing:.03em;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:26px;font-size:12px;display:flex}.breadcrumb a{color:var(--text-secondary);transition:color .2s}.breadcrumb a:hover{color:var(--accent)}.page-head{border-bottom:1px solid var(--border);padding-bottom:34px}.page-head .eyebrow{margin-bottom:14px}.page-head h1{font-family:var(--font-serif);margin:0 0 12px;font-size:clamp(2rem,4vw,2.7rem);font-weight:600;line-height:1.34}.page-head-desc{max-width:560px;color:var(--text-secondary);margin:0 0 20px;font-size:15px;line-height:1.9}.page-head-meta{color:var(--text-faint);letter-spacing:.06em;margin:0;font-size:11.5px}.post-grid{grid-template-columns:minmax(0,720px) 196px;justify-content:space-between;column-gap:48px;max-width:1020px;margin:0 auto;display:grid}.post-main{min-width:0}.post-header{border-bottom:1px solid var(--border);margin-bottom:38px;padding-bottom:34px}.post-header .breadcrumb{margin-bottom:24px}.post-header h1{font-family:var(--font-serif);letter-spacing:.005em;text-wrap:balance;margin:0 0 18px;font-size:clamp(1.95rem,3.5vw,2.65rem);font-weight:600;line-height:1.4}.post-desc{max-width:640px;color:var(--text-secondary);margin:0 0 22px;font-size:15.5px;line-height:1.85}.post-meta{color:var(--text-faint);letter-spacing:.03em;flex-wrap:wrap;align-items:center;gap:7px;font-size:12px;display:flex}.post-meta time{color:var(--text-secondary);font-variant-numeric:tabular-nums}.prose{color:var(--text);overflow-wrap:break-word;font-size:1.0625rem;line-height:1.92}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose p{margin:0 0 1.15em}.prose h2{border-bottom:1px solid var(--border);font-family:var(--font-serif);letter-spacing:.01em;margin:2.5em 0 .9em;padding-bottom:.45em;scroll-margin-top:96px;font-size:1.55rem;font-weight:600;line-height:1.5}.prose h3{font-family:var(--font-serif);margin:2em 0 .7em;scroll-margin-top:96px;font-size:1.22rem;font-weight:600;line-height:1.55}.prose h2:first-child,.prose h3:first-child{margin-top:0}.prose strong{font-weight:600}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--accent) 38%, transparent);text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-color .2s}.prose a:hover{text-decoration-color:var(--accent)}.prose ul,.prose ol{margin:0 0 1.3em;padding-left:1.4em}.prose li{margin:.35em 0;padding-left:.15em}.prose li::marker{color:var(--text-faint)}.prose li>ul,.prose li>ol{margin-top:.35em;margin-bottom:.35em}.prose blockquote{border-left:2px solid var(--accent);color:var(--text-secondary);font-family:var(--font-serif);margin:1.7em 0;padding:.15em 0 .15em 1.35em;font-size:1.04em;line-height:1.85}.prose blockquote p{margin:.4em 0}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose code{border:1px solid var(--border);background:var(--code-bg);font-family:var(--font-mono);border-radius:4px;padding:.12em .38em;font-size:.86em}.prose pre{border:1px solid var(--border);border-radius:8px;margin:1.8em 0;padding:1.05em 1.2em;font-size:.875rem;line-height:1.7;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose .astro-code{border-radius:8px}html[data-theme=light] .prose .astro-code{background-color:var(--shiki-light-bg)!important}html[data-theme=light] .prose .astro-code span{color:var(--shiki-light)!important;font-style:var(--shiki-light-font-style)!important;font-weight:var(--shiki-light-font-weight)!important;text-decoration:var(--shiki-light-text-decoration)!important}html[data-theme=dark] .prose .astro-code{background-color:var(--shiki-dark-bg)!important}html[data-theme=dark] .prose .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}.prose table{border-collapse:collapse;width:100%;margin:1.8em 0;font-size:.92rem;line-height:1.7;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.55em .8em}.prose th{background:var(--bg-sidebar);font-weight:600}.prose hr{background:var(--border);border:0;height:1px;margin:2.6em 10%}.prose img{border:1px solid var(--border);border-radius:6px;height:auto;margin:1.8em auto}.prose figure{margin:1.8em 0}.prose figcaption{color:var(--text-faint);text-align:center;margin-top:.6em;font-size:12.5px}.prose kbd{border:1px solid var(--border-strong);background:var(--code-bg);font-family:var(--font-mono);border-bottom-width:2px;border-radius:4px;padding:.1em .4em;font-size:.85em}.prose .katex{font-size:1.06em}.prose .katex-display{padding:.4em 0;overflow:auto hidden}.prose .katex-display>.katex{white-space:normal}.toc{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;align-self:start;max-height:calc(100vh - 80px);padding-top:2px;position:sticky;top:40px;overflow-y:auto}.toc-title{color:var(--text-faint);letter-spacing:.18em;margin:0 0 12px;font-size:10.5px}.toc-list{border-left:1px solid var(--border);margin:0;padding:0;list-style:none}.toc-item a{color:var(--text-secondary);border-left:1px solid #0000;margin-left:-1px;padding:5px 0 5px 14px;font-size:12.5px;line-height:1.6;transition:color .2s,border-color .2s;display:block}.toc-item a:hover{color:var(--text)}.toc-item a.is-active{border-left-color:var(--accent);color:var(--accent)}.toc-depth-3 a{color:var(--text-faint);padding-left:28px;font-size:12px}.toc-depth-3 a.is-active{color:var(--accent)}.toc-mobile{border:1px solid var(--border);background:var(--bg-sidebar);border-radius:8px;margin:0 0 32px;padding:0 18px;display:none}.toc-mobile summary{color:var(--text-secondary);letter-spacing:.08em;cursor:pointer;justify-content:space-between;align-items:center;padding:13px 0;font-size:12.5px;list-style:none;display:flex}.toc-mobile summary::-webkit-details-marker{display:none}.toc-mobile summary:after{content:"＋";color:var(--text-faint);font-size:13px}.toc-mobile[open] summary:after{content:"－"}.toc-mobile .toc-list{border-left-color:#0000;margin:0 0 14px}.toc-mobile .toc-item a{padding-left:0}.toc-mobile .toc-depth-3 a{padding-left:16px}.post-footer{margin-top:56px}.post-end{color:var(--text-faint);letter-spacing:.3em;justify-content:center;align-items:center;gap:14px;font-size:11px;display:flex}.post-end span{background:var(--border);width:42px;height:1px}.post-nav{border-top:1px solid var(--border);margin-top:40px;display:flex}.post-nav-item{flex:1;min-width:0;padding:20px 0}.post-nav-item--next{border-left:1px solid var(--border);text-align:right;padding-left:28px}.post-nav-label{color:var(--text-faint);letter-spacing:.08em;margin-bottom:6px;font-size:11px;display:block}.post-nav-title{font-family:var(--font-serif);font-size:15.5px;font-weight:500;line-height:1.55;transition:color .2s;display:block}.post-nav-item:hover .post-nav-title{color:var(--accent)}.post-back{margin:24px 0 0;font-size:12.5px}.post-back a{color:var(--text-faint);transition:color .2s}.post-back a:hover{color:var(--accent)}.not-found{text-align:center;padding:clamp(48px,12vh,120px) 0}.not-found-code{color:var(--accent);letter-spacing:.28em;margin:0 0 18px;font-size:11px}.not-found h1{font-family:var(--font-serif);margin:0 0 14px;font-size:clamp(1.8rem,4vw,2.4rem);font-weight:600;line-height:1.4}.not-found p{max-width:420px;color:var(--text-secondary);margin:0 auto 26px;font-size:14.5px;line-height:1.9}.button{background:var(--accent);color:var(--on-accent);letter-spacing:.04em;border-radius:6px;padding:10px 22px;font-size:13.5px;transition:filter .2s;display:inline-block}.button:hover{filter:brightness(1.06)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.hero>*{animation:.55s cubic-bezier(.22,.61,.36,1) both rise}.hero>:nth-child(2){animation-delay:60ms}.hero>:nth-child(3){animation-delay:.12s}.hero>:nth-child(4){animation-delay:.18s}@media (width<=1320px){.post-grid{max-width:760px;display:block}.toc{display:none}.toc-mobile{display:block}}@media (width<=960px){.sidebar{visibility:hidden;width:min(86vw,320px);transition:transform .32s,visibility .32s;transform:translate(-100%);box-shadow:24px 0 60px #14120f29}.nav-open .sidebar{visibility:visible;transform:none}.icon-button.sidebar-close{display:grid}body.nav-open{overflow:hidden}.mobile-bar{z-index:50;border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);justify-content:space-between;align-items:center;height:60px;padding:0 18px;display:flex;position:sticky;top:0}.scrim{z-index:55;opacity:0;pointer-events:none;background:#14120f6b;border:0;padding:0;transition:opacity .3s;display:block;position:fixed;inset:0}.nav-open .scrim{opacity:1;pointer-events:auto}.page{margin-left:0}.main-inner{max-width:760px;padding:44px 28px 36px}.main-inner--wide{max-width:800px}.post-grid{max-width:720px}.year-label{top:76px}.content{padding-bottom:48px}.sidebar-inner{padding-top:26px}}@media (width<=720px){.main-inner{padding:32px 20px 28px}.hero{padding-bottom:36px}.hero-title{margin-top:16px;font-size:clamp(1.85rem,8vw,2.35rem);line-height:1.5}.hero-copy p{font-size:14.5px;line-height:1.9}.hero-stats{gap:6px 18px;margin-top:24px}.index-head{margin-top:38px}.year-group{margin-top:30px;display:block}.year-label{align-items:center;gap:12px;padding:0 0 12px;font-size:1rem;display:flex;position:static}.year-label:after{content:"";background:var(--border);flex:1;height:1px}.post-card{padding:20px 0 22px}.post-card-title{font-size:1.18rem}.post-card-time{display:none}.post-card-desc{font-size:13.5px}.page-head h1{font-size:clamp(1.75rem,7vw,2.2rem)}.page-head{padding-bottom:28px}.post-header{margin-bottom:30px;padding-bottom:28px}.post-header h1{font-size:clamp(1.75rem,7vw,2.2rem)}.post-desc{font-size:14.5px}.prose{font-size:1rem;line-height:1.9}.prose h2{margin-top:2.2em;font-size:1.35rem}.prose h3{font-size:1.15rem}.prose blockquote{padding-left:1em}.post-nav{flex-direction:column}.post-nav-item--next{border-top:1px solid var(--border);text-align:left;border-left:0;padding-left:0}.toc-mobile{padding:0 15px}.site-foot{flex-direction:column;gap:4px;font-size:11px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.sidebar,.mobile-bar,.scrim,.toc,.toc-mobile,.site-foot,.post-nav,.post-back{display:none!important}.page{margin-left:0}.main-inner{max-width:none;padding:0}.prose{font-size:11pt}}
