:root{--bg:#000;--fg:#e8e8ea;--muted:#9a9aa3;--line:#222226;--accent:#ff5b84;--accent-hi:#ffb0c2;--accent-lo:#e2365f;--accent-line:#5c2534;--code-bg:#111114;--mono:ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif}:root[data-theme=light]{--bg:#fafafa;--fg:#1d1d1f;--muted:#6b6b73;--line:#e4e4e8;--accent:#ff6363;--accent-hi:#ff9a8f;--accent-lo:#c8283f;--accent-line:#ffcaca;--code-bg:#f0f0f3}:root[data-theme=sepia]{--bg:#f1e7d0;--fg:#433422;--muted:#8a7a66;--line:#c8bda8;--accent:#b8432f;--accent-hi:#d4705a;--accent-lo:#8c2a1b;--accent-line:#dcb7a4;--code-bg:#e8dcc8}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100vh;border:16px solid var(--accent);margin:0;background:var(--bg);color:var(--fg);font:16px/1.75 var(--sans);transition:background .2s,color .2s,border-color .2s}.lv-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:1000;pointer-events:none;background:var(--accent);box-shadow:0 0 8px var(--accent);transform:scaleX(0);transform-origin:0 50%;opacity:0;transition:transform .2s ease,opacity .3s ease}@media(prefers-reduced-motion:no-preference){@view-transition{navigation: auto; }::view-transition-old(root),::view-transition-new(root){animation-duration:.18s}}::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}a{color:inherit;text-decoration:none}.wrap{max-width:720px;margin:0 auto;padding:0 20px}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:24px 0 0;min-height:56px}.home-link{font-family:lv495 garamond,noto serif sc,serif;font-size:24px;font-weight:600;letter-spacing:.01em;white-space:nowrap;color:var(--accent);background-image:linear-gradient(180deg,var(--accent-hi) 0%,var(--accent) 45%,var(--accent-lo) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.home-link i{font-style:italic}.icons{display:flex;gap:18px;align-items:center;margin-left:auto}.icons a,.icons button{color:var(--fg);opacity:.85;display:inline-flex;white-space:nowrap}.icons a.on{opacity:1;color:var(--accent)}.icons .nav{font-size:14px}#theme-toggle{background:0 0;border:0;padding:0;cursor:pointer}#theme-toggle svg{display:none}:root[data-theme=light] #theme-toggle .sun,:root[data-theme=dark] #theme-toggle .moon,:root[data-theme=sepia] #theme-toggle .book{display:block}@font-face{font-family:lv495 garamond;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/cormorant-garamond-600.woff2)format("woff2");unicode-range:U+??}@font-face{font-family:lv495 garamond;font-style:italic;font-weight:600;font-display:swap;src:url(/fonts/cormorant-garamond-600-italic.woff2)format("woff2");unicode-range:U+??}.masthead{text-align:center;padding:48px 0 40px;border-bottom:1px solid var(--line)}.site-title{margin:0;font-family:lv495 garamond,cormorant garamond,noto serif sc,serif;font-weight:600;font-size:80px;line-height:1.1;letter-spacing:.01em;color:var(--accent);background-image:linear-gradient(180deg,var(--accent-hi) 0%,var(--accent) 45%,var(--accent-lo) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.site-title i{font-style:italic}.site-sub{display:flex;align-items:center;justify-content:center;gap:.8em;margin-top:12px}.site-sub::before,.site-sub::after{content:"";flex:0 0 64px;height:1px;background:linear-gradient(90deg,transparent,var(--accent))}.site-sub::after{background:linear-gradient(270deg,transparent,var(--accent))}.site-sub .dia{flex:none;width:5px;height:5px;background:var(--accent);transform:rotate(45deg)}.site-sub p{margin:0;white-space:nowrap;font-family:lv495 garamond,cormorant garamond,noto serif sc,serif;font-style:italic;font-weight:600;font-size:19px;font-variant:small-caps;text-transform:lowercase;letter-spacing:.16em;color:var(--muted)}.item{padding:30px 0;border-bottom:1px solid var(--line)}.meta{font-family:var(--mono);font-size:13px;color:var(--muted)}.item-title{font-size:22px;line-height:1.4;margin:8px 0 12px}.summary{margin:0 0 18px;color:var(--muted);font-size:15.5px}.more{display:inline-block;padding:4px 14px;font-size:14px;color:var(--accent);border:1px solid var(--accent-line);border-radius:999px;transition:border-color .15s,background .15s}.note .prose{margin-top:8px}.pager{display:flex;justify-content:space-between;align-items:center;padding:28px 0;font-size:14px}.pager a{color:var(--accent)}.pager-no{font-family:var(--mono);color:var(--muted)}.load-more-wrap{padding:32px 0 0;text-align:center}.load-more{padding:6px 28px}.footer{padding:7.5em 0 3em;text-align:center;color:var(--muted);font-size:14px}.footer-name{color:var(--accent);font-weight:700;text-decoration:underline;text-underline-offset:2px}.page-head{padding:32px 0 20px;border-bottom:1px solid var(--line)}.page-title{font-size:30px;margin:0}.page-intro{color:var(--muted);margin-top:8px}.terms{list-style:none;padding:24px 0;margin:0;display:flex;flex-wrap:wrap;gap:10px}.terms li a{display:inline-block;padding:4px 12px;border:1px solid var(--line);border-radius:999px;font-size:14px}.terms .count{font-family:var(--mono);font-size:12px;color:var(--muted);margin-left:4px}.year-title{font-family:var(--mono);font-size:18px;color:var(--muted);margin:28px 0 8px}.archive{list-style:none;padding:0;margin:0}.archive li{display:flex;gap:16px;padding:6px 0}.archive time{font-family:var(--mono);color:var(--muted);font-size:14px;flex:none}.search-box{width:100%;margin:24px 0 4px;padding:10px 14px;font:inherit;color:var(--fg);background:0 0;border:1px solid var(--line);border-radius:10px;outline:none}.search-box:focus{border-color:var(--accent)}.empty{color:var(--muted);padding:24px 0}.back{margin-top:28px}.post-head{padding:20px 0 24px;border-bottom:1px solid var(--line)}.byline{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 24px;margin-top:18px}.post-title{font-size:30px;line-height:1.35;margin:10px 0 0;text-align:center}.tags{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 10px;font-size:13px;margin-left:auto}.tags a{color:var(--muted)}.prose{padding:8px 0;overflow-wrap:anywhere}.prose h2{font-size:22px;margin:36px 0 12px}.prose h3{font-size:18px;margin:28px 0 10px}.prose p{margin:16px 0}.prose a{color:var(--accent);border-bottom:1px solid var(--accent-line)}.prose img{max-width:100%;height:auto;display:block;margin:20px auto;border-radius:8px;cursor:zoom-in}.netease{margin:20px 0}.netease iframe{display:block;border:0;border-radius:8px}.prose img.no-lb{cursor:pointer}.lb{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.9);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .2s}.lb.open{opacity:1}.lb[hidden]{display:none}.lb-fig{display:flex;flex-direction:column;align-items:center;gap:12px;margin:0;max-width:92vw}.lb-img{display:block;max-width:92vw;max-height:84vh;object-fit:contain;border-radius:6px;box-shadow:0 10px 40px rgba(0,0,0,.5)}.lb-cap{color:#ddd;font-size:14px;text-align:center}.lb-count{position:absolute;top:22px;left:50%;transform:translateX(-50%);color:#bbb;font:13px var(--mono)}.lb-btn{position:absolute;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.1);color:#fff;cursor:pointer;transition:background .15s}.lb-btn[hidden]{display:none}.lb-close{top:14px;right:14px}.lb-prev,.lb-next{top:50%;transform:translateY(-50%)}.lb-prev{left:14px}.lb-next{right:14px}.prose blockquote{margin:20px 0;padding:2px 16px;border-left:3px solid var(--accent-line);color:var(--muted)}.prose .alert{padding:10px 16px;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;background:color-mix(in srgb,var(--accent) 7%,transparent);color:var(--fg)}.prose .alert p{margin:4px 0}.prose .alert-title{font-size:14px;font-weight:600;color:var(--accent)}.prose .alert-warning,.prose .alert-caution{background:color-mix(in srgb,var(--accent) 12%,transparent)}.prose code{font-family:var(--mono);font-size:.88em;background:var(--code-bg);padding:2px 6px;border-radius:4px}.prose pre{background:var(--code-bg);padding:14px 16px;border-radius:10px;overflow-x:auto;font-size:14px;line-height:1.6}.prose pre code{background:0 0;padding:0;font-size:inherit}:root{--cb-bg:#1e1e1e;--cb-head:#181818;--cb-line:#2b2b2b;--cb-fg:#d4d4d4;--cb-muted:#8b8b8b;--tk-comment:#6a9955;--tk-keyword:#569cd6;--tk-control:#c586c0;--tk-string:#ce9178;--tk-escape:#d7ba7d;--tk-regex:#d16969;--tk-number:#b5cea8;--tk-func:#dcdcaa;--tk-type:#4ec9b0;--tk-var:#9cdcfe;--tk-const:#4fc1ff;--tk-tag:#569cd6;--tk-attr:#9cdcfe;--tk-op:#d4d4d4;--tk-ins:#89d185;--tk-del:#f48771}:root[data-theme=light],:root[data-theme=sepia]{--cb-bg:#ffffff;--cb-head:#f3f3f3;--cb-line:#e5e5e5;--cb-fg:#1f1f1f;--cb-muted:#6e6e6e;--tk-comment:#008000;--tk-keyword:#0000ff;--tk-control:#af00db;--tk-string:#a31515;--tk-escape:#ee0000;--tk-regex:#811f3f;--tk-number:#098658;--tk-func:#795e26;--tk-type:#267f99;--tk-var:#001080;--tk-const:#0070c1;--tk-tag:#800000;--tk-attr:#e50000;--tk-op:#000000;--tk-ins:#098658;--tk-del:#a31515}:root[data-theme=sepia]{--cb-bg:#fbf6ea;--cb-head:#efe4cc;--cb-line:#dccfb4;--cb-fg:#2d2418;--cb-muted:#7a6c58}.prose .code{margin:20px 0;border:1px solid var(--cb-line);border-radius:10px;overflow:hidden;background:var(--cb-bg)}.code-head{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 4px 14px;background:var(--cb-head);border-bottom:1px solid var(--cb-line)}.code-lang{font:12px var(--mono);color:var(--cb-muted);text-transform:lowercase}.code-copy{display:inline-flex;padding:6px;border:0;border-radius:6px;background:0 0;color:var(--cb-muted);cursor:pointer}.code-copy .i-done,.code-copy.done .i-copy{display:none}.code-copy.done .i-done{display:block}.code-copy.done{color:#3fb950}.prose .code .highlight,.prose .code pre{margin:0}.prose .code pre{padding:14px 16px;border-radius:0;background:var(--cb-bg);color:var(--cb-fg);font:13.5px/1.6 Menlo,Consolas,sf mono,ui-monospace,monospace;tab-size:4;overflow-x:auto}.prose .code pre code{font:inherit;color:inherit;background:0 0;padding:0}.chroma .line{display:inline}.chroma .c,.chroma .c1,.chroma .cm,.chroma .cs,.chroma .ch{color:var(--tk-comment);font-style:normal}.chroma .cp,.chroma .cpf,.chroma .kn{color:var(--tk-control)}.chroma .k,.chroma .kd,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .kc,.chroma .kv,.chroma .ow,.chroma .bp,.chroma .si{color:var(--tk-keyword)}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .sh,.chroma .sx,.chroma .ss{color:var(--tk-string)}.chroma .se{color:var(--tk-escape)}.chroma .sr{color:var(--tk-regex)}.chroma .m,.chroma .mi,.chroma .mf,.chroma .mh,.chroma .mo,.chroma .mb,.chroma .il{color:var(--tk-number)}.chroma .nf,.chroma .fm,.chroma .nb,.chroma .nd{color:var(--tk-func)}.chroma .nc,.chroma .nn,.chroma .ne{color:var(--tk-type)}.chroma .nv,.chroma .vi,.chroma .vg,.chroma .vc,.chroma .vm{color:var(--tk-var)}.chroma .no{color:var(--tk-const)}.chroma .nt{color:var(--tk-tag)}.chroma .na{color:var(--tk-attr)}.chroma .o{color:var(--tk-op)}.chroma .gi{color:var(--tk-ins)}.chroma .gd{color:var(--tk-del)}.chroma .gh,.chroma .gu{color:var(--tk-keyword);font-weight:600}.chroma .err{color:inherit;background:0 0}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);padding:6px 10px}.prose hr{border:0;border-top:1px solid var(--line);margin:32px 0}.post-cover{margin:24px 0 0}.post-cover img{display:block;width:100%;height:auto;border-radius:8px}.prose :is(h1,h2,h3,h4){scroll-margin-top:24px}.toc{margin:24px 0 0;padding:10px 12px;border:1px solid var(--line);border-radius:8px}.toc summary{cursor:pointer;color:var(--muted);font-size:14px;font-weight:600}.toc ol{list-style:none;margin:8px 0 4px;padding:0}.toc li{border-left:2px solid transparent;transition:border-color .2s}.toc li.d1{padding-left:.75rem}.toc li.active{border-left-color:var(--accent)}.toc a{display:block;padding:.25rem .75rem;color:var(--muted);font-size:.8rem;line-height:1.4;transition:color .2s}.toc li.active a{color:var(--accent);font-weight:500}@media(min-width:1400px){.toc{position:fixed;top:50%;right:2rem;z-index:100;transform:translateY(-50%);max-width:220px;max-height:70vh;overflow-y:auto;margin:0;padding:1rem;background:color-mix(in srgb,var(--bg) 80%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.toc>summary{display:none}.toc ol{margin:0}}.post-nav{display:flex;justify-content:space-between;gap:16px;padding:28px 0;border-top:1px solid var(--line);font-size:14px}.post-nav a{color:var(--accent);max-width:48%}@media(max-width:520px){body{border-width:8px}.byline{flex-direction:column;align-items:flex-start;gap:6px}.byline .tags{justify-content:flex-start;margin-left:0}.site-title{font-size:56px}.site-sub{gap:.6em}.site-sub p{font-size:15px;letter-spacing:.12em}.site-sub::before,.site-sub::after{flex-basis:24px}.item-title,.post-title{font-size:20px}.wrap{padding:0 16px}.topbar{gap:10px}.icons{gap:8px}}.lang-switch{font-weight:600}.friends{list-style:none;padding:24px 0 8px;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.friend{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;transition:border-color .15s}.friend-avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;flex:none;background:var(--code-bg)}.friend-text{display:flex;flex-direction:column;min-width:0}.friend-name{font-weight:600}.friend-desc{color:var(--muted);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(hover:hover){.icons a:hover,.icons button:hover{opacity:1;color:var(--accent)}.item-title a:hover{color:var(--accent)}.more:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.terms li a:hover{border-color:var(--accent);color:var(--accent)}.archive a:hover{color:var(--accent)}.tags a:hover{color:var(--accent)}.lb-btn:hover{background:rgba(255,255,255,.22)}.toc a:hover{color:var(--fg)}.friend:hover{border-color:var(--accent)}.code-copy:hover{color:var(--cb-fg);background:color-mix(in srgb,var(--cb-fg) 10%,transparent)}}