.site-header[data-v-64f8821e]{border-bottom:1px solid var(--border);height:var(--header-height)}.header-inner[data-v-64f8821e]{justify-content:space-between;align-items:center;height:100%;display:flex}.site-logo[data-v-64f8821e]{font-family:var(--serif);color:var(--text-h);letter-spacing:.02em;padding:4px 0;font-size:1.1rem;font-weight:700;text-decoration:none}.site-logo[data-v-64f8821e]:hover{color:var(--text-h)}.site-nav[data-v-64f8821e]{align-items:center;gap:4px;display:flex}.nav-link[data-v-64f8821e]{color:var(--muted);align-items:center;min-height:44px;padding:8px 16px;font-size:.88rem;text-decoration:none;display:inline-flex}.nav-link[data-v-64f8821e]:hover,.nav-link--active[data-v-64f8821e]{color:var(--text-h)}.nav-toggle-input[data-v-64f8821e]{display:none}.nav-toggle-label[data-v-64f8821e]{z-index:3;cursor:pointer;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:12px;display:none}.nav-toggle-icon[data-v-64f8821e],.nav-toggle-icon[data-v-64f8821e]:before,.nav-toggle-icon[data-v-64f8821e]:after{background:var(--text);width:20px;height:1.5px;transition:transform var(--transition), opacity var(--transition);display:block}.nav-toggle-icon[data-v-64f8821e]{position:relative}.nav-toggle-icon[data-v-64f8821e]:before,.nav-toggle-icon[data-v-64f8821e]:after{content:"";position:absolute;left:0}.nav-toggle-icon[data-v-64f8821e]:before{top:-6px}.nav-toggle-icon[data-v-64f8821e]:after{top:6px}.nav-toggle-input:checked~.nav-toggle-label .nav-toggle-icon[data-v-64f8821e]{background:0 0}.nav-toggle-input:checked~.nav-toggle-label .nav-toggle-icon[data-v-64f8821e]:before{top:0;transform:rotate(45deg)}.nav-toggle-input:checked~.nav-toggle-label .nav-toggle-icon[data-v-64f8821e]:after{top:0;transform:rotate(-45deg)}.nav-overlay[data-v-64f8821e]{display:none}@media (width<=640px){.nav-toggle-label[data-v-64f8821e]{display:inline-flex}.nav-overlay[data-v-64f8821e]{opacity:0;pointer-events:none;transition:opacity var(--transition);z-index:0;background:#0000004d;display:block;position:fixed;inset:0}.nav-toggle-input:checked~.nav-overlay[data-v-64f8821e]{opacity:1;pointer-events:auto}.site-nav[data-v-64f8821e]{width:260px;height:100svh;padding:calc(var(--header-height) + 12px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));background:var(--bg);border-left:1px solid var(--border);transition:transform var(--transition);z-index:1;overscroll-behavior:contain;flex-direction:column;align-items:stretch;gap:0;position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%)}.nav-toggle-input:checked~.site-nav[data-v-64f8821e]{transform:translate(0)}.nav-link[data-v-64f8821e]{padding:12px 16px;font-size:.95rem}}.site-footer[data-v-0037d90e]{border-top:1px solid var(--border);padding:24px 0;padding-bottom:calc(24px + env(safe-area-inset-bottom));margin-top:auto}.footer-inner[data-v-0037d90e]{text-align:center;color:var(--muted);font-size:.8rem}main[data-v-2ab15e45]{flex-direction:column;flex:1;display:flex}.home-page[data-v-fdff8cad]{padding:64px var(--page-padding-x) 80px;flex:1}.hero[data-v-fdff8cad]{padding:40px 0 48px}.site-title[data-v-fdff8cad]{letter-spacing:.04em;margin-bottom:12px;font-size:3.2rem;font-weight:700}.site-tagline[data-v-fdff8cad]{color:var(--muted);font-size:1rem}.module-rule[data-v-fdff8cad]{border:none;border-top:1px solid var(--border);margin:0}.module-section[data-v-fdff8cad]{padding:24px 0}.module-header[data-v-fdff8cad]{margin-bottom:16px}.module-name[data-v-fdff8cad]{margin-bottom:4px;font-size:1.25rem;font-weight:600}.module-desc[data-v-fdff8cad]{color:var(--muted);font-size:.92rem;line-height:1.5}.articles-hint[data-v-fdff8cad]{color:var(--muted);padding:4px 0;font-size:.9rem}.article-list[data-v-fdff8cad]{padding:0;list-style:none}.article-item[data-v-fdff8cad]{border-top:1px solid var(--border)}.article-item[data-v-fdff8cad]:first-child{border-top:none}.article-link[data-v-fdff8cad]{color:var(--text);justify-content:space-between;align-items:flex-start;gap:20px;padding:14px 0;text-decoration:none;display:flex}.article-link[data-v-fdff8cad]:hover{color:var(--text-h)}.article-main[data-v-fdff8cad]{flex-direction:column;gap:4px;min-width:0;display:flex}.article-title[data-v-fdff8cad]{color:var(--text-h);font-size:1rem;font-weight:500}.article-abstract[data-v-fdff8cad]{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;line-height:1.5;display:-webkit-box;overflow:hidden}.article-meta[data-v-fdff8cad]{color:var(--muted);flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;padding-top:2px;font-size:.78rem;display:flex}.article-author[data-v-fdff8cad]{color:var(--accent)}.pin-badge[data-v-fdff8cad]{color:var(--accent);border:1px solid var(--border);border-radius:var(--radius);vertical-align:middle;margin-left:8px;padding:0 5px;font-size:.7rem}.module-body[data-v-fdff8cad]{justify-content:space-between;align-items:center;gap:24px;padding:24px 0;display:flex}.module-info[data-v-fdff8cad]{min-width:0}.module-link[data-v-fdff8cad]{color:var(--muted);white-space:nowrap;flex-shrink:0;align-items:center;gap:6px;font-size:.9rem;text-decoration:none;display:inline-flex}.module-link[data-v-fdff8cad]:hover{color:var(--text-h)}.module-link:hover .module-arrow[data-v-fdff8cad]{transform:translate(3px)}.module-arrow[data-v-fdff8cad]{transition:transform var(--transition);font-size:1rem}@media (width<=640px){.home-page[data-v-fdff8cad]{padding:40px var(--page-padding-x) 64px}.site-title[data-v-fdff8cad]{font-size:2.2rem}.hero[data-v-fdff8cad]{padding:24px 0 36px}.article-link[data-v-fdff8cad]{flex-direction:column;gap:6px}.article-meta[data-v-fdff8cad]{flex-direction:row;align-items:center;gap:12px}.module-body[data-v-fdff8cad]{flex-direction:column;align-items:flex-start;gap:12px;padding:20px 0}}.article-page[data-v-37ed63f4]{padding:0 var(--page-padding-x) 80px;flex:1}.article-back[data-v-37ed63f4]{padding:28px 0 12px}.back-link[data-v-37ed63f4]{min-height:44px;color:var(--muted);align-items:center;font-size:.88rem;display:inline-flex}.back-link[data-v-37ed63f4]:hover{color:var(--text-h)}.article-container[data-v-37ed63f4]{max-width:var(--content-width);width:100%;margin:0 auto}.skel[data-v-37ed63f4]{background:linear-gradient(90deg, var(--code-bg) 25%, var(--border) 50%, var(--code-bg) 75%);background-size:200% 100%;height:14px;margin-bottom:14px;animation:1.6s ease-in-out infinite shimmer-37ed63f4}@keyframes shimmer-37ed63f4{0%{background-position:-200% 0}to{background-position:200% 0}}.skel--h1[data-v-37ed63f4]{width:55%;height:28px;margin-bottom:28px}.skel--line[data-v-37ed63f4]{width:90%}.skel--short[data-v-37ed63f4]{width:65%}.article-error[data-v-37ed63f4]{text-align:center;padding:80px 0}.error-status[data-v-37ed63f4]{font-family:var(--serif);color:var(--text-h);margin-bottom:8px;font-size:1.6rem}.error-msg[data-v-37ed63f4]{color:var(--muted);margin-bottom:24px}.article-meta-block[data-v-37ed63f4]{border-bottom:1px solid var(--border);margin-bottom:2rem;padding-bottom:1.4rem;overflow:visible}.meta-title[data-v-37ed63f4]{margin-bottom:.5rem;font-size:1.6rem;font-weight:700}.meta-byline[data-v-37ed63f4]{color:var(--muted);gap:12px;margin-bottom:.6rem;font-size:.82rem;display:flex}.meta-author[data-v-37ed63f4]{color:var(--accent)}.meta-abstract[data-v-37ed63f4]{color:var(--muted);margin-bottom:.6rem;font-size:.88rem;line-height:1.6}.meta-keywords[data-v-37ed63f4]{flex-wrap:wrap;gap:6px;display:flex}.kw-tag[data-v-37ed63f4]{color:var(--muted);border:1px solid var(--border);border-radius:var(--radius);padding:0 6px;font-size:.7rem;line-height:1.6}.article-content[data-v-37ed63f4]{color:var(--text);overflow-wrap:break-word;font-size:1.1rem;line-height:1.9}.article-content[data-v-37ed63f4] h1{color:var(--accent);border:none;margin:0 0 1.6rem;padding:0;font-size:2rem;font-weight:700}.article-content[data-v-37ed63f4] h2{color:var(--accent);margin:2.8rem 0 .8rem;font-size:1.4rem}.article-content[data-v-37ed63f4] h3{color:var(--accent);margin:2.2rem 0 .6rem;font-size:1.2rem}.article-content[data-v-37ed63f4] h4{color:var(--accent);margin:1.8rem 0 .5rem;font-size:1.15rem}.article-content[data-v-37ed63f4] h5{color:var(--accent);margin:1.6rem 0 .4rem;font-size:1.1rem}.article-content[data-v-37ed63f4] h6{color:var(--muted);margin:1.4rem 0 .4rem;font-size:1.1rem;font-style:italic}.article-content[data-v-37ed63f4] p{margin-bottom:.9rem}.article-content[data-v-37ed63f4] a{text-underline-offset:4px;overflow-wrap:anywhere;word-break:break-word;text-decoration:underline;text-decoration-thickness:1px}.article-content[data-v-37ed63f4] a:hover{opacity:.7}.article-content[data-v-37ed63f4] blockquote{border-left:2px solid var(--border);color:var(--muted);background:0 0;border-radius:0;margin:1.4rem 0;padding:0 0 0 1.2rem;font-style:italic}.article-content[data-v-37ed63f4] blockquote p:last-child{margin-bottom:0}.article-content[data-v-37ed63f4] code{font-family:var(--mono);background:var(--code-bg);border-radius:var(--radius);color:var(--text-h);padding:.15em .4em;font-size:.88em}.article-content[data-v-37ed63f4] pre{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius);margin:1.2rem 0;padding:1rem 1.2rem;font-size:.9em;line-height:1.6;overflow-x:auto}.article-content[data-v-37ed63f4] pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.article-content[data-v-37ed63f4] .hljs-keyword,.article-content[data-v-37ed63f4] .hljs-selector-tag,.article-content[data-v-37ed63f4] .hljs-type{color:#9d5f1f}.article-content[data-v-37ed63f4] .hljs-string,.article-content[data-v-37ed63f4] .hljs-addition{color:#5a7940}.article-content[data-v-37ed63f4] .hljs-number,.article-content[data-v-37ed63f4] .hljs-literal{color:#8e6030}.article-content[data-v-37ed63f4] .hljs-comment,.article-content[data-v-37ed63f4] .hljs-quote{color:var(--muted);font-style:italic}.article-content[data-v-37ed63f4] .hljs-function,.article-content[data-v-37ed63f4] .hljs-title{color:#7a5a2a}.article-content[data-v-37ed63f4] .hljs-attr,.article-content[data-v-37ed63f4] .hljs-attribute{color:#b07a20}.article-content[data-v-37ed63f4] .hljs-built_in,.article-content[data-v-37ed63f4] .hljs-name{color:#9d5f1f}.article-content[data-v-37ed63f4] .hljs-regexp,.article-content[data-v-37ed63f4] .hljs-deletion{color:#b84a3a}.article-content[data-v-37ed63f4] .hljs-meta,.article-content[data-v-37ed63f4] .hljs-section{color:var(--muted)}.article-content[data-v-37ed63f4] .hljs-params,.article-content[data-v-37ed63f4] .hljs-variable{color:var(--text-h)}.article-content[data-v-37ed63f4] .hljs-symbol,.article-content[data-v-37ed63f4] .hljs-bullet{color:var(--accent)}.article-content[data-v-37ed63f4] .hljs-tag{color:#6a7a8a}.article-content[data-v-37ed63f4] .hljs-emphasis{font-style:italic}.article-content[data-v-37ed63f4] .hljs-strong{font-weight:600}.article-content[data-v-37ed63f4] .hljs-link{text-decoration:underline}@media (prefers-color-scheme:dark){.article-content[data-v-37ed63f4] .hljs-keyword,.article-content[data-v-37ed63f4] .hljs-selector-tag,.article-content[data-v-37ed63f4] .hljs-type{color:#d4a96a}.article-content[data-v-37ed63f4] .hljs-string,.article-content[data-v-37ed63f4] .hljs-addition{color:#8cb86b}.article-content[data-v-37ed63f4] .hljs-number,.article-content[data-v-37ed63f4] .hljs-literal,.article-content[data-v-37ed63f4] .hljs-function,.article-content[data-v-37ed63f4] .hljs-title{color:#c9a060}.article-content[data-v-37ed63f4] .hljs-attr,.article-content[data-v-37ed63f4] .hljs-attribute{color:#d4a030}.article-content[data-v-37ed63f4] .hljs-built_in,.article-content[data-v-37ed63f4] .hljs-name{color:#d4a96a}.article-content[data-v-37ed63f4] .hljs-regexp,.article-content[data-v-37ed63f4] .hljs-deletion{color:#d07060}.article-content[data-v-37ed63f4] .hljs-tag{color:#8a9aaa}}.article-content[data-v-37ed63f4] ul,.article-content[data-v-37ed63f4] ol{margin-bottom:.9rem;padding-left:1.4rem}.article-content[data-v-37ed63f4] li{margin-bottom:.3rem}.article-content[data-v-37ed63f4] hr{border:none;border-top:1px solid var(--border);margin:2.4rem 0}.article-content[data-v-37ed63f4] img{max-width:100%;height:auto;margin:1.2rem 0}.article-content[data-v-37ed63f4] .table-wrap{-webkit-overflow-scrolling:touch;margin:1.2rem 0;overflow-x:auto}.article-content[data-v-37ed63f4] .table-wrap table{margin:0}.article-content[data-v-37ed63f4] table{border-collapse:collapse;width:100%;font-size:.95em}.article-content[data-v-37ed63f4] th,.article-content[data-v-37ed63f4] td{border:1px solid var(--border);text-align:left;padding:.5rem .8rem}.article-content[data-v-37ed63f4] th{color:var(--text-h);background:0 0;font-weight:600}.qr-wrap[data-v-37ed63f4]{margin-top:10px;display:inline-block;position:relative}.qr-trigger[data-v-37ed63f4]{color:var(--muted);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:color var(--transition), border-color var(--transition);font-size:.78rem;font-family:var(--sans);padding:4px 12px}.qr-trigger[data-v-37ed63f4]:hover{color:var(--text-h);border-color:var(--accent)}.qr-popup[data-v-37ed63f4]{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 2px 12px var(--warm-shadow);z-index:10;margin-top:10px;padding:12px;position:absolute;top:100%;left:0}.qr-image[data-v-37ed63f4]{display:block}@media (width<=640px){.article-page[data-v-37ed63f4]{padding-bottom:64px}.article-content[data-v-37ed63f4]{font-size:1rem}.article-content[data-v-37ed63f4] h1{font-size:1.5rem}.article-content[data-v-37ed63f4] h2{font-size:1.2rem}}:root{--text:#4a4a42;--text-h:#1a1a16;--bg:#fafaf7;--border:#e2e2da;--code-bg:#f2f2ec;--accent:#bb7e28;--muted:#9a9a90;--warm-shadow:#0000000a;--sans:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Heiti SC", sans-serif;--serif:"Noto Serif SC", "STSong", "Songti SC", "SimSun", "Noto Serif", Georgia, serif;--mono:"JetBrains Mono", "Fira Code", "Source Code Pro", "Cascadia Code", "Courier New", monospace;--radius:2px;--transition:.15s ease;--content-width:640px;--header-height:56px;--page-padding-x:24px;font:17px/1.6 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#b2b2a8;--text-h:#e8e8de;--bg:#1a1a16;--border:#33332a;--code-bg:#24241e;--accent:#daa44a;--muted:#787870;--warm-shadow:#0003}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;touch-action:pan-x pan-y;overscroll-behavior:contain}body{background:var(--bg);min-height:100svh;padding-bottom:env(safe-area-inset-bottom)}h1,h2,h3,h4,h5,h6{font-family:var(--serif);color:var(--text-h);font-weight:600;line-height:1.3}a{color:var(--accent);transition:color var(--transition);text-decoration:none}a:hover{color:var(--text-h)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}#app{flex-direction:column;min-height:100svh;display:flex}.container{width:100%;max-width:var(--content-width);padding:0 var(--page-padding-x);margin:0 auto}@media (width<=700px){:root{--page-padding-x:20px}}
