:root{--toc-width: 260px;--sidebar-width: 260px;--header-height: 48px;--footer-height: 48px;--primary: #3e4045;--primary-light: #e8f0ff;--primary-hover: #f0e8de;--text-title: #2c2e33;--text-body: #3e4045;--text-secondary: #6b6f78;--text-placeholder: #9499a2;--text-disabled: #c0c4cc;--bg-body: #fcf7f0;--bg-container: #faf3e9;--bg-hover: #f0e8de;--bg-active: #e8f0ff;--border-default: #e0dad3;--border-light: #ece6df;--header-glass-bg: rgba(252, 247, 240, .7);--header-glass-border: rgba(224, 218, 211, .7);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--code-bg: #faf4ed;--code-inline-bg: rgba(51, 112, 255, .1);--code-inline-color: #476582;--code-line-number: #9b9fa8;--code-line-bg: #f3ede6;--code-copy-bg: rgba(0, 0, 0, .03);--code-copy-hover: rgba(0, 0, 0, .06);--code-copy-text: #5f6368;--code-copy-success: #16a34a;--code-copy-error: #dc2626;--code-token-comment: #6e7781;--code-token-punctuation: #24292f;--code-token-boolean: #0550ae;--code-token-string: #0a3069;--code-token-operator: #7e4f00;--code-token-keyword: #cf222e;--code-token-function: #8250df;--code-token-variable: #953800;--scrollbar-track: rgba(0, 0, 0, .04);--scrollbar-thumb: rgba(0, 0, 0, .18);--scrollbar-thumb-hover: rgba(0, 0, 0, .26)}[data-theme=dark]{--primary: #3370ff;--primary-light: rgba(51, 112, 255, .15);--primary-hover: #5a8fff;--text-title: #eceef0;--text-body: #d4d8dd;--text-secondary: #9aa2b0;--text-placeholder: #6e7683;--text-disabled: #4f5662;--text-active: #ffffff;--bg-body: #121212;--bg-container: #1a1c1e;--bg-hover: #242628;--bg-active: rgba(51, 112, 255, .25);--border-default: #33373b;--border-light: #262a2e;--header-glass-bg: rgba(18, 18, 18, .7);--header-glass-border: rgba(51, 55, 59, .7);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .6);--shadow-md: 0 4px 12px rgba(0, 0, 0, .8);--code-bg: #1b1e21;--code-inline-bg: rgba(51, 112, 255, .2);--code-inline-color: #8cb4ff;--code-line-number: #7b8496;--code-line-bg: #22262a;--code-copy-bg: rgba(255, 255, 255, .05);--code-copy-hover: rgba(255, 255, 255, .1);--code-copy-text: #b0b7c5;--code-token-comment: #8b949e;--code-token-punctuation: #d4d8dd;--code-token-boolean: #79c0ff;--code-token-string: #a5d6ff;--code-token-operator: #f2cc60;--code-token-keyword: #ff7b72;--code-token-function: #d2a8ff;--code-token-variable: #ffa657;--scrollbar-track: rgba(255, 255, 255, .04);--scrollbar-thumb: rgba(255, 255, 255, .16);--scrollbar-thumb-hover: rgba(255, 255, 255, .24)}[data-theme=dark] .nav-item-file.active,[data-theme=dark] .nav-dir.active>.nav-dir-header .nav-dir-name,[data-theme=dark] .toc-nav a.active{color:var(--text-active)}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg-container);color:var(--text-body);line-height:1.5;font-size:14px}.icon{display:inline-flex;align-items:center;justify-content:center;line-height:1}.icon svg{width:100%;height:100%;display:block}.icon-14{width:14px;height:14px}.icon-16{width:16px;height:16px}button,input,textarea,select{font-family:inherit}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px;border:2px solid var(--scrollbar-track)}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.app-container{display:flex;min-height:100vh}.main-content{flex:1;margin-left:0;margin-right:0;min-height:100vh;background-color:var(--bg-container)}.view{max-width:var(--view-max-width, 850px);margin:0 auto;padding:calc(var(--header-height) + 10px) 56px calc(var(--footer-height) + 10px);background-color:var(--bg-body);border-left:1px solid var(--header-glass-border);border-right:1px solid var(--header-glass-border);position:relative;z-index:90;min-height:100vh}.app-container.simple-page .main-content{margin-left:0;margin-right:0}.app-container.simple-page .view{max-width:720px;padding:var(--header-height) 24px var(--footer-height)}.site-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:var(--header-glass-bg);border-bottom:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);z-index:101;transition:transform .25s ease,opacity .2s ease}.site-header.is-hidden{transform:translateY(calc(-100% + 6px));opacity:.35}.header-content{max-width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 24px}.header-left{display:flex;align-items:center;gap:12px}.site-logo{width:18px;height:18px;flex-shrink:0}.site-title{font-size:15px;font-weight:600;color:var(--text-title);margin:0;cursor:pointer;transition:color .15s}.site-title:hover{color:var(--primary)}.header-divider{width:1px;height:16px;background:var(--border-default)}.site-description{font-size:13px;color:var(--text-placeholder);margin:0}.header-nav{display:flex;gap:4px;align-items:center}.theme-toggle-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;border-radius:6px;cursor:pointer;color:var(--text-secondary);transition:all .15s}.theme-toggle-btn:hover{background:var(--bg-hover);color:var(--text-title)}.header-nav .nav-link{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary);text-decoration:none;padding:6px 12px;border-radius:6px;transition:all .15s}.header-nav .nav-link:hover{background:var(--bg-hover);color:var(--text-title)}.site-footer{position:fixed;bottom:0;left:0;right:0;height:var(--footer-height);background:var(--header-glass-bg);border-top:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);z-index:101;transition:transform .25s ease,opacity .2s ease}.site-footer.is-hidden{transform:translateY(calc(100% - 6px));opacity:.35}.footer-content{height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 24px;font-size:12px;color:var(--text-placeholder)}.footer-left,.footer-right{display:flex;align-items:center;gap:8px}.footer-divider{color:var(--text-disabled)}.footer-content a{color:var(--text-secondary);text-decoration:none;transition:color .15s}.footer-right a:hover{color:#6a68df}.immersive-hint{position:fixed;left:0;right:0;top:54px;display:flex;align-items:flex-start;justify-content:center;z-index:2205;pointer-events:none}.immersive-hint-card{width:min(420px,calc(100vw - 32px));position:relative;background:var(--header-glass-bg);border:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-radius:12px;box-shadow:0 18px 60px #0000002e;overflow:hidden;pointer-events:auto}.immersive-hint-close{position:absolute;left:10px;top:10px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--header-glass-border);background:transparent;color:var(--text-placeholder);cursor:pointer;transition:background .15s,color .15s}.immersive-hint-close:hover{background:var(--bg-hover);color:var(--text-body)}.immersive-hint-text{padding:14px 16px;font-size:13px;color:var(--text-body);text-align:center}.immersive-hint-progress{height:3px;background:#00000014}.immersive-hint-bar{height:100%;background:var(--primary);transform-origin:left;animation:immersiveHintDeplete 3s linear forwards}@keyframes immersiveHintDeplete{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.sidebar-overlay,.menu-fab-btn{display:none}.sidebar{width:var(--sidebar-width);background:var(--header-glass-bg);border-left:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);display:flex;flex-direction:column;position:fixed;top:var(--header-height);height:calc(100vh - var(--header-height) - var(--footer-height));overflow:hidden;z-index:100;transition:transform .2s}@media(min-width:1381px){.sidebar{left:calc(50% - (var(--view-max-width, 850px) / 2) - var(--sidebar-width));z-index:80;border-left:1px solid var(--header-glass-border);box-shadow:none}.sidebar.collapsed{transform:translate(calc(var(--sidebar-width) + 2px));pointer-events:none}}.sidebar-header{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--text-secondary);padding:12px 16px;flex-shrink:0;border-bottom:1px solid var(--header-glass-border)}.file-header{display:flex;align-items:center;gap:6px;width:100%}.file-header .icon{color:var(--text-placeholder);flex:0 0 16px}.file-header-title{flex:1}.sidebar-toggle-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;margin-left:auto;background:transparent;border:none;color:var(--text-placeholder);cursor:pointer;border-radius:4px;transition:all .15s}.sidebar-toggle-btn:hover{background:var(--bg-hover);color:var(--text-body)}@media(max-width:768px){.sidebar-toggle-btn{display:none}}.nav-menu{flex:1;overflow-y:auto;padding:4px 8px 16px;scrollbar-width:none;-ms-overflow-style:none}.nav-menu::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}.nav-list{list-style:none}.nav-dir{list-style:none;margin:0}.nav-dir-header{padding:6px 12px;display:flex;align-items:center;gap:6px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s;font-size:13px;color:var(--text-body);font-weight:500;border-radius:6px;margin:1px 0;position:relative}.nav-dir-header:hover{background-color:var(--bg-hover)}.nav-dir-toggle{font-size:10px;transition:transform .15s;color:var(--text-placeholder);display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.nav-dir.expanded>.nav-dir-header>.nav-dir-toggle{transform:rotate(90deg)}.nav-dir-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-dir-name.has-readme{color:var(--text-body);cursor:pointer;transition:color .15s}.nav-dir-name.has-readme:hover{color:var(--primary)}.nav-dir.active>.nav-dir-header .nav-dir-name{color:var(--primary);font-weight:500}.nav-dir.active>.nav-dir-header{background-color:var(--bg-active)}.nav-dir.active>.nav-dir-header:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:16px;background:var(--primary);border-radius:0 2px 2px 0}.nav-dir-children{list-style:none;padding:0 0 0 20px;margin:0}.nav-item-file{padding:6px 12px;cursor:pointer;transition:all .15s;font-size:13px;display:flex;align-items:center;gap:8px;color:var(--text-secondary);border-radius:6px;margin:1px 0;position:relative}.nav-item-file:hover{background-color:var(--bg-hover);color:var(--text-body)}.nav-item-file.active{background-color:var(--bg-active);color:var(--primary)}.nav-item-file.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:16px;background:var(--primary);border-radius:0 2px 2px 0}.nav-item-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.nav-file-icon{flex-shrink:0;color:inherit}.nav-item-file.active .nav-file-icon{color:var(--primary)}.toc-sidebar{width:var(--toc-width);background:var(--header-glass-bg);border-right:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);display:flex;flex-direction:column;position:fixed;right:0;top:var(--header-height);height:calc(100vh - var(--header-height) - var(--footer-height));overflow:hidden;z-index:99;transition:transform .2s}.toc-sidebar.collapsed{transform:translate(var(--toc-width))}.toc-header{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:var(--text-secondary);padding:12px 16px;border-bottom:1px solid var(--header-glass-border);flex-shrink:0;justify-content:flex-start}.toc-header .icon{color:var(--text-placeholder);flex:0 0 16px}.toc-title{text-align:right;flex:1}.toc-toggle-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;color:var(--text-placeholder);cursor:pointer;border-radius:4px;transition:all .15s}.toc-toggle-btn:hover{background:var(--bg-hover);color:var(--text-body)}.toc-toggle-btn .icon svg{transition:transform .2s}.toc-sidebar.collapsed .toc-toggle-btn .icon svg{transform:rotate(180deg)}.toc-expand-btn{display:none;position:fixed;right:0;top:calc(var(--header-height) + 60px);width:28px;height:40px;background:var(--header-glass-bg);border:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-right:none;border-radius:6px 0 0 6px;cursor:pointer;z-index:98;align-items:center;justify-content:center;color:var(--text-placeholder);transition:all .15s;box-shadow:-2px 0 8px #0000000f}.toc-expand-btn:hover{background:var(--header-glass-bg);color:var(--text-body)}.toc-expand-btn.show{display:flex}.sidebar-expand-btn{display:none;position:fixed;left:0;top:calc(var(--header-height) + 60px);width:28px;height:40px;background:var(--header-glass-bg);border:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-left:none;border-radius:0 6px 6px 0;cursor:pointer;z-index:98;align-items:center;justify-content:center;color:var(--text-placeholder);transition:all .15s;box-shadow:2px 0 8px #0000000f}@media(min-width:1381px){.toc-sidebar{right:calc(50% - (var(--view-max-width, 850px) / 2) - var(--toc-width));z-index:79;box-shadow:none}.toc-sidebar.collapsed{transform:translate(calc(-1 * var(--toc-width) - 2px));pointer-events:none}.toc-expand-btn{right:calc(50% - (var(--view-max-width, 850px) / 2) - 28px);border-left:none;border-right:1px solid var(--header-glass-border);border-radius:0 6px 6px 0;box-shadow:2px 0 8px #0000000f}.sidebar-expand-btn{left:calc(50% - (var(--view-max-width, 850px) / 2) - 28px);border-right:none;border-left:1px solid var(--header-glass-border);border-radius:6px 0 0 6px;box-shadow:-2px 0 8px #0000000f}.back-to-top-btn{right:200px;bottom:calc(var(--footer-height) + 4px)}}.sidebar-expand-btn:hover{background:var(--header-glass-bg);color:var(--text-body)}.sidebar-expand-btn.show{display:flex}.sidebar-expand-btn .icon svg{transform:rotate(180deg)}.back-to-top-btn{position:fixed;bottom:calc(var(--footer-height) + 18px);right:16px;width:40px;height:40px;border-radius:10px;background:var(--header-glass-bg);border:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);cursor:pointer;z-index:98;display:flex;align-items:center;justify-content:center;color:var(--text-placeholder);transition:opacity .2s,transform .2s,background .15s,color .15s;opacity:0;transform:translateY(6px);pointer-events:none;box-shadow:0 8px 20px #00000014}.back-to-top-btn:hover{background:var(--bg-hover);color:var(--text-body)}.back-to-top-btn.show{opacity:1;transform:translateY(0);pointer-events:auto}.toc-fab-btn{position:fixed;bottom:calc(var(--footer-height) + 114px);right:16px;width:40px;height:40px;border-radius:10px;background:var(--header-glass-bg);border:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);cursor:pointer;z-index:98;display:flex;align-items:center;justify-content:center;color:var(--text-placeholder);transition:opacity .2s,transform .2s,background .15s,color .15s;opacity:0;transform:translateY(6px);pointer-events:none;box-shadow:0 8px 20px #00000014}.toc-fab-btn:hover{background:var(--bg-hover);color:var(--text-body)}.toc-fab-btn.show{opacity:1;transform:translateY(0);pointer-events:auto}.toc-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.toc-overlay.active{display:block}.toc-nav{flex:1;overflow-y:auto;padding:8px;font-size:13px;scrollbar-width:none;-ms-overflow-style:none}.toc-nav::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}.toc-nav ul{list-style:none}.toc-nav a{display:block;padding:6px 12px;color:var(--text-secondary);text-decoration:none;border-radius:6px;transition:all .15s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toc-nav a:hover{background:var(--bg-hover);color:var(--text-body)}.toc-nav a.active{background:var(--bg-active);color:var(--primary)}.toc-nav .toc-h2 a{padding-left:12px}.toc-nav .toc-h3 a{padding-left:24px;font-size:12px}.toc-nav .toc-h4 a{padding-left:36px;font-size:12px}.toc-nav .toc-h5 a{padding-left:48px;font-size:12px}.toc-nav .toc-h6 a{padding-left:60px;font-size:12px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{scroll-margin-top:calc(var(--header-height) + 16px)}.markdown-body{scroll-padding-top:calc(var(--header-height) + 16px)}.post-header{margin-bottom:32px;padding-bottom:20px;border-bottom:1px solid var(--border-light)}.post-title{font-size:22px;font-weight:600;color:var(--text-title);margin-bottom:8px;line-height:1.35}.post-description{color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:12px}.post-meta{padding-top:8px;font-size:13px;color:var(--text-placeholder);margin:0}.post-meta-summary{cursor:pointer;-webkit-user-select:none;user-select:none}.post-meta-summary::-webkit-details-marker{display:none}.post-meta-summary::marker{content:""}.post-meta-summary-inner{display:inline-flex;align-items:center;gap:6px}.post-meta-toggle-icon{margin-left:auto;transform:rotate(90deg);transform-origin:center;transition:transform .2s ease;color:var(--text-placeholder);flex:0 0 auto}.post-meta-toggle-icon.open{transform:rotate(270deg)}.post-meta-line-inner{display:inline-flex;align-items:center;gap:6px}.post-meta-line-inner.wrap{display:grid;grid-template-columns:14px 1fr;column-gap:6px;width:100%;align-items:start}.post-meta-line-inner.wrap .icon{margin-top:4px}.post-meta-line-text{min-width:0;overflow-wrap:anywhere;word-break:break-word}.post-meta-line-text a{overflow-wrap:anywhere;word-break:break-word}.post-desc-meta-item{display:inline-flex;align-items:center;gap:6px}.post-meta-body{margin-top:8px}.post-meta-line{display:block;text-align:left;color:var(--text-secondary);line-height:1.7}.post-meta-section{margin-top:10px;color:var(--text-placeholder)}.post-meta-section:first-child{margin-top:0}.meta-item{display:flex;align-items:center;gap:6px;justify-content:flex-end}.meta-label{color:var(--text-placeholder)}.meta-value{color:var(--text-secondary)}.post-meta-divider{height:1px;background:var(--border-light);margin:12px 0 16px}.post-desc-meta{margin-top:8px;display:flex;gap:16px;font-size:13px;color:var(--text-placeholder);white-space:nowrap}.post-git{display:flex;flex-direction:column;align-items:flex-end;gap:6px;margin-top:40px;padding-top:24px;border-top:1px solid var(--border-light);font-size:13px;color:var(--text-placeholder)}.post-git-line{width:100%;text-align:right;word-break:break-word}.post-updated-time{display:flex;align-items:center;justify-content:flex-start;gap:6px;margin-top:40px;padding:24px 0 0;border-top:1px solid var(--border-light);font-size:13px;color:var(--text-placeholder)}.post-updated-time.with-bottom{padding-bottom:24px}.post-edit-link{display:flex;justify-content:flex-start;margin-top:8px;padding-bottom:24px;font-size:13px}.post-edit-link a{color:var(--text-placeholder);text-decoration:none}.post-edit-link a:visited{color:var(--text-placeholder)}.post-edit-link a:hover{color:var(--text-secondary);text-decoration:underline}.post-meta-body a{color:var(--text-placeholder);text-decoration:none}.post-meta-body a:visited{color:var(--text-placeholder)}.post-meta-body a:hover{color:var(--text-secondary);text-decoration:underline}.git-subline:before{content:"    ";white-space:pre}.markdown-body{font-size:15px;line-height:1.8;color:var(--text-body);word-wrap:break-word}.markdown-body>*:first-child{margin-top:0!important}.markdown-body>*:last-child{margin-bottom:0!important}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-weight:600;line-height:1.4;color:var(--text-title);margin-top:36px;margin-bottom:16px;scroll-margin-top:20px;letter-spacing:-.01em}.markdown-body h1{font-size:26px;margin-top:0;font-weight:700}.markdown-body h2{font-size:22px;margin-top:48px;padding-bottom:12px;border-bottom:1px solid var(--border-light)}.markdown-body h3{font-size:18px;margin-top:36px}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:15px}.markdown-body h6{font-size:14px;color:var(--text-secondary)}.markdown-body p{margin-bottom:16px}.markdown-body ul,.markdown-body ol{margin-bottom:16px;padding-left:24px}.markdown-body li{margin-bottom:6px}.markdown-body code{padding:3px 8px;font-size:13px;background-color:var(--code-inline-bg);border-radius:4px;font-family:SF Mono,Monaco,Menlo,Consolas,monospace;color:var(--code-inline-color)}.markdown-body pre:not(.code-pre){padding:20px;overflow:auto;font-size:13px;line-height:1.7;background-color:transparent;border-radius:8px;margin:20px 0;border:none;box-shadow:none}.markdown-body pre:not(.code-pre) code{padding:0;background:transparent;color:var(--text-body);font-size:13px}.markdown-body table{display:block;width:100%;max-width:100%;overflow-x:auto;border-collapse:collapse;border-spacing:0;margin:16px 0;background:var(--bg-body)}.markdown-body table thead th{background:var(--bg-hover);color:var(--text-title);font-weight:600;white-space:nowrap}.markdown-body table th,.markdown-body table td{border:1px solid var(--border-light);padding:10px 12px;vertical-align:top;text-align:left}.markdown-body table tbody tr:nth-child(2n){background:#00000005}.markdown-body .code-block{position:relative;margin:20px 0;border-radius:8px;border:1px solid var(--border-light);background:var(--code-bg);overflow:visible;--code-line-height: 1.7;--code-font-size: 13px;--code-font-family: "SF Mono", Monaco, Menlo, Consolas, monospace}.markdown-body .code-body{display:grid;grid-template-columns:auto 1fr;border-radius:8px;overflow:hidden}.markdown-body .code-gutter{padding:6px 12px 6px 16px;font-size:var(--code-font-size);line-height:var(--code-line-height);color:var(--code-line-number);background:var(--code-line-bg);border-right:1px solid var(--border-light);text-align:right;-webkit-user-select:none;user-select:none;font-family:var(--code-font-family);font-variant-ligatures:none}.markdown-body .code-gutter span{display:block}.markdown-body .code-pre{margin:0;padding:6px 16px;overflow:auto;background:transparent;border:none;border-radius:0;box-shadow:none;line-height:var(--code-line-height);font-size:var(--code-font-size);font-family:var(--code-font-family);font-variant-ligatures:none}.markdown-body .code-pre code{padding:0;background:transparent;font-size:var(--code-font-size);line-height:var(--code-line-height);color:var(--text-body);white-space:pre;word-break:normal;display:block;font-family:var(--code-font-family);font-variant-ligatures:none}.markdown-body pre.line-numbers{position:relative;padding-left:3.2em;background:transparent;border:none;box-shadow:none}.markdown-body pre.line-numbers>code{display:block;font-family:var(--code-font-family);font-size:var(--code-font-size);line-height:var(--code-line-height);white-space:pre}.markdown-body .line-numbers-rows{position:absolute;pointer-events:none;top:0;left:0;width:3em;border-right:1px solid var(--border-light);background:var(--code-line-bg);text-align:right;font-family:var(--code-font-family);font-size:var(--code-font-size);line-height:var(--code-line-height);font-variant-ligatures:none;-webkit-user-select:none;user-select:none}.markdown-body .line-numbers-rows>span{display:block}.markdown-body .code-copy{position:absolute;top:0;right:14px;border:1px solid var(--border-light);background:var(--code-bg);color:var(--code-copy-text);border-radius:6px;padding:4px 8px;font-size:12px;cursor:pointer;transition:background .15s,color .15s,border-color .15s;transform:translateY(-100%)}.markdown-body .code-lang{position:absolute;top:0;left:14px;border:1px solid var(--border-light);background:var(--code-bg);color:var(--text-secondary);border-radius:6px;padding:4px 8px;font-size:12px;transform:translateY(-100%);-webkit-user-select:none;user-select:none}.markdown-body .code-copy:hover{background:var(--code-copy-hover);color:var(--text-title)}.markdown-body .code-copy.is-success{color:var(--code-copy-success);border-color:var(--code-copy-success)}.markdown-body .code-copy.is-error{color:var(--code-copy-error);border-color:var(--code-copy-error)}.markdown-body code[class*=language-],.markdown-body pre[class*=language-]{text-shadow:none}.markdown-body .token.comment,.markdown-body .token.prolog,.markdown-body .token.doctype,.markdown-body .token.cdata{color:var(--code-token-comment)}.markdown-body .token.punctuation{color:var(--code-token-punctuation)}.markdown-body .token.property,.markdown-body .token.tag,.markdown-body .token.boolean,.markdown-body .token.number,.markdown-body .token.constant,.markdown-body .token.symbol,.markdown-body .token.deleted{color:var(--code-token-boolean)}.markdown-body .token.selector,.markdown-body .token.attr-name,.markdown-body .token.string,.markdown-body .token.char,.markdown-body .token.builtin,.markdown-body .token.inserted{color:var(--code-token-string)}.markdown-body .token.operator,.markdown-body .token.entity,.markdown-body .token.url,.markdown-body .language-css .token.string,.markdown-body .style .token.string{color:var(--code-token-operator)}.markdown-body .token.atrule,.markdown-body .token.attr-value,.markdown-body .token.keyword{color:var(--code-token-keyword)}.markdown-body .token.function,.markdown-body .token.class-name{color:var(--code-token-function)}.markdown-body .token.regex,.markdown-body .token.important,.markdown-body .token.variable{color:var(--code-token-variable)}.markdown-body .token.bold{font-weight:600}.markdown-body .token.italic{font-style:italic}.markdown-body blockquote{padding:16px 20px;margin:20px 0;color:var(--text-secondary);background:linear-gradient(to right,rgba(51,112,255,.04),transparent);border-left:4px solid var(--primary);border-radius:0 8px 8px 0}.markdown-body a{color:var(--primary);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s}.markdown-body a:hover{border-bottom-color:var(--primary)}.markdown-body img{max-width:100%;height:auto;border-radius:8px;margin:20px 0;box-shadow:0 2px 12px #00000014;transition:transform .2s,box-shadow .2s;cursor:zoom-in}.image-wrapper{position:relative;display:inline-block;max-width:100%;margin:20px 0;border-radius:8px}.markdown-body a.image-wrapper{border-bottom:none}.image-wrapper .image{display:block;margin:0!important}.image-wrapper:hover img{transform:scale(1.01);box-shadow:0 4px 16px #0000001f}.md-container{margin:16px 0;padding:12px 16px;border:1px solid var(--border-light);border-left:4px solid var(--primary);border-radius:8px;background:var(--bg-body)}.md-container-title{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--text-title);text-transform:capitalize}.md-container-info{border-left-color:var(--primary)}.md-container-tip{border-left-color:#10b981}.md-container-warning{border-left-color:#f59e0b}.md-container-danger{border-left-color:#ef4444}.md-container-details{border-left-color:#8b5cf6}.markdown-body dl{margin:16px 0}.markdown-body dt{font-weight:600;color:var(--text-title)}.markdown-body dd{margin:4px 0 12px 20px;color:var(--text-secondary)}.markdown-body abbr[title]{border-bottom:1px dotted var(--text-placeholder);cursor:help}.markdown-body .footnotes{margin-top:24px;padding-top:12px;border-top:1px solid var(--border-light);font-size:12px;color:var(--text-secondary)}.markdown-body .footnotes ol{padding-left:20px}.markdown-body .footnotes li{margin:6px 0}.markdown-body .footnotes li[id]{scroll-margin-top:calc(var(--header-height) + 16px)}.markdown-body .footnote-ref{font-size:12px}.markdown-body .footnote-backref{text-decoration:none;margin-left:4px}.markdown-body .mermaid{margin:16px 0;overflow:auto}.markdown-body .md-toc{margin:16px 0;padding:12px 16px;border:1px solid var(--border-light);border-radius:8px;background:var(--bg-body)}.markdown-body .md-toc ul{margin:0;padding-left:18px}.markdown-body .md-toc li{margin:4px 0}.markdown-body .task-list-item{list-style:none}.markdown-body .task-list-item input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;margin:0 6px 0 0;vertical-align:middle;border:2px solid #d0d7de;border-radius:4px;background-color:#fff;cursor:default;transition:background-color .2s,border-color .2s;position:relative;top:-2px}.markdown-body .task-list-item input[type=checkbox]:checked{background-color:#2da44e;border-color:#2da44e}.markdown-body .task-list-item input[type=checkbox]:checked:after{content:"";display:block;width:5px;height:9px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg);position:absolute;left:4px;top:1px}.markdown-body .chart{margin:16px 0;overflow-x:auto}.markdown-body .math,.markdown-body mjx-container{max-width:100%;overflow-x:auto;overflow-y:visible}.markdown-body mjx-container[display=true]{display:block;margin:12px 0}.markdown-body hr.footnotes-sep{display:none}.search-mask{position:fixed;inset:0;z-index:2100;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;justify-content:center;padding:88px 16px 24px;overflow:auto}.search-modal{width:min(680px,100%);background:transparent;border:none;border-radius:0;box-shadow:none;max-height:min(72vh,640px);overflow:hidden;height:auto;display:flex;flex-direction:column}.search-header{display:flex;align-items:center;gap:12px;padding:0 0 12px;border-bottom:none}.search-input{flex:1;height:40px;border-radius:10px;border:1px solid var(--border-default);background:var(--bg-container);padding:0 12px;outline:none;color:var(--text-body)}.search-close-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;border:1px solid var(--border-light);background:var(--bg-body);color:var(--text-secondary);cursor:pointer;transition:background .15s,border-color .15s,color .15s;flex-shrink:0}.search-close-btn:hover{background:var(--bg-hover);border-color:var(--border-default);color:var(--text-title)}.search-input:focus{border-color:#3370ffa6;box-shadow:0 0 0 3px #3370ff24}.search-results{max-height:none;overflow:auto;display:flex;flex-direction:column;gap:10px;padding:0;min-height:0;scrollbar-width:none;-ms-overflow-style:none}.search-results::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}.search-item{display:block;text-decoration:none;border:1px solid var(--border-light);border-radius:12px;padding:12px;margin:0;background:var(--bg-body);transition:background .15s,border-color .15s;cursor:pointer}.search-item:hover{background:var(--bg-hover);border-color:var(--border-default)}.search-title{font-size:14px;font-weight:600;color:var(--text-title);margin-bottom:6px}.search-snippet{font-size:13px;line-height:1.6;color:var(--text-secondary);word-break:break-word}.search-empty{padding:6px 4px;color:var(--text-placeholder);font-size:13px}.search-item-empty{cursor:default}.search-item-empty:hover{background:var(--bg-body);border-color:var(--border-light)}.search-title mark,.search-snippet mark{background:#ffeb3bd9;color:var(--text-title);font-weight:600;padding:0 2px;border-radius:4px}html[data-theme=dark] .search-title mark,html[data-theme=dark] .search-snippet mark{background:#d4d4258c;color:#000}@media(max-width:1380px){html,body{overflow-x:hidden}.toc-expand-btn,.sidebar-expand-btn{display:none!important}.main-content{margin-left:0;margin-right:0}.sidebar{position:fixed;left:0;top:0;width:var(--sidebar-width);height:100vh;transform:translate(-100%);transition:transform .3s ease;z-index:1000;box-shadow:var(--shadow-md);background:var(--header-glass-bg);border-right:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%)}.sidebar.collapsed{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay{display:none;position:fixed;inset:0;background:#00000080;z-index:999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sidebar-overlay.active{display:block}.menu-fab-btn{display:flex;align-items:center;justify-content:center;position:fixed;bottom:calc(var(--footer-height) + 66px);right:16px;z-index:98;width:40px;height:40px;background:var(--header-glass-bg);border:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-radius:10px;cursor:pointer;color:var(--text-placeholder);box-shadow:0 8px 20px #00000014;transition:opacity .2s,transform .2s,background .15s,color .15s;opacity:0;transform:translateY(6px);pointer-events:none}.menu-fab-btn:hover{background:var(--bg-hover);color:var(--text-body)}.menu-fab-btn.show{opacity:1;transform:translateY(0);pointer-events:auto}.toc-sidebar{top:0;height:100vh;width:var(--toc-width);right:0;transform:translate(100%);transition:transform .3s ease;z-index:1000;box-shadow:var(--shadow-md);background:var(--header-glass-bg);border-left:1px solid var(--header-glass-border);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%)}.toc-sidebar.collapsed{transform:translate(100%)}.toc-sidebar.mobile-open{transform:translate(0)}.toc-header .toc-toggle-btn{display:none}}@media(min-width:1381px){:root{--view-max-width: min(850px, calc(100vw - var(--sidebar-width) - var(--toc-width)))}}@media(max-width:768px){.app-container{flex-direction:column}.site-header{position:fixed;top:0;left:0;right:0;height:48px;padding:0 12px;border-bottom:1px solid var(--header-glass-border)}.header-content{flex-direction:row;align-items:center;justify-content:space-between;height:100%;padding:0}.header-left{gap:8px;flex:1;min-width:0}.site-logo{display:block}.site-title{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-nav{gap:4px;flex-shrink:0}.main-content{margin:0;flex:1;display:flex;flex-direction:column;min-height:100vh}.view{flex:1;width:100%;max-width:100%;padding:var(--header-height) 16px var(--footer-height);min-height:100vh}.post-meta .meta-file,.post-meta .meta-created,.post-meta .meta-words,.post-meta .meta-size{flex:1 1 calc(50% - 10px);min-width:0}.post-meta .meta-file .meta-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.markdown-body{font-size:14px;line-height:1.6;padding:0 4px}.markdown-body h1{font-size:20px;margin:16px 0 12px}.markdown-body h2{font-size:18px;margin:14px 0 10px}.markdown-body h3{font-size:16px;margin:12px 0 8px}.markdown-body p{margin:8px 0}.markdown-body pre:not(.code-pre){margin:12px 0;border-radius:6px;overflow-x:auto}.markdown-body img{max-width:100%;height:auto}.site-footer{position:fixed;bottom:0;left:0;right:0;height:var(--footer-height);padding:0 12px}.footer-content{flex-direction:row;gap:8px;padding:0;text-align:center}.footer-divider{display:none}.toc-expand-btn,.sidebar-expand-btn{display:none!important}}
