/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:initial}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.flex{display:flex}.flex-auto{flex:auto}.flex-even{flex:1 1}.flex-wrap{flex-wrap:wrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.align-center{align-items:center}.mx-auto{margin:0 auto}.text-center{text-align:center}.hidden{display:none}.book-cover img{width:290px;float:right;border-radius:1px;box-shadow:0 20px 80px rgba(0,0,0,.4)}html{font-size:16px;letter-spacing:.33px;scroll-behavior:smooth}html,body{min-width:20rem;overflow-x:hidden}body{color:#343a40;background:#fff;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}body *{box-sizing:inherit}h1,h2,h3,h4,h5{font-weight:400}a{text-decoration:none;color:#05b}a:visited{color:#05b}img{vertical-align:baseline}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{margin:1em 0}aside nav ul a{display:block}aside nav ul a:hover{opacity:.5}aside nav ul ul{padding-left:1rem}.levels-1 ul ul,.levels-2 ul ul ul,.levels-3 ul ul ul ul,.levels-4 ul ul ul ul ul,.levels-5 ul ul ul ul ul ul,.levels-6 ul ul ul ul ul ul ul{display:none}ul.pagination{display:flex;justify-content:center;list-style-type:none}ul.pagination .page-item a{padding:1rem}.container{max-width:100rem;margin:0 auto}.book-brand{margin-top:0}.book-brand img{height:1.5em;width:auto;vertical-align:middle;margin-right:.5rem}.book-menu{flex:0 0 20rem;font-size:.875rem}.book-menu nav{width:20rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-menu nav>ul>li>a{font-weight:bolder}.book-menu nav>ul>li>ul>li>a{font-weight:700}.book-menu a{color:inherit}.book-menu a.active{color:#05b}.book-menu nav,.markdown pre,.markdown .highlight,.markdown .chroma,.markdown table{scrollbar-width:thin;scrollbar-color:rgba(134,142,150,.5)transparent}::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:rgba(134,142,150,.5);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:rgba(73,80,87,.6)}.book-section-flat{margin-bottom:2rem}.book-section-flat:not(:first-child){margin-top:2rem}.book-section-flat>a,.book-section-flat>span{font-weight:bolder}.book-section-flat>ul{padding-left:0}.book-page{min-width:20rem;flex-grow:1;padding:1rem;margin:10px}.book-header{margin-bottom:1rem;display:none}.magic{display:flex;flex-direction:column}.book-switch{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem}.book-search{width:100%;position:relative;margin:1rem 0 .5rem;border-bottom:1px solid transparent}.book-search::after{display:block;content:"";clear:both}.book-search input{width:100%;padding:.5rem;border:0;border-radius:.25rem;background:#f8f9fa;color:#343a40}.book-search input:required+.book-search-spinner{display:block}.book-search .book-search-spinner{position:absolute;margin:.5rem;right:0;top:0;width:1rem;height:1rem;border:1px solid transparent;border-top-color:#343a40;border-radius:50%;animation:spin 1s ease infinite}@keyframes spin{100%{transform:rotate(360deg)}}.book-toc{flex:0 0 16rem;font-size:.75rem}.book-toc nav{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-toc img{height:1em}.book-toc nav>ul>li:first-child{margin-top:0}.book-footer{display:flex;padding-top:1rem;font-size:.875rem}.book-footer img{height:1em;margin-right:.5rem}.book-languages{position:relative;overflow:visible;padding:1rem;margin:-1rem}.book-languages:hover .book-languages-list{display:block}.book-languages .book-languages-list{display:none;position:absolute;bottom:0;left:0;padding:.5rem 0;background:#fff;box-shadow:0 0 .25rem rgba(0,0,0,.1)}.book-languages .book-languages-list li{padding:.5rem 1rem;white-space:nowrap}.book-languages .book-languages-list img{opacity:.1}.book-languages .book-languages-list li.active img{opacity:1}.book-languages .book-languages-list a{color:inherit}.book-languages ul{margin:0;padding:0;list-style:none}.book-posts{min-width:20rem;max-width:40rem;flex-grow:1;padding:1rem}.book-posts article{padding-bottom:1rem}.book-home{padding:1rem}aside nav,.book-page,.book-posts,.markdown{transition:.2s ease-in-out;transition-property:transform,margin-left,opacity;will-change:transform,margin-left}@media screen and (max-width:61rem){.book-toc{display:none}}@media screen and (max-width:80rem){.book-menu{margin-left:-20rem;font-size:16px}.book-header{display:flex}#menu-control:checked+main .book-menu nav,#menu-control:checked+main .book-page,#menu-control:checked+main .book-posts{transform:translateX(20rem)}#menu-control:checked+main .book-header label{transform:rotate(90deg)}#menu-control:checked+main .markdown{opacity:.25}}@media screen and (min-width:80rem){.book-page,.book-posts,.book-menu nav,.book-toc nav{padding:2rem 1rem}}.theme-switch{display:inline-flex;align-items:center;margin:0;border:1px solid #dee2e6;border-radius:.25rem;overflow:hidden}.theme-switch .theme-option{display:inline-flex;align-items:center;justify-content:center;width:32px;height:30px;padding:0;border:0;background:0 0;color:#343a40;cursor:pointer;transition:background-color .2s ease,color .2s ease}.theme-switch .theme-option+.theme-option{border-left:1px solid #dee2e6}.theme-switch .theme-option:hover{background:#f8f9fa}.theme-switch .theme-option.active{background:#2196f3;color:#fff}.theme-switch .theme-option:focus-visible{outline:2px solid #2196f3;outline-offset:-2px}.book-langswitch{position:relative;display:inline-flex;align-items:center;margin:0}.book-langswitch .book-langswitch-toggle{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid #dee2e6;border-radius:.25rem;background:0 0;color:#343a40;font-size:.875rem;cursor:pointer;transition:background-color .2s ease}.book-langswitch .book-langswitch-toggle:hover{background:#f8f9fa}.book-langswitch .book-langswitch-toggle:focus-visible{outline:2px solid #2196f3;outline-offset:-2px}.book-langswitch .book-langswitch-current{white-space:nowrap}.book-langswitch .book-langswitch-list{display:none;position:absolute;top:100%;right:0;z-index:30;min-width:140px;margin:4px 0 0;padding:.25rem 0;list-style:none;background:#fff;border:1px solid #dee2e6;border-radius:.25rem;box-shadow:0 2px .5rem rgba(0,0,0,.12)}.book-langswitch:hover .book-langswitch-list,.book-langswitch:focus-within .book-langswitch-list{display:block}.book-langswitch .book-langswitch-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:.5rem 1rem;white-space:nowrap;color:inherit;text-decoration:none}.book-langswitch .book-langswitch-item:hover{background:#f8f9fa}.book-langswitch .book-langswitch-item.active{font-weight:600}.book-langswitch .book-langswitch-item.disabled{color:#adb5bd;cursor:default}.book-langswitch .book-langswitch-item.disabled:hover{background:0 0}.book-langswitch .book-langswitch-soon{font-size:.75rem;opacity:.7}.quote{border-radius:.15rem;padding:1rem 1.25rem;margin:1.5rem 0;border-left:.25rem solid rgba(0,85,187,.4);background-color:rgba(102,102,102,8%);line-height:1.8}.quote-mark{float:right}.quote-right{text-align:right}.bib table{overflow:visible;word-wrap:break-word;table-layout:fixed}.bib tr td,.bib{vertical-align:top!important;padding-left:0!important;padding-right:10px!important;padding-bottom:10px!important;border:none!important}.bib tr td:first-child{text-align:right;width:22%}.bib tr td:nth-child(2){word-break:break-word;width:80%}.bib tr:nth-child(even){background-color:#fff!important}.viz{margin:1.5rem auto;max-width:760px}.viz .viz-wrap{border:1px solid #e9ecef;border-radius:.15rem;padding:1rem;background:#f8f9fa}.viz .viz-title{font-size:1.75rem;font-weight:600;color:#343a40;margin-bottom:.5rem}.viz .viz-canvas{display:block;width:100%}.viz .viz-controls{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem}.viz .viz-btn{font:inherit;font-size:.75rem;padding:4px 12px;border:1px solid #dee2e6;border-radius:.25rem;background:#fff;color:#343a40;cursor:pointer}.viz .viz-btn:hover{background:#e9ecef}.viz .viz-btn:active{transform:translateY(1px)}.viz .viz-slider{display:inline-flex;align-items:center;gap:6px;font-size:.75rem;color:#343a40}.viz .viz-slider input{width:90px}.viz .viz-fallback{color:#adb5bd;font-size:.75rem;text-align:center;padding:1rem}html.dark .viz .viz-wrap{background:var(--code-bg);border-color:var(--border)}html.dark .viz .viz-btn{background:var(--surface);border-color:var(--border);color:var(--fg)}html.dark .viz .viz-btn:hover{background:var(--accent-soft)}@font-face{font-family:roboto;font-style:italic;font-weight:300;font-display:swap;src:local("Roboto Light Italic"),local("Roboto-LightItalic"),url(fonts/roboto-v19-latin-300italic.woff2)format("woff2"),url(fonts/roboto-v19-latin-300italic.woff)format("woff")}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto"),local("Roboto-Regular"),url(fonts/roboto-v19-latin-regular.woff2)format("woff2"),url(fonts/roboto-v19-latin-regular.woff)format("woff")}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:local("Roboto Bold"),local("Roboto-Bold"),url(fonts/roboto-v19-latin-700.woff2)format("woff2"),url(fonts/roboto-v19-latin-700.woff)format("woff")}@font-face{font-family:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:local("Roboto Mono"),local("RobotoMono-Regular"),url(fonts/roboto-mono-v6-latin-regular.woff2)format("woff2"),url(fonts/roboto-mono-v6-latin-regular.woff)format("woff")}body{font-family:noto sans sc,roboto,sans-serif}code{font-family:source code pro,roboto mono,monospace}@media print{.book-menu,.book-footer{display:none}main{flex-direction:column-reverse}.book-toc{flex:none}.book-toc nav{position:relative;width:auto}}.markdown{max-width:48rem;margin-left:auto;margin-right:auto;font-size:17.5px;line-height:1.8}.markdown>:first-child{margin-top:0}.markdown p{margin-top:0;margin-bottom:1.1em}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:400;line-height:1.3;margin-top:1.8em;margin-bottom:.8em}.markdown h1{font-size:1.9em}.markdown h2{font-size:1.55em}.markdown h3{font-size:1.25em}.markdown h4{font-size:1.05em}.markdown h4,.markdown h5,.markdown h6{font-weight:bolder}.markdown h5{font-size:.9em}.markdown h6{font-size:.8em}.markdown b,.markdown optgroup,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown img{max-width:100%}.markdown code{padding:.1em .25rem;background:#e9ecef;border-radius:.15rem;font-size:.875em;word-break:break-word}.markdown pre{padding:1rem;background:#f8f9fa;border-radius:.15rem;overflow-x:auto}.markdown pre code{padding:0;background:0 0}.markdown .highlight{background:#f8f9fa;border:1px solid #e9ecef;border-radius:.15rem;padding:1rem;overflow-x:auto}.markdown .highlight .chroma,.markdown .highlight table.lntable,.markdown .highlight td.lntd,.markdown .highlight pre,.markdown .highlight code{background:0 0;border:0;border-radius:0;padding:0}.markdown .highlight pre{overflow-x:visible}.markdown blockquote{margin:1.5rem 0;padding:.5rem 1rem;border-left:.25rem solid #dee2e6;border-radius:.15rem;background:rgba(173,181,189,8%);color:#495057}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin-top:1rem;margin-bottom:1rem}.markdown table tr th,.markdown table tr td{padding:.5rem 1rem;border:1px solid #e9ecef}.markdown table tr:nth-child(2n){background:#f8f9fa}.markdown hr{height:1px;border:none;background:#e9ecef}.markdown ul,.markdown ol{padding-left:2rem;margin-top:0;margin-bottom:1.1em}.markdown ul li,.markdown ol li{margin-bottom:.35em}.markdown ul ul,.markdown ul ol,.markdown ol ul,.markdown ol ol{margin-top:.35em;margin-bottom:.35em}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-left:2rem}.markdown .highlight table tr td:nth-child(1){padding-right:1rem}.markdown .highlight table tr td:nth-child(1) pre{overflow-x:hidden;margin:0;padding:0}.markdown .highlight table tr td:nth-child(2){width:100%}.markdown .highlight table tr td:nth-child(2) pre{margin:0;padding:0}.chroma{background:#f8f9fa;color:#212529}.chroma .lnt,.chroma .ln{color:#adb5bd}.chroma .hl{background:rgba(255,221,102,.25);display:block}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:#00f}.chroma .nb,.chroma .bp{color:#00f}.chroma .nf,.chroma .nx{color:#212529}.chroma .nc,.chroma .nn{color:#2b91af}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sc,.chroma .sd,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .sa{color:#a31515}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .mo,.chroma .il{color:#098658}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:green;font-style:italic}.chroma .o,.chroma .ow{color:#212529}.chroma .err{color:#a31515}.markdown-inner>:first-child{margin-top:0}.markdown-inner>:last-child{margin-bottom:0}.book-expand{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--border,#e9ecef);border-radius:.15rem;overflow:hidden}.book-expand .book-expand-head{background:var(--code-bg,#f8f9fa);padding:.5rem 1rem;cursor:pointer}.book-expand .book-expand-content{display:none;padding:1rem}.book-expand input[type=checkbox]:checked+.book-expand-content{display:block}.book-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--border,#e9ecef);border-radius:.15rem;overflow:hidden;display:flex;flex-wrap:wrap}.book-tabs label{display:inline-block;padding:.5rem 1rem;border-bottom:1px transparent;cursor:pointer}.book-tabs .book-tabs-content{order:999;width:100%;border-top:1px solid var(--border,#f8f9fa);padding:1rem;display:none}.book-tabs input[type=radio]:checked+label{border-bottom:1px solid var(--accent,#05b)}.book-tabs input[type=radio]:checked+label+.book-tabs-content{display:block}.book-columns{margin-left:-1rem;margin-right:-1rem}.book-columns>div{margin:1rem 0;min-width:13.2rem;padding:0 1rem}a.book-btn{display:inline-block;color:var(--accent,#05b)!important;text-decoration:none!important;border:1px solid var(--accent,#05b);border-radius:.15rem;padding:.25rem 1rem;margin-top:.5rem;margin-bottom:.5rem;cursor:pointer}.book-hint.info{border-left-color:#6bf;background-color:rgba(102,187,255,.1)}.book-hint.warning{border-left-color:#fd6;background-color:rgba(255,221,102,.1)}.book-hint.danger{border-left-color:#f66;background-color:rgba(255,102,102,.1)}.img-center{display:block;margin:1rem auto;margin-bottom:30px;height:auto;text-align:center}.img-center img{padding:5px}.img-center strong{display:block}#footer{padding:24px clamp(22px,6vw,72px)48px;max-width:var(--reading-measure);margin:0 auto;color:var(--fg-faint);font-family:var(--font-sans);font-size:12.5px}.book-menu{}.book-menu nav{height:100vh;max-height:100vh;overflow-y:auto;overscroll-behavior:contain}.book-menu input.toggle{display:none}.book-menu label.book-toggle-label{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.book-menu label.book-toggle-label a,.book-menu label.book-toggle-label span{flex:auto}.book-menu label.book-toggle-label::after{content:"\25B8";flex:none;margin-left:.5rem;font-size:.75em;opacity:.55;transition:transform .15s ease}.book-menu input.toggle:checked+label.book-toggle-label::after{transform:rotate(90deg)}.book-menu input.toggle~ul{display:none}.book-menu input.toggle:checked~ul{display:block}html.dark{background:var(--bg)}html.dark body{background:var(--bg);color:var(--fg)}html.dark a{color:var(--accent)}html.dark a:visited{color:var(--accent)}html.dark h1,html.dark h2,html.dark h3,html.dark h4,html.dark h5,html.dark h6{color:var(--fg)}html.dark .book-menu nav{color:var(--fg-muted)}html.dark .book-menu a{color:inherit}html.dark .book-menu a.active{color:#fff}html.dark .book-toc,html.dark aside,html.dark nav{color:var(--fg-muted)}html.dark blockquote{border-left-color:var(--accent);background:var(--accent-soft);color:var(--fg-muted)}html.dark hr{border-color:var(--border);background:var(--border)}html.dark .book-search input{background:var(--surface);color:var(--fg);border:1px solid var(--border)}html.dark .book-search input::placeholder{color:var(--fg-faint)}html.dark .book-search{border-bottom-color:transparent}html.dark .book-search-spinner{border-top-color:var(--fg-muted)}html.dark table{color:var(--fg)}html.dark table,html.dark th,html.dark td{border-color:var(--border)}html.dark thead{background:var(--bg)}html.dark .markdown table tr:nth-child(2n),html.dark tbody tr:nth-child(even){background:var(--bg)}html.dark tbody tr:nth-child(odd){background:0 0}html.dark th,html.dark td{color:var(--fg)}html.dark .bib tr:nth-child(even){background-color:initial!important}html.dark .theme-switch{border-color:var(--border)}html.dark .theme-switch .theme-option{color:var(--fg-muted)}html.dark .theme-switch .theme-option+.theme-option{border-left-color:var(--border)}html.dark .theme-switch .theme-option:hover{background:var(--accent-soft)}html.dark .theme-switch .theme-option.active{background:var(--accent);color:#fff}html.dark .book-langswitch .book-langswitch-toggle{color:var(--fg-muted);border-color:var(--border)}html.dark .book-langswitch .book-langswitch-toggle:hover{background:var(--accent-soft)}html.dark .book-langswitch .book-langswitch-list{background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-panel)}html.dark .book-langswitch .book-langswitch-item{color:var(--fg-muted)}html.dark .book-langswitch .book-langswitch-item:hover{background:var(--accent-soft)}html.dark .book-langswitch .book-langswitch-item.disabled{color:var(--fg-faint)}html.dark .book-langswitch .book-langswitch-item.disabled:hover{background:0 0}html.dark .quote{color:var(--fg-muted)}html.dark .book-menu nav,html.dark .markdown pre,html.dark .markdown .highlight,html.dark .markdown .chroma,html.dark .markdown table{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.22)transparent}html.dark ::-webkit-scrollbar-track{background:0 0}html.dark ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:4px}html.dark ::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.3)}:root{--bg:#ece8df;--surface:#f7f4ee;--fg:#232019;--fg-muted:#6a6256;--fg-faint:#9b9385;--border:rgba(35, 32, 25, 0.10);--border-strong:rgba(35, 32, 25, 0.18);--accent:#007d9c;--accent-soft:rgba(0, 125, 156, 0.11);--toc-bg:rgba(247, 244, 238, 0.72);--shadow-panel:0 16px 48px rgba(35, 32, 25, 0.12);--code-bg:#eae7df;--kw:#9a4a2e;--typ:#2f6f72;--com:#9b9385;--str:#5a7d3a;--fn:#7a5cab;--num:#a06a2c;--op:#6a6256;--font-serif:'Noto Serif SC', Georgia, 'Songti SC', serif;--font-sans:'Inter', system-ui, sans-serif;--font-mono:'JetBrains Mono', ui-monospace, Menlo, monospace;--font-display:'Instrument Serif', Georgia, serif;--reading-size:18.5px;--reading-scale:1;--reading-measure:760px}:root:lang(en){--font-serif:Georgia, 'Noto Serif SC', 'Songti SC', serif}html.dark{--bg:#14130e;--surface:#1b1914;--fg:#e6e0d2;--fg-muted:#a7a08f;--fg-faint:#736d5e;--border:rgba(255, 255, 255, 0.09);--border-strong:rgba(255, 255, 255, 0.16);--accent:#29bee6;--accent-soft:rgba(41, 190, 230, 0.16);--toc-bg:rgba(27, 25, 20, 0.72);--shadow-panel:0 16px 48px rgba(0, 0, 0, 0.4);--code-bg:#211e18;--kw:#e0936b;--typ:#74b8b2;--com:#736d5e;--str:#a9c47e;--fn:#bb9fe2;--num:#d8b46a;--op:#a7a08f}html{background:var(--bg)}body{background:var(--bg);color:var(--fg);font-family:var(--font-serif)}html.dark body{background:var(--bg);color:var(--fg)}body{padding-top:58px}.reading-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:60;pointer-events:none}.reading-progress span{display:block;height:100%;width:0;background:var(--accent);transition:width .12s linear}.reading-topbar{position:fixed;top:0;left:0;right:0;height:58px;z-index:50;display:flex;align-items:center;gap:14px;padding:0 22px;background:var(--bg);border-bottom:1px solid var(--border);font-family:var(--font-sans)}.reading-wordmark{display:flex;align-items:baseline;gap:9px;text-decoration:none;white-space:nowrap;min-width:0}.reading-wordmark .wm-title{font-family:var(--font-serif);font-weight:600;font-size:17px;color:var(--fg);letter-spacing:.01em}.reading-wordmark .wm-sub{font-family:var(--font-display);font-style:italic;font-size:15px;color:var(--fg-faint)}.reading-divider{width:1px;height:22px;background:var(--border);flex:none}.reading-crumb{display:flex;align-items:center;gap:7px;min-width:0;font-size:12.5px;color:var(--fg-faint);white-space:nowrap;overflow:hidden}.reading-crumb a{color:inherit;text-decoration:none}.reading-crumb a:hover{color:var(--fg-muted)}.reading-crumb .crumb-current{color:var(--fg-muted)}.reading-crumb .crumb-sep{opacity:.5}.reading-spacer{flex:auto}.reading-iconbtn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:none;border:1px solid var(--border);background:var(--surface);color:var(--fg-muted);border-radius:8px;cursor:pointer;transition:background .15s,color .15s}.reading-iconbtn:hover{color:var(--accent)}.reading-iconbtn.is-active{background:var(--accent);color:#fff}.reading-fontctl{display:flex;align-items:center;flex:none;background:var(--surface);border:1px solid var(--border);border-radius:7px;overflow:hidden}.reading-fontctl button{width:30px;height:30px;border:0;background:0 0;color:var(--fg-muted);font-family:var(--font-serif);cursor:pointer}.reading-fontctl button:hover{color:var(--accent)}.reading-fontctl button#font-smaller{font-size:13px}.reading-fontctl button#font-bigger{font-size:18px}.reading-fontctl .fontctl-div{width:1px;height:16px;background:var(--border)}.reading-topbar .theme-switch{height:34px;border-color:var(--border);border-radius:8px;background:var(--surface)}.reading-topbar .theme-switch .theme-option{width:30px;height:32px;color:var(--fg-muted)}.reading-topbar .theme-switch .theme-option+.theme-option{border-left-color:var(--border)}.reading-topbar .theme-switch .theme-option:hover{background:var(--accent-soft);color:var(--accent)}.reading-topbar .theme-switch .theme-option.active{background:var(--accent);color:#fff}.reading-topbar .theme-switch .theme-option:focus-visible{outline-color:var(--accent)}.reading-topbar .book-langswitch .book-langswitch-toggle{height:34px;border-color:var(--border);border-radius:8px;background:var(--surface);color:var(--fg-muted)}.reading-topbar .book-langswitch .book-langswitch-toggle:hover{background:var(--accent-soft);color:var(--accent)}.reading-topbar .book-langswitch .book-langswitch-list{background:var(--surface);border-color:var(--border)}.reading-topbar .book-langswitch .book-langswitch-item{color:var(--fg-muted)}.reading-topbar .book-langswitch .book-langswitch-item:hover{background:var(--accent-soft)}.book-header{display:none!important}@media screen and (max-width:640px){.reading-topbar{gap:10px;padding:0 14px}.reading-crumb,.reading-divider,.reading-wordmark .wm-sub,.reading-fontctl,.reading-topbar .book-langswitch{display:none}.markdown{padding:30px 16px 100px;line-height:1.85}#footer{padding-left:16px;padding-right:16px;max-width:none}.markdown code{white-space:normal;overflow-wrap:anywhere}.markdown table{display:block;width:100%;overflow-x:auto}.markdown pre{overflow-x:auto}.markdown h1{font-size:30px;gap:10px}.markdown h1 .h1-num{font-size:28px}.markdown h2{font-size:22px}html,body{overflow-x:hidden;max-width:100%}.reading-wordmark{min-width:0;flex:initial;overflow:hidden}.reading-wordmark .wm-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reading-iconbtn,.reading-topbar .theme-switch{flex:none}}@media screen and (max-width:820px){.markdown img[align],.markdown img[style*=float],.markdown img[hspace]{float:none!important;display:block;height:auto!important;width:auto;max-width:100%;margin:18px auto}}.book-menu nav{top:58px;height:calc(100vh - 58px);max-height:calc(100vh - 58px)}.book-menu{background:var(--bg);font-family:var(--font-sans);font-size:13px}.book-menu nav{padding:26px 18px 40px}.book-menu ul{margin:0;padding:0}.book-menu ul ul{padding-left:0}.book-menu li{margin:0}.book-menu a{display:block;color:var(--fg-muted);padding:6px 10px;border-radius:6px;text-decoration:none;transition:color .12s,background .12s}.book-menu a:hover{opacity:1;color:var(--accent);background:var(--accent-soft)}.book-menu a.active{background:var(--accent);color:#fff;font-weight:600}.book-menu a.active:hover{background:var(--accent);color:#fff}.book-menu nav>ul:first-of-type>li>a{font-size:12px;color:var(--fg-faint)}.book-menu nav>ul>li>label{margin-top:14px}.book-menu nav>ul>li>label>a,.book-menu .book-section-flat>label>a,.book-menu .book-section-flat>a{font-size:14px;font-weight:700;color:var(--fg);letter-spacing:.01em}.book-menu nav>ul>li>ul>li>label>a{font-size:13px;font-weight:600;color:var(--fg-muted);padding-left:18px}.book-menu nav>ul>li>ul>li>ul>li>a{font-size:12.5px;font-weight:400;color:var(--fg-muted);padding-left:30px}.book-menu .book-toggle-label::after{opacity:.45}.book-menu .book-search-field{position:relative;margin:0 0 18px}.book-menu .book-search-field .search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:14px;height:14px;pointer-events:none}.book-menu .book-search{margin:0}.book-menu .book-search input{height:34px;padding:0 12px 0 32px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--fg);font-family:var(--font-sans);font-size:13px}.book-menu .book-search input::placeholder{color:var(--fg-faint)}html[data-sidebar=closed] .book-menu{display:none}@media screen and (max-width:80rem){.book-menu{position:fixed;top:58px;left:0;bottom:0;z-index:45;width:20rem;max-width:86vw;margin-left:0;overflow-y:auto;background:var(--bg);border-right:1px solid var(--border);transform:translateX(-100%);transition:transform .2s ease}.book-menu nav{position:static;width:100%;height:auto;max-height:none}html[data-sidebar=open] .book-menu{transform:translateX(0);box-shadow:0 10px 40px rgba(0,0,0,.25)}}.book-toc{display:none}html[data-toc=open] .book-toc{display:block}.book-toc{position:fixed;top:78px;right:22px;width:238px;max-height:calc(100vh - 100px);overflow-y:auto;padding:20px 20px 20px 18px;background:var(--toc-bg);backdrop-filter:saturate(180%)blur(16px);-webkit-backdrop-filter:saturate(180%)blur(16px);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-panel);z-index:30;font-family:var(--font-sans);font-size:13px}.book-toc nav{position:static;top:auto;bottom:auto;width:auto;padding:0;overflow:visible}.book-toc .reading-toc-head{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:16px}.book-toc ul{margin:0;padding:0;list-style:none}.book-toc li{margin:0}.book-toc a{display:block;color:var(--fg-muted);text-decoration:none;line-height:1.5;padding:7px 0 7px 14px;margin-left:-1px;border-left:2px solid transparent;transition:color .12s,border-color .12s}.book-toc a:hover{opacity:1;color:var(--accent)}.book-toc a.toc-active{color:var(--accent);border-left-color:var(--accent);font-weight:600}.book-toc .toc-progress{margin-top:24px;padding-top:18px;border-top:1px solid var(--border);display:flex;align-items:center;gap:10px}.book-toc .toc-progress-track{flex:1;height:3px;border-radius:2px;background:var(--border-strong);overflow:hidden}.book-toc #toc-progress-fill{height:100%;width:0;background:var(--accent);transition:width .12s linear}.book-toc #toc-progress-pct{font-family:var(--font-mono);font-size:11px;color:var(--fg-faint)}.book-page{background:var(--surface);border-left:1px solid var(--border);border-right:1px solid var(--border);min-height:calc(100vh - 58px);margin:0;padding:0}.markdown{max-width:none;margin:0 auto;padding:60px clamp(24px,8vw,160px)160px;font-family:var(--font-serif);font-size:calc(var(--reading-size) * var(--reading-scale));line-height:1.95;color:var(--fg);letter-spacing:.01em;text-wrap:pretty}.markdown p{margin-top:0;margin-bottom:1.2em}.markdown .reading-eyebrow{font-family:var(--font-sans);font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:18px}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-family:var(--font-serif);color:var(--fg);letter-spacing:-.01em;line-height:1.3}.markdown h1{font-weight:600;font-size:42px;line-height:1.18;margin:0 0 18px;display:flex;align-items:baseline;gap:16px}.markdown h1 .h1-num{font-family:var(--font-display);font-style:italic;font-weight:400;font-size:40px;color:var(--accent)}.markdown h2{font-weight:600;font-size:27px;line-height:1.35;margin:54px 0 18px;scroll-margin-top:78px}.markdown h3{font-weight:600;font-size:1.22em;scroll-margin-top:78px}.markdown h4{font-weight:600;font-size:1.05em;scroll-margin-top:78px}.markdown strong,.markdown b{font-weight:600;color:var(--fg)}.markdown a{color:var(--accent)}.markdown a:visited{color:var(--accent)}.markdown a:hover{text-decoration:underline}.markdown code{font-family:var(--font-mono);font-size:.84em;background:var(--accent-soft);color:var(--accent);padding:1px 6px;border-radius:4px;white-space:nowrap}.markdown pre code,.markdown .highlight code,.markdown .chroma code{background:0 0;color:inherit;padding:0;border-radius:0;white-space:pre}.markdown blockquote{border-left:4px solid var(--accent);background:var(--accent-soft);color:var(--fg-muted);border-radius:6px;line-height:1.85}.markdown hr{background:var(--border)}.markdown .reading-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-family:var(--font-sans);font-size:13px;color:var(--fg-faint);letter-spacing:0;padding-bottom:22px;margin:0 0 8px;border-bottom:1px solid var(--border)}.markdown .reading-meta .rm-item{display:inline-flex;align-items:center;gap:6px}.markdown .reading-meta svg{width:13px;height:13px}.markdown .reading-meta+p{font-size:calc(var(--reading-size) * var(--reading-scale) + 2px);color:var(--fg-muted);line-height:1.9}.markdown .reading-pagenav{display:flex;gap:14px;margin-top:54px;padding-top:28px;border-top:1px solid var(--border)}.markdown .reading-pagenav .pagenav-card{flex:1;display:flex;flex-direction:column;gap:6px;text-decoration:none;padding:16px 18px;border:1px solid var(--border);border-radius:10px;background:var(--bg)}.markdown .reading-pagenav .pagenav-eyebrow{font-family:var(--font-sans);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint)}.markdown .reading-pagenav .pagenav-title{font-family:var(--font-serif);font-size:16px;color:var(--fg);font-weight:500}.reading-fab{position:fixed;right:24px;bottom:24px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface);color:var(--fg-muted);cursor:pointer;z-index:40;box-shadow:0 6px 22px rgba(0,0,0,.12);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease,visibility .2s ease,color .15s,border-color .15s}.reading-fab.is-visible{opacity:1;visibility:visible;transform:none}.reading-fab:hover{color:var(--accent);border-color:var(--accent)}.markdown pre,.markdown code,.markdown .chroma{font-family:var(--font-mono)}.markdown .reading-code{margin:24px 0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--code-bg)}.markdown .reading-code .highlight{margin:0;border:0;border-radius:0;padding:16px 18px;background:0 0;overflow-x:auto}.markdown .reading-code .lntable td.lntd:first-child{display:none}.markdown .reading-codebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:var(--bg);border-bottom:1px solid var(--border)}.markdown .reading-codebar .reading-codelang{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.02em;color:var(--fg-faint)}.markdown .reading-copy{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);background:var(--surface);color:var(--fg-muted);font-family:var(--font-sans);font-size:11.5px;line-height:1;padding:3px 9px;border-radius:6px;cursor:pointer;transition:color .15s,border-color .15s}.markdown .reading-copy svg{width:12px;height:12px}.markdown .reading-copy:hover{color:var(--accent);border-color:var(--accent)}.markdown .reading-copy.is-copied{color:var(--accent);border-color:var(--accent)}.markdown .highlight{background:var(--code-bg);border:1px solid var(--border);border-radius:10px}.markdown pre{background:var(--code-bg);font-size:calc(var(--reading-size) * var(--reading-scale) * .9);line-height:1.7;color:var(--fg)}.markdown .chroma{background:0 0;color:var(--fg);font-size:calc(var(--reading-size) * var(--reading-scale) * .9);line-height:1.7}.markdown .chroma .lnt,.markdown .chroma .ln{color:var(--fg-faint)}.markdown .chroma .hl{background:var(--accent-soft);display:block}.markdown .chroma .k,.markdown .chroma .kc,.markdown .chroma .kd,.markdown .chroma .kn,.markdown .chroma .kp,.markdown .chroma .kr,.markdown .chroma .kt{color:var(--kw)}.markdown .chroma .nb,.markdown .chroma .bp{color:var(--kw)}.markdown .chroma .nf,.markdown .chroma .nx{color:var(--fn)}.markdown .chroma .nc,.markdown .chroma .nn{color:var(--typ)}.markdown .chroma .kt{color:var(--typ)}.markdown .chroma .s,.markdown .chroma .s1,.markdown .chroma .s2,.markdown .chroma .sb,.markdown .chroma .sc,.markdown .chroma .sd,.markdown .chroma .se,.markdown .chroma .sh,.markdown .chroma .si,.markdown .chroma .sx,.markdown .chroma .sr,.markdown .chroma .sa{color:var(--str)}.markdown .chroma .m,.markdown .chroma .mb,.markdown .chroma .mf,.markdown .chroma .mh,.markdown .chroma .mi,.markdown .chroma .mo,.markdown .chroma .il{color:var(--num)}.markdown .chroma .c,.markdown .chroma .ch,.markdown .chroma .cm,.markdown .chroma .c1,.markdown .chroma .cs,.markdown .chroma .cp,.markdown .chroma .cpf{color:var(--com);font-style:italic}.markdown .chroma .o,.markdown .chroma .ow,.markdown .chroma .p{color:var(--op)}.markdown .chroma .err{color:var(--kw)}.markdown pre.mermaid{display:block;margin:28px auto;padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--fg);text-align:center;overflow-x:auto;font-size:inherit}.markdown pre.mermaid svg{display:inline-block;max-width:100%;height:auto}.markdown pre.mermaid:not([data-processed]){color:transparent}