:root{--bg:#f6f6f2;--surface:#ffffff;--surface-soft:#fbfcff;--text:#1f252d;--muted:#6d7682;--line:#e6e9ee;--accent:#5f7fff;--max:760px;--radius:14px;--shadow-soft:0 8px 24px rgba(22, 30, 44, 0.06);--code-bg:#e9edf3}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111722;--surface:#171f2a;--surface-soft:#1b2431;--text:#e7edf6;--muted:#9faabd;--line:#273446;--accent:#9fb4ff;--shadow-soft:0 8px 24px rgba(0, 0, 0, 0.22);--code-bg:#0f1622}}:root[data-theme=dark]{--bg:#111722;--surface:#171f2a;--surface-soft:#1b2431;--text:#e7edf6;--muted:#9faabd;--line:#273446;--accent:#9fb4ff;--shadow-soft:0 8px 24px rgba(0, 0, 0, 0.22);--code-bg:#0f1622}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--text);font-family:inter,pingfang sc,noto sans sc,system-ui,sans-serif;line-height:1.8}a{color:inherit;text-decoration:none;transition:color .2s ease,transform .2s ease}a:hover{color:var(--accent)}.container{width:min(1100px,92vw);margin:0 auto}#reading-progress{position:fixed;top:0;left:0;height:2px;width:0;z-index:1000;background:linear-gradient(90deg,var(--accent),#7ed1ff)}.site-header{position:sticky;top:0;z-index:200;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg),var(--surface-soft) 26%);backdrop-filter:blur(8px)}.nav{min-height:64px;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:0 clamp(16px,4vw,42px)}.brand{font-weight:700;font-size:1.02rem;letter-spacing:.01em}.menu{display:inline-flex;align-items:center;gap:.8rem}.menu-primary{display:inline-flex;align-items:center;gap:.55rem;padding-right:.25rem;border-right:1px solid color-mix(in srgb,var(--line),transparent 22%)}.menu-link{color:var(--muted);padding:.28rem .55rem;border-radius:8px;font-size:.94rem}.menu-link:hover{color:var(--text);background:color-mix(in srgb,var(--surface),transparent 45%)}.menu-link.is-active{color:var(--text);background:color-mix(in srgb,var(--accent),transparent 88%);border:1px solid color-mix(in srgb,var(--accent),transparent 68%)}.menu-link.is-active:hover{color:var(--text)}.theme-toggle{border:1px solid var(--line);background:color-mix(in srgb,var(--surface),transparent 15%);color:var(--muted);border-radius:999px;padding:.18rem .55rem;font:inherit;line-height:1.2;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease}.theme-toggle:hover{color:var(--text);border-color:var(--accent)}.page-shell{flex:1 0 auto;padding:2.2rem min(4vw,2.4rem)3rem;animation:fadein .28s ease both}@keyframes fadein{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}h1,h2,h3{line-height:1.3;margin:0 0 .8rem}h1{font-size:clamp(1.75rem,3vw,2.5rem)}p{margin:0 0 1rem}.home-intro{width:min(var(--max),100%);margin:0 auto;padding:2.2rem 0 1.2rem}.taxonomy-links{width:min(var(--max),100%);margin:0 auto 1rem;display:flex;gap:.6rem;flex-wrap:wrap}.home-section{margin-top:1.4rem}.section-head{width:min(var(--max),100%);margin:0 auto .7rem;display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.section-head h2{margin-bottom:0;font-size:clamp(1.2rem,2.2vw,1.5rem)}.section-link{color:var(--muted);font-size:.92rem}.section-link:hover{color:var(--accent)}.list-head{width:min(var(--max),100%);margin:0 auto 1rem}.list-head h1{margin-bottom:0}.taxonomy-links a,.terms a,.term-card{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.22rem .72rem;font-size:.9rem}.post-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem}.post-card{background:color-mix(in srgb,var(--surface),var(--surface-soft) 26%);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow-soft);transition:transform .2s ease}.post-card:hover{transform:translateY(-3px)}.cover-link{display:block;border-radius:calc(var(--radius) - 2px);overflow:hidden;margin-bottom:.8rem}.cover{width:100%;height:auto;display:block;transition:transform .35s ease}.cover-link:hover .cover{transform:scale(1.03)}.post-meta{color:var(--muted);font-size:.9rem}.post-title{margin:0 0 .35rem;font-size:clamp(1.12rem,2vw,1.35rem)}.post-title a{color:var(--text)}.post-title a:hover{color:var(--accent)}.post-summary{color:color-mix(in srgb,var(--text),var(--muted) 20%)}.post-list-compact{width:min(var(--max),100%);margin:0 auto;border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb,var(--surface),var(--surface-soft) 15%);overflow:hidden}.post-row{padding:.9rem 1rem;border-bottom:1px solid color-mix(in srgb,var(--line),transparent 12%)}.post-row:last-child{border-bottom:0}.post-row-title{margin:0 0 .28rem;font-size:clamp(1.03rem,1.8vw,1.2rem)}.post-row-title a{color:var(--text)}.post-row-title a:hover{color:var(--accent)}.post-row-meta{margin:0 0 .2rem;color:var(--muted);font-size:.86rem}.post-row-summary{margin:0 0 .35rem;color:color-mix(in srgb,var(--text),var(--muted) 22%);font-size:.92rem}.post-row-terms{margin:0;color:var(--muted);font-size:.86rem}.post-row-terms a{color:var(--muted)}.post-row-terms a:hover{color:var(--accent)}.single{width:min(var(--max),100%);margin:0 auto}.single-header{margin-bottom:1rem}.single-summary{color:color-mix(in srgb,var(--text),var(--muted) 25%);margin-bottom:.7rem}.toc-wrap{border:1px solid var(--line);border-radius:var(--radius);padding:.8rem 1rem;margin:1rem 0;background:color-mix(in srgb,var(--surface-soft),transparent 16%)}.post-content img{max-width:100%;height:auto;display:block;margin:1rem auto;border-radius:12px;cursor:zoom-in}.lazy-image{opacity:.65;filter:blur(10px);transition:opacity .35s ease,filter .35s ease}.lazy-image.loaded{opacity:1;filter:blur(0)}.image-lightbox{position:fixed;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.78);opacity:0;pointer-events:none;transition:opacity .2s ease;z-index:1200}.image-lightbox.open{opacity:1;pointer-events:auto}.image-lightbox img{max-width:92vw;max-height:88vh;border-radius:12px}pre{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);padding:.95rem 1rem;margin:1rem 0 1.2rem;background:var(--code-bg);box-shadow:var(--shadow-soft);line-height:1.65;font-size:.92rem;tab-size:2}.highlight{border:1px solid var(--line);border-radius:var(--radius);background:var(--code-bg);box-shadow:var(--shadow-soft);margin:1rem 0 1.2rem;overflow:hidden}.highlight pre{border:0;box-shadow:none;margin:0;border-radius:0;background:0 0}.highlight table,.highlight td,.highlight tr{border:0 !important}.highlight>div:not(.code-toolbar),.highlight pre,.highlight pre[style]{background-color:var(--code-bg) !important}.code-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.52rem .72rem;border-bottom:1px solid color-mix(in srgb,var(--line),transparent 12%);background:color-mix(in srgb,var(--surface),var(--code-bg) 42%)}.code-lang{font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:color-mix(in srgb,var(--muted),var(--text) 22%);font-weight:600}.code-copy{border:1px solid color-mix(in srgb,var(--line),transparent 4%);background:color-mix(in srgb,var(--surface),transparent 12%);color:var(--muted);border-radius:8px;padding:.2rem .5rem;font-size:.78rem;line-height:1.2;cursor:pointer;transition:color .2s ease,border-color .2s ease,background-color .2s ease}.code-copy:hover{color:var(--text);border-color:var(--accent)}.highlight .chroma,.highlight .chroma code,.highlight .chroma pre{background:0 0 !important}.highlight .chroma{color:#1f2328}.highlight .chroma .c,.highlight .chroma .cm,.highlight .chroma .c1,.highlight .chroma .cs{color:#6e7781}.highlight .chroma .k,.highlight .chroma .kd,.highlight .chroma .kn,.highlight .chroma .kp,.highlight .chroma .kr,.highlight .chroma .kt{color:#cf222e}.highlight .chroma .s,.highlight .chroma .sa,.highlight .chroma .sb,.highlight .chroma .sc,.highlight .chroma .dl,.highlight .chroma .sd,.highlight .chroma .s2,.highlight .chroma .se,.highlight .chroma .sh,.highlight .chroma .si,.highlight .chroma .sx,.highlight .chroma .sr,.highlight .chroma .s1,.highlight .chroma .ss{color:#0a3069}.highlight .chroma .m,.highlight .chroma .mb,.highlight .chroma .mf,.highlight .chroma .mh,.highlight .chroma .mi,.highlight .chroma .il,.highlight .chroma .mo{color:#0550ae}.highlight .chroma .na,.highlight .chroma .nb,.highlight .chroma .nc,.highlight .chroma .nd,.highlight .chroma .ne,.highlight .chroma .nf,.highlight .chroma .nl,.highlight .chroma .nn,.highlight .chroma .nt,.highlight .chroma .nv,.highlight .chroma .fm{color:#8250df}.highlight .chroma .o,.highlight .chroma .ow{color:#1f2328}.highlight .chroma .lnt,.highlight .chroma .ln,.highlight .chroma .lntd:first-child{color:#6e7781}:root[data-theme=dark] .highlight .chroma{color:#e6edf3}:root[data-theme=dark] .highlight .chroma .c,:root[data-theme=dark] .highlight .chroma .cm,:root[data-theme=dark] .highlight .chroma .c1,:root[data-theme=dark] .highlight .chroma .cs{color:#8b949e}:root[data-theme=dark] .highlight .chroma .k,:root[data-theme=dark] .highlight .chroma .kd,:root[data-theme=dark] .highlight .chroma .kn,:root[data-theme=dark] .highlight .chroma .kp,:root[data-theme=dark] .highlight .chroma .kr,:root[data-theme=dark] .highlight .chroma .kt{color:#ff7b72}:root[data-theme=dark] .highlight .chroma .s,:root[data-theme=dark] .highlight .chroma .sa,:root[data-theme=dark] .highlight .chroma .sb,:root[data-theme=dark] .highlight .chroma .sc,:root[data-theme=dark] .highlight .chroma .dl,:root[data-theme=dark] .highlight .chroma .sd,:root[data-theme=dark] .highlight .chroma .s2,:root[data-theme=dark] .highlight .chroma .se,:root[data-theme=dark] .highlight .chroma .sh,:root[data-theme=dark] .highlight .chroma .si,:root[data-theme=dark] .highlight .chroma .sx,:root[data-theme=dark] .highlight .chroma .sr,:root[data-theme=dark] .highlight .chroma .s1,:root[data-theme=dark] .highlight .chroma .ss{color:#a5d6ff}:root[data-theme=dark] .highlight .chroma .m,:root[data-theme=dark] .highlight .chroma .mb,:root[data-theme=dark] .highlight .chroma .mf,:root[data-theme=dark] .highlight .chroma .mh,:root[data-theme=dark] .highlight .chroma .mi,:root[data-theme=dark] .highlight .chroma .il,:root[data-theme=dark] .highlight .chroma .mo{color:#79c0ff}:root[data-theme=dark] .highlight .chroma .na,:root[data-theme=dark] .highlight .chroma .nb,:root[data-theme=dark] .highlight .chroma .nc,:root[data-theme=dark] .highlight .chroma .nd,:root[data-theme=dark] .highlight .chroma .ne,:root[data-theme=dark] .highlight .chroma .nf,:root[data-theme=dark] .highlight .chroma .nl,:root[data-theme=dark] .highlight .chroma .nn,:root[data-theme=dark] .highlight .chroma .nt,:root[data-theme=dark] .highlight .chroma .nv,:root[data-theme=dark] .highlight .chroma .fm{color:#d2a8ff}:root[data-theme=dark] .highlight .chroma .o,:root[data-theme=dark] .highlight .chroma .ow,:root[data-theme=dark] .highlight .chroma .lnt,:root[data-theme=dark] .highlight .chroma .ln,:root[data-theme=dark] .highlight .chroma .lntd:first-child{color:#8b949e}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .highlight .chroma{color:#e6edf3}:root:not([data-theme=light]) .highlight .chroma .c,:root:not([data-theme=light]) .highlight .chroma .cm,:root:not([data-theme=light]) .highlight .chroma .c1,:root:not([data-theme=light]) .highlight .chroma .cs{color:#8b949e}:root:not([data-theme=light]) .highlight .chroma .k,:root:not([data-theme=light]) .highlight .chroma .kd,:root:not([data-theme=light]) .highlight .chroma .kn,:root:not([data-theme=light]) .highlight .chroma .kp,:root:not([data-theme=light]) .highlight .chroma .kr,:root:not([data-theme=light]) .highlight .chroma .kt{color:#ff7b72}:root:not([data-theme=light]) .highlight .chroma .s,:root:not([data-theme=light]) .highlight .chroma .sa,:root:not([data-theme=light]) .highlight .chroma .sb,:root:not([data-theme=light]) .highlight .chroma .sc,:root:not([data-theme=light]) .highlight .chroma .dl,:root:not([data-theme=light]) .highlight .chroma .sd,:root:not([data-theme=light]) .highlight .chroma .s2,:root:not([data-theme=light]) .highlight .chroma .se,:root:not([data-theme=light]) .highlight .chroma .sh,:root:not([data-theme=light]) .highlight .chroma .si,:root:not([data-theme=light]) .highlight .chroma .sx,:root:not([data-theme=light]) .highlight .chroma .sr,:root:not([data-theme=light]) .highlight .chroma .s1,:root:not([data-theme=light]) .highlight .chroma .ss{color:#a5d6ff}:root:not([data-theme=light]) .highlight .chroma .m,:root:not([data-theme=light]) .highlight .chroma .mb,:root:not([data-theme=light]) .highlight .chroma .mf,:root:not([data-theme=light]) .highlight .chroma .mh,:root:not([data-theme=light]) .highlight .chroma .mi,:root:not([data-theme=light]) .highlight .chroma .il,:root:not([data-theme=light]) .highlight .chroma .mo{color:#79c0ff}:root:not([data-theme=light]) .highlight .chroma .na,:root:not([data-theme=light]) .highlight .chroma .nb,:root:not([data-theme=light]) .highlight .chroma .nc,:root:not([data-theme=light]) .highlight .chroma .nd,:root:not([data-theme=light]) .highlight .chroma .ne,:root:not([data-theme=light]) .highlight .chroma .nf,:root:not([data-theme=light]) .highlight .chroma .nl,:root:not([data-theme=light]) .highlight .chroma .nn,:root:not([data-theme=light]) .highlight .chroma .nt,:root:not([data-theme=light]) .highlight .chroma .nv,:root:not([data-theme=light]) .highlight .chroma .fm{color:#d2a8ff}:root:not([data-theme=light]) .highlight .chroma .o,:root:not([data-theme=light]) .highlight .chroma .ow,:root:not([data-theme=light]) .highlight .chroma .lnt,:root:not([data-theme=light]) .highlight .chroma .ln,:root:not([data-theme=light]) .highlight .chroma .lntd:first-child{color:#8b949e}}pre code{font-family:jetbrains mono,cascadia code,sfmono-regular,Consolas,monospace;background:0 0;border:0;padding:0;color:inherit}:not(pre)>code{font-family:jetbrains mono,cascadia code,sfmono-regular,Consolas,monospace;font-size:.88em;padding:.12rem .38rem;border-radius:7px;border:1px solid color-mix(in srgb,var(--line),transparent 8%);background:color-mix(in srgb,var(--surface-soft),var(--bg) 28%);color:color-mix(in srgb,var(--text),var(--accent) 16%)}.chroma{border-radius:calc(var(--radius) - 2px)}.chroma .lnt,.chroma .ln,.chroma .lntd:first-child{color:color-mix(in srgb,var(--muted),var(--text) 8%)}.terms-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem}.term-card{border-radius:12px;padding:.58rem .8rem;background:var(--surface);display:inline-flex;justify-content:space-between}.pagination{width:min(var(--max),100%);margin:1.2rem auto 0;display:flex;align-items:center;justify-content:space-between;gap:.7rem}.page-link{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.28rem .74rem;font-size:.9rem}.page-state{color:var(--muted);font-size:.9rem}.site-footer{margin-top:auto;border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg),var(--surface-soft) 20%)}.footer-wrap{min-height:70px;display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:.93rem;gap:1rem;padding:0 clamp(16px,4vw,42px)}.footer-main,.footer-links{margin:0}.footer-links a{color:var(--muted)}.footer-links a:hover{color:var(--text)}@media(max-width:860px){.post-list{grid-template-columns:1fr}}@media(max-width:560px){.nav{min-height:58px}.menu{gap:.55rem}.menu-primary{gap:.35rem;padding-right:.2rem}.menu-link{padding:.2rem .45rem;font-size:.9rem}.nav,.footer-wrap{padding-inline:12px}.footer-wrap{flex-direction:column;justify-content:center;gap:.2rem}}