:root{--bg:#fbfaf7;--fg:#23262b;--muted:#6f7683;--border:#e7e4dd;--accent:#a8442c;--code-bg:#f2f0ea;--radius:8px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg:#161719;--fg:#e3e2dd;--muted:#9b9b95;--border:#2a2c30;--accent:#e08468;--code-bg:#202226}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,segoe ui,noto sans sc,pingfang sc,microsoft yahei,sans-serif;font-size:1.0625rem;line-height:1.8;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}a{color:inherit;text-decoration-color:color-mix(in srgb,var(--fg) 30%,transparent);text-underline-offset:.18em}a:hover{color:var(--accent);text-decoration-color:initial}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.container{width:100%;max-width:44rem;margin:0 auto;padding:0 1.25rem}.site-header{border-bottom:1px solid var(--border)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:1.1rem;padding-bottom:1.1rem}.brand{font-weight:650;font-size:1.05rem;letter-spacing:.01em;text-decoration:none}.nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.25rem 1.1rem;font-size:.88rem}.nav a{color:var(--muted);text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--fg)}main.container{padding-top:2.6rem;padding-bottom:4rem}.intro h1{margin:0 0 .4rem;font-size:1.9rem;line-height:1.35;letter-spacing:-.01em}.lede{margin:0;color:var(--muted)}.section-title{margin:3rem 0 .4rem;padding-bottom:.5rem;border-bottom:1px solid var(--border);font-size:.82rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.more{display:inline-block;margin-top:1.4rem;font-size:.92rem;color:var(--muted);text-decoration:none}.more:hover{color:var(--accent)}.banner{position:relative;margin:0 0 2.4rem;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:#f1ede3}.banner-img{display:block;width:100%;height:220px;object-fit:cover;object-position:center}.banner::after{content:"";position:absolute;inset:0;background:linear-gradient( 90deg,rgba(251,250,247,.93) 0%,rgba(251,250,247,.72) 32%,rgba(251,250,247,.12) 58%,rgba(251,250,247,0) 72% );pointer-events:none}.banner-caption{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:center;max-width:71%;padding:2rem 2.2rem;color:#2a2b28}.banner-quote{margin:0;font-family:noto serif sc,songti sc,stsong,simsun,serif;font-size:1.1rem;line-height:2;letter-spacing:.06em;width:100%;max-width:16.2em}.banner-cite{margin:.7rem 0 0;font-size:.78rem;letter-spacing:.08em;color:#6f7683}.section-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:0 0 1rem}.section-card{display:flex;flex-direction:column;gap:.2rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:10px;text-decoration:none}.section-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--accent) 3%,transparent)}.section-name{font-weight:600}.section-desc{font-size:.85rem;line-height:1.6;color:var(--muted)}.section-count{margin-top:.35rem;font-size:.75rem;color:var(--muted)}.empty{margin:1.2rem 0;color:var(--muted);font-size:.92rem}.post-list{list-style:none;margin:0;padding:0}.post-list li{padding:1rem 0;border-bottom:1px solid var(--border)}.post-row{display:flex;align-items:baseline;justify-content:space-between;gap:1.25rem}.post-link{font-weight:550;text-decoration:none}.post-list time{flex:none;font-size:.82rem;font-variant-numeric:tabular-nums;color:var(--muted)}.post-desc{margin:.3rem 0 0;font-size:.9rem;line-height:1.65;color:var(--muted)}.page-head h1{margin:0 0 .5rem;font-size:1.7rem;line-height:1.4}.page-desc{color:var(--muted)}.post-head{margin-bottom:2.4rem}.post-head h1{margin:0 0 .7rem;font-size:1.85rem;line-height:1.4;letter-spacing:-.01em}.meta{margin:0;font-size:.84rem;color:var(--muted)}.dot{margin:0 .35em}.tag{color:var(--muted);text-decoration:none}.tag::before{content:"#";opacity:.6}.tag:hover{color:var(--accent)}.content{font-size:1.0313rem}.content>:first-child{margin-top:0}.content h2,.content h3,.content h4{margin:2.2em 0 .7em;line-height:1.45;font-weight:650}.content h2{font-size:1.32rem;padding-bottom:.35rem;border-bottom:1px solid var(--border)}.content h3{font-size:1.12rem}.content h4{font-size:1rem}.content p{margin:1.15em 0}.content ul,.content ol{margin:1.15em 0;padding-left:1.5em}.content li{margin:.35em 0}.content li::marker{color:var(--muted)}.content blockquote{margin:1.6em 0;padding:.1em 1.1em;border-left:3px solid var(--accent);color:var(--muted)}.content blockquote p{margin:.6em 0}.content code{font-family:ui-monospace,sf mono,cascadia code,Menlo,Consolas,monospace;font-size:.88em;background:var(--code-bg);padding:.14em .4em;border-radius:4px}.content pre{margin:1.6em 0;padding:1em 1.1em;background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto;line-height:1.6}.content pre code{background:0 0;padding:0;font-size:.86rem}.content img{max-width:100%;height:auto;border-radius:6px}.content hr{margin:2.5em 0;border:0;border-top:1px solid var(--border)}.content table{width:100%;margin:1.6em 0;border-collapse:collapse;font-size:.93rem;line-height:1.6}.content th,.content td{padding:.55em .7em;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.content th{font-weight:600;color:var(--muted);white-space:nowrap}.pager{display:flex;align-items:center;justify-content:space-between;margin:2rem 0 0;font-size:.88rem;color:var(--muted)}.pager a{color:var(--muted);text-decoration:none}.pager a:hover{color:var(--accent)}.post-nav{display:flex;justify-content:space-between;gap:1.5rem;margin-top:3.5rem;padding-top:1.4rem;border-top:1px solid var(--border);font-size:.92rem}.post-nav a{max-width:46%;color:var(--muted);text-decoration:none}.post-nav a:hover{color:var(--accent)}.post-nav a:last-child{text-align:right;margin-left:auto}.term-list{list-style:none;margin:1.5rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.75rem}.term-list li{padding:.3rem .85rem;border:1px solid var(--border);border-radius:999px;font-size:.9rem}.term-list a{text-decoration:none}.term-list .count{margin-left:.25rem;font-size:.78rem;color:var(--muted)}.notfound{padding:5rem 0;text-align:center}.notfound h1{margin:0;font-size:3rem}.notfound p{color:var(--muted)}.site-footer{padding:2rem 0 3rem;border-top:1px solid var(--border);font-size:.82rem;color:var(--muted);text-align:center}.site-footer p{margin:.3rem 0}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--accent)}@media(max-width:600px){body{font-size:1rem}.header-inner{display:block;padding-top:.9rem;padding-bottom:.9rem}.brand{display:inline-block;margin-bottom:.25rem}.nav{display:grid;grid-template-columns:repeat(3,max-content);justify-content:space-between;gap:.1rem 1rem;width:100%;font-size:.85rem;line-height:1.9}.nav a{display:block;margin-right:0}main.container{padding-top:1.6rem}.intro h1,.post-head h1{font-size:1.55rem}.banner{background:#f7f3e9}.banner-img{height:220px;object-position:75% center}.banner::after{display:none}.banner-caption{position:static;max-width:100%;padding:1rem 1.1rem 1.2rem}.banner-quote{font-size:.98rem;line-height:1.85}.section-grid{grid-template-columns:1fr}.post-row{flex-direction:column;gap:.1rem}.post-list time{order:2}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.bg{background-color:#f7f7f7}.chroma{background-color:#f7f7f7;-webkit-text-size-adjust:none}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}@media(prefers-color-scheme:dark){.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{color:#e6edf3}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .or{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}}