pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{color-scheme:light dark;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;--bg: #f6f8fb;--surface: #ffffff;--surface-raised: #ffffff;--sidebar: #07111f;--sidebar-soft: #0d1a2c;--sidebar-text: #d8e2f1;--sidebar-muted: #8291a7;--text: #18202b;--muted: #647084;--line: #dde3eb;--line-strong: #cbd3df;--accent: #0f8b73;--accent-strong: #08715e;--accent-soft: #e2f6f1;--code: #0b1320;--inline-code: #ecf2f5;--quote: #eef8f6;--quote-line: #31a88f;--shadow: 0 18px 50px rgba(20, 35, 55, .08);--sidebar-width: 18rem;--content-max: 48rem}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{margin:0;min-width:20rem;min-height:100vh;background:var(--bg);color:var(--text);font-size:1rem;line-height:1.7;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}svg{width:1.25rem;height:1.25rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.skip-link{position:fixed;z-index:100;top:.75rem;left:.75rem;transform:translateY(-150%);padding:.65rem .85rem;border-radius:.5rem;background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.skip-link:focus{transform:translateY(0)}.reading-progress{position:fixed;z-index:60;inset:0 0 auto var(--sidebar-width);height:3px;background:transparent}.reading-progress span{display:block;width:100%;height:100%;background:#35c5a6;transform:scaleX(0);transform-origin:left}.app-shell{min-height:100vh}.sidebar{position:fixed;z-index:50;inset:0 auto 0 0;display:flex;width:var(--sidebar-width);flex-direction:column;overflow:hidden;background:radial-gradient(circle at 15% -10%,rgba(65,203,170,.16),transparent 35%),var(--sidebar);color:var(--sidebar-text)}.brand{display:flex;min-height:5.5rem;align-items:center;gap:.8rem;padding:1.2rem 1.35rem;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{display:grid;width:2.7rem;height:2.7rem;place-items:center;border:1px solid rgba(110,231,199,.25);border-radius:.8rem;background:#6ee7c71a;color:#73e4c6}.brand strong,.brand small{display:block}.brand strong{color:#f7fbff;font-size:1rem;letter-spacing:.01em}.brand small{margin-top:.05rem;color:var(--sidebar-muted);font-size:.78rem}.sidebar-scroll{flex:1;overflow:auto;padding:1.15rem .8rem 2rem;scrollbar-width:thin;scrollbar-color:#34445b transparent}.nav-section+.nav-section{margin-top:1.6rem}.nav-section h2{margin:0 0 .4rem;padding:0 .6rem;color:var(--sidebar-muted);font-size:.72rem;font-weight:700;letter-spacing:.1em;line-height:1.4;text-transform:uppercase}.nav-section nav{display:grid;gap:.2rem}.nav-item{display:grid;grid-template-columns:1rem minmax(0,1fr);align-items:start;gap:.65rem;padding:.55rem .65rem;border-radius:.55rem;color:#aebacf;font-size:.875rem;line-height:1.45;text-decoration:none;transition:background .14s ease,color .14s ease}.nav-item:hover{background:#ffffff0e;color:#fff}.nav-item.is-active{background:#4cd3b121;color:#8cf1d6}.nav-icon{display:flex;margin-top:.1rem}.nav-icon svg{width:.95rem;height:.95rem}.sidebar-footer{padding:.95rem 1.4rem;border-top:1px solid rgba(255,255,255,.08);color:var(--sidebar-muted);font-size:.75rem}.sidebar-footer span{color:#79e0c4;font-variant-numeric:tabular-nums}.content-shell{min-height:100vh;margin-left:var(--sidebar-width)}.mobile-header{display:none}.content-grid{display:grid;grid-template-columns:minmax(0,var(--content-max)) 12.5rem;justify-content:center;gap:5.5rem;max-width:78rem;margin:0 auto;padding:4.4rem 3rem 6rem}.article-column{min-width:0}.document-meta{display:flex;align-items:center;gap:.45rem;margin-bottom:1.25rem;color:var(--muted);font-size:.8rem;font-weight:600}.document-meta span:first-child{color:var(--accent-strong)}.markdown-body{font-size:1.03rem}.markdown-body>:first-child{margin-top:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--text);font-weight:750;line-height:1.28;text-wrap:balance}.markdown-body h1{margin:0 0 2.2rem;font-size:clamp(2rem,4vw,3rem);letter-spacing:-.035em}.markdown-body h2{margin:3.6rem 0 1.1rem;padding-top:.25rem;font-size:1.55rem;letter-spacing:-.02em}.markdown-body h2:before{display:block;width:2.4rem;height:3px;margin-bottom:.8rem;border-radius:99px;background:var(--accent);content:""}.markdown-body h3{margin:2.4rem 0 .75rem;font-size:1.2rem}.markdown-body h4{margin:2rem 0 .6rem;font-size:1.05rem}.markdown-body p{margin:1rem 0}.markdown-body strong{color:var(--text);font-weight:720}.markdown-body ul,.markdown-body ol{padding-left:1.45rem}.markdown-body li{margin:.35rem 0;padding-left:.2rem}.markdown-body li::marker{color:var(--accent);font-weight:700}.markdown-body a{color:var(--accent-strong);font-weight:600;text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-underline-offset:.2em}.markdown-body a:hover{text-decoration-color:var(--accent)}.markdown-body blockquote{margin:1.6rem 0;padding:.95rem 1.2rem;border-left:4px solid var(--quote-line);border-radius:0 .65rem .65rem 0;background:var(--quote);color:var(--text)}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body :not(pre)>code{padding:.14em .38em;border:1px solid var(--line);border-radius:.35rem;background:var(--inline-code);color:#9a3152;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.88em}.markdown-body pre{position:relative;overflow:auto;margin:1.6rem 0;padding:1.15rem 1.3rem;border:1px solid #1d2a3c;border-radius:.85rem;background:var(--code);box-shadow:0 14px 32px #040c171f;color:#d9e5f1;font-size:.875rem;line-height:1.65;-moz-tab-size:2;tab-size:2}.markdown-body pre code{padding:0;background:transparent;font-family:SFMono-Regular,Consolas,monospace}.table-wrap{overflow-x:auto;margin:1.6rem 0;border:1px solid var(--line);border-radius:.75rem;background:var(--surface)}.markdown-body table{width:100%;border-collapse:collapse;font-size:.9rem}.markdown-body th,.markdown-body td{min-width:8rem;padding:.75rem .9rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.markdown-body th{background:color-mix(in srgb,var(--bg) 72%,var(--surface));font-size:.82rem}.markdown-body tr:last-child td{border-bottom:0}.markdown-body hr{margin:3rem 0;border:0;border-top:1px solid var(--line)}.mermaid{display:grid;overflow-x:auto;margin:1.8rem 0;padding:1.4rem;place-items:center;border:1px solid var(--line);border-radius:.9rem;background:var(--surface);box-shadow:var(--shadow)}.mermaid svg{width:auto;max-width:100%;height:auto}.toc{position:sticky;top:3rem;align-self:start;max-height:calc(100vh - 6rem);overflow:auto}.toc h2{margin:0 0 .8rem;color:var(--muted);font-size:.75rem;letter-spacing:.09em;text-transform:uppercase}.toc nav{display:grid;gap:.15rem;border-left:1px solid var(--line-strong)}.toc a{padding:.35rem 0 .35rem .9rem;border-left:2px solid transparent;color:var(--muted);font-size:.78rem;line-height:1.4;text-decoration:none;transform:translate(-1px)}.toc a:hover,.toc a.is-active{border-left-color:var(--accent);color:var(--accent-strong)}.toc a.toc-level-3{padding-left:1.55rem}.page-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:5rem;padding-top:1.4rem;border-top:1px solid var(--line)}.page-link{display:grid;min-width:0;gap:.25rem;padding:1rem;border:1px solid var(--line);border-radius:.75rem;background:var(--surface);text-decoration:none;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.page-link:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-2px)}.page-link small{color:var(--muted);font-size:.72rem}.page-link span{overflow:hidden;color:var(--text);font-size:.9rem;font-weight:650;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.page-link.next{grid-template-columns:1fr auto;text-align:right}.page-link.next small,.page-link.next span{grid-column:1}.page-link.next svg{grid-column:2;grid-row:1 / 3;align-self:center;color:var(--accent)}.sidebar-scrim{display:none}@media(max-width:74rem){.content-grid{grid-template-columns:minmax(0,var(--content-max));max-width:58rem;gap:0}.toc{display:none}}@media(max-width:56rem){:root{--sidebar-width: 17rem}.reading-progress{left:0;top:3.75rem}.sidebar{transform:translate(-100%);transition:transform .18s ease}.nav-open .sidebar{transform:translate(0);box-shadow:20px 0 60px #0000004d}.sidebar-scrim{position:fixed;z-index:40;top:0;right:0;bottom:0;left:0;display:block;visibility:hidden;background:#0208128c;opacity:0;transition:opacity .18s ease,visibility .18s ease}.nav-open .sidebar-scrim{visibility:visible;opacity:1}.content-shell{margin-left:0}.mobile-header{position:sticky;z-index:30;top:0;display:grid;grid-template-columns:2.5rem 1fr auto;min-height:3.75rem;align-items:center;gap:.7rem;padding:0 1rem;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);font-size:.9rem;font-weight:700}.mobile-doc-count{color:var(--muted);font-size:.75rem;font-variant-numeric:tabular-nums}.icon-button{display:grid;width:2.5rem;height:2.5rem;padding:0;place-items:center;border:0;border-radius:.55rem;background:transparent;color:var(--text);cursor:pointer}.icon-button:hover{background:var(--line)}.content-grid{display:block;padding:2.4rem clamp(1.2rem,5vw,3rem) 4rem}}@media(max-width:36rem){.markdown-body{font-size:1rem}.markdown-body h1{margin-bottom:1.8rem;font-size:2rem}.markdown-body h2{margin-top:3rem;font-size:1.4rem}.markdown-body pre{margin-inline:-.35rem;padding:1rem;border-radius:.65rem;font-size:.8rem}.page-navigation{grid-template-columns:1fr}.page-navigation>span:empty{display:none}.document-meta{margin-bottom:1rem}}@media(prefers-color-scheme:dark){:root{--bg: #09111d;--surface: #101b2a;--surface-raised: #132033;--text: #e7edf5;--muted: #91a0b3;--line: #223147;--line-strong: #33445a;--accent: #51d1af;--accent-strong: #72e4c5;--accent-soft: #102d2a;--inline-code: #172639;--quote: #102925;--quote-line: #46c7a5;--shadow: 0 18px 50px rgba(0, 0, 0, .25)}.markdown-body :not(pre)>code{color:#f3a7bd}.mobile-header{background:color-mix(in srgb,var(--bg) 90%,transparent)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}
