*,:after,:before{box-sizing:border-box}*{margin:0}#app,body,html{height:100%}body{-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;line-height:1.6}canvas,img,picture,svg,video{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}button{cursor:pointer;background:0 0;border:none;padding:0}a{color:inherit;text-decoration:none}ol,ul{padding-left:1.4em}code,pre{font-family:JetBrains Mono,Consolas,Monaco,Courier New,monospace}:root{--color-bg:#fff;--color-bg-alt:#fbfbfd;--color-bg-elevated:#fff;--color-bg-hover:#5e6ad20f;--color-border:#e5e7eb;--color-border-soft:#f0f1f4;--color-text:#1a1a2e;--color-text-muted:#565868;--color-text-light:#8b8d98;--color-primary:#5e6ad2;--color-primary-hover:#7c82f2;--color-primary-active:#4a55b8;--color-primary-bg-soft:#5e6ad214;--color-primary-bg-medium:#5e6ad224;--color-code-bg:#f8f8fc;--color-code-border:#ebebf3;--shadow-sm:0 1px 2px #0f11230a, 0 1px 1px #0f112308;--shadow-md:0 4px 12px #0f11230f, 0 2px 4px #0f11230a;--shadow-lg:0 12px 32px #0f112314, 0 4px 8px #0f11230a;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--sidebar-w:280px;--topbar-h:56px;--font-sans:"Inter", "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "SF Mono", Menlo, Monaco, Consolas, "Microsoft YaHei", monospace}html.dark{--color-bg:#0f1014;--color-bg-alt:#1a1c25;--color-bg-elevated:#24262f;--color-bg-hover:#7c82f21f;--color-border:#3a3c48;--color-border-soft:#2c2e3a;--color-text:#e4e5ed;--color-text-muted:#a5a7b5;--color-text-light:#888a99;--color-primary:#7c82f2;--color-primary-hover:#9aa0f6;--color-primary-active:#686de8;--color-primary-bg-soft:#7c82f21f;--color-primary-bg-medium:#7c82f238;--color-code-bg:#1a1c25;--color-code-border:#2c2e3a;--shadow-sm:0 1px 2px #00000059, 0 1px 1px #0003;--shadow-md:0 4px 12px #00000073, 0 2px 4px #0000004d;--shadow-lg:0 12px 32px #0000008c, 0 4px 8px #0006}body,html{overflow-x:hidden}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-feature-settings:"cv02","cv03","cv04","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-light)}::-webkit-scrollbar-track{background:0 0}.app{flex-direction:column;min-height:100vh;display:flex;overflow-x:clip}.app__body{flex:1;min-height:0;display:flex}.app__sidebar{width:var(--sidebar-w);background:var(--color-bg-alt);border-right:1px solid var(--color-border-soft);flex-shrink:0;overflow-y:auto}.app__main{flex:1;min-width:0;padding:28px 36px;overflow:hidden auto}.app__main--full{padding:0}@media (width<=768px){.app__sidebar{top:var(--topbar-h);z-index:50;box-shadow:var(--shadow-lg);background:var(--color-bg-alt);transition:transform .2s;position:fixed;bottom:0;left:0;transform:translate(-100%)}.app__sidebar.is-open{transform:translate(0)}.app__main{padding:16px}}.app__backdrop{display:none}@media (width<=768px){.app__backdrop{top:var(--topbar-h);z-index:45;opacity:0;pointer-events:none;background:#00000059;transition:opacity .2s;position:fixed;bottom:0;left:0;right:0}.app__backdrop.is-visible{opacity:1;pointer-events:auto;display:block}}.clickable,button{min-width:44px;min-height:44px}.markdown-body{font-size:15px;line-height:1.75}.markdown-body h1{letter-spacing:-.01em;margin:.8em 0 .5em;font-size:1.8em;font-weight:700}.markdown-body h2{letter-spacing:-.005em;border-bottom:1px solid var(--color-border-soft);margin:1.4em 0 .6em;padding-bottom:.4em;font-size:1.4em;font-weight:650}.markdown-body h3{margin:1.1em 0 .5em;font-size:1.2em;font-weight:600}.markdown-body h4{color:var(--color-text-muted);margin:.9em 0 .4em;font-size:1.05em;font-weight:600}.markdown-body p{margin:.7em 0}.markdown-body blockquote{border-left:3px solid var(--color-primary);background:var(--color-primary-bg-soft);color:var(--color-text-muted);border-radius:0 var(--radius-sm) var(--radius-sm) 0;margin:.9em 0;padding:10px 16px;font-size:.95em}.markdown-body code:not(pre code){background:var(--color-primary-bg-soft);border-radius:var(--radius-sm);font-size:.88em;font-family:var(--font-mono);color:var(--color-primary);padding:2px 7px;font-weight:500}html.dark .markdown-body code:not(pre code){color:var(--color-primary-hover)}.markdown-body pre{background:var(--color-code-bg);border:1px solid var(--color-code-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin:.9em 0;padding:16px 18px;font-size:.88em;line-height:1.6;overflow-x:auto}.markdown-body pre code{font-family:var(--font-mono);color:var(--color-text);background:0 0;padding:0}.markdown-body table{border-collapse:collapse;border-radius:var(--radius-sm);max-width:100%;box-shadow:var(--shadow-sm);margin:.9em 0;display:block;overflow-x:auto}.markdown-body td,.markdown-body th{border:1px solid var(--color-border-soft);text-align:left;padding:10px 14px;font-size:.95em}.markdown-body th{color:var(--color-text);font-weight:600}.markdown-body tbody tr:nth-child(2n) td,.markdown-body th{background:var(--color-bg-alt)}.markdown-body ol,.markdown-body ul{margin:.7em 0;padding-left:1.6em}.markdown-body li{margin:.25em 0}.markdown-body a{color:var(--color-primary);text-decoration:none;transition:color .12s}.markdown-body a:hover{color:var(--color-primary-hover);text-decoration:underline}.markdown-body strong{color:var(--color-text);font-weight:650}.markdown-body hr{border:0;border-top:1px solid var(--color-border-soft);margin:1.6em 0}pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.hljs{color:#383a42;background:#fafafa}.hljs-comment,.hljs-quote{color:#a0a1a7;font-style:italic}.hljs-doctag,.hljs-formula,.hljs-keyword{color:#a626a4}.hljs-deletion,.hljs-name,.hljs-section,.hljs-selector-tag,.hljs-subst{color:#e45649}.hljs-literal{color:#0184bb}.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#50a14f}.hljs-attr,.hljs-number,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-pseudo,.hljs-template-variable,.hljs-type,.hljs-variable{color:#986801}.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-symbol,.hljs-title{color:#4078f2}.hljs-built_in,.hljs-class .hljs-title,.hljs-title.class_{color:#c18401}html.dark .hljs{color:#abb2bf;background:#282c34}html.dark .hljs-comment,html.dark .hljs-quote{color:#5c6370;font-style:italic}html.dark .hljs-doctag,html.dark .hljs-formula,html.dark .hljs-keyword{color:#c678dd}html.dark .hljs-deletion,html.dark .hljs-name,html.dark .hljs-section,html.dark .hljs-selector-tag,html.dark .hljs-subst{color:#e06c75}html.dark .hljs-literal{color:#56b6c2}html.dark .hljs-addition,html.dark .hljs-attribute,html.dark .hljs-meta .hljs-string,html.dark .hljs-regexp,html.dark .hljs-string{color:#98c379}html.dark .hljs-attr,html.dark .hljs-number,html.dark .hljs-selector-attr,html.dark .hljs-selector-class,html.dark .hljs-selector-pseudo,html.dark .hljs-template-variable,html.dark .hljs-type,html.dark .hljs-variable{color:#d19a66}html.dark .hljs-bullet,html.dark .hljs-link,html.dark .hljs-meta,html.dark .hljs-selector-id,html.dark .hljs-symbol,html.dark .hljs-title{color:#61aeee}html.dark .hljs-built_in,html.dark .hljs-class .hljs-title,html.dark .hljs-title.class_{color:#e6c07b}.topbar[data-v-8fda3452]{height:var(--topbar-h);z-index:100;background:var(--color-bg);border-bottom:1px solid var(--color-border-soft);align-items:center;gap:12px;padding:0 16px;display:flex;position:sticky;top:0}.topbar__menu[data-v-8fda3452]{display:none}.topbar__brand[data-v-8fda3452]{color:var(--color-text);white-space:nowrap;letter-spacing:-.01em;flex-shrink:0;align-items:center;gap:8px;font-size:1.05em;font-weight:700;text-decoration:none;display:inline-flex}.topbar__prof-trigger[data-v-8fda3452]{flex-shrink:0;height:32px;min-height:32px;padding:0 10px;font-weight:500;display:none}.topbar__cats[data-v-8fda3452]{flex:1;align-items:center;gap:4px;min-width:0;padding:4px 0;display:flex}.topbar__loading[data-v-8fda3452]{color:var(--color-text-muted);white-space:nowrap;padding:0 8px;font-size:13px}.topbar__cat-wrap[data-v-8fda3452]{flex-shrink:0;position:relative}.topbar__cat-btn[data-v-8fda3452]{border:1px solid var(--color-border);height:32px;min-height:32px;font:inherit;color:var(--color-text);cursor:pointer;background:0 0;border-radius:16px;align-items:center;gap:4px;padding:0 12px;font-size:13px;font-weight:500;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.topbar__cat-wrap:hover .topbar__cat-btn[data-v-8fda3452]{background:var(--color-bg-hover);border-color:var(--color-border)}.topbar__cat-btn--active[data-v-8fda3452]{color:var(--color-primary);border-color:var(--color-primary-bg-medium);background:var(--color-primary-bg-soft)}.topbar__cat-caret[data-v-8fda3452]{opacity:.7;font-size:10px;line-height:1}.topbar__cat-pop[data-v-8fda3452]{z-index:110;background:var(--color-bg-elevated);border:1px solid var(--color-border-soft);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);flex-wrap:wrap;gap:4px;min-width:280px;max-width:460px;padding:8px;display:flex;position:absolute;top:calc(100% + 6px);left:0}.topbar__cat-pop[data-v-8fda3452]:before{content:"";height:8px;position:absolute;top:-8px;left:0;right:0}.topbar__cat-pop-pill[data-v-8fda3452]{justify-content:flex-start;height:30px;min-height:30px;font-size:13px}.topbar__cat-pop-empty[data-v-8fda3452]{color:var(--color-text-muted);white-space:nowrap;padding:6px 8px;font-size:12px}.topbar__pill-count[data-v-8fda3452]{opacity:.7;margin-left:6px;font-size:11px;font-weight:400}.topbar__search[data-v-8fda3452]{z-index:150;flex-shrink:0;width:240px;display:flex;position:relative}.topbar__search[data-v-8fda3452] .n-input{background-color:var(--color-bg-elevated);border-radius:var(--radius-md)}.topbar__search[data-v-8fda3452] .n-input .n-input__border,.topbar__search[data-v-8fda3452] .n-input .n-input__state-border{border-color:var(--color-border)}.topbar__theme[data-v-8fda3452]{z-index:150;flex-shrink:0;position:relative}@media (width<=768px){.topbar__menu[data-v-8fda3452]{display:inline-flex}.topbar__cats[data-v-8fda3452]{display:none}.topbar__prof-trigger[data-v-8fda3452]{flex-shrink:1;min-width:0;display:inline-flex;overflow:hidden}.topbar__prof-trigger[data-v-8fda3452] .n-button__content{text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0;overflow:hidden}.topbar__search[data-v-8fda3452]{flex:auto;width:auto;min-width:50px}.topbar__search[data-v-8fda3452] input{font-size:13px}}@media (width<=480px){.topbar__brand-text[data-v-8fda3452]{display:none}}.topbar__search-overlay[data-v-8fda3452],.topbar__search-trigger[data-v-8fda3452]{display:none}@media (width<=425px){.topbar__search[data-v-8fda3452]{display:none}.topbar__search-trigger[data-v-8fda3452]{flex-shrink:0;margin-left:auto;display:inline-flex;transform:translate(6px)}.topbar__search-overlay[data-v-8fda3452]{background:var(--color-bg);z-index:160;align-items:center;gap:8px;padding:0 12px;display:flex;position:absolute;inset:0}.topbar__search-overlay[data-v-8fda3452] .n-input{flex:1}}.topbar__popover[data-v-8fda3452]{z-index:200;padding-top:calc(var(--topbar-h) + 8px);background:#0000004d;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0}.topbar__popover-inner[data-v-8fda3452]{background:var(--color-bg-elevated);border:1px solid var(--color-border-soft);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:240px;max-width:90vw;max-height:calc(100vh - var(--topbar-h) - 24px);max-height:calc(100dvh - var(--topbar-h) - 24px);overscroll-behavior:contain;padding:12px 12px 16px;overflow-y:auto}.topbar__popover-group[data-v-8fda3452]{flex-wrap:wrap;gap:4px;margin-bottom:12px;display:flex}.topbar__popover-group[data-v-8fda3452]:last-child{margin-bottom:0}.topbar__popover-cat[data-v-8fda3452]{color:var(--color-text-light);letter-spacing:.3px;flex-basis:100%;padding:4px 4px 6px;font-size:12px;font-weight:500}.topbar__popover-pill[data-v-8fda3452]{justify-content:flex-start;height:36px;min-height:36px;font-size:14px}.cat-pop-enter-active[data-v-8fda3452],.cat-pop-leave-active[data-v-8fda3452]{transition:opacity .12s,transform .12s}.cat-pop-enter-from[data-v-8fda3452],.cat-pop-leave-to[data-v-8fda3452]{opacity:0;transform:translateY(-4px)}.topbar-popover-enter-active[data-v-8fda3452],.topbar-popover-leave-active[data-v-8fda3452]{transition:opacity .15s}.topbar-popover-enter-from[data-v-8fda3452],.topbar-popover-leave-to[data-v-8fda3452]{opacity:0}.sidebar[data-v-ab35d69f]{height:100%;padding:8px 0}.sidebar__empty[data-v-ab35d69f],.sidebar__loading[data-v-ab35d69f]{color:var(--color-text-muted);padding:16px;font-size:13px}.tree[data-v-ab35d69f]{padding:0 4px;list-style:none}.tree[data-v-ab35d69f],.tree__node[data-v-ab35d69f]{margin:0}.tree__lvl[data-v-ab35d69f]{width:100%;min-height:36px;font:inherit;color:var(--color-text);text-align:left;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;text-decoration:none;transition:background .14s,color .14s;display:flex;position:relative}.tree__lvl[data-v-ab35d69f]:hover{background:var(--color-bg-hover)}.tree__lvl--active[data-v-ab35d69f]{color:var(--color-primary);background:linear-gradient(90deg,var(--color-primary-bg-medium) 0,var(--color-primary-bg-soft) 100%);font-weight:650}.tree__lvl--active[data-v-ab35d69f]:before{content:"";background:var(--color-primary);border-radius:0 2px 2px 0;width:2px;position:absolute;top:6px;bottom:6px;left:0}.tree__lvl-name[data-v-ab35d69f]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree__children[data-v-ab35d69f]{margin:0;padding:0 0 4px;list-style:none}.tree__cat[data-v-ab35d69f]{margin:0}.tree__cat-head[data-v-ab35d69f]{width:100%;min-height:30px;font:inherit;color:var(--color-text);text-align:left;border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0 10px 0 8px;font-size:12px;font-weight:600;transition:background .14s,color .14s;display:flex}.tree__cat-head[data-v-ab35d69f]:hover{background:var(--color-bg-hover)}.tree__cat-head--active[data-v-ab35d69f]{color:var(--color-primary)}.tree__caret[data-v-ab35d69f]{width:12px;color:var(--color-text-muted);flex-shrink:0;font-size:14px;line-height:1;transition:transform .15s;display:inline-block;transform:rotate(0)}.tree__caret--open[data-v-ab35d69f]{transform:rotate(90deg)}.tree__cat-name[data-v-ab35d69f]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree__leaves[data-v-ab35d69f]{margin:0;padding:0 0 2px;list-style:none}.tree__leaf[data-v-ab35d69f]{margin:0}.tree__q[data-v-ab35d69f]{width:100%;min-height:28px;color:var(--color-text-muted);border-radius:var(--radius-sm);align-items:center;gap:6px;padding:0 12px 0 32px;font-size:12px;text-decoration:none;transition:background .14s,color .14s;display:flex;position:relative}.tree__q[data-v-ab35d69f]:hover{background:var(--color-bg-hover);color:var(--color-text)}.tree__q-dot[data-v-ab35d69f]{background:var(--color-border);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.tree__q-dot--none[data-v-ab35d69f]{border:1px solid var(--color-border);box-sizing:border-box;background:0 0}.tree__q-dot--reading[data-v-ab35d69f]{background:var(--color-primary)}.tree__q-dot--done[data-v-ab35d69f]{background:#18a058}.tree__q--active[data-v-ab35d69f]{color:var(--color-primary);background:linear-gradient(90deg,var(--color-primary-bg-medium) 0,var(--color-primary-bg-soft) 100%);font-weight:600}.tree__q--active[data-v-ab35d69f]:before{content:"";background:var(--color-primary);border-radius:0 2px 2px 0;width:2px;position:absolute;top:6px;bottom:6px;left:22px}.tree__q-name[data-v-ab35d69f]{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.error-page[data-v-41502e9f]{text-align:center;max-width:600px;margin:80px auto;padding:0 16px}
